微服务dubbo和nexus
微服务是一种软件开发架构风格,它将一个应用程序拆分成一组小型、独立的服务,每个服务都可以独立部署、管理和扩展。每个服务都可以通过轻量级的通信机制(通常是 HTTP/REST 或消息队列)相互通信。微服务架构追求高内聚、低耦合,使开发团队能够更加灵活地开发、测试和部署独立的功能模块。
服务治理是指在微服务架构中,对服务的管理、监控、调度和协调的一系列实践和工具。它包括服务注册与发现、负载均衡、故障转移、容错处理等,以确保微服务架构能够弹性扩展、容错恢复、高可用性。服务治理可以通过使用服务注册中心、负载均衡器、断路器等技术来实现。它提供了一种集中管理和控制微服务的方式,使整个系统具备更好的弹性和高可用性。
环境
zk是之前的环境
192.168.74.70 zk
192.168.74.71 zk
192.168.74.72 zk
192.168.74.67 provider
192.168.74.66 consumer
安装java环境
apt install openjdk-11-jdk -y
先启动生产者
上传dubbo-demo-provider-2.1.5-assembly.tar.gz
解压移动
mv dubbo-demo-provider-2.1.5 /usr/local/dubbo-demo-provider
修改配置,添加zookeeper配置,注释multicast
/usr/local/dubbo-demo-provider-2.1.5/conf# vi dubbo.properties
dubbo.container=log4j,spring
dubbo.application.name=demo-provider
dubbo.application.owner=
dubbo.registry.address=multicast://224.5.6.7:1234
dubbo.registry.address=zookeeper://192.168.74.70:2181 | zookeeper://192.168.74.71:2181 zookeeper://192.168.74.72:2181
#dubbo.registry.address=redis://127.0.0.1:6379
#dubbo.registry.address=dubbo://127.0.0.1:9090
dubbo.monitor.protocol=registry
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.log4j.file=logs/dubbo-demo-provider.log
dubbo.log4j.level=WARN
启动
root@node4:/usr/local/dubbo-demo-provider-2.1.5# ./bin/start.sh
查看日志
cat logs/stdout.log [1.480s][warning][exceptions] Class com.alibaba.dubbo.common.URL in throws clause of method com.alibaba.dubbo.remoting.Server com.alibaba.dubbo.remoting.Transporter_Adpative.bind(com.alibaba.dubbo.common.URL, com.alibaba.dubbo.remoting.ChannelHandler) is not a subtype of class java.lang.Throwable
[2023-08-27 23:15:15] Dubbo service server started!
zk工具查看已经注册成功

zk就有了生产者地址
配置消费者
安装jdk
apt install openjdk-11-jdk
上传包并解压
tar -xf dubbo-demo-consumer-2.1.5-assembly.tar.gz -C /usr/local/
配置zookeeper地址
root@node3:~# vim /usr/local/dubbo-demo-provider/conf/dubbo.propertiesdubbo.container=log4j,spring
dubbo.application.name=demo-consumer
dubbo.application.owner=
#dubbo.registry.address=multicast://224.5.6.7:1234
dubbo.registry.address=zookeeper://192.168.74.70:2181 | zookeeper://192.168.74.71:2181 | zookeeper://192.168.74.72:2181
#dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo.registry.address=redis://127.0.0.1:6379
#dubbo.registry.address=dubbo://127.0.0.1:9090
dubbo.monitor.protocol=registry
dubbo.log4j.file=logs/dubbo-demo-consumer.log
dubbo.log4j.level=WARN
启动
root@node3:~/dubbo-demo-consumer-2.1.5# ./bin/start.sh

消费者启动不了
Caused by: java.lang.IllegalStateException: Failed to check the status of the service com.alibaba.dubbo.demo.DemoService. No provider available for the service com.alibaba.dubbo.demo.DemoService from the url registry://192.168.74.72:2181/com.alibaba.dubbo.registry.RegistryService?application=demo-consumer&cluster=available&dubbo=2.1.5&pid=3467&refer=application%3Ddemo-consumer%26dubbo%3D2.1.5%26interface%3Dcom.alibaba.dubbo.demo.DemoService%26methods%3DsayHello%26monitor%3Ddubbo%253A%252F%252F192.168.74.72%253A2181%252Fcom.alibaba.dubbo.registry.RegistryService%253Fapplication%253Ddemo-consumer%2526dubbo%253D2.1.5%2526pid%253D3467%2526protocol%253Dregistry%2526refer%253Ddubbo%25253D2.1.5%252526interface%25253Dcom.alibaba.dubbo.monitor.MonitorService%252526pid%25253D3467%252526timestamp%25253D1693150000307%2526registry%253Dzookeeper%2526timestamp%253D1693150000302%26pid%3D3467%26revision%3D2.1.5%26timestamp%3D1693149990218®istry=zookeeper×tamp=1693150000302 to the consumer 192.168.1.220 use dubbo version 2.1.
.2023-08-27 23:42:02,889 [main] ERROR com.alibaba.dubbo.remoting.transport.AbstractClient (AbstractClient.java:111) - [DUBBO] Failed to start NettyClient node3/192.168.74.66 connect to the server /192.168.1.220:20880 (check == false, ignore and retry later!), cause: client(url: dubbo://192.168.1.220:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-consumer&check=false&codec=dubbo&dubbo=2.1.5&heartbeat=60000&interface=com.alibaba.dubbo.demo.DemoService&loadbalance=roundrobin&methods=sayHello&monitor=dubbo%3A%2F%2F192.168.74.70%3A2181%2Fcom.alibaba.dubbo.registry.RegistryService%3Fapplication%3Ddemo-consumer%26dubbo%3D2.1.5%26pid%3D4732%26protocol%3Dregistry%26refer%3Ddubbo%253D2.1.5%2526interface%253Dcom.alibaba.dubbo.monitor.MonitorService%2526pid%253D4732%2526timestamp%253D1693150921489%26registry%3Dzookeeper%26timestamp%3D1693150921477&pid=4732&revision=2.1.5×tamp=1693150921416) failed to connect to server /192.168.1.220:20880, error message is:connection timed out, dubbo version: 2.1.5, current host: 192.168.74.66
查看日志连不不上zk
首先telnet zk 地址发现能通
再次查看日志说在连接192.168.1.220 erro
因为配置了二个网卡 eth0 为192.168.1.0/24
eth1为192.168.74.0/24,zk和生产者都是74网段,但却走了eth0网卡,在消费者和生产者禁用eth0网卡后重启正常

chatgpt 方法
根据错误信息,导致这个异常的原因是服务中心中没有可用的提供者(provider)来提供名为 "com.alibaba.dubbo.demo.DemoService" 的服务。下面是一些可能的原因:1. 服务提供者没有正确启动或注册到服务中心。
2. 服务中心(zookeeper)的地址或配置不正确,导致注册失败。
3. 消费者端的网络连接问题,无法和服务中心进行通信。
4. 消费者端的版本不匹配,可能与服务端版本不兼容。要解决这个问题,你可以尝试以下步骤:1. 检查服务提供者是否已经正确启动,并确保它已经成功注册到服务中心。
2. 检查服务中心的地址和配置是否正确,确保消费者能够正确连接到服务中心。
3. 检查网络连接是否正常,确保消费者和服务中心之间能够相互通信。
4. 确保消费者端使用的 Dubbo 版本与提供者端一致,或者尝试更新消费者端的版本以解决兼容性问题。如果问题仍然存在,请根据具体情况进行进一步的调试和排查。
再启动一个生产者
消费者会轮询调用生产者,
生产者挂了,会取消调用挂了的生产者
dubboadmin
机器 192.168.74.68
下载上传tomcat
root@ubuntu20:/apps# tar -xf apache-tomcat-9.0.59.tar.gz
root@ubuntu20:/apps# ls
进入webapps目录
root@ubuntu20:/apps/apache-tomcat-9.0.59/webapps#
上传dubboadmin.war解压
mv /apps/dubboadmin.war .root@ubuntu20:/apps/apache-tomcat-9.0.59/webapps# unzip dubboadmin.war 修改配置添加zk集群地址
cat /apps/apache-tomcat-9.0.59/webapps/dubboadmin/WEB-INF/dubbo.properties
dubbo.registry.address=zookeeper://192.168.74.70:2181| zookeeper://192.168.74.71:2181 | zookeeper://192.168.74.72:2181
dubbo.admin.root.password=root #登录用户和密码均为root
dubbo.admin.guest.password=guest
启动
root@node4:/apps/apache-tomcat-9.0.59# ./bin/catalina.sh start

java
专栏收录该内容
18 篇文章0 订阅
订阅专栏
dubbo-admin访问报404的错误主要有三方面:
1、zookeeper,没有提前启动;
2、防火墙没有关闭;
3、jdk版本过高,dubbo-admin不匹配;
这里主要针对第三个(版本不匹配进行讲解)进行讲解:
前提条件:1、zookeeper安装完毕;2、jdk8安装完毕;3、Tomcat安装完毕;4、maven安装完毕;参考: https://blog.csdn.net/weixin_38313970/article/details/89814286/
我这里dubbo版本2.1.5,排查后是jdk版本过高,
apt autoremove openjdk-11-jdk
apt install openjdk-8-jdk

路径问题,加dubboadmin

微服务编译
机器 192.168.74.69
#Github 地址:
https://github.com/apache/dubbo-admin/blob/develop/README_ZH.md
如果遇到了网络问题,可以设置npm代理镜像来加速npm install的过程:
在~/.npmrc中增加 registry=https://registry.npmmirror.com
root@node6:~# cat .npmrc
registry=https://registry.npmmirror.com
下载代码
root@node6:~# apt install git
git clone https://github.com/apache/dubbo-admin.git
- 在 dubbo-admin-server/src/main/resources/application.properties中指定注册中心地址,我这里写一个地址
root@node6:~/dubbo-admin# vim dubbo-admin-server/src/main/resources/application.properties
admin.registry.address=zookeeper://192.168.71.70:2181
admin.config-center=zookeeper://192.168.74.71:2181
admin.metadata-report.address=zookeeper://192.168.74.71:2181
3.安装maven 编译
apt install maven -y
root@server02:~# mvn -v
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.20, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-73-generic", arch: "amd64", family: "unix"
配置为阿里云镜像,就会去阿里云下载maven包
vi /etc/maven/settings.xml<mirror><id>aliyun</id><name>Aliyun Maven Mirror</name><url>https://maven.aliyun.com/repository/public</url><mirrorOf>central</mirrorOf>
</mirror>
mvn clean package -Dmaven.test.skip=true
编译报错
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /root/dubbo-admin/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/SwaggerConfiguration.java:[29,52] cannot find symbolsymbol: class EnableSwagger2location: package springfox.documentation.swagger2.annotations
[ERROR] /root/dubbo-admin/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/SwaggerConfiguration.java:[32,2] cannot find symbolsymbol: class EnableSwagger2
[INFO] 2 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for dubbo-admin 0.5.0-SNAPSHOT:
[INFO]
[INFO] dubbo-admin ........................................ SUCCESS [01:20 min]
[INFO] dubbo-admin-ui ..................................... SUCCESS [01:28 min]
[INFO] dubbo-admin-server ................................. FAILURE [ 11.558 s]
[INFO] dubbo-admin-distribution ........................... SKIPPED
[INFO] dubbo-admin-test ................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:00 min
[INFO] Finished at: 2023-08-29T10:14:30+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.0:compile (default-compile) on project dubbo-admin-server: Compilation failure: Compilation failure:
[ERROR] /root/dubbo-admin/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/SwaggerConfiguration.java:[29,52] cannot find symbol
[ERROR] symbol: class EnableSwagger2
[ERROR] location: package springfox.documentation.swagger2.annotations
[ERROR] /root/dubbo-admin/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/SwaggerConfiguration.java:[32,2] cannot find symbol
[ERROR] symbol: class EnableSwagger2
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <args> -rf :dubbo-admin-server
chatgpt
这个错误是由于在你的代码中找不到"EnableSwagger2"类引起的。"EnableSwagger2"是一个注解,用于启用Swagger API文档生成。在你的代码中,可能缺少了相关的依赖或者没有正确导入该注解所在的包。要解决这个问题,你可以尝试以下几个步骤:1. 确保你的项目中已经添加了Swagger相关的依赖。你可以在项目的pom.xml文件中查看是否包含了正确的依赖配置。2. 检查你的代码中是否正确导入了"EnableSwagger2"注解所在的包。你可以在代码中添加import语句来导入该注解所在的包。3. 如果以上步骤都没有解决问题,你可以尝试更新或更换"Maven Compiler Plugin"的版本。有时候,不同版本的插件可能会导致编译错误。希望这些步骤能够帮助你解决这个编译错误。如果问题仍然存在,请提供更多的错误信息或代码片段,以便我能够更好地帮助你
。根据你提供的代码文件,我可以看到你已经在`SwaggerConfiguration`类上使用了`@EnableSwagger2`注解来启用Swagger API文档生成。这意味着你的代码已经正确导入了`EnableSwagger2`注解所在的包。在你的代码中,你可以看到以下import语句:```java
import org.springframework.context.annotation.EnableSwagger2;
这个import语句导入了EnableSwagger2注解所在的包。因此,你的代码已经正确导入了该注解所在的包。
如果你仍然遇到关于EnableSwagger2类找不到的错误,请确保你的项目中已经添加了正确的依赖,并且依赖的版本与你的代码兼容。你可以检查项目的pom.xml文件中是否包含了类似以下的依赖配置:
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version>
</dependency>
希望这能帮助你理解如何在代码中导入EnableSwagger2注解所在的包。如果你还有其他问题,请随时提问。
怎么区分环境
sed
配置文件地址写好
目前的java服务,大部分是通过maven编译
1.16C32G 配置jdk环境
2.安装maven
3.结合jenkins编译
4. 将编译好的jar包进行代码部署(target目录下),k8s环境要重新打镜像
nexus
wget https://download.sonatype.com/nexus/3/nexus-3.59.0-01-unix.tar.gz
root@server02:/apps# ln -sf /apps/nexus-3.59.0-01 /apps/nexus
相关文章:
微服务dubbo和nexus
微服务是一种软件开发架构风格,它将一个应用程序拆分成一组小型、独立的服务,每个服务都可以独立部署、管理和扩展。每个服务都可以通过轻量级的通信机制(通常是 HTTP/REST 或消息队列)相互通信。微服务架构追求高内聚、低耦合&am…...
uView1.0的Upload组件上传图片
<template><u-uploadref"uUpload":file-list"fileList"accept"image/jpeg,image/png" //允许选择图片文件:sizeType"sizeType":max-size"2 * 1024 * 1024" //限制上传的图片文件最大为 2Moversize"over…...
【LeetCode题目详解】第九章 动态规划part03 343. 整数拆分 96.不同的二叉搜索树 (day41补)
本文章代码以c为例! 一、力扣第343题:整数拆分 题目: 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输…...
半导体制造常用软件工具总结
半导体制造常用软件工具总结 CIM:Computer Integrated Manufacturing 设备自动化,总称MES:Manufacturing Execution System 制造执行系统EAP:Equipment Automation Programming 设备自动化,是MES与设备的桥梁APC&…...
基于Python的IOS自动化测试环境搭建
文章目录 一、测试架构介绍1.1 WebDriverAgent原理分析1.2 tidevice原理分析二、环境安装2.1 iOS 设备安装 WebDriverAgent2.2 安装iTunes2.3 安装tidevice2.4 安装facebook-wda自动化三、操作流程四、Weditor的安装和使用一、测试架构介绍 以下为测试架构原理图 手机端的WDA…...
技术领导力实战笔记25
25|用心做好“鼓励式”管理 激发正能量 授权 分工作: 老人干新事,新人干老事,强者干难事,弱者干细事 新人干老事 所谓新人,是对业务产品不了解,对工作流程不清晰的岗位新人。对于新人来说&…...
设计模式-职责链+反射
文章目录 前言简单版本的职责链加反射职责链反射思路过程总结 前言 最近学习设计模式对于职责链的学习有了一些深入的了解故此有了这篇博客 简单版本的职责链加反射 职责链模式(Chain of Responsibility Pattern)和反射(Reflection&#x…...
Middleware ❀ Kafka功能与使用详解
文章目录 1. 概述1.1. 消息队列1.2. 应用场景1.3. 工作模式1.4. 基础结构1.4.1. 结构组件1.4.2. 数据同步1.4.3. ACK机制1.4.4. 分区机制1.4.4.1. 使用Partition Key写入1.4.4.2. 轮询写入 - 默认规则1.4.4.3. 指定Partition写入 1.4.5. Offset偏移量1.4.5.1. 消息顺序性1.4.5.…...
python3.11教程1:python基础语法、程序控制、函数
文章目录 一、Python简介1.1 为什么学习python1.2 python安装与配置1.3 python解释器1.4 命令行参数1.4.1 sys.argv变量1.4.2 -c和-m选项 1.5 解释器的运行环境1.5.1 编码格式1.5.2 编码声明 二、Python基础语法2.1 行结构2.2 变量(标识符)2.3 字节串2.4…...
【C++】关于using namepace xxx 使用命名空间和冲突
官方定义 namespace是指 标识符的各种可见范围。命名空间用关键字namespace来定义。 命名空间是C的一种机制,用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。此标识符作为此组群的名字。 基本使用 编译及执行命令: g test.cpp -o test ./…...
Linux常用命令——cupsenable命令
在线Linux命令查询工具 cupsenable 启动指定的打印机 补充说明 cupsenable命令用于启动指定的打印机。 语法 cupsenable(选项)(参数)选项 -E:当连接到服务器时强制使用加密; -U:指定连接服务器时使用的用户名; -uÿ…...
基于Stable Diffusion的AIGC服饰穿搭实践
本文主要介绍了基于Stable Diffusion技术的虚拟穿搭试衣的研究探索工作。文章展示了使用LoRA、ControlNet、Inpainting、SAM等工具的方法和处理流程,并陈述了部分目前的实践结果。通过阅读这篇文章,读者可以了解到如何运用Stable Diffusion进行实际操作&…...
【 ARMv9 Cluster BUS QoS 配置】
文章目录 ARM Cluster QoS ARM Cluster QoS QoS(Quality of Service,服务质量)在 ARM 架构中,主要指的是一种机制,它可以控制和管理系统资源(如内存、总线带宽等)的使用,以满足各种…...
简单了解网络基本概念
目录 一、网络含义 二、什么是以太网? 三、网络分类 四、网络架构 五、数据传输方式 六、双工模式 一、网络含义 在实际生活中我们用传输介质把独立的终端设备相互连接起来就构成了网络。 二、什么是以太网? 以太网是一种网络通信协议标准&#…...
网络安全知识库
0x00 前言 本篇用来整理所有的零散的知识,作为一个技能树或者技能表来进行引导 CTF 加解密合集CTF Web合集 0x01 Http 1.http头 1.1 本地访问识别 如何伪造http头,让后端认为是本地访问...
无涯教程-JavaScript - FLOOR函数
描述 FLOOR函数将数字向下舍入为零,直到最接近的有效倍数。 语法 FLOOR (number, significance)争论 Argument描述Required/OptionalNumberThe numeric value you want to round.RequiredSignificanceThe multiple to which you want to round.Required Notes 如果数字的符…...
【LeetCode-中等题】146. LRU 缓存
文章目录 题目方法一:直接继承LinkedHashMap调用api方法二:自定义LinkedHashMap HashMap ListNode LinkedHashMap 题目 LRU缓存是什么:LRU缓存机制,你想知道的这里都有 实现 LRU 缓存算法 方法一:直接继承Linked…...
表白墙程序
目录 一、页面代码部分 二、设计程序 二、实现 doPost编辑 三、实现 doGet 四、前端代码部分 五、使用数据库存储数据 一、页面代码部分 在之前的一篇博客中,已经写过了表白墙的页面代码实现,这里就不再重复了 页面代码如下: <!…...
git 本地仓库关联到远程仓库
将本地仓库关联到远程仓库 方式一:远程仓库没有文件 第一步: git init(初始化git仓库) 第二步: git remote add 地址(设置remote地址) 第三步: git add . (将所有变…...
Introducing Language Guidance in Prompt-based Continual Learning
本文是LLM系列文章,针对《Introducing Language Guidance in Prompt-based Continual Learning》的翻译。 基于提示的持续学习中引入语言指导 摘要1 引言2 相关工作3 背景4 基于提示的持续学习语言指导5 实验6 结论 摘要 持续学习旨在学习一系列任务的单一模型&am…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
