zoukankan      html  css  js  c++  java
  • 20155201 2016-2017-2 《Java程序设计》第六周学习总结

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


    教材学习内容总结

    • 第十章 输入/输出

      • 字节输入类:
      1. Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的事串流对象。从应用程序角度来看,将数据从来源取出,使用输入串流java.io.InputStream;如果将数据写入目的地,可以使用输出串流java.io.OutputStream

      2. 串流继承架构

      3. ObjectInputStream提供readObject()方法将数据读入为对象,而ObjectOutputStream提供writeObject()方法将对象写至目的地。

      • 字符输入类:
      1. 针对字符数据的读取,Java SE提供了 java.io.Reader类,抽象化了字符数据读入的来源;
        针对字符数据的写入,提供了java.io.Writer
        ,抽象化了数据写出的目的地。
      2. 就装饰器的作用而言,
        InputStreamReader
        System.in读入的字节数据做编码转换,而BufferedReader将编码转换后的数据做缓冲处理,以增加读取效率。
    • 第十一章 线程与并行API

      • 线程
      1. 单线线程程序就是自启动的程序从main()程序进入点开始至结束只有一个流程。多线程:在同一应用程序中,有多个流程被同时执行。
      2. 线程生命周期:调用Thread实例start()方法后,基本状态为可执行(Runnable)、被阻断(Blocked)、执行中(Running)。
      • 并行API
      1. 使用Thread建立多线程程序,必须亲自处理synchronized、对象锁定、wait()notify()notifyAll()等细节。

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

    • 问题1:在学习死结部分时,编译运行P343 DeadLockDemo.java代码,有时发生死结,有时不发生:


    • 问题1解决方案:书上的解释是这样:发生死结的原因在于,thread1在调用resource1.corportate(resource2)时,会取得r1的锁定,若此时thread2也正好调用resource2.corportate(resource1),取得r2的锁定,凑巧thread1现在打算运用传入的r2调用doSome(),理应取得r2的锁定,但锁定现在被t2拿走了,于是t1进入阻断,而t2也打算运用传入的r1调用doSome(),理应取得r1的锁定,但锁定现在是t1取走,于是t2进入等待。
    • 问题2:之前第四章的课后题中有输出斐波那契数列的题,我自己编的代码是这样:
      没有调用函数,只是用了数组。
        int[] fb=new int[num];
            fb[0]=0;
            fb[1]=1;
            int i=0;
            for(i=0;i<num;i++){
                if(i>1){
                    fb[i]=fb[i-1]+fb[i-2];
                }
    
    • 问题2解决方案:书上输出斐波那契数列选择的方法是递归调用函数:
    static long fibonacci(long n) {
            if (n <= 1) {
                return n;
            }
            return fibonacci(n - 1) + fibonacci(n - 2);
        }
    

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

    • 问题1:在编译P315代码时,出现了问题:

    • 问题1解决方案:发现书上省略了定义get、set的方法,补全代码如下

    public String getNumber() {
            return number;
        }
    
        public void setNumber(String number) {
            this.number = number;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
    

    编译通过。

    代码托管

    上周考试错题总结

    • 现有:
      1. import java.util.*;
        2.
      2. Class FindStuff {
        4.public static void main (String[]args) {
        5, //insert code here
        6. c.put ("X", 123);
        7. }
      3. }

    分别插入到第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();
    答案:BDF


    结对及互评

    • 结对:

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

      1. 正确使用Markdown语法:加1分
      2. 模板中的要素齐全:加1分
      3. 代码调试中的问题和解决过程:加1分
      4. 感想,体会不假大空:加1分
      5. 排版精美:加1分
      6. 进度条中记录学习时间与改进情况:加1分
      7. 错题学习深入:加1分

      博客中值得学习的或问题:参考搭档的教材内容总结,对前两章的学习又有了新的理解。

      代码中值得学习的或问题:对照搭档的问题,我修改了自己的代码,程序成功编译。

    • 小组:

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

      1. 正确使用Markdown语法:加1分
      2. 教材学习中的问题和解决过程,:加1分
      3. 代码调试中的问题和解决过程,:加2分
      4. 本周有效代码超过300分行:加2分
      5. 排版精美的加1分
      6. 进度条中记录学习时间与改进情况的加1分
      7. 有动手写新代码的加1分

      博客中值得学习的或问题:该同学的标题写错了,应该是2016-2017学期

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

      1. 错题学习深入:加1分
      2. 教材中的问题和解决过程:加2分

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

      1. 正确使用Markdown语法:加1分
      2. 模板中的要素齐全:加1分
      3. 教材学习中的问题和解决过程:加1分
      4. 本周有效代码超过300分行的:加2分
      5. 排版精美:加1分
      6. 进度条中记录学习时间与改进情况:加1分
      7. 有动手写新代码:加1分
      8. 错题学习深入:加1分

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

      1. 正确使用Markdown语法:加1分
      2. 模板中的要素齐全:加1分
      3. 教材学习中的问题和解决过程:加1分
      4. 感想,体会不假大空:加1分
      5. 排版精美:加一分
      6. 进度条中记录学习时间与改进情况:加1分
      7. 有动手写新代码:加1分
      8. 代码Commit Message规范:加1分

    点评过的同学博客和代码

    感悟与思考

    这周正好赶上清明节放假,因为时间安排,提前两天完成任务。当然时间不够充裕,也许学习过程中有落下的部分,课后会仔细看看书。这周代码量更多了,一点一点敲确实有点繁冗枯燥,但是我相信再经过深入学习,会有一天把写代码看作跟日常吃饭睡觉一样平常。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    第六周 1761/3365 1/1 15/92
    • 计划学习时间:17小时

    • 实际学习时间:15小时

    • 改进情况:这周没达到学习目标,本来想周六仔细看看书,但是周六白天上课,只好晚上再加班。

    参考资料

  • 相关阅读:
    JavaScript初探 三 (学习js数组)
    JavaScript初探 二 (了解数据)
    JavaScript初探 一(认识JavaScript)
    2019暑假学习督促安排
    【C#】让工具栏ToolStrip能触发焦点控件的Leave、Validating、DataError等事件以验证数据
    【C#】回调方法不通过object参数获得委托实例
    【SQL】找出行数与自增标识值不相等的表(即有缺行)
    【SQL】统计所有表的行数
    【SQL】靠谱的TRIM函数,附赠过程一枚
    【C#】在窗体中水平居中的控件,到了XP下不居中的解决办法
  • 原文地址:https://www.cnblogs.com/zhuohua/p/6655018.html
Copyright © 2011-2022 走看看