蕭璋
瘦腿霜只是消水腫,鍛煉才是硬道理
蓮花峰
記憶力可以通過(guò)訓(xùn)練得到提高。古今中外,很多名人學(xué)者都很注意用各種方法來(lái)鍛煉自己的記憶力。比如俄國(guó)大文學(xué)家托爾斯泰說(shuō)過(guò):“我每天做兩種操,一是早操,一是記憶力操,每天早上背書和外語(yǔ)單詞,以檢查和培養(yǎng)自己的記憶力”。托爾斯泰的“記憶力操”實(shí)際上就是反復(fù)“復(fù)現(xiàn)”。只要你有計(jì)劃地“復(fù)現(xiàn)”,你的記憶力一定會(huì)不斷增強(qiáng)。 下面幾種訓(xùn)練記憶力的方法很有效,你不妨平時(shí)參照一下。 暗示法———積極。 許多人常常感嘆“我記性不好”,韶華漸逝是一方面,另一方面也是對(duì)自己的記憶力缺乏足夠的信心。面對(duì)一連串的外語(yǔ)單詞或一大堆材料,有些人想:這么多,我能記住嗎?其實(shí),這就給自己的記憶設(shè)了障礙。應(yīng)該給自己打氣:“我一定能記住。”這是積極的心理暗示。想想你小時(shí)候就能熟背唐詩(shī)的情形;想想你以往考試前精心復(fù)習(xí),取得了前幾名。 記者的一位好友董小姐近來(lái)常常苦惱于自己記性差,總忘事??墒撬髮W(xué)同學(xué)說(shuō):“差什么差,讀大學(xué)時(shí)考古代文學(xué)我提前半個(gè)月復(fù)習(xí),你只提前兩天突擊,就考了90多分,比我還高呢?!倍〗阈α耍骸皩?duì)呀,我記憶力挺好啊,得好好開(kāi)發(fā)開(kāi)發(fā)。” 強(qiáng)記法———限時(shí)。 在規(guī)定的時(shí)間里記憶數(shù)字、人名、單詞等,可以鍛煉強(qiáng)記的能力。比如,在地鐵候車時(shí),你規(guī)定自己在車來(lái)之前記住廣告牌上的幾個(gè)電話和地址,而且,盡量用你的右腦來(lái)記憶。第二天,看看你是否全記住了。別以為這樣很無(wú)聊,這可是充分調(diào)動(dòng)你的左右腦,防止大腦老化,提高記憶力,而且一分錢不用花。這種方法隨時(shí)隨地都可以做。當(dāng)然,你也可以隨身帶幾張客戶名片,用上下班時(shí)間來(lái)記上面的地址和電話。 回憶法———精細(xì)。 我們平時(shí)接觸了很多人和事物,記了很多,但因?yàn)楹苌倩貞?,所以很多記住的東西又模糊或淡忘了。?;貞?,并盡可能精細(xì),是鍛煉記憶的好方法。近期中央電視臺(tái)《挑戰(zhàn)主持人》節(jié)目中,要求攻擂者和守擂者在短時(shí)間內(nèi)觀察一名模特,然后比賽看誰(shuí)記住的內(nèi)容多,這個(gè)內(nèi)容就非常精細(xì),比如模特服裝的顏色,穿了幾件T恤,佩戴了什么飾品,飾品各戴在什么位置,鞋上有什么裝飾等……兩名賽者的記憶力令人驚嘆。其實(shí),我們平時(shí)就可以這樣鍛煉自己的記憶力。見(jiàn)了一個(gè)人,回憶一下她衣服的款式、顏色,發(fā)型和頭發(fā)的顏色,手袋的款式、面料等;也可以回憶一下你最近看過(guò)的電影,里面有什么人物?發(fā)生了什么事?結(jié)局怎樣?仔細(xì)回憶每一個(gè)鏡頭,越精細(xì)越好。 不要感嘆工作忙,壓力大,或年紀(jì)大了,這些都不是“記憶力下降”的理由。開(kāi)發(fā)你的右腦,利用零散時(shí)間鍛煉你的大腦,你的記憶力會(huì)越來(lái)越神奇。參考資料:http://www.hr.com.cn/glxlx/detail.php?id=79114
提賦
學(xué)習(xí)方法是:
1、課前預(yù)習(xí),課后復(fù)習(xí),認(rèn)真做課堂、課后的作業(yè),理解理論知識(shí)。
2、記住語(yǔ)法規(guī)則。
3、加強(qiáng)邏輯思維。
4、多動(dòng)手,通過(guò)練習(xí)上機(jī)了解它的運(yùn)行過(guò)程。
5、實(shí)踐—>理論—>再實(shí)踐,剛開(kāi)始學(xué)習(xí)C語(yǔ)言時(shí),按示例練習(xí),并推動(dòng)理論的學(xué)習(xí),然后再自己多思考,多上機(jī)實(shí)踐。
C語(yǔ)言是一門通用計(jì)算機(jī)編程語(yǔ)言,廣泛應(yīng)用于底層開(kāi)發(fā)。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
盡管C語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫出的C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機(jī)或稱MCU)以及超級(jí)電腦等作業(yè)平臺(tái)。
參考資料:c語(yǔ)言_百度百科 網(wǎng)頁(yè)鏈接
云中雪
第一階段:網(wǎng)站開(kāi)發(fā)基礎(chǔ)課程要點(diǎn):靜態(tài)網(wǎng)站必備知識(shí) HTML/CSS;動(dòng)態(tài)網(wǎng)站必備知識(shí)PHP和MySQL。第二階段:WEB應(yīng)用技術(shù)課程要點(diǎn):面向?qū)ο蟮某绦蛟O(shè)計(jì);自主研發(fā)MVC應(yīng)用與WEB高級(jí)技術(shù);中期項(xiàng)目總結(jié)第三階段:phpScript應(yīng)用技術(shù)課程要點(diǎn):phpScript語(yǔ)法、DOM編程、Ajax應(yīng)用技術(shù)、JQuery使用、JQuery中的Ajax第四階段:大型網(wǎng)站優(yōu)化課程要點(diǎn):Linux操作系統(tǒng)、LAMP環(huán)境搭建、LNMP環(huán)境搭建、大型數(shù)據(jù)庫(kù)設(shè)計(jì)、MySQL高級(jí)技術(shù)、MySQL優(yōu)化、頁(yè)面靜態(tài)化、偽靜態(tài)、大型網(wǎng)站架構(gòu)解決方案、Ningx服務(wù)器、Redis緩存服務(wù)器應(yīng)用,云服務(wù)器(阿里云)。第五階段:大項(xiàng)目實(shí)戰(zhàn)購(gòu)物網(wǎng)站/微信開(kāi)放平臺(tái)項(xiàng)目/APP接口和PHPCMS課程要點(diǎn):包含Sphinx、PHPMailer(發(fā)送郵件)、阿里大魚(發(fā)送短信)、HTTPS、Composer、微信支付、支付寶支付。微信開(kāi)發(fā)流程、LBS服務(wù)應(yīng)用,wechat SDK快速開(kāi)發(fā)微信公眾號(hào)應(yīng)用,小程序課程。PHPCMS欄目和文檔設(shè)計(jì)原理。第六階段:擴(kuò)展課程自學(xué)ThinkPHP/YdmPHP課程要點(diǎn):ThinkPHP是國(guó)內(nèi)應(yīng)用程度*的一個(gè)PHP框架,這個(gè)課程中培養(yǎng)學(xué)生學(xué)習(xí)一個(gè)新的開(kāi)發(fā)框架并且快速的勝任工作!
雷侖賦
剛開(kāi)始一定要使用輕柔些的音樂(lè)~~~12小時(shí)后使用普通音樂(lè)~~~最后使用舞曲~~~一般千元以下的不需要煲耳機(jī)的正常使用一段時(shí)間就可以了~~~~這是因?yàn)槎鷻C(jī)中的振膜和線圈剛開(kāi)始比較硬~~~使用后一段時(shí)間也就自然打開(kāi)了~~~~本回答被提問(wèn)者采納
吸星球
一 在村鎮(zhèn)規(guī)劃中,某村道路需擴(kuò)寬,有幾戶群眾擔(dān)心許諾賠償不能兌嚴(yán),有抵觸情緒,阻擋施工建設(shè),其中有一戶還是你親戚,作為村干部,你將如何處理這一問(wèn)題? 參考要點(diǎn) php程序員站 1、盡快了解掌握村里的實(shí)際情況;2、搞好班子團(tuán)結(jié),加強(qiáng)班子建設(shè)3、學(xué)習(xí)農(nóng)村法律法規(guī)、政策,虛心向村干部和致富能手學(xué)習(xí),提高自己的工作能力;4、積極為群眾提供技術(shù)、信息等服務(wù),引導(dǎo)群眾走產(chǎn)業(yè)化經(jīng)營(yíng)之路;5、積極傳播先進(jìn)文化,加強(qiáng)農(nóng)村精神文明建設(shè)。 phperz~com 二、在村鎮(zhèn)規(guī)劃中,某村道路需擴(kuò)寬,有幾戶群眾擔(dān)心許諾賠償不能兌現(xiàn),有抵觸情緒,阻擋施工建設(shè),其中有一戶還是你親戚。作為村干部,你將如何處理這一問(wèn)題?參考要點(diǎn):1、實(shí)施村鎮(zhèn)規(guī)劃,是改變村容村貌、提高村民生活質(zhì)量的一件大事,全體村民都應(yīng)該配合、支持;2、了解掌握這幾戶群眾產(chǎn)生抵觸情緒的原因和要求,做好耐心細(xì)致的思想工作,講明政策和利害關(guān)系;3、抓緊突破口,首先做好親戚的拆遷工作;4、及時(shí)解決拆戶的賠償和宅基地問(wèn)題。 php程序員之家 三:市委決定在全市范圍內(nèi)面向社會(huì)選拔大專以上學(xué)歷優(yōu)秀青年到農(nóng)村任職,在全市范圍內(nèi)尤其是青年當(dāng)中,引起廣泛關(guān)注,請(qǐng)談?wù)勀銓?duì)市委這次選拔大專以上學(xué)歷優(yōu)秀青年到農(nóng)村任職工作的認(rèn)識(shí)。 www.phperz.com 答題基本要求:1、是積極貫徹落實(shí)黨的各項(xiàng)路線方針政策,優(yōu)化農(nóng)村干部隊(duì)伍,全面加強(qiáng)農(nóng)村基層組織建設(shè)的需要。2、是為推動(dòng)農(nóng)村經(jīng)濟(jì)結(jié)構(gòu)調(diào)整,增加農(nóng)民收入,促進(jìn)農(nóng)村經(jīng)濟(jì)發(fā)展,全面建設(shè)小康社會(huì)的需要。3、為廣大有志青年自覺(jué)經(jīng)受鍛煉,增長(zhǎng)才干,接受教育,增強(qiáng)素質(zhì),實(shí)現(xiàn)自我價(jià)值提供了機(jī)遇。4、為促進(jìn)大專以上學(xué)歷畢業(yè)生就業(yè)工作廣開(kāi)門路。 www.phperz.com 評(píng)分要點(diǎn):1、以上答題要點(diǎn)僅供評(píng)分時(shí)參考,其中前三條占302、完整答出上述各要點(diǎn)者可得滿分。3、考生在答題過(guò)程中雖然沒(méi)有完整答出上述各答題要點(diǎn),但已涉及其中主要內(nèi)容,且所答論點(diǎn)明確,論述清晰,見(jiàn)解獨(dú)到,語(yǔ)言流暢,亦可酌情給分。 php程序員之家 第二題:目前,存在著這樣兩種觀點(diǎn):一是有人說(shuō),要使農(nóng)民富起來(lái),必須減少農(nóng)民。二是還有人說(shuō),農(nóng)民進(jìn)城,使城市管理混亂,增加城市壓力。你認(rèn)同哪種觀點(diǎn),為什么? php程序員之家 答案基本要點(diǎn): www.phperz.com 1、應(yīng)認(rèn)同第一種觀點(diǎn)。我國(guó)農(nóng)民數(shù)量龐大,但生產(chǎn)效率低下,要使廣大農(nóng)民富裕起來(lái)困難很大,在一些偏遠(yuǎn)落后地區(qū)幾乎是不可能的。 phperz~com2、必須減少農(nóng)民數(shù)量,提高農(nóng)民的勞動(dòng)生產(chǎn)率,才能使農(nóng)民在實(shí)際上富裕起來(lái)。 3、農(nóng)民進(jìn)城,造成城市管理難度加大,這是難免的。因此,增加中小城鎮(zhèn)建設(shè),拉大城市建設(shè)框架,以帶動(dòng)農(nóng)村經(jīng)濟(jì)的發(fā)展。 4、同時(shí)還應(yīng)大力發(fā)展龍頭企業(yè),調(diào)整優(yōu)化農(nóng)業(yè)結(jié)構(gòu),推動(dòng)農(nóng)業(yè)上臺(tái)階,上水平,促進(jìn)農(nóng)村經(jīng)濟(jì)和社會(huì)事業(yè)的健康發(fā)展。
姬志真
你好,應(yīng)該不會(huì)出現(xiàn)這個(gè)問(wèn)題才對(duì)。我也是每次在頁(yè)面里面改寫了一些內(nèi)容,保存運(yùn)行后,點(diǎn)一下頁(yè)面刷新的。應(yīng)該不會(huì)出現(xiàn)視頻上面所出現(xiàn)的情況。
http://wenku.baidu.com/course/study/9fc868eae009581b6bd9eb8a#fd86591b6bd97f192279e98a這個(gè)是php100的教程,64分鐘講解數(shù)據(jù)類型的時(shí)候,賦值改動(dòng)了幾次,可每次改動(dòng)后點(diǎn)擊運(yùn)行,就是改動(dòng)的頁(yè)面!
可能是人家進(jìn)行了設(shè)置吧,這個(gè)我就不清楚了.反正我是每次都刷新頁(yè)面的.
陶仲文
1.Bloom filter 適用范圍:可以用來(lái)實(shí)現(xiàn)數(shù)據(jù)字典,進(jìn)行數(shù)據(jù)的判重,或者集合求交集 基本原理及要點(diǎn): 對(duì)于原理來(lái)說(shuō)很簡(jiǎn)單,位數(shù)組+k個(gè)獨(dú)立hash函數(shù)。將hash函數(shù)對(duì)應(yīng)的值的位數(shù)組置1,查找時(shí)如果發(fā)現(xiàn)所有hash函數(shù)對(duì)應(yīng)位都是1說(shuō)明存在,很明顯這個(gè)過(guò)程并不保證查找的結(jié)果是100%正確的。同時(shí)也不支持刪除一個(gè)已經(jīng)插入的關(guān)鍵字,因?yàn)樵撽P(guān)鍵字對(duì)應(yīng)的位會(huì)牽動(dòng)到其他的關(guān)鍵字。所以一個(gè)簡(jiǎn)單的改進(jìn)就是 counting Bloom filter,用一個(gè)counter數(shù)組代替位數(shù)組,就可以支持刪除了。 還有一個(gè)比較重要的問(wèn)題,如何根據(jù)輸入元素個(gè)數(shù)n,確定位數(shù)組m的大小及hash函數(shù)個(gè)數(shù)。當(dāng)hash函數(shù)個(gè)數(shù)k=(ln2)*(m/n)時(shí)錯(cuò)誤率最小。在錯(cuò)誤率不大于E的情況下,m至少要等于n*lg(1/E)才能表示任意n個(gè)元素的集合。但m還應(yīng)該更大些,因?yàn)檫€要保證bit數(shù)組里至少一半為 0,則m 應(yīng)該>=nlg(1/E)*lge 大概就是nlg(1/E)1.44倍(lg表示以2為底的對(duì)數(shù))。 舉個(gè)例子我們假設(shè)錯(cuò)誤率為0.01,則此時(shí)m應(yīng)大概是n的13倍。這樣k大概是8個(gè)。 注意這里m與n的單位不同,m是bit為單位,而n則是以元素個(gè)數(shù)為單位(準(zhǔn)確的說(shuō)是不同元素的個(gè)數(shù))。通常單個(gè)元素的長(zhǎng)度都是有很多bit的。所以使用bloom filter內(nèi)存上通常都是節(jié)省的。 擴(kuò)展: Bloom filter將集合中的元素映射到位數(shù)組中,用k(k為哈希函數(shù)個(gè)數(shù))個(gè)映射位是否全1表示元素在不在這個(gè)集合中。Counting bloom filter(CBF)將位數(shù)組中的每一位擴(kuò)展為一個(gè)counter,從而支持了元素的刪除操作。Spectral Bloom Filter(SBF)將其與集合元素的出現(xiàn)次數(shù)關(guān)聯(lián)。SBF采用counter中的最小值來(lái)近似表示元素的出現(xiàn)頻率。 問(wèn)題實(shí)例:給你A,B兩個(gè)文件,各存放50億條URL,每條URL占用64字節(jié),內(nèi)存限制是4G,讓你找出A,B文件共同的URL。如果是三個(gè)乃至n個(gè)文件呢? 根據(jù)這個(gè)問(wèn)題我們來(lái)計(jì)算下內(nèi)存的占用,4G=2^32大概是40億*8大概是340億,n=50億,如果按出錯(cuò)率0.01算需要的大概是650億個(gè) bit?,F(xiàn)在可用的是340億,相差并不多,這樣可能會(huì)使出錯(cuò)率上升些。另外如果這些urlip是一一對(duì)應(yīng)的,就可以轉(zhuǎn)換成ip,則大大簡(jiǎn)單了。 2.Hashing 適用范圍:快速查找,刪除的基本數(shù)據(jù)結(jié)構(gòu),通常需要總數(shù)據(jù)量可以放入內(nèi)存 基本原理及要點(diǎn): hash函數(shù)選擇,針對(duì)字符串,整數(shù),排列,具體相應(yīng)的hash方法。 碰撞處理,一種是open hashing,也稱為拉鏈法;另一種就是closed hashing,也稱開(kāi)地址法,opened addressing。 (http://www.my400800.cn) 擴(kuò)展: d-left hashing中的d是多個(gè)的意思,我們先簡(jiǎn)化這個(gè)問(wèn)題,看一看2-left hashing。2-left hashing指的是將一個(gè)哈希表分成長(zhǎng)度相等的兩半,分別叫做T1和T2,給T1和T2分別配備一個(gè)哈希函數(shù),h1和h2。在存儲(chǔ)一個(gè)新的key時(shí),同時(shí)用兩個(gè)哈希函數(shù)進(jìn)行計(jì)算,得出兩個(gè)地址h1[key]和h2[key]。這時(shí)需要檢查T1中的h1[key]位置和T2中的h2[key]位置,哪一個(gè)位置已經(jīng)存儲(chǔ)的(有碰撞的)key比較多,然后將新key存儲(chǔ)在負(fù)載少的位置。如果兩邊一樣多,比如兩個(gè)位置都為空或者都存儲(chǔ)了一個(gè)key,就把新key 存儲(chǔ)在左邊的T1子表中,2-left也由此而來(lái)。在查找一個(gè)key時(shí),必須進(jìn)行兩次hash,同時(shí)查找兩個(gè)位置。 問(wèn)題實(shí)例: 1).海量日志數(shù)據(jù),提取出某日訪問(wèn)百度次數(shù)最多的那個(gè)IP。 IP的數(shù)目還是有限的,最多2^32個(gè),所以可以考慮使用hash將ip直接存入內(nèi)存,然后進(jìn)行統(tǒng)計(jì)。 3.bit-map 適用范圍:可進(jìn)行數(shù)據(jù)的快速查找,判重,刪除,一般來(lái)說(shuō)數(shù)據(jù)范圍是int的10倍以下 基本原理及要點(diǎn):使用bit數(shù)組來(lái)表示某些元素是否存在,比如8位電話號(hào)碼 擴(kuò)展:bloom filter可以看做是對(duì)bit-map的擴(kuò)展 問(wèn)題實(shí)例: 1)已知某個(gè)文件內(nèi)包含一些電話號(hào)碼,每個(gè)號(hào)碼為8位數(shù)字,統(tǒng)計(jì)不同號(hào)碼的個(gè)數(shù)。 8位最多99 999 999,大概需要99m個(gè)bit,大概10幾m字節(jié)的內(nèi)存即可。 2)2.5億個(gè)整數(shù)中找出不重復(fù)的整數(shù)的個(gè)數(shù),內(nèi)存空間不足以容納這2.5億個(gè)整數(shù)。 將bit-map擴(kuò)展一下,用2bit表示一個(gè)數(shù)即可,0表示未出現(xiàn),1表示出現(xiàn)一次,2表示出現(xiàn)2次及以上?;蛘呶覀儾挥?bit來(lái)進(jìn)行表示,我們用兩個(gè)bit-map即可模擬實(shí)現(xiàn)這個(gè)2bit-map。 4.堆 適用范圍:海量數(shù)據(jù)前n大,并且n比較小,堆可以放入內(nèi)存 基本原理及要點(diǎn):最大堆求前n小,最小堆求前n大。方法,比如求前n小,我們比較當(dāng)前元素與最大堆里的最大元素,如果它小于最大元素,則應(yīng)該替換那個(gè)最大元素。這樣最后得到的n個(gè)元素就是最小的n個(gè)。適合大數(shù)據(jù)量,求前n小,n的大小比較小的情況,這樣可以掃描一遍即可得到所有的前n元素,效率很高。 擴(kuò)展:雙堆,一個(gè)最大堆與一個(gè)最小堆結(jié)合,可以用來(lái)維護(hù)中位數(shù)。 問(wèn)題實(shí)例: 1)100w個(gè)數(shù)中找最大的前100個(gè)數(shù)。 用一個(gè)100個(gè)元素大小的最小堆即可。 5.雙層桶劃分 ----其實(shí)本質(zhì)上就是【分而治之】的思想,重在“分”的技巧上! 適用范圍:第k大,中位數(shù),不重復(fù)或重復(fù)的數(shù)字 基本原理及要點(diǎn):因?yàn)樵胤秶艽?,不能利用直接尋址表,所以通過(guò)多次劃分,逐步確定范圍,然后最后在一個(gè)可以接受的范圍內(nèi)進(jìn)行??梢酝ㄟ^(guò)多次縮小,雙層只是一個(gè)例子。 擴(kuò)展: 問(wèn)題實(shí)例: 1).2.5億個(gè)整數(shù)中找出不重復(fù)的整數(shù)的個(gè)數(shù),內(nèi)存空間不足以容納這2.5億個(gè)整數(shù)。 有點(diǎn)像鴿巢原理,整數(shù)個(gè)數(shù)為2^32,也就是,我們可以將這2^32個(gè)數(shù),劃分為2^8個(gè)區(qū)域(比如用單個(gè)文件代表一個(gè)區(qū)域),然后將數(shù)據(jù)分離到不同的區(qū)域,然后不同的區(qū)域在利用bitmap就可以直接解決了。也就是說(shuō)只要有足夠的磁盤空間,就可以很方便的解決。 2).5億個(gè)int找它們的中位數(shù)。 這個(gè)例子比上面那個(gè)更明顯。首先我們將int劃分為2^16個(gè)區(qū)域,然后讀取數(shù)據(jù)統(tǒng)計(jì)落到各個(gè)區(qū)域里的數(shù)的個(gè)數(shù),之后我們根據(jù)統(tǒng)計(jì)結(jié)果就可以判斷中位數(shù)落到那個(gè)區(qū)域,同時(shí)知道這個(gè)區(qū)域中的第幾大數(shù)剛好是中位數(shù)。然后第二次掃描我們只統(tǒng)計(jì)落在這個(gè)區(qū)域中的那些數(shù)就可以了。 實(shí)際上,如果不是int是int64,我們可以經(jīng)過(guò)3次這樣的劃分即可降低到可以接受的程度。即可以先將int64分成2^24個(gè)區(qū)域,然后確定區(qū)域的第幾大數(shù),在將該區(qū)域分成2^20個(gè)子區(qū)域,然后確定是子區(qū)域的第幾大數(shù),然后子區(qū)域里的數(shù)的個(gè)數(shù)只有2^20,就可以直接利用direct addr table進(jìn)行統(tǒng)計(jì)了。 6.數(shù)據(jù)庫(kù)索引 適用范圍:大數(shù)據(jù)量的增刪改查 基本原理及要點(diǎn):利用數(shù)據(jù)的設(shè)計(jì)實(shí)現(xiàn)方法,對(duì)海量數(shù)據(jù)的增刪改查進(jìn)行處理。 擴(kuò)展: 問(wèn)題實(shí)例: 7.倒排索引(Inverted index) 適用范圍:搜索引擎,關(guān)鍵字查詢 基本原理及要點(diǎn):為何叫倒排索引?一種索引方法,被用來(lái)存儲(chǔ)在全文搜索下某個(gè)單詞在一個(gè)文檔或者一組文檔中的存儲(chǔ)位置的映射。 以英文為例,下面是要被索引的文本: T0 = "it is what it is" T1 = "what is it" T2 = "it is a banana" 我們就能得到下面的反向文件索引: "a": {2} "banana": {2} "is": {0, 1, 2} "it": {0, 1, 2} "what": {0, 1} 檢索的條件"what", "is" 和 "it" 將對(duì)應(yīng)集合的交集。 正向索引開(kāi)發(fā)出來(lái)用來(lái)存儲(chǔ)每個(gè)文檔的單詞的列表。正向索引的查詢往往滿足每個(gè)文檔有序頻繁的全文查詢和每個(gè)單詞在校驗(yàn)文檔中的驗(yàn)證這樣的查詢。在正向索引中,文檔占據(jù)了中心的位置,每個(gè)文檔指向了一個(gè)它所包含的索引項(xiàng)的序列。也就是說(shuō)文檔指向了它包含的那些單詞,而反向索引則是單詞指向了包含它的文檔,很容易看到這個(gè)反向的關(guān)系。 擴(kuò)展: 問(wèn)題實(shí)例:文檔檢索系統(tǒng),查詢那些文件包含了某單詞,比如常見(jiàn)的學(xué)術(shù)論文的關(guān)鍵字搜索。 8.外排序 適用范圍:大數(shù)據(jù)的排序,去重 基本原理及要點(diǎn):外排序的歸并方法,置換選擇 敗者樹(shù)原理,最優(yōu)歸并樹(shù) 擴(kuò)展: 問(wèn)題實(shí)例: 1).有一個(gè)1G大小的一個(gè)文件,里面每一行是一個(gè)詞,詞的大小不超過(guò)16個(gè)字節(jié),內(nèi)存限制大小是1M。返回頻數(shù)最高的100個(gè)詞。 這個(gè)數(shù)據(jù)具有很明顯的特點(diǎn),詞的大小為16個(gè)字節(jié),但是內(nèi)存只有1m做hash有些不夠,所以可以用來(lái)排序。內(nèi)存可以當(dāng)輸入緩沖區(qū)使用。 9.trie樹(shù) 適用范圍:數(shù)據(jù)量大,重復(fù)多,但是數(shù)據(jù)種類小可以放入內(nèi)存 基本原理及要點(diǎn):實(shí)現(xiàn)方式,節(jié)點(diǎn)孩子的表示方式 擴(kuò)展:壓縮實(shí)現(xiàn)。 問(wèn)題實(shí)例: 1).有10個(gè)文件,每個(gè)文件1G, 每個(gè)文件的每一行都存放的是用戶的query,每個(gè)文件的query都可能重復(fù)。要你按照query的頻度排序 。 2).1000萬(wàn)字符串,其中有些是相同的(重復(fù)),需要把重復(fù)的全部去掉,保留沒(méi)有重復(fù)的字符串。請(qǐng)問(wèn)怎么設(shè)計(jì)和實(shí)現(xiàn)? 3).尋找熱門查詢:查詢串的重復(fù)度比較高,雖然總數(shù)是1千萬(wàn),但如果除去重復(fù)后,不超過(guò)3百萬(wàn)個(gè),每個(gè)不超過(guò)255字節(jié)。 10.分布式處理 mapreduce 適用范圍:數(shù)據(jù)量大,但是數(shù)據(jù)種類小可以放入內(nèi)存 基本原理及要點(diǎn):將數(shù)據(jù)交給不同的機(jī)器去處理,數(shù)據(jù)劃分,結(jié)果歸約。 擴(kuò)展: 問(wèn)題實(shí)例: 1).The canonical example application of MapReduce is a process to count the appearances of each different word in a set of documents: void map(String name, String document): // name: document name // document: document contents for each word w in document: EmitIntermediate(w, 1); void reduce(String word, Iterator partialCounts): // key: a word // values: a list of aggregated partial counts int result = 0; for each v in partialCounts: result += ParseInt(v); Emit(result); Here, each document is split in words, and each word is counted initially with a "1" value by the Map function, using the word as the result key. The framework puts together all the pairs with the same key and feeds them to the same call to Reduce, thus this function just needs to sum all of its input values to find the total appearances of that word. 2).海量數(shù)據(jù)分布在100臺(tái)電腦中,想個(gè)辦法高效統(tǒng)計(jì)出這批數(shù)據(jù)的TOP10。 3).一共有N個(gè)機(jī)器,每個(gè)機(jī)器上有N個(gè)數(shù)。每個(gè)機(jī)器最多存O(N)個(gè)數(shù)并對(duì)它們操作。如何找到N^2個(gè)數(shù)的中數(shù)(median)? 經(jīng)典問(wèn)題分析 上千萬(wàn)or億數(shù)據(jù)(有重復(fù)),統(tǒng)計(jì)其中出現(xiàn)次數(shù)最多的前N個(gè)數(shù)據(jù),分兩種情況:可一次讀入內(nèi)存,不可一次讀入。 可用思路:trie樹(shù)+堆,數(shù)據(jù)庫(kù)索引,劃分子集分別統(tǒng)計(jì),hash,分布式計(jì)算,近似統(tǒng)計(jì),外排序 所謂的是否能一次讀入內(nèi)存,實(shí)際上應(yīng)該指去除重復(fù)后的數(shù)據(jù)量。如果去重后數(shù)據(jù)可以放入內(nèi)存,我們可以為數(shù)據(jù)建立字典,比如通過(guò) map,hashmap,trie,然后直接進(jìn)行統(tǒng)計(jì)即可。當(dāng)然在更新每條數(shù)據(jù)的出現(xiàn)次數(shù)的時(shí)候,我們可以利用一個(gè)堆來(lái)維護(hù)出現(xiàn)次數(shù)最多的前N個(gè)數(shù)據(jù),當(dāng)然這樣導(dǎo)致維護(hù)次數(shù)增加,不如完全統(tǒng)計(jì)后在求前N大效率高。 如果數(shù)據(jù)無(wú)法放入內(nèi)存。一方面我們可以考慮上面的字典方法能否被改進(jìn)以適應(yīng)這種情形,可以做的改變就是將字典存放到硬盤上,而不是內(nèi)存,這可以參考數(shù)據(jù)庫(kù)的存儲(chǔ)方法。 當(dāng)然還有更好的方法,就是可以采用分布式計(jì)算,基本上就是map-reduce過(guò)程,首先可以根據(jù)數(shù)據(jù)值或者把數(shù)據(jù)hash(md5)后的值,將數(shù)據(jù)按照范圍劃分到不同的機(jī)子,最好可以讓數(shù)據(jù)劃分后可以一次讀入內(nèi)存,這樣不同的機(jī)子負(fù)責(zé)處理各種的數(shù)值范圍,實(shí)際上就是map。得到結(jié)果后,各個(gè)機(jī)子只需拿出各自的出現(xiàn)次數(shù)最多的前N個(gè)數(shù)據(jù),然后匯總,選出所有的數(shù)據(jù)中出現(xiàn)次數(shù)最多的前N個(gè)數(shù)據(jù),這實(shí)際上就是reduce過(guò)程。 實(shí)際上可能想直接將數(shù)據(jù)均分到不同的機(jī)子上進(jìn)行處理,這樣是無(wú)法得到正確的解的。因?yàn)橐粋€(gè)數(shù)據(jù)可能被均分到不同的機(jī)子上,而另一個(gè)則可能完全聚集到一個(gè)機(jī)子上,同時(shí)還可能存在具有相同數(shù)目的數(shù)據(jù)。比如我們要找出現(xiàn)次數(shù)最多的前100個(gè),我們將1000萬(wàn)的數(shù)據(jù)分布到10臺(tái)機(jī)器上,找到每臺(tái)出現(xiàn)次數(shù)最多的前 100個(gè),歸并之后這樣不能保證找到真正的第100個(gè),因?yàn)楸热绯霈F(xiàn)次數(shù)最多的第100個(gè)可能有1萬(wàn)個(gè),但是它被分到了10臺(tái)機(jī)子,這樣在每臺(tái)上只有1千個(gè),假設(shè)這些機(jī)子排名在1000個(gè)之前的那些都是單獨(dú)分布在一臺(tái)機(jī)子上的,比如有1001個(gè),這樣本來(lái)具有1萬(wàn)個(gè)的這個(gè)就會(huì)被淘汰,即使我們讓每臺(tái)機(jī)子選出出現(xiàn)次數(shù)最多的1000個(gè)再歸并,仍然會(huì)出錯(cuò),因?yàn)榭赡艽嬖诖罅總€(gè)數(shù)為1001個(gè)的發(fā)生聚集。因此不能將數(shù)據(jù)隨便均分到不同機(jī)子上,而是要根據(jù)hash 后的值將它們映射到不同的機(jī)子上處理,讓不同的機(jī)器處理一個(gè)數(shù)值范圍。 而外排序的方法會(huì)消耗大量的IO,效率不會(huì)很高。而上面的分布式方法,也可以用于單機(jī)版本,也就是將總的數(shù)據(jù)根據(jù)值的范圍,劃分成多個(gè)不同的子文件,然后逐個(gè)處理。處理完畢之后再對(duì)這些單詞的及其出現(xiàn)頻率進(jìn)行一個(gè)歸并。實(shí)際上就可以利用一個(gè)外排序的歸并過(guò)程。 另外還可以考慮近似計(jì)算,也就是我們可以通過(guò)結(jié)合自然語(yǔ)言屬性,只將那些真正實(shí)際中出現(xiàn)最多的那些詞作為一個(gè)字典,使得這個(gè)規(guī)??梢苑湃雰?nèi)存。
留贊
php學(xué)習(xí)成本低,但是要精通也不簡(jiǎn)單,寫出一個(gè)好程序需要對(duì)php的一些基本要點(diǎn)精通熟練否則會(huì)出現(xiàn)難以理解的錯(cuò)誤。比如php的一些函數(shù)isset,is_null,empty的區(qū)別,其中又和php的數(shù)據(jù)類型關(guān)聯(lián)起來(lái)。如果判斷錯(cuò)誤,會(huì)導(dǎo)致程序下一步操作出現(xiàn)錯(cuò)誤(常見(jiàn)因?yàn)閟ql查詢條件為空出錯(cuò))。最好我們?cè)诔绦蛑屑尤脲e(cuò)誤異常處理。1,php語(yǔ)法,數(shù)據(jù)類型和php函數(shù)精通熟練。2,懂得OOP編程概念并掌握一個(gè)php mvc框架,加快開(kāi)發(fā)效率,增加代碼利用率和資源可重復(fù)利用,代碼也會(huì)更加清 晰明了,可維護(hù)性高。3,安全性。了解網(wǎng)站常見(jiàn)的攻擊方式(XSS,csrf,sql-injection等)。4,性能優(yōu)化。(服務(wù)器,php,mysql,nosql)。5,熟悉js,ajax和html。熟悉http/ip協(xié)議。7,掌握l(shuí)nmp,lamp,iis服務(wù)環(huán)境的搭建和php的運(yùn)行原理。