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. Ubuntu下启动 Redis时, 提示 "Can't open the log file: Permission denied failed"

    问题来源:在删除var目录下的log文件时,将redis文件夹删除了.然后在重启时:/etc/init.d/redis-server start,提示: Starting redis-server: ...

  2. 在Eclipes中查看源代码和大纲快速定位

    1 在Eclipes中查看源代码,快捷键使用clrl+光标,选择你要查看的方法和属性查看源代码.例如你想看StringBuilder这个类源代码 StringBuilder allow = new S ...

  3. git 使用备忘

    git首次安装后的设置: 首先打开hash.exe输入用户名和邮箱 1 2 $ git config --global user.name "Your Name" $ git co ...

  4. mysql 新增数据

  5. 吴裕雄 数据挖掘与分析案例实战(8)——Logistic回归分类模型

    import numpy as npimport pandas as pdimport matplotlib.pyplot as plt # 自定义绘制ks曲线的函数def plot_ks(y_tes ...

  6. Centos7 創建快捷方式

    usr/share/applications 創建文件 Gogland.desktop [Desktop Entry]Version=1Type=ApplicationName=GoglandGene ...

  7. git的一些常用操作命令

    这些操作命令都是从廖雪峰老师的官网上看过后记下来的,以下是廖雪峰老师的官网,大家可以看看,教程不错~ http://www.liaoxuefeng.com/wiki/00137395163059296 ...

  8. Matlab中插值函数汇总(上)

    Matlab中插值函数汇总分上下两个部分,主要整合自matlabsky论坛dynamic发表于2009-2-21 21:53:26 的主题帖,以及豆丁网rickoon上传的教材第8章<插值,拟合 ...

  9. 全国省市区数据库SQL(有可能不是最新的)

    百度云下载地址:https://pan.baidu.com/s/1lStN7tYpwOtpC-r3G2X2sw

  10. Linux 线程调度

    1.线程sleep()后,会让出cpu的时间片,交由其他线程进行抢占cpu. 线程之间正常的切换是依靠时间片的. 当主线程没有结束,且其在所占有的时间片内,并没有结束自己的工作,此时,子线程将会抢占c ...