![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java底层知识
vincentff7zg
。
展开
-
JAVA与尾递归
总结:对于递归,每次调用都会新分配一个栈,因为调用结束后可能要继续执行原来的代码,原来的栈现场必须保留。尾递归的标准:如果函数中所有的递归调用一定是该路径的最后一步,且,改递归函数返回后直接在当前函数返回,不需要再使用当前函数的数据做额外操作(即,所有用到的数据都传入了递归函数,而不是在递归函数返回后做一些运算处理)。由于尾递归要求所有递归返回值直接在外层函数返回,不需要使用外层函数的转载 2017-02-21 11:25:43 · 773 阅读 · 0 评论 -
java之CPU缓存
总结:CPU处理时是依次从L1,L2,L3,物理内存中取数据。如果该层没找到就找下一层,访问速度逐步降低。Lx中是按行进行缓存的,即缓存行,是最小访存单位,类似磁盘一个(扇区?)。所以,如果大部分相关数据都在一个缓存行(通常64字节)中,访问一次就可以获取到所有的数据。提高性能如何将相关数据都放到一个缓存行?这就需要分析缓存行是怎么存数据的:按照加载顺序,例如将相关代码都放到一个数组,转载 2017-02-21 13:40:44 · 411 阅读 · 0 评论 -
JAVA之伪共享
总结:当多个CPU时,访问同一段代码并缓存时,可能在每个CPU的本地缓存都维护该代码数据的缓存行,之间需要进行同步。尤其是,CPU1修改了包含数据X的缓存行R1后,需要告诉同样包含X的CPU2的缓存行R2需要更新,使用RFO消息通信,相当于多CPU通过总线同步了,影响效率!为了避免这种情况,尽量让不同CPU同一时间访问的资源在代码数据中能被划分为不同的缓存行,避免属于同一个缓存行导致R转载 2017-02-21 13:46:08 · 274 阅读 · 0 评论 -
java之NIO select基本设计思路梳理
总结:多路复用概念:允许一个线程阻塞等待多个fd文件描述符的集合,只要任意一个有数据就返回。举个例子,大楼有许多门,保安晚上为了防止窃贼,最简单的方法就是一直巡视每个门看是否被打开了。但保安想偷懒睡觉,于是就用一条有铃铛的绳子绑在所有的门把手上,只要任何一个门打开了,铃铛就会想,保安就会知道某个门被打开了。操作系统对多路复用的支持:多路复用是OS的IO中一个比较重要的概念,在windo原创 2017-03-03 15:06:30 · 2776 阅读 · 1 评论 -
JAVA NIO : Buffer ,Channel, Selector,Pipe
原始文章源自:http://ifeve.com/server-socket-channel/该转载文章做了整合,该文直接转载于此:http://blog.csdn.net/kiss_the_sun/article/details/49930491概述标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是转载 2017-03-03 15:12:46 · 361 阅读 · 0 评论