摘要:
brew tap-new $USER/local-tapbrew extract --version='0.11.0' thrift $USER/local-tapbrew install thrift@0.11.0 brew list thrift@0.11 查看安装路径 brew info th 阅读全文
摘要:
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一 种新的 Hadoop 资源管理器,它是一个通用资源管理系统和调度平台,可为上层应用提供统 一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨 阅读全文
摘要:
一般手动定位步骤: 工具链的成熟与否不仅体现了一个开发者的运维能力,也体现了开发者的效率意识。 淘宝的oldratlee 同学就将上面的流程封装为了一个工具: show-busy-java-threads.sh https://github.com/oldratlee/useful-scripts 阅读全文
摘要:
紧接上篇文章Apache Calcite 处理流程详解(一),这里是 Calcite 系列文章的第二篇,后面还会有文章讲述 Calcite 的实践(包括:如何开发用于 SQL 优化的 Rule)。本篇文章主要介绍 Apache Calcite 优化器部分的内容,会先简单介绍一下 RBO 和 CBO 阅读全文
摘要:
关于 Apache Calcite 的简单介绍可以参考 Apache Calcite:Hadoop 中新型大数据查询引擎 这篇文章,Calcite 一开始设计的目标就是 one size fits all,它希望能为不同计算存储引擎提供统一的 SQL 查询引擎,当然 Calcite 并不仅仅是一个简 阅读全文
摘要:
死锁发生的必要条件: 1、互斥条件 2、请求和保持条件 3、资源不剥夺条件 4、环路等待条件 多线程的最佳并发实践; 1、 使用本地变量 2、使用不可变类 3、最小化锁的作用域范围 : S = 1/(1-a+a/n) (阿木达尔定律) 其中,a为串行计算部分所占比例,n为并行处理结点个数。这样,当a 阅读全文
摘要:
java中锁主要分为两类: 1、 synchronized 关键字修饰的锁 2、 在同步容器JUC中 ReentrantLock(可重入性) 关键字修饰的锁 ReenTrantLock 和 synchronized 的区别: 1、可重入性 ,两者都是一样的,当有线程进入锁,计数器就加1,当计数器为0 阅读全文
摘要:
new Thread 弊端: 1、每次new Thread 新建对象,性能差 2、线程缺乏统一管理,可能无限制的新建线程,相互竞争,可能占用过多的系统资源导致死机或者OOM 3、缺少更多的功能,如更多执行、线程中断等 线程池--ThreadPoolExecutor corePoolSize: 核心线 阅读全文
摘要:
CountDownLatch 实例代码: semaphore : 控制并发访问的线程个数 通过提供同步机制,来控制当前访问的线程个数 tryacquire: 尝试获取可用资源,如果获取不到就丢弃 cyclicBarrier: 使用场景和countDownLatch的使用场景很类似,但是可以循环的使用 阅读全文
摘要:
并发 : 同时拥有两个或多个线程,如果程序在单核处理器上运行,多个线程交替的换入或者换出内存,这些线程是同时存在的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器核上,因此可以同时运行。 为什么需要cpu cache: cpu 的频率太快,快到 阅读全文