您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

我们再来看包装引起的线上问题。 《影视源码》

  • 时间:2022-08-28 01:04 编辑: 来源: 阅读:293
  • 扫一扫,手机访问
摘要:我们再来看包装引起的线上问题。 《影视源码》
后台客服同学反馈某功能使用情况时,页面提醒异常。 和往常一样,小伙伴积极响应,先一步一步的翻日志,找到异常信息,定位在哪个范围,然后...(给出反馈结果)小伙伴看了一会儿,觉得一点问题都没有。就在我准备赶班车的时候,小伙伴叫扎扎勇来看看这个逻辑,大概是瞄了两眼,真的没发现问题(主要是吃的太多)。我们撤吧...以下内容暂不讨论代码编写规范...文本1。不知所措的时候,我回想起那个逻辑,好像真的没有问题...回来后,我决定把代码关小,把线下的异常日志信息翻出来:image.png看到了这个日志信息,不是很显著,类名+行号都是提醒...按照常规的套路,翻出相应的代码...(确保代码与网络版一致)异常563行的逻辑如下:image.png是这么看的,好像这行代码真的没有问题(其实这里有很大的问题!)后来我觉得网上的包和本地的包不一致,就下载了相应的类文件,如红框里的down:image.png,这个很奇怪。真的是代码有毒吗?2.现在,我要拔出我的大杀器,一把40米长的大刀——阿尔萨斯!先追溯对应的方法,然后在页面上模拟请求:image.pngok,可圈可点,空指针出来了!然后用jad命令反编译相应的方法(不能感叹阿尔萨斯真香):image.png不能感叹,看到红框的那个help (Fxxx)是什么?至此,原因显而易见。当对象不为空,属性为空时,NPE;会出现。应该有和我一样的朋友会有疑问,为什么反编译会比较Integer.value;好吧,其实就是图2中的默认!private static final int DEFAULT = 0;因为对象用的是Integer,涉及到打包的操作,所以Integer.value方法会比较多;(由此可见包里的类文件有多不靠谱。) 3.问题重现为了验证以上问题,我写了一个demo来重现:/* *作者:Bingo624 *日期:2020/9/17 23: 23 *描述:*版本:1.0 */@ RestController公共类Hello Controller { Private Static Final Int Default = 0;@ request mapping("/hello 1 ")public student VO hello 1(){ phxuserdo phxuserdo = new phxuserdo();student VO = new student VO(phxUserDto = = null?默认:phxuserdo . getgender());返回VO;} @ request mapping("/hello 2 ")public student VO hello 2(){ phxuserdo phxuserdo = new phxuserdo();student VO = new student VO(phxUserDto = = null?null:phxuserdo . getgender());返回VO;} @ request mapping("/hello 3 ")public student VO hello 3(){ phxuserdo phxuserdo = new phxuserdo();student VO = new student VO(phxUserDto = = null?integer . value of(0):phxuserdo . getgender());返回VO;}}结合以上细节,猜测一下,你们都能正常返回吗?正如您所料,对/hello1的请求将导致NPE返回500image.png/hello2,而/hello3可以正常响应!最后,我们来看看类型化jar包中的类文件和在线反编译后的类:jar包中的类文件:image.png在线反编译:image.png4、刘艳华翻出阿里的规定:(拆包打包都可能导致NPE)来自官网的指南,image . png:docs.oracle.com/javase/spec……image.png总结并通过一个案例,可见基础知识的重要性;代码编写规范可以避免很多问题;犯错很正常。我们更应该思考的是:如何通过自己掌握的各种工具来处理问题,不要重蹈覆辙!最后安利一波阿尔萨斯,好香!(还有许多高级功能等着您去发现...)


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【技术支持|常见问题】1556原创ng8文章搜索页面不齐(2024-05-01 14:43)
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)
【技术支持|常见问题】别告诉我你没看过邰方这两则有思想的创意广告! (2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部