1. 程式人生 > >20155325 2017-2018 1 《信息安全系統設計基礎》第十五周學習總結

20155325 2017-2018 1 《信息安全系統設計基礎》第十五周學習總結

測試 電路設計 可能 數組指針 ilog archive sheji 不足 返回值

每周作業鏈接匯總

第一周作業:第一章、第七章

技術分享圖片

第二周作業:9月27日課堂實踐

技術分享圖片

第三周作業:對Linux命令od -tc -tx1的C語言程序實現myod-優化版

技術分享圖片

第2章
技術分享圖片

第四周作業:第十章
技術分享圖片

第五周作業:第三章
技術分享圖片

第六周作業:課上測試、課下作業、第八章
技術分享圖片

第七周作業:第四章
技術分享圖片

第九周作業:第六章
技術分享圖片

加分作業 實現pwd
技術分享圖片

第十周作業:課下作業-IPC、課堂測試
技術分享圖片

第十一周作業:第九章
技術分享圖片

第十三周作業:深入學習第十二章
技術分享圖片

第十四周作業:深入學習第七章
技術分享圖片

第十五周作業:學習總結
技術分享圖片

實驗匯總

實驗一 實驗名稱:開發化境的熟悉 ARM與linux
技術分享圖片

實驗二 實驗名稱:固件程序設計
技術分享圖片

實驗三 實驗名稱:網絡編程
技術分享圖片

實驗四 實驗名稱:外設驅動程序設計
技術分享圖片

實驗五 實驗名稱:通訊協議設計
技術分享圖片

代碼托管鏈接和二維碼:

技術分享圖片

技術分享圖片

技術分享圖片

問答

  • 代碼驅動的學習做到沒有?

朝著這個方向在努力,以致於我現在做啥程序都想提前寫個思路框架和偽代碼啥的。(捂臉)

  • 加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得,實踐上有什麽經驗教訓

有時課上實在是沒做出來程序,就去看看學霸們的代碼,弄懂他們的再改改代碼結構,添點自己的東西。

因為每個人習慣用的函數和結構會有些小差異,在學習了學霸的結構後有時還會發現一些好用的函數,以及糾正一些自己以前未被發現的錯誤。

教訓就是……積累量不夠,有時看網上的代碼感到力不從心。

  • 整體評價一下第1周作業中自己提出的問題是不是抓住了學習重點
    回答一下第1周作業中自己提出的問題

有些地方還是有些跑偏

第二章:原碼、補碼、反碼在計算機不同情景中各有什麽優勢?
補碼的運算中要用到原碼和反碼

首先, 因為人腦可以知道第一位是符號位, 在計算的時候我們會根據符號位, 選擇對真值區域的加減. (真值的概念在本文最開頭). 但是對於計算機, 加減乘數已經是最基礎的運算, 要設計的盡量簡單. 計算機辨別"符號位"顯然會讓計算機的基礎電路設計變得十分復雜! 於是人們想出了將符號位也參與運算的方法. 我們知道, 根據運算法則減去一個正數等於加上一個負數, 即: 1-1 = 1 + (-1) = 0 , 所以機器可以只有加法而沒有減法, 這樣計算機運算的設計就更簡單了.

於是人們開始探索 將符號位參與運算, 並且只保留加法的方法.

首先來看原碼:

計算十進制的表達式: 1-1=0

1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2

如果用原碼表示, 讓符號位也參與計算, 顯然對於減法來說, 結果是不正確的.這也就是為何計算機內部不使用原碼表示一個數.

為了解決原碼做減法的問題, 出現了反碼:

計算十進制的表達式: 1-1=0

1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原= [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0

發現用反碼計算減法, 結果的真值部分是正確的. 而唯一的問題其實就出現在"0"這個特殊的數值上. 雖然人們理解上+0和-0是一樣的, 但是0帶符號是沒有任何意義的. 而且會有[0000 0000]原和[1000 0000]原兩個編碼表示0.

於是補碼的出現, 解決了0的符號以及兩個編碼的問題:

1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]補 + [1111 1111]補 = [0000 0000]補=[0000 0000]原

這樣0用[0000 0000]表示, 而以前出現問題的-0則不存在了.而且可以用[1000 0000]表示-128:

(-1) + (-127) = [1000 0001]原 + [1111 1111]原 = [1111 1111]補 + [1000 0001]補 = [1000 0000]補

-1-127的結果應該是-128, 在用補碼運算的結果中, [1000 0000]補 就是-128. 但是註意因為實際上是使用以前的-0的補碼來表示-128, 所以-128並沒有原碼和反碼表示.(對-128的補碼表示[1000 0000]補算出來的原碼是[0000 0000]原, 這是不正確的)

使用補碼, 不僅僅修復了0的符號以及存在兩個編碼的問題, 而且還能夠多表示一個最低數. 這就是為什麽8位二進制, 使用原碼或反碼表示的範圍為[-127, +127], 而使用補碼表示的範圍為[-128, 127].

因為機器使用補碼, 所以對於編程中常用到的32位int類型, 可以表示範圍是: [-231, 231-1] 因為第一位表示的是符號位.而使用補碼表示時又可以多保存一個最小值.

參考資料:

原碼, 反碼, 補碼 詳解

第三章:重點理解指針

函數指針:重點在指針,表示它是一個指針,它指向的是一個函數。eg: int (*fun)();

指針函數:重點在函數,表示它是一個函數,它的返回值是指針。 eg: int* fun();

數組指針:重點在指針,表示它是一個指針,它指向的是一個數組。int (*fun)[8];

指針數組:重點在數組,表示它是一個數組,它包含的元素是指針 itn* fun[8];

第四章:與HDL的verilog有什麽聯系?

兩種不同的語言,都是相對於高級語言來說比較低級的語言。

第五章:如何增加生成的機器代碼中指令級並行度的變換?

指令級並行:在計算機體系結構中,並行度是指指令或數據並行執行的最大數目。在指令流水中,同時執行多條指令稱為指令並行。要更大限度地利用計算資源或存儲資源則提高並行度。

第六章:如何通過改善程序的時間局部性和空間局部性來提高應用程序的性能?

一段時間內盡量訪問地址相近的變量等。

第八章:如何初步判斷哪些情況是由於程序的並發執行引起的不確定行為。

這個因程序而異,如果有所輸出的話會更容易判斷,我有個小建議是在調試的時候弄一些有特征性的輸出來一次判斷。

第九章: 計算機系統將軟件和硬件結合起來的優點是什麽?

私以為:打個比方,戰爭,有良好的武裝設備、人員、環境是硬件,有上乘的戰略是軟件,兩者相輔相成,共促發展。

第十章:有什麽方法能夠彌補標準I/O的局限性?

使用其他I/O,比如Unix I/O,比如標準I/O沒有提供讀取文件元數據的方式,例如文件大小或文件創建時間。

第十一章:如何用套接字接口編寫Internet客戶端和服務器?

套接字接口就是socket,在十三周的博客裏有它的實例用法。

第十二章:並發編程的適用領域

並發編程是指在一臺處理器上“同時”處理多個任務。並發是在同一實體上的多個事件。多個事件在同一時間間隔發生。

比如說多個客戶端訪問同一臺服務器的時候,服務器需要用到並發編程。

  • 你有什麽項目被加分,談談你的經驗
    在做myod的時候被加分,以及做了加分項pwd。
    在那個被加分的項目之前有個可做可不做的作業,我做了,就是第一個初代版本。

說實話,我自己編出來的程序我心裏還是有數的,認認真真花了很多時間地做出一個不那麽優美的程序。

當時我的事情沒有那麽的多,所以還是擠出了時間去做那個程序的優化版,包括一個整體main.c和分開.c .h的版本。

被加分可能是因為當時做得很認真,也能看得到提升,博客裏步驟記敘得很詳細。

  • 優秀作業 對Linux命令od -tc -tx1的C語言程序實現myod-優化版
    技術分享圖片

  • 總結(給出鏈接和二維碼)
  • 教程 這個是給自己留的教程 初步安裝配置虛擬機、Ubuntu、git、vim、碼雲項目
    技術分享圖片

  • 你有什麽項目被扣分,談談你的教訓

印象中我都是按照要求都完成了,也沒有收到扣分提醒,應該不會有什麽扣分吧。

課程收獲與不足

  • 自己的收獲(投入,效率,效果等)

首先要感謝老師一年以來的教導和付出,對教學的熱情和投入到了一種令人欽佩的程度。雖然我並非佼佼者,但我還是在不斷的學習中得到了能力的提升,也算是不虛此行。

感謝一直以來提供幫助的朋友們。在這門課上對我提供幫助最大的是DWJ寶貝和ZJY寶貝,感謝你們榜樣的力量和在我多次走投無路、手足無措的時候給予我醍醐灌頂般的點撥與指導。

我覺得我是那種花了很多時間和精力,效果卻沒有別人好的那種人。但是如果有足夠的時間我是很願意去弄懂。去鉆研的,雖然和學霸們的基礎和學習能力差了一大截,但是一點一點笨鳥還是能夠積累起一些東西的。比如說我之前認認真真地做了計算機實習,裏面有用到命令行,所以在myod要求弄命令行的時候我並沒有一臉懵逼、不知所措。然後又花了很多時間去優化升級地做了好幾個myod的版本。然後對實現函數功能的這種題不是那麽的迷茫了。

我也很想提高效率。所以我對比觀察了我和學霸,發現自己在同樣時間裏能理解到和記住的東西更少。在和學霸做項目的時候能夠感受到對方的學習速度更快、效果更好,對一個問題,比如說一個程序裏的小環節對方會很自然地思考得很仔細與全面。

很多時候我以為我已經盡我所能地做到最好了,可是效果差強人意,而別人卻能出彩。上學期結束後我看到了學霸們更認真的態度,這學期結束後我看到了學霸對問題的深入與仔細。

這學期越到後面的時候各種事情越來越多,鮮少有過周末。對於這門課的學習也越發力不從心,甚至一度崩潰到懷疑人生的地步。不過對於我來說,最好的解決方法就是讓自己更加的厲害。

  • 自己需要改進的地方

資料的查找能力和自學能力。對一個知識點深挖的仔細感。

  • 如果有結對,寫一下你提供的幫助或接受了什麽幫助,並對老師提供參考建議

我的結對夥伴們給我提供了很大的幫助,不論是心理上的還是學習方面的。

我覺得老師希望我們結對是希望我們營造一種共同學習的氛圍,相互督促相互學習。

學霸其實是不論怎樣都會去學,而且學得好的。可能想要通過結對帶動的是所有人去學習,這當然是最好的結果。

在我看到DWJ同學早早起床去學習很晚而歸的時候其實內心已經受到了鼓舞。在我和優秀的好朋友交流或者我向他們討教的時候能夠感受到他們對事情思考的角度與深度。如果結對的意義在於變得更優秀,那麽我覺得向優秀的人學習也能達到同樣的目的。

我記得上學期有個博客互評的環節,當我從好多人的博客裏看到比我得水的多的時候,我的內心是復雜且有一點難受的。自己很費力地學也學不懂,失眠掉發殫精竭慮時光流走,結果和去玩的他們一樣學不會、學不好。

倒不如知不足而後進。然後認命地對著並不完美的自己說:我能理解和接受你現在的慢與窘迫,但還是再努一把力吧。

  • 給開學初的你和學弟學妹們的學習建議

出了問題除了著手解決沒有別的方式。放輕松,總能解決的。

  • 如果重新學習這門課,怎麽做才可以學的更好

合理地安排學習時間,協調好各項事務和各門課程,調整好心態。

問卷調查

  • 你平均每周投入到本課程多長時間?

平均二十多個小時

  • 每周的學習效率有提高嗎?

後來好一點了

  • 學習效果自己滿意嗎?

有所鍛煉,有所收獲。

  • 課程結束後會繼續一周至少一篇博客嗎?(如果能做到,畢業時我把你的博客給你集結成一本書送給你作紀念)

有需要的時候會記錄心得。雖然喜歡紙質的筆記的感覺,但是它久了就不見了,寫博客就當保存筆記了。

  • 你覺得這門課老師應該繼續做哪一件事情?

對課本和考題的分析講解,教程的編寫。

  • 你覺得這門課老師應該停止做哪一件事情?

提交筆記後的對對方問題和總結的分析。

  • 你覺得這門課老師應該開始做什麽新的事情?

把學霸們錄的微課作為資源發出來。

  • 總結的鏈接和二維碼

本文鏈接

技術分享圖片

20155325 2017-2018 1 《信息安全系統設計基礎》第十五周學習總結