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

教材学习内容总结

第十章

  • Java中,输入串流代表对象为java.io.InputStream,输出串流代表对象为java.io.OutputStream
  • InputStream的read()方法每次尝试读入byte数组长度的数据,并返回实际读入的字节;OutputStream的write()方法,指定要写出的byte数组、初索引与数据长度。
  • System的setIn()方法指定InputStream,重新制定标准输入来源;setOut()方法指定PrintStream,将结果输出至制定的目的地。
  • InputStream、OutStream提供串流基本操作,如果想要为输入/输出的数据做加工处理,则可以使用打包器类。常用的打包器具备缓冲区作用的BufferedOutputStream、BufferedInputStream,具备数据转换处理的DataInputStream、DataOutputStream,具备对象串行化能力的ObjectInputStream、ObjectOutputStream等

第十一章

  • 在java中,如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run()方法中。
  • 在java中,从main()开始的流程会由主线程执行,可以创建Thread实例来执行Runnable实例定义的run()方法。
  • 使用Lock

    lock接口主要操作类之一为ReentrantLock,可以达到synchronized的作用。

为了避免调用Lock()后,在后续执行流程中抛出异常而无法解除锁定,一定要在finally中调用Lock对象的unlock()方法。

Lock接口还定义了tryLock()方法,如果线程调用tryLock()可以取得锁定会返回true,若无法取得锁定并不会发生阻断,而是返回false。

  • 使用ReadWriteLock

ReadWriteLock接口定义了读取锁定与写入锁定行为,可以使用readLock()、writeLock()方法返回Lock操作对象。ReentrantReadWriteLock是ReadWriteLock接口的主要操作类,readLock()方法会返回ReentrantReadWriteLock.ReadLock实例,writeLock()犯法会返回ReentrantReadWriteLock.WriteLock实例。

  • BlockedQueue是Queue的子接口,新定义了put()、take()方法。

  • ConcurrentMap是Map的子接口,其定义了putIfAbsent()、remove()、replace()等方法。这些方法都是原子操作。

  • ConcurrentHashMap是ConcurrentMap的操作类,ConcurrentNavigableMap是ConcurrentMap的子接口,其操作类为ConcurrentSkipListMap,可视为支持并行操作的TreeMap版本。

教材学习中的问题和解决过程

  • 问题一:

    “线程池”是什么?

  • 解决:

  • 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。

java中有四种线程池:

  • 问题二:

    在学习p343时,不正确的使用synchronized会出现“死结”

  • 解决:

代码调试中的问题和解决过程

  • 问题一:在编译p355的代码时,出现以下错误

错误说的是try不带有catch和finally,我检查了代码,try和finally都在,最后我发现在(res)后面少了个‘{’,导致

调整过后,代码无误。

  • 问题二:在编译p377的ProducerConsumerDemo3代码时,出现以下错误

找不到Producer3,我搜查Producer3的代码,发现代码无误,并且能够通过编译,所以不应该会出现以上情况,等在此编译这个代码时,发现无误,所以综上,我当时没有编译Producer3的代码,所以编译新代码时,找不到Producer3关键字。

代码托管

上周考试错题总结

  • 错题一:3

    现有:

    1 . import java.util.*;

    2 .

    3 . Class FindStuff  {

    4 .public static void main (String[]args)    {

    5 ,    //insert code here

    6 .    c.put ("X", 123);

    7 .    }
8 . }

分别插入到第5行,哪几行允许代码编译?

分析:

编译以下三个代码,均能通过。

  • 错题二:5

    现有:

    3.import java.util.*;

    4.class ForInTest  {

    5.static List list=new ArrayList();

    6.

    7.public static void main (String  []  args)  {

    8.list. add("a"); list. add("b");list. add( "c");

    9.    //insert code here

    10 .    System.out.print (o);

    11 .    }

    12.  }

哪一行插入到第9行将导致输出“abc"?

  • 错题三:

    现有:

    9 .  void topGo()  {

    10 .    try  {

    11 .    middleGo();

    12 .      )  catch  (Exception e)  {

    13 .     System.out.print("catch");

    14 .    }

    15 .  }

    16 .  void middleGo()  throws Exception  {

    17 .    go();

    18 .    system.out.print("late middle");

    19 .  }

    20 . void go()  throws ExceptiOn  {

    21 .    throw new Exception();

    22 .  }

如果调用 topGo () ,则结果为:

catch

  • 错题四:
  • 现有:
    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?

  • 答案:在第2行、第5行、第8行和第11行

结对及互评

评分标准

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

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

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

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

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

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

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

    • 有抄袭的扣至0分
    • 代码作弊的扣至0分
    • 迟交作业的扣至0分

点评过的同学博客和代码

  • 本周结对学习情况

- 结对学习内容
- 学习第十章和第十一章的内容
- 相互请教遇到的问题
- 解决上周考试的错题

其他(感悟、思考等,可选)

本周学习了输入输出、线程与API,与第十章相比,十一章的内容不管是难度还是知识点加大了许多,在学习十一章时,时常有许多绕不过弯的地方,还需多看多理解,多深入的学习。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 15篇 400小时
第一周 9/9 1/1 20/20
第二周 162/ 171 1/2 25/45 学习java的基础语法
第三周 380/ 551 1/3 25/70 学习java对象及封装
第四周 831/ 1382 1/4 23/93 学习java的继承、接口与多态的运用
第五周 870/2252 1/5 20/113 学习java的异常处理和collection与map
第六周 1304/3493 1/6 22/135 学习java的输入输出、线程与Api,与搭档一起学习
  • 计划学习时间:23小时

  • 实际学习时间:22小时

  • 改进情况:

    本周与上周的计划时间相同,但不同的是这周十一章的内容多、且复杂,所以相对花的时间也较多,还有待改进。

参考资料

[java中的四种线程池](http://cuisuqiang.iteye.com/blog/2019372

20155229 2016-2017-2 《Java程序设计》第六周学习总结的更多相关文章

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

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

  2. 20155229 2016-2007-2 《Java程序设计》第一周学习总结

    20155229 2016-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 1~18章的提问: 第一章:怎样撰写Java才不会沦于死背API文件.使用"复制. ...

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

    20155229 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 布尔:boolean类型可表示true和false %符号被用来作为控制符号前置,所以规定用 ...

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

    20155225 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 了解JDBC架构 使用JDBC API JDBC是用于执行SQL的解决方案,开 ...

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

    20155310 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 •数据库本身是个独立运行的应用程序 •撰写应用程序是利用通信协议对数据库进行指 ...

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

    20155338 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 · 数据库本身是个独立运行的应用程序 · 撰写应用程序是 ...

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

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

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

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

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

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

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

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

随机推荐

  1. c++ primer plus 第三章 课后题答案

    #include<iostream> using namespace std; int main() { ; int shen_gao; cout <<"Please ...

  2. js 事件相关 事件处理 封装 事件封装 DOM 0 2 3 级事件

    1.绑定 function(element, type, handler){        if (element.addEventListener) {            element.add ...

  3. 30分钟了解如何使用Kafka

    Kafka是当下对海量数据提供了最佳支持的MQ中间件,无论是高并发的处理,还是依托zookeeper的水平拓展都有不俗的特性.由于公司最近也在尝试如何将它应用到开发中以对业务更好的支撑,因此特地分享一 ...

  4. Codeforces 525A - Vitaliy and Pie

    525A - Vitaliy and Pie 思路:贪心+hashing. 代码: #include<bits/stdc++.h> using namespace std; string ...

  5. (转)Attribute在.net编程中的应用

    Attribute在.net编程中的应用(一)Attribute的基本概念 经常有朋友问,Attribute是什么?它有什么用?好像没有这个东东程序也能运行.实际上在.Net中,Attribute是一 ...

  6. angular5中使用echart的方法

    注意两点安装的版本 安装好后可以参照echart的官网使用 1.实现package.json中安装这两个包 2.index.html中引入 3.在appModule中添加 然后再html中就可以这么使 ...

  7. Unity中使用的一套敏感词过滤方式

    当项目中的敏感词数量不是很多的时候,直接用数组来遍历过滤其实也可以,但是具体的数量有多大,这个肯定不好说,因此,对.txt中的敏感词合理组织后再进行过滤就显得非常有必要了. 如上图,左边是txt中配置 ...

  8. 滑动窗口解决Substring Search Problem

    2018-07-18 11:19:19 一.Minimum Window Substring 问题描述: 问题求解: public String minWindow(String s, String ...

  9. English trip -- VC(情景课) 8 A Get ready

    Words cashier  # 收银员                a cashier counts money   收钱 custodian  # 清洁工     a custodian  cl ...

  10. Windows 环境下安装 Oracle JDK

    本页面中描述了如何在 Window 环境下安装 Oracle JDK. 我们使用的版本是 Window 10,我们需要安装的版本是 Oracle JDK 8u191. 检查当前版本 在进行新的 JDK ...