学号20155311 2016-2017-2 《Java程序设计》第6周学习总结

教材学习内容总结

第十章 输入/输出

10.1 InputStream与OutputStream

  • InputStream类

    InputStream包含三个read()方法用于从流中读取数据:

  • public abstract int read();  
    抽象方法,以int类型返回流中可用的下一个字节。读取到末尾,返回-1。

  • public int read(byte[]array);  该方法从流中读取字节填充到数组array的连续元素中,最大读取长度为array.length个字节。读取到末尾,返回-1。
  • public int read(byte[] array, int offset, int length);  该方法从流中读取length长度的字节填充到数组array中,将array[offset]作为存放起始位置。读取到末尾,返回-1。
  •   public int available();  返回输入流中可以读取的字节数。注意:若输入阻塞,当前线程将被挂起,如果InputStream对象调用这个方法的话,它只会返回0,这个方法必须由继承InputStream类的子类对象调用才有用。
  •   public long skip(long n);  忽略输入流中的n个字节,返回值是实际忽略的字节数, 跳过一些字节再读取。
      如果发生I/O类型错误,会抛出IOException类型的异常。 
      
    OutputStream类
      OutputStream提供了3个write()方法来输出数据,和InputStream相对应:
    public abstract void write(int b);  先将int转换成byte类型,把低字节写入到输出流中。
      public void write(byte[] array);  将数组array中的字节写到输出流。
      public void write(byte[] array, int offset, int length);  将数组array中从array[offset]开始的length个字节写到输出流。
      public void flush();  将数据缓冲区中数据全部输出,并清空缓冲区。
      如果发生I/O类型错误,会抛出IOException类型的异常。
     

10.2 字符处理类

  • 包java.io中的两个类Reader和Writer,他们是能将字节流以字符流方式进行读写的对象,因此字符流在本质上是以Reader和Writer封装的字节流。Reader和Writer都是抽象类,这两个类都实现了声明close()方法的AutoCloseable接口。
  • Reader和Writer类以及他们的子类本身都不是流,但是他们提供了一些方法,可用于将底层的流作为字符流读写。因此,通常使用底层的InputStream和OutputStream对象来创建Reader和Writer对象。

第十一章部分 - 线程与并行API

11.1 线程

  • 线程 可以拥有多个流程,也就是多线程程序如果想在main()以外独立建立流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run()方法中;从main()开始的流程会由主线程执行,创建Thread实例来执行runnable实例定义的run()方法;要启动线程执行指定流程,必须要调用Thread实例的start()。 Thread与Runnable 将流程定义在 Runnable 的 run()方法中;继承 Thread 类,重新定义 run()方法。
  • 线程生命周期 一个 Thread被标示为 Daemon线程,在所有非Daemon线程都结束时,JVM自动终止;使用 setDaemon()方法来设定一个线程是否为 Deamon线程,使用 isDaemon()方法判断线程是否为 Deamon线程默认所有从 Deamon线程产生的线程也是 Deamon线程;
  • 使用 Thread的 setpriority()方法设定优先权,1-10,默认值是5让线程进入 Blocked状态,调用 Thread.sleep()等方法,等待输入/输出线程因输入/输出进入 Blocked状态,在完成输入/输出后,会回到 runnable状态;join()将线程加入另一线程的流程中;线程完成run()方法后,会进入Dead,进入Dead的线程不可以再次调用start()方法。
  • ThreadGroup 线程一旦归入某个群组,就无法更换;java.lang.ThreadGroup可以管理群组中的线程; interrupt()方法可以中断群组中的所有线程;
  • setMaxpriority()方法可以设定群组中所有线程最大优先权; enumerate()方法可以一次取得群组中所有线程; activeCount()方法取得群组的线程数量; uncaughtException()方法处理某个线程未被捕捉的异常。 synchronized与volatile 被标示为 synchronized的区块将会被监控,任何线程要执行该区块必须先取得指定的对象锁定;线程尝试执行synchronized区块而进入 Blocked,在取得锁定之后,会先回到Runnable状态,等待排入 Runnning状态; synchronized要求达到的所标示区块的互斥性,与可见性;在变量上声明 volatile,表示变量是不稳定、易变的,可能在多线程下存取,保证变量的可见性。
  • 在java中,如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run()方法中。如果想要为JVM加装CPU,就是创建Thread实例,要启动额外CPU就是调用Thread实例的start()方法,额外CPU执行流程的进入点,可以定义在Runnale接口的run()方法中。
  • 操作Runnable接口的好处就是较有弹性,你的类还有机会继承其他类。若继承了Thread,那该类就是一种Thread,通常是为了直接利用Thread中定义的一些方法,才会继承Thread来操作。

11.2 并行API

  • Lock:相对与Thread模型的隐式的锁对象,Lock提供了显式的锁操作从而简化应用程序。Executors:提供了一组HighLevelAPI用来执行和管理并行任务。  
  • ConcurrentCollections:包含了一组支持并行处理的数据结构,大大简化了并行编程难度。AtomicVariables:减少了同步操作并且避免数据不一致。Fork/Join框架:提供了进程操作的支持。
  • ReadWriteLock接口定义了读取锁定与写入锁定行为,可以使用readLock()、writeLock()方法返回Lock操作对象。ReentrantReadWriteLock是ReadWriteLock接口的主要操作类,readLock()方法会返回ReentrantReadWriteLock.ReadLock实例,writeLock()犯法会返回ReentrantReadWriteLock.WriteLock实例。
  • Condition接口用来搭配Lock,最基本用法就是达到Object的wait()、notify()、notifyAll()方法的作用。Condition的await()、signal()、signalAll()方法,可视为Object的wait()、notify()、notifyAll()方法的对应。

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

第十章第十一章感觉还好,第四五六七章的内容才是java核心内容,比较抽象。之后的内容都是介绍各种API的应用,都是活生生的例子,比较具体,如果觉得难那是因为对这部分知识感到陌生,不熟悉

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

P334的代码为什么要用threadB?

程序启动后主线程就开始,在主线程中新建threadB,并在启动threadB后 ,将之加入主线程流程,所以threadB会先执行完毕,然后主线程才会继续原本的流程。

代码托管

git log运行截图

上周考试错题总结

结对及互评 20155305(http://www.cnblogs.com/20155305ql/p/6629218.html

基于评分标准,我给本博客打分:10。得分情况如下:
1.正确使用Markdown语法(加1分)
2.错题学习深入的(加1分)
3.教材学习中的问题和解决过程(加3分)
4.进度条中记录学习时间与改进情况(加1分)
5.本周有效代码超过400行(加2分)
6.模板中的要素齐全(加1分)
7.代码调试中的问题和解决过程(加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分

点评模板:

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

  • 20155201李卓雯同学的博客排版优美,要素齐全,博客中错题总结到位并很有深度。值得我们学习。
  • 代码中值得学习的或问题:
  • 代码编写很细致,提交粒度细,值得我们学习

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

  • 参考示例

点评过的同学博客和代码

  • 本周结对学习情况
  • 上周博客互评情况
  • 20155117

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

  1. 正确使用Markdown语法:加1分
  2. 教材学习中的问题和解决过程,:加1分
  3. 代码调试中的问题和解决过程,:加2分
  4. 本周有效代码超过300分行:加2分
  5. 排版精美的加1分
  6. 进度条中记录学习时间与改进情况的加1分
  7. 有动手写新代码的加1分
  • 20155335
    基于评分标准,我给本博客打分:8。得分情况如下:
  1. 正确使用Markdown语法(加1分)
  2. 错题学习深入的(加1分)
  3. 教材学习中的问题和解决过程(加2分)
  4. 进度条中记录学习时间与改进情况(加1分)
  5. 本周有效代码超过400行(加2分)
  6. 版式精美(加1分)
  • 20155322
    基于评分标准,我给本博客打分:10。得分情况如下:
  1. 正确使用Markdown语法(加1分)
  2. 错题学习深入的(加1分)
  3. 教材学习中的问题和解决过程(加2分)
  4. 进度条中记录学习时间与改进情况(加1分)
  5. 本周有效代码超过400行(加2分)
  6. 模板中的要素齐全(加1分)
  7. 代码调试中的问题和解决过程(加1分)
  8. 版式精美(加1分)

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

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

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

虽说这周又是自学两章,知识点比较多,没什么难点,java的核心知识与难点之前都已经学完了,后面的章节全都是介绍一些类的应用。看第一遍教材的时候肯定觉得陌生,难以接受。这是个过程,很正常。在不断的学习中,我也在不断的寻找适合自己的好的学习方法。重要的不是要你学多少java知识,而是通过不断的学习过程,来总结出一套适合自己的良好的学习方法,这将受用一生。当然不同的人肯定情况不一样,适合自己的才是最好的。时间用得多,不一定就学得好。找到属于自己的学习方法,提高效率!这比一切都重要!

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90
第五周 280/1260 1/5 14/70
第六周 478/1738 2/7 16/86

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

  1. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  2. 学号20145303 《Java程序设计》第一周学习总结

    学号20145303 <Java程序设计>第一周学习总结 教材学习内容总结 *dos命令行: dir:列出当前目录下的文件及文件名 md:创建目录 rd:删除目录.为空时文件夹(文件夹为空 ...

  3. 学号20145322 《Java程序设计》第一周学习总结

    学号20145322 <Java程序设计>第一周学习总结 教材学习内容总结 Java诞生于Sun公司,于1998年12月4日发布J2SE,约以两年为一周期推出重大版本更新. 2010年Or ...

  4. 20155305乔磊2016-2017-2《Java程序设计》第九周学习总结

    20155305 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 JDBC简介 1.JDBC是java联机数据库的标准规范,它定义了一组标准类与 ...

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

    201521123061 <Java程序设计>第九周学习总结 1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1 ...

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

    201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...

  7. 201521123045 <java程序设计>第11周学习总结

    201521123045 <java程序设计>第11周学习总结 1. 本周学习总结 2. 书面作业 2. 书面作业 Q1.1.互斥访问与同步访问完成题集4-4(互斥访问)与4-5(同步访问 ...

  8. 20175313 张黎仙《Java程序设计》第九周学习总结

    目录 学号 20175313 <Java程序设计>第九周学习总结 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码托管 四.心得体会 五.学习进度条 六.参考资料 学号 20 ...

  9. 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...

  10. 2018-2019-3《Java程序设计》第二周学习总结

    学号20175329 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结      第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨 ...

随机推荐

  1. Xcode 下载地址 与Macos版本要求

    Xcode下载地址:https://developer.apple.com/download/more/ 参考文档:https://zh.wikipedia.org/wiki/Xcode

  2. HTTP协议图--与 HTTP 协作的 Web 服务器

    HTTP 通信时,除客户端和服务器外,还有一些用于协助通信的应用程序.如下列出比较重要的几个:代理.缓存.网关.隧道.Agent 代理. 1.代理   代理 HTTP 代理服务器是 Web 安全.应用 ...

  3. 【Alpha】总结 - (待更)

    Alpha总结 1. 个人总结 PM & BackEnd - 胡武成 BackEnd - 吴松青 Web - 孙浩楷 Web - 练斐弘 App - 胡冰 App - 黄世辉 UI - 张旗 ...

  4. Linux性能监控(程序篇)

    性能数据的监控,除了针对整机进行外,还要求我们对某一运行的程序单独进行.常用的程序监控命令有ps和top. Ps ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入 ...

  5. BZOJ 1013 球形空间产生器sphere 高斯消元

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1013 题目大意: 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困 ...

  6. 3、Spring Cloud - Eureka(构建服务端/客户端)

    3.1.Eureka简介 3.1.1.什么是 Eureka 和Consul.Zookeeper 类似, Eureka 是一个用于服务注册和发现的组件,最开始主要应用 于亚马逊公司旗下的云计算服务平台 ...

  7. 在 S5PV210 的 开发板上 使用 串口 收发信息

    参考学习教程:周立功嵌入式Linux开发教程-(上册) 材料:首先 准备一个 安装好 Linux 的 开发板 使用  xshell 工具 连接 开发板  ,winscp 工具 连接 开发板  ,  准 ...

  8. 求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N! N阶阶乘求和算法 JAVA C Python

    一行代码算出1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N!   N阶阶乘求和 时间复杂度为O(n) 空间复杂度为O(1) 对于任意正整数N  求1!-N!一行算出和给定求1 ...

  9. Vcenter虚拟化三部曲----SQL Server 2008 R2 数据库安装

    操作系统    Windows server 2008 R2 数据库      SQL Server 2008 R2 注意:SQL Server 2008 R2需要操作系统首先安装.NET Frame ...

  10. Java面试题整理1

    Java基础部分 JDK和JRE有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境.JRE:Java Runtime ...