重生之我在地球Online学JAVA day20

一、序列化与反序列化 创建一个User对象 QQ_1780197731331.png 1、JDK序列化 (1)实现 Serializable 接口

text
复制代码
public class User implements Serializable { // 必须加 private String name; private int age; }

(2)JDK序列化代码

text
复制代码
// 序列化:对象 → 字节数组 ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(user); byte[] bytes = bos.toByteArray(); // 反序列化:字节数组 → 对象 ByteArrayInputStream bis = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bis); User user = (User) ois.readObject();

JDK 缺点:代码超级繁琐、速度慢、体积巨大、必须实现 Serializable、有安全风险。 2、Kryo 序列化(现在主流) (1)不需要实现 Serializable 接口

text
复制代码
public class User { // 不用加 implements Serializable! private String name; private int age; }

(2)Kryo序列化代码

text
复制代码
// 1. 创建 Kryo Kryo kryo = new Kryo(); // 2. 序列化:对象 → 字节数组 Output output = new Output(1024); kryo.writeObject(output, user); byte[] bytes = output.toBytes(); // 3. 反序列化:字节数组 → 对象 Input input = new Input(bytes); User user = kryo.readObject(input, User.class);

Kryo 优点:代码超级简单、速度快 10 倍、体积小 5 倍、不用写任何接口、不用写 get/set 也能序列化、Spring Cloud / Redis 都用它。 二、项目目前学到的知识点 1、提示词工程的设置 2、Spring AI三大架构: (1)ChatClient 身份:总指挥 / 入口 作用:发请求、收响应、调度所有组件。 (2)ChatMemory 身份:存储器 / 硬盘 作用:专门负责存数据(聊天记录)。 (如:你的文件存储、内存存储) (3)Advisor 身份:拦截器 / 增强器 / 插件 作用:在请求前后做功能增强。 其中ChatMemoryAdvisor(把 ChatMemory 里存的历史记录读取出来,带给 AI)、MyLoggerAdvisor日志(打印请求和响应。)、ReReadingAdvisor(重读,让 AI 读两遍题目,增强AI理解能力)都属于Advisor里面的 3、Record语法

text
复制代码
record LoveReport(String title, List<String> suggestions) { }

Record = 极简版 Java 类 自动帮你生成: 构造方法 getter equals / hashCode toString 类似于

text
复制代码
public class LoveReport { private String title; private List<String> suggestions; // 构造、get、set、toString... }
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
悔忆
下载 APP