- 博客(199)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 详解C++类的内存分布结构
我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来:(1)右键CPP文件,属性; (2)先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上/d1 reportSingleCl
2016-04-26 19:51:48
3122
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 概览C++之const
1、C语言中const 与 C++中的constvoid 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语言直
2016-04-10 00:06:22
3228
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C++技术点积累(8)——STL之算法汇总
C++技术点积累(8)——STL之算法汇总:一、算法概述1)算法部分主要由头文件,和组成。 是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等等。 体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。 中则定义了一些模板类,用以声明函数对
2015-09-27 16:32:42
1723
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C++技术点积累(7)——STL之容器汇总
C++技术点积累(7)——STL(标准模板库):STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。STL的一个重要特点是数据结构和算法的分离,这种分离使得STL变得非常通用。
2015-09-24 09:51:34
1534
1
原创 Filco键盘问题
垃圾中的垃圾,垃圾中的战斗机!先按键盘的最左边重置,红蓝灯交替,直到蓝灯长时间闪烁。第一种:如果从“蓝牙和其他设备”添加时,提示需要输入PIN码,果断换方式:第二种:从 “控制面板”,“添加设备”开始,可以会自动出现一串数字,迅速在filco设备上输入数字,回车;如果提示,无法添加,先执行:windows键+R 输入“regedit” 打开注册表管理器 删除这个文件夹下列所有东西 HKEY_USERS\.DEFAULT\Software\Microsoft\Windo
2022-05-15 23:07:23
5065
1
转载 WINVNC源码分析(五)——vnchooks
VNCHOOKS是一个设置全局钩子的动态链接库。先看入口函数view plainBOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) { // Find out why we're being called switch (ul_reason_
2017-02-24 16:53:20
1229
转载 WINVNC源码分析(四)——IO之rdr库
rdr是winvnc用来io操作的一个库工程。IO操作无非两种,写入和读取数据,所以这里每个类都相应地分成了IN和OUT两种操作,先分析IN。 view plainclass InStream { public: virtual ~InStream() {} // check() ensures there is buffer data for
2017-02-24 16:51:54
960
转载 WINVNC源码分析(三)——omni_thread库
omni_thread是一个C++的跨平台的线程包装库。接口文件omnithread.h可以看出一般的跨平台编码的方式:首先通过宏来判断目前所在的操作系统平台(如果你编译的时候出现了“No implementation header file”的提示,请在此文件查找对应的宏,我用的是WIN32系统,所以预定义了__WIN32__),然后包含不同的头文件(WIN32是nt.h头文件),在
2017-02-24 16:50:11
1046
转载 WINVNC源码分析(二)——图像
WINVNC是用bitmap格式保存桌面图像的,所以先补充下相关知识。 图像“像素”(Pixel):把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是构成影像的最小单位“像素”(Pixel)。图像分辨率:表示每一个方向上的像素数量,比如640X480,表示由640X480个像素组成。DPI(Dot Per Inch):表示每英寸显示的像素数。图像显
2017-02-24 16:48:04
1174
转载 WINVNC分析(一)——源码执行流程
下面的内容是用 VC.NET 的调试器调试的整个源码而确定的执行流程. 在分析代码时尽量不要静态的分析代码,这样速度很慢的。利用调试器我们可以通过简单的设置断点来跟踪整个执行流程。WINVNC 调试其整体流程 在 WinMain中进行(1) 初始化套接字库 VSocketSystem(2) 解析命令行参数(3) 调用主窗口过程 WinVNCAppMain
2017-02-24 16:45:53
2075
转载 UltraVNC源码编译运行
安装:汇编编译器nasm和DirectX SDK (June 2010)(SDK安装出错的话http://my.oschina.net/szm/blog/52039)下载源代码:UltraVNCVS打开源码中的winvnc工程,会导入所有工程,删除如图所示的工程(对一般使用没有影响)winvnc->右键->属性->配置属性->vc++目录,在包含目录和库目录中添加direc
2017-02-23 17:13:45
2966
转载 UltraVNC(TightVNC、WinVNC)源码分析文档
Posted on 2005-10-10 09:56 Piccolo Goo 阅读(3248) 评论(1) 编辑收藏 Content List:System ShellIActiveDesktopSetProcessShutdownParametersOne Instance Ru
2017-02-23 15:05:32
6901
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
2016-12-18 15:41:20
1791
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 (
2016-08-20 21:25:51
1499
原创 sprintf、snprintf、sscanf、itoa、atoi、cin、string与进制转换
一、sprintf函数(是C标准库函数) 功能:把格式化的数据写入某个字符串缓冲区。 头文件:stdio.h 原型:int sprintf ( char *buffer, const char *format, [argument] …); 参数列表: buffer:char型指针,指向将要写入的字符串的缓
2016-08-15 17:05:40
2790
原创 全排列、判断栈序、火车进出站
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++)
2016-08-10 20:43:27
1737
原创 大数运算和大数类
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] << "
2016-08-09 22:14:36
1208
原创 操作符(运算符)重载注意事项(含模板类中<<、>>重载)
一、用 友元全局函数 或者 成员函数 重载运算符 关键区别是:成员函数有this指针,友元函数没有成员指针,传递参数的方式不同,实现代码不同。 对于:objectL op objectR 成员函数重载 解释为: objectL.operator op (objectR) ===》objectL通过this指针传递,objectR由参数obje
2016-08-09 22:13:16
1748
原创 Nginx服务器简介
1、Nginx简介(1)三大功能:A.web服务器; B.反向代理服务器(负载均衡); C.邮件服务器(不常用);反向代理服务器模型:(2)Nginx的优势:2、Nginx的工作原理(1)Nginx进程模型: Nginx进程模型图: Nginx进程模型的优势:
2016-08-09 17:20:13
659
转载 epoll并发服务器
1、基本模型(1)多进程并发服务器:http://blog.csdn.net/songshimvp1/article/details/51819765(2)多线程并发服务器:http://blog.csdn.net/songshimvp1/article/details/51895311(3)I/O服用并发服务器:select、poll2、epoll服务器(1)epoll_
2016-08-08 19:24:56
937
转载 大端法、小端法、网络字节序 以及 Linux硬链接、软链接(转)
关于字节序(大端法、小端法)的定义《UNXI网络编程》定义:术语“小端”和“大端”表示多字节值的哪一端(小端或大端)存储在该值的起始地址。小端存在起始地址,即是小端字节序;大端存在起始地址,即是大端字节序。 也可以说: 1.小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。 2.大端法(Big-Endian)就是
2016-08-02 12:23:35
1048
原创 UNIX网络编程——进程间通信
进程间通信,Interprocess Communication,IPC1、管道和FIFO(1)管道的根本局限在于没有名字,从而只能由有亲缘关系的进程使用。FIFO也叫有名管道,解决了这个限制。管道和FIFO都是使用read和write函数来访问的。(2)创建管道:int pipe (int fd[2])——提供一个单路数据流,返回两个文件描述符。fd[0]打开来读,fd[1]
2016-07-27 19:53:29
875
原创 《C陷阱与缺陷》笔记
这本书不是批判,而是指出易犯错误,防止编程中的陷阱和障碍。1、易犯错误类型归纳:(1)词法分析;(2)语法细节问题;(3)语义细节;(4)库函数的误用;(5)预处理器;(6)可移植性;(7)预防性程序设计;2、运算符优先级:(1)任何一个逻辑运算符的优先级低于任何一个关系运算符;(2)移位运算符的优先级比算术运算符要低,但是比关系运算符要高;
2016-07-13 16:59:04
495
原创 UNIX网络编程——并发服务器(多线程)
并发服务器: (1)多进程并发服务器:http://blog.csdn.net/songshimvp1/article/details/51819765 示例:http://blog.csdn.net/songshimvp1/article/details/51833781 (2)I/O复用并发服务器:ht
2016-07-13 11:10:23
1116
原创 UDP,TCP,SCTP使用场合
1、何时使用UDP代替TCP?(1)UDP的优势: A. UDP支持广播和多播。如果应用程序使用广播或者多播,那就必须使用UDP。 B. UDP没有连接的建立与拆除。UDP只需要两个分组就能交换一个请求和一个应答。(2)UDP无法提供的TCP特性:(3)总结建议: 多媒体应用领域的增长将会促
2016-07-13 00:09:52
4039
1
原创 基本排序算法(2)
1、堆排序:转(http://www.cnblogs.com/dolphin0520/archive/2011/10/06/2199741.html)举例说明: 给定一个整形数组a[]={16,7,3,20,17,8},对其进行堆排序。 首先根据该数组元素构建一个完全二叉树,得到(1)初始状态: (2)构建堆的过程:
2016-07-11 13:19:59
637
原创 基本排序算法(1)
1、冒泡排序:冒泡排序的 基本思想是:两两比较相邻的数据,如果反序,则交换;知道没有反序位置。每一趟都会把一个数字放到最终的位置上!时间复杂度O(N^2)。void bubbleSort2(int *data,int length){ bool swapFlag = true; //冒泡排序优化:当某趟过程中未发生交换,则停止整个排序过程 for (int i = 0;
2016-07-11 12:59:52
1013
原创 UNIX网络编程——套接字I/O操作上的超时设置
1、调用alarm(SIGALRM信号处理)调用alarm,它在指定超时期满时产生SIGALRM信号。(1)使用SIGALRM为connect设置超时:因为在多线程程序中处理信号非常困难,因此建议只是在未线程化程序 或 单线程化程序中使用该技术。/* include connect_timeo */#include "unp.h"static void connect_alarm
2016-07-08 14:13:20
654
原创 UNIX网络编程——守护进程和inted超级服务器
1、守护进程 守护进程是在后台运行,且不和任何控制终端交互关联的进程。2、syslogd守护进程——系统日志消息守护进程(1)syslogd函数:调用该函数从守护进程中登记消息。 void syslog(int priority, const char *message, ... ); 参数priority是level(
2016-07-08 13:21:08
1740
原创 UNIX网络编程——基本SCTP套接字编程
1、一到一形式:(与TCP的典型用法几乎一样) 一到一形式套接字是一个类型为SOCK_STREAM,协议为IPPROTO_SCTP的网际套接字。2、一到多形式: 服务器程序无需管理大量的套接字描述符,单个套接字描述符将代表多个关联。在一到多形式的套接字上,用“关联标识”来标识单个连接。 一到多形式套接字是一个类型为SOCK_S
2016-07-07 20:36:59
1701
原创 UNIX网络编程——基本UDP套接字编程
1、UDP客户/服务器套接字函数UDP回射客户/服务器:2、UDP服务器实现:#include "unp.h"void dg_echo(int sockfd, SA *pcliaddr, socklen_t clilen){ int n; socklen_t len; char mesg[
2016-07-07 15:09:25
629
原创 UNIX网络编程——并发服务器(I/O复用)
I/O复用型并发服务器:I/O复用是用来解决。 在这篇文章http://blog.csdn.net/songshimvp1/article/details/51819765中,介绍了多进程并发服务器(为每一个客户fork一个子进程)。接下来我们介绍I/O复用型并发服务器(使用select来处理任意个客户(单进程))。1、图解使用select编写I/O复用型并发服务器
2016-07-07 10:24:32
1247
原创 UNIX网络编程——shutdown函数(I/O复用并发服务器)
上述这篇文章http://blog.csdn.net/songshimvp1/article/details/51838990中,第4点,以批量处理方式运行客户,仅仅使用select无法实现TCP的半关闭——给服务器发送一个FIN,告诉它我们完成了数据的发送,但是仍然保持套接字描述符打开以便读取。1、shutdown函数的作用(1)close把描述符的引用计数减1,仅在该计数变为0
2016-07-06 22:00:56
1028
原创 UNIX网络编程——I/O复用(select、poll)
1、五种I/O模型: (1)阻塞式I/O;(2)非阻塞式I/O;(3)I/O复用(select、poll);(4)信号驱动式I/O(SIGIO);(5)异步I/O(aio_系列函数); 一个输入操作分为两个阶段:A. 等待数据准备好;B. 从内核向进程复制数据。 一个套接字上的输入也类似,A. 等待数据从网络中到达(所等待分组到达时,会被复制到内核中的某个缓
2016-07-06 17:40:20
961
原创 UNIX网络编程——使用waitpid处理僵尸进程(TCP客户/服务器优化1)
1、僵尸进程 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。 unix提供了一种机制可以保证只要父进程想知道子进程结束时的状态信息, 就可以得到。这种机制就是: 在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。 但是
2016-07-06 12:01:58
1109
原创 UNIX网络编程——TCP客户/服务器(回射服务器)示例(多进程服务器)
TCP客户/服务器(回射服务器)完整简单示例。如果你想了解TCP客户/服务器,以及多进程并发服务器具体过程,可以看:http://blog.csdn.net/songshimvp1/article/details/51819820 和 http://blog.csdn.net/songshimvp1/article/details/51819765。
2016-07-06 09:59:26
1193
原创 UNIX网络编程——TCP的连接建立与终止、基本TCP客户/服务器套接字函数
写在前面,本来觉得关于TCP的建立与终止是一些纯理论的东西,看UNIX网络编程时大概看了一下,没想到后面所涉及到的编程都需要十分熟悉TCP的建立、连接、终止的过程细节,所以特地返回来总结一下。
2016-07-05 18:09:25
1174
转载 孤儿进程与僵尸进程
1、前言 之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。2、基本概念 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的
2016-07-04 15:41:59
355
sqlitegen_eclipse_site_0.1.18.jar
2015-11-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人