本文旨在梳理服务端开发技术栈,希望帮助后端开发同学更全面了解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. Java图形界面——Border

    Swing编程边框(Border)的用法总结 Java进行客户端编程,使用了大量的Swing控件,由于系统默认的边框无法满足项目的要求,不得不自己更改控件的边框样式,网上找了不少资料,本文对Swing ...

  2. js的JSON

    把任何JavaScript对象变成JSON,就是把这个对象序列化成一个JSON格式的字符串,这样才能够通过网络传递给其他计算机. 如果我们收到一个JSON格式的字符串,只需要把它反序列化成一个Java ...

  3. 5C - A == B ?

    Give you two numbers A and B, if A is equal to B, you should print "YES", or print "N ...

  4. HTML与XHTML的差别(转自)http://jingyan.baidu.com/article/597035521c31ed8fc007400a.html

    HTML与XHTML之间的差别,粗略可以分为两大类比较:一个是功能上的差别,另外是书写习惯的差别.关于功能上的差别,主要是XHTML可兼容各大浏览器.手机以及PDA,并且浏览器也能快速正确地编译网页. ...

  5. Eclipse中的maven项目搭建

    一.eclipse中的maven设置 1.打开“首选项”----> "maven"---->"Installations".用来查看maven的使用 ...

  6. 洛谷1894 [USACO4.2]完美的牛栏The Perfect Stall

    原题链接 二分图最大匹配板子. 每个奶牛向它愿意去的牛棚连边,跑二分图最大匹配即可. 这里我用的是匈牙利算法. #include<cstdio> #include<cstring&g ...

  7. jquery动态出操作select

    var citys = {1:'北京',2:'上海',3:'广州',4:'深圳'}; $("#city option:gt(0)").remove(); for(var k in ...

  8. stm8 单线串口能收不能发

    原因是把连接的TX和RX短接了,其实在TX和RX间要串一个电阻,然后让stm8的单线TX接到RX.

  9. Linux上安装java+tomcat+mysql运行环境

    centos6.5jdk"1.7.0_79"mysql5.6apache-tomcat-7.0.53 安装jdk:1.先到oracle下载rpm包:jdk-7u80-linux-x ...

  10. BP神经网络的数学常识

    输入数据X1-Xn. 输入层和隐层之间的权Wji 隐层的输入数据为:∑iwjixi 隐层的输出数据为:yj = f(∑iwjixi).其中f(x)= 隐层的输入数据为:∑jwkjyj 隐层的输出数据为 ...