《程序设计与数据结构》第6周学习总结
20162308 2016-2017-2 《程序設計與數據結構》第6周學習總結
教材學習內容總結
教材學習中的問題和解決過程
- 1 關于多重繼承
- 一致認為,在面對對象中添加多重繼承的特性對程序員來說,至少是像我這樣沒什么經驗的初學者來說,是一件非常困難的事。繼承應該是一種"is-a"的邏輯,那么多重繼承在這個角度上來說就是不合邏輯的。所以,萬幸,Java沒有在設計的時候引入這個特性。
- 2 線程、進程 (Thread & Process)
- 閱讀材料:
線程和進程的區別是什么?
《Java編程思想》 去年,好想也是四月初的時候,當時我在杭電面試,當時說到了自己設計的爬蟲中實現了 Producer- Consumer 的多線程模型,然后那幾個老師就問我線程和進程有什么區別。那個時候,我自己其實也搞不懂線程和進程有什么區別,我就瞎扯了幾句。回去以后,自己查了一些資料,也對進程和線程有了一些理解。進程是CPU資源分配的最小單位,線程是依附于進程而存在的調度,一個進程中可以存在多個線程。
利用對象,可將一個程序分割成相互獨立的區域。我們通常也需要將一個程序轉換成多個獨立運行的子任務。像這樣的每個子任務都叫作一個“線程”(Thread)。編寫程序時,可將每個線程都想象成獨立運行,而且都有自己的專用CPU。一些基礎機制實際會為我們自動分割CPU的時間。我們通常不必關心這些細節問題,所以多線程的代碼編寫是相當簡便的。 這時理解一些定義對以后的學習狠有幫助。“進程”是指一種“自包容”的運行程序,有自己的地址空間。 “多任務”操作系統能同時運行多個進程(程序)——但實際是由于CPU分時機制的作用,使每個進程都能 循環獲得自己的CPU時間片。但由于輪換速度非常快,使得所有程序好象是在“同時”運行一樣。“線程” 是進程內部單一的一個順序控制流。因此,一個進程可能容納了多個同時執行的線程。 多線程的應用范圍很廣。但在一般情況下,程序的一些部分同特定的事件或資源聯系在一起,同時又不想為 它而暫停程序其他部分的執行。這樣一來,就可考慮創建一個線程,令其與那個事件或資源關聯到一起,并讓它獨立于主程序運行。一個很好的例子便是“Quit”或“退出”按鈕——我們并不希望在程序的每一部分代碼中都輪詢這個按鈕,同時又希望該按鈕能及時地作出響應(使程序看起來似乎經常都在輪詢它)。 ——《Think in Java》
代碼調試中的問題和解決過程
- 多線程的程序運行時運行太快,不能觀察到順序。
- 使用Thread.sleep(Math.Random() * 1000)來減慢速度。
代碼托管
- 代碼提交過程 & 代碼量截圖:
上周考試錯題總結
沒有考試
結對及互評
張師瑜的博客注意學習方法,書上的代碼關鍵是理解,理解了再根據書上的思路,自己敲一遍。
其他(感悟、思考等,可選)
- 關于代碼復用
- 代碼復用是一件能夠很大的提高生產力的工作,通過梳理程序的邏輯結構,建立清晰合理的面對對象模型,實現接口或繼承抽象類,來實現需求。也就是說,不要重復造輪子。利用已有的代碼,應用到當前的需求中,提高效率。
學習進度條
| 目標 | 5000行 | 30篇 | 400小時 | |
| 第一周 | 26/26 | 1/1 | 7/7 | |
| 第二周 | 81/107 | 1/2 | 8/15 | String類型的使用 |
| 第三周 | 80/187 | 1/3 | 5/20 | 位運算 |
| 第四周 | 300/487 | 1/4 | 8/28 | 動態數組和迭代器 |
| 第五周 | 132/619 | 1/5 | 18/46 | OOP編程導論 |
| 第六周 | 90/709 | 1/6 | 5/51 | 多線程 |
計劃學習時間:5小時
實際學習時間:8小時
參考資料
《Java程序設計與數據結構教程(第二版)》
《Java程序設計與數據結構教程(第二版)》學習指導
轉載于:https://www.cnblogs.com/pingch/p/6682414.html
總結
以上是生活随笔為你收集整理的《程序设计与数据结构》第6周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring-wind 搭建过程问题记录
- 下一篇: js控制页面刷新大全