Jul 15, 2016 - Java历史开篇语

见过不少技术团队的leader,写过多年的业务,做了管理岗。说好听点叫业务,难听点就是增删改查,顶多加上mq、缓存、rpc之类的。

如果在一家公司做了多年,晋升做管理,确实无可厚非,因为这位管理者对本公司的业务和技术架构的演变都非常熟悉。怕就怕在跳到了其他公司做管理,业务背景不同,技术架构又不适用,之前积累的深厚经验就大打折扣了。

阅读全文

Jul 11, 2016 - 项目总结-2016年07月11日

关于数据同步

同步流程异步化是提升程序响应、服务解耦的一个非常常用的手段。而对于某些业务来说,异步是唯一的选择,比如支付业务。当拿到某个订单的交易结果时,该结果并不代表最终的支付结果,而支付公司会通过回调或者由调用方轮询访问接口获取真实的支付结果。

笔者所涉及的项目中,同样涉及到“交易——对账——数据”这类不能实时获得数据的问题。用户的操作调用合作方的接口产生了交易之后,新的交易数据生成在合作方的数据库里(即使是合作方,也不会实时得到支付结果,最终会与银行打交道)。如何在用户无感知的情况下进行数据的同步,是提高用户体验的一个关键点。在项目研发过程中经历了许多轮的讨论与实践,现在笔者将数据同步功能的发展历程简单介绍一下。

阅读全文

Jul 3, 2016 - 对包装类型变量使用synchronized不当造成的同步不正确

关于关键字synchronized使用不当,造成未同步或者同步不正确,是开发过程中常见的问题。先引出3个问题:

  1. 同步synchronized的底层实现原理是什么?
  2. 对非常量或者非单例对象上使用synchronized,会有什么效果?
  3. 对包装类型使用synchronized,会有什么效果?

阅读全文