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

教材学习内容总结

认识NIO

Java NIO 由以下几个核心部分组成:

Channels

Buffers

Selectors

Channles包括:

ReadableByteChannel

WritableByteChannel

Buffers包括:

ByteBuffer

CharBuffer

DoubleBuffer

FloatBuffer

IntBuffer

LongBuffer

ShortBuffer

Selector允许单线程处理多个 Channel。如果应用打开了多个连接(通道),但每个连接的流量都很低,使用Selector就会很方便。

NIO2文件系统

java.nio.file.Files 与 java.nio.file.FileVisitor 使得您可以在文件系统中漫步,在特定目录深度查询文件或者目录,并可对每个查询结果执行用户实现的回调方法。 

java.nio.file.Path 与 java.nio.file.WatchService 允许 “ 注册 ” 来监视特定目录。如果在目录中发生了文件创建、修改或者删除操作,监视目录的应用程序将收到通知。 

java.nio.attribute.*AttributeView 允许查看此前对于 Java 用户隐藏的文件和目录属性。这些属性包括文件所有者及组权限,访问控制列表(ACL),以及扩展文件属性。

NIO.2 提供了 FileVisitor 的实现接口:java.nio.file.SimpleFileVisitor。该类以基础方式获取:对于 *Failed() 方法,它只是重新引发该异常,并且对于其他方法,它会继续下去而根本不做任何事!它的作用在于,可以使用匿名类来替代您所希望替代的方法;剩下的方法会按默认方式实现。FileVisitor 的实现,应当为其访问的每个目录和文件打印消息,并给出从其 BasicFileAttributes 中获取的文件大小。

DecimalFormat类

DecimalFormat类 包含一个模式 和一组符号

符号含义:

0 一个数字

一个数字,不包括 0

. 小数的分隔符的占位符

, 分组分隔符的占位符

; 分隔格式。

  • 缺省负数前缀。

    % 乘以 100 和作为百分比显示

    ? 乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用

    国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代

    替十进制分隔符。

    X 前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。

    FileStore类

    java.nio.file 中的FileSystem和FileSystems类,增强了访问文件系统的能力,使用这些类可以很容易地访问文件系统。实际上,使用FileSystems 类定义的newFileSystem()方法,甚至可以获取新的文件系统。FileStore类封装了文件存储系统。

使用日志API和国际化

1、日志工具类(logger):通常,大部分的日志框架都会定义一个主要的日志输出的工具类,开发者只需要声明该类,即可实现大部分的日志输出操作

2、日志输出级别(Level):日志输出的级别,意味着该日志的重要程度,大部分的日志框架的级别会分为:Debug(调试模式),Info,warn,error,fatal,其中,根据级别的大小排序,debug>info>warn>error>fatal。级别的大小,将会影响日志的输出,将级别设置的越高,输出的信息将会越多

3、日志输出格式(format):日志输出的格式,通常可以进行自定义,通过自定义的格式,输出的详细效果将不同

4、日志输出的方式:即将日志输出到哪?常见的输出方式包括如:控制台,文本文件,数据库等

5、日志分割:日志文件若以文件的方式进行输出的话,会存在文件大小问题,所以需要对日志进行分割,分割的方式可以分为按大小,按日期等。

Handler:输出介质

MemoryHandler不会格式化日志信息,信息会暂存于内存缓冲区,直到超过缓冲区大小,才将信息输出至指定的目标Handler。

StreamHandler可自行指定信息输出时使用的Outputstream实例,它与子类都会使用指定的Formatter格式化信息。

ConsoleHandler创建时,会自动指定Outputstream为System。err,所以日志信息会显示在控制台。

FileHandler创建时会建立日志输出时使用的FileOutputStream,文档位置与名称可以使用模式字符串指定。

SocketHandler创建时可以指定主机位置与端口,内部将自动建立网络联机,将日志信息传送至指定的主机。

addHandler()新增Hnadler实例。

removeHandler()移除Handler实例。

Handler是负责输出,格式化是交由Formatter,而信息过滤是交由Filter。Handler有默认的isLoggable()操作,会先依据Level过滤的信息,再使用指定的Filter过滤信息。

正则表达式

字符与元字符

字符类

贪婪、非贪婪、独占量词

边界比较

锚点

分组与反向引用

认识JDK8 API增强功能

logger类

通过Logger类的静态方法Logger.getRootLogger得到RootLogger。所有其他的loggers是通过静态方法Logger.getLogger来实例化并获取的。

private static Logger logger = Logger.getLogger(Test.class.getName()); 

Logger logger = Logger.getRootLogger();

logger.debug("This is debug message.");
// 记录info级别的信息
logger.info("This is info message.");
// 记录error级别的信息
logger.error("This is error message.");

Level类

ResourceBundle类

getBundle(String)

获取恰当的资源束子类。

getBundle(String, Locale)

获取恰当的资源束子类。

getKeys()

返回键的枚举。

getObject(String)

从资源束获取一个对象。

getString(String)

从资源束获取一个对象。

getStringArray(String)

从资源束获取一个对象。

handleGetObject(String)

从资源束获取一个对象。

setParent(ResourceBundle)

设置该束的父类束。

Pattern类和Matcher类

il.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式。 Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。

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

  • 问题1:

    对于正则表达式的细则不够了解

  • 问题1解决方案:

    详细可参考:正则表达式语法规则

  • 问题2:

    对于国际化基础概念不够清晰

  • 问题2解决方案:

    同计算机编程有关的国际化是设计和编写应用程序以便可以在全球或多国环境中使用的过程。国际化程序能够支持不同的语言以及不同格式的日期、时间、货币和其它值,而无须软件修改。这通常涉及“软编码”或将文本组件同程序代码分离并且可能涉及可插入代码模块。

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

  • 问题1:

  • 问题1解决方案:

    for语句成分不完整,添加完整后运行成功

  • 问题2:

  • 问题2解决方案:

    运行过程出现问题,尚未解决

代码托管

上周考试错题总结

  • 错题1及原因,理解情况

    vi中哪条命令是不保存强制退出?

    q!

  • 错题2及原因,理解情况

    JDK8中定义的通用函数接口,从行为上分为()类型:

A .

Consumer

B .

Function

C .

Predicate

D .

Supplier

答案为ABCD

  • 错题3及原因,理解情况

    JDK8 中新时间API中,用于度量时间的类为Duration和Period

  • 错题4及原因,理解情况

    需要人类能理解的时间,建议使用Date类的toString(). 说法是错误的。

  • 错题5及原因,理解情况

    下面哪些类的对象会包含“东部标准时间”的信息

    ZonedDateTime

  • 错题6及原因,理解情况

    当应用到实例变量时,____可见性修饰符强制执行封装

    private

结对及互评

评分标准

  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

  • 参考示例

点评过的同学博客和代码

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

  • 1、了解了API日志对于编写应用程序的重要性。
  • 2、通过对正则表达式的学习,了解了更多程序中字符的应用。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 6/6 1/4 20/20
第二周 334/340 1/5 18/38
第三周 570/900 1/6 22/60
第四周 544/1358 1/7 30/90
第五周 731/2089 1/8 30/90 了解了java中的架构,排序,以及异常处理
第七周 541/3558 2/10 30/90 了解了JDK8新的时间日期API
第八周 430/3877 1/11 30/90 学习了NIO、NIO2与通用API

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

耗时估计的公式

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

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

  • 计划学习时间:25小时

  • 实际学习时间:20小时

  • 改进情况:

(有空多看看现代软件工程 课件

软件工程师能力自我评价表
)

参考资料

20155216 2016-2017-2 《Java程序设计》第八周学习总结的更多相关文章

  1. 201521123027 <java程序设计>第八周学习总结

    1.本周学习总结 1.1思维导图 2.书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 总结:判断List中是否存在指定元素,需要用到equals方法,若存在就用remove进 ...

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

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

  3. 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结

    <面向对象程序设计Java>第八周学习总结   项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...

  4. 201871010106-丁宣元 《面向对象程序设计(java)》第八周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第八周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nwn ...

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

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

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

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

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

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

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

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

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

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

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

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

随机推荐

  1. PAT甲题题解-1109. Group Photo (25)-(模拟拍照排队)

    题意:n个人,要拍成k行排队,每行 n/k人,多余的都在最后一排. 从第一排到最后一排个子是逐渐增高的,即后一排最低的个子要>=前一排的所有人 每排排列规则如下: 1.中间m/2+1为该排最高: ...

  2. Daily Scrum NO.6

    会议概况 这两日又是由于编译deadline和数据库课程设计使得我们的进度进行缓慢.但是项目的进程仍然在可掌控的范围之内,时间虽然紧,但是应该最终能够实现Beta版本. 这次会议我们总结了之前5个正常 ...

  3. Daily Scrum NO.5

    工作概况 符美潇 昨日完成的工作 1.Daily Scrum.日常会议及日常工作的分配和查收. 2.变更集461代码签入,主要与视频链接爬取有关. 今日工作 1.Daily Scrum.日常会议及日常 ...

  4. 20135337朱荟潼 Linux第七周学习总结——可执行程序的装载

    朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第七周 Linu ...

  5. JavaScript编码命名规范及格式规范

    变量 局部变量命名采用首字母小写,其它单词首字母大写: //推荐 var printContent = 'hello world' //不推荐,变量名意义不明确 var objext = {}; // ...

  6. 剑指offer:数值的整数次方

    题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路: 一开始直接用一个for循环做连乘,测了一下,发现这个指数可能是负 ...

  7. Book Review 《构建之法》-2

    -敏捷流程包括了几大原则:Backlog.burn-down.Sprint.Scrum. 敏捷开发注重个人之间的交流,提倡尽早的交付有价值的软件满足顾客的需求, 在开发过程中不断与客户进行交互,变化. ...

  8. ElasticSearch 2 (3) - Breaking Changes

    ElasticSearch 2.1.1 (3) - Breaking Changes Search Changes search_type = scan Deprecated GET /my_ind ...

  9. [转帖] 外部访问k8s 里面pod的方式方法

    https://jimmysong.io/posts/accessing-kubernetes-pods-from-outside-of-the-cluster/ 从外部访问Kubernetes中的P ...

  10. 【设计模式】—— 备忘录模式Memento

    前言:[模式总览]——————————by xingoo 模式意图 这个模式主要是想通过一个对象来记录对象的某种状态,这样有利于在其他需要的场合进行恢复. 该模式还有跟多可以扩展的地方,比如可以记录多 ...