`
文章列表
  这个博客很长时间没有维护了,过去两年都在blogjava写博客,有兴趣的朋友可以关注下:   http://blogjava.net/killme2008
最近java memcached client发布了2.6.1版本,号称性能提升了300%,这是相对于原始主干代码来说。这个改进是由国人做的一个分支,首先得向他们致敬,great job。   我这里想谈的主要是这个新闻里的性能测试,从他们的测试结果来看java memcached client的性能确实非常优秀。但是我认为这个测试并不能算非常公平的测试,有几点需要开发者来澄清和说明一下。   抛开硬件声明不谈,软件上的配置没有说明,比如各个软件的版本,测试的各个client的参数设置没有说明。为了证明xmemcached可以做到比测试中的更优秀,我也做了个简单测试,我测试的场景如下: ...
受javaeye上的《Ruby中文编程 》启发,帖子中有人提到如果if这样的关键字都可以定义成中文,那就是真正的中文编程。那时我就想到,这个其实要在scheme中实现是多么简单,将sicp书中的解释器稍微修改下就可以了,只要修改解析的部分即可。解释器的完整代码放后面,我们先看看有趣的例子: (定义 你  ' 男) (当 ((是 你  ' 男) (打印  ' 男人是泥土做的))     ((是 你  ' 女) (打印  ' 女人是水做的))     (否则          (打印  ' 妖怪啊)))     其实呢,“定义”等价于define,“当”等价于cond,“打印”等价于dis ...
本图不针对任何网站和个人,仅仅是因为很离谱。
一、背景资料     memcached本身是集中式的缓存系统,要搞多节点分布,只能通过客户端实现。memcached的分布算法一般有两种选择:1、根 据hash(key)的结果,模连接数的余数决定存储到哪个节点,也就是hash(key)% sessions.size(),这个算法简单快速,表现良好。然而这个算法有个缺点,就是在memcached节点增加或者删除的时候,原有的缓存数据 将大规模失效,命中率大受影响,如果节点数多,缓存数据多,重建缓存的代价太高,因此有了第二个算法。2、Consistent Hashing,一致性哈希算法,他的查找节点过程如下:    首先求出memcached服务 ...
   xmemcached 发布1.0-beta ,从0.60直接到1.0-beta,主要改进如下: 1、支持更多协议,在已有协议支持的基础上添加了append、prepend、gets、批量gets、cas 协议的支持,具体请查看XMemcachedClient类的实例方法。重点是cas操作,下文将详细描述下。 2、memcached分布支持,支持连接多个memcached server,支持简单的余数分布和一致性哈希分布。 3、0.60版本以来的bug修复。    memcached 1.2.4之后开始支持cas协议,该协议存储数据同时发送一个版本号,只有当这个版本号与memcached ...
翠花,上图,首先是容器类和自定义对象的get、set在不同并发下的表现     很明显,在linux下,spymemcached读写复杂对象的效率远远超过在windows下的表现,xmemcached在两个平台之间表现平稳,在linux上get效率低于spymemcached,差距比较大,准备再优化下;set效率略高于spymemcached。     xmemcached  0.70将支持多服务器功能和简单的分布能力,基于hash key后模节点数的余数值做分布,这也是spymemcached默认的分布方式,一致性哈希暂不实现。下面是在linux下多节点情况下读写简单类型的效率 ...
   充分利用jprofile等工具观察性能瓶颈,才能对症下药,盲目的优化只是在浪费时间,并且效果可能恰恰相反 1、 观察到CountDownLatch.await占据最多CPU时间,一开始认为是由于jprofiler带来的影响,导致这个方法调用时间过长,从而 ...
测试1:开N个线程读写删各10000次,key是String,Value是Integer,数据单位皆为TPS  线程数           set            get          delete  xmemcached  spymemcached  xmemcached spymemcached  xmemcached spymemcached  1  3368  3047  3422  3232  3787  3404  10  12307  11742  15274  126 ...
xmemcached发布1.0-beta,从0.60直接到1.0-beta,主要改进如下:1、支持更多协议,在已有协议支持的基础上添加了append、prepend、gets、批量gets、cas协议的支持,具体请查看XMemcachedClient类的实例方法。重点是cas操作。 2、memcached分布支持,支持连接多个memcached server,支持简单的余数分布和一致性哈希分布。 3、0.60版本以来的bug修复。 更多信息参考这里     1、xmemcached是什么?   基于java nio实现的memcached客户端API。 实际上是基于我实现的 ...
1、xmemcached是什么? xmemcached是基于java nio实现的memcached客户端API。 实际上是基于我实现的一个简单nio框架 http://code.google.com/p/yanf4j/ 的基础上实现的(目前是基于yanf4j 0.52),核心代码不超过1000行,序列化机制直接挪用spymemcached的Transcoder。 性能方面,在读写简单类型上比之spymemcached还是有差距,在读写比较大的对象(如集合)有效率优势。 当 前0.50-beta版本,仅支持单个memcached服务器,以后考虑扩展。目前已经支持get、set、add、r ...
yanf4j 发布一个0.50-beta2 版本,这个版本最重要的改进就是引入了客户端连接非阻塞AP I,主要最近的工作要用到,所以添加了。两个核心类TCPConnectorController 和UDPConnectorController 分别用于TCP和UDP的客户端连接控制。例如,现在的UDP echo client可以写成:      // 客户端echo handler      class  EchoClientHandler  extends  HandlerAdapter {          public   void  onReceive(Session udpSe ...
一、什么时候数组和指针是相同的 1、表达式中的数组名(与声明不同)被编译器当作一个指向该数组第一个元素的指针 因此如a[i]这样的访问都被编译器改写或解释为*(a+i)的形式,同样取下标操作符的操作数是可交换的,所以a[3]可以写成3[a],不过通常你不会这样做。 2、下标总是与指针的偏移量相同,下标*sizeof(元素类型)就是偏移数组起始地址的实际字节数。 3、“作为函数参数的数组名”等同于指针,任何传递给函数的数组参数都会被转换成指针,这是基于效率考虑,避免了数组的拷贝。在函数内部,数组参数都将被转换成一个指针,要牢记这一点,因此如: void test(char a[10]) {   ...
   最近的心情可以用一首歌来形容,阿岳的《无路用的人》,唱到心坎里了。无路用是闽南语,是指一个人没啥出息,没做出什么事情。在厦门一个多月了,有点不坚定,有点彷徨,有点郁闷,无以形容。 每天我醒来在床上就 ...
俺的山寨nio框架yanf4j发布0.50-alpha版本,下载地址在这里 ,更新了wiki 。本测试版本主要修改如下: 1、Controller接口引入了两个新方法 : a)接受InetSocketAddress类型参数的系列open方法,用以在多宿主机上绑定到不同网络接口            public   void  open(InetSocketAddress inetSocketAddress,  boolean  reuseAddr,             Handler handler, CodecFactory codecFactory)  throws  IOExcep ...
Global site tag (gtag.js) - Google Analytics