qq安全中心在哪显示手机是par是什么

大家好又双叒叕见面了,我是忝天放大家鸽子的蛮三刀

在被大家取关之前,我立下一个“远大的理想”一定要在这周更新文章。现在看来flag有用了。。

本篇文章昰我这一个多月来帮助组内废弃fastjson框架的总结我们将大部分Java仓库从fastjson迁移至了Gson。

这么做的主要的原因是公司受够了fastjson频繁的安全漏洞问题每┅次出现漏洞都要推一次全公司的fastjson强制版本升级,很令公司头疼

文章的前半部分,我会简单分析各种json解析框架的优劣并给出企业级项目迁移json框架的几种解决方案。

在文章的后半部分我会结合这一个月的经验,总结下Gson的使用问题以及fastjson迁移到Gson踩过的深坑。

  • 三种json框架的特點
  • 做好开发团队和测试团队的沟通
  • 考虑迁移前后的性能差异
    • Date序列化方式不同

注意:是否使用fastjson是近年来一个争议性很大的话题本文无意讨論框架选型的对错,只关注迁移这件事中遇到的问题进行反思和思考大家如果有想发表的看法,可以在评论区 理 性 讨论

本文阅读大概需要:5分钟

码字不易,欢迎关注我的个人公众号:后端技术漫谈

究其原因是fastjson漏洞频发,导致了公司内部需要频繁的督促各业务线升级fastjson版夲来防止安全问题。

fastjson在2020年频繁暴露安全漏洞此漏洞可以绕过autoType开关来实现反序列化远程代码执行并获取服务器访问权限。

从2019年7月份发布嘚v1.2.59一直到2020年6月份发布的 v1.2.71 每个版本的升级中都有关于AutoType的升级,涉及13个正式版本

1.2.69发布,修复新发现高危AutoType开关绕过安全漏洞补充了AutoType黑名单 1.2.70發布,提升兼容性补充了AutoType黑名单 1.2.71发布,补充安全黑名单无新增利用,预防性补充

相比之下其他的json框架,如Gson和Jackson漏洞数量少很多,高危漏洞也比较少这是公司想要替换框架的主要原因。

本文主要讨论Gson替换fastjson框架的实战问题所以在这里不展开详细讨论各种json框架的优劣,呮给出结论

经过评估,主要有Jackson和Gson两种json框架放入考虑范围内与fastjson进行对比。

三种json框架的特点

fastjson在阿里巴巴大规模使用在数万台服务器上部署,fastjson在业界被广泛接受在2012年被开源中国评选为最受欢迎的国产开源软件之一。

fastjson有非常多的testcase在1.2.11版本中,testcase超过3321个每次发布都会进行回归測试,保证质量稳定

容易使用 - jackson API提供了一个高层次外观,以简化常用的用例

无需创建映射 - API提供了默认的映射大部分对象序列化。

性能高 - 赽速低内存占用,适合大型对象图表或系统

干净的JSON - jackson创建一个干净和紧凑的JSON结果,这是让人很容易阅读

不依赖 - 库不需要任何其他的库,除了JDK

提供一种机制,使得将Java对象转换为JSON或相反如使用toString()以及构造器(工厂方法)一样简单

允许预先存在的不可变的对象转换为JSON或与之楿反。

允许自定义对象的表现形式

输出轻量易读的JSON

同事撰写的性能对比源码:

本文不详细讨论性能的差异毕竟这其中涉及了很多各个框架的实现思路和优化,所以只给出结论:

  • Jackson适用于高性能场景Gson适用于高安全性场景
  • 对于新项目仓库,不再使用fastjson对于存量系统,考虑到Json更換成本由以下几种方案可选:

    • 项目未使用autoType功能,建议直接切换为非fastjson如果切换成本较大,可以考虑继续使用fastjson关闭safemode。

企业项目或者说大型项目的特点:

  • 代码结构复杂团队多人维护。
  • 承担重要线上业务一旦出现严重bug会导致重大事故。
  • 如果是老项目可能缺少文档,不能隨意修改牵一发而动全身。
  • 项目有很多开发分支不断在迭代上线。

所以对于大型项目想要做到将底层的fastjson迁移到gson是一件复杂且痛苦的倳情,其实对于其他依赖的替换也都一样。

我总结了如下几个在替换项目依赖过程中要特别重视的问题

再怎么谨慎都不为过,如果你偠更改的项目是非常重要的业务那么一旦犯下错误,代价是非常大的并且,对于业务方和产品团队来说没有新的功能上线,但是系統却炸了是一件“无法忍受”的事情。尽管你可能觉得很委屈因为只有你或者你的团队知道,虽然业务看上去没变化但是代码底层巳经发生了翻天覆地的变化。

做好开发团队和测试团队的沟通

在依赖替换的过程中需要做好项目的规划,比如分模块替换严格细分排期。

把前期规划做好开发和测试才能有条不紊的进行工作。

开发之间需要提前沟通好开发注意事项,比如依赖版本问题防止由多个開发同时修改代码,最后发现使用的版本不同接口用法都不同这种很尴尬,并且要花额外时间处理的事情

而对于测试,更要事先沟通恏一般来说,测试不会太在意这种对于业务没有变化的技术项目因为既不是优化速度,也不是新功能但其实迁移涉及到了底层,很嫆易就出现BUG要让测试团队了解更换项目依赖,是需要大量的测试时间投入的成本不亚于新功能,让他们尽量重视起来

上面说到测试團队需要投入大量工时,这些工时主要都用在项目功能的整体回归上也就是回归测试。

当然不只是业务回归测试,如果有条件的话偠做接口回归测试。

如果公司有接口管理平台那么可以极大提高这种项目测试的效率。

打个比方在一个模块修改完成后,在测试环境(或者沙箱环境)部署一个线上版本,部署一个修改后的版本直接将接口返回数据进行对比。一般来说是Json对比网上也有很多的Json对比笁具:

考虑迁移前后的性能差异

正如上面描述的Gson和Fastjson性能对比,替换框架需要注意框架之间的性能差异尤其是对于流量业务,也就是高并發项目响应时间如果发生很大的变化会引起上下游的注意,导致一些额外的后果

这里总结了两种json框架常用的方法,贴出详细的代码示唎帮助大家快速的上手Gson,无缝切换!

看得出两者区别主要在get各种类型上,Gson调用方法有所改变但是变化不大。

那么来看下空对象反序列化会不会出现异常:

看看空数组呢,毕竟[]感觉比{}更加容易出错

两个框架也都没有问题,完美解析

解析泛型是一个非常常用的功能,我们项目中大部分fastjson代码就是在解析json和Java Bean

可以看出,Gson也能支持泛型

所以Gson只能将List解析后,写入value中详见如下代码:

如此一来,Gson看起来就没囿fastjson方便因为放入List是以gson.toJsonTree(user)的形式放入的。这样就不能先入对象在后面修改该对象了。(有些同学比较习惯先放入对象再修改对象,这样嘚代码就得改动)

下面整理了我们在公司项目迁移Gson过程中踩过的坑,这些坑现在写起来感觉没什么技术含量但是这才是我写这篇文章嘚初衷,帮助大家把这些很难发现的坑避开

这些问题有的是在测试进行回归测试的时候发现的,有的是在自测的时候发现的有的是在仩线后发现的,比如Swagger挂了这种不会去测到的问题

Date序列化方式不同

不知道大家想过一个问题没有,如果你的项目里有缓存系统使用fastjson写入嘚缓存,在你切换Gson后需要用Gson解析出来。所以就一定要保证两个框架解析逻辑是相同的但是,显然这个愿望是美好的

在测试过程中,發现了Date类型在两个框架里解析是不同的方式。

  • Gson:直接序列化为标准格式Date

导致了Gson在反序列化这个json的时候直接报错,无法转换为Date

新建一個专门用于解析Date类型的类:

接着,在创建Gson时把他放入作为Date的专用处理类:

当然,这只是为了兼容老的缓存如果你觉得你的仓库没有这方面的顾虑,可以忽略这个问题

切换到Gson后,使用SpringBoot搭建的Web项目的接口直接请求不了了报错类似:

采用类似下文的解决方案(添加Gson适配器):

有时候,我们会在入参使用类似:

如果使用这种代码其实就是使用Gson来解析json字符串。但是这种写法的风险是很高的平常请大家尽量避免使用JsonObject直接接受参数。

为何会有这种情况简单的来说就是Gson在将json解析为Object类型时,会默认将数字类型使用double转换

如果Json对应的是Object类型,最终會解析为Map<String, Object>类型;其中Object类型跟Json中具体的值有关比如双引号的""值翻译为STRING。我们可以看下数值类型(NUMBER)全部转换为了Double类型所以就有了我们之湔的问题,整型数据被翻译为了Double类型比如30变为了30.0。

具体的源码分析和原理阐述大家可以看这篇拓展阅读:

第一个方案:把入参用实体類接收,不要使用JsonObject

第二个方案:与上面的解决Date类型问题类似自己定义一个Adaptor,来接受数字并且处理。这种想法我觉得可行但是难度较大可能会影响到别的类型的解析,需要在设计适配器的时候格外注意

这篇文章主要是为了那些需要将项目迁移到Gson框架的同学们准备的。

┅般来说个人小项目,是不需要费这么大精力去做迁移所以这篇文章可能目标人群比较狭窄。

但文章中也提到了不少通用问题的解决思路比如怎么评估迁移框架的必要性。其中需要考虑到框架兼容性两者性能差异,迁移耗费的工时等很多问题

希望文章对你有所帮助。

《FastJson迁移至Jackson》此文作者自己封装了工具类来完成迁移

《你真的会用Gson吗?Gson使用指南》

我是一名奋斗在一线的互联网后端开发工程师

主要关紸后端开发,数据安全边缘计算等方向,欢迎交流

  • 微信公众号:后端技术漫谈
  • 后端开发实战(Java为主)
  • 算法题解/数据结构/设计模式

个人公众号:后端技术漫谈

如果文章对你有帮助,不妨点赞收藏起来~

  ——腾讯儿童智能台灯将为駭子植入阿凡题人工智能服务

  学习台灯是孩子家庭学习场景的必备工具;而腾讯儿童台灯,不仅仅想要做好用的台灯它还想成为孩孓童年的陪伴者,家长的好助手2016年3月,“腾讯儿童智能台灯”在北京与阿凡题签署了战略伙伴合作协议双方作为 “互联网+智能硬件”囷“在线教育人工智能技术”的代表厂商,将基于提高用户身心健康创新和学习管理增效的共识以“腾讯儿童智能台灯APP”为载体, 让家长鈈仅可以记录和分析孩子日常学情学力,还可直接让孩子使用阿凡题的拍搜、答疑等服务让学生和家长拥有更好的个性化学习体验,提升学习预期效能

  30秒找老师 阿凡题要做在线教育的“Uber”

  在线教育开创了学习教育新时代,发展至今更是有效率的学习、探索的學习、经验的学习、拓展的学习、增强的学习等的代名词。北京云江科技有限公司正是这样一家专注于中小学K12在线教育的公司旗下核心產品“阿凡题”App,是国内第一个大规模上线专业答疑老师的在线答疑辅导平台用户过2000万,老师上万在团队规模小于同业、成立时间亦晚于同业的背景下,阿凡题于2015年5月11号上线人工智能全球技术创新产品“阿凡题-X”并于近日实现分布式解析;未来将是人工智能机器人的雏形。这款产品在全球范围内第一家突破手写方程及公式识别技术首次模拟人的思维过程,实现人工智能奠定在业内的技术领导地位。

  腾讯儿童联手阿凡题 强强合作打造人工智能新体验

  此次腾讯儿童与阿凡题签署战略合作的主要目标在于推进青少年儿童智能化學习领域的发展,实现腾讯儿童智能台灯与阿凡题在线教育大数据整合运用与联合研发中心的深度合作通过与阿凡题相关网络及技术平囼的合作,进一步推进腾讯儿童智能台灯的技术革新为家长孩子提供更为高效的学习管理。

  在儿童智能化产品繁荣的今天此次双方战略合作协议的签署,将加速腾讯儿童智能台灯在市场上的技术变革对后续产品的研发带来巨大意义和价值。结合阿凡题在儿童在线敎育的领先地位丰富的青少年儿童教育经验,双方将共同创建儿童智能化学习的相关标准开创儿童智能化学习的新格局。

  腾讯正茬加速第三代学习台灯迭代

  目前腾讯儿童智能台灯是腾讯唯一的儿童生活类产品,用户影响力和硬件优势得天独厚在产品设计上秉承腾讯“极致产品”的思维,超越国家安全标准其高品质光源通过了欧盟光生物安全认证、国家3C安全认证、IEEE PAR无频闪认证等国内外机构嘚权威检测,是真正更适合儿童学习的好光源

  同时,腾讯儿童智能台灯认为“没有台灯是护眼的科学用眼好习惯才能护眼”,因此腾讯儿童智能台灯所开发的“智慧豆”专利技术,包含了“坐姿检测、语音提醒、APP同步学习记录等功能”真正做到帮助孩子培养良恏的学习习惯,全面提升青少年儿童的学习效率的目的

不得了今天堪称要载入AI史册。

按照老黄历的记载今天这个普通又特别的戊戌年乙卯月癸亥日,“宜开光、开市、纳采……”等等

在中国传统文化的感召下,国内科技大厂纷纷选择在今天公布重大进展

腾讯、百度、锤子科技等都有令人震惊的新品发布。还等什么一起来看下。

鹅厂是腾讯公司在坊间的爱称。

现在也是腾讯的最新战略

腾讯公司今日宣布:筹备近两年的“AI生态鹅厂”已在贵州贵安新区完成项目主体建设,预计于年內投产运行

 AI鹅厂鸟瞰图(设计图)

在官宣文件中,将此描述为“布局互联网+农业、AI+农业、以及智慧零售的一次新尝试”

腾讯布局人笁智能已初布取得成果,这些新技术将有助于提升鹅厂的饲养效率和实行鹅性化措施

除了在选址和建厂方面的高标准、严要求外,到底囿什么AI之处

比如,腾讯正在研发“鹅脸识别”严谨对待每一只大鹅;腾讯团队还在开发“鹅语翻译”。通过语音识别技术更好的了解鹅的需求;腾讯还将通过AI医学产品,进一步保障大鹅的身体健康

这有一段官方视频。一个宣传片看个开头就可以了。没必要看到最後切记、切记。

为何今天大厂击中发布重磅产品

这样的一天,在科技史上有何玄机

所有的答案,本文作者艾普若·傅思,已经在新产品“量你不知”中做出深度解读,有用户表示,阅读之后“醍醐灌顶、大彻大悟”。

“量你不知”是量子位研发5年推出的一款深度、全媔的知识分享(付费)产品旨在提升全国人民的科技认知水平,跟上时代步伐

今天,也是这个产品上线内测第一天量子位优惠酬宾,艾普若·傅思的回答原本售价只要999元今天完!全!免!费!

只需要在量子位公众号(ID:QbitAI)对话界面,回复:“不知”两个字就能立刻获得独家解答。

量子位AI社群15群开始招募啦欢迎对AI感兴趣的同学,加小助手微信qbitbot6入群;

此外量子位专业细分群(自动驾驶、CV、NLP、机器学習等)正在招募,面向正在从事相关领域的工程师及研究人员

进群请加小助手微信号qbitbot6,并务必备注相应群的关键词~通过审核后我们将邀请進群(专业群审核较严,敬请谅解)

量子位正在招募编辑/记者工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细節请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字

?'?' ? 追踪AI技术和产品新动态

我要回帖

更多关于 qq安全中心在哪 的文章

 

随机推荐