201810-17 服務(wù)端I/O性能大比拼:Node、PHP、Java、Go 摘要:本文首先簡單介紹了I/O相關(guān)的基礎(chǔ)概念,然后橫向比較了Node、PHP、Java、Go的I/O性能,并給出了選型建議。了解應(yīng)用程序的輸入/輸出(I/O)模型能夠更好的理解它在處理負(fù)載時理想情況與實際情況下的差異。也許你的應(yīng)用程序很小,也無需支撐太高的負(fù)載,所以這方面需要考慮的東西還比較少。但是,隨著應(yīng)用程序流量負(fù)載的增加,使用錯誤的I/O模型可能會導(dǎo)致非常嚴(yán)重的后果。在本文中,我們將把Node、Java、Go和P... 繼續(xù)閱讀 >
201808-28 數(shù)據(jù)埋點太難!知乎的做法有何可借鑒之處? 埋點作為商業(yè)智能(BI)和人工智能(AI)體系中重要的一環(huán),是公司提升產(chǎn)品工程質(zhì)量、實施ABTesting、個性化推薦服務(wù)重要的數(shù)據(jù)來源。在傳統(tǒng)的純Web和Native開發(fā)的產(chǎn)品中,埋點從技術(shù)的角度來說未必多深奧,但從業(yè)務(wù)的角度來說要做到埋點設(shè)計規(guī)范、流程高效和保證質(zhì)量卻是很難。本文重點介紹一下知乎客戶端的埋點模型、流程和平臺技術(shù)。客戶端埋點為什么難?Web端的埋點可以隨著新代碼上線即時生效,對版本... 繼續(xù)閱讀 >
201808-21 彼之蜜糖,吾之砒霜——聊聊軟件開發(fā)中的最佳實踐 “描述一個事物,唯有一個名詞定義它的概念,唯有一個動詞揭露它的行為,唯有一個形容詞表現(xiàn)它的特征。要做的,就是用心去尋找那個名詞、那個動詞、那個形容詞……”—— 福樓拜(GustaveFlaubert)我想講個故事。很久很久以前(一般講故事都是這樣開頭吧),兩個老工程師在一起聊天,談各自生涯中最自豪的工程。其中一個先講述了他的杰作:“ 我們建... 繼續(xù)閱讀 >
201806-20 時序數(shù)據(jù)庫技術(shù)體系 – Druid 多維查詢之Bitmap索引 時序數(shù)據(jù)庫從抽象語義上來說總體可以概括為兩個方面的基本需求,一個方面是存儲層面的基本需求:包括LSM寫入模型保證寫入性能、數(shù)據(jù)分級存儲(最近2小時的數(shù)據(jù)存儲在內(nèi)存中,最近一天的數(shù)據(jù)存儲在SSD中,一天以后的數(shù)據(jù)存儲在HDD中)保證查詢性能以及存儲成本、數(shù)據(jù)按時間分區(qū)保證時間線查詢性能。另一方面是查詢層面的基本需求:包括基本的按時間線進(jìn)行多個維度的原始數(shù)據(jù)查詢、按時間線在多個維度進(jìn)行聚合后的數(shù)據(jù)統(tǒng)計查詢需... 繼續(xù)閱讀 >
201804-19 17 個成功案例,讓你學(xué)會 MVP 最小可行性產(chǎn)品設(shè)計 編者按:在競爭日益激烈的世界里,創(chuàng)業(yè)公司需要比以往更快地將產(chǎn)品推向市場。最小可行的產(chǎn)品,也就是MVP,是實現(xiàn)這一目標(biāo)的方法,但你必須能夠提供正確的關(guān)鍵功能,這些關(guān)鍵功能需要與眾不同且能夠給用戶創(chuàng)造價值。以便在推向市場之前吸引客戶和投資者。RST收集了17個成功的MVP的例子,來展示創(chuàng)業(yè)公司在開發(fā)MVP的關(guān)鍵功能集時,應(yīng)該關(guān)注什么。文章由36氪編譯,希望能夠為你帶來啟發(fā)。FacebookFacebook推出的所... 繼續(xù)閱讀 >
201804-19 攜程圖片服務(wù)架構(gòu) 作者簡介胡健,攜程框架高級研發(fā)經(jīng)理,目前負(fù)責(zé)多媒體服務(wù)的構(gòu)建和研發(fā)工作。近些年攜程業(yè)務(wù)突飛猛進(jìn),用戶遍及世界各地。公司對用戶體驗也越來越重視,每一個小的功能改動、頁面改版的背后,都有大量的A/B實驗提供保障。與此同時,與用戶體驗息息相關(guān)的媒體文件的應(yīng)用質(zhì)量也被放到重要位置,如圖片加載延時、成功率、清晰度等數(shù)據(jù)。本文將分享攜程圖片服務(wù)架構(gòu),包括服務(wù)架構(gòu)的演變過程,以及在生產(chǎn)上實際遇到的... 繼續(xù)閱讀 >
201803-26 Nerv - 京東高性能前端框架 Nerv是一款由京東凹凸實驗室打造的類React前端框架。目前已廣泛運用在京東商城(JD.COM)核心業(yè)務(wù)及TOPLIFE全站。Nerv基于React標(biāo)準(zhǔn),使用VirtualDom技術(shù),擁有和React一致的API與生命周期,如果你已經(jīng)對React使用非常熟悉,那么使用Nerv開發(fā)對你來說絕對是零學(xué)習(xí)成本。與此同時,相比于React以及市面其他同類型框架,Nerv更具體積輕量,性能高效的特點。并且,它符合當(dāng)下國情,可以完美兼容IE8及... 繼續(xù)閱讀 >
201803-12 6 個新奇的編程方式,改變你對編碼的認(rèn)知 我時不時會發(fā)現(xiàn)一種編程語言的不同用法它有時候會改變我對編程的看法啊。這篇文章中,我想分享一下讓我驚訝的發(fā)現(xiàn)。這不是類似于高呼“函數(shù)式編程會改變世界!”博客文章。我敢打賭,大多數(shù)讀者都沒有聽說過下面的大多數(shù)語言和范例,所以你應(yīng)該也會被這些新概念吸引。注意:我對以下大多數(shù)語言的使用經(jīng)驗都很少,但是我發(fā)現(xiàn)他們背后的想法非常吸引人,但對其沒有專業(yè)知識,所以有任何錯誤請指出并指導(dǎo)更正。如果您也有新的... 繼續(xù)閱讀 >
201803-12 你想知道的2018年軟件開發(fā)“10件事” 區(qū)塊鏈、NLP、AI驅(qū)動的工具、機(jī)器學(xué)習(xí)、無服務(wù)器計算和devops創(chuàng)新將在2018年改變開發(fā)者的生活。開發(fā)人員應(yīng)該對2018年的機(jī)遇感到興奮,產(chǎn)品和工具圍繞著諸如區(qū)塊鏈、聊天機(jī)器人、無服務(wù)器功能和機(jī)器學(xué)習(xí)等技術(shù)在現(xiàn)實世界的項目中變得足夠成熟。與此同時,許多開發(fā)人員會擔(dān)心,在不影響安全性和性能的前提下,他們將無法更快地交付代碼和功能。但這方面也有好消息。對于開發(fā)人員來說,2018年的定義是,在抓住轉(zhuǎn)型新... 繼續(xù)閱讀 >
201802-23 一個函數(shù)的自白 我是——編程世界的函數(shù),不是數(shù)學(xué)中的冪,指,對和三角函數(shù)等等,但是和f(x)又有著千絲萬縷的關(guān)系。我是代碼中的最小執(zhí)行組織,但不是最小執(zhí)行單元。最小的執(zhí)行單元是一條條語句,這些語句有機(jī)地組合起來完成一個或多個功能并且可以復(fù)用,這才是我——函數(shù)。內(nèi)存與堆棧和我之間是啥關(guān)系?有無參數(shù)的我有何異同?我的簡潔性?復(fù)雜度如何評估?我的高階與遞歸有啥區(qū)別?我的回調(diào)和匿名是一回事么?對象中的方法是... 繼續(xù)閱讀 >
201802-22 函數(shù)式編程簡介 函數(shù)式編程更加強(qiáng)調(diào)程序執(zhí)行的結(jié)果而非執(zhí)行的過程,倡導(dǎo)利用若干簡單的執(zhí)行單元讓計算結(jié)果不斷漸進(jìn),逐層推導(dǎo)復(fù)雜的運算,而不是設(shè)計一個復(fù)雜的執(zhí)行過程。–wiki例子一累加運算//sumList<Integer>nums=Arrays.asList(0,1,2,3,4,5,6,7,8,10);publicstaticIntegersum(List<Integer>nums){intresult=0;for(Integernum:nums){result+=num;}returnresult;}sum(nums);//->46同... 繼續(xù)閱讀 >
201801-02 OAuth 2.0 理解 OAuth是一個用于定于授權(quán)的開放標(biāo)準(zhǔn),目前已經(jīng)發(fā)展到了2.0的版本。它可以讓用戶允許第三方應(yīng)用程序訪問該用戶存儲在某一個網(wǎng)站或者系統(tǒng)上面的資源(比如照片,聯(lián)系人)而不用提供密碼給該第三方應(yīng)用程序,并且還可以限制權(quán)限和有效期。OAuth做到了一下這兩點:不需要將用戶名和密碼提供給第三方應(yīng)用而是通過令牌讓第三方應(yīng)用訪問資源每一個令牌授權(quán)一個特定的應(yīng)用在特定的時段內(nèi)訪問特定的資源應(yīng)用... 繼續(xù)閱讀 >
201712-20 GraphQL技術(shù)棧概覽:如何將所有的功能組合起來 Facebook將GraphQL作為開源項目發(fā)布已經(jīng)有兩年的時間了。從那時算起,社區(qū)就以指數(shù)級的速度在增長,現(xiàn)在成千上萬的公司在生產(chǎn)環(huán)境中使用GraphQL。在2017年10月舉行的GraphQL峰會上,我非常榮幸地受邀在第二天演講。讀者可以在YouTube上觀看完整的視頻,也可以通過閱讀本文對演講有一個大致的了解(演講的演示文稿可以在SlideShare站點下載——譯者注)。首先,我會簡要介紹一下GraphQL的現(xiàn)狀,然后闡述它未來一段時間... 繼續(xù)閱讀 >
201712-11 函數(shù)式編程中的 “函數(shù)們” 函數(shù)式編程中函數(shù)有三種不同的解讀方式,分別為純函數(shù)、高階函數(shù)和一等函數(shù)。本文分別對這三者的概念、應(yīng)用和聯(lián)系進(jìn)行詳解。純函數(shù)定義:1.相同的輸入必定產(chǎn)生相同的輸出2.在計算的過程中,不會產(chǎn)生副作用滿足上述兩個條件,我們就說該函數(shù)是純函數(shù)。純函數(shù)也即數(shù)學(xué)意義上的函數(shù),表達(dá)的是數(shù)據(jù)之間的轉(zhuǎn)換(映射)關(guān)系,而非計算步驟的詳述。數(shù)學(xué)函數(shù)的定義:函數(shù)通常由定義域X、值域Y,以及... 繼續(xù)閱讀 >
201711-30 Lens: 從入門到再次入門 類型補(bǔ)全計畫從上一篇我們可以看出,Lens就是整合在一起的 Getter 和 Setter ,借助 set , over , view 這三個函數(shù),我們可以分別使用Lens的 Getter 和 Setter 。但是我們目前的Lens類型定義并不是完整的,因此我們首先對Lens的類型進(jìn)行補(bǔ)全。typeLenssa=Functorf=>(a->fa)->(s->fs)首先讓我們看這樣一個例子:... 繼續(xù)閱讀 >
201711-08 編程中的24條經(jīng)典語錄——戳中心房 1、不要看到別人的建議第一句話就說:給寫個代碼吧!你應(yīng)該想想為什么。當(dāng)你自己想出來再參考別人的提示,你就知道自己和別人思路的差異。2、初學(xué)者請不要看太多太多的書那會誤人子弟的,先找本系統(tǒng)的學(xué),很多人用了很久都是只對部分功能熟悉而已,不系統(tǒng)還是不夠的。3、看幫助,不要因為很難而自己是初學(xué)者所以就不看;幫助永遠(yuǎn)是最好的參考手冊,雖然幫助的文字有時候很難看懂,總覺得不夠直觀。4、不要被對象、屬... 繼續(xù)閱讀 >