2012年7月24日

摘要: 看了云风的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 阅读全文
posted @ 2012-07-24 16:31 51Liuda 阅读(864) 评论(0) 推荐(0) 编辑

2012年5月24日

摘要: 对于tcp和udp 流量控制: ngle算法和滑动窗口协议。 拥塞控制: 慢查询 ip层的功能 ============================================================== ip层这个东西其实蛮实在,他就把数据交付给链路层。他唯一做的事情,就是:选路由。交互到指定的路由器。 但是对于大多数链路层来讲,它... 阅读全文
posted @ 2012-05-24 17:15 51Liuda 阅读(302) 评论(0) 推荐(0) 编辑

2012年5月2日

摘要: python接触时间也蛮长了,平时只是使用它做一些客户端之类的测试脚本。也没有过多的关注。 今天帮别人写个代码,发现他实在太强大了, 各种库信手拈来。接下来的时间里,我准备开始写一系列的文章,介绍python的各个模块。 我选择的版本是,2.7.3。为啥选择这个版本呢,因为 google app endine支持python2.7,而且,这是2.*最后一个版本。 ... 阅读全文
posted @ 2012-05-02 15:43 51Liuda 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 需要帮人写一段代码,代码很简单,就是读写文件,加上操作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 阅读全文
posted @ 2012-05-02 10:55 51Liuda 阅读(1038) 评论(0) 推荐(0) 编辑

2012年4月26日

摘要: 在系统设计中,经常会使用“池”的概念。比如数据库连接池,socket连接池,线程池,组件队列。“池”可以节省对象重复创建和初始化所耗费 的时间,可以简化对象获取和使用的过程。对于那些被系统频繁请求和使用的对象,如果使用这种机制,可以使系统性能得到很大提高。特别象数据库连接这种对 象,客户端与数据库服务器端建立连接时,是比较慢的,如果每次进行数据库操作,都要先进行数据库连接,系统效率将非常低下。 “池”的概念就是将被使用的对象事先创建好,保存在列表中,供客户端取用。当客户端取得一个对象时,这个对象就已经是按照特定上下文环境初始化好,马上即 可使用的了。当客户端使用完毕,需要将对象归还给“池... 阅读全文
posted @ 2012-04-26 21:55 51Liuda 阅读(235) 评论(0) 推荐(0) 编辑

2012年4月24日

摘要: 天天关注所谓的分布式,所谓的云。为啥OS不直接支持,我对单台机器的访问,os帮我去调度,哪台机器的cpu空闲。甚至一个进程中的线程在不同的机器上跑?这样应用程完全没必要去关心下面的东西了,很轻易的就可以构架一个大并发的系统。扩容也非常方便,加机器就OK了。 阅读全文
posted @ 2012-04-24 15:28 51Liuda 阅读(145) 评论(0) 推荐(0) 编辑

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... 阅读全文
posted @ 2011-12-23 17:22 51Liuda 阅读(566) 评论(0) 推荐(0) 编辑

2011年12月4日

摘要: 上次去ECUG听了一次讲座,了解到这世界上还有一门go语言。最近抽时间学了一下,很优秀的一门语言。公司有一个框架,是用c++实现了协程的调度。用它实现“服务节点”非常方便。今天终于把框架里面节点之间是如何通信的部分搞懂了。调度的部分还不是特别清楚,正好go实现了调度这部分的功能。所以,计划用go实现一个通用的框架,来更快速的开发服务。先把基本思路写在这里。go中的协程是用chan(管道)通信的,所以可以借鉴actor模式。1:每个协程有一个GID,用户可以找到这个协议。2:每个协程包含一个chan,其它协程可以通过GID向他发消息,chan里面存放的是消息。3:消息包括,消息发送者,消息接受者 阅读全文
posted @ 2011-12-04 21:58 51Liuda 阅读(876) 评论(0) 推荐(0) 编辑

2011年10月17日

摘要: sizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。 而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作 指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。注意:int *p; sizeof(p)=4;... 阅读全文
posted @ 2011-10-17 21:24 51Liuda 阅读(226) 评论(0) 推荐(0) 编辑

2011年9月14日

摘要: http://redis.io/clients 我是下载的hiredis~~~~·哎,先用别人的吧 等做进去了,自己在封装一个。 下面是我写的一个测试例子。#include "hiredis.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>using namespace std;void pr... 阅读全文
posted @ 2011-09-14 15:32 51Liuda 阅读(1561) 评论(0) 推荐(1) 编辑

导航