原创 Linux信號總結

信號是由用戶、系統或者進程發送給目標進程的信息,用來通知目標進程的狀態改變或系統異常。 發送信號 kill #include <sys/types.h> #include <signal.h> int kill(pid_t pid, in

原创 Linux時間輪應用:關閉非活動連接

介紹 時間輪顧名思義,就是將不同時間的定時任務放在一個輪子上,既然是輪子,肯定是會轉動的,時間輪內指向槽的指針,以恆定的速度順時針轉動,每轉動一步就指向下一個槽。,一次轉動稱爲一次滴答(tick)。一個滴答的時間稱爲時間輪的槽間隔si,也

原创 23種設計模式之策略模式(c++實現)

定義 策略模式:定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立於使用算法的客戶。 Strategy 模式典型的結構圖爲: 大家肯定看着很懵逼,其實第一次接觸類圖的時候我自己也是這樣。 那麼咱們舉個例子

原创 Linux高性能服務器編程springsnail源碼解析(c++負載均衡)

在《Linux高性能服務器編程》一書中爲了幫助大家將書中的知識融匯到實際項目中,作者特意編寫了一個較爲完整的負載均衡服務器程序springsnail。裏面用到了進程池、有限狀態機這些知識點。自己是在網上找到的這個程序的源碼,起初接觸的時候

原创 Linux生產者消費者模型實現

生產者——消費者模型顧名思義,就是一個或多個線程往倉庫生產東西,另外的線程從倉庫拿東西,在咱們的線程池中也有所應用。咱們看看維基的解釋: 生產者消費者問題(英語:Producer-consumer problem),也稱有限緩衝問題(英

原创 暑假留校總結

開學自己就大二了,自己這一年裏面學習了不少的東西,放假回家和同學們聊了一下,感覺自己確確實實提升很大,單就暑假留校的知識就夠自己喝一壺的了。 第一週 學習了文件操作 ,瞭解了Linux的文件結構,大概瞭解了Linux根目錄下主要目錄的作用

原创 atoi函數的實現

最近看完Linux線程然後在看網絡編程,但是網絡編程新概念太難了,就看劍指offer這個書緩緩。裏面由關一個atoi函數實現的問題感覺非常有趣,就介紹給大家。 #include <stdlib.h> int

原创 c++初始化列表的一些知識點

性能優化 在剛接觸c++時候就覺得c++很有意思,比如在c中用”=”賦值的一些語句可以使用”()”進行初始化,但是之前並沒有十分理解初始化相比於賦值語句有什麼優點,後來在學習了類之後,初始化列表的出現,讓我對初始化有了更加深刻的理解。 首

原创 註釋轉換(c++風格轉c風格)

介紹 c語言風格的註釋爲塊註釋,c++風格爲行註釋。 /*塊註釋*/ //行註釋 在項目中人們喜歡用不同風格的註釋,或者兩種風格的註釋混用,這並不影響代碼的功能,但是在一些工具當中要求代碼的註釋風格統一爲c或者c++風格。 所以寫了一個

原创 互斥鎖和條件變量實現讀寫鎖

main函數 test.c #include<stdio.h> #include<unistd.h> #include<pthread.h> #include"rwlock.h" my_pthread_rwlock_t rwlock

原创 同時處理TCP和UDP請求的回射服務器

server.cpp #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<sys/epoll.h> #include<netinet/in.h>

原创 1231 最優佈線問題

題目描述 Description 學校需要將n臺計算機連接起來,不同的2臺計算機之間的連接費用可能是不同的。爲了節省費用,我們考慮採用間接數據傳輸結束,就是一臺計算機可以間接地通過其他計算機實現和另外一臺計算機連接。 爲了使得任意兩臺計

原创 linux兩個線程交替打印數字

#include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<pthread.h> #define COUNT 10 static int i = 1; pth

原创 c++中string類的基本實現

#pragma once #include<iostream> #include<string.h> using std::ostream; using std::istream; class my_string { private:

原创 dup2重定向後的恢復

這周是留校的第二週,寫shell分析參數着實難受,更難受的還在後面,由於自己shell的結構比較奇特,在fork之前已經進行了重定向,導致在excv執行程序之後結果無法打印到屏幕上。好生苦惱,好在萬能的Google解決了這個問題,因此爲大