20155213 2016-2017-2 《Java程序设计》第六周学习总结

教材学习内容总结

输入与输出

  • 串流设计
  1. 流(Stream)是对「输入输出」的抽象,注意「输入输出」是相对程序而言的。
  2. Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象。
  3. InputStream、OutStream提供串流基本操作,如果想要为输入/输出的数据做加工处理,则可以使用打包器类。常用的打包器具备缓冲区作用的BufferedOutputStream、BufferedInputStream,具备数据转换处理的DataInputStream、DataOutputStream,具备对象串行化能力的ObjectInputStream、ObjectOutputStream等。
  4. 在进行InputStream与OutStream的相关操作时若发生错误,会抛出java.io.IOException异常,在dump()方法上声明throws,由调用dump()方法的客户端处理。
  • 串流处理装饰器
  1. BufferedOutputStream与BufferedInputStream:内部提供缓冲,提高效率。
  2. DataInputStream与DataOutputStream:具备数据转换处理功能,自动在指定的类型与字节间转换。
  • 字符装饰器
  1. 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辜彦霖结对
  • 个人感觉她的博客排版很好看,很值得借鉴,代码量和提交次数都挺多,这种态度值得学习,但有点,所解决问题不够个性化,还是犯着大多数人的错误。

评分标准

  1. 正确使用Markdown语法(加1分):

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分

  4. 代码调试中的问题和解决过程, 一个问题加1分

  5. 本周有效代码超过300分行的(加2分)

    • 一周提交次数少于20次的不加分
  6. 其他加分:

    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分
  7. 扣分:

    • 有抄袭的扣至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程序设计》第六周学习总结的更多相关文章

  1. 20155213 2016-2017-2 《Java程序设计》第九周学习总结

    20155213 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC(Java DataBase Connectivity)即java数据库连 ...

  2. 20155213 2016-2017-2 《Java程序设计》第二周学习总结

    20155213 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 关于Unicode和UTF 很抱歉,没能读完娄老师推荐的网址,关于Unicode和UTF的介 ...

  3. 20155213 2016-2017-2 《Java程序设计》第一周学习总结

    20155213 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 了解JVM.JRE与JDK,并下载.安装.测试JDK JVM JVM是Java Virtua ...

  4. 20155312 2016-2017-2 《Java程序设计》第九周学习总结

    20155312 2016-2017-2 <Java程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...

  5. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

  6. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  7. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  8. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  9. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  10. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

随机推荐

  1. August 07th 2017 Week 32nd Monday

    Life is just a series of trying to make up your mind. 生活只是由一系列下决心的努力所构成. Some people say it is not y ...

  2. MySQL语法相关其一

    一篇基础语法相关的笔记 // 参考资料: MySQL入门很简单 黄缙华等编著 清华大学出版社 北京 建议进入官网下载对应版本后安装:https://dev.mysql.com/downloads/my ...

  3. Kafka生产者producer简要总结

    Kafka producer在设计上要比consumer简单,不涉及复杂的组管理操作,每个producer都是独立进行工作的,与其他producer实例之间没有关联.Producer的主要功能就是向某 ...

  4. Python条件判断if、for、while

    if条件判断 if 条件判断: 逻辑操作...... ...... 判断字符串是否为空 if a.strip(): #表示字符串不为空 pass 判断是否为字典 d = dict(a=1) if is ...

  5. D3——scale

    d3.scale 比例尺 “Scales are functions that map from an input domain to an output range” Domains 定义域 和 R ...

  6. [19/04/23-星期二] GOF23_创建型模式(工厂模式、抽象工厂模式)

    一.工厂模式(分为:简单工厂模式.工厂方法模式.抽象工厂模式) 实现了创建者和调用者的分离 核心本质:1.实例化对象,用工厂方法代替new操作:2.将选择实现类.创建对象统一管理和控制,从而将调用者跟 ...

  7. 电脑需要重启才能连上WLAN

    我的笔记本电脑是Windows10 系统,在某次更新后发现这个问题,查资料过程中忽然断网,非要重启才能解决,非常恼人.经过一番研究,发现一个行之有效的解决方法. 1.打开设备管理器. 2.点击网络适配 ...

  8. Springboot时间参数格式化

    @Configuration public class DateTimeFormatConfiguration extends WebMvcConfigurerAdapter { @Value(val ...

  9. Linux Ubuntu出去看看

    转到Ubuntu开发之后,发现不能像之前在Windows下一样直接使用GUI客户端出去看看.于是开始找梯子. 由于我的服务器端已经配置好了,只需要配置本地端即可.整个配置过程分为两步:第一步是安装本地 ...

  10. 利用matplotlib绘画出二特征的散点图

    实例的所有数据来源于吴恩达教授的机器学习数据,特此感谢.数据源可以前往course下载. 本文主要目地在于绘画二维的散点图,至于scatter的用法可以参见我之前的博客. import pandas ...