20172323 2017-2018-2《程序設計與數據結構》第十一週學習總結

教材學習內容總結

23章-Android簡介html

  • Android操做系統是一種多用戶的Linux系統,一個應用程序和其餘App隔離開來運行的。
  • Java是開發Android應用程序的默認語言。
  • Android4.4是Dalvik和ART的轉折點和分水嶺
  • Android是向後兼容的
  • 4種Android應用程序組件
名稱 介紹
活動(Activity) 包含用戶交互組件的一個窗口
服務(Service) 在後臺長時間運行的操做
廣播接收者(Broadcast receiver) 一個監聽器,負責對系統或應用程序聲明做出響應
內容提供者(Content provider) 管理要和其餘應用程序分享的一組數據的一個組件
  • 意圖是一條消息,發送給系統或另外一個應用程序,以要求執行一個動做
  • 每一個應用程序都必須有一個清單,描述該應用程序
  • Android版本

24章-初識Androidjava

  • 應用程序結構:Project窗口中有兩個主要的節點。app節點包含了應用程序中全部的組件,Gradle Scripts節點包含了Gradle構建腳本。
    • app節點包含mainfests,java,res三個節點
  • Android清單:用來描述應用程序。
    • 清單文件是一個XML文檔,使用mainfest做爲其根元素。mainfest元素的package屬性爲應用程序指定了一個惟一的標識符。Android工具根據這一信息生成相應的Java類
    • application元素描述了應用程序,它包含了一個或多個activity元素。應用程序一般有一個主活動,充當應用程序的入口點。
  • apk文件
    • Android應用程序打包爲一個apk文件。自動生成的apk文件包含調試信息,可以以調試模式運行
    • 即使應用程序有多個Java文件,也只有一個classes.dex文件
  • 調試應用程序
    • 使用日誌消息調試一個應用程序。Android框架提供了android.util.Log類用於記錄日誌消息
    • 在LogCat中,不一樣日誌級別的消息以不一樣顏色來顯示且每條消息都有一個標籤。

25章-活動android

  • 活動的生命週期
    • 啓動一個活動意味着要顯示一個窗口,應用程序所建立的第一個窗口,叫做主活動。經過在應用程序清單文件中聲明來指定主活動
    • application元素定義的活動下,使用inter-filter元素聲明爲主活動,其必須包含MAIN的action和LAUNCHER的category
    • 能夠經過startActivity方法傳遞一個意圖啓動一個新的活動

26章-UI組件vim

  • 使用UI工具所作的事情,都會反映到佈局文件中,以XML元素的形式體現出來
  • Toast是一個小的彈出對話框,用於顯示一條消息做爲給用戶的反饋。
  • AlertDialog也是一個爲用戶提供反饋的窗口,但它會一直顯示直至失去焦點。
  • 通知是出如今狀態欄的一條消息,通知是持久的,而且將保持顯示

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

  • 問題1:apk文件的簽名是什麼意思?
  • 問題1解決方案:計算機中所說的簽名和生活中所說的簽名在本質上是同樣的,Android系統要求每個Android應用程序必需要通過數字簽名纔可以安裝到系統中,也就是說若是一個Android應用程序沒有通過數字簽名,是沒有辦法安裝到系統中的!Android經過數字簽名來標識應用程序的做者和在應用程序之間創建信任關係,不是用來決定最終用戶能夠安裝哪些應用程序。這個數字簽名由應用程序的做者完成,並不須要權威的數字證書籤名機構認證,它只是用來讓應用程序包自我認證的。
  • 問題2:在解釋清單文件中的元素時,activity元素的name屬性能夠是一個徹底限定名稱?
  • 問題2解決方案:查找了不少地方都沒有完全搞懂這個名詞在這裏的意思,可是我找到了該名詞在c語言中的定義,應該是能夠借鑑的吧。數組

    每一個命名空間和類型都具備一個徹底限定名(fully qualified name),該名稱在全部其餘命名空間或類型中惟一標識該命名空間或類型。數據結構

大體應該是每個命名空間的獨特的標識之類的意思吧???app

  • 問題3:顯式意圖和隱式意圖的具體理解
  • 問題3解決方案顯式意圖:調用Intent.setComponent()Intent.setClass()方法明確指定了組件名的Intent爲顯式意圖,顯式意圖明確指定了Intent應該傳遞給哪一個組件。
    隱式意圖:沒有明確指定組件名的Intent爲隱式意圖。 Android系統會根據隱式意圖中設置的動做(action)、類別(category)、數據(URI和數據類型)找到最合適的組件來處理這個意圖。
  • 問題4:關於活動的生命週期的理解
  • 問題4解決方案
    框架

    • onCreate()這個方法在活動第一次建立的時候會被調用。
    • onStart()這個活動由不可見進入可見的時候調用
    • onResume()當活動準備好和用戶進行交互的時候調用編輯器

      舉例,如今許多同窗在一塊兒賽跑,老師說,下一組要跑步的走到起跑線,準備跑。此時就是onResume(),此時的活動必定位於前臺,學生必定站在了跑道上,一個道理。ide

    • onPause()當前活動須要去啓動另外一個活動,或者恢復另外一個活動的時候去調用。這個方法中,咱們能夠將一些CPU資源等釋放掉,由於當你不在前臺了,處於暫停或者中止甚至是銷燬狀態了,就應該讓出一些資源,減小系統的負擔。
    • onStop()活動徹底不可見的時候調用
    • onDestroy()這個很好理解,活動被銷燬了,按返回鍵了,或者finish等
    • onRestart()由中止狀態變爲運行狀態了,被調用。若是是暫停狀態變爲運行狀態,是不會被調用的。

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

  • 問題1:第一次使用AS,生成一個新的project,可生成的文檔就出現瞭如圖的問題--顯示R類標紅

    而後我想直接忽略此錯誤強制運行,在點擊運行按鈕後,就出現了這樣的提示

    顯示我沒有安裝SDK,可事實上我確實安裝了SDK,因而將錯誤提示在網上搜索,就提示我經過點擊File-->Project Structure-->Build Tools Version配置一下就行了,如圖

    其中的原理就不太懂了,再次運行AS又運行了老久,貌似下載安裝了許多東西

    但好在最後運行成功了

上週考試錯題總結

  • 錯題1:The following method should return true if the int parameter is even and either positive or 0, and false otherwise. Which set of code should you use to replace ... so that the method works appropriately?

public boolean question3(int x) { ... }
A .if (x = = 0) return true;else if (x < 0) return false;else return question3(x - 1);
B .if (x = = 0) return false;else if (x < 0) return true;else return question3(x - 1);
C .if (x = = 0) return true;else if (x < 0) return false;else return question3(x - 2);
D .if (x = = 0) return false;else if (x < 0) return true;else return question3(x - 2);
E .return(x = = 0);

  • 解析若是x爲0,則最初的x必爲偶數;若x<0,則x最初爲奇數或是小於零

  • 錯題2:Which of the following is considered an Abstract Data Type?
    A .數組
    B .參考變量
    C .任何數據類型(例如int、Double、char)
    D .矢量
    E .以上全部
  • 解析抽象數據類型包括數據結構操做和訪問數據結構的方法,其中只有向量將二者結合在一塊兒,數組是數據結構,但沒有方法(例如插入方法或搜索方法),而引用變量和原始類型是數據而不是數據結構。

  • 錯題3:Abstract Data Types have which of the following object-oriented features?
    A .信息隱藏
    B .繼承
    C .多態
    D .訊息傳遞
    E .以上全部
  • 解析以上這些答案都是面向對象的特徵類型,抽象數據類型封裝了數據結構和操做數據結構的方法,從而保留了信息隱藏,所以,全部ADT都使用信息隱藏,所以不能直接從ADT外部操做數據結構,而不須要其餘面向對象的特性。

  • 錯題4:Which of the following criticisms of an array is applicable to a Java array?
    A .訪問隨機元素是一種效率低下的結構。
    B .它只支持先入先出的訪問類型。
    C .它的大小是固定的(靜態的)。
    D .它不能用於建立抽象數據類型,如隊列或堆棧
    E .以上全部
  • 解析當數組被實例化時,Java中任何數組的大小都是固定的。若是在向數組中添加元素時,數組被填充,數組自己就不能改變大小。若是舊數組元素被移動到新數組中,就能夠建立新數組,但這是效率低下的。

  • 錯題5:One operation that we might want to implement on a Stack and a Queue is full, which determines if the data structure has room for another item to be added. This operation would be useful
    A .只有當隊列或堆棧使用數組實現時
    B .只有當隊列或堆棧使用連接列表實現時
    C .只適用於隊列
    D .只適用於堆棧
    E .以上任何一項操做都是沒有用的。
  • 解析數組是一個靜態大小的對象,若是它被填充滿,那麼任何添加的操做,不管是列表插入、隊列仍是堆棧推送,都會被阻止。這能夠經過事先檢查結構是否爲滿來肯定。若是數據結構是使用連接列表實現的,這是沒必要要的,由於(咱們假設)將始終有動態內存可用於添加新元素。

  • 錯題6:In a linked list in Java
    A .連接是一個對象。
    B .連接是一個節點。
    C .連接是一個引用。
    D .連接是int型。
    E .連接是一個類。
  • 解析這道題的錯誤點在於沒有把linked list和link區分開來。在鏈表中,連接是對下一節點的引用。

  • 錯題7:A linear data structure
    A .每一個節點老是有一個以上的連接。
    B .有時表示爲樹或圖。
    C .每一個節點只能有一個連接
    D .幾乎老是保持排序順序,不管是升序仍是降序。
    E .以上都不是
  • 解析一個線性數據結構中每一個節點只有一個連接。以樹或圖的形式顯示的數據結構不是線性的,它們至少是二維的,沒有任何使線性數據結構保持任何類型的順序的要求。

  • 錯題8:The push and enqueue operations are essentially the same operations, push is used for Stacks and enqueue is used for Queues.
  • 解析進棧和出棧操做老是在堆棧的頂部進行,而隊列操做老是在隊列的後面添加。因此該說法錯誤

  • 錯題9:An array is a List Abstract Data Type.
  • 解析數組是一種數據結構,可用於存儲值,但該數組沒有已實現的執行列表操做的操做因此該說法錯誤

  • 錯題10:A linked list that contains 6 Nodes will have 6 reference pointers.
  • 解析爲了訪問連接列表,至少須要有第7個引用指針因此該說法錯誤

  • 錯題11:It is possible to restrict the type of object which is stored within a Java collection by using a generic type when the collection is declared.(在聲明集合時,可使用泛型類型來限制存儲在Java集合中的對象的類型。)
  • 解析泛型提供了一種方法來指定集合被限制到的對象的類型因此是正確的

  • 錯題12:Trees and graphs, because they are dynamic in nature, cannot be implemented using Java arrays.
  • 解析雖然數組有固定的大小,但能夠將原數組分配到更大的數組中去,從而經過這種方式來實現數組的擴展,因此該說法是錯誤的

  • 錯題13:The only difference between a stack and a queue is that stacks operate using FIFO and queues operate using LIFO.
  • 解析堆棧使用先入後出(LIFO)操做,而隊列使用先進先出(FIFO)操做。

  • 錯題14:Linux Bash中,使用sudo apt-get upgrade命令能夠更新系統。
  • 解析此題正確

  • 錯題15:一個具備執行權限的目錄能夠被打開並查看內部文件
  • 解析一個目錄同時具備讀權限和執行權限才能夠打開並查看內部文件.

  • 錯題16:Linux Bash中,使用apt-get search tree命令來查找是否系統裝有軟件tree。
  • 解析應該使用apt-cache search tree

  • 錯題17:Linux Bash中,使用rm –r /dky/D*命令強制刪除/dky目錄下全部D開頭的文件。
  • 解析應該使用rm –f /dky/D*

  • 錯題18:Linux Bash中,查找五天以內src目錄中刪除的文件的命令是find /src/ -ctime -5
  • 解析此題正確

  • 錯題19:Linux Bash中,使用grep查找當前src目錄下全部包含main函數的文件,並要求顯示出現行號的命令是grep –n main /src
  • 解析應該使用grep –rn main /src

  • 錯題20:在Ubuntu中,使用vim編輯器時,想要移動光標,除方向鍵以外,還能夠依次使用hjkl鍵進行上下左右的移動。
  • 解析沒有想到栽在了順序之上,上下左右順序依次是kjhl

  • 錯題21:在Linux Bash中,find命令的 -cmin n參數表示查找在過去n天內被修改過的文件。
  • 解析參數n解釋有誤

  • 錯題22:在Linux Bash中,爲全部人對file1.txt文件添加寫入權限的命令是chmod o+w filel.txt或者 chmod 666 filel.txt.
  • 解析chmod a+w filel.txt 或者 chmod 666 file, a+w 和 o+w 有所區別。

結對及互評

  • 博客中值得學習的或問題:
    • 教材學習內容總結詳細,遇到的問題也有詳實的解決過程,看得出來是用心在作
  • 代碼中值得學習的或問題:
    • 這周的代碼編寫幾乎是從零開始的,可是兩位同窗的代碼都還不錯
  • 基於評分標準,我給譚鑫的博客打分:10分。
    得分狀況以下:正確使用Markdown語法(加1分)
    模板中的要素齊全(加1分)
    教材學習中的問題和解決過程, 兩個問題加2分
    代碼調試中的問題和解決過程, 兩個問題加2分
    感想,體會不假大空的加1分
    點評認真,能指出博客和代碼中的問題的加1分
    代碼規範加1分
    有動手寫新代碼的加1分
  • 基於評分標準,我給方藝雯的博客打分:11分。
    得分狀況以下:
    正確使用Markdown語法(加1分)
    模板中的要素齊全(加1分)
    教材學習中的問題和解決過程, 二個問題加2分
    代碼調試中的問題和解決過程, 三個問題加3分
    感想,體會不假大空的加1分
    點評認真,能指出博客和代碼中的問題的加1分
    代碼規範加1分
    有動手寫新代碼的加1分

    點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20172305
    • 20172314
    • 結對學習內容
      • 學習教材第23-26章(Java和Android開發學習指南)

其餘

本週主要開始學習安卓方面的知識,原本內容並非特別多,難度也不是很大,但在實驗中AS出現了一系列棘手的問題,並且直到如今也沒有獲得解決,因此這周特別難過。不過好在快結束了,勝利就在前方!另外值得注意的是,本週的測試錯題過多,尤爲是關於Linux的操做命令,幾乎是一竅不通啊。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 117/117 1/1 19/19
第二週 289/406 1/2 21/40
第三週 403/809 2/4 22/62
第四周 1783/2592 1/5 35/97
第五週 770/3362 1/6 25/122
第六週 734/4096 1/7 25/147
第七週 687 / 4783 1/8 25/172
第八週 824/5607 2/10 30/202
第九周 764/6371 2/12 30/432
第十週 540/6911 2/14 20/452
第十一週 ??? 2/14 20/472
  • 計劃學習時間:20小時

  • 實際學習時間:20小時

參考資料

相關文章
相關標籤/搜索