吃透阿里P8推荐424页Java服务端研发知识图谱后,直接入职蚂蚁P6

news2024/9/23 9:33:56

前言

蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力、培训、出国、大公司的经历,还有很多很好的朋友。但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员,可惜我错过了,我用这五年时间和很多程序员一样在困惑和迷茫中找不到出路!

路其实一直都在那里,只是我们看不到而已!

以前我一直被公司和技术牵着走,并不是自己在选择技术,而是不自觉地被推到了这个位置上。想想有多少人对于自己将来要从事的职业和技术类型进行过深入思考和比较呢?当我跳出编码后,我开始思考和程序及程序员职业生涯相关的问题,最后发现,影响我们走入今天的困局的竟然是一些我们常常挂在嘴边的话。

本文覆盖内容较广,从研发基础、框架、组件、部署、工具几个方面分别讲述了Java 后台研发涉及的知识,各种技术选取最常用和实用的部分,可以让读者花较少的时间获取精要的内容。

基础篇包含Java语言的使用和特性、Maven 工程管理、Svn 和Git代码管理、Linux 服务器命令。服务框架篇包含Spring 框架治理、SpringMVC、SpringBoot.框架演进、Spring Cloud微服务框架。

组件篇包含MySQL数据库及操作、MongoDB存储、Redis 缓存、Zookeeper 配置及注册发现原理、FastDFS文件存储、ElasticSearch 搜索、定时任务、RabbitMQ 消息队列、ELK日志展示及分析。

部署篇包含Docker镜像技术、Jenkins 持续集成、Harbor 镜像仓库、Rancher 容器管理。

工具篇包含Swagger接口文档编写及测试工具、JMeter 测试工具、VisualVM 分析工具等。

目录

主要内容

全文共分为五篇,21章的内容,每篇内容如下:

第一篇主要讲解Java语言,以及工程构建、代码管理和基本的服务器命令,以这些内容作为本文的起点和基础。

第1章Java概要,Java是一门面向对象的编程语言,它选择性地吸取了C++语 言的优点,并在其基础上丰富了自己的体系。Java 在健壮性、可移植性、安全性等多个方面均有所突破。同时Java 的单一继承性和引用的概念(无指针)也使语言更易理解。本章通过讲解Java中常用的能力使读者能够快速地了解和使用Java。如果您已经对Java有非常深的理解,那么此章也可以作为Java核心内容的提炼笔记,需要时可以随手翻阅。

第2章Maven,在Java的世界中,依赖管理是不得不面对的问题。无论是外部的开源类库依赖,还是项目内部的模块间依赖,都需要进行依赖管理。可以说依赖管理是持续集成的核心内容之,- - 。Maven抽象定义了一个软件的完整生命周期,遵循这个模型,可轻松地管理自己的软件项目,避免不必要的学习成本,并促进软件项目管理的标准化、流程化。

第3章代码管理,本章会介绍两个优秀的版本管理工具Svn和Git。

Svn是集中式版本控制系统,版本库存放在中央服务器,必须联网才能工作。

Git是分布式版本控制系统,也就是每个研发人员从中心版本库的服务器上拉取代码后会在自己的计算机上克隆-个自己的版本库。工作的时候不需要联网,因为版本都在自己的计算机上。

第4章Linux命令,在日常工作中,通常测试环境和生产环境的软件都是运行在Linux 服务器上,了解并掌握基本的Linux命令对研发者来讲尤为重要。本章将讲解Linux系统的常用命令。

第二篇主要讲解Spring框架治理、服务框架Spring MVC和Spring Boot、 服务架构的演进以及微服务框架Spring Cloud.

第5章Spring,Spring是一-个轻量级JavaSE/JavaEE 开发应用框架9,可以一-站式地构建企业应用。Spring是模块化的,几乎涵盖了开发所需要的所有组件,如果业务需求超出其能力,也可方便集成第三方组件。Spring 可以管理对象,还提供了适用于安全控制、异常处理、日志记录等场景的面向切面的能力,同时,Spring 提供与第三方框架无缝集成能力,进一步方便业务开发和拓展。

第6章Spring MVC,Spring MVC是传统框架SSM的组成部分,本章将介绍Spring MVC框架的特性以及此框架在工程中的作用和用法。

第7章Spring Boot,前面已经详细地介绍了Spring 的能力,相信大家对Spring 已经有了自己的理解。那么Spring Boot和Spring之间存在什么联系呢?

Spring的核心理念是让研发者专注于业务的逻辑,而不过分考虑框架的治理,基于此思想,Spring 确实做出了很多改进,例如使用XML进行配置和后期的使用注解进行配置。但是即使如此,Spring 还是没有逃脱大量的配置工作,例如引入外部工程依赖时的配置等;在工程中管理大量的工程依赖时,各个依赖版本间的兼容性和配置属性繁琐等问题变得更为明显。这些问题与Spring的初衷相悖,所以Spring Boot的出现就是Spring初衷继续贯彻的升级版。因此,可以把Spring Boot理解为简化并且丰富了的Spring。

Spring Boot的使用会让编程更加简单,更加专注于业务,如果对比上面Spring MVC的配置,你会发现Spring Boot的改进到底有多大。这些改进基于Spring Boot的自动配置和起步依赖。本文对Spring Boot做最精要的提炼,目的是让大家快速了解Spring Boot的神奇之处。

第8章服务架构,第一篇的几章内容,从Java语言开始,讲解如何使用语言以及了解语言的特性;然后讲解了Maven工程的管理;接下来使用Git和Svn版本控制软件来管理代码;介绍了Linux 系统命令,并且在Linux 服务器中运行了一个Java 程序。在第二篇的头几章内容中,学习了使用Spring框架治理来管理程序,并且了解了Spring MVC的页面编写等内容;.上一 章使用 SpringBoot更简便的管理程序。其实到目前为止,已经可以通过讲解的内容编写自己的业务了。但是本书的范围明显不限于此。通过本章的了解,可以看到一个小系统是如何一步步变大的,以及系统变大后这种复杂系统的管理办法。

第9章Spring Cloud,Spring Cloud是一套微服务治理框架,正如前面提到的,如果把一个传统架构的程序拆分为一个一个小的微服务,那么出现的治理和使用上的问题就可以通过Spring Cloud解决。

Spring Cloud提供了服务发现、配置管理、消息总线、负载均衡、断路器、链路跟踪、数据监控等微服务治理能力,使微服务集群可以全面地被管理和组合起来。同时Spring Cloud各个组件是基于Spring Boot的,这些能力可以通过Spring Boot的简单配置实现。

本章使用Spring Cloud 的Edgware.SR2版本。Spring Cloud的可选组件很多,文中选择其中的一部分进行演示,例如Eureka 和Zookeeper都可以作为服务发现组件,文中只演示Eureka。

第三篇主要讲解在服务中使用的数据库、缓存、定时任务、消息队列、全局搜索等功能组件的使用方法和使用场景。

第10章MySQL,常见的数据库种类很多,例如Oracle、 MySQL、 SQL Server 等,各有特点和应用范围,其中MySQL由于支持多语言开发、成本低、可定制、社区活跃度高、开放源码等特点,成为许多项目的首选。MySQL是一个多用户、多线程的关系型数据库管理系统,本章将讲解MySQL的特性、命令及用法。

第11章MongoDB,随着互联网业务的发展,传统的关系型数据库RDBMS日(MySQL等)在一-些场合遇到挑战。首先,对数据库存储的容量要求越来越高,单机无法满足需求,很多时候需要用集群来解决问题,而RDBMS由于要支持join, union 等操作,- -般不支持分布式集群。其次,在大数据流行的今天,很多数据都“频繁读和增加,不频繁修改”,而RDBMS对所有操作一视同仁,这就带来了空间浪费以及查询性能问题。另外,互联网业务的不确定性导致数据库的存储模式也需要频繁变更,不自由的存储模式增大了实现的复杂性和扩展的难度。而非关系型数据库NoSQL9正好填补了这块空白,MongoDB 正是非关系型数据库的代表产品之一。

第12章Redis,在实际业务中,如果仅使用关系型数据库,当然可以对数据进行增删改查等操作,但随着业务量的上升,就会遇到数据库的性能瓶颈,虽然可以通过优化数据库或者使用读写分离等技术使数据库的承载能力提高,但还有一-种可 以显著提高业务性能的方式:添加缓存。

缓存凭借着超强的数据读写能力,能够承担非常大的业务请求压力,并且- -些不适合存入数据库的数据放入缓存中也是一-种不错的选择。 缓存分为本地缓存和分布式缓存,本章仅介绍分布式缓存Redis。

Redis支持数据的持久化,可以在重启Redis时把持久化的数据再加载进缓存; Redis 提供了5种数据格式的存储,分别是String、List、 Hash、 Set、 ZSet; Redis 支持数据的备份,也就是可以建立多节点。单台Redis 在不考虑网络的情况下,可以达到每秒10万次左右的读能力。所以对于一名研发者来讲,使用好Redis会让工作变得简单且流畅。

第13章Zookeeper,Zookeeper从英文直译是“ 动物管理员”。各个系统就好比动物园里的动物,为了使各个系统能正常提供统一的服务, 必须用一-种机制来进行协调, 这就是ZooKeeper的作用。

第14章FastDFS,业务开发过程中,或多或少都会接触到文件的存储和下载,这些文件在服务器中存储时,需要一个稳定、易扩容、高可用的环境。FastDFS 很好地支持了这些需求,本章使用FastDFS实现文件储存的相关操作。

第15章ElasticSearch,随着业务数据的增多,在站内搜索信息可能是–个新的挑战。如果直接查询数据库,前提是要知道数据存放在哪个表中,有哪些字段,但是实际上大部分情况是只知道要搜索的内容,而不知道具体的位置。同时站内搜索对搜索耗时有较高的要求,如何优化查询也是要面临的一系列问题。ElasticSearch 的出现正是为了解决上面问题的。本章介绍如何使用ElasticSearch 实现搜索相关的业务需求。

第16章定时任务,业务系统常常由于某些业务的需求,要在特定时刻或者特定时间间隔中做一-些事情。 例如研发-一个电商平台,需要实时查看当前订单成交总额情况,这就需要用定时任务不停地查看系统内的订单并.且统计总额;或者对于用户还未支付的订单,想在订单有效期内提醒用户,这就需要定时查看系统内的未支付订单,并且监控订单的有效时间,在失效前提醒用户支付;或者运营人员期望每天生成-一个统计表,用来展示前-天平台内所有用户的购买情况,这也需要用一个定时任务每天按时启动统计。以上这些应用场景都是定时任务的用武之地。

第17章RabbitMQ,对于某些时限要求不高的业务,或者为了降低后端服务压力的情况,可能会用到消息队列。消息队列就像一个仓储或者转运中心,某些服务需要处理一些事务, 但是又不急于得到返回,或者能够处理此事务的服务由于各种原因不能立刻返回,这种情况下就会把这个事务放入消息队列,然后由能够处理此事务的服务从消息队列中获取需要执行的事务再执行。所以消息队列在此种情形下达到了解耦、暂存、削峰的目的。

RabbitMQ是实现了AMQPθ 协议的消息中间件的一种, 易用性、扩展性、高可用性较好,同时支持多种客户端,如Python、Java、 PHP、C等。本章介绍RabbitMQ的主要用法。

第18章ELK,在一个使用Spring Cloud进行微服务化的系统集群内,包含不同能力的服务,同一服务还包含多个程序实例,这些实例可能运行在不同的服务器中。如果集群中某- -服 务出现了问题需要查看日志,可能要到不同的服务器中逐个查看日志文件,这明显是个很麻烦的事情。使用ELK就能够很好地解决此问题。

ELK是ElasticSearch、 Logstash、 Kibana 三个软件的聚合,使用这三个软件最后达到日志搜集、存储、分析等目的。其中ElasticSearch 提供存储及搜索引擎的能力; Logstash9是 日志搜集、分析、过滤、输出的工具; Kibana为日志分析提供友好的Web界面,可以对日志进行可视化的搜索、汇总和分析。

第四篇主要讲解镜像技术的用法,使用镜像技术快速搭建功能环境的服务组件,并且讲解使用Jenkins构建工程以及服务部署相关的内容。

第19章Docker,当把程序部署到服务器时,常常面临环境的问题,例如系统版本和程序不匹配、使用的JDK版本需要重新安装、系统的环境变量需要重新设置、新程序与服务器中已存在程序之间的冲突等问题。这些问题给服务集群的部署带来了- -定的麻烦,每次上线可能由于几个环境问题要调试好久。解决以上问题就是Docker应用的场景。

第20章项目构建,本章介绍使用Jenkins9进行 软件的持续集成,然后自动构建程序的镜像,推送至Harbor私有仓库,最后用Rancher管理容器的运行。

第五篇主要讲解在日常工作中,为了提高工作质量和效率所使用的研发工具。

第21章常用工具,本章将介绍Swagger、 JMeter、 ab、VisualVM、 JD- GUI工具的使用,这些工具会帮助你提高工作效率和质量。

因为文中包含的内容实在是太多了,所以小编只把部分知识点拿出来粗略的介绍了一下,每个小节都有更加细化的内容。

文章内容总结

  • 覆盖语言、框架、微服务、组件、部署及容器等服务端技术;
  • 高度凝练后台研发各领域精要内容,掌握起来省时省力;
  • 连贯地讲述了各种技术在服务中发挥的作用,使其不再是信息孤岛;
  • 内容实用,用例由浅入深,可以快速上手操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/69066.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

看场景、重实操,实时数仓不是“纸上谈兵”

本文转载自阿里云Hologres产品负责人合一在ITPUB的访谈,谈谈他眼中的实时数仓, 原文链接: https://mp.weixin.qq.com/s/RZMWf9r4fKV9mNoGGUtaVw 这两年,企业IT领域掀起实时数仓热潮。然而,只要稍做梳理就会发现&#…

【笔试强训】Day 6

🌈欢迎来到笔试强训专栏 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一句鸡汤&#x…

Redis - Redis为什么这么快?

1. Redis为什么这么快? 数据结构简单,对数据操作也简单,Redis 中的数据结构是专门进行设计的;基于内存实现,读写速度快;Redis 是单线程的,避免了不必要的上下文切换和竞争条件,也不…

卖座网站影院界面:优化长列表的滑动流畅度方案

关键点1:优化长列表的滑动流畅度 问题:在长列表中,向下滑动时,为了提高用户的使用感受,这个滑动一般都会做的很流畅。但是在网速不快的情况下,它自然会卡顿,所以为了优化网速慢带来的卡顿现象&…

好用的国产远程控制软件,我只推荐这款!

近年来,越来越多的人需要远程办公,远程为用户提供服务或支持等,导致人们对远程控制软件的需求不断增加。 但现在市面上远程控制软件参差不齐,有的远程控制软件功能不齐全,有的操作步骤过于繁琐,有的使用起…

vue 组件封装——可自由拖拽移动的盒子

最终效果 完整代码 关键性要点&#xff0c;详见注释 组件封装 superBox.vue <template><divref"box_Ref"class"box"mousedown"moveStart"mousemove"moving"mouseup"moveEnd":style"{width: (nodeInfo.width…

js模块化

第1章:模块化入门 1.1.理解什么是模块 将一个复杂的程序依据一定的规则拆分成单个文件&#xff0c;并最终组合在一起这些拆分的文件就是模块&#xff0c;模块内部数据是私有的&#xff0c;只是向外部暴露一些方法与外部其它模块通信 1.2.为什么要模块化? 降低复杂度&#…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java网络游戏虚拟交易平台8rfnp

计算机毕业设计的编程真的不会, 应该怎么办啊, 平时学了3年都没学懂&#xff0c;然而还有一个月就要答辩了&#xff0c;一点东西都没做出来&#xff0c;不知道该怎么办了&#xff1f;好迷茫&#xff0c;如果毕不到业怎么办, 有没有快速的学习方法 毕设毕设&#xff0c;最终的是…

【软件测试】10年测试老鸟,告诉你测试内功修炼之道......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 一名测试人员&#…

Docker[2]-docker的组成与卸载

1.5 Docker的基本组成 1.5.1 镜像(image) Docker 镜像&#xff08;Image&#xff09;就是一个只读的模板。镜像可以用来创建 Docker 容器&#xff0c;一个镜像可以创建很多容器。 docker面向对象容器对象镜像类 1.5.2 容器(container) Docker 利用容器&#xff08;Container&a…

一文读懂如何让网页变灰白色(黑白色)

文章目录1. 文章引言2. 实现方法2.1 修改CSS文件2.2 修改html标签2.3 修改body标签2.4 使用grayscale.js插件1. 文章引言 有段时间&#xff0c;我们打开知名的网页&#xff0c;发现全部变成黑白色了&#xff0c;如下图所示&#xff1a; 一般在清明节&#xff0c;全国哀悼日&am…

学会这些C语言技巧,你的编程能力大大提升

一、函数指针 在讲回调函数之前&#xff0c;我们需要了解函数指针。 我们都知道&#xff0c;C语言的灵魂是指针&#xff0c;我们经常使用整型指针&#xff0c;字符串指针&#xff0c;结构体指针等 int *p1; char *p2; STRUCT *p3; //STRUCT为我们定义的结构体 但是好像我们…

PCB设计总有几个阻抗没法连续的地方。

罗永浩所说“人生总有几次踩到大便的时候”&#xff0c;PCB设计也总有阻抗不能连续的时候。 特性阻抗&#xff1a;又称“特征阻抗”&#xff0c;它不是直流电阻&#xff0c;属于长线传输中的概念。在高频范围内&#xff0c;信号传输过程中&#xff0c;信号沿到达的地方&#xf…

canal springboot 入门

Alibaba canal(官方文档链接) 简介 canal [kə’nl]&#xff0c;译意为水道/管道/沟渠&#xff0c;主要用途是基于 MySQL 数据库增量日志解析&#xff0c;提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署&#xff0c;存在跨机房同步的业务需求&#xff0c;实现方…

转行编程语言该怎么选择?小扎给你安排上

编程语言的发展 ​ 编程语言到目前为止&#xff0c;经历了三个发展阶段&#xff0c;机器语言&#xff0c;汇编语言、高级语言。在高级语言中&#xff0c;又可以分为面向过程语言以及目前最为广泛流传的面向对象语言。 机器语言 ​ 第一代计算机语言称为机器语言。机器语言就是…

stm32cubemx hal学习记录:FreeRTOS中断管理

一、参数配置 1、配置RCC、USART1、时钟84M 2、配置SYS&#xff0c;将Timebase Source修改为除滴答定时器外的其他定时器。 3、初始化LED的两个引脚、两个按键引脚 4、开启FreeRTOS&#xff0c;v1与v2版本不同&#xff0c;一般选用v1即可 5、创建一个队列 6、创建两个线程…

正大国际期货:外盘黄金期货怎么做,需要注意什么?

无论你是刚入外盘黄金期货市场的新手小白&#xff0c;还是已经入黄金市场多年的老手&#xff0c;必须知道外盘黄金期货交易的技巧及规则&#xff0c;这样才可以在黄金期货市场中站稳脚跟&#xff0c;才能收获更多的利益。下面正大IxxxuanI就为大家准备了一些黄金交易技巧以供参…

太阳能发电与蓄电池研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;主要研究方向是电力系统和智能算法、机器学…

汇编语言程序设计入门

目录 基本概念 符号指令中的表达式 符号 数值常量 符号常量&#xff08;用的很少&#xff09; 数值表达式 标号&#xff08;一般出现在代码段&#xff09; 程序框架 ​编辑 标号的定义 变量&#xff08;最重要) 变量的属性​编辑 变量存储区中数据的存放​编辑 变量…

最受欢迎的Python科学类库

作为一种免费的&#xff0c;跨平台的&#xff0c;通用的和高级的编程语言&#xff0c;Python已被科学界广泛采用。科学家重视Python的精确和有效的语法&#xff0c;相对平坦的学习曲线以及它与其他语言&#xff08;例如C / C &#xff09;很好地集成的事实。 由于这种流行&…