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

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新增APIhtml

  1. String.join()、StringJoiner
    String新增join()静态方法能够指定每一个字符串间以逗号分隔进行链接。java

  2. Arraysgit

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

  3. Stream相关APIapi

    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以后就能成功运行了

代码托管

上周考试错题总结

  1. An object can be thought of as a blueprint for a set of classes(对象被认为是类集合的蓝图).(B)
    A .true
    B .false
    缘由:一个类能够被认为是一个蓝图一组对象,而不是相反。
  2. When an object is passed to a method, the actual and formal parameters become aliases(当把对象传递给方法时,实参和形参互为别名).(A)
    A .true
    B .false
    缘由:实际参数的数据发送到该方法。正式的方法定义中使用的参数。当对象被发送到一个方法,这两个值是引用,成为彼此的别名。
  3. 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明确排除了时区。即时表明一个时间点,可是是使用格林尼治时间而不是指望的时区。
  4. Given the following, which answers can correctly fill in the blank? (Choose all that apply.)针对下面的代码,()中应填入哪一个选项?(F)app

    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
    • 结对学习内容:相互查看对方代码,并对学习中遇到的疑问进行交流,合做解决编程过程当中遇到的问题。
  • 上周博客互评状况

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

Java学习是一个长期的过程,不能一蹴而就,只能按部就班,一步一步来,此外须要老师的细心讲解 (然而这事儿可能吗?伟大的娄老师的理论,学生佩服,无fuck说)
在学习的道路上没有平坦的捷径,惟有锲而不舍的认真刻苦才可以学有所成。编码

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 5/5 1/1 10/10
第二周 90/95 1/2 15/25
第三周 131/234 1/3 20/45
第四周 289/523 1/4 21/66
第五周 446/969 1/5 25/91
第六周 720/1689 1/6 25/116
第七周 431/2120 1/7 30/146
第八周 381/2501 2/9 35/181

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

  • 计划学习时间:40小时

  • 实际学习时间:35小时

  • 改进状况:

参考资料

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

评分标准

  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
  • 基于评分标准,我给本博客打分:XX分。得分状况以下:xxx
相关文章
相关标签/搜索