自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (11)
  • 收藏
  • 关注

原创 vs2012 DirectX 编译错误

1、error LNK2019: 无法解析的外部符号 _Direct3DCreate9@4这种错误。解决的方法:在库文件的忘了添加或者没有设置为第一位:Microsoft DirectX SDK (August 2009)\Lib\x86。

2014-01-21 15:04:43 976

原创 tcp 定时器

TCP 四大定时器:    1、重传定时器:最近又看了几遍《TCP/IP 详解》有些疑问弄清了,现在总结一下。TCP为每个连接维护一个重传定时器,在发送报文时如果定时器已经使用,则该报文不会计时(不会计算它的超时)。重传时间RTO最基本的就是等于RTT,但一般会进行平滑,比如:       R =previous RTT*i + (1-i)*current RTT,       R

2013-08-24 19:17:40 1180

原创 Tornado 源码

如上图,是Tornado运行的大概流程图,其中对RequestHandler的各个接口没有详细分析,仅仅是列出RequestHandler如何与HTTPConnection、IOStream、IOLoop交互的。

2013-07-02 14:34:54 1530

原创 Tornado httpserver模块

httpserver里面定义的类有HTTPServer、HTTPConnection、HTTPRequest。HTTPServer是一个非常简单的HTTP服务器,主要作用就是创建监听套接字,设置监听套接字的读事件hander,(创建多进程模式),接下来调用HTTPConnection处理整个连接。HTTPConnection读取请求并解析,调用HTTPServer设置的callback(一般是Ap

2013-06-27 14:56:46 8835

原创 Tornado IOStream类分析

Tornado中的IOStream封装了socket的非阻塞IO的读写操作,我个人觉得比较有意思的是read_util()接口:设置一个标志字符串和回调函数,其余的工作都可以省略了,当IOStream读到标志字符串时自动调用该回调函数,整个接口很人性化,简洁方便。    属性:     self.sockt: 封装的套接字,nonblocking模式;     self._read_b

2013-06-26 13:53:30 4138

原创 Tornado 之 IOLoop类分析

源代码 Tornado 1-2-1    IOLoop类是Tornado的边缘触发事件驱动模型,在Linux平台下面封装的是epoll模型,这个类的代码也很简单,比Nginx好看多了。    先看属性:            _handlers保存(fd,handler)的映射关系,_events保存就绪的fd以及对应的events事件(读/写/错误),_blocking_signal

2013-06-25 14:04:50 6880 1

原创 高性能 网络编程

最近在看一些比较好的网络编程方面的文章,也想比较深入地提升自己的技术能力,于是贴出一些链接:1、C10k 问题http://www.kegel.com/c10k.htmlhttp://blog.csdn.net/goldou/article/details/25797812、高性能的服务架构http://pl.atyp.us/content/tech/s

2013-05-23 11:24:51 1259

原创 epoll 经验

一、epoll相对于select的优势:select/poll的缺点:1.每次调用时要重复地从用户态读入参数。2.每次调用时要重复地扫描文件描述符。3.每次在调用开始时,要把当前进程放入各个文件描述符的等待队列。在调用结束后,又把进程从各个等待队列中删除。4.支持的FD个数比较少,需要修改源代码重新编译内核。epoll的优点:1、支持的FD==进程打

2013-05-20 17:16:57 2240

原创 Nginx event 模块分析

ngx_event_core_module 模块:    上下文是:     typedef struct {    ngx_str_t              *name;    void                 *(*create_conf)(ngx_cycle_t *cycle);    char                 *(*init_co

2013-04-02 14:06:05 6152

原创 虚拟继承、多态的内存布局

测试平台,Ubuntu 12.04--x64 代码如下:#include #include using namespace std;class A {public: long a; virtual void a1() { cout << "A:a1()" << endl; } virtual void a2() { cout << "A:a2()" << e

2013-03-20 16:28:17 1250

原创 Nginx 进程模型

由于这篇博文  http://blog.csdn.net/gsnumen/article/details/7979484?reload 已经分析的很清楚了,我只想自己整理一下:使用 UNIX域套接字 socketpair() 异步通讯机制:nginx在创建worker前将先调用 socketpair(int channel[2]) ,然后将 channel[0-1]设置为非阻塞IO,但只把

2013-03-07 11:24:49 1288

原创 nginx http_core模块 配置文件解析 2

上一篇讲述了配置文件的整体结构,下面重点分析htt_core模块的配置信息结构,得到如下的一幅图:从上面很明显可以看出需要合并的ngx_http_core_srv_conf_t、ngx_http_core_loc_conf_t结构体。但是ngx_http_merge_locations代码中有:for (q = ngx_queue_head(locations);

2013-03-05 13:56:54 1964

原创 Nginx http_core模块 配置文件解析

Nginx 的配置文件解析很麻烦,数据结构交织在一起,特别恶心,经过几天的分析,得到了一幅大概的关系图,自以为是正确的。cycle = ngx_init_cycle(&init_cycle):       1、在内存池中分配一个ngx_cycle_t变量,并初始化它的各个成员。       2、调用core类型的create_conf,实际只有一个ngx_cor

2013-03-04 13:46:45 5303

原创 zoj 2156

/** * zoj_2156 * 多重背包+遍历路径,优先取小的 */#include #include #include using namespace std;int const value[] = { 1, 5, 10, 25 };int v[60], n;int coin[4], node[4], p;/* * 应该可以直接用一维代替,要再想想 * 错了,

2013-02-06 14:02:25 959

原创 zoj 2401

这题我居然用背包过了。当然,算法不是最好的,根据网上的题解,如下算法更好。考虑str_c,它的最后一个字符c[la+lb-1]是a[la-1]或者是b[lb-1],于是递归下去有方程:dp[i][j] = dp[i-1][j]( 满足:a[i]==c[i+j]) | dp[i][j-1]( 满足:b[j]==c[i+j])。http://hi.baidu.com/delta_4d/it

2013-02-06 13:58:56 1014

原创 zoj 1986

我out了,想不到最长上升子序列还有nlogn的算法,看来以前学得不够仔细,于是把代码贴出来学习一下。        参考:http://blog.csdn.net/Hashmat/article/details/5883605http://acm.tzc.edu.cn/acmhome/topicListAction.do?method=topicDetail&id=52a13560222

2013-02-04 15:16:00 991

原创 poj 3494 Largest Submatrix of All 1’s

最近在学习单调桟,这个题目听有意思的,需要稍微动动心思,往poj 2559上想。但是时间总是1700MS左右,真不知道网上那些100ms是怎么出来的。/** * poj_3494.cpp * */#include #include #include using namespace std;#define MN 2010#define hpmax(a,b) ((a)>(b

2012-12-24 22:31:39 1695 1

原创 pat 1038 Recover the Smallest Number

这题明显是贪心的策略,但是排序算法一直没写好,费了我几个小时。后来发现,有个博客http://ppcool.iteye.com/blog/1731427 里面的排序好简单呀,好受打击。回宿舍继续舔伤口。/* * pat_1038.cpp */#include #include #include #include using namespace std;#define N 100

2012-12-16 11:51:05 2030 1

原创 zoj 2626 Polygon Game

这题Dp方程很容易想到,但是居然WA了一天,后来一个博客,才发现负数对最大值的影响。恍然大悟呀……/* * zoj_2626.cpp */#include #include #include #include using namespace std;#define N 52#define hpmax(a,b) (a)>(b)?(a):(b)#define hpmin(

2012-12-15 16:28:17 996

原创 zoj 2710 Two Pipelines

这题我是用dp过的,回头看了网上的资料,可以用谈心。再想想吧,先保存以下代码:/* * zoj_2710.cpp */#include #include #include #include #include using namespace std;#define N 210#define INF 1e12/* * dp[i][x][y]: The state i

2012-12-09 16:04:22 990

原创 zoj 1100

这题是简单的状态压缩,和黑书的那个bug公司类似,不过更简单。代码如下:(当然,可以打表)#include #include #include using namespace std;#define HW 20#define hpmax(a,b) (a)>(b)?(a):(b)long long dp[2][2048]; //2^11int factor[13] = { 1,

2012-12-06 21:41:12 1530 1

原创 zoj 1025

这题刚开始直接dp求最长非递减子序列,再加上next数组,于是WA。结合网上的代码,才发现,其实就是求最少组的非递减子序列,直接从小到大扫描就可以了。自己还是太水了,后悔大学不努力呀!/* * zoj_1025,就是求最少组的非递减子序列,用贪心就可以,不用dp求最长非递减子序列 */#include #include #include #include using namesp

2012-12-01 21:57:02 1482

原创 uva 10617

这题想了一下,可以枚举出str[i]、str[j]的所有决策:1、如果str[i] == str[j],不删除str[i] str[j]:dp[i][j] += dp[i+1][j-1] + 1(1表示把[i+1,j-1]全删除后,它还是回文);2、删除str[i]:就是dp[i+1][j];3、删除str[j]:就是dp[i][j-1];4、同时删除str[i]、str[j]:就

2012-11-28 22:25:40 768

原创 poj 1159

这题用short水过,一看网上大牛的代码,居然说可以用滚动数组!太厉害了。//poj_1159#include #include #define N 5010#define INF 10000#define hpmin(a,b) (a)<(b)?(a):(b)int n;char str[N];short int dp[N][N];int main(){ int i, l

2012-11-26 21:03:01 541

原创 poj 1141

这个题目让我蛋疼了一晚上,最后对比别人的代码,才发现问题:居然使用while ( scanf("%s", str) != EOF ) 导致WA!这不科学呀!//poj_1141#include using namespace std;#define INF 10000char str[110], result[210];int dp[110][110], pos[110][1

2012-11-22 20:31:27 758

原创 Splay-tree poj 3580

SplayTree 伸展树:自调节的二叉搜索树,能把最近访问的节点移到根节点出。适用于各种实际应用,尤其适合实现cache和garbage collection算法。空间少,性能平摊也有竞争力,编程易实现。优点:1、  实现简单,比AVL、红黑树更简单。2、  性能好,平均性能比得上其他平衡二叉搜索树。可能会比AVL慢点。常数因子的差距。3、  没有其他的记录数据。4、  可以

2012-07-25 20:55:12 1784 1

原创 经验点滴

1、strncpy:使用这个函数注意要自己设置结尾,如果原来的缓冲区还有数据,strncpy仅仅是覆盖前n个字节,后面保持原来的数据。很多次写程序都发现缓冲区里的数据还是上次的结果,这里痛定思痛,记下来。而strcpy却会自动的添加'\0'字节。        strncpy( pDest, pSource, maxSize );        pDest[maxSize] = 0;

2012-07-20 16:05:04 556

原创 B+tree 实现

/** BPlusTree.h 2012/6/24--2012/7/5 hpghy, [email protected] **/#ifndef BPLUSTREE_H_#define BPLUSTREE_H_#include #include #include using std::queue;using std::cout;using std::endl;us

2012-07-05 16:13:49 1499

原创 B+树

为什么说B+-tree比B 树更适合实际应用中操作系统的文件索引和数据库索引?1) B+-tree的磁盘读写代价更低 B+-tree的内部结点并没有指向关键字具体信息的指针。因此其内部结点相对B 树更小。如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了。 举个例子,假设磁盘中的一个

2012-06-24 13:22:01 5983

原创 zoj 2107

这题做了很久,一直都是1秒多,真不知道他们300ms是怎么做出来的。看了网上的代码,大部分都是O(nlgnlgn),于是绞尽脑汁,写了个O(nlgn)的代码,但是时间上没有显著地提高。/** * O(nlogn) * zoj_2107 **/#include #include #include #include #include using namespace std;

2012-05-21 15:19:00 943

转载 grub rescue:

ubuntu和Win7的双系统,不知怎么搞成了“error: unknown filesystem grub rescue:”,使用以下的方法:http://www.cnblogs.com/samcn/archive/2011/03/30/1999615.html1.  先使用ls命令,找到Ubuntu的安装在哪个分区:     grub rescue>ls

2012-05-16 19:31:24 458

原创 zoj 1453

/** * zoj 1453 * 不需四舍五入 * */#include #include #include #include #include using namespace std;struct Point { int x, y;};const double eps = 1e-5;Point tree[110];Point stack[110];bool b

2012-04-30 16:05:54 614

原创 zoj 3234

#include #include #include #include using namespace std;struct Point { int x, y;};const int N = 2010;Point soldier[N];int n, cnt;int pt[N];bool flag[N];int pcnt;bool bRemain[N];int

2012-04-30 16:03:16 614

原创 zju 2334 monkey king

因为最近在学习二项堆,所以拿这题练练手。其实这题思路很清晰,就是在二项堆中加入并查集的特性。因为在一个sb的地方犯了一个sb的错误,卡了几个小时。一切尽在代码中……/* * zoj2334 monkey king */#include #include #include using namespace std;#define CNT 100010const int INTMA

2012-04-09 22:54:55 908

原创 表达式模板 expression templates 测试

表达式模板,在《c++ template》中是为了同时支持数组操作的优雅性和高效性,并说,metaprogramming主要适用与小的大小固定的数组,而expression templates适用于中性和大型数组的运行期操作。但实际上,经过我的测试,元编程和表达式模板不像书中说的那么神奇,或许,是我没有实现好。下面,我将测试expression templates。       如果要支持

2012-04-07 18:56:28 933

原创 c++ template之trait技法总结

Trait技法的最初目的是为了管理模板参数,有的时候模板中需要几个参数,但是往往有些参数是与main parameters紧密相关的,这时候可以使用trait技巧,从几个主要的模板参数中推导出相应的secondary template argument,并以默认模板参数的形式出现在模板中。实际上使用的trait技巧实例往往会有效地提高程序的效率,下面我结合STL小小的说说trait的实际运用。

2012-03-19 21:20:54 9672

原创 B-树 实现3

上次有了B-树的两种不同的实现,现在我们来测试一下两种实现的效率,由于命名一样,我设置了不同的名字空间,下面是测试代码:#include #include #include #include #include "BTree.h"#include "BTree2.h"using namespace std;const int maxcnt = 1000000;int r[max

2012-03-08 21:19:21 725

原创 B-树实现2

/** * BTree.h * * 采用网上流传已久的插入删除算法——回溯方式 * 与《算法导论》中的不一样,但是效率更高 * * [email protected] * 2012/3/5 * **/#ifndef BTREE_H#define BTREE_H#include #include using std::vector;using std::

2012-03-08 20:09:20 577

原创 B-树 实现

B-树主要用在文件系统中,关键字为文件名,值为文件在磁盘中的地址。分支因子很大,一般为50到2000,一个节点就用一个磁盘块存储。按照《算法导论》的描述,节点有如下性质:1、至少有t-1个关键字,至多2*t-1个关键字,关键字以升序排列;2、至少有t个子女节点指针,至多2*t个;3、n[x]个关键字对应n[x]+1个子女节点指针;4、根节点至少包含一个关键字;以下是

2012-02-29 20:47:07 644

原创 红黑树

/*****************************************************************************************\ * rb_tree.cpp * 学习 SGI STL 中的实现 《STL源码剖析》 * 没有添加迭代器 *\*************************************************

2012-02-19 20:59:39 1716

type classification

为自己保存,仅仅是为了自己,仅仅仅仅是为我自己而已

2012-04-08

expression template 测试代码

主要是为了给自己用,《C++ template》中的源代码以及自己写测试代码

2012-04-07

最小最大堆的模块类实现

求bug,如有bug或是O(n)的构造算法,跪求通知。

2011-05-06

加密解密+IO完成端口

用IO完成端口进行加密解密,但是发现加密解密有顺序要求,也就是线程池中只能由一个线程!求真相帝!!!!!!!!!!!!!!!!!!!

2011-05-01

信息安全实验:利用Windows CryptoAPI开发加解密工具软件2

额,上传错了!额,上传错了!额,上传错了!额,上传错了!额,上传错了!

2011-03-29

ID3算法 数据挖掘 分类

ID3算法,主要看里面的算法,调用方式写的不太好

2011-01-03

任务管理器,源代码,类似于ProcessExplorer,使用Native API:NtQuerySystemInformation

环境:XP+VS2008 功能:类似于ProcessExplorer,有些没有实现。实现的功能有如下: 1.进程列表:包括进程的各种信息,如线程个数、CPU占用率、内存使用大小、进程优先级、exe文件信息…… 2.系统信息:如CPU曲线、内存曲线、PF曲线…… 3.DLL列表 4.句柄列表(有错误) 5.用户空间情况 6.设置进程优先级

2011-01-03

PE格式解析程序,详细剖析PE格式,对于学习Dll等技术有很大的帮助

这是一个解析PE格式文件的程序,对于学习PE格式以及Dll相关知识都要莫大的帮助。由于我的目的是学习PE格式,所以就简单的写个了CUI程序,没有界面。希望对大家有帮助!

2010-11-09

信息安全实验:利用Windows CryptoAPI开发加解密工具软件

这是一次大三的信息安全的实验,利用CryptoAPI 实现对称密钥加密、公钥密钥加密和数字签名,还有良好的界面,使用VS2008开发的,里面包含全部的源代码。希望能和大家相互交流学习。

2010-05-19

sort_heap push_heap pop_heap 堆的各种算法

最近在学习STL的源代码,看到这么多优秀的代码,心里痒痒的,于是自己实现了一遍,当然,有自己的特色,都是模块函数,稍稍用了一些traits特性。相互学习,呵呵

2010-05-03

C++标准程序库 侯捷

C++标准程序库 侯捷,这是一部历史经典之作,通往C++高手的必经之路。

2010-04-22

空空如也

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

TA关注的人

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