20145208 《Java程序设计》第8周学习总结
20145208 《Java程序设计》第8周学习总结
教材学习内容总结
NIO与NIO2
NIO与IO的区别
| IO | NIO |
|---|---|
| 面向流 | 面向缓冲 |
| 阻塞IO | 非阻塞IO |
| 无 | 选择器 |
认识NIO
Channel继承框架
- 想要取得Channel的操作对象,可以使用Channels类,它定义了静态方法newChannel(),可以让你从InputStream、OutputStream分别建立ReadableByteChannel、WritableByteChannel,有些InputStream、OutputStream实例本身也有方法可以取得Channel实例,例如:FileInputSteam、FileOutputStream都有个getChannel()方法可以分别取得FileChannel实例。
Buffer继承架构
- Buffer的直接子类们都有个allocate()静态方法,可以让你指定Buffer容量(Capacity),如果想取得Buffer内部的阵列,可以使用array()方法,如果有个数组想要转为某个Buffer子类实例,每个Buffer子类实例都有wrap()静态方法可以提供操作。
- Buffer是容器,填装的数据不会超过它的容量,容量大小可以使用capacity()方法取得,实际可读取或写入的数据界限(Limit)索引值可以由limit()方法得知或设定,下一个可读取数据的位置(Position)索引值,可以使用position()方法得知或设定。
NIO2文件系统
- NIO2文件系统API提供一组标准接口与类,应用程序开发者只要基于这些标准接口与类进行文件系统操作,底层实际如何进行文件系统操作,是由文件系统提供者负责。
通用API
日志
- 调用getLogger()时,必须指定Logger实例所属名称空间(Name space),名称空间以"."作为层级区分,名称空间层级相同的Logger,其父Logger组态相同。
- 取得Logger实例之后,可以使用log()方法输出讯息,输出讯息时可以使用Level的静态成员指定讯息层级(Level)。
- Logger与Handler预设都会先依Level过滤信息,如果没有做任何修改,取得的Logger实例之父Logger组态,就是Logger.GLOBAL_LOGGER_NAME名称空间Logger实例的组态,这个实例的Level设定为INFO,可通过Logger实例的getParent()取得父Logger实例,可通过getLevel()取得设定的Level实例。
- 在经过Logger过滤之后,还得再经过Handler的过滤,一个Logger可以拥有多个Handler,可通过Logger的addHandler()新增Handler实例。
国际化基础
- 应用程序根据不同地区使用者,呈现不同语言、日期格式等称为本地化(Localization),如果应用程序设计时,可在不修改应用程序情况下,根据不同使用者直接采用不同语言、日期格式等,这样的设计考虑称为国际化(internationalization),简称i18n。
规则表示式
- 规则表示式主要用于字符、字符串格式比较,包含字面意义字符与元字符。字面意义字符是指按照字面意义比较的字符,元字符是不按照字面意义比较,在不同情境有不同意义的字符。元字符就像是程序语言中的控制结构之类的语法,找出并理解元字符想要诠译的概念,对于规则表示式的阅读非常重要。
教材学习中的问题和解决过程
问题一
p451 NIOUtil.java: Channel
- index.html存在哪了?打开看看内容对不对
- 存在了和src同级的目录下:

- 内容如下:

问题二
p460 Download.java
- 程序如何运行?
- 修改代码段如下:
public static void main(String[] args) throws IOException {
URL url = new URL("http://openhome.cc");
Files.copy(url.openStream(), Paths.get("C\\"), REPLACE_EXISTING);
}
问题三
p462 Dir.java: 遍历子目录
- 程序如何运行?
- 修改代码段如下:
try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(Paths.get("C:\\")))
- 输出结果如下,是C盘目录下的文档列表:

问题四
p475 HandlerDemo.java: 日志存文件中
- config.log在你计算机的什么位置。%h 从哪来的?还有什么其他模式字符串?
- 在
C:\Users\Cai Ye目录下,%h代码根目录,%t代表系统暂存目录,%g自动为文档编号 - 修改级别之后的不同:


问题五
p483 SplitDemo.java
- 修改代码,字符串改成csv,怎么分隔?
- 修改代码段如下:
for (String token:"csv".split("")){
System.out.println(token);
}
- 结果如下:

- c语言实现思路:
s[]={我们输入的字符串};
l=strlen(s);
for(i=0;i<l;i++){
if(s[i]="分割条件")
printf("\n");
else
printf("%s",s[i]);
}
问题六
p491 PatternMatcherDemo.java
- out.printf("%s find ", pattern.pattern())的作用?
- 用find将前后分开……
代码调试中的问题和解决过程
问题一
p481 Hello.java: I18N
- 在运行该段代码的时候出现了如下错误:

- 目测……应该是系统没有找到我的文件,我尝试在文件名前面加上路径,但是还是不行,最后想起来了之前第五周学习的时候也有一个这样的文件,当时是放在src目录下才正确运行的,果然,这个放在src目录下就可以运行了。

其他(感悟、思考)
- 本周学习时间因为和别的事情冲突的原因比较紧张,很多地方觉得没有弄得透彻,想进一步的测试,学习透彻却没有时间,随着一周一周的学习,感觉学java不枯燥,遇到问题有解决问题的欲望,敲代码的目的不是运行通过,而且让代码好好工作。
- 希望下周的学习时间可以不这么紧张,多一点时间让我去探索书上没有说的东西。
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | 成为超过高级初学者的存在 |
| 第一周 | 150/150 | 1/3 | 15/15 | 第一个JAVA程序 |
| 第二周 | 150/300 | 2/5 | 20/35 | 第一次对教材代码进行自己的修改 |
| 第三周 | 400/700 | 2/7 | 20/50 | 熟练的进行代码托管 |
| 第四周 | 1210/1910 | 2/9 | 30/80 | 在敲代码的时候有自己思考 |
| 第五周 | 1083/2993 | 1/10 | 40/120 | 学习API |
| 第六周 | 1061/4054 | 2/12 | 50/170 | 了解到了输入输出与线程 |
| 第七周 | 579/4633 | 2/14 | 40/210 | 学会了测试代码 |
| 第八周 | 532/5165 | 2/16 | 40/250 | 按照老师说的一个代码一个git,并且加以注释 |
参考资料



20145208 《Java程序设计》第8周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- ADO.NET Entity Framework,Code First简单示例
一.安装EntityFramework: 在vs里打开NuGet,在命令行里输入:Install-Package EntityFramework. 二.基本使用方法 1.建立数据模型 class St ...
- Windows7下安装MongoDB(转)
1.下载 地址:http://www.mongodb.org/downloads(32位还是64位自行选择). 我下载的是:mongodb-win32-x86_64-2.4.5.zip 2.解压 把m ...
- python 练习多级菜单思路
只写了一个zj的三级菜单,后面的功能没写 #-*- coding :utf-8 -*- print """ 你可以输入省份然后根据市县输入 ""&qu ...
- python split()函数使用拆分字符串 将字符串转化为列表
函数:split()Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list ...
- 怎样用ZBrush快速雕刻皮肤纹理
今天的ZBrush教程我们将对利用基础笔刷制作出的“亡灵僵尸”头部模型进行皮肤纹理的处理,主要用到了Layers 3D图层和Alpha笔触类型添加皮肤纹理. 详细的视频教程地址可前往:http://w ...
- [cocos2dx]让CCScrollView支持分页
[cocos2dx]让CCScrollView支持分页 做过IOS开发的朋友, 肯定知道UIScrollView有一个isPaged属性. 当设置其为true的时候, 滑动会自动分页. 即, 每次滑动 ...
- UESTC 885 方老师买表 --状压DP
将方格的摆放分成两种: 1.水平摆放:此时所占的两个格子都记为1. 2.竖直摆放:此时底下那个格子记为1,上面那个记为0. 这样的话,每行都会有一个状态表示. 定义:dp[i][s]表示考虑已经填到第 ...
- HDU 4454 Stealing a Cake --枚举
题意: 给一个点,一个圆,一个矩形, 求一条折线,从点出发,到圆,再到矩形的最短距离. 解法: 因为答案要求输出两位小数即可,精确度要求不是很高,于是可以试着爆一发,暴力角度得到圆上的点,然后求个距离 ...
- Mango DS Traning #49 ---线段树3 解题手记
Training address: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=38994#overview B.Xenia and B ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...