如何合理设计一套springcloud+springboot项目中的各个微服务模块之间的继承关系的最优方案

文章目录

    • 一、模块化设计所遵循的原则
    • 二、项目架构设计
    • 三、各个模块作用说明
      • 3.1 core 模块
      • 3.2 common 模块
      • 3.3 generatorcode模块
      • 3.4 business 模块
      • 3.5 web 模块
      • 3.6 admin 模块
      • 3.7 父pom
    • 四、采用import引入SpringBoot

在springcloud微服务项目中经常用到多模块化的架构设计,随着业务模块的增多,各个服务模块之间的依赖关系就越来越复杂;本文从项目起初的搭建,给出一套Model优秀设计方案。

一、模块化设计所遵循的原则

  1. 单一职责原则 (Single Responsibility Principle):

每个模块应该专注于执行一个清晰且明确定义的功能,遵循单一职责原则,以降低模块的复杂性。

  1. 高内聚性 (High Cohesion):

模块内的组件和类应该紧密相关,共同实现模块的目标。高内聚性有助于提高代码的可理解性和可维护性。

  1. 低耦合性 (Low Coupling):

模块之间的依赖应该尽可能减少,以便修改一个模块时不会对其他模块造成影响。低耦合性有助于实现独立的模块。

  1. 可重用性 (Reusability):

模块应该设计成可重用的组件,以便在项目的不同部分或未来的项目中能够复用。这通过提取通用功能到独立的模块(如common模块)来实现。

  1. 清晰的界限和接口 (Clear Boundaries and Interfaces):

模块之间的界限和接口应该明确,确保模块之间的交互清晰可见。这有助于团队成员理解各个模块的职责。

  1. 适度的模块化 (Moderate Modularity):

将功能相近的组件放在同一模块中,但避免过度细化,以免引入不必要的复杂性。适度的模块化有助于提高项目的可维护性。

  1. 分层架构 (Layered Architecture):

通过采用分层架构,如控制层、服务层、数据访问层等,有助于模块的划分和管理。这有助于代码的组织和理解。

  1. 依赖倒置原则 (Dependency Inversion Principle):

模块之间的依赖关系应该依赖于抽象而不是具体的实现。这有助于降低模块之间的耦合性。

  1. 测试容易性 (Testability):

模块应该设计成易于测试的单元,以便进行单元测试、集成测试和端到端测试。

  1. 适应未来扩展 (Adaptability for Future Extension):

模块设计应该考虑未来的扩展性,以便在需求变化时能够轻松地添加新功能或模块。

二、项目架构设计

整体项目使用的是Maven管理的项目。架构:

├─tigerhhzz-admin
│  └─src
│      ├─main
│      │  ├─java
│      │  │  └─com
│      │  │      └─tigerhhzz
│      │  │          └─admin
│      │  └─resources
│      └─test
│          └─java
│              └─com
│                  └─tigerhhzz
│                      └─admin
├─tigerhhzz-business
│  └─src
│      ├─main
│      │  └─java
│      │      └─com
│      │          └─tigerhhzz
│      │              └─business
│      └─test
│          └─java
│              └─com
│                  └─tigerhhzz
│                      └─business
├─tigerhhzz-common
│  └─src
│      └─main
│          └─java
│              └─com
│                  └─tigerhhzz
│                      └─common
├─tigerhhzz-core
│  └─src
│      └─main
│          └─java
│              └─com
│                  └─tigerhhzz
│                      └─core
├─tigerhhzz-generatorcode
│  └─src
│      ├─main
│      │  ├─java
│      │  │  └─com
│      │  │      └─tigerhhzz
│      │  │          └─generatorcode
│      │  │              ├─config
│      │  │              ├─controller
│      │  │              ├─domain
│      │  │              ├─mapper
│      │  │              ├─service
│      │  │              └─util
│      │  └─resources
│      │      └─mapper
│      └─test
│          └─java
│              └─com
│                  └─tigerhhzz
│                      └─generatorcode
└─tigerhhzz-web└─src├─main│  └─java│      └─com│          └─tigerhhzz│              └─web└─test└─java└─com└─tigerhhzz└─web

项目目录结构总览

在这里插入图片描述

三、各个模块作用说明

3.1 core 模块

应用概述: core 模块是整个项目的核心,专注于提供通用的配置和基础服务。主要功能: 可能包含 Spring Boot 的核心配置、通用的拦截器、全局异常处理等。角色定位: 不包含具体的业务逻辑,主要为其他模块提供基础设施。pom文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.tigerhhzz</groupId><artifactId>tigerhhzz-cloud</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.tigerhhzz.core</groupId><artifactId>tigerhhzz-core</artifactId><packaging>jar</packaging><name>tigerhhzz-core</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${springboot.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>${springboot.version}</version></dependency><!-- MyBatis-plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><!-- Mysql驱动包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql-connector-java.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><dependency><groupId>com.tigerhhzz.business</groupId><artifactId>tigerhhzz-business</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
</project>

3.2 common 模块

应用概述: common 模块用于存放通用的工具类和公共配置,为整个项目提供共享的基础。主要功能: 包含通用的工具方法、常量、公共配置等。角色定位: 不包含具体的业务逻辑,主要为其他模块提供通用功能。pom文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.tigerhhzz</groupId><artifactId>tigerhhzz-cloud</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.tigerhhzz.common</groupId><artifactId>tigerhhzz-common</artifactId><packaging>jar</packaging><name>tigerhhzz-common</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>${springboot.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId><version>${springboot.version}</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>${commons-lang.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency></dependencies>
</project>

3.3 generatorcode模块

应用概述: generatorcode模块可能是一个工具模块,用于生成代码或加速开发过程。主要功能: 可能包含代码生成器、模板引擎等,用于生成基础代码结构。
角色定位: 可能是一个开发辅助工具,用于提高代码生成的效率。pom文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.tigerhhzz</groupId><artifactId>tigerhhzz-cloud</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.tigerhhzz.generatorcode</groupId><artifactId>tigerhhzz-generatorcode</artifactId><packaging>jar</packaging><name>tigerhhzz-generatorcode</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>${velocity-engine-core}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><dependency><groupId>com.tigerhhzz.common</groupId><artifactId>tigerhhzz-common</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
</project>

3.4 business 模块

应用概述: business 模块是项目的业务核心,包含实际的业务逻辑和数据库访问。主要功能: 包含与业务相关的服务、领域逻辑、数据库访问(如 MyBatis、Redis)、业务配置等。角色定位: 为整个项目提供具体的业务功能,可能包括订单处理、用户管理等。pom文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.tigerhhzz</groupId><artifactId>tigerhhzz-cloud</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.tigerhhzz.business</groupId><artifactId>tigerhhzz-business</artifactId><packaging>jar</packaging><name>tigerhhzz-business</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><dependency><groupId>com.tigerhhzz.common</groupId><artifactId>tigerhhzz-common</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.tigerhhzz.web</groupId><artifactId>tigerhhzz-web</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
</project>

3.5 web 模块

应用概述: web模块可能是与第三方服务集成的模块,处理外部服务的调用和数据交互。主要功能: 包含与第三方服务通信的代码、集成配置等。角色定位: 为整个项目提供与外部系统的连接,可能包括支付网关、第三方 API 等。

pom文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.tigerhhzz</groupId><artifactId>tigerhhzz-cloud</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.tigerhhzz.web</groupId><artifactId>tigerhhzz-web</artifactId><packaging>jar</packaging><name>tigerhhzz-web</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><dependency><groupId>com.tigerhhzz.common</groupId><artifactId>tigerhhzz-common</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
</project>

3.6 admin 模块

应用概述: admin 模块可能是项目的管理界面,提供对系统的监控和管理功能。主要功能: 包含管理界面的业务逻辑、前端代码、可能的后台服务等。角色定位: 为管理员提供系统监控、用户管理等功能。pom文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.tigerhhzz</groupId><artifactId>tigerhhzz-cloud</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.tigerhhzz.admin</groupId><artifactId>tigerhhzz-admin</artifactId><packaging>jar</packaging><name>tigerhhzz-admin</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><dependency><groupId>com.tigerhhzz.core</groupId><artifactId>tigerhhzz-core</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.tigerhhzz.generatorcode</groupId><artifactId>tigerhhzz-generatorcode</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
</project>

3.7 父pom

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.tigerhhzz</groupId><artifactId>tigerhhzz-cloud</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><name>tigerhhzz-cloud</name><url>http://maven.apache.org</url><modules><module>tigerhhzz-admin</module><module>tigerhhzz-business</module><module>tigerhhzz-common</module><module>tigerhhzz-core</module><module>tigerhhzz-generatorcode</module><module>tigerhhzz-web</module></modules><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.8</java.version><aspectjrt.version>1.9.5</aspectjrt.version><javax.validation>2.0.1.Final</javax.validation><commons-beanutils.version>1.9.4</commons-beanutils.version><maven.compiler.plugin.version>3.7.0</maven.compiler.plugin.version><!-- spring --><springboot.version>2.3.2.RELEASE</springboot.version><spring-security-crypto.version>5.3.3.RELEASE</spring-security-crypto.version><spring.mvc.version>5.2.8.RELEASE</spring.mvc.version><!-- alibaba --><!--        <pandora-boot.version>2023-07-stable-hsf</pandora-boot.version>--><pandora-boot.version>2019-06-stable</pandora-boot.version><pandora.boot.maven.plugin.version>2.1.11.8</pandora.boot.maven.plugin.version><!-- 文件上传 --><aliyun-sdk-oss.version>3.10.2</aliyun-sdk-oss.version><!-- nacos --><nacos.client.version>1.2.0</nacos.client.version><nacos.config.spring.boot.starter.version>0.2.7</nacos.config.spring.boot.starter.version><com.alibaba.edas.acm.sdk.version>1.0.9</com.alibaba.edas.acm.sdk.version><!--  rabbitmq--><spring.boot.starter.amqp.version>2.3.1.RELEASE</spring.boot.starter.amqp.version><amqp.client.version>5.5.0</amqp.client.version><mq.amqp.client.version>1.0.5</mq.amqp.client.version><!-- redis --><redis.clients.jedis.version>2.9.3</redis.clients.jedis.version><shiro-redis.version>3.2.3</shiro-redis.version><!-- 序列化 --><com.caucho.hessian.version>4.0.63</com.caucho.hessian.version><gson.version>2.8.6</gson.version><!-- websocket --><org.java-websocket.version>1.5.1</org.java-websocket.version><!-- mybatis --><mysql-connector-java.version>8.0.21</mysql-connector-java.version><mybatis-plus.version>3.3.0</mybatis-plus.version><pagehelper.version>5.2.0</pagehelper.version><pagehelper-spring-boot-starter.version>1.3.0</pagehelper-spring-boot-starter.version><!-- shiro --><org.apache.shiro.version>1.5.3</org.apache.shiro.version><!-- tools --><lombok.version>1.16.20</lombok.version><commons-beanutils.version>1.9.3</commons-beanutils.version><easypoi-annotation.version>4.2.0</easypoi-annotation.version><poi.version>4.1.2</poi.version><swagger2.version>2.9.2</swagger2.version><models.version>1.6.2</models.version><annotations.version>1.6.2</annotations.version><guava.version>28.0-jre</guava.version><!--工具包--><hutool.version>5.5.9</hutool.version><commons-lang.version>3.9</commons-lang.version><velocity-engine-core>2.2</velocity-engine-core><!-- 模板引擎 --><org.freemarker.version>2.3.30</org.freemarker.version><!-- 参数校验 --><hibernate.validator.version>6.1.0.Final</hibernate.validator.version><!--        junit--><junit.version>4.13</junit.version><!-- netty版本 --><netty.all.version>4.1.6.Final</netty.all.version><!-- ip2region版本 --><ip2region.version>1.7.2</ip2region.version><!-- mapstruct版本 --><org.mapstruct.version>1.4.2.Final</org.mapstruct.version><!-- 阿里云短信版本 --><aliyun.sms.version>2.0.9</aliyun.sms.version><com.alibaba.easyexcel.version>3.1.4</com.alibaba.easyexcel.version><!-- xxl-job版本 --><xxl-job-version>2.3.0</xxl-job-version><!-- redisson版本 --><redisson-spring-boot.version>3.17.6</redisson-spring-boot.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies>
</project>

四、采用import引入SpringBoot

为什么采用import引入SpringBoot?

import 语句可以用于将其他 Maven 项目中的 POM 文件导入到当前项目中。

这样,可以实现模块化的项目管理。使用 import 语句导入其他项目的依赖时,可以在导入时指定版本,使得项目能够更加灵活地选择使用依赖的版本。可以将相关的模块组织到不同的 Maven 项目中,通过 import 在一个父项目中统一管理。这有助于更好地组织项目的结构。

在这里插入图片描述


在你停下来的时候,不要忘记别人还在后面奔跑,在你放弃的时候,不要忘记别人就在你的前面,只差一步而已。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS4+NEXT星河版入门与项目实战--------开发工具与环境准备

文章目录 1、熟悉鸿蒙官网1、打开官网2、下载 DevEco Studio3、HarmonyOS 资源库4、开发指南与API 2、安装 DevEco Studio1、软件安装2、配置开发工具 1、熟悉鸿蒙官网 1、打开官网 百度搜索 鸿蒙开发者官网 点击进入开发者官网&#xff0c;点击开发&#xff0c;可以看到各种…

单元测试、集成测试、系统测试、验收测试、压力测试、性能测试、安全性测试、兼容性测试、回归测试(超详细的分类介绍及教学)

目录 1.单元测试 实现单元测试的方法&#xff1a; 注意事项&#xff1a; 2.集成测试 需注意事项&#xff1a; 实现集成测试的方法&#xff1a; 如何实现高效且可靠的集成测试&#xff1a; 3.系统测试 实现系统测试的方法: 须知注意事项&#xff1a; 4.验收测试 实现验…

Ubuntu24 上安装搜狗输入法

link 首先在终端中依次输入以下代码 sudo apt update sudo apt install fcitx 找到语言支持 在终端中依次输入 sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/autostart/ sudo apt purge ibus 进入网页 搜狗输入法linux-首页​ shurufa.sogou.com/linux 找到刚才下…

FairyGUI和Unity联动(入门篇)

一、FairyGUI编辑器中 1.新建按钮、新建组件 编辑器中界面简易设计如下 2.文件-发布设置-发布路径&#xff1a;自己unity项目Resources所在的路径 二、Unity 使用代码展示UI using FairyGUI; using System.Collections; using System.Collections.Generic; using UnityEngi…

从系统崩溃到绝地反击:一次微服务存储危机的救赎

“怎么会这样&#xff1f;”凌晨两点&#xff0c;我盯着监控面板&#xff0c;心跳加速。用户请求像洪水猛兽般涌来&#xff0c;每一秒都在增加&#xff0c;而服务器却毫无回应。电梯般的访问量突如其来&#xff0c;仿佛一夜之间&#xff0c;我们的微服务系统被压入了崩溃的边缘…

推荐一个基于协程的C++(lua)游戏服务器

1.跨平台 支持win,mac,linux等多个操作系统 2.协程系统 使用汇编实现的上下文模块&#xff0c;C模块实现的协程调度器&#xff0c;使用共享栈&#xff0c;支持开启上千万协程&#xff0c;一个协程大概使用2000字节 3.rpc系统 强大的rpc系统&#xff0c;功能模块可以使用c或…

【Java知识】Java性能测试工具JMeter

一文带你了解什么是JMeter 概述JMeter的主要功能&#xff1a;JMeter的工作原理&#xff1a;JMeter的应用场景&#xff1a;JMeter的组件介绍&#xff1a; 实践说明JMeter实践基本步骤&#xff1a;JMeter实践关键点&#xff1a; JMeter支持哪些参数化技术&#xff1f;常见插件及其…

Redis的缓存穿透、缓存雪崩、缓存击穿问题及有效解决方案

目录 一、缓存穿透 1.简介 2.解决方案 3.修改前的代码 4.修改过后的代码 二、缓存雪崩 1.简介 2.解决方案 三、缓存击穿 1.简介 2.解决方案 3.用代码来实现互斥锁来解决缓存击穿 4.用代码来实现逻辑过期解决缓存击穿 四、缓存穿透和缓存击穿的区别 一、缓存穿透 …

Codeforces Round 987 (Div. 2) ABCD

链接&#xff1a; Codeforces Round 987 (Div. 2) A:Penchick and Modern Monument 大意&#xff1a; 单调非增序列操作多少步变成单调非减 思路&#xff1a; 最后的数一定是相同的&#xff0c;为出现次数最多的那个数&#xff0c;结果就是n减去出现次数最多的数 代码&…

CPU的性能指标总结(学习笔记)

CPU 性能指标 我们先来回顾下&#xff0c;描述 CPU 的性能指标都有哪些。 首先&#xff0c;最容易想到的应该是 CPU 使用率&#xff0c;这也是实际环境中最常见的一个性能指标。 用户 CPU 使用率&#xff0c;包括用户态 CPU 使用率&#xff08;user&#xff09;和低优先级用…

深度学习反向传播需要可导还是需要可微

针对这个问题&#xff0c; 我们先说结论&#xff0c; 在深度学习中&#xff0c;反向传播需要可导性&#xff0c;而不是严格的可微分性。这是因为反向传播的核心是计算损失函数相对于模型参数的导数&#xff08;梯度&#xff09;&#xff0c;以便通过梯度下降法进行参数更新。 …

【go从零单排】Environment Variables环境变量

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在 Go 语言中&#xff0c;环境变量是用于配置程序行为的一种常见方式。它们可以用…

信捷PLC转以太网连接电脑方法

信捷XC/XD/XL等系列PLC如何上下载程序?可以选择用捷米特JM-ETH-XJ模块轻松搞定,并不需要编程&#xff0c;即插即用&#xff0c;具体看见以下介绍&#xff1a; 产品介绍 捷米特JM-ETH-XJ是专门为信捷PLC转以太网通讯面设计&#xff0c;可实现工厂设备信息化需求&#xff0c;对…

面试篇-项目管理

⼀、构建管理 项目为什么选择Maven构建? 选择Maven进行项目构建有以下几个主要原因&#xff1a; 1. 依赖管理&#xff1a;Maven 提供了强大的依赖管理功能&#xff0c;可以自动下载项目所需的第三方库和依赖&#xff0c;并且可以管理这些依赖的版本、范围等信息。这简化了项…

【golang-技巧】-线上死锁问题排查-by pprof

1.背景 由于目前项目使用 cgo golang 本地不能debug, 发生死锁问题&#xff0c;程序运行和期待不一致&#xff0c;通过日志排查可以大概率找到 阻塞范围&#xff0c;但是不能找到具体问题在哪里&#xff0c;同时服务器 通过k8s daemonset 部署没有更好的方式暴露端口 获取ppr…

CentOS7.9 源码编译 FreeSWITCH 1.10.12

建议 CentOS7.9 最小安装&#xff0c;不然容易冲突 #!/bin/bash### 更换 repomkdir /root/repo mv /etc/yum.repos.d/*.repo /root/repocat <<"EOF" > /etc/yum.repos.d/ali.repo [base] nameCentOS-$releasever - Base - mirrors.aliyun.com failovermetho…

AVL树的删除方法简单实现

看过前面的AVL树的介绍和插入方法实现AVL树了解并简单实现-CSDN博客&#xff0c;接着可以来学习删除方法的实现 目录 1.AVL树的删除 2.平衡因子调节 3.删除代码逻辑 4.AVL树的整体代码 1.AVL树的删除 因为AVL树也是二叉搜索树&#xff0c;可按照二叉搜索树的方式将节点删除…

ArcGIS的汉字(亚洲文本)垂直标注

01 需求说明 实现ArcGIS的汉字&#xff08;亚洲文本的垂直标注&#xff09;。 启用 Maplex 标注引擎。 在标注 工具条上单击标注管理器按钮 。 选中要进行标注的图层旁边的复选框。 选择图层下方的标注分类。 单击符号。 选中 CJK 字符方向复选框。 仅当字体有垂直的文本度…

C#中 layout的用法

在C#中&#xff0c;layout并不是一个直接用于C#语言本身的关键字或特性。然而&#xff0c;layout在与C#紧密相关的某些上下文中确实有其用途&#xff0c;特别是在涉及用户界面&#xff08;UI&#xff09;设计和数据展示时。以下是几个常见的与layout相关的用法场景&#xff1a;…

ChatGPT登录失败的潜在原因分析

随着人工智能技术的迅速发展&#xff0c;ChatGPT作为一种强大的语言处理工具&#xff0c;已经成为许多用户日常生活中不可或缺的一部分。然而&#xff0c;部分用户在尝试登录时遇到困难&#xff0c;导致无法顺利访问该平台。这些问题可能来源于多种因素&#xff0c;其中静态住宅…