没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
一行log日志,引发了P1的线上事故
前 段 时 间 同 事 新 增 了 一 个 特 别 简 单 的 功 能 , 晚 上 上 线 前 r e v i e w 代
码 时 想 到 公 司 拼 搏 进 取 的 价 值 观 临 时 他 加 一 行 l o g
日 志 , 觉 得 就 一 行 简 单 的 日 志 基 本 上 没 啥 问 题 , 结 果 刚 上 完 线 后
一 堆 报 警 , 赶 紧 回 滚 了 代 码 , 找 到 问 题 删 除 了 添 加 日 志 的 代 码 ,
重 新 上 线 完 毕 。
情景还原
❝ 定 义 了 一 个 C o u n t r y D T O ❞
public class CountryDTO {
private String country;
public void setCountry(String country) {
this.country = country;
}
public String getCountry() {
return this.country;
}
public Boolean isChinaName() {
return this.country.equals("中国");
}
}
❝ 定 义 测 试 类 F a s t J o n T e s t ❞
public class FastJonTest {
@Test
public void testSerialize() {
CountryDTO countryDTO = new CountryDTO();
String str = JSON.toJSONString(countryDTO);
System.out.println(str);
}
}
运 行 时 报 空 指 针 错 误 :
空 指 针
通 过 报 错 信 息 可 以 看 出 来 是 序 列 化 的 过 程 中 执 行 了 i s C h i n a N a m e
( ) 方 法 , 这 时 候 t h i s . c o u n t r y 变 量 为 空 , 那 么 问 题 来 了 :
序列化为什么会执行isChinaName()呢?
引申一下,序列化过程中会执行那些方法呢?
源码分析
通 过 d e b u g 观 察 调 用 链 路 的 堆 栈 信 息
图片
图片
调 用 链 中 的 A S M S e r i a l i z e r _ 1 _ C o u n t r y D T O . w r i t e 是 F a s t J s
o n 使 用 a s m 技 术 动 态 生 成 了 一 个 类 A S M S e r i a l i z e r _ 1 _ C o u n t r y
D T O 。
❝ a s m 技 术 其 中 一 项 使 用 场 景 就 是 通 过 到 动 态 生 成 类 用 来 代 替 j a v
a 反 射 , 从 而 避 免 重 复 执 行 时 的 反 射 开 销 ❞
JavaBeanSerizlier序列化原理
通 过 下 图 看 出 序 列 化 的 过 程 中 , 主 要 是 调 用 J a v a B e a n S e r i a l i z
e r 类 的 w r i t e ( ) 方 法 。
剩余10页未读,继续阅读
资源评论
白话机器学习
- 粉丝: 8978
- 资源: 7681
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功