- 博客(33)
- 资源 (3)
- 收藏
- 关注
原创 STL list
list的节点结构:template struct __list_node { typedef void* void_pointer; void_pointer next; void_pointer prev; T data;};List不能像vector那样以普通的指针作为iterator,因为节点不能保证内存在空间上是连续的。List是一个双
2014-03-06 00:34:34
663
原创 STL vector
分析的是sgi STL中vector的版本 http://www.sgi.com/tech/stl/download.html 作为学习之用基础(SGI STL的空间分配器):typedef __malloc_alloc_template malloc_alloc;..# ifdef __USE_MALLOCtypedef malloc_alloc alloc; //令allo
2014-03-06 00:33:14
705
原创 迭代器(Iterator)概念与traits编程技法
Iterator是一种抽象的设计概念《Design Patterns》其中对于iterator模式定义如下:提供一种方法,使之能够依序讯访某个聚合物(容器)所包含的各个元素而又无需暴露该聚合物的内部表达方式。STL的中心思想在于:将数据容器(containers)和算法(algorithms)分开彼此独立设计,最后再以一贴粘合剂将其撮合。这个粘合剂就是Iterator。迭代器相应型
2014-03-06 00:23:35
753
原创 泛型编程基本概念
Concept与Modeling:Concept即非class也非function或者template,是抽象的,Modeling就是对应抽象的具体.1. concept想象成一组type requirement,如果type T是concept T的一个model,必须满足C的所有条件2. concept是所有type的集合,如果T是concept C的model,表示T隶属于C
2014-03-06 00:21:41
706
原创 Data语意学
Data Member的内存布局:前言知识:C++ standard要求:同一个access section中,members的排列只需符合“较晚出现的members在class object中有较高的地址”,也就是members之间可能会出现边界调整的字节填充等。另外编译器还可能会合成内部一些使用的data members比如vptr,但是编译器会讲vptr放在什么位置呢?开头最后?不同
2014-03-06 00:16:23
568
原创 执行期语意学
对象的构造和析构讲解在以下几种情况下编译器是如何安插构造和析构函数?1.全局对象2.局部静态对象3.数组对象1)全局对象Matrix g_identity;main() {Matrix m = g_identity ;}c++保证了在main函数中第一次用到g_str之前,将g_str构造出来,在main()函数结束之前将g_str毁掉。一个glo
2014-03-06 00:15:41
614
原创 构造函数语意学
Default构造函数操作:首先需要说明:带来的第一个问题,编译器什么时候合成默认构造函数(nontrivial)?答案是编译器需要的时候,而不是程序需要的时候。1)class Foo { public: Foo(); ...};class Bar { public: Foo _foo; char* _str...};void foo_bar() {Bar ba
2014-03-06 00:14:44
583
转载 C++重载箭头操作符
转载自> #include using namespace std; class A{ public: void action(){ cout << "Action in class A!" << endl; } }; class B{
2013-12-25 19:10:11
616
转载 new; operator new; placement new
1. placement new的含义placement new 是重载operator new 的一个标准、全局的版本,它不能够被自定义的版本代替(不像普通版本的operator new 和 operator delete能够被替换)。void *operator new( size_t, void *p ) throw() { return p; }placement new的执行
2013-12-24 14:04:23
487
原创 log4cplus解读
参考:http://www.codeproject.com/Articles/15955/logging-made-easy-in-your-c-applications http://log4cplus.sourceforge.net/docs/html/classlog4cplus_1_1spi_1_1BaseFactory.html主要模块:Loggers,
2013-12-22 14:45:05
987
转载 抽象工厂模式
转载自: http://blog.youkuaiyun.com/zhengzhb/article/details/7359385定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。类型:创建类模式类图: 抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的
2013-12-22 14:39:26
533
转载 工厂方法模式
转载自: http://blog.youkuaiyun.com/zhengzhb/article/details/7348707定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。类型:创建类模式类图: 工厂方法模式代码 interface IProduct { public void produ
2013-12-22 14:38:03
577
原创 PIMPL机制学习
pimpl 用法背后的思想是把客户与所有关于类的私有部分的知识隔离开。由于客户是依赖于类的头文件的,头文件中的任何变化都会影响客户,即使仅是对私有节或保护节的修改。pimpl用法隐藏了这些细节,方法是将私有数据和函数放入一个单独的类中,并保存在一个实现文件中,然后在头文件中对这个类进行前向声明并保存一个指向该实现类的指针。类的构造函数分配这个pimpl类,而析构函数则释放它。这样可以消除头文件与实
2013-12-22 14:20:34
974
原创 Auto_ptr和shared_ptr
C++内存区划分相关的基础知识:(参考:《Exceptional C++》)Const Data: The const data area stores string literals and other data whose values are known at compile-time. No objects of class type can exist in this area。这部分数
2013-12-22 14:01:58
1040
原创 C++编译,前置声明
class A {public: B b;};class B {public: A a;};存在类嵌套的问题,编译无法通过。采用前置声明解决class B;class A {public: B b;};class B {public: A a;};以上代码还是错误的,因为在编译期间对于类的定义需
2013-12-22 13:33:35
728
原创 Dijkstra算法
http://www.cnblogs.com/dolphin0520/archive/2011/08/26/2155202.html Dijkstra算法(单源最短路径) 单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路径。在弄清楚如何求算单源最短路径问题之前,必须弄清楚最短路径的最优子结构性质。一.最短路径的最优子结构性质 该性质描述
2013-12-22 13:31:19
572
原创 java 无知点
Class对象: 每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。获取Class实例的三种方式:(1)利用对象调用getClass()方法获取该对象的Class实例; (2)使用Class类的静态方法forName(),用类的名字获取一个Cla
2013-12-22 13:27:28
289
原创 vim常使用的命令
VIM复制命令y 复制,适用于选择文本后再按y复制yw 复制一个单词(包括空格) ye 复制一个单词(不包括空格)yy 复制一整行,类似dd删除一整行(包括行尾换行符)Y 复制一整行(包括行尾换行符),不同于D删除到行尾(不包括换行符)2yy 或 y2y 複製兩行注:y为操作符,可加计数前缀,例如:2yw=y2w(复制两个单词)p小写p代表贴至游标后(下)。 P
2013-12-22 13:23:58
695
原创 Reactor与Proactor
基础概念同步:synchronous ,两个或两个以上随时间变化的量在变化过程中保持一定的相对关系异步:与同步相对,没有这样的相对关系阻塞:指调用结果返回之前,当前线程会被挂起。非阻塞:不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。对于IO同步,异步,阻塞,非阻塞的理解见博文http://blog.youkuaiyun.com/historyasamirror/artic
2013-12-22 13:22:27
610
原创 linux 网络编程的Epoll Select
select模型和Epoll的对比:1)select模型有最大并发数限制,因为一个进程打开的FD是有限制的,(FD_SETSIZE默认为1024)。很多人提到增加FD_SETSIZE,这显然是不科学的。因为每一次调用select都会线性的扫描全部的FD集合,效率直线下降2)epoll没有最大并发数限制,它所支持的FD上限是最大可以打开文件的数(一般与系统内存有关)。epoll只会遍历那些被
2013-12-22 13:21:31
659
原创 C++新型类型转化 和内部嵌套类
const_cast: 转化掉表达式的const性质static_cast:编译器隐式执行的转化都可通过此完成。例如将void* 指针转化为typed指针reinterpret_cast意图执行低级转型,例如将pointer to int 转化为intdynamic_cast:执行安全向下转型,用来决定某对象是否guis
2013-12-22 13:19:59
755
原创 源码安装nginx配置Lua模块
1 下载nginx源码$wget 'http://sysoev.ru/nginx/nginx-1.2.6.tar.gz'依赖关系1. gzip module requires zlib library 2. rewrite module requires pcre library 3. ssl support requires openssl library2.安装
2013-10-20 20:22:24
2705
原创 mysql++ 中遇到的安装问题 及linux下C++添加共享库
linux下安装mysql++官方网站下载mysql++tar 命令解压./configure --prefix=/local //安装路径自定义问题:checking for MySQL library directory... configure: error: Didn't find mysqlclient library in '/usr/lib64 /us
2013-08-06 21:31:57
4343
转载 C/C++程序员必须熟练应用的开源项目
作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 只需要复制代码, 改改也就可以了, 因为自己写的代码自己很熟悉。
2013-05-10 18:55:09
586
转载 Socket编程(不限Linux)
转载出处http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有
2013-05-02 16:24:09
443
转载 自己动手写操作体统 pmtest1.asm 详细解释
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/wangshenwq/archive/2008/09/14/2927636.aspx段机制轻松体验 内存寻址: 实模式下的内存寻址: 让我们首先来回顾实模式下的寻址方式 段首地址×16+偏移量 = 物理地址 为 什么要×16?因为在8086CPU中,地址线是20位,但寄存器是16位的,最高寻
2013-03-24 14:42:54
1053
原创 android的控件框架
控件构成了应用界面的基本单元,android的控件都派生自android.view.View类,另外还有一个极其重要的ViewGroup类(可以容纳其他组件的控件),一般的界面组件控件树关系图如下于此同时每棵控件树,都会有一个ViewParent对象与其根控件绑定,此ViewParent对象就是整个控件树中交互事件的控制中心,每个控件对象都会包含指向ViewParentd对象的指针
2013-02-22 18:05:15
555
原创 android ArrayAdpater, BaseAdapter,SimpleAdapter,以及CursorAdapter
本文通过简单分析android中的ArrayAdpater, BaseAdapter,SimpleAdapter,以及CursorAdapter,了解他们的不同,以及应用场合。以及继承BaseAdapter实现更加灵活的Adapter android 开发文档中关于Adapter的定义:An Adapter object acts as a bridge between an AdapterV
2013-02-21 23:23:34
717
转载 fanfoudroid 总体运作流程
引用fanfoudroid 原创的话 地址:http://code.google.com/p/fanfoudroid/wiki/SourceDescription#总体运作流程说在前面安能饭否的代码不算复杂,架构也不算特别优秀。我不打算通过画类图或者架构图的形式来说明。而是尝试用文字来说清楚代码的总体结构、相互关系及演化历史。至于细节,可以直接查看代码,或者提出疑问。当
2013-01-04 19:18:32
440
原创 java泛型
import java.util.Arrays;public class test { public static void main(String[] arg) { // 核心概念:告诉编译器想使用什么类型,编译器帮你处理一切 String str = new String("list"); // 泛型必须使用封装类型 List list1 = new List(str);
2012-10-23 13:23:57
315
原创 c++ const
const指针:从后往前的读法根据“左内右本”的原则左内:当const在*的左边,如const int* p; 表示指针p所指向的内容是常量右本:当const在*的右边,如int* const p; 表示指针p本身是一个常量结合起来:const int* const p; 则表示指针p所指向的内容是常量,同时指针p本身也是一个常量。int const *p//p是一个指
2012-09-09 14:55:23
509
转载 MakeFile文件的书写规范
可访问blog http://xhbdahai.cublog.cn/ 跟我一起写 Makefile概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专
2012-07-13 10:20:28
1820
原创 关于互斥锁,临界区,互斥量,信号量,事件
四种进程或线程同步互斥的控制方法:1、互锁函数:能够很保证原子形式访问资源2、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。3、互斥量:为协调共同对一个共享资源的单独访问而设计的。4、信号量:为控制一个具有有限数量用户资源而设计。5、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。互锁函数: 互锁函数的家族十分的庞大,可以查看msdn(http://msdn2.microsoft.com/en-us/library/ms68636
2011-04-17 23:05:00
1090
snmp Unhandled exception(NTDLL.DLL):0xC0000005
2011-05-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人