自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

遨游太空2014

The show must be go on

  • 博客(55)
  • 资源 (3)
  • 收藏
  • 关注

原创 lua-md5 for lua5.3

lua-md5 封装nginx/src/core/ 里面的md5模块代码使用方法:local md5 = require "md5"local result = md5.update("hello world")print(result)编译只需要修改MakefilePREFIX ?=          .

2015-07-15 12:24:21 4644

原创 node.js内存泄露问题记录

先说一下,事情的来龙去脉。公司开发一款游戏棋牌游戏,服务端的开发是IO密集型,开发的时候,考虑过使用python,java,node.js。最终选择了node.js(node.js宣传的杀手功能,异步IO,node.js另外一个分支叫io.js),事情也就由此而起。因为第一次做手机游戏,对移动网络的估计不足,选择了json作为通信传输数据格式,上线后玩家就频繁掉线(通信

2015-06-02 11:18:36 1300 2

原创 leetcode:Two Sum

Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the target, whe

2015-05-09 15:08:28 1170

原创 猴子摘香蕉一次可以摘1个或2个,总共50个,问有多少种摘法?

问题来自知乎腾讯的笔试题等我写完之后发现不就是那啥啥函数,贴上lua代码N很大的时候,估计是抗不住了,代码还需要优化。function banana( n ) local c = 1; if n == 0 then return 0 elseif n == 1 then return 1 elseif n ==

2015-04-10 21:00:12 2157

原创 判断二叉树是否为平衡二叉树

struct tree { void * data; struct tree *left; struct tree *right;};int tree_high(struct tree *t) { int r = 0; int l = 0; if (t == NULL) { return 0; } if (t->

2015-04-02 19:15:48 683

原创 高级语言怎么解决内存碎片呢?

c/c++可以自己管理内存,像nginx可以根据自己的业务特点,为每一个请求分配一个内存池,请求结束,内存池也就可以释放了python,node.js这样的高级语言怎么解决内存碎片问题呢?鼓吹node.js的人都会提到node.js有谷歌的v8引擎,他是有多先进,但他没想过v8是为浏览器设计的,他是不会遇到像服务端程序会遇到的内存碎片问题,一个页面不可能一直打开着吧,关掉页

2015-01-21 10:48:38 929

原创 某页游erlang服务端广播算法效率好差,应该算是一个bug了吧

偶然得到一份erlang网页服务端的代码不得不说写的非常优雅,文档也非常不错,但我看到他的场景管理中的广播算法,不得不说写的很漂亮,但效率非常低。每次都全局遍历全部在线玩家在某个场景的玩具ID,这样的算法,我不知道一个服能撑起多少人,优化一下,场景服务管理在他服务中的玩家,NPC,MON,效率会提升好几倍,只是代码会稍微复杂一点,没他写的优雅了!!%% 获取要广播的范

2015-01-09 00:01:03 1930 2

原创 参照protobuf,将json数据转换成二进制在网络中传输。

json数据格式在网络中传输需要的数据比二进制庞大太多,我们可以省去key,外加将数字不需要编码成字符串,直接二进制编码就OK。pack : 将json压包,unpack解包成json。var Struct = module.exports = {};Struct.TYPE = { int8:1, int16:2, int32:3, uint8:4, uint16:

2014-08-01 14:25:38 5787 1

原创 模仿linux内核定时器代码,用python语言实现定时器

大学无聊的时候看过linux内核的定时器,现在已经想不起来了,也不知道当时有没有看懂,现在想要模仿linux内核的定时器,用python写一个定时器,已经想不起来它的设计原理了,找了一篇blog,linux 内核定时器 timer_list详解。看了好一会才有些明白,开始参照着用python写了一个。如果在设计服务器的时候,有大量需要精确到秒和秒以下的事件,自己写一个定时器,维护一个类

2014-07-11 17:35:12 1750

原创 DFA和trie字典树实现敏感词过滤(python和c语言)

现在做的项目都是用python开发,需要用做关键词检查,过滤关键词,之前用c语言做过这样的事情,用字典树,蛮高效的,内存小,检查快。到了python上,第一想法是在pip上找一个基于c语言的python字典树模块,可惜没找到合适的,如果我会用c写python模块的话,我就自己写一个了,可惜我还不具备这个能力,只能用python写了,性能差一点就差点吧,内存多一点也无所谓了。用搜

2014-07-02 15:50:28 7511 2

原创 Python交互模式出现乱码,按tab,方向键时候出现乱码

debian, centos上面的python版本比较低,我想安装2.7版本,

2014-04-26 09:50:58 1722

转载 c++ std:thread编译出错记录

https://coderwall.com/p/rzkw6qConsider the following code, which uses the C++11 (used to be known as C++0x) thread library:#include #include using namespace std;void hello_world(){

2014-04-18 00:03:11 2516

原创 Centos安装mysql-server运行服务器错误记录

在Mac os玩python没什么,反正python到那个平台差别都不大,可是C的开发库让我蛋疼的,在linux 上和在mac是有差别的。我只能在mac的安装一个Centos虚拟机,以前对虚拟机印象很差,使用起来感觉很糟糕,现在mac上使用感觉非常好,几乎感觉不到是虚拟机。虚拟机在centos /media/psf目录上挂载了我mac os的用户目录,这样就可以很方便到共享文件。

2014-03-20 17:24:58 1393

原创 django 的mysql数据配置

在成功安装python-mysql后,开始配置django的mysql连接配置打开django项目下的setting.py文件,将DATABASES改成下面这样DATABASES = {      'default': {          'ENGINE':'django.db.backends.mysql',         'NAME':'mysite',

2014-03-18 16:20:23 2221

原创 mac xcode5.1安装Mysql-python编译错误解决

前几天才入的macbook air,在 app store 安装的xcode和command_line_tools都是最新版本,结果我被坑了,编译工具太新了,不兼容,出现错误。clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]

2014-03-18 15:35:59 3662

原创 基于libuv库的tcp, udp echo服务器和客户段测试python代码。

TCP 客户端测试python代码:import socketimport timedef tcpClient(): for i in range(10000): clisock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) clisock.connect(('localhost', 789

2014-03-05 14:40:03 4364 1

原创 linux epoll和 socket非阻塞读

linux  version: Linux version 2.6.32-5-686 (Debian 2.6.32-48squeeze4) ([email protected]) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Mon Sep 23 23:00:18 UTC 2013noblock测试代码:epoll使用的是边缘触发模式

2014-03-05 12:04:36 2076

转载 libuv 中文编程指南

最近看了一些有关 libuv 的东西,另外复习了一些与同步、异步、阻塞、非阻塞,异步IO(aio)的东西, 算是技术积累吧,等有时间了整理出一个完整的文档出来,希望在今后的编程中用到。不多说了,本文是今后几篇《libuv 中文编程指南》的前言,先介绍下 libuv 究竟是干什么的吧,看看 开源中国社区收录的有关 libuv 的介绍, libuv 是 Node 的新跨平台抽象层,

2014-03-04 16:35:13 1982

原创 debian安装国际版QQ中的一些问题记录

linux QQ国际版安装http://blog.csdn.net/yuan1164345228/article/details/20449459root@debian:/home/cheng# sudo dpkg -i deepinwine-qqintl_0.1.3-2_all.deb wine-qqintl_0.1.3-2_i386.deb选中了曾被取消选择的软件包 d

2014-03-04 15:49:21 5512

原创 利用libuv库和smtp协议发送邮件程序

我写这个程序只是练习利用libuv库写程序,怎样连接服务器,怎样处理读写。这只是一个demo,离真正的发送邮件程序还有一些距离。附上源代码:#include #include #include #include #include #define FATAL(msg) \ do {

2014-03-04 11:31:19 1693

原创 基于libuv的TCP echo-server

学习libuv库,写TCP echo-server大部分代码都来自libuv源码test目录下echo-server.c文件。我自己添加了一点代码,通过uv_read_start函数更改read_cb函数使得第奇数次客户端输入一行文字后,服务端原样返回,偶数次输入一行文字,服务端将输入的一行文字逆序后返回结果如下:cheng@debian:~$ telnet 127.0

2014-03-03 16:54:14 5328 1

原创 libuv 定时器使用

老大前几天提到libuv,我只看过一点libevent, 听说过libev,没听说过libuv,查了一下才知道libuv。先到github git clone 源码,编译,测试,看测试代码头文件uv.h定时器部分的函数,头文件有详细的注释/* * uv_timer_t is a subclass of uv_handle_t. * * Used to get w

2014-02-28 16:35:46 7627

原创 计算最少钱币数C++程序代码。

最少钱币数:【问题描述】这是一个古老而又经典的问题。         用给定的几种钱币凑成某个钱数,一般而言有多种方式。           例如:给定了 6 种钱币面值为 2、 10、 50、                      5、 20、 100,用来凑 15 元,可以用 5 个 2 元、 个 5 元,

2014-02-28 10:37:30 6571

原创 未来发展方向

大学快毕业的时候学过一会perl,后来忘的差不多了,毕业后有时候需要写一些测试用的网络小程序,用c语言写太慢了,字符串的处理也挺麻烦的,就学了python,对python的使用也就停留在字符串处理,抓取公司需要的网页,按照编辑部的设计生成网页, 还有写一些网络程序。       之前对web服务器的设计很感兴趣,就花时间研究了一下nginx的源代码,现在也停了下来,主要工作中用不上,要是以后需

2014-02-20 11:13:06 964

原创 skip list跳表C语言代码。

skip list(跳表)介绍文章可以看下面的文章http://kenby.iteye.com/blog/1187303代码:#include #include #include #include #define SKIP_LIST_INIT_LEVEL 5struct list_node_s;struct list_s;typedef struct list_

2014-02-11 16:57:42 2645

转载 Leveldb官方说明文档

The leveldb library provides apersistent key value store. Keys and values are arbitrary bytearrays. The keys are ordered within the key value store accordingto a user-specified comparator function.

2014-02-08 15:15:55 1787

原创 Leveldb使用小例

#include #include #include #include using namespace std;int main(int argc, char *argv[]){ leveldb::DB *db; leveldb::Options options; options.create_if_missing = true; std::string dbpath =

2014-02-08 14:34:58 1640

原创 解析Content-Type: multipart/form-data格式数据

经常要处理php端发过来的Content-Type: multipart/form-data数据,写两个函数处理下这个数据好。#include #include #include #include #include #include char *get_boundary(char *mfd){ char *p, *end; char *boundary = NULL;

2014-01-23 18:05:24 18447 3

原创 c++单线程可变大小内存管理器代码 from 提高c++性能的编程技术

#include class MemoryChunk { public: MemoryChunk(MemoryChunk *next_chunk, size_t chunk_size); ~MemoryChunk(); inline void *alloc(size_t size); inline void free(void * some_ele

2014-01-20 15:28:11 969

原创 看nginx内存管理的一些感想

1.  nginx的内存池设计不只可以解决内存碎片问题,还可以在解决内存泄露问题。2.  在我们设计程序的时候可以把一些生命周期相同的对象使用同一个内存池,比如一个请求的处理内分配的内存就就有相同的生命周期,在处理完请求后,我们就可以销毁这个内存池,统一释放内存避免了内存泄露问题。3. 我自己设计程序的时候,开始就要想好程序中的有那些对象有相同的内存生存周期,维护好内存的分

2014-01-10 15:24:44 1276

原创 C++排序类模板, 排序类

我的C++一直比较水,平时都用C写程序,今天想写一个排序类模板,练习一下。希尔排序,快速排序,归并排序,选择排序,冒泡排序,堆排序,插入排序#include #include #include template class sort { public: sort(int (*cmp)(Type t1, Type t2)); ~sort() {} void a

2014-01-10 14:00:25 3352

原创 c++模板实现shell排序

template void shell_sort(Type *unsorted, int len){ int i, j , group; Type temp; for (group = len / 2; group > 0; group /= 2) { for (i = group; i < len; i++) { for (j = i - group ; j > =

2014-01-09 17:51:49 898

原创 一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁出现的前10个词,请给出思想,给出时间复杂度分析

1.         建立Trie树,记录每颗树的出现次数,O(n*le); le:平均查找长度2.         维护一个10的小顶堆,O(n*lg10);3.         总复杂度: O(n*le) + O(n*lg10);

2014-01-09 17:15:33 13169 8

原创 维持中位数的方法?

双堆:令数组L的中位数为m,用一个最大堆存储数组L中不大于m的元素,用一个最小堆存储数组L中不小于m的元素,其中这两个堆均不包含中位数m。每次往数组L插入新元素x时,若x,否则插入最小堆(最小堆的最小值不小于m)。若插入新元素后导致m不再是中位数(即两个堆的元素数目相差2个或2个以上),则将当前的中位数m插入到元素数量较少的那个堆中,然后令元素数量较多的那个堆的堆顶元素为新的中位数,并将该堆顶元素

2014-01-08 16:34:08 898

原创 已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。

已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。   8位最多99 999 999,大概需要99m个bit,大概10几m字节的内存即可。 (可以理解为从0-99 999 999的数字,每个数字对应一个Bit位,所以只需要99M个Bit==1.2MBytes,这样,就用了小小的1.2M左右的内存表示了所有的8位数的电话)#include #inc

2014-01-08 15:26:09 3809 1

原创 不能用循环和本地变量,对一个整形n,实现输出n,2n,4n,...当大于max(比如5000)时再逆向输出...4n,2n,n

不能用循环和本地变量,对一个整形n,实现输出n,2n,4n,...当大于max(比如5000)时再逆向输出...4n,2n,n。#include void show(int n, int max){    if (n > max) {        return;    }    printf("%d ", n);    show(2*n, max)

2014-01-07 17:38:47 1446

原创 寻找两个节点的最近公共祖先

struct BSTreeNode {    int m_Value;    struct BSTreeNode *m_pLeft;    struct BSTreeNode *m_pRight;}; struct BSTreeNode *GetLowestCommonAncestor(        struct BSTreeNode *root,

2014-01-06 21:56:32 878

原创 栈数据结构实现代码

#include #include #include #define STACK_INIT_SIZE       1024#define STACK_ADD_SIZE        1024struct stack {    int size;    void **slot;    int top;};void InitStack(struct

2014-01-06 15:58:44 827

原创 linked list 倒转linked list

1. 在linked list中找倒数第N个结点2. 倒转linked list

2014-01-05 16:55:23 975

原创 把二叉树转化成双向连表

#include #include  struct BSTreeNode {     int m_Value;     struct BSTreeNode *m_pLeft;     struct BSTreeNode *m_pRight; };  void MidOrderVisit(struct BSTreeNode *root) {     i

2014-01-05 15:15:41 820

ARM soc Architecture

ARM soc Architecture大学开的计算机系统结构在ARM上具体实现,比纯理论更有意思。

2011-12-21

操作系统教程《MINIX操作系统的设计与实现》

操作系统教程《MINIX操作系统的设计与实现》

2011-10-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除