原创 從零搭建精準運營系統

2018剛過去,趁着春節放假對過去一年主導開發的項目做個梳理和總結 項目背景 平臺運營到一定階段,一定會累積大批量的用戶數據,這些用戶數據是運營人員的黃金財產。而如何利用用戶的數據來做運營(消息推送、觸達消息、優惠券發送、廣告位等),正是精

原创 修改golang源代碼實現無競爭版ThreadLocal

開篇 書接上文 修改golang源代碼獲取goroutine id實現ThreadLocal。上文實現的版本由於map是多個goroutine共享的,存在競爭,影響了性能,實現思路類似java初期的ThreadLocal,今天我們借鑑現代版

原创 修改golang源代碼獲取goroutine id實現ThreadLocal

開篇 golang在http.Request中提供了一個Context用於存儲kv對,我們可以通過這個來存儲請求相關的數據。在請求入口,我們把唯一的requstID存儲到context中,在後續需要調用的地方把值取出來打印。如果日誌是在co

原创 golang條件編譯

開篇 golang中沒有類似C語言中條件編譯的寫法,比如在C代碼中可以使用如下語法做一些條件編譯,結合宏定義來使用可以實現諸如按需編譯release和debug版本代碼的需求 #ifndef #define ... #end 但是gola

原创 golang源碼安裝時fatal error: MSpanList_Insert錯誤

原本使用的golang是1.9版本,今天想升到最新的1.11。遇到如下錯誤 failed MSpanList_Insert 0x905000 0x9b51f3c97b8 0x0 0x0 fatal error: MSpanList_Inse

原创 玩轉Elasticsearch源碼-ActionModule啓動分析

ActionModule的用途 org.elasticsearch.action.ActionModule主要維護了請求和響應相關組件,包括客戶端請求處理器(actions,restController)和過濾器(actionFilters

原创 玩轉Elasticsearch源碼-一圖看懂ES啓動流程

開篇 直接看圖 上圖中虛線表示進入具體流程,實線表示下一步,爲了後面講解方便每個步驟都加了編號。先簡單介紹下啓動流程主要涉及的類: org.elasticsearch.bootstrap.Elasticsearch: 啓動入口,main方

原创 玩轉Elasticsearch源碼-Elasticsearch構建任務簡析

作爲 玩轉Elasticsearch源碼 系列第二篇,先介紹下分析思路,本系列不會直接進入代碼執行流程,而是先從Elasticsearch源代碼的工程結構,構建任務等入手,按照先整體脈絡,後細節的方式進行。 Gradle Gradle是一

原创 玩轉Elasticsearch源碼-使用Intellij IDEA和remote debug調試源代碼

開篇 學習源碼第一步就是搭建調試環境,但是看了網上大部分Elasticsearch調試方式都是配置各種環境變量然後直接啓動Main方法,而且還各種報錯。今天提供新的方式--remote debug來避免這些麻煩。 步驟 環境 首先要安裝jd