20145237第六周学习总结

20145237第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数组、初始索引与数组长度。

package cc.openhome;

import java.io.*;

public class IO {

public static void dump(InputStream src, OutputStream dest)

throws IOException {

try (InputStream input = src; OutputStream output = dest) {

byte[] data = new byte[1024];

int length;

while ((length = input.read(data)) != -1) {

output.write(data, 0, length);

}

}

}

}

第十一章 线程与并行API

·单线程程序:启动的程序从main()程序进入点开始至结束只有一个流程。示范代码如下:

import static java.lang.System.out;

public class TortoiseHareRace {

public static void main(String[] args) {

boolean[] flags = {true, false};

int totalStep = 10;

int tortoiseStep = 0;

int hareStep = 0;

out.println("龟兔赛跑开始...");

while(tortoiseStep < totalStep && hareStep < totalStep) {

tortoiseStep++;

out.printf("乌龟跑了 %d 步...%n", tortoiseStep);

boolean isHareSleep = flags[((int) (Math.random() * 10)) % 2];

if(isHareSleep) {

out.println("兔子睡着了zzzz");

} else {

hareStep += 2;

out.printf("兔子跑了 %d 步...%n", hareStep);

}

}

}

}

在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来操作。

关于ThreadGroup

1.获取目前线程所属线程群组名:Thread.currentThread().getThreadGroup().getName()

2.ThreadGroup的某些方法,可以对群组中所有线程产生作用,interrupt()方法可以中断群组中所有线程,setMaxPriority()方法可以设定群组中所有线程最大优先权。

activeCount()方法获取群组的线程数量 。

enumerate()方法要传入Thread数组,这会将线程对象设定至每个数组索引。

uncaughtException()方法第一个参数可取得发生异常的线程实例,第二个参数可取得异常对象。

3.未捕捉异常会由线程实例setUncaughtExceptionHandler()设定的Thread.UncaughtExceptionHandler实例处理之后是线程ThreadGroup,然后是默认的Thread.UncaughtExceptionHandler。

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

p325页的代码运行结果跟舍友不一样。跟舍友讨论后发现是因为程序中设置了兔子随机睡觉,如果兔子不睡觉就将 hareStep 递增2,表示兔子走两步,只要兔子或乌龟其中一个走完10步就离开循环,根据兔子睡觉的随机性,结果不同

本周代码托管截图

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

这周因为有四个实验,需要写很多实验报告,而java又有两章需要进行学习,所以学习时间真的很少,java这种自学模式需要我们很大的自制力,能够做到的话确实能够学到许多有用的知识,我还需努力。

学习进度条

|            | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|重要成长|

| --------   | :----------------:|:----------------:|:---------------:  |:-----:|

| 目标        | 5000行            |   30篇           | 400小时            |       |

| 第六周      | 200/1030           |   1/11            | 20/20             |       |

时间: 2025-01-15 20:41:02

20145237第六周学习总结的相关文章

20145317《信息安全系统设计基础》第六周学习总结(1)

20145317<信息安全系统设计基础>第六周学习总结(1) 第四章 处理器体系结构 指令体系结构:一个处理器支持的指令和指令的字节级编码 4.1Y86指令集体系结构 Y86:包括定义各种状态元素.指令集和它们的编码.一组编程规范和异常事件处理. Y86程序中的每条指令都会读取或修改处理器状态的某些部分.Y86具体包括:8个程序寄存器.3个条件码ZF\SF\OF.程序计数器(PC) Y86用虚拟地址引用存储器位置. 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状态. 注意:条件

20145222《信息安全系统设计基础》第六周学习总结(1)

20145222<信息安全系统设计基础>第六周学习总结(1) 第四章 处理器体系结构 指令体系结构:一个处理器支持的指令和指令的字节级编码 4.1Y86指令集体系结构 · Y86:包括定义各种状态元素.指令集和它们的编码.一组编程规范和异常事件处理. · Y86程序中的每条指令都会读取或修改处理器状态的某些部分.· Y86具体包括:8个程序寄存器.3个条件码ZF\SF\OF.程序计数器(PC) · Y86用虚拟地址引用存储器位置. 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状

《Linux内核分析》第六周学习笔记

<Linux内核分析>第六周学习笔记 进程的描述和创建 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [学习视频时间:1小时 撰写博客时间:2小时] [学习内容:进程创建的过程.使用gdb跟踪分析内核处理函数sys_clone] 一.进程的描述 1.1 进程描述符task_struct数据结构(一) 1. 进程控制块PCB——task_struct 为了管理进程,内核

20145307《信息安全系统设计基础》第六周学习总结

20145307<信息安全系统设计基础>第六周学习总结 教材学习内容总结 Y86指令集体系结构 内容:定义一个指令集体系结构,包括定义各种状态元素.指令集和它们的编码.一组编程规范和异常事件处理. 程序员可见状态 Y86程序中的每条指令都会读取或修改处理器状态的某些部分. Y86具体包括:8个程序寄存器.3个条件码ZF\SF\OF.程序计数器(PC). Y86用虚拟地址引用存储器位置. 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状态. Y86指令 IA32指令集的一个子集,只

20145301第六周学习总结

20145301第六周学习总结 教材学习内容总结 第十章 输入/输出 10.1 InputStream与OutputStream InputStream与OutputStream  流(Stream)是对「输入输出」的抽象,注意「输入输出」是相对程序而言的  InputStream与OutputStream InputStream.OutStream提供串流基本操作,如果想要为输入/输出的数据做加工处理,则可以使用打包器类.常用的打包器具备缓冲区作用的BufferedOutputStream.B

20145319 第六周学习总结

20145319 <Java程序设计>第六周学习总结 教材学习内容总结 本周学习教材的第十.十一章,主要讲述了串流,字符处理和线程以及并行API 1. 输入输出 串流:1Java中的数据有来源(source)和目的地(destination),衔接两者的就是串流对象2串流设计:在不知道限定数据来源和目的地时,也可以依赖抽象的InputStream和Outstream来编写一个dump()方法,方便以后使用3InputStream和OutputStream:在java中,输入串流代表对象为jav

LINUX内核分析第六周学习总结——进程的描述和进程的创建

LINUX内核分析第六周学习总结——进程的描述和进程的创建 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.知识概要 进程的描述 进程描述符task_struct数据结构(一) 进程描述符task_struct数据结构(二) 进程的创建 进程的创建概览及fork一个进程的用户态代码 理解进程创建过程复杂代码的方法 浏览进程创建过程相关的关键代码 创建的新进程是从哪里开始执行的

20145311 《信息安全系统设计基础》第六周学习总结

20145311 <信息安全系统设计基础>第六周学习总结 教材学习内容总结 书上那几个表还是挺重要的 一个程序编译成在一种机器上运行,就不能在另一种机器上运行寄存器%esp被入栈.出栈.调用和返回指令作为栈指针程序计数器PC存放当前正在执行指令的地址三个一位的条件吗:ZF.SF.OF保存着最近的算数运算或逻辑运算所造成影响的有关信息Y86指令集:每个指令的第一个字节表明指令的类型,高4位是代码部分,低4位是功能部分指令集的一个重要性质就是字节编码必须有唯一的解释IA32(复杂指令集计算机CIS

20165315 第六周学习总结

20165315 第六周学习总结 本周学习中遇到的问题和解决过程 在编写第八章例子7时,编译正常,但运行时出现如下问题: 解决过程: 经过多次尝试,我发现在我的电脑系统下,一个汉字是占3个字节的,故不能完全照抄书上代码,修改后即可运行出正确结果: 在编写第八章例子21时,出现如下问题: 解决过程: 在命令行中是可以实现的 询问了许多同学,还没有找到在IDEA中实现的解决方法,找到后会补上这部分 在编写第十五章例子11时,运行没有问题,出现如下窗口: 但是输入需要录入的数据后,点击"录入"