java第八周学习总结

学号20145336 《Java程序设计》第8周学习总结

教材学习内容总结

日志API

使用日志的起点是Logger类,LOgger实例的创建有许多要处理的要素,LOgger类的构造函数标识为protected,不是java.util.logging同包的类不能直接以new创建,要取得Logger实例,必须使用Logger的静态方法getlogger()。

调用getLogger()是,必须指定Logger实例所属名称空间,名称空间以“.”作为层级区分,名称空间层级相同的Logger其父Logger组态相同。

通常在那个类中取得的Logger,名称空间就会命名为那个类全名。经常的,也会通过以一下方式取得Logger。

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 訊息");
}
}

运行结果如下:

如果客户端调用了Logger实例的log()方法,首先会依据Level过滤信息,再看看Logger有无设定Filter接口的实例,如果有且其isLoggable()返回true,才会调用handle实例的publish()方法,handle也可设定自己的Filter实例,如果有且其isLoggable()返回true,就调用Formatter实例的format()方法格式化信息,最后在调用输出对象将格式化的信息输出。

Handle与Formatter

Handle分为MemoryHandle和StreamHandle,其中StreamHandle又分为ConsoleHandle、FileHandle和SockeHandle。

Logger可以使用addHandle()新增Handle实例,使用removeHandle()移除Handle。例如一下实例:

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 組態完成");
}
}

在建立FileHandle指定模式字符串时,可以使用"%h"来表示用户的根目录,还可以用"&t"来取得系统暂存目录,或者使用"%g"自动为文档编号。

FileHandle默认的Formatter是XMLFormatter,前面看过的ConsoleHandle默认使用SimpleFormatter,这两类是Formatter的子类,可以通过Handle的setFormatter()方法设定Formatter。

国际化基础

应用程序根据不同的地区用户,呈现不同的语言、日期格式等称为本地化,如果应用程序设计是,可以爱不修改应用程序情况下,根据不同用户直接采用不同语言日期格式等,这样的设计考虑成为国际化,简称i18n。

国际化的三个重要概念是地区信息、资源包与基础名称。地区信息的对应类Locale,ResourceBundle对象是JVM中资源包的代表对象。代表同一组信息但不同地区的各个资源包会共享相同的基础名称,使用ResourceHandle的getBundle()时指定的名称就是在指定基础名称。

使用ReasourceBUndle是,如何根据基础名称取得对应的信息文档:

  1. 使用指定的Locale对象取得信息文档。
  2. 使用Locale.getDefault()取得的对象取得信息文档。
  3. 使用基础名称取得信息文档

可以使用Date来取得完整的日期时间,可单纯使用toString()取得日期文字描述,或使用DateFormat格式化日期。若查看Date的API文件,会发现许多方法都不再建议使用,建议使用Calendar的相关方法取代。

教材学习中的问题和解决过程

代码调试中的问题和解决过程

其他(感悟、思考等,可选)

学习进度条

| | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|重要成长| | -------- | :----------------:|:----------------:|:---------------: |:-----:| | 目标 | 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 | |

参考资料

时间: 2024-12-22 00:32:47

java第八周学习总结的相关文章

20165326 java第八周学习笔记

第八周学习笔记 知识点总结 1.进程与线程 进程:程序的一次动态执行过程 区别:进程和线程的区别? 进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元 同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器.堆栈.上下文),一个进行至少包括一个线程. Java的多线程机制.Java内置对多线程的支持.我们的计算机在任何给定说的时刻只能执行线程中的一个,Java虚拟机只是从一个线程迅速地切换到另一个线程. 当main方法中有其他线程时,JVM一直要等到Java应用程序中的

20145301 《Java程序设计》第八周学习总结

20145301 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章部分 - 通用API 通用API 日志: 日志对信息安全意义重大,审计.取证.入侵检测等都会用到日志信息 Logger java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logger类,Logger类的构造函数标示为protected,不是java.util.logging同包的类不能直接以new创建,必许使用Logger的静态方法:名称空间层级相同的Logger,父Logger组态会

## 20155336 2016-2017-2《JAVA程序设计》第八周学习总结

20155336 2016-2017-2<JAVA程序设计>第八周学习总结 教材学习内容总结 第14章 NIO与NIO2 NIO简介 NIO使用频道来衔接数据结点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记,像是标记读取位 置.数据有效位置,对于这些区块标记,提供了Clear().rewind().flip().compact()等高级操作. NIO2简介 NIO2文件系统API提供一组标准接口与类,应用程序开发者只要基于这些标准接口与类进行文件系统操作,

20165225《Java程序设计》第八周学习总结

20165225<Java程序设计>第八周学习总结 1.视频与课本中的学习: 第十二章学习总结 1.继承Thread类创建线程,程序中如果想要获取当前线程对象可以使用方法:Thread.currentThread();如果想要返回线程的名称,则可以使用方法:getName(); 2.实现Runnable接口创建线程 3.使用Callable和Future创建线程 线程常用方法: start() run()定义线程线程对象被调度之后所执行的操作 sleep(int millsecond),必须在

20165205 2017-2018-2 《Java程序设计》第八周学习总结

20165205 2017-2018-2 <Java程序设计>第八周学习总结 教材学习内容总结 进程与线程 线程不是进程,但其行为很像进程,线程是比进程更小的执行单位. 与进程不同,线程的中断与恢复可以更加节省系统的开销. java中的线程 java语言的一大特点就是内置对多线程的支持. 线程的状态和生命周期: 新建:java语言使用Thread类及其子类的对象被声明并创建时,新生的线程对象处于新建状态. 运行和阻塞:当就绪状态的线程获取了CPU执行片的之后,就进入运行状态,但是在执行过程中,

20165318 2017-2018-2 《Java程序设计》第八周学习总结

20165318 2017-2018-2 <Java程序设计>第八周学习总结 目录 学习过程遇到的问题及总结 教材学习内容总结 第12章 Java多线程机制 代码托管 代码统计 学习过程遇到的问题及总结 Q1:在运行课本代码12_1时,结果如下:与课本上运行结果并不相同,再运行一次后发现,与上次结果竟然也不一样. 解决过程:在仔细看书后发现,书上解释说,"该程序在不同的计算机运行或在同一台计算机反复运行的结果不尽相同,输出结果依赖当前CPU资源的使用情况". Q2:在本周的

20172325 2017-2018-2 《Java程序设计》第八周学习总结

20172325 2017-2018-2 <Java程序设计>第八周学习总结 教材学习内容总结 1.关于绑定 绑定:在执行程序时产生一个请求事件,需要执行一段代码来来完成方法调用,即一个方法调用与一个方法定义的绑定. 后绑定:后绑定就是延迟绑定的情况.(后绑定的效率低于编译阶段的绑定效率) 2.由继承实现多态性 一个引用变量可以指向由继承关系的任何类的任何对象: 实际将调用的方法版本取决于对象的类型而不是引用变量的类型: 3.利用接口实现多态性 接口引用变量可以指向实现该接口的任何类的任何对象

20172320 2017-2018-2 《Java程序设计》第八周学习总结

20172320 2017-2018-2 <Java程序设计>第八周学习总结 教材学习内容总结 1.绑定多数情况下发生在编译阶段 2.被延迟的请求事件成为后绑定或动态绑定,后绑定的效率低于编译阶段的绑定效率 3.多态性引用:继承方式和接口方式 4.一个引用变量可以指向有继承关系的任何类的任何对象 5.实际将调用的方法版本取决于对象的类型而不是引用变量的类型 6.一个接口引用变量可以指向实现该接口的任何类的任何对象 7.选择法排序通过相继的将各值放在自己的最终位置,插入排序法是不断地将一个新元素

杨玲 201771010133《面向对象程序设计(java)》第八周学习总结

<面向对象程序设计(java)>第八周学习总结 第一部分:理论知识学习部分 1. 接口:用interface声明,是抽象方法和常量值定义的集 合.从本质上讲,接口是一种特殊的抽象类. (1)在Java程序设计语言中,接口不是类,而是对类 的一组需求描述,由常量和一组抽象方法组成. ? 接口中不包括变量和有具体实现的方法. (2)接口体中包含常量定义和方法定义,接口中只进 行方法的声明,不提供方法的实现. (3)通常接口的名字以able或ible结尾: (4)接口中的所有常量必须是public