20155228 2016-2017-2 《Java程序设计》第6周学习总结
20155228 2016-2017-2 《Java程序设计》第6周学习总结
教材学习内容总结
输入与输出
在Java中输入串流代表对象为java.io.InputStream实例,输出串流对象为java.io.OutputStream实例
System.in和System.out分别是InputStream和PrintStream的实例,分别代表标准输入和输出。SetIn()方法可以指定InputStream实例,重新指定标准输入来源。Setout()方法可以指定PrintStream实例,将结果输入到指定目的地。
FileInputStream是InputStream的子类,可以指定文件名创建实例,创建文档就开启和读取数据。FileOutputStream是OutputStream的子类,可以指定文件名创建实例,创建文档就开启和读取数据。
ByteArrayInputStream是InputStream的子类,可以指定byte数组创建实例,创建就可以作为数据源开始读取。ByteArrayOutputStream是OutputStream的子类,可以指定byte数组创建实例,创建就可以作为目的地写出数据。
打包器类本身没有改变InputStream、OutputStream的行为,在取得数据后做加工处理,所以又称为装饰器。BufferedInputStream和BufferedOutStream可以提高读写效率。DataInputStream和DataOutputStream可以将方法在指定的类型和字节之间进行转换。ObjectInputStream和ObjectOutputStream可以将内存中的对象整个存储下来,之后再读入还原为对象。
java.io.Reader类和java.io.Writer类抽象化了字符数据的读入来源和写出目的地。InputStreamReader和OutputStreamWriter可以将字节数据装换为对应的编码字符。BufferedReader和BufferedWriter可以提高输入输出效率。
线程与并行API
在Java中,如果想在main()以外独立设置流程,可以撰写类操作java.lang.Runnable接口流程的,流程的进入点是操作在run()的方法中。
除了将流程定义在Runnable()的run()方法中之外,另一个撰写多线程程序的方式就是继承Treead类,重新定义run()方法。在java中,任何线程可执行的流程都要定义在Runnable()的run()方法中。
主线程会从main()方法开始执行,直到main()方法结束后停止JVM。如果一个被标识为Deamon线程,在所有的非Deamon线程都结束时,JVM自动会终止。使用isDaemon()方法可以判断线程是否为Daemon线程。
在调用Thread实例start()方法后,基本状态为可执行、被阻断、执行中。实例化Thread并执行start()之后线程进入Runnable状态,必须等待排班器排入中央处理器执行,线程才会执行run()方法。线程具有优先权,可以使用Thread的setPriotity()方法设定优先权,数字越大,优先权越高。使用thread.sleep()会让线程进入blocked状态,若此时有其他线程调用该线程的interrupt()方法会抛出InterruputException异常对象。可以使用join()方法使一个线程正在运行,流程中允许另一个线程加入,等到另一个线程执行完毕后再继续第一个线程,join()方法可以指定时间。如果要停止线程最好自行操作,让线程跑完应有的流程,而非调用方法。
每个线程都属于某个线程组群。若在main()主流程中,产生一个线程该线程会属于main()线程组群。每个线程产生时,都会归入某个线程组群。如果没有指定,就归入产生该线程的线程的组群,也可以自行指定线程组群。
每个对象都会有个内部锁定,或称为监控锁定。被synchronized标示的区块,将会被监视,任何线程要执行synchronized区块都必须先取得指定的对象锁定。线程在等待对象锁定时,会进入被锁定状态。在取得锁定之后,会先回到可执行状态,等待中央处理器排班器,排入执行中状态。
可以在变量上声明volatile,表示变量是不稳定,易变的,也就是可能在多线程下存取。这保证变量的可见性,也就是若有线程变动了变量值,另一线程一定可以看到变更。
执行synchronized范围的程序代码期间,若调用锁定对象的wait()方法。线程会释放对象锁定并进入对象等待集合,而处于阻断状态。其他县城可以竞争对象锁定。取得锁定的线程可以执行synchronized范围的程序代码。
被竞争锁定的对象调用notify()时,会从对象等待集合中随机通知一个线程加入排班,再次执行前被通知的线程会与其他线程共同竞争对象锁定。如果调用所有等待集合中的线程都会被通知参与排班。这些线程会与其线程共同竞争对象锁定。
教材学习中的问题和解决过程
教材第322页课后练习题第五题:正确答案是A选项。根据题目的题干,我们可以知道新建对象实例是用来读入与写出字节数据的,而在题目的四个选项中,除了第一个选项之外其他选项都是用来读入和写出字符数据的。
关于装饰器的作用
| 装饰器的名称 | 装饰器的作用 |
|---|---|
| BufferedInputStream | 提高读写效率 |
| BufferedInputStream | 提高读写效率 |
| DataInputStream | 修饰方法中提供的基本数据类型,使得这些方法会自动在指定的类型与字节间转换 |
| DataOutputStream | 修饰方法中提供的基本数据类型,使得这些方法会自动在指定的类型与字节间转换 |
| ObjectInputStream | 将内存中的对象整个存储下来,之后再读入还原为对象。 |
| ObjectOutputStream | 将内存中的对象整个存储下来,之后再读入还原为对象。 |
代码调试中的问题和解决过程
- 关于新建一个文本文件的写入和读取数据的问题。在代码第24行的地方,那个true的参数,代表如果这个文件已经存在了,就把新的内容添加到该文件的最后。如果想重新创建新文件,把true改成false即可。


代码托管

上周考试错题总结
“Hello”.charAt(1) 的值是(‘e’)
System.out.println( “HELLO”.( toLowerCase() ) ) 会输出“hello”..“Hello”.substring( 0,2 )的值是“He”
CH06填空:在构造方法中调用本类的构造方法,要使用(this)关键字
CH06填空:在构造方法中调用父类的构造方法,要使用(super)关键字
CH07 填空:面向对象中,设计经验可以用(设计模式)表达
结对及互评
评分标准
- 正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
- 模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
教材学习中的问题和解决过程, 一个问题加1分
代码调试中的问题和解决过程, 一个问题加1分
- 本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
- 其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
- 扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
- 迟交作业的扣至0分
点评模板:
- 博客中值得学习的或问题:

- 代码中值得学习的或问题:

点评过的同学博客和代码
本周结对学习情况
结对学习内容
在调用Thread实例start()方法后,基本状态为可执行、被阻断、执行中。实例化Thread并执行start()之后线程进入Runnable状态,必须等待排班器排入中央处理器执行,线程才会执行run()方法。线程具有优先权,可以使用Thread的setPriotity()方法设定优先权,数字越大,优先权越高。使用thread.sleep()会让线程进入blocked状态,若此时有其他线程调用该线程的interrupt()方法会抛出InterruputException异常对象。可以使用join()方法使一个线程正在运行,流程中允许另一个线程加入,等到另一个线程执行完毕后再继续第一个线程,join()方法可以指定时间。如果要停止线程最好自行操作,让线程跑完应有的流程,而非调用方法。
每个线程都属于某个线程组群。若在main()主流程中,产生一个线程该线程会属于main()线程组群。每个线程产生时,都会归入某个线程组群。如果没有指定,就归入产生该线程的线程的组群,也可以自行指定线程组群。
每个对象都会有个内部锁定,或称为监控锁定。被synchronized标示的区块,将会被监视,任何线程要执行synchronized区块都必须先取得指定的对象锁定。线程在等待对象锁定时,会进入被锁定状态。在取得锁定之后,会先回到可执行状态,等待中央处理器排班器,排入执行中状态。
上周博客互评情况
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 20篇 | 400小时 | |
| 第一周 | 10/10 | 1/4 | 12/12 | |
| 第二周 | 120/130 | 1/5 | 9/21 | |
| 第三周 | 210/340 | 1/6 | 9/30 | |
| 第四周 | 460/800 | 1/7 | 9/39 | |
| 第五周 | 400/1200 | 1/8 | 9/48 | |
| 第六周 | 300/1500 | 1/9 | 9/57 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:9小时
实际学习时间:9小时
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
20155228 2016-2017-2 《Java程序设计》第6周学习总结的更多相关文章
- 20155334 2016-2017-2 《Java程序设计》第九周学习总结
20155334 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章:整合数据库 16.1 JDBC入门 JDBC(Java DataBase Conn ...
- 20155321 2016-2017-2 《Java程序设计》第九周学习总结
20155321 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 厂商在实现JDBC驱动程序时,依方式可将驱动程序分为四种类型: JDBC-OD ...
- 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学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
随机推荐
- node2vec应用记录
1.已有写好的python代码,可以直接下载调用,GitHub链接https://github.com/aditya-grover/node2vec/blob/master/requirements. ...
- u-boot 编译,启动流程分析,移植
分析u-boot-1.1.6 的启动流程 移植u-boot 2012.04版本到JZ2440开发板 源码百度云链接:https://pan.baidu.com/s/10VnxfDWBqJVGY3SCY ...
- oracle中并行执行不一定比串行执行快
并行执行与串行执行相比,能否缩短执行时间,取决于如下几个方面:1.待执行的目标SQL是否适合并行执行,有些SQL是不太适合并行执行的,比如走索引的嵌套循环连接.2.数据库服务器上的硬件资源(如CPU. ...
- gitlab小结
部署Gitlab环境完整记录(我用的是11版本的gitlab,为了后面不出现bug,请选择11) gitlab启用https的配置 gitlab强制修改密码 https://www.cnblogs.c ...
- windows版本下ELK配置
windows版本的es和kibana相对配置起来很简单,网上已经有很多例子都是正确的,只需按照步骤安装一下即可. 主要logstash,网上说的方案,大都不能配置成功,或者总有一些错误,下面把我自己 ...
- python序列元素引用容易出错的地方
python序列分列表和元组,不同之处在于元组的元素不能修改.元组使用小括号,列表使用方括号.元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可.举个简单的例子,a1是一个元组,a2是一个列表 ...
- UITextView设置placeholder
下面是我的代码,可以直接拿来用 #import <UIKit/UIKit.h> @interface CustomTextView : UITextView @property(nonat ...
- maven 安装 配置
一.下载及安装 1.1 下载maven 3.1.1 先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.1.1 ),下载完成后,解压到某个目录(本 ...
- 学习Shell(一)
查看 Shell Shell 是一个程序,一般都是放在/bin或者/user/bin目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中./etc/shells是一个 ...
- nginx配置url重写
url重写是指通过配置conf文件,以让网站的url中达到某种状态时则定向/跳转到某个规则,比如常见的伪静态.301重定向.浏览器定向等 rewrite 语法 在配置文件的server块中写,如: s ...