华子的代码空间

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

[置顶] 近期任务

摘要: 0. 读大话数据结构1. Redis代码阅读2. Nginx代码阅读3. tornado深入分析和源码阅读4. twisted代码阅读5. 读APUE6. 读UNP7. 读django源码8. 读大话设计模式 阅读全文

posted @ 2012-11-28 12:15 华子的代码空间 阅读(223) 评论(0) 推荐(0) 编辑

[置顶] 未来的编程知识体系

摘要: 1. C不用太多解释,C是王道,无论是以前、现在、还是未来。2. Python用以实现大规模逻辑的高层次编程语言,而我现在也是个Python程序员。3. Golang 关键词: 并发、多核、接近C的性能,大道至简。在一些场合用它代替C++。4. Erlang用以实现高可用性、高并发能力、高性能的分布式服务器。并不适合做所有的事情,做服务器也就够了。 阅读全文

posted @ 2012-11-28 12:09 华子的代码空间 阅读(321) 评论(0) 推荐(0) 编辑

2014年1月5日

Golang的接口

摘要: 当一只鸟走路像鸭子,游泳像鸭子,叫起来也像鸭子,那么我们就认为它就是鸭子。Ducktyping的理念因此比喻得名。Golang通过interface实现ducktyping。EffectiveGo文章中这样描述interface:interface指定了一种描述对象行为的方法:如果某样东西可以做这件事,这样东西就可以用在这里。再具体讲,就是当某个变量的类型实现了某个接口的所有方法(这个时候可以称该类型实现满足该接口),那么这个变量就能用在要求这个接口的地方。package mainimport ( "reflect" "fmt")type Test st 阅读全文

posted @ 2014-01-05 19:39 华子的代码空间 阅读(1060) 评论(0) 推荐(0) 编辑

2013年11月21日

基于Python和Tornado的WEB Terminal

摘要: https://github.com/liftoff/GateOne亮点有以下:↪ Clientless↪ Multi-User and Multi-Session↪ Multi-Auth and Single Sign-On Ready↪ Extendable Terminal Emulation↪ Embeddable and Unrestricted↪ Resume Sessions From Anywhere↪ Copy & Paste Just Works↪ Get Rid of Browser Plugins↪ Terminal Rewind↪ Automation and 阅读全文

posted @ 2013-11-21 20:18 华子的代码空间 阅读(2229) 评论(0) 推荐(0) 编辑

2013年11月6日

Python装饰器的各种用法

摘要: https://wiki.python.org/moin/PythonDecoratorLibrary 阅读全文

posted @ 2013-11-06 14:55 华子的代码空间 阅读(238) 评论(0) 推荐(0) 编辑

2013年9月26日

偶然遇到的samba服务器权限问题

摘要: 也许有一些参考价值。CentOS 6.4使用命令service smb start启动samba服务器,在配置文件都正确,而且对应的共享目录权限也正确,使用smbpasswd添加了用户,这之后,使用smbclient访问还是提示无权限。但是用root用户smbd -D命令启动,则无权限问题。 后来忽然想起,可能是selinux的问题。停止了selinux后,果然问题不再存在。 阅读全文

posted @ 2013-09-26 13:35 华子的代码空间 阅读(266) 评论(0) 推荐(0) 编辑

程序员不得不知道的20个位运算技巧

摘要: 一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到《Hacker’s Delight》,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一个普通的程序中大量运用这样的代码的人简直是疯了!但掌握简单的位运算技巧还是必要的,所以今天写这篇博文把我积累的一些位运算技巧分享给大家,这些技巧不会是如求“1的数目”的技巧,是最基本的一行位运算技巧!Wel 阅读全文

posted @ 2013-09-26 10:38 华子的代码空间 阅读(412) 评论(0) 推荐(1) 编辑

2013年8月1日

const char*, char const*, char*const的区别

摘要: 事实上这个概念谁都有只是三种声明方式非常相似:Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:把一个声明从右向左读。char * const cp; ( * 读成 pointer to ) cp is a const pointer to charconst char * p; p is a pointer to const char;char const * p; 同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。C++标准规定,const关键字放在类型或变量名之前等价的。const int n=5; //sam 阅读全文

posted @ 2013-08-01 14:06 华子的代码空间 阅读(276) 评论(0) 推荐(0) 编辑

2013年7月31日

更改Linux栈空间大小

摘要: 1、通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下 为10240 即10M2、通过命令 ulimit -s 设置大小值 临时改变栈空间大小:ulimit -s 102400, 即修改为100M3、可以在/etc/rc.local 内 加入 ulimit -s 102400 则可以开机就设置栈空间大小4、在/etc/security/limits.conf 中也可以改变栈空间大小: # * soft stack 102400 重新登录,执行ulimit -s 即可看到改为102400 即100M 阅读全文

posted @ 2013-07-31 09:49 华子的代码空间 阅读(1334) 评论(0) 推荐(0) 编辑

2013年7月26日

ndoutils_mq项目: 发送Nagios的性能、报警、配置文件到RabbitMQ

摘要: 本人目前开发的一个项目,改造ndoutils,主要是它的ndomod。将性能、报警、配置文件使用JSON格式发送到RabbitMQ。由于NEB(Nagios Event Broker)使用C开发,所以ndoutils_mq主要也是C语言。项目地址:https://github.com/shelmesky/ndoutils_mq项目的README:注意:代码仍处于不断更新阶段,请随时更新。对Nagios的Ndoutils增加向RabbitMQ Server发送消息的功能。过程: 将消息转换为JSON格式后,通过RabbitMQ的C客户端发送到服务器。有任何问题可联系:roy@rootk.com安 阅读全文

posted @ 2013-07-26 12:24 华子的代码空间 阅读(478) 评论(0) 推荐(0) 编辑

2013年6月8日

pipe、epoll简单总结

摘要: 1、pipe的关闭消息会被对端的epoll_wait捕获,但数据长度是0,可据此判断为pipe关闭消息。2、epoll_wait返回的events中,当用户在epoll_ctl时设置了data.ptr,则不返回data.fd,用户只能使用data.ptr,因此自定义的结构中处理用户数据信息外,需要包含对应连接的socket描述符fd,否则无法收发数据。 阅读全文

posted @ 2013-06-08 14:41 华子的代码空间 阅读(1091) 评论(0) 推荐(0) 编辑

2013年5月8日

线程同步思考 - Condition模块

摘要: 1. python的threading模块的Condition类提供了通过条件变量保持多个线程间同步.一个线程阻塞,等待从其他线程获取通知。2. 假设有两个线程A和B,线程A首先执行wait(),线程B再执行notify()。线程A从Condition对象上得到通知,wait()函数获取到锁,往下继续执行。3. 此时线程B再次执行notify(),但此时线程A正在运行wait()之后的代码,没有执行wait()。线程B执行的notify(),会是怎样的结果?根据查看代码和文档,猜测可能会有以下结果:线程B报错,没有waiter(这是从源码中看到的)。如何解决?1. 线程A的wait()后面的代 阅读全文

posted @ 2013-05-08 17:38 华子的代码空间 阅读(288) 评论(0) 推荐(0) 编辑

导航