ZhangTory's NoteBlog - 张耀誉的笔记博客

利用反射在拦截器中获取HttpServletRequest的body数据和HttpServletResponse的返回信息

记得以前有个需求,在Interceptor中需要通过HttpServletRequest把Post的request body数据提取出来,如果简单的通过Reader是可以读出来,但是在拦截器中只能读一次,之后传到controller的request body为空,会造成后续的业务异常。
网上的方案是通过HttpServletRequestWrapper进行包装,在Filter对InputStream进行读取,稍微有点麻烦。
那么有没有更简单的方法呢?



查看全文 »

如何让Spring事务失效

金三银四的季节面试了一些公司,有两家公司都不约而同的问到了Spring的事务在哪些情况下会失效。
我本来以为这不是什么问题,失效肯定是用法不当造成的嘛,这个我在code review中发现过同事的三种错误使用,
于是把这三种错误的使用方法回答给了面试官,面试官觉得说少了,问还有呢?
一时想不出还有什么情况回导致Spring事务失效,于是开始从原理分析......
面试后查了查这个问题,我去,好多错误简直离谱,让我真心想不到。





查看全文 »

OpenCV图像处理+百度OCR实现简单的验证码识别

起因是有朋友想挂XX医院的号,但是专家号一票难求,所以趁着过年期间有空,打算写个挂号脚本,当然仅仅是自己用。
根据我目前掌握的技能来说,模拟请求已经很手熟了,唯一的难点在于验证码识别。
于是我查了下目前较好的验证码识别方案,发现都是基于卷积神经网络的机器学习,需要一定数量的验证码去喂,才能得到较高的识别率。然而对于我来说,肯定难以得到那么多处理好的验证码。
最终我决定用老办法,OPENCV处理验证码图像,OCR识别处理好的图像。




查看全文 »

TDD在实际项目中的使用经验总结

为了减少bug,在需求交付测试之前我们程序员也应该自测,最常见的如单元测试,就是提升代码质量的利器。
之前我们后端团队强制要求写单元测试,但是后来由于你能想到的各种原因不再要求编写单元测试了...bug也明显变多了...不过这次我们先不说为什么不再要求编写单元测试的问题。
之前有一次开会,运营和产品团队将推广效果不理想的锅扔给了我们开发团队,理由是出现了线上bug,所以部门经理又重新提到了代码质量的问题。
最近我自己“试点”了TDD,也就是测试驱动开发,总结一下在实际项目中如何使用。




查看全文 »