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

分布式系统架构-微服务架构

一.什么是分布式系统架构

分布式系统架构是指将一个单一的应用程序或服务拆分成多个独立的部分,这些部分可以在不同的计算机、服务器或者地理位置上运行,并通过网络进行通信和协作。分布式系统的设计旨在提高系统的可靠性、可用性和扩展性,同时减少单点故障的影响。

二. 分布式系统优缺点

优点:
高可用性: 分布式系统可以通过在多个节点上复制数据或服务来提高可用性。如果一个节点发生故障,系统仍然可以继续运行。
容错性: 分布式系统能够在部分节点或组件失败时继续提供服务,不会导致整体系统的崩溃。
灵活性和可扩展性: 可以根据需求动态地增加或减少节点或资源,以适应系统负载的变化,从而提高系统的性能和扩展性。
地理位置透明性: 用户可以透明地访问分布式系统中的资源,而不需要了解资源的物理位置,这提供了更好的用户体验和服务的统一性。
更好的性能: 在合理设计的情况下,分布式系统可以通过并行处理和负载均衡来提高整体的性能和吞吐量。

缺点:
复杂性: 设计、实现和维护分布式系统通常比单一系统复杂得多。需要考虑分布式一致性、通信开销、节点故障处理等问题。
一致性问题: 分布式系统中的数据一致性是一个挑战,需要在数据副本之间进行同步和协调,确保不同节点上的数据是一致的。
通信开销: 节点之间的通信可能会引入额外的延迟和网络开销,这可能会影响系统的性能和响应时间。
安全性: 分布式系统面临更多的安全威胁,如数据泄露、拒绝服务攻击等,需要额外的安全措施来保护系统的安全性和完整性。
难以调试和测试: 分布式系统的故障排查和测试比单一系统更为复杂,因为可能涉及到多个节点、多个组件和复杂的交互。
一致性协议的复杂性: 实现分布式一致性通常需要复杂的协议和算法,如Paxos、Raft等,这增加了系统设计和实现的复杂度。

三 .分布式系统架构设计原则

自治性(Autonomy): 每个服务都应该是自治的,具有自己的数据存储和业务逻辑,可以独立部署和扩展。
松耦合(Loose Coupling): 通过消息队列或异步通信减少服务之间的直接依赖,降低变更的影响范围。
高可用性(High Availability): 设计故障恢复策略,保证系统在单点故障时依然可用,如负载均衡、自动故障检测和恢复机制。
水平扩展(Horizontal Scalability): 通过增加节点或服务实例来提高系统的吞吐量和性能,而不是依赖单个节点的垂直扩展。

四.分布式架构的具体实现

分布式架构的具体实现有很多种,包含C/S架构,P2P架构,SOA架构,微服务架构,Serverless架构等等。所以微服务架构是分布式架构的一种。

1. C/S架构:
C/S架构(Client/Server Architecture,客户端/服务器架构)是一种计算机体系结构,用于构建应用程序和网络服务。

在C/S架构中,应用程序被分为两个主要部分:客户端和服务器。客户端应用程序通过网络连接到一个或多个服务器,并向服务器发送请求以获取服务或数据。服务器负责处理客户端的请求并返回相应的结果。

客户端和服务器之间的数据传输通常通过网络协议(如TCP/IP)完成,保证数据的可靠传输和通信的安全性。

常应用于Web应用程序,数据库系统等。

客户端(Client): 客户端是用户直接与之交互的部分,通常位于用户的计算机上。它负责向用户提供图形用户界面(GUI),接收用户输入并向服务器发送请求。客户端通常处理用户界面逻辑、用户输入验证和本地数据存储。

服务器(Server): 服务器是中央处理单元,负责存储和管理数据、处理客户端请求,并向客户端发送处理结果。服务器可以是物理服务器或虚拟服务器,它们通常运行特定的服务器软件来处理客户端请求,如数据库管理系统、Web服务器等。

优点:
分工明确: 客户端和服务器各司其职,使得应用程序的功能分布清晰,易于管理和维护。
资源共享: 通过服务器,多个客户端可以共享数据和资源,提高了资源的利用率和管理效率。
安全性和可控性: 服务器集中管理数据和安全策略,可以更好地保护数据安全和隐私。

缺点:
单点故障: 服务器成为整个系统的关键点,若服务器故障会导致所有客户端无法工作。
网络依赖性: 客户端和服务器之间的通信依赖于网络连接的稳定性和性能,网络故障或延迟可能影响系统的性能和响应时间。
成本高昂: 部署和维护服务器通常需要较高的成本,特别是在数据中心或云服务环境中。

2. P2P架构:
P2P架构(Peer-to-Peer Architecture,对等网络架构)是一种分布式计算体系结构,不同于传统的客户端/服务器(C/S)架构。在P2P架构中,所有节点(也称为对等节点或对等方)都可以充当客户端和服务器的角色,彼此之间具有对等的地位和功能。

应用于文件共享,例如BitTorrent协议,允许用户在P2P网络中分享和下载文件。区块链技术:许多区块链系统采用P2P架构来实现去中心化的交易验证和数据存储。语音/视频通信:某些P2P通信软件允许直接的点对点语音和视频通话,减少延迟和中间服务器的依赖,如BT,迅雷等软件。

优点:
去中心化: P2P架构没有中心化的服务器,所有节点可以直接相互连接和通信。每个节点可以请求服务、提供服务或同时执行这两种角色。
资源共享: P2P网络中的节点可以共享和交换资源,例如文件、带宽、计算能力等。每个节点既可以向其他节点请求资源,也可以向其他节点提供自己拥有的资源。
自治性: 每个节点在P2P网络中都是自治的,它们不依赖于集中式的管理或控制。节点的行为和决策通常基于协议、共识算法或分布式协商来完成。
扩展性: P2P架构通常具有很好的可扩展性,因为增加新节点可以增加系统的整体资源和容量,而无需修改现有的网络结构。
去中心化的优势: P2P架构在一定程度上可以提高系统的稳定性和安全性,因为没有单点故障,系统不易被攻击或单个节点的故障影响系统的整体可用性。

缺点:
安全性: P2P架构可能面临安全挑战,如未经授权的访问、恶意软件传播等问题。
性能: 网络中的节点数量增加时,管理和维护可能会变得复杂,并且可能会影响系统的性能。
数据一致性: 由于去中心化的特性,确保数据的一致性和完整性可能比较复杂,需要特殊的算法和协议来解决。

3.SOA架构:
Service-Oriented Architecture (SOA) 是一种软件架构风格,旨在通过服务的方式来组织和实现软件系统。

SOA架构通过服务的概念和特定的通信机制,提供了一种灵活、可扩展和可重用的软件设计模式,适用于构建复杂的分布式应用系统。

优点:
服务: 将系统划分为多个服务,每个服务提供特定的业务功能或操作。
服务间通信: 不同服务之间通过标准化的通信协议进行交互,常见的方式包括SOAP(Simple Object Access Protocol)和RESTful Web services。
松耦合: 服务之间的耦合度低,每个服务都是独立的功能单元,可以独立开发、部署和扩展。
重新使用性: 可以通过组合现有的服务来构建新的应用,提高了代码的重用性和灵活性。
标准化: 使用标准化的服务接口和通信协议,确保不同平台和语言之间的互操作性。
抽象:服务通过抽象接口定义,客户端不需要了解服务的具体实现细节,只需要知道如何使用服务。

缺点:
服务治理: 需要有效的服务管理和监控机制,确保服务的可用性、性能和安全性。
数据一致性: 跨服务的数据管理和一致性问题需要仔细设计和处理。
性能: 服务间通信的开销和延迟可能影响系统的整体性能。
安全性: 需要考虑服务之间的安全通信、身份验证和授权问题。

4.微服务架构:
微服务架构是一种软件设计和开发模式,将单一的应用程序拆分为多个小型服务,每个服务都运行在自己的进程中,并通过轻量级的机制(通常是HTTP API)进行通信。

微服务的目的是有效的拆分应用,实现敏捷开发和部署 。

优点:
服务拆分: 将应用程序拆分为多个小型服务,每个服务专注于特定的业务功能。
自治性: 每个微服务都可以独立部署、扩展和替换,不影响其他服务。
分布式: 微服务架构允许服务在不同的服务器或容器中运行,通过网络进行通信。
技术多样性:每个微服务可以使用适合其需求的最佳技术栈,没有强制统一的技术选择。
弹性: 整体系统可以更容易地扩展和适应变化,因为每个服务可以根据需要独立地进行扩展。
去中心化治理: 微服务架构鼓励分布式数据管理和去中心化决策。

缺点:
分布式系统的复杂性: 微服务架构引入了分布式系统的复杂性,例如网络延迟、通信失败、一致性和事务管理等问题。
服务间通信: 微服务之间的通信需要进行适当的设计和管理,避免性能瓶颈和不必要的复杂性。
数据管理: 数据的一致性和管理变得更加复杂,需要考虑跨服务的数据一致性和事务管理问题。

5.Serverless架构:
Serverless架构是一种云计算模型,它强调开发者无需关注底层的服务器管理和维护,而是专注于编写代码和实现业务逻辑。

开发者编写函数代码,上传到云平台,指定函数触发条件。当触发条件满足时,云平台自动执行函数并返回结果。

主流云服务提供商如AWS Lambda、Azure Functions、Google Cloud Functions等提供Serverless服务。开发者选择适合自己应用程序的平台,并利用其丰富的生态系统和工具。

Serverless架构允许开发者通过API网关、消息队列、数据库等服务与第三方服务集成,构建复杂的应用程序。

优点:
无服务器管理: 开发者不需要管理服务器的操作系统、运行时环境、容量规划等,所有这些由云服务提供商自动处理。
事件驱动: Serverless架构基于事件触发机制。函数(Function)在响应特定事件时被执行,例如HTTP请求、数据库更新、消息队列等。
按需计费: 以请求执行时间和资源消耗为基础计费,避免了传统服务器持续运行的成本。函数停止执行后,资源被释放,不再收费。
自动伸缩: 云服务提供商负责根据请求量和资源需求自动扩展和缩减函数实例,确保高可用性和性能。
微服务架构: Serverless架构通常鼓励使用小型函数来实现单一功能,支持微服务的设计理念,使得应用程序更易于扩展和维护。
总体就是按需付费,无需为未使用的服务器资源支付费用,开发者专注于业务逻辑,而非基础设施管理,自动伸缩和高可用性。

缺点:
冷启动延迟: 首次执行函数可能有一定延迟,因为需要准备运行环境。
监控和调试: 分布式和短寿命的函数使得监控和调试变得更具挑战性。
架构复杂性: 对于大规模和复杂应用程序,需要精心设计和管理函数间的依赖和通信。

五.微服务架构的服务治理

服务治理是微服务架构中比较重要的一个课题,服务注册与发现,负载均衡,容错与熔断,限流与流量控制,服务监控与追踪等,都是服务治理的一部分。

服务注册与发现: 是微服务架构中必不可少的一个环节,微服务可以向注册中心注册的信息(如地址,端口等),其他微服务通过服务发现机制动态地获取可以进行调用的服务信息,从而实现服务之间的通信。

常见的实现方案有:Zookeeper,Consul,Eureka,Nacos。

负载均衡: 是指将请求分配到多个服务实例中,以达到分摊负载的目的。

常见的实现方案有:
Ribbon(是NetFlix开源的一个负载均衡框架,可以与Eureka配合使用)。
Nginx(一个高性能的web服务器,也可以用作反向代理和负载均衡器,可以实现对多个服务实例的负载均衡。

熔断机制: 当某个微服务发生故障或不可用时,可以快速断开该服务的调用,防止故障扩散,并提供备用响应或执行其他补救措施。

常用的实现方案有:
Hystrix: Hystrix是Netflix开源的一个容错框架,可以实现服务的熔断、降级和容错等功能。
Sentinel: Sentinel是阿里开源的一个流量控制和容错框架,可以实现服务的熔断、降级、限流和系统保护等功能。

限流机制: 限制服务的访问量(即系统的并发流量),通过限制每个微服务的请求频率或并发数,防止服务过载和雪崩效应的发生,以保证服务的可用性和稳定性。例如·应对突发流量高峰。

常用的实现方案有:
Rate Limiter: Rate Limiter是Google开源的一个限流框架,可以实现对访问频率的限制。
lstio: lstio是由Google、IBM和Lyft等公司共同推出的一个服务网格框架,可以实现对服务流量的控制和管理。
Sentinel: Sentinel也支持限流的功能。

降级机制: 在资源紧张或故障情况下,可以通过降级机制优先处理重要或核心功能,暂时关闭非关键功能,保证核心功能的正常运行。

常用的实现方案有:
Hystrix: Hystrix是Netflix开源的一个容错框架,可以实现服务的熔断、降级和容错等功能。
Sentinel: Sentinel也支持降级的功能。

分布式链路追踪: 通过对微服务调用链路进行追踪和监控,可以帮助定位问题、优化性能,并提供可视化的调用链路图。

常见的实现方案有:
skywalking: Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计,它是一款优秀的APM工具,包括了分布式追踪,性能指标分析和服务依赖分析等。
zipkin: Zipkin是Twitter 的一个开源项目,基于Google Dapper实现。可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的REST API 接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。

服务监控: 指对服务进行实时监控和追踪,以及对服务性能进行评估和优化。

常见的实现方案有: Prometheus:Prometheus是由SoundCloud开源的一个监控系统,可以实现对服务的实时监控和度量。

六.网关(Gateway)

网关是一个在微服务架构中处理客户端请求的服务器,它充当客户端和后端服务之间的中介。主要功能包括路由请求、安全认证、负载均衡、日志记录、监控等。网关可以看作是整个系统的入口,对外提供统一的接入点。

微服务网关的作用:
服务代理: 网关作为服务的代理,客户端只需与网关通信,网关负责转发请求到正确的微服务。这种方式简化了客户端与微服务之间的交互,客户端无需直接了解每个微服务的位置和实现细节。
路由与负载均衡: 网关负责根据请求的路径或者其他标识符将请求路由到相应的微服务。它能够实现负载均衡策略,确保请求分布均匀且微服务能够平稳处理流量。
安全认证与授权: 微服务网关通常承担认证和授权的责任,验证客户端的身份并控制其对微服务的访问权限。这种集中管理可以简化安全性的实施,避免每个微服务都要单独处理认证授权逻辑。
监控和日志: 网关通常会记录请求和响应的日志,提供对微服务的监控和分析功能。这对于排查问题、性能调优以及系统管理都非常有帮助。
协议转换: 如果微服务使用不同的通信协议(如HTTP、WebSocket等),网关可以进行协议转换,使得客户端不需要关心微服务的具体实现细节。

常见的微服务网关包括:
Netflix Zuul: 基于Netflix开发的微服务网关,支持动态路由、负载均衡、认证授权等功能。 Spring
Cloud Gateway: 由Spring Cloud提供的新一代网关解决方案,支持响应式编程模型和Spring Boot生态系统。
Kong: 开源的API网关和微服务管理层,支持扩展插件和灵活的路由配置。
Envoy: 由Lyft开发的高性能代理和通信总线,支持现代微服务架构的各种需求。

七.路由(Routing)

在微服务架构中,路由指的是将请求从入口网关转发到不同的微服务实例或后端服务的过程。路由功能由网关负责管理,根据请求的路径、参数、标头等信息,将请求导向正确的服务实例。例如,可以基于请求的 URL 路径将请求路由到不同的服务。

微服务网关的路由策略可以基于多个因素来决定请求的目标微服务:
基于路径的路由: 根据请求的URL路径,将请求路由到不同的微服务。
基于主机名的路由: 根据请求的主机名或域名,将请求路由到不同的微服务。
基于请求参数或标头的路由: 根据请求中的特定参数或标头信息,动态地决定路由到哪个微服务。
权重和负载均衡策略: 根据每个微服务实例的负载情况或者其他指标,进行负载均衡决策。

相关文章:

分布式系统架构-微服务架构

一.什么是分布式系统架构 分布式系统架构是指将一个单一的应用程序或服务拆分成多个独立的部分,这些部分可以在不同的计算机、服务器或者地理位置上运行,并通过网络进行通信和协作。分布式系统的设计旨在提高系统的可靠性、可用性和扩展性,同…...

docker搭建内网穿透服务

docker搭建内网穿透服务 frpfrpsfrpc zerotier构建 moon构建 planet查询客户端配置moon方法 nps frp 参考文章:https://blog.csdn.net/weixin_43909881/article/details/126526059 frps docker pull snowdreamtech/frps docker run --restartalways --network ho…...

html+css+js网页设计 体育 金轮健身7个页面

htmlcssjs网页设计 体育 金轮健身7个页面 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&…...

BGP基础简介(一)

AS 是一组运行相同IGP协议的设备组成的网络 AS号: 16bit:64512~65535为私有AS32bit:4200000000~4294967294为私有AS其余都是共有AS,需要向IANA申请 EGP 外部网关协议,bgp的前身,缺点:只发布路由信息,不…...

力扣面试150 反转链表 II 三指针

Problem: 92. 反转链表 II 👨‍🏫 参考题解 特殊情况 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val…...

GPT-4.o mini

https://share.xuzhugpt.cloud/ GPT-4.o mini 目前免费使用 把上面[chatgpt4o-mini-xuzhu]复制到UserToken的文本框中 点击[个人账户] 测试一下哈,看看: GPT-4.o代码有时候还是有严重错误:好奇怎么来的 上面是我写得,下面是GPT写…...

【C++】优先级队列(容器适配器)

欢迎来到我的Blog,点击关注哦💕 前言 string vector list 这种线性结构是最基础的存储结构,C(STL)container很好的帮助我们数据存储的问题。 容器适配器 介绍 容器适配器是C标准模板库(STL)中…...

docker代理

Dockerd 代理 sudo mkdir -p /etc/systemd/system/docker.service.d sudo touch /etc/systemd/system/docker.service.d/proxy.confproxy.conf [Service] Environment"HTTP_PROXYproxy.example.com:8080/" Environment"HTTPS_PROXYproxy.example.com:8080/&qu…...

(四)activit5.23.0修复跟踪高亮显示BUG

一、先看bug 在 (三)springboot2.7.6集成activit5.23.0之流程跟踪高亮显示 末尾就发现高亮显示与预期不一样,比如上面的任务2前面的箭头没有高亮显示。 二、分析原因 具体分析步骤省略了,主要是ProcessInstanceHighlightsResour…...

AsyncTask

AsyncTask简介 AsyncTask 是 Android 提供的一个轻量级的异步任务类,它允许在后台线程中执行耗时操作(如网络请求、数据库操作等),并在操作完成后更新 UI。其设计初衷是为了简化后台任务的处理,特别是在不需要复杂并发…...

嵌入式面试知识点总结 -- FreeRTOS篇

一、堆栈溢出检测 问题: 问题一:FreeRTOS堆栈溢出检测的方法? 解答: 参看:FreeRTOS学习 – FreeRTOSConfig.h介绍 两种堆栈溢出检测方法: 方法1: 开启方法,configCHECK_FOR_STACK_OVERFLOW…...

【深度学习】注意力机制(Transformer)

注意力机制 1.基础概念 1.1 查询、键和值 在人类的注意力方式中,有自主性的与非自主性的注意力提示两种解释方式。所谓自主性注意力提示,就是人本身主动想要关注到的某样东西;非自主性提示则是基于环境中物体的突出性和易见性,…...

【MySQL】将一张表的某一个值赋值到另一张表中

场景 两张表可以通过某个字段关联起来,并且想要将其中一张表的某个值赋值到另一张表的某个字段中 实操 在MySQL中,要将一张表(我们称之为Table_A)的某个字段的值赋给另一张表(Table_B)的对应字段&#x…...

怎样确定局域网里面是否有MAC地址冲突

目录 MAC地址冲突的现象1. 网络连接不稳定2. 数据包丢失3. 网络性能下降4. 无法访问特定设备5. 网络诊断工具的异常结果6. 网络安全问题 确定MAC地址冲突的方法如何解决MAC地址冲突总结 MAC地址冲突 是指在同一局域网(LAN)中,两个或多个设备具…...

springboot 大学生兼职平台系统-计算机毕业设计源码05282

摘 要 在当代大学生活中,兼职工作已经成为了许多学生的重要组成部分。校园兼职现象的普遍性及其对大学生生活的影响不容忽视。然而,现有的校园兼职系统往往存在信息不对称、管理不规范等问题。因此,我们需要深入理解校园兼职现象&#xff0c…...

CentOS linux安装nginx

下载nginx-1.21.3.tar.gz 及 nginx-upstream-fair-master.zip 上传nginx-upstream-fair-master至/app/server/nginx/modules/解压 cd /app/server/nginx/modules unzip nginx-upstream-fair-master.zip上传nginx压缩包至**/app/server/nginx/ **(根据自己需求而定…...

事务性邮件接口API如何集成以实现自动化?

事务性邮件接口API有哪些优势?邮件接口API集成方法? 通过集成事务性邮件接口API,企业可以实现邮件发送的自动化,提高效率,增强用户体验。AokSend将探讨如何集成事务性邮件接口API以实现自动化,并提供一些最…...

zabbix 监控软件

zabbix 监控软件 自带图形化界面,通过网页就可以监控所有服务器的状态 事件告警,邮箱通知(噩梦) 短信,电话。 zabbix是什么? web界面提供的分布式监控以及网络监控功能的开源的企业级软件解决方案 监…...

C语言随机数小游戏

目录 前言 一、游戏要求: 二、游戏实现 1.游戏界面 2.游戏主体 3.主函数 4.运行结果: 总结 前言 前面我们学到了C语言随机数的相关知识,我们今天用这个知识做一个有趣的小游戏,会有一点函数的知识,不过后面会…...

解决Ubuntu报“无法解析域名cn.archive.ubuntu.com“问题

今天在Ubuntu系统上,使用sudo apt update命令,进行更新时,弹出"无法解析域名 cn.archive.ubuntu.com"问题,如图(1)所示: 图(1) 弹出"无法解析域名 cn.archive.ubuntu.com" 错误 出现这种现象的原因…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...