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

120 lines
7.0 KiB
Markdown
Raw Permalink 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.

# 新兵作战指南
## 武器准备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的选用上后端编码推荐使用IntelliJ IDEA前端编码推荐使用VSCode。
### VCS
目前公司已全面使用本平台Gitea进行版本控制。因此请读者准备好以下两件套
- [Git](https://git-scm.com/)
- [TortoiseGit](https://tortoisegit.org/download/)Windows平台可视化Git工具
- [SourceTree](https://www.sourcetreeapp.com/)Mac平台可视化Git工具
### Maven
参考[公司仓库配置](../配置参考/maven-settings-demo.xml)
## 配件准备plugin
| 开发工具 | 插件 | 插件说明 | 必要性 |
| :-----------: | --------------- | ------------------------------------------------------------ | ------ |
| IntelliJ IDEA | lombok | 用于生成实体gettersetter等方法的插件。IDEA直接在插件市场即可安装。 | 必要 |
| IntelliJ IDEA | checkstyle | 公司2021年中旬后开始开始限制代码规范风格。配置参考 [checkstyle.xml](../配置参考/checkstyle-v1.0.xml) 文件。 | 必要 |
| IntelliJ IDEA | MyBatisX | 这是IDEA下的插件。公司的项目都是用了Mybatis方便开发。 | 推荐 |
| IntelliJ IDEA | RestfulTool | 一个spring mvc下的快速接口查找插件。 | 推荐 |
| IntelliJ IDEA | Maven Helper | maven助手。 | 推荐 |
| IntelliJ IDEA | Smart Tomcat | IDEA社区版运行tomcat必装。 | 推荐 |
| IntelliJ IDEA | SequenceDiagram | 代码调用时序图生成器,方便快速查看方法的所有调用链路。 | 推荐 |
## 军规(规范)
| 规范类型 | 规范内容 |
| ------------ | ----------------------------------------------------------- |
| 后端开发规范 | [Java后端开发规范](Java后端开发规范.md) |
| 注释规范 | [Java文档注释规范倡议](../技术规范/Java文档注释规范倡议.md) |
| 文档规范 | [Markdown文档排版规范](../技术规范/Markdown文档排版规范.md) |
| 数据库规范 | [数据库设计规范](../技术规范/数据库设计规范_v1.0.4.md) |
| 其它技术规范 | [其它技术规范合集](../技术规范/) |
## 行军(经验分享)
- 这个是技术团队技术分享的PPT[技术组分享与培训材料](https://47.107.61.133/svn/%E5%9F%B9%E8%AE%AD/ppt)。
- 这是一个大佬阅读源码的[经验分享](https://www.bilibili.com/video/BV1sq4y1g7X1?t=3m57s)3分57秒开始讲debug技巧。
## 上战场(部署)
### 全量打包部署(测试环境)
#### 切换环境配置
> 打包前需确认环境配置(如数据源,外部接口)是否正确。切勿发生将测试环境接入正式环境,导致测试环境向正式环境写数据的情况出现。
> SpringBoot项目一般直接修改yml的引用即可![SpringBoot配置](../img/SpringBootConfig.jpg)
> 如果配置为引用配置,这通常是指服务器已配置了环境变量。当项目启动时,直接取环境变量进行注入判断,因此无需修改,直接打包即可
> ![SpringBoot配置1](../img/SpringBootConfig1.jpg)
#### 打包
> 打包前应先清理maven的class缓存。有时候因为调试过程中的一些编译报错等奇奇怪怪的原因导致maven的class缓存内容不是最新的class。为避免将错误的class文件打包应先对目录进行clean。
> ![打包](../img/ideaPackage.jpg)
> 命令行:`mvn clean | mvn package -Dmaven.test.skip=true`
#### 备份
部署前,需将服务器上的现有运行包复制到备份存储的文件夹。以便新部署的项目程序有问题的时候回滚操作。
#### 部署
部署情况有两种:
①部署目录就在`tomcat`的`webapp`目录下
>将[第二步](#2%E3%80%81%20%E6%89%93%E5%8C%85)打包后的war包改名至正确的上下文路径名然后将其放入`webapp`目录下重启tomcat即可。
②部署目录被配置到其他目录
> 将war包进行事先解压将解压内容替换到配置的部署目录中。
### 增量打包部署(生产环境)
所有生产环境 **务必** 要使用Increpack工具进行打包和部署实施。 [youfool-increpack 增量打包部署介绍](../应用部署/youfool-increpack-readme.md)
## 军情报告(日报,周报)
### 日报
一般在入职后的第二周,项目经理就开始要求你写日报。日报通过企业微信的工作台的`汇报`-`日报`功能进行每日工作的小结,以及拟定第二天的工作计划。
养成良好的工作习惯,从每天小结开始。
### 周报
入职后第二周或第三周开始,项目经理就开始要求你每周周五早上写周报。周报一般通过企业邮箱发送到自己的项目经理手上。这个具体要看你的项目经理的安排。
## 常见问题Q&A
Q1如何快速地去熟悉自己所要负责的项目。
> A1在接到项目后我们应首先去了解项目背景和项目的主干业务流程。根据自己的社会阅历去对整体项目进行一个初步的完整业务推测模型。推测完后再去阅读其他相关的项目文档和源码去印证修改自己的业务模型。
Q2阅读源码过程中遇到自己未曾涉足过的技术点怎么办
> A2首先我们要确定这个技术点是否会对我们的业务开发和修改有所关联从而确定我们是否真的需要关注这个技术点相关的接口或代码段。如果不需要我们就只需记下这段的位置将需求完成后再反过来去学习提升自己。如果需要去关注这个技术点首先到企业微信上找对应的人问同时提取技术点的关键词到百度中找该技术点的资料。如果在该问题在2小时内未能解决应及时在项目组群内问请求协助切勿藏着问题。
Q3如何快速找到我要修改的别人已经开发的功能点的代码位置。
> A3运行项目在浏览器中的network找到对应业务的相关接口。通过[RestfulTool](#restfultool)插件(快捷键`ctrl`+`alt`+`/`搜索该接口接口找到对应的diamante位置。
> 现在[RestfulTool](#restfultool)的开源仓库已归档不再更新如果你用最新版本的IDEA应该会报错。如果报错请改用[RestfulToolkit-fix](https://plugins.jetbrains.com/plugin/16788-restfultoolkit-fix)(快捷键`ctrl`+`\`
> ![RestfulTool](../img/restfulTool.jpg)