复习
- 线程的状态:创建、就绪、运行/活跃、阻塞、消亡
- 线程的创建方式:主动创建、系统创建、关联唤醒
- 线程被销毁的方式:"寿终正寝"、"意外死亡"、"他杀"
- 线程的阻塞:被动阻塞、主动阻塞(sleep和wait)
- sleep和wait的区别
- 线程的优先级:1~10
- 守护线程:一个线程要么是守护线程,要么是被守护线程
- 网络七层分层:物理层、数据链路层、网络层、传输层、会话层、应用层、表示层
- IP地址、端口、域名、DNS解析服务器
- InetSocketAddress:表示IP地址+端口号的类
- UDP:基于网络进行数据传输的流,传输快但是不可靠,适合于要求速度但是不要求靠性的场景
API
一、网络编程
- TCP:基于网络进行数据传输的流。TCP在建立连接之前,会进行"三次握手",确认之后,TCP才会去建立流来传输数据,因此TCP传输速度相对较慢,但是可靠。适合于要求可靠性但是不要求速度的场景。例如文件传输
- 客户端
- 构建客户端套接字对象
- 发起连接
- 获取输出流,写出数据
- 如果服务器有返回数据,那么可以获取输入流来读取
- 关流
- 服务器端
- 构建服务器端套接字对象
- 绑定监听的端口
- 接收连接
- 获取输入流,读取数据
- 如果需要给客户端返回数据,那么可以获取输出流来写出
- 关流
二、Properties
- Properties是Java中提供的一种可以持久化(内容可以以文件形式落地到磁盘上)的映射,继承了Hashtable
- Properties的键值对类型只能是String
- Properties在进行落地的时候,必须存储到properties文件中
- properties文件默认编码是ASCII(阿斯克编码) - 只能存储英文
- 实际开发过程中,会将properties文件作为配置文件来使用
三、序列化/反序列化
- 将对象按照指定规则进行转化,这个过程称之为序列化;将转化之后的数据按照规则还原成对象的过程称之为反序列化
- 在Java中,要求被序列化的对象对应的类必须实现Serializable接口,用于标记这个类产生的对象可以被序列化
- 被transient/static关键字修饰的属性不会被序列化