學習一下muduo網路庫(一)

2021-09-29 12:23:55 字數 3385 閱讀 5709

我是跟著陳碩大神的《linux多執行緒服務端程式設計:使用muduo c++網路庫》書學習muduo的。

書看了不到1/3,一直對著書和**學習,還是有些累的,而且根據我以往的經驗,我看書看完後,一般就不去管它了,久而久之,我就忘記了我看過/學過的內容了(我一直都覺得我的記憶力只有7天),因此我打算寫寫自己至今的讀書心得吧

書中丟擲了許多多執行緒程式設計方面的思考,需要慢慢理解。

muduo中也有許多c++11的程式設計技巧和程式設計思想。

解決問題時,要解決的子問題,以及提出的解決方案可能帶來的新問題。

要實現乙個功能,要考慮設計這個功能時,可能會遇到的問題,該怎麼解決呢?為什麼這樣解決比較好呢?

muduo/base下的標頭檔案

這些標頭檔案的檔名也對應了muduo庫在base資料夾下實現的功能

├── asynclogging.h					非同步日誌backend:採用可擴充的buffer塊

├── atomic.h 原子操作與原子整數

├── blockingqueue.h 無界阻塞佇列(生產者消費者佇列):用鍊錶實現(猜測)

├── boundedblockingqueue.h 有界阻塞佇列:用陣列實現(猜測)

├── condition.h 條件變數,需與mutex.h一同使用:封裝系統呼叫

├── copyable.h 用於標識值型別(可複製)

├── countdownlatch.h 倒計時門閂

├── currentthread.h 當前執行緒工具函式,實現方式值得學習

├── date.h julian日期庫(即公曆)

├── exception.h 帶stack trace的異常基類

├── fileutil.h

├── gzipfile.h

├── logfile.h

├── logging.h 簡單的日誌,可搭配asynclogging使用

├── logstream.h

├── mutex.h 互斥器:封裝系統呼叫

├── noncopyable.h 用於標識物件型別(不可複製)

├── processinfo.h 程序資訊

├── singleton.h 執行緒安全的singleton

├── stringpiece.h google開源**中用於字串引數傳遞的型別

├── thread.h 執行緒物件:使用pthread_create庫呼叫

├── threadlocal.h 執行緒區域性資料

├── threadlocalsingleton.h

├── threadpool.h 固定大小執行緒池

├── timestamp.h utc時間戳

├── timezone.h 時區與夏令時

├── types.h 基本型別的宣告,包括muduo::string

└── weakcallback.h

muduo/net下的標頭檔案"##"標記的類為使用者不可見的內部類

.

├── acceptor.h ##接受器,用於服務端接受連線

├── boilerplate.h

├── buffer.h 緩衝區,非阻塞io必備

├── callbacks.h

├── channel.h 用於每個socket連線的事件分發

├── connector.h ##聯結器,用於客戶端發起連線

├── endian.h 網路位元組序與本機位元組序的轉換

├── eventloop.h 事件分發器:乙個執行緒只能有乙個

├── eventloopthread.h 新建乙個專門用於eventloop的執行緒

├── eventloopthreadpool.h muduo預設多執行緒io模型

├── http 簡單的http伺服器實現

├── inetaddress.h ip位址的簡單封裝

├── inspect 窺探器,用於報告程序狀態

│ ├── inspector.h

│ ├── performanceinspector.h

│ ├── processinspector.h

│ ├── systeminspector.h

│ └── tests

├── poller ##poll(2)和epoll(4)兩種io multiplexing後端

│ ├── epollpoller.h

│ └── pollpoller.h

├── poller.h ##io multiplexing的基類介面

├── protobuf

│ ├── bufferstream.h

│ └── protobufcodeclite.h

├── protorpc

│ ├── google-inl.h

│ ├── rpcchannel.h

│ ├── rpccodec.h

│ └── rpcserver.h

├── socket.h ##封裝sockets描述符,負責關閉連線

├── socketsops.h ##封裝底層的sockets api

├── tcpclient.h tcp客戶端

├── tcpconnection.h 封裝tcp連線

├── tcpserver.h tcp伺服器

├── timer.h ##定時器

├── timerid.h 定時器id:用於唯一標識定時器

├── timerqueue.h ##定時器佇列:按照過期時間排序,越早過期排的越靠前

└── zlibstream.h

net庫下標頭檔案包含關係

muduo 日誌庫學習 一

大佬部落格 muduo的日誌庫由logstream logging logfile asynclogging組成。這裡主要說明一下,這些檔案 主要是檔案裡面對應的類 之間是怎麼關聯,並協同工作的。logstream類裡面有乙個buffer成員 乙個模板類,並非muduo buffer類 該類主要負責...

學習一下 spark kryo

property name default meaning spark.kryo.classestoregister none 如果您使用kryo序列化,請給出乙個以逗號分隔的自定義類名稱list列表,以向kryo註冊。有關更多細節,請參閱調優指南 tuning guide spark.kryo.r...

FocalLoss學習一下

0,會減少相對於好區分樣本 就是負樣本,也就是背景比較多的樣本 的損失,而將重心轉移到難區分的,而且比較容易誤分類的樣本 也就是正樣本 背景不會占太多,或者叫難負樣本 難區分的負樣本,一般資料集中它們的數量少 上面來。下面來具體理解下。當 概率值在0.6 1之間時,不管是 物體還是背景,置信度比較高...