[转]优化屏障和内存屏障

转自:http://blogold.chinaunix.net/u3/93713/showart_2061476.html

查看更多:点击此处

 

优化屏障和内存屏障

优化屏障

编译器编译源代码时,会将源代码进行优化,将源代码的指令进行重排序,以适合于CPU的并行执行。然而,内核同步必须避免指令重新排序,优化屏障(Optimization barrier)避免编译器的重排序优化操作,保证编译程序时在优化屏障之前的指令不会在优化屏障之后执行。

Linux用宏barrier实现优化屏障,gcc编译器的优化屏障宏定义列出如下(在include/linux/compiler-gcc.h中): 

#define barrier() __asm__ __volatile__("": : :"memory")

上述定义中,“__asm__”表示插入了汇编语言程序,“__volatile__”表示阻止编译器对该值进行优化,确保变量使用了用户定义的精确地址,而不是装有同一信息的一些别名。“memory”表示指令修改了内存单元。

Read More

[转]BigTable/HBase基本概念解读 & Hbase shell常用命令

转自:http://ptsolmyr.com/2010/12/03/bigtable_hbase/ & http://blog.csdn.net/hongbinchen/article/details/6289279

 

BigTable是Key/Value数据库的元老之一。作为Google平台的主要部件,它相对于其他的K-V store较为复杂。在BigTable论文中,是这样定义的:

A Bigtable is a sparse, distributed, persistent multidimensional sorted map.

进一步解释如下:

The map is indexed by a row key, column key, and a timestamp; each value in the map is an uninterpreted array of bytes.

Read More

用shell获取内、外网IP地址 & 关于for循环的分隔符

(1)用shell获取:

内网IP地址

ifconfig -a | grep 'inet ' | cut -d ':' -f 2 |cut -d ' ' -f 1 | grep -v '^127'
Read More

Android用户人均广告价值超iPhone 80% & 谷歌苹果RIM三足鼎立:移动广告市场面临分裂

《Android用户人均广告价值超iPhone 80%》

http://mobile.csdn.net/n/20100826/278711.html

智能手机系统的普及为手机厂商和系统开发商带来了更多的盈利方式,除了硬件销售、软件市场之外,手机广告也是一项重要的盈利来源。在线网络广告商Chitika近日统计了iPad、iPhone、Android三种系统设备的广告点击率。

通过对1365776个用户样本的分析统计得出的数据显示,iPad用户的广告点击率为1.010%,iPhone点击率为0.654%,而Android设备用户的广告价值最高,其点击率高达1.187%,比iPhone高出了80%。

Read More

(Google)Protocol Buffers概览

很老的一篇译文了,可能已经不合时宜,但是总还是有一些参考价值的:

开发向导

欢迎来到protocol buffers的开发者文档,protocol buffers是语言中立,平台中立,易于扩展的结构化数据序列化方法,它可以用在通讯协议,数据存储等方面。 这份文档的目标读者是试图在应用中使用protocol buffers的Java, C++或者Pytho开发者。这份概览告诉你如何开始-然后你可以去教程或者深入到protocol buffer编码API参考文档同样以三种语言提供,包括编写.proto文件的编程语言代码风格指导。… Read More

mysql_store_result()与mysql_use_result()的区别

函数mysql_store_result()与mysql_use_result()类似,它们都有连接处理程序参数,并返回结果集。但实际上两者间的 区别还是很大的。两个函数之间首要的区别在于从服务器上检索结果集的行。当调用时,mysql_store_result()立即检索所有的行,而 mysql_use_result()启动查询,但实际上并未获取任何行,mysql_store_result()假设随后会调用 mysql_fetch_row()检索记录。这些行检索的不同方法引起两者在其他方面的不同。本节加以比较,以便了解如何选择最适合应用程序的方法。

Read More

C++中的explicit关键字

c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有”显式”那么必然就有”隐式”,那么什么是显示而什么又是隐式的呢?

如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示:

Read More