原创 dubbo版的"明朝那些事兒"

 戳藍字「TopCoder」關注我們哦!編者注:《明朝那些事兒》主要講述了明朝近300年曆史,按照時間軸爲主線進行講解,本文也按照時間軸爲主線,講述下dubbo版的"明朝那些事" -- dubbo的發展歷程。Apache Dubbo™

原创 Dubbo RPC在consumer端是如何跑起來的

 戳藍字「TopCoder」關注我們哦!Dubbo作爲一款高性能Java RPC框架,RPC是其最重要的流程之一。Dubbo RPC涉及到consumer端和provider端的流程,本文主要分析consumer端的RPC流程實現,包括

原创 責任鏈的2種實現方式,你更pick哪一種

 戳藍字「TopCoder」關注我們哦!編者注:責任鏈模式是日常開發或者框架中經常被使用的一種設計模式,典型的責任鏈有2種實現方式,不知道各位小夥伴更pick哪一種呢?下面就一起來比較下這2種實現方式吧~1 責任鏈是什麼責任鏈是屬於行爲

原创 ToString數據如何反序列化

 戳藍字「TopCoder」關注我們哦!不知道小夥伴們有沒有這樣的困擾,平常開發中寫單測,要mock一個複雜的對象,並且也知道了該對象的toString格式數據(比如從日誌中獲取),但是該怎麼構建這個對象呢?如果是json格式可以直接通

原创 Linux Namespace淺析

 戳藍字「TopCoder」關注我們哦!編者注:Namespace是將內核的全局資源做封裝,使得每個Namespace都有一份獨立的資源,因此不同的進程在各自的Namespace內對同一種資源的使用不會互相干擾。目前Linux內核總共支

原创 kubernetes基礎概念知多少

 戳藍字「TopCoder」關注我們哦!kubernetes(簡稱k8s)是一種用於在一組主機上運行和協同容器化應用程序的管理平臺,皆在提供高可用、高擴展性和可預測性的方式來管理容器應用的生命週期。通過k8s,用戶可以定義程序運行方式、

原创 java lambda 深入淺出

戳藍字「TopCoder」關注我們哦!JDK8中包含了許多內建的Java中常用到函數接口,比如Comparator或者Runnable接口,這些接口都增加了@FunctionalInterface註解以便能用在lambda上。namet

原创 一起聊聊3個線程依次打印1、2、3...的故事

 戳藍字「TopCoder」關注我們哦!3個線程依次打印1、2、3…這個問題,常常被作爲面試題,題目如下:三個線程,一個線程負責打印1,4,7,……;第二個負責打印2,5,8,……,第三個負責打印3,6,9,……,要求在控制檯中按順序輸

原创 操作系統中的頁式內存管理

 戳藍字「TopCoder」關注我們哦!編者注:操作系統中兩個重要的概念是CPU和內存,CPU管理相對來說比較"直男"一點,只顧着執行指令,最多忙到100%或者超頻執行;但對於內存來說,它是資源有限的,如果進程佔用內存較大甚至大於物理內

原创 網絡數據是如何傳遞給進程的

 戳藍字「TopCoder」關注我們哦!在分析網卡數據是如何傳遞給進程的流程之前,要知道數據是如何從進程寫到網卡的,因爲只有發起方寫數據到網卡然後接收方纔能接收到並處理。發送數據發送方的發送數據的處理流程大致爲:用戶空間 -> 內核 -

原创 Linux管道那些事兒

 戳藍字「TopCoder」關注我們哦!管道是最早出現的進程間通信的手段,在shell中執行命令,經常會將上一個命令的輸出作爲下一個命令的輸入,由多個命令配合完成一件事情。管道的作用是在有親緣關係的進程之間傳遞消息,因爲共同主先進程調用

原创 從socket api看網絡通信流程

 戳藍字「TopCoder」關注我們哦!說了網絡通信,大家肯定都不會陌生,比如各種分佈式系統、大數據框架等等都要涉及到網絡通信,由於大多數通信都是基於TCP協議來的,因此本文就以TCP爲例,結合socket api來分析Linux下的網

原创 談一談TCP的4次揮手

 戳藍字「TopCoder」關注我們哦!TCP是全雙工傳輸協議,也就是說雙方都可進行讀寫操作,當一方不需要寫數據時,會通過發送FIN報文告知對方,我要關閉連接了,對方接受到並返回ACK報文,這就表示一方的連接已經關閉,此時另一方的連接還

原创 深入理解TCP 3次握手

 戳藍字「TopCoder」關注我們哦!說起TCP的三次握手,大多數小夥伴多少都聽說過一些,因此本文不再贅述三次握手的詳細流程,而是重點關注三次握手中半連接隊列和全連接隊列流程,以及二者隊列滿了時的處理機制,最後分析下常見的三次握手的問

原创 操作系統頁面更換與Redis內存淘汰

 戳藍字「TopCoder」關注我們哦!操作系統爲什麼需要頁面更換呢,因爲物理內存不夠,不可能同時加載所需的所有數據頁,因此只能加載正在或最近要使用的內存頁。頁面更換的目標是,儘量替換掉不再使用或者一段時間內不再使用的內存頁,要不然會很