- 浏览: 941058 次
- 性别:
- 来自: 杭州
最新评论
-
hw7777777:
非常感谢作者提供这么好的工具,在使用的过程中遇到一些问题?1、 ...
基于java nio的memcached客户端——xmemcached -
SINCE1978:
多久过去了时间能抹平一切
无路用的人 -
fangruanyjq:
[img][/img]引用
用osworkflow写一个请假例子(提供代码下载) -
thinkingmysky:
楼主,你确定,java memached client能处理并 ...
memcached java client性能测试的几点疑问和说明 -
hellostory:
aaa5131421 写道07年2月hibernate已经出来 ...
dozer与BeanUtils
文章列表
这个博客很长时间没有维护了,过去两年都在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下多节点情况下读写简单类型的效率 ...
- 2009-03-07 10:43
- 浏览 4891
- 评论(0)
充分利用jprofile等工具观察性能瓶颈,才能对症下药,盲目的优化只是在浪费时间,并且效果可能恰恰相反
1、
观察到CountDownLatch.await占据最多CPU时间,一开始认为是由于jprofiler带来的影响,导致这个方法调用时间过长,从而 ...
- 2009-03-06 14:37
- 浏览 3533
- 评论(0)
测试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 ...
- 2009-03-06 12:36
- 浏览 5073
- 评论(0)
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 ...
- 2009-02-19 00:15
- 浏览 3129
- 评论(0)
指针与数组
- 博客分类:
- [网站分类]4.其他技术区
一、什么时候数组和指针是相同的
1、表达式中的数组名(与声明不同)被编译器当作一个指向该数组第一个元素的指针
因此如a[i]这样的访问都被编译器改写或解释为*(a+i)的形式,同样取下标操作符的操作数是可交换的,所以a[3]可以写成3[a],不过通常你不会这样做。
2、下标总是与指针的偏移量相同,下标*sizeof(元素类型)就是偏移数组起始地址的实际字节数。
3、“作为函数参数的数组名”等同于指针,任何传递给函数的数组参数都会被转换成指针,这是基于效率考虑,避免了数组的拷贝。在函数内部,数组参数都将被转换成一个指针,要牢记这一点,因此如:
void test(char a[10])
{
...
- 2009-02-17 00:05
- 浏览 2541
- 评论(0)
最近的心情可以用一首歌来形容,阿岳的《无路用的人》,唱到心坎里了。无路用是闽南语,是指一个人没啥出息,没做出什么事情。在厦门一个多月了,有点不坚定,有点彷徨,有点郁闷,无以形容。
每天我醒来在床上就 ...
- 2009-02-16 22:36
- 浏览 2963
- 评论(2)
俺的山寨nio框架yanf4j发布0.50-alpha版本,下载地址在这里
,更新了wiki
。本测试版本主要修改如下:
1、Controller接口引入了两个新方法
:
a)接受InetSocketAddress类型参数的系列open方法,用以在多宿主机上绑定到不同网络接口
public
void
open(InetSocketAddress inetSocketAddress,
boolean
reuseAddr,
Handler handler, CodecFactory codecFactory)
throws
IOExcep ...
- 2009-02-04 19:28
- 浏览 4228
- 评论(1)