- 博客(77)
- 资源 (3)
- 收藏
- 关注
转载 线程池的介绍及简单实现
转自:http://www.ibm.com/developerworks/cn/java/l-threadPool/简介: 服务器程序利用线程技术响应客户请求已经司空见惯,可能您认为这样做效率已经很高,但您有没有想过优化一下使用线程的方法。该文章将向您介绍服务器程序如何利用线程池来优化性能并提供一个简单的线程池实现。 线程池的技术背景在面向对象编程中,创建和销毁对象是很费时间的,因
2012-12-06 11:02:58 654
转载 Socket 阻塞模式和非阻塞模式(转)
转自:http://yjxandsp.blog.163.com/blog/static/163679712012411115039584/Windows套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行
2012-11-20 11:36:26 854
转载 C++-inserter
转自:http://www.cnblogs.com/nkxyf/archive/2012/05/17/2506288.htmlC++的迭代器适配器中常用的有插入迭代器(Inser Iterator)、流迭代器(Stream Iterator)和逆向迭代器(Reverse Iterator)等!本文主要是介绍插入迭代器(Inser Iterator).下面介绍三种插入迭代器:1.Back
2012-09-04 15:54:46 11338
转载 泛型<编程>:volatile——多线程程序员最好的朋友volatile修正符及让你的编译器为你检查竞态条件
http://www.bccn.net/Article/kfyy/vc/jszl/200709/6188_2.html泛型:volatile——多线程程序员最好的朋友volatile修正符及让你的编译器为你检查竞态条件我不想破坏你的情绪,但这篇专栏针对多线程编程中最可怕的问题。如果说——正如前面一篇泛型所说的——写出意外安全(exception-safe)的程序很难,但写意外安全的程序
2012-02-19 23:07:59 881
转载 考虑可能的错误情况
简介有能力的程序员能够编写在未发生异常情况时正常运行的代码。使程序员出类拔萃的技能之一是能够编写在发生错误和出现“意外事件”时仍然能继续运行的代码。然而,术语“意外事件”会给人一种错误的印象。如果您的代码嵌入在一个广泛分布的成功产品中,那么您应该预料到代码可能发生的各种异常(且可怕)的情况。计算机将耗尽内存,文件未如您所愿地存在于应该存在的地方,从未失败的函数有可能在新版本的操作系统中失败,等等,
2011-06-25 16:44:00 862
原创 注意string中存汉字—— string wstring 转换
这段程序在windows2003 和xp上运行结果,看看有什么不一样#include #include #include using namespace std; void main(){ string str = "周末 大家 一起 出去玩"; cout str.erase(remove_if(str.begin(), str.end(),
2010-04-22 18:01:00 8342
转载 改变 CListCtrl、CHeaderCtrl 高度、字体、颜色和背景
用CListCtrl来显示数据比较方便,有时候我们需要标注某一列或某一个单元格的背景和字体颜色,或者需要改变一下行高和字体大小,CListCtrl要改变这些并不是很方便。本文将介绍如何派生一个类来改变CListCtrl及其表头的高度、字体大小、列背景颜色、单元格背景颜色、列字体颜色、单元格字体颜色 实现过程:1.表头修改 新建一个MFC类CHeaderCtrlCl,其基类为CHead
2010-04-21 16:25:00 14584 6
转载 可编辑子项的CListCtrl类
大家都知道在MFC中通过给CListCtrl设置LVS_EDITLABELS属性,并且在程序中响应控件的LVN_ENDLABELEDIT消息可以修改列表控件每一行的第一项,也就是主项(Item)。 void CEditListCtrlSampleDlg::OnEndlabeleditList1(NMHDR* pNMHDR, LRESULT* pResult) { LV_DIS
2010-04-20 16:22:00 4714 2
转载 关于非模态对话框的销毁
转自:http://hi.baidu.com/listenprogram/blog/item/4902d5c62e005f1f9c163d86.html非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别先看一下MSDN的原文:When you implement a modeless dialog box, always override the OnCa
2010-04-14 10:41:00 574
转载 多线程编程之四——线程的同步
转自:http://www.vckbase.com/document/viewdoc/?id=1708八、线程的同步 虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银
2010-04-14 10:40:00 344
转载 C语言字符串函数大全
程序开头要声明#include 函数名: stpcpy功 能: 拷贝一个字符串到另一个用 法: char *stpcpy(char *destin, char *source);程序例: #include #include int main(void){ char string[10]; char *str1 = "abcde
2010-04-13 18:03:00 356
转载 多线程编程之三——线程间通讯
转自:http://www.vckbase.com/document/viewdoc/?id=1707七、线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。 1. 使用全局变量进
2010-04-13 14:29:00 457
转载 多线程编程之二——MFC中的多线程开发
转自:http://www.vckbase.com/document/viewdoc/?id=1706五、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理
2010-04-13 10:44:00 375
原创 条款33:避免遮掩继承而来的名称
1)derived classes 内的名称会遮掩base classes内的名称,在public继承下从来没有人希望如此;2)为了让被遮掩的名称再见天日,可使用using声明式或转交函数(forwarding functions)。
2010-04-13 09:59:00 339
原创 条款32:确定你的public继承塑模出is-a关系
1) 应该宁可采取“在编译器拒绝企鹅飞行”的设计,而不是“只在运行期才能侦测他们”的设计;2) “public继承”意味着is-a。适用于base classes身上的每一件事情一定也适用于derived classes 身上,因为每一个derived class对象也都是一个base class对象。
2010-04-13 09:58:00 386
转载 多线程编程之一——问题提出
转自:http://www.vckbase.com/document/viewdoc/?id=1704一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:vo
2010-04-13 08:43:00 644
转载 Oracle中sqlPlus -oracle 输出变量
Sqlplus是oracle提供的一个工具程序,既可以在oracle服务器使用,也可以在oracle客户端使用。在windows下分两种,sqlplus.exe是命令行程序,sqlplusw.exe是窗体程序,通常我们在开始菜单中启动的是后者,两者的功能是一致的。Sqlplus是一个最常用的工具,具有很强的功能,主要有:1. 数据库的维护,如启动,关闭等,这一般在服务器上操作。2. 执
2010-03-29 17:45:00 20615
转载 ORACLE数据库的DDL和DCL语句及游标使用
我们将讨论各种用于访问ORACLE数据库的DDL和DCL语句。 查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT语句时,要与INTO子句一起使用,查询的返回值被赋予INTO子句中的变量,变量的声明是在DELCARE中。SELECT INTO语法如下: SELECT [DISTICT|ALL]{*|column
2010-03-25 14:55:00 1651
转载 文件夹无法访问、拒绝访问的解决方法
原文来至:http://blog.csdn.net/dayeshisir/archive/2009/06/10/4257475.aspx 文件夹无法访问、拒绝访问的解决方法问:我的电脑突然很多文件夹都打不开. 如果要解决这个问题,首先必须关闭“简单文件共享”,然后获取文件夹的所有权。 第一步. 关闭“简单文件共享”: 《一》. 单击“开始”,然后单击“我的电脑”。 《二》.
2010-02-21 22:37:00 853
原创 条款20:宁以pass-by-reference-to-const替换pass-by-value
我们考虑以下class继承体系: class Person { public: Person(); virtual ~Person(); ... private: string name; string address; }; class Student : public Person { public: Student(); ~Student(); ... privat
2009-10-30 13:59:00 493
原创 条款17:以独立语句将newed对象置入智能指针
假设我们有一个函数用来揭示处理程序的优先权,另外一个函数用来在某动态分配所得的Widget上进行某些带有优先权的处理: int Priority(); void ProcessWidget(std::auto_ptr pw, int priority); 由于谨记“以对象管理资源”的智慧铭言,processWidget决定对其动态分配得来的Widget运用智能指针。 现在我们来调用这
2009-10-28 18:08:00 396
转载 __cdecl __stdcall __fastcall
1.如果函数func是__cdecl(默认调用方式),调用时情况如下 int main() ...{ //参数从右到左压栈 push 4 push 3 push 2 push 1 call func add esp 0x10 //调用者恢复堆栈指针esp,4个参数的大小是0x10(4x4) }
2009-10-25 23:18:00 397
原创 条款12:复制对象时勿忘其每一个成分
当我们编写一个copying函数,请确保(1)复制所有local成员变量,(2)调用所有base class内的适当的copying函数下面我们来看一个例子怎样来具体实现子类的copying函数void logCall(const string &funcNmae){ cout }class Customer{public: Customer(const string &strname) :
2009-10-23 17:51:00 433
原创 条款11:在operator= 中处理“自我赋值”
我们来看看下面一段代码,class Widget中自己实现了拷贝构造函数class Bitmap{};class Widget{public: Widget () { pb = new Bitmap; } Widget& operator=(const Widget &rhs);private: Bitmap *pb;};下面有三种方式对Widget& operator=(const
2009-10-23 17:49:00 741 1
原创 条款10:令operator= 返回一个reference to *this
以前没有太注意在重载类的赋值操作时,为什么总是返回一个类类型的引用。下面我们来看看这是为什么:class CExample{public: CExample (const string &str, int v) : m_str(str), m_val(v) { } void operator=(const CExample &rhs); CExample& operator+=(const
2009-10-22 18:34:00 487
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人