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

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

教材学习内容总结

NIO

  • NIO使用频道来衔接数据节点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记。对于区块标记,提供了clear()、rewind()、flip()、compact()等高级操作。
  • Channels类定义了静态方法newChannel()。
  • Buffer的直接子类们都有一个allocate()静态方法,可以让你指定Buffer容量,Buffer容量大小可使用capacity()方法取得,实际可读取或写入的数据界限索引值可以由limit()方法得知或设定,下一个可读取数据的位置索引值,可以使用position()方法得知或设定。

日志

  • java.util.logging包提供了日志功能相关类与接口。
  • 使用日志的起点是Logger类,Logger实例的创建有许多要处理的要素,其构造函数标示为protected,取得Logger的实例,必须使用Logger的静态方法getLogger()。
  • 调用getLogger()时,必须指定Logger实例所属名称空间,名称空间以“."作为层级区分,名称空间层级相同的Logger,其父组态相同。
  • 调用getname()就可以取得类全名。
  • Level.OFF会用于关闭所有信息输出,Level.ALL会用于允许所有信息输出,使用removeHandler()移除Handler。
  • 一个Logger可以拥有多个Handler,可通过Logger的addHandler()新增Handler实例。
  • Handler可通过setLevel()设定信息,一个信息要经过Logger与Handler的过滤后才可以输出。
  • 负责日志输出的是Handler实例。
  • MemoryHandler不会格式化日志信息,信息会暂存于内存缓冲区,直到超过缓存区大小,才将信息输出至指定的目标Handler。
  • StreamHandler可自行指定信息输出时使用的OutputStream实例,它与子类都会使用指定的Formatter格式化信息。
  • ConsoleHandler的日志信息会显示在控制台。
  • FileHandle文档位置与名称可以使用模式字符串指定。
  • 如果要自定义Formatter,可以继承Formatter后操作抽象方法format(),这个方法会传入LogRecord,储存所有日志信息。

国际化基础

  • 对于日后可能变动的文字信息,可以考虑将信息移至程序之外,方法是使用ResourceBundle来做信息绑定。
  • .properties文档必须放置在CLASSPATH的路径设定下,文档中撰写的是键/值配对,之后在程序中可以使用键来取得对于的值。
  • 国际化的三个重要概念是地区信息、资源包与基础名称。
  • 地区信息可由一个语言编码(两个小写字母代表)与可选的地区编码(两个大写字母表示)来指定。
  • 代表同一组但不同地区的各个资源包会共享相同的基础名称,使用ResourceBundle的getBundle()时指定的名称,就是在指定基础名称。

规则表达式

  • 根据某个字符或字符串切割,可以使用String的split()方法,它会返回切割后各子字符串组成的String数组。
  • 规则表达式基本上包括两种字符:字面意义字符与元字符。
  • 字面意义字符是指按照字面意义比较的字符。
  • 元字符在规则表达式中有特殊含义,则必须加上忽略符号。
  • 规则表达式中,多个字符可以分归在一起,成为一个字符类,字符类会比较文字中是否有“任一个”字符符合字符类中某个字符。
  • {n}是贪婪量词表示法的一种,表示前面的项目出现n次。
  • 在贪婪量词表示法后加上?,将会成为逐步量词,又常称为懒惰量词,或非贪婪量词。
  • 在贪婪量词表示法后加上+,将会成为独吐量词。
  • 边界比较用来表示文字必须符合指定的边界条件,也就是定位点,因此这类表示式也常称为锚点。
  • 可以使用()来将规则表示式分组,除了作为子规则表达式之外,还可以搭配量词使用。
  • 分组回头参考是,是在\后加上分组计数,表示参考第几个分组的比较结果。
  • 规则表达式本身可读性差、除错不易,可以使用getDescription()取得错误说明,使用getIndex()取得错误索引,使用getPattern()取得错误的规则表达式,getMessage()会以多行显示错误的索引、描述等综合信息。
  • 对数据进行管线化操作,方法之一是使用Arrays的asList()方法返回List,而后调用stream()方法取得Stream实例,另一个方式是使用Arrays的stream()方法,它可以指定数组后返回Stream实例。

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

书 P484表格中八进制0n字符、八进制0nn字符、八进制0mnn字符以及有关十六进制的相关字符不懂其含义。

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

此次代码调试中没有出现较大问题。

上周考试错题总结

  1. 错题1:

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

LocalDate date = LocalDate.of(2018, Month.APRIL, 30);
date.plusDays(2);
date.plusYears(3);
System.out.println(date.getYear() + " "
date.getMonth() + " "+ date.getDayOfMonth());

A .2018 APRIL 2

B .2018 APRIL 30

C .2018 MAY 2

D .2021 APRIL 2

E .2021 APRIL 30

F .2021 MAY 2

G .A runtime exception is thrown.

答案:B。

  1. 错题2:

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

3.错题3:

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

A .Instant

B .LocalDate

C .LocalDateTime

D .LocalTime

E .ZonedDateTime

答案: E

结对及互评

评分标准

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

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分

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

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

    • 一周提交次数少于20次的不加分
  6. 其他加分:

    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习情况真实可信的加1分
  7. 扣分:

    • 有抄袭的扣至0分
    • 代码作弊的扣至0分
    • 迟交作业的扣至0分

点评模板:

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

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

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

  • 参考示例

点评过的同学博客和代码

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

通过这星期的学习,学会了使用日志API以及运用规则表达式,这星期学的许多内容都需要记忆,之后的学习中也要常返回来看看这些知识点。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 10/10 1/1 10/20 简单了解了jdk,认识了Java语言学习的复杂性
第二周 70/100 1/1 18/25
第三周 150/200 1/1 14/20
第四周 200/300 1/1 15/20
第五周 200/300 1/1 15/20
第六周 350/500 1/1 15/20
第七周 500/700 2/2 15/20
第8周 500/700 1/1 15/20
  • 计划学习时间:20小时

  • 实际学习时间:15小时

参考资料

posted @ 2017-04-16 22:55  田宜楠20155304  阅读(192)  评论(4编辑  收藏  举报