Java中的分布式(概念说明)
1. 分布式的基本概念
1.1 什么是分布式系统?
- 分布式系统(Distributed System):由多台服务器(或节点)协同工作,对外提供一个整体服务。
- 不同节点之间通过网络通信来协同处理请求或共享数据,相对于「单体应用」而言,可以带来更高的吞吐量、可用性和灵活扩展能力。
1.2 分布式 vs. 单体架构
-
单体架构
- 所有业务模块部署在同一应用实例中,垂直扩容(升级服务器硬件)成为主要的扩展方式。
- 优点:开发调试较简单,部署方便。
- 缺点:当应用规模过大时,任何一个模块出现故障或性能瓶颈,都会影响整个系统,并且无法灵活扩容单个模块。
-
分布式架构
- 将系统拆分成若干服务或节点,每个节点可以独立运行、独立扩容、独立维护。
- 优点:更好的可扩展性、可靠性,能处理更高并发和数据量。
- 缺点:系统变得复杂,需要处理 网络通信、数据一致性、运维管理 等问题。
1.3 分布式系统的核心挑战
- 数据一致性:多节点同时修改同一数据,如何保证最终数据正确?
- 可用性:某个节点失败不会影响整体服务。
- 可扩展性:需要随业务增长快速增加节点处理能力。
- 网络延迟与可靠性:网络抖动、分区故障等异常场景必须做好应对策略(如重试、降级)。
- 系统复杂度:日志监控、调试、部署都更加繁琐。
2. 分布式架构的主要组成部分
Spring Boot 下的分布式架构通常包含以下几个关键部分:
组件 | 作用 |
---|---|
分布式服务(微服务) | 业务拆分,避免单体架构的复杂性 |
分布式缓存(Redis) | 提高查询性能,减少数据库压力 |
分布式锁(Redis/Zookeeper) | 解决多个节点同时修改数据的一致性问题 |
分布式事务(Seata) | 保障数据一致性,避免并发冲突 |
分布式消息队列(RabbitMQ/Kafka) | 异步处理任务,提升系统吞吐量 |
服务注册与发现(Nacos/Eureka) | 让服务可以自动发现彼此,不需要手动配置 |
分布式配置中心(Nacos/Spring Cloud Config) | 统一管理配置,提高可维护性 |
负载均衡(Nginx/Spring Cloud Gateway) | 把请求合理分配到多个服务实例 |
分布式任务调度(ElasticJob/Xxl-Job) | 让多个服务器协同执行定时任务 |
3. Spring Boot 分布式架构的实现方式
- Redis 提供缓存和分布式锁,提升性能
- Nacos/Eureka 让微服务可以互相发现
- MQ 让服务之间异步通信,减少耦合
- Seata 保证分布式事务一致性
- 负载均衡 + API 网关 让服务更高效
3.1 分布式服务(微服务)
- 含义:把一个庞大的单体应用拆分成若干个服务,每个服务只负责一个“相对独立的业务领域或功能”,称之为“微服务”。
- 示例:
UserService
:专注处理用户登录、注册、用户信息管理OrderService
:负责订单的创建、查询、支付信息对接ProductService
:管理产品、库存、定价等PaymentService
:处理支付渠道、账务、对账逻辑
- 示例:
- 好处:
- 解耦:每个服务都可独立部署、升级,互不影响。
- 独立扩展:哪块业务压力大就扩容对应服务的节点,而不是整合到一起。
- 技术栈灵活:不同服务甚至可以用不同的语言或框架。
在 Spring Boot 中如何实现微服务?
-
Spring Boot + Spring Cloud
- Spring Cloud 提供了微服务生态,包括:
- 服务注册与发现(Eureka, Nacos, Consul),让各微服务在一个注册中心上登记并获取彼此的地址
- 负载均衡(Ribbon 或 Spring Cloud LoadBalancer),在调用某个微服务时自动从多个实例中选一台
- 服务调用(Feign),通过 HTTP/REST 的方式去请求其他微服务
- 熔断、限流(Hystrix, Sentinel),在调用失效时防止雪崩
- 网关(Spring Cloud Gateway),统一处理路由、鉴权、流量控制
- Spring Cloud 提供了微服务生态,包括:
-
服务间通信方式
- HTTP/REST:最常见的形式,每个微服务暴露 RESTful API,其他微服务通过 HTTP 调用。
- RPC:部分场景需要高性能的调用,可以使用 RPC(例如 Dubbo、gRPC),减少网络开销,提升效率。
- 消息队列:如果是异步调用场景,还会结合 MQ 来实现解耦与异步化。
3.2 服务注册与发现(Service Discovery)
当我们有了多个微服务之后,问题来了:如何让它们相互找到对方?
- 传统做法:在配置文件里写死每个服务的地址。但一旦服务集群扩容或 IP 地址变动,就要重新修改配置,非常麻烦。
- 分布式做法:服务注册与发现。各个微服务在启动时,自动向“注册中心”报到,注册中心会保存当前可用的服务实例列表。其他服务要调用它时,只需要从注册中心查到目标服务的地址就行。
常见的注册中心:
- Eureka(Netflix OSS)
- Nacos(阿里巴巴开源,功能更强大,也能做配置中心)
- Zookeeper(Apache 基金会项目,也能做服务注册,但更多用于分布式协调)
在 Spring Boot + Spring Cloud 中配置服务注册发现,大致流程:
- 在
pom.xml
中引入对应的依赖(例如spring-cloud-starter-alibaba-nacos-discovery
)。 - 在
application.yml
中配置好注册中心地址server-addr: localhost:8848
等。 - 启动时,服务会自动注册到 Nacos(或其他注册中心)。
3.3 分布式配置中心
配置中心 主要解决的是“在分布式环境中,如何统一管理各个微服务的配置”,避免每个服务都各自持有不同的配置文件,难以维护。
- Spring Cloud Config:早期常用的配置中心,基于 Git 存储配置
- Nacos Config:Nacos 同时提供注册发现和配置管理
- Apollo(携程开源)或 Disconf 等也可以
好处:
- 统一管理:所有配置信息都在一个地方(配置中心),修改后可实时生效。
- 动态更新:微服务在运行时能监控到配置变动,自动刷新,无需重启。
- 区分环境:如 DEV, TEST, PROD 环境对应不同配置。
3.4 分布式缓存(Redis 等)
在分布式环境下,数据库通常成为性能瓶颈。为减少对数据库的直接访问和压力,需要一个 高性能的分布式缓存。Redis 是最常用的选择,它具有以下优势:
- 内存存储,读写速度快。
- 丰富的数据结构(字符串、哈希、列表、集合、有序集合等)。
- 支持 主从复制、Cluster 集群,适合分布式部署。
- 常用于 缓存热点数据、分布式 Session、分布式锁 等场景。
使用 Redis 的关键点:
- 设计 合理的缓存键(key),比如
product:detail:{productId}
。 - 设置 过期时间,避免缓存数据与数据库数据长期不一致。
- 考虑 缓存穿透、缓存雪崩、缓存击穿 等问题,并进行对应的防护(如 Bloom Filter, 加互斥锁, 合理限流等)。
3.5 分布式锁
在分布式环境中,如果多个节点同时对同一个资源进行写操作,就容易出现数据不一致或并发冲突。因此,需要一种分布式锁来保证 在同一时间,只有一个节点可以获取锁,进行资源操作。
常见方案:
- Redis 分布式锁
- 使用
SETNX
(set if not exist) +EXPIRE
或SET key value NX PX time
命令实现。 - 注意要设置超时时间,避免锁无法释放导致死锁。
- 也要考虑锁的续约和解锁时的原子性操作(Lua 脚本),以避免误删他人的锁。
- 使用
- Zookeeper 分布式锁
- 利用 ZK 的临时顺序节点来竞争锁,监听事件,一旦获取锁的节点断开连接,就自动删除节点,其他节点立即感知到并可重新竞争。
示例:基于 Redis 的简易分布式锁代码(示例性,不是完整生产级)
String lockKey = "lock:order";
String lockVal = UUID.randomUUID().toString();// 尝试加锁
Boolean success = redisTemplate.opsForValue().setIfAbsent(lockKey, lockVal, 10, TimeUnit.SECONDS);
if (Boolean.TRUE.equals(success)) {try {// 执行业务逻辑} finally {// 解锁时,先判断锁是否是自己加的String val = redisTemplate.opsForValue().get(lockKey);if (lockVal.equals(val)) {redisTemplate.delete(lockKey);}}
}
3.6 分布式事务
在单体应用中,事务只需要依赖数据库的本地事务(ACID)即可。但在分布式系统中,可能一个操作需要 跨多个微服务、跨多个数据库,这时就出现了 分布式事务 问题:
- 例如,在电商场景下,创建订单 时,要同时扣减库存、生成支付记录等,这些操作都在不同微服务里完成;如果其中某一步出错,就需要回滚之前的操作。
常见分布式事务方案:
- 2PC(两阶段提交):协调者告诉所有参与者先预提交,然后再统一提交或回滚。实现复杂,性能损耗大,适合对一致性要求极高的场景。
- TCC(Try-Confirm-Cancel):业务系统自己实现各个操作的 “Try, Confirm, Cancel”,实现灵活,但开发成本高。
- Seata:阿里开源的分布式事务框架,提供 AT 模式(对 JDBC 层做代理),也提供 TCC 等模式。
Seata 示例
@GlobalTransactional
public void placeOrder(Order order) {// 跨服务调用inventoryService.decreaseStock(order.getProductId(), order.getQuantity());paymentService.processPayment(order);orderMapper.insert(order);// Seata 会在这里把整个调用过程进行管理,可做到成功或回滚
}
在执行过程中,如果其中一个调用报错,Seata 就会通知其他服务进行回滚。
3.7 分布式消息队列
消息队列 (Message Queue) 用于解耦系统、异步处理和削峰填谷。常见的 MQ 方案有:
- RabbitMQ:轻量级,支持事务与确认机制,适合传统企业应用以及对消息可靠性要求高的场景。
- Apache Kafka:高吞吐,大规模数据流处理的“事实标准”,更多用于大数据、日志收集、流式处理等场景。
- RocketMQ:阿里开源的分布式消息中间件,和 Kafka 类似,也有较高的吞吐。
MQ 的作用:
- 解耦:比如,用户下单后,需要发送优惠券、通知物流、通知商家等,而如果所有这些操作都放在下单接口里,会导致耦合过高;使用 MQ,每个消费者服务负责监听消息并执行相应的业务逻辑。
- 削峰填谷:在高峰时段,订单系统可以快速写入消息队列,后台处理系统再慢慢消费,避免直接压垮数据库或其他服务。
- 异步:不需要同步等待消息处理完成,加快用户请求的响应速度。
3.8 API 网关与负载均衡
当服务拆分越来越多,我们往往需要一个统一的 网关 来管理请求:
- 服务网关(如 Spring Cloud Gateway、Nginx、Kong):
- 统一对外提供访问入口
- 进行路由分发,鉴权,限流,监控等
- 在微服务复杂时,可以屏蔽内部服务接口的变化,对外提供稳定的 API。
- 负载均衡:
- 当某个微服务有多个实例时,网关或负载均衡器需要把请求分散到各个实例上,避免其中一个实例被打满。
- 常见方式:Nginx 反向代理 或 Spring Cloud Ribbon (新版 Spring Cloud LoadBalancer)都可实现负载均衡。
四、整体流程与示例
4.1 典型电商微服务调用链
以 电商订单 流程为例,来看看分布式系统下的一般调用。
- 用户 访问 API 网关(或 Nginx),请求
/api/order/create
接口。 - 网关解析路由规则,将请求转发给 OrderService。
- OrderService 调用 UserService 检查用户信息(比如积分、等级等)。
- OrderService 调用 ProductService 检查库存、扣减库存;同时查询商品价格。
- OrderService 写入订单数据库,本地事务或分布式事务处理。
- OrderService 向 MQ 发送消息,用于通知其他服务(如物流、积分系统等)。
- MQ 的消费者(如 LogisticsService)消费消息并执行下一步操作。
在这个过程中,会用到:
- 服务注册中心(保证 OrderService 能动态发现 ProductService 的地址)
- 分布式缓存(可能在 OrderService、ProductService 的查询环节做缓存)
- 分布式锁(避免多次重复扣减库存)
- 分布式事务(如要保证扣库存与下单一致)
- 消息队列(通知其他异步任务)
4.2 部署模式
- 开发/测试环境:一般都是在本地 Docker 或者虚拟机里把注册中心、MQ、Redis、数据库等组件跑起来即可。
- 生产环境:会把各个服务独立部署在多台服务器(或容器云)上:
- 注册中心、配置中心(Nacos/Consul/Eureka)集群
- Redis 高可用集群(主从+哨兵模式或 Redis Cluster)
- MQ 集群(RabbitMQ 集群或 Kafka 集群)
- 分布式文件系统(如 MinIO, FastDFS, OSS 等)
- 后端数据存储(MySQL 或者多分片数据库),需要做读写分离或分库分表
- 若干微服务集群(UserService、OrderService...),通过容器编排(Kubernetes 或 Docker Swarm)进行管理
相关文章:
Java中的分布式(概念说明)
1. 分布式的基本概念 1.1 什么是分布式系统? 分布式系统(Distributed System):由多台服务器(或节点)协同工作,对外提供一个整体服务。不同节点之间通过网络通信来协同处理请求或共享数据&…...
国产编辑器EverEdit - 上下翻滚不迷路(历史编辑位置、历史光标位置回溯功能)
1 光标位置跳转 1.1 应用场景 某些场景下,用户从当前编辑位置跳转到别的位置查阅信息,如果要快速跳转回之前编辑位置,则可以使用光标跳转相关功能。 1.2 使用方法 1.2.1 上一个编辑位置 跳转到上一个编辑位置,即文本修改过的位…...
css简介
一.css-网页的美容师 css也是一种标记语言,主要用于设置HTML页面中的文本内容(字体大小对齐方式),图片外形(宽高 边框样式 边距等)以及版面的布局和外观显示样式。 二.css语法规范 css规则由两个主要的部分构成:选择器以及一条…...
GoC题解(21) 725.画迷宫(下册第4课)
题目描述 真观察下面迷宫图。发现它是一个边长逐渐变长的15边回旋图,边长依次为10、20、30....。 参考答案 int main(){int len0;for(int i1;i<15;i){ len10;pen.fd(len).rt(90); }return 0; } 解题思路 使用一个变量来记录每次循环时应该画多长的边&#…...
DDD该怎么去落地实现(3)通用的仓库和工厂
通用的仓库和工厂 我有一个梦,就是希望DDD能够成为今后软件研发的主流,越来越多研发团队都转型DDD,采用DDD的设计思想和方法,设计开发软件系统。这个梦想在不久的将来是有可能达成的,因为DDD是软件复杂性的解决之道&a…...
sql sqlserver的特殊函数COALESCE和PIVOT的用法分析
一、COALESCE是一个返回参数中第一个非NULL值的函数, 列如:COALESCE(a,b,c,d,e);可以按照顺序取abcde,中的第一个非空数据,abcde可以是表达式 用case when 加ISNULL也可以实现,但是写法复杂了…...
FPGA简介|结构、组成和应用
Field Programmable Gate Arrays(FPGA,现场可编程逻辑门阵列),是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物, 是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,…...
Vue2/Vue3生命周期对比
Vue2的生命周期钩子 beforeCreate 在实例初始化之后,数据观测(data)和事件配置之前调用。此时无法访问 data、methods 等。 created 在实例创建完成后调用。此时可以访问 data、methods,但 DOM 还未生成。 beforeMount 在挂载…...
Spring Boot 携手 DeepSeek:开启智能交互新时代
前言 在当今数字化浪潮汹涌澎湃的时代,人工智能技术正以前所未有的速度改变着我们的生活和工作方式。大语言模型作为人工智能领域的一颗璀璨明星,凭借其强大的自然语言处理能力,为各个行业带来了新的发展机遇。DeepSeek 作为一款性能卓越的大语言模型,以其高效、准确的文本…...
【Elasticsearch】Mapping概述
以下是Elasticsearch中提到的关于Mapping的各模块概述: --- 1.Dynamic mapping(动态映射) 动态映射是指Elasticsearch在索引文档时,自动检测字段类型并创建字段映射的过程。当你首次索引一个文档时,Elasticsearch会根…...
国内Ubuntu离线安装和配置Ollama服务
以下是在 Ubuntu 22.04 系统上,安装Ollama 的完整安装和配置步骤: 1. 准备工作 确保你具备 root 权限,并安装了必要的工具,如 tar、systemctl 等。 2. 创建 Ollama 用户和组 创建一个专门的 ollama 用户和组来运行 Ollama 服务…...
极狐GitLab 17.8 正式发布,多项 DevOps 重点功能解读【二】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
【开源免费】基于Vue和SpringBoot的旅游管理系统(附论文)
本文项目编号 T 229 ,文末自助获取源码 \color{red}{T229,文末自助获取源码} T229,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
Communications link failure异常分析解决
Communications link failure异常分析解决 异常日志分析与解决常见原因解决方法 异常日志 2025-02-05 14:26:58.750 ERROR [aaeae2435a2749ac0c4af65b6e4db68c] [http-nio-9528-exec-6] o.s.t.i.TransactionAspectSupport.completeTransactionAfterThrowing:680 - Application…...
建造者模式构建对象
目录 一、创建类 二、用法 三、完整代码 一、创建类 Builder public class User {private final String name;private final int age;Builder.Default private String address "Unknown";Builder.Default private String email "N/A"; }二、用法 (1…...
2025 (ISC)²CCSP 回忆录
2025.1.20 广州,周一,我一次性通过了CCSP的考试。 为什么要考证? 个人成长所需 职业热情:做一行爱一行,既然我投入了美好的青春年华到网络安全行业当中,那么对于这个行业最有权威的认证,是肯定…...
代码随想录算法训练营第三十九天| 动态规划03
01 背包问题 二维 代码随想录 视频讲解:带你学透0-1背包问题!| 关于背包问题,你不清楚的地方,这里都讲了!| 动态规划经典问题 | 数据结构与算法_哔哩哔哩_bilibili 注意点: 1. dp[i][j] 表示从下标为[0-i]…...
对正则表达式说不!!!
可能大家都会和我一样,时常会遇到正则表达式,有时候会忘记某些字符而苦恼。今天就帮助大家克服它,虽然不多,但我认为掌握这些足够了,万变不离其宗,以不变应万变。 一、正则表达式内容分类 1. 字符类 [abc…...
制作Ubuntu根文件
系列文章目录 Linux内核学习 Linux 知识(1) Linux 知识(2) WSL Ubuntu QEMU 虚拟机 Linux 调试视频 PCIe 与 USB 的补充知识 vscode 使用说明 树莓派 4B 指南 设备驱动畅想 Linux内核子系统 Linux 文件系统挂载 QEMU 通过网络实现…...
工作一个月的经历和总结
目录 背景: 过程: 初来乍到: 小试牛刀: 终结篇: 总结: 背景: 通过朋友介绍,来到秦皇岛戴卡兴龙轮毂有限公司,我的朋友在这已经干了将近2年了,说这里比…...
Linux 更改 SSH 默认端口以提升服务器安全
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …...
C#中反射的原理介绍及常见的应用场景介绍
反射(Reflection)是C#中的一种机制,允许程序在运行时获取类型信息并动态调用其成员。通过反射,程序可以访问程序集、模块、类型及其成员(如方法、属性、字段等),并能在运行时创建对象、调用方法…...
Linux内核中IPoIB驱动的初始化机制深度解析
IP over InfiniBand(IPoIB)是Linux内核中重要的网络协议,允许在InfiniBand(IB)网络上传输IP数据包,广泛应用于高性能计算和存储场景。本文深入分析IPoIB驱动初始化流程,探讨其核心设计及关键技术实现。 一、初始化流程概览 IPoIB驱动的初始化通过ipoib_ndo_init函数入口…...
深度学习框架PyTorch
第一章:机器学习基本概念(附代码) 第二章:KNN算法:从思想到实现(附代码) 第三章:决策树算法:从思想到实现(附代码) 第四章:机器学习简…...
TCP可靠传输的ARQ协议
基本知识 ARQ(Automatic Repeat-reQuest)协议主要包含:停等ARQ协议、连续ARQ协议,其中连续ARQ协议是为了解决停等ARQ协议信道利用率低的问题,目前传统的连续ARQ协议有回退N帧ARQ协议、选择性重传ARQ协议。 注意&#…...
Windows环境安装Kafka(集群版)
大家好,最近在准备Java面试,复习到Kafka的相关知识,一时兴起,就想在自己的Windows笔记本上安装一个Kafka集群。下面就记录一下安装步骤。 工具分享 Offset Explorer:Kafka可视化工具 下载地址:https://ww…...
服务器虚拟化(详解)
服务器虚拟化是一种技术,通过将物理服务器的硬件资源(如CPU、内存、存储、网络等)抽象化并分割成多个虚拟机(VM),每个虚拟机可以独立运行不同的操作系统和应用程序。虚拟化使得资源使用更加高效,…...
今日写题work05
题目:用队列实现栈 思路 队列的特点是先进先出,而栈的特点是后进先出。所以想要用队列实现模拟栈,我们可以使用两个队列,一个队列负责压栈,一个队列负责出栈。压栈很简单就是检空再调用队列的push就好,那出…...
DeepSeek模型架构及优化内容
DeepSeek v1版本 模型结构 DeepSeek LLM基本上遵循LLaMA的设计: 采⽤Pre-Norm结构,并使⽤RMSNorm函数. 利⽤SwiGLU作为Feed-Forward Network(FFN)的激活函数,中间层维度为8/3. 去除绝对位置编码,采⽤了…...
145,【5】 buuctf web [GWCTF 2019]mypassword
进入靶场 修改了url后才到了注册页面 注测后再登录 查看源码 都点进去看看 有个反馈页面 再查看源码 又有收获 // 检查$feedback是否为数组 if (is_array($feedback)) {// 如果是数组,弹出提示框提示反馈不合法echo "<script>alert(反馈不合法);<…...
Beszel监控Docker安装
一、Beszel Hub安装 #Beszel Hub安装 mkdir -p ./beszel_data && \ docker run -d \--name beszel \--restartunless-stopped \-v ./beszel_data:/beszel_data \-p 8090:8090 \henrygd/beszel#创建账号 账号/密码:adminadmin.com/adminadmin.com 二、Besz…...
Ansible批量配置服务器免密登录步骤详解
一、准备工作 192.168.85.138 安装ansible,计划配置到139的免密 192.168.85.139 待配置免密 1. 生成SSH密钥对 在Ansible控制节点生成密钥对,用于后续免密认证: ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa 全部回车默认,无…...
使用llama.cpp在gpu和cpu上运行deepseek-r1 7b的性能对比
使用deepseek-r1 7b模型的q5km量化版本进行测试, gpu上的token解码速度是cpu的近8倍. 测试环境: ubuntu22.04 x86llama.cpp cpu intel 10750h 4.41 tokens / s model size params backend threads test t/s qwen2 7B Q5_K - Medium 5.07 GiB 7.62 B CPU 6 pp512 …...
1.【BUUCTF】[SUCTF 2019]EasyWeb
进入题目页面如下 给出源码开始代码审计 <?php // 定义一个名为 get_the_flag 的函数,该函数主要处理文件上传逻辑 function get_the_flag(){// 构造用户上传文件的目录,目录名是 "upload/tmp_" 加上客户端 IP 地址的 MD5 哈希值$userdir…...
GMSL 实例1:当 MAX96717 遇上 MAX96724,打通 Camera 视频数据传输
新年伊始,继 Deepseek 在 AI 圈掀起风波之后。比亚迪在2月10日发布会上重磅官宣:全系车型将搭载自研的高阶智驾系统“天神之眼”,覆盖从10万元级入门车型到高端豪华车型的所有范围。此举如一颗重磅炸弹投向当前一卷再卷的新能源汽车赛道&…...
2025有哪些关键词优化工具好用
越来越多的企业和个人开始意识到搜索引擎优化(SEO)对于网站曝光和业务增长的重要性。在SEO优化的过程中,关键词优化占据着至关重要的地位。关键词是用户在搜索引擎中输入的词语,优化关键词有助于提高网站在搜索结果中的排名&#…...
Python常见面试题的详解6
1. 按字典 value 值排序 要点:对于给定字典,使用 sorted() 函数结合 items() 方法,依据 value 进行排序,也可以定义一个通用函数,支持按 value 升序或降序排序。示例: python d {a: 1, b: 2, c: 3, d: …...
宝塔和docker的区别
宝塔面板 vs Docker:区别、场景与互补使用指南 eepseek回答宝塔和docker的区别 好的,我现在需要回答用户关于宝塔面板和Docker之间的区别的问题。首先,我需要明确这两个工具各自的定义、功能以及它们适用的场景,这样才能准确比较…...
vscode调试redis
系统:ubuntu redis:redis-6.0.3 1.在vs中安装c/c编译插件 2.用vscode打开redis-6.0.3 3.在菜单中找到run->Add Configuration… 4.会在目录中生成一个./vscode目录,里面包含launch.json,修改launch.json中的program:${workspaceFolder}…...
tcp/ip协议设置参数,tcp/ip协议6设置
TCP/IP协议设置参数主要涉及到IP地址、子网掩码、网关地址以及DNS服务器地址等关键参数。这些参数的配置确保了网络设备能够正确地接入互联网并与其他设备进行通信。以下是对这些参数设置的详细说明: 1. IP地址 定义:IP地址是互联网中用于唯一标识每一…...
计算机网络原理试题二
一、单选 1.(单选题,5分)以下关于计算机网络定义的描述中,错误的是 A.以能够相互共享资源的方式互联起来的自治计算机系统的集合 B.计算机资源主要指计算机的CPU、内存和操作系统 C.互联的计算机既可以联网工作,也可以脱网单机工作 D.联网计算机之间的通信必须遵循…...
#渗透测试#批量漏洞挖掘#致远互联AnalyticsCloud 分析云 任意文件读取
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
企业文件共享中的权限管理与安全风险防范
在企业的日常运营中,文件共享是必不可少的一项工作。然而,文件共享过程中如果权限管理不当,极易引发安全风险,导致企业敏感信息泄露。因此,加强文件共享中的权限管理与安全风险防范,对于保障企业信息安全至…...
2025智能硬件售后服务管理系统选择的六大标准
2025智能硬件售后服务管理系统选择的六大标准 随着2025年的到来,智能硬件行业正以前所未有的速度发展,产品迭代加速,用户需求日益多样化。在这一背景下,售后服务管理系统的选择成为了智能硬件厂商能否在激烈的市场竞争中脱颖而出…...
C++ references
C复杂在于提供了太多的内存模型 或者说: 提供了两种东西: 1、可以放对象的地方: 堆栈堆全局数据区里 2、提供了很多访问对象的方式 变量是对象指针访问对象引用来访问对象 3 * 3 9 种访问对象的方式 规则 引用一般初始化࿰…...
STM32 RCC功能说明 复位和时钟控制RCC
目录 背景 RCC配置时钟主要涉及两方面 程序 第1步、RCC默认初始化 第2步、等待HSE工作稳定 第3步、设置PLL时钟源以及倍频数 第4步、设置AHB总线时钟(HCLK) 第5步、设置PCLK1(APB1总线) 第6步、设置PCLK2(APB2总线) 第7步、FLASH存储器的配置 …...
2024年终总结和2025年规划
2024年的主线是AI基础的学习和读书,虽然AI学习花费了更多的时间,但是读书长久看来于我是更重要的事情,哈哈哈,因此先简单回顾一下读书记忆,回顾我的2024,再展望一下我的2025. 我的2024年记忆 读万卷书&am…...
Day2 25/2/15 SAT
【一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解(马士兵)】https://www.bilibili.com/video/BV13g41157hK?p4&v…...
新版电脑通过wepe安装系统
官方下载链接 WIN10下载 WIN11下载 微PE 启动盘制作 1:选择启动盘的设备 2:选择对应的U盘设备,点击安装就可以,建议大于8g 3:在上方链接下载需要安装的程序包,放入启动盘,按需 更新系统 …...
分享一个使用的音频裁剪chrome扩展-Ringtone Maker
一、插件简介 铃声制作器是一个简单易用的 Chrome 扩展,专门用于制作手机铃声。它支持裁剪音频文件的特定片段,并将其下载为 WAV 格式,方便我们在手机上使用。无论是想从一段长音频中截取精彩部分作为铃声,还是对现有的音频进行个…...