提及來很是慚愧,我在 2008 年的時候就接觸了 Java,但一直到如今(2018 年 10 月 10 日),基礎知識依然很是薄弱。用一句話自嘲就是:十年 IT 老兵,Java 菜雞一枚。java
因而,我想,不如靜下心來,從新讀一遍那些經典的 Java 技術書,而且沒讀完一章就輸出一篇原創技術文章。從哪一本開始呢?想了一想,仍是從《Java 編程思想》開始吧!畢竟這本書贏得了全球程序員的普遍讚譽,從 Java 的基礎語法到最高級特性,都能指導咱們 Java 程序員輕鬆掌握。程序員
記得剛上大學那會,就買了一本影印版的《Java 編程思想》,但因爲初學 Java,對編程極度缺少信心,致使看這本書有一種看天書的感受。後來,去蘇州參加工做的時候把它做爲最寶貴的記念品帶了過去。數據庫
2014 年回洛陽的時候它送給了一位關係不錯的同事,權當是分別的禮物吧。2016 年的時候,我又從新買了一本,但願本身可以夯實一下基礎。但事與願違,它被我束之高閣了——又兩年過去了,我從新捧起它,總以爲有一種負罪感。編程
讀一本書,最好能從它的前言開始。那麼咱們就來看看 Bruce Eckel 在前言裏都說了些什麼吧。服務器
James Gosling 建立 Java 語言的初衷是:「減小開發健壯代碼所需的時間和困難」。儘管這個目標緻使 Java 的運行效率偏慢,但與用 C++ 開發相同的程序相比,Java 只須要一半甚至更少的時間。架構
做爲程序員,這是咱們但願看到的。少敲代碼省下來的那一部分時間,能夠約個妹子去看場電影,放鬆一下,對吧?何況,Java 一直在更新,性能也不斷地被優化。併發
記得上大學那會,咱們專業只有兩個班,一個班學 Java,一個班級學 C++。結果大學畢業後,C++ 的同窗幾乎都轉了行,有些同窗反饋說由於 C++ 的指針太飄忽不定了,難學難懂難掌握(C++ 表示不服,怎麼能這樣莫名其妙地潑髒水呢)。性能
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》系列文章的第一篇(畢竟開局嘛)。