maven 用来做什么
Maven 是一个流行的项目管理工具,主要用于 Java 项目的构建、依赖管理和项目信息管理。以下是 Maven 的主要用途:
- 项目构建:
Maven 可以帮助开发者对 Java 项目进行自动化构建。通过 Maven 的约定优于配置的原则,开发者只需定义项目的基本结构和依赖关系,Maven 就可以自动完成项目的编译、测试、打包等构建工作。
- 依赖管理:
Maven 通过中央仓库和本地仓库来管理项目的依赖库。开发者可以在项目的配置文件中声明所需的依赖,Maven 将自动下载并管理这些依赖库。
- 项目信息管理:
通过 Maven,开发者可以方便地管理项目的元数据信息,如项目名称、版本号、作者、许可证等。这些信息可以被用于生成项目文档、发布到中央仓库等操作。
- 项目报告:
Maven 提供了丰富的插件机制,可以生成各种项目报告,如单元测试报告、代码覆盖率报告、静态代码分析报告等,帮助开发者更好地了解项目的状态。
- 项目部署:
Maven 可以帮助开发者将构建好的项目部署到指定的环境中,如本地、测试、生产环境等。
maven的规约说一下
- /src/main/java/ :Java 源码。
- /src/main/resource :Java 配置文件,资源文件。
- /src/test/java/ :Java 测试代码。
- /src/test/resource :Java 测试配置文件,资源文件。
- /target :文件编译过程中生成的 .class 文件、jar、war 等等。
- pom.xml :配置文件
Maven的生命周期
Maven 生命周期按照构建过程分为三个部分,即 清理(clean)、构建(build) 和 站点生成(site)。每个部分包含不同的阶段(phase),执行的顺序是固定的,也就是说 Maven 在执行构建时会依次运行每个阶段。
以下是 Maven 的生命周期和各个阶段的简要说明:
- 清理生命周期:
- pre-clean:在清理之前执行的动作
- clean:清理上一次构建生成的文件
- 构建生命周期:
- validate:验证项目是否正确并且所有必要信息都可用
- compile:编译项目的源代码
- test:测试编译后的代码
- package:将编译后的代码打包成可发布的格式,如 JAR、WAR 等
- install:将打包好的代码安装到本地仓库,方便其他项目进行依赖管理
- deploy:将打包好的代码部署到远程仓库,方便其他人使用
- 站点生命周期:
- pre-site:在生成站点之前执行的动作
- site:生成项目的站点文档
- post-site:在生成站点之后执行的动作,如部署站点到服务器上
- site-deploy:将生成的站点部署到远程服务器上
微服务的好处?一定比单体好吗?
面试官这个不一定,技术还是为业务服务的,简单的业务单体肯定更好,他没有分布式事务、服务雪崩等一系列服务治理的问题,并且部署、维护成本低。微服务更适合一些表模型复杂、业务链路长的场景,这样虽然会带来一些服务治理问题,但是也降低了服务之间的耦合,有利于后续的服务拓展。
常见的负载均衡算法
有轮询、加权轮询、权重、响应时间、随机、区域可用等吧,我们项目中一般都是轮询,它的意思就是当有多台机器的时候,就一个一个轮着来。