<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/podcast2.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" version="2.0"><channel><atom:link href="http://feed.feedsky.com/dengmin" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/dengmin" type="application/rss+xml"></fs:self_link><lastBuildDate>Mon, 12 Dec 2011 11:16:59 GMT</lastBuildDate><title>dengmin's blog 邓敏的窝</title><description>人可以走在黑暗里，但心中不能没有阳光。</description><link>http://iyouf.infoiyouf.info</link><language>zh-cn</language><pubDate>Mon, 12 Dec 2011 11:16:59 GMT</pubDate><item><title>java-字节单位的换算</title><link>http://item.feedsky.com/~feedsky/dengmin/~8358611/586434818/6462131/1/item.html</link><description>&lt;pre class=&quot;prettyprint&quot;&gt; public static String HumanFilesize(double size){
    	DecimalFormat df = new DecimalFormat(&quot;###.##&quot;);
    	String[] units = new String[]{&quot;B&quot;,&quot;KB&quot;,&quot;MB&quot;,&quot;GB&quot;,&quot;TB&quot;,&quot;PB&quot;};
    	double mod = 1024.0;
    	int i=0;
    	for (i = 0; size &amp;gt;= mod; i++) {
            size /= mod;
        }
    	return df.format(new Float(size).doubleValue())+units[i];
    }

public static void main(String[] args) {
		System.out.println(StringUtils.HumanFilesize(274947));
		
	}
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;输出 ： 268.5KB&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/586434818/dengmin/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dengmin/~8358611/586434818/6462131/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Mon, 12 Dec 2011 19:16:59 +0800</pubDate><guid isPermaLink="false">http://iyouf.info/java-byte-unit-convert.html</guid><fs:srclink>http://iyouf.info/java-byte-unit-convert.html</fs:srclink><fs:srcfeed>http://www.iyouf.info/feed</fs:srcfeed><fs:itemid>feedsky/dengmin/~8358611/586434818/6462131</fs:itemid></item><item><title>E: 无法获得锁 /var/cache/apt/archives/lock - open (11: 资源暂时不可用)</title><link>http://item.feedsky.com/~feedsky/dengmin/~8358611/586434819/6462131/1/item.html</link><description>&lt;p&gt;现象&lt;br /&gt;ubuntu现在使用的软件u源用的是163的镜像，不知道为什么今天的下载速度真的叫慢&lt;br /&gt;然后我直接ctrl+c取消下载 之后换上sohu的软件源 进行apt-get update的时候就出现&lt;br /&gt;E: 无法获得锁 /var/cache/apt/archives/lock - open (11: 资源暂时不可用)&lt;br /&gt;E: 无法对目录 /var/cache/apt/archives/ 加锁&lt;br /&gt;&lt;br /&gt;解决办法&lt;br /&gt;sudo rm /var/cache/apt/archives/lock&lt;br /&gt;sudo rm /var/lib/dpkg/lock&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/586434819/dengmin/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dengmin/~8358611/586434819/6462131/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Sat, 15 Oct 2011 13:30:13 +0800</pubDate><guid isPermaLink="false">http://iyouf.info/ubuntu-apt-lock.html</guid><fs:srclink>http://iyouf.info/ubuntu-apt-lock.html</fs:srclink><fs:srcfeed>http://www.iyouf.info/feed</fs:srcfeed><fs:itemid>feedsky/dengmin/~8358611/586434819/6462131</fs:itemid></item><item><title>mysql编码问题</title><link>http://item.feedsky.com/~feedsky/dengmin/~8358611/586434820/6462131/1/item.html</link><description>&lt;p&gt;最近碰到mysql数据库编码的问题，在ubuntu下安装完mysql后 ，其默认的编码是latin1 。&lt;/p&gt;
&lt;p&gt;在进行数据库操作时，如果数据包含中文，就会出现严重的乱码问题。&lt;/p&gt;
&lt;p&gt;mysql的中文乱码真的是个头痛的问题。&lt;/p&gt;
&lt;p&gt;下面就简单记录一下如何把latin1编码该成utf8&lt;/p&gt;
&lt;p&gt;vi 编辑 mysql配置文件 /etc/mysql/my.cnf&lt;/p&gt;
&lt;p&gt;分别在[client]和[mysqld]节点下添加&lt;/p&gt;
&lt;p&gt;default-character-set = utf8&lt;/p&gt;
&lt;p&gt;或者用mysql命令修改字符集&lt;/p&gt;
&lt;p&gt;使用 mysql&amp;gt; SHOW VARIABLES LIKE 'character%'; 可以发现这里面的字符编码都是latin1&lt;/p&gt;
&lt;p&gt;接着就是一个一个的修改字符集&lt;/p&gt;
&lt;p&gt;SET character_set_client = utf8 ;&lt;/p&gt;
&lt;p&gt;SET character_set_connection = utf8 ;&lt;/p&gt;
&lt;p&gt;SET character_set_database = utf8;&lt;/p&gt;
&lt;p&gt;....&lt;/p&gt;
&lt;p&gt;修改完之后最好重启mysql&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;第二个问题是 在删除数据库的时候出现这么一个问题&lt;/p&gt;
&lt;p&gt;ERROR 1010 (HY000): Error dropping database (can't rmdir './jetspeed2', errno: 39)&lt;/p&gt;
&lt;p&gt;这个问题也好解决切换到mysql的数据库目录&lt;/p&gt;
&lt;p&gt;cd /var/lib/mysql&lt;/p&gt;
&lt;p&gt;找到jetspeed2目录 删除该目录下所有的文件 rm -fr jetspeed2/*&lt;/p&gt;
&lt;p&gt;然后在mysql命令行中就可以正常的删除该数据库了 drop database jetspeed2&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/586434820/dengmin/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dengmin/~8358611/586434820/6462131/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Sun, 09 Oct 2011 13:23:34 +0800</pubDate><guid isPermaLink="false">http://iyouf.info/mysql-encoding-latin1-to-utf8.html</guid><fs:srclink>http://iyouf.info/mysql-encoding-latin1-to-utf8.html</fs:srclink><fs:srcfeed>http://www.iyouf.info/feed</fs:srcfeed><fs:itemid>feedsky/dengmin/~8358611/586434820/6462131</fs:itemid></item><item><title>远程登陆ssh服务器太慢的问题</title><link>http://item.feedsky.com/~feedsky/dengmin/~8358611/586434821/6462131/1/item.html</link><description>&lt;p&gt;sshd在接受客户端链接的时候会反向解析客户端的ip以得到客户端的域名或主机名，&lt;/p&gt;
&lt;p&gt;如果这个时候 DNS 的反向解析不正确，sshd 就会等到 DNS 解析超时后才提供 ssh 连接，&lt;/p&gt;
&lt;p&gt;这样就造成连接时间过长、ssh 客户端等待的情况，一般为10-30秒左右。&lt;/p&gt;
&lt;p&gt;要解决这个问题也不难。&lt;/p&gt;
&lt;p&gt;vi /etc/ssh/sshd_config&lt;/p&gt;
&lt;p&gt;在文件中查找UseDNS&lt;/p&gt;
&lt;p&gt;没有的话自己加上 ，把它的值改为no&lt;/p&gt;
&lt;p&gt;UseDNS no&lt;/p&gt;
&lt;p&gt;重启ssh即可 /etc/init.d/ssh restart&lt;/p&gt;
&lt;p&gt;参考 &lt;a href=&quot;http://www.openssh.com/faq.html#3.3&quot;&gt;3.3 - ssh(1) takes a long time to connect or log in&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/586434821/dengmin/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dengmin/~8358611/586434821/6462131/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Wed, 14 Sep 2011 08:57:54 +0800</pubDate><guid isPermaLink="false">http://iyouf.info/openssh-connect_too-slow.html</guid><fs:srclink>http://iyouf.info/openssh-connect_too-slow.html</fs:srclink><fs:srcfeed>http://www.iyouf.info/feed</fs:srcfeed><fs:itemid>feedsky/dengmin/~8358611/586434821/6462131</fs:itemid></item><item><title>[youflog]更新小记</title><link>http://item.feedsky.com/~feedsky/dengmin/~8358611/586434822/6462131/1/item.html</link><description>&lt;p&gt;这几天对youflog来了次更新，主要有一下几点：&lt;/p&gt;
&lt;p&gt;添加了缓存 使用的是pylibmc&lt;/p&gt;
&lt;p&gt;后台的评论部分 删除和标示是否为spam使用ajax的方式&lt;/p&gt;
&lt;p&gt;后台文章管理 删除文章使用的也是ajax&lt;/p&gt;
&lt;p&gt;添加了清空缓存的小链接 清空memcached的缓存和static/avator目录下面的头像文件&lt;/p&gt;
&lt;p&gt;为了实现category的分级 给Category model加另外一个parent字段&lt;/p&gt;
&lt;p&gt;使用mptt组件来展现category树&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Wap页面加入缓存&lt;/p&gt;
&lt;p&gt;验证码加了线条和点来防止spam&lt;/p&gt;
&lt;p&gt;还有一些页面元素的调整....&lt;/p&gt;
&lt;p&gt;分类目录实现分级后的效果可以看看&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://commondatastorage.googleapis.com/youflog/category_tree.png&quot; alt=&quot;category&quot; width=&quot;283&quot; height=&quot;259&quot; /&gt;&lt;/p&gt;
&lt;p&gt;---------------------------------------------------&lt;/p&gt;
&lt;p&gt;在使用django的开发中越来越发现django的不灵活，以后有空的话用web.py+SQLAlchemy重写一遍&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/586434822/dengmin/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dengmin/~8358611/586434822/6462131/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Wed, 20 Jul 2011 15:06:50 +0800</pubDate><guid isPermaLink="false">http://iyouf.info/youflog-update-110720.html</guid><fs:srclink>http://iyouf.info/youflog-update-110720.html</fs:srclink><fs:srcfeed>http://www.iyouf.info/feed</fs:srcfeed><fs:itemid>feedsky/dengmin/~8358611/586434822/6462131</fs:itemid></item><item><title>django中使用缓存pylibmc</title><link>http://item.feedsky.com/~feedsky/dengmin/~8358611/586434823/6462131/1/item.html</link><description>&lt;p&gt;pylibmc昨天已经安装好了，并且小试了一把。今天就想把pylibmc用到youflog中。&lt;/p&gt;
&lt;p&gt;如果django的版本是1.2或者之前的话 可以去下载&lt;a href=&quot;https://github.com/jbalogh/django-pylibmc&quot;&gt;django-pylibmc&lt;/a&gt;的组件 并且安装起来&lt;/p&gt;
&lt;p&gt;使用的方法也很简单 在settings.py中配置&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;CACHE_BACKEND = 'django_pylibmc.memcached://localhost:11211?timeout=500&amp;amp;binary=1'&lt;/pre&gt;
&lt;p&gt;如果想使用pylibmc的behaviors,还需要配置这个参数&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;PYLIBMC_BEHAVIORS = {'tcp_nodelay': True, 'ketama': True}&lt;/pre&gt;
&lt;p&gt;这样就完成了对pyblicmc的配置&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;在程序中使用cache就方便了&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;from django.core.cache import cache

cache.set(key,value)
cache.get(key)
cache.delete(key)&lt;/pre&gt;
&lt;p&gt;然而在django升级到1.3的时候 pylibmc就已经被支持了，而且settings中的这个变量CACHE_BACKEND就已经被deprecated了&lt;/p&gt;
&lt;p&gt;还有一些被depardcated的变量可以参考这里 &lt;a href=&quot;https://docs.djangoproject.com/en/1.3/ref/settings/#deprecated-settings&quot;&gt;Deprecated settings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;取而带之的是CACHES变量 该变量的值是一个字典类型&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': [
            '172.19.26.240:11211',
            '172.19.26.242:11211',
        ]
    }
}&lt;/pre&gt;
&lt;p&gt;当前需要使用的是pylibmc所以 需要把上面的BACKEND替换成django.core.cache.backends.memcached.PyLibMCCache&lt;/p&gt;
&lt;p&gt;pylibmc的behaviors 需要在CACHES添加一个OPTIONS 即可&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
        'LOCATION': '127.0.0.1:11211',
        'TIMEOUT':500,
        'OPTIONS':{
            'binary':1,
            'tcp_nodelay':True,
            'ketama':True
        },
    }
}&lt;/pre&gt;
&lt;p&gt;youflog中已经把缓存加上了，貌似比以前快了很多&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/586434823/dengmin/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dengmin/~8358611/586434823/6462131/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Fri, 15 Jul 2011 14:48:09 +0800</pubDate><guid isPermaLink="false">http://iyouf.info/django-using-pylibmc.html</guid><fs:srclink>http://iyouf.info/django-using-pylibmc.html</fs:srclink><fs:srcfeed>http://www.iyouf.info/feed</fs:srcfeed><fs:itemid>feedsky/dengmin/~8358611/586434823/6462131</fs:itemid></item><item><title>拿福能千人大挑战</title><link>http://item.feedsky.com/~feedsky/dengmin/~8358611/586434824/6462131/1/item.html</link><description>&lt;p&gt;这几天才慢慢回复博客的更新，顺便走访了一写博友，发现都参加了拿福能千人挑战的送钱活动。&lt;/p&gt;
&lt;p&gt;活动页面链接：&amp;nbsp;&lt;a style=&quot;outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;&quot; title=&quot;拿福能千人挑战&quot; href=&quot;http://www.nuffnang.com.cn/blog/2011/05/23/challenge-1000&quot; target=&quot;_blank&quot;&gt;http://www.nuffnang.com.cn/blog/2011/05/23/challenge-1000&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;博主人数达到1000人后，所有博主平分50000元，就是每个人有50元的收益。想参加的博主就赶快加入吧。&lt;/p&gt;
&lt;p&gt;从活动链接可以看到此次活动是从5.23好开始的，人数已经达到645位了，看来要达到1000人还需要些日子。&lt;/p&gt;
&lt;p&gt;各位踊跃一点吧&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/586434824/dengmin/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dengmin/~8358611/586434824/6462131/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Fri, 15 Jul 2011 10:54:39 +0800</pubDate><guid isPermaLink="false">http://iyouf.info/nafuneng-challenge-1000.html</guid><fs:srclink>http://iyouf.info/nafuneng-challenge-1000.html</fs:srclink><fs:srcfeed>http://www.iyouf.info/feed</fs:srcfeed><fs:itemid>feedsky/dengmin/~8358611/586434824/6462131</fs:itemid></item><item><title>memcached的python客户端pylibmc安装与使用</title><link>http://item.feedsky.com/~feedsky/dengmin/~8358611/586434825/6462131/1/item.html</link><description>&lt;p&gt;memcache 昨天已经在本机上安装好了 请看&lt;a href=&quot;http://iyouf.info/install-memcache.html&quot;&gt;安装memcached&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;google了一下memcached的python库 主要有一下几个&lt;/p&gt;
&lt;p&gt;&lt;a style=&quot;color: #006699; text-decoration: underline;&quot; href=&quot;ftp://ftp.tummy.com/pub/python-memcached/&quot; target=&quot;_blank&quot;&gt;python-memcached&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a style=&quot;color: #006699; text-decoration: underline;&quot; href=&quot;http://gijsbert.org/cmemcache/index.html&quot; target=&quot;_blank&quot;&gt;cmemcache&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a style=&quot;color: #006699; text-decoration: underline;&quot; href=&quot;http://code.google.com/p/python-libmemcached/&quot; target=&quot;_blank&quot;&gt;python-libmemcached&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a style=&quot;color: #006699; text-decoration: underline;&quot; href=&quot;http://pypi.python.org/pypi/pylibmc&quot;&gt;pylibmc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;真对这些客户端的性能测试，有大虾已经测试过了&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.iteye.com/topic/341763&quot;&gt;http://www.iteye.com/topic/341763&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.sendapatch.se/2008/november/pylibmc-051.html&quot;&gt;http://blog.sendapatch.se/2008/november/pylibmc-051.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://amix.dk/blog/viewEntry/19471&quot;&gt;http://amix.dk/blog/viewEntry/19471&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;从各个测试的结果来看 python-memcached的性能最差，pylibmc的最好，而且cmemcache也还不错。&lt;/p&gt;
&lt;p&gt;当然选择最好的这个库pylibmc,pylibmc是用c写的一个快速而且小巧的一个memcached客户端&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;下载pylibmc 下载地址 &lt;a href=&quot;http://pypi.python.org/pypi/pylibmc#downloads&quot;&gt;http://pypi.python.org/pypi/pylibmc#downloads&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;因为pylibmc是构建在libmemcached之上，所以还需要下载libmemcached&lt;/p&gt;
&lt;p&gt;libmemcached的下载地址 &lt;a href=&quot;http://libmemcached.org/libMemcached.html&quot;&gt;http://libmemcached.org/libMemcached.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;怎么安装 我就不说的 libmemcached的安装时按照那个三部曲来的 ./configure make make install&lt;/p&gt;
&lt;p&gt;pylibmc 则是按照python库的安装 python setup.py install&lt;/p&gt;
&lt;p&gt;ubuntu下安装就更简单：apt-get install python-pylibmc 当然它也会把libmemcached一快安装上的&lt;/p&gt;
&lt;p&gt;接下来说说pylibmc的使用&lt;/p&gt;
&lt;p&gt;创建一个memcached的连接&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;import pylibmc
&amp;gt;&amp;gt;&amp;gt; mc = pylibmc.Client([&quot;127.0.0.1&quot;], binary=True)
&amp;gt;&amp;gt;&amp;gt; mc.behaviors = {&quot;tcp_nodelay&quot;: True, &quot;ketama&quot;: True}&lt;/pre&gt;
&lt;p&gt;处理memcached缓存的基本方法&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&amp;gt;&amp;gt;&amp;gt; mc[&quot;admin&quot;] = &quot;dengm&quot;
&amp;gt;&amp;gt;&amp;gt; mc[&quot;admin&quot;]
'Some value'
&amp;gt;&amp;gt;&amp;gt; del mc[&quot;admin&quot;]
&amp;gt;&amp;gt;&amp;gt; &quot;admin&quot; in mc
False&lt;/pre&gt;
&lt;p&gt;当然这种写法一点也不符合我们的一贯写法，pylibmc还可以这样写&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&amp;gt;&amp;gt;&amp;gt; mc.set(&quot;database&quot;, &quot;mysql&quot;)
True
&amp;gt;&amp;gt;&amp;gt; value = mc.get(&quot;database&quot;)
&amp;gt;&amp;gt;&amp;gt; value
'mysql'
&amp;gt;&amp;gt;&amp;gt; mc.set(&quot;number&quot;, 33)
True
&amp;gt;&amp;gt;&amp;gt; mc.delete(&quot;number&quot;)
True
&amp;gt;&amp;gt;&amp;gt; mc.set(&quot;key&quot;, &quot;1&quot;)
True&lt;/pre&gt;
&lt;p&gt;批量数据的操作&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&amp;gt;&amp;gt;&amp;gt; mc.get_multi([&quot;key&quot;, &quot;another_key&quot;])
{'key': '1'}
&amp;gt;&amp;gt;&amp;gt; mc.set_multi({&quot;cats&quot;: [&quot;on acid&quot;, &quot;furry&quot;], &quot;dogs&quot;: True})
[]
&amp;gt;&amp;gt;&amp;gt; mc.get_multi([&quot;cats&quot;, &quot;dogs&quot;])
{'cats': ['on acid', 'furry'], 'dogs': True}
&amp;gt;&amp;gt;&amp;gt; mc.delete_multi([&quot;cats&quot;, &quot;dogs&quot;, &quot;nonextant&quot;])
False&lt;/pre&gt;
&lt;p&gt;更多的api可以参考 &lt;a href=&quot;http://sendapatch.se/projects/pylibmc/reference.html&quot;&gt;http://sendapatch.se/projects/pylibmc/reference.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接下来 我打算把pylibmc也集成到youflog中来。看看集成了缓存的youflog能否快一点&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/586434825/dengmin/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dengmin/~8358611/586434825/6462131/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Thu, 14 Jul 2011 16:37:17 +0800</pubDate><guid isPermaLink="false">http://iyouf.info/memcached-client-pylibmc.html</guid><fs:srclink>http://iyouf.info/memcached-client-pylibmc.html</fs:srclink><fs:srcfeed>http://www.iyouf.info/feed</fs:srcfeed><fs:itemid>feedsky/dengmin/~8358611/586434825/6462131</fs:itemid></item><item><title>安装memcached</title><link>http://item.feedsky.com/~feedsky/dengmin/~8358611/586434826/6462131/1/item.html</link><description>&lt;p&gt;现在许多web应用都是吧数据存放到数据库中，然后web应用从数据库中读取数据并将其显示到浏览器中。&lt;/p&gt;
&lt;p&gt;但是随着访问量的增加，数据量的增大。就会给数据库造成负担，数据相应缓慢，浏览器显示延迟等问题。&lt;/p&gt;
&lt;p&gt;这时候 我们都会想到使用缓存。通过把数据库中查询的结果缓存起来，减少数据库的访问次数，来提高Web app的相应速度等。&lt;/p&gt;
&lt;p&gt;其中memcached就是缓存中的皎皎者。&lt;/p&gt;
&lt;p&gt;Memcached是danga.com（运营LiveJournal的技术团队）开发的一套分布式内存对象缓存系统，用于在动态系统中减少数据库负载，提升性能.&lt;/p&gt;
&lt;p&gt;memcached作为高速运行的分布式缓存服务器，具有以下的特点。&lt;/p&gt;
&lt;ul style=&quot;padding-left: 16px; margin-left: 16px;&quot;&gt;
&lt;li&gt;协议简单&lt;/li&gt;
&lt;li&gt;基于libevent的事件处理&lt;/li&gt;
&lt;li&gt;内置内存存储方式&lt;/li&gt;
&lt;li&gt;memcached不互相通信的分布式&lt;!--more--&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;memcached的服务器客户端通信并不使用复杂的XML等格式， 而使用简单的基于文本行的协议。因此，通过telnet 也能在memcached上保存数据、取得数据.&lt;/p&gt;
&lt;p&gt;libevent是个程序库，它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能 封装成统一的接口。即使对服务器的连接数增加，也能发挥O(1)的性能。 memcached使用这个libevent库，因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。 关于事件处理这里就不再详细介绍，可以参考Dan Kegel的The C10K Problem。&lt;/p&gt;
&lt;ul class=&quot;list1&quot; style=&quot;padding-left: 16px; margin-left: 16px;&quot;&gt;
&lt;li&gt;&lt;strong&gt;libevent&lt;/strong&gt;:&amp;nbsp;&lt;a style=&quot;text-decoration: none;&quot; href=&quot;http://www.monkey.org/~provos/libevent/&quot;&gt;http://www.monkey.org/~provos/libevent/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The C10K Problem&lt;/strong&gt;:&amp;nbsp;&lt;a style=&quot;text-decoration: none;&quot; href=&quot;http://www.kegel.com/c10k.html&quot;&gt;http://www.kegel.com/c10k.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安装Memcache&lt;/p&gt;
&lt;p&gt;因为Memcached依赖 libevent库,所以在使用apt-get install memcached的时候 也会把libevent一起装上&lt;/p&gt;
&lt;p&gt;安装完成之后memcached就已经自动运行起来了&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 167px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;root@ubuntu:~# ps -ef |grep memcached&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 167px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;memcache &amp;nbsp; 980 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp;0 Jul12 ? &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;00:00:02 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 167px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;root &amp;nbsp; &amp;nbsp; &amp;nbsp;5653 &amp;nbsp;5641 &amp;nbsp;0 15:37 pts/5 &amp;nbsp; &amp;nbsp;00:00:00 grep --color=auto memcached&lt;/div&gt;
&lt;p&gt;root@ubuntu:~# ps -ef |grep memcache&lt;/p&gt;
&lt;p&gt;memcache &amp;nbsp; 980 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp;0 Jul12 ? &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;00:00:02 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1&lt;/p&gt;
&lt;p&gt;root &amp;nbsp; &amp;nbsp; &amp;nbsp;5653 &amp;nbsp;5641 &amp;nbsp;0 15:37 pts/5 &amp;nbsp; &amp;nbsp;00:00:00 grep --color=auto memcached&lt;/p&gt;
&lt;p&gt;memcache监听tcp端口11211 而且最大的内存使用是64M&lt;/p&gt;
&lt;p&gt;如果要作为后台进程启动 只需加 -d 参数就行&lt;/p&gt;
&lt;p&gt;/usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1 -d&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: 宋体, Arial; line-height: 19px;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;这里需要说明一下memcached服务的启动参数：&lt;/p&gt;
&lt;p&gt;-p 监听的端口&lt;br /&gt;-l 连接的IP地址, 默认是本机&lt;br /&gt;-d start 启动memcached服务&lt;br /&gt;-d restart 重起memcached服务&lt;br /&gt;-d stop|shutdown 关闭正在运行的memcached服务&lt;br /&gt;-d install 安装memcached服务&lt;br /&gt;-d uninstall 卸载memcached服务&lt;br /&gt;-u 以的身份运行 (仅在以root运行的时候有效)&lt;br /&gt;-m 最大内存使用，单位MB。默认64MB&lt;br /&gt;-M 内存耗尽时返回错误，而不是删除项&lt;br /&gt;-c 最大同时连接数，默认是1024&lt;br /&gt;-f 块大小增长因子，默认是1.25-n 最小分配空间，key+value+flags默认是48&lt;br /&gt;-h 显示帮助&lt;/p&gt;
&lt;p&gt;许多语言都实现了memcached的客户端 主要是以perl 和php为主&lt;/p&gt;
&lt;p&gt;但是也有 java,python,ruby,c/c++等实现&lt;/p&gt;
&lt;p&gt;接下来我会使用python的客户端来写点测试例子&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/586434826/dengmin/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dengmin/~8358611/586434826/6462131/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Wed, 13 Jul 2011 15:24:49 +0800</pubDate><guid isPermaLink="false">http://iyouf.info/install-memcache.html</guid><fs:srclink>http://iyouf.info/install-memcache.html</fs:srclink><fs:srcfeed>http://www.iyouf.info/feed</fs:srcfeed><fs:itemid>feedsky/dengmin/~8358611/586434826/6462131</fs:itemid></item><item><title>pr为3了</title><link>http://item.feedsky.com/~feedsky/dengmin/~8358611/586434827/6462131/1/item.html</link><description>&lt;p&gt;很久没有更新博客了，很惭愧！&lt;/p&gt;
&lt;p&gt;今天在7b.cn上无意间看到本域名的pr为3 ，当时心情也是有点鸡东，为了正实一下，登陆到51.la上去看了下&lt;/p&gt;
&lt;p&gt;pr确实是3 而且更新的时间是 06.27号。&lt;/p&gt;
&lt;p&gt;为此特用一文来留念一下 无他。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/586434827/dengmin/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dengmin/~8358611/586434827/6462131/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Mon, 04 Jul 2011 10:36:26 +0800</pubDate><guid isPermaLink="false">http://iyouf.info/pr-is-3.html</guid><fs:srclink>http://iyouf.info/pr-is-3.html</fs:srclink><fs:srcfeed>http://www.iyouf.info/feed</fs:srcfeed><fs:itemid>feedsky/dengmin/~8358611/586434827/6462131</fs:itemid></item></channel></rss>
