尾调用是指在函数return时直接将被调函数的返回值作为调用函数的返回值返回,尾调用在很多语言中都可以被编译器优化, 基本都是直接复用旧的执行栈, 不用再创建新的栈帧, 原理上其实也很简单, 因为尾调用在本质上看的话,是整个子过程调用的最后执行语句, 所以之前的栈帧的内容已经不再需要, 完全可以被复 ...
分类:
其他好文 时间:
2017-09-04 22:45:41
阅读次数:
214
常用的同步原语锁,到多核处理器时代锁已经是必不可少的同步方式之一了。无论设计多优秀的多线程数据结构,都避不开有竞争的临界区,此时高效的锁显得至关重要。锁的颗粒度是框架/程序设计者所关注的,当然越细越好(也不尽然),同时不同的锁往往也会体现出完全不同的效率,Linux有posix的pthread_mu ...
分类:
其他好文 时间:
2017-08-20 15:45:28
阅读次数:
541
返回值优化(Return Value Optimization,简称RVO)是一种编译器优化机制:当函数需要返回一个对象的时候,如果自己创建一个临时对象用于返回,那么这个临时对象会消耗一个构造函数(Constructor)的调用、一个复制构造函数的调用(Copy Constructor)以及一个析构 ...
分类:
编程语言 时间:
2017-08-08 20:45:32
阅读次数:
291
HQL的执行过程: 解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划(Plan)的生成。生成的查询计划存储在HDFS中,并随后有MapReduce调用执行。 HQL Select-->发送到解析器进行词法分析 -->错误则反映 否则发送到编译器 生成HQL的执行计 ...
分类:
Web程序 时间:
2017-08-07 01:34:37
阅读次数:
263
java语言的“编译期”其实是一段“不确定”的操作过程,可能是指一个前端编译器把.java变成.class的过程,也可能是指虚拟机的后端运行期编译器(JLT)把字节码转变成机器码的过程,也有可能是使用静态提前编译器(AOT)直接把.java文件直接编译成本地机器代码的过程。现在讨论的是第一种编译器。 ...
分类:
编程语言 时间:
2017-08-03 13:44:55
阅读次数:
193
>>>与>>是位运算符,只对整型有效(不能用于浮点型)。当是整型的时候(low+high)>>1可以代替(low+high)/2。>>>是无符号右移运算符。如果 low+high是正整数,这三种运算是等价的。 由于有编译器优化,他们的效率应该是相同的(如果不存在编译器优化,移位运算更快)。用>>>一 ...
分类:
编程语言 时间:
2017-07-14 14:50:43
阅读次数:
259
sample变量段分析 1.各段地址区间Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .interp PROGBITS 000 ...
分类:
其他好文 时间:
2017-07-08 14:39:27
阅读次数:
131
使用ViewStub动态载入布局。避免一些不常常的视图长期握住引用: ViewStub的一些特点: 1. ViewStub仅仅能Inflate一次,之后ViewStub对象被置空:某个被ViewStub指定的布局被Inflate后,就不会够再通过ViewStub来控制它了。 2. ViewStub仅 ...
分类:
移动开发 时间:
2017-07-08 13:30:28
阅读次数:
353
英文版PDF下载地址http://download.csdn.net/detail/tsingheng/7480427 字符串是一组字符的有序序列,比方“hello,china”或者“albatross”。Swfit里字符串用String表示,String也是字符类型Charactar的集合类型。S ...
分类:
编程语言 时间:
2017-07-05 21:14:03
阅读次数:
290
在开发中,我们常常会有有这种需求,就是在某段代码处開始,一步一步往下跟踪调试,有人说加个while(1)循环,事实上这个循环增加后,其后边的代码就会被优化掉,达不到我们的目的,更好的办法是在须要的地方插入一句汇编: asm volatile ("B .");这样,不仅其后边的代码不会被编译器优化掉。 ...
分类:
其他好文 时间:
2017-05-19 22:30:01
阅读次数:
184