20145229吴姗珊 《Java程序设计》第8周总结

教材学习内容总结

第十四章 NIO与NIO2

NIO:
InputStream、OutputStream的输入输出,基本上是以字节为单位进行低层次处理,虽然需要直接面对数组,但实际上多半是对字节数组中整个区块进行处理。dump()方法是整块数据读入后又整块数据写出。

NIO2:
现今世界上存在着各式各样的文件系统,不同的文件系统会提供不同的存取方式,文件属性,权限控制等操作。在JDK7出现以前,常需要对特定的文件撰写特定的程序,不仅撰写方式没有标准,针对特定功能撰写的程序也会增加应用程序开发者的负担。

通用API

日志

日志API简介:java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logger类,Logger类的构造函数标示为protected,不是java.util.logging同包的类不能直接以new创建,不许使用Logger的静态方法。

指定日志层级:
  Logger与Handler默认都会先依据Level过滤信息,如果没有做任何修改,取得的Logger实例之父Logger组态就是Logger.GLOBAL-LOGGER-NAME空间名称Logger实例的组态
  在没有任何组态设定的情况下,默认取得的Logger实例,层级必须大于或等于Logger.GLOBAL-LOGGER-NAME名称空间logger实例设定的Level.INFO,才可能输出信息
  在经过Logger过滤之后,还得再经过Handler的过滤,一个Logger可以拥有多个Handler,可通过Logger的addHandler()新增Handler实例。实际上进行信息输出时,目前Logger的Handler处理完,还会传播给父Logger的所有Handler处理,可通过getHandlers()方法取得目前已有的Handler实例数组
  在没有做任何组态设定的情况下,取得的Logger实例,只会使用Logger.GLOBAL_LOGGER_NAME名称空间Logger实例拥有的Handler,默认是使用ConsoleHandler,为Handler的子类,作用是在控制台下输出日志信息,,默认地层级是Level.INFO

使用Handler与Formatter
  标准API提供了几个操作类:其中MemoryHandler不会格式化日志信息,信息会暂存于内存缓冲区,直至超过大小才将信息输出至指定的目标Handler。StreamHandler可自行指定信息输出时使用的OutputStream。ConsoleHandler创建时,会自动指定OutputStream为System.err。SocketHandler创建时可以指定主机位置与端口
  SocketHandler创建时可以指定主机位置与端口,内部将自动建立网络联机,将日志信息传送至指定的主机
  Logger可以使用addHandler()新增Handler实例,使用removeHandler()移除Handler
  在建立FileHandler指定模式字符串时,可以使用“%h”来表示用户的根目录,还可以使用“%t”取得系统暂存目录,或者使用“%g”自动为文档编号

自定义Handler、Formatter与Filter
  如果java.util.logging包中提供的Handler成果都不符合需求,可以继承Handler类,操作抽象方法publish()、flush()与close()方法来自定义Handler,建议操作时考虑信息过滤与格式化。
  Handler是负责输出,格式化交由Formatter,信息过滤是交由Filter

Pattern与Matcher
  在程序中使用表示式,必须先针对规则表示式做剖析、验证等动作,确定规则表示式语法无误,对字符串进行比较
  java.util.regex.Pattern实例是规则表示式在JVM中的代表对象,Pattern的构造函数被标示为private,必须通过Pattern的静态方法compile()来取得

JDK8 API增强功能

String,join()、StringJoiner:String新增join()静态方法可以指定每个字符串间以逗号分隔进行连接
JDK8中,针对大型数组的平行化操作,在Arrays上新增了parallelPrefix()、parallelSetAll()与parallelSort()方法,parallelSort()方法。
parallelPrefix()方法,可以指定×××BinaryOperator实例。
parallelSetAll()方法,可以用来对数组进行初始化或者全面重设每个索引元素。
parallelSort()方法,可以将指定的数组分为子数组并以平行化方式分别排序,然后再进行合并排序
Stream是JDK8中重要的新特性之一。Files上有几个静态方法,例如lines()、list()、walk()等方法,对于这类返回Stream实例的API,主要可适用于需要管线化、惰性操作的场合
如果想对数组进行管线化操作,方法之一市是使用Arrays的asList()方法返回List,而后调用stream()方法取得Stream实例,另一个方法是使用Arrays的stream()方法,它可以指定数组后返回Stream实例。

本周代码托管截图





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

这周的学习目标主要是第十五章,我们学会使用日志API、了解国际化基础。通过前面几周的学习,java的核心知识都已经学完了,在不断的学习中,我也在不断的寻找适合自己的学习方法。平时自己要主动敲代码,主动学习,让自己的知识更加丰富

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 100/100 2/2 10/20
第二周 100/100 2/4 18/38
第三周 200/200   3/7 22/60
第四周 200/200   4/9 30/90
第五周 380/200   6/7    40/90     |   |

参考资料

20145229吴姗珊 《Java程序设计》第8周学习总结的更多相关文章

  1. 20145229吴姗珊 《Java程序设计》课程总结

    20145229吴姗珊 <Java程序设计>课程总结 (按顺序)每周读书笔记链接汇总 第一周:http://www.cnblogs.com/20145229ss/p/5248728.htm ...

  2. 20145229吴姗珊 《Java程序设计》第9周总结

    20145229吴姗珊 <Java程序设计>第9周总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交 ...

  3. 20145229吴姗珊 《Java程序设计》2天小总结

    20145229吴姗珊 <Java程序设计>2天小总结 教材学习内容总结 由于这周学的内容比较简单,主要是关于日期.日期之类的东西.所以自己从书上看了一些内容 总结了第四章 认识对象 和第 ...

  4. 20145229吴姗珊 《Java程序设计》第7周学习总结

    20145229吴姗珊 <Java程序设计>第7周学习总结 教材学习内容总结 第13章时间与日期 即使标注为GMT(格林威治时间),实际上谈到的的是UTC(Unix时间)时间. 秒的单位定 ...

  5. 20145229吴姗珊《java程序设计》第2次实验报告

    20145229吴姗珊<java程序设计>第2次实验报告 实验名称 Java面向程序设计,采用TDD的方式设计有关实现复数类Complex. 理解并掌握面向对象三要素:封装.继承.多态. ...

  6. 20145229吴姗珊 《Java程序设计》两天小总结

    20145229吴姗珊 <Java程序设计>两天小总结 教材学习内容总结 第十章 输入\输出 1.java将输入\输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象 2.从应用程序 ...

  7. 20145229吴姗珊 《Java程序设计》第6周学习总结

    20145229吴姗珊 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 输入\输出 1.java将输入\输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象 2.输入串 ...

  8. 20145229吴姗珊《Java程序设计》2天总结

    20145229吴姗珊<Java程序设计>2天总结 教材学习内容总结 异常处理 1.使用try.catch Java中所有错误都会被包装成对象,可以尝试(try)执行程序并捕捉(catch ...

  9. 20145229吴姗珊 《Java程序设计》第5周学习总结

    20145229吴姗珊 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 异常处理 1.设计错误对象都继承自java.lang.Throwable类 2.Java中所有错误都会 ...

随机推荐

  1. Google 商店

    Google 商店地址:https://store.google.com/

  2. Lua基本函数库 【转】

    转自:http://www.cnblogs.com/whiteyun/archive/2009/08/12/1543184.html 基本函数库为Lua内置的函数库,不需要额外装载 assert (v ...

  3. oracle中导出表的结构和数据

    在linux环境上: exp user_name/password@//ip_address:1521/service_name file=aa.sql tables=\(table_name\); ...

  4. Educational Codeforces Round 27 F. Guards In The Storehouse

    F. Guards In The Storehouse time limit per test 1.5 seconds memory limit per test 512 megabytes inpu ...

  5. The Pilots Brothers' refrigerator - poj 2965

      Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20325   Accepted: 7830   Special Judg ...

  6. spring AOP pointcut expression表达式解析

    Pointcut 是指那些方法需要被执行"AOP",是由"Pointcut Expression"来描述的.Pointcut可以有下列方式来定义或者通过& ...

  7. IEnumerable, IEnumerator接口

    IEnumerable接口 // Exposes the enumerator, which supports a simple iteration over a non-generic collec ...

  8. YUM安装(卸载)KDE和GNOME

    YUM安装(卸载)KDE和GNOME显示系统已经安装的组件,和可以安装的组件:#yum grouplist 如果系统安装之初采用最小化安装,没有安装xwindow,那么先安装:#yum groupin ...

  9. 第三方-Swift2.0后Alamofire的使用方法

    第一部分,配置项目 首先我们创建一个工程如下图 在此只讲纯手打拉第三方框架的方法 然后把下载的Alamofire解压文件全部放进创建的项目文件夹中,如下图 关键时刻到了哦,集中精神,注意!!! 这个图 ...

  10. 在Linux先显示文件

    cat:从第一行开始显示文件内容. tac:从最后一行开始显示内容. nl:显示的时候带行号. more:一页一页显示. less:同more,可以向上翻页. head:显示文件前几行. head - ...