成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

后端好書(shū)閱讀與推薦

Juven / 2953人閱讀

摘要:后端好書(shū)閱讀與推薦這一兩年來(lái)養(yǎng)成了買(mǎi)書(shū)看書(shū)的習(xí)慣,陸陸續(xù)續(xù)也買(mǎi)了幾十本書(shū)了,但是一直沒(méi)有養(yǎng)成一個(gè)天天看書(shū)的習(xí)慣。高級(jí)程序設(shè)計(jì)高級(jí)程序設(shè)計(jì)第版豆瓣有人可能會(huì)有疑問(wèn),后端為啥要學(xué)呢其實(shí)就是為了更好的使用做鋪墊。

后端好書(shū)閱讀與推薦

這一兩年來(lái)養(yǎng)成了買(mǎi)書(shū)看書(shū)的習(xí)慣,陸陸續(xù)續(xù)也買(mǎi)了幾十本書(shū)了,但是一直沒(méi)有養(yǎng)成一個(gè)天天看書(shū)的習(xí)慣。今天突然想要做個(gè)決定:每天至少花1-3小時(shí)用來(lái)看書(shū)。這里我準(zhǔn)備把這兩年來(lái)看的書(shū)挑出好的做一個(gè)簡(jiǎn)要總結(jié)、即將要看的書(shū)做一個(gè)計(jì)劃,以便整理成書(shū)單留給自己學(xué)習(xí),也順便推薦給需要的童鞋。

ps:本書(shū)單針對(duì)同一大類(lèi)的知識(shí)點(diǎn)大致遵循著循序漸進(jìn),越學(xué)越深入越具體的順序。

JavaScript高級(jí)程序設(shè)計(jì)

JavaScript高級(jí)程序設(shè)計(jì)(第3版) (豆瓣) https://book.douban.com/subje...

有人可能會(huì)有疑問(wèn),后端為啥要學(xué)JavaScript呢?其實(shí)就是為了更好的使用node.js做鋪墊。這本書(shū)說(shuō)是高級(jí)程序設(shè)計(jì),其實(shí)還是比較基礎(chǔ),但是難能可貴的是它幾乎包含了所有的基礎(chǔ)知識(shí),而且對(duì)基礎(chǔ)知識(shí)的講解比較深入,至少看了過(guò)后就不會(huì)犯那些常見(jiàn)的錯(cuò)誤(比如for循環(huán)綁定變量i,這個(gè)問(wèn)題幾乎天天有人問(wèn)(⊙﹏⊙)),能知其然、知其所以然,而且講了許多最佳實(shí)踐,所以還真的是高級(jí)。對(duì)于后端的同學(xué)可以只看基礎(chǔ)部分,不看瀏覽器相關(guān)的部分(當(dāng)然時(shí)間多也可以了解)。

本書(shū)有很多值得學(xué)習(xí)的地方,比如

建議始終語(yǔ)句結(jié)尾要加分號(hào),分支始終要加花括號(hào),這樣雖然多了些小麻煩,但能省去很多大麻煩:提高解析器性能,避免壓縮錯(cuò)誤,代碼易讀性可維護(hù)性更好。

推薦使用 === 和 !== 而不是用 == 和 != ,這樣才能保證代碼中數(shù)據(jù)的完整性,避免歧義。

with語(yǔ)句不僅容易造成混淆,還會(huì)影響性能,不建議使用。

函數(shù)按值傳參,沒(méi)有按引用傳參,基本類(lèi)型就不用說(shuō)了,即使是引用類(lèi)型參數(shù)a,函數(shù)也并不能修改a,使得a指向堆里面的另一個(gè)對(duì)象,所以也是按值傳遞。

函數(shù)傳參之時(shí),使用對(duì)象字面量{}來(lái)封裝大量的可選參數(shù),比直接命名多個(gè)參數(shù)更靈活。

函數(shù)聲明才有提升,函數(shù)表達(dá)式不會(huì)提升。

apply 和 call 的作用是擴(kuò)充函數(shù)賴以運(yùn)行的作用域,使得函數(shù)和對(duì)象(調(diào)用者)解耦,從而可復(fù)用。

構(gòu)造函數(shù)與其相應(yīng)的原型對(duì)象相互有指針指向,重寫(xiě)函數(shù)原型對(duì)象會(huì)切斷已有對(duì)象與現(xiàn)有原型的聯(lián)系。

創(chuàng)建自定義類(lèi)型時(shí),構(gòu)造函數(shù)放置實(shí)例屬性,原型中放置共享的方法和屬性,這樣既保證了共享性,節(jié)約內(nèi)存,也保證了私有性,達(dá)到封裝的目的。

利用惰性載入來(lái)提高代碼執(zhí)行效率。

將一個(gè)函數(shù)中多次用到的全局對(duì)象保存為局部變量可以減少查詢開(kāi)銷(xiāo)。

變量和數(shù)組訪問(wèn)時(shí)O(1),對(duì)象屬性訪問(wèn)時(shí)O(n)。

減值循環(huán)優(yōu)于加值循環(huán),如果是大數(shù)據(jù)集,甚至可以展開(kāi)循環(huán)來(lái)提升性能。

當(dāng)然這本書(shū)也有點(diǎn)問(wèn)題,主要就是時(shí)效性,本書(shū)主要按照ECMAScript 3 來(lái)講解,最多提到了ECMAScript 5 但是現(xiàn)在都有ECMAScript 8 了,所以在看相關(guān)部分的時(shí)候,要注意查看最新的特性是否已經(jīng)解決了某些問(wèn)題(比如es8提出了Object.values 來(lái)直接獲得對(duì)象的所有值而不需要先Object.keys,再來(lái)按key遍歷),對(duì)本書(shū)要有所取舍(by the way ,幾乎所有技術(shù)書(shū)籍,甚至我這篇文章,遲早都會(huì)有時(shí)效性問(wèn)題,畢竟我們處于一個(gè)變化巨大的時(shí)代,但這并不影響它們成為經(jīng)典,只要我們有所取舍,取其神,去其形即可)。

深入淺出Node.js

深入淺出Node.js (豆瓣) https://book.douban.com/subje...

和一般的講node的書(shū)不同,這本書(shū)不是簡(jiǎn)單的講一講怎么使用npm,用一用express或者連一連mysql這樣的API文檔式書(shū)籍,而是真正的深入淺出,本書(shū)首先介紹了node的來(lái)源,用處,讓我們知道它存在的意義,然后依次介紹了模塊機(jī)制,異步IO的實(shí)現(xiàn),異步編程的解決方案,內(nèi)存控制,buffer,網(wǎng)絡(luò)編程,web應(yīng)用,進(jìn)程管理,測(cè)試,產(chǎn)品化。

本書(shū)的優(yōu)點(diǎn)相當(dāng)多:

對(duì)于異步IO的闡釋相當(dāng)深入,首先闡釋了node是單線程的,能避免死鎖,同步等問(wèn)題,而其異步IO在內(nèi)核中本質(zhì)上是用了線程池,也能達(dá)到充分使用多核的效果,提升吞吐量。

對(duì)于異步編程這個(gè)痛點(diǎn)作者提到了發(fā)布訂閱模式,Promise,以及各種流程庫(kù),更贊的是作者自己還寫(xiě)了個(gè)庫(kù)EventProxy,我自己用過(guò),可以說(shuō)是非常好使的。這一章幫助我們很好的解決了深度嵌套的問(wèn)題。

內(nèi)存控制講到了分代垃圾回收機(jī)制,V8把內(nèi)存分為新生代和老生代,新生代采用空間劃分(from、to)和復(fù)制機(jī)制來(lái)回收非存活對(duì)象,若新生代對(duì)象在多次復(fù)制后依然存活,則移動(dòng)至老生代,老生代采用標(biāo)記清除和標(biāo)記整理的做法。這種針對(duì)不同代使用不同算法的做法能夠到達(dá)效率最優(yōu)的效果。同Java一樣,垃圾回收時(shí)也會(huì)stop the world,所以要盡量避免(雖然老生代采用了增量標(biāo)記、延遲清理、增量式整理來(lái)減少停頓時(shí)間)低效或者頻繁的垃圾回收,比如要主動(dòng)釋放變量,減少使用閉包等。

Buffer可以解決數(shù)據(jù)拼接時(shí)的中文亂碼問(wèn)題;直接使用buffer來(lái)進(jìn)行IO,網(wǎng)絡(luò)傳輸可以提高吞吐量。

采用多進(jìn)程來(lái)最大化利用內(nèi)核的資源,句柄傳遞達(dá)到多進(jìn)程監(jiān)聽(tīng)同一端口的目的。

把靜態(tài)資源交給nginx等服務(wù)器或者CDN來(lái)處理,能提高性能。

本書(shū)的不足之處可能在于組織上吧,感覺(jué)有點(diǎn)頭重腳輕,比如對(duì)于初學(xué)者來(lái)說(shuō),一般想先看看node如何做web,或者做網(wǎng)絡(luò)服務(wù),體驗(yàn)點(diǎn)成就感,然后才是學(xué)習(xí)其實(shí)現(xiàn)原理,而本書(shū)反了過(guò)來(lái);而對(duì)于進(jìn)階者來(lái)說(shuō),后面的web、網(wǎng)絡(luò)服務(wù)部分似乎淺的有點(diǎn)用不上,有點(diǎn)雞肋(⊙﹏⊙)。但是我們可以根據(jù)自己的需要有選擇的進(jìn)行章節(jié)閱讀,就能避免這個(gè)問(wèn)題。

Java編程思想

Java編程思想 (第4版) (豆瓣) https://book.douban.com/subje...

本書(shū)可謂是經(jīng)典了,它不是基礎(chǔ)知識(shí)面面俱到的入門(mén)書(shū)籍(Java核心技術(shù)·卷1:基礎(chǔ)知識(shí)(原書(shū)第9版) (豆瓣),這本書(shū)就講全了基礎(chǔ)知識(shí),而且不是淺嘗輒止,還進(jìn)行了深入探討,所以也推薦),而真的是如翻譯的書(shū)名一樣,體現(xiàn)了Java的思想,是Java中一些精要的集合,我們不必按照作者的順序去閱讀,可以根據(jù)需要選擇性的閱讀。本書(shū)還融合了許多設(shè)計(jì)模式,需要我們?nèi)ジ形蚱渲械乃枷搿?/p>

這本書(shū)比較精彩的部分:

把面向?qū)ο缶幊倘藛T分為兩類(lèi):“類(lèi)創(chuàng)建者”(創(chuàng)建新數(shù)據(jù)類(lèi)型的人)以及“客戶程序員”(在自己的應(yīng)用程序中采用現(xiàn)成數(shù)據(jù)類(lèi)型的人),前者負(fù)責(zé)構(gòu)建類(lèi),只開(kāi)放必要的東西而隱藏其他細(xì)節(jié)(開(kāi)放封閉原則),后者負(fù)責(zé)搜集這些類(lèi)來(lái)完成特定任務(wù)。

需要采取一種最適合自己需要(以及習(xí)慣)的方法來(lái)制定計(jì)劃。不管制訂出的計(jì)劃有多么小,但與完全沒(méi)有計(jì)劃相比,一些形式的計(jì)劃會(huì)極大改善你的項(xiàng)目。

首次創(chuàng)建對(duì)象或者訪問(wèn)該類(lèi)的靜態(tài)字段、方法時(shí)會(huì)初始化這個(gè)類(lèi),static初始化僅在第一次運(yùn)行,其它字段每次創(chuàng)建對(duì)象都會(huì)運(yùn)行,我這里順便總結(jié)一下對(duì)象的初始化過(guò)程:

   (1) 主類(lèi)的每一個(gè)父類(lèi)由高到低按順序初始化靜態(tài)成員及其靜態(tài)初始化塊,無(wú)論靜態(tài)成員是否為private。 
   (2) 主類(lèi)靜態(tài)成員的初始化,靜態(tài)初始化塊的初始化。
   //創(chuàng)建實(shí)例時(shí),如果不創(chuàng)建實(shí)例,則后面的不執(zhí)行 
   (3) 主類(lèi)的父類(lèi)由高到低進(jìn)行默認(rèn)構(gòu)造方法的調(diào)用。在調(diào)用每一個(gè)父類(lèi)的默認(rèn)構(gòu)造方法前,先進(jìn)行對(duì)此父類(lèi)進(jìn)行非靜態(tài)成員,
   非靜態(tài)初始化塊的初始化。  
   (4) 主類(lèi)非靜態(tài)成員的初始化,非靜態(tài)初始化塊的初始化。 
   (5) 調(diào)用主類(lèi)的構(gòu)造方法。
   

final的引用類(lèi)型變量本身是不可變得,但是其引用的對(duì)象是可變的(數(shù)組也適用這個(gè)規(guī)則),所以不要期望能夠一步達(dá)到一個(gè)常數(shù)對(duì)象的效果

方法代碼少或者想禁止覆蓋時(shí)使用final方法能夠得到一定程度的性能提升。

將一個(gè)方法調(diào)用同一個(gè)方法主體連接到一起就稱(chēng)為“綁定”(Binding)。若在程序運(yùn)行以前執(zhí)行綁定(由編譯器和鏈接程序,如果有的話),就叫作“早期綁定”,“后期綁定”,它意味著綁定在運(yùn)行期間進(jìn)行,以對(duì)象的類(lèi)型為基礎(chǔ)。后期綁定也叫作“動(dòng)態(tài)綁定”或“運(yùn)行期綁定”。Java 中綁定的所有方法都采用后期綁定技術(shù),除非一個(gè)方法已被聲明成 final。這意味著我們通常不必決定是否應(yīng)進(jìn)行后期綁定——它是自動(dòng)發(fā)生的。

Java 包含了一個(gè)名為 Throwable 的類(lèi),它對(duì)可以作為違例“擲”出的所有東西進(jìn)行了描述。Throwable 對(duì)象有兩種常規(guī)類(lèi)型(亦即“從 Throwable 繼承”)。其中,Error 代表編譯期和系統(tǒng)錯(cuò)誤,我們一般不必特意捕獲它們(除在特殊情況以外)。Exception 是可以從任何標(biāo)準(zhǔn) Java 庫(kù)的類(lèi)方法中“擲”出的基本類(lèi)型。此外,它們亦可從我們自己的方法以及運(yùn)行期偶發(fā)事件中“擲”出。

對(duì)于作為程序一部分的每個(gè)類(lèi),它們都有一個(gè) Class 對(duì)象。換言之,每次寫(xiě)一個(gè)新類(lèi)時(shí),同時(shí)也會(huì)創(chuàng)建一個(gè)Class 對(duì)象(更恰當(dāng)?shù)卣f(shuō),是保存在一個(gè)完全同名的.class 文件中)。在運(yùn)行期,一旦我們想生成那個(gè)類(lèi)的一個(gè)對(duì)象,用于執(zhí)行程序的 Java 虛擬機(jī)(JVM)首先就會(huì)檢查那個(gè)類(lèi)型的 Class 對(duì)象是否已經(jīng)載入。若尚未載入,JVM 就會(huì)查找同名的.class 文件,并將其載入。

如上所述,本書(shū)也有時(shí)效性問(wèn)題,所以要配合最新的Java8甚至Java9來(lái)查閱;同時(shí),本書(shū)的代碼實(shí)在是太多,有些可以忽略不看,并不影響理解。
本書(shū)作為一本整體大致地把握J(rèn)ava的書(shū)籍是合適的,但是Java實(shí)在是太大了,要真正細(xì)致的掌握每一個(gè)知識(shí)點(diǎn)比如多線程、網(wǎng)絡(luò)編程、Spring,還得看專(zhuān)門(mén)的書(shū),比如下面要講的這本。

Java并發(fā)編程實(shí)戰(zhàn)

Java并發(fā)編程實(shí)戰(zhàn) (豆瓣) https://book.douban.com/subje...

本書(shū)從并發(fā)性和安全性的基本概念入手逐步深入,講到用類(lèi)庫(kù)構(gòu)建線程安全類(lèi),然后講到了如何利用多線程來(lái)提升吞吐量,Java中的一些現(xiàn)有多線程框架的使用,性能測(cè)試,最后講了顯示鎖,原子變量等進(jìn)階知識(shí)點(diǎn)?;灸依四苡玫降亩嗑€程所有知識(shí)點(diǎn)。

本書(shū)亮點(diǎn):

線程安全性定義:當(dāng)多個(gè)線程訪問(wèn)某個(gè)類(lèi)時(shí),這個(gè)類(lèi)總是能表現(xiàn)出正確的行為。線程安全類(lèi)自己封裝了必要的同步機(jī)制,調(diào)用者無(wú)需再進(jìn)一步采取同步措施。無(wú)狀態(tài)的對(duì)象一定是安全的。

并發(fā)編程由于不恰當(dāng)?shù)膱?zhí)行時(shí)序造成錯(cuò)誤叫做競(jìng)態(tài)條件,最常見(jiàn)的就是先檢查后執(zhí)行的操作,比如i++就是典型的例子,

無(wú)狀態(tài)的類(lèi)添加一個(gè)狀態(tài),若該狀態(tài)線程安全,則這個(gè)類(lèi)也安全,但是若添加了多個(gè)狀態(tài),僅僅是每個(gè)狀態(tài)線程安全還不夠,還需要保證單個(gè)操作中同時(shí)更新所有狀態(tài)(如果每個(gè)狀態(tài)都是獨(dú)立的就不必)

內(nèi)置鎖是可重入的,這意味著獲取鎖的粒度是線程而不是調(diào)用,也就是說(shuō)鎖和一個(gè)線程對(duì)應(yīng)。

加鎖機(jī)制可以保證可見(jiàn)性和原子性,而volatile只能保證可見(jiàn)性

ConcurrentHashMap采用了分段加鎖的機(jī)制來(lái)實(shí)現(xiàn)更大程度的共享,任意數(shù)量讀線程可以訪問(wèn)Map,一定數(shù)量的寫(xiě)線程可以并行修改同一個(gè)Map,一般情況只有在需要獨(dú)占訪問(wèn)Map時(shí)才應(yīng)該放棄使用ConcurrentHashMap。

使用tryLock來(lái)替換會(huì)永遠(yuǎn)等待的內(nèi)置鎖,這樣就能消除死鎖發(fā)生的可能性。

確保線程在獲取多個(gè)鎖時(shí)才用一致的順序,也能避免一些死鎖。

不應(yīng)當(dāng)依賴于線程優(yōu)先級(jí)來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯,因?yàn)檫@與平臺(tái)有關(guān),不能得到保證。

避免不成熟的優(yōu)化,首先使程序正確,必要時(shí)再提高運(yùn)行速度-如果嫌它不夠快的話。

使用并發(fā)安全的容器類(lèi)、讀寫(xiě)鎖、不可變對(duì)象、原子變量等來(lái)替換獨(dú)占鎖,提高吞吐量。

使用顯示鎖時(shí),要在finally中釋放,因?yàn)樗粫?huì)像內(nèi)置鎖一樣自動(dòng)釋放。

一般情況下公平鎖(先到先得)會(huì)比非公平鎖的性能低得多(數(shù)倍,數(shù)十倍),不必要的話不要用公平鎖,非公平鎖在統(tǒng)計(jì)意義上是公平的,就夠用了,而且ReentrantLock 默認(rèn)就是非公平的,內(nèi)置鎖也是。

如上所述,本書(shū)時(shí)效性也有問(wèn)題,主要用的是Java5,6,所以也要注意查閱最新文檔對(duì)比(實(shí)戰(zhàn)Java高并發(fā)程序設(shè)計(jì) (豆瓣) https://book.douban.com/subje... 這本書(shū)在時(shí)效性方面就要強(qiáng)一些,講到Java8了,而且也比較通俗易懂,推薦~),另外,Swing那一段可以跳過(guò)不看了。

Java Web高級(jí)編程

Java Web高級(jí)編程 (豆瓣) https://book.douban.com/subje...

這本書(shū)的強(qiáng)大之處就在于一本書(shū)幾乎包攬了java web 所有的主流技術(shù),所謂此書(shū)在手,Java我有(⊙﹏⊙)......開(kāi)個(gè)玩笑,本書(shū)非常大非常厚,所以也非常全,所以我也并沒(méi)有看完,但是我看過(guò)的部分真的讓我認(rèn)為這是一本好書(shū)。本書(shū)從servlet原理講起,講到j(luò)sp,一步步講到Spring,過(guò)度很自然,讓人明白Spring存在的理由,然后講了Hibernate(雖然我沒(méi)看),最后講了Spring security,可謂一氣呵成,同時(shí)又不失條理,系統(tǒng)性很強(qiáng),看完之后對(duì)于Java web 應(yīng)該能有個(gè)整體的把握。

本書(shū)亮點(diǎn):

多使用jdk7的try with source ,它會(huì)幫助自動(dòng)釋放資源,減少錯(cuò)誤。

Java EE 一般采用子女優(yōu)先類(lèi)加載方式,Java SE 一般采用雙親優(yōu)先類(lèi)加載方式。

Servlet是所有web應(yīng)用程序核心類(lèi),它是唯一即可以直接處理和響應(yīng)用戶請(qǐng)求又可以將處理工作委托給其他部分的類(lèi)。java EE 7 唯一支持的Servlet協(xié)議就是http。

表示層與業(yè)務(wù)層應(yīng)該分開(kāi),所以jsp中不應(yīng)使用Java代碼,而且jsp表達(dá)式EL本身已足夠強(qiáng)大。

Controller依賴于Service,Service依賴于Repository,Repository依賴于數(shù)據(jù)庫(kù),這四者就像食物鏈中的肉食者,雜食者,植物,大自然。不同于傳統(tǒng)MVC架構(gòu),這種架構(gòu)中Service才是真正的業(yè)務(wù)邏輯,Controller是負(fù)責(zé)不同的頁(yè)面邏輯,比如web頁(yè)面和移動(dòng)應(yīng)用的API,這種架構(gòu)能夠復(fù)用真正的業(yè)務(wù)邏輯,優(yōu)于MVC。

我感覺(jué)這本書(shū)唯一的缺點(diǎn)就是太厚了吧:-D,會(huì)嚇跑許多人(包括我)。

Head First 設(shè)計(jì)模式

Head First 設(shè)計(jì)模式(中文版) (豆瓣) https://book.douban.com/subje...

這本書(shū)最大的特點(diǎn)就是不拘一格講知識(shí),他不會(huì)板起臉來(lái)告訴你這個(gè)叫觀察者模式,那個(gè)叫裝飾器模式......而是通過(guò)一些通俗易懂的例子(會(huì)飛會(huì)叫的鴨子,氣象站檢測(cè)應(yīng)用的建設(shè))和豐富的圖例、游戲(運(yùn)用了認(rèn)知科學(xué)的方法)來(lái)說(shuō)明不同的設(shè)計(jì)模式的含義、用途、優(yōu)點(diǎn)和缺點(diǎn),使人印象深刻,容易理解和記憶。

本書(shū)展示了很多有意義的設(shè)計(jì)原則,比如:

封裝變化,即找出應(yīng)用中的變化之處,把他們獨(dú)立出來(lái),不要和不變的代碼混在一起。所以設(shè)計(jì)系統(tǒng)之時(shí)就要開(kāi)始考慮可能變化的東西把它隔離出來(lái),并且在做的過(guò)程中可能會(huì)需要重構(gòu),畢竟唯一不變的就是變化。

針對(duì)接口編程,而不是實(shí)現(xiàn)編程。也就是變量的聲明應(yīng)該是超類(lèi)型,這樣執(zhí)行時(shí)就會(huì)根據(jù)實(shí)際情況執(zhí)行到真正的行為,而不必綁死在超類(lèi)的行為上。

多用組合,少用繼承。組合比繼承具有更大的靈活性和更穩(wěn)定的結(jié)構(gòu),只有當(dāng)確實(shí)是 is-a 的時(shí)候才應(yīng)該使用繼承

......

對(duì)于設(shè)計(jì)模式初學(xué)者來(lái)說(shuō),這本書(shū)似乎比四人組的設(shè)計(jì)模式更容易接受,因?yàn)樗皇悄敲磭?yán)肅,不是那么學(xué)究,當(dāng)然如果希望嚴(yán)肅的學(xué)習(xí),或者本身水平較高,那還是看四人組的比較好~

程序員修煉之道

程序員修煉之道 (豆瓣) https://book.douban.com/subje...

本書(shū)可以說(shuō)是一本學(xué)習(xí)方法論,或者工作方法論的書(shū),再高一點(diǎn)可以說(shuō)是一本哲學(xué)的書(shū)。本書(shū)原名The Practical Programmer,亦即注重實(shí)效的程序員,全書(shū)圍繞注重實(shí)效展開(kāi)討論,包括注重實(shí)效的哲學(xué)(負(fù)責(zé),變化,權(quán)衡,管理知識(shí),交流)、途徑(避免重復(fù),隨時(shí)記錄,估計(jì))、工具(文本,shell,游戲,源碼控制)、偏執(zhí)或者說(shuō)講究(規(guī)范合約、斷言、異常使用)等等等等。

本書(shū)從推薦序開(kāi)始就相當(dāng)精彩:

如果僅僅以普通的瀏覽方式閱讀就會(huì)很簡(jiǎn)單的陷入“啊,這個(gè)我知道啊,啊,這個(gè)我了解啊,嗯,這個(gè)以后要注意”的套路中。這樣的閱讀方式只會(huì)強(qiáng)化原有的自己知道的知識(shí),而不大可能把“以后需要注意”這部分全部?jī)?nèi)化。所以自負(fù)的讀者讀完必然覺(jué)得“哈哈,高手不過(guò)如此,大部分我也知道嘛”,而不是“是的,我還有不少要注意”。這一段可謂是抓住了我的一個(gè)大毛病,我以前看完書(shū)老是覺(jué)得啥都懂了,可是真開(kāi)始做還是一臉懵逼,這就是為啥我們上學(xué)都有作業(yè)做的原因,體會(huì)很深刻啊。

定期為你的知識(shí)資產(chǎn)投資,比如每年學(xué)習(xí)一門(mén)新的語(yǔ)言來(lái)拓寬思維,每季度讀一本書(shū)(是不是有點(diǎn)少:-D)。

不要重復(fù)自己,重復(fù)是維護(hù)的災(zāi)難(因?yàn)槟憧赡芨居洸蛔∧睦镞€用了這個(gè)東西)。

估算,以避免意外。學(xué)會(huì)估算,并發(fā)展到對(duì)事物的數(shù)量級(jí)有直覺(jué)的程度,就能更好的確定任務(wù)可行性。

按合約設(shè)計(jì),這樣才能明確責(zé)任和權(quán)利,解決與人打交道的問(wèn)題。說(shuō)實(shí)話,做了兩個(gè)小項(xiàng)目我就真的體會(huì)到了這一點(diǎn)的重要性,沒(méi)有文檔,沒(méi)有合約,只會(huì)導(dǎo)致進(jìn)度拖拉,到處甩鍋,軍心不穩(wěn)。

分析工作流,以改善并發(fā)性,這樣確定哪些任務(wù)可以并行,哪些不可以,從而更合理的安排,加快進(jìn)度。當(dāng)然這是屬于較大的任務(wù)的處理方法,小任務(wù)有這些分析的時(shí)間我都做完了

本書(shū)讀起來(lái)可謂非常暢快,但是要落實(shí)真的是不容易,而且我覺(jué)得應(yīng)該反復(fù)讀,因?yàn)槊吭黾右恍┕ぷ鹘?jīng)驗(yàn)就會(huì)遇到一些問(wèn)題,對(duì)書(shū)里面提到的要點(diǎn)也就感悟更深,從而能更好的解決問(wèn)題。

架構(gòu)即未來(lái)

架構(gòu)即未來(lái):現(xiàn)代企業(yè)可擴(kuò)展的Web架構(gòu)、流程和組織(原書(shū)第2版) (豆瓣) https://book.douban.com/subje...

這本書(shū)乍一聽(tīng)可能會(huì)覺(jué)得它是講的架構(gòu)是諸如MySQL 讀寫(xiě)分離,redis cluster,CDN,負(fù)載均衡等架構(gòu)問(wèn)題,看完緒論和第一章才發(fā)現(xiàn)不是那么回事(⊙﹏⊙),原來(lái)它前面很大的篇幅都在講人事上的架構(gòu),后面才是技術(shù)上的架構(gòu),會(huì)不會(huì)有種受騙的感覺(jué)?其實(shí)不必,這本書(shū)相當(dāng)于是站在了更高的角度來(lái)看問(wèn)題,畢竟要把技術(shù)上的事做好做大都離不開(kāi)強(qiáng)大的團(tuán)隊(duì),離不開(kāi)完善的人事管理。

結(jié)構(gòu)上本書(shū)分4部分:團(tuán)隊(duì)的組織、管理和領(lǐng)導(dǎo),構(gòu)建可擴(kuò)展技術(shù)平臺(tái)的方案與危機(jī)管理,可擴(kuò)展的架構(gòu)方案,新興技術(shù)如大數(shù)據(jù)云計(jì)算等的架構(gòu)。

我感覺(jué)比較精彩的一些點(diǎn)是:

如果汽車(chē)沒(méi)有油量表和速度表,大多數(shù)人都不會(huì)考慮開(kāi)這種車(chē),同理,系統(tǒng)也需要一系列指標(biāo)幫助我們達(dá)到希望的結(jié)果。

管理是推,領(lǐng)導(dǎo)是拉。領(lǐng)導(dǎo)設(shè)定目的地和路線圖,管理設(shè)法達(dá)到目的地。

責(zé)任不清,則意味著有些事沒(méi)人去做,或者一件事被多個(gè)人做了,直接后果就是進(jìn)度拖拉,效率低下。當(dāng)你在定義一個(gè)組織的角色和責(zé)任時(shí),就是在設(shè)計(jì)一幅權(quán)力下放的藍(lán)圖。

對(duì)團(tuán)隊(duì)而言,少于6人就沒(méi)必要多帶帶成為一個(gè)團(tuán)隊(duì),超過(guò)15人經(jīng)理管理會(huì)產(chǎn)生困難,成員之間溝通也會(huì)更困難,所以一個(gè)團(tuán)隊(duì)的人數(shù)要根據(jù)經(jīng)理的能力,人員熟悉程度,要實(shí)現(xiàn)的目標(biāo)來(lái)共同制定。

總體而言,相信自己被賦予權(quán)力的個(gè)人會(huì)比那些相信自己只是在執(zhí)行命令的人會(huì)有更高的效率,在我理解來(lái)就是主觀能動(dòng)性更高,有了主人翁意識(shí)(ownership)自然就會(huì)盡力去把事情做好,而非僅僅是打工仔:-D。

架構(gòu)原則:監(jiān)控設(shè)計(jì)能使我們進(jìn)行自我修復(fù)自我診斷,在用戶發(fā)現(xiàn)問(wèn)題前就解決問(wèn)題;多活數(shù)據(jù)中心可以達(dá)到負(fù)載均衡和容災(zāi)的目的;使用成熟的技術(shù),謹(jǐn)慎的在線上系統(tǒng)采用新技術(shù),因?yàn)橥ǔS休^高的故障率,我們一般可以自己先做許多的試用,再?zèng)Q定是否使用;水平擴(kuò)展而非垂直擴(kuò)展,亦即系統(tǒng)擴(kuò)展性依賴于更多的機(jī)器而非更強(qiáng)大的機(jī)器。

......

2017.8.3 后記

7.26 就開(kāi)始著手寫(xiě)了,但是為了能更好的總結(jié)這些書(shū),我又把它們?nèi)窟^(guò)了一遍然后才寫(xiě),直到 8.3 才寫(xiě)完,希望能起到一些作用。后面我還會(huì)持續(xù)更新更多的好書(shū),會(huì)涉及到Linux、Jvm、Redis、MySQL、Docker等,歡迎拍磚交流,我的主頁(yè) - Mageek`s Wonderland http://mageek.cn/archives/33/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84645.html

相關(guān)文章

  • 后端好書(shū)閱讀推薦(續(xù)六)

    摘要:可以通過(guò)大數(shù)據(jù)生態(tài)的一系列工具生態(tài)來(lái)解決大數(shù)據(jù)問(wèn)題數(shù)據(jù)分片主要有兩種方式哈希和范圍。哈希的問(wèn)題是范圍查詢支持不佳,范圍的問(wèn)題是可能冷熱數(shù)據(jù)不均。 后端好書(shū)閱讀與推薦系列文章:后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦(續(xù))后端好書(shū)閱讀與推薦(續(xù)二)后端好書(shū)閱讀與推薦(續(xù)三)后端好書(shū)閱讀與推薦(續(xù)四)后端好書(shū)閱讀與推薦(續(xù)五)后端好書(shū)閱讀與推薦(續(xù)六) Elasticsearch權(quán)威指南 El...

    shleyZ 評(píng)論0 收藏0
  • 后端好書(shū)閱讀推薦(續(xù)六)

    摘要:可以通過(guò)大數(shù)據(jù)生態(tài)的一系列工具生態(tài)來(lái)解決大數(shù)據(jù)問(wèn)題數(shù)據(jù)分片主要有兩種方式哈希和范圍。哈希的問(wèn)題是范圍查詢支持不佳,范圍的問(wèn)題是可能冷熱數(shù)據(jù)不均。 后端好書(shū)閱讀與推薦系列文章:后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦(續(xù))后端好書(shū)閱讀與推薦(續(xù)二)后端好書(shū)閱讀與推薦(續(xù)三)后端好書(shū)閱讀與推薦(續(xù)四)后端好書(shū)閱讀與推薦(續(xù)五)后端好書(shū)閱讀與推薦(續(xù)六) Elasticsearch權(quán)威指南 El...

    z2xy 評(píng)論0 收藏0
  • 后端好書(shū)閱讀推薦(續(xù)七)

    摘要:持續(xù)交付持續(xù)交付豆瓣微服務(wù)離不開(kāi),而核心就是幾點(diǎn)自動(dòng)化連續(xù)小范圍快速可靠。敏捷革命敏捷革命提升個(gè)人創(chuàng)造力與企業(yè)效率的全新協(xié)作模式豆瓣實(shí)際上正是敏捷開(kāi)發(fā)的最佳實(shí)踐,有了前面的鋪墊,我們可以通過(guò)這本書(shū)我們來(lái)真正了解敏捷開(kāi)發(fā)的全貌。 后端好書(shū)閱讀與推薦系列文章: 后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦(續(xù))后端好書(shū)閱讀與推薦(續(xù)二)后端好書(shū)閱讀與推薦(續(xù)三)后端好書(shū)閱讀與推薦(續(xù)四)后端好書(shū)...

    zollero 評(píng)論0 收藏0
  • 后端好書(shū)閱讀推薦

    摘要:后端好書(shū)閱讀與推薦這一兩年來(lái)養(yǎng)成了買(mǎi)書(shū)看書(shū)的習(xí)慣,陸陸續(xù)續(xù)也買(mǎi)了幾十本書(shū)了,但是一直沒(méi)有養(yǎng)成一個(gè)天天看書(shū)的習(xí)慣。高級(jí)程序設(shè)計(jì)高級(jí)程序設(shè)計(jì)第版豆瓣有人可能會(huì)有疑問(wèn),后端為啥要學(xué)呢其實(shí)就是為了更好的使用做鋪墊。 后端好書(shū)閱讀與推薦 這一兩年來(lái)養(yǎng)成了買(mǎi)書(shū)看書(shū)的習(xí)慣,陸陸續(xù)續(xù)也買(mǎi)了幾十本書(shū)了,但是一直沒(méi)有養(yǎng)成一個(gè)天天看書(shū)的習(xí)慣。今天突然想要做個(gè)決定:每天至少花1-3小時(shí)用來(lái)看書(shū)。這里我準(zhǔn)備把這...

    clasnake 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<