原创 muduo網絡庫學習筆記(13):TcpConnection生命期的管理

本篇通過分析muduo中TcpConnection對斷開連接事件的處理,來學習muduo網絡庫對TcpConnection生命期的管理。 TcpConnection對連接斷開事件的處理 首先,我們來看一下TcpConnection

原创 高效使用Vim編輯器--Vim編輯器常用命令學習筆記

熟練掌握Vim編輯器的常用命令能大大提高我們文本編輯的效率。 基本操作 我們最初接觸Vim編輯器時,首先學到的不乏以下一些操作: 剛進入Vim編輯器時,我們處於普通模式,在鍵盤上按下i,我們便進入插入模式。在插入模式下,如果按下E

原创 muduo網絡庫學習筆記(9):Reactor模式的關鍵結構

Reactor模式簡介 Reactor的意思是“反應堆”,是一種事件驅動機制。它和普通函數調用的不同之處在於:應用程序不是主動的調用某個API完成處理,而是恰恰相反,Reactor逆置了事件處理流程,應用程序需要提供相應的接口並註

原创 muduo網絡庫學習筆記(8):高效日誌類的封裝

前言 在服務端編程中,日誌是必不可少的。 開發過程中,日誌的存在能方便我們調試錯誤和更好地理解程序;運行過程中,日誌能幫助我們診斷系統故障並處理、記錄系統運行狀態。 muduo日誌類封裝細節 (1)日誌消息有多種級別(level

原创 muduo網絡庫學習筆記(7):線程特定數據

(1)瞭解線程特定數據 在單線程程序中,我們經常要用到“全局變量”以實現多個函數間共享數據。在多線程環境下,由於數據空間是共享的,因此全局變量也爲所有線程所共有。但有時應用程序設計中有必要提供線程私有的全局變量,僅在某個線程中有

原创 SGI STL學習筆記(1):空間配置器(allocator)

SGI STL設計了雙層級配置器來完成空間的配置與釋放。當配置區塊超過128bytes時,調用第一級配置器;當配置區塊小於128bytes時,調用第二級配置器。下面通過源碼來詳細說明。 第一級配置器 __malloc_alloc_

原创 初探JsonCpp - 編譯與基本使用

JSON(JavaScript Object Notation,JS 對象標記) 是一種輕量級的數據交換格式。它基於 ECMAScript (w3c制定的js規範)的一個子集,採用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的

原创 雙向循環鏈表基本操作的實現(C語言)

“Talk is cheap, show you the code”. #include <stdio.h> #include <stdlib.h> // 雙向循環鏈表的節點結構 typedef struct Node { in

原创 C++標準庫類型string用法小結

標準庫類型string表示可變長的字符序列,使用string類型必須首先包含string頭文件。作爲標準庫的一部分,string定義在命名空間std中。 #include <string> using namaspace std::str

原创 nginx學習筆記(6):進程模型的設計

nginx進程模型 nginx採用一個master管理進程、多個worker工作進程(還有可選的cache相關進程)的設計方式: 啓動nginx後(多進程啓動。nginx也可以單進程啓動),我們可以觀察到系統中的進程狀態如下圖(配置文件

原创 muduo網絡庫學習筆記(15):關於使用stdio和iostream的討論

C/C++程序中需要執行輸入/輸出時,我們一般會用到stdio或iostream。stdio指C語言的scanf/printf系列格式化輸入輸出函數,iostream指C++語言的cin/cout輸入輸出對象等。 但是,在真實的項目中很少

原创 理解密碼學中的雙線性映射

回顧 - 什麼是羣 一、定義 定義1 設G是定義了一個二元運算+的集合,如果這個運算滿足下列性質: (1)封閉性——如果a和b都屬於G,則a+b也屬於G。 (2)結合律——對於G中的任意元素a、b和c,都有(a+b)+c=a+(b+c

原创 筆試小技巧--隔板法解排列組合問題(附代碼)

引言 各大互聯網公司的春季招聘都在如火如荼地進行着,在筆試環節,除了考察應聘者(技術崗)的數據結構、計算機網絡等計算機基礎知識外,也不乏一些有趣的數學問題,例如: 一道阿里巴巴2017春季實習生招聘筆試選擇題,大意是:一名程序員需要在週

原创 《計算廣告》學習筆記

第1章 在線廣告綜述

原创 錯誤"error while loading shared libraries: xxx.so.x" 的原因和解決辦法

一般我們在Linux下執行某些外部程序的時候可能會提示找不到共享庫的錯誤,比如: error while loading shared libraries: libprotobuf.so.9: cannot open shared ob