【任务调度】xxl-job入门
xxl- job 入门
附上笔者写的测视示例:chenmeng-test-demos/demo8-task/task-xxl-job at master · cmty256/chenmeng-test-demos
官方文档
- XXL-JOB官网
源码仓库地址:
-
Github:https://github.com/xuxueli/xxl-job
-
Gitee:http://gitee.com/xuxueli0323/xxl-job
快捷克隆指令:
git clone https://gitee.com/xuxueli0323/xxl-job.git
对应 git 分支,注意版本号!!!
官方源码架构:
xxl-job-admin:调度中心
xxl-job-core:公共依赖
xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器):xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器,推荐这种方式;:xxl-job-executor-sample-frameless:无框架版本;
什么是 XXL-JOB?
XXL-JOB 是一个轻量级、分布式、开源的任务调度框架,广泛应用于定时任务的执行和管理,尤其在微服务架构中有着重要的作用。
具备以下特点:
- 简单易用:提供直观的 Web 管理界面,方便任务配置和监控。
- 分布式支持:支持多节点部署,具备高可用能力。
- 强大的任务管理:支持任务分片、失败重试、调度日志等功能。
- 丰富的扩展性:支持多种任务执行模式,如 Bean 模式、GLUE 模式等。
XXL-JOB 的核心架构
XXL-JOB 的架构分为两个核心部分:
- 调度中心(Admin)
- 提供任务调度的管理后台。
- 负责任务的调度分发、调度结果的存储与展示。
- 支持任务的创建、修改、删除、手动触发等操作。
- 执行器(Executor)
- 实际执行任务的节点。
- 可以是单个应用,也可以是多个应用组成的集群。
- 通过心跳机制向调度中心汇报状态。
1、初始化数据库
在官方源码此目录下:doc/db/tables_xxl_job.sql
调度表结构说明:
XXL-JOB 调度模块基于自研调度组件并支持集群部署,调度数据库表说明如下:
xxl_job_lock
:任务调度锁表;xxl_job_group
:执行器信息表,维护任务执行器信息;xxl_job_info
:调度扩展信息表,用于保存 XXL-JOB 调度任务的扩展信息,如任务分组、任务名、机器地址、执行器、执行入参和报警邮件等等;xxl_job_log
:调度日志表,用于保存 XXL-JOB 任务调度的历史信息,如调度结果、执行结果、调度入参、调度机器和执行器等等;xxl_job_log_report
:调度日志报表,用户存储 XXL-JOB 任务调度日志的报表,调度中心报表功能页面会用到;xxl_job_logglue
:任务 GLUE 日志,用于保存 GLUE 更新历史,用于支持 GLUE 的版本回溯功能;xxl_job_registry
:执行器注册表,维护在线的执行器和调度中心机器地址信息;xxl_job_user
:系统用户表;
2、启动调度中心
调度中心访问地址:http://localhost:8080/xxl-job-admin
作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。
修改配置文件信息:
- 启动项目前,先将数据库连接信息修改成自己的
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
3、启动执行器
引入依赖
在 Spring Boot 项目中,引入以下依赖:
<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>${最新稳定版本}</version> <!-- 跟随调度中心的版本 -->
</dependency>
执行器配置
server:port: 9108 # 指定一个端口,避免和 XXL-JOB 调度中心的端口冲突。
spring:application:name:task-xxl-job# xxl-job
xxl:job:admin:# 需确保调度中心地址有效,即先启动调动中心项目addresses: http://127.0.0.1:8080/xxl-job-admin # 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;executor:appname: demo8-task # 执行器 AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册ip: # 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";port: 0 # ### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;logpath: /Users/26913/logs/xxl-job/task-xxl-job # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;logretentiondays: 30 # 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;accessToken: default_token # 执行器通讯TOKEN [选填]:非空时启用;
执行器组件配置
@Configuration
public class XxlJobConfiguration {@Value("${xxl.job.admin.addresses}")private String adminAddresses;@Value("${xxl.job.executor.appname}")private String appName;@Value("${xxl.job.executor.ip:}")private String ip;@Value("${xxl.job.executor.port}")private int port;@Value("${xxl.job.accessToken}")private String accessToken;@Value("${xxl.job.executor.logpath}")private String logPath;@Value("${xxl.job.executor.logretentiondays}")private int logRetentionDays;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {// 创建 XxlJobSpringExecutor 执行器XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appName);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);// 返回return xxlJobSpringExecutor;}}
定义任务
使用 @XxlJob
注解定义任务:
- 官方文档参考:[3.2 BEAN模式(方法形式)](https://www.xuxueli.com/xxl-job/#3.2 BEAN模式(方法形式))
@Component
public class DemoJob {private final Logger logger = LoggerFactory.getLogger(getClass());private final AtomicInteger counts = new AtomicInteger();/*** BEAN 模式(方法形式)* 注解配置:* - 为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",* - 注解value值对应的是调度中心新建任务的JobHandler属性的值。*/@XxlJob("demoJob")public void execute() throws Exception {// 业务打印日志,不能在调度中心查看logger.info("[execute][定时第 ({}) 次执行]", counts.incrementAndGet());// 官方打印日志,可在调度中心查看XxlJobHelper.log("[demoJob][定时第 ({}) 次执行]", counts.incrementAndGet());}
}
4、在调度中心配置任务
新增执行器
- 可在
xxl_job_group
执行器信息表中查看到具体的信息
新增任务
- 在【任务管理】中新增
- 联系代码中
@XxlJob("")
注解 的 value 值,对应的是调度中心新建任务的JobHandler
属性的值
启动任务
- 官方文档参考:[4.5 启动/停止任务](https://www.xuxueli.com/xxl-job/#4.5 启动/停止任务)
- 在【任务管理】中,点击【操作】按钮
- 此处的启动/停止仅针对任务的后续调度触发行为,不会影响到已经触发的调度任务
调度中心查看日志
- 查看步骤:点击【调度日志】,点击【操作】,点击【执行日志】
常见问题
调度中心和执行器的通信方式是什么?
调度中心和执行器通过 HTTP 接口通信。执行器需要暴露一个 HTTP 服务供调度中心调用。
如何实现任务的高可用?
- 调度中心可以部署为集群模式,保证高可用。
- 执行器支持多实例部署,实现负载均衡和容错。
执行器如何避免任务重复执行?
通过分布式锁机制(如 Redis 锁)可以保证任务在集群环境中不被重复执行。
如何监控 XXL-JOB 的运行状态?
调度中心提供任务运行日志和执行器心跳检测功能,开发者可以在 Web 界面查看任务运行情况。
学习参考
- 芋道 Spring Boot 定时任务入门 | 芋道源码 —— 纯源码解析博客
- xxl-job,任务调度中心快速上手 - PromiseForYou - 博客园
相关文章:
【任务调度】xxl-job入门
xxl- job 入门 附上笔者写的测视示例:chenmeng-test-demos/demo8-task/task-xxl-job at master cmty256/chenmeng-test-demos 官方文档 XXL-JOB官网 源码仓库地址: Github:https://github.com/xuxueli/xxl-job Gitee:http://g…...
Go语言--语法基础4--基本数据类型--浮点数类型
3 、浮点数类型 浮点型用于表示包含小数点的数据,比如 1.234 就是一个浮点型数据。 Go 语言中的浮点类型采用 IEEE-754 标准的表达方式。 float32 精度是小数点后 7 位 float64 精度是小数点后 15 位。 1. 浮点数表示 Go 语言定义了两个类型 float32 和 floa…...
秘密任务 3.0:如何通过 JWT 认证确保 WebSockets 安全
在之前的文章中,我们探讨了如何通过 WebSockets DTOs 设计实时操作。现在,我们迎来了一项新的挑战:确保 WebSocket 通信在任务执行过程中保持安全。如果敌方潜伏在我们的实时通信渠道中,机密情报可能会被泄露。 任务:…...
UID和GID的区别
UID(用户标识符)和 GID(组标识符)是 Linux/Unix 系统中用于管理用户和组权限的核心机制,它们的区别主要体现在作用对象和用途上: 目录 1. 定义与作用对象 2. 主要用途 3. 系统保留范围 4. 用户与组的关…...
【网络】通过Samba实现Window挂在Linux服务器路径
有时候我们去进行内网部署时,会遇到客户或者甲方爸爸说,需要将Linux中的某个路径共享出去到Window上,挂载出比如Z:\这种盘符。通过打开Z盘,来查看服务器的指定目录下的数据。 步骤1: 在Linux中安装samba yum install…...
UE5 UI 教程系列全集
https://www.youtube.com/TheRoyalSkies/search?queryUnreal-5%20UI...
论文笔记(七十八)Do generative video models understand physical principles?
Do generative video models understand physical principles? 文章概括Physics-IQ基准数据集评估协议为什么要创建一个真实世界的Physics-IQ数据集模型物理理解的评估指标动作发生在哪里?空间IoU(Spatial IoU)动作在哪里、何时发生…...
Viper配置管理笔记
一、什么是 Viper? Viper 是 Go 语言的一个强大工具,就像一个超级管家,专门负责帮你打理程序的各种配置。它能把配置文件(比如 JSON、YAML、TOML 等格式)里的内容读出来,还能监控配置文件的变化࿰…...
visual studio无法跳转到函数定义、变量定义、跳转函数位置不准问题解决
参考:https://blog.csdn.net/snakehacker/article/details/135438353 程序有时会出现大部分函数都不能准确的从头文件中正确定位到函数定位,这是因为数据库错乱造成的,可以通过重构数据库来解决,操作方法如下: 菜单栏:工具——选项 文本编辑…...
【Rust 精进之路之第15篇-枚举 Enum】定义、变体与数据关联:表达多种可能性
系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025年4月20日 引言:当值拥有“选项”——超越结构体的表达力 在上一篇【结构体 Struct】中,我们学习了如何使用结构体将多个相关的数据字段组合成一个有意义的整体。结构体非常适合表示那些…...
C++ 相关系统软件简介与学习方法【最水的一期】
C 作为一种强大的C 相关系统软件简介编程语言,广泛应用于系统软件开发领域。以下为你介绍几款基于 C 开发的典型系统软件及其特点: 操作系统内核 部分操作系统内核采用 C 开发,例如某些嵌入式操作系统。C 的高性能、底层硬件访问能力和强大的…...
【Linux我做主】GDB调试工具完全指南
Linux下GDB调试工具完全指南:25个核心命令详解与实战示例 github地址 有梦想的电信狗 前言 GDB(GNU Debugger)是Linux开发中不可或缺的调试工具,尤其在定位代码逻辑错误和内存问题时表现卓越。本文基于实际开发经验࿰…...
基于SpringBoot3实现MyBatis-Plus(SSMP)整合快速入门CURD(增删改查)
目录 一、快速搭建SpringBoot-Web工程脚手架。 1.1 Spring Initializr 初始化工程。(官方提供) 1.2 工程脚手架初始化详细步骤。(IDEA2024.1.1) 二、MyBatis-Plus的特性与快速上手。 2.1 官网地址与基本特性。 2.2 快速上手技术栈基础。 2.3 Spring Boot2 的 MyBatis-Plus Star…...
短视频电商新纪元:TikTok Shop全球蓝海争夺战进入关键窗口期
一、流量重构:TikTok Shop改写全球电商版图 2024年,全球跨境电商市场迎来新一轮洗牌。当Temu、Shein等平台深陷“低价内卷”泥潭时,TikTok Shop凭借日均30亿次的短视频流量,正在开辟一条“内容即货架”的颠覆性赛道。最新数据显示…...
uniapp-商城-29-vuex 关于系统状态的管理
按照我们前面讲的,vuex,的使用方式: 步骤如下: 1 先创建store 文件夹 2 在 store 中 创建一个 index.js 3、 在 store 中,创建一个modules文件夹 4、在store中,创建一个getters.js 5、在modules文件…...
Qt中修改了UI设计文件后编译不生效问题的解决办法
复制工程过来后: 1、删除build文件 2、删除.user文件,恢复为文件最初的那样 3、执行make distclean,删除所有由先前构建过程生成的文件 4、再次打开工程,修改ui文件编译生效!...
Python 项目环境配置与 Vanna 安装避坑指南 (PyCharm + venv)
在进行 Python 项目开发时,一个干净、隔离且配置正确的开发环境至关重要。尤其是在使用像 PyCharm 这样的集成开发环境 (IDE) 时,正确理解和配置虚拟环境 (Virtual Environment) 是避免许多常见问题的关键。本文结合之前安装 Vanna 库时遇到的问题&#…...
Matlab FCM模糊聚类
1、内容简介 Matlab 211-FCM模糊聚类 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...
标准的JNI (Java Native Interface) 加载函数 JNI_OnLoad
1.JNI_OnLoad 在 Android Native 开发中,JNI_OnLoad 是动态注册本地方法的标准入口点。以下是一个标准实现示例及其说明: JNI_OnLoad 标准实现 #include <jni.h> #include <string>// 声明本地方法对应的 C/C 函数 jint native_add(JNIEnv…...
微信小程序中使用h5页面预览图片、视频、pdf文件
遇到了这么一个需求,需要在微信小程序中点击文件,进行文件预览。 要求: 图片:长图需要宽度100%高度自适应;横图的话宽度100%,高度居中显示视频:视频不管横向还是竖向都居中显示,有…...
A2A协议详解:打造统一的AI代理通信标准,实现多Agent系统协同
A2A 协议中文说明 文章目录 A2A 解决现有 Agent 问题 Agent 生态系统现状当前面临的主要问题为什么需要统一协议,有个标准采用复用 A2A 解决方案 统一通信标准代理能力发现机制安全协作框架灵活的交互模式 A2A 与 MCP 的关系 MCP 简介两者的区别与联系集成场景协同…...
博客系统案例练习2-用户注册-redis
前言 用户注册 [请求]/user/register[参数]contentType: application/json{"userName":"wangwu","password":"456789","githubUrl": "https://gitee.com/bubble-fish666/spring-cloud","email": &quo…...
【人工智能】推荐开源企业级OCR大模型InternVL3
推荐开源企业级OCR大模型InternVL3 文章参考来源: https://huggingface.co/OpenGVLab/InternVL3-14B-Instruct https://www.aivi.fyi/llms/deploy-InternVL3 InternVL3,这是一个高级多模态大型语言模型 (MLLM) 系列,展示了卓越的整…...
聊天室项目
一.完善注册页面 1.完善注册页面图标,添加检测注册页面各个登录信息是否完善,并且通过信号和槽与自定义一个计时器,当注册完毕后跳转到显示注册完毕的页面。 2.各个坚持注册页面是否按要求的函数 3.完善主页面,设置信号和槽&…...
并发设计模式实战系列(4):线程池
🌟 大家好,我是摘星! 🌟 今天为大家带来的是并发设计模式实战系列,第四章线程池(Thread Pool),废话不多说直接开始~ 目录 一、核心原理深度拆解 1. 线程池核心组件 2. 核心…...
大模型应用案例:主动提问式的 AI 面试官(接入 DeepSeek)
目录 核心逻辑 效果演示 技术选型 大模型应用开发框架:langchain-deepseek UI 展示框架—streamlit 代码获取 后续改进想法 本文附带详细的视频讲解,欢迎小伙伴们来支持—— 【代码宇宙017】大模型:主动提问式的 AI 面试官࿰…...
算法笔记—动态规划
1137. 第 N 个泰波那契数 - 力扣(LeetCode) class Solution { public:int tribonacci(int n) {if(n0) return 0;if(n1||n2) return 1;vector<int> dp(4);//初始化dp[0]0; dp[1]1; dp[2]1;for(int i3;i<n1;i){//滚动数组优化需要循环dp[i%4]dp[…...
Vue3集成Element Plus完整指南:从安装到主题定制上
一、Element Plus简介 Element Plus是一套基于Vue 3.0的桌面端组件库,由饿了么前端团队开源维护。它提供了丰富的UI组件,能够帮助开发者快速构建企业级中后台产品。 1. 安装与卸载 bash 复制 下载 # 安装最新版本 npm install element-plus -S# 卸…...
初识javascript
1. JavaScript 基础语法 (1) 变量声明 JavaScript支持三种声明变量的方式: var:传统的变量声明方式,存在作用域问题(函数作用域)。 let:块级作用域变量声明方式,避免了var的作用域问题。 co…...
C++项目 —— 基于多设计模式下的同步异步日志系统(5)(单例模式)
C项目 —— 基于多设计模式下的同步&异步日志系统(5)(单例模式) 一个问题单例模式实现1. 单例模式:全局唯一实例功能:实现细节:作用: 2. 日志器的注册与查找功能:实现…...
rag搭建,是如何进行向量匹配检索的?
RAG 里为什么要“向量检索”? 在 Retrieval-Augmented Generation (RAG) 中,我们的目标是让 LLM 能够“回答它本身不知道的内容”。做法是: 将知识(文本)进行向量化,存入向量数据库;用户提问后,也将问题向量化;去数据库里 找出与这个问题最相似的一批知识,返回喂给 …...
k8s 基础入门篇之开启 firewalld
前面在部署k8s时,都是直接关闭的防火墙。由于生产环境需要开启防火墙,只能放行一些特定的端口, 简单记录一下过程。 1. firewall 与 iptables 的关系 1.1 防火墙(Firewall) 定义: 防火墙是网络安全系统&…...
C++在VR/AR图形处理开发中的实战应用
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…...
Matlab 基于模型参考自适应法和SVPWM的异步电机控制
1、内容简介 Matlab 212-基于模型参考自适应法和SVPWM的异步电机控制 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...
深入浅出讲解UDP检验中如何计算检验和
一、计算机中的进制:二进制与十六进制 1. 十进制(Decimal) 特点:用0-9表示,逢10进1。 例子:数字 123 表示 110221013100110221013100。 2. 二进制(Binary) 特点:用0和…...
Python类和对象一(十)
封装: 在创建对象之前,通过类将相关的属性和方法打包到一起,然后通过类来生成响应的对象 定义类: 创建对象: 方法里面有个参数self:new的对象 当我们调用类里面方法的时候,py是怎么知道是哪…...
jupyter切换存储路径
一、问题描述 当我采用官网提供的安装方式pip install jupyterlab,在Windows下的powershell里安装jupyterlab成功,并启动:jupyter lab 打开网页:http://localhost:8888/lab 显示如下:成功了,可是我发现这…...
PH热榜 | 2025-04-20
1. Checklist GG 标语:基于人工智能的清单管理工具 介绍:checklist.gg 是一款基于人工智能的检查清单管理工具,旨在帮助组织确保每次都能准确完成任务。 产品网站: 立即访问 Product Hunt: View on Product Hunt 关…...
YOLOv11改进——基于注意力机制和密集小目标增强型EVA模块的设计与实现
随着计算机视觉技术的快速发展,目标检测算法在实时性与检测精度间的平衡成为研究重点。YOLO(You Only Look Once)系列算法以其高效性和准确性,长期占据实时目标检测领域的前沿位置。然而,尽管最新版本在通用场景表现优…...
n8n 中文系列教程_04.半开放节点深度解析:Code与HTTP Request高阶用法指南
在低代码开发领域,n8n凭借其独特的半开放架构打破了传统自动化工具的边界。本文深度剖析两大核心节点——Code与HTTP Request,从底层原理到企业级实战,揭秘如何通过代码自由扩展与API无缝集成,突破平台限制。无论是对接国产生态&a…...
Linux学习——了解和熟悉Linux系统的远程终端登录
Linux学习——了解和熟悉Linux系统的远程终端登录 一.配置Ubuntu系统的网络和用户 1、设置虚拟机网络为桥接模式 打开VMWare,选择编辑虚拟机设置,在网络适配器设置中,选择“桥接模式”,保存设置并启动Ubuntu。 2、配置Ubuntu的…...
PFLM: Privacy-preserving federated learning with membership proof证明阅读
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…...
十倍开发效率 - IDEA插件之 Maven Helper
0X00 先看效果 第一个选项表示存在冲突的依赖,可以看到图片中 mysql 的连接依赖发生了冲突,在低版本的上面直接右键选择 Exclude,冲突的依赖就被解决掉了。 0X01 安装 在 Plugins 中直接搜索 Maven Helper,选择第一个进行安装&am…...
线程安全总结
1.线程安全 1.1什么是线程安全 线程安全问题指的是当多个线程同时访问和操作共享资源(如变量、数据结构等)时,由于缺乏有效的同步控制,导致程序出现不可预期的错误或数据不一致的现象。其核心在于并发操作破坏了程序的正确性。 …...
计算机视觉cv入门之答题卡自动批阅
前边我们已经讲解了使用cv2进行图像预处理与边缘检测等方面的知识,这里我们以答题卡自动批阅这一案例来实操一下。 大致思路 答题卡自动批阅的大致流程可以分为这五步:图像预处理-寻找考试信息区域与涂卡区域-考生信息区域OCR识别-涂卡区域填涂答案判断…...
10.QT-显示类控件|LCD Number|ProgressBar|Calendar Widget(C++)
LCD Number QLCDNumer 是⼀个专⻔⽤来显⽰数字的控件.类似于"⽼式计算器"的效果 属性说明intValueQLCDNumber 显⽰的数字值(int).valueQLCDNumber 显⽰的数字值(double).和intValue是联动的.例如给value设为1.5,intValue的值就是2.另外,设置value和intValue的⽅法名…...
深入探索 Unix 与 Linux:历史、内核及发行版
引言 在当今的计算世界中,Unix 和 Linux 操作系统的影响力无处不在。从驱动互联网的服务器到我们口袋里的智能手机,再到无数嵌入式设备,它们的身影随处可见 1。这两个操作系统家族共享着丰富的历史和相似的设计哲学,但又各自走过…...
HCIP第三次作业
一、实验要求 1,R5为ISP,其上只能配置IP地址;R4作为企业边界路由器, 出口公网地址需要通过PPP协议获取,并进行chap认证 2整个0SPF环境IP基于172.16.0.0/16划分; 3所有设备均可访问R5的环回; 4减少LSA的更新量,加快收敛…...
Linux 入门:基础开发工具(下)git,cgdb操作指南
目录 一.进度条 一).补充:回车与换行 二).行缓冲区 三).进度条代码 二.版本控制器Git 一).Git 安装与配置 二).创建仓库 三).开始操作 1.简单流程 2.配置公钥 1).身份…...
【上位机——MFC】消息映射机制
消息映射机制 Window消息分类消息映射机制的使用代码示例 MFC框架利用消息映射机制把消息、命令与它们的处理函数映射起来。具体实现方法是在每个能接收和处理消息的类中,定义一个消息和消息函数指针对照表,即消息映射表。 在不重写WindowProc虚函数的大…...