Mudo C 網路庫第五章學習筆記

2022-09-17 14:48:10 字數 916 閱讀 1398

日誌通常用於故障診斷和追蹤(trace), 也可用於效能分析;

日誌通常是分布式系統中事故調查時的唯一線索, 用來追尋蛛絲馬跡, 查出原凶;

關於程序, 日誌通常要記錄:

每條日誌都有時間戳, 這樣就能完整追蹤分布式系統中乙個事件的來龍去脈;

乙個日誌檔案可分為前端(frontend)和後端(backend)兩部分;

對c++程式而言, 最好整個程式(包括主程式和程式庫)都使用相同的日誌庫, 日誌有乙個整體的日誌輸出, 而且不要各個元件有各自的日誌輸出;

muduo沒有用標準庫中的iostream, 而是自己寫的logstream class, 主要是出於效能原因;

功能需求

rolling的條件通常有兩個: 檔案大小(例如每寫滿1gb就換下乙個檔案)和時間(例如每天零點新建乙個日誌檔案, 不論前乙個檔案有沒有寫滿);

日誌庫的壓縮與歸檔(archive)不是日誌庫應該有的功能, 而應該交給專門的指令碼去做;

磁碟空間監控也不是日誌庫的必備功能;

muduo日誌庫: 其一是定期(預設3秒), 將緩衝區內的日誌訊息flush到磁碟;

日誌訊息格式有幾個要點:

效能需求

muduo日誌庫實現了幾點優化措施:

執行緒id是預先格式化為字串, 在輸出日誌訊息時只需要簡單拷貝幾個位元組;

每行日誌訊息的源檔名部分採用了編譯期計算來獲得basename, 避免執行期strrchr()開銷;

多執行緒非同步日誌

我們需要乙個佇列將日誌前端的資料傳送到後端(日誌執行緒);

對於非同步日誌來說, 這是典型的生產速度高於消費速度問題, 會造成資料在記憶體中的堆積, 嚴重時引發效能問題(可用記憶體不足)或程式崩潰(分配記憶體失敗);

效能不能憑感覺說了算, 一定要有典型場景的測試資料做為支撐;

muduo庫的非同步日誌實現用了乙個全域性鎖;

python第五章 Python學習(第五章)

記錄所有的名片字典 card list defshow menu 顯示資訊 print 50 print 歡迎使用 名片管理系統 v1.0 print print 1.新增名片 print 2.顯示全部 print 3.搜尋名片 print print 0.退出系統 print 50 defnew ...

彙編學習筆記 第五章

從鍵盤獲取乙個位元組 輸出乙個位元組 輸出字串 mov dx,offset lable mov ah,09h int 21h cmp的詳細解釋 cf標誌位 無符號數 of標誌位 帶符號數 單標誌條件轉移指令 無符號數條件轉移指令 帶符號數條件轉移指令 cx暫存器條件轉移指令 of 0 的情況比較方便...

python學習筆記第五章

1.物件是屬性和方法的集合。同樣也有繼承機制。init 就是python的建構函式。變數私有化是在變數前加上 繼承機制 class cat def hello self print i m a cat class dog cat def eat self print i eat bone kitty...