原创 shell入門之變量
1,變量建立 變量名稱不能以數字開頭 var=5 var=hello 可以直接賦值數字和字符串,本質上其實都是字符串,declare -i var變爲整數 添加一個變量set 也可省略,shell變量,只是當前shell和子shel
原创 許可證加解密
license服務器 根據菜單選項製作明文,包括了: 序列號:基於硬件特殊mac計算 signature:文件利用公鑰計算 功能選項:url過濾,病毒掃描,雲查殺等一些特有服務功能 pem:.pem這種文件
原创 fopen fclose fwrite fread
fopen 系統會自動分配緩存,讀取文件需要的io次數會變少,速度更快 不過很不幸的是會有多進程或者多線程的錯亂問題,因此需要加鎖保證執行正確 常用鎖方式:flock,fcntl,lockf lock.l_type = F_WRLC
原创 文件操作:open write read lseek
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <unistd.h> int main
原创 一文掌握MAKEFILE和GCC
CC :=g++ LD :=g++ SRCDIR := src BUILDDIR := build TARGET :=bin/target SRCEXT:=cpp SOURCES:=$(shell find $(SRCDIR) -type
原创 ISO鏡像
ISO文件加載過程 類似grub,ISO有個引導程序ISOLinux.bin 啓動menulist,尋找isolinux.cfg配置文件 ISO安裝過程 ks.cfg是安裝過程的配置文件,可以通過圖形工
原创 系統的PANIC
panic並沒有什麼大不了的,就是禁搶佔,善後, 禁止了搶佔實際上就禁止了調度,因爲禁止搶佔的情況下除非自己放棄cpu才能調度, 但是我們看看那個死循環根本沒有放棄cpu的意思。 發生panic無非就兩種情形,一個是在中斷上下文,另一個是
原创 計算機的硬件速度總結
計算機的硬件速度總結 CPU-3GHZ 每秒執行 3*10^9次/s,也就是1ns執行3次,時鐘週期約0.3ns 光速是 3*10^8m/s=0.3m/ns 0.3ns光行走0.1m=10
原创 網絡IO select epoll
int iResult = recv(s, buffer,1024); /*設置非阻塞模式,立即返回*/ int iResult = ioctlsocket(s, FIOBIO, (unsigned
原创 硬件和軟件
最近在寫shell腳本,晚上在回家的路上,突然想起該怎麼把linux和硬件聯繫到一起呢?請看幾個對話 R師傅: 其實對我碼農來講,唯一可以看到的硬件連接就是USB了,因爲鍵盤是碼農寫軟件和Linux系統交互的平臺,幾乎也是唯一通道,原來
原创 進程棧調用
進程的虛擬內存中的標準內存段佈局 4G 0xffff ffff kernel space, user code write or read segmentation fault 3G 0xbfff ff
原创 易懂的7種排序算法解析和理解
找最值 每次確定一個最值位置,找最值,就是一個全局遍歷過程, 交換找最大值,中間可能有序 對比找最大值,必須全部找出 交換找最大值,保留中間狀態 bubble 對比交換,遍歷0-i可以確定第i+1位置,最值
原创 系統內存和進程內存
===系統內存=== 系統內存的使用情況可以用以下公式表示: MemTotal = MemFree +【Slab+ VmallocUsed + PageTables + KernelStack + HardwareCorrupted +
原创 收發包過程
物理連接,物理標識,網絡標識,端口標識,數據標識 星形聯結,mac地址,ip地址,服務端口,數據協議 ===dns請求爲例 應用層構造DNS包,告訴udp層數據目的8.8.8.8的端口53 udp層構造udp包,數據就是dns包內容,目的
原创 數組和鏈表safe
數組 數組是需要使用連續內存時候申請的一種內存,int a[10],聲明定義必須制定大小 int a[]可作爲參數傳入是代表a的首地址 訪問數組內的數據:a[1]下表方式,其實也是一個地址取值,去a+1的地址上取值*(a+1) 一個數據