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. Lodash踩坑记录

    一直在用lodash 这个框架,最近踩了一个坑 reverse 这个函数是mutable的 ,后边去查了文档 Note: This method mutates array and is based ...

  2. java列表转成 int[] 的格式

    java 稀疏矩阵中输入的索引系列和对应的值系列需要用 int[] r_indices = new int[featureIdxList.size()]; 的数据格式. 但是实际中可能实现没法确定 f ...

  3. MapReduce超时原因(Time out after 300 secs)

    目前碰到过三种原因导致 Time out after 300 secs. 1. 死循环 这是最常见的原因.显式的死循环很容易定位,隐式的死循环就比较麻烦了,比如正则表达式.曾经用一个网上抄来的邮箱正则 ...

  4. IEdevelopToolbar ie浏览器的css代码调试工具

    使用IEdevelopToolbar的“选择元素”工具(ctrl+b),选取你要内容的地方下方的DIV,我们就可以找到几个关键字

  5. java线程状态及转换

    java线程有6种状态: 新建线程new,启动线程runnable,阻塞block,限时等待timed_waiting,等待线程waiting,终止线程terminated 1.限时等待timed w ...

  6. vortex

    vortex - Bing dictionary US['vɔr.teks]UK['vɔː(r)teks] n.旋涡:涡旋:低涡:感情(或局势)的旋涡 网络漩涡:涡流:旋风 变形Plural Form ...

  7. preset

    preset - 必应词典 美[.pri'set]英[.priː'set] v.预置:事先安排:预调:给…预定时间 网络预设:预先装置:预置位

  8. js简单校验form表单

    /** * 数据简单校验 */ function checkData (formId) { var check = true; var emailReg = new RegExp("^[a- ...

  9. 模块常用snippet

    压缩,文件操作,数据库,md5,json, 压缩 import os, sys, time import zipfile # 解压 filename = 'callofdutyblackopszomb ...

  10. URL去重

    import socket dictlist ={}; def ReadHost(): hosts = []; obn = open('d:/sss.txt', 'rb'); for line in ...