天天看點

20145230 《資訊安全系統設計基礎》期中總結

教材學習内容總結

Linux常用指令的複習

  • man指令:man是manul的縮寫,我們可以通過man man來檢視man的幫助。知道printf 指令也好,printf函數也好,查找幫助文檔都很容易。man有一個-k 選項用起來非常好,這個選項讓你學習指令,程式設計時有了一個搜尋引擎,可以舉一反三。 資料結構中學過排序(sort),我不知道C語言中有沒有完成這個功能的函數,可以通過“man -k sort”來搜尋,因為是找C庫函數,我們關注帶3的。
  • cheat指令:man 雖然很重要,但有些指令看了幫助還不會用,初學者需要例子,cheat就是這個身邊的小抄。cheat指令是在GNU通用公共許可證下,為Linux指令行使用者發行的互動式備忘單應用程式。它提供顯示Linux指令使用案例,包括該指令所有的選項和簡短但尚可了解的功能。
  • find指令:查找一個檔案在系統中的什麼位置,locate是神速版本的find(Windows下有個Everything工具和locate類似)。
  • grep指令:grep 可以對檔案全文檢索,支援正規表達式,正規表達式也是一個重要的元知識。
  • whereis和which:告訴我們使用的指令工具裝在什麼地方。

    Linux下C語言程式設計基礎的複習

  • vim:VIM是一個非常好的文本編輯器,很多專業程式員使用VIM編輯代碼。VIMTUTOR是個實踐教程,通過實踐30分鐘讓你對VIM編輯器入門,隻要在指令行中輸入vimtutor,然後跟着教程練習就可以了。
  • i → Insert 模式,按 ESC 回到 Normal 模式。
  • x → 删目前光标所在的一個字元。
  • :wq → 存盤 + 退出 (:w 存盤, :q 退出) (注::w 後可以跟檔案名)
  • dd → 删除目前行,并把删除的行存到剪貼闆裡
  • p → 粘貼剪貼闆
  • hjkl (強例推薦使用其移動光标,但不必需) →你也可以使用光标鍵 (←↓↑→). 注: j 就像下箭頭。
  • :help → 顯示相關指令的幫助。你也可以就輸入 :help 而不跟指令。(注:退出幫助需要輸入:q)
  • Ctrl鍵就好像功能鍵一樣,當你按下了功能鍵Ctrl後,C就不在是C了,而且就是一個指令或是一個快鍵鍵了,在VIM的Normal模式下,所有的鍵就是功能鍵了。
  • 各種插入模式:a → 在光标後插入

    o → 在目前行後插入一個新行

    O → 在目前行前插入一個新行

    cw → 替換從光标所在位置後到一個單詞結尾的字元

  • 簡單的移動光标:

0 → 數字零,到行頭

^ → 到本行第一個不是blank字元的位置(所謂blank字元就是空格,tab,換行,回車等)

$ → 到本行行尾

g_ → 到本行最後一個不是blank字元的位置。

/pattern → 搜尋 pattern 的字元串(注:如果搜尋出多個比對,可按n鍵到下一個)

  • 拷貝/粘貼 (注:p/P都可以,p是表示在目前位置之後,P表示在目前位置之前)

P → 粘貼

yy → 拷貝目前行當行于 ddP

  • Undo/Redo

u → undo

→ redo

  • 打開/儲存/退出/改變檔案(Buffer)

    :e → 打開一個檔案 :w → 存盤 :saveas → 另存為 :x, ZZ 或 :wq → 儲存并退出 (:x 表示僅在需要時儲存,ZZ不需要輸入冒号并回車) :q! → 退出不儲存 :qa! 強行退出所有的正在編輯的檔案,就算别的檔案有更改。 :bn 和 :bp → 你可以同時打開很多檔案,使用這兩個指令來切換下一個或上一個檔案。

  • gcc:GNU CC(簡稱為gcc)是GNU項目中符合ANSI C标準的編譯系統,能夠編譯用C、C++和Object C等語言編寫的程式。gcc又是一個交叉平台編譯器,它能夠在目前CPU平台上為多種不同體系結構的硬體平台開發軟體,是以尤其适合在嵌入式領域的開發編譯。
  • 預處理:gcc –E hello.c –o hello.i;gcc –E調用cpp
  • 編 譯:gcc –S hello.i –o hello.s;gcc –S調用ccl
  • 彙 編:gcc –c hello.s –o hello.o;gcc -c 調用as
  • 鍊 接:gcc hello.o –o hello ;gcc -o 調用ld
  • 前三步,GCC的參數連起來是“ESc”,相應輸入的檔案的字尾是“iso”,這樣記憶起來就容易多了。
  • gdb:建議使用CGDB,比GDB好用,熟悉VC的調試方式,可以使用DDD。
  • GDB最基本的指令有:
  • gdb programm(啟動GDB)
  • b 設斷點(要會設4種斷點:行斷點、函數斷點、條件斷點、臨時斷點)
  • run 開始運作程式
  • bt 列印函數調用堆棧
  • p 檢視變量值
  • c 從目前斷點繼續運作到下一個斷點
  • n 單步運作
  • s 單步運作
  • display 跟蹤變量值的改變
  • until 跳出循環
  • finish 跳出函數
  • help 幫助
  • make和makefile:一個工程中的源檔案不計其數,按其類型、功能、子產品分别放在若幹個目錄中。makefile定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至進行更複雜的功能操作。其帶來的好處就是——“自動化編譯”,一但寫好,隻需要一個make指令,整個工程完全編譯,極大的提高了軟體的開發效率。
  • makefile檔案編寫規則:
  • 目标檔案:由make建立,通常是目标檔案或可執行檔案
  • 依賴檔案:建立目标體所依賴的檔案
  • 運作指令:建立每個目标體時需要的運作指令,必須以tab鍵開頭
  • 格式為:目标檔案:依賴檔案清單 [tab鍵]各目标體運作指令(注意不是空格)
  • 使用make的格式:make 目标檔案
  • makefile變量的定義:
  • 遞歸展開方式:在引用該變量時進行替換(不能用于引用自己的情況),缺點:不能在變量後追加内容
  • 格式定義:VAR = var
  • 展開方式:在定義處展開,并隻展開一次。優點:消除變量的嵌套引用
  • 格式定義:VAR := var
  • make中變量的使用格式: $(變量名)
  • 變量名的命名:不包括“:”、“#”、“=”以及結尾空格的任何字元串;變量名大小寫不敏感

期中收獲

  1. 最大的感覺就是不像上學期學java時那樣吃力,那樣極其不适應,感覺現在每周都能将自己的任務盡量完成好,能跟上教學程序的節奏。最具體的事情就是考試時對于題目在書上或者部落格中的位置更加熟悉,應該是自己每周花時間看書的原因吧。
  2. 安裝了虛拟機,在ubantu下用Linux作業系統進行了程式設計,在以前根本不會想到自己的電腦還能運作其他的系統,但虛拟機就完美的實作了這個想法。當第一次用vim敲寫hello world代碼時,當用gcc編譯了hello world代碼時,當運作的代碼能在ubantu中顯示出來時,自己還是很開心的,不管簡單與否,自己算是學到了一點知識吧。
  3. 還有一個收獲就是再一次接觸到了彙編語言,這應該是我們為數不多的接觸彙編語言的機會了吧。上學期我選修了彙編語言,但自己學得一點兒也不好,甚至還沒有及格。在本學期的學習中,我們再一次接觸了彙編語言,感覺通過第五周的學習,能讓自己更加了解彙編語言這門課程吧。
  4. 了解了存儲器的一些基本結構,不知道存儲器的層次分為這麼多種,而且每層之間的聯系居然這麼密切。上面每一層都是其下一層的緩存。容量越大的存儲器花費的時間就越長,容量越的存儲器花費時間就較短,要是有容量大且時間短的存儲器那該有多好啊!
  5. 最後一點兒收貨就是git了,婁老師強調了一學期的git使用,自己還是沒能掌握,甚至在這學期的開始還将代碼在碼雲的網頁上一個一個上傳。現在我算是弄明白了,配置好git以後,每敲一個代碼,git commit一下進行注釋,不要全部一堆弄上去,那樣會顯得雜亂無章。當每個星期末的時候,最後git push一下就可以了。

    自己的不足

  6. 不足之處就是還是太懶,有拖延症,喜歡把一星期的内容拖到一兩天去完成,這樣就顯得很累,而且效率一點兒都不高,改進措施就是克服自己拖延症,每周的内容分段學習,一天學一段,不把任務全部累積到最後周末。
  7. 還有就是自己敲代碼還是不夠積極主動,有些能不敲的地方自己就不會去驗證一下代碼,感覺還是因為懶惰吧,本來這種計算機語言就需要代碼來推動學習,如果我們不去編譯運作代碼,我們就不知道自己的錯誤在哪。
  8. 不肯問問題,改進措施就是争取自己主動一點,好學一點,躲在答疑小組問問題吧,不然一個問題一個問題堆積下來就是無數個問題。

課程建議和意見

感覺這學期的課和上學期java課比起來要好了那麼一些,婁老師也在課堂上給我們講解了很多知識和問題,雖然大部分還是自己學習,但有些東西婁老師還是講得很到位。建議就是希望婁老師能把我們做的試卷發下來給我們看看,那樣和題目解析對照起來看效果要好一點兒吧!

學習進度條

代碼行數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目标 2000行 20篇 400小時
第一周 2/2 20/20 初步了解Linux的一些基本指令
第二周 1/3 15/35 了解vim編輯器
第三周 86/86 1/4 25/60 了解了資訊的表示和處理
第五周 79/79 1/5 30/90 了解了程式的機器級表示
第七周 84/305 1/7 20/140 了解存儲器的層次結構
第八周 0/305 2/9 30/170   期中總結       

轉載于:https://www.cnblogs.com/kobe20145230/p/6035497.html

繼續閱讀