線程池ThreadPoolExecutor源碼深度解析|得物技術
一、引 言 為什麼進行源碼角度的深度解析? 大家在項目中到處都在使用線程池做一些性能接口層次的優化,原先串行的多個遠程調用,因為rt過高,通過線程池批量異步優化,從而降低rt。還有像RocketMQ中broker啓動時,同時通過ScheduledThreadPoolExecutor線程池執行其他組件的定時任務,每隔一段時間處理相關的任務。線程池廣泛的應用在外面各種實際開發場景中,我們很多同學可能在
昵称 得物技術
贡献者219
粉丝0
一、引 言 為什麼進行源碼角度的深度解析? 大家在項目中到處都在使用線程池做一些性能接口層次的優化,原先串行的多個遠程調用,因為rt過高,通過線程池批量異步優化,從而降低rt。還有像RocketMQ中broker啓動時,同時通過ScheduledThreadPoolExecutor線程池執行其他組件的定時任務,每隔一段時間處理相關的任務。線程池廣泛的應用在外面各種實際開發場景中,我們很多同學可能在
昵称 得物技術
title: 索引與性能優化 date: 2024/12/15 updated: 2024/12/15 author: cmdragon excerpt: 索引是數據庫性能優化的重要工具,通過建立索引,可以加速數據的檢索和查詢操作,從而提高數據庫的響應速度。雖然索引能顯著改善數據訪問性能,但不當的使用也可能導致性能下降。 categories: 前端開發 tags
昵称 風流倜儻的傷痕
1. CORS 產生的原因 CORS 全稱為(Cross-Origin Resource Sharing:跨站資源共享),跨域請求是由於瀏覽器的同源策略(Same-Origin Policy)引起的,那麼 CORS 的產生和瀏覽器的同源策略有關係,我們先了解什麼是同源策略。 2. 什麼是同源策略 SOP 是所有的現代瀏覽器都具備的安全措施,它不允許從一個加載的js腳本和資源的 Origin 域與另
昵称 打盹的猴子
一、項目背景 酷阿鯨森林農場是一家重視農產品可溯源與供應鏈透明化的生態農業企業。為實現可信電商交易體系,我們完全使用 Java 技術研發了一個桌面級區塊鏈系統,並支持 iOS 客户端通過自動發現節點、加入區塊網絡並同步區塊數據。 本系統不依賴以太坊或外部公鏈,所有區塊通信與同步均基於我們自研的 P2P通信機制,實現局域網或互聯網中的自動節點發現與全鏈數據廣播。 二、系統架構總覽 [Java 桌面
昵称 酷阿鯨森林農場
前言 2020年外賣最火熱的時候,有一篇文章《外賣騎手,困在系統裏》。 作為一個互聯網從業人員,我之前從未有機會體會到,當每一個工作都要被時間和算法壓榨時,我會是一種怎樣的感受。 而最近的一段經歷,我感覺也被困在系統裏了。 起因 如果你是一個研發人員,免不了要值班、處理線上問題。當然這都很正常,每個系統都有bug或者諮詢類的問題。 由於我們面臨的客户比較多,加上系統有一些易用性的問題或bu
昵称 幸福的鬧鐘
概述 日常生活中,我們出去吃飯都會遇到下面的場景。 定義: 將一個請求封裝為一個對象,使發出請求的責任和執行請求的責任分割開。這樣兩者之間通過命令對象進行溝通,這樣方便將命令對象進行存儲、傳遞、調用、增加與管理。 結構 命令模式包含以下主要角色: 抽象命令類(Command)角色: 定義命令的接口,聲明執行的方法。 具體命令(Concrete Command)角色:具體的命令,實現命令接口
昵称 程序員Seven
概述 在現實生活中,常常會出現這樣的事例:一個請求有多個對象可以處理,但每個對象的處理條件或權限不同。例如,公司員工請假,可批假的領導有部門負責人、副總經理、總經理等,但每個領導能批准的天數不同,員工必須根據自己要請假的天數去找不同的領導簽名,也就是説員工必須記住每個領導的姓名、電話和地址等信息,這增加了難度。這樣的例子還有很多,如找領導出差報銷、生活中的“擊鼓傳花”遊戲等。 定義: 又名職責鏈模
昵称 程序員Seven
概述 【例】通過按鈕來控制一個電梯的狀態,一個電梯有開門狀態,關門狀態,停止狀態,運行狀態。每一種狀態改變,都有可能要根據其他狀態來更新處理。例如,如果電梯門現在處於運行時狀態,就不能進行開門操作,而如果電梯門是停止狀態,就可以執行開門操作。 類圖如下: 代碼如下: public interface ILift { //電梯的4個狀態 //開門狀態 public fina
昵称 程序員Seven
概述 定義:又被稱為發佈-訂閲(Publish/Subscribe)模式,它定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態變化時,會通知所有的觀察者對象,使他們能夠自動更新自己。 結構 在觀察者模式中有如下角色: Subject:抽象主題(抽象被觀察者),抽象主題角色把所有觀察者對象保存在一個集合裏,每個主題都可以有任意數量的觀察者,抽象主題提供一個接口
昵称 程序員Seven
概述 一般來説,同事類之間的關係是比較複雜的,多個同事類之間互相關聯時,他們之間的關係會呈現為複雜的網狀結構,這是一種過度耦合的架構,即不利於類的複用,也不穩定。例如在下左圖中,有六個同事類對象,假如對象1發生變化,那麼將會有4個對象受到影響。如果對象2發生變化,那麼將會有5個對象受到影響。也就是説,同事類之間直接關聯的設計是不好的。 如果引入中介者模式,那麼同事類之間的關係將變為星型結構,從下右
昵称 程序員Seven
概述 定義:提供一個對象來順序訪問聚合對象中的一系列數據,而不暴露聚合對象的內部表示。 結構 迭代器模式主要包含以下角色: 抽象聚合(Aggregate)角色:定義存儲、添加、刪除聚合元素以及創建迭代器對象的接口。 具體聚合(ConcreteAggregate)角色:實現抽象聚合類,返回一個具體迭代器的實例。 抽象迭代器(Iterator)角色:定義訪問和遍歷聚合元素的接口,通常包含 ha
昵称 程序員Seven
概述 定義:封裝一些作用於某種數據結構中的各元素的操作(將數據結構於元素進行分離),它可以在不改變這個數據結構的前提下定義作用於這些元素的新的操作。 結構 訪問者模式包含以下主要角色: 抽象訪問者(Visitor)角色:定義了對每一個元素(Element)訪問的行為,它的參數就是可以訪問的元素,它的方法個數理論上來講與元素類個數(Element的實現類個數)是一樣的,從這點不難看出,訪問者模式
昵称 程序員Seven
概述 備忘錄模式提供了一種狀態恢復的實現機制,使得用户可以方便地回到一個特定的歷史步驟,當新的狀態無效或者存在問題時,可以使用暫時存儲起來的備忘錄將狀態復原,很多軟件都提供了撤銷(Undo)操作,如 Word、記事本、Photoshop、IDEA等軟件在編輯時按 Ctrl+Z 組合鍵時能撤銷當前操作,使文檔恢復到之前的狀態;還有在瀏覽器中的後退鍵、數據庫事務管理中的回滾操作、玩遊戲時的中間結果存檔
昵称 程序員Seven
概述 如上圖,設計一個軟件用來進行加減計算。我們第一想法就是使用工具類,提供對應的加法和減法的工具方法。 //用於兩個整數相加 public static int add(int a,int b){ return a + b; } //用於兩個整數相加 public static int add(int a,int b,int c){ return a + b + c; }
昵称 程序員Seven
認識微服務 隨着互聯網行業的發展,對服務的要求也越來越高,服務架構也從單體架構逐漸演變為現在流行的微服務架構。這些架構之間有怎樣的差別呢? 單體架構 單體架構:將業務的所有功能集中在一個項目中開發,打成一個包部署。 單體架構的優缺點如下: 優點: 架構簡單 部署成本低 缺點: 耦合度高(維護困難、升級困難) 分佈式架構 分佈式架構:根據業務功能對系統做拆分,每個業務功能模塊作為獨立
昵称 程序員Seven
一、模式定義 裝飾者模式屬於結構型設計模式,允許通過動態包裝對象的方式為對象添加新功能,提供比繼承更靈活的擴展方式。該模式通過組合替代繼承,遵循開閉原則(對擴展開放,對修改關閉)。 二、核心角色 Component(組件接口) 定義被裝飾對象的公共接口 ConcreteComponent(具體組件) 實現基礎功能的具體類 Dec
昵称 打盹的猴子
一、模式定義 策略模式屬於行為型設計模式,通過定義算法族並將其封裝為獨立的策略類,使得算法可以動態切換且與使用它的客户端解耦。該模式通過組合替代繼承,符合開閉原則(對擴展開放,對修改關閉)。 二、核心角色 Strategy(策略接口) 定義所有支持的算法的公共接口 ConcreteStrategy(具體策略) 實現策略接口的具體算法
昵称 打盹的猴子
你是否曾經遇到過系統因創建大量重複對象而導致內存佔用激增的情況?在處理成千上萬個文本字符、UI 控件或遊戲中的粒子效果時,如果為每個實例分配獨立內存,很快就會耗盡系統資源。這時,享元模式就像是 Java 開發中的"內存省錢法",它能讓你在不犧牲功能的前提下大幅降低內存消耗。 什麼是享元模式? 享元模式(Flyweight Pattern)是一種結構型設計模式,核心思想是共享細粒度對象,減少內存使用
昵称 異常君
🏨 現代化酒店管理系統 項目概述 這是一個基於現代Web技術棧構建的全棧酒店管理系統,旨在為酒店行業提供完整的數字化解決方案,通過技術創新提升酒店運營效率和客户體驗。系統採用前後端分離架構,結合了成熟的企業級框架和現代化的用户界面設計,為酒店運營管理和客户服務提供了強有力的技術支撐。 🎯 核心特性 業務功能 客房管理 - 房型配置、房間狀態管理、價格策略 預訂系統 - 在線預訂、訂單管理
昵称 世説鷹語
Java通過反射獲取構造方法進行初始化實例實操分享及避坑指北 插件推薦 IDEA插件MPVP(maven) 迎來2.0.x全新升級 !!!支持maven項目版本搜索(中央倉庫及私服)還能快速升級maven多模塊項目 框架開發大佬、中台開發大佬快來看~ Maven快速調整項目版本再也不用手敲命令啦,使用這款idea插件小白也能快速調整!!! 前言 作者在使用反射通過構造方法獲取實例時,遇到了點小狀況
昵称 新程快咖員
前言 最近在實現小圖片上傳的過程中剛開始我使用base64字符串做為後台接口參數傳遞給後台並解析保存也沒問題,但是發現第2次及之後就報下面的錯: org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144 然後問了AI給的回覆如下: 這個問題通
昵称 Awbeci
502 Bad Gateway: Registered endpoint failed to handle the request. 502 Bad Gateway錯誤是一種常見的HTTP錯誤,通常表示代理服務器在嘗試訪問上游服務器時遇到了問題,因此無法返回請求的內容。這個錯誤消息表明,代理服務器無法成功處理客户端的請求,因為上游服務器或端點出現故障或無法響應請求。 錯誤的含義: 50
昵称 註銷
在討論軟件架構的時候,你可能會聽到術語 Monolithic Architecture,或者叫做 單體架構。這是一種經典的軟件系統設計,它是將所有的功能組件集中在一個單一的程序包中,這個程序包就是我們所説的 單體。 在 單體架構 中,所有的業務功能和邏輯都是緊密集成在一個應用程序中的。這個應用程序是由許多不同的組件構成的,這些組件負責處理各種業務邏輯,如用户界面(UI)、數據訪問和處理、業務邏輯等
昵称 註銷
引言 在Node.js開發和部署體系中,pm2 (Process Manager 2) 是一個備受歡迎的工具,用於簡化應用程序的管理、監控和部署。pm2不僅僅是一個進程管理器,還提供了許多功能,包括負載均衡、日誌管理、自動重啓等,使得在生產環境中運行Node.js應用更為可靠和高效。 1. 安裝和基本用法 首先,通過以下命令安裝pm2: npm install -g pm2 使用pm2啓動一個No
昵称 註銷