Coke(二):便捷地發起Http請求
Coke項目Github主頁。 在這個時間點開發本項目,有以下幾點考慮 常用的編譯器對C++ 20的支持已經逐步完善,本項目依賴於GCC = 11或Clang = 15 常用的操作系統發行版支持了新編譯器,例如CentOS Stream 8、Ubuntu 22.04、Fedora 38等 C++ Workflow使用回調函數的方式組織異步任務,一部分習慣寫同步代碼的用户可能會對此感到困擾,
昵称 kedixa
贡献者58
粉丝0
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
一 什麼是協程 協程現在已經不是一個新的技術了,但是由於之前一直在用較低版本的c++,沒什麼機會使用協程。最近寫了不少go的代碼,接觸到了協程,所以想從零開始學習一下協程。 1. 到底什麼是協程 之前聽説協程的時候,大家都講協程就是執行在用户態的微線程,加上go中協程的使用和線程差不多,我也就一直這樣理解了。但是真正定義協程的功能是:可以隨時的掛起和恢復,它允許多個入口點在不同的執行點掛起和恢復,
昵称 飛翔荷蘭人
協程(Coroutine)是什麼? 協程就是用户態的線程。 這樣解釋可能過於抽象,讓我們先來回顧一下,另外2個更常見的概念,進程(Process)與線程(Thread)。 「進程是操作系統分配資源的基本單位」,只有在進程內才可以進行內存分配釋放、文件讀寫、網卡數據的接收與發送等的資源操作。 「線程是操作系統調度的基本單位」。 進程和線程的狀態對應用程序透明,並且在內核態中完成調度。 協程對應用程序
昵称 後端開發工程實踐
前言 最近學習了一下C++協程,這篇文章將介紹協程的相關概念,以及在C++中如何使用協程。 什麼是協程 C++中,協程(coroutines)可以理解為一個可以暫停和恢復執行的函數。什麼意思呢?例如有以下協程函數: Task taskFunc() { ... co_await doSomething(); // 1 doSomething2();
昵称 mrbone11
昵称 斯達克
本文來源razorcat.com ,由 Razorcat 合作伙伴及 TESSY 授權分銷商——龍智翻譯整理。旨在為國內用户分享介紹 TESSY 對 ABIX HiperSIM 的集成支持,及其在 MELEXIS MLX16 汽車嵌入式系統開發中的應用價值。 Razorcat 的 C/C++ 單元與集成測試工具 TESSY,現已支持 ABIX HiperSIM 模擬器,可用於基於 MELEXIS
昵称 龍智DevSecOps
2020年7月29號下午2點,我們在北京五道口搜狐網絡大廈開源了Workflow。 藉此三週年的機會,統計了開源以來的一些數據。很開心看到Workflow依然持續獲得很多開發者的支持,也很開心看到我們團隊也確實做到堅持初心。以下分享出來和大家一起回顧,過去變幻莫測的三年內,能夠堅持做一件有趣而有意義的事情是什麼樣的體驗。 GitHub : https://github.com/sogou/work
昵称 1412
Boost.Asio是Boost庫中非常著名的I/O組件,是用於網絡和低層IO編程的跨平台C++庫,為開發者提供了C++環境下穩定的異步模型。本文將介紹Boost庫中Asio的結構及相關異步編程。 Asio三大組件 io_object I/O對象的集合,其中包含大家所熟悉的socket、deadline_timer等對象,主要功能是提供接口給用户使用。 services服務 邏輯功能的實現者,其中
昵称 donnytab
所有權 所有權(系統)是 Rust 最為與眾不同的特性,它讓 Rust 無需垃圾回收器(garbage collector)即可保證內存安全。因此,理解 Rust 中所有權的運作方式非常重要。 這裏是非常重非常重的一個知識點,這裏一定要打好基礎. 因為所有權對很多開發者來説都是一個新概念,需要一些時間來適應。好消息是隨着你對 Rust 和所有權系統的規則越來越有經驗,你就越能自然地編寫出安全和高效
昵称 粘豆包
書籍:Programming: Principles and Practice Using C++ 作者:Bjarne Stroustrup 出版:Addison-Wesley Professional 編輯:陳萍萍的公主@一點人工一點智能 下載:書籍下載-《C++編程原理與實踐(第3版)》 01 書籍介紹 《C++編程原理與實踐(第3版)》旨在幫助每一位願意付出
昵称 一點人工一點智能
由於我在工作環境中不斷由於需要為了不同硬件設備寫新的串口通信庫,所以我寫了一個集成了 future/promise 的異步串口通信庫,並且已經用在了每天有數十萬人使用的生產環境設備上,下面分享一下如何從零開始構建一個集成 C++11 的 future/promise 機制的實用的異步串口通信庫。 1. 異步串口通信庫的設計思路 設計思路: 首先創建一個串口通信工具庫,支持同步方式的串口消息收發
昵称 SHERlocked93
各位開發者好,久違的Workflow架構系列追更了~ 在C++高併發場景,定時功能的實現有三大難題:高效、精準、原子性。 除了定時任務隨時可能到期、而進程隨時可能要退出之外,最近Workflow甚至為定時任務增加了取消功能,導致任務可能被框架調起之前被用户取消,或者創建之後不想執行直接刪除等情況,而這些情況大部分來説都是由不同線程執行的,因此其中的併發處理可謂教科書級別! 那麼就和大家一起看看Wo
昵称 1412
1. 數據包封裝 傳輸層及其以下的機制由內核提供,應用層由用户進程提供(後面將介紹如何使用 socket API編寫應用程序),應用程序對通訊數據的含義進行解釋,而傳輸層及其以下 處理通訊的細節,將數據從一台計算機通過一定的路徑發送到另一台計算機。應用層 數據通過協議棧發到網絡上時,每層協議都要加上一個數據首部(header),稱為封裝 (Encapsulation),如下圖所示 不同的協議層對
昵称 輕口味
1. tcp狀態轉換圖 這個圖N多人都知道,它排除和定位網絡或系統故障時大有幫助,但是怎樣牢牢地將這 張圖刻在腦中呢?那麼你就一定要對這張圖的每一個狀態,及轉換的過程有深刻 的認識, 不能只停留在一知半解之中。下面對這張圖的11種狀態詳細解析一下,以便加強記憶!不過在這之前,先回顧一下TCP建立連接的三次握手過程,以及關閉連接的四次握手過程。 1.1建立連接協議(三次握手) 客户端發送
昵称 輕口味
1. 什麼是路由(route)? 網絡信息從信源到信宿的路徑。路由是指路由器從一個接口上收到數據包,根據數據包的目的地址進行定向並轉發到另一個接口的過程。 路由通常與橋接來對比,在粗心的人看來,它們似乎完成的是同樣的事。它們的主要區別在於橋接發生在OSI參考模型的第二層(數據鏈路層),而路由發生在第三層(網絡層)。這一區別使二者在傳遞信息的過程中使用不同的信息,從而以不同的方式來完成其任務。
昵称 輕口味
當 TCP 連接中的接收方應用程序不調用 recv() (或類似的接收函數,如 read()) 時,會發生一系列由 TCP 協議棧自動處理的情況,核心是 TCP 的流量控制機制會介入。 我們假設有兩個主要部分:發送方 (Sender) 和 接收方 (Receiver)。每一方都有應用程序層 (App) 和內核 TCP 層 (Kernel)。 階段 1: 正常數據傳輸 1、接收方 App 正常調
昵称 CppPlayer
開源項目Workflow是C++異步調度的高性能框架,廣泛用於高吞吐低延遲的網絡服務器、並行計算和組裝複雜網絡請求的客户端等領域。在異步調度的編程範式下,想要實現併發控制是非常困難的,因為一旦無法做到無阻塞的調度,那麼框架性能就會大打折扣。 線上非常常見的場景是:異步服務器需要限制用户的併發,從而保護有限的後端資源比如GPU計算,並在超載時可以立刻拒絕用户或者實施排隊等待的處理策略。 一個好的併發
昵称 1412
B站熱搜榜是嗶哩嗶哩網站上展示當前熱門搜索話題的榜單。它反映了用户在B站上關注度較高的內容,涵蓋了各種視頻主題,如動畫、遊戲、科技、娛樂等。用户可以通過B站熱搜榜快速瞭解到當前站內的熱門趨勢和流行話題。 B站熱搜榜API是為開發者提供的一種接口,使得開發者能夠通過編程的方式獲取B站熱搜榜的相關數據。開發者可以利用該API獲取熱搜話題的具體信息,如話題名稱、熱度值、相關視頻數量等。它為開發者
昵称 冪簡集成
前言 大家有沒有遇到過,代碼跑着跑着,線程突然搶資源搶瘋了?其實,這都是“多線程同步”在作怪。多線程同步是個老生常談的話題,可每次真正要處理時還是讓人頭疼。這篇文章,帶你從頭到尾掌握 Linux 的多線程同步,把概念講成大白話,讓你看了不再迷糊,還能拿出來裝一裝逼!不管是“鎖”、“信號量”,還是“條件變量”,我們都一網打盡,趕緊點贊收藏,一文搞懂! 一、什麼是線程同步?——“排隊來操作,按規矩走”
昵称 小康
編譯器優化如何讓多線程代碼"失效":從彙編視角解密數據競爭謎題 在多線程編程中,我們常遇到一個反直覺現象:關閉編譯器優化反而能暴露預期的數據競爭問題。本文通過分析MSVC編譯器對同一代碼的不同優化策略,揭示現代編譯器如何通過指令重排和內存訪問優化,徹底改變多線程程序的執行軌跡。 一、現象之謎:優化等級決定程序行為 當使用/O2優化編譯給定代碼時,程序輸出穩定在10萬或20萬這兩個確定值,而非預期的
昵称 點墨
PHP (Hypertext Preprocessor) 是一種流行的開源腳本語言,特別適合於 Web 開發。PHP 代碼通常嵌入到 HTML 中,用於生成動態網頁。對於初學者來説,瞭解一些基礎的 PHP 指令是入門的關鍵。本文將為新手介紹 PHP 語言中常用的指令及其基礎操作,幫助你快速上手 PHP 開發。 1. PHP 文件的基本結構 PHP 代碼通常放在 .php 文件中,文件中的 PHP
昵称 wanhuabandeshuitong
複製失效問題 問題描述 在Qt 6.2.3中使用QWebEngineView嵌套網頁時,通過JavaScript的navigator.clipboard.write()複製圖片無響應,控制枱報錯: Uncaught TypeError: navigator.clipboard.write is not a function 根本原因 安全上下文限制 clipboard.write()
昵称 點墨
寫代碼時隨手寫下的函數調用,背後藏着一套計算機嚴格遵守的"操作手冊"。為什麼參數傳遞要"倒着來"?棧幀是如何"搭起來"又"拆乾淨"的?今天就用32位程序的實例,帶你透過彙編指令看清函數調用的底層邏輯。 一、從一段加法代碼説起 先看這段再普通不過的代碼: int add_func(int a, int b) { int sum = 0; sum = a + b; return
昵称 深盾安全