Java基础温习概要
文章目录
一、IO框架
1.1 流的概念
1.2 流的分类
1.2.1 分类:
- 节点流 (直接从指定位置读和写)
- 过滤器 (其他)
1.2.2 常用输入输出流:
java.io包中的stream类根据它们操作对象的类型是字符还是字节可分为两大类: 字符流和字节流。
- 字节流:InputStream OutputStream
- 字符流:Reader Writer
- FileInputStream和FileOutputStream
- BufferedInputStream和BufferedOutputStream
- DataInputStream和DataOutputStream
- InputStreamReader和OutputStreamWriter
- BufferedReader和BufferedWriter
二、多线程框架
2.1 进程和线程
- 进程是系统进行资源分配和调度的一个独立单位
- 线程是CPU调度和分派的基本单位
一个程序至少有一个进程,一个进程至少有一个线程
2.2 多线程实现方式
A.继承java.lang.Thread类
B.实现java.lang.Runnable接口
C.使用ExecutorService、Callable、Future实现有返回结果的多线程
三、集合框架
3.1 类集框架主要接口
- Collection
- List
- Set
- Map
- Iterator
- ListIterator
- EnumIterator
- SortSet
- SortMap
- queue
- Map Entry
3.2 Set和List
- Set子接口:无序,不允许重复。
- List子接口:有序,可以有重复元素。
3.3 Collection接口
不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。
3.4 List接口
- LinkedList
- ArrayList
- Vector(线程安全,fail-fast策略)
- Stack(继承自Vector 同上,线程安全)
3.5 Set接口
- HashSet
- TreeSet
- LinkedHashSet 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)
3.6 Queue接口(涉及到线程比较多,不细说,略)
3.7 Map接口
3.7.1 四大实现类:
- HashMap(访问速度快,线程不安全,允许一个键为null,允许多个值为null)
- HashTable(与hashMap相似,不允许键或值为null,支持线程同步,写入速度慢)
- LinkedHashMap(会保存插入顺序,遍历比hashMap慢)
- TreeMap(键排序再插入,有序)
3.7.2 四种map遍历方式
- for (String key : map.keySet())
- Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) - for (Map.Entry<String, String> entry : map.entrySet())
- for (String v : map.values())
四、TCP/IP协议
4.1 定义:
TCP/IP协议是一个协议集合,包括我们常见的HTTP协议、IP协议、TCP协议、DNS协议等,都属于TCP/IP协议。
4.2 分层:
TCP/IP协议按照层次分为以下四层:
- 应用层 FTP/DNS/HTTP
- 传输层 TCP/UDP
- 网络层 IP/IGMP/ICMP
- 数据链路层 ARP
分层的目的:
为了层级之间的功能相对独立,互不影响。
三次握手:
五、JVM原理
5.1 怎么实现的一次编译,到处运行?
java程序经过一次编译之后,将java代码编译为字节码也就是class文件,然后在不同的操作系统上依靠不同的java虚拟机进行解释,最后再转换为不同平台的机器码,最终得到执行。
5.2 JVM基本结构
5.3 内存空间
- 方法区(线程共享,存放类信息、常量、静态变量)
- java堆(线程共享,存放类的实例 OutOfMemoryError异常)
- java栈(线程私有,存放方法中的局部变量、用于存放中间状态值的操作栈 *Error异常)
- 本地方法栈(线程私有,存放本地方法)
5.4 JVM生命周期
一个Java程序会开启一个JVM进程
JVM线程分为:
A.守护线程 JVM自己使用的线程,如GC
B.普通线程 Java程序的线程 注意:只要JVM中有普通线程在执行,那么JVM就不会停止。
5.5 JVM启动过程
1.JVM装入环境和配置
2.装载JVM
3.初始化JVM,获取本地接口
4.运行java程序
5.6 程序计数器
每条线程都会有一个独立的程序计数器
5.7 GC(太复杂,略)
5.8 常量池
用于存放编译期间生成的各种字面量和符号引用。