<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[puts "hello saint!"]]></title><description><![CDATA[rubyer]]></description><link>https://blog.youkuaiyun.com/saint1126</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; saint1126]]></copyright><item><title><![CDATA[由erlang的递归理解数组的全排列问题]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/9465135</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/9465135</guid><author>saint1126</author><pubDate>Thu, 25 Jul 2013 10:31:57 +0800</pubDate><description><![CDATA[数组或字符串的全排列是一个比较常见的面试题。


例如“abc”=>abc, acb, bac, bca, cab, cba六种。


上面我的写法是将首字符在【a,b,c】中循环使用，固定了首字符，次字符在【a，b，c】 - 【{首字符}】中循环，第三位依次推到。看下erlang的递归实现


module(lib_misc).
-export([perms/1]).

per]]></description><category></category></item><item><title><![CDATA[erlang 的快排递归]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/9464945</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/9464945</guid><author>saint1126</author><pubDate>Thu, 25 Jul 2013 10:15:33 +0800</pubDate><description><![CDATA[看了erlang编程快两遍了，最近工作交接任务完成了，顺便再看下erlang，虽然以后不知道能不能用到这门语言，我却被他的设计哲学所折服。


看下erlang递归实现快排的代码，十分精简。



-module(lib_misc).
-export([qsort/1]).


qsort([]) -> [];
qsort([Pivot|T]) -> 
	qsort([X|| X <]]></description><category></category></item><item><title><![CDATA[hbase权威指南阅读随手笔记二之过滤器]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/8257941</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/8257941</guid><author>saint1126</author><pubDate>Tue, 04 Dec 2012 23:19:11 +0800</pubDate><description><![CDATA[base过滤器的比较操作符：




LESS  
LESS_OR_EQUAL 
EQUAL =
NOT_EQUAL 
GREATER_OR_EQUAL >=
GREATER >
NO_OP no operation



比较器：




BinaryComparator  按字节索引顺序比较指定字节数组，采用Bytes.compareTo(byte[])]]></description><category></category></item><item><title><![CDATA[hbase权威指南阅读随手笔记<1>]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/8244507</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/8244507</guid><author>saint1126</author><pubDate>Fri, 30 Nov 2012 17:57:27 +0800</pubDate><description><![CDATA[1、关于delete marker的问题。(p24)


hbase的delete命令，并不是真的删除了文件，而是设置一个标记（delete marker）。用户在检索数据的时候，会过滤掉这些标示的数据。


HBase的删除标记有三种：

1. version delete marker 删除指定version的某个qualifier对应的value
2. column del]]></description><category></category></item><item><title><![CDATA[maven导入本地jar包]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/7353846</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/7353846</guid><author>saint1126</author><pubDate>Wed, 14 Mar 2012 17:17:19 +0800</pubDate><description><![CDATA[mvn install:install-file -DgroupId=com.googlecode.javapns -DartifactId=javaPNS -Dversion=2.2 -Dfile=/home/saint/mycode/javapns2-2/JavaPNS_2.2.jar -Dpackaging=jar -DgeneratePom=true]]></description><category></category></item><item><title><![CDATA[Ruby 解析rss源]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/7277573</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/7277573</guid><author>saint1126</author><pubDate>Mon, 20 Feb 2012 22:25:44 +0800</pubDate><description><![CDATA[针对一些是gb2312编码的文章。
require 'rubygems'


require "mysql2"
require 'logger'
require 'json'




__DIR__ = File.dirname(__FILE__)


$LOAD_PATH.unshift __DIR__ unless
  $LOAD_PATH.include?(__DIR__) ||
  $L]]></description><category></category></item><item><title><![CDATA[mysql binlog event类型]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6906670</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6906670</guid><author>saint1126</author><pubDate>Wed, 26 Oct 2011 12:31:36 +0800</pubDate><description><![CDATA[http://forge.mysql.com/wiki/MySQL_Internals_Binary_Log#Event_Data_for_Specific_Event_Types




The following descriptions briefly summarize the meaning of each event type:

UNKNOWN_EVENT
This]]></description><category></category></item><item><title><![CDATA[apt-get的文件地址]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6888719</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6888719</guid><author>saint1126</author><pubDate>Wed, 19 Oct 2011 19:06:58 +0800</pubDate><description><![CDATA[/var/lib/dpkg/status]]></description><category></category></item><item><title><![CDATA[redis的pre-sharding(预分布式)]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6317029</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6317029</guid><author>saint1126</author><pubDate>Tue, 12 Apr 2011 01:24:00 +0800</pubDate><description><![CDATA[<br />       最近的项目进度比较紧，同步了几个项目，很少做总结，特别喜欢在github上review代码，字体很好，也很清晰。这个项目是实现redis的分布式设计的，之前的一个版本是按照http://www.ooso.net/archives/549
的light cloud的原理实现的，并对get，set做了hset，hget的改进，使得占内存2.4g的key降低到了700M。不过经过每次查询都要经过两次IO，实在是浪费，实测简单的set，get只能达到4000k/s左右，实在是低下。<br]]></description><category></category></item><item><title><![CDATA[lighttpd + fastdfs + imagemagick实现的图片缩放图的分布式存储]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6317012</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6317012</guid><author>saint1126</author><pubDate>Tue, 12 Apr 2011 01:01:00 +0800</pubDate><description><![CDATA[        主要解决动态的实现订制缩略图的大小服务，同时提供正常的图片获取服务，采用fastdfs分布式存储，同时采用lightttpd作为应用服务器，前端的web服务器可以用nginx或者apache做web服务器，我写了mod_fastdfs作为lighttpd的fastdfs的模块，模块内集成了imagemagick，可以通过文件名加上高度，和宽度的组合来获取不能尺寸的图片。例如：http://124.126.42.12:8000/group1/M00/00/0D/2-vktU2i8waqcckq]]></description><category></category></item><item><title><![CDATA[我的开源项目地址-memagent]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6272169</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6272169</guid><author>saint1126</author><pubDate>Wed, 23 Mar 2011 19:57:00 +0800</pubDate><description><![CDATA[https://github.com/wangmh/memagentmemagent是基于http://code.google.com/p/memagent/来实现的。根据自己的应用做了如下的改动:1、修正了内存泄露的bug2、修正了ketama一致性hash算法的bug3、实现了不停掉memagent，平滑修改配置文件，修改后端的memcached4、修正了当代理的后端服务器down掉的时候，前端阻塞的问题。-------------------------------------------------]]></description><category></category></item><item><title><![CDATA[C语言中如何使用宏 包括单双井号 可变参数]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6218946</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6218946</guid><author>saint1126</author><pubDate>Wed, 02 Mar 2011 19:07:00 +0800</pubDate><description><![CDATA[C（和C++）中的宏（Macro）属于编译器预处理的范畴，属于编译期概念（而非运行期概念）。下面对常遇到的宏的使用问题做了简单总结。
关 于#和##
在C语言的宏中，#的功能是将其后面的宏参数进行字符串化操作（Stringfication），简单说就是在对它所引用的宏 变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏：
#define WARN_IF(EXP)    /
do{ if (EXP)    /
fprintf(stderr, "Warning: " #EXP  "/n"); ]]></description><category></category></item><item><title><![CDATA[fedora13 的安装指导]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6218349</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6218349</guid><author>saint1126</author><pubDate>Wed, 02 Mar 2011 15:41:00 +0800</pubDate><description><![CDATA[<br />http://www.mjmwired.net/resources/mjm-fedora-f13.html<br /> ]]></description><category></category></item><item><title><![CDATA[关于memagent的一个bug]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6212305</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6212305</guid><author>saint1126</author><pubDate>Mon, 28 Feb 2011 02:25:00 +0800</pubDate><description><![CDATA[<br />    前几天介绍的mqagent是为memcaheq服务的，写完第二版的蜡笔连接业务后，通过检测memcacheq的队列，发现后端的两台memcacheq的比例严重失调，其中一个都达到了20166355/20166355，而另一个却只有40697/40697。比例500：1.<br />    虽然memagent中使用了ketama的一致性hash算法，比例却如此失调，看来ketama算法的实现上出现了问题。通过研究一致性hash算法，分别针对libketama库，和memagent自身实现]]></description><category></category></item><item><title><![CDATA[redis的数据库设计]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6203834</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6203834</guid><author>saint1126</author><pubDate>Wed, 23 Feb 2011 23:51:00 +0800</pubDate><description><![CDATA[<br />http://labs.alcacoop.it/doku.php?id=articles:redis_land]]></description><category></category></item><item><title><![CDATA[Mqagent-1.0说明文档]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6175601</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6175601</guid><author>saint1126</author><pubDate>Wed, 09 Feb 2011 15:32:00 +0800</pubDate><description><![CDATA[1       
Mqagent的用途Mqagent是为了适应分布式memcachq的需求，在magent基础上进行二次开发形成，因为其时专门为memcacheq服务的，因此我命名为mqagent。其作为代理层，隔离了开发者和后端的多个memcachq server，使得后端对开发者透明，开发人员只需要和代理层，依据memcache的协议进行消息队列的get/set操作即可。2       
Mqagent使用流程1、开发者申请一个消息队列名称，例如msg_deliver_email, 该消息队列主要用]]></description><category></category></item><item><title><![CDATA[glib的升级]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6147169</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6147169</guid><author>saint1126</author><pubDate>Mon, 17 Jan 2011 16:06:00 +0800</pubDate><description><![CDATA[<br />在写蜡笔链接业务的时候和mecacheq的分布式的时候都用到了glib库的hashtable数据结构, 使用了遍历其中所有的键值g_hash_table_get_keys()函数,该函数是glib2.12以后才支持, 服务器上的是glib2.6,版本比较低了,所以打算升级下, wget http://ftp.gnome.org/pub/GNOME/sources/glib/2.26/glib-2.26.1.tar.gz
tar xvzf glib-2.26.1.tar.gz 
cd glib]]></description><category></category></item><item><title><![CDATA[strtok_r需要注意的地方]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6128824</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6128824</guid><author>saint1126</author><pubDate>Tue, 11 Jan 2011 13:02:00 +0800</pubDate><description><![CDATA[年底了，需要交个demo了，上个星期4天完成了2400+行c代码，包括周五到测试，感觉很有成就感，不过还是觉得c太过于研发性了，数据结构都要自己去实现。在项目中，分割字符串，使用了strtok_r函数，该函数主要是分割字符串使用的。
例如我想切分 字符串“hello world/wangmh” 根据里面到空格和/分割字符串，分割出到结果应该为 
hello 
world
wangmh
上]]></description><category></category></item><item><title><![CDATA[Linux 多线程应用中如何编写安全的信号处理函数 ]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6127779</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6127779</guid><author>saint1126</author><pubDate>Mon, 10 Jan 2011 20:33:00 +0800</pubDate><description><![CDATA[<br />http://www.ibm.com/developerworks/cn/linux/l-cn-signalsec/]]></description><category></category></item><item><title><![CDATA[说说技术型创业团队的技术选型]]></title><link>https://blog.youkuaiyun.com/saint1126/article/details/6119785</link><guid>https://blog.youkuaiyun.com/saint1126/article/details/6119785</guid><author>saint1126</author><pubDate>Thu, 06 Jan 2011 11:25:00 +0800</pubDate><description><![CDATA[<br /><br />看到微博上《程序员杂志》在征集"一分钟先生"的话题：如何做好公司/团队的技术选型？其实大公司或者大一点的团队选型几乎不需要太多讨论的 -- 最后会不可避免的绕到技术官僚的话题上去。这里我想简单说说技术型创业团队技术上的选型问题。<br />拥抱开源技术<br />如果只能选择微软的技术路线，比如团队几个人只会用微软的技术做开发，甚至也不想学别的，那么似乎没有别的办法，将就一下吧。如果还有的选择，尽量选择使用开源技术。这样的好处是你不但可以有效的降低软硬件成本，还有更多的部署方案供选择]]></description><category></category></item></channel></rss>