原创 GO chan

管道 Go語言提倡使用通信的方法代替共享內存 代碼 import "fmt" func sum(s []int, c chan int) { sum := 0 for _, v := range s { sum += v

原创 大數據工程師面試總結

總結一些比較好的博客 1.wireshark抓包圖解 TCP三次握手/四次揮手詳解 2.99%的人都理解錯了 HTTP 中 GET 與 POST 的區別 3.HTTPS那些事 用java實現HTTPS工作原理 4.HashMap和Hash

原创 Flink源碼-8-JobVertex生成JobGraph

JobGraph 通常是由DataStream生成的,然後轉換生成的JobGraph 我們可以直接JobVertex--------->JobGraph 來深入理解這個過程 JobVertex //生成一個頂點

原创 Flink源碼-10-CheckPoint實現

CheckPoint CheckPoint 是實現一次性語義的核心,接下來我們看一下如何實現 CheckpointCoordinator checkpoint協調器 單線程,固定週期去觸發checkpoint private Sc

原创 Flink源碼-9-Flink sql翻譯Job及優化

翻譯過程 參考文檔 sqlparservalidate優化器規則優化codegenSQLAST抽象語法樹表示用SqlNode邏輯樹RelNode邏輯樹RelNode物理執行計劃Flink算子 示例SQL SELECT * FRO

原创 Flink源碼-7-Scheduler

代碼示例 public class WorldCount { public static void main(String[] args) throws Exception { StreamExecut

原创 GO 反射

反射 反射的概念在Java中也存在,無非就是程序動態得到字段,字段值 下面是GO語言的實現 import ( "fmt" "reflect" ) func main() { type T struct { A int

原创 Flink源碼-11-Source實現

Source 從源碼中學習例子 Kafka實現 類結構 RMQ實現 從上面兩個實現來看,主要實現了以下接口 SourceFunction source接口 RichFunction 取到上下文的一些信息 Checkpoin

原创 Kylin build 源碼解析

前言 Kylin build過程是Kylin中的核心機制,理解build過程,有助於作業的優化,問題排查,理解Kylin的思想 示例數據 事實表+維度表 核心代碼 BatchCubingJobBuilder2 類 public

原创 Spring AOP 源碼解讀

應用場景 公共模塊抽象出來,簡單的AOP功能編織到模塊中 核心技術實現 動態代理,相關的攔截器都配置到了動態對象裏 JDK 動態代理 只能代理實現接口的類 invoke裏封裝了aop的實現 CGLIB 字節碼增強技術 可以直接代理

原创 再看AOP,Where,When ,What

AOP 剛開始學習Java的時候,對aop的概念,看不很明白,今天再來看AOP,現在能想其實和動態代理來看也差不多,都是隱式的給你加些功能 圖解 切面 aspect 直白點就是要在切點插入的東西,就是what 切點 pointcu

原创 Flink源碼-5-dispatcher,jobmanager,jobmaster關係

模式 在yarn-session模式下,共享一個dispatcher org.apache.flink.runtime.dispatcher.Dispatcher 這個類,這裏接收到客戶端傳上來的作業圖 代碼分析 //這裏就是分

原创 Flink源碼-4-task執行

執行 flink 作業的最小執行單元是task 示例 public class WorldCount { public static void main(String[] args) throws Exception {

原创 Spring boot 啓動卡住

現象 一直沒有啓動成功 排查問題 用arthas排查 直接 thread 查看線程狀態,發現wait thread 線程id(主線程的) 得到堆棧信息 發現問題代碼了 當然jstakc -l 命令也行 總結 這類卡住了的,直接把

原创 Scala implicit 隱式函數,隱式參數,隱式類

隱式函數 object TestImplicitMethod { implicit def convertInt2String(i: Int) = i.toString def main(args: Array[Stri