原创 位圖與布隆過濾器
給40億個不重複的無符號整數,沒排過序。給一個無符號整數,如何快速判斷一個數是否在這40億個數中。這個問題怎麼解決呢?【位圖方法】:位圖(BitMap)是用一個數組中的每個數據的每個二進制位表示一個數是否存在。1表示存在,0表示不存在。相當
原创 C庫函數和系統調用的區別
Linux下對文件操作有兩種方式:系統調用(system call)和庫函數調用(Library functions)fork完後:(1)有兩個返回值,子進程返回0,父進程返回子進程的id(2)父子進程誰先運行不確定,由調度系統說了算,但是
原创 linux下的進程通信(IPC)的方式--信號量
1、相關概念 信號量:本質是一種數據操作鎖,本身不具有數據交換的功能,而是通過其他的通信資源(文件,外部設備)實現進程間通信,本身是一種外部資源的標識。相當於計數器,記錄臨界資源內資源可用數,保證進入臨界區時有資源可用。負責數據操作
原创 信號
1、概念 ctrl-c給進程發送一個SIGINT的信號,這個信號的默認處理動作是終止進程,ctrl-c產生的信號只能發給前臺進程 進程收到信號,不是立即處理,而是先記錄起來恰當時候再處理2、信號列表 使用kill -l顯
原创 STL-空間配置器
1、爲什麼需要空間配置器?內存碎片:頻繁分配小內存導致分配不出來大內存,這就是外碎片;並且頻繁分配小內存效率低比如,系統依次分配了16、8、16、4、8byte,還剩一個8byte未分配,這時要分配一個24byte的空間,系統回收兩個16b
原创 抓包工具tcpdump
TcpDump是Linux中強大的網絡數據採集分析工具之一。根據使用者的定義對網絡上的數據包進行截獲的包分析工具。 基本上tcpdump的總的輸出格式爲:系統時間 來源主機.端口 > 目標主機.端口 數據包參數 下面舉例說明: Tcpdum
原创 shell腳本--符號篇
shell執行腳本shell是批處理語言(一次處理批量任務)shell寫的都是文本文件,不能讓操作系統運行它,而是fork創建子進程, 子進程程序替換shell的解釋器,再把這個文本文件當做命令行參數傳給bash解釋器,子進程一行一行讀取命
原创 五種I/O模型
遠離CPU,存儲能力比較大; 接近CPU,成本大,但是性能好五種I/O模型包括:阻塞、非阻塞、多路複用、信號驅動、異步I/O模型1、阻塞I/O (使用廣泛) 在調用read()/recvfrom()函數時,導致應用程序阻塞;若數
原创 shell腳本--語法篇
條件測試1、條件測試test或[ ](測試條件是真是假)例如:字符串比較#!/bin/bashread datatest "$data" == "hello" //注意等號兩邊有空格 或者 [ $data == "hello" ]echo
原创 生產者與消費者模型
基於鏈表的,其空間可以動態分配#include<stdio.h>#include<stdlib.h>#include<pthread.h>pthread_cond_t cond;pthread_mutex_t lock;typedef st
原创 cookie和session
Cookie概念 在瀏覽某些 網站 時,這些網站會把 一些數據存在 客戶端 , 用於使用網站 等跟蹤用戶,實現用戶自定義 功能. 是否設置過期時間: 如果不設置 過期時間,則表示這個 Cookie
原创 信號的捕捉
1、如何實現信號的捕捉 2、sigaction函數 include<signal.h> int sigaction(int signo, const struct sigaction *act, struct sigaction *
原创 線程
線程的控制1、相關概念 進程:承擔分配系統資源的一個基本實體;進程獨佔資源,互相之間不影響 線程:操作系統調度的基本單位;線程是共享的2、特點 線程共享進程的資源和環境有: (1)文件描述符表 (2)自定義的信號處理函數
原创 TCP服務器,實現client發送消息,server接收消息
server.c#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<string.h>#include<netinet/in.h>#include<arp
原创 多生產者多消費者基於POSIX版本信號量的同步與互斥
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>#include <semaphore.h>#in