20145304《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字符以及有关十六进制的相关字符不懂其含义。
代码调试中的问题和解决过程
-
此次代码调试中没有出现较大问题。
其他(感悟、思考等,可选)
通过这星期的学习,学会了使用日志API以及运用规则表达式,这星期学的许多内容都需要记忆,之后的学习中也要常返回来看看这些知识点。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第八周 | 100/1210 | 1/11 | 30/200 |