标签:
本周学习教材的第十、十一章,主要讲述了串流,字符处理和线程以及并行API
1. 输入输出
串流:1Java中的数据有来源(source)和目的地(destination),衔接两者的就是串流对象2串流设计:在不知道限定数据来源和目的地时,也可以依赖抽象的InputStream和Outstream来编写一个dump()方法,方便以后使用3InputStream和OutputStream:在java中,输入串流代表对象为java.io.InputStream实例,输出串流代表对象为java.io.OutputStream
串流的继承结构:
3. 串流处理装饰器:
2. 线程
之前学习的各种实例都是单线程的,即程序从main()进入后只有一个流程,但是在设计时候可以根据需要拥有多个流程,就是多线程(Multi-thread)程序
2. 线程生命周期
3. 等待和通知
4. 并行API
chapter10:AC BD AC BD A BC BD BD D ABD
chapter11:A C B AB AB D B A B CD
最近在学习新内容的回过头打算把前几章的课后操作题写一写,本以为会比较轻松,但操作起来没有意料中那样简单。
代码(汉诺塔):
这段程序看上去没有什么问题,但是在其中有一些问题
首先我们要了解程序到底出现了什么问题,java.lang.StackOverflowError其实说的就是这个程序出现了栈溢出,所以导致程序无法正常运行
那什么是栈溢出?什么又会导致栈溢出呢?
我们都知道缓冲区的数据不得大于缓冲区的大小,而栈溢出就是指这个数据足够大的时候,溢出缓冲区的范围。
而导致栈溢出一般会有两种情况,一是变量体积太大,例如在写程序时定义变量 int abc[]=new int[2*1024*1024]
第二个就是上程序出现的问题了: 函数调用层次过深,每调用一次,函数的参数、局部变量等信息就压一次栈
在move函数循环调用自身时,num--;……move(mid, from, to, num-1);这里在函数中又使用num-1就导致了函数将一直循环,将其修改成move(mid, from ,to,num)即可
汉诺塔运行成功
|
代码行数(新增/累积) |
博客量(新增/累积) |
学习时间(新增/累积) |
重要成长 |
目标 |
3500行 |
28篇 |
300小时 |
|
第五周 |
200/1200 |
1/5 |
20/105 |
|
第六周 |
300/1500 |
2/7 |
25/130 |
|
第七周 |
|
|
|
|
第八周 |
|
|
|
|
标签:
原文地址:http://www.cnblogs.com/20145319zk/p/5374499.html