20145110 《Java程序设计》第八周学习总结
2016-04-24 21:09
225 查看
20145110 《Java程序设计》第八周学习总结
教材学习内容总结
15.1日志
15.1.1日志API简介
Logger类的构造函数标示为protected,不是java.util.logging同包的类不能直接以new创建,,要取得Logger实例,必须使用Logger的静态方法getLogger()。import java.util.logging.*; public class LoggerDemo { public static void main(String[] args) { Logger logger = Logger.getLogger(LoggerDemo.class.getName()); logger.log(Level.WARNING, "WARNING 讯息"); logger.log(Level.INFO, "INFO 讯息"); logger.log(Level.CONFIG, "CONFIG 讯息"); logger.log(Level.FINE, "FINE 讯息"); } }
![](https://oscdn.geek-share.com/Uploads/Images/Content/202001/22/bdab22f8366d90a2b21c0fadd7c88859.png)
15.1.2指定日志层级
在没有任何组态设定的情况下,默认取得的Logger实例,层级必须大于或等于Logger.GLOBAL_LOGGER_NAME名称空间Logger实例设定的Level.INFO,才可能输出信息。在java中负责日志输出的是Handler实例,Logger可以使用addHandler()新增handler实例,使用RomoveHandler移除实例,书中有一个程序范例,可以将目前Logger与新建的FileHandler层级设定Level.CONFIG,并使用addHandler()设定至Logger实例:
import java.io.IOException; import java.util.logging.*; public class HandlerDemo { public static void main(String[] args) throws IOException { Logger logger = Logger.getLogger(HandlerDemo.class.getName()); logger.setLevel(Level.CONFIG); FileHandler handler = new FileHandler("%h/config.log"); handler.setLevel(Level.CONFIG); logger.addHandler(handler); logger.config("Logger 组装完成"); } }
import java.time.Instant; import java.util.logging.*; public class FormatterDemo { public static void main(String[] args) { Logger logger = Logger.getLogger(FormatterDemo.class.getName()); logger.setLevel(Level.CONFIG); ConsoleHandler handler = new ConsoleHandler(); handler.setLevel(Level.CONFIG); handler.setFormatter(new Formatter() { @Override public String format(LogRecord record) { return "日志來自 " + record.getSourceClassName() + "." + record.getSourceMethodName() + "\n" + "\t层级\t: " + record.getLevel() + "\n" + "\t讯息\t: " + record.getMessage() + "\n" + "\t时间\t: " + Instant.ofEpochMilli(record.getMillis()) + "\n"; } }); logger.addHandler(handler); logger.config("自订 Formatter 讯息"); } }
![](https://oscdn.geek-share.com/Uploads/Images/Content/202001/22/2acbef8e6e63c9b7940607c770ea5f3f.png)
15.1.5使用logging.Filter
可以通过logging.properties来设定Logger组态,启动JVM时,指定java.util.logging.config.file系统属性为.propertiles名称。15.3规则表示式
规则表达式简介:如果我想根据某个字符串或字符进行切割,可以使用String的split()方法,它会返回切割后各子字符串组成的String数组。就像下面的程序:```
import static java.lang.System.out;
public class SplitDemo {
public static void main(String[] args) {
// 根据逗号切割
for(String token : "Justin,Monica,Irene".split(",")) {
out.println(token);
}
// 根据Orz切割
for(String token : "JustinOrzMonicaOrzIrene".split("Orz")) {
out.println(token);
}
// 根据Tab字元切割
for(String token : "Justin\tMonica\tIrene".split("\t")) {
out.println(token);
}
}
}
```
![](https://oscdn.geek-share.com/Uploads/Images/Content/202001/22/f37209634bead85594a25b0761c3c06d.png)
JDK8API增强功能:
1.如果我们有一组字符串,我们想要指定每个字符串之间以“,”进行分隔,现在,我们可以使用String新增的join()静态方法。
2.对于数组操作,在JDK8中针对大型数组的平行化操作,在Arrays上新增了parallelPrefix(),ParallelSetall()与parallelSort()方法。
本周代码托管截图
![](https://oscdn.geek-share.com/Uploads/Images/Content/202001/22/40ffc262028fad09f45d7045ef9f940a.png)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 1/2 | 20/20 | |
第二周 | 300/500 | 1/3 | 18/38 | |
第三周 | 500/1000 | 1/4 | 22/60 | |
第四周 | 300/1300 | 1/5 | 30/90 | |
第五周 | 300/1600 | 1/6 | 30/160 | |
第六周 | 700/2300 | 2/7 | 30/190 | |
第七周 | 400/2700 | 2/9 | 30/220 | |
第八周 | 400/3100 | 2/11 | 30/250 |
参考资料
Java学习笔记(第8版)《Java学习笔记(第8版)》学习指导
...
相关文章推荐
- Java 匿名内部类
- 20145120 《Java程序设计》第8周学习总结
- Java 对象的多态性——必须画图理解
- Spring总结4—对持久层的支持(附:事务管理)
- 20145320 《Java程序设计》第8周学习总结
- 20145109竺文君、20145106石晟荣 java实验三
- Java 继承的一些重点
- Java 单例设计模式——构造方法私有化
- JAVA对象和XML文档、原来他们之间还有这一出
- java线程跟多线程
- 小结struts2应用开发步骤和流程(三)
- 排序算法-希尔排序
- java基础学习总结二(标识符、字符集、数据类型以及类型转换)
- 关于struts2.3的action
- Java 代码块
- Java static的简要概括
- 大数加减法-java实现
- Java this和super的区别
- 方便的自动Spring注解注入
- Java中的常见异常