摘要: 数据库分片(shard)是一种在数据库的某些表变得特别大的时候采用的一种技术。通过按照一定的维度将表切分,可以使该表在常用的检索中保持较高的效率,而那些不常用的记录则保存在低访问表中。比如:销售记录按照时间来切分。(横向切分)也可以根据地域进行拆分,使得每个地区访问自己的表从而进行负载均衡。(纵向切分)也可以纵横切分,使表拆的更细致。也可以分库,让不同的数据存放在不同的服务器上,从而进一步均衡负载。当遇到这样的事情的时候,如果不是采用了MongoDB这种自动拆表的工具,一般来说,都要自己实现一下切表的策略。其实,Hibernate中已经提供了一个很好用的包:Hiberante Shard,该包 阅读全文
posted @ 2013-07-05 00:22 史蒂芬.王 阅读(12369) 评论(0) 推荐(0) 编辑
摘要: 今天在新浪微博上又看到有人讨论千行代码缺陷率,还讨论的很细致——怎么计算,怎么统计....引用郭德纲的一句话:统计那玩意儿没用,一句话解决你心中所有疑惑。(原文是:学那玩意儿没用)首先我们来看看,千行代码缺陷率是怎么定义的?缺陷率 = 缺陷数量/(代码行数/1000)然后看组织如何关心这个数字 越小越好那么结论是什么? 没有能力减少缺陷数量,就加大代码行数呗一些常见的招数 把 {单独占一行 把 }else { 写成 } else { 上面这些还只是影响到代码可读性,下面这些就有些奇葩了。 把定长循环分开写,写成顺序方法 把配置文件的行数统计进去 而下面这些就令人发指了 复制、粘贴 重新发明轮. 阅读全文
posted @ 2013-07-04 13:08 史蒂芬.王 阅读(13551) 评论(2) 推荐(0) 编辑
摘要: 今天,BJDP的伍斌老师提出一个有意思的题假设出版社要促销一套哈利波特图书,该套图书共5集,每集单册购买8元。若任意两集各买一本,打95折;若任意三集各买一本,打9折;若任意四集各买一本,打8折;若所有这五集都各买一本,打75折。上述优惠之外的单册还是按8元一本计价。比如五集各买一本之外再加一本第一集,五本书打75折,这本另加的第一集按8元计价。这个问题的答案是51.2。但是用程序应该如何实现呢?先是写了套代码: 1 public double buy(Map books) { 2 3 int count = count(books); 4 double mi... 阅读全文
posted @ 2013-07-04 11:57 史蒂芬.王 阅读(724) 评论(4) 推荐(0) 编辑
摘要: 昨天写了一篇博文《30行,金额转人民币大写的代码》,今天突发奇想,看看不用从后向前的思路,而用从前向后遍历的思路,会不会代码也一样精炼呢?于是经过了大约40分钟的奋战,才有了下面的这段代码。中间测试出来的奇怪东西特别的多,比如叁亿万零捌佰,壹拾零万元,消除这些奇怪的错误着实花费不少时间。 1 public class ChineseCurrencyConverter { 2 private static final String [] UNITS = {"","拾","佰","仟","万",&q 阅读全文
posted @ 2013-06-27 09:59 史蒂芬.王 阅读(4002) 评论(43) 推荐(1) 编辑
摘要: 金额转人民币大写是一种常见的要求,但是这一看似简单的要求,实现起来却并不容易。前不久,我被问到了这样一道题,当时写了个算法,昨天晚上又和BJDP的人们讨论了一下,觉得很有必要把这个算法写下来。总共37行,去掉空行还不到30行,就不多啰嗦解释了。 1 public class ChineseCurrencyConverter { 2 3 private static final String[] UNITS = {"亿","仟","佰","拾","万","仟","佰& 阅读全文
posted @ 2013-06-26 09:08 史蒂芬.王 阅读(3371) 评论(11) 推荐(4) 编辑
摘要: 昨天Google I/O开发者大会上宣布,Android Studio 0.1的前瞻版发布了,今早马上下载尝下鲜。下载地址如下:https://developer.android.com/sdk/installing/studio.html很显然的IntelliJ IDEA的样貌,下面是一些截图:选择了“New Project”给工程和包起个名字创建自定义图标选择工程类型给工程定个名字开始创建。向导基本上和Eclipse差不多。不过这个创建过程可比Eclipse上长的多。主要是因为从gradle上下载。工程的结构和Eclipse上的不同,src下分为java和res可以直接选择ADT中配置好的 阅读全文
posted @ 2013-05-16 08:26 史蒂芬.王 阅读(13757) 评论(60) 推荐(19) 编辑
摘要: 今天我要跟大家讲讲最近关于我对于逞能模式和免打扰模式的体会。逞能模式 开始我把这个写成英雄模式,是因为来自于英语Hero Mode[1],但是后来,我觉得“逞能”更能表现这种模式的情形。进入这种模式的开发人员行为更多层面上来说并不是英雄,而是逞能。在开发的时候,开发人员为了显示自己的开发能力或者为了能够满足客户,而要增多功能,延长工作时间。但是,这种模式可能会给团队带来负担加重,质量变差,交付延期等负面情况。进入逞能模式的开发人员为了能够出更多的业绩,开始加班,到深夜,甚至到天明,然而,由于熬夜而导致身体状况和精神状况都变差,反而使得效率下降。而这种行为还会引起群体效应,即所有人都要陪着... 阅读全文
posted @ 2013-04-29 22:31 史蒂芬.王 阅读(580) 评论(0) 推荐(0) 编辑
摘要: WebService不同,调用WebService的方法也不同。采用Endpoint发布的WebService需要在上传的时候将参数改为arg0,arg1....这种形式。到时给破解带来一定难度。呵呵。 阅读全文
posted @ 2013-03-02 16:56 史蒂芬.王 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 你的启蒙老师应该也是这样教你的吧? 考试的时候要慢慢得答,不要图快。不仅你的启蒙老师会这样,你初次步入职场的时候也会有经验者来这样教导你。 慢工出细活。如果你已经根深蒂固的接受这个观点超过25年,那么基本上你一定认为这是正确的。而很难通过一篇博文就让你转变看法。并且在这期间,你一定尝到很多甜头——并因此对减慢速度求稳坚信不疑。先抛出结论告诉你这是一种误导,会误导你直接跟我争吵,尽管你在读了标题之后会知道我这篇博客想要表达的意思。我还是喜欢用归纳法,一步一步的解释为什么这个是一种误导。首先,慢就会提高质量吗?如果前面的观点“快会导致质量下降”,那么它的反面就是,“慢可以提升质量”。这两种说法一样 阅读全文
posted @ 2013-02-23 16:28 史蒂芬.王 阅读(359) 评论(4) 推荐(1) 编辑
摘要: 消小球游戏的iOS版 for iOS 6 only话不多说,直接上代码,https://github.com/StephenWang7971/BubbleBreaker 阅读全文
posted @ 2013-01-18 10:39 史蒂芬.王 阅读(310) 评论(0) 推荐(0) 编辑