小寒的blog
Programming is a darned hard thing—but I am going to like it.
posts - 99,  comments - 107,  trackbacks - 0
摘要: /***最大余数分摊算法*@authorxhan*{@link=http://en.wikipedia.org/wiki/Largest_remainder_method}*/publicclassShareCalculator{publicstaticdouble[]calculate(double[]votes,doubletotalSeats){double[]seats=newdouble[votes.length];double[]reminders=newdouble[votes.length];doubletotalVotes=0;for(doublevote:votes){to阅读全文
posted @ 2012-01-23 14:01 xhan 阅读(5) 评论(0) 编辑
摘要: package com.hichina.bc.repository.test;import junit.framework.Assert;import org.hibernate.SessionFactory;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springf阅读全文
posted @ 2011-09-22 22:40 xhan 阅读(45) 评论(0) 编辑
摘要: protobuf是google的一种序列化对象的编码方式。相比xml和json的序列化方式,protobuf序列化的结果更小,而且序列化的速度也更快。本文简单介绍写如果通过Emit来在运行时动态的生成对数据对象的protebuf编码解码类。 通过本实例展示下元数据编程的能力。关于protebuf的编码原理可以参考这里http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/encoding.html ,本文只展示对简单的int32进行varint方式编码和string的编码,。在此基础上可以很容易的实现全部的protobuf的编码.阅读全文
posted @ 2011-04-03 01:16 xhan 阅读(1208) 评论(3) 编辑
摘要: HandlerSocket 是一个mysql 数据库的插件,它可以绕过mysql的查询分析和优化的过程,直接与innodb存储引擎进行交互。尤其是当大多数数据都被innodb缓存到内存中的时候,查询分析和优化过程就会是整个查询处理过程的瓶颈。通过使用HandlerSocket可以绕过这个瓶颈,从而提升性能。这要比mysql+memched要有优势,因为HandlerSocket不需要处理缓存失效的问题。下面看下HsClient访问mysql的一个例子代码1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingS阅读全文
posted @ 2011-03-24 18:22 xhan 阅读(1570) 评论(1) 编辑
摘要: 放假没事学习了redis这个key-value数据库。顺便写了点学习笔记和大家分享下,希望对想了解redis的同学有所帮助。一 redis学习笔记之环境搭建二 redis学习笔记之数据类型三 redis学习笔记之排序四 redis学习笔记之事务五 redis学习笔记之pipeline六 redis学习笔记之发布订阅七 redis学习笔记之持久化八 redis学习笔记之主从复制九 redis学习笔记之虚拟内存阅读全文
posted @ 2011-02-08 13:36 xhan 阅读(3196) 评论(5) 编辑
摘要: 首先说明下redis的虚拟内存与os的虚拟内存不是一码事,但是思路和目的都是相同的。就是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的 内存空间用于其他需要访问的数据。尤其是对于redis这样的内存数据库,内存总是不够用的。除了可以将数据分割到多个redis server外。另外的能够提高数据库容量的办法就是使用vm把那些不经常访问的数据交换的磁盘上。如果我们的存储的数据总是有少部分数据被经常访问,大 部分数据很少被访问,对于网站来说确实总是只有少量用户经常活跃。当少量数据被经常访问时,使用vm不但能提高单台redis server数据库的容量,而且也不会对性能造成太多影响。 r阅读全文
posted @ 2011-02-07 19:49 xhan 阅读(726) 评论(0) 编辑
摘要: redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server相同的数据库副本。下面是关于redis主从复制的一些特点1.master可以有多个slave2.除了多个slave连到相同的master外,slave也可以连接其他slave形成图状结构3.主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求。4.主从复制可以用来提高系统的可伸缩性,我们可以用多个slave 专门用于clie阅读全文
posted @ 2011-02-07 15:47 xhan 阅读(710) 评论(2) 编辑
摘要: redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另一种是Append-only file(缩写aof)的方式。下面分别介绍Snapshotting 快照是默认的持久化方式。这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可以通过配置设置自动做快照持久 化的方式。我们可以配置redis在n秒内如果超过m个key被修改就自动做快照,下面是默认的快照保存配置save 900 1 #900秒内如果超过1个key被修改,则发阅读全文
posted @ 2011-02-07 13:34 xhan 阅读(818) 评论(0) 编辑
摘要: 发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似。pub /sub不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合。redis作为一个pub/sub server,在订阅者和发布者之间起到了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将消息类型称为通道(channel)。当发布者通过publish命令向redis server发送特定类型的消息时。订阅该消息类型的全部client都会收到此消息。阅读全文
posted @ 2011-02-06 14:44 xhan 阅读(951) 评论(2) 编辑
摘要: redis是一个cs模式的tcp server,使用和http类似的请求响应协议。一个client可以通过一个socket连接发起多个请求命令。每个请求命令发出后client通常 会阻塞并等待redis服务处理,redis处理完后请求命令后会将结果通过响应报文返回给client。基本的通信过程如下Client: INCR XServer: 1Client: INCR XServer: 2Client: INCR XServer: 3Client: INCR XServer: 4基 本上四个命令需要8个tcp报文才能完成。由于通信会有网络延迟,假如从client和server之间的包传输时间需阅读全文
posted @ 2011-02-05 13:48 xhan 阅读(753) 评论(3) 编辑
摘要: redis对事务的支持目前还比较简单。redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。 由于redis是单线程来处理所有client的请求的所以做到这点是很容易的。一般情况下redis在接受到一个client发来的命令后会立即处理并 返回处理结果,但是当一个client在一个连接中发出multi命令有,这个连接会进入一个事务上下文,该连接后续的命令并不是立即执行,而是先放到一 个队列中。当从此连接受到exec命令后,redis会顺序的执行队列中的所有命令。并将所有命令的运行结果打包到一起返回给client.然后此连接就 结束事务上下文。阅读全文
posted @ 2011-02-04 17:48 xhan 阅读(896) 评论(0) 编辑
摘要: 在了解完各种redis类型后,这次介绍下redis排序命令.redis支持对list,set和sorted set元素的排序。排序命令是sort 完整的命令格式如下:SORT key [BY pattern] [LIMIT start count] [GET pattern] [ASC|DESC] [ALPHA] [STORE dstkey] 下面我们一一说明各种命令选项(1)sort key这个是最简单的情况,没有任何选项就是简单的对集合自身元素排序并返回排序结果.下面给个例子redis> lpush ml 12(integer) 1redis> lpush ml 11(integer) 2阅读全文
posted @ 2011-02-03 17:44 xhan 阅读(1105) 评论(0) 编辑
摘要: 本文介绍下redis支持的各种数据类型包括string,list ,set ,sorted set 和hash 1. keysredis本质上一个key-value db,所以我们首先来看看他的key.首先key也是字符串类型,但是key中不能包括边界字符由于key不是binary safe的字符串,所以像"my key"和"mykey\n"这样包含空格和换行的key是不允许的顺便说一下在redis内部并不限制使用binary字符,这是redis协议限制的。"\r\n"在协议格式中会作为特殊字符。redis 1.2以后的协议中部分命令已经开始使用新的协议格式了(比如MSET)。总之目前还是把包阅读全文
posted @ 2011-02-02 19:07 xhan 阅读(2732) 评论(2) 编辑
摘要: 1.简介 redis是一个开源的key-value数据库。它又经常被认为是一个数据结构服务器。因为它的value不仅包括基本的string类型还有 list,set ,sorted set和hash类型。当然这些类型的元素也都是string类型。也就是说list,set这些集合类型也只能包含string 类型。你可以在这些类型上做很多原子性的操作。比如对一个字符value追加字符串(APPEND命令)。加加或者减减一个数字字符串(INCR命令,当 然是按整数处理的).可以对list类型进行push,或者pop元素操作(可以模拟栈和队列)。对于set类型可以进行一些集合相关操作 (inters阅读全文
posted @ 2011-02-01 17:49 xhan 阅读(1691) 评论(2) 编辑
摘要: 1 . 新建文本JSCaller.js内容如下class JSCaller { function Eval(expression: String) {return eval(expression, "unsafe");} } 2. 打开.net的命令行窗口。运行jsc /t:library C:\JSCaller .js 得到JSCaller.dll3.在c#项目中引用JSCaller.dll 和...阅读全文
posted @ 2010-10-22 09:22 xhan 阅读(183) 评论(0) 编辑
摘要: 好久没更新了,发个有意思的,可编辑dropdownlist 控件,感觉自己写的挺牛的呵呵。跟大家共享下[代码]实现方法比较简单,用的是组合控件。里面包着TextBox和DropDownList。技巧在于客户端。使用js和css将input正好定位到下拉框上面,遮住下拉框的显示区域,只留下下箭头区域。ie6下还得使用iframe来遮挡select.经测试在ie6先显示完美。ie8,获取显示有点小问题...阅读全文
posted @ 2010-10-16 23:49 xhan 阅读(450) 评论(0) 编辑
摘要: 代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/*弹出窗口定位到浏览器中间1.show(options{height:高度width:宽度speed:渐显时间默认0container:包含的html内容的jquery对象model:是否是模态窗口...阅读全文
posted @ 2010-08-24 19:14 xhan 阅读(504) 评论(0) 编辑
摘要: 代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/*模态遮罩层单例对象opacity:背景透明度1.show()2.close()*/Q.Overlay=function(opacity){varself=this;self._createDiv=...阅读全文
posted @ 2010-08-24 19:07 xhan 阅读(670) 评论(0) 编辑
摘要: /Files/xhan/MicrosoftSQLServer2008Internals.pdf顺便推荐一个计算机电子书网站 http://www.ppurl.com 上面好多挺多的。注册验证码也可有意思了!阅读全文
posted @ 2010-07-22 14:23 xhan 阅读(142) 评论(3) 编辑
摘要: 在asp.net中我们可以把我们的一些静态数据通过Cache来缓存,已提高网站性能。下面是msdn上一个使用Cache的例子。其中有可很意思的功能是我们可以给缓存项指定一个回调,当缓存项被remove的时候将调用回调方法通知我们。我们公司的一个应用使用了这个方法用来缓存对数据库的一些更新,来避免频繁操作数据库已提高性能。当缓存被清除的时候在调用回调吧缓存的数据集中写入数据库。这种方法当并发访问量大...阅读全文
posted @ 2010-07-21 15:07 xhan 阅读(264) 评论(0) 编辑
昵称:xhan
园龄:4年7个月
粉丝:18
关注:2

<2012年1月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

搜索

 

常用链接

最新随笔

我的标签

随笔分类

随笔档案

好友博客

积分与排名

  • 积分 - 39285
  • 排名 - 2717

最新评论

阅读排行榜

评论排行榜

推荐排行榜