博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20145337 《Java程序设计》第六周学习总结
阅读量:7036 次
发布时间:2019-06-28

本文共 2695 字,大约阅读时间需要 8 分钟。

20145337 《Java程序设计》第六周学习总结

教材学习内容总结

输入\输出

InputStream与OutputStream

  • 从应用程序角度来看,如果要将数据从来源取出,可以使用输入串流;如果要将数据写入目的地,可以使用输出串流。在Java中,输入串流代表对象为java.io.InputStream实例,输出串流代表对java.io.OutputStream实例。无论数据源或目的地为何,只要设法取得InputStream或OutputStream的实例,接下来操作输入/输出的方式都是一致的,无须理会来源或目的地的真正形式。

886543-20160410192847890-1886582395.png

  • FileReader、FileWriter则可以对文档做读取与写入,读取或写入时默认会使用操作系统默认编码来做字符转换。在启动JVM时,可以指定-Dfile.encoding来指定FileReader、FileWriter所使用的编码。

  • Reader、Writer中也有一些装饰器类,InputStreamReader和OutputStreamWriter可以对串流数据打包,BufferedReader、BufferedWriter可对Reader、Writer提供缓冲区作用,在处理字符输入/输出时,对效率也会有所帮助。PrintWriter与PrintStream使用上极为类似,不过除了可以对OutputStream打包之外,PrintWriter还可以对Writer进行打包,提供print()、println()、format()等方法。

    线程与并行

886543-20160410192935312-995139400.jpg

  • 在java中,如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run()方法中。

    在java中,从main()开始的流程会由主线程执行,可以创建Thread实例来执行Runnable实例定义的run()方法。

  • JVM是台虚拟计算机,只安装一颗称为主线程的CPU,可执行main()定义的执行流程。如果想要为JVM加装CPU,就是创建Thread实例,要启动额外CPU就是调用Thread实例的start()方法,额外CPU执行流程的进入点,可以定义在Runnale接口的run()方法中。

  • 操作Runnable接口的好处就是较有弹性,你的类还有机会继承其他类。若继承了Thread,那该类就是一种Thread,通常是为了直接利用Thread中定义的一些方法,才会继承Thread来操作。

  • 线程存取同一对象相同资源时可能引发竞速情况,这样的类为不具备线程安全的类;
  • 每个对象都会有个内部锁定,或称为监控锁定。

    教材上的代码

    package cc.openhome;import java.util.concurrent.BlockingQueue;public class Consumer3 implements Runnable {private BlockingQueue
    productQueue; public Consumer3(BlockingQueue
    productQueue) { this.productQueue = productQueue; } public void run() { System.out.println("消费者开始消耗整数......"); for(int i = 1; i <= 10; i++) { try {int product = productQueue.take();System.out.printf("消费者消费整数 (%d)%n", product);} catch (InterruptedException ex) {throw new RuntimeException(ex);}} } }
    package cc.openhome;import java.net.URL;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class Download3 {public static void main(String[] args) throws Exception {URL[] urls = {new URL("http://openhome.cc/Gossip/Encoding/"),new URL("http://openhome.cc/Gossip/Scala/"),new URL("http://openhome.cc/Gossip/JavaScript/"),new URL("http://openhome.cc/Gossip/Python/")};String[] fileNames = {"Encoding.html","Scala.html","JavaScript.html","Python.html"};ExecutorService executorService = Executors.newCachedThreadPool();new Pages(urls, fileNames, executorService).download();executorService.shutdown();}}

    本周代码托管截图

    886543-20160410193010765-992519956.png

    886543-20160410193112687-1575570396.png

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

这两章的学习较八九章更为吃力,这周实验多多,安排给看书的时间比较少,还是决定把书上的代码都亲自敲,只是看还是有点似懂非懂。编辑实验练习题目时就发现缺少自己编代码的过程,不过还是把书上的知识点先看明白吧

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 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
第五周 200/1300 2/9 15/90
第六周 200/1300 2/9 15/90

参考资料

  • ...
posted on
2016-04-10 19:32 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/5337my/p/5375059.html

你可能感兴趣的文章
VisualStudio.DTE 对象可以通过检索 GetService() 方法
查看>>
一个简单的EBNF范式的实现
查看>>
as3 TweenMax TweenLite方法
查看>>
随笔css的样式
查看>>
VI 配置文件(略全)
查看>>
752. Open the Lock
查看>>
Git 分布式版本控制的常见命令
查看>>
windows添加删除mysql 服务
查看>>
删除HTML标记
查看>>
请教关于vs2008英文版连接中文版的sql2005的问题
查看>>
防止页面重复刷新
查看>>
redis_1 安装和简单使用
查看>>
Django 学习笔记(二)第一个网页
查看>>
MySQL与SQL的触发器的不同写法
查看>>
Using Vertex Texture Displacement for Realistic Water Rendering
查看>>
IM多类型holder封装
查看>>
[目标检测] 从 R-CNN 到 Fast R-CNN
查看>>
杭电1213--How Many Tables(并查集)
查看>>
hdoj1045--Fire Net(二分图 转化 )
查看>>
PHP学习之路(四)
查看>>