- 博客(111)
- 资源 (4)
- 收藏
- 关注
原创 TCP 的那些事儿(上)
TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/IP 详解 卷1:协议》(当然,你也可以去读一下RFC793以及后面N多的RFC)。另外,本文我会使用英文术语,这样方便你通过这些英文关键词来查找相
2014-05-28 21:39:37 893
转载 每天,每周,每月,每年程序员该做的事情
程序员每天该做的事1、总结自己一天任务的完成情况 最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多2、考虑自己明天应该做的主要工作 把明天要做的事情列出来,并按照优先级排列,第二天应该把自己效率最高的时间分配给最重要的工作3、考虑自己一天工作中失误的地方,并想出避免下一次再犯的方法 出错不要紧,最重要的是不要重复犯相同的错
2014-05-25 21:16:52 576
转载 VC线程同步方法总结
VC线程同步方法总结:有四种同步方法:互斥体(Mutex),事件(Event),临界区(Critical Section),以及信号量(Semaphore)。注:以下所说的“全局变量”也可换为局部变量,只要各线程(包括主线程)能访问即可。1、使用Mutex定义全局变量HANDLE hMutex;在主线程中调用hMutex = CreateMutex(NULL, FALS
2014-05-19 09:05:10 684
转载 sscanf的用法
这里有些sscanf()的一些使用说明,都是从论坛,Blog里整理出来的。供大家使用。 通过学习和使用个人认为,在字符串格式不是很复杂,但是也并不简单的时候用这个函数比较合适,这个尺度就要靠自己把握了,字符串不是很复杂,但自己写个处理的函数比较麻烦,效率也不高,就用这个函数,如果字符串很复杂,那就用正则表达式吧。不多说了,看看下面这些介绍和列子吧!名称:sscanf() - 从一个
2014-05-08 09:29:37 569
转载 VC 目录、文件的相关操作
目录是否存在检查: BOOL FolderExist(CString strPath){ WIN32_FIND_DATA wfd; BOOL rValue = FALSE; HANDLE hFind = FindFirstFile(strPath, &wfd); if ((hFind!=INVALID_HANDLE_VALUE)
2014-04-20 21:17:20 697
转载 C/C++字符串查找函数
C/C++ string库(string.h)提供了几个字符串查找函数,如下:memchr在指定内存里定位给定字符strchr在指定字符串里定位给定字符strcspn返回在字符串str1里找到字符串str2里的任意一个字符之前已查找的字符数量strrchr在字符串里定位给定字符最后一次出现的位置strpbrk
2014-04-19 10:49:26 705
转载 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法
字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽 本文内容框架:§1 Boyer-Moore算法§2 Horspool算法§3 Sunday算法§4 KMP算算法§5 KR算法§6 AC自动机§7 小结 §1 Boyer-Moore(BM)算法
2014-04-18 22:47:02 1839
转载 VC6.0 操作Excel表格
介绍:使用Microsoft Office所带的控件来实现代码操作excel表格,从思路上来看,操作excel表格就是将其打开,然后写入/读出数据,然后关闭。一、 添加COM库支持首先创建一个程序(一个MFC的单文档程序),在程序的入口处和出口处先作这样两个步骤来支持COM库:在程序入口处CMyApp:: InitInstance()函数AfxEnableContr
2014-04-17 21:46:11 3673 1
原创 运算符优先级和关联性
C++ 语言包括所有 C 运算符并添加多个新的运算符。 运算符指定对下列项之一执行计算:一个操作数(一元运算符)两个操作数(二元运算符)三个操作数(三元运算符)运算符遵循严格的优先级,该优先级定义了包含这些运算符的表达式的计算顺序。 运算符与其左侧或右侧的表达式关联;这称为“关联性”。下表显示 C++ 运算符的优先级和关联性(从最高优先级
2014-04-10 21:47:52 1508
转载 VC中BSTR、Char*、CString类型相互转换
1、char*转换成CString若将char*转换成CString,除了直接赋值外,还可使用CString::format进行。例如:char chArray[] = "This is a test";char * p = "This is a test";或LPSTR p = "This is a test"; 或在已定义Unicode应的用程序中TCH
2014-04-08 16:16:28 3204
转载 VC/MFC 封装好的文件内存映射类
一、创建过程1) // 第一步:创建文件HANDLE hFile = CreateFileForMapping(_T("MyMemFile.dat"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);ASSERT
2014-04-03 09:00:32 2226
转载 VC中用内存映射文件处理大文件
文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。一般来说,以上这些函数可以满足大多数场合的要求,但是对于某些特殊应用领域所需要的动辄几十GB、几百GB、乃至几TB的海量存储,再以通常的文件处理方法进行处理显然是行不通的。
2014-04-03 08:50:30 803
转载 VC控件DateTimePicker使用方法
DateTimePicker控件既可以获取日期(2010-03-05)也可以获取时间(16:27:33),要获 取日期只需要更改控件属性的格式为长日期或短日期,要获取时间则将格式更改为时间即可。 在添加控件变量时,选择其变量类型为CDateTimeCtrl(类如m_DateCtrl);在程序中定义CTime对象用来保存获取的时间,然后可以将其转换为CString类型;具体实
2014-04-01 18:09:42 3286
转载 CString TCHAR的互相转换
CString->TCHAR*的转化可以用函数GetBuff()函数原型为:LPTSTR GetBuffer( int nMinBufLength );CString str("CString"); TCHAR* szMsg = new TCHAR[100]; //其参数为CString字符串的长度 szMsg = str.GetBuffer(str.GetLength()
2014-04-01 14:50:20 779
转载 C++文件(夹)选择对话框
由于各种应用,我们需要调用系统的打开文件对话框或者打开文件夹对话框,或两者兼有。今遇到这个情况已经解决,特写下这篇博文。1.打开文件对话框常用的方法是使用系统的CFileDialog。这里介绍另外一种方法就是使用OPENFILENAME这个结构体和GetOpenFileName()这个函数,可以实现单选文件或者多选文件,代码如下:需引入头文件#include "CommDlg.h"
2014-04-01 14:13:43 835
转载 VC学习笔记 -单选按钮控件(Ridio Button)的使用
在VC++编程过程中,查资料是一个苦差事,案边放了一摞书左翻右翻好是烦人。一赌气就把一些常用的小技巧自己总结了一下,虽费了些功夫,但对以后编程很有好处。现拿出来与大家共享,以后积累多了,作一个CHM电子书,用的时候翻阅实在很方便。注:有些内容来源于网上文章,名字我都没记下来,这里向作者致谢了!VC学习笔记1:按钮的使能与禁止用ClassWizard的Member Variabl
2014-03-31 17:11:19 3173
转载 Combo Box (组合框)控件
Combo Box (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。下面的例子简要说明如何利用 MFC CComboBox Class来操作字符串列表。1、定义控件对应变量假定已经创建了一个Dialog,并且从控件工具箱将 Combo Box 控件拖放到上面
2014-03-31 15:25:01 5829
转载 VC中ComboBox使用详解
VC中ComboBox使用详解一、如何添加/删除ComboBox内容1,在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。换行用ctrl+回车。2, 在程序初始化时动态添加如: //控件内容初始化 CString strTemp; ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetCont
2014-03-31 15:01:38 1129
转载 第十四讲 SOCKET类的设计和实现
第十四讲 SOCKET类的设计和实现WinSock基本知识这里不打算系统地介绍socket或者WinSock的知识。首先介绍WinSock API函数,讲解阻塞/非阻塞的概念;然后介绍socket的使用。WinSock APISocket接口是网络编程(通常是TCP/IP协议,也可以是其他协议)的API。最早的Socket接口是Berkeley接口,在U
2014-03-26 23:21:00 779
转载 第十三讲 MFC工具条和状态栏
第十三讲 MFC工具条和状态栏Windows控制窗口Windows (Windows95或者以上版本) 提供了系列通用控制窗口,其中包括工具条(ToolBar)、状态栏(StatusBar)、工具条提示窗口(ToolTip)。Windows在一个DLL加载时注册个控制窗口的“窗口类”。例如,工具条的“窗口类”是“ToolbarWindow32”,状态栏的“窗口类
2014-03-26 23:18:58 2017
转载 第十二讲 对话框和对话框类CDialog
第十二讲 对话框和对话框类CDialog对话框经常被使用,因为对话框可以从模板创建,而对话框模板是可以使用资源编辑器方便地进行编辑的。模式和无模式对话框对话框分两种类型,模式对话框和无模式对话框。模式对话框一个模式对话框是一个有系统菜单、标题栏、边线等的弹出式窗口。在创建对话框时指定WS_POPUP, WS_SYSMENU, WS_CAPTION和
2014-03-26 23:17:48 1014
转载 第十一讲 MFC下的文件类
第十一讲 MFC下的文件类文件操作的方法使用Visual C++编程,有如下方法进行文件操作:(1)使用标准C运行库函数,包括fopen、fclose、fseek等。(2)使用Win16下的文件和目录操作函数,如lopen、lclose、lseek等。不过,在Win32下,这些函数主要是为了和Win16向后兼容。(3)使用Win32下的文件和目录操作函数,如Cr
2014-03-26 23:16:49 712
转载 第九讲 MFC的状态
第九讲 MFC的状态MFC定义了多种状态信息,这里要介绍的是模块状态、进程状态、线程状态。这些状态可以组合在一起,例如MFC句柄映射就是模块和线程局部有效的,属于模块-线程状态的一部分。模块状态这里模块的含义是:一个可执行的程序或者一个使用MFC DLL的DLL,比如一个OLE控件就是一个模块。一个应用程序的每一个模块都有一个状态,模块状态包括这样一些信息:用来加载
2014-03-26 23:15:41 1057
转载 第十讲 内存分配方式和调试机制
第十讲 内存分配方式和调试机制M内存分配内存分配函数MFCWin32或者C语言的内存分配API,有四种内存分配API可供使用。Win32的堆分配函数每一个进程都可以使用堆分配函数创建一个私有的堆──调用进程地址空间的一个或者多个页面。DLL创建的私有堆必定在调用DLL的进程的地址空间内,只能被调用进程访问。HeapCrea
2014-03-26 23:13:50 667
转载 第八讲 MFC的进程和线程
第八讲 MFC的进程和线程Win32的进程和线程概念进程是一个可执行的程序,由私有虚拟地址空间、代码、数据和其他操作系统资源(如进程创建的文件、管道、同步对象等)组成。一个应用程序可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主线程。线程是操作系统分时调度分配CPU时间的基本实体。一个线程可以执行程序的任意部分的代码,即使这部分代码被另一个线程并
2014-03-26 23:12:04 1723
转载 第七讲 MFC的DLL
第七讲 MFC的DLL一般的,在介绍Windows编程的书中讲述DLL的有关知识较多,而介绍MFC的书则比较少地提到。即使使用MFC来编写动态链接库,对于初步接触DLL的程序员来说,了解DLL的背景知识是必要的。另外,MFC提供了新的手段来帮助编写DLL程序。所以,本节先简洁的介绍有关概念。DLL的背景知识静态链接和动态链接当前链接的目标代码
2014-03-26 23:11:13 556
转载 第六讲 应用程序的退出
第六讲 应用程序的退出一个Windows应用程序启动之后,一般是进入消息循环,等待或者处理用户的输入,直到用户关闭应用程序窗口,退出应用程序为止。例如,用户按主窗口的关闭按钮,或者选择执行系统菜单“关闭”,或者从“文件”菜单选择执行“退出”,都会导致主窗口被关闭。当用户从“文件”菜单选择执行“退出”时,将发送MFC标准命令消息ID_APP_EXIT。MFC实现了函数CWinApp:
2014-03-26 23:08:00 1070
转载 第五讲 MFC对象的创建
第五讲 MFC对象的创建前面几章介绍了MFC的核心概念和思想,即介绍了MFC对Windows对象的封装方法和特点;MFC对象的动态创建、序列化;MFC消息映射机制。现在,考查MFC的应用程序结构体系,即以文档-视为核心的编程模式。学习本章,应该弄清楚以下问题:MFC中诸多MFC对象的关系:应用程序对象,文档对象,边框窗口对象,文档边框窗口对象,视对象,文档模板对象等。MFC对象
2014-03-26 23:07:13 1856
转载 第四讲 消息映射的实现
第四讲 消息映射的实现Windows消息概述Windows应用程序的输入由Windows系统以消息的形式发送给应用程序的窗口。这些窗口通过窗口过程来接收和处理消息,然后把控制返还给Windows。消息的分类队列消息和非队列消息从消息的发送途径上看,消息分两种:队列消息和非队列消息。队列消息送到系统消息队列,然后到线程消息队列;非队
2014-03-26 23:05:39 637
转载 第三讲 CObject类
第三讲 CObject类CObject是大多数MFC类的根类或基类。CObject类有很多有用的特性:对运行时类信息的支持,对动态创建的支持,对串行化的支持,对象诊断输出,等等。MFC从CObject派生出许多类,具备其中的一个或者多个特性。程序员也可以从CObject类派生出自己的类,利用CObject类的这些特性。本章将讨论MFC如何设计CObject类的这些特性。首先,考察COb
2014-03-26 23:04:22 896
转载 第二讲MFC和Win32
第二讲MFC和Win32MFC Object和Windows Object的关系MFC中最重要的封装是对Win32 API的封装,因此,理解Windows Object和MFC Object (C++对象,一个C++类的实例)之间的关系是理解MFC的关键之一。所谓Windows Object(Windows对象)是Win32下用句柄表示的Windows操作系统对象;所谓
2014-03-26 23:03:05 705
转载 第一讲 MFC概述
一、MFC是一个编程框架MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。
2014-03-26 23:00:56 1004
转载 windows消息机制
Windows中,消息使用统一的结构体(MSG)来存放信息,其中message表明消息的具体的类型,而wParam,lParam是其最灵活的两个变量,为不同的消息类型时,存放数据的含义也不一样。time表示产生消息的时间,pt表示产生消息时鼠标的位置。按照类型,Windows将消息分为:(0) 消息ID范围系统定义消息ID范围:[0x0000
2014-03-24 20:03:45 958
转载 MFC数据类型汇总及说明
MFC数据类型汇总及说明I 数据类型BOOL:布尔值,取值为TRUE or FALSEBSTR:32-bit 字符指针BYTE:8-bit整数,未带正负号COLORREF:32-bit数值,代表一个颜色值DWORD:32-bit整数,未带正负号LONG:32-bit整数,带正负号LPARAM:32-bit整数,作为窗口函数或callback函数的一个参
2014-03-17 22:45:37 828
转载 MSDN的使用及VC6.0的调试
MSDN的使用及VC6.0的调试1.MSDN的使用方法1.1使用上下文关联帮助按下F1键,可从MSDN库中得到上下文相关帮助。你选择一个基于当前窗口和光标位置的主题,同时你将看到包含上下文相关帮助的MSDN可视窗口。如果在编辑源文件时按下F1键,系统可提供光标处单词的帮助信息。如果可能的帮助主题超过一个,屏幕上出现一系列可选项。1.2使用关键字搜索帮助单击MSDN观察器中的Se
2014-03-17 22:43:02 3290 1
转载 error LNK1120: unresolved external symbol “symbol”
在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有用类生成向导? 就会在连接时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有: m1+4#' libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main (gd){j LIBCD.lib(win
2014-03-16 16:48:38 1054
转载 VMware中三种网络连接的区别
VMware中三种网络连接的区别1、概述2、bridged(桥接模式)3、NAT(网络地址转换模式)4、host-only(主机模式)5、replicate physical network connection state 选项解释1、概述 大家在安装完虚拟机后,默认安装了两个虚拟网卡,VMnet1和VMnet8,如下图。其中VMnet1是h
2014-03-16 09:45:06 1777
转载 VC6.0快捷键大全
F1 显示帮助,如果光标停在代码的某个字符上,显示MSDN中相应的帮助内容F2 书签功能: Ctrl+F2 --在某行设置一个书签(再按一次次是取消)F2 --跳到下一个书签位置Shift+F2 --跳到上一个书签位置Ctrl+Shift+F2 --删除所有书签F3 查找: Ctrl+F3 --在文件中查找,如果当前光标在一个字符串上,那么自动查找此字符串.相似的有Ctrl
2014-03-13 09:21:45 694
转载 VC6.0 调试
1. 如何显示Debug工具栏窗口?①:在任意工具栏的位置,单击鼠标右键,勾选Debug项 ②:Tools---->Customize--àToolbars--àDebug--àclose 引申:工具栏和工具条的区别? 一个工具栏可以放置多个工具条。2.关于断点调试F9:设置或去除断点。如果当前行未设置断点,按F9可在当前行设置断点,如果当前行
2014-03-12 23:08:50 609
转载 VC创建注册表
注册表的操作,API为我们提供了大约25个函数。他提供了对注册表的读取,写入,删除,以及打开注册表及键值时所有函数,并且可以达到对注册表的备份,连接和对远端注册表进行查看等等。注册表对整个系统十分重要,你在进行操作时,一定要先考虑清楚。这些函数有:RegCloseKey RegConnectRegistry RegCreateKey RegCreateKeyEx
2014-03-12 10:20:40 1826
SQL Server数据库原理及应用(第二版)
2012-01-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人