原创 線程池實現

#include <iostream> #include <signal.h> #include <sys/types.h> #include <fcntl.h> #include <stdio.h> #include <unist

原创 golang實現捧腹網爬取笑話

爬蟲的步驟見:here 以下golang代碼實現對捧腹網笑話的爬取,並保存到本地的joy文件夾(程序會自行創建)內 package main import ( "fmt" "net/http" "os" "regexp"

原创 golang實現百度貼吧併發爬蟲

實現爬蟲的步驟: 明確爬蟲網址以及目的 尋找網址源代碼的特點和規律 使用http編程來抓取源代碼 使用正則表達式進行過濾信息,提取有用信息 package main import ( "fmt" "net/http" "o

原创 go語言實現兩個文件拷貝

參一:需要拷貝文件的路徑 參二:拷貝到某個文件的路徑 package main import ( "fmt" "io" "os" "syscall" ) func CopyFile(path string, copyPat

原创 epoll反應堆模型實現

#include <iostream> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #include <sys/types.h> #includ

原创 unix網絡編程中設置端口複用

使用函數 int setsockopt(int sockfd, int level, int option_name, void *restrict option_value, socklen_t *restrict option_l

原创 unix系統編程day07--線程同步,進程同步

同步概念 線程同步 理解:多個線程之間有序的執行。 數據混亂原因 資源共享(獨享資源不會) 調度隨機(意味着數據訪問出現競爭) 缺乏合理的線程調度機制 互斥量mutex pthread_mutex_t 解釋:可以簡單認爲是一把

原创 unix系統編程day06--Linux線程講解

線程概念 什麼是線程 LWP:light weight process輕量級進程,本質仍是進程(在Linux環境下) 進程:獨立地址空間,擁有PCB 線程:也有PCB,但沒有獨立的地址空間(共享) 區別:在於是否共享地址空間。 獨居

原创 unix系統編程day05

競態條件(時序競態) 個人理解:由於系統中各個進程搶佔cpu時間,導致本應該按照時間發生的事情沒有發生,造成時間上的混亂。 pause函數 函數原型 int pause(void); 作用:掛起當前進程,等待信號來喚醒,處理的

原创 c++泛型編程之定製操作lambda函數

lambda表達式 介紹:由c++11引入,類似匿名函數,解決謂詞只能傳入一個或兩個的問題。 聲明lambda表達式: [capture list] (params list) mutable exception-> return

原创 unix系統編程day04

信號的概念 信號的機制:A給B發送信號,在B收到信號之前執行自己的代碼,收到信號後無論狀態如何,首先處理信號然後去執行代碼,與硬件終端類似–異步模式,但是信號是在軟件層面上實現的,早期常稱爲軟中斷。 信號的特質:信號由於是使用軟件的

原创 unix系統編程day03

管道pipe 具體參考manpage,使用方法比較簡單,注意數據單向流動。 共享存儲映射 mmap函數 函數原型:void * mmap(void * addr, size_t length, int prot, int flags

原创 unix系統編程day02

exec函數組 作用:在程序運行的過程中,再執行一個完整的程序。 execlp函數 解釋:其中l表示list,p表示PATH。 作用:藉助PATH環境變量,加載一個進程,新進程會清空原進程的虛擬地址空間的0-3G空間,但是進程id不

原创 unix系統編程day01

一、進程相關概念 程序與進程   程序:是指編譯好的二進制文件,再磁盤上,不佔用系統資源(cpu,內存,打開的文件,設備,鎖。。。)   進程:是一個抽象的概念,與操作系統原理聯繫緊密,進程是活躍的程序,佔用系統資源(程序運行

原创 makefile知識整理

makefile的三個要素 1. 目標、依賴、命令 makefile的工作原理 1. 首先尋找目標文件所依賴的文件是否存在,如果不存在尋找是否有生成該文件的規則,然後等到所有的依賴文件生成完畢之後,通過命令對這些文件進行組織並生成最