20145205 《Java程序设计》第6周学习总结
教材学习内容总结
-若要将数据从来源中取出,可以使用输入串流;若要将数据写入目的地,可以使用输出串流。在java中,输入串流代表对象为java.in.InputStream
的实例;输出串流代表对象为java.io.Outputstream
的实例。
-dump()
方法接受InputStream
与OutputStream
实例,分别代表读取数据的来源,以及输出数据的目的地。
-FileIntputStream
是InputStream
的子类,用于衔接文档以读入数据,FileOutStream
是OutputStream
的子类,用于衔接文档以写出数据。
-在不使用InputStream
与OutputStream
时,必须使用close()
方法关闭串流。由于InputStream
与OutputStrem
操作了java.io.Closeable
接口,其父接口为java.lang.AutoCloseable
接口。
-ByteArrayInputStream
是InputStream
的子类,可以指定byte
数据创建实例,主要操作其read()
抽象方法;ByteArrayOutputStream
是OutputStream
的子类,主要操作其write()
的操作方法
-串流装饰器本身并没有改变InputStream
和OutputStream
的行为,只是在得到数据之后,再做一些加工处理。
-DataInputStream
与DataOutputStream
主要提供读取、写入java基本数据类型的方法,会自动在指定的类型与字节之间转换。
-单线程程序:启动的程序从main()
程序进入点开始至结束只有一个流程
-多线程程序:程序有多个流程
-在 java 中,从 main()
开始的流程会由主线程执行
-Thread:如果想要加装主线程,就要创建Thread
实例,要启动额外的主线程就是调用 Thread
实例的 start()
方法
-额外线程执行流程的进入点,有两种方式:可以定义在 Runnable
的 run()
方法中继承 Thread
类,重新定义run()
方法
-Daemon
线程:
-主线程会从 main()
方法开始执行,直到 main()
方法结束后停止 JVM
-如果主线程中启动了额外线程,默认会等待被启动的所有线程都执行完 run()
方法才中止 JVM
-等待与通知
-wait()
、notify()
、notifyAll()
是 Object
定义的方法,可以通过这三个方法控制线程释放对象的锁定,或者通知线程参与锁定竞争
-wait()
:执行 synchronized
范围的程序代码期间,若要调用锁定对象的 wait()
方法,线程会释放对象锁定,并进入对象等待集合而处于阻断状态,其他线程可以竞争对象锁定,取得锁定的线程可以执行 synchronized
范围的程序代码。wait()
可以指定等待时间,时间到之后线程会再次加入排班,如果指定时间0或不指定,则线程会持续等待,只到被中断或是告知可以参与排班
-noyify()
:被竞争锁定的对象调用 noyify()
时,会从对象等待集合中随机通知一个线程加入排班,再次执行 synchronized
前,被通知的线程会与其他线程共同竞争对象锁定
-notifyAll()
:如果调用 notifyAll()
,所有等待集合中的线程都会被通知参与排班,这些线程会与其他线程共同竞争对象锁定
-Lock
、ReadWriteLock
与 Condition
-Lock
接口主要操作类之一为 ReentrantLock
,可以达到synchronized
的作用,也提供额外的功能
-想要锁定 Lock
对象,可以调用其 lock
方法,只有取得 Lock
对象锁定的线程,才可以继续往后执行程序代码,要接触锁定,可以调用 Lock
对象的 unlock()
-Lock
接口还定义了tryLock()
方法,如果线程调用 tryLock()
可以取得锁定会返回 true
,若无法取得锁定并不会发生阻断,而是返回 false
第十章中的流概念可以应用到我们的实验中,在输入数据时,可以代替这前所用用到的Scanner
字符串输入,之后再使用equals
判断输入字符串是否和预先的判断条件字符串,是是否完全相等,这样进行代码部分分块,再进行判断运行。不过具体使用时救我目前掌握的知识来说,判断使用这两种方式判断条件是自己更擅长哪个的,因为我相信使用不同的方式,尤其是在JAVA中调用不同的类,而且处理方式不同时,对于数据的处理,不同的流程方式都用不同,所以有些我们看起来一样的东西或是方式,其实本质有着各种微妙的差别,因为稍微一想,如果他俩完全是一样的,干嘛需要定义两个不同的东西,完全可以舍去一个。
代码调试中的问题和解决过程
package cc.openhome;
import java.util.Arrays;
import java.lang.System;
public class shiyan2
{
public static int[] contact(int scores1[], int scores2[]){
int[] f = new int[scores1.length+scores2.length];
for(int i = 0 ; i < f.length; i++)
if(i < scores1.length)
f[i] = scores1[i];
else
f[i]= scores2[i-scores1.length];
return f;
}
public static void main(String[] args)
{
int[] shuju ={88,81,74,68,78,76,77,85,95,93,87,80,73,67,77,75,76,84,94,92};
int[] scores1 = Arrays.copyOf(shuju,shuju.length/2);
int scores2[] = new int[10];
System.arraycopy(shuju[10],scores2[0],shuju.length);
int temp;
int size = scores1.length;
for (int i = 0; i < size - 1; i++)
{
for (int j = i + 1; j < size; j++)
{
if (scores1[i] < scores1[j])
{ // 交换两数的位置
temp = scores1[i];
scores1[i] = scores1[j];
scores1[j] = temp;
}
}
}
int size2 = scores2.length;
for (int i = 0; i < size2 - 1; i++) {
for (int j = i + 1; j < size2; j++) {
if (scores2[i] < scores2[j]) {
temp = scores2[i];
scores2[i] = scores2[j];
scores2[j] = temp;
}
}
}
int scores3[] =ContactIntegerArray.contact(scores2, scores1);
for(int score : scores3)
{
System.out.printf("%3d",score);
}
System.out.println();
}
}
这是我编写的数据结构实验代码,但是我在对于一个数组进行拆分后分开复制的时候,遇到了问题,因为在调用函数的时候出了先之前我有在小组提问的关于eclipse输出三个对象时就出错的问题System.arraycopy(shuju[10],scores2[0],shuju.length)
;本来想是查API后寻找解决办法,但是遇到了软件问题,数据结构实验JAVA实现的博客也无法最终完成,争取在下周中解决问题。
其他(感悟、思考等,可选)
本周因为其他课目也开了实验,自己的态度也是有所懈怠了,而且被别的事情占去了一定时间,自己也一直在感冒,当所有的偶然的因素混在一起的时候,就发生了奇妙的化学反应,我的电脑爆炸了,先是编程软件爆炸,之后装新的也是无法运行编译,之后就是电脑莫名无法执行命令,虽然都是客观因素,自己的主观态度也有问题。确实感觉最近的学习强度太大,曾经的节奏因为课程难度不断加大,自己也有一定懈怠和处理其他学生工作的事情,所以本周对于JAVA的学习确实很差,但是本周有用java进行实践,应用在了数据结构实验,希望自己的所遇到的问题在新的一周里可以解决,自己也可以重新调整态度,因为现在拉下的话滚起雪球的真是太可怕了,而且自己也要对于其他科目给予足够的时间,所有的科目一起发展。
下面是我托管代码的情况
下一页
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 4500行 | 25篇 | 350小时 | |
第一周 | 100/100 | 1/2 | 15/15 | |
第二周 | 150/250 | 1/3 | 12/27 | |
第三周 | 400/650 | 1/4 | 22/49 | |
第四周 | 510/1160 | 1/5 | 32/81 | |
第五周 | 831/1991 | 1/6 | 35/116 | |
第六周 | 945/2932 | 2/6 | 26/142 |
参考资料
20145205 《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 ...
随机推荐
- js创建,获取,检测cookie
- 关于当传过来的值转换成string类型报错的问题
有时候直接写 string str=request.param["str"].tostring;会报错,是因为接受到的值可能是空的 这个时候就可以这样写 string _actio ...
- BZOJ 4723: [POI2017]Flappy Bird
Description 从一个点到一条直线,每次纵坐标只能增加或减少1,有些位置有障碍,求最少增加步数. Sol 贪心. 或许是贪心吧...反正在可到达的范围内,纵坐标尽量小... 做的时候维护一下两 ...
- window跳转页面
1.直接的事件跳转 window.location.href="你所要跳转的页面"; 2.新窗口跳转 window.open('你所要跳转的页面'); 3.返回上一页 window ...
- sublime text install packages报错
汉化版的sublime text安装软件包的时候报错如下: There are no packages available for install 打开控制台,ctrl+~,然后看到如下错误: Pac ...
- 外网通过root账户访问虚拟机mysql
http://www.cnblogs.com/live41/archive/2013/04/02/2995178.html
- svn 更新命令(冲突时使用theirs)
svn cleanup svn revert -R -q ./ svn up --force --accept tc
- Xtrabackup 安装使用
一 简介: Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品.它能对Inno ...
- C++库(Google Breakpad)
Google Breakpad是什么? 一个开源的多平台崩溃报告系统. Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块,它支持Windows,Linux和Mac和Solari ...
- vux 中popup 组件 Mask 遮罩在最上层问题的解决
1. 问题描述:popup弹出层在遮罩层下面的 2.原因:因为滚动元素和mask遮罩层在同一级,vux框架默认把遮罩层放在body标签下的 3.解决方法:更改一下源码,把mask遮罩层放在popup同 ...