原创 基於環形隊列的生產者消費者模型編寫。

1. 環形隊列 在隊列爲空時,生產者必須先運行,消費者不能越過生產者 在隊列爲滿時,消費者先運行,生產者不能超過消費者一圈, 不能同時訪問同一位置: 2. 信號量 sem_t sem;//POSIX的線程標準下的

原创 信號的產生於處理

1. 信號在產生後的三種情況: 1. 阻塞 (blok),進程可以選擇阻塞(blok)某個信號,被阻塞的信號,在產生後將保持未決狀態,直到阻塞被解除,纔有可能抵達該信號。 2. 未決(pending)信號從產生到遞達之間的狀態,就是未決狀

原创 寫時拷貝的兩種方案

1. 什麼是寫時拷貝 寫時拷貝故名思意:是在寫的時候(即改變字符串的時候)纔會真正的開闢空間拷貝(深拷貝),如果只是對數據的讀時,只會對數據進行淺拷貝。 寫時拷貝:引用計數器的淺拷貝,又稱延時拷貝 :寫時拷貝技術是通過"引用計數"實現的,

原创 C語言實現單鏈表面試題--進階

1. 判斷單鏈表是否帶環?若帶環,求環的長度?求環的入口點? 1.先判斷鏈表是否帶環,用快慢指針的方式,快指針pFast,慢指針pSlow; pFast快指針每次向後遍歷兩次,慢指針pSlow每次向後遍歷一次,如果pFast會爲NULL,

原创 利用函數alarm和pause模擬sleep

1. 簡單介紹sig alarm(unsigned int alam) 當在調用alarm()前已經設置了一個鬧鐘,那麼我們可以調用alarm(0)來取消此鬧鐘,並返回剩餘時間 2. int pause(void) pause函數使調用

原创 LINUX--TCP_server端的編寫

1. 解釋套接字 套接字:socket = 主機IP + 主機上的進程(端口號) 標識網絡中的唯一一個進程 Socket:非常類似於電話插座。以一個國家級電話網爲例,電話的通話雙方相當於相互通信的2個進程,區號是它的網絡地址;區內一個

原创 C++入門基礎知識

1. 命名空間 作用: 實際上就是一個由程序設計者命名的內存區域,程序設計者可以根據需要指定一些有名字的空間域,把一些全局實體分別放在各個命名空間中,從而與其他全局實體分隔開來。 訪問方法:用 作用域解析符:: 來訪問,AA : : x

原创 鏈表面試題之複雜鏈表的複製

複雜鏈表的複製:一個鏈表的每個節點,有一個指向next指針指向下一個節點,還有一個RandNext指針指向這個鏈表中的一個隨機節點或者NULL,現在要求實現複製這個鏈表,返回複製後的新鏈表。 //ps: 複雜鏈表的結構 struct

原创 子進程異步等待方式

1. 原理 1、子進程在退出時,會給父進程發送17號信號 SIGCHLD 2、可以對信號SIGCHLD進行自定義動作,執行handler 3、handler是系統回調函數,在收到該信號後,在進程又內核返回用戶態前,處理自定義

原创 路由常見算法

1. 路由算法 路由算法,又名選路算法,可以根據多個特性來加以區分。算法的目的是找到一條從源路由器到目的路由器的“好”路徑(即具有最低費用的路徑)。算法設計者的特定目標影響了該路由協議的操作;具體來說存在着多種路由算法,每種算法對網絡和路

原创 Linux—TCP_server端編寫多路轉接之EPOLL

1、前言 之前我有寫過 利用多路轉接的select的TCP_server,但當時我們提到了很多關於select的缺點: 1、select可監聽的文件描述符有上限制; 2、因爲select參數是輸入輸出型的,所以每次重新設置sel

原创 基於http的在線版日期計算器+雲筆記

1、HTTP概念 超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最爲廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。 1、http的請求報文格式 2、http的響應報文格式 3

原创 linux—TCP_server端編寫之利用select()函數編寫可多用戶同時訪問

1. 回顧多進程、多線程編寫的server 之前我們編寫了多進程、多線程的tcp_server,但我們發現雖然多線程和多進程的編寫簡單,但太佔資源了,當客戶端連接稍微多一點,服務器就有可能奔潰。所以我們今天要利用一種io模式:i/o複用(

原创 二叉搜索樹之—AVL

搜索樹: 搜索樹:又叫二叉排序樹,他是一顆空樹,或者具有以下幾個特性: 1、若它的左子樹不爲空,則左子樹上所有節點的值都小於根節點的值 2、若它的右子樹不爲空,則右子樹上所有節點的值都大於根節點的值 3、它的左右子樹也分別爲二叉搜索樹 索

原创 C++三大特性——多態

1、什麼是多態? 多態:從名字上看就是多種狀態,形態, 舉個簡單的例子: 一個操作符 :& 當&放在一個變量前面,就是區地址操作符;放在類型後面,一般就是引用了。 多態分爲兩種: 靜態多態:在程序編譯期間就確定了形態,例如:函數重