分布式任务调度XXL-Job
XXL-Job 是一款轻量级、分布式的任务调度平台,其核心设计解决了传统任务调度(如Quartz)在分布式场景下的任务分片、高可用、可视化管控等痛点。以下从原理、核心架构、应用场景、代码示例及关联中间件展开详解
一、主流任务调度框架核心对比维度
对比维度 | Quartz | XXL-Job | Elastic-Job | PowerJob |
---|---|---|---|---|
厂商背景 | OpenSymphony | 大众点评(许雪里个人主导) | 当当网 → Apache 生态 | 阿里系新锐 |
学习成本 | 高(API复杂) | 低(可视化配置) | 中(需理解分片) | 中(支持复杂编排) |
分片能力 | 不支持 | 静态分片 | 动态分片 | 动态分片 + MapReduce |
任务触发延迟 | 1-2秒 | 50ms内 | 200ms(平均) | <100ms |
执行模式 | 单机/简单集群 | 广播/故障转移 | 分片+弹性伸缩 | 工作流DAG |
高可用机制 | DB锁竞争 | DB锁/ZK选举 | ZK协调 | 服务发现+集群 |
监控能力 | 无 | 内置可视化监控 | 基础监控 | Prometheus集成 |
适用场景 | 传统单体系统 | 中小型分布式系统 | 分片密集场景 | 云原生复杂任务 |
部署复杂度 | 低(单体架构) | 中(MySQL+集群) | 高(依赖ZK) | 高(K8s生态) |
开源地址 | quartz | xxl-job | elastic-job | PowerJob |
二、关键技术特性对比
1. 分片机制
- XXL-Job:通过静态分片参数(如 ShardingUtil.getShardingVo())实现简单分片
// 分片处理示例
int shardIndex = ShardingUtil.getShardingVo().getIndex();
- Elastic-Job:基于ZK动态感知节点变化,自动触发分片重分配
- PowerJob:支持 MapReduce 模型,可处理树状分片任务流
2. 高可用设计
- Quartz:通过数据库行锁实现集群调度,负载不均衡
- XXL-Job:调度中心集群采用 DB 锁或 ZK 选主,执行器自动故障转移
- Elastic-Job:基于 ZK 动态分片 + 失效转移,适配弹性扩缩容场景
- PowerJob:基于服务发现(如Nacos)实现多Server节点动态选举
3. 扩展性与生态
- XXL-Job:轻量级设计,依赖MySQL,易与Spring生态集成
- Elastic-Job:强依赖ZK,适合与Hadoop/Spark生态结合
- PowerJob:内置K8s支持,提供OpenAPI对接多云环境
三、技术选型建议
1. 场景化决策树
- 中小型项目:优先选择 XXL-Job(学习成本低,部署简单)
- 分片密集型任务(如日志清洗):选择 Elastic-Job(动态分片优化资源)
- 复杂工作流任务(如金融风控流水线):采用 PowerJob(DAG编排能力)
- 历史系统改造:沿用 Quartz(兼容旧有业务逻辑)
2. 性能基准参考
-
调度吞吐量(任务/秒):
- Quartz ≈ 500
- XXL-Job ≈ 1,200(异步调度设计)
- PowerJob ≈ 2,000(Actor模型优化)
-
分片响应延迟:Elastic-Job < 50ms(ZK实时通知)
四、中间件集成对比
框架 | 注册中心 | 存储层 | 监控系统 | 特有依赖 |
---|---|---|---|---|
XXL-Job | MySQL/手动注册 | MySQL | 内置Web监控 | 无 |
Elastic-Job | ZooKeeper | 关系型数据库 | Elastic APM | Curator客户端 |
PowerJob | Nacos/Eureka | MongoDB/MySQL | Prometheus+Grafana | AKKA(分布式计算) |
一、XXL-Job 核心原理与架构
核心架构
分为 调度中心(Admin) 和 执行器(Executor) 两个模块:
1、Admin(调度中心)
-
核心职责:
- 任务调度:解析Cron表达式触发任务,根据路由策略选择执行节点。
- 集群管理:支持多节点部署,通过数据库锁或ZooKeeper实现Leader选举。
- 注册管理:维护执行器注册表,接收执行器心跳并剔除失效节点。
- 监控报警:记录任务日志,支持失败告警与重试策略。
-
架构特点:
- 无状态设计,所有节点共享同一数据库集群。
- 内置可视化Web界面,支持任务配置、手动触发及日志查询。
2、Executor(执行器)
-
核心职责:
- 任务执行:接收Admin调度请求,执行具体的JobHandler逻辑。
- 注册上报:启动时向Admin注册应用信息,定期发送心跳维持状态。
- 分片处理:根据分片参数实现分布式任务并行处理。
-
架构特点:
- 内嵌Netty服务端,监听Admin的调度指令。
- 支持Spring集成,通过注解快速定义任务处理器。
二、注册机制详解
1. 执行器注册流程
-
启动注册:
- Executor启动时,通过HTTP请求向Admin发送注册信息,包含 appname(应用名)、IP地址、端口号。
- 注册逻辑代码片段:
// XxlJobSpringExecutor初始化时触发注册
public class XxlJobSpringExecutor extends XxlJobExecutor implements SmartInitializingSingleton {@Overridepublic void afterSingletonsInstantiated() {// 初始化内嵌Netty服务super.start();// 向Admin发送注册请求regist();}
}
- 心跳维持:
- Executor定期(默认30秒)向Admin发送心跳包,更新存活状态。
- Admin通过心跳超时机制(默认90秒)自动剔除失效节点。
2. 调度中心注册管理
- 注册表存储:
Admin将执行器注册信息持久化到数据库表 xxl_job_registry 中。 - 故障转移:
若某Executor节点宕机,Admin自动将任务路由至其他健康节点。
三、控制机制与交互流程
1. 任务触发流程
- 调度触发:
Admin根据Cron表达式触发任务,通过路由策略(如分片广播)选择目标Executor。 - RPC通信:
Admin向Executor发送HTTP请求(含任务参数、分片信息),触发任务执行。 - 结果回调:
Executor执行完成后,通过HTTP回调Admin上报任务结果。
2. 关键配置项
- Executor配置示例(Spring Boot):
xxl:job:admin:addresses: http://admin-host:8080/xxl-job-admin # Admin集群地址:ml-citation{ref="7" data="citationList"}executor:appname: order-service # 应用名(唯一标识)ip: # 留空自动获取本机IPport: 9999 # Netty服务端口logpath: /data/applogs/xxl # 任务日志路径:ml-citation{ref="8" data="citationList"}
3. 高可用设计
- Admin集群:
多节点Admin通过数据库行锁(或ZooKeeper)竞争调度权,保证单点调度。 - Executor容灾:
任务失败后,Admin自动重试其他节点(需配置重试次数)。
四、典型场景示例
场景:订单超时自动关闭
1. Admin配置:
- 任务类型:API触发
- 路由策略:故障转移
2. Executor实现:
@XxlJob("cancelTimeoutOrder")
public ReturnT<String> cancelOrder(String param) {// 分片逻辑示例:处理特定订单范围ShardingUtil.ShardingVO shard = ShardingUtil.getShardingVo();List<Order> orders = orderService.fetchOrdersByShard(shard);orders.forEach(order -> orderService.cancelIfTimeout(order));return ReturnT.SUCCESS;
}
XXL-Job 的任务路由策略配置需结合管理界面操作与代码逻辑设计,以下是具体配置方法及策略详解
一、路由策略配置步骤
1. 管理界面配置
- 路径:XXL-Job管理后台 → 任务管理 → 新增/编辑任务 → 路由策略。
- 操作:
在下拉菜单中选择预设策略(如 ROUND、SHARDING_BROADCAST 等)。
若需自定义策略,需在 ExecutorRouteStrategyEnum 中扩展枚举并实现路由接口 。 - 示例:
// 任务配置界面参数示例
{"路由策略": "分片广播","分片参数": "0=北京,1=上海,2=广州" // 分片索引与业务参数映射 :ml-citation{ref="6,7" data="citationList"}
}
2. 代码动态设置
在 JobHandler 中通过 ExecutorRouteStrategy 注解或API动态指定策略:
@XxlJob("dynamicRouteJob")
public ReturnT<String> execute(String param) {// 动态设置路由策略为故障转移ExecutorBlockStrategy execStrategy = ExecutorRouteStrategyEnum.FAILOVER;XxlJobHelper.setRouteStrategy(execStrategy); // :ml-citation{ref="3" data="citationList"}// 业务逻辑...return ReturnT.SUCCESS;
}
二、路由策略详解与适用场景
策略类型 | 原理 | 适用场景 | 配置要点 |
---|---|---|---|
分片广播 | 所有执行器均执行任务,通过分片参数区分处理范围 | 大数据量并行处理(如日志清洗、账单生成) | 需在任务参数中传递分片索引逻辑(如 ShardingUtil.getShardingVo()) |
故障转移 | 按顺序检测节点可用性,选择首个存活节点 | 高优先级任务需确保执行成功(如支付对账) | 建议设置超时检测阈值(默认30秒) |
一致性哈希 | 根据任务ID哈希值固定分配节点,节点增减时自动重分配 | 需任务与执行器绑定场景(如地域化数据处理) | 建议搭配虚拟节点避免数据倾斜 |
忙碌转移 | 优先选择空闲节点执行 | CPU密集型任务需避免资源争抢(如视频转码) | 需启用执行器空闲检测功能 |
轮询/随机 | 依次或随机分配节点 | 负载均衡场景(如普通定时报表生成) | 集群节点性能需保持均衡 |
三、高级配置建议
1. 分片参数优化
- 动态分片:通过数据库查询数据总量,动态计算分片粒度。
-- 示例:计算待处理数据总量
SELECT COUNT(*) FROM order_table WHERE status='unprocessed';
- 静态分片:硬编码分片规则(适用于固定业务场景)。
2. 混合策略组合
- 对核心任务采用 故障转移+分片广播 双重保障。
- 通过代码判断业务状态动态切换策略(如大促期间启用忙碌转移)。
3.监控配套
- 在 XxlJobHelper.log() 中记录分片执行明细,便于日志分析。
- 集成Prometheus监控各策略的任务成功率与执行耗时。
四、典型错误规避
- 分片不均:确保分片参数与数据分布匹配,避免哈希碰撞(可使用 MurmurHash 优化)。
- 策略冲突:避免在父子任务中混用广播与非广播策略。
- 心跳超时:保持执行器心跳间隔(默认30秒)小于调度中心剔除阈值(默认90秒)。
总结
Admin与Executor通过注册-心跳机制形成动态任务调度网络,Admin负责全局调度决策,Executor专注任务执行。其核心优势在于轻量级通信协议(基于HTTP)与去中心化注册管理,适用于微服务架构下的分布式任务场景。实际部署时需注意保持Admin与Executor的版本一致性,避免因协议变更导致通信失败。
相关文章:
分布式任务调度XXL-Job
XXL-Job 是一款轻量级、分布式的任务调度平台,其核心设计解决了传统任务调度(如Quartz)在分布式场景下的任务分片、高可用、可视化管控等痛点。以下从原理、核心架构、应用场景、代码示例及关联中间件展开详解 一、主流任务…...
内存泄漏与OOM崩溃根治方案:JVM与原生内存池差异化排查手册
内存泄漏与OOM崩溃根治方案:JVM与原生内存池差异化排查手册 一、问题描述与快速解决方案 1. 核心问题分类 内存泄漏(Memory Leak) 现象:应用运行时间越长,内存占用持续攀升,GC回收效率下降,最…...
火山引擎发展初始
火山引擎是字节跳动旗下的云计算服务品牌,其云服务业务的启动和正式商业化时间线如下: 1. **初期探索(2020年之前)** 字节跳动在早期为支持自身业务(如抖音、今日头条等)构建了强大的基础设施和技术中…...
使用光标测量,使用 TDR 测量 pH 和 fF
时域反射计 (TDR) 是一种通常用于测量印刷电路板 (PCB) 测试试样和电缆阻抗的仪器。TDR 对于测量过孔和元件焊盘的电感和电容、探针尖端电容和电感,甚至寄生电感收发器耦合电容器也非常有用。这也是验证仿真或提取您自…...
mybatisplus 集成逻辑删除
一开始,没去查资料,后面要被AI气死了,先看它的的话 一开始,看ai的描述,我还以为,不需要改数据库,mybatis-puls自动拦截集成就可以实现逻辑删除,c,最后还是要给数据库加一…...
ABAP+旧数据接管的会计年度未确定
导资产主数据时,报错旧数据接管的会计年度未确定 是因为程序里面使用了下列函数AISCO_CALCULATE_FIRST_DAY,输入公司代码,获取会计年度,这个数据是在后台表T093C表中取数的,通过SE16N可以看到后台表数据没有数…...
KT148A语音芯片发码很难播放_将4脚对地一下再发正常,什么原因?
问题描述如下:您好,遇到一点问题请帮忙支持一下: KT148A 这颗芯片, 我们上电后发码很难触发播放, 但用镊子将4pin PB0对地短接触发一下,再发码就很正常,这是什么原因? 根据现象来看…...
【大模型】DeepResearcher:通用智能体通过强化学习探索优化
DeepResearcher:通过强化学习在真实环境中扩展深度研究 一、引言二、技术原理(一)强化学习与深度研究代理(二)认知行为的出现(三)模型架构 三、实战运行方式(一)环境搭建…...
SpringBoot 3.X 开发自己的 Spring Boot Starter 和 SpringBoot 2.x 的区别
SpringBoot 2.x 在模块中创建 src/main/resources/META-INF/spring.factories 文件 文件内容如下: org.springframework.boot.autoconfigure.EnableAutoConfiguration\com.xxx.xxx.yourfilejava1,\com.xxx.xxx.yourfilejava2 SpringBoot 3.x 在模块中创建 src/m…...
NY164NY165美光固态闪存NY166NY172
美光NY系列固态闪存深度解析:技术、体验与行业洞察 一、技术架构与核心特性解析 美光NY系列(NY164/NY165/NY166/NY172)作为面向企业级市场的固态闪存产品,其技术设计聚焦高可靠性与性能优化。从架构上看,该系列可能采…...
Spring Boot中HTTP连接池的配置与优化实践
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、HTTP连接池的核心价值 在微服务架构和分布式系统场景中,HTTP客户端频繁创建/断开连接会产生显著的性能损耗。通过连接池技术可以实现&#x…...
【docker】--镜像管理
文章目录 拉取镜像启动镜像为容器连接容器法一法二 保存镜像加载镜像镜像打标签移除镜像 拉取镜像 docker pull mysql:8.0.42启动镜像为容器 docker run -dp 8080:8080 --name container_mysql8.0.42 -e MYSQL_ROOT_PASSWORD123123123 mysql:8.0.42 连接容器 法一 docker e…...
Logisim实验--华科计算机组成原理(保姆级教程) 头歌-存储系统设计实验(汉字库存储芯片扩展实验、MIPS寄存器文件设计)
汉字库存储芯片扩展实验 电路一: 电路二:电路和译码器设置。 两个电路的分线器设计: 只要把电路正确连接就能提交了,但要看到正确的实验结果就想要进行如下操作: 打开参考电路,我要做的就是将每个存储器内…...
Hapi.js知识框架
一、Hapi.js 基础 1. 核心概念 企业级Node.js框架:由Walmart团队创建,现由社区维护 配置驱动:强调声明式配置而非中间件 插件架构:高度模块化设计 安全优先:内置安全最佳实践 丰富的生态系统:官方维护…...
Baklib知识中台架构与智能引擎实践
知识中台架构设计实践 在数字化转型进程中,Baklib基于企业级知识管理需求,构建了模块化分层架构的知识中台体系。该架构采用数据湖仓融合技术,通过统一元数据管理打通业务系统间的信息壁垒,形成覆盖数据采集、清洗、标注的全链路…...
传输层协议UDP
传输层 负责数据能够从发送端传输接收端 . 再谈端口号 端口号 (Port) 标识了一个主机上进行通信的不同的应用程序 ; 在 TCP/IP 协议中 , 用 " 源 IP", " 源端口号 ", " 目的 IP", " 目的端口号 ", " 协议号 " 这样一…...
在Java中实现Parcelable接口和Serializable接口有什么区别?
在 Java 中,Parcelable 和 Serializable 接口都用于对象的序列化和反序列化,但它们的实现方式、性能和使用场景有很大区别。以下是它们的核心对比: 1. 实现方式 Serializable 是 Java 原生接口,只需声明 implements Serializable…...
MinIO WebUI 页面使用
上传文件到桶,选择Share 如果桶是pulic权限,则可以有以下两种方式访问到该对象文件: http://ip:9001/api/v1/download-shared-object/aHR0cDovLzEyNy4wLjAuMTo5MDAwL3dhcmVob3VzZS9wYWltb24vRmxpbmstTG9nby5wbmc_WC1BbXotQWxnb3JpdGhtPUFXU…...
Python | Dashboard制作
运行环境:jupyter notebook (python 3.12.7) Pyecharts 1.安装pyecharts !pip install pyecharts 验证安装是否成功: from pyecharts import __version__ print("Pyecharts版本:", __version__) # 应显示1.x以上版本 2.运行基础版代码&am…...
视频编辑软件无限音频、视频、图文轨
威力导演APP的特色功能包括无限音频、视频、图文轨,以及上百种二/三维特技转场、音/视频滤镜和多种音视频混编输出。此外,它还支持实时高清HDV格式、模拟信号输出,并具有DV25、DVACM、DV、HDV输入和输出等功能。在视频编辑领域,威…...
HttpSession 的运行原理
HttpSession 的运行原理(基于 Java Web) HttpSession 是 Java Web 开发中用于在服务器端存储用户会话数据的机制,它的核心作用是跟踪用户状态(如登录信息、购物车数据等)。 1. HttpSession 的基本概念 会话࿰…...
Axure应用交互设计:表格跟随菜单移动效果(超长表单)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!本文如有帮助请订阅 Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:表格跟随菜单移动 主要内容:表格交互设计、动态面板嵌套、拖动时事件、移动动作 应用场景…...
Flannel vxlan模式的优缺点
VXLAN 模式的特点、优缺点 优点 高性能:VXLAN 利用内核态处理封装/解封装,性能优于用户态方案(如 UDP),适合大规模集群。网络隔离:通过 VNI(VXLAN Network Identifier,24 位&#…...
中电金信参编的国家标准《信息技术 中间件 消息中间件技术要求》正式发布
近日,国家市场监督管理总局、国家标准化管理委员会发布中华人民共和国国家标准公告(2025年第10号),GB/T 28168—2025《信息技术 中间件 消息中间件技术要求》国家标准正式发布,并将于2025年11月1日正式实施。中电金信作…...
AcroForm 格式化文本(域)字段
概述 Acrobat提供了两个事件(脚本位置)来处理文本字段格式化:Keystroke(更改)事件和 Format事件。这两个事件可以共同控制输入到字段中的数据的格式以及文本字段中显示数据的外观。本文中涉及的所有脚本以及更多示例都包含在FormattingExamples.pdf文件中。 Keystroke事…...
机器学习——聚类算法练习题
一、 随机创建不同二维数据集作为训练集 ,并结合k-means算法将其聚类 ,你可以尝试分别聚类不同数量的簇 ,并观察聚类 效果: 聚类参数n_cluster传值不同 ,得到的聚类结果不同 代码展示: from sklearn.da…...
U-BOOT
使用正点原子已经移植好的U-BOOT编译完成后拷贝到SD卡中烧写到板子上中,将开发板设为SD卡启动模式,上电启动开发板;打开 MobaXterm 终端模拟软件,设置好串口参数连接开发板 USB 调试串口,最后按核心板上的 PS_RST 复位…...
JVM之虚拟机运行
虚拟机运行快速复习 try-catch:catch-异常表栈展开,finally-代码复制异常表兜底 类的生命周期:加载,连接(验证,准备,解析),初始化,使用,卸载 类…...
玩转ChatGPT:DeepSeek实战(统一所在地格式)
一、写在前面 前段时间去交流,又被问到一个实际问题: 在组织全区活动时,我们设计了一份签到表,其中包含“所在单位地区”一列,目的是希望按地级市(如南宁市、柳州市等)对参与者进行分组&#…...
蓝桥杯题库经典题型
1、数列排序(数组 排序) 问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<n<200 输入格式 第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。 输出格式 输出…...
极限学习机进行电厂相关数据预测
使用极限学习机(Extreme Learning Machine, ELM)进行电厂相关数据预测的详细步骤和MATLAB代码示例。假设任务是预测电厂发电量或设备状态(如温度、压力),代码包含数据预处理、ELM模型构建、训练与预测全过程。 1. 数据…...
【Axure视频教程】中继器表格间批量控制和传值
今天教大家在Axure中制作中继器表格间批量控制和传值的原型模板,效果包括: 选中和取消选中——点击表格中的多选按钮可以选中或取消选中该行内容; 全选和全部取消选中——点击表头左上角的多选按钮可以选中或取消选中表格的所有内容…...
Axure高级交互设计:文本框循环赋值实现新增、修改和查看
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!本文如有帮助请订阅本专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:文本框循环赋值 主要内容:使用设置文本动作实现文本框、文字标签的读取与赋值 应…...
Springboot之类路径扫描
SpringBoot框架中默认提供的扫描类为:ClassPathBeanDefinitionScanner。 webFlux框架中借助RepositoryComponentProvider扫描符合条件的Repository。 public class ClassPathScanningCandidateComponentProvider{private final List<TypeFilter> includeFilt…...
是 OpenCV 的 CUDA 模块中用于在 GPU 上对图像或矩阵进行转置操作函数cv::cuda::transpose
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::cuda::transpose 是 OpenCV 的 CUDA 模块中的一个函数,用于在 GPU 上对图像或矩阵进行转置操作(Transpose࿰…...
2025B卷 - 华为OD机试七日集训第1期 - 按算法分类,由易到难,循序渐进,玩转OD
目录 推荐刷题方法: 一、适合人群二、本期训练时间三、如何参加四、七日集训第1期五、精心挑选21道高频100分经典题目,作为入门。第1天、逻辑分析第2天、逻辑分析第3天、逻辑分析第4天第5天第6天第7天 六、集训总结国内直接使用最新o3、o4-mini-high、GP…...
从数据中台到数据飞轮:数字化转型的演进之路
从数据中台到数据飞轮:数字化转型的演进之路 数据中台 数据中台是企业为整合内部和外部数据资源而构建的中介层,实现数据的统一管理、共享和高效利用,目标是打破信息孤岛,提高数据使用效率,支持业务决策和创新 实施成本…...
【Linux网络】HTTPS
HTTPS协议原理 定义 HTTPS 也是一个应用层协议.是在HTTP协议的基础上引入了一个加密层. HTTP 协议内容都是按照文本的方式明文传输的.这就导致在传输过程中会出现一些被篡改的情况。 加密 加密就是把明文(要传输的信息)进行一系列变换,生成密文. 解密就是把密文再进行一系…...
UE5中制作动态数字Decal
在进行城市道路编辑时,经常需要绘制人行道、交通标志、停车线等路面元素。如果能够使用具有动态修改功能的 Decal(贴花),将大大提升编辑效率和灵活性。接下来讲解如何制作。 1.首先准备一张包含所需元素的Texture,这里…...
销量预测评估指标
销量预测评估指标 一、背景 在零售、供应链等场景中,销量预测的准确性直接影响库存管理、成本控制和客户满意度: 预测偏低:可能导致缺货(损失销售额和客户信任)。预测偏高:导致库存积压(增加…...
Unity3d 打包安卓平台(Android apk)报错Gradle build failed解决方法
问题 Unity3d 版本为2022.3.*版本,而且工程内部没有包含比较特殊的插件,安卓模块(module)也是随编辑一起安装,JDK、Android SDK Tools、Android NDK和Gradle都是默认安装。打包设置Project Settings也是默认设置,打包的工程不包含…...
STM32 启动文件分析
一、启动文件的核心作用 STM32启动文件(如startup_stm32f10x_hd.s)是芯片上电后执行的第一段代码,用汇编语言编写,主要完成以下关键任务: 初始化堆栈指针(SP) 设置主堆栈指针(…...
OSCP备战-Kioptrix4详细教程
目录 配置靶机 目标IP探测 编辑端口扫描 139/445端口 Samba 80端口获取shell 绕过lshell 方法一 编辑 方法二 编辑提权 内核漏洞 mysql udf提权 配置靶机 使用vm新建虚拟机,选择vmdk文件打开。 目标IP探测 arp-scan -l 得出目标IP:19…...
清华大学开源软件镜像站地址
清华大学开源软件镜像站: https://mirrors.tuna.tsinghua.edu.cn/...
java基础-package关键字、MVC、import关键字
1.package关键字: (1)为了更好管理类,提供包的概念 (2)声明类或接口所属的包,声明在源文件首行 (3)包,属于标识符,用小写字母表示 ࿰…...
uniapp(vue3)动态计算swiper高度封装自定义hook
// useCalculateSwiperHeight.ts import { ref, onMounted } from vue;export function useCalculateSwiperHeight(headerSelector: string .header-search, tabsWrapperSelector: string .u-tabs .u-tabs__wrapper) {const swiperHeight ref<number>(0);// 封装uni.g…...
Java SpringMVC 和 MyBatis 整合项目的事务管理配置详解
目录 一、事务管理的基本概念二、在 SpringMVC 和 MyBatis 整合项目中配置事务管理1. 配置数据源2. 配置事务管理器3. 使用事务注解4. 配置 MyBatis 的事务支持5. 测试事务管理三、总结在企业级应用开发中,事务管理是确保数据一致性和完整性的重要机制。特别是在整合了 Spring…...
C++的历史与发展
目录 一、C 的诞生与早期发展 (一)C 语言的兴起与局限 (二)C 的雏形:C with Classes (三)C 命名与早期特性丰富 二、C 的主要发展历程 (一)1985 年:经典…...
亚马逊云科技:引领数字时代的云服务先锋
在数字经济浪潮席卷全球的当下,企业和个人面临着数据爆炸、业务快速迭代等诸多挑战,亟需强大且灵活的云计算能力助力发展。亚马逊云科技凭借多年深耕与创新,成为数字时代的云服务先锋,为用户打造全方位、高质量的云计算解决方案。…...
基于Java和PostGIS的AOI面数据球面面积计算实践
目录 前言 一、计算方法简介 二、球面面积计算 1、AOI数据转Polygon 2、Geotools面积计算 3、GeographicLib面积计算 4、PostGIS面积计算 三、结果分析 1、不同算法结果对比 2、与互联网AOI对比 3、与天地图测面对比 四、总结 前言 在现代地理信息系统(G…...