2.1、对象流:操作对象的
ObjectInputStream
readObject()--->Object--->子类对象即可。
ObjectOutputStream
writeObject(Object obj)
java.io.Serializable接口:类要想具有序列化的功能,那么需要实现java.io.Serializable接口的类启用。 如果没有实现该接口,那么类的实例不会具有序列化和反序列化的功能。
序列化和反序列化:
序列化:将对象,转为一系列的二进制编码。p1--->0101010101011....
反序列化:将二进制数值,再转为对象的过程,就叫反序列化。0101010101011....--->p1
serialVersionUID,每一个实现java.io.Serializable的类,表示能够被序列化和反序列化。都需要提供一个serialVersionUID序列化的版本号。如果代码中没有显示的提供,那么程序中自动生成(类中的结构:属性,方法)。序列化的对象的serialVersionUID和反序列化回来的时候serialVersionUID要对应上,否则异常:java.io.InvalidClassException
在每个类实现java.io.Serializable接口的时候,提供一个固定的serialVersionUID
构造方法:
ObjectOutputStream(OutputStream out)
创建一个写入指定的OutputStream的ObjectOutputStream。
ObjectInputStream(InputStream in)
创建从指定的InputStream读取的ObjectInputStream。
//1.操作1
step1:先构建了Person类,创建p1对象
step2:让Person类实现Serializable接口,"贴标签"
step3:ObjectOutputStream写对象出去到person.txt中
序列化
step4:ObjectInputStream将对象读回来:Object-->p1
反序列化
//2.操作2
step1:先构建了Person类,创建p1对象
step2:让Person类实现Serializable接口,"贴标签"
step3:ObjectOutputStream写对象出去到person.txt中
序列化
插入一步:修改Person类
属性封装,提供get和set方法。。。
step4:ObjectInputStream将对象读回来:Object-->p1
反序列化
序列化的注意点:对象
1、对象的属性能够被序列化,static的属性不能被序列化。
2、transient修饰符,使用该修饰符修饰的属性,不会被序列化的。
流:总结:
继承结构:
单位,流向——>具体的操作:read(),writer()
节点流,处理流——>构造方法
4个基类流:InputStream,OutputStream,Reader,Writer
文件流:FileInputStream,FileOutputStream,FileReader,FileWriter(重点掌握)
转换流:InputStreamReader,OutputStreamWriter
缓存流:BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter(重点掌握)
对象流:ObjectInputStream,ObjectOutputStream,序列化。。
2.2、计算机网络
计算机网络:就是把分布在不同区域的计算机与专门的设备使用通信线路相互连接,形成一个规模大,功能强的网络系统,从而实现计算机之间的信息传递,共享数据,软件资源等等。。
网络编程:在同一个网络中不同机器之间的通信。
2.3、网络参考模型
OSI网络参考模型:7层
TCP/IP模型
2.3、通信协议
TCP协议和UDP协议
TCP协议:重点掌握——>好比打电话:
1、面向连接,数据传递的时候很安全。
三次握手,四次挥手。
2、因为面向连接,所以传递的效率较低。
3、面向连接,数据安全的。可以传递大量的数据。
4、服务端和客户端
服务端:提供服务的
客户端:来访问服务端,获取数据
客户端登录,数据下载,文件传输。。
UDP协议:了解——>好比写信
1、面向无连接,数据传的时候不是很安全。
2、因为面向无连接,效率很高。
3、UDP
4、没有客户端和服务端的概念。叫做发送方,另一个叫接收方。
2.4、网络编程的三要素
2.4.1、协议
理解为是规则,网络上的双方,都要共同遵守的规定。
TCP/UDP
2.4.2、IP地址
在网络中的主机的唯一标识。
IP地址的分类:
2.4.3、port端口
网络程序的唯一标识。int类型的整数。0-65535。
同一台电脑上一个端口只能被一个网络程序所占用。
A程序:占用端口9527。启动后,正在使用9527端口,那么其他的程序如果还使用9527端口,就会报错,端口已经被占用。
2.5、网络编程相关的类:
2.5.1、InetAddress
Java中用于描述IP的类
2.5.2、Socket
基于TCP协议的客户端的表示。
2.5.3、ServerSocket
基于TCP协议的服务端的表示。
2.6、TCP编程的流程
服务端:ip地址:192.168.1.100,port:9527
step1:创建ServerSocket,一个服务端的程序:
step2:等待客户端申请链接,accept()接收链接。——>Socket
step3:创建流:InputStream,OutputStream
step4:关闭链接,断开资源
客户端:ip地址:192.168.1.150,port:20000
step1:创建Socket,客户端的程序
申请链接服务器:(服务器的ip地址和port)
step2:创建流:InputStream,OutputStream
step3:关闭链接,断开资源