定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带 ...
分类:
其他好文 时间:
2017-01-16 22:46:41
阅读次数:
213
一,Qt多线程类学习 QThread类,开始一个新的线程就是开始执行重新实现QThread::run(),run()是默认现实调用exec(),QThread::start()开始线程的执行,run()函数是在start()函数调用之后开始执行 QMutex类,互斥量/互斥锁,加锁解锁,原子操作 Q ...
分类:
编程语言 时间:
2017-01-07 15:17:41
阅读次数:
454
一.引言 说明几个I/O函数:open、read、write、lseek和close,这些函数都是不带缓冲(不带缓冲,只调用内核的一个系统调用),这些函数不输入ISO C,是POSIX的一部分; 多进程共享资源(包括文件)时,会有很多额外的烦恼,需要对共享资源、原子操作等概念深入理解,需要理解涉及的 ...
分类:
其他好文 时间:
2017-01-06 15:34:52
阅读次数:
327
目标:实现同一时刻只能有一个进程使用同一个设备,例如:只能有一个进程,在同一时刻里使用/dev/buttons这个设备。 使用linux互斥机制实现同一时刻只能有一个进程使用某个设备。 linux互斥机制有原子变量、互斥锁、信号量、自旋锁、读写锁等等 一、原子操作: 原子操作指的是在执行过程中不会被 ...
分类:
其他好文 时间:
2017-01-06 13:03:44
阅读次数:
188
Java中的原子操作包括:1)除long和double之外的基本类型的赋值操作2)所有引用reference的赋值操作3)java.concurrent.Atomic.* 包中所有类的一切操作count++不是原子操作,是3个原子操作组合1.读取主存中的count值,赋值给一个局部成员变量tmp2. ...
分类:
编程语言 时间:
2017-01-04 19:07:55
阅读次数:
251
1. vilatile,锁和原子操作 这三个是理解java并发的基础。 简单来说,vilatile修饰的变量,可以保证对其的改变所有线程可见,这个机制实际上也是依赖原子操作的; 锁,主要分为偏向锁,轻量级锁和重量级锁;资源消耗也是越来越大的。使用java的synchronized的关键字或者新的锁用 ...
分类:
编程语言 时间:
2016-12-30 15:31:03
阅读次数:
211
@font-face { font-family: "Arial"; }@font-face { font-family: "Courier New"; }@font-face { font-family: "Times"; }@font-face { font-family: "Geneva"; ...
分类:
其他好文 时间:
2016-12-27 09:33:39
阅读次数:
447
更新 Update更新操作允许ES获得某个指定的文档,可以通过脚本等操作对该文档进行更新。可以把它看成是先删除再索引的原子操作,只是省略了返回的过程,这样即节省了来回传输的网络流量,也避免了中间时间造成的文档修改冲突。 下面就是更新的例子: 脚本更新 Es支持通过脚本更改文档的信息: 上面就是通过参 ...
分类:
其他好文 时间:
2016-12-17 19:23:01
阅读次数:
684
我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。 这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关 ...
分类:
编程语言 时间:
2016-12-13 16:20:49
阅读次数:
143
今天看到文章讨论 i++ 是不是原子操作。 答案是不是! 参考:http://blog.csdn.net/yeyuangen/article/details/19612795 1.i++ 不是,分为三个阶段: 内存到寄存器寄存器自增写回内存这三个阶段中间都可以被中断分离开. 2.++i首先要看编译器 ...
分类:
其他好文 时间:
2016-12-07 20:49:45
阅读次数:
240