原创 【轉】值得一用的 IO 神器 Okio

IO 神器 Okio 官方 是這麼介紹 Okio 的: Okio is a library that complements java.io and java.nio to make it much easier to access, s

原创 編譯器、鏈接器和解釋器

編譯器 編譯器的作用就是將高級編程語言翻譯爲機器代碼。 編譯器工作過程一般分爲: 詞法分析:將高級語言解析成 Token 集合; 語法分析:將 Token 集合構建成語法樹,在這個過程可以判斷出語法是否有誤,比如 while 後面是否 {

原创 不依賴 Spring 的簡單 Main 工程

1. 搭建一個沒有 spring 的工程 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { kotlin("jvm") version "1.8.1

原创 spring-redis 自帶分佈式鎖實現

前言 以前還傻傻的自己寫分佈式鎖實現:基於緩存或 zookeeper 的分佈式鎖實現。果然,你能想到的輪子,99% 都已經有人造好了,並且,比你自己造的好的多。 RedisLockRegistry 依賴 implementati

原创 將 3rd 方 JAR 部署到遠程 Maven 庫

1. 安裝 Maven 下載地址 2. settings.xml 配置 <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SET

原创 SSL 證書基本概念掃盲

keytool VS openssl keytool 和 openssl 是倆個證書管理工具。 keytool 是 java JDK 自帶的證書管理工具,使用 keytool 可以生成密鑰,創建證書。只要裝了 jdk,並正確設置了環境變量,

原创 【轉】網絡加速原理與方法:靜態CDN、動態CDN、全站加速、GAAP、AIA、CLB跨地域部署

一、概念辨析:網絡延遲與網絡波動 (1) 網絡延遲 網絡延遲是指各式各樣的數據在網絡介質中通過網絡協議(如TCP/IP)進行傳輸,如果信息量過大不加以限制,超額的網絡流量就會導致設備反應緩慢,造成網絡延遲。受限於光速,網絡延遲總是有一個下限

原创 小米開放平臺逆向工程

前言 最近在調研 小米開放平臺 API 的能力,發現能力支持的實在有點少,沒辦法只能另闢蹊徑去逆向 Consule UI 的能力。 逆向工程最重要解決的就是“認證”。有沒有辦法自動登錄鑑權,或者使用一個長久可靠、可續期的 token,直接決

原创 對象緩存服務的思考和實現

寫在前面 目前在很多業務中,存儲都大量的依賴了雲存儲,比如阿里雲的 oss、華爲雲的 obs 等。但是如果有大量的上傳/下載任務,雲存儲上的網絡 I/0 就變成了一個很大的瓶頸。 於是我們打算在內網實現一個對象緩存服務,具體表現爲:託管內網

原创 【轉】高併發下秒殺商品,你必須知道的9個細節

0.前言 高併發下如何設計秒殺系統?這是一個高頻面試題。這個問題看似簡單,但是裏面的水很深,它考查的是高併發場景下,從前端到後端多方面的知識。 秒殺一般出現在商城的促銷活動中,指定了一定數量(比如:10個)的商品(比如:手機),以極低的價格

原创 《拉鉤課程 - 重學操作系統 - Linux 指令入門》

1、進程是什麼?進程是應用的執行副本。應用的可執行文件是放在文件系統裏,把可執行文件啓動,就會在操作系統裏(具體來說是內存中)形成一個應用的副本,這個副本就是進程。 2、Linux 管道(Pipeline)的作用是在命令和命令之間,傳遞數據

原创 【轉】 一條 SQL 的執行過程詳解

MySQL 體系架構 - 連接池組件 1、負責與客戶端的通信,是半雙工模式,這就意味着某一固定時刻只能由客戶端向服務器請求或者服務器向客戶端發送數據,而不能同時進行。 2、驗證用戶名和密碼是否正確(數據庫 MySQL 的 user 表中進

原创 【轉】我是一個CPU:這個世界慢!死!了!

簡介 經常聽到有人說磁盤很慢、網絡很卡,這都是站在人類的感知維度去表述的,比如拷貝一個文件到硬盤需要幾分鐘到幾十分鐘,夠我去喫個飯啦;而從網絡下載一部電影,有時候需要幾個小時,我都可以睡一覺了。 最爲我們熟知的關於計算機不同組件速度差異的圖

原创 《拉鉤課程 - 重學操作系統 - 計算機組成原理》

1、芯片是怎麼工作的呢?電能供給給芯片,芯片中的一種電子元件晶振(也就是石英晶體)通電後產生震盪,震盪會產生頻率穩定的脈衝信號。通常這是一種高頻的脈衝信號,每秒可達百萬次。然後,我們通過諧振效應發放這個信號,形成方波。再通過電子元件調整這種

原创 【轉】認識長輪詢:配置中心是如何實現推送的?

一 前言 傳統的靜態配置方式想要修改某個配置時,必須重新啓動一次應用,如果是數據庫連接串的變更,那可能還容易接受一些,但如果變更的是一些運行時實時感知的配置,如某個功能項的開關,重啓應用就顯得有點大動干戈了。配置中心正是爲了解決此類問題應運