关闭

[置顶] 详解C++类的内存分布结构

我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。 工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来: (1)右键CPP文件,属性;  (2)先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上/d1 reportSingleCl...
阅读(369) 评论(0)

[置顶] 概览C++之const

1、C语言中const 与 C++中的const void main() { const int a = 10; int *p = (int*)&a; *p = 20; printf("%d", a); } 比较上述代码在C中和C++中运行结果:C:打印20;C++:打印0; 由此可见,C语言中的const是个“冒牌货”,C++中 的const是一个真正的常量。 原因:C语言直...
阅读(2777) 评论(1)

[置顶] C++技术点积累(8)——STL之算法汇总

C++技术点积累(8)——STL之算法汇总: 一、算法概述 1)算法部分主要由头文件,和组成。        是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等等。        体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。        中则定义了一些模板类,用以声明函数对...
阅读(836) 评论(0)

[置顶] C++技术点积累(7)——STL之容器汇总

C++技术点积累(7)——STL(标准模板库): STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。STL的一个重要特点是数据结构和算法的分离,这种分离使得STL变得非常通用。...
阅读(910) 评论(1)

WINVNC源码分析(五)——vnchooks

VNCHOOKS是一个设置全局钩子的动态链接库。 先看入口函数 view plain BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)  {      // Find out why we're being called      switch (ul_reason_...
阅读(144) 评论(0)

WINVNC源码分析(四)——IO之rdr库

rdr是winvnc用来io操作的一个库工程。 IO操作无非两种,写入和读取数据,所以这里每个类都相应地分成了IN和OUT两种操作,先分析IN。     view plain class InStream {  public:    virtual ~InStream() {}    // check() ensures there is buffer data for ...
阅读(162) 评论(0)

WINVNC源码分析(三)——omni_thread库

omni_thread是一个C++的跨平台的线程包装库。 接口文件omnithread.h 可以看出一般的跨平台编码的方式: 首先通过宏来判断目前所在的操作系统平台(如果你编译的时候出现了“No implementation header file”的提示,请在此文件查找对应的宏,我用的是WIN32系统,所以预定义了__WIN32__),然后包含不同的头文件(WIN32是nt.h头文件),在...
阅读(129) 评论(0)

WINVNC源码分析(二)——图像

WINVNC是用bitmap格式保存桌面图像的,所以先补充下相关知识。   图像“像素”(Pixel):把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是构成影像的最小单位“像素”(Pixel)。 图像分辨率:表示每一个方向上的像素数量,比如640X480,表示由640X480个像素组成。 DPI(Dot Per Inch):表示每英寸显示的像素数。图像显...
阅读(336) 评论(0)

WINVNC分析(一)——源码执行流程

下面的内容是用 VC.NET 的调试器调试的整个源码而确定的执行流程. 在分析代码时尽量不要静态的分析代码,这样速度很慢的。利用调试器我们可以通过简单的设置断点来跟踪整个执行流程。 WINVNC 调试其整体流程   在 WinMain中进行 (1) 初始化套接字库 VSocketSystem (2) 解析命令行参数 (3) 调用主窗口过程  WinVNCAppMain      ...
阅读(172) 评论(0)

UltraVNC源码编译运行

安装:汇编编译器nasm和DirectX SDK (June 2010)(SDK安装出错的话http://my.oschina.net/szm/blog/52039) 下载源代码:UltraVNC VS打开源码中的winvnc工程,会导入所有工程,删除如图所示的工程(对一般使用没有影响)winvnc->右键->属性->配置属性->vc++目录,在包含目录和库目录中添加direc...
阅读(401) 评论(0)

UltraVNC(TightVNC、WinVNC)源码分析文档

Posted on 2005-10-10 09:56 Piccolo Goo 阅读(3248) 评论(1)  编辑 收藏                                      Content List: System Shell IActiveDesktop SetProcessShutdownParameters One Instance Ru...
阅读(883) 评论(1)

TightVNC2.8.5在VS2010下编译和错误解决

一、编译: tightvnc版本:tightvnc-2.8.5-src-gpl 编译工具IDE:VS2010 系统环境:Win7-32 库文件依赖:Windows Kits (下载链接:https://developer.microsoft.com/en-us/windows/downloads/windows-8-sdk) 配置: Two versions of...
阅读(383) 评论(1)

0-1背包问题、贪心算法、动态规划

0-1背包问题...
阅读(2579) 评论(1)

最长递增子序列(一维、二维)

1、一维: void main01() { vector data = { 2, 1, 6, 4, 5, 2, 7, 4}; vector len(data.size(), 1); //记录长度的辅助数组 int maxx = len[0]; for (int i = 1; i < data.size(); i++) { int cur = 0; for (...
阅读(257) 评论(0)

sprintf、snprintf、sscanf、itoa、atoi、cin、string与进制转换

一、sprintf函数(是C标准库函数)        功能:把格式化的数据写入某个字符串缓冲区。        头文件:stdio.h        原型:int sprintf ( char *buffer, const char *format, [argument] …);        参数列表:            buffer:char型指针,指向将要写入的字符串的缓...
阅读(673) 评论(0)

全排列、判断栈序、火车进出站

1、全排列: void myFullSort(vector data, int k, int end) { int i; if (k > end) { for (i = 0; i <= end; i++) { cout << data[i] << " "; } cout << endl; } else { for (i = k; i <= end; i++)...
阅读(456) 评论(0)

大数运算和大数类

1、首先看一个小问题: 整型数组、字符型数组、vector在未初始化的情况下: int main() { int data[5]; char c[5]; vector v(5); vector v1(5); vector v2; cout << "int[]: "; for (int i = 0; i < 5; i++) { cout << data[i] << "...
阅读(184) 评论(0)

操作符(运算符)重载注意事项(含模板类中<<、>>重载)

一、用 友元全局函数 或者  成员函数  重载运算符       关键区别是:成员函数有this指针,友元函数没有成员指针,传递参数的方式不同,实现代码不同。       对于:objectL  op  objectR       成员函数重载 解释为: objectL.operator op (objectR)  ===》objectL通过this指针传递,objectR由参数obje...
阅读(371) 评论(0)

Nginx服务器简介

1、Nginx简介 (1)三大功能:A.web服务器; B.反向代理服务器(负载均衡); C.邮件服务器(不常用); 反向代理服务器模型: (2)Nginx的优势: 2、Nginx的工作原理 (1)Nginx进程模型:      Nginx进程模型图:   Nginx进程模型的优势:      ...
阅读(232) 评论(0)

epoll并发服务器

1、基本模型 (1)多进程并发服务器:http://blog.csdn.net/songshimvp1/article/details/51819765 (2)多线程并发服务器:http://blog.csdn.net/songshimvp1/article/details/51895311 (3)I/O服用并发服务器:select、poll 2、epoll服务器 (1)epoll_...
阅读(288) 评论(0)

大端法、小端法、网络字节序 以及 Linux硬链接、软链接(转)

关于字节序(大端法、小端法)的定义 《UNXI网络编程》定义:术语“小端”和“大端”表示多字节值的哪一端(小端或大端)存储在该值的起始地址。小端存在起始地址,即是小端字节序;大端存在起始地址,即是大端字节序。   也可以说: 1.小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。 2.大端法(Big-Endian)就是...
阅读(462) 评论(0)

UNIX网络编程——进程间通信

进程间通信,Interprocess Communication,IPC 1、管道和FIFO (1)管道的根本局限在于没有名字,从而只能由有亲缘关系的进程使用。FIFO也叫有名管道,解决了这个限制。管道和FIFO都是使用read和write函数来访问的。 (2)创建管道:int  pipe (int  fd[2])——提供一个单路数据流,返回两个文件描述符。fd[0]打开来读,fd[1]...
阅读(238) 评论(0)

《C陷阱与缺陷》笔记

这本书不是批判,而是指出易犯错误,防止编程中的陷阱和障碍。 1、易犯错误类型归纳: (1)词法分析;(2)语法细节问题;(3)语义细节;(4)库函数的误用;(5)预处理器;(6)可移植性;(7)预防性程序设计; 2、运算符优先级: (1)任何一个逻辑运算符的优先级低于任何一个关系运算符; (2)移位运算符的优先级比算术运算符要低,但是比关系运算符要高;...
阅读(191) 评论(0)

UNIX网络编程——并发服务器(多线程)

并发服务器:       (1)多进程并发服务器:http://blog.csdn.net/songshimvp1/article/details/51819765                              示例:http://blog.csdn.net/songshimvp1/article/details/51833781       (2)I/O复用并发服务器:ht...
阅读(374) 评论(0)
199条 共10页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:184105次
    • 积分:3270
    • 等级:
    • 排名:第10850名
    • 原创:146篇
    • 转载:52篇
    • 译文:1篇
    • 评论:37条
    博客专栏
    最新评论