1.linux 基礎
目錄結構 檔案型別 檔案許可權 命令
1)/etc /boot /bin /home /lib /proc /usr /dev mnt
2)-普通檔案 d目錄檔案 p管道檔案 l鏈結檔案 c,b裝置檔案 s套接字檔案
3)許可權 chmod , r:4 w:2 x:1 文字設定法 數字設定法
u 屬 g 組 o 其他
命令:ls -l(顯示許可權)
命令:chmod u+x a.c (給檔案a.c的屬加x許可權)
4)檔案:cd,touch,mkdir,cp,rm,mv,cat,more,less,tail,head,find,grep,tar
程序:ps -ef, top ,& (放後台),jobs,
vi/vim 使用者管理 su
2.gcc /g++ gdb 除錯 makefile
main.c
預編譯 編譯 彙編 鏈結
gcc -e main.c -o main.i
gcc -s main.i -o main.s
gcc -c main.s -o main.o
gcc -o main main.o
四句合一:gcc -c main.c main.o
3.makefile/makefile 管理工程 make
vi makefile(**如下)
all:main
main:main.o add.c max.o
(tab鍵)gcc -o main main.o add.o max.o
main.o:main.c
(tab鍵)gcc -c main.c
add.o:add.c
gcc -c add.c
max.o:max.c
gcc -c max.c
clean:
rm -rf *.o main
4. gdb除錯 多執行緒 多程序,編譯加上 -g 包含除錯資訊
除錯的是可執行檔案(gdb main)
命令:gcc -o mian mian.c -g ,gdb main
l(顯示十行**)
l 2(保證顯示第2行的**)
l add.c:1(去add.c的第1行)
b 3(給剛才顯示的**中第3行加斷點)
b max(給max.c的檔案中加斷點)
r(執行)
p(列印)
n(下一行)
bt(現在執行到**,函式呼叫棧關係)
s(進入函式)
finish(退出方法)
q(退出)
threads
thread id(多執行緒除錯)
5.庫檔案 :存放的是預先編譯好的方法集合 標頭檔案 (.h): /usr/include/
可執行程式: /bin /usr/bin 庫檔案:/lib /usr/lib
靜態庫:libxx.a 複製過來
共享庫:libxx.so 標記一下,不複製 ldd檢視可執行程式用到了哪些共享庫
靜態庫:命令: ar crv lib***.a add.o max.o *.o
【crv:c建立庫,r把方法新增到庫里,v顯示資訊】
庫的使用編譯命令:gcc -o main mian.c -l/home/stu/mydir0228 -lfoo
(-l後加路徑,鏈結的時候到這個路徑下找,-l後加靜態庫庫名)
生成共享庫命令:gcc -shared -fpic -o lib***.so *.o
【-fpic:與**位置無關】
庫的使用編譯命令:gcc -o main mian.c -l/home/stu/mydir0228 -lfoo
(-l後加路徑,鏈結的時候到這個路徑下找,編譯的時候找不到,-l後加靜態庫庫名)
命令: ldd main 檢視可執行程式用到了哪些共享庫
一般應該把庫放在標準路徑下,不在的話用命令拷貝到/usr/lib下。
用管理員身份拷貝命令:mv libfoo.so /usr/lib
6.程序3個基本狀態:就緒 執行 阻塞
main.c存放在磁碟中,執行的時候,將io中磁碟上拷貝到記憶體上,然後執行命令,正在執行的命令,就是程序。
作業系統
程序 併發(同段時間,交替進行) 並行(同時進行,多個處理器)
7.複製程序 fork 替換程序 exec 僵死程序 訊號 kill() signal()
(q) 15 (強制結束) 9 (複製) 2 sigint (子程序結束給父程序傳送)17sigchld
輸入命令檢視訊號意義:vi /usr/include/bits/signum.h
fork + exec 新程序
檔案描述符 open write read clone 父程序開啟的檔案,子程序也可以共享訪問。
8.程序間通訊:管道 共享記憶體 訊息佇列 套接字 訊號量(多個程序)
管道:有名和無名管道的區別,寫入的資料在記憶體中,半雙工
9.執行緒: 同步方法:訊號量(乙個程序中的多個執行緒用的)( 二值訊號量 計數訊號量)
互斥鎖 條件變數 讀寫鎖
執行緒安全:同步 可重入函式 strtok strtok_r
ps -elf 【l顯示出線程資訊】
10.網路:分層 :應用層 傳輸層 網路層 資料鏈路層
ip mac 埠號 網路協議:http(應用) tcp(傳輸) ip(網路) arp(資料鏈路)
tcp/udp程式設計流程
tcp :面向連線的,可靠的,流式服務
(面向連線:三次握手,四次揮手)
(可靠:應答確認,超時重傳,滑動視窗,流量控制)
(流式服務:多個send(),可能一起傳送,會發生粘包)
udp :無連線的,不可靠的,資料報
狀態轉移圖 time_wait 存在的意義:
1.可靠的終止tcp連線
2.遲來的報文能被識別並被丟棄。
客戶端的connect()時候發生三次握手
listen(sockfd,5) linux:已完成三次握手的長度
unix:已完成+未完成的長度
多執行緒 多程序 處理併發
http協議 www.baidu.com
埠號ip:80
長連線:1次連線,多次請求
200:成功
500:伺服器錯誤
400:客戶端錯誤 403 404
11.select
2 = select() (2代表總共有兩個描述符)
n == -1失敗
n ==0 超時
n > 0 有n個描述符有事件
select過程:
本文是自己學習的筆記,都是重點,但是沒有特別詳細,可根據本文繼續學習,一起加油。
基礎知識複習
總結 1.閉包 閉包的好處就是讓乙個變數常駐記憶體,供後續的程式使用 2.檢視乙個物件是可迭代物件的方法 1 使用dir 函式.如果結果中有 iter 就是可迭代物件 print dir obj 2 通過isinstance 函式,返回true就是可迭代物件 from collections imp...
linux基礎知識點複習
暫時先放一些linux的一些操作的東西 1 vm 虛擬機器 2 redhad 作業系統 3 xshell 終端軟體 4 notepad 編碼 5 課件 思維導圖 mindmanage word ppt xshell nat模式連線 ssh ip位址 注意 1 必須要有網 2 虛擬機器的網絡卡要開啟 ...
c基礎知識複習
c的發展歷程 c原本是為了開發unix作業系統而設計的語言 如此說,應該c比unix更早問世,而事實並非如此,最早的unix是由彙編寫的 c語言本來是美國人開發的,解讀c的宣告,最好還是用英語來讀 解讀c宣告的步驟 1 首先著眼於識別符號 變數名或者函式名 2 從距離識別符號最近的地方開始,依照優先...