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

教材学习内容总结

第十四章NIO与NIO2

  1. NIO使用频道来衔接数据结点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记,像是标记读取位置、数据有效位置,对于这些区块标记,提供了Clear()、rewind()、flip()、compact()等高级操作。
  2. NIO2文件系统API提供一组标准接口与类,应用程序开发者只要基于这些标准接口与类进行文件系统操作,底层实际如何进行文件系统操作,是由文件系统提供负责。

第十五章

  • 日志API简介
  1. java.util.loggging包提供了日志功能相关类与接口。
  2. 使用日志的起点是Logger类,Logger类的构造函数表示为protected,不是java.util.logging同包的类不能直接以new创建,取得Logger实例,必须用Logger的静态方法getLogger()。
  3. 调用getLogger()时必须指定Logger实例所属空间名称,以 . 区分层级,名称空间层级相同的Logger,其父Logger组态相同。
  4. 要输出的信息,必须先通过Logger的Level与Filter过滤,再通过Handler的Level和Filter过滤,格式化信息的动作交给Formatter。
  • 指定日记层级
  1. Level如果没做任何修改,取得的Logger实例之父Logger组态,Level默认是Logger.GLOBAL_LOGGER_NAME(INFO)名称空间Logger实例的组态,Handler默认是ConsoleHandler。
  2. Logger实例的getParent()取得父Logger实例,getlevel()取得设定的Level实例。

    注意:Logger实例的层级必须大于或等于父Logger的Level。
  3. 可通过Logger的setLevel()设定层级,可用Level内建几个静态成员来指定。
  4. log()时指定的Level实例内含的int值小于Logger设定的Level实例内含的int值,Logger就不会记录信息。
  5. getHandlers()方法来取得目前已有的Handler实例数组。
  6. Handler可以通过setLevel()设定信息。
  • 使用Handler与Formatter
  1. 建立FileHandler指定模式字符串,“%h”表示用户根目录,“%t”取得系统暂存目录,“%g”自动为文档编号。
  2. 调用Logger实例的setUseParentHandlers()设定为false,日志不会传播给父Logger,使用setParent()方法指定父Logger
  • 自定义Handler、Formatter与Filter
  1. java.util.logging包中提供的Handler成果都不符合需求,继承Handler类,操作抽象方法publish()、flush()与close()方法来定义Handler,操作时考虑信息过滤与格式化。
  2. 自定义Formatter,继承Formatter后操作抽象方法format(),传入LogRecord,储存所有日志信息。
  • 使用logging.properties
  1. 通过logging.properties来设定Logger组态,修改.properties后另存至程序CLASSPATH中,指定java.util.logging.cofig.file系统属性为.properties名称。
  • 国际化基础
  1. 使用ResourceBundle做信息绑定,准备.properties文档并放在CLASSPATH的路径设定下,文件中撰写键/值配对。
  2. ResourceBundle的静态getBundle()方法会取得一个ResourceBundle实例,给定自变量名称是信息文档的主文件名,取得实例后用getString()指定键取得文档中对应值。
  3. 国际化三个重要概念:地区(Locale)信息、资源包(Resource bundle)与基础名称(Base name)。
  4. 将Unicode编码表示的.properties转回中文,使用-reverse自变量。
  • 规则表达式简介
  1. String的spilt()方法,返回切割后各子字符串组成的String数组。
  2. 规则表达式基本包括两种字符:字面意义字符与元字符。
  3. 字母或数字:比较字母或数字。
  4. 贪婪量词:{n}是贪婪量词表示法的一种,贪婪量词会尽可能的找到长度最长的符合文字
  5. 逐步量词:在贪婪量词表示法后加上?,会成为逐步量词(懒惰量词,非贪婪量词),会找到长度最短的符合文字
  6. 独吐量词:在贪婪量词表示法后加上+,会成为独吐量词,将剩余文字吃掉,然后看看独吞量词部分是否符合吃下的文字,如果符合就不会再吐出来了
  7. replaceAll()会将符合规则表达式的字符串取代后返回新字符串
  8. 使用()将规则表达式分组,被分组的规则表达式可以在稍后回头参考
  • JDK8 API增强功能
  1. String.join()、StringJoiner:String上有join()静态方法可以指定每个字符串间以什么间隔。
  2. Collectors上有joining()静态方法。
  3. paralleSort()方法可以将指定的数组分为子数组并以平行化方式分别排序,然后再进行合并排序。
  4. 使用Arrays的stream()方法,可以指定数组后返回Stream实例。

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

  • 问题一

    在学习指导中,有这样一个问题日志能不能存数据库中?

  • 解决方案

    在网上搜索了一下,找到了比较合适的说法:

  • 问题二

    如果要以特定编码输出信息或储存文档,有什么方法?

  • 解决方案:

Handler有个setEncoding()方法,可以指定文字编码。

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

  • 问题一:

    再上传代码时,git出现图中错误:

  • 解决方案

    上传了很多次都没有成功,后来发现是因为没有连接网络导致的。在检查确认网络连接无误后,再次上传,成功。

  • 问题二

    在运行课本p481 Helllo.java时,编译通过,在运行时出现错误,Hello.java程序代码如下:

package cc.openhome;

import static java.lang.System.out;
import java.util.ResourceBundle; public class Hello {
public static void main(String[] args) {
ResourceBundle res = ResourceBundle.getBundle("messages");
out.print(res.getString("cc.openhome.welcome") + "!");
out.println(res.getString("cc.openhome.name") + "!");
}
}

  • 解决方案

按照课本p480页,首先要准备一个.properties文档,如下图messages.properties,文档内容如图:

程序中代码如图:



且在检查p481页代码时发现,代码中

cc.openhome

也应该改为:

package I18N;

import static java.lang.System.out;
import java.util.ResourceBundle; public class Hello {
public static void main(String[] args) {
ResourceBundle res = ResourceBundle.getBundle("messages");
out.print(res.getString("I18N.welcome") + "!");
out.println(res.getString("I18N.name") + "!");
}
}

因为我的包名是I18N所以需要修改代码才能通过编译运行。

再次运行:

代码托管

  • 代码提交过程截图:





结对及互评

评分标准(满分10分)

  1. 从0分加到10分为止

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

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

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

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

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

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

6 其他加分:

  • 周五前发博客的加1分

    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分

      7 扣分:
    • 有抄袭的扣至0分
    • 代码作弊的扣至0分

点评模板:

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

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

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

  • 参考示例

点评过的同学博客和代码

  • 本周结对学习情况

    • 20155215

    • 结对学习内容

      • 一起讨论课本代码,共同解决代码编译报错问题。
      • 讨论分析上周考试留下来的部分没有解决的试题。
      • 讨论知识点,交换学习体会和总结学习难点。
  • 上周博客互评情况

    20155332

    20155225

    20155329

    20145207

    20145209

上周考试错题总结

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

  • 分析

这道题我选择的是C,少选择了B。老师上课讲解了这个题目,-b 是以八进制输出,l是16进制输出。

  • When applied to instance variables, the ________________ visibility modifier enforces encapsulation(当应用到实例变量时,____可见性修饰符强制执行封装).

A .static

B .final

C .public

D .private

E .none of the above(以上都不是)

  • 分析

我选择的是C,答案是D。私有可见性修饰符防止不适当的数据访问,因此促进封装。选择A和B不是可见性修饰符,而选择C是可见性修饰符,允许对对象数据的公共访问,这违背了封装的原则

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

A .true

B .false

  • 分析

我选择的是A,答案是B。概念错误。类可以被看作是一组对象的蓝图,而不是另一种方式。

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

    (Choose all that apply.)

A .Instant

B .LocalDate

C .LocalDateTime

D .LocalTime

E .ZonedDateTime

  • 分析

我选择的是AC,答案是E。localxxxx明确排除时区。instant代表一个时间点,但

始终使用GMT而不是所需时区。

  • 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.

  • 分析

我选择的是A,答案是B,日期开始为2018年4月30日。因为日期是不可变的,加上方法

忽略返回值,结果不变。因此,选项B是正确的。

  • 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.

  • 分析

我选择了A,正确答案是F,java抛出异常如果无效的日期值传递。没有第四十天

四月或任何其他月份。

感悟心得

  • 对教材感悟

在第十五章中,了解了日志API的介绍,系统中有很多值得记录的信息,例如异常捕捉之后,有些异常对于开发人员才有意义的,可以记录下来,java SE提供了日志API,可以基于标准调用使用。还了解了国际化基础,学会使用规则表示式,也认识了JDK8的增强功能。

  • 对考试感悟

在这次考试中,虽然可能大多半是运气吧,拿了第一名,但是很是开心,感觉又有了很强的动力去学习java。希望在日后的学习中能继续认真的对待,考试成绩能再提高。在上面考试分析中对错的题目做了分析,老师给出的英文解析,有的单词不知道什么意思,我用了有道词典查询,然后翻译了,查看起来就更能明白错误的原因在哪里了。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 15/15 1/1 23/26
第二周 208/240 2/2 35/38
第三周 376/584 3/3 32/38
第四周 823/1407 4/4 28/30
第五周 986/2393 5/5 21/26
第六周 1258/3651 6/6 26/25
第七周 575/4226 7/7 14/16
第七周 390/4616 8/8 15/18

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

20155232 2016-2017-3 《Java程序设计》第8周学习总结的更多相关文章

  1. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

  2. 20155328 2016-2017-2 《Java程序设计》第九周学习总结

    20155328 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 16.1 JDBC入门 JDBC是Java联机数据库的标准规范,定义一组标准类与接口,应用程 ...

  3. 20155216 2016-2017-2 《Java程序设计》第九周学习总结

    20155216 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC架构 JDBC API的使用 JDBC连接数据库 1.导入JDBC包: 添加impo ...

  4. 20155320 2016-2017-2《Java程序设计》第九周学习总结

    20155320 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 ...

  5. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  6. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  7. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  8. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  9. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  10. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

随机推荐

  1. Unity XLua 官方教程学习

    一.Lua 文件加载 1. 执行字符串 using UnityEngine; using XLua; public class ByString : MonoBehaviour { LuaEnv lu ...

  2. 《Pro SQL Server Internals, 2nd edition》中CHAPTER 7 Designing and Tuning the Indexes中的Clustered Index Design Considerations一节(译)

    <Pro SQL Server Internals> 作者: Dmitri Korotkevitch 出版社: Apress出版年: 2016-12-29页数: 804定价: USD 59 ...

  3. 用HackRF和Gqrx来听FM广播

    本文内容.开发板及配件仅限用于学校或科研院所开展科研实验! 淘宝店铺名称:开源SDR实验室 HackRF链接:https://item.taobao.com/item.htm?spm=a1z10.1- ...

  4. 机器学习之线性回归使用Python和tensorflow实现

    导入依赖包 import tensorflow as tf import numpy as np import matplotlib.pylab as plt from pylab import mp ...

  5. webpack4-用之初体验,一起敲它十一遍

    众所周知,webpack进入第4个大版本已经有2个月的时间了,而且webpack团队升级更新的速度也是非常的惊人 在写下如下内容的时候webpack已经出到了4.6的版本了,剑指5.0应该是指日可待了 ...

  6. 《Linux内核分析》--扒开系统调用的三层皮 20135311傅冬菁

    扒开系统调用的三层皮           20135311傅冬菁 一.内容分析 寄存器上下文(从用户态切换到内核态) 中断/int指令会在堆栈上保存一些寄存器的值(用户态栈顶地址..当时的状态字.当下 ...

  7. Software-Defined Networking:A Comprehensive Survey--Day1

    Software-Defined Networking:A Comprehensive Survey 摘要: 传统网络复杂且难以管理,根据预定义策咯也难以对网络进行配置,也难以重新配置. 软件定义网络 ...

  8. 使用ETL构建数据仓库的思考

    使用ETL构建数据仓库的思考 背景:公司的数据仓库建设项目启动在即,所谓万事开头难,如何在我们数仓建设规划的前期做好业务数据准备和系统建设规划是我们需要思考的问题,这里根据之前的自己参与过的公司ODS ...

  9. 如何让搜索引擎抓取AJAX内容?

    越来越多的网站,开始采用"单页面结构"(Single-page application). 整个网站只有一张网页,采用Ajax技术,根据用户的输入,加载不同的内容. 这种做法的好处 ...

  10. sqlserver 比较两个表的列

    一.问题 给了两个各有四五十个列的表,找出他们相同的列和不同的列 二.查询两个表的列,存在临时表 --#a ,#b都是临时表,当前连接断开后自动删除--RANK() OVER (ORDER BY sy ...