漫談協程(coroutine)
一 什麼是協程 協程現在已經不是一個新的技術了,但是由於之前一直在用較低版本的c++,沒什麼機會使用協程。最近寫了不少go的代碼,接觸到了協程,所以想從零開始學習一下協程。 1. 到底什麼是協程 之前聽説協程的時候,大家都講協程就是執行在用户態的微線程,加上go中協程的使用和線程差不多,我也就一直這樣理解了。但是真正定義協程的功能是:可以隨時的掛起和恢復,它允許多個入口點在不同的執行點掛起和恢復,
昵稱 飛翔荷蘭人
一 什麼是協程 協程現在已經不是一個新的技術了,但是由於之前一直在用較低版本的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
時序數據的概念和特點 時序數據是指時間序列數據,是按時間順序記錄的數據列。時序數據可以是時期數,也可以時點數。對於數據庫而言,時序數據一般是一系列帶有時間戳和數據值的數據點,且各列數據值類型相同、數值隨時間戳遞增(減)或在有限區間內波動。 時序數據常用壓縮編碼方式 從時序數據的特點來看,通用的壓縮算法和按行壓縮並不能很好的壓縮時序數據,因此時序數據庫大多都針對不同類型的數據按列採用不同壓縮編碼方式
昵稱 KaiwuDB
sjmj 《數據密集型應用系統設計》 - 數據編碼和演化 前言 本章的前半部分提到的編碼框架目前在GO領域如魚得水,並且有不少成熟的產品誕生,如果是GO工作者必然會接觸,如果僅僅是試圖瞭解該領域設計的一些技術架構,這一章更多的是掃盲和拓展眼界。 本章節的後半部分討論的RPC和SOAP,以及基於WebService服務跨語言通信服務,和RPC通信協議,但是WebService這東西現在用的人越來越少
昵稱 阿東
本文作者:張德軍 1. 前言 隨着互聯網技術的不斷髮展,越來越多的人開始嘗試使用或者依賴實時音視頻產品解決團隊溝通與協作問題。在通話過程中,我們時常會遇到因為網絡波動(如擁塞、丟包、延時和抖動等)而導致的音頻卡頓、掉字或者雜音等問題,影響工作效率。 為解決此類音頻弱網問題,業界一般採用前向糾錯(Forward Error Correction,FEC)或者重傳等網絡策略優化方法,但這些方法存在冗餘
昵稱 字節跳動視頻雲
前言 高清直播逐漸普及,硬編碼也成為大勢所趨。在 RTE 2022 大會上,來自 NETINT 的 Jan Ozer 通過一系列的對比測試結果,詳細分享瞭如何為高清直播互動場景進行硬編碼的技術選型。 本文內容基於演講內容進行整理,為方便閲讀略有刪改。 大家好,我是 Jan Ozer。今天我們要討論的是高清直播場景中的編碼技術。我們將聚焦於高清(High-density)視頻直播場景進行今天的分
昵稱 RTE開發者社區
作者:宋宏帥 1 前言 在技術論壇中看到一則很有意思的KVC案例: interface Person : NSObject @property (nonatomic, copy) NSString *name; @property (nonatomic, assign) NSInteger age; @end Person *person = [Person new]; person.name =
昵稱 京東雲開發者
在日常的軟件開發當中,開發者經常會聽到“公共代碼、編碼、碼錶、枚舉值”這樣的名詞,對這些概念可能會有些混淆和認知不透徹,那麼這篇文章會詳細論述一下關於數據字典的相關概念、應用、標準與統一的重要性及其數據來源。 關於“公共代碼、編碼、碼錶、枚舉值”的含義,其本質都可以統一為碼錶,是對某一領域事務或概念的一定範圍的劃分,有相對固定的取值邊界。其最基本的結構就是鍵值對,一般由中英文名稱編碼組成,由可枚舉
@woyaofeidegenggao_6395f006f02b5
昵稱 我要飛的更高
達坦科技專注於打造新一代開源跨雲存儲平台DatenLord,致力於解決多雲架構、多數據中心場景下異構存儲、數據統一管理需求等問題,以滿足不同行業客户對海量數據跨雲、跨數據中心高性能訪問的需求。噴泉碼具有極高的糾錯能力,且具有低延遲、地複雜度、高效率等優點,使其在冷存儲、分佈式存儲、無線通信等領域得到廣泛應用。達坦科技致力於軟硬件融合的解決方案,噴泉碼的高效實現在硬件上,作為公司長期的技術儲備,在本
昵稱 Datenlord
是極致性能,更是最佳商用。 19項第一之上,是63%的極致帶寬降低 近日,2022 MSU世界視頻編碼器大賽成績正式揭曉。報告顯示,阿里媒體處理服務MPS(Alibaba Media Processing Service)s264及s265編碼器共計斬獲19項評測第一,相較大賽指定基準編碼器(AWS Elemental MediaConvert),可再節省高達63% 的碼率,極大幅降低帶寬和
昵稱 CloudImagine
作者:京東零售劉偉東 此文為系列文章第一篇,為淺嘗輒止的引入,目的是為了讓前端從業人員及非從業但是對此領域感興趣的人對於”前端“是幹什麼的這個話題有個無門檻的瞭解。 “前端職能是什麼” 説起"前端",維基百科對這個技術角色的定位是“前端(英語:front-end)和後端(英語:back-end)是描述進程開始和結束的通用詞彙。 前端作用於採集輸入信息,後端進行處理。 計算機程序的界面樣式,視
昵稱 京東雲開發者
LF Edge eKuiper 是 Golang 實現的輕量級物聯網邊緣分析、流式處理開源軟件,可以運行在各類資源受限的邊緣設備上。eKuiper 的主要目標是在邊緣端提供一個流媒體軟件框架(類似於 Apache Flink )。eKuiper 的規則引擎允許用户提供基於 SQL 或基於圖形(類似於 Node-RED)的規則,在幾分鐘內創建物聯網邊緣分析應用。 近日,eKuiper 發佈了 1.8
昵稱 阿里雲開發者
編碼的重要作用 計算機只能處理數字,如果想讓計算機處理人類語言,則需要將字符轉換為數字,而計算機編碼就是將字符轉換為數字的過程。 編碼還可以用於壓縮數據,以便更有效地存儲和傳輸數據。 常見的編碼方式 ASCII 碼 ASCII 碼,可以表示 128 個字符,用一個字節的低 7 位表示,0 ~ 31 是控制字符,比如 換行、回車、刪除 等;32~126 是打印字符,可以通過鍵盤輸入並且能夠顯示出來。
昵稱 5si66p3e
我們在追求怎樣的編碼未來? 無處不在的視頻滲透、井噴式的流量增長、多元的場景技術需求、用户對視頻體驗的“不將就”……音視頻行業的快速發展卻伴隨着“編碼標準升級速度緩慢”、“硬件紅利見底”、“編碼複雜度帶來的成本問題”等眾多挑戰。 視頻編碼還“卷”得動嗎? 究竟怎樣的視頻編碼技術,才能滿足既要又要的體驗與成本平衡? 面向機器視覺的視頻編碼、虛擬現實視頻、智能化應用視頻......前浪翻滾而來,
昵稱 CloudImagine