9 YourBatman

已隐藏 研发工程师

也许当我老了,也一样写代码。不为别的,只为爱好

等级
TA的排名 5k+

[享学Jackson] 十六、Jackson在Spring MVC中的使用之Date、JSR310时间类型的处理

由于我们很少(并不代表没有)单独去使用Jackson库,所以从此篇文章开始聚焦于更具有实践意义的场景:Jackson在Spring生态下的运用。虽然现在`Spring Boot`非常流行,但我并不会一上来就向大家介绍更加工程化的它。因为`Spring Boot`仍还是构建在Spring之上的应用,所以如果仅仅是告诉大家如何使用似乎违背了我做此专栏的初心。所以我就遵循我的一贯习惯:**从更为底层出发,深入了解然后釜底抽薪,剩下来的便可无师自通**。强调说明:**本文的讲解基于的是`Spring MVC

2020-01-25 23:18:59

[享学Jackson] 十五、第三方模块Module的深度实践:JavaTimeModule、JSR310Module、ParameterNamesModule、Jdk8Module

本专栏的第一篇文章就概括性的介绍了Jackson繁荣的生态:除了三大核心模块之外还存在非常多的第三方模块来为`Jackson`附加提供强大的能力。有官方主导维护的模块,当然也有第三方社区自主维护的Module。上篇文章讲解了Jackson对模块的管理和运行原理,那么本文将站在实用的角度,选取三个最流行、**工作中100%会用到**的第三方模块作为示例进行讲解,这样既能让小伙伴们加深对Jackson模块机制的理解,又能在实际工作中得以应用,可谓一箭双雕。

2020-01-24 16:17:28

[享学Jackson] 十四、深入理解Jackson的Module模块化设计及原理分析

模块化定义:解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性。它一般有如下特点:- 可被管理- 可插拔- 工作模式具有一定独立性、隔离性- **可以有依赖模块**模块化,对于我们程序员来说是一个既熟悉又陌生的概念,比如`Java 9`最大的一个Feature便是模块化。模块简单理解它就是一个功能合集,**是一种封装思想的体现**。我们知道`Jackson`它之所有流行且经久不衰是因为它具有高扩展性,能够与时俱进(比如快速支持到JSR310时间的序列化/

2020-01-21 17:48:22

[享学Jackson] 十三、jackson-annotation注解模块全解析及Jackson注解大全

`Jackson`之所以流行得益于它强大的模块化设计,以及它提供的强大能力。而支撑它强大能力的很大一部分原因是得益于它完善的注解模块:**它提供了非常多的注解,可以让你在运行期“个性化控制”你的序列化/反序列化行为,从而具有非常高的弹性**。前面花了好几篇文章大篇幅介绍`Jackson`的`Feature`特征以及原理,如果说Feature是全局设置,那么注解就是个性化配置,因此相比较起来面向应用、面向开发者的注解, 理解它的含义以及使用方式显得更加重要,是**程序员必备的基础知识之一**。

2020-01-20 21:31:13

[享学Jackson] 十二、jackson-databind反序列化之ObjectMapper反序列化原理、JsonDeserializer反序列化器全解析

前面两篇文章花大篇幅介绍了序列化、序列化器以及`ObjectMapper`序列化的原理,相信认真品读过的你对序列化/反序列化方面已经有比较全面的认识了。本篇文章作为前两篇的**姊妹篇**,将介绍反序列化、`JsonDeserializer`反序列化器的相关内容。该文不会像前两篇讲述得那么详细,因此建议你阅读此文之前先有前两篇文章相关知识的积累。

2020-01-19 20:31:23

[享学Jackson] 十一、jackson-databind之JsonSerializer序列化器全解析

序列化 (Serialization):将对象的状态信息转换为可以存储或传输的形式的过程。该概念可以理解为如下两个两点:- 在序列化期间,对象将其当前状态写入到**临时或持久性存储区**(内存or硬盘)- 以后,可以通过从存储区中读取或反序列化对象的状态,**重新创建该对象**序列化使其他代码可以查看或修改,那些不序列化便无法访问的对象实例数据。通常,对象实例的**所有字段都会被序列化**,这意味着数据会被表示为实例的序列化数据。这样,能够解释该格式的代码有可能能够确定这些数据的值,而不

2020-01-14 17:41:23

[享学Jackson] 十、jackson-databind序列化之ObjectMapper序列化原理、序列化器匹配原理

序列化/反序列作高层API的核心概念,重要程度可见一斑。但是关于序列化/反序列化是什么,大多数小伙伴其实停留在概念阶段,并不知其内幕。> 说明:本文讨论的序列化/反序列化自然是是关注JSON方面的学习本专栏定位,就是要把自己放在专业人士的位置,要能实现Jackson的高级定制。而若想具备此能力,自然需要知道很多技术细节和其内部的实现步骤/原理。

2020-01-13 21:41:47

[享学Jackson] 九、jackson-databind数据绑定序列化/反序列化配置之SerializationConfig、DeserializationConfig

说到JSON库,必然离不开序列化和反序列的概念。上篇文章已经介绍了解了数据绑定的基础配置,本篇将继续讲解更加偏向于实战的:序列化/反序列化配置之`SerializationConfig、DeserializationConfig`。小提示:因为文章内容的讲述是按顺序的,因此建议看本文之前确保已经阅读过了上篇文章的内容。

2020-01-05 23:05:21

[享学Jackson] 八、jackson-databind数据绑定基础配置之BaseSettings、MapperConfig、MapperConfigBase

通过前几篇文章的描述,我们了解到了Jackson它在各个层次上的Feature特征的含义,甚至实现的原理。从本文开始,将从实战出发,去看看如何运用到这么多特征配置,并且如何定制和配置他们。Jackson的底层流式API逻辑上相对简单,并且就刚刚在上篇文章以`JsonFactory`为例详细介绍了它的原理以及使用,所以本文的重点将放在更高层的API,也就是`jackson-databind`模块下的配置讲解,也就是我们接触最多的两个概念:序列化、反序列化。

2020-01-05 16:48:45

[享学Jackson] 七、Jackson使用bit位运算来开启/禁用Feature的原理解析

前面几篇文章介绍了Jackson库针对不同层次提供的多个Feature特征,这些特征能让使用者可以在不需要理解内部实现的情况下,控制/参与到JSON内部读/写规则。Feature是Jackson库非常重要的一个概念,**它是使用者和JSON续写规则打交道的窗户** 。作为单纯的使用者来说,其实只需知道各个特征值什么含义了便可。但经过反馈和我的调研,由于经常打交道,不少朋友还是想稍微深入了解下这块的实现原理的,因此本文就花篇幅专门介绍这块的知识点

2020-01-04 21:50:34

聊聊Java中的位运算:与、或、非、异或、左移、右移、无符号右移【小家Java】

提及位运算,相信对绝大多数Java程序员是感觉既陌生又熟悉的。陌生是因为你大概率没有去真实的使用过,熟悉是有时在看些开源框架(或者JDK源码)时会时长看到有使用的地方(譬如Jackson/Fastjson这些JSON库都大量的使用了位运算)。当然,不能“流行”起来是有原因的:不好理解,不符合人类的思维,阅读性差...位运算它在low-level的语言里使用得比较多,但是对于Java这种高级语言它就很少被提及了。虽然我们使用得很少但Java也是支持的,毕竟很多时候使用位运算才是**最佳实践**。位运算在

2020-01-04 02:18:08

[享学Jackson] 六、控制Jackson行为的特征们之MapperFeature、SerializationFeature、DeserializationFeature

Jackson工具库之所以流行,绝不是因为它有很高的性能表现,而是它拥有更好用的API:高层API。正所谓能够流行开来的技术一定是不太需要动脑子的,否则它不可能流行起来。在Jackson里,`ObjectMapper/JsonMapper`就承担了这样的角色,它甚至被称为和用户打交道的"唯一"入口。序列化/反序列化,包括数据绑定/映射是一套比较复杂的操作,而Jackson为了方便使用者的定制和使用,分别提供了若干Feature特征给使用者直接定制,而不用过多的去了解其内部细节。本文就从这三个方面,分别介

2020-01-02 22:57:52

YourBatman感悟到的2019关键词:裁员、技术驱动、分享精神、能力边界

2019年注定会在历史的长河里被记下来,因为不仅对互联网而且对各行各业来说对它都是极不平静的一年,有喜事如京张高铁的顺利通行、北京大兴国际机场的落成,当然更多的是那些不平坦:中国男篮家门口折戟世锦赛、经济形势下滑、暴力裁员…作为一个遵纪守法的四有好公民,我不敢更没能力去对如上一些宏观现象评头品足,而自己仅作为一个折转多次最终进入了 IT行业 并且作为从业4年有加的“老兵”,跟行业内人士分享一下这一年 我本人 感悟较深的几个关键字,顺便尝试解读解读。

2019-12-31 16:48:44

[享学Jackson] 五、控制Jackson行为的特征们之JsonWriteFeature、JsonReadFeature

上篇文章介绍了`JsonGenerator.Feature、JsonParser.Feature`这两个内部类的Feature特性,可以发现自`2.10`版本后,大部分特性都被标记为了`@Deprecated`过期了,可以思考框架的设计者出于什么原因为何需要这么做呢?本文将去了解她们的替代品:`JsonWriteFeature和JsonReadFeature`,它俩都实现了接口`FormatFeature`,这个接口规定了一些属性/行为,这为Jackson**规范化特性的处理**起到了很大的积极作用,这

2019-12-30 17:48:21

[享学Jackson] 四、控制Jackson行为的特征们之JsonFactory.Feature、JsonGenerator.Feature、JsonParser.Feature

Jackson在各个模块、功能点都提供了大量的钩子,让可以通过配置Feature的方式就能改变读/写的行为,因此深入了解Jackson的xxxFeature是深入理解Jackson的必备前置知识。

2019-12-29 21:47:47

[享学Jackson] 三、jackson-databind之ObjectMapper与数据绑定、树模型

`jackson-databind`包含用于Jackson数据处理器的通用**数据绑定功能**和**树模型**。它构建在Streaming API(流解析器/生成器)之上,并使用Jackson注解进行配置。它就是Jackson提供的高层API,是开发者使用得最多的方式,因此重要程度可见一斑。虽然Jackson最初的用例是JSON数据绑定,但现在它**也可以用于其他数据格式**,只要存在解析器和生成器实现即可。但需要注意的是:类的命名在很多地方仍旧使用了“JSON”这个词,尽管它与JSON格式没有实际的硬

2019-12-29 16:12:36

[享学Jackson] 二、jackson-core之流式API与JsonFactory、JsonGenerator、JsonParser

`jackson-core`是三大核心模块之一,并且它是核心中的核心,它提供了对JSON数据的**完整支持**。此模块提供了最具底层的Streaming JSON解析器/生成器,这组流式API属于Low-Level API,具有非常显著的特点:- 开销小,损耗小,性能极高- 因为是Low-Level API,所以灵活度极高- 又因为是Low-Level API,所以易错性高,可读性差`jackson-core`模块提供了两种处理JSON的方式(整个Jackson一共3种):1. 流式API:读

2019-12-29 01:22:13

[享学Jackson] 一、初识Jackson -- 世界上最好的JSON库

Jackson是一个简单的、功能强大的、基于Java的**应用库**。它可以很方便完成**Java对象**和**json对象(xml文档or其它格式)**进行互转。Jackson社区相对比较活跃,更新速度也比较快。Jackson库有如下几大特性:- 高性能,稳定:低内存占用,对大/小JSON串,大/小对象的解析表现均很优秀- 流行度高:是很多流行框架的默认实现- 容易使用:提供高层次的API,极大简化了日常使用- 无需自己手动创建映射:内置了绝大部分序列化时和Java类型的映射关系- 干净的JSO

2019-12-27 23:32:24

IntelliJ IDEA 2019.3正式发布,给我们带来哪些新特性?

**千呼万唤始出来**。自从JetBrains在今年7月24日发布了IDEA 2019.2版本后,从9月份开始我便一直在关注这个版本正式版的发布。JetBrains公司9月中旬对外公布下一个主要版本 2019.3的Roadmap,而且马上就发布了第一个早期访问版本( EAP 版本),因此我一直对它保持着关注。

2019-11-29 15:49:17

web九大组件之---RequestMappingHandlerAdapter详尽解析【享学Spring MVC】

每篇一句在没有充分的知识作为前提的情况下,即使行了万里路,也不过是邮差而已。前言上篇文章介绍了HandlerAdapter适配器的三种实现方式,分别实现了对"非主流"的三种控制器(Controller/HttpRequestHandler/Servlet)的适配,由于此三种控制器本身非常源生和功能简单,自然对应的适配器也非常好理解。虽然说Spring MVC一共兼具支持了4中控制器方式...

2019-10-24 16:32:54

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    博客专家完成年度认证,即可获得
  • 新人勋章
    新人勋章
    用户发布第一条Blink获赞超过3个即可获得
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力计划专属勋章
    原力计划专属勋章
    参与原力计划活动,成功进入英雄榜即可获得