自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (5)
  • 收藏
  • 关注

原创 nginx 进程间通信-socketpair

在nginx中,master进程与worker进程之间使用了一种全双工通信方式--socketpair。socketpair 函数成功执行后会创建一对已经建立连接的socket对,两个相互通信的进程分别使用其中一个socket进行读写操作,就能够实现两进程间的通信。    查看nginx源码,可以看到,下面的函数创建了socketpairngx_pid_tngx_spawn_proc

2016-03-18 11:52:09 1922

原创 在bash中编辑文本

使用vi或vim命令。需要编辑的时候按i或者insert键。   如果不想保存而直接退出,则按下Esc键后,输入“:q!”,然后回车即可。   “:wq”表示Write和Quit,即保存退出;“:q!”表示忽略修改强行退出。   如果想取消刚才的编辑,先按下ESC退出编辑模式,然后按u键,为undo。   每按一次,依次撤销一条最近的编辑。

2016-03-14 16:24:06 1981

原创 linux下为用户添加sudo权限

在Linux下,我们以普通用户登录,操作bash的时候,希望获取管理员权限来进行某些操作。有两个命令能够实现这个目的:1、sudo    sudo命令能够使得sudo后紧跟着的一条操作且仅对这条操作临时获得管理员权限。2、su [username]   su命令能够使得当前bash环境切换指定用户。    默认的,输入 su  和 su root 的含义是一样的:切换当前b

2016-03-14 16:17:59 961

转载 解决ssh连接特别慢的问题

1、修改/etc/ssh/sshd_config 文件#UseDNS YES下边添加,禁用dnsUseDNS no2、修改/etc/ssh/ssh_conf 文件找到GSSAPIAuthentication yes改为GSSAPIAuthentication no重启SSHD服务后问题解决service sshd restart

2016-03-14 15:39:55 703

转载 linux下添加环境变量

1、在当前bash下添加临时环境变量,一旦bash退出后,环境变量不再生效:     export  MY_ENV_PATH=/usr/local/lib/bin2、当前用户永久生效的环境变量,使用配置文件 /home/$username/.bash_profile    vim /home/$username/.bash_profile    在文件最后写入数据:    ex

2016-01-29 16:23:27 703

原创 Windows 平台下编辑文本复制到Linux下后,中文字符出现乱码的问题

现象:在Windows平台编辑代码后,复制到Centos中,发现注释中的中文全都变成了乱码的样子分析:不同平台下的编辑器,对于文本是识别能力不同。默认识别文本的编码格式不同。centos 中 gedit 默认保存文本格式为 UTF-8 无BOM头的格式,linux下默认的文本格式也是这个格式。windows下 notepad默认的格式为 ANSI,而保存为UTF-8格式的时候会默认添加

2016-01-28 16:02:21 2726

原创 进程间通信----共享内存

涉及到的函数有CreateFileMappingOpenFileMappingMapViewOfFileUnmapViewOfFileHANDLE WINAPI CreateFileMapping( __in HANDLE hFile, __in LPSECURITY_ATTRIBUTES lpAttributes,

2015-11-25 20:22:11 353

原创 windows检测当前网络环境变化

主要涉及到两个函数NotifyRouteChangeNotifyAddrChange使用这两个函数会获取到一个句柄,然后使用WaitForMultipleObjects或WaitForSingleObject 函数对相关句柄进行等待,从而判读网络的变化,可以检测拔网线。

2015-11-25 20:11:23 1978

原创 vs2008 libevent 编译 支持openssl

1、下载libevent源码 http://libevent.org/2、更改Makefile.nmake,使其能够支持openssl# WATCH OUT!  This makefile is a work in progress.             -*- makefile -*-## I'm not very knowledgeable about MSVC and n

2015-01-24 23:12:32 4063 2

原创 vs2008下 openssl 编译

1、从http://www.activestate.com/activeperl/downloads 下载并安装ActivePerl。2、从http://www.openssl.org/下载OpenSSL的最新Release包,解压直到出现代码文件。3、使用perl进行配置 如果想使用 NASM 对 汇编文件进行编译(需要安装nasm)>perl Configure

2015-01-24 22:41:17 1647

转载 成员函数的重载、覆盖与隐藏

8.2成员函数的重载、覆盖与隐藏    成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。 8.2.1 重载与覆盖    成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。    覆盖是指派生类函数覆盖基类函数,特征是:

2014-04-11 10:38:32 491

转载 简单工厂模式,工厂方法模式和抽象工厂模式的异同

简单工厂模式,工厂方法模式和抽象工厂模式都是属于创建型设计模式,这三种创建型模式都不需要知道具体类。我们掌握一种思想,就是在创建一个对象时,需要把容易发生变化的地方给封装起来,来控制变化(哪里变化,封装哪里),以适应客户的变动,项目的扩展。用这三种设计模式都可以实现,那究竟这三种设计模式有什么异同呢?下面根据这三者之间的特点,优点,缺点,适用范围进行比较。一.特点简单工厂模式:专门定义一个

2014-04-09 19:23:41 375

原创 对于策略模式的几分理解

1、对于执行主体来说,根据其自身的设定,会执行某一类具有相似特性的策略(算法)中的某个。2、对一类相似的算法进行抽象,形成一个抽象基类。3、抽象基类定义通用的操作方法4、执行主体维护一个基类的指针对象5、执行主体提供方法将基类的指针按需绑定到算法实例6、由于算法实例继承于抽象基类,执行主体通过调用基类的方法,最终调用实例中的方法。

2014-04-09 11:16:54 438

转载 函数返回值—返回局部变量

看看下面的程序的输出: #include char *returnStr() { char *p="hello world!"; return p; } int main() { char *str; str=returnStr(); printf("%s\n", str); return

2012-12-24 10:57:54 362

转载 返回局部变量的问题

函数返回局部变量,是返回局部变量的值。但指针(或地址)是一种特殊的值,所以返回局部指针变量需要特别注意。正确情况下,作为函数返回值的局部指针,其所指向对象的作用域应该是调用者作用域、全局或静态常量区;指向栈空间对象的指针作为返回值,存在潜在的错误。1.返回局部值变量 int num(void) { int a; return a; } 函数返回时

2012-12-24 10:47:53 338

转载 关于拷贝构造函数和赋值操作重载函数访问同类引用参数的私有变量的疑问

#include using namespace std; class T {public: T(){a = 11;} int Get() const{return a;} private: int a;};class Test{public: Test(int a):m_a(a){} Test(const Test &t){m_

2012-12-24 10:14:05 518

转载 MFC 文件操作详解

http://blog.sina.com.cn/s/blog_544a4dfa0100bwql.html各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析

2012-11-21 15:11:13 404

原创 CScrollView中画图问题

问题描述:定义继承自CScrollView的类,在该类中进行画图,出现了一些问题: 拖动滚动条,图像部分随之移动,但是被边框覆盖过再次被拉出来后的部分没有显示了。问题分析:该问题出现是因为矩形框坐标设置不当。出问题的时候,准备被画的矩形坐标同当前客户区大小关联,也即是使用了 CRect rcClient;GetClientRect(&rcClient);pDC->DPt

2012-11-13 17:44:21 825

翻译 CScrollView::SetScrollSizes

Call SetScrollSizes when the view is about to be updated. //当视图准备被更新的时候调用该函数void SetScrollSizes( int nMapMode, SIZE sizeTotal, const SIZE& sizePage = sizeDefault, const SIZE&

2012-11-09 10:22:54 2958

转载 如何Enable/Disable菜单项

这个问题在以前的知识库中出现过多次,许多人问及在MFC应用程序中enable或disable菜单的问题,在主菜单中调用 CMenu::EnableMenuItem不起作用......如何disable菜单项?      根据以往的经验,要解决这种问题,似乎应该有一个象EnableMenuItem之类的API函数,它的功能就是enable或disable菜单项。Windows中确实有这样的函数-

2012-11-07 11:33:39 1306

转载 GDI中获取字符串精确绘制范围

01./*! 02.* @brief 使用CDC类GetTextExtent接口获取字符串的精确的区域大小 03.* 04.* @param nXStart [in]区域的起点X坐标 05.* @param nYStart [in]区域的起点Y坐标 06.* @param pDC [in]设备DC指针 07.* @param str [in]字符串 08.*

2012-11-06 15:16:47 817

转载 c++ 之类的前置声明

刚开始学习c++的人都会遇到这样的问题:定义一个类 class A,这个类里面使用了类B的对象b,然后定义了一个类B,里面也包含了一个类A的对象a,就成了这样:一编译,就出现了一个互包含的问题了,这时就有人跳出来说,这个问题的解决办法可以这样,在a.h文件中声明类B,然后使用B的指针。然后,问题就解决了。但是,有人知道问题是为什么就被解决的吗,也就是说,加了个前置声明为什么

2012-11-05 09:45:47 346

原创 ON_CONTROL_RANGE 使用错误分析

ON_CONTROL_RANGE 这是一个消息宏使用此宏映射控件 ID 的一个连续范围到指定的窗口通知消息的单个消息处理函数,例如 BN_CLICKED,CBN_EDITCHANGE等 ON_CONTROL_RANGE(wNotifyCode, id1, id2, memberFxn ) wNotifyCode: 您的处理程序以响应的通知代码。 id1: 在控件 ID 开头的一个连

2012-10-29 11:11:11 2471

原创 Error: no data exchange control with ID xx 错误分析

VS2008sp1,windows XP sp3,debugError: no data exchange control with ID xx该问题出现时可以通过编译,但是运行的时候会触发断点。在处理对话框控件的时候出现该问题。已知的原因是因为删除了关联了变量的控件后出现的。网上有原因解释:1、因为删除控件的同时没能删除其关联的变量

2012-10-24 14:44:44 4642

转载 MFC中动态创建N级菜单以及响应事件——续——动态添加菜单/菜单项、子菜单、右键菜单

如何动态添加菜单/菜单项、子菜单、右键菜单    有关菜单的操作主要用到CMenu类,当然也可用相应API函数,CMenu类只是MFC对API中操作菜单的函数的封装而已。 不过能用类就尽量用类,类的组织方式好呗,代码看着也舒服。 若是SDK编程,那就用API吧 。   CMenu menuMain,menu1; //首先 定义CMenu对象   一、         创建菜单,

2012-10-22 09:26:02 1731

转载 MFC中动态创建N级菜单以及响应事件

创建一个基于对话框的工程,工程名为CreateMenu 为该对话框增加一个文件菜单项和测试菜单项,如下图所示测试菜单项至少要有一个子菜单项 在对话框属性中关联该菜单 在resource.h中增加一个ID_TESTMENU宏 #define ID_TESTMENU      5000在对话框中添加一个Button按钮,建立消息映射,编辑代码如下void CCr

2012-10-19 17:14:07 1210

转载 printf

printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。 printf()函数的调用格式为: printf("", ); 其中格式化字符串包括两部分内容:   一部分是正常字符, 这些字符将按原样输出;  另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符, 用来确定输出内容格式。  参量表是需要输出的一系列参数, 其个数必须与格式化字

2012-10-19 10:15:01 457

转载 TRACE宏

TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能;  该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调试也在RELEASE的时候减少代码量。  使用非常简单,格式如下: TRACE("DDDDDDDDDDD"); TRACE("wewe%d",333); 同样还存在TRACE0,TRACE1,TRACE2

2012-10-19 10:09:50 280

原创 CString 与 double 互转

1、CString To doubledouble dSum2;#ifdef UNICODEchar szNum[100];wcstombs(szNum, m_strResult.GetBuffer(0), sizeof(szNum) / sizeof(szNum[0])); dSum2 = atof(szNum); #elsedSum2 = atof(m_strResult.Ge

2012-10-19 09:32:41 601

转载 TrackMouseEvent与_TrackMouseEvent

函数功能:当在指定时间内鼠标指针离开或盘旋在一个窗口上时,此函数寄送消息。函数原型:BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack); 参数:lpEventTrack;指向结构TRACKMOUSEEVENT的指针。  返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastE

2012-10-16 14:11:32 610

转载 MFC——ComBox用法小结

用法小结,摘自网上;号称大全的,那是吹牛B Combo Box (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。下面的例子简要说明如何利用 MFC CComboBox Class来操作字符串列表。1、定义控件对应变量假定已经创建了一个Dialog,并且从

2012-10-12 10:06:34 17339

转载 UpdateData、Invalidate、InvalidateRect和UpdateWindow

InvalidateRect(HWND) 使窗口无效 产生消息WM_PAINT;  ValidateRect(HWND)使窗口有效 清除消息队列中的WM_PAINT消息在编程的时候经常把UpdateData、Invalidate、InvalidateRect和UpdateWindow四个函数混淆,在这里将简单介绍它们的区别。1、UpdateData():    当你使用了Cla

2012-10-11 15:04:11 460

转载 CDC与HDC的区别以及他们之间的转换

微软喜欢将内核对象标识,称为句柄。应该都是32位或者64位整数 HINSTANCE: 进程实例或者句柄HANDLE:       文件句柄HWND:        窗口的句柄,用来标识窗口对象HPEN:         画笔句柄,用来标识画笔对象HBITMAP:      位图句柄HDC:          设备环境句柄   CWnd:      是提供窗口处理

2012-09-14 11:58:03 710

转载 GetBuffer--ReleaseBuffer问题

CString CConLog::ReadConfig(CString section,CString key){ GetPrivateProfileString(section,key,_T(""),m_sReadPath.GetBuffer(MAX_PATH),MAX_PATH,m_sIniPath); m_sReadPath.ReleaseBuffer();//不释放出错 r

2012-09-11 11:16:26 438

转载 vector中的 size和 capacity和 reserve和 resize

在vector中与size()和capacity() 相对应的有两个函数:resize(size_type)和reserve(size_type)。Size指目前容器中实际有多少元素,对应的resize(size_type)会在容器尾添加或删除一些元素,来调整容器中实际的内容,使容器达到指定的大小。Capacity指最少要多少元素才会使其容量重新分配,对应reserve(size_type

2012-09-06 09:40:46 668

转载 对于vector第一个元素访问的几种方法

#include #include using std::cin;using std::cout;using std::endl;using std::vector;int main(){vector ivec;int ival;cout << "Enter some integers for vector(Ctrl + Z to end):"

2012-09-05 11:46:32 36149 1

原创 设置GridCtrl中的Checkbox 为不可编辑

m_Grid.SetCellType(index, 1, CGridCtrl::CellType_Check); //设置第index行、第一列的单元格为类似CheckBox的模样 OnGridCheckEdit(NMHDR *pNMHDR, LRESULT* pResult){ *pResult = 0; NM_GRIDVIEW* pItem = (NM_GRIDVIEW*) p

2012-08-22 11:36:16 3466 1

原创 error LNK2019: 无法解析的外部符号

8>WellInfoSheet.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CWellInfWPage::CWellInfWPage(class GeoWell *)"(??0CWellInfWPage@@QAE@PAVGeoWell@@@Z),该符号在函数 "public: __thiscall CWellInfoSheet::CWe

2012-08-20 10:13:29 575

转载 vector 容器使用时应该注意的内存分配问题

vector 容器使用时应该注意的内存分配问题本文说明了vector 容器使用时应该注意的内存分配问题,原理说的比较详细,对于初学者比较适用。 本文描述的是一种很常见的情况:当你在某个缓存中存储数据时,常常需要在运行时调整该缓存的大小,以便能容纳更多的数据。本文将讨论如何使用 STL 的 vector 进行内存的再分配。  这里描述的是一种很常见的情况:当你在某个缓存中存储

2012-08-15 09:03:44 752

原创 CFileDialog类对象 调用GetFolderPath()运行错误

CFileDialog dlg(TRUE); CString mFilePath; mFilePath = dlg.GetFolderPath(); if (dlg.DoModal() == IDOK) { CWnd *pWnd = GetDlgItem(IDC_STATIC_SHOW); pWnd->SetWindowTextW(m_fileExt); }Ge

2012-08-14 15:05:07 2104

23种设计模式(C++).pdf

23种设计模式(C++).pdf 设计模式 C++代码实现啊

2012-10-23

GDI++SDK参考(翻译版本).pdf

GDI++SDK参考(翻译版本).pdf 版本 gdiplus

2012-10-23

MFC类库详解

MFC类库详解 VC6.0 比较早的 现在看着不太全

2012-09-06

matlab GUI学习手记

MATLAB关于GUI的一些帮助性书籍 使用MATLAB的同学们可以看看

2011-09-20

quartus2 中文说明

好不易找到的,中文说明 相信对于英语不太好的人会有帮助

2011-03-15

空空如也

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

TA关注的人

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