8大service mesh框架大比拼,Istio不是唯一的选择!

news2024/11/18 6:35:26

文章目录

      • 一、Isito
      • Consul
      • Linkerd
      • Kuma
      • Open Service Mesh
      • Meshery
      • Traefik Mesh
      • Service Mesh Interface(SMI)

公众号: MCNU云原生,文章首发地,欢迎微信搜索关注,更多干货,第一时间掌握!

service mesh可谓现在最前沿的技术之一,其中istio更是广为流传,但是实际上istio可不是唯一,还有很多优秀的service mesh框架均有独特的功能特性,有自己特别的优势。

本文精选了8个热门的优秀Service Mesh框架进行介绍,干货有点多,慢慢看来~

一、Isito

  • github项目名称:istio/istio
  • Star数量:30K

云原生架构的兴起带来了微服务的繁荣,但随之而来的挑战也逐渐显现。服务间通信、流量管理、安全性和可观察性等问题变得日益复杂。为了应对这些挑战,我们有幸拥有一款强大的工具,它就是Istio,服务网格的冠军。

Istio是一个开源项目,旨在简化和增强微服务架构的管理和通信。它提供了一套强大的功能和工具,使得构建、连接、保护和观察微服务变得更加容易。

  1. 流量管理: Istio的流量管理功能为我们提供了灵活而强大的流量控制。我们可以通过它来实现流量路由、负载均衡、故障转移和熔断等策略。无论是根据请求类型将流量路由到不同的微服务版本,还是使用熔断策略来保护整个系统的稳定性,Istio都能轻松应对。最重要的是,我们可以在运行时实时更改这些配置,而不需要重新部署应用程序。
  2. 安全性: 对于微服务架构而言,安全性是至关重要的。Istio通过提供端到端的安全通信来保护服务间的通信。它支持强大的认证、授权和加密机制,确保只有授权的服务能够相互通信。我们可以定义细粒度的访问控制策略,保护敏感数据的安全性。此外,Istio还提供了插件和工具来简化密钥管理和安全性配置。
  3. 可观察性: Istio通过集成流量跟踪、日志记录和指标收集等工具,提供了丰富的可观察性功能。我们可以深入了解微服务之间的交互和性能。使用Istio的仪表板和可视化工具,我们能够实时监控流量、诊断问题,并进行性能优化。这使我们能够更好地理解系统的行为,并迅速解决潜在的问题。
  4. 平台兼容性: Istio与多种平台和环境兼容,包括Kubernetes、虚拟机和云原生环境。无论我们的技术栈或基础设施选择什么样,Istio都能够无缝集成。它与各种编程语言和框架兼容,使得使用Istio变得更加简单和便捷。无论是在开发、测试还是生产环境中,我们都可以轻松地将Istio作为微服务架构的一部分。
  5. 社区支持和生态系统: Istio拥有一个活跃的开源社区,得到了众多开发者和公司的支持。这个社区致力于不断改进和增强Istio,为我们提供更好的使用体验。此外,Istio还拥有丰富的插件生态系统,我们可以根据自己的需求选择适合的插件,扩展和定制Istio的功能。

Istio作为服务网格框架的领导者,为云原生微服务架构带来了巨大的好处。它的流量管理、安全性和可观察性功能使我们能够更好地控制和保护微服务,同时提供了灵活性和可扩展性。我鼓励大家深入了解和尝试使用Istio,它将为我们的云原生开发带来更高的效率和更好的体验。让我们一起踏上这段Istio之旅,开启无缝连接和强大功能的未来!

Consul

  • github项目名称:hashicorp/consul
  • Star数量:26.4K

Consul是一个被抽推崇的服务网格框架,在构建复杂的微服务架构时,Consul提供了一套强大而可靠的工具,帮助我们实现服务发现、配置管理、安全通信和可靠性等关键功能,辅助我们构建强大的服务网格生态系统。

Consul是一款开源的服务网格和分布式系统解决方案,由HashiCorp开发。它为我们提供了服务发现、健康检查、负载均衡、安全认证和配置管理等核心功能。Consul通过使用Raft一致性协议和分布式KV存储,确保可靠性和高可用性。它旨在简化微服务架构中的服务管理和通信,并提供了丰富的工具和API。

  1. 服务发现和注册: Consul的服务发现功能是构建微服务架构的关键。它允许我们注册服务,并自动发现和解析服务的网络位置。这使得服务之间的通信变得简单可靠,我们可以根据服务名称进行动态调用,而无需硬编码IP地址或端口号。同时,Consul还提供了健康检查机制,可以实时监测服务的状态,确保只有健康的服务被路由到。
  2. 负载均衡: Consul通过集成负载均衡功能,确保服务之间的请求能够平均分布,提高系统的可扩展性和稳定性。它支持多种负载均衡算法,如轮询、加权轮询和最少连接数等。我们可以根据需求进行配置,并且可以实时调整负载均衡策略,以适应不同的流量需求。
  3. 安全认证和授权: 在微服务架构中,安全通信是至关重要的。Consul提供了强大的安全功能,包括TLS加密和ACL(访问控制列表)机制。通过配置TLS证书,我们可以保护服务之间的通信,并防止恶意访问。同时,ACL机制允许我们定义细粒度的访问控制策略,确保只有经过授权的服务才能相互通信。
  4. 配置管理: Consul还提供了配置管理的功能,使得在微服务架构中管理和更新配置变得更加简单。我们可以使用Consul的分布式KV存储来存储和获取配置信息,并通过监听机制实时获取更新。这使得我们可以轻松地进行配置的动态管理,而无需重新部署服务。通过Consul的配置管理功能,我们可以实现快速的配置变更和灵活的系统调整,提高开发和运维效率。
  5. 可靠性和高可用性: Consul以可靠性和高可用性为设计目标。它使用Raft一致性协议来确保数据的一致性和持久性,并通过多个节点的复制来实现高可用性。即使在部分节点故障或网络分区的情况下,Consul仍能保持服务的可用性和一致性。这使得我们的服务网格架构能够具备强大的容错性和可靠性。
  6. 生态系统和扩展性: Consul拥有丰富的生态系统和扩展性。它提供了强大的API和插件机制,使得我们可以根据需求定制和扩展功能。此外,Consul与多种平台和工具集成,如Kubernetes、Docker和Prometheus等,使得在现有环境中使用Consul变得更加便捷。

无论是构建分布式系统还是管理复杂的服务通信,consul都能发挥巨大的作用,是打造稳定、安全且高效的服务网格架构的不错的选择。

Linkerd

  • github项目名称:linkerd/linkerd2
  • Star数量:9.6K

Linkerd是一个开源的服务网格框架,专注于提供高性能和轻量级的服务通信和管理。它以透明代理的方式集成到应用程序中,无需代码修改或配置更改。Linkerd使用Rust编写,并构建在底层的Tokio异步运行时上,提供出色的性能和低延迟。它被广泛采用于生产环境,并得到了业界的认可和支持。

Linkerd框架有以下的特点:

  1. 透明代理和无侵入性: Linkerd的最大优势之一是其透明代理的设计。它以Sidecar的形式与应用程序部署在同一个Pod中,通过代理转发请求和响应。这种无侵入性的设计意味着我们无需修改应用程序的代码或配置,就能够实现服务网格的功能。Linkerd的透明代理能够自动处理服务发现、负载均衡和请求重试等任务,使得服务之间的通信变得更加可靠和高效。
  2. 服务发现和负载均衡: Linkerd提供了强大的服务发现和负载均衡功能,使得服务之间的通信变得更加灵活和可靠。通过集成服务发现机制,Linkerd能够动态地发现和管理服务实例。它还支持多种负载均衡算法,如轮询、加权轮询和最少连接数等,确保请求能够均衡地分布到各个服务实例上,提高系统的可扩展性和性能。
  3. 安全通信和身份认证: 在微服务架构中,安全性是至关重要的。Linkerd通过提供强大的安全功能,保护服务之间的通信。它支持使用TLS加密进行安全通信,并提供了基于mTLS的身份认证和授权机制。这意味着只有经过身份验证的服务实例才能相互通信,确保数据的机密性和完整性。
  4. 可观察性和性能监控: Linkerd提供了丰富的可观察性和性能监控功能,帮助我们深入了解和监控整个服务网格的运行状况。它提供了实时的指标和度量数据,如请求成功率、延迟和吞吐量等,帮助我们识别和解决潜在的性能问题。此外,Linkerd还支持分布式追踪,可以跟踪请求在不同服务之间的流转路径,帮助我们定位和调试复杂的系统问题。
  5. 可扩展性和生态系统: Linkerd具有出色的可扩展性和灵活性,适用于各种规模的微服务架构。它支持动态的配置和扩展,可以根据需求进行水平扩展和部署。此外,Linkerd拥有一个活跃的开源社区,提供了丰富的插件和扩展,可以与其他工具和平台集成,如Kubernetes、Prometheus和Grafana等,为我们提供更全面的服务治理和监控能力。

Linkerd是一个强大而可靠的服务网格框架,为我们构建出色的微服务架构提供了关键的支持。其透明代理和无侵入性的设计使得服务网格的集成变得轻松且无缝。通过服务发现、负载均衡、安全通信和可观察性等功能,Linkerd帮助我们构建高性能、可靠和安全的服务网格生态系统。

Kuma

  • github项目名称:kumahq/kuma
  • Star数量:3.1K

Kuma是一个开源的服务网格框架,由Kong公司开发和维护。它专注于简化和增强服务网格的功能,并提供了一套易于使用和可扩展的工具。Kuma基于Envoy代理,具备强大的性能和灵活性。它支持多种部署模式,包括Kubernetes、虚拟机和边缘环境,使得在不同的部署场景中都能够发挥优秀的表现。

Kuma有以下的优势:

  1. 简化的部署和管理: Kuma提供了简化的部署和管理体验,使得构建和管理服务网格变得更加容易。它提供了直观的命令行界面和可视化的控制面板,让我们可以轻松地配置和监控服务网格。Kuma还支持声明式配置,可以通过简单的YAML文件定义服务和路由规则,无需繁琐的编程或手动配置。
  2. 强大的服务发现和负载均衡: Kuma提供了强大的服务发现和负载均衡功能,使得服务之间的通信更加可靠和高效。它支持多种服务发现机制,包括DNS、环境变量和动态配置等。Kuma还集成了负载均衡算法,如轮询、加权轮询和最少连接数等,确保请求能够均衡地分发到各个服务实例上,提高系统的可扩展性和性能。
  3. 安全通信和流量控制: 在微服务架构中,安全性和流量控制是关键问题。Kuma提供了丰富的安全功能,包括流量加密、认证和授权机制。它支持使用TLS加密保护服务之间的通信,并提供了基于RBAC的访问控制,确保只有经过授权的服务才能相互通信。此外,Kuma还支持流量限制和故障熔断等机制,保护系统免受恶意流量和性能问题的影响。
  4. 可观察性和性能监控: Kuma提供了全面的可观察性和性能监控功能,帮助我们深入了解和监控整个服务网格的运行状况。它集成了流量指标收集和监控工具,如Prometheus和Grafana,以实时方式展示关键指标,如请求成功率、延迟和吞吐量等。此外,Kuma还支持分布式追踪和日志收集,帮助我们追踪请求的流转路径和排查问题,实现更好的故障排除和性能优化。
  5. 多平台和扩展性: Kuma具有出色的多平台和扩展性,适用于各种云环境和部署场景。它可以无缝集成到Kubernetes、虚拟机和边缘设备中,提供统一的服务治理和通信模型。Kuma还支持灵活的插件机制,可以与其他工具和平台集成,如Jaeger、Zipkin和Elasticsearch等,以满足更复杂的需求。

Kuma是一个强大而可靠的服务网格框架,为我们构建可靠的服务网格架构提供了重要支持。通过其简化的部署和管理方式,我们能够轻松配置和监控整个服务网格。服务发现、负载均衡、安全通信和可观察性等关键功能使得服务之间的通信更加稳定和高效。

Open Service Mesh

  • github项目名称:openservicemesh/osm
  • Star数量:2.6K

Open Service Mesh(OSM)是一个开源的服务网格框架,由微软主导开发和维护。它基于Envoy代理,并集成了Kubernetes作为底层平台,提供了一套强大而灵活的功能。OSM采用了轻量级且可扩展的设计理念,使得在多云、混合云和边缘环境中构建服务网格变得更加容易。

OSM框架有以下特点和优势:

  1. 灵活的配置和部署: OSM提供了灵活的配置和部署选项,使得适应不同场景的服务网格部署变得轻松。它支持声明式配置,通过简单的YAML文件定义服务和路由规则。同时,OSM与Kubernetes无缝集成,可以通过自定义资源(Custom Resource Definition)进行集中管理和控制,实现对服务网格的动态配置和调整。
  2. 服务发现和负载均衡: OSM提供了强大的服务发现和负载均衡功能,确保服务之间的通信高效可靠。它支持集成Kubernetes的服务发现机制,能够自动发现和管理服务实例。OSM还提供了多种负载均衡算法,如轮询、加权轮询和最少连接数等,确保请求能够平衡地分发到各个服务实例上,提高系统的可扩展性和性能。
  3. 安全通信和策略管理: 在微服务架构中,安全性是至关重要的。OSM通过提供强大的安全功能,保护服务之间的通信和控制访问。它支持使用TLS加密保护服务通信,并提供了基于RBAC的访问控制,限制服务之间的通信权限。此外,OSM还支持流量策略管理,可以定义灵活的策略,如流量拦截、限速和熔断等,确保系统的安全和稳定性。
  4. 可观察性和性能监控:OSM提供了全面的可观察性和性能监控功能,帮助我们深入了解和监控整个服务网格的运行状况。它集成了流量指标收集和监控工具,如Prometheus和Grafana,以实时方式展示关键指标,如请求成功率、延迟和吞吐量等。此外,OSM还支持分布式追踪和日志收集,帮助我们追踪请求的流转路径和排查问题,实现更好的故障排除和性能优化。
  5. 跨平台和生态系统: OSM具有良好的跨平台兼容性,并且积极参与云原生生态系统。它支持在多种云环境、混合云和边缘设备中部署和运行。此外,OSM积极与其他开源项目进行集成,如Kubernetes、Prometheus、Jaeger和Envoy等,扩展了其功能和应用范围。通过与生态系统的紧密合作,OSM为我们提供了丰富的插件和扩展,满足各种复杂的需求。

Open Service Mesh(OSM)是一个强大而灵活的服务网格框架,为我们构建灵活可扩展的服务网格架构提供了重要支持。通过其灵活的配置和部署选项,我们可以轻松构建适应不同场景的服务网格。

Meshery

  • github项目名称:meshery/meshery
  • Star数量:2.1K

Meshery是一个开源项目,旨在提供服务网格的一体化管理平台。它支持多种服务网格框架,如Istio、Linkerd、Consul和Kuma等,以及跨多个云平台和边缘环境。Meshery提供了统一的界面和工具,使得部署、配置和监控服务网格变得更加简单和可靠。

Meshery的优势在于:

  1. 多网格支持和云原生生态系统集成: Meshery支持多种服务网格框架,包括Istio、Linkerd、Consul和Kuma等,使得我们可以根据需求选择适合的网格技术。它提供了一致的界面和工具,简化了不同网格的配置和管理过程。此外,Meshery积极参与云原生生态系统,与Kubernetes、Prometheus、Grafana等项目紧密集成,为我们提供全面的管理和监控能力。
  2. 一键部署和自动化管理: Meshery提供了一键部署和自动化管理的功能,使得服务网格的部署和管理过程变得轻松和高效。通过Meshery,我们可以快速部署和配置服务网格,减少繁琐的手动操作。它还支持声明式配置和自动化的监控和调整,帮助我们实现弹性、可靠和自愈的服务网格架构。
  3. 性能测试和可观察性: Meshery提供了强大的性能测试和可观察性功能,帮助我们评估和监控服务网格的性能和稳定性。它集成了流量生成和压力测试工具,如Fortio和Wrk,可以对服务网格进行负载测试和性能基准测试。同时,Meshery还集成了Prometheus和Grafana等工具,实时展示关键指标,如请求成功率、延迟和吞吐量等,帮助我们深入了解服务网格的运行状况。
  4. 社区支持和扩展性: Meshery是一个开源项目,拥有活跃的社区支持和贡献者。它具有丰富的文档和教程资源,使得我们可以快速上手和解决问题。同时,Meshery还提供了插件和扩展机制,使得我们可以根据自己的需求扩展和定制功能。这种开放式的设计理念使得Meshery能够与不断发展的服务网格生态系统保持同步,并适应不断变化的需求。
  5. 多平台和可移植性: Meshery支持多个平台和环境,包括Kubernetes、虚拟机和边缘设备等。它提供了一致的界面和工具,使得在不同平台上部署和管理服务网格变得更加简单和可靠。无论是在云环境、混合云还是边缘环境,Meshery都能够提供一致的管理和监控体验。

Meshery作为开放式、多平台的服务网格管理平台,为我们提供了一套强大而灵活的工具,帮助我们更好地部署、管理和监控服务网格。它支持多种服务网格框架,与云原生生态系统紧密集成,提供一致的界面和自动化管理功能。

Traefik Mesh

  • github项目名称:traefik/mesh
  • Star数量:1.9K

Traefik Mesh是一个开源的服务网格框架,由Traefik Labs开发和维护。它基于Envoy代理,并提供了简化的配置和管理接口,使得构建和管理服务网格变得更加简单和高效。Traefik Mesh专注于简化和减轻服务网格的复杂性,使得开发者可以专注于应用程序的开发和交付。

Traefik Mesh在以下方面有明显的优势:

  1. 简单易用的配置: Traefik Mesh提供了简单易用的配置方式,使得服务网格的部署和管理变得非常简便。它支持声明式配置,通过简单的YAML文件定义服务和路由规则。Traefik Mesh通过集成Kubernetes作为底层平台,可以自动发现和管理服务实例,简化了配置过程。此外,Traefik Mesh还提供了动态配置的能力,可以根据需求进行实时调整,使得服务网格具备弹性和灵活性。
  2. 内置负载均衡和流量控制: Traefik Mesh内置了负载均衡和流量控制功能,确保服务之间的通信高效可靠。它采用智能的负载均衡算法,如轮询和加权轮询,将请求均衡地分发到各个服务实例上,提高系统的可扩展性和性能。此外,Traefik Mesh还支持流量控制和熔断机制,可以限制请求的速率和重试策略,确保系统的稳定性和可靠性。
  3. 可观察性和监控支持: Traefik Mesh提供了丰富的可观察性和监控支持,帮助我们深入了解和监控服务网格的运行状况。它集成了Prometheus和Grafana等工具,实时展示关键指标,如请求成功率、延迟和吞吐量等。同时,Traefik Mesh还支持分布式追踪和日志收集,帮助我们追踪请求的流转路径和排查问题,实现更好的故障排除和性能优化。通过这些监控和可观察性工具,我们可以及时发现并解决潜在的问题,确保服务网格的稳定性和可靠性。
  4. 多平台和扩展性: Traefik Mesh具有良好的跨平台兼容性,可以在多个云环境、混合云和边缘设备中部署和运行。无论是在云原生环境中的Kubernetes集群,还是在边缘设备上,Traefik Mesh都能提供一致的服务网格体验。此外,Traefik Mesh还具有良好的扩展性,可以与其他工具和生态系统进行集成,满足不同场景下的需求。
  5. 强调安全性: Traefik Mesh重视服务网格的安全性,并提供了一系列安全特性来保护服务的通信。它支持基于TLS的双向认证和加密通信,确保数据在传输过程中的机密性和完整性。此外,Traefik Mesh还提供了细粒度的访问控制,可以定义和管理服务之间的访问策略,确保只有经过授权的服务可以相互通信。

Traefik Mesh作为一个简单、可扩展的服务网格框架,为我们构建可靠和可观察的分布式系统提供了重要支持。它提供了简单易用的配置方式、内置负载均衡和流量控制功能,以及丰富的可观察性和监控支持。同时,Traefik Mesh具有多平台兼容性和扩展性,可以在不同的环境中灵活部署和管理。

Service Mesh Interface(SMI)

  • github项目名称:servicemeshinterface/smi-spec
  • Star数量:1K

Service Mesh Interface(SMI)是一个开源的项目,由微软等公司发起和维护。它旨在为不同的服务网格实现提供一个通用的API和规范,使得不同的服务网格能够互相配合和协作。SMI的目标是降低服务网格的学习曲线和复杂性,提供一致性和互操作性,使得开发者能够更轻松地构建和管理服务网格架构。

SMI的出现对于service mesh的发展有非常大的推动作用,它有以下的特点:

  1. 标准化的API和规范: SMI定义了一组标准化的API和规范,用于描述和配置服务网格中的核心功能,如流量管理、服务发现和安全策略等。通过这些API和规范,不同的服务网格实现可以遵循同一套标准,确保一致的行为和互操作性。这大大简化了服务网格的配置和管理过程,使得开发者能够更加专注于应用程序的开发和交付。
  2. 插件和扩展性: SMI的设计理念是可插拔和可扩展的,允许开发者根据自己的需求扩展和定制功能。SMI提供了清晰的扩展机制和生命周期管理,使得开发者可以轻松地添加自定义功能或集成其他扩展,满足特定场景的需求。这种插件和扩展性的设计使得SMI能够适应不断变化的需求和技术发展。
  3. 多网格支持和云原生生态系统集成: SMI支持多种服务网格实现,如Istio、Linkerd和Consul等,使得我们可以根据需求选择适合的服务网格技术。同时,SMI积极参与云原生生态系统,与Kubernetes等项目紧密集成,为我们提供全面的管理和监控能力。这种多网格支持和生态系统集成使得我们能够灵活地选择和部署适合我们业务需求的服务网格框架。
  4. 跨平台和厂商中立: SMI是一个跨平台的框架,不仅可以在Kubernetes上运行,还可以在其他容器编排平台和虚拟化环境中使用。这种跨平台的特性使得我们可以更加灵活地选择适合我们需求的基础设施。此外,SMI还是一个厂商中立的框架,不与特定的厂商绑定,使得我们能够避免厂商锁定,并且可以根据实际情况选择最适合我们的服务网格解决方案。
  5. 社区支持和生态系统发展: SMI作为一个开源项目,拥有一个活跃的社区,其中包括了许多贡献者和用户。这个社区不断推动SMI的发展和改进,提供了丰富的文档、示例和支持资源。同时,SMI也积极参与服务网格生态系统的发展,与其他相关项目进行合作和集成,共同推动服务网格的标准化和互操作性。通过社区支持和生态系统发展,SMI能够不断地适应和演进,满足不断变化的需求。

Service Mesh Interface(SMI)是一个重要的服务网格框架,通过定义标准化的API和规范,实现了服务网格的标准化和互操作性。它提供了简化的配置和管理方式,具备插件和扩展性,支持多网格和厂商中立,同时还有活跃的社区支持和与生态系统的紧密集成。SMI的出现使得构建和管理服务网格变得更加简单和灵活,为我们提供了更多选择和机会。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux bluez蓝牙开发的准备工作

最近为了搞这个蓝牙的事情,忙碌了好几天,我就是想结合 bluez 的代码随便玩一下蓝牙设备,而且能够参考源码写点测试程序来操作这个蓝牙设备。这里只是说明 Linux 下的准备工作而非嵌入式的arm。 1,系统支持 我用的是真机安装的 D…

路由与交换技术(H3C)①——计算机网络基础

系列文章目录 ①——计算机网络基础 路由与交换技术(H3C)①——计算机网络概述 系列文章目录一 计算机网络概述1.1 计算机网络1.2 计算机网络的基本功能1.2.1 资源共享1.2.2 分布式处理与负载均衡1.2.3 综合信息服务 二 计算机网络的演进2.1 主机互联时…

Unity Editor扩展 实现一个Excel读表窗口

设计 Unity Editor窗口类 public class ExcelEditorWindow : EditorWindow {[MenuItem( "Frameworks/读表配置界面", false, 10 )]private static void Open(){Rect wr new Rect( 0, 0, 500, 500 );ExcelEditorWindow window ( ExcelEditorWindow ) EditorWindow.…

津津乐道设计模式 - 组合模式详解(以餐厅菜单系统举例让你快速掌握)

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

基于Python所写的玛丽冒险设计

点击以下链接获取源码资源: https://download.csdn.net/download/qq_64505944/87953199 《玛丽冒险》程序使用说明 在PyCharm中运行《玛丽冒险》即可进入如图1所示的游戏主界面。 图1 游戏主界面 具体的操作步骤如下: (1)游戏…

数据库监控与调优【十四】—— COUNT语句优化

COUNT语句优化 有关COUNT的几个实验与结论 准备工作 create table user_test_count (id int primary key not null auto_increment,name varchar(45),age int,email varchar(60),birthday date ) engine innodb;insert into user_test_count (id, name, a…

算法设计与分析之回溯法

文章目录 1. 回溯法简介1.1 DFS的基本思想1.2 回溯法的基本思想1.3 回溯法和DFS的区别1.4 剪枝 2. 01背包问题:子集树2.1 问题介绍2.2 解决思路2.3 算法实现2.4 如何优化 3. 旅行商问题TSP:排序树3.1 问题介绍3.2 解决思路3.3 算法框架3.4 算法实现 4. 总…

项目一点点记录

kafka发布通知 kafka是消息队列,kafka采用发布订阅模式进行消息的生产与消费。在项目中,我们采用spring来整合kafka, 通过定义事件event来封装 点赞、关注、评论三类事件,event实体中有 事件主题topic,当前用户id&…

怎么给PDF添加图片水印?其实很简单,看这篇就会了!

许多人都意识到版权问题的重要性,尽管在日常生活中我们可能很少遇到,但在办公和学习中却经常涉及到此类问题。例如,我们辛辛苦苦制作的PDF文件,如何确保不被他人盗用呢?这就涉及到如何为PDF添加图片水印的问题,相当于…

无向图G的广度优先搜索和深度优先搜索以及完整程序

图的遍历算法有两种:广度优先搜索和深度优先搜索 一.广度优先搜索类似于层次遍历,需要借助辅助队列 空间复杂度为O(|V|);空间复杂度由辅助队列大小决定 时间复杂度为O(|V||E|) 为避免同一顶点被多次访问,设计visited[]来标记顶点 二.深度…

MyBatis 从初识到掌握

目录 今日良言:与其抱怨于黑暗,不如提灯向前行 一、初识MyBatis 1.MyBatis定义 2.为什么要学习MyBatis 3.MyBatis的创建 二、MyBatis的相关操作 1.增删改查操作 2.动态SQL使用 今日良言:与其抱怨于黑暗,不如提灯向前行 一…

UE4/5 通过Control rig的FullBody【蜘蛛模型,不用basic ik】

目录 根设置 FullBody IK 额外骨设置 ​编辑 晃动效果 根设置 第一步你需要准备一个蜘蛛模型,不论是官方示例或者是epic上购买的模型 然后我用的是epic上面购买的一个眼球蜘蛛: 第一步,我们从根创建一个空项【这个记得脱离父子级到root之…

SQLServer 2016 R2数据库新建、附加、分离、备份、还原、复制等基本操作

一、打开Microsoft SQL Server Management Studio 在桌面上找到图标,双击运行 打开Microsoft SQL Server Management Studio 17 输入服务器名称,选择SQL Server 身份验证,sa和sa密码,可以勾选记住密码,以便以后的登录…

分享基于安卓项目的单元测试总结

前言: 负责公司的单元测试体系的搭建,大约有一两个月的时间了,从最初的框架的调研,到中期全员的培训,以及后期对几十个项目单元测试的引入和推进,也算是对安卓的单元测试有了一些初步的收获以及一些新的认…

【雕爷学编程】Arduino动手做(131)---跑马灯矩阵键盘模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

线性代数基础--矩阵

矩阵 矩阵是由排列在矩形阵列中的数字或其他数学对象组成的表格结构。它由行和列组成,并且在数学和应用领域中广泛使用。 基本概念 元素:矩阵中的每个数字称为元素。元素可以是实数、复数或其他数学对象。 维度:矩阵的维度表示矩阵的行数和…

vtk创建点

使用vtk库创建三维空间中的点 引言开发环境示例一项目结构实现代码 运行效果示例二项目结构实现代码 运行效果总结 引言 本文仅适合初学者。 本文不提供vtk动态库的生成,以及在QtCreator中的引进vtk时的配置。 本文先由示例一开始,然后再在示例一的基础…

aws使用外部 ID对其他账号授权

点击前往授权,进入控制台 https://signin.aws.amazon.com/signin?redirect_urihttps%3A%2F%2Fconsole.aws.amazon.com%2Fconsole%2Fhome%3FhashArgs%3D%2523%26isauthcode%3Dtrue%26state%3DhashArgsFromTB_eu-north-1_f2d9c316b93c0026&client_idarn%3Aaws%3Asignin%3A%…

Glassdoor美国公司员工及面试者评价数据

一、数据简介 除了股东、债权人、政府等外部利益相关者外,员工的利益更应该得到公司的恰当保护,因为员工才是公司创造价值的真正主体。提高企业在产品市场的竞争力,首先就是要提高员工对企业的满意度,只有员工的满意度更高、幸福感…

7个技巧,助你同时轻松管理和跟踪多个项目

仅仅想到要兼顾这么多重要的职责,就会让许多专业的项目经理感到焦虑。当涉及多个项目的多种项目管理工具的处理,即使对于了解项目管理的项目经理来说,也是一项艰巨的任务,而对于在这个领域没有经过适当培训的人来说,这…