
最近在读胡适先生(毛主席的评价是——说实在话,新文化运动他是有功的,不能一笔抹杀,应当实事求是。到了二十一世纪,那时候,替他恢复名誉吧)的《胡适文选》;其中一篇《问题和主义》中有这样一句,“多研究些问题,少谈些主义”。对我而言,就是“多学习学习应该掌握的IT技术,别整天琢磨怎么‘知识变现’”。
最近一段时间,我一直在思考怎么“知识变现”,我也希望自己像那些成功打造了自己品牌的前辈们(比如安晓辉、鸿祥、纯洁的微笑)一样,通过在Chat上开设课程,或者在知乎上开设Live来挣些钱。但我忽略了一点,这些成功的前辈们,早已通过博客积攒了大量的粉丝群,他们被我们这些崇拜者尊称为“大神”,而我显然不够格。
于是,我想,不如静下心来,重新读一些经典的IT技术书。从哪一本开始呢?想了一想,还是《Java编程思想》吧!毕竟本书赢得了全球程序员的广泛赞誉,从Java的基础语法到最高级特性,本书都能指导我们轻松掌握。
记得上大学(2008年)那会,就花大价钱买了一本影印版的《Java编程思想》,但由于初学Java,自己又对编程缺乏耐心,那时候看这本书,多多少少有一种看天书的感觉。后来,去苏州参加工作时也带了过去,但仍然没有心思去细致读这本书。2014年回洛阳的时候将这本书送给了一位同事——物尽其用吧,跟着我是浪费青春啊。2016年,我又重新买了这本书,我以为我会深入的了解它。但事与愿违,看了几章后,它还是落寞的躺在书架上积灰了。现在,我重新捧起这本书来读,好像有一种如释重负的感觉。
好了,这一篇博客,就从《Java编程思想》的“前言”篇开始吧。为什么要从“前言”开始呢?《略读指导举隅》一书中曾说过,“读一本书,最好能从前言、序言开始。如果是作者自己写的,那么,这里面浓缩了作者对于本书最精华的总结。”恰好,这篇“前言”就是作者Bruce Eckel(MindView公司总裁,总裁能写出这么细致的书,实在是厉害啊)自己写的。
前言里面,哪些是值得我们记住的呢?
第一,Java的核心目的是“为程序员减少复杂性”。用Sun(1995年开发了Java)的原话是:“我们关心的是,减少开发健壮代码所需的时间和困难”。尽管这个目标导致Java的运行效率偏慢,但与用C++开发相同的程序相比,Java只需要一半甚至更少的时间。作为程序员来说,这是我们最喜闻乐见的,不是吗?省下来的那一部分时间,还可以约女朋友去看场电影,对吧?况且,Java的版本一直在更新,性能也不断地被优化。
记得上大学那会,我们计算机网络专业只有两个班级,一个班级学Java,另外一个班级学C++(当时C++更受欢迎)。大学上完后,当初学C++的同学几乎都转了行(据他们说是C++的指针太飘忽不定了,难学难懂难掌握),而我们学Java的,至少还有十几个留在IT行业奋斗,现在的状况都还不错。这在一定程度上,也能够佐证“Java的确是在为程序员减少复杂性”。
第二,并发(现在称多线程)确实很难。因为就连作者都深陷“并发”的泥潭,但经过“数月的努力,还是走了出来”。所以,我们学习Java的人也没必要对并发丧失信心。
并发是什么呢?通常情况下,并发是指“系统能够同时并行处理很多请求”。大家都走过红绿灯路口,是吧?假如是单车道,那么一次就只能通过一辆车,后面的车依次通过,这个红绿灯路口就不支持并发;假如是两车道,那么一次就能通过两辆车,这个红绿灯路口就支持并发。
并发常用的一些指标有:
-
响应时间(Response Time):系统对请求做出的响应时间。例如,一辆车通过红绿灯路口需要的时间为3秒,那么3秒就是响应时间。
-
吞吐量(Throughput):单位时间内处理的请求数量。最明显的例子就是高速通道上的ETC和普通车道,显然ETC的吞吐量更大,因为不需要在进站的时候从窗口取卡,在出站的时候还卡缴费。
-
并发用户数:同时承载正常使用系统功能的用户数量。例如,三车道一次可以通过三辆车,两车道一次可以通过一辆车。
那么,如何提升系统的并发能力呢?
1)提升单机硬件配置。比如说增加CPU核数(从2个到4个,从4个到8个),升级网卡到万兆,升级硬盘为SSD(固态硬盘,比普通硬盘读写更快、质量更轻、能耗更低、体积更小,但只有一个缺点就是更贵),扩充系统内存(从64G到128G);
2)改善单机架构配置。比如使用内存读写而不是每次都读写数据库;
3)增加服务器数量。单机性能总是有极限的,但服务器数量可以很庞大。
第三,章节没必要包含一个“足够大”的主题。就我个人而言,一天读十页书恰到好处,假如超出十页书,后面的读起来就会非常痛苦;就好像一篇文章,字数超过2000个,我读起来就很吃力;或者说,超出2000字的部分我会选择性忽略。
以上,就是我对《Java编程思想》前言篇的总结,希望这些文字对你在学习Java的道路上有所帮助。

网友评论