您的位置:首页 > 编程语言 > Java开发

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

2017-04-16 02:41 351 查看

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

教材学习内容总结

第十四章:NIO与NIO2

NIO的定义:

InputStream、OutputStream的输入输出,基本上是以字节为单位进行低层次处理,虽然需要直接面对数组,但实际上多半是对字节数组中整个区块进行处理。
dump()
方法是整块数据读入后又整块数据写出。

NIO2的定义:

现今世界上存在着各式各样的文件系统,不同的文件系统会提供不同的存取方式,文件属性,权限控制等操作。在JDK7出现以前,常需要对特定的文件撰写特定的程序,不仅撰写方式没有标准,针对特定功能撰写的程序也会增加应用程序开发者的负担。

NIO2文件系统API提供一组标准类接口与类,应用程序开发者只要基于这些标准接口与类进行文件系统操作,底层实际如何进行文件系统的操作,是由文件系统提供者负责。

第十五章:通用API

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()
方法

字面意义的字符

规则表达式是规则表达式,要写在中还要另外考虑。

JDK8 API增强功能
StringJoiner、Arrays新增API

String.join()
、StringJoiner

String新增
join()
静态方法可以指定每个字符串间以逗号分隔进行连接。

Arrays

Arrays上新增
parallelPrefix()
parallelSetAll()
parallelSort()
方法,
parallelSort()
方法,可以将指定的数组分为子数组并以平行化方式分别排序,然后再进行合并排序。指定的数组之元素必须操作Comparable。

Stream相关API

Files上有
lines()
list()
walk()
等方法。

Stream、InStream、DoubleStream等都有
of()
静态方法,可以使用可变长度自变量方式指定元素。

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

问题1:对规则表示式的贪婪、逐步、独吞不是完全理解

问题1解决方案:需要伟大的娄嘉鹏老教授讲解,然而这是不可能的,原因嘛······你懂得,我估计这位伟大娄嘉鹏都不带看我博客的。剽悍的那啥是不会管你的。

问题2:对书上495页Arrays新增的ParallelPrefix()方法不是很理解,不明白运行结果为什么是{1,3,6,10,15}

问题2解决方案:编译运行书上的例子,其实觉得“xfooxxxx”那个例子不是很直观,在通过自己的思考,所谓的{1,3,6,10,15}是把传入前一个参数,并相加得到的结果

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

问题1:在运行DateFormatDemo中,提示它是公共的,代码中定义的本来就为public class,DateFormatDemo

问题1解决方案:去除public之后就能成功运行了

代码托管



上周考试错题总结

An object can be thought of as a blueprint for a set of classes(对象被认为是类集合的蓝图).(B)

A .true

B .false

原因:一个类可以被认为是一个蓝图一组对象,而不是相反。

When an object is passed to a method, the actual and formal parameters become aliases(当把对象传递给方法时,实参和形参互为别名).(A)

A .true

B .false

原因:实际参数的数据发送到该方法。正式的方法定义中使用的参数。当对象被发送到一个方法,这两个值是引用,成为彼此的别名。

Which of the following objects could contain the information “eastern standard time”?(下面哪些类的对象会包含“东部标准时间”的信息)(E)

(Choose all that apply.)

A .Instant

B .LocalDate

C .LocalDateTime

D .LocalTime

E .ZonedDateTime

原因:LocalXXXX明确排除了时区。即时代表一个时间点,但是是使用格林尼治时间而不是期望的时区。

Given the following, which answers can correctly fill in the blank? (Choose all that apply.)针对下面的代码,()中应填入哪个选项?(F)

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()

原因: 1. 选择当前即时正确创建。2. 选项B正确转换秒瞬间。3. F选项也是一个适当的转换。4. 选择C,D,E不正确的,因为源对象并不代表一个时间点。5. 没有一个时区,Java不知道即时的时刻使用。

结对及互评

点评过的同学博客和代码

本周结对学习情况

20155319

结对学习内容:相互查看对方代码,并对学习中遇到的疑问进行交流,合作解决编程过程中遇到的问题。

上周博客互评情况

20145202

20155308

20155239

20155333

20155310

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

Java学习是一个长期的过程,不能一蹴而就,只能循序渐进,一步一步来,此外需要老师的细心讲解 (然而这事儿可能吗?伟大的娄老师的理论,学生佩服,无fuck说)

在学习的道路上没有平坦的捷径,唯有持之以恒的认真刻苦才能够学有所成。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周5/51/110/10
第二周90/951/215/25
第三周131/2341/320/45
第四周289/5231/421/66
第五周446/9691/525/91
第六周720/16891/625/116
第七周431/21201/730/146
第八周381/25012/935/181
参考:软件工程软件的估计为什么这么难软件工程 估计方法

计划学习时间:40小时

实际学习时间:35小时

改进情况:

参考资料

Java学习笔记(第8版)

《Java学习笔记(第8版)》学习指导

世界上最有用的,最好消磨时间的评分模板:

评分标准

正确使用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

基于评分标准,我给本博客打分:XX分。得分情况如下:xxx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: