- 博客(73)
- 资源 (9)
- 收藏
- 关注
翻译 epoll 和select的区别
相同点:都是多路复用不同点:select是轮询所有的流,时间辅助度是0(n),处理的流越多,无差别轮询时间就越长;单个进程可监控的fd数量是有限的,32位机默认是1024;64位的是2048,内核需要将消息传递到用户空间,都需要内核拷贝动作epoll是基于事件驱动的,哪个流发生了怎么样的I/O事件通知我们,事件复杂度是o(1),没有最大并发连接的限制,epoll 对于1G的内存可以支持10万个,可以通过/proc/sys/fs/file-max可以查看到,对于内存的拷贝:使用mm..
2020-09-22 21:26:19 1347
原创 一个链表的反序
listNode.h#pragma once#include <stdio.h>struct node{ int i; struct node* next;};//新增一个链表节点void addListNode(struct node* head, int idata);//打印链表节点void printListNode(struct node* he...
2020-04-15 20:46:35 238
翻译 关于VC画图闪屏的问题 - VC/MFC / 基础类
显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题。 而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。 MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单, 只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。 我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈 我的一些观点。 1、显示的图形为什么会闪烁?
2014-05-29 13:51:49 2391 1
转载 bmp图像格式的详解
BMP文件是一种像素文件,它保存了一幅图象中所有的像素。这种文件格式可以保存单色位图、16色或256色索引模式像素图、24位真彩色图象,每种模式种单一像素的大小分别为1/8字节,1/2字节,1字节和3字节。目前最常见的是256色BMP和24位色BMP。这种文件格式还定义了像素保存的几种方法,包括不压缩、RLE压缩等。常见的BMP文件大多是不压缩的。 Windows所使用的BMP文
2013-12-16 11:32:27 1903
原创 如何在窗口绘制背景图片,并且在图片上话一个矩形
void CPtestDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectang
2013-12-06 11:05:08 1860
原创 重写clistctl中右键弹出菜单
void CPPListCtrl::OnRButtonDown( UINT nFlags, CPoint ptt ){ CRect rc; GetWindowRect(&rc); ScreenToClient(&rc); CPoint pt = ptt; //点在矩形中,并且里面有数据 int iItemCount = GetItemCount()
2013-11-22 11:44:29 927
原创 c++如何画实心的箭头
CDC *pDC = GetDC(); CRect rect; GetClientRect(rect); //获得用户区域大小 CPen penBlue(PS_SOLID, 1, RGB(0, 0, 255)); CPen* pOldPen = pDC->SelectObject(&penBlue); //蓝笔红刷
2013-10-21 14:14:32 3578
转载 解决SetForegroundWindow和BringWindowToTop等函数有时失败,无法将窗口带到前台的问题 C++代码
BOOL SetTopWindow(HWND hWnd) { HWND hForeWnd = GetForegroundWindow(); DWORD dwForeID = GetWindowThreadProcessId(hForeWnd, NULL); DWORD dwCurID = GetCurrentThreadId(); AttachThreadI
2013-09-06 16:56:03 5468
原创 没有限制的数字自加
void incString(std::string &strTemp) { int iLen = strTemp.length(); int iFlag = 0; for (int i = 0 ; i { if ('9' == strTemp[iLen-i-1]) { str
2013-07-12 15:26:06 551
原创 c++ 单件模式
#include "stdafx.h"class singClass{public: static singClass* getsingClassObj() { if (NULL == m_singClass) { m_singClass = new singClass(); } return m_singClass; } sta
2012-11-01 13:47:34 717 1
翻译 通过基类指针来执行删除操作时,基类的析构函数设为公有且虚拟的
#include "stdafx.h"#include using namespace std;#include class Base{public: virtual void pp(){}};class Dev:public Base{};class A { public: virtual std::string getV
2012-10-22 15:55:44 1328 1
原创 线程同步-临界区
CRITICAL_SECTION g_cs;unsigned int WINAPI thread1(PVOID pvParam){ EnterCriticalSection(&g_cs); cout<< "thread1" << endl; LeaveCriticalSection(&g_cs); return 0;}unsigned int WINAPI thread2(PVO
2012-09-20 09:45:36 890
原创 线程同步-event机制
#include #include HANDLE g_handl;unsigned int WINAPI thread1(PVOID pvParam){ WaitForSingleObject(g_handl, INFINITE); cout<< "thread1" << endl; return 0;}unsigned int WINAPI thread2(PVOID
2012-09-20 09:28:18 473
原创 [c++ template]非类型的函数模板以及非类型的类的模板
template class mm{};templatevoid ff(T tt,int cc){}void main(){ mm mmm; ff(2,33); system("pause");}对于非类型的,浮点数以及字符串的文字都不能使用日如templateclass ccc{}; ccc c;//error以及全局指针
2012-09-18 16:30:03 575
原创 c++类型转换
#include "stdafx.h"#include #includeusing namespace std; class A { public: int m_a; }; class B { public: int m_b; }; class C : public A, public B {}; void main(){ C c; printf("%
2012-09-18 14:21:33 523
原创 类模板的特化,局部化以及缺省模板的实参
// 泛型编程.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;//类模板template class CC{public: void hh(T itemp){} void pp(T kk){}};//类模板的特化template<>class CC{
2012-09-17 15:47:40 980
原创 socket模型
两种I/O模式一.选择模型二.异步选择三.事件选择四.重叠I/O模型五.完成端口模型五种I/O模型的比较 两种I/O模式1、两种I/O模式阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字默认为阻塞模式。可以通过多线程技术进行处理。非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权。这种模式
2012-09-11 22:49:48 583
原创 线程的挂起
唤醒一个线程当一个线程调用G e t M e s s a g e或Wa i t M e s s a g e,但没有对这个线程或这个线程所建立窗口的消息时,系统可以挂起这个线程,这样就不再给它分配C P U时间。当有一个消息登记或发送到这个线程,系统要设置一个唤醒标志,指出现在要给这个线程分配C P U时间,以便处理消息。正常情况下,如果用户不按键或移动鼠标,就没有消息发送给任何窗口。这意味着系
2012-09-11 14:04:57 532
原创 RTTI
1对于带虚函数的类,在运行时执行RTTI,其它,则是在编译是计算RTTI操作符2:RTTI提供了两个运算符主要是两个:一个是:typeid运算符,可以是指针,引用或者对象都可以 typeid(表达式).name对于类中有virtual,当表达式为NULL的时候,会抛出异常#include class Base{public: virtua
2012-09-07 17:16:09 396
原创 友元函数的代码
#include #include using namespace std;#include "stdafx.h"class MyClass;class A{public: A() { m_ia = 0; printf("A()\n"); } A& operator=(const A &a) { printf("=\n"); return *
2012-09-07 13:47:56 1763 1
转载 关于对话框DoModal()函数调用失败的原因分析
对话框DoModal()函数调用失败一般而言有两种表现形式:一是对话框弹不出来,但是没有错误提示;二是对话框弹不出来,同时伴随内存访问错误的提示框出现。 第一种表现主要是因为没有对资源句柄进行切换造成的,以在DLL中弹出对话框中最为常见。解决办法是:如果是MFC规则DLL,可以使用所有导出函数的开始处添加 AFX_MANAGE_STATE宏,具体代码为:AFX_MANAGE_STATE
2011-12-21 10:09:33 2186
转载 链接错误LNK2001
学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为: unresolve
2011-12-15 22:03:47 404
原创 从utf-8文件中读取转换成unicode
int CCheckSensitiveWord::ReadSenSitiveWordFromFile( CString &strPath){ try { char ch[MAXTXTLEN]=("\0"); WideCharToMultiByte ( CP_OEMCP,NULL, strPath.GetBuffer(0),-1,ch,strPath.GetLengt
2011-12-15 20:36:32 753
原创 创建utf-8文件,并且向里面写数据,在读出来
FILE *pf = fopen(("d:\\33.txt"),("wb,ccs=UTF-8")); if(pf == NULL) { return; } TCHAR cc[10]=_T("中国"); //_ftprintf(pf, _T("%s\n"), cc); int u8Len = ::WideCharToMultiByte(CP_UTF8, NULL,
2011-12-15 09:04:19 1138
转载 Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
转载请注明出处http://www.cppblog.com/greatws/archive/2008/08/31/60546.html最近有人问我关于这个的问题,就此写一篇blogAnsi字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件Unicode字符串,每个字符(汉字、英文字母)都占2个字节,以2个连续的\0结尾,NT操作系统内核用的是这
2011-12-14 15:25:10 603
原创 判断文件是否是utf-8
/*===================================//函数名: IsUTF8File//作者: guandiqun //日期: 2011-12-01//功能: 判断文件是否是utf-8//输入参数:TCHAR *strFile //返回值: int-2:表示文件错误-1:表示打开文件错误1:是UTF-8(有bom)2:是UTF
2011-12-12 11:09:37 3930 4
原创 经典的代码
在头文件中定义 #define GETTREEVIEWLEFT() \ CTreeViewLeft* pTreeViewLeft=NULL;\ 在cpp文件中调用GETTREEVIEWLEFT()pTreeViewLeft = new CTreeViewLeft 判断这个指针是否属于这个类(并且这个类是MFC的) 首先必须是个类,并且在类头文件中进行了
2011-12-01 16:04:54 486 1
原创 软件详细设计模板
1 引言 1.1 编写目的:阐明编写详细设计说明书的目的,指明读者对象。 1.2 项目背景:应包括项目的来源和主管部门等。 1.3 定义:列出本文档中所用到的专门术语的定义和缩写词的愿意。 1.4 参考资料: ● 列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源 ●项目经核准的计划任务书、合同或上级机关的批文;项目开发计划;需求规格说明书;概要设计说明书
2011-11-30 14:06:22 920
原创 _tcsstr的源码
#include TCHAR* _strstr(const TCHAR *s1, const TCHAR *s2){ if (*s2 == '\0') /*如果s2为空,则返回s1*/ return ((TCHAR *)s1); for (; s1 != '\0'; ++s1) /*每次后移s1的位置,在新的位置进行下一次匹配*/ { const TCHAR
2011-11-29 13:53:36 2574
原创 错误整理
TCHAR ch[1024]=_T("d:\\"); TCHAR cc = _T('\\'); TCHAR *pCh = _tcsstr(ch, &cc); if (NULL == pCh) { return; } pch为空 TCHAR ch[1024]=_T("d:\\"); TCHAR cChar[2] = _T("\\");
2011-11-29 10:20:34 529
翻译 VS2010复制中文乱码修复
当复制VS2010中带有中文字符的代码到Office(Word, Excel, PowerPoint, Outlook)时,在中文字符后面会被添加一到三个乱码。比如复制"中文字符",粘贴到word就会变成(中D文?字Á?符¤?)。 通过黑暗执行绪的一篇文章提示,截取剪贴板中RTF(富文本格式)的数据流,并作出修复。该作者使用了 .NET中的正则表达式类RegEx来达到修复目的。
2011-11-22 17:17:45 5807 2
转载 C++/OOP 大系
侯捷观点(系列书评 1/2) (2008-06-07 19:55) 分类: 书评 【C++/OOP 大系】《程序员》2001.01作者简介:侯捷,台湾电脑技术作家,着译评兼擅。常着文章自娱,颇示己志。个人网站:www.jjhou.com北京镜站:www.csdn.net/expert/jjhou ●开场白《程序员》杂志邀我开一个专栏。我向来期
2011-11-17 14:45:16 1791
转载 c++书籍
===1===《C++沉思录完整版》(中文版)http://download.csdn.net/source/172842===2===《C++Primer 3rd》英文版 http://download.csdn.net/source/172847C++ Primer的第三版结合了Stanley Lippman的实践经验和Josée Lajoie对于ANSI/ISO标准C+
2011-11-17 14:35:47 967 2
原创 使用外部 JavaScript
haha.js document.write("ddd"); test.html ffffffdocument.write("fff");输出结果:ddd
2011-11-08 23:55:21 424
原创 c语言书籍
计算机程序设计艺术,机械工业,经典之作C指针与陷阱C++大学教程,电子工业自然语言处理,电子工业C程序设计题典,夏宽里高级程序员教程,C语言从入门到精通,陈锐,电子工业出版社,比较全面,零基础学数据结构,机械工业C语言程序设计艺术,机械工业C语言程序设计语言,机械工业,c语言大学教程,电子工业,数据结构,严蔚敏c/C++常用函数与算法速查手册,中
2011-11-08 23:06:43 661
翻译 菜单的背景颜色
VC MFC菜单栏(CMenu)控件 (2011-07-02 12:49) 分类: C++ 菜单栏在对话框窗口里显示菜单栏像工具栏一样,菜单栏在按件面板里没有对应的选项,但有一个菜单控件类CMenu,所以如果想要在对话框里显示菜单栏,就得像工具栏那样,
2011-08-29 17:13:02 10994 5
原创 windows 核心编程学习笔记3
1 当创建内核对象的进程,进程结束时,内核对象不一定解释2 每个内核对象都有一个内核对象计数器,当创建内核对象时,计数器加1,当线程访问的时候,计数器又加一3内核对象有内核所有,而不是有进程所有4当进程终止时,内核对象确定计数器是否为0 ,若是,则结束内核对象5怎样判断是否创建
2011-07-14 12:30:34 642
原创 判断某个文件是否是unicode编码的
#include /******************************************************************函数名称:IsUnicodeFile函数功能:判断某个文件是否是unicode文件输入参数:输出参数:int -1:
2011-07-13 11:49:49 4225
原创 unicode和ansi的比较
开始用ansi编码之后,在保存到unicode之后字符将丢失,原因: ansi 是用8bit 码,而对于ascii来讲,其实只用了7bitunicode是用16bit码ansi是以单字节来保存英文字符,以双字节来保存中文字符unicode都是以双字节保存中英文字符的 在com中
2011-07-07 15:09:08 827
原创 mdb数据库的操作
void CPopManuDlg::LoadBookInfo(BOOL IsDesc){ m_list.DeleteAllItems(); CString sql; if (!IsDesc) sql = "Select * from tb
2011-07-06 15:16:36 1161
打印日志文件c++
2011-11-24
图像缩小的源码,忘大家下载
2011-07-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人