20172301 2017-2018-2 《程序设计与数据结构》第十周学习总结
Posted gk0625
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(永续生存)。在序列化期间,对象将其当前状态写入到临时或永久性存储区(存入文件中)。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。以此达到面向对象中的永续生存。
- 所以,我查到了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
理解:如图。
结对及互评
点评过的同学博客和代码
其他
编程方面一切如常,但是测试方面却有了大幅度的下滑。其实,我感觉测试难度并不小。而我每次都是掐着时间,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 |
参考资料
以上是关于20172301 2017-2018-2 《程序设计与数据结构》第十周学习总结的主要内容,如果未能解决你的问题,请参考以下文章
20172301 2017-2018-2 《程序设计与数据结构》实验五报告
20172301 2017-2018-2 《程序设计与数据结构》第7周课堂测试修改报告
20172301 2017-2018-2 《程序设计与数据结构》第4周学习总结
20172301 2017-2018-2 《程序设计与数据结构》第5周学习总结