原创 《UNIX 傳奇:歷史與回憶》讀後感

《UNIX 傳奇:歷史與回憶》 是 bwk(Brian W. Kernighan)2019 年的新作,回憶了 UNIX 在大半個世紀的風雨歷程,是一本引人入勝的書籍。通過對 UNIX 操作系統的歷史和發展進行詳細的敘述和回顧,讓我對這個操作

原创 Go 併發模型—Goroutines

前言 Goroutines 是 Go 語言主要的併發原語。它看起來非常像線程,但是相比於線程它的創建和管理成本很低。Go 在運行時將 goroutine 有效地調度到真實的線程上,以避免浪費資源,因此您可以輕鬆地創建大量的 goroutin

原创 InnoDB 是如何解決幻讀的

前言 大部分人在日常的業務開發中,其實很少去關注數據庫的事務相關問題,基本上都是 CURD 一把梭。正好最近在看 MySQL 的相關基礎知識,其中對於幻讀問題之前一直沒有理解深刻,今天就來聊聊「InnoDB 是如何解決幻讀的」,話不多說,下

原创 抓包分析 TCP 握手和揮手

前言 首先需要明確的是 TCP 是一個可靠傳輸協議,它的所有特點最終都是爲了這個可靠傳輸服務。在網上看到過很多文章講 TCP 連接的三次握手和斷開連接的四次揮手,但是都太過於理論,看完感覺總是似懂非懂。反覆思考過後,覺得我自己還是偏工程型的

原创 Spring 中 @EnableXXX 註解的套路

前言 在 Spring 框架中有很多實用的功能,不需要寫大量的配置代碼,只需添加幾個註解即可開啓。 其中一個重要原因是那些 @EnableXXX 註解,它可以讓你通過在配置類加上簡單的註解來快速地開啓諸如事務管理(@EnableTransa

原创 聊聊二維碼

一維碼(條形碼) 在介紹二維碼之前,先來看看它的“大哥”一維碼,一維碼也叫條形碼(好像在日常生活中都是叫這個),它是由不同寬度的黑條和白條按照一定的順序排列組成的平行線圖案,它的寬度記錄着數據信息,長度沒有記錄信息,條形碼常用於標出物品的生

原创 對象轉換工具 MapStruct 介紹

前言 在我們日常開發的分層結構的應用程序中,爲了各層之間互相解耦,一般都會定義不同的對象用來在不同層之間傳遞數據,因此,就有了各種 XXXDTO、XXXVO、XXXBO 等基於數據庫對象派生出來的對象,當在不同層之間傳輸數據時,不可避免地經

原创 Java 異步編程的幾種方式

前言 異步編程是讓程序併發運行的一種手段。它允許多個事情同時發生,當程序調用需要長時間運行的方法時,它不會阻塞當前的執行流程,程序可以繼續運行,當方法執行完成時通知給主線程根據需要獲取其執行結果或者失敗異常的原因。 使用異步編程可以大大提高

原创 Java 併發之 Fork/Join 框架

什麼是 Fork/Join 框架 Fork/Join 框架是一種在 JDk 7 引入的線程池,用於並行執行把一個大任務拆成多個小任務並行執行,最終彙總每個小任務結果得到大任務結果的特殊任務。通過其命名也很容易看出框架主要分爲 Fork 和

原创 Spring 的循環依賴問題

什麼是循環依賴 什麼是循環依賴呢?可以把它拆分成循環和依賴兩個部分來看,循環是指計算機領域中的循環,執行流程形成閉合迴路;依賴就是完成這個動作的前提準備條件,和我們平常說的依賴大體上含義一致。放到 Spring 中來看就一個或多個 Bean

原创 Spring Cloud 整合 Feign 的原理

前言 在 上篇 介紹了 Feign 的核心實現原理,在文末也提到了會再介紹其和 Spring Cloud 的整合原理,Spring 具有很強的擴展性,會把一些常用的解決方案通過 starter 的方式開放給開發者使用,在引入官方提供的 st

原创 聊聊 Feign 的實現原理

What is Feign? Feign 是⼀個 HTTP 請求的輕量級客戶端框架。通過 接口 + 註解的方式發起 HTTP 請求調用,面向接口編程,而不是像 Java 中通過封裝 HTTP 請求報文的方式直接調用。服務消費方拿到服務提供方

原创 信息爆炸時代,如何獲取優質信息?

前言 我們現在所處的信息爆炸時代,如何強調快速獲取信息都不爲過,信息多種多樣,有些能找到源頭,有些則不能,有些能找到規律,有些則不一定能找到,信息的源頭和獲取渠道很重要。然而事實上,能夠真正有效獲取到優質信息並加以消化利用的人並不多。 在信

原创 如何實現一個簡易版的 Spring - 如何實現 AOP(終結篇)

前言 在 上篇 實現了 判斷一個類的方式是符合配置的 pointcut 表達式、根據一個 Bean 的名稱和方法名,獲取 Method 對象、實現了 BeforeAdvice、AfterReturningAdvice 以及 AfterThr

原创 一文帶你深入瞭解 Java 字節碼

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"1.1 什麼是字節碼