一 io流
字节流:针对二进制文件
InputStream 抽象类 输入流的超类
子类 FlieInputStream 读取文件数据
子类 BufferedlnputStream 更好高效
OutputStream 表示输出字节流的所有超类 抽象类
子类 Flie OutputStream 直接写入文见数据
子类 Buffere OutputStream 字节流写入的高效方法
字符流:针对文本文档,容易输出乱码
Reader 抽象类 输入字符流超类
Flie Reader
Buffere Buffere 高效字节流
Writer 抽象类 字节流输出流的超类
Flie Writer 写入字符类
Buffere Writer 写入更快
二 序列化与反序列化
系列化:是指将对象的状态信息转换为可以存储或传输形式的过程
ObjectOutputStream
反序列化:读取磁盘中序列化的数据,重新恢复对象
ObjectInputStream
三 集合
集合和数组:数组长度是固定的,集合的长度是可变的,数组访问比较单一,插入、删除操作复杂
而集合访问方式比较灵活
Collection根接口
Collection下面有两个接口一个是lise一个是set
Map不与Collection有关系
Map类型参数:k-表示此映射所维护的键v-表示此映射所维护的对应的值,也叫做哈希表
特点;k不能重复,v可以重复,如果重复对应的值就会被覆盖,Map的数据
是无序的,初始容量是16,如果存到了75%开始扩容,按照2的次幂经行扩容
HashMap:底层以Entry[]数组加链表,存放数据的算法就是hash(key)%n,n是数组的长度,如果位置
相同,就以链表形式链接在后面,如果长度超过8,就会形成红黑树
Map的子集有:HashMap
lise(接口 数据有下标 有序 可重复)它的子类有:Arraglist LinkdList
Arraglist:底层使用数组,数组初始容量是10,如果不够会以1.5配的容量增长,查询很快但是
增减数据数据效率会低,是线程不安排的。
LinkdList:底层是链表结构,查询比较快然后增减较快
Set(接口 数据无下标 不可重复)它的子类有:HashSet
四 泛型
<?> 是用来和集合一起使用的,用来约束集合的元素的类型
五 进程
进程就是正在运行的程序。
高并发与并行:高并发就是指多个进程抢一个cpu。并行:多个·cpu同时处理不同的进程
多线程:随机性
随机性:是指在同一时刻,只有一个线程在进行
多线程的问题:在多个线程程序中+共享数据+多条数据操作共享数据
实现有两个方法:继承Thread 实现Runnable接口
同步与异步的区别:
同步可以理解成排队,非常有序,但是效率不高
异步可以理解成不排队,效率高,但是容易卖错
六 synchronized同步关键字
要求:要多条线程,一条无需多线程,多个线程必须使用一个锁
缺点:可能会降慢运行速度
写法:synchronized(唯一的一个类){可能出错的程序}
七 反射
获取字节码文件:
类名加class Class.forgetNema() 对象getclass()