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


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

    教材学习内容总结

    学习目标

    1. 理解流与IO
    2. 理解InputStream/OutPutStream的继承架构
    3. 理解Reader/Writer继承架构
    4. 会使用装饰类
    5. 会使用多线程进行并发程序设计

    第十章 章节主要内容

    小结

    • 掌握父类中方法,核心类:

    • Java中输入串流代表对象为java.io.InputStream 实例,输出串流代表对象为java.io.OutputStream 实例。无论数据源或目的地为何,只要取得以上两个实例,接下来操作输入/输出方式一致。

    • 在不使用InputStreamOutputStream 时,必须使用close()方法关闭串流。

    • java.net.URL 的使用:指定网址,URL实例会自动进行HTTP协议。

    • InputStream常用类继承架构:

      • FileInputStream:把一个文件作为InputStream,实现对文件的读取操作。
      • ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用,可以指定byte数组创建实例,一旦创建就可将byte数组当作数据源进行读取。
    • BufferedInputStream:主要在内部提供缓冲区功能,操作上与InputStream没有太大差别。

    • DataInputStream:提供读取、写入Java基本数据类型的方法,像是读写int、double、boolean等的方法,这些方法会自动在指定的类型与字节间转换。

    • ObjectInputStream:提供readObject()方法将数据读入为对象,具备对象串行化能力。

    • OutputStream常用类继承架构:

      • FileOutputStream:把信息存入文件中,可以指定文件名创建实例,一旦创建文档就开启,接着就可以用来写出数据。
      • ByteArrayOutputStream:把信息存入内存中的一个缓冲区中,可以指定byte数组创建实例,一旦创建就可将byte数组当作目的地写出数据。
      • BufferedOutputStream:主要在内部提供缓冲区功能,操作上与OutputStream没有太大差别。
      • DataOutputStream:提供读取、写入Java基本数据类型的方法,像是读写int、double、boolean等的方法,这些方法会自动在指定的类型与字节间转换。
      • ObjectOutputStream:提供writeObject()方法将对象写至目的地,具备对象串行化能力。
    • Reader抽象类:用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int)close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率或其他功能。

    • Reader继承架构:

    • Writer抽象类:写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。

    • Writer继承架构:

    第十一章 章节主要内容

    小结

    • 在java中,如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable 接口,流程的进入点是操作在run()方法中。
    • 如果想要为JVM加装CPU,就是创建Thread实例,要启动额外CPU就是调用Thread实例的start()方法,额外CPU执行流程的进入点,可以定义在Runnale接口的run()方法中。
    • 如果主线程中启动了额外线程,默认会等待被启动的所有线程都执行完run()方法才中止JVM。如果一个Thread被标识为Daemon线程,在所有的非Daemon线程结束时,JVM就会自动终止。
    • 在调用Thread实例start()方法后,基本状态为可执行(Runnable)、被阻断(Blocked)、执行中(Running)。

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

    • 问题1:·InputStreamReaderWriter的区别
    • 解决方案:InputStream针对于串流输入;Reader针对于字符数据的读取;Writer针对于字符数据写入;。
    • 问题2:ForkJoinPool与其他的ExecutorService的区别
    • 解决方案:ForkJoinPool是闲聊了工作窃取演算,其建立的线程如果完成手边任务,会尝试寻找并执行其他任务建立的资额任务,让线程保持忙碌状态,有效利用处理器的能力。ForkJoin框架适用于计算密集式的任务,较不适合用于容易造成线程阻断的场合。

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

    本周未遇到代码调试的问题。

    代码托管


    上周考试错题总结

    • 错题1:

    现有:

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

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

    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();

    • 错题2:

    现有:

    class Guy  {  
        String greet()  {  
            return "hi";  
        } 
    }
    class Cowboy extends Guy  {  
        String greet()  {  
            return. "howdy";
        }
    }
    class  Wrangler  extends  Cowboy  {  
        String  greet()  {  
            return  "orch!"; 
        }
    }
    
    class Greetings2  {
        public  static void main (String  []  args)  {
            Guy g=new Wrangler();
            Guy g2=new Cowboy();
            Wrangler w2=new Wrangler();
            System.out.print(g.greet()+g2.greet()+w2 .greet());
        }
    }
    

    结果是什么?

    A.hi hi ouch!

    (√)B.ouch! howdy ouch!

    C.hi howdy ouch!

    D.编译失败

    结对及互评

    评分标准

    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分

    点评模板:

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

      • 狄惟佳同学的博客中许多问题的解决方案都十分详细,有一些疏忽的地方在她的博客中都能得到很好的解答。
    • 代码中值得学习的或问题:

      • 狄惟佳同学的博客中提到catch()异常的继承关系,在catch括号中列出的异常不得有继承关系,否则会发生编译错误。让我对catch()异常的疑问得到了解答。
    • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

    • 参考示例

    点评过的同学博客和代码

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

    由于从第六周开始,各科的实验课程也开展了起来,需要学习的东西更多了,合理分配自己的各科学习时间变得重要起来,提高自己的学习效率也十分必要。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 18篇 300小时
    第一周 15/15 1/1 15/15
    第二周 159/174 1/2 20/35
    第三周 414/588 1/3 18/53 了解了封装、对象
    第四周 461/1049 1/4 18/71
    第五周 786/1835 1/5 18/89
    第六周 699/2534 1/6 20/109
    • 计划学习时间:16小时

    • 实际学习时间:20小时

    • 改进情况:在进行了一番规划之后,将学习时间提到了二十小时,但是由于从第六周开始,各科的实验课程也开展了起来,需要学习的东西更多了,所以需要提高自己的学习效率。

    参考资料

  • 相关阅读:
    2016-8-29
    2016-8-25
    2016-8-24
    2016-8-23
    2016-8-22
    2016-8-16
    2016-8-15
    深圳_多测师面试 __腾讯云/_高级讲师肖sir
    深圳_多测师面试 _新字节跳动(2020年10月23日)_高级讲师肖sir
    多测师讲解自动化 _RF_(202)高级讲师肖sir
  • 原文地址:https://www.cnblogs.com/ashin-kl/p/6658238.html
Copyright © 2020-2023  润新知