說起來非常慚愧,我在 2008 年的時候就接觸了 Java,但一直到現在(2018 年 10 月 10 日),基礎知識依然非常薄弱。用一句話自嘲就是:十年 IT 老兵,Java 菜雞一枚。 於是,我想,不如靜下心來,重新讀一遍那些經典的 Java 技術書,並且沒讀完一章就輸出一篇原創技術文章。從哪一 ...
說起來非常慚愧,我在 2008 年的時候就接觸了 Java,但一直到現在(2018 年 10 月 10 日),基礎知識依然非常薄弱。用一句話自嘲就是:十年 IT 老兵,Java 菜雞一枚。
於是,我想,不如靜下心來,重新讀一遍那些經典的 Java 技術書,並且沒讀完一章就輸出一篇原創技術文章。從哪一本開始呢?想了一想,還是從《Java 編程思想》開始吧!畢竟這本書贏得了全球程式員的廣泛贊譽,從 Java 的基礎語法到最高級特性,都能指導我們 Java 程式員輕鬆掌握。
記得剛上大學那會,就買了一本影印版的《Java 編程思想》,但由於初學 Java,對編程極度缺乏信心,導致看這本書有一種看天書的感覺。後來,去蘇州參加工作的時候把它作為最寶貴的紀念品帶了過去。
2014 年回洛陽的時候它送給了一位關係不錯的同事,權當是分別的禮物吧。2016 年的時候,我又重新買了一本,希望自己能夠夯實一下基礎。但事與願違,它被我束之高閣了——又兩年過去了,我重新捧起它,總覺得有一種負罪感。
讀一本書,最好能從它的前言開始。那麼我們就來看看 Bruce Eckel 在前言里都說了些什麼吧。
01、Java 的核心目的是“為程式員減少複雜性”。
James Gosling 創建 Java 語言的初衷是:“減少開發健壯代碼所需的時間和困難”。儘管這個目標導致 Java 的運行效率偏慢,但與用 C++ 開發相同的程式相比,Java 只需要一半甚至更少的時間。
作為程式員,這是我們希望看到的。少敲代碼省下來的那一部分時間,可以約個妹子去看場電影,放鬆一下,對吧?況且,Java 一直在更新,性能也不斷地被優化。
記得上大學那會,我們專業只有兩個班,一個班學 Java,一個班級學 C++。結果大學畢業後,C++ 的同學幾乎都轉了行,有些同學反饋說因為 C++ 的指針太飄忽不定了,難學難懂難掌握(C++ 表示不服,怎麼能這樣莫名其妙地潑髒水呢)。
02、併發編程確實很難。
Bruce Eckel 吐露心聲說自己也曾深陷“併發”泥潭,但經過“數月的努力,還是走了出來”。所以,各位,千萬不要喪失駕馭併發編程的信心啊,儘管併發編程是真的難。
併發是什麼呢?通常情況下,併發是指“系統能夠同時並行處理很多請求”。我們來看一下併發常用的一些指標。
1)響應時間(Response Time):系統從接收請求到做出回應所花費的時間。
2)吞吐量(Throughput):單位時間內處理的請求數量。最明顯的例子就是高速通道上的 ETC 和普通車道,顯然 ETC 的吞吐量更大,因為不需要在進站的時候從視窗取卡,在出站的時候還卡繳費。
3)併發用戶數:同時承載正常使用系統功能的用戶數量。
如何提升系統的併發能力呢?
1)提升單機硬體配置。比如說增加 CPU 核數(從 2 個到 4 個,從 4 個到 8 個),升級網卡到萬兆,升級硬碟為 SSD(固態硬碟,比普通硬碟讀寫更快、質量更輕、能耗更低、體積更小),擴充系統記憶體(從 64G 到 128G)。
2)改善單機架構配置。比如使用記憶體讀寫而不是每次都讀寫資料庫。
3)增加伺服器數量。單機性能總是有極限的,但伺服器集群數量可以很龐大。
好了,本篇文章到此就要結束了。我從《Java 編程思想》的前言里讀到了以上這些內容,你呢?
PS:這篇文章寫於 2018 年 10 月 10 日,現在讀起來感覺當時寫得太爛了,但很適合作為《重學Java》系列文章的第一篇(畢竟開局嘛)。