原创 goroutine可能減慢代碼的速度(譯)

不當的使用goroutine,可能會使CPU忙於移動數據,導致減慢代碼運行速度的效果。 這裏我們假設有一個很大的循環;爲了加快計算速度,將循環分割成多份,然後分別讓不同的goroutine執行。 1、串行版本 我們的使用一個簡單的串行循環(

原创 2019紀念跑

1、簡介 歲月不居,時節如流;轉眼2018年已經過去。 2018年,我們過得很充實、走得很堅定。這一年,我們戰勝各種風險挑戰,努力改善自己的工作生活。我們經歷了公司多次戰略架構調整,目送一些老朋友離開,又迎來一些新朋友;我們努力學習着各種文

原创 2018小結

1、簡介 2018年已經結束,2018年註定是我在技術上值得紀念的一年,在這一年裏我對相關技術進行裏較爲深入的研究,不再僅限於看別人寫的文章或書籍,開始自己思考總結一些知識點,開始從GitHub上學習研究一些技術。 2、數據 簡單回顧一下2

原创 Golang Slice詳解

1、簡介 Go的 Slice(切片)類型提供了一種方便有效的方法來處理類型化數據序列。 slice類似於其他語言中的數組,但具有一些不尋常的屬性。 本文將介紹切片是什麼以及如何使用它們。 2、Slices 數組有它們的位置,但是它們有點不靈

原创 Defer, Panic, Recover

1、簡介 Go具有控制流程的常用機制:if,for,switch,goto。 它還有go語句在單獨的goroutine中運行代碼。 在這裏,我想討論一些不太常見的問題:Defer,Panic和Recover。 2、Defer Defer語句

原创 InheritableThreadLocal詳解

1、簡介 在上一篇 ThreadLocal詳解 中,我們詳細介紹了ThreadLocal原理及設計,從源碼層面上分析了ThreadLocal。但由於ThreadLocal設計之初就是爲了綁定當前線程,如果希望當前線程的ThreadLocal

原创 ThreadLocal詳解

1、簡介 ThreadLocal是什麼呢?其實ThreadLocal並非是一個線程的本地實現版本,它並不是一個Thread,而是threadlocalvariable(線程局部變量)。也許把它命名爲ThreadLocalVar更加合適。線程

原创 Mac 安裝thrift指定版本(0.9.2)

1、前言 Apache Thrift,它採用接口描述語言定義並創建服務,支持可擴展的跨語言服務開發,所包含的代碼生成引擎可以在多種語言中,如 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haske

原创 Disruptor簡介

前言 學習Disruptor前,首先要有一個清晰的認識:Disruptor類似於BlockingQueue,但會有諸多不同,最明顯的不同是BlockingQueue一個節點只能被一個消費者消費,而Disruptor一個節點可被多個消費者消費

原创 應用性能管理(APM)簡介

1、簡介 應用性能管理是指對企業的關鍵業務應用進行監測、優化,提高企業應用的可靠性和質量,保證用戶得到良好的服務,降低IT總擁有成本(TCO),爲企業帶來更多的商業利益。   應用性能管理能夠對整個企業的IT系統各個層面進行集中的性能監控,

原创 Javaassist簡介

1、簡介 Javassist (JAVA programming ASSISTant) 是在 Java 中編輯字節碼的類庫;它使 Java 程序能夠在運行時定義一個新類, 並在 JVM 加載時修改類文件。 我們常用到的動態特性主要是反射,在

原创 Aspectj與Spring AOP比較

1、簡介 今天有多個可用的 AOP 庫, 它們需要能夠回答許多問題: 是否與用戶現有的或新的應用程序兼容? 在哪裏可以實現 AOP? 與自己的應用程序集成多快? 性能開銷是多少? 在本文中, 我們將研究如何回答這些問題, 並介紹 Spri

原创 Slf4j MDC詳解

1、簡介 MDC 全拼 Mapped Diagnostic Contexts,是SLF4J類日誌系統中實現分佈式多線程日誌數據傳遞的重要工具(不同的系統有不同的實現方式,下文中會有介紹);同時,用戶也可利用MDC將一些運行時的上下文數據打印

原创 TransmittableThreadLocal詳解

1、簡介 TransmittableThreadLocal 是Alibaba開源的、用於解決 “在使用線程池等會緩存線程的組件情況下傳遞ThreadLocal” 問題的 InheritableThreadLocal 擴展。若希望 Trans