自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

转载 sgi-stl,allocator/boost:pool

内存池(MemPool)技术详解2007-05-13 04:10   概述 内存池(MemPool)技术备受推崇。我用google搜索了下,没有找到比较详细的原理性的文章,故此补充一个。另外,补充了boost::pool组件与

2007-07-07 12:04:00 1634

原创 服务器架构方案(转载)

v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);} Normal 0 7.8 磅 0 2

2008-07-16 12:38:00 1083

原创 Win32网络知识

1. WM_APP: 想要定义其自己消息的应用程序应该使用WM_APP。WM_APP 是确保不会与系统(WM_CREATE 等等)或类/特定控件消息如DM_GETDEFID 相冲突的。 2. WSACleanup: 每次调用WSASt

2008-01-25 13:15:00 697

原创 内核对象

 MAX_PATH : 260内核对象属于操作系统内核的,不属于进程,所以才能用引用计数的手段保证进程间共享。GDI对象不是内核对象,区分:创建API里有无安全性属性(PSECURITY_ATTRIBUTES). 注意:错误返回值不一定是NULL内核对象的句柄值是进程句柄表的数组索引,所以:不能直接跨进程使用句柄。3种方式:父子进程:句柄相同;   命名对象:句柄很可能不同

2007-09-15 08:03:00 676

转载 Knowledge to learn

1.  static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?  全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组

2007-08-24 09:52:00 689

转载 Basic good knowledge

1.进程和线程的差别。  线程是指进程内的一个执行单元,也是进程内的可调度实体.  与进程的区别:  (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位  (2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行  (3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.   (4)系统开销:在创建或撤消进程时

2007-08-23 13:08:00 690

原创 C++/COM string conversion

char* wchar_t*1. sprintf(desWChars, "%s", srcChars);   swprintf(desChars, "%S", srcWChars);2. wchar_t *desWChars = A2W(srcChars); // ATL convention.   char *desChars = W2A(srcWChars);    // ATL con

2007-08-22 11:36:00 1598

转载 COM和Dll的主要区别

 一:COM和Dll的主要区别:COM是为了二进制兼容而加了许多限制(COM协议)的DLL,主要的协议: 1:导出函数为DllCanUnloadNow DllGetClassObjectDllMainDllRegisterServerDllUnregisterServer的DLL. 这几个函数COM库会使用,COM库通过DllGetClassObject导出函数来加载并创建COM对象. 2:通

2007-08-21 23:50:00 1377

原创 DLL

客户程序如何找到DLL如果用LoadLibrary显示链接到DLL的话,我们可以指定DLL的全路径名。如果没有指定路径名,或者用了隐式链接,则Windows将使用下面的搜索序列来定位DLL:1. 包含客户EXE文件的目录2. 当前目录3. Windows系统目录(GetSystemDirectory)4. Windows目录(GetWindowsDirectory)5. 在Path环境变量里列出的

2007-08-18 10:28:00 673

原创 Basic C++ knowledges

1. 关于成员变量初始化顺序,几个有依赖关系的成员变量要初始化,让写出构造函数。 在初始化列表中,成员变量的初始化顺序是其在类中声明顺序,而非列表中的顺序。2. 怎样使一个class不能被实例化1,构造函数私有化(Singleton)   2,抽象类 (pure virtual function).但2不太好3. 私有继承和public继承的区别。 私有继承: 只继承实现,

2007-08-18 10:23:00 993

转载 C语言文件操作函数大全

二十三、C语言文件操作2007-07-08 17:36 一、标准文件的读写      1.文件的打开fopen()          文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了。当使用打开函

2007-08-13 18:49:00 2858

转载 C/C++是算术移位

C/C++中移位操作完全等同于汇编中的“算术移位指令”,而不等同于“逻辑移位指令”!具体来说,跟前面一篇关于数据类型扩展的文章很相似,左移全部是补0,这毫无疑问!在右移操作中,最左侧补0还是补1,完全取决于操作数本身是不是符号数。如果是无符号数,则全部是补0,如果是有符号数,则补符号位上的数字,负数补1,正数补0;也就是说,对于有符号数,无论怎么移,符号位保持不变!!! 

2007-08-13 10:22:00 1603

转载 二维数组new小结

C++中二维数组new小结 [ 2005-9-16 23:32:00 | By: shefeeling ]  

2007-08-08 13:07:00 613

转载 我自己的稀疏矩阵

        求解跟图相关的问题时,经常用到矩阵。如果矩阵边比节点(n^2)少很多,可以考虑稀疏矩阵。        可以类似3元组表示法。开一个n个元素的指针数组,每个指针指向一边连续内存,这段连续内存里放的是[列号 边权]二元组,头部有DWORD值标识该列一共几个二元组。每一行按列号排好序,这样随机访问一个时,用二分查找,是O(log((k)(1/2)))的时间复杂度。      

2007-08-07 17:33:00 721

转载 c++ volatile用法(转)

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值(From Memory),而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1) 并行设备的硬件寄存器(如:状态寄存器)2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic va

2007-07-27 18:42:00 6306 1

转载 一个简单内存池的实现

栈(放指针)+对象池重载了具体对象的operator new缺点:没有用数组,还是存在malloc的空隙.  在一个长时间运行的系统中(如一个httpserver),内存的分配和释放操作很频繁. 如果只是按照平常的编程模式, 在需要内存时在堆中分配,在使用完后立即释放, 效率会很低. 因为在c++中,系统默认的new和delete操作为了兼顾所有的情况,效率很低,同时,反复的内存分

2007-07-07 14:03:00 1482

原创 malloc

malloc维护一个双链表 ,新节点放在链头,free(p)时,根据p, 前32个字节处是链表节点,把其从双链表中删去。保护机制:每个内存块的头尾各4字节,加上了no-mans-land(fd fd fd fd), 块内容初始化为cd cd. 也带来了分配时初始化和释放时检验的开销。最底下用了HeapAlloc(_crtheap,...)_MT:多线程锁为什么要有双链表? 不知

2007-07-07 11:54:00 962

原创 C++应用程序性能优化(书)内存管理

本质上虚拟内存就是要让一个程序的代码和数据在没有全部载入内存时即可运行。运行过程中,当执行到尚未载入内存的代码,或者要访问还没有载入到内存的数据时,虚拟内存管理器动态地将这部分代码或数据从硬盘载入到内存中。而且在通常情况下,虚拟内存管理器也会相应地先将内存中某些代码或者数据置换到硬盘中,为即将载入的代码或数据腾出空间。因为内存和硬盘之间的数据传输相对代码执行来说,是非常慢的操作,因此虚拟内存管

2007-07-07 10:39:00 4876

原创 C++语法收获

 1. operator= VS copy constructor:  有->有;无->有. 所以operator=要this自赋植判断.2. inline      VS      macro   编译期                预处理期    无                         ++副作用  类型检查                无   不一定   

2007-07-07 10:15:00 741

转载 堆:欢乐和痛苦(不太懂)

 堆:欢乐和痛苦Murali R. KrishnanMicrosoft Corporation1999 年 2 月摘要: 讨论常见的堆性能问题以及如何防范它们。(共 9 页)前言您是否是动态分配的 C/C++ 对象忠实且幸运的用户?您是否在模块间的往返通信中频繁地使用了“自动化”?您的程序是否因堆分配而运行起来很慢?不仅仅您遇到这样的问题。几乎所有项目迟早都会遇到堆问题。大

2007-07-07 09:56:00 804

原创 引用记数+垃圾回收+.NETGC

确定性终止开销分散,没有统一一个大的回收操作Cache-miss率低 循环引用线程安全变更1个指针,开销大,老的新的都要动1引用计数的空间开销 1. 引用计数的优点引用计数提供了3点重要好处:●      确定性终止(Deterministic Finalization)。当一个对象的引用计数到零时,线程执行的下一个操作是销毁对象和其他使用的资源。这称为

2007-07-06 23:25:00 1753 1

原创 《windows核心编程》学习笔记(一)内核对象

1.内核对象:    1).符号对象    2).事件对象    3).文件对象    4).文件影象对象    5).I/O完成对象    6).作业对象    7).信箱对象    8).互斥对象    9).管道对象    10).进程对象    11).信标对象    12).线程对象    13).等待计时器对象2.内核对象只能由内核所拥有,而不是由进程拥有.3.内核对象的数据结构有

2007-07-06 23:20:00 703

原创 什么是内核对象

作为一个Windows软件开发人员,你经常需要创建、打开和操作各种内核对象。系统要创建和操作若干类型的内核对象,比如存取符号对象,事件对象,文件对象,文件映射对象,I/O完成端口对象,作业对象,信箱对象,互斥对象,管道对象,进程对象,信标对象,线程对象和等待记时器对象等。这些对象都是通过调用函数来创建的。例如,CreateFileMapping函数可使系统能够创建一个文件映射对象。每个内核对象只是

2007-07-06 23:03:00 1023

百度技术研发笔试题目

近2年的百度的技术笔试题。共9页。 蚂蚁爬杆 实现字符串revert 实现memmove 英文拼写纠错 寻找热门查询 集合合并 ...

2009-08-16

空空如也

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

TA关注的人

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