Java Web技术经验总结(十一)

作者: 程序熊大 | 来源:发表于2016-08-23 19:39 被阅读2534次
    1. Git工作流:Git 工作流程
    2. Maven版本管理:阅读Maven最佳实践:版本管理
    3. lombok project,在Java开发中,我们常常需要写很多令人厌烦的getter/setter代码、需要自己覆盖equals、toString和hashcode等方法,不胜其烦且容易出错。lombok就是为此而生的,通过给bean类添加一些注解,可以自动生成上述函数。不过在我过去的开发中,如果需要定制自己的equals方法,我常常使用Apache Commons中提供的EqualsBuilder和HashCodeBuilder两个类,参考:Java 中正确使用 hashCode 和 equals 方法。PS:lombok我刚刚接触,还不清楚它是否也有定制具体实现的功能;PS2:在IDEA中使用lombok需要安装对应的插件,参考:lombok在IntelliJ IDEA下的使用
    4. MySQL的主从延迟和解决方案:MySQL主从数据库同步延迟问题解决
    5. 来自《Effective Java》中的第6条规则:内存泄漏的另一个来源是缓存。一旦你将对象引用放在缓存中,它就很容易被忘掉,从而使得它在不再有用之后很长一段时间仍然留在缓存中。这种情况下,可以使用WeakHashMap代表缓存,只要在缓存外存在某个像的键的引用,该项就有意义;当缓存项的键的生命周期结束后,该项也会自动被删除。关于WeakHashMap,可以参考这篇文章:深入理解WeakHashMap
    6. 关于Code Review的一篇文章:说说Code Review,其中不仅讲了code review,还讲了带新人的方法。另外,关于这个主题,可以参考《Clean Code》和《重构》这两本书。
    7. 实现分布式锁的方法,这篇文章讲得很详细:分布式锁1 Java常用技术方案
    8. 使用Intelij IDEA中的git插件进行分支合并的步骤(例如:branch1合并到branch2):
    • 切换到目标分支,branch2
    • 在右下角git快捷窗口——>branch1——>merge,就会将branch1合并到branch2。


      快捷合并分支1
      分支合并结果
    1. 这两天遇到一个业务场景:一个数据库修改的请求,客户端由于历史原因,经常会发出两个完全相同的请求,导致服务端发生唯一键冲突。为了解决这个问题,我们决定使用分布式锁解决这个问题,在进行数据库插入操作之前要先拿分布式锁,拿到锁以后也要先检查数据库,没有的话再插入数据。
      我在测试的时候发现分布式锁不起作用,先是以为自己的锁有问题,排除这个问题之后,开始回顾之前的代码。发现一个坑:原有的代码在接口定义层用了@Transactional注解,Spring中的事务是基于AOP实现的,如果在RPC接口使用事务注解,那么事务会在RPC接口返回之后才会提交。可以看出,当事务的范围大于同步代码块的范围时会有问题。A请求释放了锁,但是它的事务还没有提交;B请求已经拿到了锁,但是看不到A请求的事务修改的东西,导致脏读。
      关于Spring中的事务,可以参考官方文档
      我的经验是:(1)只有某个业务要求同时修改两张以上的表的数据的时候,再使用事务,并且要在方法级别使用;(2)事务和同步代码块不可嵌套使用。

    相关文章

      网友评论

      • a329977d379e:前辈是在挖财么?看到了错刀老师的名字 :smirk:
        程序熊大: @promise健 做项目,解决问题,读书,阅读文档,交叉着来学
        a329977d379e:@杜琪 前辈想请教下以一种什么样的方式学spring好。是先看一些spring的书再去看官方使用文档吗?
        程序熊大: @a329977d379e 没,目前在有赞供职😂
      • 8bf590593297:关注中,我是初学者
      • 6494df96c4e2:大神 :heart_eyes:
        程序熊大:@TuringHero 过奖过奖,有问题一起交流进步
      • Ruining101:想了解一下多数据源的事务管理😘
        程序熊大:@才袅 之前还没有在实际项目中处理过这个问题,后天上班我看下,我们私信交流
      • 脑袋痛:RPC是什么缩写什么含义
        脑袋痛:@杜琪 谢谢,您的回复。
        程序熊大: @脑袋痛 远程过程调用
      • 619e666ab61b:前辈,🤓🤓🤓
        程序熊大: @墨丶言 哈哈😄
      • MPPC:关注中
      • 橙小张:好文,关注很久了,前辈。 :+1:
      • d902e33c20e6:终于更新了,我每天都刷看你更新没有
        程序熊大:@webnono :smiley: 谢谢肯定,好感动,后面我尽量勤快点

      本文标题:Java Web技术经验总结(十一)

      本文链接:https://www.haomeiwen.com/subject/lkresttx.html