持久化Persistence
认知
计算机结构
CPU - Memory - Disk
Disk
持久化存储数据
关机之后 依然在
Memory
存储数据
程序运行时,任何一个变量都会开在内存里
关机之后,就没了
CPU
用来计算
1 + 2 -> 3
持久化
关了还能用
文件
网络 发到服务器 服务器存储到文件里
文件操作
文件基本操作
File
文件读写
Apache Common IO
文件指针
有高级 API 可以直接修改文件内的某个字节区间内的值
序列化Serialization
问题
对象在内存里 是网状结构
文件 是1维的二进制
网络 是1维的二进制流
序列化
拆毛衣:对象 -> 二进制
Serialization / Serialize / Encode
反序列化
织毛衣:二进制 -> 对象
Deserialization / deserialize / decode
对象到二进制的序列化
分析
优点:序列化之后的文件大小比较小
缺点:可读性非常低
字符串作为中介的序列化
想法
对象 -> 字符串 -> 二进制 对象 <- 字符串 <- 二进制
分析
字符串 -> 二进制
有现成的解决方案
会有字符集的问题
对象 -> 字符串
可以写函数去拼接字符串
案例
对象结构
List<Message> Message + text: String + id: long
字符串转移
message1.id | message1.text message2.id | message2.text message3.id | message3.text