自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

松狮

如果你想拥有你从未有过的东西, 那么你必须去做你从未做过的事情!

转载 详解C++类的内存分布结构

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

2016-04-26 19:51:48 1493 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++:打...

2016-04-10 00:06:22 2995 1

原创 C++技术点积累(8)——STL之算法汇总

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

2015-09-27 16:32:42 1389 0

原创 C++技术点积累(7)——STL之容器汇总

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

2015-09-24 09:51:34 1224 1

转载 WINVNC源码分析(五)——vnchooks

VNCHOOKS是一个设置全局钩子的动态链接库。 先看入口函数 view plain BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)  {      // Find out wh...

2017-02-24 16:53:20 575 0

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

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

2017-02-24 16:51:54 508 0

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

omni_thread是一个C++的跨平台的线程包装库。 接口文件omnithread.h 可以看出一般的跨平台编码的方式: 首先通过宏来判断目前所在的操作系统平台(如果你编译的时候出现了“No implementation header file”的提示,请在此文件查找对应的宏,我用的是W...

2017-02-24 16:50:11 585 0

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

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

2017-02-24 16:48:04 870 0

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

下面的内容是用 VC.NET 的调试器调试的整个源码而确定的执行流程. 在分析代码时尽量不要静态的分析代码,这样速度很慢的。利用调试器我们可以通过简单的设置断点来跟踪整个执行流程。 WINVNC 调试其整体流程   在 WinMain中进行 (1) 初始化套接字库 VSocketSys...

2017-02-24 16:45:53 1354 0

转载 UltraVNC源码编译运行

安装:汇编编译器nasm和DirectX SDK (June 2010)(SDK安装出错的话http://my.oschina.net/szm/blog/52039) 下载源代码:UltraVNC VS打开源码中的winvnc工程,会导入所有工程,删除如图所示的工程(对一般使用...

2017-02-23 17:13:45 1955 0

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

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

2017-02-23 15:05:32 4016 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/downloa...

2016-12-18 15:41:20 1293 1

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

0-1背包问题

2016-08-29 18:32:10 14860 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 =...

2016-08-20 21:25:51 635 0

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

一、sprintf函数(是C标准库函数)        功能:把格式化的数据写入某个字符串缓冲区。        头文件:stdio.h        原型:int sprintf ( char *buffer, const char *format, [argument] …);       ...

2016-08-15 17:05:40 1798 0

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

1、全排列: void myFullSort(vector data, int k, int end) { int i; if (k > end) { for (i = 0; i <= end; i++) { cout << data[i] <&l...

2016-08-10 20:43:27 1387 0

原创 大数运算和大数类

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

2016-08-09 22:14:36 802 0

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

一、用 友元全局函数 或者  成员函数  重载运算符       关键区别是:成员函数有this指针,友元函数没有成员指针,传递参数的方式不同,实现代码不同。       对于:objectL  op  objectR       成员函数重载 解释为: objectL.operator op ...

2016-08-09 22:13:16 1168 0

原创 Nginx服务器简介

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

2016-08-09 17:20:13 440 0

转载 epoll并发服务器

1、基本模型 (1)多进程并发服务器:http://blog.csdn.net/songshimvp1/article/details/51819765 (2)多线程并发服务器:http://blog.csdn.net/songshimvp1/article/details/51895311 (3...

2016-08-08 19:24:56 673 0

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

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

2016-08-02 12:23:35 799 0

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

进程间通信,Interprocess Communication,IPC 1、管道和FIFO (1)管道的根本局限在于没有名字,从而只能由有亲缘关系的进程使用。FIFO也叫有名管道,解决了这个限制。管道和FIFO都是使用read和write函数来访问的。 (2)创建管道:int  pipe (i...

2016-07-27 19:53:29 555 0

原创 《C陷阱与缺陷》笔记

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

2016-07-13 16:59:04 348 0

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

并发服务器:       (1)多进程并发服务器:http://blog.csdn.net/songshimvp1/article/details/51819765                              示例:http://blog.csdn.net/songshimvp1/a...

2016-07-13 11:10:23 815 0

原创 UDP,TCP,SCTP使用场合

1、何时使用UDP代替TCP? (1)UDP的优势:          A. UDP支持广播和多播。如果应用程序使用广播或者多播,那就必须使用UDP。          B. UDP没有连接的建立与拆除。UDP只需要两个分组就能交换一个请求和一个应答。 (2)UDP无法...

2016-07-13 00:09:52 2425 1

原创 基本排序算法(2)

1、堆排序: 转(http://www.cnblogs.com/dolphin0520/archive/2011/10/06/2199741.html) 举例说明:      给定一个整形数组a[]={16,7,3,20,17,8},对其进行堆排序。     首先根据该数组元素构建一个完全二叉树,...

2016-07-11 13:19:59 502 0

原创 基本排序算法(1)

1、冒泡排序: 冒泡排序的 基本思想是:两两比较相邻的数据,如果反序,则交换;知道没有反序位置。每一趟都会把一个数字放到最终的位置上!时间复杂度O(N^2)。 void bubbleSort2(int *data,int length) { bool swapFlag = true; //冒...

2016-07-11 12:59:52 891 0

原创 UNIX网络编程——套接字I/O操作上的超时设置

1、调用alarm(SIGALRM信号处理) 调用alarm,它在指定超时期满时产生SIGALRM信号。 (1)使用SIGALRM为connect设置超时:因为在多线程程序中处理信号非常困难,因此建议只是在未线程化程序 或 单线程化程序中使用该技术。 /* include connect_time...

2016-07-08 14:13:20 444 0

原创 UNIX网络编程——守护进程和inted超级服务器

1、守护进程       守护进程是在后台运行,且不和任何控制终端交互关联的进程。 2、syslogd守护进程——系统日志消息守护进程 (1)syslogd函数:调用该函数从守护进程中登记消息。          void syslog(int priority, const ch...

2016-07-08 13:21:08 902 0

原创 UNIX网络编程——基本SCTP套接字编程

1、一到一形式:(与TCP的典型用法几乎一样)        一到一形式套接字是一个类型为SOCK_STREAM,协议为IPPROTO_SCTP的网际套接字。 2、一到多形式:        服务器程序无需管理大量的套接字描述符,单个套接字描述符将代表多个关联。在一到多形式的套接字上,用“...

2016-07-07 20:36:59 1300 0

原创 UNIX网络编程——基本UDP套接字编程

1、UDP客户/服务器套接字函数 UDP回射客户/服务器: 2、UDP服务器实现: #include "unp.h" void  dg_echo(int sockfd, SA *pcliaddr, socklen_t clilen) {     int      ...

2016-07-07 15:09:25 412 0

原创 UNIX网络编程——并发服务器(I/O复用)

I/O复用型并发服务器:I/O复用是用来解决。         在这篇文章http://blog.csdn.net/songshimvp1/article/details/51819765中,介绍了多进程并发服务器(为每一个客户fork一个子进程)。接下来我们介绍I/O复用型并发服务器(使用sel...

2016-07-07 10:24:32 917 0

原创 UNIX网络编程——shutdown函数(I/O复用并发服务器)

上述这篇文章http://blog.csdn.net/songshimvp1/article/details/51838990中,第4点,以批量处理方式运行客户,仅仅使用select无法实现TCP的半关闭——给服务器发送一个FIN,告诉它我们完成了数据的发送,但是仍然保持套接字描述符打开以便读取。...

2016-07-06 22:00:56 735 0

原创 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. 从内核向进程复制数据。       ...

2016-07-06 17:40:20 677 0

原创 UNIX网络编程——使用waitpid处理僵尸进程(TCP客户/服务器优化1)

1、僵尸进程 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。  unix提供了一种机制可以保证只要父进程想知道子进程结束时的状态信息, 就可以得到...

2016-07-06 12:01:58 831 0

原创 UNIX网络编程——TCP客户/服务器(回射服务器)示例(多进程服务器)

TCP客户/服务器(回射服务器)完整简单示例。如果你想了解TCP客户/服务器,以及多进程并发服务器具体过程,可以看:http://blog.csdn.net/songshimvp1/article/details/51819820 和 http://blog.csdn.net/songshim...

2016-07-06 09:59:26 846 0

原创 UNIX网络编程——并发服务器(多进程)

1、TCP客户/服务器(回射服务器)完整简单示例:

2016-07-05 20:57:27 886 0

原创 UNIX网络编程——TCP的连接建立与终止、基本TCP客户/服务器套接字函数

写在前面,本来觉得关于TCP的建立与终止是一些纯理论的东西,看UNIX网络编程时大概看了一下,没想到后面所涉及到的编程都需要十分熟悉TCP的建立、连接、终止的过程细节,所以特地返回来总结一下。

2016-07-05 18:09:25 711 0

转载 孤儿进程与僵尸进程

1、前言   之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。 2、基...

2016-07-04 15:41:59 257 0

原创 UNIX网络编程——概述

1、编写计算机网络通信程序,首先要确定这些程序相互通信所用的协议。在深入设计一个协议之前,应该从高层次决断由哪一个程序发起通信,以及在何时产生响应。 2、(1)客户与服务器使用TCP在同一个局域网 (2)客户与服务器在不同局域网(使用广域网连接) 3、OSI模型和网际协议族中的各层    ...

2016-07-03 13:51:51 387 0

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