摘要:
线程同步的原因:解决数据访问冲突问题。 (一)、线程同步的粗浅认识:线程同步主要是为了完成线程间数据共享和同步,保持数据的完整性。(比如在多线程中,一些敏感的数据部允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何时刻,最多有一个线程访问,以保证数据的完整性。PS: 在进行多线程编程,最 阅读全文
摘要:
HTTP协议详解 当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家 阅读全文
摘要:
同步阻塞:你打电话告诉老板你要买某书,老板拿起电话听你说完就去查书,没有说话,你什么也不知道,在得到任何结果之前,你一直拿着电话干等,你此时什么也干不了。30分钟后老板直接把书送到你家,这时你才挂断电话。每次电话你都要得得到结果(书到家)后你才挂断电话,这是同步。你一直拿着电话等结果,这是阻塞。 同 阅读全文
摘要:
基本的架构是 epoll+线程池。 这篇博文主要从以下几个方面进行阐述: (1)reactor模式的一个介绍:(只要是我的理解) (2)关于线程池的说明。 (3)如何将epoll + 池结合起来实现一个群聊 一. reactor 模式: 阅读全文
摘要:
前言 I/O多路复用有很多种实现。在linux上,2.4内核前主要是select和poll,自Linux 2.6内核正式引入epoll以来,epoll已经成为了目前实现高性能网络服务器的必备技术。尽管他们的使用方法不尽相同,但是本质上却没有什么区别。本文将重 阅读全文
摘要:
select系统调用的的用途是:在一段指定的时间内,监听用户感兴趣的文件描述符上可读、可写和异常等事件。 select 机制的优势 为什么会出现select模型? 先看一下下面的这句代码: int iResult = recv(s, buffer,1024); 这是用来接收数据的,在默认的阻塞模式下 阅读全文
摘要:
RTTI:运行时类型识别 typeid(*obj).name()打印出obj这个指针指向的实际的对象类型 对类型进行比对:if{typeid(*obj)==typeid(Bird)} dynamic_cast转换类型,中是要转化成为的类型,例如:Bird *bird = dynamic_cast(obj);(obj)转化为Bird * 类型 dynamic_cast用法的注意事项:只能应用于指针... 阅读全文
摘要:
接口类更多的是表达一种能力或协议 阅读全文
摘要:
虚函数:virtual double calcArea(){return 0;} 纯虚函数:virtual double calcPerimeter() = 0; 纯虚函数在虚函数表中直接写为0,包含纯虚函数的类,就是抽象类。 纯虚函数无法调用,所以抽象类无法实例化对象 抽象类的子类也有可能是抽象类。抽象类的子类只有把抽象类当中的所有纯虚函数都做了实现,子类才可以实例化对象。 抽象基类是本类族的... 阅读全文
摘要:
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 虚函数表指针 定义了virtual... 阅读全文