20155213 2016-2017-2 《Java程序设计》第六周学习总结
20155213 2016-2017-2 《Java程序设计》第六周学习总结
教材学习内容总结
输入与输出
- 串流设计
- 流(Stream)是对「输入输出」的抽象,注意「输入输出」是相对程序而言的。
- Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象。
- InputStream、OutStream提供串流基本操作,如果想要为输入/输出的数据做加工处理,则可以使用打包器类。常用的打包器具备缓冲区作用的BufferedOutputStream、BufferedInputStream,具备数据转换处理的DataInputStream、DataOutputStream,具备对象串行化能力的ObjectInputStream、ObjectOutputStream等。
- 在进行InputStream与OutStream的相关操作时若发生错误,会抛出java.io.IOException异常,在dump()方法上声明throws,由调用dump()方法的客户端处理。
- 串流处理装饰器
- BufferedOutputStream与BufferedInputStream:内部提供缓冲,提高效率。
- DataInputStream与DataOutputStream:具备数据转换处理功能,自动在指定的类型与字节间转换。
- 字符装饰器
- Reader、Writer也有一些装饰器类可供使用,如果串流处理的字节数据,实际上代表某些字符的编码数据,而你想要将这些字节数据转换为对应的编码字符,可以使用InputStreamReader和OutputStreamWriter
代码如下:
import java.io.*;
public class CharUtil {
public static void dump(Reader src, Writer dest) throws IOException {
try(Reader input = src; Writer output = dest) {
char[] data = new char[1024];
int length;
while((length = input.read(data)) != -1) {
output.write(data, 0, length);
}
}
}
}
线程与并行API
- 单线程程序:启动的程序从main()程序进入点开始至结束只有一个流程。
- 多线程程序:一个程序拥有多个流程。
- 撰写多线程程序的方式:操作Runnable接口,在run()中定义额外流程;
- 继承Thread类,在run()中定义额外流程;
- 差别:操作Runnable接口的好处就是较有弹性,类还有机会继承其他类;若继承了Thread类,那该类就是一种Thread,通常是为了直接利用Thread中定义的一些方法,才会继承Thread来操作。
- 在调用Thread实例start()方法后,基本状态为可执行(Runnable)、被阻断(Blocked)、执行中(Running)。
- 线程有其优先权,可使用Thread的setPriority()方法设定优先权,可设定值为1到10,默认是5,超出1到10外的设定值会抛出IllegalArgumentException。数字越大优先权越高,排班器越优先排入CPU,如果优先权相同,则输流执行。
- 如果A线程正在运行,流程中允许B线程加入,等到B线程执行完毕后再继续A线程流程,则可以使用join()方法完成这个需求。
- 每个线程产生时,都会归入某个线程群组,这视线程是在哪个群组中产生,如在main()主流程中产生一个线程,该线程会属于main线程群组。如果没有指定,则归入产生该子线程的线程群组,也可以自行指定线程群组,线程一旦归入某个群组,就无法更换群组。
教材学习中的问题和解决过程
- 问题1:synchronized的使用
- 问题1解决方案:如果在方法上标示synchronized,则执行方法必须取得该实例的锁定。synchronized不只可声明在方法上,也可以描述句方式使用。不正确的使用可能会造成死结。
- 问题2:撰写单线程序、多线程程序的方式差别
- 问题2解决方案:操作Runnable接口的好处就是较有弹性,类还有机会继承其他类;若继承了Thread类,那该类就是一种Thread,通常是为了直接利用Thread中定义的一些方法,才会继承Thread来操作。
代码调试中的问题和解决过程
- 问题1:
package cc.openhome;
public class TortoiseHareRace{
public static void main(String[]args){
for(int i=1;i<=10;i++){
Tortoise tortoise=new Tortoise(1);
Hare hare=new Hare(1);
Thread tortoiseThread=new Thread(tortoise);
Thread hareThread=new Thread(hare);
hareThread.start();
tortoiseThread.start();
}
}
}
给龟兔赛跑加了个循环,结果

- 问题1解决方案:待解决
- ...
代码托管



上周考试错题总结
- 8.下列哪些项是泛型的优点?(选两项)(AC)
A. 不用向下强制类型转换
B. 代码容易编写
C. 类型安全
D . 运行速度快 - 9.实现了set接口类是哪一项(B)
A. ArrayList
B. Hashset
C. HashTable
D. Collection
结对及互评
- 与155227辜彦霖结对
- 个人感觉她的博客排版很好看,很值得借鉴,代码量和提交次数都挺多,这种态度值得学习,但有点,所解决问题不够个性化,还是犯着大多数人的错误。
评分标准
正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
教材学习中的问题和解决过程, 一个问题加1分
代码调试中的问题和解决过程, 一个问题加1分
本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
点评过的同学博客和代码
点评过的同学博客和代码
其他(感悟、思考等,可选)
- 前几章大量的敲代码工作让同学们的学习都留于形式,只想着完成作业而对代码的理解少之又少,感觉学好java的方法不是“敲”代码,而是“修改”代码,敲好代码以后如果不理解代码的能,可以通过修改代码来具体体会其真正含义。
- 进步来源于发现问题和解决问题,如果大家不去主动思考,简单机械的完成作业,那学习便失去了意义。
- 厚厚的java学习笔记在娄老师有序的安排下我们每个人也大概的看了大半,但是实际操作方面还是欠缺的很多。以后的学习就是真正的实践与运用,希望在今后的团队项目中更加努力,让自己真正体会到java学习的真谛。。
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 48/48 | 1/1 | 20/20 | |
| 第二周 | 98/146 | 1/2 | 30/50 | 学习java的基础语法 |
| 第三周 | 302/448 | 1/3 | 27/77 | 学习java对象及封装 |
| 第四周 | 1032/1480 | 1/4 | 36/113 | 学习了继承与多态的关系,以及接口的多态操作 |
| 第五周 | 609/2025 | 1/5 | 30/143 | 学习了异常处理和Map |
| 第六周 | 672/2697 | 1/6 | 30/173 | 学习了IO和线程 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:35小时
实际学习时间:30小时
改进情况:
有空多看看现代软件工程课件 软件工程师能力自我评价表)
参考资料
20155213 2016-2017-2 《Java程序设计》第六周学习总结的更多相关文章
- 20155213 2016-2017-2 《Java程序设计》第九周学习总结
20155213 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC(Java DataBase Connectivity)即java数据库连 ...
- 20155213 2016-2017-2 《Java程序设计》第二周学习总结
20155213 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 关于Unicode和UTF 很抱歉,没能读完娄老师推荐的网址,关于Unicode和UTF的介 ...
- 20155213 2016-2017-2 《Java程序设计》第一周学习总结
20155213 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 了解JVM.JRE与JDK,并下载.安装.测试JDK JVM JVM是Java Virtua ...
- 20155312 2016-2017-2 《Java程序设计》第九周学习总结
20155312 2016-2017-2 <Java程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...
- 20155227 2016-2017-2 《Java程序设计》第九周学习总结
20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...
- 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程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...
随机推荐
- webapi 支持 text/plain 请求
今天遇到一个需求,请求以HTTPS + XML 访问我的API ,普通的webapi 是不支持这个请求的,故做以下代码进行支持 新增一个类,类名为PlainTextTypeFormatter publ ...
- Python 处理脚本的命令行参数(二):使用click
安装click pip install click 使用步骤 使用@click.command() 装饰一个函数,使之成为命令行接口 使用@click.option() 等装饰函数,为其添加命令行选项 ...
- Windows 下安装Python包(Numpy)的错误:Unable to find vcvarsall.bat
情景简介: Windows 环境下安装Python2.7的Numpy扩展包时提示:error: Unable to find vcvarsall.bat 经过不懈的Google/Bing,发现不仅安装 ...
- IntelliJ IDEA常用设置(转)
IntelliJ IDEA是一款非常优秀的JAVA编辑器,初学都可会对其中的一些做法感到很别扭,刚开始用的时候我也感到很不习惯,在参考了网上一些文章后在这里把我的一些经验写出来,希望初学者能快速适应它 ...
- [emerg]: getpwnam(“nginx”) failed
[root@localhost nginx-1.11.2]# /usr/local/nginx/sbin/nginx nginx: [emerg] getpwnam("nginx" ...
- RedHat(小红帽)下 yum用不了的解决办法
由于RedHat是商业版的,通常由于没有注册,导致yum程序无法使用(linux下面,yum是个安装软件的“神器”).此时可用CentOS的地址进行替换.下面将一步步说明如何处理: 一.删除RedHa ...
- Dubbo实践(十一)远程调用流程
默认协议的rpc 过程是比较复杂的,其中涉及到了各个方面,其余各协议实际上有对这个过程进行简化:因此看懂了默认协议的rpc 过程,其他协议就非常容易懂了.在讲Dubbo通信过程之前,可以先了解:Jav ...
- 修改eclipse中文件打开默认方式
Window--->prefrence---->Editors----->FileAssociation 选择文件后缀,如果没有就添加,然后在上添加,删除,设置默认打开方式.
- java实现zabbix接口开发
API:https://www.zabbix.com/documentation/4.0/zh/manual/api/reference/user/login 如果你使用jar包开发的话,会出现*** ...
- 【mySQL】 - 主键
什么是主键? 对于表中的每一行数据,都会有一个字段或一组字段,用于标识自己的唯一性,这样的一个或一组字段,就叫主键 如果没有这个主键,那么对于表中的每一行的管理,会陷入混乱,我要更新某一特定行的数值, ...