20155328 2016-2017-2 《Java程序设计》第六周 学习总结
20155328 2016-2017-2 《Java程序设计》第6周学习总结
教材学习内容总结
根据不同的分类标准,IO可分为:输入/输出流;字节/字符流;节点/处理流。

在不使用InputStream与OutputStream时,必须使用Clos()方法关闭串流。
InputStream和OutputStream的常用类继承架构:

可以使用System的setIn()方法指定InputStream实例,重新指定标准输入来源;用setOut()方法指定PrintStream实例,将结果输出至指定的目的地。
FileInputStream主要操作InputStream()的read()抽象方法,使之可以从文档中读取数据;FileOutputStream主要操作了OutputStream的write()抽象方法,使之可以写出数据至文档。
如果将JVM看作一台虚拟计算机,只安装一颗叫主线程的CPU即可执行main()定义的执行流程,创建Thread实例即为JVM加装CPU。而启动额外CPU就是调用Thread实例的start()方法。
Thread基本状态图:

- wait()、notify()与notifyAll()是Object定义的方法,可以通过这三种方法控制线程释放对象的锁定,或者通知线程参与锁定竞争。
教材学习中的问题和解决过程
- 问题1:在第十章开始时,对书上的输入和输出流的划分不太理解:
从应用程序角度来看,如果要将数据从来源取出,可以使用输入串流,如果要将数据写入目的地,可以使用输出串流。
- 解决方案:看了蓝墨云班课的教学视频《Java当中的IO(一)》,豁然开朗:
输入/输出都是相对于Java程序本身而言,相对于应用程序将来源取出,即相对于Java程序将数据输入,使用的是输入串流;而将数据写入目的地,相对于Java程序是输出,所以使用输出串流。

问题2:可通过wait()、notify()与notifyAll()三个方法来控制线程释放对象的锁定或通知线程参与锁定竞争,那么三个方法有什么区别?
解决方案:通过课本学习及网上资料查询,有了如下结论:
wait
Object的wait方法有三个重载方法,其中一个方法wait() 是无限期(一直)等待,直到其它线程调用notify或notifyAll方法唤醒当前的线程;另外两个方法wait(long timeout) 和wait(long timeout, int nanos)允许传入 当前线程在被唤醒之前需要等待的时间,timeout为毫秒数,nanos为纳秒数。
notify
notify方法只唤醒一个等待(对象的)线程并使该线程开始执行。所以如果有多个线程等待一个对象,这个方法只会唤醒其中一个线程,选择哪个线程取决于操作系统对多线程管理的实现。
notifyAll
notifyAll 会唤醒所有等待(对象的)线程,尽管哪一个线程将会第一个处理取决于操作系统的实现。
这些方法可以使用于“生产者-消费者”问题,消费者是在队列中等待对象的线程,生产者是在队列中释放对象并通知其他线程的线程。
让我们来看一个多线程作用于同一个对象的例子,我们使用wait, notify and notifyAll方法。
代码调试中的问题和解决过程
问题1:synchronized如何以描述句式方式使用?
解决方案:
public void add(Object o){
synchronized(this){
if(next==elems.length){
elems=Arrays.copyOf(elems,elems.length*2);
}
elems[next++]=o;
}
}
这个程序片段的意思是在线程要执行synchronized区块时,必须取得括号中指定的对象锁定。事实上此语法的目的之一,可应用于不想锁定整个方法,而只想锁定会发生竞速状况的区块,在执行完区块后线程即释放锁定,其他线程就有机会再竞争对象锁定。
代码托管
运行statistics脚本截图:

上周考试错题总结
- 错题1:
(单选题|1分)
创建一个只能存放String的泛型ArrayList的语句是哪项?
A .
ArrayList al=new ArrayList();
B .
ArrayList al=new ArrayList()
C .
ArrayList al=new ArrayList();
D .
ArrayList al =new List();
答案:B 错题原因:对ArrayList语法了解不够深彻。
- 错题2:
(多选题|1分)
Which of the following methods will not compile?
A .
private void method1(String name) {
if (name.equals("star"))
throw new IllegalArgumentException(name);
}
B .
private void method2(int age) {
if (age > 30)
throw Exception();
}
C .
public double method5() throws Exception {
return 0.7;
}
D .
protected double method4() throws Exception {
throw new Throwable();
}
答案:BD 错题原因:错选了A选项,忽略了 IllegalArgumentException是一个RuntimeException,可以不用在声明方法时用throws就抛出。
- 错题3:
(单选题|1分)
现有:
`(单选题|1分)
现有:
1. class Propeller2 {
2. pulolic static void main (String[]args)//add code here?
3. { new Propeller2().topGo(); }
4.
5.void topGo() //add code here?
6. { middleGo(); }
7.
8.void middleGo() //add code here?
9. { go(); System.out.println ("late middle"); }
10.
11. void go() //add code here?
12. {throw new Exception(); }
13. }
为使代码通过编译,需要在哪一行加入声明throws Exception?
A .
只在第11行
B .
在第8行和第11行
C .
在第5行、第8行和第11行
D .
在第2行、第5行、第8行和第11行`
答案:D 错题原因:对throws Exception的用法了解得不够全面。
- 错题4:(多选题|1分)
关于try...catch...finally结构,描述正确的是哪些?
A .
可以有多个catch
B .
只能有一个catch
C .
可以没有catch
D .
finally必须有
正确答案: AC 错题原因:误选了D选项,finally并不必须有。
结对及互评
点评过的同学博客和代码
- 本周结对学习情况
- 结对对象:20155325
其他(感悟、思考等,可选)
一些感悟
这周因为清明假期调休的原因,周六不是完整的一天来自习,因此学习时间稍有下降,第十一章也并没有在本周全部学完。这周上课时娄老师所说周一周二周三的计划,思之觉得或有益于自己,决定在下周学完第十一章后进行尝试,不要将任务堆积。

学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 8/8 | 1/1 | 20/20 | |
| 第二周 | 164/172 | 1/2 | 25/45 | |
| 第三周 | 248/420 | 1/3 | 25/70 | |
| 第四周 | 465/885 | 1/4 | 25/95 | |
| 第五周 | 390/1275 | 1/5 | 15/110 | |
| 第六周 | 626/1901 | 1/6 | 24/134 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:27小时
实际学习时间:24小时
改进情况:一边学习一边记录遇到的问题,比上周学的轻松一些。
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
20155328 2016-2017-2 《Java程序设计》第六周 学习总结的更多相关文章
- 20155328 2016-2017-2 《Java程序设计》第九周学习总结
20155328 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 16.1 JDBC入门 JDBC是Java联机数据库的标准规范,定义一组标准类与接口,应用程 ...
- 20155328 2016-2017-2 《Java程序设计》 第一周学习总结
20155328 2016-2017-2 <Java程序设计> 第一周学习总结 教材学习内容总结 本周学习目标是浏览<Java学习笔记>中的十八章,其中第一章和第二章认真学习, ...
- 20155227 2016-2017-2 《Java程序设计》第九周学习总结
20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...
- 20155320 2016-2017-2《Java程序设计》第九周学习总结
20155320 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结
20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
随机推荐
- 揭秘memset与sizeof的结合使用方法
memset与sizeof为什么经常结合起来用呢? 一.memset介绍 memset函数是C++中的一个函数,它将从给定地址开始,逐个字节刷内存,初始化它们为给定的参数. 基本用法: void * ...
- xss基础
0x0 定义 总结: (1) 在页面显示 (2) 用户可控 满足以上两点就有可能存在xss 0x1反射型 0x2存储型 0x3 DOM型 与反射型相似 也是从get等参数传参 但 反射 ...
- CMS漏洞检测工具 – CMSmap
CMSmap是一个Python编写的针对开源CMS(内容管理系统)的安全扫描器,它可以自动检测当前国外最流行的CMS的安全漏洞. CMSmap主要是在一个单一的工具集合了不同类型的CMS的常见的漏洞. ...
- Celery基本使用
Celery 什么是Celery? Celery是一种简单/高效/灵活的即插即用的分布式任务队列. Celery应用场景? 需要异步处理的任务,发邮件/发短信/上传等耗时的操作.最终到达提升用户体验的 ...
- 【设计模式】—— 外观模式Facade
前言:[模式总览]——————————by xingoo 模式意图 外观模式主要是为了为一组接口提供一个一致的界面.从而使得复杂的子系统与用户端分离解耦. 有点类似家庭常用的一键开关,只要按一个键,台 ...
- pgm2
MRF 笔记 我们先讨论引入 MRF 的必要性.经典的例子就是四个 r.v.s 连成一个正方形的结构的时候,我们没法通过 BN 获得给定对角线两个 r.v.s 而剩下的条件独立(不都是 d-sep), ...
- Session in BSU CodeForces - 1027F(思维 树 基环树 离散化)
题意: 有n门考试,每门考试都有两个时间,存在几门考试时间冲突,求考完所有的考试,所用的最后时间的最小值 解析: 对于时间冲突的考试 就是一个联通块 把每个考试看作边,两个时间看作点,那么时间冲突的考 ...
- Warm up HDU - 4612( 树的直径 边双连通分量)
求在图中新建一条边后 剩下的最少的桥的数量..先tarjan求桥的数量..然后缩点..以连通分量为点建图 bfs求直径 最后用桥的数量减去直径即为答案 bfs求直径 https://www.cnb ...
- Codeforces Round #374 (Div. 2) C(DAG上的DP)
C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard input ou ...
- C++ pbds 库平衡树(tree)
头文件 #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> //或者直接 ...
