20145337《Java程序设计》第八周学习总结
教材学习内容总结
15.1日志
15.1.1日志API简介
-
使用日志的起点是logger类,logger实例的创建有许多要处理的要素,必须使用logger的静态方法getLogger().
-
通常在哪个类上取得的logger,名称空间就会命名为哪个类的全名,使用getName()就可以取得类全名,输出信息时可以使用静态成员指定信息层级。
-
Logger是起点,必须先通过Logger的Level与Filter过滤,再通过Handler的Level与Filter过滤,格式化信息的动作交给Formatter,输出信息的动作实际上是Handler负者。
-
Logger处理完自己的日志动作后,会向父Logger传播。
15.1.2指定日志层级
-
log时指定的Level实例内含的int值小于Logger设定的Level实例内含的int值,Logger就不会记录信息。
-
若要显示INFO以后的信息,不仅要将Logger的层级设定为Level.INOF,也得将Handler的层级设定为Level.INFO.
15.1.3使用Handler与Formatter
-
MemoryHandler不会格式化信息,信息会储存在内存缓冲区,直到超过缓冲区大小,才将信息输出至指定目标Handler
-
streamHandle可自行制定信息输出时使用的outputStream,它与子类都会使用指定的Formatter格式信息。
-
可以使用addHandler()新增Handler实例,使用removeHandler()移除Handler。
-
建立FileHandler指定模式字符串时,可以使用“%h"来指定用户的根目录,“%g"自动为文档编号,config()是个简便方法,可以直接以Level。CONFIG层级输出信息。
-
可以继承Handler类,操作抽象方法publish()、flush()与close()方法来定义Handler
-
Handler负者输出,Formatter负者格式化,Filter负者信息过滤。
加入额外过滤条件,可以操作Filter接口。
- 可以通过logging.properties来设定Logger组态
15.2国际化基础
在不修改应用程序的基础上,根据不同用户采用不同语言。
-
可以使用ResourceBundle来做信息绑定,将信息移至程序外。
-
国际化的三个重要概念是地区信息,资源包和基础名称。
-
地区信息:由语言编码和地区编码组成
-
资源包:包括特定地区相关信息
-
代表同一组信息但不同地区的各个资源包会共享相同的继承名称。
使用指定的Local对象取得信息文档。
使用Locale。getDefault()取得的对象取得信息文档。
使用继承名称取得信息文档。
15.3规则表示式
-
切割字符串可以使用split方法
-
字面意义的字符
-
元字符
-
规则表达式是规则表达式,要写在”“中还要另外考虑。
教材学习中的问题和解决过程
- 对规则表示式的贪婪、逐步、独吞不是完全理解
- 对书上495页Arrays新增的ParallelPrefix()方法不是很理解,不明白运行结果为什么是{1,3,6,10,15}
- 解决过程:编译运行书上的例子,其实觉得“xfooxxxx”那个例子不是很直观,在通过自己的思考,所谓的{1,3,6,10,15}是把传入前一个参数,并相加得到的结果
其他(感悟、思考等,可选)
这周的学习任务不是很重,通过自学第15章,对日志、切割字符和字符串还有取得地区信息有了一定的了解。在规则表示式那个知识点里,需要注意规则表示式是规则表示式,写进“”里是另一回事。几小时前因为电脑自动升级重启没有保存,一早上的成果全部毁于一旦,不过在第二次敲知识点时,对知识的映像更加深刻的理解。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |