20172301 2017-2018-2 《程序设计与数据结构》第十周学习总结

20172301 2017-2018-2 《程序设计与数据结构》第十周学习总结

教材学习内容总结

  • 集合:是一个对象。
  • 同构和异构:取决于集合保存的是否是类型全部都相同的对象。
    ArrayList由于其多态性,所以可以存储任何类型的对象,是异构
  • 线性数据结构:
    • 队列:
      先进先出
    • 堆栈:
      后进先出
  • 非线性数据结构:
    • 树:由一个根节点和构成层次结构的多个节点组成。

      • 内部节点:除根节点外的所有节点
      • 叶节点:没有子节点的节点(就是在周围两边的节点)
      • 树的结构从上到下,根节点在顶层,叶节点在底层
      • 二叉树:每个节点有不超过两个的子节点。(有两个枝丫)
    • 图:使用常见的边来连接节点。

教材学习中的问题和解决过程

  • 问题1:persistence (持续化)和 serialization(序列化)区别。这是针对这周错题里的,单独分析一下。
  • 问题1解决方案:
    • 首先,在查阅了一些资料之后,我对这个问题有一定的理解,但是不是很懂。详细请看错题理解。跳转
    • 然后,我在蓝墨云上请教了王老师,王老师给我了一个链接。参考资料:序列化和持久化的区别与联系

      序列化和持久化很相似,有些人甚至混为一谈,其实还是有区别的,序列化是为了解决对象的传输问题,传输可以在线程之间、进程之间、内存外存之间、主机之间进行。我之所以在这里提到序列化,是因为我们可以利用序列化来辅助持久化,可以说凡是可以持久化的对象都可以序列化,因为序列化相对容易一些(也不是很容易),所以主流的软件基础设施,比如.net和java,已经把序列化的框架完成了。

    所以,序列化只是辅助持久化而已,是有一定区别的,换句话说,实现持久化就可以实现序列化。

代码调试中的问题和解决过程

  • 问题1:在做PP13.3的时候,我想逐个比较列表中的数。结果

  • 问题1解决方案:通过两次结果的对比,我发现了,这个循环作用是,前一个和后一个相比较,并不是第一个依次与后几个比较。然后,我总结我需要运用两个循环,所以我定义了两个指针。

代码托管

上周考试错题总结

  • An exception can produce a "call stack trace" which lists B
    A . the active methods in the order that they were invoked
    B . the active methods in the opposite order that they were invoked
    C . the values of all instance data of the object where the exception was raised
    D . the values of all instance data of the object where the exception was raised and all local variables and parameters of the method where the exception was raised
    E . the name of the exception thrown
  • 理解:首先,我们要清楚call stack trace是什么意思,在书P344,堆栈踪迹。我们可能不是很熟悉,但是我们应该清楚什么是堆栈。而堆栈是一种以
    后进先出方式管理数据的线性数据结构。
    堆栈跟踪提供了储存在运行时堆栈中的发生异常方法、文件和代码行号。如果是,先进后出,那么就是反序输出的。
  • The idea that an object can exist separate from the executing program that creates it is called C
    A . transience
    B . static
    C . persistence
    D . serialization
    E . finality
  • 理解:其实我觉得这道题是超纲了。先不说我们不清楚选项的意思。这里我唯一看懂的就一个B静态的。
    • 那么,我们来看下解析:

      对象存储在内存中,当它们不再被引用时,被垃圾回收器回收。当Java程序终止时,没有对象被引用,因此所有对象都被回收。但是,可以保存任何给定的对象以供将来使用。这种特性称为持久性,通过将对象的实例数据保存到文件中来实现这一点。这可以通过将每个实例数据写入数据文件来实现,但是使用对象序列化简化。

    • 垃圾回收的什么我们都懂,问题是persistence(持久化)是什么。

      持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。

    • 其实,就是把对象存入文件或者数据库中,跟IO流有关系?
      同时,我也查了一下其他的选项。E应该是常量化,A不知道,主要是D序列化。我们再看一下序列化的定义:

      序列化是将对象状态转换为可保持或传输的格式的过程在MFC中储存或恢复对象的过程即为Serialization,也称为Persistent(永续生存)。在序列化期间,对象将其当前状态写入到临时或永久性存储区(存入文件中)。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。以此达到面向对象中的永续生存。

    不看不知道,一看吓一跳。序列化也称为Persistent(永续生存)。难不成他们还有渊源?为什么不选D而选C呢?

    • 所以,我查到了java中的Serialiazation机制
      Serialization是指把类或者基本的数据类型持久化(persistence)到数据流(Stream)中,包括文件、字节流、网络数据流。
      JAVA中主要靠两个类:ObjectOuputStream和ObjectInputStream。 他们是JAVA IO系统里的OutputStream和InputStream的子类。
    • 我们接着查下API加以理解接口Serializable
    • 其实,我还是不理解,或者说,使用serialization也必须持久化,所以才选的C,不明白别的同学怎么想的吧,对我来说有点难度。
    • 参考资料:
      Persistence VS Serialization
      serialization
      持久化
      什么是java persistence
  • Character streams manage C
    A . byte-sized data
    B . binary data
    C . Unicode characters
    D . ASCII characters
    E . compressed data
  • 理解:字符流用于16位Unicode字符。这与用于管理任何字节大小数据的字节流不同,包括ASCII字符和其他类型的二进制数据。
  • System.err is a(n) C
    A . input stream
    B . GUI dialog box that indicates when an error has arisen
    C . object
    D . Error subclass
    E . RuntimeException subclass
  • 理解:这题确实是鲁莽了。在书P352:

    System类中有三种对象引用变量(in, out, err),分别代表了三种标准I/O流。

    所以,System.err应该是一个对象,代表的是错误流。

  • Assume infile is a BufferedReader for a textfile and that the textfile is empty. What is returned from the message infile.readLine( ); ? B
    A . 0
    B . null
    C . a special character known as the End-of-file marker (EOF)
    D . none of the above, the message causes a NullPointerException to be thrown
    E . none of the above, the message causes a EndOfFileException to be thrown
  • 理解:这道题,我选了D。那为什么不会抛出异常呢。我们需要了解空指针异常有哪些。
    参考资料:一般报java.lang.NullPointerException的原因有以下几种

    • 字符串变量未初始化;
    • 接口类型的对象没有用具体的类初始化;
    • 当一个对象的值为空时,你没有判断为空的情况。

    恍然大悟。

  • While the Exception class is part of java.lang, IOException is part of java.io. A
    A . true
    B . false
  • 理解:如图。

结对及互评

点评过的同学博客和代码

  • 博客互评情况

    • 学号1
    • 学号2
    • 学号3
    • 学号4
    • ...

其他

编程方面一切如常,但是测试方面却有了大幅度的下滑。其实,我感觉测试难度并不小。而我每次都是掐着时间,30道题大约40分钟。所以,这次正确率就比较低了。其实,我感觉,并不是我没有努力,只是我的进步没有其他人大吧。我也注意到这次测试有满分的,同样也有30分钟以内做完题目的。所以,我觉得应该仔细查找一下自己的失误在哪里,毕竟大家学的都是一本教材。另一方面,由于四则运算项目的原因,我并没有详细的预习11章,这是应该避免的。调整好自己的状态,要能承担的起生活的压力。不管是学习,还是其他。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 122/122 1/1 20/20
第二周 487/609 1/2 18/38
第三周 482/1091 1/3 22/60
第四周 1357/2448 1/4 20/80
第五周 628/3106 1/5 20/100
第六周 566/3672 2/7 20/120
第七周 934/4606 1/8 25/145
第八周 2407/7013 1/9 30/175
第九周 1504/8517 1/10 20/195
第十周 981/9498 1/11 18/213

参考资料

原文地址:https://www.cnblogs.com/gk0625/p/9064944.html

时间: 2024-08-30 07:52:52

20172301 2017-2018-2 《程序设计与数据结构》第十周学习总结的相关文章

20172301 《程序设计与数据结构》第一周学习总结

20172301 <程序设计与数据结构>第一周学习总结 教材学习总结 第一章 软件的质量特征 正确性:软件能否有效处理问题 可靠性:软件发生故障的频率 健壮性:软件修复错误以及bug出现的频率 可用性:软件处理问题效率 可维护性:代码的整洁规范是否有利于维护 可重用性:使用已有的组件来减少开发工作量 可移植性:能在不同开发环境下能顺利运行 运行效率:提高软件运行效率,优化CPU时间和内存 数据结构 数据结构是计算机存储.组织数据的方式. 算法效率 算法效率是指算法执行的时间,算法执行时间需通过

学号20172328《程序设计与数据结构》第九周学习总结

学号20172328<程序设计与数据结构>第九周学习总结 教材学习内容总结(异常和递归) 第11章:异常 1.[异常处理]: 一个异常:是一个定义非正式情况或错误的对象,由程序或者运行时环境抛出,可以根据需要捕获和处理. 错误:错误类似于异常,但是错误代表不可恢复的问题并且必须捕获处理. 2.[处理异常的三种方法]:①根本不处理异常②当异常发生时处理异常③在程序的某个位置集中处理异常. 3.[未捕获的异常]:如果程序中不处理异常,则程序将非正常的终止运行,并产生关于描述在何处发生什么异常的信息

20172304 《程序设计与数据结构》 第二周学习总结

20172304 <程序设计与数据结构>第二周学习总结 教材学习内容总结 本周主要学习了第三章和第四章的内容 第三章 集合概述--栈 3.1集合 集合是一种聚集组织了其他对象的对象. 集合可以分为两大类线性集合和非线性集合 线性集合:其元素按直线方式组织的集合. 非线性集合:其元素按某种非直线方式组织的集合.例如按层次结构或按网状结构. 3.1.1抽象数据类型 集合十一找给你隐藏了实现细节的抽象 数据类型:一组值及作用于这些数值上的各种操作. 抽象数据:类型(Absttract Data Ty

20172305 2017-2018-2 《程序设计与数据结构》第一周学习总结

20172305 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书的第一章简单的介绍了计算机和JAVA的历史,基础内容很多,代码的讲解还没用正式进入,本周一直在做敲代码的准备,简单敲了老师给的"Hello World!"以及书后的PP1.3.PP1.4等简单的小程序. 教材学习中的问题和解决过程 问题1:三种不同类型的错误,运行错误和逻辑错误的混淆 问题1解决方案:针对EX1.20的"希望做加法时却做里乘法"进行了网上

20172314 2017-2018-2 《程序设计与数据结构》第一周学习总结

20172314 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书第一章为计算机系统概述,前面是一些计算机相关的基础知识,让我对计算机有了一个总体的认识,不再是一片空白了,对主存储器和CPU影响深刻,主存储器用于保存程序和数据,CPU执行程序指令.在接下来的Java编程语言与程序开发部分,开始看的时候有点迷茫,不是很理解,后来先按照作业中附带的流程完成一些代码托管之后,接触了完整的简单的程序之后,再回过头来看书,看到的一些陌生的名词在脑海中就有了实际的对应,

20172317《程序设计与数据结构》第一周学习总结

20172317 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 重新温习了一遍计算机的基础 总算了解了局域网广域网因特网万维网这些东西之间的区别了 通过URL的例子知道了网址各个部分的含义 对Java编程语言和程序开发有了一个粗浅的了解 教材学习中的问题和解决过程 问题:练习题SR1.13出现了答案与题目不相符的情况 问题解决方案:题中有个选项是"网卡",答案中没有,反而有个题目没有的选项"调制解调器"(俗称"

20172322 2017-2018-2 《程序设计与数据结构》第二周学习总结

20172322 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 了解了print与println的区别 了解了字符串的拼接可以用+来完成 了解了转义字符的使用 学会了使用赋值 学会使用部分算术运算符 学会了使用Scanner来实现交互性 教材学习中的问题和解决过程 问题1:在最初接触赋值时对foalt和double的赋值范围不了解 问题1解决方案:使用万能的度娘后看到一个高赞答案后有了了解 问题2:在提前预习时看到2.7图形后敲入的代码无法执行 问题2解决方案

20172328《程序设计与数据结构》第二周学习总结

20172328李馨雨<程序设计与数据结构>第二周学习总结 又到周五,李馨雨同学要开始写博客了.让我们开始吧!(????) 教材学习内容总结 1.首先是String类定义的字符串,然后是print和println的区别.转义字符的学习.(让我印象深刻的\b[回车符]在字符串结尾不显示哈哈,及其更新的\t[换行符],还有在课堂上真正明白了什么是回车.) 2.了解变量.常量.赋值语句.变量:保存数据的内存单元.常量:坚定自己不会变的数据!除非你用java的反射(有点复杂,改权限.去修饰符等等.没实

20172327 2017-2018-2 《程序设计与数据结构》第二周学习总结

20172327 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 字符串的拼接和转义序列的使用 变量的声明和使用 讨论语法及表达式的处理 定义数据转换类型和实现类型转换的机制 创建Scanner类 教材学习中的问题和解决问题 暂无 代码学习中的问题和解决过程 问题1:在提交过程中,突然遇到无法上传的情况 问题2解决方案:通过上网查找,输入git pull之后弹出一个编辑框,选择关闭之后,再次用git push就成功了. 问题2:在按照例题2.10打代码时,Jav

20172326 《程序设计与数据结构》第九周学习总结

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常(exception):定义非正常情况下或错误的情况的对象,由程序或运行时环境抛出,可根据需要进行相应的捕获处理. 异常与错误的区别:错误代表不可恢复的问题并且必须捕获处理.而异常可以忽视,或者使用try语句处理,或调用更高级的方法. 可检测异常与不可检测异常:可检测异常必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来.在方法定义的声明头中追加一条throws子句.不可检测异常不需要使