20145204 《Java程序设计》第6周学习总结
20145204 《Java程序设计》第6周学习总结
教材学习内容总结
第十章 输入/输出
数据流
- I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出。
- Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象.如果要将数据从来源取出,可以使用输入传流,如果要将数据写入目的地,可以使用输出串流。
- 在java中,输入串流代表对象为java.io.InputStream实例,输出串流代表对象为java.io.OutStream实例。
InputStream与OutputStream
InputStream不关心数据源来自何种设备(键盘,文件,网络);
OutputStream不关心数据的目的是何种设备(键盘,文件,网络)提供串流基本操作,如果想要为输入/输出的数据做加工处理,则可以使用打包器类。
子类一: FileInputStream,FileOutputStream。适用于文件的创建和读写。这两个子类在不使用时都要用close()关闭文档。
子类二:ByteArryInputStream,ByteArryOutputStream。指定byte数组创建实例,一旦创建就可将byte数组当做数据源进行读写。
Reader与Writer
- 字符数据的读取:java.io.Reader类,其抽象化了字符数据读入的来源;字符数据的写入:java.io.Writer类。其抽象化了数据写出的目的地。
第十一章 线程与并行API线程
线程
单线程:
启动的程序从main()程序进入点开始至结束只有一个流程。多线程:要设计程序可以拥有多个程序。即在main以外独立设计流程。
实现多线程
- 撰写类操作**java.lang.Runnable接口。操作进入点:run();
- 创建Thread实例来执行Runnable实例定义的run()方法,启动线程执行指定的线程,调用Thread实例的start()方法。
- 继承Thread类。
并行API
使用Thread建立多线程程序,必须亲自处理synchornized、对象锁定、wait()、notify()、notifyAll()等细节,如果需要的是线程池、读写解锁高等级操作,从JDK5之后提供了java.util.concurrent,可基于其中的API建立更稳固的并行应用程序。
并行API可以分为以下几个类.
1.Lock、ReadWriter与Condition
2.使用Executor
3.并行Collection
Lock、ReadWriteLock
lock接口主要操作类之一为ReentrantLock,可以达到synchronized的作用。
ReadWriteLock接口定义了读取锁定与写入锁定行为,可以使用readLock()、writeLock()方法返回Lock操作对象。
StampedLock类可支持了乐观读取操作。也就是若读取线程很多,写入线程很少的情况下,你可以乐观地认为,写入与读取同时发生的机会很少,因此不悲观的使用哇暖的读取锁定,程序可以查看数据读取之后,是否遭到写入线程的变更,再采取后续的措施。
代码调试中的问题和解决过程
如上图所示,用红线标注的地方是我习惯性的删减代码所导致的错误,将鼠标光标移动到该错误的位置显示如下图:
说是一定要用数组的形式定义,我仔细看了看代码,想这可能是由于代码中下面这句代码的原因。
boolean sleep=flags[(int)((Math.random()*10)%2)];
于是我就直接将代码修改改成这样:private boolean flags[]={};
结果是没有兔子的身影:
于是利用刚学的断点调试程序发现flags的值是null:
终于经过了认真排查有了正确结果显示:
如果再运行一次会出现不一样的结果:
本周代码托管截图
其他(感悟、思考等,可选)
本周在经过一次试验后,我觉得对于java的运行环境有新的了解,对于代码调试什么的有可以熟练的运用对于我将来的自己编代码有了很大的用处。而且本周还解决了一直对于java的包,类,项目的关系的理解,受益颇深。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3500行 | 30篇 | 400小时 | |
第一周 | 100/100 | 1/1 | 20/20 | |
第二周 | 200/300 | 1/2 | 30/50 | |
第三周 | 300/600 | 1/3 | 28/78 | |
第四周 | 300/900 | 1/4 | 20/98 | |
第五周 | 300/900 | 1/5 | 30/128 | |
第六周 | 300/1200 | 2/6 | 32/ 160 |
参考资料
20145204 《Java程序设计》第6周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- 心脏滴血HeartBleed漏洞研究及其POC
一.漏洞原理: 首先声明,我虽然能看懂C和C++的每一行代码,但是他们连在一起我就不知道什么鬼东西了.所以关于代码说理的部分只能参考其他大牛的博客了. /* 据说源码中有下面两条语句,反正我也没看过源 ...
- 配置maven使用nexus
本文简单介绍使用配置maven使用nexus仓库,在团队中使用nexus,避免每个人都从中央仓库去下载依赖,节省带宽,提高下载速度,同时也减少了中央仓库的压力 配置在maven中使用nexus很简单( ...
- 【BZOJ2502】清理雪道 有上下界的网络流 最小流
[BZOJ2502]清理雪道 Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降 ...
- 170627、springboot编程之定时任务
springboot定时任务,比较简单! 1.编写DemoSchedule.java类 package com.rick.common.schedule; import org.springframe ...
- SQLite随机获取一行数据
Mysql中随机获取一行数据: SELECT * FROM table ORDER BY RAND() limit 1 SQLite中随机获取一行数据: SELECT * FROM table ORD ...
- elk----es settings--logstash--performance---bigdesk---logstash plugin online/offline
www.cnblogs.com/tangr206/articles/2274845.html yum timeout error(/etc/resolv.conf) elk: elasticsearc ...
- BBS - 文章评论
一.文章评论 <div class="comment_region"> <div class="row"> <div class= ...
- 人人网张铁安:Feed系统架构分析(转)
原文:http://www.csdn.net/article/2010-07-26/277273 继成功举办首期TUP活动后,日前在北京丽亭华苑酒店鸿运二厅,由CSDN和<程序员> 杂志联 ...
- 简单的共享文件http
如果你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等.那么, Python 可能帮助你.使用Python可以完成一个简单的内建 HT ...
- JS操作符转化数字
在Node.js源代码里,随处可见使用各种符号处理字符串为数字的.可能由于不同人编写,使用的风格也各有不同. 基本上有下面几种. 将字符串转化为数字 + 将一个数字的字符串转化为数字很简单的一种做法就 ...