《深入理解高併發編程:JDK核心技術》-冰河新書上市
大家好,我是冰河~~ 廢話説多了沒用,併發編程技術一直是初級程序員進階高級工程師的前提條件,也是成為大廠程序員的必備技能,更是突破自身技術瓶頸的必經之路。 2022年6月我出版了“冰河技術叢書”之“深入理解高併發編程”系列的第1部作品——《深入理解高併發編程:核心原理與案例實戰》,書中全面細緻地介紹了高併發編程的基礎知識、核心原理、實戰案例和系統架構等內容,幫助讀者從根本上理解併發編程出現各種詭異
昵稱 冰河
貢獻者18
粉絲0
大家好,我是冰河~~ 廢話説多了沒用,併發編程技術一直是初級程序員進階高級工程師的前提條件,也是成為大廠程序員的必備技能,更是突破自身技術瓶頸的必經之路。 2022年6月我出版了“冰河技術叢書”之“深入理解高併發編程”系列的第1部作品——《深入理解高併發編程:核心原理與案例實戰》,書中全面細緻地介紹了高併發編程的基礎知識、核心原理、實戰案例和系統架構等內容,幫助讀者從根本上理解併發編程出現各種詭異
昵稱 冰河
作者:vivo 互聯網服務器團隊- Ye Feng 本文介紹了協程的概念,並討論了 Tars Cpp 協程的實現原理和源碼分析。 一、前言 Tars 是 Linux 基金會的開源項目(https://github.com/TarsCloud),它是基於名字服務使用 Tars 協議的高性能 RPC 開發框架,配套一體化的運營管理平台,並通過伸縮調度,實現運維半托管服務。Tars 集可擴展協議編解碼、
昵稱 vivo互聯網技術
Coke(一):你好,世界 C++ Workflow是一款高性能的異步編程範式,自Github開源以來,已經收貨了一萬多枚Star,得到了越來越多的認可。 Coke項目是一個高性能的協程庫,基於C++ 20提供的協程組件開發,提供一組簡潔的異步接口,而其後台則是由C++ Workflow強力驅動。使用Coke可以輕鬆地創建協程任務,並通過C++ Workflow的調度器高效地調度和執行,Coke希
昵稱 kedixa
在 5.1 版本中增加了多種數據庫協程客户端的支持,並且全部以 PDO 接口的方式提供,舊的業務代碼無需做任何更改即可一鍵切換為協程模式,異步非阻塞地併發執行。 包括: pdo_pgsql pdo_odbc pdo_sqlite pdo_oci (Oracle 數據庫) 開啓方法 增加了 4 個編譯參數和 Runtime Hook 選項,開啓這些協程客户端。 編譯選項 --with
昵稱 韓天峯
Coke項目Github主頁。 在這個時間點開發本項目,有以下幾點考慮 常用的編譯器對C++ 20的支持已經逐步完善,本項目依賴於GCC = 11或Clang = 15 常用的操作系統發行版支持了新編譯器,例如CentOS Stream 8、Ubuntu 22.04、Fedora 38等 C++ Workflow使用回調函數的方式組織異步任務,一部分習慣寫同步代碼的用户可能會對此感到困擾,
昵稱 kedixa
Coke項目Github主頁。 上一篇文章通過幾個示例介紹瞭如何使用Coke便捷地發起Http請求,本文延續上一個話題,將coke::HttpClient的功能詳細地介紹一下。 在C++ Workflow中,Http任務通常通過工廠函數創建,並且可以指定重試次數等參數。而在Coke中可以通過coke::HttpClient來創建Http任務。首先介紹一下與任務相關的參數 struct HttpCl
昵稱 kedixa
go 通道-channel、協程-routine、sync golang 裏不需要學習如何創建維護進程池/線程池,也不需要分析什麼情況使用多線程,什麼情況使用多進程,因為你沒得選。 當然,也不需要選。 go原生的 goroutine(協程)已足夠優秀,能自動幫你處理好所有事情,而你要做的只是執行它,so easy... goroutine 也是go天生支持高併發的底氣。 g
昵稱 後廠村村長
本文首發於公眾號:Hunter後端 原文鏈接:Python筆記四之協程 協程是一種運行在單線程下的併發編程模型,它的特點是能夠在一個線程內實現多個任務的併發操作,通過在執行任務時主動讓出執行權,讓其他任務繼續執行,從而實現併發。 以下所有的代碼都是在 Python 3.8 版本中運行。 本篇筆記目錄如下: asyncio async await 併發運行協程
昵稱 Hunter
Golang 中,如果用一個 map 保存實例化的通道,並用在協程間發送和接收。當該 map 被賦值為 nil 時,管理的通道依然有效。 示例代碼如下: package main import ( "fmt" "time" ) func main() { // 創建一個map用於保存通道 channelMap := make(map[string]chan in
昵稱 vistart
假設有一組任務有前後依賴關係,我們可以使用Go的通道特性,將前一個任務的執行結果(或結束信號)送入下一個任務,已達到自動化依次執行工作流的每個任務的目的。 為了模擬這一工作流,我們假設有五個通道和四個協程,每個協程監聽前一個通道的數據,並將接收到的數據送入下一個通道中。 當任務執行結束後,最好能夠主動回收通道,已達到節省內存開銷的目的。與執行工作流類似的是,應當能做到關閉首個通道後,按照依賴關係連
昵稱 vistart
一 什麼是協程 協程現在已經不是一個新的技術了,但是由於之前一直在用較低版本的c++,沒什麼機會使用協程。最近寫了不少go的代碼,接觸到了協程,所以想從零開始學習一下協程。 1. 到底什麼是協程 之前聽説協程的時候,大家都講協程就是執行在用户態的微線程,加上go中協程的使用和線程差不多,我也就一直這樣理解了。但是真正定義協程的功能是:可以隨時的掛起和恢復,它允許多個入口點在不同的執行點掛起和恢復,
昵稱 飛翔荷蘭人
定義 協程基於線程,是輕量級的線程 作用 處理耗時任務,這種任務常常會阻塞主線程 保證主線程安全,即確保安全地從主線程調用任何suspend函數 特點 讓異步邏輯同步化 最核心的點就是,函數或者一段程序能夠被掛起,稍後再在掛起得位置恢復 掛起函數 使用suspend關鍵字修飾的函數 掛起函數只能在協程體內或其他掛起函數內調用 掛起和阻塞的區別 掛起不會阻塞主線程,主線程
昵稱 認真的紫菜
我們知道,在go語言中,goroutine的執行會隨着main線程的退出而終結, 即如果main線程退出,則所有的goroutine都會被強制退出,不管你是否已經執行完畢。 如果我們希望main進程等待所有的goroutine執行完畢後再退出,則可以有3種方式來實現,具體如下: 1. 使用go標準庫sync中提供的 sync.WaitGroup裏面提供的Add, Done, Wait方法; pac
昵稱 tekin
本文首發於公眾號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點 Kotlin自2017年起被Google正式宣佈為Android的編程語言之一,隨後在2019年進一步宣佈Kotlin為Android的首選語言,普及速度逐漸加快,越來越多的公司和項目在引入Kotlin。 那Kotlin有哪些特點,為何建議大家要加快擁抱Kotlin的速度呢? 方
昵稱 認真的紫菜
本文首發於公眾號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點 在Kotlin中,LifecycleScope是Android Jetpack架構組件的一部分,主要用於簡化與生命週期相關的協程管理。 它屬於androidx.lifecycle:lifecycle-runtime-ktx庫的一部分,通過結合使用 LifecycleOwne
昵稱 認真的紫菜
Libco:簡化併發編程,Libco讓高性能觸手可及-精選真開源,釋放新價值。 概覽 Libco是由騰訊開源的C/C++協程庫,自2013年起在微信後台服務中得到廣泛應用。它通過少量的函數接口,使得開發者能夠輕鬆地將同步的後端服務轉換為協程服務,從而實現卓越的併發性能。Libco的設計理念是讓開發者能夠以同步的方式編寫代碼,而執行時卻能以異步的方式運行,極大地簡化了併發編程的複雜性。 主要功
昵稱 辣碼甄源
本文首發於公眾號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點 Kotlin協程提供了一種高效的方式來處理併發和異步任務。在協程的生命週期管理中,取消協程是一項重要的操作。本文將深入探討Kotlin協程的取消機制,介紹除了直接使用Job的cancel方法之外的其他方式,並提供優雅的實現策略。 1. 協程取消的基本概念 在Kotlin協程中,取
昵稱 認真的紫菜
協程(Coroutine)是什麼? 協程就是用户態的線程。 這樣解釋可能過於抽象,讓我們先來回顧一下,另外2個更常見的概念,進程(Process)與線程(Thread)。 「進程是操作系統分配資源的基本單位」,只有在進程內才可以進行內存分配釋放、文件讀寫、網卡數據的接收與發送等的資源操作。 「線程是操作系統調度的基本單位」。 進程和線程的狀態對應用程序透明,並且在內核態中完成調度。 協程對應用程序
昵稱 後端開發工程實踐
一、系統軟件技術的核心價值與面臨挑戰 系統軟件作為軟件架構的基石,扮演着連接軟件與硬件的橋樑角色,位於整個軟件生態的最底層,處於關鍵核心的位置。系統軟件最為顯著的特徵在於其規模效應,隨着服務器體量的增加,系統軟件研發的價值愈發凸顯。 首先,系統軟件技術能夠顯著提升服務器資源的利用率,實現翻倍效果,同時性能也能提升 30%~50%,從而大幅降低公司的服務器資源成本。其次,專業的系統軟件團隊能夠迅速定
昵稱 快手技術
【手寫RPC框架】如何使用netty手寫一個RPC框架 結合新特性 虛擬線程 什麼是RPC框架 RPC(Remote Procedure Call)遠程過程調用,是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC框架是一種遠程調用的框架,它可以讓你像調用本地方法一樣調用遠程方法。 避免了開發人員自己去封裝網絡請求、連接管理、序列化、反序列化等操作,提高了開發效率。 N
昵稱 seazhan
摘要:對於開發者而言,傳統線程模型邏輯直觀但性能受限,而異步模型雖性能高卻複雜性大。協程以“同步編程,異步執行”平衡兩者,成為現代語言標配。結合自身業務需求,快手基於社區開源版本自研了 Java17 透明協程技術,實現對業務無侵入的同時,吞吐能力提升 30%以上。本文將深入剖析快手協程技術的背後原理與架構演進。 一、協程技術的發展與挑戰 協程作為計算機領域的一項古老技術,其思想可追溯至 1963
昵稱 快手技術
前言 最近學習了一下C++協程,這篇文章將介紹協程的相關概念,以及在C++中如何使用協程。 什麼是協程 C++中,協程(coroutines)可以理解為一個可以暫停和恢復執行的函數。什麼意思呢?例如有以下協程函數: Task taskFunc() { ... co_await doSomething(); // 1 doSomething2();
昵稱 mrbone11
寫在最前 本故事採用簡潔明瞭的對話方式,盡洪荒之力讓你在輕鬆無負擔的氛圍中,稍微深入地理解進程、線程和協程的相關原理知識 如果你覺得自己本來就已經理解得很透徹了,那也不妨瞧一瞧,指不定有意外的收穫呢 在這個 AI 內容生成氾濫的時代,依然有一批人"傻傻"堅持原創,如果您能讀到最後,還請點贊或收藏或關注支持下我唄,感謝 ( ̄︶ ̄)↗ 進程 丹尼爾:蛋兄,我對進程、線程、協程這些概念似懂非懂的,要不咱
昵稱 蛋先生DX
大家好,我是冰河~~ 高考成績都出來了,咱的《Seckill秒殺系統》專欄如何了?今天給大家交個“期中作業”吧。 總體情況 截止到目前,秒殺系統從需求立項、架構設計、技術選型、環境搭建、編碼實現、極致緩存設計到扣減庫存防超賣設計,已經完成16個大的篇章47篇文章。 這是不是更新完了?那肯定沒啊!雖然現在的秒殺系統已經實現了最核心的功能,但是還不是我理想中的樣子,我想要大廠技術真正落地的秒殺系統。
昵稱 冰河