20155304 2016-2017-2 《Java程序设计》第八周学习总结
20155304 2016-2017-2 《Java程序设计》第八周学习总结
教材学习内容总结
NIO
- NIO使用频道来衔接数据节点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记。对于区块标记,提供了clear()、rewind()、flip()、compact()等高级操作。
- Channels类定义了静态方法newChannel()。
- Buffer的直接子类们都有一个allocate()静态方法,可以让你指定Buffer容量,Buffer容量大小可使用capacity()方法取得,实际可读取或写入的数据界限索引值可以由limit()方法得知或设定,下一个可读取数据的位置索引值,可以使用position()方法得知或设定。
日志
- java.util.logging包提供了日志功能相关类与接口。
- 使用日志的起点是Logger类,Logger实例的创建有许多要处理的要素,其构造函数标示为protected,取得Logger的实例,必须使用Logger的静态方法getLogger()。
- 调用getLogger()时,必须指定Logger实例所属名称空间,名称空间以“."作为层级区分,名称空间层级相同的Logger,其父组态相同。
- 调用getname()就可以取得类全名。
- Level.OFF会用于关闭所有信息输出,Level.ALL会用于允许所有信息输出,使用removeHandler()移除Handler。
- 一个Logger可以拥有多个Handler,可通过Logger的addHandler()新增Handler实例。
- Handler可通过setLevel()设定信息,一个信息要经过Logger与Handler的过滤后才可以输出。
- 负责日志输出的是Handler实例。
- MemoryHandler不会格式化日志信息,信息会暂存于内存缓冲区,直到超过缓存区大小,才将信息输出至指定的目标Handler。
- StreamHandler可自行指定信息输出时使用的OutputStream实例,它与子类都会使用指定的Formatter格式化信息。
- ConsoleHandler的日志信息会显示在控制台。
- FileHandle文档位置与名称可以使用模式字符串指定。
- 如果要自定义Formatter,可以继承Formatter后操作抽象方法format(),这个方法会传入LogRecord,储存所有日志信息。
国际化基础
- 对于日后可能变动的文字信息,可以考虑将信息移至程序之外,方法是使用ResourceBundle来做信息绑定。
- .properties文档必须放置在CLASSPATH的路径设定下,文档中撰写的是键/值配对,之后在程序中可以使用键来取得对于的值。
- 国际化的三个重要概念是地区信息、资源包与基础名称。
- 地区信息可由一个语言编码(两个小写字母代表)与可选的地区编码(两个大写字母表示)来指定。
- 代表同一组但不同地区的各个资源包会共享相同的基础名称,使用ResourceBundle的getBundle()时指定的名称,就是在指定基础名称。
规则表达式
- 根据某个字符或字符串切割,可以使用String的split()方法,它会返回切割后各子字符串组成的String数组。
- 规则表达式基本上包括两种字符:字面意义字符与元字符。
- 字面意义字符是指按照字面意义比较的字符。
- 元字符在规则表达式中有特殊含义,则必须加上忽略符号。
- 规则表达式中,多个字符可以分归在一起,成为一个字符类,字符类会比较文字中是否有“任一个”字符符合字符类中某个字符。
- {n}是贪婪量词表示法的一种,表示前面的项目出现n次。
- 在贪婪量词表示法后加上?,将会成为逐步量词,又常称为懒惰量词,或非贪婪量词。
- 在贪婪量词表示法后加上+,将会成为独吐量词。
- 边界比较用来表示文字必须符合指定的边界条件,也就是定位点,因此这类表示式也常称为锚点。
- 可以使用()来将规则表示式分组,除了作为子规则表达式之外,还可以搭配量词使用。
- 分组回头参考是,是在\后加上分组计数,表示参考第几个分组的比较结果。
- 规则表达式本身可读性差、除错不易,可以使用getDescription()取得错误说明,使用getIndex()取得错误索引,使用getPattern()取得错误的规则表达式,getMessage()会以多行显示错误的索引、描述等综合信息。
- 对数据进行管线化操作,方法之一是使用Arrays的asList()方法返回List,而后调用stream()方法取得Stream实例,另一个方式是使用Arrays的stream()方法,它可以指定数组后返回Stream实例。
教材学习中的问题和解决过程
书 P484表格中八进制0n字符、八进制0nn字符、八进制0mnn字符以及有关十六进制的相关字符不懂其含义。
代码调试中的问题和解决过程
此次代码调试中没有出现较大问题。
上周考试错题总结
- 错题1:
What is the output of the following code?(下面代码的运行结果是?)
LocalDate date = LocalDate.of(2018, Month.APRIL, 30);
date.plusDays(2);
date.plusYears(3);
System.out.println(date.getYear() + " "
date.getMonth() + " "+ date.getDayOfMonth());
A .2018 APRIL 2
B .2018 APRIL 30
C .2018 MAY 2
D .2021 APRIL 2
E .2021 APRIL 30
F .2021 MAY 2
G .A runtime exception is thrown.
答案:B。
- 错题2:
下面哪些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、C。
3.错题3:
下面哪些类的对象会包含“东部标准时间”的信息)
(Choose all that apply.)
A .Instant
B .LocalDate
C .LocalDateTime
D .LocalTime
E .ZonedDateTime
答案: E
结对及互评
评分标准
-
正确使用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
点评过的同学博客和代码
其他(感悟、思考等,可选)
通过这星期的学习,学会了使用日志API以及运用规则表达式,这星期学的许多内容都需要记忆,之后的学习中也要常返回来看看这些知识点。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 10/10 | 1/1 | 10/20 | 简单了解了jdk,认识了Java语言学习的复杂性 |
第二周 | 70/100 | 1/1 | 18/25 | |
第三周 | 150/200 | 1/1 | 14/20 | |
第四周 | 200/300 | 1/1 | 15/20 | |
第五周 | 200/300 | 1/1 | 15/20 | |
第六周 | 350/500 | 1/1 | 15/20 | |
第七周 | 500/700 | 2/2 | 15/20 | |
第8周 | 500/700 | 1/1 | 15/20 |
-
计划学习时间:20小时
-
实际学习时间:15小时