原创 位圖與布隆過濾器

給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