收藏 / 列表

軟件求生 - 為什麼 Redis 單線程卻比多線程還快?真實原因震撼我

大家好,我是小米,一個在互聯網研發裏滾了十來年、對技術既執着又好奇、寫代碼比寫週報開心的 31 歲男人。 今天這篇文章想和你聊聊一個面試“高頻炸裂”的問題——Redis 線程模型到底是怎麼回事? 別小看這個問題,它比你想象的“壞”多了。 有一次我去一家還算知名的互聯網公司面試,面試官是個戴着黑框眼鏡、看起來很斯文的小哥,但當他一開口,我立馬意識到這人不好

單線程 , redis , yyds乾貨盤點 , 數據庫 , 多線程

老污的貓 - Java 爬樓梯

題目 假設你正在爬樓梯。需要 n 階你才能到達樓頂。 每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢? 原題地址 解題 每一步只能走1階或2階,因此每一步可拆分為2個分支,f(n)=f(n-1)+f(n-2) 遞歸 public static int climbStairs(int n) { if (n == 1) { return

算法 , JAVA

大廠碼農老A - 凌晨零點,一個TODO,差點把我們整個部門抬走

那晚杭州的悶熱,至今記憶猶新。 2021年,我剛來到杭州這座“卷城”,入職了一家夢想中的互聯網大廠。作為一名電商新人,我一頭扎進了促銷和會場的研發中。 那晚,我們正為一個S級的“會員閃促”活動做最後的護航,它將在零點準時生效。作戰室裏燈火通明,所有人都盯着大盤,期待着活動上線後,GMV曲線能像火箭一樣發射。 然而,我們等來的不是火箭,而是雪崩。 剛過0點,登登登登… 告警羣裏的消息開始瘋狂刷屏,聲

springboot , JAVA , 故障 , 後端 , 前端

悲傷的鴨蛋 - dependencies、dependencyManagement區別

對比項 dependencyManagement dependencies 功能 聲明版本(不引入依賴) 實際引入依賴到項目 作用 統一管理版本,避免衝突 決定項目運行時依賴 生效範圍 當前項目及子項目 僅當前項目 版本控制 子項目默認繼承 可覆蓋父項目版本 總結: dependencyManagement:定規矩(版本),不幹活(不引入)。 dependenc

maven , dependencies , dependency-management

打盹的猴子 - 策略模式(Strategy Pattern)深度解析教程

一、模式定義 策略模式屬於行為型設計模式,通過定義算法族並將其封裝為獨立的策略類,使得算法可以動態切換且與使用它的客户端解耦。該模式通過組合替代繼承,符合開閉原則(對擴展開放,對修改關閉)。 二、核心角色 Strategy(策略接口) 定義所有支持的算法的公共接口 ConcreteStrategy(具體策略) 實現策略接口的具體算法

設計模式 , JAVA , 策略模式

vivo互聯網技術 - 純前端實現圖片偽3D視差效果

作者:vivo 互聯網前端團隊- Su Ning 本文通過depth-anything獲取圖片的深度圖,同時基於pixi.js,通過着色器編程,實現了通過深度圖驅動的偽3D效果。該方案支持鼠標/手勢與手機陀螺儀雙模式交互,在保證性能的同時,為不同終端用户提供沉浸式的視覺體驗。 本文提供配套演示代碼,可下載體驗: Github | vivo-parallax 一、引言 在當今的網頁設計與交互

pixi.js , webgl , 前端

牛肉燒烤屋 - 超時時間應該設置多長?長尾請求和重試風暴又該如何解決?打造高效穩定的網絡請求!

超時時間 概念 超時時間指系統在等待某個操作響應時設定的最大容忍時間閾值。當操作未在指定時間內完成,系統將主動終止等待並觸發預設處理邏輯 超時可以看做是一種降級手段。因為假設服務永遠能正常運行,我們並不需要超時時間,來保證服務的可用性和穩定性 常見需要依賴超時時間的場景 網絡層:TCP 協議的 connect timeout(Linux 默認 120 秒)、HTTP 請求的 socket ti

微服務 , rpc , 高可用 , 計算機網絡 , 後端

seazhan - 【RocketMQ 消息中間件】RocketMQ篇之-消息存儲 為什麼性能高 CommitLog 刷盤機制 同步 異步

RocketMQ篇之-消息存儲 RocketMQ作為一款分佈式消息中間件,高可靠性是其最重要的特性之一。 所以需要將消息進行持久化存儲,以保證消息不丟失。 RocketMQ的消息存儲是RocketMQ的核心組件之一,負責消息的存儲和傳輸。RocketMQ的消息存儲主要包括CommitLog、ConsumeQueue、IndexFile、Checkpoint等幾個部分。 (前置)消息存儲交互流

中間件 , JAVA , 消息隊列

王中陽講編程 - ThreadLocal 為何能取代 Session?

本文探討了 Session 的原理及其與 Cookie 和 Token 的區別。Session 通過服務器端存儲 Session ID 來識別用户狀態,涵蓋創建、存儲、維護和銷燬的完整流程。與 Cookie 和 Token 比較,分析了它們在存儲、安全性、生命週期和應用場景上的差異。此外,Session 在高併發場景下可能面臨查找效率、代碼複雜性、線程安全、網絡傳輸和性能等問題。 為解決

threadlocal , 數據存儲 , session

字節幺零二四 - 源碼解讀 | Java中ReentrantLock的實現原理

ReentrantLock 依賴關係如下圖所示 非公平鎖實現原理 ReentrantLock 默認採用非公平鎖。 // ReentrantLock public ReentrantLock() { sync = new NonfairSync(); } 加鎖流程 ReentrantLock 的 lock 方法通過同步器的 lock 方法實現。 // ReentrantLock publi

JAVA , 併發 , juc , 併發編程

Awbeci - Next.js 14集成next-auth(v5)和redux-toolkit最佳實踐

前言 自從next.js14發佈之後,app router變成了官網主推的架構區別於pages router的傳統架構,app router更適合最新的react,於是自己動手把next-auth、redux-toolkit、ant-design、tailwindcss也一同集成進來,分享給大家,如果有錯誤之處歡迎大家指正。 操作 1、創建項目 使用下面命令創建項目,並且選擇tailwind cs

next-auth , redux , next.js

lindsay_bubble - Leetcode 85_maximal_rectangle_最大矩形

一、棧 承接Leetcode 84,柱狀圖算最大矩形面積,把該題入參改為柱狀圖高度即可 PS:這版本手搓int[]做棧和直接用ArrayDeque做棧,結果僅差2ms;但題84相差近15ms。 public int maximalRectangle(char[][] matrix) { if (matrix.length == 0) {

leetcode , , JAVA

wasdquiop - centos7 安裝 redis

centos7 安裝 redis redis是由C語言開發,安裝之前需要確保服務器已經安裝了gcc,可以通過如下命令查看機器是否安裝: gcc -v 如果沒有安裝則通過以下命令安裝: yum install -y gcc 安裝包 鏈接: https://pan.baidu.com/s/1dY9QPwWzUM-9bKtCmWIixw 提取碼: qrtb 也可以在線下載 wget htt

redis , arm , centos7 , Linux , JAVA

我不是碼農 - spring security oauth2.0 sso流程分析

現在我們系統使用的是spring security oauth2.0 sso單點登錄方案,偶爾出現會話失效,經過分析比對看了下日誌,出現會話失效時會出現一個警告, Could not fetch user details: class org.springframework.security.oauth2.client.resource.UserRedirectRequiredException,

oauth2.0 , spring , springsecurity , springboot , JAVA

呀哈哈kk - 【詳解】Python獲取系統性能信息

Python獲取系統性能信息 在開發和維護應用程序的過程中,瞭解系統的性能狀態是至關重要的。這不僅可以幫助我們優化程序的運行效率,還可以及時發現並解決潛在的問題。Python 作為一種強大的編程語言,提供了多種方式來獲取系統的性能信息。本文將介紹如何使用 psutil 庫來獲取包括CPU、內存、磁盤和網絡在內的系統性能數據。 安裝 psutil psutil(P

sed , 後端開發 , 磁盤分區 , JAVA , 網絡接口

mb61c46a7ab1eee - 策略模式詳情 - 實踐

策略模式:定義一組算法,將每個算法封裝起來,使它們可以互相替換,且算法的變換不會影響使用算法的客户。 • 抽象策略(Strategy)類:這是一個抽象角色,通常由一個接口或抽象類實現。此角色給出所有的具體策略類所需的接口。 • 具體策略(Concrete Strategy)類:實現了抽象策略定義的接口,提供具體的算法實現或行為。

System , 封裝 , MySQL , 數據庫 , 策略模式

sangwu - 70. 爬樓梯

70. 爬樓梯 假設你正在爬樓梯。需要n階你才能到達樓頂。 每次你可以爬1或2個台階。你有多少種不同的方法可以爬到樓頂呢? 示例 1: 輸入:n = 2 輸出:2 解釋:有兩種方法可以爬到樓頂。 1. 1 階 + 1 階 2. 2 階 示例 2: 輸入:n = 3 輸出:3 解釋:有三種方法可以爬到樓頂。 1

狀態轉移 , 數組 , yyds乾貨盤點 , i++ , 後端開發 , JAVA

虎斑嘟嘟 - 大模型智能體在醫療影像診斷中的特徵提取與識別

大模型智能體在醫療影像診斷中的特徵提取與識別 隨着人工智能技術的快速發展,大模型智能體在醫療影像診斷領域正掀起一場革命。本文將深入探討大模型智能體如何通過先進的特徵提取與識別技術,改變醫療影像的診斷方式,並提供詳細的代碼實例展示這一過程的具體實現。 醫療影像診斷中大模型智能體的技術基礎 大模型智能體在醫療影像診斷中的核心價值在於其能夠模仿甚至增強人類專家的診斷思

yyds乾貨盤點 , 後端開發 , JAVA , Image , 模態 , 特徵提取

Turbo_K - ThreadLocal有什麼缺點?

ThreadLocal 是 Java 中一個用於為每個線程提供獨立變量副本的類,它允許每個線程都能獨立地訪問和修改變量,避免了多線程間的競爭和同步問題。它是通過在每個線程中維護一個 線程局部變量 來實現的,通常用於線程間的數據隔離。 然而,ThreadLocal 並不是完美的,它有一些缺點和潛在的問題,特別是在多線程和資源管理方面。以下是 ThreadLocal 的一些主要

線程池 , 後端開發 , 多線程 , JAVA , 解決方案

自由的瘋 - 《分佈式 + 國產數據庫 + Docker:技術選型避坑指南》(十三)

一、為什麼需要自定義限流?基礎限流的侷限性 在第六篇基礎限流中,我們配置了 “GET:/user/get/{id}接口 QPS=20” 的規則,但實際業務場景存在更多精細化需求: 場景 1:限制單個用户(如 user_id=100)每秒最多調用 3 次訂單創建接口,避免惡意刷單; 場景 2:限制單個 IP(如 192.168.1.10)每秒最多訪問

限流 , yyds乾貨盤點 , ip , 自定義 , 後端開發 , JAVA

xiongood - Vue 中 slot 的使用方法

Vue 中 slot 的使用方法 在 Vue 組件化開發中,slot(插槽)就像組件預留的 “靈活接口”,讓父組件能向子組件的指定位置插入自定義內容,既保留了子組件的結構複用,又賦予了內容定製的靈活性,避免了組件過於僵硬。無論是簡單的文本插入,還是複雜的組件嵌套,slot 都能輕鬆應對,是組件複用與定製的核心工具。 最基礎的是默認插槽,子組件中預留一個未命名的插槽,父組件在使用子

數據 , 自定義 , 插槽 , 後端開發 , JAVA

wx661607c93692e - 從 BPMN 到 Flowable

一、什麼是工作流?為什麼需要工作流引擎? Q1:工作流解決了什麼問題?不用引擎直接寫 if-else 不行嗎? 痛點: 審批流程頻繁變更(如:3級審批 → 5級) 流程節點權限複雜(部門經理、HR、財務) 需要歷史軌跡、催辦、轉辦、撤回等能力 人工代碼維護成本高、易出錯 工作流引擎的價值

後端開發 , 發送郵件 , JAVA , 工作流引擎

吳大同 - qData 數據中台完整功能介紹 —— 商業版與開源版功能對比

一、qData 數據中台概覽 在數字化轉型的大背景下,數據已經成為企業最核心、最具價值的資產。qData 數據中台,作為企業數據治理與應用的關鍵平台,憑藉高性能與創新理念脱穎而出。它秉持 “高效、安全、靈活、開放” 的設計原則,致力於為企業打造一站式的數據解決方案。 qData 數據中台具備多方面優勢:在 數據接入 上,能夠廣泛兼容主流數據庫與消息隊列,確保異構數據順暢匯聚;在 數據建模 上,提供

大數據 , 開源軟件 , springboot , JAVA , 數據處理

飛天鑄幣 - Cancel如何同步Mq信息

編寫MQ監聽器,繼承抽象的RabbitMQ監聽器,然後調用父類的方法解析這個消息 解析消息 1.首先需要進行數據格式轉換,因為我們拿到的是一個Json字符串;把它轉換成我們需要的數據實體。 2.首先判斷這個數據是不是增刪改或者根本就沒有拿到該數據,因為後續如果還需要擴展其他業務的話,可以避免其他業務干擾到核心業務 3.然後判斷這個數據是否是單條數據,是,則走單條數據處理的方法。否,則走

rabbitmq