摘要:
测试测试测试 阅读全文
摘要:
以下文字只是时序图的解释说明,重点是看懂时序图。为了避免主节点/从节点和zk的节点概念看着乱,以下就用Master/Slave称呼了。1 选Master系统启动后,所有slave都会尝试在zk树上创建/master节点,创建成功的节点成为Master角色。然而Master可能会崩溃,... 阅读全文
摘要:
提出一个智商欠费的问题Tuple在Python中表示一种“大小固定的有序序列”。这是一条普世真理,毋庸置疑。为什么这个数据结构叫Tuple,而不是其他任何一个名字呢?我停下了在键盘上舞蹈的手指,被大脑抛出的这个疑问打蒙了。是啊,为什么呢?这好比在问,为什么这个模样的东西叫狗呢?Tup... 阅读全文
摘要:
给“线程安全”下定义是件非常棘手的事儿。随便Google一下,就能得到成千上万像这样的定义: 1.“线程安全”的代码是指在多线程同时执行的情况下,依然能正常工作的代码。 2.一段代码,如果在多线程同时执行的情况下,能以一种安全的方式操作共享数据结构,它就是线程安全的。 还有很多类似的... 阅读全文
摘要:
配图:曲径通幽 讲真,如果不是被面试官吊打,join()方法也还不会引起我的重视。因为,工作中确实没有使用过它。 现在,对它来个刨根问底。 join()方法的作用 在写这篇文章之前,我对join的理解只停留在字面意思“把指定线程加入到当前线程”。 再来看官方怎么解释的: //W... 阅读全文
摘要:
去BAT这类大公司面试,“求算法的时间复杂度”是一个必备的技能。通过计算算法的时间复杂度可以很好的反应出你对这个算法的理解程度。“时间复杂度”(time complexity)怎么求?就要用到“大O分析法”(Big-O Analysis)了。 毫不夸张的说,如果你还不懂“大O分析法”... 阅读全文
摘要:
图片:雨中等待在讨论数据库索引的时候,经常会提到“选择性”(selectivity)这个概念。“选择性”是描述列值数据分布情况的一个重要属性。“选择性”和“基数”(cardinality)是两个密不可分的概念。“基数”就是一列中唯一值的数量,对于有唯一约束的列,“基数”等于表的总行数... 阅读全文
摘要:
首先通过一个非常简单的例子来解释为什么你需要数据库索引。 假设我们有一张数据表Emplyee,该表有三列: Employee_Name,Employee_Age,Employee_Address 表中有几万条记录。现在,我们要执行下面这条查询语句,查找出所有名字叫“Jesus”的员工... 阅读全文
摘要:
全表扫描(Full Table Scan)就是数据库为了检索到我们查找的数据而逐行的去扫描表中的所有记录。很明显,全表扫描是一种非常慢的SQL查询。想象一下,对一张百万级的表进行全表扫描性能有多差!使用索引可以有效避免全表扫描。 让我们看一些会造成进行全表扫描的情况: 统计信息还没有... 阅读全文
摘要:
HDFS会把非常大的文件分割成多个大的数据块(例如,128M),并且每一个数据块在集群的不同节点上存储3个备份。HDFS并不知道也不关心这些文件的内容。在yarn上,当一个Mapreduce任务开始时,Resource Manager(负责集群的资源管理和任务调度)会创建一个Appl... 阅读全文