摘要: 在分析DataNode时, 因为DataNode上保存的是数据块, 因此DataNode主要是对数据块进行操作. DataNode的主要工作流程 客户端和DataNode的通信: 客户端向DataNode的数据块读写, 采用TCP/IP流接口(DataXceiver)进行数据传输 客户端在检测到Da 阅读全文
posted @ 2020-08-23 21:33 水木青楓 阅读(1021) 评论(0) 推荐(0)
摘要: 在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。 乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。 无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种 阅读全文
posted @ 2020-08-23 21:20 水木青楓 阅读(469) 评论(0) 推荐(0)
摘要: 脏读:事务A提交后又发生了回滚,事务B读取了事务A提交后的数据,但是由于发生回滚,读取的数据是无效的。 幻读:事务A对全表数据进行了更改操作,事务B对表添加了一行数据,导致事务A的全表操作没有包含B新提交的一行数据。 不可重复读:事务A读了一条数据,要处理某个逻辑,此时事务B把数据该了,事务A再次读取时,发现数据有变化,导致前后两次读取到的数据不一样。 阅读全文
posted @ 2020-08-23 16:53 水木青楓 阅读(614) 评论(0) 推荐(0)
摘要: 使用 concat_ws 实现行转列,使用 lateral view explode 实现列转行。 阅读全文
posted @ 2020-08-23 16:44 水木青楓 阅读(228) 评论(0) 推荐(0)
摘要: yield 在很多高级语言都有,比如:python、scala、JavaScript、Ruby等。 我们实际工作时,很少会用到yield,但是也架不住求职面试的时候,面试官可能会问呀。 yield 在英语里面的解释是: 出产(作物); 产生(收益、效益等); 提供; 屈服; 让步; 放弃; 缴出; 阅读全文
posted @ 2020-08-22 01:55 水木青楓 阅读(254) 评论(0) 推荐(0)
摘要: 线程的5个状态: 1、创建状态 当调用 start() 方法,线程立即进入就绪状态,但不意味着立即调度执行。 2、就绪状态 3、 运行状态 进入运行状态,线程才真正执行线程体的代码块 4、阻塞状态 当调用 sleep, wait 或同步锁定时,线程进入阻塞状态,就是代码不往下执行,阻塞事件解除后,重 阅读全文
posted @ 2020-08-22 01:41 水木青楓 阅读(105) 评论(0) 推荐(0)
摘要: Java 的 Lambda 表达式推演过程: 第一步:正常的类实现(外部实现),new一个对象,然后重写方法实现 public class TestLambda3 { public static void main(String[] args) { Human human = new Man(); 阅读全文
posted @ 2020-08-22 01:25 水木青楓 阅读(220) 评论(0) 推荐(0)
摘要: IDEA 的代码补全/自动联想功能,可以仅仅输入几个字母,自动补全一整段代码,非常舒服。 代码自动联想功能在 设置 → Editor → Live Templates 查看,很多都非常实用,也可以自己编辑。 例如:maven 下配置repository,只需要敲 repo ,就可以自动补全下面这一整 阅读全文
posted @ 2020-08-21 20:17 水木青楓 阅读(5649) 评论(0) 推荐(0)
摘要: 在IDEA运行一个程序时报错: Class JavaLaunchHelper is implemented in both 这个错误是Mac下Java 的一个bug,意思是这个JavaLaunchHelper类被实现了两次。 在 别人的博客找到了解决方案,但是bug 是自己的,记录一下。 最初方案来 阅读全文
posted @ 2020-08-21 15:53 水木青楓 阅读(2267) 评论(0) 推荐(0)
摘要: 函数柯里化(currying)又称部分求值,好处是:1、参数复用,2、提前返回,3、 延迟计算/运行。 阅读全文
posted @ 2020-08-21 14:24 水木青楓 阅读(932) 评论(0) 推荐(0)