自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 资源 (4)
  • 收藏
  • 关注

转载 文章标题

ORACLE数据库索引

2015-12-03 19:22:24 600

原创 VS2010“起始页”不记录最近打开的工程——解决方案

菜单 —— 运行—— regedit ——打开下面的键值: HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer将 NoRecentDocsHistory 设置为 0 (点击右键修改)

2014-06-18 09:44:36 4053

转载 C++11引入智能指针std::unique_ptr

我们知道auto_ptr通过复制构造或者通过=赋值后,原来的auto_ptr对象就报废了.所有权转移到新的对象中去了.而通过shared_ptr可以让多个智能指针对象同时拥有某一块内存的访问权.但假如我们不希望多个内存块被多个智能指针对象共享,同时又不会像auto_ptr那样不知不觉的就让原来的auto_ptr对象失效,可咋整呢?这个时候就要使用unique_ptr了,顾名思义嘛,uniq

2014-04-06 14:07:14 7463 1

原创 Xerces使用心得

1.新的Xerces-C++库3.1.1版本提供了静态库编译选项,编译产生静态库Xerces_c-static-3D.lib(用于Debug模式)或Xerces_c-static-3.lib(用于Release模式),使用这两个库用于静态链接的MFC程序时除了添加附加库目录和库名称外,还需要在工程预编译选项中加入XERCES_STATIC_LIBRARY宏定义,来关闭Xerces-C++库代码中的

2014-04-02 11:38:22 1578

转载 _splitpath,_makepath分析路径

生成路径,分解路径FROM MSDN:Example/* MAKEPATH.C */#include #include void main( void ){ char path_buffer[_MAX_PATH]; char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; char fname[_MAX_FNAM

2014-03-28 20:31:21 1399

转载 windows路径操作API函数

PathRemoveArgs 去除路径的参数PathRemoveBackslash 去除路径最后的反斜杠"\"PathAddBackslash 在路径最后加上反斜杠"\"PathRemoveBlanks 去除路径前后的空格PathAddExtension 在文件路径后面加上扩展名PathRemoveExtension 去除文件路径扩展

2014-03-28 20:25:24 792

转载 MSXML的不同版本使用

我参与了IE7的开发过程,看到了在IE浏览器中形形色色使用MSXML的方法。显然有一些东西困扰着开发者:MSXML“混乱”的版本以及如何创建“正确”的实例。下面是一段非常常见的代码:if (Web.Application.get_type() == Web.ApplicationType.InternetExplorer) {  var progIDs = [ 'Msxml2.DOMDocum

2014-03-11 19:41:24 6087

转载 COM组件简介

面向对象的思想难以适应这种分布式软件模型,于是组件化程序设计思想得到了迅速的发展。按照组件化的程序设计的思想,复杂的应用程序被设计成一些小的,功能单一的组件模块,这些组件模块可以运行在同一台机器上,也可以运行在不同的机器上。为了实现这样的应用软件,组建程序和组建程序之间需要一些极为细致的规范, 只有组件程序遵守了这些共同的规范,然间系统才能正常运行。为此,OMG和Micro

2014-03-11 13:31:40 2017

转载 Schema中的xsd:any和xsd:anyAttribute

元素使我们有能力通过未被 schema 规定的元素来拓展 XML 文档! 元素 元素使我们有能力通过未被 schema 规定的元素来拓展 XML 文档!下面这个例子是从名为 "family.xsd" 的 XML schema 中引用的片段。它展示了一个针对 "person" 元素的声明。通过使用 元素,我们可以通过任何元素(在 之后)扩展 "person" 的内容:

2014-03-09 23:15:28 1975

转载 Schema元素xsd:key和xsd:keyref

XML Schema可以通过将一个元素或属性定义为key,从而保证该元素或属性在一定范围内的唯一性。在XML实例文档中,key所代表的元素或属性的值组成一个集合,可以通过keyref来限定另一个元素或属性的值必须在这个集合中。      key的定义方法和unique的定义方法十分相似。首先选择一组元素做为范围,然后依据上下文关系指定某元素或属性为key。keyref的定义跟key的定义基

2014-03-09 21:22:32 2829

转载 Schema中xsd:unique元素的使用方法

XML Scheam允许指定某个元素或属性的值在一定得范围内是唯一的。为了指定元素或属性值的唯一性,可以使用元素,使用方法为选择一组xml示例元素作为范围,然后依据上下文关系定义一个field,这里的field就是要指定的唯一性的元素或属性。     1、元素唯一性xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema

2014-03-09 20:53:38 4650

转载 XML文件中xsi:schemaLocation声明

xsi:schemaLocation详解在实例中引用模式文档XML Schema提供了两个在实例文档中使用的特殊属性,用于指出模式文档的位置。这两个属性是:xsi:schemaLocation和xsi:noNamespaceSchemaLocation,前者用于声明了目标名称空间的模式文档,后者用于没有目标名称空间的模式文档,它们通常在实例文档中使用。4.5.7.1  xsi:sc

2014-03-08 22:09:04 4270

转载 MFC控件积累——CRichEdit控件

1.Rich Edit的字体问题在richedit20下,设置字体为某中文字体(比如楷体),输入汉字确实是楷体,但是一旦输入英文字符(在任何位置),这些英文字符字体立即变成了Arial字体(而且有意思的是,如果再输入汉字,汉字仍然是楷体的)。这不是bug,这是RichEdit2.0的特性。  Dual-font:   support   The   keyboard   can  

2014-02-25 20:15:43 2650

转载 select函数详解及应用

Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方

2014-02-19 15:59:27 1205

转载 MFC线程同步——CEvent的使用

WaitForSingleObject函数用来检测hHandle事件的信号状态,当函数的执行时间超过dwMilliseconds就返回,但如果参数dwMilliseconds为INFINITE时函数将直到相应时间事件变成有信号状态才返回,否则就一直等待下去,直到WaitForSingleObject有返回直才执行后面的代码。CEvent 类提供了对事件的支持。事件是一个允许一个线程在某种情

2014-02-18 14:14:45 10387

转载 MFC中的线程同步

在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解。正常情况下对这种处理结果的了解应当在其处理任务完成后进行。  如果不采取适当的措施,其他线程往往会在线程处理任务结束前就去访问处理结果,这就很有可能得到有关处理结果的错误了解。例如,多个线程同时访问同一个全局变量,如果都是读取操作,则不会出现问题

2014-02-18 13:53:57 835

转载 关于绑定IP地址与端口号的见解

客户和服务器通过调用函数bind时可以指定IP地址或端口号,可以都指定,也可以都不指定,根据期望的结果,对sin_addr和sin_port,或sin6_addr和sin6_port应置为什么值,下面做了总结:进程指定结果IP地址端口通配地址0内核选择IP地址和端口通配地址非0内核选择IP地址,进程指定端口本地IP地址0进程指定IP地址,内核选择

2014-02-13 09:46:15 3646

转载 客户端 用不用 bind 的区别

连接的socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来配置本地信息。使用bind函数时,通过将my_addr.sin_port置为0,函数会自动为你选择一个未占用的端口来使用。  Bind()函数在成功被调用时返回0;出现错误时返回"-1"并将errno置为相应的错误号。需要注意的是,在调用bind函数时一般不要将端口号置为小于1024的值,因为1到1024是

2014-02-12 20:19:35 743

转载 TCP/IP和Socket的关系

要写网络程序就必须用Socket,这是程序员都知道的。而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,write等几个基本的操作。是的,就跟常见的文件操作一样,只要写过就一定知道。 对于网络编程,我们也言必称TCP/IP,似乎其它网络协议已经不存在了。对于TCP/IP,我们还知道TCP和

2014-02-12 16:54:31 685

转载 TCP.普通socket(阻塞/非阻塞)模型

在此介绍window下的TCP普通socket编程.1.服务器端// CommonSocket.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "winsock2.h"#pragma comment(lib, "Ws2_32.l

2014-02-12 16:29:29 812

转载 Socket的阻塞模式和非阻塞模式

阻塞模式  Windows套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。在阻塞模式的套接字上,调用任何一个Windows Sockets API都会耗费不确定的等待时间。图所示,在调用

2014-02-12 16:00:33 731

原创 MFC控件积累——CContextMenuManager控件

1.使用VS2010或VS2008SP1提供的CMFCxxxx框架时,弹出菜单的调用发生了变化,但与之前使用CMenu产生弹出菜单相同的是都是响应窗口的WM_CONTEXTMENU消息中进行。2.使用CContextMenuManager产生的弹出菜单比CMenu产生的弹出菜单漂亮。3.不要继承或者手动实例化CContexMenuManager类,通过CWinAppEx::GetConte

2014-01-23 13:38:02 2764 1

转载 MFC控件积累——CFormView控件

CFormView是CView类的派生类,在CFormView类里可以放很多控件,可以看做是在CView中放置了一个对话框的集合体,这样可以直观地用资源创建View(并且必须用一个对话框资源去创建)。

2014-01-16 20:02:43 1867

转载 What static_cast<> is actually doing

IntroductionMost programmers learn C before C++, and get used to C style casting. When writing C++, sometimes we may be confused about when to use static_cast and when to use reinterpret_cast. I

2014-01-15 19:57:58 767

原创 CodeProject上的一些摘抄

1.问题:控件只读但不要背景变灰。 解决方案:(1)重载控件的WM_CTLCOLOR消息响应(ON_WM_CTLCOLOR_REFLECT())HBRUSH CReadOnlyEdit::CtlColor(CDC* pDC, UINT nCtlColor) { // TODO: Return a non-NULL brush if the paren

2014-01-15 19:09:21 767

转载 boost库中的智能指针向上转换

这里稍微解释下何谓指针类型的向下转换和向上转换。向下转换是指派生类指针转换为基类指针类型,向上转换是指基类指针类型转换为派生类类型。C++一般使用dynamic_cast转换符实现向上转换。智能指针可以毫无问题的进行向下类型转换,却不能使用dynamic_cast进行向上类型转换。例如:[cpp] view plaincopy#include

2014-01-14 14:13:23 845

转载 c++ shared_ptr智能指针使用注意事项

shared_ptr在boost中地位相当重要,其行为最接近原始指针,但又比指针更加安全,甚至还能提供基本的线程安全保证。它基本上解决了在使用c++开发过程中不可避免的使用指针而遇到的许多问题,常见的毫无疑问是内存泄漏和内存的提前释放,还有一些关于指针内存申请而产生的异常问题等。而要想较好的使用shared_ptr来完全取代指针绝非易事。下面简要说说使用shared_ptr需要注意的问题。

2014-01-14 14:11:55 1407

转载 C++ - 在容器(container)中 使用继承(inheritance)和虚函数(virtual function)

容器不支持混合类型, 如果直接把派生类对象, 存入基类容器中, 则无法使用派生-基转换(derived-base conversion);因为转换只能发生在指针和引用 过程中, 不能发生在 对象直接赋值, 如果是直接转换, 则会产生截断(sliced down);即派生类部分被切除, 只留下基类部分; 所以存入容器中的派生类 输出为基类部分 的虚函数;如果想在容器中, 进行

2014-01-14 14:08:33 742

转载 enable_shared_from_this和shared_from_this

shared_from_this()是enable_shared_from_this的成员 函数,返回shared_ptr。首先需要注意的是,这个函数仅在shared_ptr的构造函数被调用之后才能使 用。原因是enable_shared_from_this::weak_ptr并不在构造函数中设置,而是在shared_ptr的 构造函数中设置。 如下代码是错误的:cla

2014-01-14 10:34:28 1052

原创 项目中的设计亮点记录

1.当用到很多种树形数据结构时,虽然这些树形数据结构包含的数据类型或者内容不尽相同,但他们在“树形”方面有很多共性,应该抽象到它们的基类中,这样可以用它们共有“树节点”基类去进行树形数据的共同操作,这个是一种大大减少代码量的抽象方法。

2014-01-14 10:32:52 3745

转载 十步完全理解SQL

很多程序员视 SQL 为洪水猛兽。SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言、面向对象的程序语言、甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数式语言)。我们每天都在写 SQL 并且应用在开源软件 jOOQ 中。于是我想把 SQL 之美介绍给那些仍然对它头疼不已的朋友,所以本文是为了以下读者而特地编写的:1、 在工作中会用到 SQL

2014-01-12 20:05:56 570

转载 TCP协议连接建立与连接断开过程(含断开时的TCP状态图)

TCP协议连接建立时3次握手的过程。简述TCP协议连接建立时3次握手的过程。根据TCP头部,说明下列3个包在连接建立过程中的次序.0020        00 50 83 aa 46 49 3e dd 33 96 37 a3 a0 12  ...P..FI>.3.7...0030   16 a0 c4 c0 00 00 02 04 05 b4 04 02 08

2014-01-09 15:19:37 1068

原创 MFC控件积累——CTreeCtrl控件

1.树控件插入节点:(1)HTREEITEM InsertItem( LPTVINSERTSTRUCT lpInsertStruct );(2)HTREEITEM InsertItem( UINT nMask,LPCTSTR lpszItem,int nImage,int nSelectedImage,UINT nState,UINT nStateMask,LPAR

2014-01-07 15:52:15 849

转载 MFC消息响应知识积累

1.关于消息响应函数中的WPARAM和LPARAM:在VC的函数参数中常出现WPARAM和LPARAM,这两个有什么特殊意义么?它们的含义是不是要事先定义?          WPARAM和LPARAM一般在消息里面用的很多,其实没有特殊的含义的。    是两普通的变量 。         是怎样通过wParam,lParam传参数的呢?有时候表示点的坐标,有时

2014-01-06 10:26:29 658

原创 MFC控件积累——CMFCToolBar工具栏控件

在界面上经常用到创建多个工具栏的情况,但MFC自动生成的代码只创建了一个工具栏,经过我摸索,创建多个工具栏应注意以下问题:1.CMFCToolBarl类或其继承类对象创建应使用CreateEx()函数: virtual BOOL CreateEx( CWnd* pParentWnd, /* 父窗口,CFrameWndEx对象 */ DWORD dwCtrlSt

2014-01-03 10:24:06 4192

原创 MFC控件积累——CDockablePane控件

1.控制多个CDockablePane停靠在一起时,先停靠一个窗口:DockPane(&m_dockPane1);//使用CFrameWndEx::DockPane() void DockPane( CBasePane* pBar, //A pointer to the control bar to be docked. UINT nDockBarID=0

2014-01-02 20:30:34 4871

转载 socket选项自带的TCP异常断开检测

TCP异常断开是指在突然断电,直接拔网线等等情况下,如果通信双方没有进行数据发送通信等处理的时候,无法获知连接已经断开的情况.  在通常的情况下,为了使得socket通信不受操作系统的限制,需要自己在应用层实现心跳包机制,来检查异常断开的情况,一般的方式就是服务器在一段时间没有收到客户端数据包时,定时发包,然后客户端回应,如果已经出现异常断开则服务器接收会返回错误,而客户端在指定时间内没有收到

2014-01-02 16:35:31 912

原创 继续总结CWinThread实现多线程的问题

1.CWinThread的继承类实现的多线程或者AfxBeginThread()创建的用户界面线程,在结束的时候通过WM_QUIT消息退出消息循环,这样就要求在线程退出时消息循环仍然不能出错,而对于没有显式设定主窗口的子线程默认会将主线程的主窗口(CMainFrame)设定为自己的主窗口,因此要求子线程在退出时主窗口仍然有效(因为在消息循环中有断言ASSERT(::IsWindow(m_pMain

2013-12-31 11:30:20 4084 2

原创 MFC开发中的多线程封装

MFC开发中的多线程封装目录一、        基本知识:... 11.     线程的启动与结束... 11)     线程的启动... 12)     线程的结束... 23)     深入剖析线程的创建与结束函数... 24)     启动与结束的封装:... 22.     线程的执行过程... 41)     线程对象的

2013-12-27 19:45:26 1858

转载 MFC不能多线程操作控件的原因

对于大多数mfc对象,请不要在线程间传递它们,不管是栈上的还是堆上的!原因如下:      1、 mfc的大多数类不是线程安全的,调用传入对象的成员函数可能不会报错,但是未必能达到程序预定的功能!      2、 mfc与界面有关的类,其大多数成员方法都是通过sendmessage实现的,如果消息处理函数本身不是线程安全的,你从工作线程中调用这些方法迟早会同你界面线程的用户消息响应

2013-12-27 14:52:17 3222

C++ Qt设计模式(中文版)

好多同学希望有中文版的C++ QT设计模式,楼主也是找了很久,好不容易搞到中文版的呢,分享出来,与各位Qt programmer共阅。

2013-10-28

GOOSE数据包ASN.1/BER数据编解码程序

自己写的,可用于Windows或VxWorks下的GOOSE数据包编解码,对理解GOOSE数据包的结构和ASN.1/BER编解码很有帮助。而且里面还包含了很多参考资料与开发文档,帮助你理解程序。

2013-10-28

C++ Qt设计模式.pdf

《C++Qt设计模式(第2版)》是美国萨福克大学已使用十余年的经典教程,利用跨平台开源软件开发框架Qt阐释了C++和设计模式中的主要思想。全书共分四个部分:第一部分介绍C++、UML、Qt、模型-视图、SQL、XML、设计模式等基础知识,目的是为零基础的C++初学者铺垫一条学习面向对象编程的快捷之路;第二部分讲解内存访问、继承等重要的C++特性,是前一部分的延伸和拓展;第三部分使用Phonon编写了一个多媒体播放器,展示了主要技术理念的应用方法;附录部分给出了C++保留关键字、Debian和Qt程序开发环境的配置等内容。每节的练习题和各章后面的复习题,既可作为课堂上的讨论题,也可进一步启发读者对于关键知识点的思考。《C++Qt设计模式》可作为软件开发人员学习Qt开发技术的参考书,也可作为从事Qt软件开发的研究人员和科技工作者的工具书。

2013-09-17

VC工程文件转换QT工程文件(python脚本)

从VS2008工程文件(.vcproj)中提取可用的QT工程文件信息,用于静态链接工程(lib),需要python解释环境运行。直接放在需要提取的工程文件文件夹下运行,在生成的RawPro文件夹中查看提取的QT工程文件信息。稍作修改就可以用来提取其他类型的vcproj信息。

2013-08-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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