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

Spring Cloud微服务功能及其组件详细讲解

Spring Cloud微服务功能及其组件详细讲解


文章目录

  • Spring Cloud微服务功能及其组件详细讲解
  • 前言:什么是微服务?
  • 一、Spring Cloud原理简述
  • 二、核心组件
    • 1、服务发现——Nacos/Eureka/Consul
      • 1)Nacos服务发现
      • 2)Eureka服务发现
      • 3)Consul服务发现
      • 4)各自的特点与使用建议
    • 2、负载均衡——Ribbon/OpenFeign
    • 3、服务熔断——Hystrix
    • 4、配置管理——Config/Nacos
      • 1)Config
      • 2)Nacos
      • 3)Config与Nacos的比较
    • 5、API网关——Zuul/Gateway
  • 三、使用场景推荐
  • 四、总结


前言:什么是微服务?

微服务是一种架构风格,它强调将大型复杂的系统功能根据业务需求切分为一系列小型、独立的服务。每个服务都专注于满足某个具体的业务需求,并且能够独立部署、运行和扩展。这种架构风格使得系统更加灵活、可维护,并且能够更好地应对业务变化和技术挑战。

虽然微服务在初始阶段可能会增加开发和维护的难度,因为它要求团队具备更高的分布式系统开发和运维能力。但是,从长远来看,微服务带来的好处是显而易见的。它使得系统更加易于扩展,因为每个服务都可以独立地进行水平扩展,以满足不断增长的业务需求。此外,微服务还提高了系统的容错能力,因为即使某个服务出现故障,其他服务也可以正常运行,从而保证了整个系统的稳定性。因此,尽管微服务带来了一定的挑战,但它的优势在于能够构建一个更加健壮、灵活和可扩展的系统。这对于大型复杂系统来说,是至关重要的。

而Spring Cloud正是为了简化微服务的开发过程而诞生的一个框架集合。它提供了一整套微服务开发所需的工具和组件,包括服务发现、配置管理、负载均衡、容错处理等。通过使用Spring Cloud,开发者可以更加便捷地构建和管理微服务应用,从而提高了开发效率和系统的稳定性。

总的来说,微服务是一种先进的架构风格,而Spring Cloud则是实现这种架构风格的有力工具。它们共同为大型复杂系统的构建和管理提供了强有力的支持。

一、Spring Cloud原理简述

Spring Cloud是一系列框架的有序集合,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

归根到底,微服务其实就是把一整个大的系统功能根据需求切分成多个项目,每个项目专注于某个需求,微服务则是在这个基础上衍生出来的一个框架,让服务能够联系得更紧密,也更便于管理。

注意:微服务本质上是加重了整个系统的开发难度、维护难度换得更高的承载。

二、核心组件

1、服务发现——Nacos/Eureka/Consul

服务发现是微服务架构中的关键组件,它使得服务消费者能够动态地找到服务提供者,实现服务的自动调用。在微服务领域中,Nacos、Eureka和Consul都是常用的服务发现组件,它们各自具有独特的特点和适用场景。

1)Nacos服务发现

Nacos是阿里巴巴开源的一个易于使用的动态服务发现、配置管理和服务管理平台。它支持基于DNS和基于RPC的服务发现。在Nacos中,服务提供者通过发送REST请求的方式向Nacos Server注册自己的服务,并提供自身的元数据,如IP地址、端口等信息。Nacos Server接收到这些元数据信息后,会将其存储在一个双层的内存Map中,以供服务消费者查询。

为了确保服务的可用性,Nacos Client会维护一个定时心跳来通知Nacos Server服务一直处于可用状态。默认情况下,每5秒发送一次心跳。服务消费者在调用服务提供者的服务时,也会发送REST请求给Nacos Server获取注册的服务清单,并缓存在本地。同时,它还会在本地开启一个定时任务,定时拉取服务端最新的注册表信息以更新本地缓存。

2)Eureka服务发现

Eureka是Netflix开发的服务发现框架,主要用于定位运行在AWS域中的中间层服务。它本身是一个基于REST的服务,通过REST API实现服务注册与发现。Eureka的主要目标是实现负载均衡和中间层服务故障转移。在Spring Cloud中,Eureka被集成在子项目spring-cloud-netflix中,用于实现Spring Cloud的服务发现功能。

Eureka的工作原理大致如下:服务提供者将自己的信息注册到Eureka Server上,Eureka Server会维护一个可用的服务列表。服务消费者向Eureka Server发起请求,获取服务提供者的地址列表,然后通过负载均衡算法选择一个服务提供者进行调用。Eureka还提供了服务健康检查机制,以确保服务列表中的服务都是可用的。

3)Consul服务发现

Consul是HashiCorp公司推出的开源工具,提供全功能的服务发现和服务配置。它支持DNS和HTTP两种服务发现方式。Consul由客户端和服务端组成,客户端负责转发HTTP和DNS接口请求给局域网内的服务端集群,而服务端则负责保存配置信息和高可用集群的维护。

Consul的一个重要特性是其健康检查功能。客户端可以提供与给定服务相关的健康检查信息,如Web服务器返回200 ok状态码,或者本地节点的内存利用率等。此外,Consul还支持多数据中心部署,这对于跨地域部署的微服务应用来说是非常有用的。

4)各自的特点与使用建议

  1. 设计理念与可用性

    Eureka采用了AP(可用性和分区容错性)的设计理念,注重可用性。这意味着在网络分区的情况下,Eureka仍然允许短暂的服务不可用,以维护整体系统的可用性。当节点长时间未收到心跳时,Eureka的自我保护机制会确保注册服务的可用性,但可能导致注册信息更新不及时。

    相比之下,Consul则遵循CP(一致性和分区容错性)的设计理念,更注重数据的一致性。它不允许短暂的网络分区,以确保服务发现的一致性。

    Nacos遵循的是CAP理论中的两种设计理念,即一致性和可用性(CP)或可用性和分区容错性(AP)。在实际应用中,Nacos可以根据不同的场景和需求选择适合的模式。这两种模式的选择取决于具体的业务需求和系统环境。例如,在需要快速响应和高度可用的系统中,可能会选择AP模式;而在对数据一致性要求较高的系统中,可能会选择CP模式。

  2. 功能丰富性

    Consul作为一个“全栈”解决方案,不仅提供了服务注册与发现的功能,还具备健康检查、Key/Value存储以及多数据中心的支持。这使得Consul在功能丰富性上超过了Eureka和Nacos。

    Nacos在提供服务发现的同时,也关注服务的配置管理、服务元数据及流量管理。它支持动态配置服务,允许以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。

    Eureka则主要聚焦于服务注册与发现,尽管它也提供了一些基本的健康检查功能,但相对于Consul和Nacos来说,功能较为单一。

  3. 使用方式与灵活性

    Consul支持多种服务发现方式,包括DNS和HTTP,使得服务消费者可以灵活地选择适合自己的方式来发现服务。此外,Consul还提供了丰富的健康检查机制,包括HTTP、TCP、Docker和Shell脚本定制化监控,为服务的可用性提供了有力保障。

    Nacos则提供了基于DNS和基于RPC的服务发现方式,并支持实时的服务健康检查。它的动态DNS服务还支持权重路由,为中间层负载均衡和灵活的路由策略提供了支持。

    Eureka则主要通过REST API实现服务的注册与发现。尽管这种方式在某些场景下可能不够灵活,但它与Spring Cloud的集成度较高,使得在Spring Cloud环境中使用Eureka变得相对简单。

Nacos、Eureka和Consul在服务发现方面都有各自的优势。Nacos作为阿里巴巴的开源产品,与Spring Cloud等技术栈的集成度较高,适合在阿里巴巴技术栈中使用。Eureka作为Netflix的产品,在AWS环境中表现优异,适合在Netflix或AWS技术栈中使用。而Consul则以其强大的健康检查和多数据中心支持功能脱颖而出,适用于需要高可用性和跨地域部署的场景。

2、负载均衡——Ribbon/OpenFeign

负载均衡是微服务架构中一个重要的概念,用于解决服务间的流量分配问题,确保系统的稳定性和性能。在微服务生态系统中,Ribbon和OpenFeign是两个常用的负载均衡解决方案,它们各自具有独特的特点和使用方式。

  1. Ribbon负载均衡

    Ribbon是Netflix开源的一款用于客户端负载均衡的工具软件。它运行在消费者客户端上,能够根据一定的策略将请求分发到不同的服务提供者实例上,以实现负载均衡的效果。Ribbon默认的策略是轮询,但也可以自定义负载策略来覆盖默认的,或者通过配置指定使用哪些策略。Ribbon更注重的是承担并发而不是请求分发,因此它可以直接感知后台动态变化来指定分发策略。

    Ribbon的负载均衡策略可以根据实际需求进行配置,包括轮询、随机、加权轮询等。通过维护一个服务实例列表,并根据一定的算法将请求分发到不同的实例上,Ribbon确保了请求的均衡分配,避免了某个实例过载而其他实例空闲的情况。

  2. OpenFeign

    OpenFeign是一个声明式的Web服务客户端,它使得编写HTTP客户端变得更简单。在微服务架构中,OpenFeign通常与Ribbon结合使用,以实现负载均衡的功能

    OpenFeign通过创建接口并使用注解的方式来定义客户端和服务端的交互。在调用接口方法时,OpenFeign会根据服务名称和方法参数来选择一个可用的服务实例进行调用。当OpenFeign与Ribbon结合使用时,它会根据Ribbon的负载均衡策略选择一个服务实例进行调用。这意味着OpenFeign不仅简化了客户端与服务端的交互,还集成了Ribbon的负载均衡能力

    OpenFeign的引入简化了客户端的编码工作,使开发者能够更专注于业务逻辑的实现。同时,OpenFeign还支持Hystrix熔断降级机制,可以确保在某个服务出现故障时,整个系统不会受到影响。

3、服务熔断——Hystrix

微服务中的服务熔断组件是确保系统稳定性和高可用性的关键机制之一。在微服务架构中,服务之间通过轻量级的通信机制进行交互,这种交互模式使得单个服务的故障容易传播到其他服务,进而可能导致整个系统的崩溃。因此,熔断组件的作用就是在检测到某个服务出现异常时,能够迅速地进行熔断,防止故障扩散,确保系统的稳定运行。微服务中常用的服务熔断组件包括Netflix的Hystrix、Resilience4j以及Alibaba的Sentinel等。这些组件在功能和原理上有所相似,但也有一些区别。

  1. Hystrix

    Hystrix是Netflix开源的一款服务熔断组件,它提供了服务降级、服务熔断、线程隔离、请求缓存等功能。Hystrix通过命令模式来包装远程调用,使得每个远程调用都具备熔断与降级的能力。当服务调用失败率达到阈值时,Hystrix会自动熔断,阻止对远程服务的调用,并返回降级响应。此外,Hystrix还支持线程隔离,确保单个服务的故障不会影响到其他服务的调用。

  2. Resilience4j

    Resilience4j是另一个流行的服务熔断组件,它是Java语言的库,提供了容错和恢复能力的实现。Resilience4j的设计理念是轻量级和模块化,它提供了断路器(CircuitBreaker)、重试(Retry)、限流(RateLimiter)等功能。其中,断路器模式用于在远程服务调用失败时进行熔断,防止故障扩散。与Hystrix不同的是,Resilience4j更加关注轻量级和模块化,适用于对性能有更高要求的场景。

  3. Sentinel

    Sentinel是Alibaba的一款强大的服务熔断组件,它提供了流量控制、熔断降级、系统自适应保护等多个维度的功能。Sentinel的熔断策略相对灵活,可以根据不同的场景进行配置。此外,Sentinel还提供了丰富的实时监控和告警功能,帮助开发者及时发现和解决问题。

  4. 使用建议

    如果项目已经使用了Spring Cloud等框架,并且需要完整的熔断、降级、限流等功能,那么Hystrix可能是一个合适的选择;如果项目更关注轻量级和模块化,那么Resilience4j可能更适合;而如果项目对实时监控和告警有较高要求,那么Sentinel可能是一个更好的选择。

4、配置管理——Config/Nacos

配置管理在微服务架构中扮演着至关重要的角色,它允许开发人员以集中、动态的方式管理服务的配置信息。而Config和Nacos作为配置管理的工具,提供了丰富的功能和特性,帮助开发人员更好地管理微服务的配置。

1)Config

Config指的是Spring Cloud Config,它是Spring Cloud生态中用于集中配置管理的组件。Spring Cloud Config通过提供一个中心化的配置服务器,使开发人员能够在一个地方管理所有微服务的配置信息。这些配置信息可以是数据库连接信息、外部服务地址、功能开关等。

Spring Cloud Config的主要优势包括:

  1. 集中管理:所有微服务的配置都存储在配置服务器中,便于统一管理和维护。
  2. 动态刷新:当配置发生变化时,客户端可以动态地刷新配置,无需重启服务。
  3. 版本控制:配置服务器支持版本控制,可以记录配置的变更历史,便于追踪和回滚。
  4. 环境隔离:通过不同的配置文件或标签,可以很容易地实现不同环境(如开发、测试、生产)的配置隔离。

使用Spring Cloud Config时,开发人员通常需要在配置服务器中定义配置信息,并在客户端应用中通过注解或配置文件引入这些配置。当配置发生变化时,客户端可以监听配置服务器的变化,并实时更新本地配置。

2)Nacos

Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。在配置管理方面,Nacos提供了与Spring Cloud Config类似的功能,但也有一些独特之处。

Nacos作为配置管理工具的主要特性包括:

  1. 集中式的配置管理:允许在一个中心位置管理所有微服务的配置,通过简洁易用的界面进行配置的增删改查。
  2. 动态推送:当配置发生变化时,Nacos可以实时推送给相关的服务,实现配置的动态更新,无需重启服务。
  3. 版本和历史:Nacos为配置变更提供了版本控制,支持历史版本查询与回滚,确保配置的可靠性和可追溯性。
  4. 灰度发布:能够向特定的服务实例或群组发布新的配置,而不影响其他实例,实现配置的逐步推广和验证。
  5. 访问控制:通过命名空间、角色和权限控制配置的访问,确保配置的安全性和隐私性。

Nacos的配置管理可以看作是一个高可用的“键-值”存储系统。其中,“键”通常由Data ID和Group组成,而“值”就是具体的配置内容。开发人员可以通过Nacos的客户端SDK或控制台来管理配置信息,并在微服务应用中集成Nacos客户端来动态获取和更新配置。

3)Config与Nacos的比较

虽然Config和Nacos都提供了配置管理的功能,但它们在实现方式、特性和适用场景上有所不同。

Spring Cloud Config作为Spring Cloud生态的一部分,与Spring Cloud的其他组件集成得更好,更适合使用Spring Cloud框架的项目。它提供了丰富的配置管理功能,如版本控制、环境隔离等,并通过Spring的注解和配置文件简化了配置的使用。

而Nacos作为阿里巴巴开源的项目,除了配置管理外,还提供了服务发现和服务管理等功能,更适合构建云原生应用。Nacos的配置管理功能同样强大,并提供了灰度发布、访问控制等独特特性。此外,Nacos还具有较高的可用性和可扩展性,适用于大型分布式系统。如果使用了阿里系的一些组件,那么比较推荐使用nacos作为服务发现和配置中心。

5、API网关——Zuul/Gateway

API网关,作为微服务架构中的关键组件,扮演着服务路由、安全控制、流量监控等核心角色。在众多的API网关实现中,Zuul和Gateway是两个备受关注的选择。它们各自具有独特的特点和优势,下面将详细扩展并对比这两个组件。

  1. Zuul

    Zuul是Netflix公司提供的微服务网关,它与Eureka、Ribbon、Hystrix等组件配合使用,能够实现认证和安全、性能监测、动态路由、负载均衡、压力测试、静态资源处理等功能。Zuul基于Servlet技术,早期版本(Zuul 1.x)主要支持同步阻塞式I/O,不支持websockets长连接。但随着技术的演进,Zuul 2.x版本引入了高性能的Reactor模式通信框架Netty,从而支持异步非阻塞式I/O和websockets长连接,显著提升了处理性能和效率。

  2. Gateway

    Zuul 2.x版本在后续的发展中停止了维护,这促使了Spring官方基于Spring 5.0、Spring Boot 2.0和Project Reactor等技术开发了Gateway作为替代方案。Gateway作为Spring Cloud中的网关,不仅提供了统一的路由方式,还基于Filter链的方式提供了网关基本的功能,如安全、监控和限流等。相比Zuul,Gateway更加依赖Spring生态,因此其功能更为强大,内部实现了限流、负载均衡等机制,扩展性也更强。但这也意味着Gateway的使用相对受限于Spring Cloud套件,而Zuul则可以扩展至其他微服务框架中。

  3. 两者的区别

    性能上:Zuul和Gateway都表现出色,但由于Gateway使用了基于响应式编程的模型,它在处理大量并发请求时可能更具优势。此外,Gateway还支持更多的路由配置选项和更细粒度的控制,使得开发者能够更灵活地管理API的调用和路由。

    安全方面:两者都提供了强大的认证和授权机制,可以确保API的安全性。Zuul通过集成各种安全组件来实现认证和授权功能,而Gateway则利用Spring Security等机制来提供类似的功能。

    监控和日志记录方面:Zuul和Gateway都提供了丰富的监控指标和日志记录功能,帮助开发者实时了解API的使用情况和性能表现。这些功能有助于及时发现和解决潜在问题,提升系统的稳定性和可靠性。

如果项目已经使用了Spring Cloud套件并需要强大的功能和扩展性,那么Gateway可能是一个更好的选择。而如果项目需要更广泛的兼容性和灵活性,或者已经在使用其他微服务框架,那么Zuul可能是一个更合适的选择。

三、使用场景推荐

  1. 大型分布式系统:对于规模庞大、服务众多的分布式系统,Spring Cloud 确实是一个不可或缺的工具。它提供了强大的服务治理机制,包括服务注册与发现、负载均衡、容错处理等,确保系统中的各个服务能够高效、稳定地协同工作。此外,Spring Cloud还提供了丰富的通信机制,支持各种协议和消息格式,使得服务之间的通信变得更加便捷和可靠。

  2. 容器化部署:在当今的IT领域,容器化技术如Docker已经越来越受欢迎。结合Spring Cloud和Docker等容器化技术,可以实现微服务的自动化部署和管理。通过容器化部署,每个微服务都可以被封装在一个独立的容器中,从而实现服务的隔离和资源的优化利用。同时,Spring Cloud还提供了对容器编排工具如Kubernetes的支持,使得微服务集群的部署和管理变得更加简单和高效。

  3. 云原生应用:云原生应用是一种运行在云环境中的应用程序,具有高度的可扩展性、灵活性和容错性。Spring Cloud的轻量级和灵活性使其成为构建云原生应用的理想选择。无论是公有云还是私有云,Spring Cloud都能提供强大的支持。它可以帮助开发者快速构建和部署微服务应用,实现应用的自动化管理和监控。同时,Spring Cloud还支持与各种云服务的集成,如对象存储、数据库等,使得云原生应用的构建更加便捷和高效。


四、总结

Spring Cloud作为微服务架构中的关键支撑工具,凭借其强大的组件和功能集,为开发者们提供了高效且便捷的服务治理与通信机制。这些机制不仅简化了微服务应用的开发过程,还大大提升了系统的稳定性和可扩展性。

对于初入Java领域的新手来说,掌握Spring Cloud的原理和使用方法无疑是一项极具价值的技能。它不仅能够让你更好地理解微服务架构的核心理念,还能够让你在未来的学习和工作中更加得心应手。通过Spring Cloud,你可以学习到如何有效地划分和管理微服务,如何确保服务之间的稳定通信,以及如何实现服务的自动化部署和监控。

希望本文能够成为你探索微服务世界的起点,为你的学习之路增添一份动力。微服务架构是一个广阔且深邃的领域,其中蕴含了众多值得我们去探索和学习的知识。而Spring Cloud作为这个领域的重要工具之一,无疑会是你前行道路上的得力助手。

最后,如果你在阅读本文的过程中有任何疑问或建议,欢迎在评论区留言交流。期待与你一同成长,共同进步。

相关文章:

Spring Cloud微服务功能及其组件详细讲解

Spring Cloud微服务功能及其组件详细讲解 文章目录 Spring Cloud微服务功能及其组件详细讲解前言:什么是微服务?一、Spring Cloud原理简述二、核心组件1、服务发现——Nacos/Eureka/Consul1)Nacos服务发现2)Eureka服务发现3&#…...

(三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练

这里写目录标题 一、colmap解算数据放入高斯1. 将稀疏重建的文件放入高斯2. 将稠密重建的文件放入高斯 二、vkitti数据放入高斯 一、colmap解算数据放入高斯 运行Colmap.bat文件之后,进行稀疏重建和稠密重建之后可以得到如下文件结构。 1. 将稀疏重建的文件放入高…...

4635: 【搜索】【广度优先】回家

题目描述 小 H 在一个划分成了nm 个方格的长方形封锁线上。 每次他能向上下左右四个方向移动一格(当然小 H 不可以静止不动), 但不能离开封锁线,否则就被打死了。 刚开始时他有满血 6 点,每移动一格他要消耗 1 点血量…...

Uibot6.0 (RPA财务机器人师资培训第1天 )RPA+AI、RPA基础语法

训练网站:泓江科技 (lessonplan.cn)https://laiye.lessonplan.cn/list/ec0f5080-e1de-11ee-a1d8-3f479df4d981(本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~) 紧接着小北之前的几篇博客,友友们我们即将开展新课的学习~…...

【吊打面试官系列】Redis篇 -Redis集群的主从复制模型是怎样的?

大家好,我是锋哥。今天分享关于 【Redis集群的主从复制模型是怎样的?】 面试题,希望对大家有帮助; Redis集群的主从复制模型是怎样的? 为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所…...

高效的二进制列化格式 MessagePack 详解

目录 MessagePack 序列化原理 MessagePack 数据类型及编码方式 MessagePack 序列化与反序列化过程 MessagePack 的优势 应用场景 注意事项 小结 MessagePack (简称 msgPack)是一种高效的二进制序列化格式,可以将各种数据类型&#xff…...

鸿蒙Harmony应用开发—ArkTS-if/else:条件渲染

ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态,使用if、else和else if渲染对应状态下的UI内容。 说明: 从API version 9开始,该接口支持在ArkTS卡片中使用。 使用规则 支持if、else和else if语句。 if、else if后跟随的条件语句…...

JAVA 100道题(14)

14.使用LinkedList实现一个简单的堆栈(Stack)数据结构。 下面是一个简单的Java程序,使用LinkedList来实现一个堆栈(Stack)数据结构。在这个程序中,我们定义了一个MyStack类,它包含了一些基本的堆…...

STM32+ESP8266水墨屏天气时钟:简易多级菜单(数组查表法)

项目背景 本次的水墨屏幕项目需要做一个多级菜单的显示,所以写出来一起学习,本篇文章不单单适合于水墨屏,像0.96OLED屏幕也适用,区别就是修改显示函数。 设计思路 多级菜单的实现,一般有两种实现的方法 1.通过双向…...

数学建模综合评价模型与决策方法

评价方法主要分为两类,其主要区别在确定权重的方法上 一类是主观赋权法,多次采取综合资讯评分确定权重,如综合指数法,模糊综合评判法,层次评判法,功效系数法等 另一类是客观赋权法,根据各指标…...

window下安装并使用nvm(含卸载node、卸载nvm、全局安装npm)

window下安装并使用nvm(含卸载node、卸载nvm、全局安装npm) 一、卸载node二、安装nvm三、配置路径和下载源四、使用nvm安装node五、nvm常用命令六、卸载nvm七、全局安装npm、cnpm八、遇到的问题 nvm 全名 node.js version management,顾名思义…...

Mysql——基础命令集合

目录 前期准备 先登录数据库 一、管理数据库 1.数据表结构解析 2.常用数据类型 3.适用所有类型的修饰符 4.使用数值型的修饰符 二、SQL语句 1.SQL语言分类 三、Mysql——Create,Show,Describe,Drop 1.创建数据库 2.查看数据库 3.切换数据库 4.创建数据表 5.查看…...

记录一次流相关故障

记录一次流相关故障 1、项目中有个JSON字典文件,通过流的方式加载进来,写了个输入流转字符串的方法,idea开发环境下运行一切正常,打成jar或者war包运行时,只能加载出部分数据,一开始怀疑过运行内存分配过小…...

linux源配置:ubuntu、centos;lspci与lsmod命令区别

1、ubuntu源配置 1)先查电脑版本型号: lsb_release -c2)再编辑源更新,源要与上面型号对应 参考:https://midoq.github.io/2022/05/30/Ubuntu20-04%E6%9B%B4%E6%8D%A2%E5%9B%BD%E5%86%85%E9%95%9C%E5%83%8F%E6%BA%90/ /etc/apt/…...

面试算法-88-反转链表

题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 解 class Solution {public ListNode reverseList(ListNode head) {if(head null || hea…...

如何在个人Windows电脑搭建Cloudreve云盘并实现无公网IP远程访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了,各互联网大厂也纷纷加入战局&#…...

一文详解Rust中的字符串

有人可能会说,字符串这么简单还用介绍?但是很多人学习rust受到的第一个暴击就来自这浓眉大眼、看似毫无难度的字符串。 请看下面的例子。 fn main() {let my_name "World!";greet(my_name); }fn greet(name: String) {println!("Hello…...

Mysql中用户密码修改

1、命令行修改 请确保已使用root或其他拥有足够权限的用户登录MySQL,对于MySQL 5.7.6及以上版本或者MariaDB 10.1.20及以上版本。 ALTER USER ‘root’‘localhost’ IDENTIFIED BY ‘root’; 1、使用命令 mysql -uroot -p你的密码 连接到mysql管理工具 2、使用命…...

day14-SpringBoot 原理篇

一、配置优先级 SpringBoot 中支持三种格式的配置文件: 注意事项 虽然 springboot 支持多种格式配置文件,但是在项目开发时,推荐统一使用一种格式的配置 (yml 是主流)。 配置文件优先级排名(从高到低&…...

ChatGPT论文指南|揭秘8大ChatGPT提示词研究技巧提升写作效率【建议收藏】

点击下方▼▼▼▼链接直达AIPaperPass ! AIPaperPass - AI论文写作指导平台 公众号原文▼▼▼▼: ChatGPT论文指南|揭秘8大ChatGPT提示词研究技巧提升写作效率【建议收藏】 目录 1.写作方法 2.方法设计 3.研究结果 4.讨论写作 5.总结结论 6.书…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

HTML 列表、表格、表单

1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

微信小程序云开发平台MySQL的连接方式

注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

AspectJ 在 Android 中的完整使用指南

一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...