drakeDog吾日三省吾身

TA的文章
  • 回炉重造-并发理论基础(可见性、原子性、有序性)问题
    作为程序员应该都知道,想要写好正确的并发编程代码是一件比较困难的事,因为并发编程涉及到的底层知识非常多,诸如操作系统、编译原理等。如果对这些底层知识一知半解,想要写好并发、排查并发问题难上加难,因为并发的bug通常都会诡异的出现又诡异的消失。但要快速而又精准地解决“并发”类的疑难杂症,你就要理解这件事情的本质,追本溯源,深入分析这些 Bug 的源头在哪里。 那为什么并发编程容易出问题呢?它是怎么出问题的?今天我们就重点聊聊这些 Bug 的源头。 核心矛盾 这些年,我们的 CPU、内存、I/O 设备都在不断迭代,不断朝着更快的方向努力。但是,在这个快速发展的过程中,有一个核心矛盾一直存在,就是这...
    •  4
    •  2
    •  2020-09-29
  • 数组下标为什么从0开始
    今天面试一个高级javaer,中途插科打诨问了一个非常简单的问题,数组下标为什么从0开始? 结果这位兄台笑着说这么简单的问题,可就是答不上来,在此做个记录。 目的:数组下标从零开始主要是提高性能,减少CPU计算。 如何读取数组数据的呢? 假设我们去读取array[2]的值,我们如何读取它的值的呢? 首先数据的获取方式: 先得到一个数据的地址(array) 然后对其进行偏移(数组的下标) 如果使用指针来表示就是*(array+2),所以array[2]和*(array+2)是等价的。看成计算公式可以为:an=a0+n 那么为什么不能从一开始呢? 如果数组从1开始计算,那么获取数组的第一个元素表达...
    •  7
    •  6
    •  2019-07-29