自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

商宗海的博客

写出最优秀的代码

  • 博客(12)
  • 资源 (2)
  • 收藏
  • 关注

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

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

2018-03-15 20:40:24 3422

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

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

2018-02-05 14:19:30 5272

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

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

2018-02-04 16:27:07 1375

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

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

2018-02-04 16:26:21 1748

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

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

2018-02-04 16:25:19 1783 1

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

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

2018-02-04 16:23:58 3775

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

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

2018-02-04 16:22:55 1280

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

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

2018-02-04 16:22:01 5641

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

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

2018-02-04 16:20:39 722

原创 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 2120 1

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

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

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

2018-01-28 16:13:55 7709 1

Kubernetes权威指南:从Docker到Kubernetes实践全接触(第2版) 完整版.pdf

Kubernetes权威指南:从Docker到Kubernetes实践全接触(第2版) 完整版.pdf 免责声明: 1. 仅供学习用途,下载后自觉24小时内删除

2018-04-19

Java虚拟机规范 Java SE 8版 _中文 高清 带索引书签目录 (美)蒂姆·林霍尔姆

高清中文java虚拟机规范,详细介绍了字节码指令、class文件结构的明细和规则

2018-03-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除