原创 一個基於protobuf的極簡RPC

前言 RPC採用客戶機/服務器模式實現兩個進程之間的相互通信,socket是RPC經常採用的通信手段之一。當然,除了socket,RPC還有其他的通信方法:http、管道。。。網絡開源的RPC框架也比較多,一個功能比較完善的RPC

原创 libevent eventbuffer讀寫水位思考

讀寫水位的默認值均爲0。 備註:緩衝區evbuffer中的數據量使用evbuffer_get_length(evbuffer*)獲取。 備註:以下讀寫回調都是通過bufferevent_setcb()設置的讀寫回調函數。 讀水位比

原创 Redis 禁止使用耗時命令和時間複雜度爲O(n)的命令

前段時間,我司內網環境發生了一件有關Redis阻塞的事情。由於公司業務規模較大,很多數據保存在Redis中,測試人員壓測時,壓測結果總是不盡人意,出現大批量的timeout的情況,查看服務器時發現CPU飆升,導致請求處理緩慢。經過

原创 Qt VS中設置.ui文件的生成的.h的目錄

在解決方案資源管理器中,右鍵.ui文件,單擊屬性,打開屬性頁: 選擇uic, 在Output Directory中設置生成的.h文件的目錄。

原创 C++11 atomic_flag總結

// atomic_flag as a spinning lock #include <iostream> // std::cout #include <atomic> // std::atomic_f

原创 IOCP完整例子

本文是我在學習IOCP的時候,第一次寫一個完整的例子出來,當然了,參考了CSDN上一些朋友的博客,大部分都是按照他們的思路寫的,畢竟我是初學者,參考現成的學起來比較快。當然了,真正用到項目中的IOCP肯定不止這麼簡單的,還有內存池

原创 C++ 自旋鎖簡單實現

C++11 版不帶自旋鎖的API,我們可以手動實現,有的時候線程執行的功能比較簡單,或者說代碼量較少,如果使用mutex的話,開銷比較大,但是使用mutex的鎖,線程處於非運行態時不佔用CPU,這是其他的線程可以運行,使用自旋鎖時

原创 IOCP小結

文章目錄一 什麼是完成端口(completion port)對象二 使用IOCP的方法創建完成端口對象I/O服務線程和完成端口完成端口和重疊I/O三 恰當地關閉IOCP四 IOCP大概的處理流程五 一個簡單示例具體編程流程 當應用

原创 淺談讀寫鎖的使用

一、讀寫鎖是什麼? 讀寫鎖其實還是一種鎖,是給一段臨界區代碼加鎖,但是此加鎖是在進行寫操作的時候纔會互斥,而在進行讀的時候是可以共享的進行訪問臨界區的。 讀寫鎖和互斥量(互斥鎖)很類似,是另一種線程同步機制,但不屬於POSIX標準

原创 tinyxml庫使用實例

讀取和設置xml配置文件是最常用的操作,TinyXML是一個開源的解析XML的C++解析庫,能夠在Windows或Linux中編譯。這個解析庫的模型通過解析XML文件,然後在內存中生成DOM模型,從而讓我們很方便的遍歷這棵XML樹

原创 PyCharm報錯ModuleNotFoundError: No module named requests

已經安裝了requests庫,在PyCharm中python文件中import requests卻依舊報錯,報錯如下: Traceback (most recent call last): File "D:/Python Te

原创 python爬蟲之BeautifulSoup4基礎教程

BeautifulSoup是python解析html非常好用的第三方庫! 文章目錄安裝導入解析庫使用技巧BeautifulSoup4四大對象種類Tag:Tag通俗點講就是HTML中的一個個標籤NavigableString:獲取標

原创 主從reactor模式

muduo中,類EventLoopThreadPool的構造函數將成員numThreads_設置爲0,表示默認不開啓主從Reactor模式,即單Reactor模式。 單Reactor模式中,該Reactor負責監聽新連接的到來、套

原创 std::condition_variable notify_one()與notify_all()的區別

notify_one()與notify_all()常用來喚醒阻塞的線程,線程被喚醒後立即嘗試獲得鎖。 notify_one()因爲只喚醒一個線程,不存在鎖爭用,所以能夠立即獲得鎖。其餘的線程不會被喚醒,需要等待再次調用notify