10 2012 档案

摘要:对于文本编辑器,最关键的知识点,就是 插入符号 的操作了...windows中有5个基本的插入符号函数: CreateCaret:创建和窗口关联的插入符号 SetCaretPos:设置窗口内的插入符号的位置 ShowCaret:显示插入符号 HideCaret:隐藏插入符号 DestroyCaret:销毁插入符号对于插入符号的相关函数: GetCaretPos:获得当前插入符号位置的函数 GetCaretBlinkTime SetCaretBlinkTime获得和设置插入符号闪烁的时间函数关于 插入符号 的消息捕获:程序通过处理WM_SETFOCUS和WM_KILLFOCUS消息... 阅读全文
posted @ 2012-10-31 21:20 xingoo 阅读(597) 评论(0) 推荐(0) 编辑
摘要:创建键盘接口: 有一个简单的方法:在窗口过程中增加WM_KEYDOWN逻辑,类似于复制了所有的WM_VSCROLL 和 WM_HSCROLL逻辑。但是,不管什么时候我们想修改滚动条逻辑,就不得不在WM_KEYDOWN消息上做同样的改变。这样的做法是不明智的 另一种更好的方法:把每一个WM_KEYDOWN消息转换为同等的WM_VSCROLL 或者 WM_HSCROLL消息。可以通过给窗口过程发送假的消息欺骗函数 WndProc函数,使她认为受到了滚动消息。发送函数为SendMessage:SendMessage(hwnd,message,wParam,lParam);向他发送的窗口过程可以使.. 阅读全文
posted @ 2012-10-31 20:09 xingoo 阅读(1229) 评论(0) 推荐(0) 编辑
摘要:问题描述: 简单地使用随即的尺寸和颜色不停的绘制一系列的图像。一种古老的方式: 设置一个向窗口函数发送WM_TIMER消息的windows计时器。 对每个WM_TIMER消息,调用GetDC函数获取设备环境,然后绘制一个随机矩形,接着调用ReleaseDC函数释放设备环境。方法弊端: 程序不能很快的绘制随机矩形,必须等待每个WM_TIMER消息,会依赖于系统时钟的精度新函数: PeekMessage(&msg,NULL,0,0,PM_REMOVE);这个函数允许一个程序检查程序队列中的下一个消息,而不是真实的获取并删除它看到的消息。正常的循环消息:while (GetMessage(. 阅读全文
posted @ 2012-10-31 15:44 xingoo 阅读(597) 评论(0) 推荐(0) 编辑
摘要:常用的MFC类CRuntimeClass结构在CRuntimeClass结构中定义了类名、对象所占存储空间的大小、类的版本号等成员变量及动态创建对象、派生关系判断等成员函数。每一个从CObject类派生的类都有一个CRuntimeClass结构同它关联,以便完成在运行时得到对象的信息或基类的信息。要使用CRuntimeClass结构,必须结合使用RUNTIME_CLASS()宏和其他有关运行时类型识别的MFC宏。CObject类MFC的CObject类为程序员提供了对象诊断、运行时类型标识和序列化等功能。(1)对象诊断:利用成员函数AssertValid进行对象有效性检查;利用成员函数Dump 阅读全文
posted @ 2012-10-31 10:14 xingoo 阅读(5433) 评论(0) 推荐(1) 编辑
摘要:首先用应用向导产生一名为scro的基于对话框的应用,再利用对话框编辑器加入两个一样的水平滚动条,两个滚动条的id分别取idc—scr1和idc—scr2,结果如下图,将其作为本文的示例。 对话框编辑器虽然允许将滚动条控件加进对话框中,而且,类向导允许加入数据成员,但要使这两个水平滚动条工作,还必须加进一些代码。就本例程序,当用户拖动滚动块或用鼠标滚动箭头时,滚动条就会向对话框发送WM_HSCROLL消息,对话框消息控制函数必须对这一消息进行处理,然后将滚动块定位到相应的位置上。 一般情况下,对话框中的每一控件都有自己独立的消息控制函数,但滚动条控件则有点不同,因为对话框中所有的水平滚动... 阅读全文
posted @ 2012-10-30 21:47 xingoo 阅读(2716) 评论(0) 推荐(0) 编辑
摘要:新添加的滚动条功能,首先就是要在createWindow的时候,修改参数风格模式 hwnd = CreateWindow (szAppName, TEXT ("Get System Metrics No. 2"), WS_OVERLAPPEDWINDOW | WS_VSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, ... 阅读全文
posted @ 2012-10-29 22:19 xingoo 阅读(306) 评论(0) 推荐(0) 编辑
摘要:/*---------------------------------------------------- SYSMETS1.C -- System Metrics Display Program No. 1 (c) Charles Petzold, 1998 ----------------------------------------------------*/#define WINVER 0x0500#include <windows.h>#include "sysmets.h"LRESULT CALLBACK WndProc (HWND, UI... 阅读全文
posted @ 2012-10-29 21:28 xingoo 阅读(352) 评论(0) 推荐(0) 编辑
摘要:一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。-程序结束后有系统释放4、文字常量区—常量字符串就是放在这里的。程序结束后由系统释放5、程序 阅读全文
posted @ 2012-10-29 16:43 xingoo 阅读(306) 评论(0) 推荐(0) 编辑
摘要:问题描述: 给定n个大小不等的圆 c1 c2 c3 c4 要将n个圆排进一个矩形框中,且要求底边相切。找出有最小长度的圆排列。例如:当n=3,且所给的3个圆半径分别为1,1,2时,这3个圆的最小长度的圆排列 最小长度为2+4根号2.算法设计: 设开始的a =【r1,r2,r3,r4...rn】是所给的n歌圆半径。 CirclePerm(n,a)返回最小长度。 Center计算当前选择的圆中心的横坐标。 Compute计算当前圆排列的长度。 数组r当前圆排列。算法描述:#include <iostream>#include <math.h>#include <std 阅读全文
posted @ 2012-10-29 16:02 xingoo 阅读(4611) 评论(0) 推荐(0) 编辑
摘要:基本词义意思就就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用!使用方法const int a=1;//这里定义了一个int类型的const常数变量a; 但对于指针来说const仍然是起作用的,以下有两点要十分注意,因为下面的两个问题很容易混淆!我们来看一个如下的例子: //程序作者:管宁 //站点:www.cndev-lab.com //所有稿件均有版权,如要转载,请务必著名出处和作者 #include <iostream> using namespace std; void main(void) { const int a=10; int b= 阅读全文
posted @ 2012-10-28 15:43 xingoo 阅读(255) 评论(0) 推荐(0) 编辑
摘要:CListBox一:词条简介 CObject←CCmdTarget←CWnd←CListBox CListBox类提供Windows列表框的功能。列表框显示项的列表,如用户可以见到和选择的文件名称。在单选列表框里,用户只可选择一个项。在多选列表框里,可选择许多项。当用户选择某项时,其高亮显示且列表框给父窗口发送一个通知消息。 可从对话模板或直接在你的代码中创建列表框。直接创建时,构造CListBox对象,再调用Create成员函数创建Windows列表框控件并将其附加给CListBox对象。要在对话模板中使用列表框,可在对话框类中声明一个CListbox变量,再在对话框类的DoDataE... 阅读全文
posted @ 2012-10-25 19:54 xingoo 阅读(594) 评论(0) 推荐(0) 编辑
摘要:1 问题描述: 给定无向图,m种不同的颜色。使每一种着色法使G中每条边的2个顶点不同颜色,若一个图最少需要m种颜色才能使图中每条边连接的2个顶点着不同颜色,则成这个数m为该图的色数。求一个图的色数m的问题称为图的m可着色优化问题。2 算法设计 用图的邻接矩阵a表示无向图连通图G=(V,E)。 若存在相连的边,则a[i][j] = 1,否则 a[i][j]=0. 整数1,2,3.。。m用来表示为一棵高度为n+1的完全m叉树。 解空间树的第i层中每一结点都有m个儿子,每个儿子相应于x[i]的m个可能的着色之一。 第n+1层为叶子结点。在算法Backtrack, 当i>n时,算法搜索至... 阅读全文
posted @ 2012-10-25 19:53 xingoo 阅读(1508) 评论(0) 推荐(0) 编辑
摘要:算法描述:0-1背包的回溯法,与装载问题的回溯法十分相似。在搜索解空间树时,只要其左儿子结点是一个可行结点,搜索就进入其左子树。当右子树中有可能包含最优解时才进入右子树进行搜索。否则将右子树剪去。 计算右子树上界的更好算法是: 将剩余物品依其单位重量价值排序,然后依次装入物品,直至装不下时,再装入该物品的一部分而装满背包。算法实现: 由Bound函数计算当前节点处的上界。 类Knap的数据成员记录解空间树的节点信息,以减少参数传递及递归调用所需的栈空间。 在解空间树的当前扩展结点处,仅当要进入右子树时,才计算上界bound,以判断是否可将右子树剪去。 进入左子树时不需要计算上界... 阅读全文
posted @ 2012-10-24 14:59 xingoo 阅读(1249) 评论(0) 推荐(0) 编辑
摘要:LSP本身是DLL,可以将它安装到winsock目录,以便创建套接字的应用程序不必知道此LSP的任何信息就能调用它。运行原理: 套接字创建函数会在winsock目录中寻找合适的协议 调用此协议,的提供者导出的函数 完成各种功能。编写目的: 让用户调用自定义的服务提供者,有自定义的服务提供者调用下层提供者。这样便截获所有的winsock调用了。服务提供者本身是DLL,导出一些与winsock API相对应的SPI函数。winsock库加载服务提供者时,便依靠这些函数来实现winsockAPI。LSP也是如此,它向上导出所有的SPI函数供 Ws2_32.dll调用,在内部通过调用基础提供者实... 阅读全文
posted @ 2012-10-23 21:52 xingoo 阅读(10552) 评论(0) 推荐(0) 编辑
摘要:SPI提供3种协议: 1 分层协议 在基础协议的上层,依靠底层基础协议实现更高级的通信服务。 2 基础协议 能够独立安全地,和远程断电实现数据通信的协议,相对于分层协议而言的 3 协议连 将一系列的基础协议,分层协议按特定的顺序连接在一起的链状结构。协议特性: winsock用WSAPROTOCOL_INFO结构描述特定协议的完整信息。称为一个winsock目录入口。 两个重要标识: ProviderId:服务开发商提供的全局唯一标识 dwCatalogEntryId为每个WSAPROTOCOL_INFO结构安排的唯一标识,称为目录入口ID。使用wins... 阅读全文
posted @ 2012-10-23 19:47 xingoo 阅读(6761) 评论(0) 推荐(0) 编辑
摘要:SPI:service provider interface,winsock2服务提供者接口。SPI是应用程序使用的服务,本身不是应用程序,作用是向加载这个服务的应用程序导出自己。SPI由两个部分组成:传输服务提供者transport service provider 命名空间服务提供者 name space providers1 传输服务提供者: 提供建立连接,传输数据,行使流控制,出错控制服务 两种类型: 分层的,基础的 基础服务提供者:BSP:实现传输协议真正细节,导出winsock接口,直接实现协议 分层服务提供者:LSP:截取来自应用程序的winsock API调用。实现更高... 阅读全文
posted @ 2012-10-23 19:15 xingoo 阅读(662) 评论(0) 推荐(0) 编辑
摘要:问题描述: 在n*n的棋盘上放置彼此不受攻击的n个皇后。按国际象棋的规则,皇后可以与之处在同一行或者同一列或同一斜线上的棋子。 n后问题等价于在n*n格的棋盘上放置n皇后,任何2个皇后不放在同一行或同一列的斜线上。算法设计: |i-k|=|j-l|成立,就说明2个皇后在同一条斜线上。可以设计一个place函数,测试是否满足这个条件。 1 当i>n时,算法搜索至叶节点,得到一个新的n皇后互不攻击放置方案,当前已找到的可行方案sum加1. 2 当i<=n时,当前扩展结点Z是解空间中的内部结点。该结点有x[i]=1,2,3....n共n个儿子节点。 对当前扩展结点Z的每个儿子节点,由.. 阅读全文
posted @ 2012-10-23 18:51 xingoo 阅读(6722) 评论(0) 推荐(0) 编辑
摘要:问题描述: 由14个“+”号和14个“-”号组成的符号三角形。 2个同号下面是“+”号,2个异号下面是“-”号。如图: + + _ + _ + + + _ _ _ _ + _ + + + _ _ + + _ _ + _ _ _ +在一般情况下,符号三角形第一行有N个符号,该问题要求对于给定n计算有多少种不同的符号三角形。使其所含的+ — 个数相同。算法设计: 1 x[i] =1 时,符号三角形的第一行的第i个符号为+ 2 x[i] =0时,表示符号三角形... 阅读全文
posted @ 2012-10-23 10:42 xingoo 阅读(12785) 评论(1) 推荐(0) 编辑
摘要:问题描述: 给定n个作业,集合J=(J1,J2,J3)。每一个作业Ji都有两项任务分别在2台机器上完成。每个作业必须先有机器1处理,然后再由机器2处理。作业Ji需要机器j的处理时间为tji。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理时间。则所有作业在机器2上完成处理时间和f=F2i,称为该作业调度的完成时间和。简单描述: 对于给定的n个作业,指定最佳作业调度方案,使其完成时间和达到最小。算法设计: 从n个作业中找出有最小完成时间和的作业调度,所以批处理作业调度问题的解空间是一棵排列树。 类Flowshop的数据成员记录解空间的结点信息,M输入作业时间,bestf记录当前... 阅读全文
posted @ 2012-10-23 10:11 xingoo 阅读(10843) 评论(1) 推荐(0) 编辑
摘要:只需在前面的网络嗅探程序基础上,添加对搜索出的端口号进行的增加功能即可:代码如下:在DecodeIPPacket中添加:switch(::ntohs(pTCPHdr->destinationPort)) { case 21: { GetFtp((char*)pTCPHdr+sizeof(TCPHeader),pIPHdr->ipDestination); } break; case 80: ... 阅读全文
posted @ 2012-10-22 19:43 xingoo 阅读(618) 评论(0) 推荐(0) 编辑
摘要:网络嗅探器:把网卡设置成混杂模式,并可实现对网络上传输的数据包的捕获与分析。原理: 通常的套接字程序只能响应与自己MAC地址相匹配的 或者是 广播形式发出的数据帧,对于其他形式的数据帧网络接口采取的动作是直接丢弃 为了使网卡接收所有经过他的封包,要将其设置成混杂模式,通过原始套接字来实现。设置混杂模式: 创建原始套接字, 绑定到一个明确的本地地址, 向套接字发送SIO_RCVALL控制命令, 接收所有的IP包代码实现步骤: 1 创建原始套接字 2 绑定到明确地址 3 这是SIO_RCVALL控制代码 4 进入循环,调用recv函数接收经过本地网卡的IP封包。主程序代码如下:... 阅读全文
posted @ 2012-10-22 19:04 xingoo 阅读(1954) 评论(0) 推荐(1) 编辑
摘要:问题描述: 有一批共n个集装箱要装上2艘载重量分别为c1和c2的轮船,其中集装箱i的重量是wi,且不能超。算法思想: 最优装载方案: 将第一艘轮船尽可能的装满; 然后将剩余的装载第二艘船上算法描述:template <class Type>class Loading{ friend Type MaxLoading(Type [],Type,int); private: void Backtrack(int i); int n; Type * w,c,cw,bestw;};template <class Type>void Loadin... 阅读全文
posted @ 2012-10-22 16:45 xingoo 阅读(9104) 评论(0) 推荐(0) 编辑
摘要:回溯法:有通用解题法 之称,可以系统的搜索一个问题的所有解和任一解,是一个既带有系统性,又带有跳跃性的搜索算法。算法基本思想: 确定解空间后 从开始节点出发,以深度优先的方式搜索整个解空间。 如果当前扩展结点不能再向纵深方向移动,当前节点为死节点。此时,应该往回移动至最近的一个活节点处。,并是这个或节点成为当前节点的扩展结点。提高算法方式(剪枝函数): 1 用约束函数在扩展结点出剪去不满足约束的子树 2 用限界函数剪去得不到最优解的子树。回溯法解题步骤: 1 定义问题的解空间 2 确定易于搜索的解空间结构 3 以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。递归... 阅读全文
posted @ 2012-10-22 16:16 xingoo 阅读(1364) 评论(0) 推荐(0) 编辑
摘要:发送原始UDP封包时:1 以IPPROTO_UDP 为协议类型创建一个原始套接字,打开原始套接字上的IP_HDRINCL选项2 构建UDP封包,要先设置IP头,设置UDP头,最后UDP净荷数据。3 初始化完整的UDP封包之后,调用sendto函数即可将他发送。计算UDP封包校验和的过程如下:void ComputeUdpPseudoHeaderChecksum( IPHeader *pIphdr, UDPHeader *pUdphdr, char *payload, int payloadlen ){ char buff[1024]; ... 阅读全文
posted @ 2012-10-21 21:57 xingoo 阅读(4191) 评论(0) 推荐(0) 编辑
摘要:用来确定路由器的IP地址,也就是在网络上到达特定主机所经过的计算机。程序需要两个套接字:1 一个用于接收ICMP封包的原始套接字sRaw2 用于发送TTL不断增加UDP封包的套接字sSend。实现代码如下:void main(){ char *szDestIp = "10.16.115.178"; // 210.181.18.12910.16.115.25 61.55.66.30 char recvBuf[1024] = { 0 }; // 创建用于接收ICMP封包的原始套节字,绑定到本地端口 SOCKET sRaw = ::socket(AF_INET, SOCK_R.. 阅读全文
posted @ 2012-10-21 21:51 xingoo 阅读(396) 评论(0) 推荐(0) 编辑
摘要:发送ICMP报文时,必须程序自己计算校验和,将它填入ICMP头部对应的域中。校验和的计算方法: 将数据以字为单位累加到一个双字中,如果数据长度为奇数,最后一个字节将被扩展到字,累加的结果是一个双字,最后将这个双字的高16位,低16位相加后取反,便得到了校验和。下面是checksum的计算校验和的代码:USHORT checksum(USHORT* buff, int size){ unsigned long cksum = 0; while(size>1) { cksum += *buff++; size -= sizeof(USHORT); ... 阅读全文
posted @ 2012-10-21 21:39 xingoo 阅读(2741) 评论(0) 推荐(1) 编辑
摘要:原始套接字有两种:1 在IP头中使用预定义的协议2 在IP头中使用自定义的协议创建原始套接字使用socket或者WSASocket,代码如下:SOCKET sRaw = ::socket(AF_INET,SOCK_RAW,IPPROTO_ICMP)原始套接字提供管理下层传输的能力,仅administrator组的成员能够创建SOCK_RAW类型的套接字。 阅读全文
posted @ 2012-10-21 21:04 xingoo 阅读(232) 评论(0) 推荐(0) 编辑
摘要:RGB颜色对照表因为兼容性问题,色阶板功能只能在IE浏览器中运行RGB颜色对照表#FFFFFF#FFFFF0#FFFFE0#FFFF00#FFFAFA#FFFAF0#FFFACD#FFF8DC#FFF68F#FFF5EE#FFF0F5#FFEFDB#FFEFD5#FFEC8B#FFEBCD#FFE7BA#FFE4E1#FFE4C4#FFE4B5#FFE1FF#FFDEAD#FFDAB9#FFD700#FFD39B#FFC1C1#FFC125#FFC0CB#FFBBFF#FFB90F#FFB6C1#FFB5C5#FFAEB9#FFA54F#FFA500#FFA07A#FF8C69#FF8C00# 阅读全文
posted @ 2012-10-20 12:42 xingoo 阅读(5108) 评论(0) 推荐(0) 编辑
摘要:算法思想:1 将G的n个顶点看成n个孤立的连通分支,所有的边按权从小到大排序2 当查看到第k条边时, 如果断点v和w分别是当前的两个不同的连通分支t1和t2中的顶点时,就用边(v,m)j将t1,t2连接成一个连通分支,然后继续查看第k+1条边; 如果端点v和w当前的同一个连通分支中,就直接查看第k+1条边实现代码:template <class Type>class EdgeNode{ friend ostream& operator<<(ostream&,EdgeNode<Type>); friend bool Kruskal(int,in 阅读全文
posted @ 2012-10-20 12:36 xingoo 阅读(568) 评论(0) 推荐(0) 编辑
摘要:基本思想:1 置S={1}2 只要S是V的真子集就做如下的贪心选择: 选取满足条件的i ,i属于S,j输入V-S,且c[i][j]最小的边,并将定点j加入S中 这个过程直到S==V为止。3 这个过程所选的边,恰好就是最小生成树算法描述:void Prim(int n,Type * * c){ T = 空集; S = {1}; while(S != V) { (i,j)=i 属于 S 且 j属于V-S的最小权边; T = T∪{(i,j)}; S = S ∪ {j}; }}模版代码:template <class Typ... 阅读全文
posted @ 2012-10-20 12:04 xingoo 阅读(550) 评论(0) 推荐(0) 编辑
摘要:C 风格(C-style)强制转型如下:(T) exdivssion // cast exdivssion to be of type T函数风格(Function-style)强制转型使用这样的语法:T(exdivssion) // cast exdivssion to be of type T这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这两种形式称为旧风格(old-style)的强制转型。使用标准C++的类型转换符:static_cast、dynamic_cast、reinterdivt_cast、和const_cast。3.1static_cast用法:stat 阅读全文
posted @ 2012-10-20 11:19 xingoo 阅读(251) 评论(0) 推荐(0) 编辑
摘要:1 多播地址 IP多播地址采用D类IP地址确定多播的组,地址范围是224.0.0.0 到 239.255.255.255. 2 组管理协议(IGMP) 两个多播节点之间的所有路由器必须支持IGMP协议任何没有开启IGMP的路由器仅简单的丢弃接收到的多播数据 3 使用IP多播 1 加入离开组 IP_ADD_MEM... 阅读全文
posted @ 2012-10-19 22:16 xingoo 阅读(3819) 评论(0) 推荐(0) 编辑
摘要:《算法分析》学习目录2012-10-15 二分搜索 大整数乘法 合并排序2012-10-16 快速排序 动态规划 矩阵连乘 动态规划基本要素 2012-10-17 最长公共子序列 最大子段和 多边形游戏 流水作业调度2012-10-18 0-1背包 2012-10-21 Prim算法 Kruskal算法2012-10-22 回溯法算法框架 装载问题2012-10-23 批作业处理调度 符号三角形问题 n后问题2012-10-240-1背包-回溯2012-10-25 图的m着色问题 《windows网络与通信 程序设计》学习目录2012-09-23 winsock库2... 阅读全文
posted @ 2012-10-19 21:05 xingoo 阅读(1018) 评论(0) 推荐(0) 编辑
摘要:广播:可以把数据发送给本地子网上的每个机器。如果多个进程都发送广播数据,网络就会阻塞对于UDP来说,存在一个特定的广播地址,255.255.255.255发送方程序在创建套接字后使用setsockopt函数打开SO_BROADCAST选项,然后设置广播地址255.255.255.255,向端口号4567不断发送广播数据。发送代码如下:SOCKET s = ::socket(AF_INET,SOCK_DGRAM,0);//有效的SO_BROADCAST选项BOOL bBroadcast = TRUE;::setsockopt(s,SOL_SOCKET,SO_BROADCAST,(char*)&a 阅读全文
posted @ 2012-10-19 21:04 xingoo 阅读(583) 评论(0) 推荐(0) 编辑
摘要:ioctl 控制套接字IO行为,获取套接字未决IO的信息。向套接字发送ioctl命令的函数有两个一个是源于winsock1 的 ioctlsocket另一个是 winsock2 新引进的 WSAIoctlioctl的常用命令:FIONBIO:将套接字设置于非阻塞模式FIONREAD:返回套接字上要读的数据大小SIOCATMARK:用来确定外带数据是否可读SIO_GET_EXTENTION_FUNCTION_POINTER取得下层函数提供者的函数指针SIO_RCVALL:接收网络上的所有封包 阅读全文
posted @ 2012-10-19 20:33 xingoo 阅读(584) 评论(0) 推荐(0) 编辑
摘要:单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路径。在弄清楚如何求算单源最短路径问题之前,必须弄清楚最短路径的最优子结构性质。一.最短路径的最优子结构性质 该性质描述为:如果P(i,j)={Vi....Vk..Vs...Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k,s)必定是从k到s的最短路径。下面证明该性质的正确性。 假设P(i,j)={Vi....Vk..Vs...Vj}是从顶点i到j的最短路径,则有P(i,j)=P(i,k)+P(k,s)+P(s,j)。而P(k,s)不是从k到s的最短距离,那么必定存在另一条从k到s的最短路径P'(k, 阅读全文
posted @ 2012-10-19 17:00 xingoo 阅读(588) 评论(0) 推荐(0) 编辑
摘要:活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。 设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si <fi 。如果选择了活动i,则它在半开时间区间[si, fi]内占用资源。若区间[si, fi]与区间[sj, fj]不相交,则称活动i与活动j是相容的。也就是说,当 阅读全文
posted @ 2012-10-19 16:44 xingoo 阅读(3357) 评论(0) 推荐(0) 编辑
摘要:qsort函数是ANSI C标准中提供的,其声明在stdlib.h文件中,是根据二分发写的,其时间复杂度为n*log(n),其结构为:void qsort(void *base,size_t nelem,size_t width,int (*Comp)(const void *,const void *));其中:*base为要排序的数组nelem为要排序的数组的长度width为数组元素的大小(一字节为单位)默认是从小到大排序的!(* Comp)(const void *p1,const void *p2)为判断大小函数的指针,这个函数需要自己定义,如果p1>p2,函数返回-1;a< 阅读全文
posted @ 2012-10-19 16:37 xingoo 阅读(419) 评论(0) 推荐(0) 编辑
摘要:当一个问题具有最优子结构性质时,可用动态规划求解。贪心算法总是作出当前看来是最好的选择,并不从整体最优上考虑,只是在某种意义上的局部最优选择。有时,即时贪心找不到整体最优解,其结果也是最优解的近似解。应用实例:活动安排问题最优装载问题哈夫曼编码 单源最短路径最小生成树多机调度问题贪心算法,通过一系列的选择来得到问题的解,每一个选择都是当前状态下的局部最好选择,即贪心选择。1 贪心选择性质:指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心来达到贪心选择可以依赖于以往所作的选择,但绝不依赖于未来所做的选择,也不依赖于子问题。动态规划:自底向上方式贪心算法:自顶向下方式2 最优子结构性质当 阅读全文
posted @ 2012-10-19 14:58 xingoo 阅读(390) 评论(0) 推荐(0) 编辑
摘要:选项影响套接字操作,如 封包路由,OOB数据传输,获取和设置套接字选项分别是 getsockopt setsockopt 用法如下:int getsockopt(SOCKET s,int level,int optname,char* optval,int* optlen);int setsockopt(SOCKET s,int level,int optname,char* optval,int* optlen);每个协议层套接字的选项有不同的级别:应用层:SOL_SOCKET传输层:IPPROTO_TCP IPPROTO_UDP网络层:IPPROTO_IP阻塞模式下,可以调用recvfro 阅读全文
posted @ 2012-10-18 21:56 xingoo 阅读(277) 评论(0) 推荐(0) 编辑
摘要:客户IO处理,是在工作线程,_WorkerThreadProc中完成的函数,在完成端口上调用GetQueuedCompletionStatus函数等待IO完成,并调用自定义函数HandleIO来处理IO,具体代码如下:DOWRD WINAPI CIOCPServer::_WorkerThreadProc(LPVOID lpParam){ #ifdef _DEBUG ::OutputDebugString("Worker Thread startup...\n"); #endif //_DEBUG CIOCPServer *pThis = (CIOCPServer... 阅读全文
posted @ 2012-10-18 21:04 xingoo 阅读(1693) 评论(0) 推荐(0) 编辑
摘要:[作者] 猪头三 个人网站 :http://www.x86asm.com/ [序言] 很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从事驱动开发时间不长也不短,大概也就3~4年时间.大多数人都认为会驱动开发的都是牛人,高手之类的.其实高手,牛人不是这样定义的.我们在学习驱动开发之前,一定要明白一个道理:术业有专攻,不要盲目跟风. [贡献者] 1> defddr 看雪学院 2> StudyRush 看雪学院 [本内容适用环境及工具] 1> Windows系统下 ... 阅读全文
posted @ 2012-10-18 19:43 xingoo 阅读(3838) 评论(1) 推荐(0) 编辑
摘要:Start函数用于开启服务1 初始化状态变量2 创建监听套接字3 加载使用扩展API函数4 创建完成端口对象5 建立监听套接字和完成端口对象间的关联6 为监听套接字注册FD_ACCEPT时间7 投递AcceptEx IO不够时可以得到通知后创建监听线程BOOL CIOCOPServer::Start(int nPort,int nMaxConnnections,int nMaxFreeBuffers,int nMaxFreeContexts,int nInitialReads){ //检查服务是否启动 if(m_bServerStarted) return FALSE... 阅读全文
posted @ 2012-10-18 16:59 xingoo 阅读(1405) 评论(0) 推荐(0) 编辑
摘要:1 客户连接列表 m_pConnectionList指向客户连接列表,描述所有连接的CIOCPContext对象组成的表AddAConnnection函数向列表中加入一个CIOCPContext对象。如果到达最大数量返回FALSECloseAConnnection函数关闭指定的客户连接CloseAllConnection函数遍历整个连接列表,关闭所有的客户套接字 2 抛出接收请求的列表 所有未决的accept请求都在m_pPen... 阅读全文
posted @ 2012-10-18 16:04 xingoo 阅读(662) 评论(0) 推荐(0) 编辑
摘要:为了避免频繁的申请释放内存,使用内存池来管理缓冲区对象和客户上下文对象使用的内存。使用指针保存所有空闲的内存块,形成空闲列表。申请内存时,这个指针不为NULL,就从空闲列表中取出一个来使用,如果取完,就真正的申请内存。 1 缓冲区对象 程序使用CIOCPBuffer来描述per-IO数据,包含IO操作的必要信息,提交时,提交的就是CIOCPBuffer对象下面是申请缓冲区对象代码:CIOCPBuffer *CIOCPServer::AllocateBuffer(int nLen){ CIOCPBuffer *pBuffer = NULL; if(nLen... 阅读全文
posted @ 2012-10-18 14:44 xingoo 阅读(1364) 评论(0) 推荐(0) 编辑
摘要:CIOCPServer类有多个IO工作线程在完成端口上处理异步IO调用。当特定的网络事件发生时,这些线程调用CIOCPServer类的虚函数,添加自己想要的代码。CIOCPServer执行的步骤:1 创建监听线程2 创建IO工作线程3 服务启动期间,监听线程一直运行,为IO工作线程提供服务 阅读全文
posted @ 2012-10-18 14:19 xingoo 阅读(943) 评论(0) 推荐(0) 编辑
摘要:问题描述: 给定n种物品和一背包,物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品(物品不能分割),使得装入背包中物品的总价值最大?抽象描述: x[n]:表示物品的选择,x[i]=1表示选择放进物品i到背包中。问题分析: 1.抽象之后背包问题转换为找到一个最优的数组,x1,x2,.....,xn的0-1序列。 2.假设最优解的序列为x1,x2,.....,xn,能使背包容量C的总价值最大. 如果,x1=1,则x2,...,xn是C-w1容量的背包的总价值依然是最大的序列; 如果,x1=0,则x2,....,xn是C容量的背包的总价值依然是最大的序列。这就... 阅读全文
posted @ 2012-10-18 12:44 xingoo 阅读(1307) 评论(0) 推荐(2) 编辑
摘要:windows socket2定义了一种扩展机制,允许windows套接字服务提供者想应用程序设计者导出 先进的数据传输功能1 GetAcceptExSockaddrs函数粘贴从AcceptEx函数取得的数据,将本地和远程地址传递到sockaddr结构2 TransmitFile函数在一个已连接的套接字句柄上传输文件数据3 TransmitPackets函数与TransmitFile类似,不同之处是,既可以发送文件,也可以发送内存缓冲区中的数据4 ConnextEx函数为指定的套件诶子建立连接,连接建立后,也可以发送数据,仅支持面向连接的套接字5 DisconnectEx函数关闭套接字上的连接 阅读全文
posted @ 2012-10-17 21:24 xingoo 阅读(277) 评论(0) 推荐(0) 编辑
摘要:主线程创建监听套接字,创建额外工作线程,关联IOCP,负责等待和接受到来的连接。调用GetQueuedCompletionStatus函数,函数返回:1 调用失败2 套接字被对方关闭3 请求成功完成程序首先定义per-handle per-IO的操作数据的结构类型#define BUFFER_SIZE 1024typedef struct _PER_HANDLE_DATA{ SOCKET s; sockaddr_in addr;}PER_HANDLE_DATA,*PPER_HANDLE_DATA;typedef struct _PER_IO_DATA{ OVERLAPPED ... 阅读全文
posted @ 2012-10-17 19:53 xingoo 阅读(1809) 评论(0) 推荐(0) 编辑
摘要:IOCP(IO完成端口)是一种伸缩性的IO模型,广泛应用于各种类型的高性能服务器,如Apache等。IO完成端口,应用程序使用线程池处理异步IO请求的一种机制。最初设计: 应用程序发出一些异步IO请求,设备驱动把这些工作项目排序到完成端口,在完成端口上等待线程池便可以处理这些完成IO。完成端口实际上是一个WINDOWS IO结构,可以接收多种对象的句柄。 1 创建完成端口对象 调用CreateIoCompletionPort函数创建一个完成端口对象,winsock使用这个对象为任意数量的套接字句柄管理IO请求HANDLE Creat... 阅读全文
posted @ 2012-10-17 19:42 xingoo 阅读(992) 评论(0) 推荐(0) 编辑
摘要:流水作业调度问题描述:N个作业{1,2,………,n}要在由两台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi,1≤i≤n。流水作业高度问题要求确定这n个作业的最优加工顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少。可以假定任何任务一旦开始加工,就不允许被中断,直到该任务被完成,即非优先调度。输入:输入包含若干个用例,第一行为一个正整数K(1<=K<=1000),表示用例个数,接下来K个用例,每个用例第一个为作业数N(1<=N<=10 阅读全文
posted @ 2012-10-17 18:28 xingoo 阅读(2461) 评论(0) 推荐(0) 编辑
摘要:多边形游戏是一个单人玩的游戏,开始时有一个由n个顶点构成的多边形。每个顶点被赋予一个整数值,每条边被赋予一个运算符“+”或“*”。所有边依次用整数从1到n编号。1 将一条边删除。2 随后n-1步按以下方式操作: (1)选择一条边E以及由E连接着的2个顶点V1和V2; (2)用一个新的顶点取代边E以及由E连接着的2个顶点V1和V2。将由顶点V1和V2的整数值通过边E上的运算得到的结果赋予新顶点。3 最后,所有边都被删除,游戏结束。游戏的得分就是所剩顶点上的整数值。思路:在所给多边形中,从顶点i(1≤i≤n)开始,长度为j(链中有j个顶点)的顺时针链p(i,j) 可表示为v[i],op[i+1.. 阅读全文
posted @ 2012-10-17 15:51 xingoo 阅读(611) 评论(0) 推荐(0) 编辑
摘要:最大子段和:给出一个数组,计算其中连续的最大的子段和运行代码,及运行思想:/** * 动态规划:计算最大子段和 * 算法描述: * 数组a 有n个元素, 记 s[i] 为从a【0】到a[i]中,包含a[i]的最大子段和 * 则: s[i] 的值为: s[i-1]>0时, s[i-1]+a[i] * 否则 a[i] */#include <stdio.h>#include <stdlib.h>int maxSub(int *a, int n){ int i=0, max=0, max_pos = 0; int si_1=0, si = 0;/... 阅读全文
posted @ 2012-10-17 14:56 xingoo 阅读(453) 评论(0) 推荐(0) 编辑
摘要:最长公共子序列问题:给定两个序列X={x1,x2,....xm}, Y={y1,y2,yn},找出XY的最长公共子序列1 最长公共子序列结构 1 xm=yn,则zk = xm = yn,且zk-1是xm-1和yn-1的最长公共子序列 2 xm!=yn,zk!=xm,则Z是xm-1,yn的最长共公共子序列 3 xm!=yn,zk!=yn,则Z是xm,yn-1的最长公共子序列2 子问题的递归结构 1xm=yn时,找出xm-1,yn-1的最长公共子序列 2 xm!=yn时,找出xm 和 yn-1 或者 xm-1和yn的最长公共子序列3 计算最优值c[i][j]:存储xi,yj的... 阅读全文
posted @ 2012-10-17 14:29 xingoo 阅读(492) 评论(0) 推荐(0) 编辑
摘要:动态规划性质: 1 最优子结构性质 2 子问题重叠性质 ----->该问题可用动态规划算法求解的基本要素1 最优子结构当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质。最优子结构性质提供了该问题的可用动态规划算法求解的重要线索。动态规划,利用问题的最优子结构性质,以自底向上的方式递归的从子问题的最优解逐步构造出整个问题的最优解。2 重叠子问题动态规划,避开了递归时,重复的计算相同子问题的过程,对每个子问题只解一次,而后将其保存在一个表格中,当再次需要的时候,只是简单的用常数时间查看一下结果。3 备忘录方法递归方式自顶向下首先,查看其相应的记录项,若存在,直接返回。若不存 阅读全文
posted @ 2012-10-16 21:43 xingoo 阅读(9387) 评论(0) 推荐(0) 编辑
摘要:矩阵AB可乘的条件是矩阵A的列数等于矩阵B的行数计算时,加括号方式,对计算量的影响很大穷举搜索法:来搜索可能的计算次序,并计算出每一种计算次序相应需要的数乘次数,从中找出一种数乘最少的计算次序 1 分析最优解的结构 关键特征:计算A[1:n]的最优次序所包含的计算矩阵子链A[1:k]和 A[k+1:n]的次序也是最优的。 2 建立递归关系 当i=j时:m[i][j] = 0;当i<j时,m[i][j] = m[i][k]+ m[k+1][j]+pi-1pkpj ... 阅读全文
posted @ 2012-10-16 21:19 xingoo 阅读(487) 评论(0) 推荐(0) 编辑
摘要:基本思想:将待求解问题分解成若干子问题,先求解子问题,然后从子问题的解中得到原问题的解。与分治不同的是,经分解得到的子问题往往不是互相独立的。若用分治法来解这些问题,则得到的子问题数目太多,以至于最后解决原问题需要消耗指数时间。步骤设计:1 找出最优解的性质,并刻画其结构特征2 递归地定义最优值3 以自底向上的方式计算出最优值4 根据计算最优值得到的信息,构造最优解应用实例:矩阵连乘问题最长公共子序列最大子段和凸多边形最优三角剖分多边形游戏图像压缩电路布线流水作业调度背包问题最优二叉搜索树 阅读全文
posted @ 2012-10-16 20:32 xingoo 阅读(254) 评论(0) 推荐(0) 编辑
摘要:算法思想:对于输入的子数组a[p:r],按下面三个步骤:1 分解:以a[p]为基准元素将a[p:r]分成三段,a[p:q-1],a[q],a[q+1:r],使a[p:q-1]中的任何元素都小于a[q],a[q+1:r]中的任何元素都大于a[q]2 递归求解:递归的对a[p:q-1],a[q+1:r]再进行排序3 合并:就地排序,不需要执行任何计算,便完成排序template <class Type>void QuikSort(Type a[],int p,int r){ if(p<r) { int q = Partition(a,p,r); QuikSo... 阅读全文
posted @ 2012-10-16 20:23 xingoo 阅读(282) 评论(0) 推荐(0) 编辑
摘要:分治算法:用分治策略实现n个元素进行排序的方法。基本思想:将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终排好序的子集合合并成所要求的排好序的集合。源码:/* * mergeSort.cpp * 合并排序算法,算法导论P.17 * Created on: 2011-12-21 * Author: LiChanghai *///#include <iostream>#include <vector>#include <iostream>#include <iterator>using namespace std;#defin 阅读全文
posted @ 2012-10-15 22:29 xingoo 阅读(513) 评论(0) 推荐(0) 编辑
摘要:大整数乘法 分析算法计算复杂性时,加法乘法当做基本运算来处理,即一次加法或者乘法当做一个仅取决于计算机硬件处理速度的常数。正常的二进制整数X,Y要用O(n2)才能算出。如果分割为两段,X=A2^(n/2)+B,Y=C2^(n/2)+D。XY = (A2^(n/2)+B)(C2^(n/2)+D)=AC2^n+(AD+BC)2^(n/2)+BD要进行4次N/2位整数... 阅读全文
posted @ 2012-10-15 21:52 xingoo 阅读(1696) 评论(0) 推荐(0) 编辑
摘要:分治法的基本思想:将一个规模为n的问题,分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归的解这些子问题,然后将各个子问题的解合并得到原问题的解。经典例子:二分搜索算法基本思想:1 将n个元素分成个数大致相同的两半,取n/2与x进行比较。2 如果找到,则终止,返回。3 如果小于n/2,则在小半部分继续查找。4 如果大于n/2,则在大半部分继续查找。算法描述代码:#include <iostream>using namespace std;template <class Type>int BinarySearch(Type a[],const Type & 阅读全文
posted @ 2012-10-15 21:18 xingoo 阅读(774) 评论(0) 推荐(0) 编辑
摘要:---------------------1 套接字对象----------------------为每个套接字创建一个SOCKET_OBJ对象,记录与之相关的信息。 typedef struct _SOCKET_OBJ{ SOCKET s; int nOutstandingOps;//重叠IO数量 LPFN_ACCEPTEX lpfnAcceptEx; //扩展AcceptEx指针}SOCKET_OBJ,*PSOCKET_OBJ;所有重叠IO提交到特定的套接字上,释放对应套接字对象,必须保证此套接字再没有重叠IO,即nOutstandingOps=0申请套接字对象,释放套接... 阅读全文
posted @ 2012-10-14 21:53 xingoo 阅读(612) 评论(0) 推荐(0) 编辑
摘要:基本思想:允许应用程序使用重叠数据结构一次投递一个或者多个异步IO请求。提交IO请求完成后,与之关联的重叠数据结构中的事件对象受信,应用程序便可使用WSAVerlappedResult函数获取重叠操作结果。1创建数据:SOCKET sListen = ::WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP, NULL,0,WSA_FLAG_OVERLAPPED);2传输数据:WSASend WSARecv(tcp) WSASendTo WSARecvFrom 应用程序两种方法接收到重叠IO请求操作完成的通知: 1) 与W... 阅读全文
posted @ 2012-10-14 20:19 xingoo 阅读(2328) 评论(0) 推荐(0) 编辑
摘要:1 设置限制2 C++访问控制: public: 其后声明的所有成员可以被所有的人访问 private:出了该类型的创建者和类内部成员函数以外 protected:继承结构可以访问protected成员,但不能访问private成员3 友元 允许显示地不属于当前结构的一个成员函数访问当前结构中的数据4 对象布局5 类 class成员默认为private struct成员默认为public6 句柄类 阅读全文
posted @ 2012-10-13 20:52 xingoo 阅读(250) 评论(0) 推荐(0) 编辑
摘要:// WSAEvent.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <winsock2.h>#include <stdio.h> #pragma comment(lib,"WS2_32")class CInitSock{public: CInitSock(BYTE minorVer=2,BYTE majorVer=2) { WSADATA wsaData; WORD sockVersion = MAKEWORD(minorVer,majorVer); if(::WSASta. 阅读全文
posted @ 2012-10-13 00:09 xingoo 阅读(1063) 评论(1) 推荐(0) 编辑
摘要:WSAEventSelect模型,允许应用程序在一个或者多个套接字上接受基于时间的网络通知,也接受FD_XXX类型的网络事件,依靠windows的消息驱动机制和事件对象关联起来。基本思路:为感兴趣的一组网络事件创建个事件对象,调用WSAEventSelect函数将网络事件和事件对象关联起来.winsock创建事件对象的函数WSACreateEvent,定义:WSAEVENT WSACreateEvent(void);//返回一个手工设置的事件对象句柄创建以后,调用WSAEventSelect函数指定网络事件与它关联到一起int WSAEventSelect( ... 阅读全文
posted @ 2012-10-12 23:20 xingoo 阅读(984) 评论(0) 推荐(0) 编辑
摘要:WSAAsyncSelect模型允许程序以windows消息的形式接受网络事件通知WSAAsyncSelect函数自动把套接字设为非阻塞模式,并且为套接字绑定一个窗口句柄,当有网络事件发生时,便向这个窗口发送消息int WSAAsyncSelect( SOCKET s, //套接字句柄 HWND hWnd,//指定一个窗口句柄 u_int wMsg,//网络事件到来的消息ID long lEvent//指定那些需要发送);FD_READ:接收对方发送的数据包FD_WRITE:继续发送数据FD_ACCEPT:有连接进入FD_CONNECT:连接对方主机FD_CLOSE:连... 阅读全文
posted @ 2012-10-11 23:09 xingoo 阅读(3159) 评论(0) 推荐(0) 编辑
摘要:Uniform GeneratorTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10390 Accepted Submission(s): 4106Problem DescriptionComputer simulations often require random numbers. One way to generate pseudo-random numbers is via a function of the forms... 阅读全文
posted @ 2012-10-11 21:27 xingoo 阅读(265) 评论(0) 推荐(0) 编辑
摘要:1 袖珍C库2 相应问题3 基本对象 C++允许任何类型的指针赋给void*4 什么是对象5 抽象数据类型6 对象细节7 头文件形式 可能问题:如果把一个struct声明放在一个头文件中,就有可能在一个编译程序中多次包含这个头文件 #ifndef #define XXXXX struct stack{}*head; #endif 头文件中命名空间:using namespace std;8 嵌套结构#ifndef xxx#define xxxstruct stack{ struct link{}*head; void ..... };#endif 阅读全文
posted @ 2012-10-11 20:03 xingoo 阅读(258) 评论(0) 推荐(0) 编辑
摘要:选择模型fd_set结构可以把多个套接字连在一起,形成一个套接字集合typedef struct fd_set{u_int fd_count;//下面数组的大小SOCKET fd_array[FD_SETSIZE];//套接字句柄数组}fd_set;网络事件:readfds集合:数据可读,连接关闭,重启或者中断writefds集合:数据能发送exceptfds集合:OOB数据可读设置超时:如果为null为无限阻塞,知道有网络事件发生typedef struct timeval{long tv_sec;//指示等待多少秒long tv_usec;//指示等待多少毫秒}timeval;应用举例1 阅读全文
posted @ 2012-10-10 23:48 xingoo 阅读(257) 评论(0) 推荐(0) 编辑
摘要:1 #include "StdAfx.h" 2 #include <iostream> 3 #include <fstream> 4 #include <cassert> 5 #include <string> 6 7 using namespace std; 8 9 const int increment = 100;10 11 typedef struct CStashTag{12 int size;13 int quantity;14 int next;15 unsigned char* storage;16 }CSta 阅读全文
posted @ 2012-10-10 19:46 xingoo 阅读(266) 评论(0) 推荐(0) 编辑
摘要:1 创建函数2 执行控制语句 break:退出循环,不再执行循环中的生育语句 continue:停止执行当前的循环,返回到循环的起始处开始新的一轮循环3 运算符简介4 数据类型简介 void* 任何类型的地址都可以间接引用那个指针5 作用域 while(char c=cin.get()!='q') 这样由于优先级的问题,并不能取得想要的效果6 指定存储空间分配 const 告诉编译器这是不会改变的,volatile 告诉编译器不知道何时会改变,放置编译器依据变量的稳定性作任何优化7 运算符及其使用 C++的显示转换: static_cast 用于明确定义的变换,包括编译器允许我 阅读全文
posted @ 2012-10-10 17:26 xingoo 阅读(260) 评论(0) 推荐(0) 编辑
摘要:使用select来管理IOselect确定一个或者多个套接字状态。int select(int nfds;fd_set* readfds; //可读性fs_set* writefds; // 可写性fd_set* exceptfds; //错误const struct timeval* timeout //等待时间);函数调用成功,返回 套接字数量总和。超过时间限制,返回0;失败返回 SOCKET_ERROR. 阅读全文
posted @ 2012-10-09 23:48 xingoo 阅读(220) 评论(0) 推荐(0) 编辑
摘要:I/O模型6种:阻塞模型,选择模型,WSAAsyncSelect模型,WSAEventSelect模型,重叠模型,完成端口模型阻塞模式: 执行IO的winsock调用一直到操作完成才返回 好处:使用简单,当处理多个套接字连接时,必须创建多个线程。典型的一个连接使用一个线程非阻塞模式下: winsock函数会立即返回 调用ioctlsocket函数显示让套接字工作在非阻塞模式下:u_long ul =1;SOCKET s=socket(AF_INET,SOCK_STREAM,0);ioctlsocket(s,FIONBIO,(u_long*)&ul);调用失败:WSAEWOULDBLOC 阅读全文
posted @ 2012-10-09 23:44 xingoo 阅读(284) 评论(0) 推荐(0) 编辑
摘要:1 抽象过程2 对象接口3 实现隐藏4 重用5 继承:重用接口6 多态性:互换对象7 创建销毁对象8 异常处理:应对错误9 分析设计:制定计划,做什么(需求分析),如何设计(类职责协同CRC),创建核心,迭代用例,进化,计划回报10 极限编程XP :先写测试,结对编程第二章:语言翻译过程:解释器,编译器,连接器分段编译工具:声明,定义头文件:<>:按照系统目录开始查找 " "先查找当前文件目录,查找不到,再按<>方式查找名字空间:为避免函数名标示符冲突, namespace关键字 using 使用命名空间关键字 std标准命名空间#include & 阅读全文
posted @ 2012-10-09 19:41 xingoo 阅读(190) 评论(0) 推荐(0) 编辑
摘要:1 // TCPIP time protocol.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <winsock2.h> 6 #include <stdio.h> 7 #pragma comment(lib,"WS2_32") 8 class CInitSock 9 {10 public:11 CInitSock(BYTE minorVer=2,BYTE majorVer=2)12 {13 WSADATA wsaData;14 WORD sockV... 阅读全文
posted @ 2012-10-08 23:50 xingoo 阅读(943) 评论(0) 推荐(0) 编辑
摘要:由于只有部分代码,自己填不上.......程序未能运行成功,悲剧!server: 1 SOCKET s = ::socket(AF_INET,SOCK_DGRAM,IPPROTO_TCP); 2 if(s == INVALID_SOCKET) 3 { 4 printf("Failed socket()\n"); 5 return 0; 6 } 7 //填充sockaddr_in结构 8 sockaddr_in sin; 9 sin.sin_family = AF_INET;10 sin.s... 阅读全文
posted @ 2012-10-08 23:17 xingoo 阅读(797) 评论(0) 推荐(0) 编辑
摘要:套接字创建和关闭:SOCKET socket(int af,int type,int protocal);套接字类型:SOCK_STREAM 流套接字,TCP提供有连接的可靠传输SOCK_DGRAM 数据包套接字,UDP提供无连接的不可靠传输SOCK_RAW 原始套接字绑定套接字到指定的IP地址和端口号int bind(SOCKET s,//套接字句柄const struct sockaddr * name,//关联的本地地址int namelen//地址的长度);监听int listen(SOCKET s,//套接字int backlog//最大连接数)连接int accept(SOCKET 阅读全文
posted @ 2012-10-08 22:40 xingoo 阅读(4033) 评论(0) 推荐(0) 编辑
摘要:1 camChange:function(){ 2 this.wdBuilding.attr('value',""); 3 var campus=this.wdCampus.attr("value"); 4 console.log(campus); 5 if(campus>0) 6 { 7 var content= 8 { 9 ... 阅读全文
posted @ 2012-10-08 10:37 xingoo 阅读(277) 评论(0) 推荐(0) 编辑
摘要:1 #include <windows.h> 2 #include <stdio.h> 3 #include "Iphlpapi.h" //包含对IP帮助函数的定义 4 #pragma comment(lib,"Iphlpapi.lib") 5 #pragma comment(lib,"WS2_32.lib")//全局数据 6 u_char g_ucLocalMac[6]; 7 DWORD g_dwGatewayIP; 8 DWORD g_dwLocalIP; 9 DWORD g_dwMask;10 BOOL 阅读全文
posted @ 2012-10-07 22:46 xingoo 阅读(1151) 评论(0) 推荐(0) 编辑
摘要:1 #include <iostream> 2 #include <vector> 3 #include <cstdlib> 4 #include <ctime> 5 6 #define N 100 7 8 using namespace std; 9 10 int wall_row[N+1][N]; 11 int wall_col[N][N+1]; 12 13 class DisjSets 14 { 15 public: 16 explicit DisjSets(int numElements); 17 18 int find(int x) c 阅读全文
posted @ 2012-10-07 14:54 xingoo 阅读(734) 评论(0) 推荐(0) 编辑
摘要:等价关系:自反性,对称性,传递性class DisjSets//不相交集的类架构{public: explicit DisjSets(int numElements); int find(int x) const; int find(int x); void unionSets(int root1,int root2); void unionSets2(int root1,int root2);private: vector<int> s;};DisjSets::DisjSets(int numElements) : s(numElements)//初始化{... 阅读全文
posted @ 2012-10-07 14:18 xingoo 阅读(610) 评论(0) 推荐(0) 编辑
摘要:Tick and TickTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5553 Accepted Submission(s): 1518Problem DescriptionThe three hands of the clock are rotating every second and meeting each other many times everyday. Finally, they get bored of th... 阅读全文
posted @ 2012-10-06 23:30 xingoo 阅读(553) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示