Java的项目经验要怎么积累呢?
多看开源项目源代码,或者自己尝试做一些项目。比较有帮助,最后推荐一个项目集,可以试着做一下,一共10个项目,还有配套资料,源代码都可以获得!(答案转载自音乐字节)
哔哩哔哩搜索BV1f64y117vk
后台怎么防止因网络延迟,用户连续点击导致后台重复执行一条数据,这样的状况发生?
这是典型的防止重复提交的问题!在实际场景中,比如有重复扣费,重复购买!
如何设计才能防止重复提交?我们主要有以下操作:
①前端:点击提交按钮,点击后会变灰,一段时间内不允许重复提交!
优点:最便捷的提高并发的方法!
缺点:页面刷新时js失败,前端容易被篡改!
②后端:
1.锁定:锁定提交的id,同一id在一定时间范围内只能通过一次!
如果是分布式服务,需要借助redis添加分布式锁,否则多个服务中的锁不能互斥!
2.幂等性:保证接口是幂等的,先查询,记录不存在就添加,存在就返回查询结果!
缺点:高并发环境不能保证幂等性!
③数据库:如果是新增加的,可以增加唯一字段。保存时,如果唯一字段重复,将引发异常。使用insertignore语句进行判断!
如果修改了,可以使用乐观锁sql确保版本version符合要求后再执行sql!以下示例是乐观锁定机制:
更新table_testsetnamename1,versionversion1其中idid1和version2
我在实际工作中使用以上方法。如果有更合适有效的方法,请补充。。笔者一直在持续分享JAVA开发技术,其中不乏好文章,有需要的朋友可以关注一下。。