《微服务王国的守护者:Spring Cloud Dubbo的奇幻冒险》

news2024/11/19 5:48:20

5. 经典问题与解决方案

5.3 服务追踪与链路监控

在微服务架构的广袤宇宙中,服务间的调用关系错综复杂,如同一张庞大的星系网络。当一个请求穿越这个星系,经过多个服务节点时,如何追踪它的路径,如何监控整个链路的健康状况,成为了确保系统稳定运行的关键。

服务追踪的必要性

想象一下,你是一位星际探险家,你的任务是追踪一艘飞船穿越星系的轨迹。如果飞船在某个星系节点出现了问题,你需要迅速定位问题发生的位置,并了解它之前的航行路径。在微服务架构中,服务追踪的作用与之类似。它帮助我们了解一个请求在系统中的完整调用过程,从而在出现问题时能够快速定位并解决。

集成Zipkin实现服务追踪

Zipkin是微服务架构中广泛使用的一个分布式追踪系统。它像是一个星系中的灯塔,照亮了请求穿越服务的路径。通过集成Zipkin,我们可以收集和可视化服务间的调用链路信息。

要集成Zipkin,首先需要在服务中添加Zipkin客户端的依赖:

<!-- pom.xml中添加Zipkin客户端依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

接着,在配置文件中指定Zipkin服务器的地址:

# application.properties
spring.zipkin.base-url=http://localhost:9411
spring.sleuth.sampler.probability=1.0  # 设置采样率,1.0表示记录所有请求
使用Spring Cloud Sleuth进行链路追踪

Spring Cloud Sleuth是Spring Cloud体系中的一个组件,它与Zipkin协同工作,为服务间的调用自动生成追踪信息。Sleuth通过为每个请求生成一个唯一的追踪ID,并在服务间传递这个ID,来实现整个调用链路的追踪。

在代码中,我们可以使用@NewSpan注解来标记开始一个新的追踪段:

@Service
public class SomeService {

    @NewSpan
    public void someMethod() {
        // 方法逻辑
    }
}
可视化调用链路

当集成了Zipkin和Sleuth后,每次服务调用的信息都会被发送到Zipkin服务器,并在Zipkin的Web界面上进行展示。通过访问Zipkin的Web界面,我们可以看到每个请求的详细追踪信息,包括请求经过的服务节点、每个节点的处理时间等。

链路监控的高级应用

除了基本的追踪功能,Zipkin还支持与Prometheus等监控系统集成,实现对服务链路的实时监控和报警。通过设置阈值和规则,当服务调用的延迟超过预期或者出现异常时,监控系统可以自动触发报警,通知相关人员进行处理。

结论

服务追踪与链路监控是微服务架构中的两个重要概念。通过集成Zipkin和Spring Cloud Sleuth,我们可以有效地追踪和监控服务间的调用链路,提高系统的可观测性和稳定性。在面对复杂的服务调用问题时,这些工具能够帮助我们快速定位问题源头,优化服务性能,保障用户体验。随着技术的发展,服务追踪与链路监控的工具和方法也在不断进化,帮助我们更好地管理和维护微服务架构。

在这里插入图片描述

5.4 配置中心不一致问题

在微服务的广阔天地中,配置中心扮演着至关重要的角色。它如同一个智慧的图书馆,存储着所有服务需要遵循的规则和指南。然而,当图书馆中的信息更新后,如果服务们没有及时获取到这些更新,就会出现配置不一致的问题,这就像是每个人手中拿着的地图不再是最新的,将会导致一系列的混乱和错误。

配置不一致的影响

想象一下,你正在参与一场大型的寻宝游戏,所有的线索都存放在中心图书馆。如果图书馆中的线索发生了变化,而你手中的地图没有更新,那么你可能会按照错误的线索行动,最终迷失方向。在微服务架构中,配置不一致可能导致服务行为异常、数据不一致甚至系统故障。

配置刷新机制

为了解决配置不一致的问题,我们需要一种机制,让服务能够及时地获取到配置中心的最新信息。这就像是图书馆中有一个广播系统,每当有新的书籍或信息更新时,它就会通知所有的读者。

在Spring Cloud中,我们可以使用Spring Cloud Config Server来实现配置刷新。Config Server可以与配置仓库(如Git仓库)集成,提供配置信息,并支持客户端定期拉取配置更新或通过事件触发配置刷新。

以下是如何在Spring Cloud应用中配置配置刷新的一个示例:

# application.properties
spring.cloud.config.uri=http://localhost:8888  # Config Server的地址
spring.cloud.config.name=app-config  # 配置文件的名称
spring.cloud.config.watch.enabled=true  # 开启配置刷新
spring.cloud.config.watch.interval=15000  # 配置刷新的时间间隔,单位为毫秒
故障排查

当配置不一致的问题发生时,我们需要一些工具和策略来帮助我们快速定位和解决问题。

  1. 日志记录:确保Config Server和客户端都有详细的日志记录,记录配置的更新和拉取情况。
  2. 监控系统:使用监控系统(如Prometheus)来监控配置中心和客户端的状态,及时发现异常。
  3. 版本控制:在配置仓库中使用版本控制,确保每次配置更新都有记录,便于回溯和对比。
高级配置管理策略

为了更进一步地管理配置不一致的问题,我们可以采用一些高级策略:

  1. 金丝雀部署:在更新配置时,先在小范围内测试新配置,确保没有问题后再全面推广。
  2. 配置审核:在配置更新流程中加入审核环节,确保每次更新都是经过验证和批准的。
  3. 配置回滚:当新配置导致问题时,能够快速回滚到上一个稳定的配置版本。
结论

配置中心不一致问题是微服务架构中常见的问题之一,它可能导致服务行为异常和系统故障。通过实施配置刷新机制、故障排查策略和高级配置管理策略,我们可以有效地管理和解决配置不一致的问题。这不仅保证了服务的稳定性和可靠性,也提高了整个系统的可维护性和可扩展性。随着微服务架构的不断发展,配置管理也将变得更加智能和自动化,帮助我们更好地应对日益复杂的系统环境。

5.5 微服务安全与认证

在微服务架构的宏伟蓝图中,服务安全与认证是守护这片天地安宁的坚固堡垒。随着服务的不断扩展和互联,确保每一次服务调用的安全性,就如同确保每一条通向城堡的道路都设有严密的守卫。

服务间认证的重要性

想象一下,你是一位国王,你的王国由许多城堡组成,每个城堡都有自己的卫兵和防御机制。在这样一个分散的领地中,确保只有得到授权的人才能进入城堡,是一项至关重要的任务。在微服务架构中,服务间认证的作用与之类似。它确保只有经过验证的服务才能访问特定的资源或数据。

OAuth2协议的应用

OAuth2是一个行业标准的协议,用于授权。它允许第三方应用获取有限的访问权限,而无需暴露用户的用户名和密码。在微服务架构中,OAuth2可以用来实现服务间的安全认证。

例如,假设我们有两个服务:服务A和资源服务B。服务A需要访问资源服务B的资源,但资源服务B只对经过认证的服务开放。这时,服务A可以向认证服务器请求一个访问令牌(Access Token),然后使用这个令牌来请求资源服务B的资源。

JWT的使用

JSON Web Tokens(JWT)是一种用于在网络应用环境间传递声明的一种紧凑的、URL安全的方式。JWT可以被用来认证和服务间信息交换。

一个JWT实际上就是一个加密的JSON对象,它包含了一个头部(Header)、一个负载(Payload)和一个签名(Signature)。在微服务架构中,服务在相互通信时,可以在HTTP头部中携带JWT,以验证请求的合法性。

实现服务间认证的步骤
  1. 认证服务器的设置:首先,需要设置一个认证服务器,它负责发放访问令牌。这个服务器可以是一个独立的微服务,也可以是现有的用户管理系统的一部分。

  2. 服务间通信的保护:服务在发送请求时,需要在HTTP请求的Authorization头部中包含访问令牌:Authorization: Bearer <token>

  3. 资源服务的保护:资源服务需要验证每个请求中的访问令牌,确保请求是由经过认证的服务发出的。

  4. 令牌的刷新和失效:访问令牌应该有一个过期时间,并提供刷新令牌(Refresh Token)机制,以便在访问令牌过期后能够获取新的访问令牌。

示例代码

以下是一个使用Spring Security OAuth2实现服务间认证的简单示例:

@Configuration
@EnableAuthorizationServer
public class OAuth2AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

    // 配置认证服务器的详细信息,包括令牌存储、令牌有效期等
}

@Configuration
@EnableResourceServer
public class OAuth2ResourceServerConfig extends ResourceServerConfigurerAdapter {

    // 配置资源服务的详细信息,包括令牌验证等
}
结论

在微服务架构中,服务安全与认证是保障系统安全的关键环节。通过使用OAuth2协议和JWT,我们可以为服务间的通信提供安全保障。这不仅涉及到技术实现,还包括整个安全策略的规划和执行。随着技术的发展和安全威胁的不断演变,我们需要不断地更新和完善我们的安全策略,以确保微服务架构的安全性和稳定性。通过精心设计和实施服务间认证机制,我们可以构建一个既灵活又安全的微服务生态系统。

5.6 性能瓶颈分析与优化

在微服务的广袤宇宙中,每个服务都像一颗恒星,它们散发出光芒(处理请求),推动着整个系统的运转。然而,就像恒星有时也会黯淡一样,服务在运行过程中也可能会遇到性能瓶颈,这些瓶颈就像是遮蔽光芒的尘埃,阻碍了服务的高效运行。

性能瓶颈的影响

性能瓶颈可能会导致服务响应缓慢,甚至完全无法响应,这不仅影响了用户体验,还可能引发连锁反应,导致整个系统的崩溃。因此,及时发现并解决性能瓶颈是维护微服务健康的重要任务。

定位性能瓶颈

要解决性能瓶颈,首先需要定位问题的根源。这可以通过多种方式实现:

  1. 监控工具:使用APM(应用性能管理)工具如New Relic、Dynatrace等,可以实时监控服务的性能指标,如CPU使用率、内存消耗、响应时间等。

  2. 日志分析:通过分析服务日志,可以发现潜在的性能问题,如异常日志、慢查询日志等。

  3. 性能测试:通过模拟高负载情况,使用JMeter、LoadRunner等工具进行压力测试,可以帮助发现在高并发情况下的性能瓶颈。

解决性能瓶颈

一旦定位到性能瓶颈,就可以采取相应的措施进行优化:

  1. 代码优化:对慢查询、低效算法、重复计算等进行优化,提高代码执行效率。

  2. 数据库优化:优化SQL查询,使用索引,减少不必要的数据访问,甚至可以考虑数据库分库分表。

  3. 资源扩展:增加CPU、内存资源,或者通过负载均衡将请求分散到多个服务实例。

  4. 服务拆分:将一个大型服务拆分成多个小型服务,减少单点的压力。

  5. 缓存应用:使用Redis、Memcached等缓存技术,减少对数据库的直接访问,提高数据读取速度。

示例代码

以下是使用Spring Cache进行缓存优化的示例:

@Service
public class SomeService {

    @Cacheable(value = "cacheName", key = "#id")
    public Data getDataById(String id) {
        // 模拟数据库查询
        return database.findById(id);
    }

    @CacheEvict(value = "cacheName", key = "#id")
    public void updateData(String id, Data newData) {
        // 更新数据库
        database.update(id, newData);
    }
}

在这个示例中,@Cacheable注解用于在获取数据时检查缓存,如果缓存中存在则直接返回,不存在则执行数据库查询并将结果存入缓存。@CacheEvict注解用于在更新数据后清除缓存,确保缓存数据的一致性。

结论

性能瓶颈分析与优化是微服务架构中一项持续的工作。随着服务的不断迭代和用户需求的变化,新的性能瓶颈可能会出现。通过建立一套完整的监控、测试和优化流程,我们可以及时发现并解决性能问题,保证服务的高效运行。这不仅能够提升用户体验,还能够降低系统运营成本,提高整体的系统稳定性和可靠性。随着技术的不断进步,我们有更多的工具和方法来帮助我们进行性能优化,使得微服务架构更加强大和灵活。

在这里插入图片描述

6. 实战案例分析

6.1 案例背景介绍

在这个章节中,我们将通过一系列实战案例来深入理解Spring Cloud Dubbo在实际应用中的表现和效能。每个案例都是一个独特的故事,它们展示了如何将理论知识应用于解决现实世界的问题。

案例一:电商平台服务化改造

一个大型电商平台面临着系统性能瓶颈和扩展性问题。通过采用Spring Cloud Dubbo,平台成功地将单体应用拆分成了多个微服务,包括用户服务、商品服务、订单服务等。这些服务独立部署、独立扩展,大大提升了整个平台的处理能力和稳定性。

问题分析

在电商平台服务化改造的过程中,团队遇到了服务间通信延迟、数据一致性保证、服务容错等挑战。

解决策略

  1. 通信优化:通过Dubbo的RPC机制,优化了服务间的通信协议和序列化方式,减少了通信延迟。
  2. 分布式事务管理:引入了分布式事务协调器,如Atomikos,确保了服务间操作的原子性和一致性。
  3. 服务容错:利用Spring Cloud的Hystrix和Zuul,实现了服务的熔断和降级,以及API网关的请求路由。

6.2 性能优化实践

在改造过程中,性能优化是一个持续的工作。团队通过以下实践提升了系统性能:

  1. 代码层面优化:对热点函数进行性能分析和优化,减少不必要的计算和内存消耗。
  2. 数据库优化:通过建立合理的索引、优化查询语句,提升了数据库操作的效率。
  3. 使用缓存:引入了Redis作为缓存层,减少了对数据库的直接访问,加快了数据读取速度。

安全性是电商平台的重中之重。以下是实施的安全策略:

  1. 服务认证:通过OAuth2协议,实现了服务间的安全认证。
  2. 数据加密:对敏感数据进行了加密处理,确保了数据传输的安全性。
  3. 安全审计:定期进行安全审计,检查系统的安全漏洞并及时修复。

系统的稳定运行离不开有效的监控和维护:

  1. 实时监控:集成了Prometheus和Grafana,实现了服务的实时监控和可视化。
  2. 日志管理:通过ELK Stack(Elasticsearch, Logstash, Kibana)集中管理日志,便于问题的追踪和分析。
  3. 自动化部署:采用Jenkins和Docker实现了持续集成和持续部署(CI/CD),提高了部署效率和可靠性。

6.3 案例总结

通过电商平台的案例,我们可以看到Spring Cloud Dubbo在微服务架构中的应用效果。它不仅提升了系统的扩展性和稳定性,还通过一系列优化措施,提高了系统的性能和安全性。这个案例证明了微服务架构在应对复杂业务场景时的有效性和灵活性。

除了电商平台案例,本章节还将简要介绍其他几个实战案例,如在线教育平台的微服务改造、金融行业的服务化架构设计等。每个案例都将展示Spring Cloud Dubbo在不同行业中的应用和所带来的价值。

通过实战案例分析,大伙们可以获得更直观、更深入的理解,看到Spring Cloud Dubbo如何在真实世界中发挥作用,解决实际问题,并带来业务价值。这些案例不仅提供了宝贵的经验教训,也为大家在自己的项目中应用Spring Cloud Dubbo提供了灵感和参考。

7. 未来展望与技术趋势

7.1 微服务架构的演进

随着技术的不断进步,微服务架构也在持续演进。未来的微服务将更加注重服务的自治性、可观测性和智能化。

自治服务

未来的微服务将趋向于更高程度的自治,每个服务都将拥有自我管理、自我修复的能力。这将减少人工干预,提升系统的稳定性和可靠性。

可观测性

可观测性是微服务架构中的重要特性。随着AI技术的发展,未来的微服务将实现更智能的监控和日志分析,能够自动发现异常并提供优化建议。

智能化

AI和机器学习技术将被广泛应用于微服务架构中,实现智能负载均衡、智能故障预测、智能性能优化等功能。

7.2 云原生技术的发展

云原生技术是微服务架构的最佳搭档。随着云原生技术的不断发展,未来的微服务将更加灵活、可扩展。

Kubernetes作为云原生技术的核心,将继续发展和完善,为微服务提供更加强大的容器编排和管理能力。

服务网格技术如Istio和Linkerd,将简化微服务间的通信和安全问题,实现更细粒度的流量管理和服务发现。

7.3 多语言和多框架支持

微服务架构的一个优势是语言和框架的多样性。未来,我们将看到更多语言和框架被用于构建微服务。

Java、.NET、Go、Node.js等语言都将继续发展,为微服务提供更多的选择和灵活性。

多框架支持,除了Spring Cloud和Dubbo,未来将有更多框架和平台支持微服务架构,如.NET Core的Microservices、Go的Micro框架等。

7.4 边缘计算与微服务

随着5G和物联网技术的发展,边缘计算将成为微服务架构的新战场。未来的微服务将部署在边缘节点,提供更接近用户的服务,减少延迟,提升用户体验。从云端到边缘端,微服务架构将实现端到端的整合,构建更加完整的系统。在数字化时代,安全性和隐私保护是微服务架构必须面对的挑战。

零信任安全模型将成为微服务架构的标配,确保只有经过验证和授权的请求才能访问服务。随着数据隐私法规的加强,微服务架构将更加注重数据的加密、脱敏和合规性。开源是微服务架构的重要基石。

未来,我们将看到更加繁荣的开源生态。开源社区将继续发展壮大,为微服务架构提供更多的创新和支持。商业公司和开源社区将进一步合作,推动微服务架构的发展和创新。

7.5 结论

微服务架构的未来充满了无限可能。随着技术的演进和创新,微服务将变得更加智能、灵活和安全。作为开发者和架构师,我们需要不断学习和适应新技术,以构建更加强大和可靠的系统。同时,我们也要积极参与开源社区,共同推动微服务架构的发展和进步。

通过本章节的未来展望与技术趋势分析,读者将获得对微服务架构未来发展的全面认识,为未来的技术选型和架构设计提供指导和参考。
在这里插入图片描述

8. 结论

Spring Cloud Dubbo 的优势总结

在微服务王国的冒险旅程即将结束之际,我们回首过去,不禁感慨万千。Spring Cloud Dubbo这两位英雄,携手为我们的王国带来了前所未有的繁荣和稳定。

就像王国里的小屋可以根据需要随意搭建和扩展,Spring Cloud Dubbo也提供了极高的灵活性和扩展性。无论是增加新的服务,还是对现有服务进行升级,都能轻松应对。

我们的王国拥有丰富的魔法资源和勇士技能,Spring Cloud Dubbo同样拥有强大的生态支持。从服务发现到配置管理,从负载均衡到断路器,各种工具和组件应有尽有,为我们的小屋提供了全方位的保护。

在微服务王国中,每个小屋都需要定期的维护和监控,以确保其正常运行。Spring Cloud Dubbo通过集成各种监控和管理工具,使得服务的维护和监控变得简单而直观。

未来发展趋势展望

展望未来,我们的微服务王国将继续发展壮大。随着技术的不断进步,Spring Cloud Dubbo也将不断进化,带来更多令人激动的新特性和改进。

随着云技术的发展,未来的Spring Cloud Dubbo将更加深入地融入云原生环境,提供更好的容器化支持和云服务集成。

想象一下,如果邮递员能够预测哪些信件会迟到,并提前做出调整,那将是多么美妙的事情。未来的Spring Cloud Dubbo可能会集成AI和机器学习技术,实现更智能的服务管理和优化。

更加注重安全和隐私

在这个信息爆炸的时代,安全和隐私保护变得越来越重要。未来的Spring Cloud Dubbo将更加注重安全和隐私,提供更加强大的安全机制和隐私保护措施。

随着夕阳的余晖洒满微服务王国,我们的冒险也即将画上句号。但我们知道,这只是一个新的开始。Spring Cloud Dubbo将继续陪伴我们,在这个充满魔法和奇迹的王国中,探索更多未知的领域,迎接更多的挑战。让我们一起期待,未来的微服务王国将会更加繁荣昌盛!

参考文献

  1. 书籍

    • 《Spring Cloud微服务实战》作者:翟永超
    • 《Spring Cloud与Dubbo微服务架构实战》作者:周立
    • 《Spring Cloud微服务架构开发实战》作者:黄文会
  2. 官方文档

    • Spring Cloud官方文档:https://spring.io/projects/spring-cloud#overview
    • Apache Dubbo官方文档:http://dubbo.apache.org/
  3. 在线教程和博客

    • InfoQ - Spring Cloud专题:https://www.infoq.cn/topic/Spring-Cloud/
    • 码云社区 - Dubbo教程:https://gitee.com/features/dubbo
    • 阮一峰的网络日志 - Spring Cloud学习笔记:http://www.ruanyifeng.com/blog/2016/09/spring-cloud.html
  4. 技术社区和论坛

    • Stack Overflow - Spring Cloud和Dubbo相关问题:https://stackoverflow.com/questions/tagged/spring-cloud+dubbo
    • GitHub - 相关开源项目和示例代码:https://github.com/search?q=spring+cloud+dubbo
  5. 视频教程

    • B站(哔哩哔哩)上的Spring Cloud和Dubbo教程
    • YouTube上的Spring Cloud和Dubbo相关视频
  6. 专业网站和杂志

    • 《程序员》杂志中的相关文章
    • CSDN、掘金等技术社区中的专业文章

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

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

相关文章

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 17 节&#xff09; P17《16.Ark-状态管理Prop Link Provide Consume》 将上一节写出的代码进行功能模块封装&#xff1a;1、任务…

计算机毕业设计 | node.js(Express)+vue影院售票商城 电影放映购物系统(附源码+论文)

1&#xff0c;绪论 1.1 项目背景 最近几年&#xff0c;我国影院企业发展迅猛&#xff0c;各大电影院不断建设新的院线&#xff0c;每年新投入使用的荧幕数目逐年显著上升。这离不开人们的观影需求及对观影的过程要求的不断进步。广大观影消费者需要知道自己的空闲时间&#x…

STM32自己从零开始实操02:输入部分原理图

一、触摸按键 1.1指路 项目需求&#xff1a; 4个触摸按键&#xff0c;主控芯片 TTP224N-BSBN&#xff08;嘉立创&#xff0c;封装 TSSOP-16&#xff09;&#xff0c;接入到 STM32 的 PE0&#xff0c;PE1&#xff0c;PE2&#xff0c;PE3。 1.2走路 1.2.1数据手册重要信息提…

SpringCloud Alibaba的相关组件的简介及其使用

Spring Cloud Alibaba是阿里巴巴为开发者提供的一套微服务解决方案&#xff0c;它基于Spring Cloud项目&#xff0c;提供了一系列功能强大的组件&#xff0c;包括服务注册与发现、配置中心、熔断与限流、消息队列等。 本文将对Spring Cloud Alibaba的相关组件进行简介&#xff…

操作系统实验1:Linux常用命令及简单C语言程序调试

1.1实验目的 了解Linux系统的组织和行为&#xff0c;包括 Linux的用户界面、目录结构组织、运行程序的基本方式。通过使用终端(terminal)熟悉Linux Shell 、常见命令(cd、ls、ps、chmod等)和 redirect、pipe机制。学习使用vi或者gedit等编辑器编辑一个c语言源程序&#xff0c;…

高中数学:平面向量-数量积(向量与向量的乘积)与投影

一、引题 物理上的力做功 二、数量积与投影 1、数量积 θ的范围是[0,π] 2、投影 向量的投影&#xff0c;依然是一个向量&#xff01; 3、运算法则 易错点&#xff1a; 4、重要性质 这里对性质(2)要注意一下&#xff1a;如果 a → \mathop{a}\limits ^{\rightarrow…

数据结构和算法|堆排序系列问题(一)|堆、建堆和Top-K问题

在这里不再描述大顶堆和小顶堆的含义&#xff0c;只剖析原理层面。 主要内容来自&#xff1a;Hello算法 文章目录 1.堆的实现1.1 堆的存储与表示过程1.2 访问堆顶元素1.4元素出堆 2.⭐️建堆2.1 方法一&#xff1a;借助入堆操作实现2.2 ⭐️方法二&#xff1a;通过遍历堆化实现…

JS 实战 贪吃蛇游戏

一、css 部分 1. 居中 想要开始和暂停两个按钮居中&#xff0c;可以将盒子设置为弹性盒 也可以使用其他方法 【代码】 2. 将父元素设置为相对定位&#xff0c;偏于之后贪吃蛇长长的身子&#xff0c;是以父元素为基点的绝对定位&#xff0c;通过 left 和 top 来控制位置 二、…

vue表格中上传按钮样式

问题&#xff1a;写了样式但是遇到问题如下图&#xff1a; 解决方法&#xff1a; ::v-deep .el-upload {display: flex;justify-content: center;align-items: center; } 因为上传的图标被包含在el-upload中&#xff0c;而删除按钮并没有被包含在el-upload中。 所以整体的样式…

存储+调优:存储-IP-SAN

存储调优&#xff1a;存储-IP-SAN 数据一致性问题 硬盘&#xff08;本地&#xff0c;远程同步rsync&#xff09; 存储设备&#xff08;网络&#xff09; 网络存储 不同接口的磁盘 1.速率 2.支持连接更多设备 3.支持热拔插 存储设备什么互联 千…

ACM实训

【碎碎念】继续搞习题学习&#xff0c;今天完成第四套的ABCD&#xff0c;为下一周挤出时间复习&#xff0c;加油 Digit Counting 问题 法希姆喜欢解决数学问题。但有时解决所有的数学问题对他来说是一个挑战。所以有时候他会为了解决数学难题而生气。他拿起一支粉笔&#xff…

岛屿问题刷题

200. 岛屿数量 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int numIslands(char[][] grid) {int n grid.length;//grid行数int m grid[0].length;//grid列数int res 0;for(int r 0;r<n;r){for(int c0;c<m;c){if(grid[r][c]1){dfs(grid,r,c);res…

HCIP-VLAN综合实验

一、实验拓扑 二、实验要求 1、pc1和pc3所在接口为access;属于vlan 2; PC2/PC4/PC5/PC6处于同一网段’其中PC2可以访问PC4/PC5/PC6; PC4可以访问PC6&#xff1b;PC5不能访问PC6&#xff1b; 2、PC1/PC3与PC2/PC4/PC5/PC6不在同一个网段&#xff1b; 3、所有PC通过DHCP获取IP…

Multi-Attention Transformer for Naturalistic Driving Action Recognition

标题&#xff1a;用于自然驾驶行为识别的多注意力Transformer 源文链接&#xff1a;https://openaccess.thecvf.com/content/CVPR2023W/AICity/papers/Dong_Multi-Attention_Transformer_for_Naturalistic_Driving_Action_Recognition_CVPRW_2023_paper.pdfhttps://openaccess…

安装ollama并部署大模型并测试

Ollama介绍 项目地址&#xff1a;ollama 官网地址&#xff1a; https://ollama.com 模型仓库&#xff1a;https://ollama.com/library API接口&#xff1a;api接口 Ollama 是一个基于 Go 语言开发的简单易用的本地大语言模型运行框架。可以将其类比为 docker&#xff08;同基…

鸿蒙ArkUI-X跨平台技术:【SDK结构介绍】

ArkUI-X SDK目录结构介绍 简介 本文档配套ArkUI-X&#xff0c;将OpenHarmony ArkUI开发框架扩展到不同的OS平台&#xff0c;比如Android和iOS平台&#xff0c;让开发者基于ArkUI&#xff0c;可复用大部分的应用代码&#xff08;UI以及主要应用逻辑&#xff09;并可以部署到相…

深度学习之人脸性别年龄检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着计算机视觉和深度学习技术的飞速发展&#xff0c;人脸性别年龄检测系统在多个领域展现出广…

简易Docker磁盘使用面板Doku

这个项目似乎有 1 年多没更新了&#xff0c;最后发布版本的问题也没人修复&#xff0c;所以看看就行&#xff0c;不建议安装 什么是 Doku &#xff1f; Doku 是一个简单、轻量级的基于 Web 的应用程序&#xff0c;允许您以用户友好的方式监控 Docker 磁盘使用情况。Doku 显示 D…

【30天精通Prometheus:一站式监控实战指南】第6天:mysqld_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们&#x1f44b;   欢迎加入【30天精通Prometheus】专栏&#xff01;&#x1f4da; 在这里&#xff0c;我们将探索Prometheus的强大功能&#xff0c;并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。&#x1f680;   Prometheus是云原生和DevOps的…

JavaEE-网络初识

文章目录 一、网络背景1.1 起源1.2 国内网络的发展 二、关键概念2.1 网络2.2 设备2.3 ip地址与端口号 三、协议3.1 协议分层3.2 OSI七层模型3.3 TCP/IP五层模型3.4 数据传输过程的简单叙述 一、网络背景 1.1 起源 在国外大概时上世纪70年代左右&#xff0c;网络就出现了&…