回忆java来时路-第三章 谈谈java相关的书籍

本文推荐了一系列Java学习书籍,包括基础语言、代码质量、软件工程方法论等方面,旨在帮助程序员高效提升技能。

java发展到现在已经很长时间,这期间出的书可谓五花八门,如果有时间有毅力的话,可以把每年的java畅销书都买来学习一遍,不过我相信很多人都没有这个毅力,如果有,应该自己也出书立传了,我想说明的是针对普通程序猿在有限精力、毅力一般的情况下,如何选择有用书籍,不要淹没在汪洋书海中,辨不清方向,把仅有的一点耐心和兴趣都耗光。那么这么多年哪些书是值得我们投入时间和人民币的呢。
1)基础语言
     首先说下如雷贯耳的《java编程思想》这本书,可能这本书好评如潮,但就我个人的体验来说,一开始看不是很好,因为国外语言逻辑和国内的思维习惯差异性,翻译出来只是做到了字面的正确性,却没有用咱们中国人的思维惯性来叙述,导致我总体感觉这本书看起来不顺畅,只是因为它实在是无可替代,也只有硬头皮啃下了。直到有一天我看到同事桌上放的第二版,随意拿来翻了下,这才感觉原来读技术书也可以这么不费力,还能如此行文流畅。每天读一章简直是享受,于是自己也买了一本,每天很轻松的就坚持读完了,可惜后来的几版,侯捷大师没再翻译,如果只是看基本的java特性,建议可以去看侯捷版的,那已经基本涵盖了java的大部分功能,当然现在的java增加了很多特性,对新的特性还要看新版。(我建议你可以试读两章,看不惯这个翻译的可以不买)
     另外一本基础入门书《java语言程序设计》,中规中矩的编程语言编排方式,对《java编程思想》不感冒的同学,完全可以选择这本,它类似于咱们大学课本的教科书组织编写方式,非常的详细和全面,值得买一本,哪怕放在桌上供查字典都可以。编程思想和这本书两者选其一即可。
     《effective java》推荐有一定开发经验了,开始读这本,它会告诉你,什么是java的正确打开方式,重要的不是里面的点滴细节,而是它向你打开一扇思考的大门,原来语言不是只要会语法就够,还要考虑这么多有关优雅和美的感受,平时再写代码时,带着这种思考,可以避免很多无谓的错误,也会渐渐的对程序好坏有一定的自我评价标准。
2)代码质量
     《重构》对程序员来说是必备神器,不论你在何时看都是有意义的,而且建议多看,因为里面对代码优美的追求和一步一步改进的思考过程都是可以好好品味的,这本书翻译的也很好,语言符合中国人大脑思维习惯,简单易懂。
     当我们实际工作两三年后,已经写过好几个上线的大项目,对实际开发的业务复杂性有了切身体会,那么必然就接触到如何更好设计可重用代码的问题,这时你会需要一本《设计模式》。这本书的经典版就是GOF合作写的那本,俗称四人帮。4个大师合出的一本书内容虽然简短但很有份量,这本书里的知识经得起考验,不会随着技术发展而过时。它是初级程序员向高级程序员进阶必须学习的一项技能。不过国内机械工业出版的那本翻译也是看得很让人迷糊,本来各个模式之间就界限不是很明显,加上翻译时语言太过精简,没有废话,因此看这本书时经常一个段落要来回读几遍才能细细分辨出它与前面近似章节的不同之处,总之不能贪图快,像一周看完的那样都是走马观花,不算读过。
     如果看四人帮写的设计模式费劲,建议大家读一下《java与设计模式》这本大部头,这本书是个华人写的,语言幽默好懂,虽然有六七百页,因为读起来有趣味,也可以比较轻松的坚持看完。后来还有另外一本口碑很好的《Head first 设计模式》,我没有买来看,因为我觉得设计模式的思想内容都是一样的,这几本选择其一精读即可。
     如果想对java的虚拟机内部机制有比较详细的了解,那么《深入java虚拟机》是一定要啃的,这本书考验你真的适不适合搞技术,读这本书的困难超过上面我说的任何一本,如果能真正按照书里的例子一点点都做完,我觉得你一定是非常优秀的工匠,具备牛人的特质,我是没有那个潜力,先后多次打起精神读,都是半途而废。 多年来这几乎是市面上能买到的有关虚拟机实现机制的唯一一本书。后来淘宝的牛人周正明出了一本《深入理解java虚拟机》,这个很适合我们中国程序员看,既能让我们了解虚拟机的主要机制,又不陷入繁琐的细节,例子也对理解能力差一点地读者很友好。如果不是慕名而去,我建议大家就不要费劲去看前面老外写的那本,就看国内写的这本足够了,顺便支持下国货。  
     传说级别的书《计算机编程艺术》,老实说这个和我买的文言文《资治通鉴》一样,只是我书架上的装饰品。我相信99%的不会看的,上不到那个档次。 
3)软件工程方法论
   《程序员-从小工到专家》这本书很适合刚进入工作岗位的程序员来看,当你发现自己没发进步,进到一个平台期时,这个可以帮你重新打开思路,让你看到还有另一片天空值得去探索。
    《敏捷开发之道》这本书里讲解说明的几个软件设计原则非常不错,传递的敏捷开发思想曾经改变一代程序员,当然做得时间长了,你会发现这个敏捷开发和传统的瀑布流先设计后开发的思维并不排斥,根据项目大小,业务特性,客户需求,领导的旨意、公司风格等不同,两种方法论都是你碗里的菜,哪个合适用哪个,可以项目总体上是敏捷,而实际每个阶段是瀑布模式,也可以是总体上是瀑布,而几个模块是敏捷的,总之是按需而取,不可陷入先进与落后的片面理解中。
     《统一软件开发过程》其实就是uml的说明书,类似的有很多这类书,不建议买,要了解uml的语法的话,看一看《uml精粹》即可。 
     另外一本号称经典的《代码大全》,我个人感觉对java程序员来说可以不看,它完全可以被《重构》和《敏捷开发之道》来代替。而且它的语言谈不上生动,各章节其实谈的重复内容挺多的,都是堆砌词语,啰哩啰嗦一大堆话。
4)web开发相关
     java的web开发方面,出了一堆框架的知识要了解外,我觉得最重要的是一定要知道 servlet的标准,框架都是基于这个来实现的,当然后来陆续又发展了非servlet的框架技术,那毕竟不是主流。 这个servlet的知识大多都是散落在各种介绍web框架书的章节里,不系统,建议买一本专讲servlet标准的书看。我个人就是没有系统看过,在很长一段时间里都是一知半解,似懂非懂的状态,走了不少弯路,后来渐渐的都是从不同的书中总结悟出来的。判断你是否懂了的标准可以用一个问题来检验:“你是否可以说明一个网页从输入地址到显示出内容到底经过了哪些处理过程,怎么处理的?”这个问题回答的越详细说明你的功夫越深。
  其实要对各个web框架学习了解,英文还行的同学直接看官网的文档即可。因为各种框架层出不穷,各个细分领域都有一到两个流行的,这里就不一一列出来,只说几个最普遍的
《spring》的书很多,一般推荐看的是《without ejb》两本,里面无非是把ejb的笨重批的一无是处,如果没有受ejb的迫害,看不看这两本我觉得无所谓,不如看国内人写的一些spring书,比如《spring 精粹》、《sping核心技术与最佳实践》看一本即可,主要spring里面IOC和AOP的概念。
《struts》、《hibernate》看孙卫琴写的,很不错
《j2ee 核心模式》里面是对企业开发的模块常用模式进行了说明,也不错,有点类似设计模式,但是是模块之间的,类似微型架构了。
  这个大类里书特别杂而多,大家不要被这些浪费时间,这些框架性的书籍价值不大,因为它会很快过时,比较长久的还是servlet标准。由此你可以判断:那些动不动招聘时要求精通各种web框架的职位,其实都不是什么高级职位。
5)并发
     《并发编程实践》不解释了,只此一本。
6) 架构相关
     这个我主要是通过博客来了解,阿里系的文章不错:推荐hsf作者写的博客和书。
     大体浏览过《大型网站技术架构》,还可以,就是把工作中的问题说明下。
     中间件主要是了解业界流行的分布式框架,基本上是大公司的产品,了解他们背后的思想,主要是分布式、SOA、缓存、解耦合等,大多架构都是从这些方面考虑的,目的就是提高吞吐量,解决大并发下的各种问题。
     这里就有很多书了,不一一列举,把握的原则就是:思想比具体技术细节要恒久。
7)其它
     数据库,因为我不是DBA,都是大学里的数据库理论知识,加上在日常的一些工作经验,不好评论,程序员会写常用的sql,有基本的sql优化知识就可以了。
     ide、log4j、多语言编码问题、性能监控调优工具等没有特全面和专业的书籍,主要靠百度、google博文。
     maven,tomcat、ant、json,svn等也是看官网document即可,花不了多少时间,有问题去论坛问问即可。
    
     
      
源码地址: https://pan.quark.cn/s/a4b39357ea24 遗传算法 - 简书 遗传算法的理论是根据达尔文进化论而设计出来的算法: 人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因。 遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。 进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择、杂交等。 搜索算法的共同特征为: 首先组成一组候选解 依据某些适应性条件测算这些候选解的适应度 根据适应度保留某些候选解,放弃其他候选解 对保留的候选解进行某些操作,生成新的候选解 遗传算法流程 遗传算法的一般步骤 my_fitness函数 评估每条染色体所对应个体的适应度 升序排列适应度评估值,选出 前 parent_number 个 个体作为 待选 parent 种群(适应度函数的值越小越好) 从 待选 parent 种群 中随机选择 2 个个体作为父方和母方。 抽取父母双方的染色体,进行交叉,产生 2 个子代。 (交叉概率) 对子代(parent + 生成的 child)的染色体进行变异。 (变异概率) 重复3,4,5步骤,直到新种群(parentnumber + childnumber)的产生。 循环以上步骤直至找到满意的解。 名词解释 交叉概率:两个个体进行交配的概率。 例如,交配概率为0.8,则80%的“夫妻”会生育后代。 变异概率:所有的基因中发生变异的占总体的比例。 GA函数 适应度函数 适应度函数由解决的问题决定。 举一个平方和的例子。 简单的平方和问题 求函数的最小值,其中每个变量的取值区间都是 [-1, ...
《基于STM32微控制器集成温湿度监测与显示功能的系统实现方案》 本方案提供了一套完整的嵌入式系统设计参考,实现了环境参数的实时采集、可视化呈现与异常状态提示。系统核心采用意法半导体公司生产的STM32系列32位微控制器作为主控单元,负责协调各外设模块的工作流程。 系统通过数字式温湿度复合传感器周期性获取环境参数,该传感器采用单总线通信协议,具有响应迅速、数据可靠的特点。采集到的数值信息通过两种途径进行处理:首先,数据被传输至有机发光二极管显示屏进行实时图形化显示,该显示屏支持高对比度输出,能够在不同光照条件下清晰呈现当前温度与湿度数值;其次,所有采集数据同时通过通用异步收发传输接口输出,可供上位机软件进行记录与分析。 当监测参数超出预设安全范围时,系统会启动声学警示装置,该装置可发出不同频率的提示音,以区分温度异常或湿度异常状态。所有功能模块的驱动代码均采用模块化设计原则编写,包含完整的硬件抽象层接口定义、传感器数据解析算法、显示缓冲区管理机制以及串口通信协议实现。 本参考实现重点阐述了多外设协同工作的时序控制策略、低功耗数据采集模式的应用方法,以及确保系统稳定性的错误处理机制。代码库中包含了详细的初始化配置流程、中断服务程序设计和各功能模块的应用程序接口说明,为嵌入式环境监测系统的开发提供了可靠的技术实现范例。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值