新書推薦:
《
桑德拉销售原则 伍杰 [美]大卫·马特森
》
售價:NT$
440.0
《
理论的意义
》
售價:NT$
340.0
《
悬壶杂记:医林旧事
》
售價:NT$
240.0
《
谁之罪?(汉译世界文学5)
》
售價:NT$
240.0
《
民国词社沤社研究
》
售價:NT$
640.0
《
帕纳索传来的消息(文艺复兴译丛)
》
售價:NT$
495.0
《
DK威士忌大百科
》
售價:NT$
1340.0
《
小白学编织
》
售價:NT$
299.0
|
編輯推薦: |
直面学院教学与产业实践的严重脱节,针砭缺乏系统性认识、技能点不足的工程师弱项,认真解答如何学习Java后端技术。
结合当前主流前沿技术,串联实践必不可少的高频技能,帮助初学者远离弯路,为专业人群查漏补缺,提高解决问题能力。
随翻随用,常读常新,一举点亮Java技能树,深层理解Java语言特性,拓展Java框架|生态,以及后端工程思想|全局观念。
强化实践|重视产出,面向技术创造|产品输出|业务升级;永久记忆|内化技能,从学生|小工一路修炼,成长为骨干|专家。
|
內容簡介: |
Java开发一直是当前互联网领域*火热的开发技能之一,Java工程师也一直是需求量非常大的开发职位。本书主要针对一名合格的Java工程师的必备技能做了大纲性的总结和阐述。本书内容包括了工程化、常用开发框架、数据存储、数据传输、Java编程高级知识、性能优化、安全技术等内容,基本涵盖了Java工程师需要掌握的绝大部分技能点。
|
關於作者: |
杭建,重度Java使用者,具有近10年的Java后端开发经验,一直专注于Java EE、系统架构、大数据等后端技术。现任随身云(中华万年历)技术总监,负责公司的技术培训、系统架构、研发管理等工作,带领研发团队完成了大数据平台、推荐系统、广告平台、传媒平台等系统,以及分ORM、分布式调度、应用性能监测等基础框架的开发,支撑起了中华万年历、微历、牛哔的对话等高达三亿多用户访问量的应用。作者之前曾就职于网易杭州研究院从事基础平台、云计算相关技术的开发工作,参与了易信公众平台、网易云计算动态负载均衡等项目的研发。
|
目錄:
|
第1章 后端技术导言
1.1后端基础设施
1.1.1请求统一入口API网关
1.1.2业务应用和后端基础框架
1.1.3缓存、数据库、搜索引擎、消息队列
1.1.4文件存储
1.1.5统一认证中心
1.1.6单点登录系统
1.1.7统一配置中心
1.1.8服务治理框架
1.1.9统一调度中心
1.1.10统一日志服务
1.1.11数据基础设施
1.1.12故障监控
1.2Java后端技术概览
1.2.1软件开发的核心原则
1.2.2软件开发的软件过程
1.2.3日常开发常用工具
1.2.4应用的运行环境
1.2.5常用第三方服务
1.2.6计算机基础科学知识
1.2.7数据处理相关技能
1.2.8Java编程知识
1.2.9系统架构演化
1.2.10典型的部署架构
1.3如何学习后端技术
1.3.1扎实的计算机基础知识
1.3.2知其然更要知其所以然
1.3.3动手实践
1.3.4频繁练习
1.3.5持续学习
1.3.6自我总结
1.3.7如何学习一门新技术
1.3.8总结
第2章 Java项目与工程化
2.1项目构建
2.1.1传统构建工具Ant
2.1.2主流构建工具Maven
2.1.3新兴构建工具Gradle
2.2代码版本控制
2.2.1集中式代码版本管理SVN
2.2.2分布式代码版本管理Git
2.2.3提交日志的规范
2.3代码质量保证
2.3.1使用单元测试保证代码质量
2.3.2衡量单元测试的标准
2.3.3开发规范与建议
第3章 开发框架
3.1依赖注入
3.1.1JSR-330依赖注入规范
3.1.2Guice
3.1.3PicoContainer
3.1.4Dagger
3.1.5Spring Framework
3.1.6循环依赖问题
3.2对象关系映射
3.2.1表元数据的映射
3.2.2CRUD以及属性的查询
3.2.3查询缓存的使用
3.2.4结果的映射
3.2.5规范SQL书写的语句构建器
3.2.6使用提示
3.3日志
3.3.1JDK Logging
3.3.2Log4j
3.3.3Log4j2
3.3.4Logback
3.3.5统一日志API的门面框架
3.3.6统一日志框架的使用
3.4Web MVC
3.4.1为什么是Spring MVC
3.4.2Spring MVC的请求处理流程
3.4.3典型的配置方式
3.4.4无XML的配置方式
3.4.5对MVC应用做单元测试
3.4.6验证Web请求的参数
3.4.7使用异步Servlet
3.4.8使用提示
第4章 Spring
4.1Spring核心组件
4.1.1Spring的双亲上下文机制
4.1.2Spring中的事件机制
4.1.3Bean的初始化和销毁
4.1.4Bean的动态构造
4.1.5注入集合、枚举、类的静态字段
4.1.6面向方面编程AOP
4.1.7进阶XML的配置
4.1.8无XML的配置方式
4.2Spring数据操作框架
4.2.1Spring JDBC
4.2.2Spring Data Redis
4.2.3Spring Data MongoDB
4.3Spring Boot
4.3.1Spring Boot使用示例
4.3.2Spring Boot的运行原理
4.3.3Spring Boot的组成模块
4.3.4小结
4.4Spring常用组件
4.4.1表达式引擎Spring Expression Language
4.4.2远程过程访问的支持Spring Remoting
4.4.3Spring与JMX的集成
4.4.4定时任务的支持Spring Quartz
4.4.5跨域请求的支持Spring CORS
4.5总结
第5章 数据存储
5.1关系型数据库MySQL
5.1.1存储引擎
5.1.2字符集和校对规则
5.1.3索引的使用
5.1.4查询缓存的使用
5.1.5数据同步中的Binlog
5.1.6事务机制
5.1.7大表优化
5.1.8高可用支持
5.1.9使用提示
5.2非关系型数据库
5.2.1KV数据库
5.2.2文档数据库MongoDB
5.2.3列数据库HBase
5.3缓存
5.3.1本地缓存
5.3.2分布式缓存Redis
5.3.3缓存设计的典型方案
5.4搜索引擎Elasticsearch
5.4.1开源全文检索库Apache Lucene
5.4.2关键概念
5.4.3查询的优化
5.4.4内存的使用优化
5.4.5开源日志管理方案ELK
第6章 数据通信
6.1RESTful架构风格
6.1.1支持的操作
6.1.2返回码
6.1.3资源概念
6.1.4数据的安全保障
6.1.5请求的限流
6.1.6超文本API
6.1.7编写文档
6.1.8RESTful API实现
6.2远程过程调用RPC
6.2.1JDK自带的RPCRMI
6.2.2Hessian
6.2.3Thrift
6.2.4Dubbo
6.2.5数据的序列化机制
6.2.6使用提示
6.3消息中间件
6.3.1简单消息中间件ActiveMQ
6.3.2通用消息中间件RabbitMQ
6.3.3日志消息中间件Kafka
6.3.4本地消息队列
第7章 Java编程进阶
7.1Java内存管理
7.1.1JVM虚拟机内存
7.1.2垃圾回收理论
7.1.3常用垃圾回收器
7.2Java网络编程
7.2.1常见网络IO模型
7.2.2Java网络编程模型
7.3Java并发编程
7.3.1并发原理
7.3.2并发思路
7.3.3并发工具
7.3.4并发编程建议
7.4Java开发利器
7.4.1Apache工具库Apache Commons
7.4.2Google工具库Guava
7.4.3最好用的时间库Joda Time
7.4.4高效JSON处理库FastJson
7.4.5高效Bean映射框架Orika
7.5Java新版本的特性
7.5.1Java 7
7.5.2Java 8
7.5.3Java 9
7.6总结
第8章 性能调优
8.1调优准备
8.1.1HotSpot虚拟机体系结构
8.1.2操作系统的性能调优
8.1.3系统常用诊断工具
8.1.4JDK常用诊断工具
8.2性能分析
8.2.1CPU分析
8.2.2内存分析
8.2.3IO分析
8.2.4其他分析工具
8.3性能调优
8.3.1CPU调优
8.3.2内存调优
8.3.3IO调优
8.3.4其他优化建议
8.3.5JVM参数配置
8.3.6JVM性能增强
第9章 安全技术
9.1Java加密
9.1.1单向加密算法
9.1.2对称加密算法
9.1.3非对称加密算法
9.2安全HTTPHTTPS
9.2.1安全协议SSLTLS
9.2.2证书中心CA
9.2.3请求交互过程
9.2.4性能优化
9.3Web安全
9.3.1跨站点脚本攻击
9.3.2跨站点请求伪造
9.3.3SQL注入攻击
9.3.4基于约束条件的SQL攻击
9.3.5分布式拒绝服务攻击DDOS
9.3.6会话固定攻击Session fixation
附录A 代码构建常用命令
附录B Git常用命令
附录C MySQL常用命令
附录D MongoDB常用命令
附录E Java调优常用命令
|
內容試閱:
|
推荐序一
Hey!新来的读者,为了吸引你的注意力我真是煞费苦心,但最终还是没能写出一句特别吸引眼球的话来,毕竟写序的我不是标题党出身。此刻我真的非常能理解你拿到新书之后那渴望知识的心情,所以你恨不得一个字的序也不要看到,直接到达最有价值的知识点。但作为一名资深转业码农(对!你没看错,是转业,不是专业)还是想说一句,你先看完序,5分钟后到达知识的战场,会更稳!
相信你已经在看序了,那么我们来说点正经事。
你的知识体系的养成有3个关键阶段:看山是山,看山不是山,看山还是山。本书的适用人群是看山不是山的那些人,如果你恰好处于这个阶段,恭喜你!书钱没白花。
Java是一门非常容易入门的语言,初学者经过初期的学习之后基本能掌握DEMO级别的编程应用。相信读者你已经度过了这个阶段,但是Java庞大的体系可能会把你绕晕,又或者你还没看到Java的生态系统有多么复杂。此时,你需要本书。从事程序员这个工作,到比较高阶的时候,其实是不挑语言的,语言只是工具,而你可以在纷繁复杂中游刃有余。但几乎每一位高手都是先深入一个领域,再横向发展的。你可以不用着急后续的横向发展,先坚定自己学习Java的信心!因为,从广泛的应用场景、顶级的开源生态、未来可期的薪水和职位来说,Java都是非常不错的选择。
敲黑板,画重点!下面来解释一下,为什么本书面向的是看山不是山的人群。在度过Java的入门期之后,会有一个烦恼,那就是面对Java这么庞大的体系,我们究竟应该学习什么?选择方向,往往比努力更重要!是使用J2SE编写桌面程序?是使用J2ME编写嵌入式应用?还是使用J2EE编写企业级应用?这些是我们那个泛黄的年代特有的烦恼。而现在的烦恼可能是学Android?还是学Java后端?即便大方向你已经十分坚定,而且选择了Java后端编程,但因为复杂的知识体系和Google发布的各种教程文档,眼前看到的已经不再是清晰的山脉,而是一片迷雾。此时,你需要本书,因为它给你指明了努力的方向。
本书的结构、阐述的方式和大部分的指南书籍有较大的区别,本书是以笔记和要点的形式进行呈现的,用现在的话说就是捞干货。本书涵盖的知识,是以现代工程实践中的实际案例出发来组织的,所以知识点范围非常广泛,每一个点都对最关键的Best Practice简明扼要地进行了说明。你在阅读本书的时候需要一些相关经验,不然无法跟上作者的节奏,建议在有一定的知识准备后再阅读本书,这样你会受益匪浅。从另外一个角度看,在你有了一定的基础积累之后,本书可以帮助你全面地了解一个现代化的最先进的工程实践是怎样的。本书讲述了目前行业中最常用的,经过了实践的工程方案,这将是你快速进阶的最佳指引。
孙建,随身云(中华万年历)联合创始人& CEO
推荐序二
2013年,我和本书作者的接触是从基于网易的一个大型互联网应用合作开始的,我见证了从第一行代码到整个系统服务于亿级用户的过程,并且相信这种经历对开发者来说是一笔巨大的财富,其中大量的开发和实战经验都会在本书中得到充分的体现,相信读者能从书中直接领略到丰富的实战知识。在与本书作者的合作过程中,其对Java技术的热爱与追求,对问题刨根问底,直到理解透彻、灵活应用,这些都令我印象深刻。这些年,我与本书作者一直保持沟通交流、相互学习,他将近十年的实战经验沉淀于本书以实现对后端技术的探索、布道,非常值得开发者与近高窗卧听秋。
后端技术涉及内容非常广泛,Java语言也是互联网开发行业使用的主流语言,相信后续也将继续流行很长一段时间,而本书作者也一直从事Java后端开发工作。在本书中作者比较系统地从总体上描述了后端技术相关的理论知识,包括基础设施、网关服务及框架选型等基本原则,然后以实际经验进行示例说明,接着详细梳理了Java的后端技术,相信读者读完本书后会更全面地理解后端技术。互联网的业务建设需要不同角色的开发者共同协作完成,因此,系统工程化是开发者首先要共同遵守的规范或约定,包括代码规范、版本管理和代码质量检查等。
开发框架的选型进一步地为工程化提供了基础,也能加速推进互联网开发,尽管是否重复造轮子是一个恒久的话题,但是没有永远的银弹,只要在合适的时间里根据团队的能力选择合适的技术框架就好。一般来讲,目前常用的框架包括基本的依赖注入、AOP、事务管理、连接池管理、数据操作、日志服务等,在众多的框架中,本书作者选用目前在Java领域使用最广泛的Spring做深入的分析,详细地说明各组件的基础知识、基本原理和实际使用案例,最难得的是把较多开发者遇到的坑都用真实的示例进行了说明,可以帮助开发者快速地跳过这些伤心地带,同时也把最佳实践画龙点睛地带给开发者。
数据存储无疑是所有系统应用中非常重要的一环,应用的场景用例也和数据库的选型有着极其重要的关系,开发者选择关系型数据库还是非关系型数据库是需要根据软件成本与人力成本来进行权衡的,比如选择MySQL、Oracle等开源或商业的数据库。本书重点从数据库的基础知识、索引和表优化等方面以详尽的示例为更好地选择数据库的存储类型提供了更多的知识。
早期的关系型数据库一般能满足数据达到一定规模的企业的需求,而在互联网业务领域,特别是移动互联网领域内的元数据或者日志数据等,达到亿数量级别是很常见的,这时通常使用非关系型数据库,在非关系型数据库里使用非常多的有MongoDB、HBase等分布式数据库系统。作者在自身的企业开发实践中,得到了大量的使用经验和最佳实践。为了加速后端应用,缓存热数据是加速业务、提高业务性能、提升用户体验的重要手段,通过使用本地缓存、远程缓存进行数据加速、数据预热或提高数据的命中率,是开发者在应用开发的过程中常会遇到的场景。
路漫漫其修远兮,吾将上下而求索,后端技术每年都在不断发展,所用技术也有变化,近些年Java语言的发展速度不那么快了,但是总体是在不断前进发展的,本书作者带领的团队一直深耕此领域并希望通过本书为技术开发人员带来更多帮助。
尧飘海,网易云基础服务(蜂巢)首席架构师
前言
目前互联网行业如火如荼,进入这个行业的技术人员也越来越多。对于研发来说,从工程角度其主要分为前端工程师、客户端工程师(又分为iOS和Android工程师)、后端工程师、算法工程师等职位。本书所说的Java工程师指的是以Java作为主要开发语言的后端工程师。
笔者从2008年还未毕业时做一些小的项目至今,做后端开发已经有差不多10年时间。经历过刚学Java时的迷茫,第一次写出Java程序时的激动,第一次写出一个Web系统的醍醐灌顶,一直到接触Java更底层的东西,总的来说对Java有了系统性的认识,对后端技术体系有了宏观的感受。这期间,笔者用过各种各样的编程语言,尝试过各种开源软件,挖过各种坑,也填过各种坑。针对后端技术来说,笔者认为自己的这些知识体系,还是有一定价值的。
此外,还记得当笔者毕业后进入第一家公司时,入职培训的课程虽然不难,但确实有种恍然大悟的感觉。业界的最佳实践和自己在学校里学到的、使用到的知识,差别还是非常大的。直到后来加入现在的这家公司,给新老员工做过一系列后端技术的培训课程,在校招的笔试和面试过程中深刻体会到学校与业界脱节之严重,在平时的社招中遇到很多对后端技术缺乏系统性认识、技能点不足的工程师,并且也经常被人问起如何学习Java后端技术,于是就打算将目前后端工程师一些比较主流、前沿的技术以及实际工作中会用到的技能串联起来,给刚上大学以后打算以Java后端为职业的学生、刚毕业入职的应届生以及初学者们一些入门的指引,使其少走弯路。另外也希望给一些有经验的工程师提供一个参考手册,将零散的知识点串起来,减少在解决某些实际问题时无头绪搜索带来的时间成本,同时也是对自己的一个阶段性总结和查漏补缺。需要注意的一点是,像数据结构、计算机网络等计算机科学基础知识以及Java SE的基本用法,笔者认为是从事程序开发工作的Java工程师应该必备的知识,因此并不包括在内。
本书会针对Java后端开发工作中经常用到的关键技能点做阐述,会尽量覆盖实际工作中需要的所有技能。但由于很多技能并非一两个章节就能完整讲述,因此本书仅做一些实践性的经验总结和阐述,更加详细和深入的学习则需要参考专门的书籍或者官方文档。
本书的大部分内容都来自笔者的博客以及平时工作、学习中的一些自我总结和笔记,记录了笔者进入这个行业以来的一些经验教训和思考。
面向读者
未入门或者刚入门的Java工程师
包括未来以Java后端开发为职业方向的在校学生、刚毕业入职的Java工程师以及未形成知识体系的Java工程师。这类读者通过阅读本书能够对Java工程师的必备技能有一个全局认识,逐步形成自己的Java技术体系。
有经验的Java工程师
有经验的Java工程师可以通过本书查漏补缺,巩固自己的开发技能,进一步完善自身的Java技术体系。
对Java后端开发感兴趣的非Java工程师
非Java工程师可以通过本书了解Java工程师的技能体系,尤其对于其他语言的后端工程师来说,本书的很多内容也是通用的,并不局限于Java开发。
内容概览
第1章 后端技术导言
本章主要从总体上描述后端技术的概念、组成、作用、需要的知识点,并给出了学习后端技术的建议。
第2章 Java项目与工程化
本章主要讲述Java项目与工程化需要掌握的软件、技能等。
第3章 开发框架
本章主要讲述Java后端开发中的一些主流框架的使用方法。
第4章 Spring
本章主要讲述Spring核心、数据操作以及一些常用组件的使用。
第5章 数据存储
本章主要讲述Java应用中数据存储上使用的一些软件、服务等。
第6章 数据通信
本章主要讲述Java应用中数据传输、通信上使用的一些软件、服务等。
第7章 Java编程进阶
本章主要介绍一些Java开发中的高级特性以及在Java开发中非
|
|