原创 《RPC實戰與核心原理》學習筆記Day5

06 | RPC實戰:剖析gRPC源碼,動手實現一個完整的RPC 我們通過動態代理技術,屏蔽RPC調用的細節,從而讓使用者能夠面向接口編程。 什麼是gRPC? gRPC是由Google開發並且開源的一款高性能、跨語言的RPC框架,當前支持

原创 《RPC實戰與核心原理》學習筆記Day4

05 | 動態代理:面向接口編程,屏蔽RPC處理流程 RPC和動態代理有什麼關係? 當我們使用RPC時,我們一般會先找到服務提供方要接口,然後將接口依賴配置到項目中,我們在編寫業務邏輯時,當需要調用提供方接口時,我們只需要通過依賴注入的方

原创 《RPC實戰與核心原理》學習筆記Day3

04 | 網絡通信:RPC框架在網絡通信上更傾向於哪種網絡IO模型? 網絡通信在RPC調用中有什麼作用? RPC是解決進程間通信的一種方式,一次RPC調用,本質就是服務消費者與服務提供者之間的一次網絡信息交換的過程。服務調用者通過網絡IO

原创 《RPC實戰與核心原理》學習筆記Day2

02 | 協議:怎麼設計可擴展且向後兼容的協議? 我們爲什麼需要使用協議? 在網絡通信的過程中,爲了避免語義不一致的情況,我們需要在發送請求時設定一個邊界,然後再收到請求時按照設定的邊界對請求數據進行分割。這裏的邊界語義的表達,就是我們所

原创 《RPC實戰與核心原理》學習筆記Day1

開篇詞 | 別老想着怎麼用好RPC框架,你得多花時間琢磨原理 爲什麼要學習RPC? RPC是解決分佈式系統通信問題的一大利器。 RPC對網絡通信的整個過程做了完整包裝,在搭建分佈式系統時,它會使網絡通信邏輯的開發變得更加簡單,同時也會讓網

原创 Java併發編程實戰(5)- 線程生命週期

在這篇文章中,我們來聊一下線程的生命週期。 目錄概述操作系統中的線程生命週期Java中的線程生命週期Java線程狀態轉換運行狀態和阻塞狀態之間的轉換運行狀態和無時限等待狀態的切換運行狀態和有時限等待狀態的切換初始化狀態和運行狀態的切換運行狀

原创 Java併發編程實戰(3)- 互斥鎖

我們在這篇文章中主要討論如何使用互斥鎖來解決併發編程中的原子性問題。 目錄概述互斥鎖模型互斥鎖簡易模型互斥鎖改進模型Java世界中的互斥鎖synchronized中的鎖和鎖對象synchronized示例鎖與受保護的資源的關係一個鎖保護多個

原创 Java併發編程實戰(4)- 死鎖

在這篇文章中,我們主要討論一下死鎖及其解決辦法。 目錄概述死鎖案例死鎖的原因和預防破壞佔用且等待條件破壞不可搶佔條件破壞循環條件使用等待-通知機制Java中的等待-通知機制條件曾經滿足notify() vs notifyAll()wait(

原创 Java併發編程實戰(2)- Java內存模型

本文主要描述了在Java併發編程中非常重要的Java內存模型以及Happens-Before規則。 目錄概述什麼是Java內存模型Java內存模型和JVM的區別volatile關鍵字Happens-Before規則順序性規則volatile

原创 Java併發編程實戰(1)- 併發程序的bug源頭

概述 併發編程一般屬於編程進階部分的知識,它會涉及到很多底層知識,包括操作系統。 編寫正確的併發程序是一件很困難的事情,由併發導致的bug,有時很難排查或者重現,這需要我們理解併發的本質,深入分析Bug的源頭。 併發程序問題的源頭 爲了提升

原创 設計模式簡單回顧

關於學習設計模式的一些廢話 面向對象中多個對象之間的關係 設計模式之創建型模式 設計模式之結構型模式 設計模式之行爲型模式 設計模式之總結與回顧

原创 Java基礎知識回顧

Java回顧之I/O Java回顧之網絡通信 Java回顧之多線程 Java回顧之多線程同步 Java回顧之集合 Java回顧之序列化 Java回顧之反射 Java回顧之一些基礎概念 Java回顧之JDBC Java回顧之ORM框架 Jav

原创 [翻譯]Java日誌終極指南

本文由 ImportNew - Wing 翻譯自 loggly。歡迎加入翻譯小組。轉載請見文末要求。 Java日誌基礎 Java使用了一種自定義的、可擴展的方法來輸出日誌。雖然Java通過java.util.logging包提供了一套基本的

原创 [翻譯]寫給精明Java開發者的測試技巧

我們都會爲我們的代碼編寫測試,不是嗎?毫無疑問,我知道這個問題的答案可能會從 “當然,但你知道怎樣才能避免寫測試嗎?” 到 “必須的!我愛測試”都有。接下來我會給你幾個小建議,它們可以讓你編寫測試變得更容易。那會幫助你減少脆弱的測試,並保

原创 《Effective C#》讀書筆記

Effiective C# Item1 : 使用屬性代替成員變量 Effective C# Item2:運行時常量(readonly)優於編譯時常量(const) Effective C# Item3:操作符as或is優於強制轉換 Effe