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