
C/C++
semillon
这个作者很懒,什么都没留下…
展开
-
用模板和基类巧妙实现类方法的回调(消息映射的基本原理)
<br />注:本文参考一位学长的博客。用模板和基类巧妙实现类方法的回调是在这位学长的指导下完成的。他的博文链接:<br />http://xuwenzhang.org/blog/category/c%e7%bc%96%e7%a8%8b%e6%8a%80%e6%9c%af/<br /> <br /> 主要的任务:<br /> 实现对象方法的回调。(静态函数或者全局函数的回调,这个很好实现,就不多说了)。这个技巧,常见于消息映射的实现。形象的说,A对象有一个方法show(),但是B在没有A对象指针原创 2011-03-22 17:48:00 · 1184 阅读 · 0 评论 -
自己动手写php web server
最近在做一个web缓存系统,作为一个web缓存系统,肯定得有一个web服务器的功能,即实现简单的http协议。于是,干脆自己动手写一个php的web server。(注明:本文的源码,可以在本人的资源分享里面下载)在此之前,先介绍一下简单http协议。协议包含两个重要内容。 Request格式:HTTP请求行 (请求)头 空行 可选的消息体典型例子: GET /index.php HTTP/1.1 /r/nHost: 192.168.2.166 /r/nAccept: text/原创 2011-05-17 20:49:00 · 7191 阅读 · 2 评论 -
如何选择STL容器?
大家知道,c++的STL标准库很好用,里面的vector,list,deque,stack,slist,set,map,都很好用。但是,在实际编程过程中,如何根据自己的项目需求选择里面的一种容器呢? 最好的办法就是了解其中的原理,然后做选择。(补充,如果项目中不考虑效率,就不用考虑那么多了~毕竟STL从头到尾都考虑了效率问题。)vectorvector的基本原理如下:它采用线性空间存储数据。如果空间不够,则另外分配新的两倍大小的空间,然后把旧空间释放掉。可以看出:①vector不适合pu原创 2011-05-05 17:24:00 · 2110 阅读 · 0 评论 -
纯C环境下实现标准函数的覆盖
最近在实现一个虚拟文件系统,简单的说就是为客户提供一套fopen,fread这样的一套函数,客户在编译的时候,如果定义了一个宏OS_EXIST,即由操作系统来提供文件系统,这样的话直接调用c标准的文件操作函数。如果没有定义OS_EXIST,则客户调用的fopen这套函数由另外一套原创 2011-07-23 17:00:18 · 1190 阅读 · 0 评论 -
IO完成端口入门级详细注释代码
#include "StdAfx.h"#include "MyServer.h"#include #pragma comment(lib, "Ws2_32.lib")//windows socket库typedef struct __ARG{ HANDLE hCom原创 2011-09-25 19:48:32 · 1258 阅读 · 1 评论 -
C++内存布局
今天闲来无事,研究起C++的内存布局来。得到几个结论,记录一下。参考文献:http://haoel.blog.51cto.com/313033/124567(参考文献里面涉及的东西,这里都不再罗嗦。这里对文献做一点点补充。) 先看看几个类的实现。class Base{public : virtual void f() { cout<<"Base:f()"<<e原创 2012-01-09 18:02:56 · 2266 阅读 · 2 评论 -
等概率随机取样的c语言实现
问题:输入包含两个整数m和n,(m定理:从r个剩余元素中选择s个元素,那么下一个元素选中的概率位s/r。证明:当前一个数概率位s/r,那么s/r = (r-s)/r * s/(r-1) + s/r * (s-1)/(r-1).前一个项为前一个数未选中的情况,后一项为选中的情况。c语言实现:int r=n;int s=m;for(i=0;i{if(rand()% r原创 2012-08-27 16:20:14 · 6244 阅读 · 0 评论