微服务瞎写

1.微服务解决的问题

1、如何发现新节点以及检查各节点的运行状态?

2、如何发现服务及负载均衡如何实现?

3、服务间如何进行消息通信?

4、如何对使用者暴露服务API?

5、如何集中管理各节点配置文件?

6、如何收集各节点日志并统一管理?

7、如何直观的了解各节点间的调用链路?

8、如何对系统进行链路保护,避免服务雪崩?

2.微服务架构包含哪些组件

1.注册中心(Service Registry)

Eruka、nacos解决(如何发现新节点以及检查各节点的运行状态)的问题

2.负载均衡(Load Balance)

服务端负载均衡:如 Nginx、HAProxy、Consul、Envoy、Istio、Traefik 

客户端负载均衡:如 Ribbon、Spring Cloud Load Balancer

解决(服务及负载均衡如何实现的问题

3.服务通信(Communication)

服务通信组件解决了问题3(服务间如何进行消息通信)

服务间通信采用轻量级协议,通常是HTTP RESTful风格。但因为RESTful风格过于灵活,必须加以约束,通常应用时对其封装。

在SpringCloud中就提供了OpenFeign(http请求调用的轻量级框架,它集成了 Ribbon 以实现负载均衡,并且与 Eureka、Consul 等服务发现组件无缝对接)RestTemplate两种技术屏蔽底层的实现细节,所有开发者都是基于封装后统一的SDK进行开发,有利于团队间的相互合作。

@FeignClient("providerNacos")
public interface USerServices {@GetMapping("user/findAll/{id}")public usersss questUser(@PathVariable("id") Integer id);
}

OpenFeign 是 Spring Cloud 在Feign 的基础上支持了 SpringMVC的注解如 @RequesMapping 等等。

OpenFeign 的 @FeignClient 可以解析 SpringMVC 的 @RequestMapping 注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

所以OpenFeign可以不实现Services的实现类(注:consumer的controller方法映射的provider中的controller中的方法参数以及Restful风格请求必须相同

4、API服务网关(API Gateway)

Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式

服务网关主要是解决问题4(如何对使用者暴露服务API),对于最终调用方来说,微服务的通信与各种实现细节应该是透明的,调用者只需关注他要使用的 API 接口即可

因此微服务架构引入的服务网关控制用户的访问权限

服务网关是外部环境访问内部微服务的唯一途径;

在这个基础上还可以扩展出其他功能,例如:用户认证与授权、容错限流、动态路由、A/B测试、灰度发布等。

GateWay和Nginx的区别与联系

下图当中圈出来的就是Gateway所在的位置。

而Nginx属于在Gateway上层。甚至可以在外部请求的上层,因为Nginx可以用来做网关层的负载均衡,同时他还可以用来做流量入口。因为他本身就是服务器,实际开发当中都是通过Nginx来做流量入口的。

流量入口的意思就是假如我有个html放到linux当中,那么外面的人怎么才能访问到linux当中的页面呢?

Nginx可以用来解决这个问题,他本身就是一个服务器,使用过程就是开启端口然后监听请求,当请求来了,可以将请求 指向本机的任意可访问的html文件。

Gateway可以称之为微服务网关(业务网关),而Nginx可以作为整个应用的流量网关,以及微服务网关的负载均衡

gateway三大核心概念


Route(路由):路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如果断言为true则匹配该路由。
Predicate(断言):参考的是Java8的java.util.function.Predicate,开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由
Filter(过滤):指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。

           +---------------------------+|  请求到达网关 (Client)      |+---------------------------+|v+---------------------------+|  请求进入网关(Dispatcher)  ||  (网关的入口处理模块)      |+---------------------------+|v+---------------------------+|  过滤器链执行 (Filters)     |  <-- 过滤操作(例如认证、授权、日志记录等) |  **(过滤)**                |+---------------------------+|v+---------------------------+|  路由 (Routing)             |  <-- 根据路由规则选择目标服务|  **(路由)**                 |+---------------------------+|v+---------------------------+|  服务发现 & 负载均衡 (Load   |  <-- 选择合适的后端实例|  Balancing)                |+---------------------------+|v+---------------------------+|  转发请求到后端服务         |+---------------------------+|v+---------------------------+|  响应返回给网关             |+---------------------------+|v+---------------------------+|  响应过滤器链执行 (Response) |  <-- 处理响应(例如修改响应内容、增加头信息等)|  **(过滤)**                |+---------------------------+|v+---------------------------+|  响应返回给客户端           |+---------------------------+

5.配置中心(Config Management)

配置中心主要解决了问题5(如何集中管理各节点配置文件);

在微服务架构下,所有的微服务节点都包含自己的各种配置文件,如jdbc配置、自定义配置、环境配置、运行参数配置等。要知道有的微服务可能可能有几十个节点,如果将这些配置文件分散存储在节点上,发生配置更改就需要逐个节点调整,将给运维人员带来巨大的压力。

配置中心便由此而生,通过部署配置中心服务器,将各节点配置文件从服务中剥离,集中转存到配置中心。一般配置中心都有UI界面,方便实现大规模集群配置调整。

1. Spring Cloud Config

Spring Cloud Config 是 Spring 官方提供的配置中心,支持将配置集中化存储,并通过服务端和客户端的方式动态获取和管理配置。它支持 Git、SVN 等版本控制工具作为配置的存储源,还可以将配置存储在数据库、文件系统等地方。

  • Spring Cloud Config Server:作为配置服务器,管理配置信息,并向客户端提供配置。
  • Spring Cloud Config Client:配置客户端,应用通过它来获取配置,并支持动态刷新配置。

2. Nacos

Nacos 是阿里巴巴开源的动态服务发现、配置管理和服务管理平台。它不仅支持配置中心的功能,还提供服务注册和发现的功能,是一个统一的微服务管理平台。Nacos 提供了丰富的功能,包括多种配置存储方式、配置的实时推送、以及支持分布式环境的配置管理。

特点

  • 支持服务发现和配置管理功能。
  • 支持多种数据源存储配置,包括 MySQL、文件系统等。
  • 实时推送配置,支持动态配置更新。
  • 多环境、多语言支持。
  • 提供简洁的 Web 控制台管理界面。

使用场景

  • 微服务架构下的服务发现和配置中心合并使用。
  • 需要统一管理服务与配置的场景。

3. Zookeeper

Zookeeper 是 Apache 提供的一个分布式协调服务,常用于配置管理、服务发现、锁机制等场景。虽然 Zookeeper 不是专门为配置管理而设计的,但它广泛应用于分布式系统中,且可以通过其提供的键值存储机制来实现配置管理。

特点

  • 高可用性和一致性,适用于分布式系统。
  • 支持配置动态更新。
  • 适合用于存储少量、关键的配置信息。
  • 提供丰富的原子操作,适合高并发访问。

使用场景

  • 在需要分布式协调和配置管理的场景下使用。
  • 与大规模的分布式系统结合使用,如大数据平台。

6、集中式日志管理(Centralized Logging)


集中式日志主要是解决了问题6(如何收集各节点日志并统一管理)

微服务架构默认将应用日志分别保存在部署节点上,当需要对日志数据和操作数据进行数据分析和数据统计时,必须收集所有节点的日志数据。

那么怎么高效收集所有节点的日志数据呢?业内常见的方案有ELK、EFK。通过搭建独立的日志收集系统,定时抓取各节点增量日志形成有效的统计报表,为统计和分析提供数据支撑。

1. 日志采集(Log Collection)

日志采集是集中式日志管理的第一步,主要目的是将各个微服务产生的日志信息收集并传输到日志存储系统。

  • Fluentd

    • 一个开源的数据收集器,可以收集、聚合、转发日志数据。支持多种输入和输出插件,广泛应用于微服务架构中。
    • Fluentd 具有高度的可扩展性和灵活性,可以将日志从各个微服务收集到中央存储,如 Elasticsearch、Kafka 等。
  • Logstash

    • Logstash 是 Elastic Stack 的一部分,广泛用于日志的收集、过滤、转换和转发。
    • 它能够处理不同类型的日志源,并支持各种输出目标,如 Elasticsearch、文件系统等。
  • Filebeat

    • 也是 Elastic Stack 的一部分,Filebeat 是一个轻量级的日志收集器,通常用于从各个微服务节点或容器中收集日志文件并转发到 Logstash 或 Elasticsearch。
    • 它适用于日志文件或标准输出流日志的收集。

2. 日志存储(Log Storage)

存储日志数据的主要目标是保证高效查询和分析。常见的日志存储组件有:

  • Elasticsearch:

    • 是一个分布式搜索引擎,广泛用于日志存储和搜索。它是 Elastic Stack(以前的 ELK Stack,Elasticsearch、Logstash、Kibana)的核心组件,能够高效地存储大规模日志数据,并支持高效的查询和分析。
    • 配合 Logstash 或 Fluentd,可以实现强大的日志存储和索引功能。
  • Kafka:

    • Kafka 是一个分布式的消息队列系统,也可以作为日志存储的中间层,特别适用于实时日志流处理。
    • Kafka 将日志数据分区并存储在分布式日志系统中,可以承载高吞吐量的日志流。
  • OpenSearch:

    • OpenSearch 是基于 Elasticsearch 的开源搜索和分析引擎,常作为替代 Elasticsearch 的解决方案。它同样支持强大的日志存储和检索功能。

3. 日志分析与可视化(Log Analysis and Visualization)

一旦日志数据被收集并存储,接下来的工作就是对日志进行分析和可视化,以便能够从中提取有价值的信息,如错误分析、性能监控、趋势分析等。

  • Kibana:

    • Kibana 是 Elastic Stack 的可视化工具,常与 Elasticsearch 配合使用,提供强大的日志分析、可视化和监控能力。你可以使用 Kibana 创建实时的仪表板、图表、聚合查询等,帮助开发者和运维人员快速发现问题。
  • Grafana

    • Grafana 是一个开源的数据可视化和监控工具,通常与 Prometheus 配合使用,但也可以集成 Elasticsearch 用于日志数据的展示。
    • 它支持创建自定义仪表板,提供多种图形、表格、时间序列数据展示,帮助分析日志的趋势和异常。

4. 日志管理平台(Log Management Platforms)

除了单独的开源组件,许多企业选择使用全功能的集中式日志管理平台来简化日志收集、存储和分析的工作:

  • ELK Stack(Elasticsearch + Logstash + Kibana):

    • 这是最常用的开源日志管理平台,能够提供日志的收集、存储、索引、搜索和可视化的完整解决方案。
    • ELK Stack 是目前微服务架构中非常受欢迎的选择,尤其适用于需要实时日志分析和强大查询能力的场景。
  • EFK Stack(Elasticsearch + Fluentd + Kibana):

    • EFK Stack 与 ELK Stack 相似,只是使用 Fluentd 代替了 Logstash 作为日志收集器。Fluentd 的配置和扩展能力使得它适合在大规模分布式环境中使用。
  • Graylog

    • Graylog 是一个基于 Elasticsearch 和 MongoDB 的集中式日志管理平台。它提供了强大的日志搜索和分析功能,并且可以轻松地处理来自多种数据源的日志数据。
    • Graylog 提供了易于使用的用户界面,适用于中大型企业进行日志管理。
  • Splunk

    • Splunk 是一个商业化的日志管理平台,广泛应用于企业级应用中。它支持高效的日志收集、存储、搜索和分析,并且提供了丰富的报表和告警功能。
    • Splunk 支持与微服务架构的集成,可以有效地处理大规模日志数据。

5. 日志聚合与管理(Log Aggregation and Management)

除了上述的日志收集、存储和分析工具外,还有一些专门的日志聚合和管理工具,用于简化日志流的处理和优化查询。

  • Prometheus(主要用于监控,但也可以与日志结合):

    • Prometheus 是一个开源的监控和警报系统,通常与容器和微服务配合使用。虽然它主要用于指标监控,但也可以与日志处理系统集成,为日志数据提供实时监控能力。
  • Jaeger / Zipkin(分布式追踪):

    • 虽然 Jaeger 和 Zipkin 是用于分布式追踪的工具,但它们也能生成与日志数据紧密相关的追踪信息,帮助调试和分析微服务架构中的问题。

总结

集中式日志管理的关键组件包括日志采集工具(如 Fluentd、Logstash、Filebeat)、日志存储系统(如 Elasticsearch、Kafka、OpenSearch)、日志分析与可视化工具(如 Kibana、Grafana)以及日志管理平台(如 ELK Stack、Graylog、Splunk)。这些工具可以协同工作,实现对微服务架构中海量日志数据的高效收集、存储、分析和可视化,帮助开发和运维团队监控系统、诊断问题并优化性能。

7、分布式链路追踪(Distributed Tracing)


分布式链路追踪解决了问题7(如何直观的了解各节点间的调用链路)

系统中一个复杂的业务流程,可能会出现连续调用多个微服务,我们需要了解完整的业务逻辑涉及的每个微服务的运行状态,通过可视化链路图展现,可以帮助开发人员快速分析系统瓶颈及出错的服务。

  • OpenTelemetry:标准化的追踪工具,支持多种后端。
  • Jaeger:强大的开源追踪系统,适合大规模微服务架构。
  • Zipkin:轻量级的分布式追踪系统,易于部署。
  • AWS X-Ray:AWS 提供的托管追踪服务。
  • Google Cloud Trace:专为 Google Cloud 环境设计的链路追踪工具。
  • Honeycomb:专注于事件流和高效查询的现代追踪平台。

8、服务保护(Service Protection)


服务保护主要是解决了问题8(如何对系统进行链路保护,避免服务雪崩)

在业务运行时,微服务间互相调用支撑,如果某个微服务出现高延迟导致线程池满载,或是业务处理失败。这里就需要引入服务保护组件来实现高延迟服务的快速降级,避免系统崩溃。

服务保护(Service Protection) 是指确保微服务系统的可用性、安全性和稳定性,防止单个服务的故障、恶意攻击或异常流量对整个系统产生影响。服务保护涉及多个方面,包括流量控制、故障隔离、限流、熔断、鉴权、认证、加密、日志监控等。以下是常用的服务保护组件和技术,它们在微服务架构中起到了重要的保护作用。

1. 流量控制与负载均衡

流量控制的目的是确保系统在高负载、突发流量的情况下能够稳定运行。负载均衡组件可以有效地分配流量,防止单个服务或节点承受过大压力。

常见组件:

  • Nginx / HAProxy:作为反向代理和负载均衡器,它们可以根据负载动态分配请求,提供高可用性。
  • Istio:作为服务网格,Istio 提供了丰富的流量控制功能,如流量路由、重试、超时、限流等。它能自动进行负载均衡,基于策略调节流量流向。
  • Envoy:作为微服务架构中的数据平面代理,Envoy 能处理入站和出站流量,提供高级的流量管理、负载均衡、路由和熔断等功能。
  • Consul:提供健康检查和负载均衡能力,帮助服务之间的流量调度。

2. 限流与熔断

限流和熔断是服务保护中最重要的两项功能,目的是防止某个服务因过载而崩溃,进而影响整个系统的稳定性。

限流:

  • Rate Limiting:通过限制每个客户端或每个用户在一定时间内的请求次数,防止系统过载。
  • 常见组件
    • Envoy:通过其代理功能可以配置细粒度的流量管理和限流策略。
    • API Gateway:如 KongZuul 等 API 网关一般都具备限流功能,能够根据请求频率限制访问。
    • Redis可用于实现分布式限流,通过 Redis 存储用户的请求计数和时间戳,进行实时流量限制。
    • Sentinal流量防卫兵

熔断:

熔断的作用是在服务出现异常时,及时中断故障请求,防止错误进一步蔓延到其他系统。

  • Hystrix(Netflix):Hystrix 是一个流行的熔断器实现,能够在服务失败时迅速触发熔断机制,避免服务连锁崩溃。虽然 Netflix 已经不再积极维护 Hystrix,但它仍然是熔断机制的经典实现。
  • Resilience4j:是 Hystrix 的轻量级替代品,提供限流、熔断、重试等功能。
  • Istio:提供了基于策略的熔断、重试、故障注入等功能,可以保护微服务免受依赖服务的不稳定性影响。

3. 身份验证与授权

微服务中的身份验证和授权确保系统资源只能被合法用户访问,防止未授权的访问或恶意攻击。

常见组件:

  • OAuth 2.0 & OpenID Connect:通过授权服务器和身份提供者管理身份验证和授权。OAuth 2.0 用于访问令牌的颁发,OpenID Connect 扩展了 OAuth 2.0,用于用户身份验证。
    • Keycloak:开源的身份和访问管理工具,支持 OAuth 2.0、OpenID Connect 和 SAML 协议,集成方便,常用于微服务架构中的身份验证和授权。
    • Auth0:一个云托管的身份验证服务,支持多种认证协议,并能方便地与微服务架构结合。
    • Okta:另一种身份和访问管理服务,提供集中化的身份认证服务。
API Gateway 鉴权:
  • KongZuulAmbassador:这些 API 网关通常提供集中的身份认证和授权服务,在请求进入微服务之前进行验证,确保请求是合法的。

4. 加密与数据保护

微服务架构中的通信需要通过加密来保护数据的隐私和完整性。加密技术确保数据在传输过程中的安全性,避免敏感信息泄露。

常见组件:

  • TLS / SSL:加密协议(如 TLS 和 SSL)可用于加密微服务间的通信,防止中间人攻击和数据窃听。
  • HashiCorp Vault:开源的秘密管理工具,可以安全地存储和访问敏感数据(如 API 密钥、证书、数据库凭据等)。
  • AWS KMS / Google Cloud KMS:云服务提供商的密钥管理服务,用于加密数据,确保数据的保密性。
  • Envoy:在服务网格中提供加密通信,支持透明的 TLS 加密和解密。

5. 故障恢复与隔离

微服务架构的高可用性和稳定性依赖于良好的故障恢复机制和服务隔离设计。通过容错设计,可以让系统在出现问题时能够自动恢复,保证服务的可用性。

常见组件:

  • Istio:作为服务网格,Istio 提供了强大的流量管理和故障隔离能力。比如可以实现基于请求的重试、超时控制和熔断。
  • Kubernetes:Kubernetes 提供了容器编排和自动化部署的功能,支持水平扩展和故障恢复。通过 Pod 的副本和健康检查,Kubernetes 可以确保服务的高可用性。
  • Circuit Breaker (熔断器):如 Hystrix、Resilience4j 等熔断器工具,帮助系统在部分服务出现故障时避免 cascading failure(级联故障),并快速恢复。

6. 审计与日志监控

通过日志记录和监控,可以实时发现并应对系统中的潜在问题,防止攻击和服务滥用。审计日志可以帮助追踪每个用户和服务的行为,确保透明性和合规性。

常见组件:

  • ELK Stack (Elasticsearch, Logstash, Kibana):用于日志收集、存储和可视化。可以帮助团队实时监控系统日志,发现潜在的攻击或异常。
  • Prometheus + Grafana:Prometheus 用于收集微服务的监控数据,Grafana 用于可视化和报警。可以对微服务的性能进行全面监控。
  • Fluentd:用于日志收集、转发和处理,通常与 ELK Stack 或其他日志分析工具配合使用。
  • Jaeger:分布式链路追踪工具,可以帮助追踪服务间的请求流,发现服务间的瓶颈或异常。

7. API Gateway 保护功能

API 网关是微服务架构中的重要组件,它不仅提供统一的流量入口,还可以实现多种服务保护功能,如:

  • 身份认证(集成 OAuth、JWT)
  • 流量限流与熔断
  • 访问控制(基于角色的访问控制,RBAC)
  • 请求/响应转换(如 JSON 转换、API 版本管理)
  • 负载均衡故障转移

常见的 API Gateway 组件:

  • Kong:一个高性能的开源 API 网关,支持流量管理、认证、限流等功能。
  • Ambassador:基于 Envoy 的 API 网关,具有强大的流量控制、API 安全性和监控能力。
  • Zuul:Netflix 提供的 API Gateway,支持路由、限流、认证等功能。

总结

微服务架构中的服务保护是确保系统稳定性、安全性和可靠性的关键。常见的服务保护技术和组件包括:

  • 流量控制与负载均衡:如 Nginx、Istio、Envoy、Kong 等。
  • 限流与熔断:如 Hystrix、Resilience4j、Istio、API Gateway 等。
  • 身份验证与授权:如 OAuth 2.0、OpenID Connect、Keycloak、Auth0、Okta 等。
  • 加密与数据保护:如 TLS/SSL、HashiCorp Vault、AWS KMS 等。
  • 故障恢复与隔离:如 Kubernetes、Istio、熔断器模式等。
  • 日志监控与审计:如 ELK Stack、Prometheus + Grafana、Jaeger 等。

这些组件和技术可以有效地保障微服务架构的高可用性、安全性以及故障恢复能力,帮助开发团队实现服务的保护。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/472861.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

群控系统服务端开发模式-应用开发-前端图片格式功能开发

一、添加视图 在根目录下src文件夹下views文件夹下param文件夹下grade文件夹下&#xff0c;新建index.vue&#xff0c;代码如下 <template><div class"app-container"><div class"filter-container" style"float:left;"><…

创建vue+electron项目流程

一个vue3和electron最基本的环境搭建步骤如下&#xff1a;// 安装 vite vue3 vite-plugin-vue-setup-extend less normalize.css mitt pinia vue-router npm create vuelatest npm i vite-plugin-vue-setup-extend -D npm i less -D npm i normalize.css -S &#xff0…

Android Studio 控制台输出的中文显示乱码

1. Android Studio 控制台输出的中文显示乱码 1.1. 问题 安卓在调试阶段&#xff0c;需要查看app运行时的输出信息、出错提示信息。乱码&#xff0c;会极大的阻碍开发者前进的信心&#xff0c;不能及时的根据提示信息定位问题&#xff0c;因此我们需要查看没有乱码的打印信息。…

常见的测试方法

软件测试是软件⽣命周期中的⼀个重要环节&#xff0c;具有较⾼的复杂性&#xff0c;对于软件测试&#xff0c;可以从不同的⻆度加以分类&#xff0c;使开发者在软件开发过程中的不同层次、不同阶段对测试⼯作进⾏更好的执⾏和管理测试的分类⽅法。 按照测试目标分类 界面测试…

Linux驱动开发第2步_“物理内存”和“虚拟内存”的映射

“新字符设备的GPIO驱动”和“设备树下的GPIO驱动”都要用到寄存器地址&#xff0c;使用“物理内存”和“虚拟内存”映射时&#xff0c;非常不方便&#xff0c;而pinctrl和gpio子系统的GPIO驱动&#xff0c;非常简化。因此&#xff0c;要重点学习pinctrl和gpio子系统下的GPIO驱…

【0x001C】HCI_Write_Page_Scan_Activity详解

目录 一、命令概述 二、命令格式和参数说明 2.1. HCI_Write_Page_Scan_Activity命令格式 2.2. Page_Scan_Interval 2.3. Page_Scan_Window 三、响应事件及参数说明 3.1. HCI_Command_Complete事件 3.2. Status 3.3. 示例 四、命令执行流程 4.1. 命令发起阶段(主机端…

【AI图像生成网站Golang】雪花算法

AI图像生成网站 目录 一、项目介绍 二、雪花算法 三、JWT认证与令牌桶算法 四、项目架构(等待更新) 五、图床上传与图像生成API搭建(等待更新) 六、项目测试与调试(等待更新) 雪花算法 雪花算法 (Snowflake) 是一种高效、可扩展的分布式唯一ID生成算法&#xff0c;最早…

JMeter与大模型融合应用之JMeter日志分析服务化实战应用

JMeter与大模型融合应用之JMeter日志分析服务化 引言 在当今的互联网时代,网站和应用程序的性能直接影响到用户的体验和业务的成功。为了保证系统的稳定性和高效性,性能测试成为了软件开发过程中的一个重要环节。在这其中,Apache JMeter作为一款开源的性能测试工具,凭借其…

Docker环境搭建Cloudreve网盘服务(附shell脚本一键搭建)

Docker搭建Cloudreve Cloudreve介绍&#xff1a; Cloudreve 是一个基于 ThinkPHP 框架构建的开源网盘系统&#xff0c;旨在帮助用户以较低的成本快速搭建起既能满足个人也能满足企业需求的网盘服务。Cloudreve 支持多种存储介质&#xff0c;包括但不限于本地存储、阿里云OSS、…

浪浪云轻量服务器搭建vulfocus网络安全靶场

什么是网络安全靶场 网络安全靶场是一个模拟真实网络环境的训练平台&#xff0c;旨在为网络安全专业人员提供一个安全的环境来测试和提高他们的技能。靶场通常包括各种网络设备、操作系统、应用程序和安全工具&#xff0c;允许用户在其中进行攻击和防御练习。以下是网络安全靶…

对称加密算法DES的实现

一、实验目的 1、了解对称密码体制基本原理 2、掌握编程语言实现对称加密、解密 二、实验原理 DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位&#xff0c;产生最大 64 位的分组大小。这是一个迭代的分组密码&#xff0c;使用称为 Feistel 的技术&#xff0c;其中将加密…

【linux学习指南】VSCode部署Ubantu云服务器,与Xshell进行本地通信文件编写

文章目录 &#x1f4dd;前言&#x1f320; 步骤&#x1f309;测试同步 &#x1f6a9;总结 &#x1f4dd;前言 本文目的是讲使用Vscode连接Ubantu,与本地Xshell建立通信同步文件编写。 查看本机系统相关信息&#xff1a; cat /etc/lsb*DISTRIB_IDUbuntu: 表示这是 Ubuntu 发行…

实战:一文讲透模糊匹配的三种方式的区别

在 SQL 查询中,模糊查询是我们常用的工具之一。LIKE 关键字配合 % 符号,可以实现前缀匹配、后缀匹配和包含匹配等多种查询方式。然而,不同的匹配方式对查询性能会有显著影响。本文将详细探讨在 SQL 查询中,字符串前后加 % 与只在后面加 % 的性能差异及其应用场景。 一、SQL…

利用Blackbox AI让编程更轻松

引言 随着人工智能技术的发展&#xff0c;AI已经成为工作中不可缺少的工具之一。俗话讲“术业有专攻”&#xff0c;对AI来说当然也是如此。由于训练集、调教等方面的差别&#xff0c;不同的AI适用的工作也不尽相同。在编程辅助方面&#xff0c;已经有一系列比较成熟的平台&…

Vue学习记录03

响应式基础 声明响应式状态 ref() 在组合式API中&#xff0c;推荐使用ref()函数来声明响应式状态&#xff1a; import { ref } from vueconst count ref(0) ref()接收参数&#xff0c;并将其包裹在一个带有.value属性的ref对象中返回&#xff1a; const count ref(0)con…

排序排序的概念及其运用和选择排序

排序排序的概念及其运用和选择排序 7. 排序7.1 排序的概念及其运用7.2 选择排序算法——直接选择排序选择排序基本思想&#xff1a;直接选择排序选择排序原理参考程序 如何交换数据直接选择排序的特性总结&#xff1a; 7. 排序 7.1 排序的概念及其运用 排序&#xff1a;所谓排…

【目标检测】用YOLOv8-Segment训练语义分割数据集(保姆级教学)

前言 这篇教程会手把手带你用 YOLOv8-Segment 搭建一个属于自己的分割任务项目。从环境配置到数据集准备&#xff0c;再到模型训练和测试&#xff0c;所有步骤都有详细说明&#xff0c;适合初学者使用。你将学会如何安装必要的软件&#xff0c;标注自己的数据&#xff0c;并使…

爬虫开发工具与环境搭建——开发工具介绍

第二章&#xff1a;爬虫开发工具与环境搭建 第一节 开发工具介绍 爬虫开发需要一些合适的工具和框架来高效地抓取网页数据。在这节中&#xff0c;我们将介绍常用的开发工具&#xff0c;帮助开发者快速搭建爬虫开发环境。 1. Python与爬虫框架选择 Python因其简洁、易学的语法…

类和对象——拷贝构造函数,赋值运算符重载(C++)

1.拷⻉构造函数 如果⼀个构造函数的第⼀个参数是自身类类型的引用&#xff0c;且任何额外的参数都有默认值&#xff0c;则此构造函数也叫做拷贝构造函数&#xff0c;也就是说拷贝构造是⼀个特殊的构造函数。 // 拷贝构造函数//d2(d1) Date(const Date& d) {_year d._yea…

高级数据结构——hash表与布隆过滤器

文章目录 hash表与布隆过滤器1. hash函数2. 选择hash函数3. 散列冲突3.1 负载因子3.2 冲突解决3. STL中的散列表 4. 布隆过滤器4.1 背景1. 应用场景2. 常见的处理场景&#xff1a; 4.2 布隆过滤器构成4.3 原理4.4 应用分析4.5 要点 5. 分布式一致性hash5.1 缓存失效问题 6. 大数…