2017-2018-1 20155228 《信息安全系統設計基礎》第一週學習總結

2017-2018-1 20155228 《信息安全系統設計基礎》第一週學習總結

教材學習內容總結

一.在linux環境下編程

(一)用vi編寫hello.c的C語言程序

  • 編譯程序獲得a.out
gcc hello.c
  • 運行編譯好的程序
./a.out
  • 編譯程序獲得hello.out
gcc hello.c -o hello
  • 查詢當前目錄下名字中含有"he"的文件
ls he*
  • 運行程序以後獲取return的返回值
echo #?

(二)程序編譯相關

  • CPU從內存中取指令解釋執行,內存能夠視爲字節數組,在存儲程序中全部文件都是二進制
  • 信息=二進制位串+上下文
  • 以文本方式查看hello.c
od -tc hello.c
  • 以16進制數文本方式查看hello.c
od -tc -tx1 hello.c
  • hello.c通過預編譯處理獲得hello.i
gcc -E hello.c -o hello.i
  • hello.c通過編譯器處理獲得hello.s
gcc -S hello.i (或者寫hello.c) -o hello.s
  • hello.s中前面帶點的語句是彙編指令html

  • hello.s通過彙編器處理獲得hello.o(機器碼)
gcc -c hello.s -o hello.o
  • 以16進制文本格式查看hello.o
od -tx1 hello.o
  • 將機器碼反彙編爲彙編碼
objdump -d hello.o
  • 編譯命令總結:編譯時使用-E,-S,-C分別獲得.i,.s,.o文件

二.代碼調試

(一)用"ctrl"+"shift"+"T"打開多個窗口:第一個給vi使用,第二個給gcc使用,第三個給gdb使用java

(二)在第二個窗口進行編譯linux

gcc -g gdbbasic.c
  • 四種斷點:行斷點,函數斷點,臨時斷點,條件斷點

(三)在第三個窗口進行調試git

  • 進入調試模式
cgdb a.out

三.程序調用

  • 在C語言中,一個文件名.c或者一個文件名.h(頭文件)稱爲一個模塊。頭文件至關於java中的接口
  • 程序設計的要求爲:高內聚SRP和低耦合DIP
  • 尋找帶有某個函數的文件
grep 函數名.c
  • 定義hello.h
#define __HELLO_H_//開始定義
#endef//結束定義
  • 主函數main調用SayHell函數時
gcc -c main//出錯

正確作法:編程

gcc -c *.c//編譯全部連接
  • 連接到庫
gcc main.c -L. -Lhello//連接到當前目錄

教材學習中的問題和解決過程

1.系統的硬件組成

名稱 描述 註釋
總線 貫穿整個系統的一組電子管道
I/O設備 系統與外部世界聯繫的通道
主存 臨時的存儲設備 在執行程序時用來存放程序和程序處理的數據
處理器 中央處理單元CPU是解釋或執行存儲在主存中指令的引擎

2.CPU在指令的要求下可能的操做

  • 加載:從主存複製一個字節或者一個字到寄存器,以覆蓋寄存器原來的內容
  • 存儲:從寄存器複製一個字節或者一個字到主存的某個位置。以覆蓋這個位置上原來的內容
  • 操做:把兩個寄存器的內容複製到ALU,ALU對這兩個字的作算術運算,並將結果存放到一個寄存器中,以覆蓋該寄存器中原來的內容
  • 跳轉:從指令自己中抽取一個字並將這個字複製到程序計數器中以覆蓋原來的值

代碼調試中的問題和解決過程

1.斷點設置

用法 意義 註釋
b 設置斷點
b fxx 設置函數斷點
b 14(行號) 設置行斷點
tb 14(行號) 設置臨時行斷點 用過一次就會消失
tb 14(行號) if 參數==給定值
r 執行斷點
c 運行兩個斷點之間的代碼
step 遇到函數執行一步
next 遇到函數所有執行
print 變量名 查看某個變量的值 能夠簡寫爲p 變量名
p 變量名=值 對某個變量進行賦值
finish 將所處的函數執行完
until 將所處的循環執行完
display 參數名 只顯示參數

代碼託管

結對及互評

評分標準

  1. 正確使用Markdown語法(加1分):
    • 不使用Markdown不加分
    • 有語法錯誤的不加分(連接打不開,表格不對,列表不正確...)
    • 排版混亂的不加分
  2. 模板中的要素齊全(加1分)
    • 缺乏「教材學習中的問題和解決過程」的不加分
    • 缺乏「代碼調試中的問題和解決過程」的不加分
    • 代碼託管不能打開的不加分
    • 缺乏「結對及互評」的不能打開的不加分
    • 缺乏「上週考試錯題總結」的不能加分
    • 缺乏「進度條」的不能加分
    • 缺乏「參考資料」的不能加分
  3. 教材學習中的問題和解決過程, 一個問題加1分數組

  4. 代碼調試中的問題和解決過程, 一個問題加1分安全

  5. 本週有效代碼超過300分行的(加2分)
    • 一週提交次數少於20次的不加分
  6. 其餘加分:
    • 週五前發博客的加1分
    • 感想,體會不假大空的加1分
    • 排版精美的加一分
    • 進度條中記錄學習時間與改進狀況的加1分
    • 有動手寫新代碼的加1分
    • 課後選擇題有驗證的加1分
    • 代碼Commit Message規範的加1分
    • 錯題學習深刻的加1分
    • 點評認真,能指出博客和代碼中的問題的加1分
    • 結對學習狀況真實可信的加1分
  7. 扣分:
    • 有抄襲的扣至0分
    • 代碼做弊的扣至0分
    • 遲交做業的扣至0分

點評過的同窗博客和代碼

  • 本週結對學習狀況函數

  • 20155222學習

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 20篇 400小時
第一週 10/10 1/1 6/6

嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。編碼

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法

  • 計劃學習時間:6小時

  • 實際學習時間:6小時

(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表
)

參考資料

相關文章
相關標籤/搜索