摘要:
看了云风的http://blog.codingnow.com/2012/07/c_coroutine.html,他实现了一个简单的协程调度。我这里仅仅是用c语言模拟了协程,原理很简单。主要是:getcontext()makecontext()swapcontext()这几个函数。具体api详解见http://pubs.opengroup.org/onlinepubs/009695399/functions/makecontext.html#ifndef _CORO_H#define _COEO_H#include <ucontext.h>typedef void (*coro_fu 阅读全文
2012年7月24日
2012年5月24日
摘要:
对于tcp和udp 流量控制: ngle算法和滑动窗口协议。 拥塞控制: 慢查询 ip层的功能 ============================================================== ip层这个东西其实蛮实在,他就把数据交付给链路层。他唯一做的事情,就是:选路由。交互到指定的路由器。 但是对于大多数链路层来讲,它... 阅读全文
2012年5月2日
摘要:
python接触时间也蛮长了,平时只是使用它做一些客户端之类的测试脚本。也没有过多的关注。 今天帮别人写个代码,发现他实在太强大了, 各种库信手拈来。接下来的时间里,我准备开始写一系列的文章,介绍python的各个模块。 我选择的版本是,2.7.3。为啥选择这个版本呢,因为 google app endine支持python2.7,而且,这是2.*最后一个版本。 ... 阅读全文
摘要:
需要帮人写一段代码,代码很简单,就是读写文件,加上操作http和smtp,自然选择了库一大堆的python实现。代码如下。感谢google。gmail的貌似要调用starttls函数才能成功。import osimport sysimport urllibimport httplibimport stringimport smtplibimport emailimport mimetypesfrom email.MIMEMultipart import MIMEMultipartfrom email.MIMEText import MIMETextfrom email.utils import 阅读全文
2012年4月26日
摘要:
在系统设计中,经常会使用“池”的概念。比如数据库连接池,socket连接池,线程池,组件队列。“池”可以节省对象重复创建和初始化所耗费 的时间,可以简化对象获取和使用的过程。对于那些被系统频繁请求和使用的对象,如果使用这种机制,可以使系统性能得到很大提高。特别象数据库连接这种对 象,客户端与数据库服务器端建立连接时,是比较慢的,如果每次进行数据库操作,都要先进行数据库连接,系统效率将非常低下。 “池”的概念就是将被使用的对象事先创建好,保存在列表中,供客户端取用。当客户端取得一个对象时,这个对象就已经是按照特定上下文环境初始化好,马上即 可使用的了。当客户端使用完毕,需要将对象归还给“池... 阅读全文
2012年4月24日
摘要:
天天关注所谓的分布式,所谓的云。为啥OS不直接支持,我对单台机器的访问,os帮我去调度,哪台机器的cpu空闲。甚至一个进程中的线程在不同的机器上跑?这样应用程完全没必要去关心下面的东西了,很轻易的就可以构架一个大并发的系统。扩容也非常方便,加机器就OK了。 阅读全文
2011年12月23日
摘要:
package mainfunc average(values []float64) float64{ if len(values) == 0{ return 0 } sum := 0.0 for _,value := range(values){ sum += value } return sum/float64(len(values))}func main(){ value := []float64{10,10,12,14,15} println(average(value))} package mainfunc... 阅读全文
2011年12月4日
摘要:
上次去ECUG听了一次讲座,了解到这世界上还有一门go语言。最近抽时间学了一下,很优秀的一门语言。公司有一个框架,是用c++实现了协程的调度。用它实现“服务节点”非常方便。今天终于把框架里面节点之间是如何通信的部分搞懂了。调度的部分还不是特别清楚,正好go实现了调度这部分的功能。所以,计划用go实现一个通用的框架,来更快速的开发服务。先把基本思路写在这里。go中的协程是用chan(管道)通信的,所以可以借鉴actor模式。1:每个协程有一个GID,用户可以找到这个协议。2:每个协程包含一个chan,其它协程可以通过GID向他发消息,chan里面存放的是消息。3:消息包括,消息发送者,消息接受者 阅读全文
2011年10月17日
摘要:
sizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。 而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作 指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。注意:int *p; sizeof(p)=4;... 阅读全文
2011年9月14日