刷新页面:fn+f5
搜狗输入法取消当前的输入快捷键:Esc
java复习
多线程
- 进程和线程
- run,start()
- 线程的两种创建方式
3.1 继承Thread类
3.2 实现Runnable接口
函数式接口,lambda表达式简化
3.3 静态代理
new Thread(Runnable).start();
3.4 Lambda表达式
函数式编程
避免内部类定义过多
new Thread(()->{
System.out.println();
}).start();
手动推导一遍lambda表达式
3.5 线程的状态
新建状态、就绪、运行、阻塞、死亡
3.6 常用的方法
sleep,休眠
join,插队
yield,礼让
isAlive,判断线程是否存活
start,启动线程
getPriority,获取优先级
3.7 线程同步
多个线程操作同一个资源,并发
队列+锁
Synchronize
同步方法 弊端:锁太多了
同步代码块(常用!)
第一个线程进来拿到锁,后面就要排队了,直到这个人释放锁,后面拿到锁才能进去
死锁:两个人都抱着对方的锁
互斥
请求与保持
不可剥夺条件
循环等待
Lock
reentrantLock
lock
trylock
unlock
IO流
-
字节流
1.1 输入流:OutputStream
1.2 输出流:InputStream
-
字符流
2.1 Reader
2.2 Writer
-
节点流
FileInputStream/FileOutputStream:用于读写文件的字节流
CharArrayReader/CharArrayWriter:用于读写字符数组的流
StringReader/StringWriter:用于读写字符串的流。
PipedInputStream/PipedOutputStream:用于线程间通信的流,管道流pipe -
处理流,增加了缓冲区的功能,从而提高了读写文件的速度
4.1 buffer
bufferInputStream
bufferOutputStream
bufferReader
bufferWriter
4.2 data,将基本数据类型和字符串数据读入或写出文件中,InputStream、OutputStream只允许读取、写入字节
DataInputStream
DataOutputStream
常用方法:
readInt():以字节形式读取一个整数。
readDouble():以字节形式读取一个双精度浮点数。
readChar():以字节形式读取一个字符。
readUTF():以字节形式读取一个 UTF 字符串。
writeInt():以字节形式写入一个整数。
writeDouble(double d) - 写一个双精度数据
writeChar(int b) - 写一个字符数据
writeUTF(String str) - 写一个Unicode字符串数据
4.3 转换流
InputStreamReader,读取字符流并将其作为字节流处理
OutputStreamWriter,将字符输出流转换为字节输出流并写入文件
4.4 Filter,用来包装一个已有的流并向其提供过滤功能的
过滤功能是指在数据流传输的过程中,通过一定的方式修改传输的数据。
FilterInputStream
FilterOutputStream
FilterReader
FilterWriter
4.5 print
PrintWriter
PrintStream
集合框架
-
Collection
Iterator< E > iterator(): 返回一个迭代器,用于遍历集合中的元素
1.1 List,列表,有序可重复
ArrayList
add
remove
contains
size
LinkedList,链表
getFirst()
getLast()
removeFirst()
addFirst()
1.2 Set,集合,无序不可重复
HashSet
TreeSet
1.3 Vector
1.4 Stack -
Map
2.1 HashMap,键值对形式,hash表=数组+链表+红黑树
2.2 TreeMap
merge()方法使用 -
Collection工具类
-
泛型,<>约束,避免类型转换之间的问题
网络编程
- IP
- 端口
- Socket编程
- TCP,三次握手,四次挥手,面向连接
- UDP,无连接,Packet
- URL
实现了客户端向服务端发送三角形三边长,服务端计算三角形面积并将结果发送回客户端。