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周学习总结的更多相关文章

  1. 20145314郑凯杰 《Java程序设计》第10周学习总结

    20145314郑凯杰 <Java程序设计>第10周学习总结 代码托管: 学习内容总结 网络编程 会打手机吗? 第一个问题:会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛 ...

  2. 20145314郑凯杰 《Java程序设计》课程总结

    20145314郑凯杰 <Java程序设计>课程总结 每周读书笔记链接汇总 ①寒假预习--"helloworld" ②第一周读书笔记 ③第二周读书笔记 ④第三周读书笔记 ...

  3. 20145314郑凯杰 《Java程序设计》实验五 实验报告

    20145314郑凯杰 <Java程序设计>实验五 实验报告 实验搭档王亦徐:http://www.cnblogs.com/1152wyx/p/5471524.html 实验要求 完成实验 ...

  4. 20145314郑凯杰 《Java程序设计》第9周学习总结 积极主动敲代码

    20145314郑凯杰 <Java程序设计>第9周学习总结 教材学习内容总结 第十六章 ①JDBC(Java DataBase Connectivity) 即java数据库连接,是一种用于 ...

  5. 20145314郑凯杰 《Java程序设计》实验四 实验报告

    20145314郑凯杰 <Java程序设计>实验四 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...

  6. 20145314郑凯杰 《Java程序设计》实验三 敏捷开发与XP实践实验报告

    20145314郑凯杰 <Java程序设计>实验二 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...

  7. 20145314郑凯杰 《Java程序设计》第8周学习总结

    20145314郑凯杰 <Java程序设计>第8周学习总结 教材学习内容总结 代码已托管 第十五章 通用API ①日志: 日志对信息安全意义重大,审计.取证.入侵检测等都会用到日志信息 使 ...

  8. 20145314郑凯杰 《Java程序设计》第7周学习总结

    20145314郑凯杰 <Java程序设计>第7周学习总结 教材学习内容总结 首先放上代码托管图片和本地代码图片: 插图4: 插图5: 插图6: 第十三章 时间与日期 13.1 认识时间与 ...

  9. 20145314郑凯杰 《Java程序设计》实验二 实验报告

    20145314郑凯杰 <Java程序设计>实验二 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...

  10. 20145314郑凯杰 《Java程序设计》实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告

    20145314郑凯杰 <Java程序设计>实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告 实验要求 •使用JDK编译.运行简单的Java程序: •使用Ecl ...

随机推荐

  1. 厚积薄发系列之JDBC详解

    创建一个以JDBC链接数据库的程序,包含七个步骤 1.加载JDBC驱动 加载要连接的数据库的驱动到JVM 如何加载?forName(数据库驱动) MySQL:Class.forName("c ...

  2. 170427、centos6.5配置duboo

    IP: 192.168.0.111 部署容器:apache-tomcat-7.0.57 端口:8080 1. 下载最新版的 Tomcat7: $wget http://mirrors.hust.edu ...

  3. CentOS开启telnet连接

    开启telnet连接通道 yum安装telnet yum -y install telnet-server* 关闭防火墙 /etc/init.d/iptables stop 编辑配置文件 vim /e ...

  4. fidder教程

    Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大 ...

  5. ORACLE内存结构之SGA

    SGA的管理: SQL> show parameter sga NAME                                 TYPE        VALUE ---------- ...

  6. c#修改cpu主频

    并不是真正能修改硬件,只是一个数据,能骗过部分程序检测,如英雄联盟必须达到3.0的主频才能使用录像功能,通过修改可以达到要求. 下面是代码: public enum RegValueKind { // ...

  7. UEFI,BIOS,MBR,

    UEFI启动是一种新的主板引导项,正被看做是有近20多年历史的BIOS 的继任者.顾名思义,快速启动是可以提高开机后操作系统的启动速度.由于开机过程中UEFI的介入 第一:安全性更强 UEFI启动需要 ...

  8. 算法大神之路——排序

    从今天开始,给自己立下一个目标,每天晚上写一篇算法与数据结构的博客,用来给自己以后的算法工程师的目标铺路! 今天晚上就以算法里面的排序,作为自己的第一章节吧. 排序,就是讲一组数据,按照特定的规则去调 ...

  9. pendingIntent的FLAG标签:

    PendingIntent是一个特殊的Intent,实际上它像一个邮包,其中包裹着真正的Intent,当邮包未打开时,Intent是被“挂起”的,所以并不执行, 只有当邮包拆开时才会执行.它与Inte ...

  10. Part01、sqlalchemy 使用

    一.ORM         连表               一对多               1.创建表,主动指定外键约束.               2.操作.                 ...