202520 | 微服务
微服务 VS 单体架构
单体架构(Monolithic Architecture)和微服务架构(Microservices Architecture)是两种主流的软件设计模式,它们在开发、部署、扩展和维护等方面有显著差异。以下是两者的详细对比:
1. 定义与核心思想
-
单体架构
- 定义:整个应用作为一个单一、紧密耦合的代码库运行,所有功能模块(如用户管理、订单处理等)共享同一个进程和数据库。
- 核心思想:集中化开发、测试、部署和扩展。
-
微服务架构
- 定义:应用被拆分为多个小型、独立的服务,每个服务负责特定功能,通过轻量级通信(如HTTP/RPC)交互,可独立开发、部署和扩展。
- 核心思想:解耦、自治、单一职责。
2. 主要对比维度
维度 | 单体架构 | 微服务架构 |
---|---|---|
开发复杂度 | 简单,代码和依赖集中管理。 | 复杂,需处理分布式系统的挑战(如服务发现、容错)。 |
技术栈 | 通常统一(单一语言/框架)。 | 灵活,不同服务可用不同技术栈。 |
部署 | 整体部署,更新需重新发布整个应用。 | 独立部署,单个服务更新不影响其他部分。 |
扩展性 | 垂直扩展(提升单机性能),资源利用率低。 | 水平扩展(按需扩展特定服务),资源利用率高。 |
性能 | 模块间调用高效(进程内通信)。 | 存在网络延迟,需优化通信机制(如gRPC)。 |
数据一致性 | 强一致性(单一数据库事务)。 | 最终一致性(需引入Saga、事件溯源等模式)。 |
容错性 | 单点故障可能导致整个系统崩溃。 | 故障隔离,单个服务失败不影响整体。 |
测试 | 简单,端到端测试容易。 | 复杂,需模拟服务依赖(如Mock测试)。 |
运维成本 | 低,只需管理单一应用和数据库。 | 高,需监控、日志聚合、服务网格等基础设施。 |
适用场景 | 小型应用、快速原型开发、低流量场景。 | 大型复杂系统、高并发、快速迭代需求。 |
3. 优缺点总结
单体架构
- 优点:
- 开发简单,调试和测试直接。
- 部署流程简单(单一包)。
- 适合团队规模小、需求明确的项目。
- 缺点:
- 代码臃肿,维护成本随规模增长。
- 扩展性差,无法针对模块单独优化。
- 技术栈僵化,难以局部创新。
微服务架构
- 优点:
- 模块化强,团队可独立开发不同服务。
- 弹性扩展,适应高并发需求。
- 技术多样性,灵活选择最佳工具。
- 缺点:
- 分布式系统复杂性(如网络延迟、CAP定理)。
- 运维复杂,需CI/CD、容器化(如Kubernetes)支持。
- 调试和监控难度大(需分布式追踪工具)。
4. 演进与折中方案
-
演进路径:
单体 → 模块化单体(如分包分层) → 微服务(按业务拆分)。
注:微服务不是银弹,过度拆分会引入不必要的复杂性。 -
折中方案:
- 宏服务(Macroservices):适度拆分,服务粒度介于单体和微服务之间。
- 无服务器架构(Serverless):进一步解耦,按函数粒度部署。
5. 选择建议
- 选单体:项目初期、团队小、需求稳定、追求快速交付。
- 选微服务:系统复杂、长期迭代、高可用性要求、团队具备DevOps能力。
示例:
- 单体:个人博客、企业内部管理系统。
- 微服务:电商平台(订单、支付、库存分离)、流媒体服务(如Netflix)。
通过对比可见,架构选择需权衡业务需求、团队能力和长期维护成本。没有绝对优劣,只有更适合当前场景的方案。
SpringCloud
Spring Cloud 介绍
Spring Cloud 是一套基于 Spring Boot 的微服务架构开发工具集,用于简化分布式系统的构建、部署和管理。它提供了微服务架构所需的常见组件(如服务发现、配置中心、负载均衡、熔断器等),帮助开发者快速构建高可用、可扩展的云原生应用。
1. Spring Cloud 的核心功能
Spring Cloud 包含多个子项目,每个子项目解决微服务架构中的特定问题:
组件 | 功能 |
---|---|
Spring Cloud Netflix | 集成 Netflix OSS(如 Eureka、Hystrix、Zuul、Ribbon),提供服务发现、熔断、API 网关等功能(部分组件已逐步被替代)。 |
Spring Cloud Gateway | 基于 Reactor 的高性能 API 网关,替代 Zuul,支持动态路由、限流、鉴权等。 |
Spring Cloud Config | 分布式配置中心,支持 Git、数据库等方式管理配置,实现配置的动态刷新。 |
Spring Cloud OpenFeign | 声明式 HTTP 客户端,基于 Ribbon 实现负载均衡,简化服务间调用。 |
Spring Cloud Sleuth + Zipkin | 分布式链路追踪,用于监控微服务调用链。 |
Spring Cloud Stream | 消息驱动微服务,集成 Kafka、RabbitMQ 等消息中间件。 |
Spring Cloud Security | 提供 OAuth2、JWT 等安全认证方案,保护微服务 API。 |
Spring Cloud Alibaba | 集成阿里云生态(如 Nacos、Sentinel、Seata),提供注册中心、流量控制、分布式事务等能力。 |
2. Spring Cloud 的核心架构
典型的 Spring Cloud 微服务架构包含以下核心组件:
-
服务注册与发现(Eureka/Nacos)
- 服务提供者向注册中心注册自己(如
user-service
)。 - 服务消费者从注册中心获取可用服务列表(如
order-service
调用user-service
)。
- 服务提供者向注册中心注册自己(如
-
API 网关(Spring Cloud Gateway/Zuul)
- 统一入口,处理路由、鉴权、限流等。
- 例如:
/api/orders
→ 路由到订单服务。
-
负载均衡(Ribbon/Spring Cloud LoadBalancer)
- 客户端负载均衡,决定调用哪个服务实例(如轮询、随机策略)。
-
熔断与降级(Hystrix/Sentinel)
- 防止服务雪崩,当某个服务失败时快速失败或返回兜底数据。
-
配置中心(Spring Cloud Config/Nacos)
- 集中管理所有微服务的配置,支持动态更新。
-
分布式链路追踪(Sleuth + Zipkin)
- 记录请求在微服务间的流转路径,便于排查性能瓶颈。
3. Spring Cloud 的优势
✅ 标准化微服务开发:提供开箱即用的组件,避免重复造轮子。
✅ 与 Spring Boot 深度集成:简化配置,快速启动项目。
✅ 丰富的生态支持:兼容 Netflix、Alibaba、Kubernetes 等方案。
✅ 云原生友好:支持容器化(Docker/K8s)、Serverless 等部署方式。
4. Spring Cloud 的版本演进
- Spring Cloud Netflix(早期主流,部分组件已进入维护模式)
- Eureka(服务注册)、Hystrix(熔断)、Zuul(网关)等。
- Spring Cloud Gateway(替代 Zuul,性能更高)
- Spring Cloud Alibaba(国内流行,集成 Nacos、Sentinel)
- Spring Cloud 2023.x(最新版本)
- 默认使用 Spring Cloud LoadBalancer 替代 Ribbon。
5. 示例:Spring Cloud 微服务调用流程
- 服务注册
user-service
启动后向 Eureka/Nacos 注册自己的地址(如192.168.1.1:8080
)。
- 服务发现
order-service
通过 Feign 调用user-service
,Ribbon 从注册中心获取可用实例并负载均衡。
- API 网关
- 外部请求通过 Spring Cloud Gateway 路由到对应的微服务。
- 熔断保护
- 如果
user-service
宕机,Hystrix/Sentinel 触发降级逻辑(如返回缓存数据)。
- 如果
6. 学习建议
📌 入门路径:
- 掌握 Spring Boot(基础必备)。
- 学习 Spring Cloud Netflix(如 Eureka + Feign + Hystrix)。
- 过渡到 Spring Cloud Alibaba(Nacos + Sentinel + Seata)。
- 结合 Docker/Kubernetes 部署微服务。
📌 推荐资源:
- 官方文档:spring.io/projects/spring-cloud
- 实战项目:基于 Spring Cloud 的电商系统、权限管理系统。
总结
Spring Cloud 是微服务架构的“瑞士军刀”,通过标准化组件降低分布式系统的开发难度。选择时需根据团队技术栈(如 Netflix 或 Alibaba 生态)和业务需求(如高并发、配置管理)灵活搭配。
微服务拆分
微服务拆分指南(适中详解版)
1. 核心拆分原则
1.1 业务优先
- 按业务能力而非技术分层拆分(如电商拆分为
用户服务
、订单服务
、支付服务
) - 避免出现"用户订单服务"这种混合职责的服务
1.2 单一职责
- 每个服务只解决一个核心问题(如库存服务仅处理库存增减)
- 服务代码量控制在1-2周可完全理解的范围
1.3 数据自治
- 每个服务独占数据库(MySQL/NoSQL)
- 跨服务数据通过API调用获取,禁止直接访问其他服务数据库
2. 常用拆分策略
策略 | 适用场景 | 示例 |
---|---|---|
按功能 | 业务边界清晰 | 拆出独立的购物车服务 |
按数据 | 数据访问模式差异大 | 商品查询服务 vs商品管理服务 |
按变更频率 | 不同模块迭代速度差异大 | 高频的促销服务 与稳定的基础数据服务 |
3. 典型拆分流程
3.1 识别业务边界
- 通过事件风暴找出核心业务域(如电商的订单、支付、物流)
3.2 定义服务契约
// 订单服务调用支付服务的API定义
@PostMapping("/payments")
PaymentResult createPayment(@RequestBody PaymentRequest request);
3.3 渐进式拆分
- 从单体中逐步剥离服务(推荐"绞杀者模式")
- 优先拆分高频变更或性能敏感模块
4. 必须解决的三大难题
4.1 分布式事务
- 方案选择:
- 最终一致:Saga模式
- 强一致:TCC模式
- 折中方案:本地消息表
4.2 服务通信
- 同步调用:Spring Cloud OpenFeign
- 异步消息:Kafka/RocketMQ
- 性能优化:gRPC替代HTTP
4.3 运维监控
- 基础三件套:
- 指标监控:Prometheus + Grafana
- 日志收集:ELK
- 链路追踪:SkyWalking
5. 实用建议
5.1 拆分前
- 先做好模块化单体(package by feature)
- 准备完善的CI/CD和监控体系
5.2 拆分时
- 保持服务接口向后兼容
- 采用防腐层隔离新旧系统
5.3 拆分后
- 每个服务配置独立告警规则
- 定期进行故障演练(如混沌工程)
6. 经典案例参考
关键数字:
- 初期建议服务数量控制在5-8个
- 每个服务响应时间应<300ms
- 服务间调用深度不超过3层
7. 工具推荐
- 开发:Spring Cloud Alibaba(Nacos+Sentinel)
- 部署:Docker + Kubernetes
- 监控:Prometheus + Grafana
提示:先从1-2个服务试点拆分,验证效果后再全面推广。避免陷入"为拆而拆"的陷阱。
相关文章:
202520 | 微服务
微服务 VS 单体架构 单体架构(Monolithic Architecture)和微服务架构(Microservices Architecture)是两种主流的软件设计模式,它们在开发、部署、扩展和维护等方面有显著差异。以下是两者的详细对比: 1. 定…...
32信号和槽_信号和槽存在的意义(2)
① 一个学生,可以选择多门课程来学习 一门课程,也可以被多个同学来选择 ② 张三这个同学,可以选 语文和数学 . 李四这个同学可以选 语文 和 英语 语文这门课程,既可以被张三选择,也可以被李四选择~~ ③ 引入第三张表作为关联表 ④一个信号,可以 connect 到多个槽函数上 一个槽…...
Mac 上使用 mysql -u root -p 命令,出现“zsh: command not found: mysql“?
一、确定 MySQL 安装路径: 如果你是使用 Homebrew 安装的 MySQL,通常安装路径是 /usr/local/mysql/bin 。 如果你是通过官方 DMG 安装包安装的 MySQL,默认安装路径可能是 /usr/local/mysql/bin 。你可以在终端中使用以下命令来查找 MySQL 的…...
Django REST Framework系列教程(9)——过滤与排序
目录 前情回顾 方法一: 重写get_queryset方法 方法二: 使用django-filter 安装django-filter 自定义FilterSet类 方法三: 使用SearchFilter类 自定义SearchFilter类 排序OrderingFilter类 在前面的DRF系列教程中,我们以博客为例介绍了序列化器(Serializer),…...
工业级主题系统程序设计
一、架构优化方案 #mermaid-svg-gB72o6CBc2UMgkrv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gB72o6CBc2UMgkrv .error-icon{fill:#552222;}#mermaid-svg-gB72o6CBc2UMgkrv .error-text{fill:#552222;stroke:#5…...
Java 逐梦力扣之旅_[204. 计数质数]
题目: 204. 计数质数 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例 1: 输入:n 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2: 输入:n 0 输出&…...
[3.3] 阻塞与非阻塞通信 理论+代码
文章目录 1. 阻塞通信的发生和解决2. 点对点通信应用程序案例 - 随机步行(Random Walk) 1. 阻塞通信的发生和解决 MPI的p2p中包括两种模式: a. 阻塞通信(Blocking) MPI_Send 和 MPI_Recv 在返回前,必须满…...
node_modules\deasync: Command failed.
运行:“yarn install” 时报错 PS D:\WebPro\hainan-mini-program> yarn install yarn install v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... warning " > babel-loader8.2.2" has un…...
二十种中药果实识别分类系统,Python/resnet18/pytorch
二十种中药果实识别分类系统,Python/resnet18/pytorch 基于pytorch训练, resnet18网络,可用于训练其他分类问题,也可自己重新训练 20类中药材具体包括:(1) 补骨脂,(2) 草豆蔻,(3) 川楝子,(4) 地肤子&…...
C++·异常
目录 概念 使用 异常的抛出和捕获 栈展开 catch匹配 继承体系例子 异常重新抛出 异常安全问题 例: 异常规范 小知识 概念 异常处理机制允许程序中独⽴开发的部分能够在运⾏时就出现的问题进⾏通信并做出相应的处理, 异常使得我们能够将问题的…...
C 语言高级编程指南:回调函数与设计模式
C 语言高级编程指南:回调函数与设计模式 目录 回调函数详解C语言中的设计模式高级回调函数应用内存管理与安全多线程环境下的设计模式 回调函数详解 1. 什么是回调函数? 回调函数(Callback Function)是一个通过函数指针调用的…...
SeaTunnel系列之:Apache SeaTunnel编译和安装
Apache SeaTunnel编译 Prepare编译克隆源代码本地安装子项目从源代码构建 SeaTunnel构建子模块安装 JetBrains IDEA Scala 插件安装 JetBrains IDEA Lombok 插件代码风格运行简单示例不仅如此 安装下载 SeaTunnel 发布包下载连接器插件从源代码构建 SeaTunnel 运行 SeaTunnel 在…...
zk基础—5.Curator的使用与剖析二
大纲 1.基于Curator进行基本的zk数据操作 2.基于Curator实现集群元数据管理 3.基于Curator实现HA主备自动切换 4.基于Curator实现Leader选举 5.基于Curator实现分布式Barrier 6.基于Curator实现分布式计数器 7.基于Curator实现zk的节点和子节点监听机制 8.基于Curator创…...
bge-m3+deepseek-v2-16b+离线语音能力实现离线文档向量化问答语音版
ollama run deepseek-v2:16b ollama pull bge-m3 1、离线听写效果的大幅度提升。50M 1.3G(每次初始化都会很慢)---优化到首次初始化使用0延迟响应。 2、文档问答历史问题处理与优化,文档问答离线策略讨论与参数暴露。 3、离线大模型答复中断…...
[leetcode]3123. 最短路径中的边(Dijkstra+反向搜索找边)
题目链接 题意 给定n个点的无向图 给定一个edges{u,v,w}数组 表示u到v有一条边权为w的无向边 返回一个bool数组ans,ans[i]1表示edges[i]在任意一条0到n-1的最短路中 思路 先Dijkstra找出最短路再从n-1出发 反向搜索 当前点i,邻接点j,边权…...
构建macOS命令速查手册:基于Flask的轻量级Web应用实践
构建macOS命令速查手册:基于Flask的轻量级Web应用实践 一、项目概述 本文介绍一个基于Flask框架开发的macOS命令速查Web应用。该应用通过结构化的命令数据存储和响应式前端设计,为用户提供便捷的命令查询体验,具备以下特点: 六…...
中国移动启动数字乡村“五新升级”:年底前,行政村5G覆盖达95%
大湾区经济网品牌观察报道,近日,在国家全面推进乡村振兴的战略背景下,中国移动近日发布数字乡村升级行动计划,以“AI大模型数智化平台”为核心引擎,围绕“五新升级”构建“两个新型”信息服务体系。 一、数字基建筑基&…...
借助mcpo在open-webui中使用mcp
open-webui前几天发布了0.6版本,我立即进行了升级。新版本中一个重要功能是通过mcpo方式支持了mcp server。本文将介绍mcpo是什么,以及如何在open-webui中使用它。同时,我也会分享几个在接入过程中遇到的问题及解决方案。 首先来介绍mcpo&…...
Mysql的备份还原
MySQL日志 日志类型 MySQL有几个不同的日志文件,可以帮助你找出mysqld内部发生的事情: 日志文件记入文件中的信息类型错误日志记录启动、运行或停止时出现的问题。查询日志记录建立的客户端连接和执行的语句。二进制日志记录所有更改数据的语句。主要用…...
测试:正交法设计测试用例
目录 一、什么是正交法 二、利用正交表设计测试用例 正交法设计测试用例的步骤 一、什么是正交法 正交法的目的是为了减少测试用例的数量,让尽可能少的用例覆盖两两组合。认识正交表。 最简单的正交表是L4(2^3),含意如下: “L”代表正…...
zk基础—5.Curator的使用与剖析一
大纲 1.基于Curator进行基本的zk数据操作 2.基于Curator实现集群元数据管理 3.基于Curator实现HA主备自动切换 4.基于Curator实现Leader选举 5.基于Curator实现分布式Barrier 6.基于Curator实现分布式计数器 7.基于Curator实现zk的节点和子节点监听机制 8.基于Curator创…...
VSCode中结合DeepSeek使用Cline插件的感受
前言 听网上有传言说AI智能插件Cline非常的好用,而且相对Cursor而言还是免费的,捆绑的大模型选择也比较的广泛。所以,特意安装试用了一下。 我的采用IDE是VSCode,捆绑的大模型是最近比较火的DeepSeek。总体使用下来感觉非常的棒。…...
安卓开发工程师-Java 常用数据结构
1. Java 中的数组和集合有什么区别? 数组: 长度固定:一旦声明,长度不能改变。类型单一:只能存储相同类型的元素。存储效率高:底层是连续的内存空间,访问速度快。示例代码: int[] …...
thinkphp8.0上传图片到阿里云对象存储(oss)
1、开通oss,并获取accessKeyId、accessKeySecret <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><tit…...
Angular 2 模板语法详解
Angular 2 模板语法详解 引言 Angular 2 作为一款强大的前端框架,以其组件化的开发模式和高效的性能被众多开发者所青睐。模板语法是Angular 2中用于定义组件UI的关键部分。本文将详细介绍Angular 2的模板语法,帮助开发者更好地理解和运用这一功能。 模板语法概述 Angula…...
进行性核上性麻痹护理攻略:多维度守护健康
日常起居护理 保证患者居住环境安全,清除地面障碍物,避免患者跌倒。家具摆放固定且合理,方便患者活动。为患者准备宽松、舒适、易于穿脱的衣物,减轻穿衣时的困难。在饮食上,提供富含营养、易于吞咽的食物,…...
MessageQueue --- RabbitMQ WorkQueue
MessageQueue --- RabbitMQ WorkQueue 什么是WorkQueue如何分发RoundRobinFair dispatch (Prefetch) --- 能者多劳 什么是WorkQueue Work queues,任务模型。简单来说就是让多个消费者绑定到一个队列,共同消费队列中的消息。当消息处理比较耗时的时候&…...
Redis内存碎片详解!
目录 一、 什么是内存碎片?🤔二、 为什么 Redis 会有内存碎片呢?🤷♀️三、 如何查看 Redis 内存碎片的信息?🔍四、 如何清理 Redis 内存碎片?🧹五、总结📝 dz…...
如何使用 Nginx 代理 Easysearch 服务
Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,广泛用于负载均衡、缓存、SSL 终端和服务代理等场景。本篇将尝试使用 Nginx 代理 Easysearch 服务,方法同样适用于 Elasticsearch 和 Opensearch。 测试环境 Easysearch 集群版本为 1.10.0ÿ…...
用python输出OLED字模库的符号
提示:博主是小白,如有不足,望海涵和指出 在单片机上练习使用OLED显示屏时,可以看到有个OLED字模库 本文用python将这些字符打印出来,代码如下(本文只适用与128*64的OLED,如果是其它OLED…...
【java】Class.newInstance()
在 Java 中,Class.newInstance()是一个用于创建类的新实例的方法。它调用类的无参构造函数来创建对象。然而,从 Java 9 开始,Class.newInstance()方法已经被标记为废弃,推荐使用其他替代方法。 Class.newInstance()的使用 Class.…...
Apache Arrow 使用
下述操作参考 Building Arrow C — Apache Arrow v20.0.0.dev267 安装依赖组件 sudo apt-get install \build-essential \ninja-build \cmake 下载源码 git clone --recursive --shallow-submodules gitgithub.com:apache/arrow.git 配置 创建build目录并且进入 mkdir a…...
第二届图像处理与人工智能国际学术会议(ICIPAI2025)
重要信息 时间:2025年4月18日-20日 地点:吉林-长春(线上线下结合) 官网:www.icipai.org 简介(部分) 主题 其他 图像处理与人工智能(Image Processing & Artificial Intell…...
Kafka 消息堆积的原因有哪些?
Kafka 产生消息堆积的本质原因是: ⚠️ “消费速度 < 生产速度”,也就是:写入太快,处理太慢。 下面我从实际场景出发,帮你梳理出常见的几种堆积情况,结合原因和例子,便于你对号入座排查问题 …...
解决cline等免费使用deepseek模型的问题
OpenAI、OpenRouter、Claude等都无法在国内免费正常使用,cline作为在vscode中应对cursor比较好的替代方案,怎么使用免费Deepseek,最核心的是在点击模型名称打开配置以下几项: 1、打开VSCode左侧的Cline\Roo Cline插件面板 2、点…...
ROS多设备交互
ROS多设备连接同一个Master:ROS Master多设备连接-CSDN博客 在多个PC端连接同一个ROS Master后,接下来就可以实现不同设备之间的话题交流,Master主机端启动不同PC端的功能包等功能了 尽管多个PC端拥有不同的ROS工作空间,但是只要…...
浅谈 MVVM 模式
MVVM(Model-View-ViewModel) 是一种软件架构设计模式,旨在将用户界面(UI)与业务逻辑分离,从而提高代码的可维护性和可测试性。它在现代前端开发和桌面应用开发中得到了广泛应用,尤其是在构建复杂…...
flutter点击事件教程
在 Flutter 中,处理点击事件是非常常见的操作。Flutter 提供了多种方式来实现用户交互,比如按钮点击、手势检测等。下面是一个详细的教程,帮助你理解如何在 Flutter 中实现点击事件。 一、使用 onPressed 实现按钮点击事件 Flutter 提供了 E…...
[SAP SD] 常用事务码
在SAP系统中,事务码(Transaction Code)是一个具有特定功能的代码标识符,用于快速调用和执行SAP系统内的各种业务模块的功能 /NT-code: 关闭当前业务窗口,退回到SAP初始界面,进入对应的T-Code窗口 /OT-code: 新建SAP GUI窗口&…...
【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 的未来:从微服务到云原生的演进
<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、引子&…...
保留格式地一键翻译英文ppt
我手头上有一个贝叶斯推断的英文ppt,假如我想翻译成中文,整合起来进行pre,你会怎么做? 1,复制粘贴型: 在翻译软件与源文件ppt之间不断流转,效率太低 2,office ppt自带翻译插入整合…...
晶晨S905L3S/S905L3SB_安卓9.0_10秒开机_通刷-线刷固件包
晶晨S905L3S/S905L3SB_安卓9.0_10秒开机_通刷-线刷固件包 线刷方法:(新手参考借鉴一下) 使用晶晨刷机工具USB_Burning_Tool进行刷机;请使用Amlogic USB Burning Tool v2.2.5或v2.2.7(晶晨线刷烧录工具v2.2…...
Android Transition转场动效使用全解析
Transition的使用和原理 项目效果 1. 简述 Android 4.4.2 中引入了 Transition 过渡动画,不过功能比较简单。在 Android 5.0 的 Material Design 中引入更完整和强大的 Transition 框架。通过Transition可以实现: 同一个页面中的场景过渡动画Activit…...
第九章Python语言高阶加强-面向对象篇
目录 一.初始对象 二.成员方法 1.成员变量和成员方法 三.类和对象 四.构造方法 五.其他内置方法(魔术方法) 1.__str__字符串方法 2.__lt__小于符号比较方法 3.__le__小于等于比较符号方法 4.__eq__比较运算符实现方法 六.封装 七.继承 1.继承…...
AI重构SEO关键词智能布局
内容概要 随着人工智能技术在搜索引擎优化领域的深入发展,AI驱动的关键词智能布局正在重塑传统SEO策略的核心逻辑。通过整合自然语言处理、深度学习与语义分析技术,现代SEO系统已形成包含智能分词、意图解码、动态优化的三维技术框架,使关键…...
言同数字:法新社AFP海外新闻媒体发稿成功案例——出海品牌背书必备
作者:言同数字全球传播团队 一、品牌困境:当中国技术遇上海外认知壁垒 案例背景: 某中国光伏储能企业(应保密要求匿名,代号"GreenTech"),其家用储能系统在欧洲市场遭遇࿱…...
第三章 react redux的学习之redux和react-redux,@reduxjs/toolkit依赖结合使用
redux系列文章目录 第一章 简单学习redux,单个reducer 第二章 简单学习redux,多个reducer 第四章 react-redux,reduxjs/toolkit依赖,学习 第五章 两张图告诉你redux常使用的api有哪些 前言 前面两章,我们是只使用的redux的依赖。 本章…...
【HTML】纯前端网页小游戏-戳破彩泡
分享一个简单有趣的网页小游戏 - 彩色泡泡爆破。玩家需要点击屏幕上随机出现的彩色泡泡来得分。 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…...
【Python使用】嘿马云课堂web完整实战项目第3篇:增加数据,修改数据【附代码文档】
教程总体简介:项目概述 项目背景 项目的功能构架 项目的技术架构 CMS 什么是CMS CMS需求分析与工程搭建 静态门户工程搭建 SSI服务端包含技术 页面预览开发 4 添加“页面预览”链接 页面发布 需求分析 技术方案 测试 环境搭建 数据字典 服务端 前端 数据模型 页面原…...
数据结构【栈和队列附顺序表应用算法】
栈和队列和顺序表应用算法练习 1.栈1.1概念与结构1.2栈的实现 2.队列2.1概念与结构2.2队列的实现 3.附(顺序表应用算法)3.1移除元素3.2删除有序数组中的重复项3.3合并两个有序数组 1.栈 1.1概念与结构 栈:⼀种特殊的线性表,其只…...