当前位置: 首页 > news >正文

关于 微服务中服务注册与发现 的详细说明,涵盖主流框架/解决方案的对比、核心功能、配置示例及总结表格

以下是关于 微服务中服务注册与发现 的详细说明,涵盖主流框架/解决方案的对比、核心功能、配置示例及总结表格:
在这里插入图片描述


1. 服务注册与发现的核心概念

服务注册与发现是微服务架构的基础能力,主要解决以下问题:

  • 服务注册:服务实例启动时向注册中心注册自己的元数据(如 IP、端口、健康状态)。
  • 服务发现:消费者通过注册中心动态获取服务提供者的地址,实现负载均衡和故障转移。
  • 健康检查:定期检查服务实例的健康状态,剔除不可用实例。
  • 动态扩展:支持水平扩展,新增实例自动注册,删除实例自动下线。

2. 主流服务注册与发现框架/解决方案对比

2.1 Spring Cloud Netflix Eureka

特点

  • 成熟稳定:Spring Cloud 生态早期核心组件。
  • 简单易用:开箱即用,与 Spring Cloud 深度集成。
  • 维护状态:维护已停止,逐步被 Nacos 等替代。

配置示例

# 服务提供者配置(application.yml)
spring:application:name: user-servicecloud:consul:enabled: false# Eureka 配置eureka:client:service-url:defaultZone: http://localhost:8761/eureka/health-check-url: http://localhost:${server.port}/actuator/healthinstance:prefer-ip-address: true# 服务消费者配置(通过 Feign 或 RestTemplate 调用)
@Bean
public RestTemplate restTemplate() {return new RestTemplate();
}

2.2 Spring Cloud Alibaba Nacos

特点

  • 阿里生态首选:支持服务注册发现、配置中心、动态 DNS。
  • 高性能:支持大规模集群,多数据中心部署。
  • 动态元数据:可自定义服务元数据(如版本、环境)。

配置示例

# 服务提供者配置(application.yml)
spring:application:name: user-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848metadata:version: 1.0.0  # 自定义元数据# 服务消费者配置(通过 @LoadBalanced RestTemplate)
@Bean
@LoadBalanced
public RestTemplate restTemplate() {return new RestTemplate();
}

2.3 Consul

特点

  • 强一致性:基于 Raft 协议,支持多数据中心。
  • 健康检查:内置 HTTP/脚本/TCP 健康检查。
  • Key-Value 存储:支持动态配置存储。

配置示例

# 启动 Consul 服务器
consul agent -server -bootstrap-expect=1 -data-dir=/tmp/consul -bind=127.0.0.1# 应用配置(通过 Spring Cloud Consul)
spring:cloud:consul:host: localhostport: 8500discovery:health-check-path: /actuator/healthprefer-ip-address: true

2.4 ZooKeeper

特点

  • 分布式协调工具:支持服务发现,需自行实现逻辑。
  • 高性能:适合大规模分布式系统。
  • 无内置健康检查:需结合 Curator 客户端实现。

配置示例

// 服务注册示例(使用 Curator 客户端)
CuratorFramework client = CuratorFrameworkFactory.newClient("127.0.0.1:2181", new ExponentialBackoffRetry(1000, 3));
client.start();
client.create().creatingParentsIfNeeded().forPath("/services/user-service/" + instanceId);

2.5 etcd

特点

  • 分布式键值存储:支持服务发现,需自行实现逻辑。
  • 高可用:基于 Raft 协议,支持多集群。
  • 轻量级:适合容器化环境。

配置示例

# 启动 etcd 集群
etcd --name node1 --data-dir /var/etcd/data --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://localhost:2379# 服务注册(通过 HTTP API)
curl -X PUT http://localhost:2379/v3/kv/services/user-service/instance-1 -d '{"value": "http://192.168.1.10:8080"}'

2.6 Kubernetes Service Discovery

特点

  • 云原生集成:基于 Kubernetes 的 DNS 或环境变量。
  • 无中心化:通过 CoreDNS 或 Endpoints 实现。
  • 容器化优先:适合 Kubernetes 原生部署。

配置示例

# Kubernetes Deployment 示例
apiVersion: v1
kind: Service
metadata:name: user-service
spec:selector:app: user-serviceports:- protocol: TCPport: 80targetPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:name: user-service
spec:replicas: 3selector:matchLabels:app: user-servicetemplate:metadata:labels:app: user-servicespec:containers:- name: user-serviceimage: user-service:latestports:- containerPort: 8080

2.7 Apache Dubbo

特点

  • 高性能 RPC 框架:支持 ZooKeeper/Nacos 作为注册中心。
  • 轻量级:适合 Java 生态,性能优于 Spring Cloud。
  • 灵活扩展:可自定义注册中心实现。

配置示例(使用 Nacos)

dubbo:registry:address: nacos://127.0.0.1:8848protocol:name: dubboport: 20880

2.8 HashiCorp Nomad

特点

  • 作业调度与服务发现:与 Consul 集成,适合混合云环境。
  • 声明式配置:通过 HCL 定义服务发现规则。

配置示例(Nomad Job 文件)

job "user-service" {datacenters = ["dc1"]group "service" {count = 3network {port "http" {to = 8080}}service {name = "user-service"port = "http"check {type     = "http"path     = "/actuator/health"interval = "10s"timeout  = "2s"}}}
}

2.9 AWS Cloud Map

特点

  • 云原生集成:与 AWS ECS、Lambda 等服务深度集成。
  • 多协议支持:兼容 DNS、HTTP 等发现方式。
  • 托管服务:无需自行维护注册中心。

配置示例(AWS CLI)

aws servicediscovery create-service \--name user-service \--dns-config '{"NamespaceId": "ns-123", "DnsRecordType": "A", "TTL": "30"}' \--health-check-custom-resource-type "AWS_EC2_INSTANCE"

3. 核心功能对比表格

框架/方案服务发现机制健康检查多数据中心支持配置中心集成部署复杂度社区活跃度适用场景
Spring Cloud Eureka客户端心跳+服务器集群自定义 HTTP 检查支持(需配置)中等逐渐衰退过渡期项目,需兼容旧系统
Spring Cloud Nacos客户端心跳+服务端集群自定义 HTTP/脚本原生支持内置非常活跃新项目,阿里云生态
Consul客户端心跳+服务端集群内置 HTTP/TCP/脚本原生支持内置 Key-Value中等活跃强一致性需求,多数据中心场景
ZooKeeper客户端心跳+临时节点需自定义实现需集群部署高(需自行实现逻辑)活跃需高性能协调服务的分布式系统
etcd客户端心跳+Watch 机制需自定义实现原生支持高(需自行实现逻辑)活跃需轻量级键值存储的分布式系统
KubernetesDNS 或环境变量原生 Liveness/Readiness 探针支持多集群ConfigMap低(与 Kubernetes 生态集成)非常活跃容器化部署,云原生架构
Dubbo客户端心跳+注册中心自定义 HTTP 检查支持(需配置)中等活跃高性能 Java 微服务架构
Nomad + ConsulNomad 调度+Consul 发现Consul 内置检查原生支持Consul Key-Value高(需配合 Nomad)活跃混合云环境,需统一调度与发现
AWS Cloud MapAWS 内置服务发现AWS 健康检查AWS 多区域支持AWS Systems Manager低(托管服务)活跃AWS 云原生环境

4. 核心功能详解

4.1 服务注册发现机制
  • Eureka:客户端周期性发送心跳,服务端集群通过 REST API 同步状态。
  • Nacos:客户端心跳 + 服务端集群,支持动态 DNS 和 HTTP API。
  • Consul:基于 Raft 协议的强一致性集群,支持多数据中心同步。
  • Kubernetes:通过 CoreDNS 或环境变量暴露服务 IP。
4.2 健康检查
  • Eureka:自定义 HTTP/HTTPS 端点(如 /actuator/health)。
  • Consul:支持 HTTP/TCP/脚本检查,失败自动剔除实例。
  • Kubernetes:通过 Liveness/Readiness 探针自动管理实例状态。
4.3 多数据中心支持
  • Nacos:通过 cluster 配置实现跨数据中心流量路由。
  • Consul:原生支持多数据中心,数据同步通过 gossip 协议。
  • AWS Cloud Map:基于 AWS 区域实现多区域服务发现。

5. 典型场景代码示例

5.1 Spring Cloud Nacos

服务提供者配置

spring:application:name: user-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848metadata:version: 1.0.0

服务消费者调用

@Autowired
private DiscoveryClient discoveryClient;public User getUser() {List<ServiceInstance> instances = discoveryClient.getInstances("user-service");if (!instances.isEmpty()) {ServiceInstance instance = instances.get(0);return restTemplate.getForObject(instance.getUri() + "/users/1", User.class);}return null;
}
5.2 Consul

健康检查配置

spring:cloud:consul:discovery:health-check-path: /actuator/healthhealth-check-interval: 10shealth-check-timeout: 2s
5.3 Kubernetes Service

Service 定义

apiVersion: v1
kind: Service
metadata:name: user-service
spec:selector:app: user-serviceports:- protocol: TCPport: 80targetPort: 8080type: ClusterIP

6. 选择建议

需求场景推荐方案原因
Spring Cloud 生态Nacos完整的 Spring Cloud 集成,阿里生态支持,动态配置与服务发现一体化。
多语言微服务Consul 或 KubernetesConsul 支持多语言健康检查,Kubernetes 原生支持多语言容器。
云原生部署(如 AWS/Azure)AWS Cloud Map 或 Azure Service Fabric托管服务,与云平台深度集成。
高性能需求etcd 或 ZooKeeper低延迟,适合对性能敏感的场景。
容器化部署Kubernetes Service原生支持,无需额外注册中心,与容器编排无缝集成。

7. 总结表格

框架/方案协议数据一致性性能学习成本适用场景
Spring Cloud EurekaREST API最终一致中等过渡期项目,需兼容旧系统
Spring Cloud NacosHTTP + DNS强一致新项目,阿里云生态
ConsulHTTP + DNS强一致中等多数据中心,混合云环境
ZooKeeperZooKeeper 协议强一致高(需自行实现逻辑)需分布式协调的复杂系统
etcdgRPC强一致非常高需高性能键值存储的分布式系统
KubernetesDNS/API强一致非常高中等容器化部署,云原生架构
Dubbo自定义协议最终一致非常高中等高性能 Java 微服务架构
Nomad + ConsulHTTP强一致中等混合云环境,需统一调度与发现
AWS Cloud MapAWS 内置协议强一致非常高AWS 云原生环境

8. 注意事项

  1. Eureka 的替代方案:由于 Eureka 维护停止,建议迁移到 Nacos 或 Consul。
  2. Kubernetes 原生方案:适合容器化部署,无需额外注册中心。
  3. Consul 的多数据中心:需配置 datacenteracl 权限。
  4. Nacos 的动态 DNS:支持通过域名直接访问服务(如 user-service.nacos)。
  5. 性能与一致性:etcd 和 Consul 基于 Raft,适合对一致性要求高的场景。

通过以上对比,开发者可根据项目需求选择最适合的方案。对于新项目,Spring Cloud NacosConsul 是主流选择;容器化环境推荐 Kubernetes Service;多云或多数据中心场景建议 ConsulAWS Cloud Map

相关文章:

关于 微服务中服务注册与发现 的详细说明,涵盖主流框架/解决方案的对比、核心功能、配置示例及总结表格

以下是关于 微服务中服务注册与发现 的详细说明&#xff0c;涵盖主流框架/解决方案的对比、核心功能、配置示例及总结表格&#xff1a; 1. 服务注册与发现的核心概念 服务注册与发现是微服务架构的基础能力&#xff0c;主要解决以下问题&#xff1a; 服务注册&#xff1a;服…...

Tiny Cluster(1)——搭建树莓派小型计算集群

1 硬件说明 1.1 软硬件环境 k8s-master-0192.168.5.78Debian 12树莓派58G / 4核 / 64G TF卡 & 512G SSD控制节点k8s-worker-0192.168.5.48Debian 12树莓派4B4G / 4核 / 64G TF卡工作节点k8s-worker-1192.168.5.16Debian 11BTT-CB11G / 4核 / 64G TF卡工作节点 实现 K8s …...

【软考系统架构设计师】信息安全技术基础

1、 信息安全包括5个基本要素&#xff1a;机密性、完整性、可用性、可控性与可审查性。 机密性&#xff1a;确保信息不暴露给未授权的实体或进程。&#xff08;采取加密措施&#xff09; 完整性&#xff1a;只有得到允许的人才能修改数据&#xff0c;并且能够判断出数据是否已…...

CCF CSP 第35次(2024.09)(2_字符串变换_C++)(哈希表+getline)

CCF CSP 第35次&#xff08;2024.09&#xff09;&#xff08;2_字符串变换_C&#xff09; 解题思路&#xff1a;思路一&#xff08;哈希表getline&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一&#xff08;哈希表getline&#xff09;&#xff09;&#xff1a; …...

oracle怎么查看是否走了索引

SELECT * FROM CRM_STATION_APPEAL_RESULT WHERE COMPLAINT_ID ce1a1d8f-e2a2-4126-8cb7-14384cb24468; 这是查询语句&#xff0c;怎么看这个查询是否走了索引呢 EXPLAIN PLAN FOR SELECT * FROM CRM_STATION_APPEAL_RESULT WHERE COMPLAINT_ID ce1a1d8f-e2a2-4126-8cb7-14…...

八股系列(分布式与微服务)持续更新!

八股系列&#xff08;分布式与微服务&#xff09; 分布式系统的概念 分布式系统是由多个节点组成&#xff0c;节点之间通过网络协议传递数据&#xff0c;对外表现为一个统一的整体&#xff0c;一个节点可以是一台机器或一个进程&#xff1b;分布式系统的核心功能 资源共享&…...

19【动手学深度学习】卷积层

1. 从全连接到卷积 2. 图像卷积 3. 图形卷积代码 互相关操作 import torch from torch import nn from d2l import torch as d2ldef corr2d(X, K):"""计算2维互相关运算"""h, w K.shapeY torch.zeros((X.shape[0]-h1, X.shape[1]-w 1))for …...

Linux基础9

一、日志管理 > 日志配置文件&#xff1a; > > ​ /var/log/messages #内核的消息以及各种服务的公共信息 > > ​ /var/log/dmesg #系统启动过程信息 > > ​ /var/log/cron #cron计划任务相关信息 > > ​ /var…...

[创业之路-366]:投资尽职调查 - 尽调核心逻辑与核心影响因素:价值、估值、退出、风险、策略

目录 一、VC投资的本质是冒着不确定性风险进行买卖、生意&#xff0c;为了赚取高额回报 1、VC投资的核心本质 2、VC投资的运作机制 3、VC投资的风险与挑战 4、VC投资的底层逻辑 5、总结&#xff1a;VC投资的本质再定义 二、尽调核心逻辑 1、尽调的含义 2、尽调的逻辑方…...

Raymarching Textures In Depth

本节课最主要的就是学会hlsl中使用纹理采样 float4 color Texture2DSample(Texobj, TexobjSampler, uv); return color; 课程中的代码&#xff08;没有这张图我就没做&#xff09; 课程代码产生深度的原因是uv偏移&#xff0c;黑色区域会不断向左偏移&#xff0c;直到找到白色…...

条件变量condition_variable

条件变量 条件变量是一个对象&#xff0c;能够阻止调用线程&#xff0c;直到通知恢复。 std::condition_variable 是 C 标准库中的一个同步原语&#xff0c;它与互斥锁&#xff08;std::mutex&#xff09;配合使用&#xff0c;用于线程间的等待和通知机制。 成员函数 wait(…...

301.找出3位偶数

2094. 找出 3 位偶数 - 力扣&#xff08;LeetCode&#xff09; class Solution {List<Integer> resnew ArrayList<>();List<Integer> linew ArrayList<>();public int[] findEvenNumbers(int[] digits) {Arrays.sort(digits);boolean[] numsnew boolea…...

改进神经风格迁移

改进神经风格迁移&#xff08;Neural Style Transfer, NST&#xff09;可以从多个方向入手&#xff0c;包括模型结构优化、损失函数设计、计算效率提升、应用场景扩展等。以下是一些关键的改进方向及具体方法&#xff1a; 1. 模型结构优化 &#xff08;1&#xff09;轻量化网络…...

零基础上手Python数据分析 (11):DataFrame 数据清洗与预处理 (上) - 搞定缺失值、重复值和异常值

写在前面 上一篇博客,我们学习了如何灵活地索引和选取 DataFrame 中的数据,这为我们深入操作数据打下了基础。 然而,在我们拿到原始数据,准备开始大展身手进行分析之前,往往需要先进行一个至关重要的步骤:数据清洗与预处理 (Data Cleaning and Preprocessing)。 “脏数…...

StateFlow 在 XML(传统View)和 Compose 中的统一数据流管理

在 Android 开发中&#xff0c;XML&#xff08;传统 View 系统&#xff09; 和 Jetpack Compose 的混合使用越来越常见。如何让它们共享同一份数据源&#xff0c;并实现自动 UI 更新&#xff1f; StateFlow 是 Kotlin 协程提供的一种响应式数据流&#xff0c;可以完美适配 XML …...

【JVM】运行时数据区域

文章目录 1. 程序计数器补充 2. 虚拟机栈2.1 栈帧1. 局部变量表2. 操作数栈3. 动态链接4. 方法返回地址补充 3. 本地方法栈4. 堆5. 方法区静态常量池&#xff08;Class常量池&#xff09;运行时常量池字符串常量池&#xff08;1&#xff09;位置变化&#xff08;2&#xff09;放…...

【场景应用5】深入探讨去噪扩散概率模型及训练推理过程

在这篇博客文章中,我们将深入探讨去噪扩散概率模型(Denoising Diffusion Probabilistic Models,简称DDPMs,扩散模型,基于评分的生成模型,或简单的自编码器),因为研究人员在(无条件或有条件的)图像/音频/视频生成任务中,已经取得了显著的成果。流行的例子(在撰写本文…...

TCP 如何在网络 “江湖” 立威建交?

一、特点&#xff1a; &#xff08;一&#xff09;面向连接 在进行数据传输之前&#xff0c;TCP 需要在发送方和接收方之间建立一条逻辑连接。这一过程类似于打电话&#xff0c;双方在通话前需要先拨号建立连接。建立连接的过程通过三次握手来完成&#xff0c;确保通信双方都…...

mysql:重置表自增字段序号

情况一&#xff1a;清空表数据后重置自增 ID 如果你希望清空表中的所有数据&#xff0c;并将自增 ID 重置为初始值&#xff08;通常为 1&#xff09; 1、truncate truncate table tb_dict; 2、delete 配合 alter 语句 delete from tb_dict; alter table tb_dict AUTO_INCR…...

【Code】《代码整洁之道》笔记-Chapter13-并发编程

第13章 并发编程 “对象是过程的抽象。线程是调度的抽象。” 编写整洁的并发程序很难——非常难&#xff0c;而编写在单线程中执行的代码却简单得多。编写表面上看似不错、深入进去却支离破碎的多线程代码也简单&#xff0c;但是系统一旦遭受压力&#xff0c;这种代码就扛不…...

TDengine 可靠性保障:数据持久化与容灾备份(一)

一、引言 在数字化浪潮席卷全球的当下&#xff0c;数据已成为企业和组织最为关键的资产之一。无论是互联网企业记录用户的行为数据&#xff0c;还是金融机构存储交易信息&#xff0c;又或是工业领域监测设备的运行状态&#xff0c;数据的可靠性直接关乎到业务的正常运转、决策…...

AWTK-MVVM 如何让多个View复用一个Model记录+关于app_conf的踩坑

前言 有这么一个业务&#xff0c;主界面点击应用窗口进入声纳显示界面&#xff0c;声纳显示界面再通过按钮进入菜单界面&#xff0c;菜单界面有很多关于该声纳显示界面的设置项&#xff0c;比如量程&#xff0c;增益&#xff0c;时间显示&#xff0c;亮度&#xff0c;对比度等…...

第四节:React Hooks进阶篇-useEffect依赖项为空数组[]与不写的区别

陷阱题&#xff1a;闭包问题、Stale Closure举例 一、依赖项为空数组[]与不写的核心区别 行为空数组[]不写依赖项执行时机仅在组件挂载时执行一次&#xff08;类似componentDidMount&#xff09;组件每次渲染后都执行&#xff08;类似componentDidUpdate&#xff09;更新触发…...

25级总分413数学一142专业124东南大学820考研经验电子信息通信工程,真题,大纲,参考书。

我是南京理工大学的本科生&#xff0c;25 考研一战东大&#xff0c;政治 69&#xff0c;英一 78&#xff0c;数一 142&#xff0c;专业课&#xff08;820&#xff09;124&#xff0c;总分 413。我从 3 月正式开始备考&#xff0c;专业课跟着无线电论坛jenny 老师进行学习&#…...

Docker Desktop磁盘镜像位置用途解析

在设置里面的资源中有个磁盘镜像位置的配置&#xff0c;这个目录默认位置是&#xff1a;C:\Users\haitao.luo\AppData\Local\Docker\wsl\disk&#xff0c;这里面对应的是一个docker_data.vhdx&#xff0c;虚拟磁盘文件&#xff0c;因为是在c盘上&#xff0c;所以可能后面下载镜…...

android display 笔记(十)surfaceflinger与HWC的关系

在 Android 图形系统中&#xff0c;SurfaceFlinger 和 Hardware Composer (HWC) 是紧密协作的两个核心组件&#xff0c;共同负责屏幕内容的合成与显示。它们的关系可以用 “决策者与执行者” 来概括&#xff1a; 首先HWC中 DEVICE&#xff1a;指“显示设备硬件”&#xff08;…...

#MES系统运维问题分析思路

一套适用于90% MES运维现场问题的排查分析思维模型&#xff0c;叫做&#xff1a; &#x1f50d; MES系统问题分析七步法&#xff08;现场实战适用&#xff09; ✅ 第一步&#xff1a;明确问题现象&#xff08;What&#xff09; 问题要说清楚&#xff0c;“不能操作”这种模糊描…...

基于FPGA的六层电梯智能控制系统 矩阵键盘-数码管 上板仿真均验证通过

基于FPGA的六层电梯智能控制系统 前言一、整体方案二、软件设计总结 前言 本设计基于FPGA实现了一个完整的六层电梯智能控制系统&#xff0c;旨在解决传统电梯控制系统在别墅环境中存在的个性化控制不足、响应速度慢等问题。系统采用Verilog HDL语言编程&#xff0c;基于Cyclo…...

FPGA上实现SD卡连续多块读的命令

在FPGA上实现SD卡连续多块读的命令 CMD17命令一次只能读取1个块 CMD18命令一次可以连续读取多个块&#xff0c;直到停止命令CMD12 CMD18命令读的块数程序可任意设置 目录 前言 一、SD卡多块读命令CMD18 二、停止读命令CMD12 三、SD卡初始化SD卡连续块读操作的verilog代码 …...

AI 大语言模型 (LLM) 平台的整体概览与未来发展

&#x1f4cb; 分析报告&#xff1a;AI 大语言模型 (LLM) 平台的整体概览与未来发展 自动生成的结构化分析报告 &#x1f4bb; 整体概述&#xff1a;AI LLM 平台的市场现状与发展动力 随着人工智能技术的飞速发展&#xff0c;大语言模型&#xff08;Large Language Models, L…...

【技术派部署篇】Windows本地部署技术派

一、技术派简介 技术派是一个采用 Spring Boot、MyBatis-Plus、MySQL、Redis、ElasticSearch、MongoDB、Docker、RabbitMQ 等技术栈的社区系统&#xff0c;其 1.0 版已正式上线。该项目的技术栈按阶段集成引入&#xff0c;开发者可根据自身需求选择不同版本进行学习。 二、环…...

asm汇编语言源代码之-获取环境变量

提供1个子程序: 1. 读取环境变量 GETENVSTR 具体功能及参数描述如下 GETENVSTR PROC FAR ;IN: DSPSP SEG. ;   ES:BX -> ENV VAR NAME ;OUT: DS:DX -> ENV VAR VALUE; IF DX0FFFFH, NOT FOUND   ; more source code at http://www.ahjoe.com/source/srcdown.aspPU…...

消失的它:揭开 CoreData 托管对象神秘的消失之谜(上)

概述 使用 CoreData 作为 App 持久存储“定海神针”的小伙伴们想必都知道&#xff0c;我们需要将耗时的数据库查询操作乖巧的放到后台线程中&#xff0c;以便让主线程负责的 UI 获得风驰电掣般地享受。 不过&#xff0c;如何将后台线程中查询获得的托管对象稳妥的传送至主线程…...

Python中如何用正则表达式精准匹配IP地址?

在网络编程和数据处理时&#xff0c;我们经常需要从文本中提取或验证IP地址。Python的正则表达式(re模块)是完成这个任务的利器。但你知道怎么写才能准确匹配各种合法的IP地址吗&#xff1f;今天我们就来详细探讨这个问题。 为什么需要IP正则表达式&#xff1f; 假设你正在分…...

初识华为防火墙

防火墙配置与应用 一、防火墙的基本概念 1&#xff0e;防火墙的网络区域&#xff08;一般认为三个区域&#xff1a;trust、DMZ、untrust&#xff09; &#xff08;1&#xff09;本地区域(安全级别 100&#xff0c;local)&#xff08;防火墙内部区域&#xff0c;一般不说明此…...

十二、C++速通秘籍—静态库,动态库

上一章节&#xff1a; 十一、C速通秘籍—多线程-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/147055932?spm1001.2014.3001.5502 本章节代码&#xff1a; cpp2/library CuiQingCheng/cppstudy - 码云 - 开源中国https://gitee.com/cuiqingcheng/cppst…...

我爱学算法之——滑动窗口攻克子数组和子串难题(下)

这几道题可以说是有一点难度的&#xff0c;但是掌握方法以后可以说非常简单了&#xff1b; 一、找到字符串中所有字母异位词 题目解析 题目给定了两个字符串s和p&#xff0c;让我们在s中找到p的异位词的字串&#xff0c;并且返回这些字串的索引 **异位词&#xff1a;**简单来说…...

leaflet 之 获取中国某个行政区的经纬度边界(latLngBounds)

思路 在json文件中获取下面的四个点 组成东北,西南两组 { “southwest”: { “lat”: 35.950, “lng”: 120.000 },//西南方 “northeast”: { “lat”: 36.200, “lng”: 120.300 }//东北方 } 最西点经度&#xff08;minLng&#xff09; 最东点经度&#xff08;maxLng&#x…...

鸢尾花分类的6种机器学习方法综合分析与实现

鸢尾花分类的6种机器学习方法综合分析与实现 首先我们来看一下对应的实验结果。 数据准备与环境配置 在开始机器学习项目前&#xff0c;首先需要准备编程环境和加载数据。以下代码导入必要的库并加载鸢尾花数据集&#xff1a; import numpy as np import pandas as pd impo…...

基于李永乐线性代数基础的行列式的起源于理解

起源于解方程组的过程 对于解一个二元方程组&#xff0c;很自然的会通过加减消元&#xff0c;变成下面这样 对于三元方程组&#xff0c;也是一样&#xff1a; 这一大长串&#xff0c;是A*x1b1这个形式时&#xff0c;A的值 人们为了方便记忆x未知数前这一大坨相乘后相加减的数…...

MacOs java环境配置+maven环境配置踩坑实录

oracl官网下载jdk 1.8的安装包 注意可能需要注册&#xff01;&#xff01;&#xff01; 下载链接&#xff1a;下载地址点击 注意晚上就不要下载了 报错400 &#xff01;&#xff01;&#xff01; 1.点击安装嘛 2.配置环境变量 export JAVA_HOME/Library/Java/Java…...

LeetCode 3272.统计好整数的数目:枚举+排列组合+哈希表

【LetMeFly】3272.统计好整数的数目&#xff1a;枚举排列组合哈希表 力扣题目链接&#xff1a;https://leetcode.cn/problems/find-the-count-of-good-integers/ 给你两个 正 整数 n 和 k 。 如果一个整数 x 满足以下条件&#xff0c;那么它被称为 k 回文 整数 。 x 是一个…...

蓝桥杯嵌入式历年省赛客观题

一.第十五届客观题 第十四届省赛 十三届 十二届...

RFID 在制造业的深度应用与未来趋势

一、引言 制造业作为国民经济的核心支柱&#xff0c;正面临着全球供应链重构、个性化需求激增、成本压力加剧等多重挑战。RFID&#xff08;射频识别&#xff09;技术以其非接触式自动识别、数据实时传输、环境适应性强等特性&#xff0c;成为推动制造业数字化转型的关键引擎。…...

spring--声明式事务

声明式事务 1、回顾事务 要么都成功&#xff0c;要么都失败&#xff01; 事务在项目开发中&#xff0c;十分重要&#xff0c;涉及数据的一致性问题 确保完整性和一致性 事务ACID&#xff1a; 原子性&#xff1a;事务是原子性操作&#xff0c;由一系列动作组成&#xff0c;…...

java爬虫案例

以下是一个简单的Java爬虫案例&#xff0c;使用了 Jsoup 和 Apache HttpClient 两个常用的库来实现网页内容的爬取和解析。这个案例会演示如何获取网页的HTML内容、解析HTML并提取所需数据。 示例&#xff1a;使用Jsoup爬取网页内容 1. 添加依赖 在项目中添加以下依赖&#xff…...

博途 TIA Portal之1200做主站与有意思的板子做MODBUS_RTU通讯

做为博途的硬件,1200和1500本体都不具有串口通讯功能,只能使用扩展板或是通讯模块完成。 其中1200使用CB1241或CM1241进行串口通讯,本文将使用CM1241进行演示。 1、硬件介绍 1200的PLC一台,有意思的板子(以下简单4D板)一台。 其中1200带扩展模块CM1241 RS232;4D板使…...

01_核心系统下的技术原理解析

15年前&#xff0c;基本上国内的核心系统被C垄断&#xff0c;基本上是IBM的那套东西&#xff0c;场景也是比价复杂&#xff0c;这里不再赘述&#xff0c;TPS太过于庞大&#xff0c;技术上确实比较复杂。为此我这里抛砖引玉&#xff0c;说下对应的支付系统&#xff1a; &#x…...

【力扣hot100题】(092)最长回文串

有点难度&#xff0c;一开始想到的两种方法都不对&#xff0c;花了不少时间。 先说之前的方法&#xff1a; ① 遍历每个点&#xff0c;每个点向外扩张&#xff0c;如果左等于右就一直扩展直到不等。 这个方法可是可以&#xff0c;但我没有考虑到两个相同字母也是回文串的情况…...

第一期:[特殊字符] 深入理解MyBatis[特殊字符]从JDBC到MyBatis——持久层开发的转折点[特殊字符]

前言 &#x1f31f; 在软件开发的过程中&#xff0c;持久层&#xff08;或数据访问层&#xff09;是与数据库进行交互的关键部分。早期&#xff0c;开发者通常使用 JDBC&#xff08;Java Database Connectivity&#xff09;来实现与数据库的连接与操作。虽然 JDBC 在一定程度上…...