03 2011 档案

摘要:用户空间文件系统(Filesystem in Userspace,简称FUSE)是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统如ZFS,glusterfs和luster使用FUSE实现。 Linux用于支持用户空间文件系统的内核模块名叫FUSE,FUSE一词有时特指Linux下的用户空间文件系统。 文件系统是一个通用操作系统重要的组成部分。传统上操作系统在内核层面上对文件系统提供支持。而通常内核态的代码难以调试,生产率较低。 Linux从2.6.14版本开始通过FUSE模块支持在用户空间实现文件系统。 在用户空间实现文件系统能够大幅提高. 阅读全文
posted @ 2011-03-30 09:21 dkcndk 阅读(9683) 评论(0) 推荐(0) 编辑
摘要:观察者模式在软件编程中用的较多,我不善于表达我就用在网上看到的故事,和生活的例子说下基本思想故事: 小雪是一个非常漂亮的女孩,漂亮的女孩总是有很多的追求者,而且追求者的队伍在不断的变动,随时有人进入这个队伍,也有人退出。男孩们追求女孩时总是表现出120%的关心,当小雪私自游玩时总是不断收到追求者询问小雪位置变动的消息,小雪也不胜其烦,但小雪是如此的一个善良的女孩,她总是打断自己正常的生活回复男孩们的消息。而男孩们由于要不断的关心小雪的位置变化也弄的精疲力竭,而且还影响正常的工作。在这样一个简单的故事场景中我们发现了什么?来看看小雪和男孩们的烦恼: 1.男孩们必须不断的询问小雪的位置变化,从而. 阅读全文
posted @ 2011-03-28 16:05 dkcndk 阅读(778) 评论(0) 推荐(0) 编辑
摘要:epoll:Edge and Level Trigger Polling (epoll)边缘触发(edge trigger)和条件触发(level trigger)边缘触发是指每当状态变化时发生一个io事件,条件触发是只要满足条件就发 生一个io事件。举个读socket的例子,假定经过长时间的沉默后,现在来了100个字 节,这时无论边缘触发和条件触发都会产生一个read ready notification通知应用程 序可读。应用程序读了50个字节,然后重新调用api等待io事件。这时条件触发的api会 因为还有50个字节可读从而立即返回用户一个read ready notification。 阅读全文
posted @ 2011-03-28 14:03 dkcndk 阅读(4102) 评论(1) 推荐(1) 编辑
摘要:如果你想写一个 Java 程序,观察某对象什么时候会被垃圾收集的执行绪清除,你必须要用一个 reference 记住此对象,以便随时观察,但是却因此造成此对象的 reference 数目一直无法为零, 使得对象无法被清除。 java.lang.ref.WeakReference 不过,现在有了 Weak Reference 之后,这就可以迎刃而解了。如果你希望能随时取得某对象的信息,但又不想影响此对象的垃圾收集,那么你应该用 Weak Reference 来记住此对象,而不是用一般的 reference。 A obj = new A();WeakReference wr = new WeakR 阅读全文
posted @ 2011-03-28 13:01 dkcndk 阅读(346) 评论(0) 推荐(0) 编辑
摘要:Python代码:import socket, loggingimport select, errnologger = logging.getLogger("network-server")def InitLog(): logger.setLevel(logging.DEBUG) fh = logging.FileHandler("network-server.log") fh.setLevel(logging.DEBUG) ch = logging.StreamHandler() ch.setLevel(logging.ERROR) formatter 阅读全文
posted @ 2011-03-25 17:57 dkcndk 阅读(12213) 评论(0) 推荐(2) 编辑
摘要:[作者]:滕昱,2005/3/30,0.1版本[版权声明]:此文档遵循GNU自由文档许可证(GNU Free Documentation License).任何人可以自由复制,分发,修改,不过如果方便,请注明出处和作者:)(1)导言:首先,我强烈建议大家阅读Richard Stevens著作《TCP/IP Illustracted Volume 1,2,3》和《UNIX Network Programming Volume 1,2》。虽然他离开我们大家已经5年多了,但是他的书依然是进入网络编程的最直接的道路。其中的3卷的《TCP/IP Illustracted》卷1是必读-如果你不了解tcp协 阅读全文
posted @ 2011-03-25 17:18 dkcndk 阅读(1110) 评论(0) 推荐(0) 编辑
摘要:os.path.abspath(path) #返回绝对路径os.path.basename(path) #返回文件名os.path.commonprefix(list) #返回list(多个路径)中,所有path共有的最长的路径。os.path.dirname(path) #返回文件路径os.path.exists(path) #路径存在则返回True,路径损坏返回Falseos.path.lexists #路径存在则返回True,路径损坏也返回Trueos.path.expanduser(path) #把path中包含的"~"和"~user"转换成用户 阅读全文
posted @ 2011-03-25 15:43 dkcndk 阅读(164310) 评论(3) 推荐(11) 编辑
摘要:1.open使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。file_object = open('thefile.txt')try: all_the_text = file_object.read( )finally: file_object.close( )注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法。2.读文件读文本文件input = open('data', 'r')#第二个参数默认为ri 阅读全文
posted @ 2011-03-20 12:11 dkcndk 阅读(16595) 评论(1) 推荐(0) 编辑
摘要:ubuntu安装iscsi target端:apt-get install iscsitargetubuntu安装iscsi initiator端:apt-get install open-iscsi-utilsiscsiadm命令:查找目标主机上划了哪些luniscsiadm -m discovery -t sendtargets -p [ip_address]登入并使用un设备iscsiadm -m node -T [targetname] -p [ipaddress] -l退出lun设备iscsiadm -m node -T [targetname] -p [ipaddress] -u 阅读全文
posted @ 2011-03-18 09:33 dkcndk 阅读(1900) 评论(0) 推荐(0) 编辑
摘要:关于volatile关键字的解释一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3). 多线程应用中被几个任务共享的变量 回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。嵌入式系统程序员经常同硬件、中断、 阅读全文
posted @ 2011-03-17 09:47 dkcndk 阅读(1130) 评论(0) 推荐(0) 编辑
摘要:Xshell的Sessions存放目录:C:\Documents and Settings\用户\Application Data\NetSarang\Xshell\Sessions==========================================退格键删除,却在屏幕显示出了“^H”,退格不行,再按删除键,却显示出“^[[3~”,怎么着就是删除不了。需要设置:[文件]–>[打开]–>在打开的session中选择连 接的那个 ,点击properties -> [Terminal ] -> [keyboard] ,在右边的Delete key sequen 阅读全文
posted @ 2011-03-14 16:09 dkcndk 阅读(18258) 评论(0) 推荐(0) 编辑
摘要:共享内存(Shared Memory)是最简单的进程间通信方式,它允许多个进程访问相同的内存,一个进程改变其中的数据后,其他的进程都可以看到数据的变化。共享内存是进程间最快速的通信方式:`进程共享同一块内存空间。`访问共享内存和访问私有内存一样快。`不需要系统调用和内核入口。`不造成不必要的内存复制。内核不对共享内存的访问进行同步,因此程序员必须自己提供同步。使用共享内存:`某个进程分配内存段。`使用这个内存段的进程要连接(attach)这个内存段。`每个进程使用完共享内存段后,要分离(detach)这个内存段。`在某个地方,必须有一个进程来销毁这个内存段。Linux的内存模型:`每个进程的虚 阅读全文
posted @ 2011-03-14 10:17 dkcndk 阅读(34508) 评论(0) 推荐(0) 编辑
摘要:DK的博客搬新家了,从www.sumso.com/dkblog搬来博客园。主要是没有时间打理,比如评论、留言被spam做广告,后来全都屏蔽了。结果变成不能跟网友交互,少了交流总是不好。正好知道博客园可以导入rss,就搬吧。 阅读全文
posted @ 2011-03-11 15:28 dkcndk 阅读(440) 评论(0) 推荐(0) 编辑
摘要:linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) ps工具标识进程的5种状态码: D 不可中断 uninterruptible sleep (usually IO) R 运行 runnable (on run queue) S 中断 slee 阅读全文
posted @ 2011-03-11 08:08 dkcndk 阅读(73049) 评论(0) 推荐(2) 编辑
摘要:Python中有一个有趣的语法,只要定义类型的时候,实现__call__函数,这个类型就成为可调用的。 换句话说,我们可以把这个类的对象当作函数来使用,相当于重载了括号运算符。为了弄明白python中__setattr__, __getattr__, __delattr__, __call__的作用,重写dict,扩展其功能Code: class storage(dict):#通过使用__setattr__, __getattr__, __delattr__#可以重写dict,使之通过“.”调用def __setattr__(self, key, value):self[key] = val. 阅读全文
posted @ 2011-03-10 23:40 dkcndk 阅读(23201) 评论(3) 推荐(1) 编辑
摘要:“CPU主频低,影响Web服务器性能” ?! —— 让数据说话最近在一个Python项目的优化过程中,有同学反馈“性能测试服务器的CPU主频太低,不能发挥Web服务器的最佳性能”。这位同学后来还补充了一句“主频要上2.8”。我的神…… 还是先一笑而过吧去解释CPU原理?什么是什么主频、外频、一级缓存、二级缓存?我想我肯定不如那些框架师专业!我只知道机器硬件性能不能光凭其中一个指标来说事。就CPU来说,主频高就一定快吗?几年前我接触的服务器的主频都不如我工作机高,可别人服务器就是牛X。还是拿数据说话吧,过多的争论没有任何意义。准备了三台服务器,硬件配置如下:机器A 系统信息 信息名 描述 操作系 阅读全文
posted @ 2011-03-10 22:36 dkcndk 阅读(3493) 评论(0) 推荐(0) 编辑
摘要:上篇讲如何用LoadRunner监控Linux的性能指标 ,但是关于CPU的几个指标没有搞清楚,下面就详细说说。CPU Utilization 好理解,就是CPU的利用率,75%以上就比较高了(也有说法是80%或者更高)。除了这个指标外,还要结合Load Average和Context Switch Rate来看,有可能CPU高是因为后两个指标高导致的。 Load Average ,这个很难衡量。网上搜了一圈,还没见到几个合理的解释。我100个并发用户测试数来这两个值是:77.534%,6.108,CPU利用率比较高,Load Average也好像有点高。后来发现了如下两片博文: 理解Load 阅读全文
posted @ 2011-03-10 22:35 dkcndk 阅读(708) 评论(0) 推荐(0) 编辑
摘要:在进行负载测试(Load Test)是要监控服务器的CPU、内存、磁盘、网络的情况。如何监控Ubuntu的情况呢。1、安装rstatd,sudo apt-get install rstatd,如果无法apt安装,可以下载安装。2、启动rpc.rstatd查看是否正常启动,用如下命令rpcinfo -p[root@localhost ~]# rpcinfo -pprogram vers proto port100000 2 tcp 111 portmapper100000 2 udp 111 portmapper100024 1 udp 676 status100024 1 tcp 679 st 阅读全文
posted @ 2011-03-10 22:34 dkcndk 阅读(1015) 评论(0) 推荐(0) 编辑
摘要:SUID含义:文件的该位被设 置为1,在该文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权,如果所有者是root的话,那么执行人就有超级用户 的特权了,这是该位将变成一个安全漏洞,因此不要轻易设置该位。SGID含义:运行者将具有文件所有组的权限。STICKY粘合位: 要求操作系统既是在可执行程序退出后,仍要在内存中保留该程序的映像,这样做是为了节省大型程序的启动时间,但是会占用系统资源,因此设置该位,不如把程序写好。set uid ;set gid;sticky bit区别每一个文件有所有者及组编号,set uid ;set gid可以改变用户对文 阅读全文
posted @ 2011-03-09 19:48 dkcndk 阅读(8347) 评论(0) 推荐(1) 编辑
摘要:第一:给耗时操作增加统一的TimeOut超时处理机制无论是否启用了Python的多线程机制,只要利用signal模块就可以为耗时操作增加统一的超时处理机制(当然在使用了多线程的情况下还是有一些不一样的地方,只有在主线程里面才可以调用signal.signal函数,而子线程可以调用signal.alarm函数对信号的状态进行设置,具体需参照signal模块自身文档)。单线程情况下,可直接参考如下示例: Code:import signaldef handler(signum, frame):print 'Signal handler called with signal', si 阅读全文
posted @ 2011-03-07 22:20 dkcndk 阅读(7543) 评论(1) 推荐(0) 编辑
摘要:subprocess被用来替换一些老的模块和函数,如:os.system、os.spawn*、os.popen*、popen2.*、commands.*。可见,subprocess是被推荐使用的模块。subprocess模块中只定义了一个类: Popen。可以使用Popen来创建进程,并与进程进行复杂的交互。它的构造函数如下:subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, 阅读全文
posted @ 2011-03-03 22:55 dkcndk 阅读(1250) 评论(0) 推荐(0) 编辑
摘要:在python中使用lambda来创建匿名函数。lambda来源于LISP语言。lambda的形式如下: lambda arg1,arg2... : <expression> lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而def则不同,它在创建函数对象的同时会进行这种操作。这是lambda的第一个特点。lambda的第二个特点是,它只是一个表达式,而不是一个语句。如果单独使它成为了一个语句,比如: lambda x: print x 如果你在你的python程序中写下了这么一行,那么毫无意义,这一行代码会创建一个函数对象,但马上又给丢弃了,因为你没有使用它的 阅读全文
posted @ 2011-03-03 22:18 dkcndk 阅读(2625) 评论(0) 推荐(0) 编辑
摘要:从http://initd.org/tracker/pysqlite/wiki/pysqlite下载了SQLITE 的PYTHON绑定。并用WINDOWS下的sqlite3.exe创建了一个库一张表: +++++++++++++++++++ -database: wanna -table name: hello -id name ---- --------- 0 帅哥 1 wannachan 2 dick.chan 3 雯雯 +++++++++++++++++++好了,建表成功了!下面开始PYSQLITE来操作此数据库了!心情那个激动啊~~ 首先建立连接: >>> from 阅读全文
posted @ 2011-03-03 22:16 dkcndk 阅读(12231) 评论(0) 推荐(0) 编辑
摘要:在网上看到了一段python检索文件的程序,感觉不错,模仿着写了一段,但是发现无法检索带有中文的文件夹。查阅了一些资料后,才知道python(我用的2.6)对中文的支持很麻烦。可是皇天不负有心人,经过一系列的摸索,终于完成了对源程序的改良,现在,它可以检索任何文件夹了。程序如下:Code:#coding:utf-8#Filename:dir.pyimport osclass dir(object):def __init__(self):self.count=0self.space=""self.list=[]def p(self,url):if type(url).__na 阅读全文
posted @ 2011-03-03 17:13 dkcndk 阅读(2469) 评论(0) 推荐(0) 编辑
摘要:Code:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title></title><meta http-equiv="Content-Type" conte 阅读全文
posted @ 2011-03-03 16:59 dkcndk 阅读(8675) 评论(0) 推荐(0) 编辑
摘要:# -*- coding: utf-8 -*-import osimport shutilimport reimport sys'''功能:将一个文件夹中的指定类型的文件从gb2312或gbk转换成utf-8类型。遍历一个文件夹下所有文件,从src中取出处理后放入ddn中,src中的不变。指定src和ddn就可以了,还可以改文件处理部分完成别的功能'''src=os.getcwd()+'\\'+'!wwwroot'ddn=os.getcwd()+'\\'+'www'######### 阅读全文
posted @ 2011-03-03 00:42 dkcndk 阅读(6579) 评论(0) 推荐(0) 编辑
摘要:from:http://www.unixresources.net/linux/clf/python/archive/00/00/42/73/427317.html结合二位的答复,运行结果如下: >>> a='中国' >>> b=unicode(a, 'cp936') >>> b u'u4e2du56fd' >>> c = b.encode('utf-8') >>> c 'xe4xb8xadxe5x9bxbd' >> 阅读全文
posted @ 2011-03-02 17:17 dkcndk 阅读(995) 评论(0) 推荐(0) 编辑
摘要:法一:isinstance(s, str) 用来判断是否为一般字符串isinstance(s, unicode) 用来判断是否为unicode或if type(str).__name__!="unicode":str=unicode(str,"utf-8")else:pass法二:Python chardet 字符编码判断使用 chardet 可以很方便的实现字符串/文件的编码检测。尤其是中文网页,有的页面使用GBK/GB2312,有的使用UTF8,如果你需要去爬一些页面,知道网页编码很重要的,虽然HTML页面有charset标签,但是有些时候是不对的。 阅读全文
posted @ 2011-03-02 02:36 dkcndk 阅读(80720) 评论(1) 推荐(2) 编辑
摘要:下载cdt解压到插件目录后仍然提示错误: Cannot run program "gcc": ?????????¨?网上找了许久,试n种办法均不成。最后,还是用eclipse自己help -> New and insall software... -> Available Software Sites 在列表里找有没有http://download.eclipse.org/tools/cdt/releases/helios 如果没有就add,有就打勾给取个名cdt。然后在work with:type or select a site那选刚才取名的cdt 阅读全文
posted @ 2011-03-01 05:54 dkcndk 阅读(23307) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示