20145335郝昊 《Java程序设计》第8周学习总结

教材学习内容总结

第14章 NIO与NIO2

  • NIO简介

    NIO使用频道来衔接数据结点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记,像是标记读取位置、数据有效位置,对于这些区块标记,提供了Clear()、rewind()、flip()、compact()等高级操作。

  • NIO2简介

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

第15章 通用API

  • 日志

  • 特点:

    1. java.util.logging包提供了日志功能相关类与接口iou,使用日志的起点是Logger类。
    2. 调用getLogger()时,名称空间以“.”作为层级区分,名称空间层级相同的Logger,其父Logger组态相同。
    3. 取得Logger实例之后,可以使用log()方法输出信息,输出信息可以使用Level的静态成员指定信息层级。
    4. 信息经过Logger过滤后还需经过Handler的过滤,一个Logger可以拥有多个Handler
    5. 在没有任何组态设定的情况下,取得的Logger实例,只会使用Logger.GLOBAL_LOGGER_NAME名称空间Logger实例拥有的Handler,默认使用ConsoleHandler,为Handler的子类,作用是在控制台下输出日志信息,默认层级是Level.INEO
    6. MemoryHandle:不会格式化日志信息,信息会暂存于内存缓冲区内,直到超过缓冲区的大小,才将信息输出至指定的目标Handler。
    7. StreamHandler:可自行指定信息输出时使用的OutputStream实例,它与子类都会使用指定的Formatter格式化信息。
    8. ConsoleHandler:在创建时会指定OutputStream为System.err,所以日志信息会显示在控制台。
    9. FileHandler:创建时会建立日志输出时使用FileOutputStream,文档位置与名称可以使用模式字符串指定。
    10. SocketHandler:创建时可以指定主机位置与端口,内部将自动建立网络联机,将日志信息传送至指定的主机。
    11. 如果java.util.logging包中提供的Handler成果都不符合需求,可以继承Handler类,操作抽象方法publish()、flush()、close()方法来自定义Handler。
  • 注意:

    1. logger有层级关系,名称空间层级相同的Logger,父Logger组态会相同,每个Logger处理完自己的日志动作后,会向父LOgger传播,让父Logger也可以处理日志。
    2. 在没有任何组态设定的情况下,默认取得Logger实例,层级必须大于或等于Logger.GLOBAL_LOGGER_NAME名称空间Logger实例设定的Leve.INFO,才有可能输出信息。
    3. Logger的config()是个简便的方法,可以直接以Leve.CONFIG层级输出信息。
  • 国际化基础

  • 使用java.util.ResourceBundle与java.util.Locale。

  • 使用ResourceBundle做信息绑定:

    准备一个.propreties文档,(注意:.propreties文档必须放在CLASSPATH的路径设定下

  • 使用ResourceBundle,根据基础名称取得对应的信息文档:

    使用指定的Locale对象取得信息文档。

    使用Locale.getDefault()取得信息文档。

    使用基础名称取得信息文档。

  • 使用Locale:

    地区信息=语言编码+可选地区编码。

    语言编码由两个小写字母代表如zh表示中文(chinese),可选地区编码由两个大些字母表示IT表示意大利(Italy)

  • 规则表示式

  • 规则表示式主要运用于字符、字符串格式的比较,有字面意义字符、字符类、贪婪量词、逐步量词、独吐量词、边界比较、分组与参考等。

  • java.util.regex.Pattern实例是规则表示式在JVM中的代表对象,必须通过Pattern的静态方法compile()来取得,可以使用matcher()方法指定比较的字符串,这会返回java.util.regex.Matcher实例,表示对指定字符串的比较器。

  • 在JDK8中,API新增了StringJoiner、Arrays等API,在Stream相关的API也有增强。

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

第15章

在学习本章关于日志的知识时候存在一些问题。

  • 对于书上关于Logger、Handler、Fomatter之间API的调用关系存在问题。信息通过了Logger的Level与Filter过滤,再通过Handler的Level与Filter过滤,格式化信息的动作交给Formatter,最后才调用输出对象将格式化后的信息输出。为什么有的时候可以输出信息,有的时候不会抛出信息?

    后来调试代码,认真看书上的范例研究,虽然Handler负责实际输出但是需要注意Logger的信息会往父类Logger传播,这是第一次接触Logger实例就需要掌握的,因为其会往父类传播,在没有任何组态设定的情况下Logger是有默认值的,层级必须大于或等于Logger.GLOBAL_LOGGER_NAME名称空间Logger实例设定的Level.INFO,才有可能输出信息。

  • 对于贪婪、逐步、独吐量词,它们三者的区别是什么?三者的运算方法是否相同?对于同一段字符串的运算结果是否相同?如何比较的?

    经过看书后,对于贪婪量词,是整个把剩余文字吃掉,在逐步吐出文字,结果会找出尽可能长的符合文字。而逐步量词,是一边吃掉剩余文字,一边看没有被吃到的文字进行比较,独吐量词会将文字吃掉,然后看独吐量词部分是否符合吃下的文字;显然通过三者的特点就可以判断出区别;起先以为对于同一段字符出来的结果是相同的,但是对于书上的例子xfooxxxxxxfoo来看,三者运算的结果是不同的;而比比较方法使用给定的规则表达式比较。

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

  • 在规则表示式中,自面意义字符的表示,对于所列出的常用字面意义字符有点问题,看书上的例子,用split()方法切割。

      	//规则表示式\\撰写为Java字符串是"\\\\"
    for(String token:"Justin\\Moinca\\Irene".split("\\\\")
    {
    out.println(token);
    }

    重点在于要把握必须加上忽略符号,例如要比较!,必须使用\!等,这样理解问题就会简单很多。

  • 在规则表示式中,边界比较问题,书上给的例子 RegularExpression SplitDemo2,采用了之前的split()方法进行切割。其中for(String str : "Justin dog Monica doggie Irene".split("dog"))这行代码切割出来的结果并不是想象中的结果.

    因为doggie中也存在dog就需要标出边界利用\b,将代码修改为for(String str : "Justin dog Monica doggie Irene".split("\bdog\b"))

    但显示的结果还不是想象中的,后来仔细观察RegularExpression SplitDemo3的例子发现了错误,虽然字符\b是边界,但是在编译的时候java会将\b\当作忽略符号,结果就是用spilt()方法用bdog进行切割的,因为\b\被当作忽略符号,则边界符号自然就会出现问题。应该将代码改为for(String str : "Justin dog Monica doggie Irene".split("\\bdog\\b"))

    这样\b就被当作边界符号使用,结果就会正确了。

本周代码托管截图

本周代码用git上传成功,本周有实验,加强了git的熟练度





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

java知识的学习,已经渐渐的接近了尾声,现在的一些知识点看起来会简单一些,但是依然不能掉以轻心。这些方面的知识可能对于我们现在的编程可能用处不大,但是这些知识并不是代表用不上,不是代表看过就算结束,很大的一部分程度是需要了解和掌握,并且消化的知识,而且这些知识也有对之前只是的掌握扎实程度的检验,现在接触的各个类、各种方法之间的继承关系,操作对象不都是的顺序与目标不都是原来的知识。所以这些知识是要了解并且掌握的。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90
第五周 200/1500 3/10 20/100
第六周 300/1700 3/11 32/120 学会使用分块测试
第七周 220/1800 1/12 22/130
第八周 280/1900 2/14 27/140 熟练使用git

参考资料

20145335郝昊《java程序设计》第8周学习总结的更多相关文章

  1. 20145335郝昊 Java学习心得 密码学代码复写

    20145335郝昊 Java学习心得 密码学代码复写 本学期我们学习了现代密码学这门课程,在上课的时候接触到了很多种类型的密码体制,对于一些典型很通用的密码体制有自己的学习和设计.不论是从密码体制还 ...

  2. 20155210潘滢昊 2016-2017-2《Java程序设计》第一周学习总结

    20155210 2016-2017-2<Java程序设计>第一周学习总结 教材学习内容总结 1.1.1: 本节主要讲了Java的由来,1995年5月23日是Java公认的诞生日.还有版本 ...

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

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

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

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

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

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

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

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

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

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

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

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

  9. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  10. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

随机推荐

  1. LAMP集群项目五 项目备份

    1.打包到本地 2.推送到备份服务器 3.删除若干天前的备份 ip=`awk '/IPADDR/' /etc/sysconfig/network-scripts/ifcfg-eth0 |awk -F ...

  2. 关于如何将Eclipse中@author进行修改的解决方法

    问题:Eclipse和 MyEclipse上的文档注释"/**"里面的"@author Administrator"是自动生成的姓名,有时我们需要将自己的代码进 ...

  3. Code Forces 645B Mischievous Mess Makers

    It is a balmy spring afternoon, and Farmer John's n cows are ruminating about link-cut cacti in thei ...

  4. HTML代码大全

    1.html的简介* 什么是html?- HyperText Markup Language:超文本标记语言,网页语言** 超文本:超出文本的范畴,使用html可以轻松实现这样操作** 标记:html ...

  5. 解决启动Tomcat时遇到INFO: Destroying ProtocolHandler ["ajp-apr-8009"]

    问题描述: 启动Tomcat时,出现INFO: Destroying ProtocolHandler ["ajp-apr-8009"]等信息 这说明端口号被占用了... 解决方法: ...

  6. DRF的版本、认证、权限

    DRF的版本 版本控制是做什么用的, 我们为什么要用 首先我们要知道我们的版本是干嘛用的呢~~大家都知道我们开发项目是有多个版本的~~ 当我们项目越来越更新~版本就越来越多~~我们不可能新的版本出了~ ...

  7. shell_02

    if判断: if [$? -eq 0];then echo "xxxxxxxxxxx" else echo "xxxxxxxxxxxxx" fi case判断: ...

  8. JavaWeb-HttpServletResponse对象一

    web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象,和代表响应的response对象.resquest和response对象既然代表请求和响应,那么要 ...

  9. 利用Octopress在Github上搭建博客及后续问题总汇

    首先贴一下我的新博客地址: http://findingsea.github.io 用Octopress在GitHub上搭建博客已经不是什么新鲜事了,网上的教程也多了去了,大题的方法什么都差不多,这篇 ...

  10. 专项训练错题整理-nowcoder-算法

    一.排序 1.快速排序在下列哪种情况下最易发挥其长处? 答案是: 被排序的数据完全无序. 在数据基本有序的情况下,会退化为冒泡排序,复杂度会退化为O(n^2). ①[因为,如果是基本有序的话, 那么每 ...