Time of Update: 2018-12-03
副標題:《Programming Erlang》第十章 分布式編程 讀書筆記題外話:很久沒更新blog了,前陣子又是工作忙,又是要考試,實在沒精力寫blog。倒是攢了不少材料,以後慢慢添吧。這章最重要的內容就是erlang中兩個節點之間的串連規則。同一台機器上的兩個節點之間的串連很簡單,直接照著書上做就行了,比較麻煩的是不同機器之間節點的串連。書中的部分代碼我測試的結果是錯的,猜測可能和erlang的版本有關,也有可能和環境有配置關。首先,需要解釋一下long name和short
Time of Update: 2018-12-03
在我還在上學的時候,key-value這個詞更多的還是和hash表聯絡在一起的。而現在,當我看見key-value這個詞,馬上聯想到的就是BigTable,SimpleDB和雲端運算。當下,key-value store(或者叫key-valueDatabase,雲端儲存等等)是個非常時髦的詞彙,越來越多的開發人員(特別是互連網企業)開始關注和嘗試key-value的儲存形式。這年頭如果你還和別人聊關係型資料庫,貌似你都不好意思和人打招呼。可是,key-value
Time of Update: 2018-12-03
本文我最早貼在了北郵人論壇上,如果要轉載,註明出處哦。 今年招了兩次實習生,篩了幾百份簡曆,面了好幾輪,有些心得,希望能對師弟師妹們有些協助。 因為我參加過的都是技術人員的招聘,所以以下的經驗可能更適用於技術人員的實習,當然,我希望對於其它方向的同學也有借鑒。
Time of Update: 2018-12-03
說明:我對李先生並不偏見,甚至很長時間內對他充滿敬意。因為他會樂意去關注大學生的成長,無論其是否有沽名釣譽之嫌,至少他的行動值得尊敬。此外,本人絕對不是IT“專家”,以下文字只是一個IT民工的個人感觸。 “我們的模式是創業者找到我,我認可後他就進入創新工場,我提供資金、幫他打造團隊和最佳化他的商業計劃,但他要分我比天使更多的股份。”以上是李先生在接受採訪時的原話。表面上,創新工廠似乎比天使投資為創業者提供了更好,更加全面的服務。但實際上,你會發現,創新工廠的所謂創業者其實不過是他LKF的打工仔
Time of Update: 2018-12-03
幾年前,如果你上一個技術論壇,那麼很容易就可以陷入到一場關於程式設計語言之爭的口水仗。這幾年,也許是大家吵翻了,口水仗倒是沒有了,但是卻又走到了另一個極端,不能容忍一點點關於語言上的爭論和比較。很多時候,剛剛開個頭,馬上就會有人跳出來說,語言無高下,爭論沒意義。其實,語言是有高下之分的。拿自然語言說,好比英語和中文,英語在措辭上就是要比中文精確許多,所以寫論文的時候用英文往往能夠表達得更準確。程式設計語言中,C長於效能,Python側重粘合,仔細比較的話,它們就是有優劣,分高下。只不過,沒有絕對
Time of Update: 2018-12-03
A是某個部門的頭,手底下有好幾個team。平日裡,這些team都是各自為戰,年初的時候報指標,年底的時候考察總結。新年伊始,A雄心勃勃,有一個非常好的專案計劃I。因此希望能整合各個team的資源,一起來做這個大的項目。最簡單的做法,就是強制的將這個項目指派下去,各個team各領一份。不過這個方法會很有問題,首先,不能保證每個team都能夠接受I這個計劃,可能會對項目有抵觸情緒,最終會影響到執行力。而且,這種做法本身就與公司提倡的民主的文化相抵觸。於是,還是和往年一樣,A讓每個team自己提出今年
Time of Update: 2018-12-03
本文轉載於SMTH的SET版,由大牛pennyliang所作。覺著寫得真的挺好,就厚顏無恥的拿過來了。 我們首先從資料庫的角度看,我們知道mysql的基本結構一般是B+樹,為什麼常用的不是HASH呢?從幾個方面來看。 一般我們儲存資料的方法可以抽象為。 primay key, candiate key1,candidate key2,...->value{field1,field2,...} 如果我們支援的僅僅是 select field1 from
Time of Update: 2018-12-03
今天聽了一位工業設計界的大牛的講座,頗有感想,記下來,怕過會就忘了。 講座中提到了一些現在中國設計界的一些狀況,感覺他們混得不錯,常有國際大獎。並談到要努力將“made in China”轉變為“Design in
Time of Update: 2018-12-03
所謂JMM,即Java Memory Model。所謂“非完整”,即這篇blog只是很淺顯的一些筆記,而且所呈現的知識結構體系也是零散和不完整的。原因在於個人的懶散。當我發現要完整的搞懂JMM需要通讀大概幾十頁的英文paper時,我退縮了。這實在是個吃力不討好的事情,而且我現在也沒有這麼多時間去完整的瞭解JMM。所以,以下的內容只是在瀏覽過wiki和一些書的相關章節後組織起來的。它能夠帶給你的可能只有一些感性和淺顯的認識。如果想完整系統的瞭解JMM,這裡給出了最權威的文獻:The Java
Time of Update: 2018-12-03
非主流的手機定位:)原文link: http://heresy.spaces.live.com/blog/cns!E0070FB8ECF9015F!7853.entry?wa=wsignin1.0&sa=757360296 一般提到定位,大家應該都是想到 GPS(GlobalPositioning System,全球定位系統)
Time of Update: 2018-12-03
Cloud computing(雲端運算)是當下IT界最熱的概念,相當多的公司和很多的媒體都在為其搖旗呐喊。但是,在IT界內部,大家其實對於雲端運算的看法各不相同,褒貶不一。我在很多論壇上都看見過討論“雲”的文章,一般來說批評聲佔了大多數。將對於“雲”的批評綜合分析一下,大致分為兩類:認為雲端運算並不是什麼嶄新的技術,不過是原有的cluster computing(叢集計算),grid
Time of Update: 2018-12-03
很久沒更新了,唉,我實在不算是一個話多的人... 最近在折騰libevent,用它做一些網路層的應用。libevent這個庫挺棒的,但它最大的一個缺點就是資料太少,我在網上搜颳了半天也就是簡單的幾篇blog和它自己的mainpage,很多地方需要自己的摸索。昨天碰到一個問題:
Time of Update: 2018-12-03
前兩天CSDN的大標題有些嚇人“google 放棄MapReduce”。我找到原文瀏覽一番,其實並不是google不用MapReduce了,而是google在web indexing中已經放棄了MapReduce。看起來很意外,其實大勢所趨。MapReduce說到底是一個batch processing system(批處理系統),“you can't start your next phase of operations until you finish the
Time of Update: 2018-12-03
上篇說了半天,卻迴避了一個重要的問題:為什麼要用非同步呢,它有什麼樣的好處?坦率的說,我對這點的認識不是太深刻(套句俗語,只可意會,不可言傳)。還是舉個例子吧:比如Client向Server發送一個request,Server收到後需要100ms的處理時間,為了方便起見,我們忽略掉網路的延遲,並且,我們認為Server端的處理能力是無窮大的。在這個use case下,如果採用同步機制,即Client發送request -> 等待結果 ->
Time of Update: 2018-12-03
所謂web,指的是通過瀏覽器登入到web網站上,享受網站提供的服務;所謂app,就是指application,即將服務以application的形式呈現在手機端;(做Mobile的人都喜歡用App這個縮減詞,至於原因,有一個有趣的解釋:“Apps” is short for “applications“, apparently everything needs to be short in the mobile online web 2.0
Time of Update: 2018-12-03
最早發現soft state這個詞,是在brewer一篇PPT中(不熟悉brewer的,可以看我前面寫的一篇文章),裡面提到了著名的BASE準則:Basically Availble Soft-state Eventual Consistency 當時對soft state百思不得其解,查了很多資料,解釋也是千奇百怪。其中,查閱了brewer自己寫的paper【1】,裡面的解釋更加讓人稀裡糊塗。而在著名的DBAnote的一篇blog中,則將soft
Time of Update: 2018-12-03
矛盾很久,不確定是否該用“本質”這個詞,覺著自己好像還沒資格這麼說。其實,這篇探討的是換個角度看待同步和非同步差異。 為了分析同步和非同步區別,還是以前兩篇中出現過的Client發送request和接收response的程式為例。如果是同步機制的程式,大致應該是這樣的(只是一些虛擬碼):Socket sock = connectServer(address);if(sock == null) {handleConnectError();}boolean status =
Time of Update: 2018-12-03
自打google將它的MapReduce,GFS等等發布之後,分布式系統這個概念這幾年是越發的紅火了。當然,這也和大量的海量資料處理的需求息息相關。於是乎,越來越多的分布式專家也如雨後春筍般冒了出來。我曾經也以非常仰慕的心情去拜讀某些專家寫出來的文章,結果發現這幫傢伙無非是做過一些機器間的服務調用(比如SOAP),要麼就是配置過load balancer,做過負載平衡,進階些的就拿distributed hash table這樣的東西做過多台機器的key-value
Time of Update: 2018-12-03
沒有想到有一天真的會用到SoftReference,學的時候完全不知道這東西能幹嗎。今天它確實派上用場了,沒錯,我也是用它來做cache。 SoftReference的語義就是當記憶體不夠用的時候,GC會回收SoftReference所引用的對象。所以,在memory sensitive的程式中將某些大型資料設定成SoftReference再合適不過了。建立一個SoftReference:Object obj = new Object();SoftReference softRef = new
Time of Update: 2018-12-03
最近寫了個java的伺服器程式(基於Mina)在linux上運行,測試效能的時候發現任何一個request發送出去總是會有40ms的延遲再接受到response。一開始以為是邏輯處理和演算法的問題,最佳化了半天,發現延遲依然如故,即便最簡單的request也還需要40ms的延遲。而且,相同的一段程式,在我的windows筆記本上運行,就不存在這個40ms的延遲。之所以文章題目取名“靈異”,是因為我現在也只是找到了一個解決方案,但仍然不清楚問題出在什麼地方... 為瞭解釋得更清楚,簡化了伺服器的代