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

教材学习内容总结

第十章 输入输出

10.1 InputStream OutputStream

  • 数据有来源与目的,衔接两者的是串流对象。

  • read()方法每次尝试读取数据,并返回实际读入的,只要不是-1,就表示读到数据。write()方法,指定要写出的数组,初始索引与数据长度。

  • System.inSystem.out分别是InputStream和OutputStream的实例。可以使用Syestem.setIn()方法,重新指定标准输入来源。

  • FileInputStream与FileOutputSteam:指定文件名创建实例,开启,然后读取,写入数据,不使用时要用close()关闭。

  • 装饰器为输入/输出的数据做处理,例如缓冲、串行化、数据装换等。

  • BufferedInputStreamBufferedOutoutStream:提供缓存区,提高效率。DateInputStreamDateOutputStream:自动转化类型。ObjectInputStreamObjectInputStream将数据读入或写出为对象。

10.2 字符处理类

  • Reader与Writer读入或者写入字符。

  • FileReaderFileWriter可以对文档作读取或写入,默认会使用操作系统默认编码。

  • InputStreamReader和OutputStreamWriter:将字节数据转换为对应的编码字符。BufferedReaderBuffereWriter:提供缓存区,提高效率。

第十一章 线程与并行API

11.1 线程

  • 有时候需要设计程序拥有多个流程,也就是多线程程序。类操作java.lang.Runnable接口,接入点是run();通过Thread实例来执行Runnable实例定义的run方法,启动线程必须调用Thread的start方法。

  • 操作Runnable接口有弹性,还有机会继承别的类。

  • Deamon线程:如果一个Thread标示为Deamon,在所有非Deamon线程结束时,JVM自动会终止。

  • Thread基本状态图:优先权高的先执行,否则输流执行。start——>runnable——>(blocked)——>running——>dead

  • sleep、wait阻断等都会让线程进入blocked状态,运用多线程,避免cpu空闲下来,是改进效能的方式之一。

  • 安插线程:join方法,先完成插入的线程,再回到原来的线程。

  • 停止线程:最好自行操作,让线程跑完应有的流程。

  • 每个线程都属于某个线程组群,可以自行定义线程组群。线程一旦归入某个群组,就无法更换。

  • 线程存取同一对象相同资源时可能会引发竞速情况(RaceCondition)。在竞速情况下,脱离原本应管控的条件的类为不具备线程安全的类。

  • synchronized:在方法上加上synchronized关键字,或者在描述句上加上它。如果使用不当会造成死结。执行该方法必须获得该实例的锁定。

  • wait(),notify(),notifyall()是object定义的方法,可以通过他们控制线程释放对象的锁定,或者通知线程参与锁定竞争。-

11.2 并行API

  • lock:可以lock()取得对象锁定和unlock()解除锁定。调用trylock()时,如果不能锁定并不会发生阻断,而是返回fouse,无论成功与否都要解除锁定。

  • RwadWriteLock接口:定义了读取锁定与写入锁定行为,提高效率。StampedLock:用来操作乐观读取,用于读取线程多而写入线程少的情况。先判断,再考虑是否真正锁定。Condition:取得多个conditon实例,可以有多个等待集合,提高效率。

  • Executor接口可以将Runnable的指定与实际如何执行分离。Future与Callable搭配使用。

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

  • 问题:在一个类中向OutputStream里面写数据,而另一个类则从InputStream中读取这些数据。如何才能把OutputStream里的数据转换为InputStream里的数据呢?
  • 解决方案:

    1、使用byte数组作为缓存(必须有足够大的缓存来保存所有的数据);

    2、使用管道。

代码托管

上周考试错题总结

点评过的同学博客和代码

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第二周 40/100 1/2 8/20
第三周 100/150 1/3 18/26
第四周 465/605 1/4 23/49
第五周 527/1132 1/5 35/84
第六周 1044/ 2176 1/6 60/144

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

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

    20155220 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 JDBC(Java DataBase Connectivity)即java数据库连接,是一种用 ...

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

    20155211 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 一.JDBC入门 (一)JDBC简介 厂商在操作JDBC驱动程序时,依 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. "Regressing Robust and Discriminative 3D Morphable Models with a very Deep Neural Network" 解读

    简介:这是一篇17年的CVPR,作者提出使用现有的人脸识别深度神经网络Resnet101来得到一个具有鲁棒性的人脸模型. 原文链接:https://www.researchgate.net/publi ...

  2. ats透明代理

    透明代理是拦截客户端和服务器之间的连接而不可见的代理能力(比如ats). 必须要有一个网关设备,所有网络流量都通过该设备从客户端传递到Internet(或外部云).网关负责有效的将ATS拼接到该流量的 ...

  3. 微软职位内部推荐-Principal Software Eng Mgr

    微软近期Open的职位: Job Title: &nbsp Principal Software Eng Mgr Work Location: Shanghai, China Job Desc ...

  4. SpringMVC 之 @ResponseBody 和 @RequestBody

    前后端进行数据交互的时候,规定数据交互的格式,使数据交互规范而统一,是极为重要的事.一般而言,我们会采用 JSON 进行数据交互.本文暂不讨论如何 JSON 的格式规范,而是解析一下如何在 Sprin ...

  5. sql not in 优化问题

    问题情境: not in 耗时过长.想用join或exits代替.结果并不明显,这里先记录3种写法,以后探讨速度问题. sql语句: // not exists sql = @"select ...

  6. react-router JS 控制路由跳转(转载)

    Link组件用于正常的用户点击跳转,但是有时还需要表单跳转.点击按钮跳转等操作.这些情况怎么跟React Router对接呢? 下面是一个表单. <form onSubmit={this.han ...

  7. [转载] Activiti Tenant Id 字段释疑

    TENANT_ID_ :  这个字段表示租户ID.可以应对多租户的设计. 转载自: http://www.cnblogs.com/yg_zhang/p/4201288.html http://www. ...

  8. Exchange2010批量删除邮件

    在Exchange2010里若要删除某个用户发出的邮件,可以通过EMC控制台授予管理员“管理完全访问权限”,通过OWA登录到用户邮箱删除.另外,更简便的方法为使用Exchange2010的命令来处理, ...

  9. 在手机上点击input框时会放大页面

    加上  <meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-s ...

  10. 一本通1644【例 4】佳佳的 Fibonacci

    1644:[例 4]佳佳的 Fibonacci 时间限制: 1000 ms         内存限制: 524288 KB sol:搞了大概一个多小时什么结果都没,被迫去看题解,感觉自己菜到家了qaq ...