Java
文章平均质量分 70
shangzonghai
谢谢曾经努力的自己, github: https://github.com/zonghaishang
展开
-
自己动手编译JDK
源码编译openjdk8macOS High Sierra 编译openjdk 8本次编译使用的系统是 macOS High Sierra,版本为 10.13.2。使用的 jdk 是 openjdk 8 。概述openjdk 的模块,部分使用 C/C++ 编写实现,部分使用 Java 实现。因此除了需要 C/C++ 相关编译工具外,还需要有一个 JDK (Bootstrap原创 2018-01-28 16:16:09 · 4087 阅读 · 0 评论 -
fastjson深度源码解析- 反序列化(一) - 反序列化解析介绍
概要fastjson核心功能包括序列化和反序列化,反序列化的含义是将跨语言的json字符串转换成java对象。遇到到反序列化章节,这里假定你已经阅读并理解了词法分析章节的内容。反序列化的章节比序列化复杂一些,我认为通过调试小单元代码片段的方式有助于理解,我在适当的地方会给出单元测试入口,集中精力理解具体类型的实现。现在,我们正式开始理解反序列化实现吧。 pu原创 2018-02-05 14:19:30 · 5344 阅读 · 0 评论 -
fastjson深度源码解析- 词法和语法解析(三) - 针对对象实现解析
JSON Token解析这个章节主要讨论关于对象字段相关词法解析的api。JSONLexerBase成员函数这里讲解主要挑选具有代表性的api进行讲解,同时对于极其相似的api不冗余分析,可以参考代码阅读。Int类型字段解析当反序列化java对象遇到整型int.class字段会调用该方法解析: public int scanInt(char expe原创 2018-02-04 16:27:07 · 1415 阅读 · 0 评论 -
fastjson深度源码解析- 词法和语法解析(二) - 基础类型实现解析
JSON Token解析JSONLexerBase定义并实现了json串实现解析机制的基础,在理解后面反序列化之前,我们先来看看并理解重要的属性: /** 当前token含义 */ protected int token; /** 记录当前扫描字符位置 */ protected int原创 2018-02-04 16:26:21 · 1793 阅读 · 0 评论 -
fastjson深度源码解析- 词法和语法解析(一) - token定义解析
概要词法分析是反序列化的重要基础,在其他框架druid、parsii等框架都用到了词法分析的技术,个人认为在讲反序列化之前讲词法分析更重要。写出优秀框架之前,先理解大量优秀框架的实现对未来自己写框架非常有帮助!!!好了,废话不多说,来看看fastjson中定义的token吧。JSONToken成员com.alibaba.fastjson.parser.JSONToken定义原创 2018-02-04 16:25:19 · 1836 阅读 · 1 评论 -
fastjson深度源码解析- 序列化(六) - json特定序列化实现解析
序列化回调接口实现分析特定序列化实现解析MapSerializer序列化按照代码的顺序第一个分析到Map序列化器,内部调用write: public void write(JSONSerializer serializer , Object object , Object fieldName原创 2018-02-04 16:23:58 · 3859 阅读 · 0 评论 -
fastjson深度源码解析- 序列化(五) - json内部注册序列化解析
序列化回调接口实现分析内部注册的序列化fastjson针对常用的类型已经注册了序列化实现方案: 注册的类型 序列化实例 是否支持序列化 是否支持反序列化 Boolean BooleanCodec 是 是 Character CharacterCodec 是 是 Byte IntegerCodec 是原创 2018-02-04 16:22:55 · 1320 阅读 · 0 评论 -
fastjson深度源码解析- 序列化(四) - json序列化实现解析
概要fastjson序列化主要使用入口就是在JSON.java类中,它提供非常简便和友好的api将java对象转换成json字符串。JSON成员函数 /** * 便捷序列化java对象,序列化对象可以包含任意泛型属性字段,但是不适用本身是泛型的对象。 * 默认序列化返回字符串,可以使用writeJSONString(Writer, Object,原创 2018-02-04 16:22:01 · 5718 阅读 · 0 评论 -
fastjson深度源码解析- 序列化(三) - 序列化字段属性键值对
SerializeWriter成员函数序列化字段名称 public void writeFieldName(String key, boolean checkSpecial) { if (key == null) { /** 如果字段key为null, 输出 "null:" */ write("null:");原创 2018-02-04 16:20:39 · 769 阅读 · 0 评论 -
fastjson深度源码解析- 序列化(二) - 序列化字节和字符串解析
SerializeWriter成员函数序列化16进制字节数组 public void writeHex(byte[] bytes) { /** 计算总共字符长度, 乘以2 代表一个字符要占用2字节, 3代表要添加 x 和 前后添加' */ int newcount = count + bytes.length * 2 + 3;原创 2018-02-04 16:19:16 · 2211 阅读 · 1 评论 -
fastjson深度源码解析- 序列化(一) - 序列化基础类型解析
首先感谢高铁同学同意我撰写fastjson源码解析并且给予了必要的指导,fastjson是一个高效的json与java对象序列化框架,很多公司和开源框架都从fastjson中受益。目前网上公开的fastjson源码解析太少或者缺少深度,因此我计划通过研究源码的方式并记录下来,让更多想了解底层实现的同学受益。如果在阅读过程中发现错误,欢迎与我沟通 。邮箱:jason.shang@hotm原创 2018-01-28 16:13:55 · 7778 阅读 · 1 评论 -
fastjson深度源码解析- 反序列化(二) - 内部注册反序列化解析
反序列化回调接口实现分析内部注册的反序列化fastjson针对常用的类型已经注册了反序列化实现方案,根据源代码注册com.alibaba.fastjson.parser.ParserConfig#initDeserializers可以得到列表: 注册的类型 反序列化实例 是否支持序列化 是否支持反序列化 SimpleDateFormat MiscC...原创 2018-03-15 20:40:24 · 3500 阅读 · 0 评论