点击上方“方志朋”,选择“设为星标”

回复”666“获取新整理的面试资料

作者 | 甘明

来源 | https://urlify.cn/myi6Nv

哈哈哈,我来回答这个问题!

因为我实在是对这两个库太熟悉了。

1、你写个bean,然后属性里分别有包含_(下划线开头、#开头)之类的属性,序列化为json时,出现属性丢失,那么自然你也无法反序列化回来。

这个问题,1.2.14版本以后已经改正。

2、翻阅fastjson的源码,你会发现有很多写死的代码,比如:针对spring之类的框架的各种处理,都是用classload判断是否存在这种类名。

这是什么意思呢?

意思就是如果你用spring的那种思想,自己写了个类似的功能,因为你这个项目里没有spring的那个类,那么用起来就有一堆bug;当然不仅限于这些,还有很多,比如ASM字节码织入部分,看源码的话,能发现的缺点数不胜数。

3、其解析json主要是用的String类substring这个方法,所以解析起来非常“快”,因为申请内存次数很少。

但是因为jdk1.7之前substring的实现并没有new一个新对象,在使用的时候,如果解析的json非常多,稍不注意就会出现内存泄漏(比如一个40K的json,你在对象里引用了里边的一个key,即使这个key只有2字节,也会导致这40K的json无法被垃圾回收器回收),这也是“快”带来的负面效果。

而且这还不算,在jdk1.7以上版本对string的substring方法做了改写,改成了重新new一个string的方式,于是这个“快”的优势也不存在了。

最后,fastjson就是一个代码质量较差的国产类库,用很多投机取巧的的做法去实现所谓的“快”,而失去了原本应该兼容的java特性,对json标准遵循也不严格,自然很难在国际上流行。

json从发明到现在非常流行,并不是因为json快的原因(比json快且小巧的格式和类库一大把),而是因为json和web结合的时候更易于使用,对开发人员易于理解。

很多人拿fastjson和jackson比,就像拿非智能机和iphone比待机时间,其功能性不一样,jackson的很多功能fastjson并没有实现,所以这种对比也不客观。

fastjson之所以没在国际上流行起来,最主要的原因应该是开发者的思路全放到“快”上去了,而偏离了“标准”及功能性,质量也不够好,有点“舍本逐末”的味道。

当然在目前的环境下,国产软件能踏实的心态做好开源的不多,fastjson团队能这么快的反馈并修正问题,这种精神还是值得称赞的。希望国内的技术从业者能更重视“技术的原始需求”。

热门内容:

  • 天天用事务,但是你知道MySQL事务的实现原理吗?

  • 如何优雅的设计java异常

  • Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解+完整代码)

  • 互联网公司的中年人都去哪了?

  • Github 标星 11.5K!这可能是最好的 Java 博客系统

  • 大批 IDEA 激活码到期之后的乱象...

  • 全面了解 Nginx 主要应用场景

  • 为什么微服务一定要有网关?

  • 那些在一个公司死磕了5-10年的人,最后都怎么样了?

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡

fastjson这么快,为啥老外还是热衷 jackson?相关推荐

  1. 知乎:fastjson 这么快,为啥老外还是热衷 jackson?

    知乎上有人提问:fastjson这么快,为啥老外还是热衷 jackson? 下面是甘明的回答,从各个方面分析了这个问题: 哈哈哈,我来回答这个问题! 因为我实在是对这两个库太熟悉了. 1. 你写个be ...

  2. 知乎:fastjson这么快,为啥老外还是热衷 jackson?

    作者: 甘明 来源:https://dwz.cn/ztVmUvBI 知乎上有人提问:fastjson这么快,为啥老外还是热衷 jackson? 下面是甘明的回答,从各个方面分析了这个问题: 哈哈哈,我 ...

  3. 放弃FastJson!一篇就够,Jackson的功能原来如此之牛(万字干货)

    在上篇<经过多方调研,最终还是决定禁用FastJson!>中,讲了FastJson的基本使用以及存在的不确定性问题,所以最终决定在项目中放弃使用,进而选择市面上比较主流,Spring Bo ...

  4. 计算机网络技术需要打字快,为啥有人打字非常非常快?我练了十来年还是一 – 手机爱问...

    2014-11-28 一个月的考工课 有人知道怎么练英文打字快 1.准确是不可动摇的前提 在前面的章节中我们反复说打字是一种技能,并不是所有的人都可以达到飞速击键的状态,一个打字高手也不可能在历次比赛 ...

  5. 图解 SQL 中 JOIN 的各种用法

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:CodingStar cnblogs.com/BoyceYa ...

  6. 大年夜排查bug:竟然是同事把Redis用成这鬼样子,坑了我

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:小木-_- 来源:http://suo.im/61zjWI ...

  7. 面试官:你能说说MyBatis拦截器原理吗?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:Format cnblogs.com/fangjian042 ...

  8. 代码神器:拒绝重复编码,这款IDEA插件了解一下.....

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:HeloWxl www.jianshu.com/p/e419 ...

  9. 观察者模式的Java实现及应用

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:Turwe www.jianshu.com/p/1025f6 ...

最新文章

  1. 英特尔全栈解决方案,助推人工智能在多领域的落地发展
  2. Bengio参与、LeCun点赞:图神经网络权威基准现已开源
  3. 超图数据集管理基本操作 - 隐藏系统字段和添加字段索引
  4. C语言字符串与中文编码
  5. 2021云栖大会开源引力峰会重磅发布的战略合作,Grafana服务到底是什么?
  6. CString .Format
  7. python读取usb扫码枪数据_vue扫码枪input接收数据
  8. bcb6通过https接口post数据_Python+Requests+Pytest+YAML+Allure实现接口自动化
  9. Virtual Treeview 5 0 0的安装以及入门
  10. uboot加载linux内核加载那些内容,几个地址参数及uboot加载启动内核过程的理解
  11. YUM只下载软件不安装的设定
  12. pkcs1与pkcs8格式RSA私钥互相转换
  13. dcp1608w电脑通过_dcp-1608打印机驱动程序
  14. qq四国军旗2.1 beat03 builde017记牌器开发思路(二)
  15. 广义线性模型matlab,使用广义线性模型拟合数据
  16. 《AutoCAD全套园林图纸绘制自学手册》一2.4 文件管理
  17. android6.0连接WIFI后显示“已连接,但无法访问互联网”实际可以上网
  18. U盘系统安装步骤超级简单,弄懂ghost不管是windows7win10都不难
  19. 解决学术打不开的方法
  20. Array Shrinking

热门文章

  1. MySQL:讨人喜欢的 MySQL replace into 用法(insert into 的增强版)
  2. KBMMW 的日志管理器
  3. 记录下,我们平时开发当中不得不知道的HTTP状态码
  4. UVA 10269 Adventure of Super Mario
  5. 两个asp.net发送邮件类
  6. 项目经理修炼手册 2.1.2 项目经理的基本功
  7. 从WEB SERVICE 上返回大数据量的DATASET
  8. 技术图文:Matlab VS. Numpy 常见矩阵
  9. 技术图文:如何爬取一个地区的气象数据(上)?
  10. qtdll在linux系统运行,在QT下编写带DLL的程序