原创 《設計模式之美》- 23種設計模式

學習《設計模式之美》筆記。 23 種經典設計模式共分爲 3 種類型,分別是創建型、結構型和行爲型 創建型模式 創建型設計模式包括:單例模式、工廠模式、建造者模式、原型模式。它主要解決對象的創建問題,封裝複雜的創建過程,解耦對象的創建代碼和使

原创 1000萬整數佔用多少空間?

基礎回顧,一步一個腳印。 數據類型 以Java語言爲例子。 Java中的基本數據類型(4類8種): 整數 a. byte 1個字節 b. short 2個字節 c. int 4個字節 d. long 8個字節

原创 覆盤:返回不同模板的數據(註解、反射、單例模式、工廠模式、遞歸)

工作中一個接口需要動態加載不同類型的mapper類,mapper獲取實體類,返回給前端。 自定義註解 @Subscribe,Mapper添加@Subscribe(desc = "xxxxxx"),維護不同類型與Mapper的對應關係。

原创 SQL思考題-實踐-解題

假設有一張訂單表 order,主要包含了主鍵訂單編碼 order_no、訂單狀態 status、提交時間 create_time 等列,並且創建了 status 列索引和 create_time 列索引。此時通過創建時間降序獲取狀態爲 1

原创 《設計模式之美》- 設計原則

1.SOLID 原則:SRP 單一職責原則 一個類只負責完成一個職責或者功能。單一職責原則通過避免設計大而全的類,避免將不相關的功能耦合在一起,來提高類的內聚性。同時,類職責單一,類依賴的和被依賴的其他類也會變少,減少了代碼的耦合性,以此來

原创 代碼模擬線程的6種狀態

線程6種狀態: NEW Thread state for a thread which has not yet started. RUNNABLE Thread state for a runnable thread. A t

原创 手寫EventBus(觀察者模式、源碼閱讀、反射)

學習王爭老師《設計模式之美》,觀察者模式部分實現了一個簡單的EventBus,太棒了,設計特別巧妙,其中的解耦思路,運用在自己正在開發的項目中,大大優化原本不好維護的代碼。在此記錄下,方便回顧與學習。 整個小框架的代碼實現包括5個類: Ev

原创 JWT結構化令牌(what、why、how)

理解JWT結構化令牌,能讓自己對認證、授權流程有更深入的理解。 JWT結構化令牌 關於什麼是 JWT,官方定義是這樣描述的: JSON Web Token(JWT)是一個開放標準(RFC 7519),它定義了一種緊湊的、自包含的方式,用於

原创 MySQL Explain mysql執行計劃

mysql執行計劃 在日常工作中,爲了知道優化SQL語句的執行,需要查看SQL語句的具體執行過程,以加快SQL語句的執行效率。 可以使用explain+SQL語句來模擬優化器執行SQL查詢語句,從而知道mysql是如何處理sql語句的。 官

原创 5個鏈表的常見操作

鏈表 public class ListNode { int val; ListNode next; ListNode() { } ListNode(int val) { this

原创 使用工具 Ngrok 內網穿透 重播請求

前言:當我們本地開發、聯調微信支付、微信小程序、微信公衆等的一些功能的時候,可能需要外網訪問你的本地服務,方便調試本地代碼。那麼這時,我們需要做的就是將我們本地的端口映射到一個外網的端口上,也就是內網穿透。常見的解決方案有 Ngrok, f

原创 docker 常用部署Demo

在此記錄常用Docker 部署項目的幾個Demo ,學習總結,同時方便後期提高部署項目速度。 Docker 部署 FastDfs 需要的文件: conf : 存在配置的文件夾。 client.conf、http.conf、mime.typ

原创 (LeetCode 16) 最接近的三數之和

給定一個包括 n 個整數的數組 nums 和 一個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。 示例: 輸入:nums = [-1,2,1,-4],

原创 (LeetCode 349) 兩個數組的交集

給定兩個數組,編寫一個函數來計算它們的交集。 示例1: 輸入:nums1 = [1,2,2,1], nums2 = [2,2] 輸出:[2] 示例 2: 輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出

原创 【設計模式】- 裝飾器模式

裝飾器模式能夠實現爲對象動態添加裝修功能,它能從一個對象的外部來給對象添加功能,所以有非常靈活的擴展性,我們可以在對原來的代碼毫無修改的前提下,爲對象添加新功能。 除此之外,裝飾器模式還能夠實現對象的動態組合,藉此我們可以很靈活地給動態組合