您的位置:首页 > 编程语言 > Java开发

20155213 2016-2017-2 《Java程序设计》第八周学习总结

2017-04-15 22:12 344 查看

20155213 2016-2017-2 《Java程序设计》第八周学习总结

教材学习内容总结

第十四章NIO与NIO2

NIO

NIO使用频道来衔接数据节点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记。对于区块标记,提供了clear()、rewind()、flip()、compact()等高级操作。

Buffer继承架构

Buffer的直接子类们都有个allocate()静态方法,可以让你指定Buffer容量(Capacity),如果想取得Buffer内部的阵列,可以使用array()方法,如果有个数组想要转为某个Buffer子类实例,每个Buffer子类实例都有wrap()静态方法可以提供操作。

Buffer是容器,填装的数据不会超过它的容量,容量大小可以使用capacity()方法取得,实际可读取或写入的数据界限(Limit)索引值可以由limit()方法得知或设定,下一个可读取数据的位置(Position)索引值,可以使用position()方法得知或设定。

NIO2

NIO2文件系统API提供一组标准接口与类,应用程序开发者只要基于这些标准接口与类进行文件系统操作,底层事迹如何进行文件系统操作,是由文件系统提供者负责。

通用API

日志API简介

使用日志的起点是Logger类,要取得Logger类,必须使用Logger的静态方法getLogger(),Logger.log()方法可以用来输出信息。 默认的Logger还会记录时间、类、方法等信息,Logger是记录信息的起点,还会经过一些过滤才会输出信息,输出信息实际上是由Handler负责。

Logger有层级关系,每个Logger处理完自己的日志动作后,回想父Logger传播,让父Logger也可以处理日志Logger与Handler预设都会先依Level过滤信息,如果没有做任何修改,取得的Logger实例之父Logger组态,就是Logger.GLOBAL_LOGGER_NAME名称空间Logger实例的组态,这个实例的Level设定为INFO,可通过Logger实例的getParent()取得父Logger实例,可通过getLevel()取得设定的Level实例。

在经过Logger过滤之后,还得再经过Handler的过滤,一个Logger可以拥有多个Handler,可通过Logger的addHandler()新增Handler实例。

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

问题1:怎么正确表示贪婪正则表达式

问题1解决方案:贪婪、非贪婪、独占量词:{n}是贪婪量词表示法的一种,表示前面的项目出现n次。在贪婪量词表示法后加上?,将会成为逐步量词(懒惰量词、非贪婪量词)

public class SplitDemo2 {
public static void main(String[] args) {
for(String str : "Justin dog Monica doggie Irene".split("\\bdog\\b")) {
System.out.println(str.trim());
}
}
}


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

问题1:在运行DateFormatDemo中,提示它是公共的,应该在该文件的.java中声明,代码中定义的本来就为public class,DateFormatDemo

问题1解决方案:去除public之后就能成功运行了

代码托管







上周考试错题总结

JDK8 中新时间API中,用于度量时间的类有(BC)

A .Instant

B .Duration

C .Period

D .LocalDateTime

A ________________ diagram helps us visualize the contents of and relationships among the classes of a program(___有助于我们查看程序中类的内容和它们之间的关系).(B)

A .class and object(类和对象)

B .UML(UML类图)

C .object-oriented(面向对象)

D .public

E .private

解析

UML图有助于我们想象的内容和程序的类之间的关系。 其他选择不指任何类型的图。

结对及互评

与155227辜彦霖结对

个人感觉她的博客排版很好看,很值得借鉴,代码量和提交次数都挺多,这种态度值得学习,但有点,所解决问题不够个性化。

评分标准

正确使用Markdown语法(加1分):

不使用Markdown不加分

有语法错误的不加分(链接打不开,表格不对,列表不正确...)

排版混乱的不加分

模板中的要素齐全(加1分)

缺少“教材学习中的问题和解决过程”的不加分

缺少“代码调试中的问题和解决过程”的不加分

代码托管不能打开的不加分

缺少“结对及互评”的不能打开的不加分

缺少“上周考试错题总结”的不能加分

缺少“进度条”的不能加分

缺少“参考资料”的不能加分

教材学习中的问题和解决过程, 一个问题加1分

代码调试中的问题和解决过程, 一个问题加1分

本周有效代码超过300分行的(加2分)

一周提交次数少于20次的不加分

其他加分:

周五前发博客的加1分

感想,体会不假大空的加1分

排版精美的加一分

进度条中记录学习时间与改进情况的加1分

有动手写新代码的加1分

课后选择题有验证的加1分

代码Commit Message规范的加1分

错题学习深入的加1分

扣分:

有抄袭的扣至0分

代码作弊的扣至0分

点评过的同学博客和代码

本周结对学习情况

20155227

结对照片

结对学习内容

一起学习了第十四章十五章

...

上周博客互评情况

20155230

20155309

20155317

20155319

20155209

...

参考示例

点评过的同学博客和代码

20155227

其他(感悟、思考等,可选)

前几章大量的敲代码工作让同学们的学习都留于形式,只想着完成作业而对代码的理解少之又少,感觉学好java的方法不是“敲”代码,而是“修改”代码,敲好代码以后如果不理解代码的能,可以通过修改代码来具体体会其真正含义。

进步来源于发现问题和解决问题,如果大家不去主动思考,简单机械的完成作业,那学习便失去了意义。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周48/481/120/20
第二周98/1461/230/50学习java的基础语法
第三周302/4481/327/77学习java对象及封装
第四周1032/14801/436/113学习了继承与多态的关系,以及接口的多态操作
第五周609/20251/530/143学习了异常处理和Map
第六周672/26971/630/173学习了IO和线程
第七周532/32291/727/200对Lambda和Date的学习
第八周359/35881/820/220学习了NIO和通用API
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

计划学习时间:35小时

实际学习时间:30小时

改进情况:

有空多看看现代软件工程课件 软件工程师能力自我评价表)

参考资料

Java学习笔记(第8版)

《Java学习笔记(第8版)》学习指导

...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: