随笔分类 -  架构

摘要:原文链接:http://www.javaarch.net/jiagoushi/709.htm分布式唯一主键生成策略的一种开销比较小的方法 分布式场景下,经常需要做分库分表,master和master结构,那么此时就会用到全局的唯一主键id。 如果使用mysql的分区策略,master到master的复制,那么此时就需要保证分区的唯一性避免主键冲突。 我们可以使用mysql的自增列,但是mysql却无法保证物理和逻辑数据库的主键唯一性。 mysql5.6以上出现了GUID,但是GUID很大,而且如果需要建索引需要拿性能会比较差。这样对于某些查询只需要索引 或者需要利用索引来满足高并发下的性能.. 阅读全文
posted @ 2013-06-03 10:49 zhwj184 阅读(341) 评论(0) 推荐(0)
摘要:继上次分析了java的序列化过程之后,对于serialVersionUID的处理还不是很清晰,今天再看下代码,对serialVersionUID的处理进行了了解,上次的序列化过程分析可以参考另外一篇文章:http://zhwj184.iteye.com/blog/1550699ObjectOutputStream.java调用writeObject的时候会调用到下面的代码:这是调用ObjectStreamClass.java的writeNonProxy方法,写入非代理类的元数据信息在写入类的元数据的时候会把serialVersionUID写入: /** * Writes non-p... 阅读全文
posted @ 2012-08-04 10:04 zhwj184 阅读(389) 评论(0) 推荐(0)
摘要:我看到的最多被违反的原则是“命令,不要去询问(Tell, Don’t Ask)”原则。这个原则讲的是,一个对象应该命令其它对象该做什么,而不是去查询其它对象的状态来决定做什么(查询其它对象的状态来决定做什么也被称作‘功能嫉妒(Feature Envy)’)。这篇文章里有个很生动的例子,我至今记忆犹新:if (person.getAddress().getCountry() == “Australia”) {这违反了得墨忒耳定律,因为这个调用者跟Person过于亲密。它知道Person里有一个Address,而Address里还有一个country。它实际上应该写成这样:if (person.l 阅读全文
posted @ 2012-08-02 23:25 zhwj184 阅读(654) 评论(0) 推荐(0)