原创 Unix網絡編程—— I/O複用之select

Unix的五種I/O模型 阻塞式I/O 非阻塞式I/O I/O複用(select poll) 信號驅動式I/O(SIGIO) 異步I/O(POSIX的aio系列函數) 阻塞與非阻塞I/O 最流行的I/O模型是阻塞式I/O,一般

原创 【C++雜談】EA創建C++項目的UML

奇葩的MARKDOWN:1.不自動換行 2.上傳的圖片不顯示 這幾天爲了對其他產品提供服務,把工程做了一個比較大的調整,在公司用EA畫了一下新的類圖關係,但家裏電腦木有裝EA,而且最近也比較忙,EA的使用就直接放個

原创 more effective c++——Item M29 引用計數(二)帶靜態成員變量的rfstring類實現

more effective c++——Item M29 引用計數(一)簡略的rfstring類設計和寫時拷貝 這篇博客中所實現的引用計數還存在未解決的問題——如何通過相同的值多次構造rfstring對象時,防止多次在堆上分配

原创 Unix網絡編程——Mongoose開源項目源碼解讀(1):概述

參考資料:https://docs.cesanta.com/mongoose/master/ 源碼下載地址:https://github.com/cesanta/mongoose 當前最新版本號:Mongoose 6.7

原创 雙向鏈表的宏實現——解析shttpd的鏈表實現

shttpd是一個開源的跨平臺的輕量級web服務框架,源碼下載地址。這裏是使用的1.42版本。 shttpd中雙向鏈表的功能和內核雙向鏈表一致,都是定義一個存放前後指針的節點,將節點存放到某個結構體中,該結構體中的節點關聯起來,然

原创 LeetCode之遞歸——楊輝三角

鏈接:楊輝三角 描述: 給定一個非負整數 numRows,生成楊輝三角的前 numRows 行。比如給定5,則生成以下數組。 1 1 1

原创 LeetCode之遞歸——遞歸的記憶化(斐波那契數、爬樓梯)

在遞歸中由於需要調用自身可能會導致一些重複的計算,函數的調用不僅需要時間,而且也會暫用棧上的空間。有時候如果調用的深度太深,還會導致無限循環的問題(實際上是深度太深,要長時間的調用,導致無法在預期的時間內返回)。要解決這個問題,

原创 LeetCode之遞歸——楊輝三角2(獲取楊輝三角的第N行)

鏈接:獲取楊輝三角的第N行 描述: 給定一個非負索引 k,其中 k ≤ 33,返回楊輝三角的第 k 行。例如,輸入: 3,輸出: [1,3,3,1]。你可以優化你的算法到 O(k) 空間複雜度嗎? 思路: 參考楊輝三角很容易

原创 LeetCode之遞歸——兩兩交換鏈表中的節點

鏈接: 兩兩交換鏈表中的節點 描述: 給定一個鏈表,兩兩交換其中相鄰的節點,並返回交換後的鏈表。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。 示例: 給定 1->2->3->4, 你應該返回 2->1->4->

原创 [C++雜談]——使用7-zip和winrar解壓文件,以及文件解包

接到個需求,要把一個.gz文件解壓出來,得到.dat文件。這個dat文件是按照一定的格式組成的包,需要將他按照文件結構再次解壓一遍,得到真正想要的文件。以前做過使用WinRAR解壓zip文件的需求,在此將兩個記錄一下,以便日後查閱

原创 [C++雜談]——C++類的大小

說明: 1.非純虛函數的所有成員函數都不佔類的大小 2.純虛函數由於需要有一個指針指向虛表,因此會生成一個虛指針,佔用4個字節 3.成員變量根據對齊規則不同而佔用不同的內存 4.靜態函數以及靜態成員變量都不佔用類的大小

原创 [Linux編程]VIMTUTOR

聲明:本教程爲vim自帶的教程部分截取,在shell輸入vimtutor或者vim tutor即可得到原始教程。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

原创 Unix網絡編程——常見服務器模型

** 常見服務器模型: ** - 循環服務器 - 併發服務器 簡單的併發服務器模型 使用線程池或進程池的服務器模型 使用I/O複用的併發服務器模塊 UDP循環服務器模型 // UDP循環服務器模型 struct so

原创 more effective c++——Item M29 引用計數(三)帶引用計數的基類的實現

more effective c++——Item M29 引用計數(一)和more effective c++——Item M29 引用計數(二)這兩篇都是針對char *的實現,雖然能夠正常工作,但是存在以下問題: 1.用戶類仍

原创 effective C++——第二章:構造、析構和賦值(item11~item17)

條款11: 爲需要動態分配內存的類聲明一個拷貝構造函數和一個賦值操作符 爲動態內存分配的類提供拷貝構造與賦值操作符,以避免使用缺省的拷貝構造與缺省賦值操作時由於類的成員變量間的內存拷貝造成程序crash。 拷貝構造函數和賦值運算