public/技术规范/新兵作战指南(后端篇).md

191 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 新兵作战指南(后端篇)
> 拟稿:[黎润豪](/lirh)<a href="https://blog.lroyia.top" target="_blank">(个人博客)</a>
>
> <div><font>版本号 1.0.0 </font></div>
>
## 目录
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
- [新兵作战指南(后端篇)](#%E6%96%B0%E5%85%B5%E4%BD%9C%E6%88%98%E6%8C%87%E5%8D%97%E5%90%8E%E7%AB%AF%E7%AF%87)
- [目录](#%E7%9B%AE%E5%BD%95)
- [武器准备ENV](#%E6%AD%A6%E5%99%A8%E5%87%86%E5%A4%87env)
- [JDK](#jdk)
- [IDE](#ide)
- [DB](#db)
- [VCS](#vcs)
- [Maven](#maven)
- [配件准备plugin](#%E9%85%8D%E4%BB%B6%E5%87%86%E5%A4%87plugin)
- [必要插件](#%E5%BF%85%E8%A6%81%E6%8F%92%E4%BB%B6)
- [lombok](#lombok)
- [checkstyle](#checkstyle)
- [MyBatisX](#mybatisx)
- [推荐插件](#%E6%8E%A8%E8%8D%90%E6%8F%92%E4%BB%B6)
- [RestfulTool](#restfultool)
- [Maven Helper](#maven-helper)
- [Smart Tomcat](#smart-tomcat)
- [SequenceDiagram](#sequencediagram)
- [军规(规范)](#%E5%86%9B%E8%A7%84%E8%A7%84%E8%8C%83)
- [代码规范](#%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83)
- [注释规范](#%E6%B3%A8%E9%87%8A%E8%A7%84%E8%8C%83)
- [文档规范](#%E6%96%87%E6%A1%A3%E8%A7%84%E8%8C%83)
- [数据库规范](#%E6%95%B0%E6%8D%AE%E5%BA%93%E8%A7%84%E8%8C%83)
- [行军debug](#%E8%A1%8C%E5%86%9Bdebug)
- [上战场(部署)](#%E4%B8%8A%E6%88%98%E5%9C%BA%E9%83%A8%E7%BD%B2)
- [全量打包部署](#%E5%85%A8%E9%87%8F%E6%89%93%E5%8C%85%E9%83%A8%E7%BD%B2)
- [1、切换环境配置](#1%E5%88%87%E6%8D%A2%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE)
- [2、 打包](#2-%E6%89%93%E5%8C%85)
- [3、备份](#3%E5%A4%87%E4%BB%BD)
- [4、部署](#4%E9%83%A8%E7%BD%B2)
- [增量打包部署](#%E5%A2%9E%E9%87%8F%E6%89%93%E5%8C%85%E9%83%A8%E7%BD%B2)
- [军情报告(日报,周报)](#%E5%86%9B%E6%83%85%E6%8A%A5%E5%91%8A%E6%97%A5%E6%8A%A5%E5%91%A8%E6%8A%A5)
- [日报](#%E6%97%A5%E6%8A%A5)
- [周报](#%E5%91%A8%E6%8A%A5)
- [常见问题Q&A](#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98qa)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
## 武器准备ENV
### JDK
目前公司JDK使用的是1.8版本的JDK。你可以选择使用oracleJDK也可以使用其他OpenJDK[adoptium](https://adoptium.net/releases.html?variant=openjdk8)
### IDE
目前公司不限制你使用什么IDE。你可以选择使用EclipseIDEA甚至是VSCODE。但要注意的是Eclipse默认情况下创建的文本是GBK格式IDEA默认使用的是UTF-8。在开发前需要注意修改IDE的默认编码避免发生文件需要重新转换编码的尴尬。在IDE的选用上笔者推荐使用IDEA社区版。
### DB
目前,公司大部分项目均使用[PostgreSQL简称PG](https://www.postgresql.org/)作为业务支撑。如非分派的项目组的项目不使用PG请提前下载12或以上版本的PG。数据库访问工具请勿使用navicat请使用[DBeaver](https://dbeaver.io/)
### VCS
目前公司已全面使用本平台Gitea进行版本控制。因此请读者准备好以下两件套
- [git](https://git-scm.com/)
- [TortoiseGit](https://tortoisegit.org/download/)git乌龟可选用其他可视化工具
### Maven
公司仓库配置请参考[maven-settings-demo.xml](../配置参考/maven-settings-demo.xml)
## 配件准备plugin
插件主要都是在IDEA下的。
### 必要插件
#### lombok
用于生成实体gettersetter等方法的插件。IDEA直接在插件市场即可安装。如果是Eclipse需要下载对应jar包后使用管理员身份的命令行运行jar包进行安装。
#### checkstyle
公司2021年中旬后开始开始限制代码规范风格。具体配置请下载同目录下的[checkstyle.xml](../配置参考/checkstyle.xml)文件。
#### MyBatisX
这是IDEA下的插件。公司的项目都是用了Mybatis下载这个插件能方便开发。
### 推荐插件
#### RestfulTool
一个spring mvc下的快速接口查找插件。
#### Maven Helper
maven助手
#### Smart Tomcat
IDEA社区版运行tomcat必装
#### SequenceDiagram
代码调用时序图生成器,方便快速查看方法的所有调用链路。
## 军规(规范)
### 代码规范
推荐遵循[阿里官方Java开发手册代码规范](https://github.com/alibaba/p3c)
### 注释规范
[Java文档注释规范倡议](../技术规范/Java文档注释规范倡议.md)
### 文档规范
[Markdown文档排版规范.md](../技术规范/Markdown文档排版规范.md)
### 数据库规范
[数据库设计规范_v1.0.4](../技术规范/数据库设计规范_v1.0.4.md)
## 行军debug
这是一个大佬阅读源码的[经验分享](https://www.bilibili.com/video/BV1sq4y1g7X1?t=3m57s)3分57秒开始讲debug技巧。
## 上战场(部署)
### 全量打包部署
#### 1、切换环境配置
> 打包前需确认环境配置(如数据源,外部接口)是否正确。切勿发生将测试环境接入正式环境,导致测试环境向正式环境写数据的情况出现。
> SpringBoot项目一般直接修改yml的引用即可![SpringBoot配置](../img/SpringBootConfig.jpg)
#### 2、 打包
> 打包前应先清理maven的class缓存。有时候因为调试过程中的一些编译报错等奇奇怪怪的原因导致maven的class缓存内容不是最新的class。为避免将错误的class文件打包应先对目录进行clean。
> ![打包](../img/ideaPackage.jpg)
> 命令行:`mvn clean | mvn package -Dmaven.test.skip=true`
#### 3、备份
部署前,需将服务器上的现有运行包复制到备份存储的文件夹。以便新部署的项目程序有问题的时候回滚操作。
#### 4、部署
部署情况有两种:
①部署目录就在`tomcat`的`webapp`目录下
>将[第二步](#2%E3%80%81%20%E6%89%93%E5%8C%85)打包后的war包改名至正确的上下文路径名然后将其放入`webapp`目录下重启tomcat即可。
②部署目录被配置到其他目录
> 将war包进行事先解压将解压内容替换到配置的部署目录中。
### 增量打包部署
[youfool-increpack-readme](../应用部署/youfool-increpack-readme.md)
## 军情报告(日报,周报)
### 日报
一般在入职后的第二周,项目经理就开始要求你写日报。日报通过企业微信的工作台的`汇报`-`日报`功能进行每日的工作,以及第二天的工作的汇报。
### 周报
同样的,一般在入职后第二周或第三周开始,项目经理就开始要求你每周周五早上写周报。点击下载<a href="../%E6%A8%A1%E7%89%88/xxx%E4%B8%AA%E4%BA%BA%E5%B7%A5%E4%BD%9C%E5%91%A8%E6%8A%A5%EF%BC%882021.12.13%20-%202021.12.17%EF%BC%89.xls" target="_brank">周报模版。</a>
模版一般通过企业邮箱发送到自己的项目经理手上。这个具体要看你的项目经理的安排。
## 常见问题Q&A
Q1如何快速地去熟悉自己所要负责的项目。
A2在接到项目后我们应首先去了解项目背景和项目的主干业务流程。根据自己的社会阅历去对整体项目进行一个初步的完整业务推测模型。推测完后再去阅读其他相关的项目文档和源码去印证修改自己的业务模型。
Q2阅读源码过程中遇到自己未曾涉足过的技术点怎么办
A2首先我们要确定这个技术点是否会对我们的业务开发和修改有所关联从而确定我们是否真的需要关注这个技术点相关的接口或代码段。如果不需要我们就只需记下这段的位置将需求完成后再反过来去学习提升自己。如果需要去关注这个技术点首先到企业微信上找对应的人问同时提取技术点的关键词到百度中找该技术点的资料。如果在该问题在2小时内未能解决应及时在项目组群内问请求协助切勿藏着问题。
Q3如何快速找到我要修改的别人已经开发的功能点的代码位置。
A3运行项目在浏览器中的network找到对应业务的相关接口。通过[RestfulTool](#restfultool)插件(快捷键`ctrl`+`alt`+`/`搜索该接口接口找到对应的diamante位置。![RestfulTool](../img/restfulTool.jpg)