20155321 2016-2017-2 《Java程序设计》第八周学习总结
20155321 2016-2017-2 《Java程序设计》第八周学习总结
教材学习内容总结
创建Logger对象
- static Logger getLogger(String name):为指定子系统查找或创建一个 logger
- static Logger getLogger(String name, String resourceBundleName):为指定子系统查找或创建一个 logger
注意:name是Logger的名称,当名称相同时候,同一个名称的Logger只创建一个
Logger的级别
比log4j的级别详细,全部定义在java.util.logging.Level里面
各级别按降序排列如下:
SEVERE(最高值)
WARNING
INFO
CONFIG
FINE
FINER
FINEST(最低值)
注意:
还有一个级别OFF,可用来关闭日志记录,使用级别ALL启用所有消息的日志记录
logger默认的级别是INFO,比INFO更低的日志将不显示
Logger的Handler
Handler对象从Logger中获取日志信息,并将这些信息导出。例如,它可将这些信息写入控制台或文件中,也可以将这些信息发送到网络日志服务中,或将其转发到操作系统日志中
通过执行setLevel(Level.OFF)来禁用Handler,并可通过执行适当级别的setLevel 来重新启用
Handler类通常使用LogManager属性来设置Handler的Filter、Formatter 和 Level 的默认值
默认的日志方式是xml格式,但是最好自定义下logger的格式,这需要用Formatter来定义
FileHandler默认以XML形式输出
ConsoleHandler默认采用文本形式输出
默认level为INFO.
Logger的Formatter
Formatter为格式化LogRecords 提供支持
一般而言,每个日志记录Handler都有关联的 Formatter。Formatter接受LogRecord,并将它转换为一个字符串。有些formatter(如XMLFormatter)需要围绕一组格式化记录来包装头部和尾部字符串,可以使用 getHeader和getTail方法来获得这些字符串
LogRecord对象用于在日志框架和单个日志Handler之间传递日志请求
LogRecord(Level level, Stringmsg):用给定级别和消息值构造LogRecord。
教材学习中的问题和解决过程
- 问题1:对课本的Logger类不太理解,对Logger类的层级的作用不是很了解
- 问题1解决方案:
自己写了一个小测试类进行学习
public class TestLogger {
public static void main(String[] args)
{
Logger log = Logger.getLogger("lavasoft");
log.setLevel(Level.INFO);
Logger log1 = Logger.getLogger("lavasoft");
System.out.println(log==log1); //true
Logger log2 = Logger.getLogger("lavasoft.blog");
log2.setLevel(Level.WARNING);
log.info("aaa");
log2.info("bbb");
log2.fine("fine");
}
}
true
四月 14, 2017 8:06:15 上午 TestLogger main
信息: aaa
当注释掉log2.setLevel(Level.WARNING);则为
true
四月 14, 2017 8:07:27 上午 TestLogger main
信息: aaa
四月 14, 2017 8:07:27 上午 TestLogger main
信息: bbb
从这里可以看出,logger的名字是有层级关系的。一般使用圆点分隔的层次命名空间来命名 Logger。Logger名称可以是任意的字符串,但一般应基于被记录组件的包名或类名。可通过调用某个getLogger方法来获得Logger对象
问题2:对ConsoleHandler、fileHandler不太理解,不太懂得如何使用这些类
问题2解决方案:
public class TestLogger
{
public static void main(String[] args) throws IOException {
Logger log = Logger.getLogger("lavasoft");
log.setLevel(Level.INFO);
Logger log1 = Logger.getLogger("lavasoft");
System.out.println(log==log1); //true
Logger log2 = Logger.getLogger("lavasoft.blog");
//log2.setLevel(Level.WARNING);
ConsoleHandler consoleHandler =new ConsoleHandler();
consoleHandler.setLevel(Level.ALL);
log.addHandler(consoleHandler);
FileHandler fileHandler = new FileHandler("g:/testlog%g.log");
fileHandler.setLevel(Level.INFO);
log.addHandler(fileHandler);
log.info("aaa");
log2.info("bbb");
log2.fine("fine");
}
}
输出结果:
true
四月 14, 2017 8:28:58 上午 TestLogger main
信息: aaa
四月 14, 2017 8:28:58 上午 TestLogger main
信息: aaa
四月 14, 2017 8:28:58 上午 TestLogger main
信息: bbb
四月 14, 2017 8:28:58 上午 TestLogger main
信息: bbb
再查看g盘

- 默认的日志方式是xml格式,格式太难看,因此要自定义下logger的格式,则需用Formatter来定义
代码调试中的问题和解决过程
- 问题1:对课堂测试的第22题进行验证,题目是下面代码的运行结果是?
LocalDate date = LocalDate.of(2018, Month.APRIL, 40);
System.out.println(date.getYear() + " " + date.getMonth()
+ " "+ date.getDayOfMonth());
A .2018 APRIL 4
B .2018 APRIL 30
C .2018 MAY 10
D .Another date
E .The code does not compile.
F .A runtime exception is thrown.
老师给的正确答案是F,相应的解释是Java throws an exception if invalid date values are passed. There is no 40th day in April—or any other month for that matter
- 问题1解决方案:
在IDEA上运行后出现了以下说明,DateTimeException是一种runtime exception,因此选F。但是本身这个程序是可以通过编译的,因此选项E是错误的。

代码托管

上周考试错题总结
错题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
原因:只选了C,对B这种简写不太熟悉
理解情况:正确答案是BC,-b 是以八进制输出
错题2:(多选题)JDK8中的Lambda表达式有以下好处:
A .消除重复性
B .提高性能
C .提高安全性
D .改善可读性
原因:本周学习没怎么看Lambda表达式的相关内容,对此不太了解
理解情况:正确答案是AD。课本p384有详细说明
错题3:(单选题)需要人类能理解的时间,建议使用Date类的toString().
A .True
B .False
理解情况:正确答案是B。课本P430页有详细说明
错题4:(多选题)JDK8 中新时间API中,用于度量时间的类有()
A .Instant
B .Duration
C .Period
D .LocalDateTime
理解情况:正确答案是BC,课本P442有详细说明
错题5:(单选题)An object can be thought of as a blueprint for a set of classes(对象被认为是类集合的蓝图).
A .true
B .false
理解情况:正确答案是B,A class can be thought of as a blueprint for a set of objects; not the other way around.
错题6:(多选题)下面哪些类的对象会包含“东部标准时间”的信息
A .Instant
B .LocalDate
C .LocalDateTime
D .LocalTime
E .ZonedDateTime
理解情况:正确答案是E。LocalXXXX explicitly excludes time zones. Instant represents a point in time, but
always uses GMT rather than the desired time zone.
结对及互评
点评过的同学博客和代码
本周结对学习情况
- 20155330
- 结对学习内容
- 学习了下周实验的相关内容及知识点
- 学习了第十五章的内容
上周博客互评情况
其他(感悟、思考等,可选)
随着学习不断进行,感觉学的东西也越来越难,前面有些基础打得不扎实到现在感觉都体现出来,看新的知识的时候总是被以前所影响,书上的解释有些时候感觉唐突和突兀,还是要看网上其他人的一些资料解释才行
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 1/ | 20/20 | 对IDEA、git、JDK、JVM有了更多的了解,面对学习过程中遇到的困难学会自己主动地寻找办法去解决 | |
| 第二周 | 1/2 | 18/38 | 掌握了Java中的基本运算符和基本语句 | |
| 第三周 | 1/3 | 22/60 | 对面向对象、封装、构造函数等重要知识点有了初步理解,学会自主学习,遇到困难的时候从多方面寻找资料以求答案 | |
| 第四周 | 1/4 | 22/60 | 对继承和多态了一定程度的理解,并学会使用多态来提高代码的复用性 | |
| 第五周 | 706/2639 | 1/5 | 25/85 | 对异常以及集合框架的学习 |
| 第六周 | 735/3194 | 1/6 | 28/113 | 对IO流,多线程以及并行API的学习 |
| 第七周 | 428/3474 | 1/7 | 18/131 | 对Date的学习 |
| 第八周 | 351/3825 | 1/8 | 20/151 | 对日志API以及规则表达式的学习 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:15小时
实际学习时间:20小时
改进情况:对书本的一些描述掌握得不够清晰,要多看几遍
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
20155321 2016-2017-2 《Java程序设计》第八周学习总结的更多相关文章
- 201521123027 <java程序设计>第八周学习总结
1.本周学习总结 1.1思维导图 2.书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 总结:判断List中是否存在指定元素,需要用到equals方法,若存在就用remove进 ...
- 20155321 2016-2017-2 《Java程序设计》第九周学习总结
20155321 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 厂商在实现JDBC驱动程序时,依方式可将驱动程序分为四种类型: JDBC-OD ...
- 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结
<面向对象程序设计Java>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第八周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第八周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nwn ...
- 20155334 2016-2017-2 《Java程序设计》第九周学习总结
20155334 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章:整合数据库 16.1 JDBC入门 JDBC(Java DataBase Conn ...
- 20155330 2016-2017-2 《Java程序设计》第九周学习总结
20155330 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 学习目标 了解JDBC架构 掌握JDBC架构 掌握反射与ClassLoader 了解自定义泛 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
随机推荐
- DRF框架获取参数的方式
DRF获取参数的方式 例如url url(r'^demo/(?P<word>.*)/$', DemoView.as_view()) 在类视图中获取参数 url:http://127.0.0 ...
- C++:继承访问属性(public/protected/private)
• 公有继承(public) 公有继承在C++中是最常用的一种继承方式,我们先来看一个示例: #include<iostream> using namespace std; class F ...
- Book Review 《构建之法》-2
-敏捷流程包括了几大原则:Backlog.burn-down.Sprint.Scrum. 敏捷开发注重个人之间的交流,提倡尽早的交付有价值的软件满足顾客的需求, 在开发过程中不断与客户进行交互,变化. ...
- Java的4种保留4位小数的方法(转)
上网查到的4种方法 其实刚学java……谁知道java里面的这么多方法啊……java里面重要的包本来就不少啊 ……跟我学粤语的小徒弟问我的东东…… 写两种方式……直接在main函数里面写的.还有就是利 ...
- PAT 1043 输出PATest
https://pintia.cn/problem-sets/994805260223102976/problems/994805280074743808 给定一个长度不超过10000的.仅由英文字母 ...
- Linux命令(十四) 查看工作目录文件 ls
目录 1.命令简介 2.常用参数介绍 3.实例 4.直达底部 命令简介 ls 命令是 Linux 下最常用的命令. ls 就是 list 的缩写.默认情况下 ls 命令用来打印出当前目录的清单, 如果 ...
- array_pop()方法
array_pop — 将数组最后一个单元弹出(出栈) 说明 mixed array_pop ( array &$array ) array_pop() 弹出并返回 array 数组的最后一个 ...
- Java结束线程的三种方法(爱奇艺面试)
线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方法是永远不会结束的.例如在程序中使用线程进行So ...
- Java NIO 详解(二)
异步IO 异步 I/O 是一种没有阻塞地读写数据的方法.通常,在代码进行 read() 调用时,代码会阻塞直至有可供读取的数据.同样, write()调用将会阻塞直至数据能够写入,关于同步的IO请参考 ...
- 「BJWC2018」Border 的四种求法
「BJWC2018」Border 的四种求法 题目描述 给一个小写字母字符串 \(S\) ,\(q\) 次询问每次给出 \(l,r\) ,求 \(s[l..r]\) 的 Border . \(1 \l ...