两种锁的加锁原理互斥锁:线程会从sleep(加锁)——>running(解锁),过程中有上下文的切换,cpu的抢占,信号的发送等开销。自旋锁:线程一直是running(加锁——>解锁),死循环检测锁的标志位,机制不复杂。两种锁的区别互斥锁的起始原始开销要高于自旋锁,但是基本是一劳永逸,临界区持锁时间...
分类:
其他好文 时间:
2014-05-09 04:58:58
阅读次数:
297
memcached的内存分配没有用到c语言中自带的malloc函数,因为这个函数分配内存的时候效率很低,对于这种要求快速响应,对效率要求非常高的缓存软件来说非常不合适。memcached用的是自己的一套内存分配方法,叫做slab
allocation。Memcache单进程最大可开的内存是2GB,如...
分类:
其他好文 时间:
2014-05-09 04:34:29
阅读次数:
338
以 finddialog 为例,介绍 QDialog。并对 Qt
的基本概念和技巧做了更进一步(chap1)的介绍。1.MOC扩展与signals–slots 机制严格来说,Qt 开发,写的并不是标准
C++。Meta-Object System 是 Qt 对 C++ 的一项重要扩展,简称 moc。...
分类:
编程语言 时间:
2014-05-09 04:31:40
阅读次数:
411
第六章
任务执行大多数并发应用程序是围绕执行任务进行管理的。设计任务时,要为任务设计一个清晰的任务边界,并配合一个明确的任务执行策略。任务最好是独立的,因为这会提高并发度。大多数服务器应用程序都选择了下面这个自然的任务边界:单个客户请求。任务时逻辑上的工作单元,线程是使任务异步执行的机制。应用程序内...
分类:
编程语言 时间:
2014-05-08 18:38:07
阅读次数:
425
C语言的指针跳转访问是一个灵活高效的机制,但是再高效也是要花费额外时间的,下面这个程序如果在gcc
-O0不优化的情况,就可以看出指针跳转比直接访问要多消耗10%左右的时间#include #include int main(){ int m = 0; int
*p = &m; ...
分类:
其他好文 时间:
2014-05-08 17:58:42
阅读次数:
278
子类必须能够替换其基类这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础。在父类和子类的具体行为中,必须严格把握继承层次中的关系和特征,将基类替换为子类,程序的行为不会发生任何变化。同时,这一约束反过来则是不成立的,子类可以替换基类,但...
分类:
其他好文 时间:
2014-05-08 17:56:27
阅读次数:
306
最近有这么一个需求:在点击EditText时弹出软键盘,然后在点击空白处或者其他控件的时候隐藏软键盘。这个需求在平板电脑上非常实用,因为屏幕大,用户不可能每次都点左下角去隐藏,并且点击空白处更容易。刚开始从网上搜索,不是很理想,后来突然想到Android的事件分发机制,于是想到了实现方法:publi...
分类:
移动开发 时间:
2014-05-08 17:53:04
阅读次数:
350
HSRP的工作原理和在企业网络中的应用一、HSRP的简介SHRP即热备份路由协议,它主要是向我们提供了这样一种机制,它的设计目的主要在于支持IP协议传输失败情况下的不中断服务,保证了网络的高可用性。具体说,就是本协议用于在源主机无法动态地学习到首跳路由器IP地址的情况下防..
分类:
其他好文 时间:
2014-05-08 10:53:32
阅读次数:
780
Hibernate复习(五)对象的三种状态和缓存机制...
分类:
系统相关 时间:
2014-05-08 05:01:15
阅读次数:
310
面对大量的PV访问,web服务器的缓存功能不容小觑,缓存在互联网中的地位已经举足轻重。那么好的缓存机制对web服务来说已经不可获取,varnish的缓存功能有目共睹,那么我们似乎没理由不了解一下基于varnish是如何让实现缓存的。varnish的官方站点:https://www.varnish-cache.or..
分类:
Web程序 时间:
2014-05-08 03:27:52
阅读次数:
510