4 shangzonghai

尚未进行身份认证

我要认证

谢谢曾经努力的自己, github: https://github.com/zonghaishang

等级
TA的排名 20w+

fastjson深度源码解析- 反序列化(二) - 内部注册反序列化解析

反序列化回调接口实现分析内部注册的反序列化fastjson针对常用的类型已经注册了反序列化实现方案,根据源代码注册com.alibaba.fastjson.parser.ParserConfig#initDeserializers可以得到列表: 注册的类型 反序列化实例 是否支持序列化 是否支持反序列化 SimpleDateFormat MiscC...

2018-03-15 20:40:24

fastjson深度源码解析- 反序列化(一) - 反序列化解析介绍

概要fastjson核心功能包括序列化和反序列化,反序列化的含义是将跨语言的json字符串转换成java对象。遇到到反序列化章节,这里假定你已经阅读并理解了词法分析章节的内容。反序列化的章节比序列化复杂一些,我认为通过调试小单元代码片段的方式有助于理解,我在适当的地方会给出单元测试入口,集中精力理解具体类型的实现。现在,我们正式开始理解反序列化实现吧。 pu

2018-02-05 14:19:30

fastjson深度源码解析- 词法和语法解析(三) - 针对对象实现解析

JSON Token解析这个章节主要讨论关于对象字段相关词法解析的api。JSONLexerBase成员函数这里讲解主要挑选具有代表性的api进行讲解,同时对于极其相似的api不冗余分析,可以参考代码阅读。Int类型字段解析当反序列化java对象遇到整型int.class字段会调用该方法解析: public int scanInt(char expe

2018-02-04 16:27:07

fastjson深度源码解析- 词法和语法解析(二) - 基础类型实现解析

JSON Token解析JSONLexerBase定义并实现了json串实现解析机制的基础,在理解后面反序列化之前,我们先来看看并理解重要的属性: /** 当前token含义 */ protected int token; /** 记录当前扫描字符位置 */ protected int

2018-02-04 16:26:21

fastjson深度源码解析- 词法和语法解析(一) - token定义解析

概要词法分析是反序列化的重要基础,在其他框架druid、parsii等框架都用到了词法分析的技术,个人认为在讲反序列化之前讲词法分析更重要。写出优秀框架之前,先理解大量优秀框架的实现对未来自己写框架非常有帮助!!!好了,废话不多说,来看看fastjson中定义的token吧。JSONToken成员com.alibaba.fastjson.parser.JSONToken定义

2018-02-04 16:25:19

fastjson深度源码解析- 序列化(六) - json特定序列化实现解析

序列化回调接口实现分析特定序列化实现解析MapSerializer序列化按照代码的顺序第一个分析到Map序列化器,内部调用write: public void write(JSONSerializer serializer , Object object , Object fieldName

2018-02-04 16:23:58

fastjson深度源码解析- 序列化(五) - json内部注册序列化解析

序列化回调接口实现分析内部注册的序列化fastjson针对常用的类型已经注册了序列化实现方案: 注册的类型 序列化实例 是否支持序列化 是否支持反序列化 Boolean BooleanCodec 是 是 Character CharacterCodec 是 是 Byte IntegerCodec 是

2018-02-04 16:22:55

fastjson深度源码解析- 序列化(四) - json序列化实现解析

概要fastjson序列化主要使用入口就是在JSON.java类中,它提供非常简便和友好的api将java对象转换成json字符串。JSON成员函数 /** * 便捷序列化java对象,序列化对象可以包含任意泛型属性字段,但是不适用本身是泛型的对象。 * 默认序列化返回字符串,可以使用writeJSONString(Writer, Object,

2018-02-04 16:22:01

fastjson深度源码解析- 序列化(三) - 序列化字段属性键值对

SerializeWriter成员函数序列化字段名称 public void writeFieldName(String key, boolean checkSpecial) { if (key == null) { /** 如果字段key为null, 输出 "null:" */ write("null:");

2018-02-04 16:20:39

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

自己动手编译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

fastjson深度源码解析- 序列化(一) - 序列化基础类型解析

首先感谢高铁同学同意我撰写fastjson源码解析并且给予了必要的指导,fastjson是一个高效的json与java对象序列化框架,很多公司和开源框架都从fastjson中受益。目前网上公开的fastjson源码解析太少或者缺少深度,因此我计划通过研究源码的方式并记录下来,让更多想了解底层实现的同学受益。如果在阅读过程中发现错误,欢迎与我沟通 。邮箱:jason.shang@hotm

2018-01-28 16:13:55
勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!