教材学习内容总结

第10章 输入与输出

1.串流设计的概念

从应用程序角度看,将数据从来源取出,可以使用输入串流,将数据写入目的地,可以使用输出串流;在Java中,输入串流代表对象为java.io.InputStream实例,输出串流代表对象为java.io.OutputStream实例;

  • System.in标准输入
  • System.out标准输出
  • System的setIn()方法指定InputStream实例
  • System的setOut()方法指定printStream实例
  • System.err为printStream实例,称为标准输出串流,用于立即显示错误信息

2.FileInputStream和FileOutputStream

  • FileInputStream可以指定文件名创建实例,一旦创建文档就开启,接着就可以用来写出数据,主要操作了InputStream的read()抽象方法,从而读取文档中的数据;
  • FileOutputStream可以指定文件名创建实例,一旦创建文档就开启,接着就可以用来写出数据,主要操作了OutputStream中的write抽象方法,使之可写出数据到文档。

3.ByteStream

ByteStream是InputStream的子类,可以指定byte数组创建实例,一旦创建就可以将byte数组当做数据源进行读取。ByteArrayOutputStream是OutputStream的子类,可以指定byte数组创建实例,一旦创建就可以将byte数组当做目的地写出数据;

4.串流装饰处理器

  • 若想要为输入输出的数据作加工处理,可以使用打包器类(如:scanner);
  • InputStream和OutputStream的一些子类也具有打包器的作用,这些子类创建时,可以接受InputStream和OutputStream实例;
  • 常用打包器:BufferedInputStream、BufferOutputSream(具备缓冲区作用),DataInputStream、DataOutputStream(具备数据转换处理作用),ObjectInputStream、ObjectOutputStream(具备对象串行化能力)等;

5.Reader与Writer继承架构

  • java.io.Reader类:抽象化了字符数据读入的来源;
  • java.io.Writer类:抽象化了数据写出目的地;
  • FileReader:读取文档并将读到的数据转换成字符;
  • StringWriter:将字符数据写至它最后使用toString()的方法取得字符串;

第11章:线程与并行API

1.线程

  • 单线程程序:启动的程序从main()程序进入点开始至结束只有一个流程;
  • 多线程程序:拥有多个流程;
  • java中从main()开始的流程会由主线程执行可以创建Thread实例来执行Runable实例定义的run()方法

2.Thread和Runnable

  • 创建Thread实例就是为JVM加装CPU,启动额外CPU就是调用实例的start()方法,额外CPU的进入点可以定义在Runable接口的run()方法中;
  • 另一个撰写多线程程序的方式就就是继承Thread类,重新定义run()方法;

3.线程生命周期

如果一个Thread被标示为Deamon线程,在所有的非Deamon线程都结束时,JVM就会自动终止

4.ThreadGroup

  • 每个线程都属于某个线程群组,线程一旦归入某个群组,就无法再更换;可以使用以下程序片段取得当前线程所属线程群组名:Thread.currentThread().getThreadGroup().getname();
  • 使用uncoughtException()方法处理群组中某个线程出现异常未被捕捉的情况,可以重新定义此方法

5.并行API

使用Thread建立多线程程序,必须亲自处理synchornized、对象锁定、wait()、notify()、notifyAll()等细节,如果需要的是线程池、读写解锁高等级操作,从JDK5之后提供了java.util.concurrent,可基于其中的API建立更稳固的并行应用程序。

6.Lock和ReadWriteLock

  • lock接口主要操作类之一为ReentrantLock,可以达到synchronized的作用。
  • ReadWriteLock接口定义了读取锁定与写入锁定行为,可以使用readLock()writeLock()方法返回Lock操作对象。
  • StampedLock类可支持了乐观读取操作。也就是若读取线程很多,写入线程很少的情况下,你可以乐观地认为,写入与读取同时发生的机会很少,因此不悲观的使用哇暖的读取锁定,程序可以查看数据读取之后,是否遭到写入线程的变更,再采取后续的措施。

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

  • 问题1: 如果一个对象所持有的数据可以被多线程同时共享存取时,有什么要考虑的吗
  • 解决1: 必须考虑到数据同步的问题

    ·数据同步指的是两份数据整体性、一致性
  • 问题2: 串流处理数据字节要注意什么,要怎么做?
  • 解决2: 如果串流处理的字节数据,实际上代表某些字符的编码数据,如果想要将这些字节数据转换为对应的编码字符,可以使用InputStreamReader、OutputStreamWriter对串流数据打包。BufferedReader、BufferedWriter可对Reader、Writer提供缓冲区作用,在处理字符输入/输出时,对效率也会有所帮助。PrintReader、PrintStream使用上极为类似,不过除了可以对OutputStream打包之外,PrintWriter还可以对Writer进行打包,提供print()、println()、format()等方法。

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

  • 运行上周的考试代码发现



    点开编译界面,发现&也分中英文输入的区别,改完之后,运行结果为

代码托管

  • 用statistics脚本查看代码行数

  • 代码提交结果

上周考试错题总结

  • 4.现有:

    • list是一个合法的集合引用
    • getCollection()返回一个合法集合的引用

      哪个是合法的?

      B .for(Object o : getCollection());

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

      理解情况:B选项是增强式的for循环;E选项是for循环的常规用法。
  • 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"?

    D .for (Object o : list)

    理解情况:D选项是增强式的for循环;其它选项中代码的选项都不规范

  • 6.Which of the following methods will not compile?

    A .

    private void method1(String name) {

    if (name.equals("star"))

    throw new IllegalArgumentException(name);

    }

    B .

    private void method2(int age) {

    if (age > 30)

    throw Exception();

    }

    C .

    public double method5() throws Exception {

    return 0.7;

    }

    D .

    protected double method4() throws Exception {

    throw new Throwable();

    }

理解情况:

B .
private void method2(int age) {
if (age > 30)
throw Exception();
}
D .protected double method4() throws Exception {
throw new Throwable();
}

这两个代码编译不通过。

  • 29.现有:
  1.  class  Test4  {
2. public static void main (String [] args) {
3. boolean x=true;
4. boolean y=false;
5. short z=42;
7. if((z++==42) && (y=true))z++;
8. if((x=false) || (++z==45)) z++;
9. System. out.println(¨z=”+z);
10. }
11. }

理解情况:

结对及互评

评分标准(满分10分)

  1. 从0分加到10分为止

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

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

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

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

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

  • 一周提交次数少于20次的不加分

6 其他加分:

  • 周五前发博客的加1分

    - 感想,体会不假大空的加1分

    - 排版精美的加一分

    - 进度条中记录学习时间与改进情况的加1分

    - 有动手写新代码的加1分

    - 课后选择题有验证的加1分

    - 代码Commit Message规范的加1分

    - 错题学习深入的加1分

    7 扣分:

    - 有抄袭的扣至0分

    - 代码作弊的扣至0分

点评模板:

  • 博客中值得学习的或问题:

    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:

    • xxx
    • xxx
    • ...
  • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

  • 参考示例

点评过的同学博客和代码

收获

这一周知识点越来越难,也越来越需要前期准备的配合。经常看到一半不理解又翻到前面重新学习,代码也是经常出现一些拼写错误和其他编译异常。总的来说,这一周的学习较为浮躁,很多代码和知识都是一知半解,这样很不利于深入学习Java。下周任务更重,希望自己能尽快调整好状态和时间,迎接新的知识和挑战。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 20/20 1/1 10/10 安装了JDK、IDEA和Git,写了第一个Java程序
第二周 97/117 2/3 20/30 用Linux上传代码,熟悉修改文件的命令行
第三周 336/453 2/4 35/65 在Linux上安装JDK和IDEA,更熟悉vi的操作指令以及修改时需要注意的地方。
第四周 851/1304 1/5 25/90 学习用JDB调试程序
第五周 834/2138 1/7 32/122 能自己设计简单的程序,遇到问题也基本上能通过前面的学习和查资料解决,还有问题没有得到解决。
第六周 573/2711 1/8 15/137 理解课本中的内容并自己把之前的代码加以改正,更理解程序的作用,继续学习用JDB调试程序
  • 计划学习时间:25小时
  • 实际学习时间:15小时

参考资料

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

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

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

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

    20155201 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC全名JavaDataBaseConnecticity,是Jav ...

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

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

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

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

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

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

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

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

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

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

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

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

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

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

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

    20175209 <Java程序设计>第九周学习总结 一.教材知识点总结 有关数据库下载中存在可能出现的问题已经在博客<数据库安装和使用过程中出现的一些问题>给出了相应的解决办 ...

随机推荐

  1. debug阶段团队贡献分分配

    小组名称:飞天小女警 项目名称:礼物挑选小工具 小组成员:沈柏杉(组长).程媛媛.杨钰宁.谭力铭 debug阶段各组员的贡献分分配如下: 姓名 团队贡献分 程媛媛 5.8 沈柏杉 6.5 谭力铭 3. ...

  2. exFAT移动硬盘写保护怎么去掉

    cmd命令提示符下运行chkdsk命令: 比如在E盘,则输入的命令如下: E:(冒号不可少,输入后回车) CHKDSK /F /X  (回车) 等命令执行完了,即可去掉exFAT移动硬盘写的保护.

  3. [转帖] go的import 语法

    package 的导入语法写 Go 代码的时经常用到 import 这个命令用来导入包,参考如下: import( "fmt" ) 然后在代码里面可以通过如下的方式调用: fmt. ...

  4. ACM数论之旅8---组合数(组合大法好(,,• ₃ •,,) )

    组合数并不陌生(´・ω・`) 我们都学过组合数 会求组合数吗 一般我们用杨辉三角性质 杨辉三角上的每一个数字都等于它的左上方和右上方的和(除了边界) 第n行,第m个就是,就是C(n, m) (从0开始 ...

  5. Mysql innodb 间隙锁 (转)

    MySQL InnoDB支持三种行锁定方式: 行锁(Record Lock):锁直接加在索引记录上面. 间隙锁(Gap Lock):锁加在不存在的空闲空间,可以是两个索引记录之间,也可能是第一个索引记 ...

  6. ClientDataSet字段不能进行编辑时的解决方法

    ClientDataSet字段不能进行编辑时的解决方法: procedure ModifyClientDataSet(const YesOrNot: Boolean;  cs : TClientDat ...

  7. 【agc006f】Blackout(神仙题)

    [agc006f]Blackout(神仙题) 翻译 给定一个\(n*n\)的网格图,有些格子是黑色的.如果\((x,y),(y,z)\)都是黑色的,那么\((y,x)\)也会被染黑,求最终黑格子数量. ...

  8. java随机数的有趣用法

    直接用代码说明,比较容易理解 package com.wz.other; import java.util.Random;import java.util.concurrent.ThreadLocal ...

  9. 一、spark错误

    1. 17/07/17 15:34:55 ERROR yarn.ApplicationMaster: User class threw exception: java.lang.Unsupported ...

  10. bzoj 3611: [Heoi2014]大工程 && bzoj 2286: [Sdoi2011消耗战

    放波建虚树的模板. 大概是用一个栈维护根节点到当前关键点的一条链,把其他深度大于lca的都弹出去. 每次做完记得复原. 还有sort的时候一定要加cmp!!! bzoj 3611 #include&l ...