20145326蔡馨熠《信息安全系統設計》第2周學習總結

20145326蔡馨熠《信息安全系統設計》第2周學習總結

教材學習內容總結

1、計算機系統與連接git

  • 信息就是位+上下文,都是由一串位表示的,區分不一樣數據對象的惟一方法是咱們讀到這些數據對象時的上下文。ASCII字符構成的文件是文本文件,全部其餘文件都是二進制文件。
  • 文件是字節序列
  • Hello程序的生命週期從高級C語言程序開始,每條C語句被轉化爲一系列「低級機器語言」指令,而後這些指令按照「可執行目標程序」的格式打包,並以二進制磁盤文件的形式存放起來,目標程序也稱爲「可執行目標文件」。
  • 源文件到目標文件的轉化由編譯器驅動程序完成:gcc -o hello hello.cGCC編譯器驅動程序讀取源文件並把它翻譯成一個可執行目標文件。翻譯過程分爲四個階段:預處理、編譯、彙編、連接,預處理器、編譯器、彙編器、連接器一塊兒構成編譯系統。
  • 計算機系統是由硬件和系統軟件組成的,程序被其餘程序翻譯成不一樣的形式,開始時是ASCII文本,而後被編譯器和連接器翻譯成二進制可執行文件
  • 系統的硬件組成:總線、I/O設備、內存、處理器
  • 併發:一個同時具備多個活動的系統。
  • 並行:用併發使一個系統運行地更快,並行能夠在計算機系統多個抽象層次上運用。按照系統層次結構由高到低的順序強調三個層次:線程級併發、指令級並行、單指令多數據並行
  • 處理器讀取並解釋存放在主存裏的二進制指令
  • 操做系統內核是應用程序和硬件之間的媒介,提供三個基本的抽象:

a.文件是對I/O設備的抽象;
b.虛擬存儲器是對主存和磁盤的抽象;
c.進程是對處理器、主存和I/O設備的抽象。程序員

  • 網絡提供了計算機系統之間通訊的手段ubuntu

  • 靜態連接器主要任務:符號解析、重定位vim

  • 目標文件形式:可重定位目標文件、可執行目標文件、共享目標文件
  • 每一個可重定位目標模塊m都有一個符號表,它包含m所定義和引用的符號的信息。有三種不一樣的符號:

a.由m定義並能被其餘模塊引用的全局符號
b.由其餘模塊定義並被模塊m引用的全局符號
c.只被模塊m定義和引用的本地符號安全

2、Vim編輯器服務器

VIMTUTOR是個實踐教程,經過實踐30分鐘讓你對VIM編輯器入門,只要在命令行中輸入vimtutor,而後跟着教程練習就能夠了~網絡

1.通常操做
Vim能夠僅僅經過鍵盤在任意模式之中進行切換,這就使得Vim能夠不用進行菜單或者鼠標操做,使文字錄入員或者程序員能夠大大加強速度和效率。vim有6種基本模式(經常使用的是普通模式、插入模式和命令行模式):併發

  • 普通模式(Normal mode):在普通模式中,用的編輯器命令,好比移動光標,刪除文本等等。這也是Vim啓動後的默認模式。在普通模式中,進入插入模式比較普通的方式是按a(append/追加)鍵或者i(insert/插入)鍵。
  • 插入模式(Insert mode):在插入模式中,能夠按ESC鍵回到普通模式。
  • 可視模式(Visual mode):命令多與字母v有關,移動命令會擴大高亮的文本區域。高亮區域能夠是字符、行或者是一塊文本。
  • 選擇模式(Select mode):這個模式中,能夠用鼠標或者光標鍵高亮選擇文本,不過輸入任何字符的話,Vim會用這個字符替換選擇的高亮文本塊,而且自動進入插入模式。
  • 命令行模式(Command line mode):在命令行模式中,執行命令(:鍵),搜索(/和?鍵)或者過濾命令(!鍵)。在命令執行以後,Vim返回到命令行模式以前的模式,一般是普通模式。
  • Ex模式(Ex mode):這和命令行模式比較類似,在使用:visual命令離開Ex模式前,能夠一次執行多條命令。

2.三種經常使用模式的切換:app

  • vim啓動進入普通模式;
  • 處於插入模式或命令行模式時只須要按Esc便可進入普通模式;
  • 普通模式中按i(插入)進入插入模式;
  • 普通模式中按:進入命令行模式;
  • 命令行模式中輸入wq回車後保存並退出vim。

3.進入vim:ssh

  • 在終端中輸入 vim 文件名;
  • 在終端中輸入vim,進入vim界面中,進入命令行模式輸入:e 文件路徑(文件名)

4.遊標移動(在普通模式下,按Esc進入普通模式):

按鍵 說明
h
i
j
k
w 移動到下一個單詞
b 移動到上一個單詞

 

 

  • 命令行模式下保存文檔:從普通模式輸入:進入命令行模式,輸入w回車,保存文檔。輸入:w 文件名能夠將文檔另存爲其餘文件名或存到其它路徑下。

  • 退出vim(經常使用):

a.命令行模式下退出vim:從普通模式輸入:進入命令行模式,輸入wq回車,保存並退出編輯。 
b.普通模式下退出vim:普通模式下輸入Shift+zz便可保存退出vim。

 

 

 

  • 快速縮進(縮進操做均在普通模式下有效):

a.使用命令進行快速調整縮進操做:通模式下輸入15G,跳轉到15行;普通模式下輸入>>整行將向右縮進(使用,用於格式化代碼超爽);普通模式下輸入<<整行向左回退;普通模式下輸入:進入命令行模式下對shiftwidth值進行設置能夠控制縮進和回退的字符數。
b.shiftwidth命令:shiftwidth命令是指>>命令產生的縮進(能夠簡寫成sw) 普通模式下輸入:進入命令行模式;對shiftwidth值進行設置能夠控制縮進和回退的字符數。 獲取目前的設定值:set shiftwidth?;設置縮進爲10個字符:set shiftwidth=10

  • 調整文本位置:

a.命令行模式下輸入:ce(center)命令使本行內容居中
b.命令行模式下輸入:ri(right)命令使本行文本靠右
c.命令行模式下輸入:le(left)命令使本行內容靠左

  • 查找:

a.普通模式下輸入/向下查找,輸入向上查找,n表示繼續查找,N反向查找。
b.普通模式下輸入\*尋找遊標所在處的單詞
c.普通模式下輸入\#同上,但\*是向前(上)找,#則是向後(下)找
d.普通模式下輸入g\*\*,但部分符合該單詞便可
e.普通模式下輸入g\#\#,但部分符合該單詞便可

  • 使用vim編輯多個文件:

a.編輯多個文件有兩種形式:一種是在進入vim前使用的參數就是多個文件;另外一種就是進入vim後再編輯其餘的文件。同時建立兩個新文件並編輯$ vim 1.txt 2.txt 
b.默認進入1.txt文件的編輯界面:命令行模式下輸入:n編輯2.txt文件,能夠加!:n!強制切換,以前一個文件的輸入沒有保存,僅僅切換到另外一個文件;命令行模式下輸入:N編輯1.txt文件,能夠加!即:N!強制切換,以前文件內的輸入沒有保存,僅僅是切換到另外一個文件。

  • 進入vim後打開新文件:

a.命令行模式下輸入:e 3.txt打開新文件3.txt
b.命令行模式下輸入:e#回到前一個文件
c.命令行模式下輸入:ls能夠列出之前編輯過的文檔
d.命令行模式下輸入:b 2.txt(或者編號)能夠直接進入文件2.txt編輯 
e.命令行模式下輸入:bd 2.txt(或者編號)能夠刪除之前編輯過的列表中的文件項目
f.命令行模式下輸入:e! 4.txt,新打開文件4.txt,放棄正在編輯的文件
g.命令行模式下輸入:f顯示正在編輯的文件名
h.命令行模式下輸入:f new.txt,改變正在編輯的文件名字爲new.txt

  • 恢復文件:vim -r進入文檔後,輸入:ewcover 1.txt來恢復。

  • 建立加密文檔:$ vim -x file1

3、GCC的使用

1.gcc 編譯程序的流程:

  • 預處理:gcc –E cxy.c –o cxy.i;gcc –E調用cpp,產生預處理過的C原始程序
  • 編譯:gcc –S cxy.i –o cxy.s;gcc –S調用ccl,產生彙編語言原始程序
  • 彙編:gcc –c cxy.s –o cxy.o;gcc -c調用as,產生目標文件
  • 連接:gcc cxy.o –o cxy;gcc -o調用ld,產生可執行文件
  • 運行:./cxy

2.庫選項:-static(進行靜態編譯,即連接靜態庫、禁止使用動態庫)、-shared(生成動態庫文件、進行動態編譯,在沒有動態庫時纔會連接同名靜態庫)、-L dir(在庫文件的搜索路徑列表中添加dir目錄)、-lname-fPIC(生成使用相對地址的位置無關的目標代碼,而後使用gcc的-static選項從該PIC目標文件生成動態庫文件)

3.靜態庫是一系列的目標文件(.o文件)的歸檔文件((lib+name).a文件);連接階段,選擇靜態庫,後綴名爲「.a」,選擇動態庫,後綴名爲「.so」。

  • 靜態連接庫的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o
  • 靜態庫的使用:gcc -o 文件名 文件名.c -L. -lxxx //連接到靜態庫;

 

4.共享庫的生成:gcc -fPIC -c xxx.cgcc -shared -olibxxx.so xxx.o;共享庫的使用:gcc -o main main.c -L. -lxxx

5.註冊共享庫的方法:

  • 修改/etc/ld.so.conf文件
  • 修改LDLIBRARYPATH環境變量
  • 將庫文件直接複製到/lib或者/usr/lib目錄下:cp (lib+name).so /lib

 

4、GDB的使用

  • 程序的運行狀態有「運行」、「暫停」、「中止「三種。

  • 主要操做:

  • 查看文件:l

  • 設置斷點:在b後加入相對應的行號。例b 6
  • 查看斷點狀況:設置完斷點後鍵入info b,在gdb中能夠設置多個斷點。bt查詢調用函數的狀況
  • 運行代碼:默認從首行開始運行代碼,鍵入rr+行號:從該行號開始運行
  • 查看變量值:p變量。例:p n
  • 單步運行:nss會進入函數,n不會進入函數
  • 恢復程序運行:c
  • 幫助信息:h
  • 斷點的設置:
  • 函數:b 文件名.c:函數名
  • 行:b 行數
  • 條件:b 行數 if 表達式(例如:b 9 if == 12)
  • 臨時:tb [文件名:]行號或函數名 <條件表達式>

5、MakeFile的使用

  • 一個工程中的源文件不可勝數,按其類型、功能、模塊分別放在若干個目錄中。makefile定義了一系列的規則來指定,哪些文件須要先編譯,哪些文件須要後編譯,哪些文件須要從新編譯,甚至進行更復雜的功能操做。其帶來的好處就是——「自動化編譯」,一但寫好,只須要一個make命令,整個工程徹底編譯,極大的提升了軟件的開發效率。
  • makefile文件編寫規則:

a.目標文件:由make建立,一般是目標文件或可執行文件
b.依賴文件:建立目標體所依賴的文件
c.運行命令:建立每一個目標體時須要的運行命令,必須以tab鍵開頭
d.格式爲:目標文件:依賴文件列表[tab鍵]各目標體運行命令(注意不是空格)
e.使用make的格式:make 目標文件

  • makefile變量的定義:

a.遞歸展開方式:在引用該變量時進行替換(不能用於引用本身的狀況),缺點:不能在變量後追加內容
b.格式定義:VAR = var
c.展開方式:在定義處展開,並只展開一次。優勢:消除變量的嵌套引用
d.格式定義:VAR := var
e.make中變量的使用格式: $(變量名)
f.變量名的命名:不包括「:」、「#」、「=」以及結尾空格的任何字符串;變量名大小寫不敏感

學習過程當中的問題

1.進行GDB調試時,出現錯誤!

 

緣由及解決:緣由是生成的二進制可執行文件沒有使用-g選項。
gcc中-g選項是爲了得到有關調試信息,要用gdb進行調試,必須使用-g生成二進制可執行文件!

2.裝git的過程當中(生成公鑰時),當使用命令cd ~/.ssh進入~/.ssh文件夾,輸入gedit id_rsa.pub打開id_rsa.pub文件,發現裏面是空白的,沒有內容。

後來發現是輸入 cd ~/.ssh 時出現了錯誤,「/」符號與「.」符號之間我多輸入了一個空格字符。解決問題後,效果以下:

3.最後git push -u origin master的時候,命令行要求輸入username,我混淆了概念,我一直輸入的是「20145326蔡馨熠」,因此出不來結果,應該是登陸時用的帳號!

4.在本身的虛擬機上用makefile的時候,會出現「XXX is up to date」的問題。網上說好像用.PHONY來解決,我沒搞懂。

 

 

代碼託管狀況及git安裝

先要在Ubantu中安裝git,使用命令: sudo apt-get install git

其次是設置用戶名和用戶郵箱,也就是本身在Git@OSC上註冊的帳號。

用git config --global user.name "xxx"   git config --global user.email "xxx"  

而後在ubuntu下生成公鑰(id_rsa是私有祕鑰,is_rsa.pub是公鑰)

ssh-keygen -t rsa -C "413741392@qq.com"

建立完公鑰後,須要上傳。使用命令  cd ~/.ssh 進入~/.ssh文件夾,輸入gedit id_rsa.pub打開id_rsa.pub文件,複製其中全部內容。接着訪問http://git.oschina.net/key網頁,標題欄能夠隨意輸入,公鑰欄把你剛纔複製的內容粘貼進去就OK了。

能夠測試是否連通:

ssh -T git@git.oschina.net

按照提示操做,若是聯通,則出現以下信息:

Welcome to Git@OSC, 20145326蔡馨熠!

在ubuntu下新建一個文件夾 gitcode,而後cd到該文件夾下,把一些文件拷貝到該目錄下。

mkdir gitcode

cd gitcode

接下來執行以下命令:

git init(初始化倉庫)
git add .(這個點表明該目錄下的全部文件)
git commit -m 「20145326cxy」
此時工程中的全部文件都以提交到HEAD,可是尚未提交到服務器。

如今能夠將代碼提交到Git@OSC倉庫了
先在Git@OSC項目中添加一個遠程倉庫origin
git remote add origin https://git.oschina.net/cxy368/caixinyi20145326.git
如今把本地項目master 分支推送到origin倉庫
git push -u origin master

 

統計代碼行數

心得體會

本週主要的學習內容就是vim,gcc,gdb以及makefile還有git的安裝。其中,vim的使用方法重點在於練習,只有通過不斷地練習才能熟練掌握並使用。gcc、gdb和makefile的使用方法有必定的命令格式和規則,只要遵循其規則格式就可以簡單編譯、運行、調試程序。計算機系統的相關知識重點在於記憶和理解,連接裏面的用語有些生疏,一會兒並不能徹底理解,還須要再仔細看看並理解。由於本身電腦上的虛擬機特別卡,因此有時候會用實驗樓環境,不過實驗樓環境有時候沒有注意操做的時間,會被強退掉,以前數據也會所有丟失,我就是由於這個緣由,有一部分的代碼敲在實驗樓裏,沒有及時託管,被「吃掉」了,這很尷尬。這周沒有安排好時間,把知識都堆在了週末來學,因此感受任務不少,壓力很大,git的知識也忘了不少,因此一開始整我的很壓抑,效率也不高,可是又不想敷衍本身,因而在調整了本身的狀態後,一步一步,循序漸進的開始了個人學習任務,只求質量,不求數量。我仔細看了實驗樓裏的資料和書上的知識點後,開始動手操做,熟悉vim,gcc,gdb,makefile的相關用法,其實還算簡單,由於給的例子特別生動形象,只須要熟記指令及用法,就沒什麼大問題。安裝git的時候雖然中途也有不少問題,但都仍是一一克服了,挺有成就感的,由於從頭至尾都是靠的本身,這也算是學習的一種樂趣吧~我以爲,首先心必定要靜下來,這將決定學習的質量,而後時間上要安排好,不要趕進度,要追求質量!提升本身的學習效率,千萬不要敷衍!否則最終害的是本身,後面想補都補不回來。一開始就要贏在起跑線。這學期的課程仍是婁老師給咱們上,雖然平時要求嚴,不過相比上學期我以爲輕鬆多了,由於婁老師在課上講的東西更多了,只要認真聽,仔細作筆記,就會學得很輕鬆~ 我會再接再礪,盡最大努力將這門課學好~

學習進度條

  代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時  
第一週 0/0 1/2 20/20  
第二週 58/58 1/3 20/40
相關文章
相關標籤/搜索