华子的代码空间

逆水行舟,不进则退。 关注系统编程、网络编程、并发、分布式。

上一页 1 ··· 4 5 6 7 8 9 10 下一页

2012年7月27日

nagios插件性能数据格式

摘要: nagios的插件分为两个部分:GPING OK – rtt min/avg/max/mdev = 0.897/0.897/0.897/0.000 ms|time=0.897ms;20;40;; ok=1cpu_user:OK-0% cpu_system:OK-0% cpu_idle:WARNING-99>70%|cpu_user=0%;120;90; cpu_system=0%;100;70;cpu_idle=99%;100;70;其中性能数据为|后面的斜体部分,格式如下:'label'=value[UOM];[warn];[crit];[min];[max]注意事项: 阅读全文

posted @ 2012-07-27 00:15 华子的代码空间 阅读(827) 评论(0) 推荐(0) 编辑

2012年7月25日

ubuntu切换lightdm到kdm

摘要: 一条命令即可:sudo dpkg-reconfigure lightdm 阅读全文

posted @ 2012-07-25 10:54 华子的代码空间 阅读(569) 评论(0) 推荐(0) 编辑

2012年7月24日

使用tcp方式连接libvirtd

摘要: Libvirt是一个软件集合,便于使用者管理虚拟机和其他虚拟化功能,比如存储和网络接口管理等等。这些软件包括一个API库、一个daemon(libvirtd)和一个命令行工具(virsh)。Libvirt的主要目标是:提供一种单一的方式管理多种不同的虚拟化提供方式和hypervisor。只要远程服务器运行了libvirtd,libvirt的客户端就可以连接到服务器。使用最简单的SSH方式,只要拥有SSH连接到服务器的权限,就可以无需配置:qemu+ssh://root@example.com/system例如: qemu+ssh://root@172.16.0.12/system ,本机SSH 阅读全文

posted @ 2012-07-24 22:55 华子的代码空间 阅读(4183) 评论(0) 推荐(0) 编辑

2012年7月23日

关于gevent

摘要: 首先,gevent是一个网络库:libevent是一个事件分发引擎,greenlet提供了轻量级线程的支持。所以它不适合处理有长时间阻塞IO的情况。gevent就是基于这两个东西的一个专门处理网络逻辑的并行库。1. gevent.spawn启动的所有协程,都是运行在同一个线程之中,所以协程不能跨线程同步数据。2. gevent.queue.Queue 是协程安全的。3. gevent启动的并发协程,具体到task function,不能有长时间阻塞的IO操作。因为gevent的协程的特点是,当前协程阻塞了才会切换到别的协程。如果当前协程长时间阻塞,则不能显示(gevent.sleep(0),或 阅读全文

posted @ 2012-07-23 15:26 华子的代码空间 阅读(1878) 评论(0) 推荐(0) 编辑

[转]网络服务器中生产者/消费者模型中的队列问题

摘要: 感谢大熊同学为我解惑,这篇帖子的原创权属于大熊。多线程模型的网络服务器中,一般有专门的网络IO线程,将请求放到请求队列中,此为生产者。然后多个工作线程从队列中获取其中一个请求,进行处理,此是消费者。通常,通讯使用的队列为锁无关队列。且,为了避免CPU耗慢,当工作线程发现队列为空的时候,要睡眠一会儿。要命的问题就出在这个睡眠上:1、假设睡眠的时间是10ms,则当队列为空时,所有工作线程都陆续进入睡眠状态;2、假设工作线程睡眠期间来了请求,则可能队列中的所有请求都会被延迟10ms才能处理到;3、在整个服务器的运行周期里,队列为空的几率非常大,因此导致工作线程睡眠的几率也非常大。毫无疑问,用以上的方 阅读全文

posted @ 2012-07-23 01:48 华子的代码空间 阅读(401) 评论(0) 推荐(0) 编辑

[转]服务器开发架构模式

摘要: 我看过最坑爹的模式的书,莫过于《数据访问模式》。读数据库和写DAO这样简单的事情,搞个蛋疼的模式,可怜我这种傻子乖乖地做了笔记,把重点一一进行了誊写。受到伤害的我决定报复,于是我总结出了《服务器开发架构模式》:1.读写分离模式 如果是DB,可以从slave读,写到master上。两台数据库可以针对读写的不同需求而进行优化,性能加倍。缺点是,数据同步可能有延迟。 对于进程:比如业务需求是从cache读写数据,则可以分为读写进程。 1.1 .职责的分离,读进程和写进程各自的业务逻辑变得很简单,足够小足够清晰,性能高,不容易出BUG。缺点是可能代码量比合在一起高一些; 1.2 针对读写的业务特点和请 阅读全文

posted @ 2012-07-23 01:36 华子的代码空间 阅读(331) 评论(0) 推荐(0) 编辑

python实现简单消息总线

摘要: 一句话概括:其实核心就是用了回调机制。 1 class PyBus (object): 2 3 def __init__(self,): 4 self.clear() 5 6 def clear(self): 7 self.subscriptions = {} 8 9 def subscribe(self, subject, owner, func):10 if not self.subscriptions.has_key(owner):11 self.subscrip... 阅读全文

posted @ 2012-07-23 01:27 华子的代码空间 阅读(1334) 评论(0) 推荐(0) 编辑

2012年7月9日

写最少的代码

摘要: 软件开发的一个最基本的事实是:我们必须要写代码,但对于这样的一个事实的最大一个误解是:我们的工作就是写代码。作为软件程序员的最初几年,我一直被这样的思想所迷惑,写代码是一种很强的事,是一种超能力,我们喜欢这种创造东西、成就东西的感觉。然而,多年之后,我终于明白,事情不是这样的。事情的真相是:程序员要干的活是尽量让软件的代码最少。不要误解,我指的不是像code golf那样压缩代码、节省字符——这样只会导致我们写出的代码无法阅读和维护。如果你能认识到这样的事实:我们大部分的时间都消耗在维护自己写的可怕的代码上,你就会发现,让代码最少、少给自己找麻烦,这无疑就会变成一个相当有创意的好思想。为什么? 阅读全文

posted @ 2012-07-09 21:17 华子的代码空间 阅读(236) 评论(0) 推荐(0) 编辑

2012年7月5日

换个活法,临终前会后悔的25件事

摘要: 最近,一个“临终前你会后悔的事”的帖子在国内外网站上被疯狂转载,瞬间点醒了数万人。它的作者是美国一名叫博朗尼·迈尔的临终关怀护士,文中总结了生命走到尽头时人们最后悔的5件事情。最悔:“希望当初我有勇气过自己真正想要的生活”第二:“希望当初我没有花这么多精力在工作上,错过了关注孩子成长的乐趣,错过了爱人温暖的陪伴”第三:“希望当初能有勇气表达我的感受,而不是长期压抑愤怒与消极情绪”第四:“希望当初我能和朋友保持联系,而没有因忙碌的生活忽略了曾经闪亮的友情”第五:“希望当初我能让自己活得开心点,而不是习惯了掩饰,在人前堆起笑脸”无独有偶,在日本也有这样一位年轻的临终关怀护士大津秀一。他在 阅读全文

posted @ 2012-07-05 09:51 华子的代码空间 阅读(219) 评论(0) 推荐(0) 编辑

自立,霸者的生存之道

摘要: 一个人要想创建辉煌的霸业,就必须使自己具备非凡的能力,炼就一身过硬的本领。然而要做到这些,我们首先应该是个独立的个体,也就是说首先应该自立。自立是生存之本,只有自立才可能越超自己,超越他人,实现自己远大的理想和美好的愿望。关于自立的一些特性,爱默生在其文章《自立》中写道:•凡事应该善尽己责,不要在意别人怎么想;•人活着就要相信自己,凡事都应操之在己;•不被他人奴役才能有所作为,完全自立才能感受到生存的意义。在现实生活中,要使自己的言行举止真正与这几点相吻合,恐怕有些困难。但我们必须努力去做,因为这些内容是衡量个人尊卑的标准。能够自立的人无疑令人尊敬,相反,那些依赖他人生存的“寄生虫”则会令人鄙 阅读全文

posted @ 2012-07-05 09:47 华子的代码空间 阅读(201) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 下一页

导航