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栈(线程私有,存放方法中的局部变量、用于存放中间状态值的操作栈 StackOverflowError异常)
  • 本地方法栈(线程私有,存放本地方法)

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 常量池

用于存放编译期间生成的各种字面量和符号引用。

猜你喜欢

转载自blog.csdn.net/s15810813994/article/details/83593807