20155330 2016-2017-2 《Java程序设计》第八周学习总结
教材学习内容总结
学习目标
- 了解NIO
- 会使用Channel、Buffer与NIO2
- 会使用日志API、国际化
- 会使用正则表达式
- 了解JDK8增强功能
第十四章 章节主要内容
小结
- NIO使用频道(Channel)来衔接数据节点,在处理数据时,NIO可以设定缓冲区(Buffer)容量,在缓冲区中对感兴趣的数据区块进行标记,像是标记读取位置、数据有效位置,对于这些区块标记,提供了clear()、rewind()、flip()、compact()等高级操作。
- Buffer的直接子类们都有个allocate()静态方法,可以让你指定Buffer容量(Capacity),如果想取得Buffer内部的阵列,可以使用array()方法,如果有个数组想要转为某个Buffer子类实例,每个Buffer子类实例都有wrap()静态方法可以提供操作。
- Buffer是容器,填装的数据不会超过它的容量,容量大小可以使用capacity()方法取得,实际可读取或写入的数据界限(Limit)索引值可以由limit()方法得知或设定,下一个可读取数据的位置(Position)索引值,可以使用position()方法得知或设定。
- NIO2文件系统API提供一组标准接口与类,应用程序开发者只要基于这些标准接口与类进行文件系统操作,底层实际如何进行文件系统操作,是由文件系统提供者负责(由厂商操作)。
- NIO2文件系统的中心是java.nio.file.spi.FileSystemProvider,本身为操作类,是文件系统提供者才要操作的类,作用是产生java.nio.file与java.nio.file.attribute中各种抽象类或接口的操作对象。
第十五章 章节主要内容
小结
- java.util.logging包提供了日志功能相关类与接口,它们是从JDK1.4之后加入标准API,要取得Logger实例,必须使用Logger的静态方法getLogger():Logger logger = Logger.getLogger("ch08.Main");
- 调用getLogger()时,必须指定Logger实例所属名称空间(Name space),名称空间以"."作为层级区分,名称空间层级相同的Logger,其父Logger组态相同。
- 取得Logger实例之后,可以使用log()方法输出讯息,输出讯息时可以使用Level的静态成员指定讯息层级(Level)。
- Logger与Handler预设都会先依Level过滤信息,如果没有做任何修改,取得的Logger实例之父Logger组态,就是Logger.GLOBAL_LOGGER_NAME名称空间Logger实例的组态,这个实例的Level设定为INFO,可通过Logger实例的getParent()取得父Logger实例,可通过getLevel()取得设定的Level实例。
- 在经过Logger过滤之后,还得再经过Handler的过滤,一个Logger可以拥有多个Handler,可通过Logger的addHandler()新增Handler实例。
- 实际上进行信息输出时,目前Logger的Handler处理完,还会传播给父Logger的所有Handler处理(在通过父Logger层级的情况下)。
教材学习中的问题和解决过程
- 问题1:messages.properties放什么位置?
- 解决方案:properties文档必须放置在CLASSPATH的路径设定下。
代码调试中的问题和解决过程
- 问题1:P481页的I18N Hello.java运行结果错误。
- 解决方案:需建立一个.properties文档。将文档命名为messages.properties。文档内容为:
cc.openhome.welcome=Hello
cc.openhome.name=World
运行后得到正确结果。
代码托管
上周考试错题总结
-
错题1:下面哪些Linux 命令可以ASCII码和16进制单字节方法输出Hello.java的内容?
A. od -b -tx1 Hello.java
B. od -tcx1 Hello.java
C. od -tc -tx1 Hello.java
D. od -tbx1 Hello.java
理解情况:-b为八进制输出。
-
错题2:JDK8 中新时间API中,用于度量时间的类有()
A. Instant B. Duration C. Period
D. LocalDateTime 理解情况:plus()方法接受java.time.temporal.TemporalAmount实例,而TemporalAmount的操作类也就是Period与Duration。
-
错题3:_____ parameters are the values that are used when calling a method(___参数是调用方法时传给方法的值).
A .formal(形式参数)
B .actual(实际参数)C .useful(有用的参数)
D .informal(非正式参数)E .none of the above(以上都不是)
理解情况:
形式参数:在方法声明的参数
实际参数:方法中定义的参数
结对及互评
评分标准
-
正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
-
模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
教材学习中的问题和解决过程, 一个问题加1分
代码调试中的问题和解决过程, 一个问题加1分
-
本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
-
其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
-
扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
- 迟交作业的扣至0分
点评模板:
-
博客中值得学习的或问题:
- xxx
- xxx
- ...
-
代码中值得学习的或问题:
- xxx
- xxx
- ...
基于评分标准,我给本博客打分:XX分。得分情况如下:xxx
点评过的同学博客和代码
-
本周结对学习情况
- 20155321
- 结对学习内容
- 学习了下周实验的相关内容及知识点
- 学习了第十五章的内容
-
上周博客互评情况
其他(感悟、思考等,可选)
Java的教材学习快要进入尾声,但是对Java语言的运用还是感到生疏,特别是对前面内容掌握的不好的地方在后面运用起来会比较吃力,需要弄懂的地方还有很多。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 18篇 | 300小时 | |
第一周 | 15/15 | 1/1 | 15/15 | |
第二周 | 159/174 | 1/2 | 20/35 | |
第三周 | 414/588 | 1/3 | 18/53 | 了解了封装、对象 |
第四周 | 461/1049 | 1/4 | 18/71 | |
第五周 | 786/1835 | 1/5 | 18/89 | |
第六周 | 699/2534 | 1/6 | 20/109 | |
第七周 | 536/3070 | 2/8 | 18/127 | |
第八周 | 339/3409 | 1/9 | 15/142 |
计划学习时间:16小时
实际学习时间:15小时