分类 Java 下的文章 - ZhangTory's NoteBlog - 张耀誉的笔记博客

Java

如何让Spring事务失效

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





查看全文 »

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

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




查看全文 »

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

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




查看全文 »

BitMap实现海量消息推送、已读记录的实现方案

我们app有消息箱功能,可以接收系统发送的消息。
以前服务器推送的消息是缓存在用户手机中的,但是这种方法用户体验不好,所以现在需要将数据存放在服务器上。
系统会根据大数据的判断,给不同的用户发送不同的消息,所以需要记录用户是否有阅读该消息的权限,也就是推送记录。
同时app的用户很多,如果按照关系型数据库,每个用户创建一条记录,我们预计2个月就会生成1亿条数据,会给数据库带来很大的压力。
这种情况我们其实只需要记录是否推送、是否已读,用BitMap就能很好的节省空间,同时有很好的查询性能。





查看全文 »

SpringBoot创建自定义starter指北

之前我们解了SpringBoot自动配置原理,根据原理我们就可以实现我们自己的starter。
为什么需要starter,官方文档写的很不错。

If you work in a company that develops shared libraries, or if you work on an open-source or commercial library, you might want to develop your own auto-configuration. Auto-configuration classes can be bundled in external jars and still be picked-up by Spring Boot.
如果您在开发共享库的公司工作,或者在开源或商业库上工作,您可能需要开发自己的自动配置。自动配置类可以绑定在外部jar中,仍然可以由springboot获取。

查看全文 »