javaSE那些事情三
1.java中的代理 proxy
2.java中的图形界面 GUI AWT (一次编写,到处调试 ,很不好) swing 2D图形编辑 7章 9章
事件处理(类似js点击事件的操作)core java 8章 7章
java 部署 applet(SUN公司都不太用这个)
3.try(FileInputStream fis=.....){} 在执行完或者出现异常时 假如()里使用IO 会自动关闭 相当于finally语句 关闭流的操作
4.分析堆栈跟踪元素
如下 代码 运行 打印出的结果可以看到 代码执行的 行数 方法名 类名 等信息
package com.jsdc.ybjava.ybjava;
import java.io.ByteArrayOutputStream;
import java.io.ByteArrayOutputStream;
public class Test {
public static void method(int b,int c) {
Throwable throwable=new Throwable();
StackTraceElement[]stes=throwable.getStackTrace();
for(StackTraceElement ste:stes) {
System.out.println(ste.getLineNumber()+"=="+ste.getMethodName()+"=="+ste.getClassName());
}
}
public static void method(int a) {
a=a+1;
method(a,1);
}
public static void main(String[] args) {
method(1);
}
}
5.通过跟踪 可以一步步发现异常的最终root cause
6.传递异常比捕获异常更好,早抛出 晚捕获为好
7断言?
8.迭代器的next()和inputstream.read()类似
9.可以在两端同时添加或删除元素的队列 双端队列 不支持中间操作元素
10.List<String>a=new ArrayList<String>();
a.add("a");
a.add("c");
List<String>b=new ArrayList<String>();
b.add("b");
b.add("c");
Set<String>set=new HashSet<String>(a);
set.retainAll(b); 将 集合a b中交集元素保留下来
for(String str:set) {
System.out.println(str);//输出c
}
}
11.集合转数组 如果直接用toarray,得到Object[]对象数组 ,是无法强转的
List<String>lists=new ArrayList<String>();
lists.add("1");
String[]strs=(String[])lists.toArray();//这里是错误的 ,即使知道元素的类型也不能这样转 运行时会报错
但是 我们可以这样
List<String>lists=new ArrayList<String>();
lists.add("1");
String[]strs=lists.toArray(new String[0]); toarray时构造一个新的同类型的数组 长度为0或者 和集合长度相同
12.Collections.sort(lists, Collections.reverseOrder());对集合进行降序排序
Collection.binarysearch,需要先升序排列 才能使用
13.java遗留的集合 hashtable 以及 Enumeration的用法(类似迭代器的用法)
14.properties类
15.栈 Stack
16.Bitset
17多线程 stop()已经弃用 inerrupt()向线程发送中断请求 中断状态被设置为true 如果线程被sleep阻塞 则抛出interruptExcetion
还有一些方法 操作线程的状态 判断线程的状态,getState()获取线程的当前状态
18.线程安全的vector hashtable已经被arraylist hashmap取代了 ,后者是非线程安全的,可以使用同步包装器 变成安全的
List<T>list=Collections.synchronizedList(new ArrayList<T>());
Map<T,V>map=Collections.synchronizedMap(new HashMap<T,V>());
19.
三、产生死锁的必要条件
(1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求该资源,则请求者只能等待,直至占有该资源的进程用毕释放。
(2)请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其它进程占有,此时请求进程阻塞,但又对自己获得的其它资源保持不放。
(3)不剥夺条件:指进程已获得资源,在使用完之前,不能被剥夺,只能在使用完时由自己释放。
(4)环路等待条件:指在发生死锁时,必然存在一个进程—资源的环形链,即进程集合(P0,P1,P2,…,Pn)中的P0正在等待一个P1占用的资源;P1正在等待一个P2占用的资源,……,Pn正在等待已被P0占用的资源。
20.https://blog.****.net/diweikang/article/details/52680275
java自带线程的使用
21.java 流 的使用 PushbackInputStream可以预读,
22.
PrintWriter以字符为单位,支持汉字,
OutputStreamWriter以字节为单位,不支持汉字,
处理人要看得懂的东西就用PrintWriter,字符
处理机器看的东西就用OutputStreamWriter,二进制
23.
创建cset 然后获取所有ISO-8859-1或者UTF-8....的集合 遍历查看内容
为了确定哪些可以用 可以按照下面的代码操作