关于 微服务中服务注册与发现 的详细说明,涵盖主流框架/解决方案的对比、核心功能、配置示例及总结表格
以下是关于 微服务中服务注册与发现 的详细说明,涵盖主流框架/解决方案的对比、核心功能、配置示例及总结表格:
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 机制 | 需自定义实现 | 原生支持 | 无 | 高(需自行实现逻辑) | 活跃 | 需轻量级键值存储的分布式系统 |
Kubernetes | DNS 或环境变量 | 原生 Liveness/Readiness 探针 | 支持多集群 | ConfigMap | 低(与 Kubernetes 生态集成) | 非常活跃 | 容器化部署,云原生架构 |
Dubbo | 客户端心跳+注册中心 | 自定义 HTTP 检查 | 支持(需配置) | 无 | 中等 | 活跃 | 高性能 Java 微服务架构 |
Nomad + Consul | Nomad 调度+Consul 发现 | Consul 内置检查 | 原生支持 | Consul Key-Value | 高(需配合 Nomad) | 活跃 | 混合云环境,需统一调度与发现 |
AWS Cloud Map | AWS 内置服务发现 | 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 或 Kubernetes | Consul 支持多语言健康检查,Kubernetes 原生支持多语言容器。 |
云原生部署(如 AWS/Azure) | AWS Cloud Map 或 Azure Service Fabric | 托管服务,与云平台深度集成。 |
高性能需求 | etcd 或 ZooKeeper | 低延迟,适合对性能敏感的场景。 |
容器化部署 | Kubernetes Service | 原生支持,无需额外注册中心,与容器编排无缝集成。 |
7. 总结表格
框架/方案 | 协议 | 数据一致性 | 性能 | 学习成本 | 适用场景 |
---|---|---|---|---|---|
Spring Cloud Eureka | REST API | 最终一致 | 中等 | 低 | 过渡期项目,需兼容旧系统 |
Spring Cloud Nacos | HTTP + DNS | 强一致 | 高 | 低 | 新项目,阿里云生态 |
Consul | HTTP + DNS | 强一致 | 高 | 中等 | 多数据中心,混合云环境 |
ZooKeeper | ZooKeeper 协议 | 强一致 | 高 | 高(需自行实现逻辑) | 需分布式协调的复杂系统 |
etcd | gRPC | 强一致 | 非常高 | 高 | 需高性能键值存储的分布式系统 |
Kubernetes | DNS/API | 强一致 | 非常高 | 中等 | 容器化部署,云原生架构 |
Dubbo | 自定义协议 | 最终一致 | 非常高 | 中等 | 高性能 Java 微服务架构 |
Nomad + Consul | HTTP | 强一致 | 中等 | 高 | 混合云环境,需统一调度与发现 |
AWS Cloud Map | AWS 内置协议 | 强一致 | 非常高 | 低 | AWS 云原生环境 |
8. 注意事项
- Eureka 的替代方案:由于 Eureka 维护停止,建议迁移到 Nacos 或 Consul。
- Kubernetes 原生方案:适合容器化部署,无需额外注册中心。
- Consul 的多数据中心:需配置
datacenter
和acl
权限。 - Nacos 的动态 DNS:支持通过域名直接访问服务(如
user-service.nacos
)。 - 性能与一致性:etcd 和 Consul 基于 Raft,适合对一致性要求高的场景。
通过以上对比,开发者可根据项目需求选择最适合的方案。对于新项目,Spring Cloud Nacos 或 Consul 是主流选择;容器化环境推荐 Kubernetes Service;多云或多数据中心场景建议 Consul 或 AWS Cloud Map。
相关文章:
关于 微服务中服务注册与发现 的详细说明,涵盖主流框架/解决方案的对比、核心功能、配置示例及总结表格
以下是关于 微服务中服务注册与发现 的详细说明,涵盖主流框架/解决方案的对比、核心功能、配置示例及总结表格: 1. 服务注册与发现的核心概念 服务注册与发现是微服务架构的基础能力,主要解决以下问题: 服务注册:服…...
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个基本要素:机密性、完整性、可用性、可控性与可审查性。 机密性:确保信息不暴露给未授权的实体或进程。(采取加密措施) 完整性:只有得到允许的人才能修改数据,并且能够判断出数据是否已…...
CCF CSP 第35次(2024.09)(2_字符串变换_C++)(哈希表+getline)
CCF CSP 第35次(2024.09)(2_字符串变换_C) 解题思路:思路一(哈希表getline): 代码实现代码实现(思路一(哈希表getline)): …...
oracle怎么查看是否走了索引
SELECT * FROM CRM_STATION_APPEAL_RESULT WHERE COMPLAINT_ID ce1a1d8f-e2a2-4126-8cb7-14384cb24468; 这是查询语句,怎么看这个查询是否走了索引呢 EXPLAIN PLAN FOR SELECT * FROM CRM_STATION_APPEAL_RESULT WHERE COMPLAINT_ID ce1a1d8f-e2a2-4126-8cb7-14…...
八股系列(分布式与微服务)持续更新!
八股系列(分布式与微服务) 分布式系统的概念 分布式系统是由多个节点组成,节点之间通过网络协议传递数据,对外表现为一个统一的整体,一个节点可以是一台机器或一个进程;分布式系统的核心功能 资源共享&…...
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
一、日志管理 > 日志配置文件: > > /var/log/messages #内核的消息以及各种服务的公共信息 > > /var/log/dmesg #系统启动过程信息 > > /var/log/cron #cron计划任务相关信息 > > /var…...
[创业之路-366]:投资尽职调查 - 尽调核心逻辑与核心影响因素:价值、估值、退出、风险、策略
目录 一、VC投资的本质是冒着不确定性风险进行买卖、生意,为了赚取高额回报 1、VC投资的核心本质 2、VC投资的运作机制 3、VC投资的风险与挑战 4、VC投资的底层逻辑 5、总结:VC投资的本质再定义 二、尽调核心逻辑 1、尽调的含义 2、尽调的逻辑方…...
Raymarching Textures In Depth
本节课最主要的就是学会hlsl中使用纹理采样 float4 color Texture2DSample(Texobj, TexobjSampler, uv); return color; 课程中的代码(没有这张图我就没做) 课程代码产生深度的原因是uv偏移,黑色区域会不断向左偏移,直到找到白色…...
条件变量condition_variable
条件变量 条件变量是一个对象,能够阻止调用线程,直到通知恢复。 std::condition_variable 是 C 标准库中的一个同步原语,它与互斥锁(std::mutex)配合使用,用于线程间的等待和通知机制。 成员函数 wait(…...
301.找出3位偶数
2094. 找出 3 位偶数 - 力扣(LeetCode) class Solution {List<Integer> resnew ArrayList<>();List<Integer> linew ArrayList<>();public int[] findEvenNumbers(int[] digits) {Arrays.sort(digits);boolean[] numsnew boolea…...
改进神经风格迁移
改进神经风格迁移(Neural Style Transfer, NST)可以从多个方向入手,包括模型结构优化、损失函数设计、计算效率提升、应用场景扩展等。以下是一些关键的改进方向及具体方法: 1. 模型结构优化 (1)轻量化网络…...
零基础上手Python数据分析 (11):DataFrame 数据清洗与预处理 (上) - 搞定缺失值、重复值和异常值
写在前面 上一篇博客,我们学习了如何灵活地索引和选取 DataFrame 中的数据,这为我们深入操作数据打下了基础。 然而,在我们拿到原始数据,准备开始大展身手进行分析之前,往往需要先进行一个至关重要的步骤:数据清洗与预处理 (Data Cleaning and Preprocessing)。 “脏数…...
StateFlow 在 XML(传统View)和 Compose 中的统一数据流管理
在 Android 开发中,XML(传统 View 系统) 和 Jetpack Compose 的混合使用越来越常见。如何让它们共享同一份数据源,并实现自动 UI 更新? StateFlow 是 Kotlin 协程提供的一种响应式数据流,可以完美适配 XML …...
【JVM】运行时数据区域
文章目录 1. 程序计数器补充 2. 虚拟机栈2.1 栈帧1. 局部变量表2. 操作数栈3. 动态链接4. 方法返回地址补充 3. 本地方法栈4. 堆5. 方法区静态常量池(Class常量池)运行时常量池字符串常量池(1)位置变化(2)放…...
【场景应用5】深入探讨去噪扩散概率模型及训练推理过程
在这篇博客文章中,我们将深入探讨去噪扩散概率模型(Denoising Diffusion Probabilistic Models,简称DDPMs,扩散模型,基于评分的生成模型,或简单的自编码器),因为研究人员在(无条件或有条件的)图像/音频/视频生成任务中,已经取得了显著的成果。流行的例子(在撰写本文…...
TCP 如何在网络 “江湖” 立威建交?
一、特点: (一)面向连接 在进行数据传输之前,TCP 需要在发送方和接收方之间建立一条逻辑连接。这一过程类似于打电话,双方在通话前需要先拨号建立连接。建立连接的过程通过三次握手来完成,确保通信双方都…...
mysql:重置表自增字段序号
情况一:清空表数据后重置自增 ID 如果你希望清空表中的所有数据,并将自增 ID 重置为初始值(通常为 1) 1、truncate truncate table tb_dict; 2、delete 配合 alter 语句 delete from tb_dict; alter table tb_dict AUTO_INCR…...
【Code】《代码整洁之道》笔记-Chapter13-并发编程
第13章 并发编程 “对象是过程的抽象。线程是调度的抽象。” 编写整洁的并发程序很难——非常难,而编写在单线程中执行的代码却简单得多。编写表面上看似不错、深入进去却支离破碎的多线程代码也简单,但是系统一旦遭受压力,这种代码就扛不…...
TDengine 可靠性保障:数据持久化与容灾备份(一)
一、引言 在数字化浪潮席卷全球的当下,数据已成为企业和组织最为关键的资产之一。无论是互联网企业记录用户的行为数据,还是金融机构存储交易信息,又或是工业领域监测设备的运行状态,数据的可靠性直接关乎到业务的正常运转、决策…...
AWTK-MVVM 如何让多个View复用一个Model记录+关于app_conf的踩坑
前言 有这么一个业务,主界面点击应用窗口进入声纳显示界面,声纳显示界面再通过按钮进入菜单界面,菜单界面有很多关于该声纳显示界面的设置项,比如量程,增益,时间显示,亮度,对比度等…...
第四节:React Hooks进阶篇-useEffect依赖项为空数组[]与不写的区别
陷阱题:闭包问题、Stale Closure举例 一、依赖项为空数组[]与不写的核心区别 行为空数组[]不写依赖项执行时机仅在组件挂载时执行一次(类似componentDidMount)组件每次渲染后都执行(类似componentDidUpdate)更新触发…...
25级总分413数学一142专业124东南大学820考研经验电子信息通信工程,真题,大纲,参考书。
我是南京理工大学的本科生,25 考研一战东大,政治 69,英一 78,数一 142,专业课(820)124,总分 413。我从 3 月正式开始备考,专业课跟着无线电论坛jenny 老师进行学习&#…...
Docker Desktop磁盘镜像位置用途解析
在设置里面的资源中有个磁盘镜像位置的配置,这个目录默认位置是:C:\Users\haitao.luo\AppData\Local\Docker\wsl\disk,这里面对应的是一个docker_data.vhdx,虚拟磁盘文件,因为是在c盘上,所以可能后面下载镜…...
android display 笔记(十)surfaceflinger与HWC的关系
在 Android 图形系统中,SurfaceFlinger 和 Hardware Composer (HWC) 是紧密协作的两个核心组件,共同负责屏幕内容的合成与显示。它们的关系可以用 “决策者与执行者” 来概括: 首先HWC中 DEVICE:指“显示设备硬件”(…...
#MES系统运维问题分析思路
一套适用于90% MES运维现场问题的排查分析思维模型,叫做: 🔍 MES系统问题分析七步法(现场实战适用) ✅ 第一步:明确问题现象(What) 问题要说清楚,“不能操作”这种模糊描…...
基于FPGA的六层电梯智能控制系统 矩阵键盘-数码管 上板仿真均验证通过
基于FPGA的六层电梯智能控制系统 前言一、整体方案二、软件设计总结 前言 本设计基于FPGA实现了一个完整的六层电梯智能控制系统,旨在解决传统电梯控制系统在别墅环境中存在的个性化控制不足、响应速度慢等问题。系统采用Verilog HDL语言编程,基于Cyclo…...
FPGA上实现SD卡连续多块读的命令
在FPGA上实现SD卡连续多块读的命令 CMD17命令一次只能读取1个块 CMD18命令一次可以连续读取多个块,直到停止命令CMD12 CMD18命令读的块数程序可任意设置 目录 前言 一、SD卡多块读命令CMD18 二、停止读命令CMD12 三、SD卡初始化SD卡连续块读操作的verilog代码 …...
AI 大语言模型 (LLM) 平台的整体概览与未来发展
📋 分析报告:AI 大语言模型 (LLM) 平台的整体概览与未来发展 自动生成的结构化分析报告 💻 整体概述:AI LLM 平台的市场现状与发展动力 随着人工智能技术的飞速发展,大语言模型(Large Language Models, L…...
【技术派部署篇】Windows本地部署技术派
一、技术派简介 技术派是一个采用 Spring Boot、MyBatis-Plus、MySQL、Redis、ElasticSearch、MongoDB、Docker、RabbitMQ 等技术栈的社区系统,其 1.0 版已正式上线。该项目的技术栈按阶段集成引入,开发者可根据自身需求选择不同版本进行学习。 二、环…...
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 持久存储“定海神针”的小伙伴们想必都知道,我们需要将耗时的数据库查询操作乖巧的放到后台线程中,以便让主线程负责的 UI 获得风驰电掣般地享受。 不过,如何将后台线程中查询获得的托管对象稳妥的传送至主线程…...
Python中如何用正则表达式精准匹配IP地址?
在网络编程和数据处理时,我们经常需要从文本中提取或验证IP地址。Python的正则表达式(re模块)是完成这个任务的利器。但你知道怎么写才能准确匹配各种合法的IP地址吗?今天我们就来详细探讨这个问题。 为什么需要IP正则表达式? 假设你正在分…...
初识华为防火墙
防火墙配置与应用 一、防火墙的基本概念 1.防火墙的网络区域(一般认为三个区域:trust、DMZ、untrust) (1)本地区域(安全级别 100,local)(防火墙内部区域,一般不说明此…...
十二、C++速通秘籍—静态库,动态库
上一章节: 十一、C速通秘籍—多线程-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/147055932?spm1001.2014.3001.5502 本章节代码: cpp2/library CuiQingCheng/cppstudy - 码云 - 开源中国https://gitee.com/cuiqingcheng/cppst…...
我爱学算法之——滑动窗口攻克子数组和子串难题(下)
这几道题可以说是有一点难度的,但是掌握方法以后可以说非常简单了; 一、找到字符串中所有字母异位词 题目解析 题目给定了两个字符串s和p,让我们在s中找到p的异位词的字串,并且返回这些字串的索引 **异位词:**简单来说…...
leaflet 之 获取中国某个行政区的经纬度边界(latLngBounds)
思路 在json文件中获取下面的四个点 组成东北,西南两组 { “southwest”: { “lat”: 35.950, “lng”: 120.000 },//西南方 “northeast”: { “lat”: 36.200, “lng”: 120.300 }//东北方 } 最西点经度(minLng) 最东点经度(maxLng&#x…...
鸢尾花分类的6种机器学习方法综合分析与实现
鸢尾花分类的6种机器学习方法综合分析与实现 首先我们来看一下对应的实验结果。 数据准备与环境配置 在开始机器学习项目前,首先需要准备编程环境和加载数据。以下代码导入必要的库并加载鸢尾花数据集: import numpy as np import pandas as pd impo…...
基于李永乐线性代数基础的行列式的起源于理解
起源于解方程组的过程 对于解一个二元方程组,很自然的会通过加减消元,变成下面这样 对于三元方程组,也是一样: 这一大长串,是A*x1b1这个形式时,A的值 人们为了方便记忆x未知数前这一大坨相乘后相加减的数…...
MacOs java环境配置+maven环境配置踩坑实录
oracl官网下载jdk 1.8的安装包 注意可能需要注册!!! 下载链接:下载地址点击 注意晚上就不要下载了 报错400 !!! 1.点击安装嘛 2.配置环境变量 export JAVA_HOME/Library/Java/Java…...
LeetCode 3272.统计好整数的数目:枚举+排列组合+哈希表
【LetMeFly】3272.统计好整数的数目:枚举排列组合哈希表 力扣题目链接:https://leetcode.cn/problems/find-the-count-of-good-integers/ 给你两个 正 整数 n 和 k 。 如果一个整数 x 满足以下条件,那么它被称为 k 回文 整数 。 x 是一个…...
蓝桥杯嵌入式历年省赛客观题
一.第十五届客观题 第十四届省赛 十三届 十二届...
RFID 在制造业的深度应用与未来趋势
一、引言 制造业作为国民经济的核心支柱,正面临着全球供应链重构、个性化需求激增、成本压力加剧等多重挑战。RFID(射频识别)技术以其非接触式自动识别、数据实时传输、环境适应性强等特性,成为推动制造业数字化转型的关键引擎。…...
spring--声明式事务
声明式事务 1、回顾事务 要么都成功,要么都失败! 事务在项目开发中,十分重要,涉及数据的一致性问题 确保完整性和一致性 事务ACID: 原子性:事务是原子性操作,由一系列动作组成,…...
java爬虫案例
以下是一个简单的Java爬虫案例,使用了 Jsoup 和 Apache HttpClient 两个常用的库来实现网页内容的爬取和解析。这个案例会演示如何获取网页的HTML内容、解析HTML并提取所需数据。 示例:使用Jsoup爬取网页内容 1. 添加依赖 在项目中添加以下依赖ÿ…...
博途 TIA Portal之1200做主站与有意思的板子做MODBUS_RTU通讯
做为博途的硬件,1200和1500本体都不具有串口通讯功能,只能使用扩展板或是通讯模块完成。 其中1200使用CB1241或CM1241进行串口通讯,本文将使用CM1241进行演示。 1、硬件介绍 1200的PLC一台,有意思的板子(以下简单4D板)一台。 其中1200带扩展模块CM1241 RS232;4D板使…...
01_核心系统下的技术原理解析
15年前,基本上国内的核心系统被C垄断,基本上是IBM的那套东西,场景也是比价复杂,这里不再赘述,TPS太过于庞大,技术上确实比较复杂。为此我这里抛砖引玉,说下对应的支付系统: &#x…...
【力扣hot100题】(092)最长回文串
有点难度,一开始想到的两种方法都不对,花了不少时间。 先说之前的方法: ① 遍历每个点,每个点向外扩张,如果左等于右就一直扩展直到不等。 这个方法可是可以,但我没有考虑到两个相同字母也是回文串的情况…...
第一期:[特殊字符] 深入理解MyBatis[特殊字符]从JDBC到MyBatis——持久层开发的转折点[特殊字符]
前言 🌟 在软件开发的过程中,持久层(或数据访问层)是与数据库进行交互的关键部分。早期,开发者通常使用 JDBC(Java Database Connectivity)来实现与数据库的连接与操作。虽然 JDBC 在一定程度上…...