@併發編程

Stories List
@binghe001

《深入理解高併發編程:JDK核心技術》-冰河新書上市

大家好,我是冰河~~ 廢話説多了沒用,併發編程技術一直是初級程序員進階高級工程師的前提條件,也是成為大廠程序員的必備技能,更是突破自身技術瓶頸的必經之路。 2022年6月我出版了“冰河技術叢書”之“深入理解高併發編程”系列的第1部作品——《深入理解高併發編程:核心原理與案例實戰》,書中全面細緻地介紹了高併發編程的基礎知識、核心原理、實戰案例和系統架構等內容,幫助讀者從根本上理解併發編程出現各種詭異

binghe001 Avatar

@binghe001

Nickname 冰河

@zijie1024

源碼解讀 | Java中ReentrantReadWriteLock的實現原理

本文將介紹Java中ReentrantReadWriteLock的實現原理,從JDK源碼層面講解讀寫鎖的加鎖、釋放鎖的流程,最後對流程進行總結。 讀寫鎖概述 讀寫鎖 ReentrantReadWriteLock 的依賴關係如下圖所示。 讀寫鎖的基本使用如下 ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); Reentrant

zijie1024 Avatar

@zijie1024

Nickname 字節幺零二四

@binghe001

高考成績都出來了,你的秒殺系統如何了?

大家好,我是冰河~~ 高考成績都出來了,咱的《Seckill秒殺系統》專欄如何了?今天給大家交個“期中作業”吧。 總體情況 截止到目前,秒殺系統從需求立項、架構設計、技術選型、環境搭建、編碼實現、極致緩存設計到扣減庫存防超賣設計,已經完成16個大的篇章47篇文章。 這是不是更新完了?那肯定沒啊!雖然現在的秒殺系統已經實現了最核心的功能,但是還不是我理想中的樣子,我想要大廠技術真正落地的秒殺系統。

binghe001 Avatar

@binghe001

Nickname 冰河

@binghe001

又一個可以寫到簡歷的項目,嘎嘎強!

大家好,我是冰河~~ 分佈式IM即時通訊系統本質上就是對線上聊天和用户的管理,針對聊天本身來説,最核心的需求就是:發送文字、圖片、文件、語音、視頻、消息緩存、消息存儲、消息未讀、已讀、撤回,離線消息、歷史消息、單聊、羣聊,多端同步,以及其他一些需求。 對用户管理來説,存在的需求包含:添加好友、查看還有列表、刪除好友、查看好友信息、創建羣聊、加入羣聊、查看羣成員信息、退出羣聊、修改羣暱稱、拉人進羣、

binghe001 Avatar

@binghe001

Nickname 冰河

@binghe001

互聯網大廠的緩存策略:抵抗超高併發的秘密武器,已開源!

大家好,我是冰河~~ 最近,有小夥伴私信我:冰哥,我最近出去面試,面試官問我如何設計緩存能讓系統在百萬級別流量下仍能平穩運行,我當時沒回答上來。接着,面試官問我之前的項目是怎麼使用緩存的,我説只是緩存了一些數據。當時確實想不到緩存還有哪些用處,估計這次面試是掛了。冰哥,你可以給我講講互聯網大廠項目是怎麼設計和使用緩存的嗎? 本文緩存方案已經開源,開源地址如下,如果開源方案對你有點幫助或者啓發,

binghe001 Avatar

@binghe001

Nickname 冰河

@kuanrongdeshanyang

Python多線程編程入門指南

導語:在許多應用場景中,我們需要同時執行多個任務。Python 提供了多線程(multithreading)支持,可以讓我們更高效地完成任務。在本文中,我們將探討 Python 中的多線程編程基礎知識,並通過一個簡單示例演示如何使用它。 一、併發編程簡介 併發編程是一種編程範式,允許多個任務在同時執行。在多核處理器和多處理器系統中,這種方法可以顯著提高程序的執行效率。Python 提供了多種併發編

kuanrongdeshanyang Avatar

@kuanrongdeshanyang

Nickname 小小張説故事

@onlythinking

學習Go語言併發編程

關於併發 Go 語言的創始人Rob Pike 曾説過:並行關乎執行,併發關乎結構。他認為: • 併發是一種程序設計方法:將一個程序分解成多個小片段,每個小片段獨立執行;併發程序的小片段之間可以通過通信相互協作。 • 並行是有關執行的,它表示同時進行一些計算任務。 程序小片段之間通訊不同語言實現不同,比如:傳統語言Java使用共享內存方式達到線程之間通訊,而Go語言channel來進行通

onlythinking Avatar

@onlythinking

Nickname 編程碼農

@renzhendezicai

Android面試題之Kotlin協程併發問題和互斥鎖

本文首發於公眾號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點 Kotlin 語言提供了多種機制來處理併發和同步,其中包括高層次和低層次的工具。對於常規的併發任務,可以利用 Kotlin 協程提供的結構化併發方式。而對於需要更低層次的鎖定機制,可以使用 Mutex 來實現對共享資源的線程安全訪問。 Kotlin 協程與併發(Coroutine

renzhendezicai Avatar

@renzhendezicai

Nickname 認真的紫菜

@jianghushinian

Go 併發控制:sync.WaitGroup 詳解

首發地址:https://mp.weixin.qq.com/s/-FtDLcHW39vgvqSMUVM-yw 前段時間我在《Go 併發控制:errgroup 詳解》一文中講解了 errgroup 的用法和源碼,通過源碼我們知道 errgroup 內部是使用 sync.WaitGroup 實現的,那麼本文就更進一步,來探索下 sync.WaitGroup 源碼是如何實現的。 使用示例 sync.Wa

jianghushinian Avatar

@jianghushinian

Nickname 江湖十年

@jianghushinian

Go 併發控制:sync.Map 詳解

我們知道,Go 中的 map 類型是非併發安全的,所以 Go 就在 sync 包中提供了 map 的併發原語 sync.Map,允許併發操作,本文就帶大家詳細解讀下 sync.Map 的原理。 使用示例 sync.Map 提供了基礎類型 map 的常用功能,使用示例如下: package main import ( "fmt" "sync" ) func main() {

jianghushinian Avatar

@jianghushinian

Nickname 江湖十年

@jianghushinian

Go 併發編程:如何實現一個併發安全的 map

上週發佈的文章「Go 併發控制:sync.Map 詳解」有讀者反饋説我寫的太難了,上來就挑戰源碼,對新手不夠友好。所以這篇文章算作補充,從入門到進階的順序講解一下在 Go 中如何自己實現一個併發安全的 map。 內置 map 首先,我們來測試一下 Go 語言內置 map 併發安全性,示例如下: https://github.com/jianghushinian/blog-go-example/tr

jianghushinian Avatar

@jianghushinian

Nickname 江湖十年

@chen_67f9ccbe6f07b

深入剖析 Java 併發容器:解鎖 ConcurrentHashMap 底層原理與高性能實戰應用

1. 併發容器的歷史 大家好,今天我們來聊一個 Java 多線程開發中繞不開的核心話題:併發容器。可能你已經發現,當我們在多線程環境中使用 HashMap、ArrayList 這些集合類時,經常會遇到ConcurrentModificationException或數據不一致的問題,這就是因為這些普通集合類不是線程安全的。 JDK 提供的傳統解決方案是Collections.synchronized

chen_67f9ccbe6f07b Avatar

@chen_67f9ccbe6f07b

Nickname 異常君

@chen_67f9ccbe6f07b

Java 併發編程揭秘:聽我説 happens-before 規則

多線程編程就像走鋼絲,一不小心就掉下去。而 Java 的 happens-before 規則,就是那根讓你穩穩走過去的平衡杆。今天我把這個看起來很深奧的概念拆開來講,讓你真正明白它為啥這麼重要,以及怎麼用它來解決實際問題。 你的代碼可能根本不是按你想的順序執行的! 看這段代碼: int a = 1; int b = 2; int c = a + b; 你以為它就是按這個順序執行的?天真了!JVM

chen_67f9ccbe6f07b Avatar

@chen_67f9ccbe6f07b

Nickname 異常君

@jianghushinian

使用 Uber automaxprocs 正確設置 Go 程序線程數

公眾號首發地址:https://mp.weixin.qq.com/s/5wrYaHXBpuN0WxKAaNNp-A 我們知道 Go 語言沒有直接對用户暴露線程的概念,而是通過 goroutine 來控制併發。不過,在 Go 程序啓動時,其背後的調度器往往是多線程運行的。在 Go 語言的 GMP 調度模型中,P 決定着同時運行的 goroutine 數,我們可以通過環境變量 GOMAXPROCS 或

jianghushinian Avatar

@jianghushinian

Nickname 江湖十年