阿里高级技术专家,计算机行业从业10年+,有丰富的互联网大型分布式系统研发经验,目前致力于阿里集团CRM和商家CRM系统的研发。
可靠性分析 SFTA(Software Fault Tree Analysis) 软件故障树分析。 软件故障树分析(SFTA)是一种自顶向下的软件可靠性分析方法,即从软件系统不希望发生的事件(顶事件),特别是对人员和设备的安全及可靠性产生重大影响的事件开始,向下逐步追查导致顶事件发生的原因,直至基本事件(底事件),从而确定软件故障原因的各种可能组合方式和(或)发生概率。
分布式通信协议 基于TCP/IP的通信 基于对象的通信协议(RPC,CORBA, RMI) 基于Http+xml的通信协议(WebService) 基于Http的通信协议(Restful) 基于对象的分布式设计 基于Stub/Skeleton的架构分布式对象协议: RPC - Remote Procedure Call CORBA - Comm
软件质量属性 1. 性能 (Performance) 性能是指系统的响应能力,性能测试经常要使用基准测试(Benchmark Test). 提高性能的办法: 异步化 - 使用消息系统 和 batch处理 缓存 - 有多重缓存策略,本地缓存,分布式缓存同步,缓存服务器。 系统分割(水平和垂直分割)- 数据库读写分离 - 性能测试的办法:基准测试 基准测试(benc
1. 分布式数据库领域CAP理论 Consistency(一致性), 数据一致更新,所有数据变动都是同步的 Availability(可用性), 好的响应性能 Partition tolerance(分区容错性) 可靠性,A single piece of data is stored in 3 nodes, 1 node failed, the other 2 nodes
以前我们的用户体验主要是关注如果用户出错,给用户Alert。而用户做对的事情,往往是没有反馈的。而更好的用户体验是用户做对了,也应给个positive feedback, 这样可以给用户信心,告诉他“好样的,你把email正确填对了!” 这种positive reinfocement不仅能给用户更好的体验,还能增加使用网站的信心! 原文: http://www.smashi
1. Command Pattern 基本定义: 把Command(Request)封装成对象,把发出命令(Invoker)的责任和执行命令(Receiver)的责任分割开,委派给不同的对象。 责任划分有什么好处? 责任约单一,内聚性越高,可重用的可能性越大,试想下,如果服务员不仅要点菜,还要去做菜,会是什么情景。 为什么把Invoker和Receiver解耦好处多? 类
1. History Doug Cutting is inspired by the the paper, MapReduce: Simplified Data Processing on Large Clusters by Jeffrey Dean and Sanjay Ghemawat from Google Lab, to develop an open-source impl
作为一本技术指导书,显然这本书有些outdated了,但想想现在的一些框架,架构正是基于这本书的思想构建的,还是不免对作者当时的Vision感到钦佩。出于对这些思想本源的追索,以及对历史的追溯。还是很有必要浏览这本经典著作的,对于这个500页的书,我看的比较快,只是跳一些感兴趣的点着重看下,事实证明还是很有收获的。 POJO 起源:J2EE才出现时,尽管EJB2.0 特别
虚拟化和抽象化无所不在,计算机科学里有一句老话:所有问题都可以通过增加一个间接层来解决。 操作系统是对硬件的虚拟化; 许多现代语言所用的虚拟机又是对操作系统的抽象; 对象-关系映射层抽象了数据库; 负载均衡和虚拟IP抽象了网络终端; 云计算(infrastructure as service)虚拟化了Infrastructure(基础设施); SOAP(XML)抽象了不同系统之
Effective Java Item 48: Avoid float and double if exact answers are required 对于精确计算不提倡使用float,double,因为会丢失精度,这是为什么呢? 让我细细说来 1. 什么是浮点数? 表示一个数字如100.2,可以是Fixed point也就是100.2,也可以是Floating point(也就
如果我们在使用有一个枚举类型时,每次会用到其一项或多项(也就是enum set)时,会怎么做呢? 在Java没有引入EnumSet之前,有一种叫int enum pattern(assigning a different power of 2 to each constant)的做法,例如一个字体的style的枚举会写成 public static final int STYLE_
为什么要Hash? 哈希表是基于数组实现的,哈希算法就是如何将键值(key)转换成数组小标的方法,哈希化可以提供非常高的操作(插入、删除、查询)效率,因为对有序数组的查询,即使是二分查找也只能做到O(logN),因为哈希可以直接将要查询的key转化为数组小标,所以可以达到O(1)的时间级。 Hash算法:将key做hash后的值叫hashcode,hashcode的值范围可能很大,
写过些Swing的东西,感觉View 和 Controller之间的紧耦合,甚是恼人。看了PureMVC后感觉其对关注点的分离还是做的很好,结合网上的资料和自己的体会记录于此。 PureMVC中,引入了Mediator模式去解耦View和Controller,并协调多个view之间协同工作,用Event机制去在不同层间传递信息(其实现是用了Observer模式,利用Register/No
1. Why Use Nested Classes? There are several compelling reasons for using nested classes, among them: It is a way of logically grouping classes that are only used in one place. It increases en
By the time you write your first complete use case, you’ll realize you’re going to have more extensions than use cases. Extensions are the primary way that use cases help us uncover the most impor
经常需要在Java中调用其它的脚本(shell,cmd), 以前都用: Runtime r = Runtime.getSystemRuntime(); r.exec("whatever you want to run"); 但是有时侯其运行结果是不可预期的,带来很多麻烦。从java 5.0以后,引入了ProcessBuilder to create operating system
1. 标准的方法 <mce:script type="text/javascript"><!-- function openWin(src, width, height, showScroll){ window.showModalDialog (src,"","location:No;status:No;help:No;dialogWidth:"+wid
基本元字符集(Metacharacters)及其含义 ^ 只只匹配行首 $ 只只匹配行尾 * 只一个单字符后紧跟*,匹配0个或多个此单字符 [ ] 只匹配[ ]内字符。可以是一个单字符,也可以是字符序列。可以使用- 表示[ ]内字符序列范围,如用[ 1 - 5 ]代替[ 1 2 3 4 5 ] / 只用来屏蔽一个元字符的特殊含义。因为有时在s h e l l中一些元
以前对Log4j没有系统的总结过,刚才花了点时间,总结了一个模板,应该符合大部分的应用了。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://j
1. what is Database index?A database index is a data structure that improves the speed of operations on a database table. Indexes can be created using one or more columns of a database table, provid
Basic structures: classes and schemes The UML class A UML class (ER term: entity) is any “thing” in the enterprise that is to be represented in our database. It could be a physical “thing” or si
UML类图关系汇总 关系 后面的例子将针对某个具体目的来独立地展示各种关系。虽然语法无误,但这些例子可进一步精炼,在它们的有效范围内包括更多的语义。 依赖(Dependency) 实体之间一个“使用”关系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例(图D)。更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个局部变量