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

云原生微服务的前世今生

目录

Part1 时代背景

Part2 何为微服务?

Part3 微服务出现的意义​

Part4 企业应用

京东:国内电商领域的微服务实践​

阿里:微服务在复杂业务场景中的应用​

Part5 Istio:服务网格时代的微服务治理中枢​

Istio 的技术定位与本质​

Part6 大厂应用微服务的经验与教训​

经验总结​

教训与挑战​

Part7 微服务的未来发展趋势​


        随着互联网技术的快速发展,传统的单体架构在应对大规模、复杂业务场景时逐渐显现出局限性,如代码臃肿、模块耦合度高、扩展性差等问题。微服务架构应运而生,通过将应用程序拆分为多个独立的小型服务单元,每个服务专注于特定业务功能,实现了独立开发、测试、部署和扩展。微服务架构的核心特点包括独立性、细粒度、分布式、松耦合和技术异构性,显著提升了开发效率、降低了维护成本,并支持快速迭代和灵活扩展。云计算技术的发展为微服务架构提供了基础设施支持,如容器化技术和容器编排引擎。京东和阿里巴巴等企业在微服务实践中取得了显著成效,通过服务拆分、分布式数据管理和服务治理机制,有效应对了高并发、复杂业务场景的挑战,通过文章你能简单了解什么是微服务、微服务的意义、企业中的应用等等。

Part1 时代背景

        在软件开发的早期阶段,单体架构占据主导地位。这种架构将整个应用程序的所有功能模块打包成一个独立的单元,例如一个 WAR 包或可执行文件,部署在单一的服务器上。它的优势在于开发简单,易于测试和部署,对于小型应用来说,能够快速实现业务逻辑。​

        然而,随着互联网技术的飞速发展与企业业务的持续拓展,单体架构的局限性日益凸显。当应用规模不断扩大,代码库变得愈发臃肿,模块间的耦合度极高,构建和部署时间大幅增加,严重影响开发效率。不同功能模块的开发团队在同一个代码库中协作,容易出现冲突和依赖问题,难以实现独立开发、测试和部署。此外,单体架构的扩展性差,当某个功能模块需要扩展时,必须对整个应用进行部署,无法针对特定模块进行灵活调整。在技术更新方面,单体架构也面临巨大挑战,由于所有模块都使用相同的技术栈,难以引入新的技术框架或语言,无法满足快速变化的业务需求。​

        随着移动互联网、大数据、人工智能等技术的兴起,互联网业务呈现出多样化、个性化、实时化的特点。企业需要不断推出新的功能和服务,以满足用户日益增长的需求。例如,电商平台需要支持实时的商品推荐、库存管理、订单处理等功能,这些功能对系统的可用性、可扩展性和容错性提出了极高的要求。传统的单体架构难以应对这些挑战,迫切需要一种新的架构模式来支持业务的快速发展。​

        而随着云计算技术的发展为微服务架构的出现提供了坚实的基础。云计算提供了弹性计算、分布式存储、网络服务等基础设施,使得构建分布式系统变得更加容易。通过云计算平台,开发人员可以快速部署和扩展微服务,实现资源的动态分配和管理。此外,云计算还提供了丰富的工具和服务,如容器化技术(Docker)、容器编排引擎(Kubernetes等,为微服务的部署、管理和监控提供了有力支持。

Part2 何为微服务?

        微服务架构是一种将单个应用程序拆分为多个小型、独立的服务单元的架构模式。每个微服务都运行在自己的进程中,通过轻量级的通信机制(如 HTTP/REST、gRPC 等)进行交互。这些微服务可以独立开发、测试、部署和扩展,每个服务都专注于实现一个特定的业务功能,例如用户管理、订单处理、支付服务等。​

微服务的核心特点​:

独立性每个微服务都是一个独立的实体,拥有自己的代码库、数据存储和运行环境。开发团队可以独立地对每个微服务进行开发、测试和部署,无需担心对其他服务的影响。

细粒度微服务的粒度非常小,通常围绕着特定的业务功能进行划分

分布式:微服务架构是一种分布式系统,多个服务实例可以分布在不同的服务器上运行。通过分布式部署,可以实现系统的高可用性和可扩展性。

松耦合:微服务之间通过轻量级的通信机制进行交互,耦合度较低。这种松耦合的设计使得每个服务可以独立地演化和升级,而不会影响到其他服务。​

技术异构性:每个微服务可以根据自身的业务需求选择合适的技术栈,包括编程语言、框架、数据库等。

Part3 微服务出现的意义​

        微服务架构将复杂的应用程序拆分为多个小型、独立的服务,每个服务专注于实现一个特定的业务功能。开发团队可以并行开发不同的服务,提高开发效率。此外,由于每个服务的代码库较小,易于理解和维护,开发人员可以更快地进行代码修改和调试。​

        传统的单体架构随着应用规模的扩大,维护成本越来越高。而微服务架构中,每个服务都是独立的,当某个服务出现问题时,只需要对该服务进行修复和部署,不会影响到其他服务。此外,微服务的细粒度划分使得代码更加模块化,易于理解和维护,降低了系统的维护成本。​

        微服务架构支持独立的开发、测试和部署,每个服务可以根据业务需求进行快速迭代和部署。例如,当需要推出一个新的功能时,只需要对相关的微服务进行修改和部署,无需对整个应用进行重新构建和部署。这种快速迭代和部署的能力使得企业能够更快地响应市场需求,推出新的产品和服务。​

        微服务架构的分布式部署和细粒度划分使得系统具有更好的可扩展性。当某个服务的负载增加时,可以通过增加该服务的实例数量来提高系统的处理能力。此外,微服务之间的松耦合设计使得系统具有更好的容错性,当某个服务出现故障时,其他服务可以继续运行,不会导致整个系统的瘫痪。

        微服务架构的技术异构性使得开发团队可以选择最适合的技术栈来实现每个服务。这鼓励了技术创新,开发人员可以尝试新的编程语言、框架和工具,提高开发效率和系统性能。同时,技术异构性也使得企业能够更好地利用不同技术的优势,构建更加灵活和高效的系统。

Part4 企业应用

京东:国内电商领域的微服务实践​

        京东作为国内知名的电商平台,面临着高并发、海量数据、复杂业务场景等挑战。为了应对这些挑战,京东在微服务架构方面进行了深入的实践和探索。​

        京东将整个电商系统拆分为多个微服务,如用户中心、商品中心、订单中心、支付中心、物流中心等。每个微服务都实现了特定的业务功能,并且可以独立扩展和部署。例如,在大促期间,订单中心和支付中心的负载会急剧增加,通过增加这两个微服务的实例数量,可以提高系统的处理能力,保证订单和支付的正常处理。​

        在微服务的通信方面,京东采用了自研的 RPC 框架(京东分布式服务框架,JDSF),该框架支持多种通信协议(如 TCP、HTTP 等),提供了高效的远程调用能力。同时,京东还引入了服务治理机制,对微服务进行注册、发现、负载均衡、容错处理等管理。通过服务治理,实现了微服务之间的透明调用和动态管理,提高了系统的可用性和可靠性。​

        京东在微服务的数据管理方面也进行了创新,采用了分布式数据库和缓存技术。对于用户数据、商品数据等核心数据,采用分布式数据库进行存储,实现数据的分片和复制,提高数据的可用性和扩展性。对于高频访问的数据,如商品详情、用户购物车等,采用缓存技术(如 Redis)进行缓存,减少数据库的访问压力,提高系统的响应速度。​

阿里:微服务在复杂业务场景中的应用​

        阿里巴巴作为国内互联网行业的巨头,其业务涵盖了电商、金融、云计算、物流等多个领域,业务场景非常复杂。为了支持这些复杂的业务,阿里在微服务架构方面进行了大量的实践和创新。​

        阿里的微服务架构以 Dubbo Spring Cloud 为核心,结合自身的技术生态进行了扩展和优化。Dubbo 是阿里开源的分布式服务框架,提供了服务注册、发现、负载均衡、容错处理等功能,是阿里微服务架构的重要组成部分。Spring Cloud 则是基于 Spring Boot 的微服务开发框架,提供了一系列的工具和组件,方便开发人员快速构建微服务应用。​

        在微服务的治理方面,阿里建立了完善的服务治理体系,包括服务注册中心、配置中心、监控中心、日志中心等。服务注册中心用于管理微服务的注册和发现,配置中心用于统一管理微服务的配置信息,监控中心用于实时监控微服务的运行状态和性能指标,日志中心用于收集和分析微服务的日志信息。通过这些治理工具,实现了对微服务的全方位管理和监控,提高了系统的可维护性和可靠性。

        阿里还在微服务的安全性方面进行了深入的研究和实践,采用了身份认证、授权、加密等技术,保障微服务之间的通信安全和数据安全。例如,在微服务之间的通信过程中,采用 HTTPS 协议进行加密传输,防止数据被窃取和篡改。同时,对微服务的访问进行严格的权限控制,确保只有授权的用户和服务才能访问相关的资源。

Part5 Istio:服务网格时代的微服务治理中枢​

Istio 的技术定位与本质​

        作为云原生时代微服务架构的重要基础设施,Istio 本质上是服务网格(Service Mesh)的典型实现。它并非传统意义上的微服务框架(如 Spring Cloud、Dubbo),而是通过在微服务体系中注入一个 "透明化的治理层",解决分布式系统中最复杂的通信与治理问题。其核心价值在于将微服务间的网络通信、流量控制、安全策略、可观测性等能力从业务代码中剥离,形成独立的底层基础设施,让开发团队专注于业务逻辑实现。​

Istio 如何重构微服务治理体系​

数据平面与控制平面的解耦设计​

  • 数据平面(Data Plane:由部署在每个微服务旁的 Sidecar 代理(如 Envoy)组成,负责实际的流量转发、负载均衡、熔断降级等底层网络功能。Sidecar 以透明方式拦截微服务间的所有入站 / 出站流量,无需修改业务代码即可实现治理能力的注入。​
  • 控制平面(Control Plane:提供统一的管理界面,支持流量规则配置(如路由策略、金丝雀发布)、安全策略(如双向 TLS 认证、服务间权限管理)、可观测性数据聚合(如 Metrics、日志、链路追踪)。通过 Pilot 组件实现多集群、多平台的服务发现适配,兼容 Kubernetes、VM 等多种部署环境。​

核心功能模块解析​

  • 流量治理支持灰度发布、故障注入、流量镜像等高级路由策略。例如,通过 VirtualService 和 DestinationRule 配置,可以实现将 10% 的用户流量路由到新版本微服务,用于 A/B 测试;通过 FaultInjection 模拟网络延迟或服务熔断,验证系统容错能力。​
  • 安全增强提供零信任架构下的服务间通信安全,包括基于 SPIFFE 标准的身份认证(服务即身份)、传输层加密(mTLS)、细粒度的 RBAC 权限控制。某金融企业通过 Istio 实现了微服务间通信的全链路加密,将 API 调用的安全漏洞风险降低 90% 以上。​
  • 可观测性自动收集微服务间调用的 Metrics(如延迟、吞吐量、错误率),结合 Jaeger 实现分布式链路追踪,帮助开发团队快速定位跨服务调用中的性能瓶颈。某电商平台在接入 Istio 后,故障排查时间从平均 4 小时缩短至 30 分钟。

Istio 与传统微服务框架的关系​

对比维度

传统微服务框架(如 Spring Cloud

Kubernetes+Istio 服务网格

治理方式

侵入式(需在业务代码中集成 SDK)​

非侵入式(通过 Sidecar 代理透明治理)​

技术栈兼容性

强绑定特定技术栈(如 Java)​

语言无关(支持多语言微服务混合部署)​

治理范围

单集群内服务治理​

跨集群、跨云、跨平台的全局治理​

复杂度

随服务数量增加呈线性增长​

治理复杂度集中在底层基础设施层​

实践建议:对于新开发的微服务系统,推荐采用 "Istio+Kubernetes + 容器化" 的云原生组合,实现治理能力的开箱即用;对于存量微服务(如基于 Dubbo/Spring Cloud 的系统),可通过 Sidecar 模式逐步迁移,在不改变现有架构的前提下叠加 Istio 的高级治理能力。​

Part6 大厂应用微服务的经验与教训​

经验总结​

合理划分微服务:微服务的划分是微服务架构实施的关键环节,需要根据业务功能、团队组织、技术特点等因素进行合理划分。划分过细会导致服务数量过多,增加管理和维护的难度;划分过粗则无法充分发挥微服务的优势。大厂通常采用领域驱动设计(DDD)的方法,将业务领域划分为不同的子域,每个子域对应一个或多个微服务,确保微服务的划分符合业务逻辑。​

完善的服务治理体系:服务治理是微服务架构成功实施的保障,包括服务注册与发现、负载均衡、容错处理、配置管理、监控与日志等方面。大厂通过建立完善的服务治理体系,实现了对微服务的动态管理和监控,提高了系统的可用性、可扩展性和可维护性。​

自动化的持续交付和部署:微服务架构支持独立的开发、测试和部署,大厂通过建立自动化的 CI/CD 管道,实现了微服务的快速迭代和发布。自动化的持续交付和部署流程包括自动化构建、自动化测试、自动化部署等环节,确保了微服务的质量和可靠性。​

技术异构性的管理:微服务架构允许每个服务采用不同的技术栈,这给技术管理带来了一定的挑战。大厂通过制定统一的技术规范和接口标准,确保不同技术栈的微服务之间能够进行有效的通信和协作。同时,建立技术共享和交流机制,促进不同团队之间的技术创新和经验分享。​

数据管理的分布式设计:微服务架构下,数据通常分布在不同的服务中,需要采用分布式数据管理技术。大厂采用分布式数据库、缓存、消息队列等技术,实现了数据的分片、复制、一致性维护等功能,确保了数据的可用性和可靠性。​

教训与挑战​

分布式系统的复杂性:微服务架构是一种分布式系统,分布式系统带来的复杂性如网络延迟、分布式事务、数据一致性等问题需要开发人员具备丰富的经验和技术能力。大厂在实施微服务架构过程中,也遇到了这些问题,需要不断探索和解决。​

服务间通信的开销:微服务之间通过网络进行通信,会带来一定的通信开销。过多的服务调用会导致系统性能下降,需要开发人员在服务划分和通信机制选择上进行权衡。大厂通常采用高效的通信协议和优化的服务调用方式,减少服务间通信的开销。​

运维管理的难度增加:微服务架构下,服务数量众多,部署环境复杂,运维管理的难度大大增加。大厂需要建立完善的运维监控体系,采用自动化的运维工具,提高运维效率和可靠性。​

团队协作的挑战:微服务架构需要多个团队独立开发、维护不同的服务,团队之间的协作和沟通变得更加重要。大厂通过建立跨团队的协作机制、统一的开发规范和接口文档,促进团队之间的有效协作。

Part7 微服务的未来发展趋势​

与云原生技术的深度融合​

        云原生技术包括容器化、服务网格、声明式 API、持续交付等,与微服务架构具有天然的契合性。未来,微服务将与云原生技术深度融合,利用容器化技术实现微服务的快速部署和迁移,利用服务网格实现微服务之间的通信管理和流量控制,利用声明式 API 实现微服务的自动化管理和配置,利用持续交付实现微服务的快速迭代和发布。​

Serverless 架构的兴起​

        Serverless 架构是一种新兴的架构模式,它让开发人员无需关注服务器的管理和运维,只需专注于业务逻辑的开发。Serverless 架构与微服务架构相结合,可以进一步简化微服务的部署和管理,提高开发效率。未来,Serverless 架构可能会成为微服务架构的重要发展方向之一。​

智能化的微服务治理​

        随着人工智能和机器学习技术的发展,微服务治理将朝着智能化的方向发展。通过对微服务的运行数据进行分析和学习,实现智能的服务发现、负载均衡、容错处理等功能,提高系统的自适应性和智能化水平。​

边缘计算与微服务的结合​

        边缘计算是一种将计算和存储资源部署在网络边缘的技术,能够降低延迟、提高数据处理效率。微服务架构与边缘计算相结合,可以在边缘节点上部署微服务,实现对边缘设备的实时监控和管理,满足物联网、智能制造等领域的需求。​

        总之,微服务架构作为一种先进的软件开发架构模式,已经在互联网行业得到了广泛的应用和验证。随着云计算、大数据、人工智能等技术的不断发展,微服务架构也将不断演进和完善,为企业的数字化转型提供更强大的支持。作为云原生工程师,我们需要不断学习和掌握微服务架构的核心技术和实践经验,紧跟技术发展趋势,为构建更加高效、灵活、可靠的云原生应用贡献自己的力量

相关文章:

云原生微服务的前世今生

目录 Part1 时代背景 Part2 何为微服务? Part3 微服务出现的意义​ Part4 企业应用 京东:国内电商领域的微服务实践​ 阿里:微服务在复杂业务场景中的应用​ Part5 Istio:服务网格时代的微服务治理中枢​ Istio 的技术定位…...

Python之虚拟环境

文章目录 Python之虚拟环境虚拟环境核心概念为什么需要虚拟环境?虚拟环境注意事项 创建虚拟环境使用 venv (Python 3.3 内置)使用 virtualenv (第三方工具,支持Python 2/3)与 venv创建方式的区别Python 版本支持功能与兼容性依赖关系和性能命令行工具创建…...

【Java高阶面经:数据库篇】15. 零停机数据迁移:从双写到一致性校验

一、迁移架构设计:双写+增量同步的三层防护模型 1.1 核心架构流程图 #mermaid-svg-MfnakvBNrtFScrMe {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MfnakvBNrtFScrMe .error-icon{fill:#552222;}#mermaid-svg-Mf…...

车载以太网网络测试-27【SOME/IP-SD简述】

文章目录 1 摘要2 SOME/IP-SD协议介绍2.1 定义与作用2.2 SOMEIP/SD协议通俗易懂的理解2.2.1 SOMEIP/SD协议是什么?2.2.2 通信流程(简化)2.2.3 车载功能示例2.2.4 类比理解 2.3 SOME/IP-SD报文结构2.3.1 Flags2.3.1.1 REBOOT (Bit 7)2.3.1.2 U…...

Ubuntu 22.04上升级Node.js版本

在Ubuntu 22.04上升级Node.js版本有几种方法,推荐使用NVM(Node Version Manager),因为它可以让你轻松管理多个Node.js版本。 方法1: 使用NVM(推荐) 1. 安装NVM # 下载并安装NVM curl -o- https://raw.gi…...

软件设计师“面向对象设计”真题考点分析——求三连

一、考点分值占比与趋势分析 综合知识历年考察统计 年份考题数分值占比考察重点2018334%继承类型、设计原则2019445.3%多态实现、类关系2020556.7%设计模式应用、接口隔离2021334%消息通信、封装特性2022668%开闭原则、组合模式2023556.7%模板方法、适配器模式2024445.3%单一…...

flutter dart 函数语法

以下是 Dart 语言中函数语法的 详细实例说明,涵盖了所有常用写法 基本语法参数类型(必选、可选、命名、默认值)匿名函数、箭头函数高阶函数(函数作为参数/返回值)异步函数(async / await) 1. …...

鸿蒙Flutter实战:24-混合开发详解-4-初始化Flutter

概述 将 Flutter 模块添加至宿主鸿蒙项目中后,接下需要实现页面跳转、消息通信等功能,本文重点介绍如何初始化 Flutter。 项目配置 添加依赖 编辑 ohos_app/oh-package.json 文件 如果通过 Har 包方式引入 Flutter 模块,则需要添加如下内…...

微信小程序之Promise-Promise初始用

我们来尝试使用Promise。 1、需求&#xff0c;做个抽奖的按钮&#xff0c; 抽奖规则&#xff1a; 30%的几率中奖&#xff0c;中奖会提示恭喜恭喜&#xff0c;奖品为10万 RMB 劳斯莱斯优惠券&#xff0c;没中奖会提示再接再厉。 2、先搭界面&#xff1a; <view class&qu…...

工业 / 农业 / AR 场景怎么选?Stereolabs ZED 双目3D相机型号对比与选型建议

Stereolabs ZED 相机系列为视觉感知领域提供了多种创新解决方案&#xff0c;适用于不同应用场景。选择合适的 ZED 相机型号&#xff0c;需综合考虑分辨率、深度感知范围、接口类型等因素。 Stereolabs ZED 相机产品系列概览 ZED&#xff1a;首款立体视觉相机&#xff0c;专为高…...

(Git) 稀疏检出(Sparse Checkout) 拉取指定文件

文章目录 &#x1f3ed;作用&#x1f3ed;指令总览&#x1f477;core.sparseCheckout&#x1f477;sparse-checkout 文件 &#x1f3ed;实例演示⭐END&#x1f31f;交流方式 &#x1f3ed;作用 类似于 .gitignore 进行文件的规则匹配。 一般在需要拉取大型项目指定的某些文件…...

Nginx 部署前端项目dist文件到局域网然后ngrok部署到公网

①项目里面 npm run build 生成的dist文件 ②下载nginx: download 将dist文件夹放入html文件夹中 ③conf修改配置 里面有nginx.conf 文本修改④在此目录下 打开cmd 输入 start nginx.exe 启动代理 ⑤http://localhost:90/index.html即可或者域名换成你的ip地址也可以 …...

【sylar-webserver】9 网络模块

目录 Address 类图 知识点 常用结构体 常用函数 Socket 类图 主要功能 初始化 socket 流程&#xff1a; ByteArray 知识点 zigzag 算法 TLV 编码结构 Stream 类图 Stream 流结构&#xff0c;提供字节流读写接口 SocketStream TcpServer 类图 主要功能 Address…...

野火鲁班猫(arrch64架构debian)从零实现用MobileFaceNet算法进行实时人脸识别(四)安装RKNN Toolkit2

RKNN Toolkit2是用来将onnx模型转成rknn专用模型&#xff0c;并可通过RKNN Toolkit Lite2或者RKNPU调用NPU进行加速计算的工具。 一开始我安装很多次都无法成功安装。后来跟售后技术对接&#xff0c;必须是PC平台的Linux环境才可以。我的电脑是windows&#xff0c;所以我需要用…...

第六部分:阶段项目 5:构建 NestJS RESTful API 服务器

现在&#xff0c;是时候将你学到的 NestJS 知识付诸实践&#xff0c;构建一个简单的 RESTful API 服务器了。我们将基于第四阶段的项目&#xff08;博客文章 API 或任务管理 API&#xff09;&#xff0c;使用 NestJS 的方式重新实现它。 选择以下一个项目&#xff1a; 项目选…...

【工作流】Fastgpt配置豆包模型-火山引擎

V4.9.7 Fastgpt现在不通过oneapi 来配置模型和渠道了&#xff0c; 可以直接在页面进行设置 首先在账号- 模型提供商里面 填入豆包的信息&#xff1a; 渠道名随便填&#xff0c;厂商选豆包&#xff0c; 然后选3个模型&#xff0c;如图所示 如果没有填入模型映射的话是没办法 …...

vite搭建vue3项目及相关配置

1.npm create vite 设置你的项目名&#xff0c;选择框架&#xff0c;选择语言 我此处选的为Vue typescripe 2.按照命令去执行 cd vite-vue3-app 进入项目文件&#xff0c;npm install 安装依赖&#xff0c;npm run dev 运行项目 此处由于node、npm版本导致报错问题如图 在…...

web实验(2)

实验1 搭建nginxssl的加密认证web服务器 第一步&#xff1a;准备工作 # 恢复快照 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld [rootserver ~]# systemctl disable firewalld [rootserver ~]# yum install nginx mod_ssl -y [r…...

数字孪生技术如何重塑能源产业?

近年来&#xff0c;全球能源行业正步入一个前所未有的转型期。一方面&#xff0c;“双碳”目标驱动能源结构向低碳化、清洁化发展&#xff1b;另一方面&#xff0c;新能源比例快速上升&#xff0c;给传统电力系统带来巨大的不确定性。与此同时&#xff0c;数字化浪潮也席卷能源…...

你通俗易懂的理解——线程、多线程与线程池

一&#xff1a;异常处理 1.1 异常概述 &#xff08;1&#xff09;场景 &#xff08;2&#xff09;定义 &#xff08;3&#xff09;异常抛出机制 Java把不同的异常用不同的类表示 &#xff08;4&#xff09;如何对待异常 1.2 常见异常类 &#xff08;1&#xff09;Throwable &am…...

spring+tomcat 用户每次发请求,tomcat 站在线程的角度是如何处理用户请求的,spinrg的bean 是共享的吗

对于 springtomcat 用户每次发请求&#xff0c;tomcat 站在线程的角度是如何处理的 比如 bio nio apr 等情况 tomcat 配置文件中 maxThreads 的数量是相对于谁来说的&#xff1f; 以及 spring Controller 中的全局变量:各种bean 对于线程来说是共享的吗&#xff1f; 一、Tomca…...

机器人坐标系标定

机器人坐标系标定 机器人坐标系标定 1. 知识目标 理解机器人坐标系的定义掌握机器人坐标系的分类 2. 技能目标 能够正确标定机器人坐标系 3. 机器人坐标系的作用 代表不同的物体或边界示例&#xff1a; 相对于桌子、弓箭、坯料、其他机器或边界移动 用途&#xff1a; 使用…...

VR光伏车棚虚拟仿真系统:开启绿色能源新视界​

VR 光伏车棚虚拟仿真系统&#xff0c;是一种集成了先进计算机技术与前沿虚拟现实技术的创新工具。它的核心在于&#xff0c;通过数字化手段高度逼真地模拟光伏车棚电站从规划建设到实际运行的全流程情境 &#xff0c;为相关人员提供一个沉浸式、交互式的虚拟操作空间。​ 借助 …...

阿里云服务器 篇十三(加更):Web书签(链接共享和迷你导航):改为使用宿主机DB等优化

文章目录 系列文章搭建 LinkAce将docker-compose配置迁移到项目目录添加脚本只保留最新备份改为使用宿主机DB获取当前LinkAce数据库备份导入LinkAce数据库备份创建数据库账号修改容器内MySQL客户端连接配置:禁用SSL连接修改 Docker 相关配置回滚和彻底清除数据卷改为使用宿主机…...

Typescript学习教程,从入门到精通,TypeScript 包装类与包装对象语法知识点及案例代码(10)

TypeScript 包装类与包装对象语法知识点及案例代码 在 TypeScript 中&#xff0c;包装类&#xff08;Wrapper Classes&#xff09;和包装对象&#xff08;Wrapper Objects&#xff09;是处理基本数据类型&#xff08;如 Boolean、Number、String&#xff09;的重要概念。这些包…...

若依代码生成

1。数据库&#xff0c;自己先创建好表和数据 启动访问页面&#xff0c;导入你的表 圈红的改成自己的业务名 生成后压缩&#xff0c;执行数据库脚本.sql文件 2。前台导入直接复制粘贴src 3。后台导入 复制main文件夹下的两个文件夹到 ruoyi-admin\src\main 如果不能访问在修改…...

Vue3 打印表格、Element Plus 打印、前端打印、表格导出打印、打印插件封装、JavaScript 打印、打印预览

&#x1f680; Vue3 高级表格打印工具封装&#xff08;支持预览、分页、样式美化&#xff09; 关键词&#xff1a;Vue3 打印表格、Element Plus 打印、前端打印、表格导出打印、打印插件封装、JavaScript 打印、打印预览 在企业级应用中&#xff0c;我们经常遇到打印报表、导出…...

实现一个前端动态模块组件(Vite+原生JS)

1. 引言 在前面的文章《使用Vite创建一个动态网页的前端项目》中我们实现了一个动态网页。不过这个动态网页的实用价值并不高&#xff0c;在真正实际的项目中我们希望的是能实现一个动态的模块组件。具体来说&#xff0c;就是有一个页面控件同时在多个页面中使用&#xff0c;那…...

面向对象编程在 JavaScript 中的实践

引言 前端开发正随着应用复杂度增加而向更严谨的架构模式演进。JavaScript 作为一种多范式语言&#xff0c;其面向对象特性为构建可维护、可扩展的大型应用提供了强大基础。 一、JavaScript 中的对象模型演化 对象字面量&#xff1a;最基础的封装 对象字面量是 JavaScript …...

Android 内存溢出(OOM)的 Kotlin 排查与优化指南

内存溢出&#xff08;Out Of Memory, OOM&#xff09;是 Android 开发中常见且棘手的问题&#xff0c;尤其在处理大图、复杂数据或内存泄漏时。本文将通过 Kotlin 代码示例 和工具使用&#xff0c;提供一套比较完整的排查与优化方案。 一、检测工具&#xff1a;定位内存问题根源…...

Docker常用命令介绍

Docker常用命令 1、本地镜像管理 save 命令 将一个或多个 Docker 镜像保存到一个 tar 归档文件中&#xff0c;以便在其他环境中分发或备份。 # 语法&#xff1a;docker save [OPTIONS] IMAGE [IMAGE...]# 保存单个镜像到文件 docker save -o myimage.tar myimage:latest# 保…...

(高级)高级前端开发者指南:框架运用与综合实战

当您已经掌握了HTML5、CSS3和JavaScript的基础知识后&#xff0c;接下来就是学习现代前端框架和性能优化的高级阶段。本文将重点介绍Vue.js/React的组件化开发、状态管理和路由配置&#xff0c;以及前端性能优化的核心技巧。通过丰富的代码示例和详细讲解&#xff0c;帮助您在实…...

边缘计算正在重新定义物联网的未来——你的设备还在“等云“吗?⚡

“数据不动算法动,算法不动代码动”——这句话正在成为物联网时代的新铁律。 当我们谈论物联网设备性能优化时,大多数开发者第一反应还是"上云"。但现实往往残酷:网络延迟让实时控制变成了"实时等待",带宽成本让企业CFO眉头紧锁,数据安全让合规部门夜…...

std::initialzer_list 与花括号{}数据列表

author: hjjdebug date: 2025年 05月 22日 星期四 15:50:23 CST descrip: std::initialzer_list 与花括号{}数据列表 文章目录 1.{数值列表}是什么?1.1 数组初始化 时 &#xff0c; 称为数组初始化列表1.2. 当用于容器时, 称为容器初始化列表1.3. 对于结构体或类&#xff0c;{…...

C++初阶-list的使用2

目录 1.std::list::splice的使用 2.std::list::remove和std::list::remove_if的使用 2.1remove_if函数的简单介绍 基本用法 函数原型 使用函数对象作为谓词 使用普通函数作为谓词 注意事项 复杂对象示例 2.2remove与remove_if的简单使用 3.std::list::unique的使用 …...

从单链表 list 中删除第 i 个元素--Python

从单链表 list 中删除第 i 个元素 一、问题引入二、解题步骤1.思维导图2.解题步骤 三、代码实现四、个人总结 一、问题引入 请编写程序&#xff0c;将 n 个整数顺次插入一个初始为空的单链表的表头。随后对任意给定的位序 i&#xff0c;删除链表中第 i 个结点。注意&#xff1…...

GraphPad Prism工作表的基本操作

《2025新书现货 GraphPad Prism图表可视化与统计数据分析&#xff08;视频教学版&#xff09;雍杨 康巧昆 清华大学出版社教材书籍 9787302686460 GraphPadPrism图表可视化 无规格》【摘要 书评 试读】- 京东图书 GraphPad Prism中包含5种工作表&#xff0c;每种工作表的基本操…...

C++初阶-list的使用1

目录 1.std::list简介 2.成员函数 2.1构造函数的使用 2.2list::operator的使用 3.迭代器 4.容量 4.1list::empty函数的使用 4.2list::size函数的使用 4.3list::max_size函数的使用 5.元素访问 6.修饰符 6.1list::assign函数的使用 6.2push_back和pop_back和push_fr…...

文献解读-病理影像多模态模型预测乳腺癌新辅助化疗的病理完全反应

期刊&#xff1a;Science Advances 影响因子&#xff1a;11.7&#xff0c;中科院1区Top 发表时间&#xff1a;2025年4月30日 概要&#xff1a;首都医科大学宣武医院放射科卢洁教授团队近日&#xff08;2025年5月&#xff09;在中科院1区top期刊《Sci Adv》&#xff08;IF11.7&a…...

Docker-Mysql

查看容器的详细信息 docker inspect mysql-8.4.5 Docker 启动 local-mysql 的完整命令 docker run -d \--name local-mysql \-e MYSQL_ROOT_PASSWORDyour_root_password \-v /AllenDocker/mysql/data:/var/lib/mysql \-p 3306:3306 \--restart unless-stopped \mysql:8.4.5 验…...

鸿蒙进阶——CMakelist、GN语法简介及三方库通用移植指南

文章大纲 引言一、GN常用的内置变量二、GN常用的内置函数三、CMake 重要语法1、生成动态库2、生成静态库3、生成OBJECT 库4、重要的函数和模块4.1、add_definitions4.2、execute_process4.3、add_dependencies4.4、install4.5、FetchContent 四、GN 重要语法1、编译Target2、预…...

场景化应用实战系列六:检索问答系统

目录 景化应用实战系列六&#xff1a;检索问答系统 一、目标设定 二、关键知识点梳理 三、案例讲解与实战操作 1. 数据准备与预处理 2. 倒排表构建 3. 文本相似度计算 4. 检索问答系统实现 5. 系统优化与改进 一、目标设定 构建一个高效的检索问答系统&#xff0c;能…...

3452. 好数字之和

​题目来源&#xff1a; LeetCode题目&#xff1a;3452. 好数字之和 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 按要求判断求和即可。 解题代码&#xff1a; #python3 class Solution:def sumOfGoodNumbers(self, nums: List[int], k: int) -> int:r…...

GEE数据下载问题记录

GEE下载数据时的一些记录 1. GPT说 2. 验证 在未指定投影坐标系的情况下&#xff0c;下载原始数据导出的是MODIS Sinusoidal投影&#xff0c;如果单纯的对波段值进行操作&#xff0c;不会进行投影转换&#xff0c;如果涉及到波段平均&#xff0c;则会转投影到WGS84坐标系。如…...

P1833 樱花

P1833 樱花 - 洛谷 题目背景 《爱与愁的故事第四弹plant》第一章。 题目的描述 爱与愁大神后院里种了n棵樱花树&#xff0c;每棵都有美学值Ci​(0≤Ci​≤200)。爱与愁大神在每天上学前都会来赏花。爱与愁大神可是生物学霸&#xff0c;他懂得如何欣赏樱花&#xff1a;一种樱…...

文件操作和IO-3 文件内容的读写

文件内容的读写——数据流 流是操作系统提供的概念&#xff0c;Java对操作系统的流进行了封装。 数据流就像水流&#xff0c;生生不息&#xff0c;绵延不断。 水流的特点&#xff1a;比如要100mL的水&#xff0c;可以一次接10mL&#xff0c;分10次接完&#xff0c;也可以一次接…...

Day 0015:Metasploit 基础解析

目录 一、理论学习&#xff08;Metasploit 架构与核心组件&#xff09; 一、架构设计&#xff1a;分层与模块化 基础层&#xff08;Ruby 框架&#xff09;&#xff1a; 核心层&#xff08;模块引擎&#xff09;&#xff1a; 接口层&#xff08;交互界面&#xff09;&#…...

相机标定与图像处理涉及的核心坐标系

坐标系相互关系 #mermaid-svg-QxaMjIcgWVap0awV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QxaMjIcgWVap0awV .error-icon{fill:#552222;}#mermaid-svg-QxaMjIcgWVap0awV .error-text{fill:#552222;stroke:#552…...

单例模式的运用

单例模式实现分析 在我们的向量数据库配置类 MilvusVectorDatabaseConfig 中&#xff0c;采用了单例模式的实现方式&#xff0c;这是一种非常经典且实用的设计模式。 饿汉式单例实现 这种实现方式属于饿汉式单例模式&#xff0c;它的优点在于&#xff1a; // 在类加载时就创…...

PageHelper分页原理解析:从源码到MySQL方言实现

一、引言 分页查询是Web开发的必备功能&#xff0c;MyBatis生态中的PageHelper以其简单易用的特性广受欢迎。本文将从源码层面&#xff08;v5.3.2&#xff09;解析PageHelper的分页实现机制&#xff0c;结合MySQL方言展示完整的执行链路。 二、核心实现原理 1. 插件初始化 …...