摘要:
HQL编译成MapReduce任务是由Hive中Compiler组件完成的,主要分成了六个阶段: **1. Antrl词法分析、语法分析:**Antrl中定义了SQL的语法规则,完成SQL的词法、语法分析,将SQL语言转换为AST。 2. 语义分析:获得抽象语法树(即AST)之后,遍历AST,抽象出 阅读全文
摘要:
sychronized是java多线程非常关键的一个知识点,这篇博客将从synchronized几个用法以及代码来学习。 sychronized的作用是能够保证同一时间只有一个线程来运行这块代码,达到并发效果,如果没有保证并发的话,在多线程编码中就会产生致命问题,比如经典的i++,这也是数据库并发中 阅读全文
摘要:
MapReduce Shuffle源码解读 相信很多小伙伴都背过shuffle的八股文,但一直不是很理解shuffle的过程,这次我通过源码来解读下shuffle过程,加深对shuffle的理解,但是我自己还是个菜鸟,这篇博客也是参考了很多资料,如果有不对的地方,请指正。 shuffle是Map T 阅读全文
摘要:
之前写的GC文章太少而且逻辑也不够清晰,这次阅读了《Java性能优化权威指南》以及京东等大厂的技术文章也算对GC有了更清楚的认知,回顾之前写的内容,也觉察自己实在是不用功,文笔也很差,不过我想这也是写博客的好处之一吧,记录下当时虽然没有多少技术但依旧快乐地写下自己的见解。 参考了很多资料,写这篇博客 阅读全文
摘要:
Mysql的日志系统是保证数据库数据一致性的重要手段,通常包括了binlog,redolog,undolog三种,binlog属于Server层的,也就与底层存储引擎无关,而后两种则属于Innodb存储引擎,目前innodb还是主流存储引擎,因此把这三种统称为日志系统 既然不同架构上工作不同的日志, 阅读全文
摘要:
谈到MYSQL事务,必然绕不过INNODB的MVCC机制,也是面试中常考常问的问题之一,不过网络上关于MVCC的文章或者公开课零零散散讲了很乱,听得我迷迷糊糊的,这里对我对这些资料进行一次总结,加深我的印象,也希望对看到的人有所帮助(不要浪费你们的时间就好了hhh) MVCC,中文名字是多版本并发控 阅读全文
摘要:
这三个单词算是多线程面试常见的问题了,也是很多小白不太懂的问题,这里给出我的理解来。 一.CAS J.U.C 并发包中的很多类都涉及到了 CAS,可以说没有 CAS 和 volatile 就没有 J.U.C 并发包,可见CAS是多么的重要。 ##1、什么是CAS CAS其实并不是一种工具或者被很多人 阅读全文
摘要:
HDFS最重要的就是写流程了,学校老师教的时候也是重点介绍这个过程(虽然我并没有在任何面试中被问到过)。下面从画图和文字两个过程介绍写流程,这次读了源代码之后对整个过程更加清晰了。 一、图解 二、文字解说 HDFS客户端会先给NameNode发送请求上传文件a,代码层面上就是使用create方法,参 阅读全文
摘要:
一、什么是线程池,为什么需要线程池 池化思想在计算机领域并不少见,在SQL连接,TCP链接中也常常见到,本质思想都是一样的,就是资源复用,线程池也差不多就是这个道理,它将多个线程资源先存储在一个池子中,,当有新的任务出现时可以避免创建/销毁线程所带来的性能开销,只要复用池子中的线程来执行对应的任务即 阅读全文
摘要:
JMM知识点总结 一、什么是JMM? 不知道大家在学习的过程有没有思考过这两个问题 为什么说java是跨平台语言 导致并发问题的原因是什么 第一个问题,我是这么理解的,代码运行本质上是将我们写的语言转换为操作系统可运行的指令集,而不同的操作系统可能有不同的cpu,对应了不同的指令集,比如window 阅读全文