2013年3月12日

摘要: 在C++里常用类型转换感觉很杂,不好用;跟C#没得比:可以强类型转换,还有convert通用的转换,非常方便的说。刚用wxwidget时类型转换也是一头大,了解后发现要比MFC简洁好用多,接口也容易记住。下面上WXWIDGET常用类型转换:一、wxstring与其他类型转换1.1、int to wxString:wxString str = wxString::Format(wxT("%i"),myInt);1.2、wxString to int :int i;i = wxAtoi(str);1.3、string to wxString:std::string stlStr 阅读全文

posted @ 2013-03-12 10:22 ssq40311 阅读(552) 评论(0) 推荐(0)


2013年3月7日

摘要: 本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是 阅读全文

posted @ 2013-03-07 13:33 ssq40311 阅读(315) 评论(0) 推荐(0)

摘要: 一、实验目的学习和掌握Linux下的TCP服务器基本原理和基本编程方法,体会TCP与UDP编程的不同,UDP编程:http://blog.csdn.net/yueguanghaidao/article/details/7055985二、实验平台Linux操作系统三、实验内容编写Linux下TCP服务器套接字程序,程序运行时服务器等待客户的连接,一旦连接成功,则显示客户的IP地址、端口号,并向客户端发送字符串。四、实验原理使用TCP套接字编程可以实现基于TCP/IP协议的面向连接的通信,它分为服务器端和客户端两部分,其主要实现过程如图1.1所示。 图1.1 ... 阅读全文

posted @ 2013-03-07 13:30 ssq40311 阅读(700) 评论(0) 推荐(0)

摘要: 实验三UDP服务器端程序设计一、实验目的学习和掌握Linux下的UDP服务器基本原理和基本编程方法,体会与TCP的区别,TCP编程:http://blog.csdn.net/yueguanghaidao/article/details/7035248二、实验平台ubuntu-8.04操作系统三、实验内容编写Linux下UDP服务器套接字程序,服务器接收客户端发送的信息并显示,同时显示客户的IP地址、端口号,并向客户端发送信息。如果服务器接收的客户信息为“bye”,则退出循环,并关闭套接字。四、实验原理UDP套接口是无连接的、不可靠的数据报协议;既然他不可靠为什么还要用呢?其一:当应用程序使用广 阅读全文

posted @ 2013-03-07 13:28 ssq40311 阅读(656) 评论(0) 推荐(0)


2013年3月6日

摘要: C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。虚函数表对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。 在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其... 阅读全文

posted @ 2013-03-06 17:55 ssq40311 阅读(152) 评论(0) 推荐(0)

摘要: 什么是死锁?如果一个进程集合里面的每个进程都在等待只能由这个集合中的其他一个进程(包括他自身)才能引发的事件,这种情况就是死锁。这个定义可能有点拗口,一个最简单的例子就是有资源A和资源B,都是不可剥夺资源,现在进程C已经申请了资源A,进程D也申请了资源B,进程C接下来的操作需要用到资源B,而进程D恰好也在申请资源A,那么就引发了死锁。这个肯定每个人都看过了。然后套用回去定义:如果一个进程集合里面(进程C和进程D)的每个进程(进程C和进程D)都在等待只能由这个集合中的其他一个进程(对于进程C,他在等进程D;对于进程D,他在等进程C)才能引发的事件(释放相应资源)。这里的资源包括了软的资源(代码块 阅读全文

posted @ 2013-03-06 11:19 ssq40311 阅读(165) 评论(0) 推荐(0)

摘要: 为了能够有效的控制多个进程之间的沟通过程,保证沟通过程的有序和和谐,OS必须提供一定的同步机制保证进程之间不会自说自话而是有效的协同工作。比如在共享内存的通信方式中,两个或者多个进程都要对共享的内存进行数据写入,那么怎么才能保证一个进程在写入的过程中不被其它的进程打断,保证数据的完整性呢?又怎么保证读取进程在读取数据的过程中数据不会变动,保证读取出的数据是完整有效的呢? 常用的同步方式有: 互斥锁、条件变量、读写锁、记录锁(文件锁)和信号灯.互斥锁 顾名思义,锁是用来锁住某种东西的,锁住之后只有有钥匙的人才能对锁住的东西拥有控制权(把锁砸了,把东西偷走的小偷不在我们的讨论范围了)。所谓互斥,从 阅读全文

posted @ 2013-03-06 11:14 ssq40311 阅读(1023) 评论(0) 推荐(0)

摘要: 经常使用到的进程间通信有:管道、消息队列和共享内存。 管道 最开始出现的管道是用于具有血缘关系的进程之间共享数据的。父进程首先创建一个管道,然后再fork()出子进程,子进程自动共享对管道的访问权限。这种管道是没有名字的(只有进程中的一个标识符进行标识),因此也称为匿名管道。 如我们在shell中运行 ls * | grep foo 时,shell就会创建一个匿名管道,并把ls的stdout重定向到该管道的输入端,把grep的stdin重定向到管道的输出端,ls 的输出就自动的称为grep的输入。这一切对 ls 和 grep 都是透明的,它们并不知道管道的存在。 后来就出现了FIFO(firs 阅读全文

posted @ 2013-03-06 11:13 ssq40311 阅读(184) 评论(0) 推荐(0)

摘要: 当线程分属于不同进程,也就是分驻在不同的地址空间时,它们之间的通讯需要跨越地址空间的边界,便得采取一些与同一进程中不同线程间通讯不同的方法。1、Windows专门定义了一个消息:WM_COPYDATA,用来在线程之间搬移数据,――不管两个线程是否同属于一个进程。同时接受这个消息的线程必须有一个窗口,即必须是UI线程。WM_COPYDATA必须由SendMessage()来发送,不能由PostMessage()等来发送,这是由待发送数据缓冲区的生命期决定的,出于安全的需要。2、WM_COPYDATA效率上面不是太高,如果要求高效率,可以考虑使用共享内存(Shared Memory)。使用共享内存 阅读全文

posted @ 2013-03-06 11:11 ssq40311 阅读(232) 评论(0) 推荐(0)

摘要: 1.同一个数据库的一个表的数据怎么导入到另一个表方法1. 先把数据都dump出来,然后再dump到目标表去方法2. insert into destTable select * from srcTable; 阅读全文

posted @ 2013-03-06 10:58 ssq40311 阅读(107) 评论(0) 推荐(0)


博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3