我是跟著陳碩大神的《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之間時,不管是 物體還是背景,置信度比較高...