2016年12月23號閱讀筆記

2016年12月23號 持之以恒最重要
CSDN主頁:破光之流風(fēng)

面試中遇到的算法問題

原文地址:面試中遇到的算法問題
算法

文章中作者提到了2個算法題:

  • 斐波那契數(shù)列問題-兔子產(chǎn)子經(jīng)典問題
  • java統(tǒng)計(jì)出字符串中的英文字母,空格,數(shù)字和其他字符的個數(shù)

這兩個算是比較基礎(chǔ)的算法題目,斐波那契采用遞歸的方式解決,字符統(tǒng)計(jì)通過判斷char的編碼范圍來做統(tǒng)計(jì)。

讀后感:

個人感覺這是一個不錯的個人博客,頁面風(fēng)格簡潔,美觀,但愿不要哪天不再支持訪問了。已加入到訂閱列表。以前我也喜歡自己搞個人網(wǎng)站,現(xiàn)在感覺沒那么多時間去維護(hù)了~

理解 Thread.Sleep 函數(shù)

原文地址:理解 Thread.Sleep 函數(shù)

Java基礎(chǔ)

首先我們知道Thread.sleep(timeout); 函數(shù)用于將線程掛起一段時間。

作者提出了2個問題:

  • 假設(shè)現(xiàn)在是 2008-4-7 12:00:00.000,如果我調(diào)用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的時候,這個線程會 不會被喚醒?
  • 某人的代碼中用了一句看似莫明其妙的話:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉這句代碼相比,有啥區(qū)別么?

作者首先回顧了一些操作系統(tǒng)原理:Unix系統(tǒng)使用時間片算法,Windows使用搶占式。
作者用分蛋糕的場景來做比喻,蛋糕(時間)、刀叉CPU、吃蛋糕的人(進(jìn)程)。

Thread.sleep的作用就是告訴操作系統(tǒng)未來多少毫秒內(nèi)不參與CPU競爭。

  • 第一題:不一定。只是告訴操作系統(tǒng)自己開始參與CPU競爭,但是不保證立刻獲取執(zhí)行權(quán)。
  • 第二題:有區(qū)別,Thread.Sleep(0)的作用,就是“觸發(fā)操作系統(tǒng)立刻重新進(jìn)行一次CPU競爭”。

提到一個概念:其實(shí)在Windows原理層面,CPU競爭都是線程級的。

讀后感:

涉及到操作系統(tǒng)中CPU資源分配的原理,以及Thread.sleep();在此過程中起到的作用。希望可以通過閱讀《Java編程思想》、《操作系統(tǒng)實(shí)現(xiàn)與原理》2本書做更深入的了解。前一本已經(jīng)讀過幾遍,后一本正在讀。


觀察者模式和Spring的結(jié)合:

原文地址:觀察者模式和Spring的結(jié)合

設(shè)計(jì)模式 模式實(shí)例

本文作者提到的一個需求:每次熱部署后,對查詢回來的數(shù)據(jù)進(jìn)行各種各樣的過濾,將過濾的數(shù)據(jù)保存到不同的容器中。一開始的思路是,使用定時器,定義一個過濾類,將數(shù)據(jù)進(jìn)行過濾分發(fā)。

初始思路的弊端:

  • 不利于擴(kuò)展,如果后續(xù)新增其他過濾方式的話,需要改處理類中的代碼。

解決思路:
將每個過濾條件作為一個觀察者對象。通過spring的方式將多個過濾條件注冊到主題上。當(dāng)主題內(nèi)容發(fā)生變化時,notify所有的觀察者對象。

原文作者感悟:

很多的知識不是會了就會了,在自己的腦子里存著是一回事,能在特定的業(yè)務(wù)場景下能用上是另一回事。有些知識沒用時覺得難,但是用過了之后就覺得真的不是很難。多實(shí)踐。

讀后感:

個人感覺,文章中的實(shí)例代碼的類名會有些誤導(dǎo),總會把Filter和web的Filter想到一塊去,其實(shí)里面Filter是上面提到的過濾的意思。以前的理解,觀察者模式中,要有主題、觀察者。本文中的主題就是熱部署對象HotDeployManager,它繼承自抽象主題AbstractPriceFilter。
抽象主題中有個存放觀察者的容器,這個容器的初始化是通過spring的MethodInvokingFactoryBean方式來注入的。這樣做的好處是當(dāng)有新的觀察時,不需要修改代碼,只有在spring的配置文件中新增一個ref的觀察者對象即可。做到了符合開閉原則。不過文中作者提到的解耦,我感覺并不是因?yàn)槭褂昧擞^察者模式才解決的,而是因?yàn)槭褂昧藄pring容器。作者使用觀察者模式只是解決了業(yè)務(wù)的基本需求。
PS: 我目前對觀察者模式還沒有深入研究,以后再看。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,901評論 25 709
  • 2015終于要過去了,看著今天的工作計(jì)劃,感慨這一年總算有了個完美的收尾,可以安心過個年了,同時也希望能夠獲得與今...
    涼歌閱讀 225評論 0 0
  • 清明節(jié),中國人多會回故里祭奠離開的親人,或是認(rèn)祖歸宗,這也是國人的一種思鄉(xiāng)情節(jié)。 修家譜族譜,拜祭祖宗成了清明的一...
    洛泓閱讀 364評論 0 1
  • ------從你的全世界路過,路過你的喜怒哀樂。從頭到尾,開頭到結(jié)局,都是觀眾,而非主角。你一直在變,而我也是。 ...
    慕容二鐵柱閱讀 522評論 10 4

友情鏈接更多精彩內(nèi)容