20155331 2016-2017-2 《Java程序设计》第8周学习总结

20155331 2016-2017-2 《Java程序设计》第8周学习总结

教材学习内容总结

NIO与NIO2

NIO使用频道(channel)来衔接数据节点,对数据区的标记提供了clear(),rewind(),flip(),compact()等高级操作。

想要取得channel的操作对象,可以使用channels类。

Buffer的直接子类们都有一个allocate()静态方法,可以让你指定Buffer容量。

Buffer的容量大小可以使用capacity()方法取得。

在以前,并没有标准方式取得不同文件系统所支持的不同属性,在JDK7中,可以通过BasicFileAttributes,DosFileAttributes,PosixFileAttributes,可以针对不同的文件系统取得支持的属性信息。

NIO2文件系统API提供一组标准接口与类。

日志API简介

1.java.util.logging包提供了日志功能相关类与接口,不必额外配置日志组件,就可在标准Java平台使用是其好处。使用日志的起点是Logger类,Logger类的构造函数标示为protected,不是java.util.logging同包的类不能直接以new创建,要取得Logger实例,必修使用Logger的静态方法getLogger()。

2.调用getLogger()时,必须指定Logger实例所属名称空间,名称空间以“.”作为层级区分,名称空间层级相同的Logger,其父Logger组态相同。
通常在哪个类中取得的Logger,名称空间就会命名为哪个类全名。
取得Logger实例后,可以使用Lever的静态成员指定信息层级。

3.Logger是记录信息的起点,要输出的信息,必须先通过Logger的Lever与Filter过滤,在通过Handler的Lever与Filter过滤,格式化信息的动作交给Formatter,输出信息的动作实际上是Handler负责。

4.Logger有层级关系,名称空间层级相同的Logger,父Logger组态会相同,每个Logger处理完自己的日志动作后,会向父Logger传播,让父Logger也可以处理日志。

使用Handler与Formatter

负责日志输出的是Handler实例。标准API中提供几个Handler操作类:
MemoryHandler不会格式化日志信息,信息会暂存于内存缓冲区,直到超过缓冲区大小,才将信息输出至指定的目标Handler。
StreamHandler可自行指定信息输出时使用的OutputStream实例,它与子类都会使用指定Formatter格式化信息。
ConsoleHandler创建时,会自动指定OutputStream为System.err,所以日志信息会显示在控制台。
FileHandler创建时会建立日志输出时使用的FileOutputStream,文档位置与名称可以使用模式Pattern字符串指定。
SocketHandler创建时可以指定主机位置与端口,内部将自动建立网络联机,将日志信息传送至指定的主机。

Logger可以使用addHandler()新增Handler实例,使用removeHandler()移除Handler。

FileHandler默认的Formatter是XMLFormatter;
ConsoleHandler默认使用SimpleFormatter;这两个类是Formatter的子类,可以通过Handler的setFormatter()方法设定Formatter。

JDK8 API增强功能

JDK8中,String新增了join()静态方法可以直接使用

String message = String.join("-","Java","is","cool");
会产生“Java-is-cool”

JDK8中,针对大型数组的平行化操作,在Arrays上新增了一些方法。
parallelPrefix()方法可以指定XXXBinaryOperator实例,执行类似Stream的reduce()方法。
parallelSetAll()方法用来对数组进行初始化或全面重新设置每个索引元素。
parallelSort()方法可以将指定的数组分为子数组并以平行化当时分别排序。

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

问题一:Java API问题

public ArrayList(Collection c)

请问 这是什么意思?
我看到好多都写成这样
不明白是什么意思啊

答:泛型中的通配符!在你这里的含义表示这个集合中所能放入的数据只能是E或者E的子类,E表示某种类型,当然在你用他的时候你一定会指定E为什么类型的!

问题二:在 许多的java api中,如servlet api,struts api,他们实现是不是都要基于JDK api?
换句话说,如果没有jdk api。它们是不是都无法正常工作?
由没有独立于jdk api的java api??

java的开发环境是jdk ,
在servlet ,struts中大量使用程序都是基于jdk开发的
离开了jdk环境,这些程序是无法运行的
jdk pai = java api

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

这个应该怎么改?

答:把FileChannel fc=new fin.getChannel();
改为FileChannel fc=fin.getChannel();

上周考试错题总结

下面哪些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

答案:B、C

下面哪些类的对象会包含“东部标准时间”的信息)
(Choose all that apply.)

A .Instant

B .LocalDate

C .LocalDateTime

D .LocalTime

E .ZonedDateTime

答案: E

下面哪些内容会出现在Period对象中?
A .Year
B .Month

C .Day

D .Hour

E .Minute

F .Second

正确答案: A B C

Given the following, which answers can correctly fill in the blank? (Choose all that

apply.)针对下面的代码,()中应填入哪个选项?

LocalDate date = LocalDate.now();

LocalTime time = LocalTime.now();

LocalDateTime dateTime = LocalDateTime.now();

ZoneId zoneId = ZoneId.systemDefault();

ZonedDateTime zonedDateTime = ZonedDateTime.of(dateTime, zoneId);

long epochSeconds = 0;

Instant instant = ( );

A .

Instant.now()

B .

Instant.ofEpochSecond(epochSeconds)

C .

date.toInstant()

D .

dateTime.toInstant()

E .

time.toInstant()

F .

zonedDateTime.toInstant()

正确答案: F

What is the output of the following code?(下面代码的运行结果是?)

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

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

要多查API,它是Java编程的基本方法,也是编程过程中所不断利用的资源。Java的学习过程不仅仅是基本语法的学习,更多的是去学习和掌握它所提供的API类库。

评分标准

正确使用Markdown语法(加1分):

不使用Markdown不加分

有语法错误的不加分(链接打不开,表格不对,列表不正确...)

排版混乱的不加分

模板中的要素齐全(加1分)

缺少“教材学习中的问题和解决过程”的不加分

缺少“代码调试中的问题和解决过程”的不加分

代码托管不能打开的不加分

缺少“结对及互评”的不能打开的不加分

缺少“上周考试错题总结”的不能加分

缺少“进度条”的不能加分

缺少“参考资料”的不能加分

教材学习中的问题和解决过程, 一个问题加1分

代码调试中的问题和解决过程, 一个问题加1分

本周有效代码超过300分行的(加2分)

一周提交次数少于20次的不加分

其他加分:

周五前发博客的加1分

感想,体会不假大空的加1分

排版精美的加一分

进度条中记录学习时间与改进情况的加1分

有动手写新代码的加1分

课后选择题有验证的加1分

代码Commit Message规范的加1分

错题学习深入的加1分

点评认真,能指出博客和代码中的问题的加1分

结对学习情况真实可信的加1分

扣分:

有抄袭的扣至0分

代码作弊的扣至0分

迟交作业的扣至0分

点评模板:

博客中值得学习的或问题:

xxx

xxx

...

代码中值得学习的或问题:

xxx

xxx

...

基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

参考示例

点评过的同学博客和代码

上周博客互评情况

20155220

20155301

20155228

20155337

20155324

posted @ 2017-04-16 23:11  20155331  阅读(231)  评论(5编辑  收藏  举报