CQRS Design Pattern in Microservices - CQRS模式
原文链接 CQRS Design Pattern in Microservices - GeeksforGeeks
【文章看起来像是AI写的。。。 😂😂😂】
简介
实现步骤
1,识别有界上下文:(Identify Bounded Contexts:)
2,命令和查询路径分离(Separate Command and Query Paths)
3,实现命令服务(Implement Command Services:)
4,实现查询服务(Implement Query Services:)
5,定义APIs(Define APIs)
6,选择数据存储机制(Choose Data Storage Mechanisms:)
7,建立异步通信(Establish Asynchronous Communication: )
8,处理最终一致性(Handle Eventual Consistency:)
真实例子-在线书店(online bookstore)
1,命令服务(Command Services:)
2,查询服务(Query Services:)
3,事件驱动架构(Event-Driven Architecture:)
4,数据存储(Data Storage:)
5,API Gateway:
几个原则和概念
服务边界(Service Boundary):
关注点分离 (Separation of Concerns):
独立扩展 (Independent Scaling)
Domain-Driven Design (DDD)领域驱动设计 (Domain-Driven Design (DDD)):
Event-Driven Architecture:事件驱动的体系结构 (Event-Driven Architecture:)
关注点分离 (Separation of Concerns of CQRS )
命令职责(Command Responsibility)
写操作(Write Operations)
验证和业务逻辑:(Validation and Business Logic:)
事务行为:(Transactional Behavior)
查询职责(Query Responsibility)
读取操作(Read Operations)
优化的数据检索:(Optimized Data Retrieval)
可伸缩性:(Scalability)
沟通协调:(Communication and Coordination)
命令-查询分离:(Command-Query Separation)
异步通信:(Asynchronous Communication)
最终一致性:(Eventual Consistency)
Domain建模:(Domain Modeling)
Domain-Driven Design (DDD):
有界上下文(Bounded Contexts)
主要组件(Key Components of CQRS)
命令服务:(Command Service:)
命令处理程序:(Command Handlers:)
领域逻辑:(Domain Logic: )
事务行为:(Transactional Behavior):
查询服务(Query Service:)
查询处理(Query Handlers: )
优化的数据访问:(Optimized Data Access: )
可伸缩性:(Scalability: )
Event Bus or Message Broker:
异步通信:(Asynchronous Communication:)
发布-订阅机制:(Publish-Subscribe Mechanism:)
解耦:(Decoupling: )
数据存储(Data Stores:)
写存储(命令侧):(Write Store (Command Side):)
Read Store(查询端):(Read Store (Query Side):)
API Gateway or Service Mesh:
入口点:(Entry Point: )
路由和负载平衡:(Routing and Load Balancing: )
安全和身份验证:(Security and Authentication: )
优势(Advantages of CQRS)
扩展性(Scalability:)
性能优化(Performance Optimization:)
灵活性和可维护性 (Flexibility and Maintainability:)
改进的性能和响应能力 (Improved Performance and Responsiveness:)
挑战(Challenges of CQRS)
提升了复杂性(Increased Complexity:)
一致性管理(Consistency Management:)
数据同步:(Data Synchronization:)
操作开销: (Operational Overhead:)
简介
CQRS( Command Query Responsibility Segregation )意思就是 把 处理命令(command)的职责 和 查询数据(Query)的职责 分离开(Segregation)。
实现步骤
1,识别有界上下文:(Identify Bounded Contexts:)
在应用不同规则和定义的域中定义有界上下文。每个有界上下文可能对应于体系结构中的微服务边界。
2,命令和查询路径分离(Separate Command and Query Paths)
指定特定的微服务来处理命令(写操作),其他微服务来处理查询(读操作)。确保这两条路径之间的关注点清晰分离。
3,实现命令服务(Implement Command Services:)
创建负责处理命令的微服务。这些服务接收命令请求,验证它们,执行必要的操作来更改系统的状态,并发布表示状态更改的事件。
4,实现查询服务(Implement Query Services:)
开发专门处理查询的微服务。这些服务响应读请求从系统中检索数据,确保有效的数据访问和优化读操作。
5,定义APIs(Define APIs)
为命令和查询服务设计清晰一致的API,指定它们支持的操作类型以及它们接受和返回的数据格式。
6,选择数据存储机制(Choose Data Storage Mechanisms:)
根据命令和查询服务的具体需求,为其选择合适的数据存储机制。例如,命令业务可能使用针对写操作优化的NoSQL数据库,而查询业务可能使用关系数据库进行复杂的查询。
7,建立异步通信(Establish Asynchronous Communication: )
在命令和查询服务之间实现异步通信机制(如 message brokers 或 event buses)。这允许命令服务发布表示状态变化的事件,查询服务可以订阅这些事件以获得最终的一致性。
8,处理最终一致性(Handle Eventual Consistency:)
开发机制来处理命令和查询服务之间的最终一致性。这可能涉及实现协调流程(reconciliation processes)、补偿事务(compensating transactions),或者使用事件重放(event replay)等技术来保持一致性。
真实例子-在线书店(online bookstore)
1,命令服务(Command Services:)
订单服务(Order Service:)负责处理与订单管理相关的命令。命令包括创建新订单、更新订单状态和处理付款。该服务确保订单在数据库中得到验证、处理和持久化。
库存服务(Inventory Service:)负责管理与库存管理相关的命令。命令包括增加或减少图书库存、更新产品可用性和处理缺货。此服务确保库存变化准确地反映在系统中,并相应地更新库存水平。
2,查询服务(Query Services:)
商品目录服务(Product Catalog Service:)负责处理与产品目录相关的查询。查询包括检索图书信息、按标题或作者搜索图书以及列出可用产品。该服务提供对产品数据的快速有效访问,以便在网站或移动应用程序上显示。
订单历史服务(Order History Service: )负责处理与订单历史记录和客户资料相关的查询。查询包括检索订单详细信息、查看订单历史记录和管理用户配置文件。此服务为客户提供访问其过去订单的权限,并允许他们跟踪订单状态。
3,事件驱动架构(Event-Driven Architecture:)
Event Bus: 事件用于在命令和查询服务之间通信更改。当下了一个新订单(命令)时,将发布一个事件,指示订单的创建。查询服务订阅相关事件并相应地更新其读取模型,从而确保命令端和查询端之间的最终一致性。
4,数据存储(Data Storage:)
写入存储(Write Store (Command Side): )使用为写操作优化的数据库,如关系数据库或NoSQL数据库。命令服务存储与订单、库存变更和其他写操作相关的数据。
读取存储(Read Store (Query Side):)使用单独的数据库进行读操作优化。查询服务维护数据的非规范化视图或投影(projections),以提高查询性能。
5,API Gateway:
Entry Point: API网关充当客户机应用程序与微服务体系结构交互的入口点。
它根据正在执行的操作将请求路由到适当的命令或查询服务。
几个原则和概念
服务边界(Service Boundary):
每个微服务都围绕特定的业务功能或领域定义了一个清晰的边界。该边界封装了与该域相关的命令(command)和查询(query)职责。
关注点分离 (Separation of Concerns):
CQRS强调分离处理命令(commands)(写操作)和处理查询(queries)(读操作)的职责。每个微服务要么专注于处理命令,要么专注于处理查询,但不是两者都做。
独立扩展 (Independent Scaling)
由于命令和查询通常具有不同的性能特征和可伸缩性需求,CQRS允许微服务根据它们处理的工作负载独立扩展。例如,负责处理高频(high-frequency)命令的微服务可以独立于处理复杂查询的微服务进行扩展。
Domain-Driven Design (DDD)领域驱动设计 (Domain-Driven Design (DDD)):
CQRS通常与领域驱动设计原则一起应用。DDD有助于识别有界上下文(bounded contexts)、聚合(aggregates)和域实体(domain entities),然后可以按照CQRS模式将它们映射到微服务。
Event-Driven Architecture:事件驱动的体系结构 (Event-Driven Architecture:)
事件驱动的体系结构通过支持微服务之间的通信和维护分布式系统之间的一致性来补充CQRS。事件可以用来通知其他微服务由于命令执行而导致的状态变化
关注点分离 (Separation of Concerns of CQRS )
命令职责(Command Responsibility)
写操作(Write Operations)
负责处理命令的微服务专注于管理数据修改。它们接收执行更改系统状态的操作的请求,例如创建、更新或删除数据。
验证和业务逻辑:(Validation and Business Logic:)
命令微服务执行业务规则并验证传入请求,以确保数据完整性和一致性。
事务行为:(Transactional Behavior)
命令通常在事务边界内执行,以保证原子性、一致性、隔离性和持久性(ACID属性)。
查询职责(Query Responsibility)
读取操作(Read Operations)
用于处理查询的微服务专注于从系统中检索数据。它们在不改变系统状态的情况下响应信息请求。
优化的数据检索:(Optimized Data Retrieval)
查询微服务优化数据存储和检索机制,以实现高效的读取操作。这可能涉及对数据进行非规范化、采用缓存策略或使用专门的查询语言。
可伸缩性:(Scalability)
查询微服务可以根据读取工作负载独立伸缩,从而实现高效的资源分配和性能优化。
沟通协调:
沟通协调:(Communication and Coordination)
命令-查询分离:(Command-Query Separation)
处理命令的微服务和处理查询的微服务之间存在明确的界限,防止重叠,并确保每个服务都有明确的职责。
异步通信:(Asynchronous Communication)
命令和查询微服务可以异步通信,允许解耦交互和容错。异步消息传递系统或事件驱动的体系结构促进了服务之间的通信。
最终一致性:(Eventual Consistency)
异步通信可以导致命令端和查询端之间的最终一致性。微服务必须优雅地处理最终的一致性场景,确保数据正确性并将用户影响降至最低。
Domain建模:(Domain Modeling)
Domain-Driven Design (DDD):
微服务与DDD原则定义的领域边界保持一致。每个微服务封装了一个特定的领域或业务功能,确保了内聚行为和领域逻辑的封装。
有界上下文(Bounded Contexts)
微服务在域中定义有界上下文,描绘(delineating)应用不同规则和定义的区域。这确保了复杂领域中关注点的清晰和分离。
主要组件(Key Components of CQRS)
命令服务:(Command Service:)
命令处理程序:(Command Handlers:)
负责接收、验证和执行改变系统状态的命令。
领域逻辑:(Domain Logic: )
实现处理命令所需的业务规则和特定于领域的逻辑。
事务行为:(Transactional Behavior):
确保命令执行的原子性、一致性、隔离性和持久性(ACID属性)。
查询服务(Query Service:)
查询处理(Query Handlers: )
查询处理程序:在不修改状态的情况下从系统响应读请求检索数据。
优化的数据访问:(Optimized Data Access: )
利用高效的数据检索机制,如反规范化、缓存或索引,来优化查询性能。
可伸缩性:(Scalability: )
独立扩展以有效地处理不同的读工作负载。
Event Bus or Message Broker:
异步通信:(Asynchronous Communication:)
命令服务和查询服务之间通过事件或消息进行通信。
发布-订阅机制:(Publish-Subscribe Mechanism:)
允许命令服务发布表示状态变化的事件,查询服务可以订阅这些事件以获得最终的一致性。
解耦:(Decoupling: )
支持服务之间的松耦合,提高灵活性和容错性。
数据存储(Data Stores:)
写存储(命令侧):(Write Store (Command Side):)
针对处理写操作(如插入、更新和删除)进行了优化。可能使用NoSQL数据库提高可伸缩性和性能。
Read Store(查询端):(Read Store (Query Side):)
优化了高效的数据检索。可以使用关系数据库进行复杂的查询,或者为特定的用例使用专门的数据存储。
API Gateway or Service Mesh:
入口点:(Entry Point: )
为客户端提供与微服务架构交互的单一入口点。
路由和负载平衡:(Routing and Load Balancing: )
将请求路由到适当的命令或查询服务,并在实例之间平衡负载。
安全和身份验证:(Security and Authentication: )
执行安全策略、身份验证和授权机制。
优势(Advantages of CQRS)
扩展性(Scalability:)
独立扩展(Independent Scaling:)命令和查询服务可以根据它们处理的工作负载独立扩展。这允许更好的资源分配和改进的性能,因为每个服务都可以针对其特定的职责进行优化。
性能优化(Performance Optimization:)
优化的数据访问:(Optimized Data Access: )命令服务和查询服务可以使用针对各自操作优化的单独数据存储机制。例如,命令服务可能使用NoSQL数据库进行快速写操作,而查询服务可能使用关系数据库进行复杂查询。
高效的读操作:(Efficient Read Operations: )查询服务可以对数据进行反规范化,使用缓存策略,或者使用专门的数据存储来优化读操作,提高响应时间。
灵活性和可维护性 (Flexibility and Maintainability:)
关注点分离:(Separation of Concerns: CQRS)CQRS将处理命令(写操作)和处理查询(读操作)的职责分离开来。这种分离使得随着时间的推移更容易理解、维护和发展系统。
模块化:(Modularity)CQRS体系结构中的每个微服务都封装了特定的业务功能或领域,这使得在不影响整个系统的情况下更容易更新或替换单个服务。
改进的性能和响应能力 (Improved Performance and Responsiveness:)
减少阻塞操作:(Reduced Blocking Operations:)分离读和写操作可以减少争用和阻塞,从而提高响应能力和整体系统性能。
异步通信:(Asynchronous Communication: CQRS)CQRS通常涉及服务之间的异步通信,这可以通过将命令执行与查询处理分离来提高响应性。
挑战(Challenges of CQRS)
提升了复杂性(Increased Complexity:)
体系结构复杂性:(Architectural Complexity:)实现CQRS引入了额外的体系结构复杂性,包括需要单独的命令和查询路径、事件溯源和最终的一致性机制。
开发复杂性:(Development Complexity:)为命令和查询服务开发和维护单独的代码库会增加开发开销,特别是对于不熟悉模式的团队。
一致性管理(Consistency Management:)
最终一致性:(Eventual Consistency: )维护命令端和查询端之间的最终一致性可能具有挑战性,特别是在具有高并发性和数据复制延迟的分布式系统中。
同步问题:(Synchronization Issues:)确保由命令传播的数据更新准确地反映在查询结果中,需要仔细的同步机制和对竞争条件的处理。
数据同步:(Data Synchronization:)
数据复制:(Data Duplication: )CQRS通常涉及在命令和查询模型之间复制数据,从而增加了存储需求和保持数据同步的复杂性。
数据完整性:(Data Integrity: )维护跨多个数据存储的数据完整性并确保它们之间的一致性可能具有挑战性,特别是在系统故障或网络分区期间。
操作开销: (Operational Overhead:)
基础设施管理:(Infrastructure Management:)管理运行独立命令和查询服务所需的基础设施,包括部署、监视和扩展,可能会带来额外的操作开销。
监视和调试:(Monitoring and Debugging:)调试和监视基于cqrs的微服务架构需要专门的工具和技术来跟踪命令和事件流并诊断一致性问题。
相关文章:
CQRS Design Pattern in Microservices - CQRS模式
原文链接 CQRS Design Pattern in Microservices - GeeksforGeeks 【文章看起来像是AI写的。。。 😂😂😂】 简介 实现步骤 1,识别有界上下文:(Identify Bounded Contexts:) 2,命…...
Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:药品进销存信息管理系统(前后端源码 + 数据库 sql 脚本)
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 项目介绍 1.1 项目功能 2.0 用户登录功能 3.0 首页界面 4.0 供应商管理功能 5.0 药品管理功能 6.0 采购记录管理功能 7.0 销售记录管理功能 8.0 退货记录管理功能…...
主流webgl 引擎 glsl 如何升级webgpu为 wgsl?
0、背景 SPIR-V、GLSL 和 WGSL 是三种不同的着色语言或中间表示形式,它们在现代图形编程中的关系如下: 1、playcanvas 方案: glsl 转 SPIR-V 转 wgsl 调研版本: "version": "2.4.0-dev"webgpu-shader.js transpile(src, shader…...
SSL证书部署(linux-nginx)
一、SSL证书的作用 HTTP协议无法加密数据,数据传输可能产生泄露、篡改或钓鱼攻击等问题。 SSL证书部署到Web服务器后,可帮助Web服务器和网站间建立可信的HTTPS协议加密链接,为网站安全加锁,保证数据安全传输。 二、前提条件 1.已通过数字证书管理服务控制台签发证书。 …...
SpringBoot3.3.0集成Knife4j4.5.0实战
原SpringBoot2.7.18升级至3.3.0之后,Knife4j进行同步升级(Spring Boot 3 只支持OpenAPI3规范),从原3.0.3(knife4j-spring-boot-starter)版本升级至4.5.0(knife4j-openapi3-jakarta-spring-boot-starter),以下是升级过程与注意事项等 版本信息…...
C# 的反射窗体的使用
C# 的反射窗体的使用 using System; using System.Reflection; using System.Windows.Forms;public class ReflectedFormFactory {public static Form CreateForm(string formName, string assemblyName){// 加载程序集Assembly assembly Assembly.Load(assemblyName);// 获取…...
大模型呼出机器人能够解决哪些问题?
大模型呼出机器人能够解决哪些问题? 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 大模型呼出机器人作为现代科技在客户服务领域的创新应用,能够解决多个方面的问题,以下是…...
密码学——密码学概述、分类、加密技术(山东省大数据职称考试)
大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 密码学 大数据…...
Linux 入门教程:从命令行开始
Linux 是一个强大且灵活的操作系统,广泛应用于服务器、嵌入式设备、开发环境等领域。如果你是刚接触 Linux 的新手,最重要的一步就是掌握命令行操作。虽然 Linux 提供了图形界面,但很多强大功能只能通过命令行来实现。今天,我们就…...
Python中的异步编程:从基础到实践
在现代编程中,异步编程已经成为提高程序性能和响应能力的重要手段。Python,作为一种动态、解释型的高级编程语言,提供了多种异步编程的解决方案。本文将从Python异步编程的基础知识出发,逐步深入到实际应用中,帮助读者理解和掌握这一技术。 1. 异步编程简介 异步编程是一…...
如何使用 Python 实现简单的 Web 服务器?
为了实现一个简单的Web服务器,Python提供了多种方法。对于快速原型设计和学习目的来说,最简单的方法之一是使用内置的http.server模块。 然而,在实际开发中,更常见的做法是使用像Flask或Django这样的框架来构建更为复杂的应用程序…...
【unity小技巧】unity最完美的CharacterController 3d角色控制器,实现移动、跳跃、下蹲、奔跑、上下坡、物理碰撞效果,复制粘贴即用(2024/12/12补充)
最终效果 文章目录 最终效果更好的方式(2024/12/12补充)前言为什么使用CharacterControllerSimpleMove和Move如何选择?1. SimpleMove2. Move 配置CharacterController参数控制相机移动跳跃方式一方式二 下蹲处理下坡抖动问题实现奔跑和不同移…...
6_Sass 选择器函数 --[CSS预处理]
Sass 提供了一系列的选择器函数,用于操作和组合CSS选择器。这些函数可以帮助你更灵活地创建样式规则,并且可以减少重复代码。以下是几个常用的选择器函数及其用法: 1. selector-append($selector1, $selector2...) selector-append($select…...
系列2:基于Centos-8.6Kubernetes 集成GPU资源信息
每日禅语 自省,就是自我反省、自我检查,自知己短,从而弥补短处、纠正过失。佛陀强调自觉觉他,强调以达到觉行圆满为修行的最高境界。要改正错误,除了虚心接受他人意见之外,还要不忘时时观照己身。自省自悟之…...
C# 探险之旅:第三十五节 - 类型class之抽象类 (Abstract Class) 和 抽象方法 (Abstract Method)
👋 嗨,勇敢的探险家们!欢迎再次踏上C#的神秘之旅。今天,我们要进入一片既神秘又充满无限可能的领域——抽象类与抽象函数的奇幻森林。想象一下,你是一名勇敢的骑士,要在这片森林里寻找传说中的“编程之宝”…...
npm内存溢出
项目过大运行项目内存溢出 报错代码 运行内存溢出 increase-memory-limit ‘“node --max-old-space-size8192”’ 不是内部或外部命令,也不是可运行的程序 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of m…...
CSS|08 浮动清除浮动
浮动 需求: 能够实现让多个元素排在同一行,并且给这些元素设置宽度与高度! 让多个元素排在同一行:行内元素的特性 给这些元素设置宽高:块级元素的特性 在标准文档流中的元素只有两种:块级元素和行内元素。如果想让一些元素既要有块级元素的特点也要有行内元素的特…...
【学习笔记】反向传播到底是如何进行的?
文章目录 一、写在前面二、举个例子三、混合损失函数如何进行呢? 一、写在前面 不知道小伙伴们有没有考虑过这种感觉,在最开始学习深度学习的时候,一定都了解过前向传播,反向传播等等,但是在实际的操作过程中却“几乎…...
利用cnocr库完成中文扫描pdf文件的文字识别
很多pdf文件文字识别软件都会收费,免费的网页版可能会带来信息泄露,还有一些类似于腾讯AI和百度AI的接口都有调用次数限制,因此,利用识别正确率极高且免费的cnocr库来自己动手做个pdf文件文字识别程序就是一个很不错的选择。以下程…...
el-table ToggleRowSelection实现取消选中没效果(virtual-scroll)
场景: 就是在虚拟列表el-table选中之后 点击查询 默认之前选中的 现象: 就是实现选中, 但是无法去除勾选等等 问题发现: 看定位的数据 有多个一样的,我想着勾选之前 先去掉勾选 ,但是没效果或者说“相同的…...
Vue入门到精通:运行环境
Vue入门到精通:运行环境 Vue3的运行环境搭建主要有两种方法:一种是直接在页面中引入Vue库,另一种是通过脚手架工具创建Vue项目。 (一)页面直接引入Vue库 页面直接引入Vue库的方法,是指在HTML网页中通过s…...
LNK2001: virtual struct QMetaObject const 错误的解决方法和原因
目录 1.现象 2.原因分析 3.解决方法 3.1.方法1 3.2.方法2 1.现象 今天调整了下工程目录结构(环境是VS2019Qt5.12.12),重新编译突然出现以下错误: 没有修改代码,怎么就出现这个错误了呢?从上面的错误来看,其实就是…...
电脑win11家庭版升级专业版和企业版相关事项
我的是零刻ser9,自带win11家庭版,但是我有远程操控需求,想用windows系统自带的远程连接功能,所以需要升级为专业版。然后在系统激活页面通过更改序列号方式,淘宝几块钱买了个序列号升级成功专业版了。但是,…...
用户认证系统登录界面
下面是使用HTML和JavaScript实现的一个中文版登录界面,包含登录、注册和修改密码功能。注册成功后会显示提示信息,在登录成功后进入一个大大的欢迎页面。 1.代码展示 <!DOCTYPE html> <html lang"zh-CN"> <head><meta …...
深圳国威HB1910数字IP程控交换机 generate.php 远程命令执行漏洞复现
0x01 产品描述: 深圳国威主营国威模拟、数字、IP 交换机、语音网关、IP 电话机及各种电话机。深圳国威电子有限公司HB1910是一款功能强大的网络通信设备,适用于各种企业通信需求。 0x02 漏洞描述: 深圳国威电子有限公司HB1910数字IP程控交换机generate.php存在远程命令执行…...
客户端(浏览器)vue3本地预览txt,doc,docx,pptx,pdf,xlsx,csv,
预览文件 1、入口文件preview/index.vue2、预览txt3、预览doc4、预览pdf5、预览pptx6、预览xlsx7、预览csv 1、入口文件preview/index.vue 预览样式,如pdf 文件目录如图所示: 代码如下 <template><div class"preview-wrap" ref&…...
(八)机器学习 - 线性回归
线性回归(Linear Regression)是一种统计学方法,用于建立一个或多个自变量(解释变量)与因变量(响应变量)之间的线性关系。线性回归的目的是通过最小化预测误差来找到最佳的线性拟合模型ÿ…...
Springboot 整合 Java DL4J 打造金融风险评估系统
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s…...
CSDN博客:如何使用Python的`datasets`库转换音频采样率
CSDN博客:如何使用Python的datasets库转换音频采样率 什么是采样率?代码用途:调整音频数据的采样率完整代码示例代码详解运行结果(示例)总结 在这篇文章中,我们将学习如何使用Python的datasets库对音频数据…...
geoserver(1) 发布sql 图层 支持自定义参数
前提使用postgis 数据库支持关联 join 支持 in,not in,like,及其他sql原生函数 新增sql图层 编写自定义sql 编辑sql语句必须输出带有geom数据 正则表达式去除 设置id以及坐标参考系 预览sql图层效果 拼接sql参数 http://xxx.com/geoserver/weather/wms?SERVICEWMS&VERSI…...
从 Router 到 Navigation:HarmonyOS 路由框架的全面升级与迁移指南
在本教程中,我们深入探讨了 Router 和 Navigation 在 HarmonyOS 中的用法差异及如何从 Router 切换到 Navigation 的方法。重点涵盖了页面跳转、转场动画、生命周期管理以及跨包路由的实现。 页面结构对比 Router 页面结构 每个页面需要使用 Entry 注解。 页面需要…...
http1.1 vs http2.0 速度对比实测
首先对比一下http1.1 vs http2.0 区别: 1. 连接管理: HTTP/1.1: 每个请求/响应都需要一个独立的 TCP 连接,虽然可以使用持久连接(keep-alive)来复用连接,但仍然存在请求队头阻塞(Head-of-Line…...
uniappp配置导航栏自定义按钮(解决首次加载图标失败问题)
1.引入iconfont的图标,只保留这两个文件 2.App.vue引入到全局中 import "./static/fonts/iconfont.css"3.pages.json中配置text为图标对应的unicode {"path": "pages/invite/invite","style": {"h5": {"…...
vue运行项目时local有显示 但是network却显示unavailable
问题描述 日常开发中 和后端本地调试时 后端需要使用你的本地去访问页面 可运行项目时会出现network显示unavailable的情况 解决方式 1.其实这只是vue脚手架对于ip地址获取的方式兼容上有一些问题 但其实是不影响ip访问本地的 你可以直接cmd内ipconfig去查看自己的ip然后…...
【Java学习笔记】JUnit
一、为什么需要 JUnit 二、基本介绍 三、实现方法 第一次添加: 在需要测试的方法处输入 Test注解,快捷键AltInsert选择添加版本(常用JUnit5.4) 出现绿色箭头可进行测试和编译...
Next.js配置教程:构建自定义服务器
更多有关Next.js教程,请查阅: 【目录】Next.js 独立开发系列教程-CSDN博客 目录 前言 1. 什么是自定义服务器? 2. 配置自定义服务器 2.1 基础配置 2.2 集成不同的服务器框架 使用Fastify 使用Koa 3. 自定义服务器的高级功能 3.1 路…...
el-table 动态计算合并行
原始表格及代码 <el-table:data"tableData"class"myTable"header-row-class-name"tableHead" ><el-table-column prop"date" label"日期"> </el-table-column><el-table-column prop"name" …...
【杭州电商商城系统开发建设】
杭州电商商城系统开发建设是一项综合性的工程,它涉及到多个方面的内容。以下是对杭州电商商城系统开发建设的详细分析: 需求分析:深入了解用户需求,包括用户群体特征、购物习惯、支付偏好等,为系统设计提供基础。明确…...
架构实践05-互联网架构模板
零、文章目录 架构实践05-互联网架构模板 1、技术演进的方向 (1)技术演进的方向判断 潮流派:热衷于新技术,紧跟技术潮流,但可能面临技术不成熟的风险和学习成本。保守派:强调稳定,对新技术持…...
家校通小程序实战教程10部门管理前后端连接
目录 1 加载后端的数据2 为什么不直接给变量赋值3 保存部门信息4 最终的效果5 总结 现在部门管理已经完成了后端功能和前端开发,就需要在前端调用后端的数据完成界面的展示,而且在录入部门信息后需要提交到数据库里,本篇我们介绍一下前后端如…...
【前端面试题】书、定位问题、困难
看过什么书 《JavaScript 高级程序设计(第 4 版)》(作者:Matt Frisbie) 这是一本深入学习 JavaScript 语言的经典书籍。它详细地涵盖了 JavaScript 的高级特性,包括原型链、闭包、异步编程等复杂概念。以闭…...
VSCode设置字体
参考文章:【面向小白】vscode最佳实践(2)—— 字体设置(fira code更纱黑体),这篇文章末尾给了安装字体的链接。 配置的字体还是很好看的。 ‘Fira Code Retina’, ‘Sarasa Mono Sc’ 需要注意的一个点&am…...
《机器学习》2.4假设检验 t分布 F分布
目录 t发布 注意是这个东西服从t分布 数据服从t分布通常是在以下情况下: 以下是一些具体的例子,说明在何种情况下数据会服从t分布: t检验 交叉验证t检验 样本方差编辑 F分布(fisher Friedman检验是一种非参数统计方法&a…...
Mysql之视图
MySQL 视图(View) 1. 概念 视图是一个虚拟的表,它是基于 SELECT 查询的结果集。视图不存储实际数据,而是动态地从基表中提取数据。视图可以简化复杂查询、提高数据安全性(限制访问特定列或行)以及提供数据…...
kafka学习笔记
kafka消息中间件精讲 - B站动力节点 JDK17在Windows安装及环境变量配置超详细的教程 Windows 多版本java 装多个版本jdk Windows同时安装多个JDK jdk17下载与安装教程(win10),超详细 jdk17-archive-downloads 如何在IDEA中配置指定JDK版…...
【保姆级教程】基于OpenCV+Python的人脸识别上课签到系统
【保姆级教程】基于OpenCVPython的人脸识别上课签到系统 一、软件安装及环境配置1. 安装IDE:PyCharm2. 搭建Python的环境3. 新建项目、安装插件、库 二、源文件编写1. 采集人脸.py2. 训练模型.py3. 生成表格.py4. 识别签到.py5. 创建图形界面.py 三、相关函数分析1.…...
LVS能否实现两台服务器的负载均衡
LVS能否实现两台服务器的负载均衡 是的,LVS(Linux Virtual Server)可以实现两台服务器的负载均衡,并且它非常适合这种场景。 LVS(Linux Virtual Server)简介: LVS 是一种基于 Linux 的负载均…...
智能人体安全防护:3D 视觉技术原理、系统架构与代码实现剖析
随着工业化程度的提高,生产安全已成为企业关注的重点。尤其是在一些存在禁区的工业厂区和车间,人员误入或违规进入将带来严重的安全隐患。为了解决这一问题,迈尔微视推出了智能人体安全检测解决方案,为企业提供全方位的人员安全监…...
JAVA后端实现全国区县下拉选择--树形结构
设计图如图: 直接上代码 数据库中的格式: JAVA实体类: Data public class SysAreaZoningDO {private Long districtId;private Long parentId;private String districtName;private List<SysAreaZoningDO> children; } MapperSQL语句…...
DVWA及其他常见网络靶场
常见网络靶场 Metasploitable2 介绍: Metasploitable2 是一个用于安全培训和测试渗透测试工具的虚拟靶机。它故意配置了许多已知的安全漏洞,涵盖了操作系统、网络服务等多个方面。基于 Ubuntu Linux 操作系统构建,包含了如 Apache、MySQL、FT…...