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

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

    教材学习内容总结

    第十章

    • InputStream、OutputStream:无论数据源或目的地为何,只要设法取得InputStream或OutputStream的实例,接下类操作输入/输出的方式都是一致的,无须理会来源或目的地的真正形式。
    • Dump():dump()方法接受InputStream与OutputStream的相关操作,分别代表读取数据的来源,以及输出数据的目的地。
    • 输入/输出若发生错误,程序会抛出java.io.IOExcpection异常,在程序当中不作特别处理,而是在dump()方法声明throws,由调用dump()方法的客户端处理。
    • 要想重新制定标准输入来源,可以使用System的setIn()方法指定InputStream实例,比如System.setIn(newFileInputStream(args[0])),可以读取指定文档并显示在文本模式。
    • 以File开头的Stream子类,可以指定文件名创建实例用来读取数据/写出数据,不使用实例时使用close()关闭文档。
    • 串流处理装饰器:
      • Buffered:先将数据转移到电脑内存的缓冲区,后续调用read()方法先看看缓冲区有没有数据,有就从缓冲区读取,没有就从来源读取数据到缓冲区,从而提高读取效率。
      • Data:自动在指定的类型与字节间转换。
      • Object:将内存中的对象整个存储下来,之后再读入还原为对象。读入/读出方法:readObject()/writeObject()。
    • Reader和Writer继承架构:Reader抽象化字符数据读入的来源,Writer抽象化了数据写出的目的地。不用时必须使用close()方法关闭串流。
    • 字符处理装饰器:
      • InputStreamReader与OutputStreamWriter可以对串流数据打包。
      • BufferedReader与BufferedWriter:与前面的Buffered串流装饰器作用相同,可以为输入/输出提供缓冲区的作用
      • PrintWriter(没用过):与PrintStream类似,不过可以对Writer进行打包,提供print()、println()、format()方法。

    第十一章

    • 线程容许有限个程序同时(也许是交替)运行,并将运行结果放出。
    • Daemon线程与产生它的背景服务线程同生死,故其生命周期由其背景服务线程而定。
    • Thread有三种工作状态:Runnable、Running、Blocked。线程有其优先权,setPriority()方法可以为其设定优先权,设定值1~10,不在此范围的设定值会当成非法值抛出。我手贱设置线程优先值到11,然后系统就报错了。
    • Thread.sleep()可以将线程强制进入休眠状态,其他线程若想调用休眠线程,系统将会抛出InterruptedException异常对象来唤醒该休眠线程。
    • join()方法可以让其他线程加入正在运行的线程。
    • ThreadGroup像用户组那样,将线程集中一起,按照预设的优先权来逐个运行。
    • 多个线程运行会出现竞争,使用wait()方法可以有效避免竞争,使用notify()方法可以调用(还是通知?)处在等待队列中的线程进入运行状态。
    • 各类Lock锁定方法,都是让synchronized运行的语言,Lock锁定对象后,synchronized才可运行其区块内的程序。
    • Executor接口的目的是将Runnable的指定与实际如何执行分离(?)。

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

    • 问题1:并行Collection里面的程序我没明白,可能Collection有其他方法我没看到?
    • 问题1解决方案:再写写,再扁扁。

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

    • 问题1:课本343页的那个有几率发生死结的程序,我想知道为什么会发生这种情况。
    • 问题1解决方案:目前还没有任何程序运行结果能够证明我的猜测,我试图减少或增加程序段来改变运行结果,但是还是没有与未修改前的输出结果不同的回应。

    代码托管

    上周考试错题总结

    • 不好意思,我没看见有答案参考……

    结对及互评

    评分标准

    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分

    点评模板:

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

      • 尽管对书上的每一条信息都做了摘抄,但是内容太多让我又有种密集恐惧症的感觉。
    • 代码中值得学习的或问题:

      • 遇到问题及时找人解决,这值得我学习。
    • 基于评分标准,我给本博客打分:9分。得分情况如下:

    1. 正确使用Markdown语法(加1分):
    2. 模板中的要素齐全(加1分)
    3. 教材学习中的问题和解决过程, 加1分
    4. 代码调试中的问题和解决过程, 加1分
    5. 本周有效代码超过300分行,加2分
      6 其他加分,加3分 :
    • 进度条中记录学习时间与改进情况的加1分
    • 错题学习深入的加1分
    • 代码Commit Message规范的加1分

    点评过的同学博客和代码

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 27/27 1/1 18/18
    第二周 57/97 1/2 24/42
    第三周 220/284 1/3 36/78 函数封装还学不会
    第四周 408/692 1/4 44/122 知道怎么封装函数了;分得清继承和接口。
    第五周 410/1102 1/5 40/162 没什么好疑惑的
    第六周 390/1492 1/6 27/189

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    • 计划学习时间:30小时

    • 实际学习时间:27小时

    • 改进情况:
      跑去参观别人的代码……顿时感觉自己的代码就像过家家那样幼稚。Orz

    参考资料

  • 相关阅读:
    POJ 3468 A Simple Problem with Integers
    BZOJ 4430 Guessing Camels
    POJ 2309 BST
    POJ 1990 MooFest
    cf 822B Crossword solving
    cf B. Black Square
    cf 828 A. Restaurant Tables
    Codefroces 822C Hacker, pack your bags!
    [HDU 2255] 奔小康赚大钱
    [BZOJ 1735] Muddy Fields
  • 原文地址:https://www.cnblogs.com/battlefieldheros/p/6658219.html
Copyright © 2011-2022 走看看