本文旨在梳理服务端开发技术栈,希望帮助后端开发同学更全面了解Java服务端主要涉及的知识点

1. 语言相关

1.1 Java

  • 核心知识点

    • Java的类加载机制

    • JVM相关:JVM内存模型和结构,GC原理,性能调优

    • 泛型

    • 集合体系

    • 异常体系

    • IO体系

    • 多线程编程

    • 反射

    • Servlet

  • 推荐数据

    • 《Java编程思想》

    • 《Effective Java》

    • 《深入理解Java虚拟机》

1.2 Shell、Python等脚本语言

  • 介绍

    • 此类脚本语言的意义在于辅助后端开发,包括系统运维,工具集成(借助管道、重定向),文本处理,数据计算等工作,提升后端工作效率

  • 核心知识点(Shell)

    • 常用的linux操作和运维命令

    • 管道、重定向

    • awk、sed等文本处理工具

  • 推荐书籍

1.3 SQL 语言

  • 介绍

    • 通用于传统关系型数据库和大数据场景的结构化查询模型语言。传统数据库方面要精通mysql的sql语法;大数据场景主要掌握Hive SQL(Impala和Spark SQL等均在兼容Hive SQL)

  • 核心知识点

    • 区分DDL和DML

    • 经典查询语句主要结构

    • 表连接(内连接,左外连接,右外连接,全连接)

    • 函数(普通函数,聚合函数)

    • 索引

    • 分区

  • 适用场景

    • 传统数据库,传统SQL:用于事务性数据操作,通常用于系统的业务库;

    • 大数据场景下的SQL:用于数据分析,交互式查询,批量数据处理等。

  • 推荐书籍

    • MySQL:《高性能MySQL》

    • Hive SQL:《Hive编程指南》

2. 开发工具

2.1 开发IDE Intellij/Eclipse

  • 核心知识点

    • 配置良好代码风格模板,包括文件注释,类注释,方法注释,缩进换行等

    • 安装使用必要的插件:代码规范检查插件(Alibaba Java Coding Guidelines),源码潜在bug检查插件(pmd),字节码潜在bug检查插件(findbugs)等

2.2 工程构建 MAVEN

  • 核心知识点

    • maven 仓库

    • maven pom.xml文件配置

    • maven 构建的生命周期

    • maven 插件

  • 能力要求

    • 学会配置maven多级工程结构

    • 能够解决工程构建中常常出现的jar包冲突等问题

    • 熟练使用maven

  • 推荐书籍

    • 《Maven实战》

2.3 版本管理 GIT

  • 介绍

    • git是一个开源的分布式版本控制系统,通过规范化的工具和流程,使得开发者之间高效协同,保持产品稳定运行

  • 推荐文章

3. 开发/测试框架

3.1 Spring框架体系 Spring MVC/Spring Boot

  • 核心知识点

  • 参考说明

    • 有条件地阅读spring核心模块的代码,debug Spring框架的启动和Bean服务的过程是比较好的理解spring原理的方式

    • 最新的版本更新和参考文档可以直接浏览 Spring官网

3.2 orm框架 mybatis/hibernate

  • mybatis介绍

    • 持久层框架,通过xml映射的方式,使得开发者主要关心sql实现即可,由框架实现从实体到java类的映射,数据访问层服务实现,访问优化等等

  • 核心知识点

    • 熟练配置使用mybatis,掌握mapper xml的写法

    • 会使用mybatis-generator的mvn插件自动生成DAO层代码和xml配置

    • 理解mybatis的一、二级缓存,了解sql session创建过程和sql执行过程

  • 推荐资料

    • 最新的版本更新和参考文档可以直接浏览 Mybatis官网

3.3 测试框架 Junit/TestNG

  • 核心能力要求

    • 熟练使用Junit/TestNG进行单元测试,接口测试

    • 学会借助Mockito解决外部系统,模块依赖的mock测试

    • 学会使用maven的surfire plugin和jacoco plugin等插件,度量测例的通过率,测试代码覆盖率等指标

4. 服务端中间件

4.1 key-value存储系统

  • 典型:redis/memcache

  • 核心知识点

    • redis配置策略(持久化策略,替换算法等)

    • redis的部署模式(standalone单机,sentinel哨兵,cluster集群),哨兵的本质是主从切换,cluster是真正的分布式部署可以线性扩展内存资源

    • redis支持的数据结构

  • 适用场景

    • 分布式session存储,数据缓存,分布式锁,简单的消息队列,计数器(累加器)

4.2 消息队列

  • 典型:rabbitmq/kafka

  • 核心知识

  • 适用场景

    • 消息中间件一般适用于:系统之间需要高度解耦;异步传输数据(非阻塞);保证数据传输过程中数据可以持久化,解决生产端和消费端能力不一致的问题,避免峰值数据对下游服务节点的冲击等

    • 对比rabbitmq和kafka: rabbitmq主要适用数据可靠性,一致性要求比较高的场景;kafka主要适用数据吞吐量比较的场景,如日志数据的实时传输等

4.3 分布式文件存储

  • 典型:网易nos/阿里云oss

  • 适用场景

    • 存储需要在分布式架构下共享的文件对象:如前端静态文件,图片资源,大文件资源等

4.4 服务治理/RPC框架

  • 典型:阿里dubbo

  • 核心知识点

    • 注册中心,服务注册、服务发现、负载均衡、序列化、反序列化、编码、解码等核心概念

  • 适用场景

    • 在相对复杂的应用服务网络中,扮演服务治理,服务解耦,负责均衡,简化服务调用方式的作用

4.5 Java Web容器

  • 典型:tomcat/jetty等

  • 介绍

    • 本质上是一个servlet容器,即可以在其上运行Java Web的应用程序

4.6 Nginx

  • 介绍

    • nginx本质上是一个的HTTP和反向代理服务器

  • 适用场景

    • http服务器,反向代理,软负载均衡器等

4.7 关系型数据库

  • 典型: MYSQL/ORACLE

  • 核心知识点

    • 索引

    • 事务与事务隔离级别

    • 存储方法

    • 触发器

    • 不同关系型数据库的SQL差异

  • 推荐书籍

    • 《高性能MySQL》

    • 《Oracle从入门到精通》

5. 大数据存储和计算框架等

  • 核心能力要求

    • 了解大数据体系整体的框架、组成

    • 熟悉各种大数据存储,计算框架,查询引擎等主要的架构、功能和适用场景

    • 能够在项目的架构过程中进行合理的大数据技术方案选型

6. 其他

6.1 权限相关

  • 介绍:

      * 权限相关涉及到:身份认证,鉴权,权限管理等
  • 核心知识点:

    • RBAC(基于角色的权限控制)模型

    • 理解OAuth 2.0的设计思想和运行流程

6.2 安全相关

  • 介绍

    • 在后端开发中需要关注很多的安全问题,这些安全问题可能来自恶意的攻击,也可能来自系统本身的安全性和健壮性不足。防止应用安全漏洞产生的前提是理解常见的漏洞概念、原理以及产生的原因

  • 核心知识点

    • 水平权限和垂直权限漏洞,以及在程序开发中怎样避免

    • SQL注入攻击(mybatis预编译可以避免)

    • 常用的限流策略

    • CSRF 攻击

    • XSS 攻击

6.3 日志相关

  • 核心知识点

    • Log4j、Logback、SLF4J之间的关系,应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J中的API

    • 日志的等级(error/warn/info/debug)

    • 日志的保留时间

6.4 异常处理相关

  • 核心知识点

    • 异常的分类,正确区分异常处理方式

    • 异常处理原则

    • 学会借助spring框架等,将异常转为对用户或者调用方更加友好的错误码和错误信息

6.5 RestFul接口设计相关

  • 介绍

    • restful在目前是使用较多的接口设计和服务间依赖http接口设计的主要原则,基于良好的约定规范,可以使得接口简单易懂,提高团队协作的效率

  • 推荐文章

6.6 线上问题排查流程和工具

  • 核心知识点

    • 系统问题排查:学会使用w/uptime、top、df、netstat、iostat以及各种可视化监控工具排查本机的负载、磁盘、内存、网络等系统问题

    • 应用问题排查:学会依据应用系统错误日志以及jps、jinfo、jstat、jstack、jmap以及各种可视化监控工具,排查应用系统问题

    • 数据库问题排查:学会借助mysql慢查询日志、explain以及各种可视化工具排查mysql使用过程中的各种问题

    • 网络问题排查:学会借助telnet、ping、wget、nc等工具排查网络问题

6.7 多线程编程

  • 核心知识点

    • Java线程相关接口和类的实现和关系

    • Java线程池

    • 线程同步,锁等

6.8 网络相关

  • 核心知识点

    • 掌握http协议消息体划分、连接和通信过程

    • 掌握http主要的返回状态码意义

    • 掌握https协议的连接和通信过程

6.9 设计原则和设计模式

  • 核心知识点

    • 单例模式

    • 策略模式

    • 代理模式

    • 观察者模式

    • 装饰模式

    • 适配器模式

    • 组合模式

    • 工厂模式

    • 模板方法模式

    • ...

    • 单一职责原则

    • 里氏替换原则

    • 依赖倒置原则

    • 接口隔离原则

    • 迪米特法则

    • 开闭原则

    • 组合/聚合复用原则

    • 七大设计原则

    • 一些常用的设计模式

6.10 分布式系统设计相关

  • 核心知识点

    • Quartz,基于数据库锁的抢占式分布式定时器

    • 基于数据库

    • 基于缓存

    • 基于zookeeper

    • 一致性理论

    • 分布式事务解决方案

    • 一致性模型

    • CAP定理

    • BASE 理论

    • 强一致性

    • 弱一致性

    • 最终一致性

    • eBay 事件队列方案

    • TCC (Try-Confirm-Cancel)补偿模式

    • 缓存数据最终一致性

    • 强一致性(两段提交和三段提交模型, Paxos或者Raft算法)

    • 最终一致性

    • SOA

    • 微服务

    • Servless

    • 分布式系统架构设计

    • 分布式事务

    • 分布式锁

    • 分布式定时器

java后台技术的更多相关文章

  1. Java后台技术(TDDL)

    从PC客户端开发转项目经理已经有一段时间了,感觉还不错,平安这边的项目经理还需要对外,所以部门其他项目经理经常需要出差去见客户,我专门对内,部门所有的开发和测试每天做什么.接下来做什么我都必须了解,部 ...

  2. Java后台技术(Dubbo入门)

    我现在公司提供的产品是即时通讯软件,因为我从.net桌面应用开发转岗,从java后台转项目经理,让我有幸拥有了后台开发人员所有的权限,所有的后台源码和技术文档对我开放,可惜仅在后台待了3周不到,还没来 ...

  3. Java后台技术IBATIS入门

    做过.net后台开发的同志一定用过Entity FrameWork,该框架实现了实体Entity到数据库行的映射,通过操作实体DataSet,就能够直接同步修改到数据库.但是Java暂时没有类似的技术 ...

  4. Java后台技术(线程安全)

    前端时间一个同事因为后台线程安全问题出了一次生产事故,今天我就对线程安全问题进行一次总结. 首先,我们来大致看以下我同事写的代码,代码我进行了精简,大致如下: for (final String re ...

  5. Java后台工程师面试杂记——不跳不涨工资星人跳槽经历

    经过接近一个月的时间,完成换工作这件“小事”,前后总计面试了多家公司,最后也没接到几个offer,不过最终总算尘埃落定,就对这个过程进行一个总结吧. 在某互联网公司工作了近一年的时间,但是频繁的业务需 ...

  6. Java多线程技术学习笔记(二)

    目录: 线程间的通信示例 等待唤醒机制 等待唤醒机制的优化 线程间通信经典问题:多生产者多消费者问题 多生产多消费问题的解决 JDK1.5之后的新加锁方式 多生产多消费问题的新解决办法 sleep和w ...

  7. 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写

    基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...

  8. 如何用CropBox实现头像裁剪并与java后台交互

    如何用CropBox实现头像裁剪并与java后台交互 参考网站:https://developer.mozilla.org/zh-CN/docs/Web/API/Blob 参考: http://blo ...

  9. android支付宝app支付(原生态)-包括android前端与java后台

    本文讲解了 android开发的原生态app集成了支付宝支付, 还提供了java后台服务器处理支付宝支付的加密代码, app前端与java后台服务器使用json数据格式交互信息,java后台服务主要用 ...

随机推荐

  1. angular2.0学习笔记5.关于组件

    1.组件文件应在/src/app文件夹下 2.组件文件命名应遵循小写中线形式,每个单词之间用中线分隔,并且以.component.ts结尾. 如:HeroDetailComponent类应该放在her ...

  2. csdn博客

    https://blog.csdn.net/lydstory123?t=1 以前还有几篇文章  忘记了

  3. eclipse中tomcat调试正确关联源码

    1.build path中jar包关联本地源码 2.tomcat中添加source关联工程lib下的jar包 以上两步即可. 可解决tomcat直接关联本地源码debug时无法计算表达式的情况. 错误 ...

  4. service fabric重装电脑后集群失败

    前提.下载service fabric sdk工具 1.Remote Procedure Call (RPC)服务打开 自动 2.Remote Procedure Call (RPC) Locator ...

  5. vue回到顶部组件

    html <template> <a href="javascript:;" class="toTop" @click="backT ...

  6. jsp页面错误的全局处理

    网上搜索spring mvc项目全局异常处理: 大致可以找到两种方案 : 方案1: ExceptionHandlerResolver . spring 提供了两种默认实现,当然你也可以自己实现.. 方 ...

  7. 失踪的7(P1590&NOIP水题测试(2017082301))

    题目链接:失踪的7 水题,不解释. #include<bits/stdc++.h> using namespace std; int main(){ int t; scanf(" ...

  8. 8月的list

    多校的list: 第一周的多校list: k路归并 (思想大概理解了,还没实现 莫比乌斯 树归 第三场的多校list: 斯坦纳树 第四场多校: Pollard_rho算法和Miller_Rabin   ...

  9. java保存繁体字到数据库时就报错Incorrect string value: '\xF0\xA6\x8D\x8B\xE5\xA4...' for column 'name' at row 1

    问题分析 普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战.避免 emoji 表情符号带来的问题 ...

  10. 2019.01.23 hdu1693 Eat the Trees(轮廓线dp)

    传送门 题意简述:给一个有障碍的网格图,问用若干个不相交的回路覆盖所有非障碍格子的方案数. 思路:轮廓线dpdpdp的模板题. 同样是讨论插头的情况,只不过没有前一道题复杂,不懂的看代码吧. 代码: ...