20145314郑凯杰 《Java程序设计》第6周学习总结
20145314郑凯杰 《Java程序设计》第6周学习总结
教材学习内容总结
- 本次就不放上每个程序的运行结果了,在下面的问题探究里会写出的。代码托管如下:
第十章
- InputStream与OutputStream
流(Stream)是对「输入输出」的抽象。
read:每次会尝试读入byte数组长度的数据,并返回实际读入的字节。为-1时即为未读取到数据。
write:指定要写出的byte数组、初始索引与数组长度。
- 标准输入输出//这部分已经很熟悉了
System.in: 标准输入,默认关联到键盘(终端输入)
System.out: 标准输出,默认关联到显示器(终端输出)
System.err: 标准错误,默认关联到显示器(终端输出)
输入输出重定向:setIn,setOut,setErr
- 其余
FileInputStream与FileOutPutStream:文件读写
BufferedInputStream与BufferedOutputStream: 内部提供缓冲,提高效率
DataInputStream与DataOutputStream:基本数据类型与字节的转换
ObjectInputStream与ObjectOutputStream:java.io.Serializable接口
- 字符处理类
read:每次会尝试读入byte数组长度的数据,并返回实际读入的字节。为-1时即为未读取到数据。
write:指定要写出的byte数组、初始索引与数组长度。
第十一章
- 线程
通过龟兔赛跑的例子,说明线程是多个流程一起进行的。
Thread与Runnable
撰写多线程的两种方式:
1、将流程定义在Runnable的run方法中。
2、继承Thread类,重新定义run()方法。
- 线程生命周期
插图2:
基本状态图。对于整体过程有把握就基本掌握了。
- 对线程进行操作:
1、安插线程
当线程使用join()加入至另一线程时,另一线程会等待被加入的线程工作完毕,然后再继续它的动作,join()的意思币哦啊是将线程加入成为另一线程的流程中。
2、停止线程
最好不要调用Thread的stop方法,应选择自行操作来停止线程。
- ThreadGroup
setMaxPriority:可以设定群组中所有线程最大优先权
enumerate:一次取得群组中所有线程。
activeCount:取得群组的线程数量。
- 并行API
LOCK:锁定lock对象,可以调用其lock方法,只有取得lock对象锁定的线程,才可以继续往后执行程序代码。解除锁定要调用unlock()。
- ReadWriteLock
- Condition
- Executor:将Runnable的指定与实际如何执行分离。
- ScheduledThreadPoolExecutor
- ForkJoinPool(分而治之方法的体现)
- 并发Collection
代码调试中的问题和解决过程
在本周的学习中,我改进了书上的一个代码
就是第十一章刚刚开始引入的那个例子:龟兔赛跑。
在第一个版本(TortoiseHareRace.java)中,设定了乌龟和兔子其中一个走完10步就比赛结束。
但是在改进版本中,这一点被去掉了,虽然是两方同时跑,但是却仍旧不像个赛跑比赛了。
所以我对TortoiseHareRace2.java做出改动如下:
public class TortoiseHareRace2 {
public static void main(String[] args) {
Tortoise tortoise = new Tortoise(10);
Hare hare = new Hare(10);
int totalStep=10;
while(tortoiseStep<totalStep&&hareStep<totalStep)
{
Thread tortoiseThread = new Thread(tortoise);
Thread hareThread = new Thread(hare);
tortoiseThread.start();
hareThread.start();
}
}
}
原来的运行结果1:
改进后的运行结果1:
这样就产生了正规的龟兔赛跑了。
其他(感悟、思考等,可选)
本周实验比较多,一共做了四个实验:计算机网络、密码学、JAVA实验、数据结构实验。但是由于学习的氛围浓厚,对JAVA的学习还是需要钻研的。就像本次龟兔赛跑,看到了一点问题,就可以用自己的方法来优化。这对任何的科目都是一样的。
本周密码学中我设计了希尔密码体制的加密和解密。通过JAVA语言也很容易实现,我会在密码学实验报告里面分析并想一想用JAVA实现其的方法。
在数据结构里,要实现的是扑克牌的洗牌和发牌然后还有排序。这部分也可以用JAVA实现。
各个学科的知识是想通的,因为算法与语言是统驭关系。对算法学习得透彻的话,用相应语言编写也会更加方便。例如C语言编的话,用数组确实可以实现,但是如果用指针的话,可以大幅减少代码的复杂度。
对于JAVA也是如此,以后还需多留心,多注意。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 50/50 | 1/2 | 20/20 | |
第二周 | 700/600 | 2/4 | 38/38 | |
第三周 | 900/1100 | 1/7 | 60/60 | |
第四周 | 913/1350 | 1/9 | 90/90 |
参考资料
20145314郑凯杰 《Java程序设计》第6周学习总结的更多相关文章
- 20145314郑凯杰 《Java程序设计》第10周学习总结
20145314郑凯杰 <Java程序设计>第10周学习总结 代码托管: 学习内容总结 网络编程 会打手机吗? 第一个问题:会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛 ...
- 20145314郑凯杰 《Java程序设计》课程总结
20145314郑凯杰 <Java程序设计>课程总结 每周读书笔记链接汇总 ①寒假预习--"helloworld" ②第一周读书笔记 ③第二周读书笔记 ④第三周读书笔记 ...
- 20145314郑凯杰 《Java程序设计》实验五 实验报告
20145314郑凯杰 <Java程序设计>实验五 实验报告 实验搭档王亦徐:http://www.cnblogs.com/1152wyx/p/5471524.html 实验要求 完成实验 ...
- 20145314郑凯杰 《Java程序设计》第9周学习总结 积极主动敲代码
20145314郑凯杰 <Java程序设计>第9周学习总结 教材学习内容总结 第十六章 ①JDBC(Java DataBase Connectivity) 即java数据库连接,是一种用于 ...
- 20145314郑凯杰 《Java程序设计》实验四 实验报告
20145314郑凯杰 <Java程序设计>实验四 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...
- 20145314郑凯杰 《Java程序设计》实验三 敏捷开发与XP实践实验报告
20145314郑凯杰 <Java程序设计>实验二 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...
- 20145314郑凯杰 《Java程序设计》第8周学习总结
20145314郑凯杰 <Java程序设计>第8周学习总结 教材学习内容总结 代码已托管 第十五章 通用API ①日志: 日志对信息安全意义重大,审计.取证.入侵检测等都会用到日志信息 使 ...
- 20145314郑凯杰 《Java程序设计》第7周学习总结
20145314郑凯杰 <Java程序设计>第7周学习总结 教材学习内容总结 首先放上代码托管图片和本地代码图片: 插图4: 插图5: 插图6: 第十三章 时间与日期 13.1 认识时间与 ...
- 20145314郑凯杰 《Java程序设计》实验二 实验报告
20145314郑凯杰 <Java程序设计>实验二 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...
- 20145314郑凯杰 《Java程序设计》实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告
20145314郑凯杰 <Java程序设计>实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告 实验要求 •使用JDK编译.运行简单的Java程序: •使用Ecl ...
随机推荐
- excel 使用技巧
计算两个日期的差值 1.计算当前日期与目标日期相差天数,下面例子中当前日期未2017/3/19 2.列增加数据条
- 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause
解决方法一: SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 优点:不用重启mysql 缺点:重启mysql后还会 ...
- 转载(web app变革之rem)
rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. ...
- 如何实现手游app瘦身?
手游服务商来说,手游包体大一直是个很困扰的问题.一款手游产品而言,包体大小和更新方式对于有效用户的转化率往往起到非常关键的作用,话说手游安装包越小,用户转化率越高,那该如何实现app瘦身呢? 工具/原 ...
- Linux上的下载软件uGet
uGet是一款开源下载软件,类似于我们常用的迅雷,不过uGet支持的操作系统非常多,Ubunut,Arch,openSUSE,Windows,MacOS,BSD等. uGet支持两个下载引擎:curl ...
- PCI 设备详解一
2016-10-09 其实之前是简单学习过PCI设备的相关知识,但是总感觉 自己的理解很函数,很多东西说不清楚,正好今天接着写这篇文章自己重新梳理一下,文章想要分为三部分,首先介绍PCI设备硬件相关的 ...
- phpcms调用子栏目名称/文章怎么操作
phpcms调用子栏目名称相对比较简单一些,也是用{pc:content}来调用,只是把action设置为category,catid如果为0的话是调用所有一级栏目,如果是其他数字的话,则调用相应栏目 ...
- Servlet实现前后端交互的原理及过程解析
在日常调试项目时,总是利用tomcat去启动项目,并进行前后端联调,但对于前后端的请求响应的交互原理及过程并不是特别清晰. 为什么在前端发出相应请求,就能跳转到后端通过程序得到结果再响应到前端页面呢? ...
- oracle的相关信息
[INS-08109] :https://blog.csdn.net/u012830807/article/details/17302919[INS-13001]:https://blog.csdn. ...
- C++学习笔记--异常简介
C++异常是对程序运行过程中发生的异常情况(如被0除)的一种响应.异常提供了将控制权从程序的一个部分传递到另一部分的途径. 1.对异常的处理有3个部分组成: (1)引发异常 (2)捕获有处理程序的异常 ...