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

定时任务特辑 | Quartz、xxl-job、elastic-job、Cron四个定时任务框架对比,和Spring Boot集成实战

专栏集锦,大佬们可以收藏以备不时之需:

Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9

Python 专栏:http://t.csdnimg.cn/hMwPR

Redis 专栏:http://t.csdnimg.cn/Qq0Xc

TensorFlow 专栏:http://t.csdnimg.cn/SOien

Logback 专栏:http://t.csdnimg.cn/UejSC

量子计算:

量子计算 | 解密著名量子算法Shor算法和Grover算法

AI机器学习实战:

AI机器学习实战 | 使用 Python 和 scikit-learn 库进行情感分析

AI机器学习 | 基于librosa库和使用scikit-learn库中的分类器进行语音识别

Python实战:

Python实战 | 使用 Python 和 TensorFlow 构建卷积神经网络(CNN)进行人脸识别

Spring Cloud实战:

Spring Cloud实战 |分布式系统的流量控制、熔断降级组件Sentinel如何使用

Spring Cloud 实战 | 解密Feign底层原理,包含实战源码

Spring Cloud 实战 | 解密负载均衡Ribbon底层原理,包含实战源码

1024程序员节特辑文章:

1024程序员狂欢节特辑 | ELK+ 协同过滤算法构建个性化推荐引擎,智能实现“千人千面”

1024程序员节特辑 | 解密Spring Cloud Hystrix熔断提高系统的可用性和容错能力

1024程序员节特辑 | ELK+ 用户画像构建个性化推荐引擎,智能实现“千人千面”

1024程序员节特辑 | OKR VS KPI谁更合适?

1024程序员节特辑 | Spring Boot实战 之 MongoDB分片或复制集操作

Spring实战系列文章:

Spring实战 | Spring AOP核心秘笈之葵花宝典

Spring实战 | Spring IOC不能说的秘密?

国庆中秋特辑系列文章:

国庆中秋特辑(八)Spring Boot项目如何使用JPA

国庆中秋特辑(七)Java软件工程师常见20道编程面试题

国庆中秋特辑(六)大学生常见30道宝藏编程面试题

国庆中秋特辑(五)MySQL如何性能调优?下篇

国庆中秋特辑(四)MySQL如何性能调优?上篇

国庆中秋特辑(三)使用生成对抗网络(GAN)生成具有节日氛围的画作,深度学习框架 TensorFlow 和 Keras 来实现

国庆中秋特辑(二)浪漫祝福方式 使用生成对抗网络(GAN)生成具有节日氛围的画作

国庆中秋特辑(一)浪漫祝福方式 用循环神经网络(RNN)或长短时记忆网络(LSTM)生成祝福诗词

在这里插入图片描述

目录

  • 1、Quartz、xxl-job、elastic-job、Cron四个定时任务框架详细介绍
  • 2、Quartz、xxl-job、elastic-job、Cron四个定时任务框架和Spring Boot项目集成实战

1、Quartz、xxl-job、elastic-job、Cron四个定时任务框架详细介绍

  1. Quartz
    Quartz 是一款基于 Java 的开源调度框架,可以用于在指定时间执行任务或在指定时间间隔内重复执行任务。它提供了丰富的 API 和灵活的配置选项,可以满足各种不同的调度需求。Quartz 支持集群部署,可以实现任务的分布式调度。
    优点:强大的调度功能,支持集群部署,提供丰富的 API 和灵活的配置选项。
    缺点:学习曲线较陡峭,配置相对复杂,没有自带的管理界面,调度逻辑和执行任务耦合在一起。
    发展历史:Quartz 最初由 Netflix 开发,后来成为了一个流行的 Java 调度框架。
    应用场景:Quartz 适用于需要进行复杂调度和分布式调度的场景,例如大数据处理、日志收集等。
    官网和社区:Quartz 的官方网站为 https://github.com/quartz-scheduler/quartz,社区非常活跃,有大量的开发者和使用者在该社区中分享经验、提问和解决问题。
    注意事项:在使用 Quartz 时,需要关注任务的并发问题,避免出现任务冲突。此外,在分布式场景下,需要确保任务在各个节点之间的数据一致性。
    常见问题及解决方法:
  • 问题:任务冲突导致任务无法正常执行。
    解决方法:可以通过设置任务调度器的方式来避免任务冲突,例如设置任务的唯一性、设置任务的执行时间等。
    在这里插入图片描述
  1. xxl-job
    xxl-job 是一款国内开源的分布式任务调度平台,提供了任务调度、任务执行、任务监控、报警等功能,支持分布式部署,适用于大规模分布式任务调度场景。xxl-job 提供了可视化界面进行操作,可以集中化管理任务。
    优点:支持集群部署,提供运维界面,维护成本小,自带错误预警,支持调度策略,支持分片,故障转移。
    缺点:相对 Quartz 来说需要多部署调度中心。
    发展历史:xxl-job 最初由阿里巴巴集团开发,成为了一个流行的 Java 调度框架。
    应用场景:xxl-job 适用于需要进行分布式任务调度的场景,例如大规模分布式系统中的任务调度。
    官网和社区:xxl-job 的官方网站为 https://github.com/xuxueli/xxl-job,社区非常活跃,有大量的开发者和使用者在该社区中分享经验、提问和解决问题。
    注意事项:在使用 xxl-job 时,需要关注任务的并发问题,确保任务在分布式场景下的稳定性。同时,要充分利用其提供的错误报警功能,及时发现并处理任务故障。
    常见问题及解决方法:
  • 问题:任务无法正常执行。
    解决方法:可以通过检查任务日志、分析任务依赖关系等方式来定位问题,并进行相应的修复。
    在这里插入图片描述
  1. elastic-job
    elastic-job 是一款国内开源的分布式任务调度框架,提供了分布式任务调度、分布式数据流处理、分布式数据分片等功能,支持多种任务类型,适用于大规模分布式任务调度和数据处理场景。
    优点:支持集群部署,维护成本小。
    缺点:没有自带的管理界面,学习曲线较陡峭。
    发展历史:elastic-job 最初由阿里巴巴集团开发,成为了一个流行的 Java 调度框架。
    应用场景:elastic-job 适用于需要进行分布式任务调度和数据处理的场景,例如大数据处理。
    官网和社区:elastic-job 的官方网站为 https://github.com/elasticjob/elastic-job,社区非常活跃,有大量的开发者和使用者在该社区中分享经验、提问和解决问题。
    注意事项:在使用 elastic-job 时,需要关注任务的并发问题,确保任务在分布式场景下的稳定性。同时,要充分利用其提供的错误报警功能,及时发现并处理任务故障。
    在这里插入图片描述

常见问题及解决方法:

  • 问题:任务无法正常执行。
    解决方法:可以通过检查任务日志、分析任务依赖关系等方式来定位问题,并进行相应的修复。
  1. Cron
    Cron 是一款基于 Java 的定时任务管理框架,可以将本地服务中所有的定时任务统一管理起来。使用简单,支持秒级别的定时任务。
    优点:使用简单,支持秒级别的定时任务。
    缺点:功能相对较少,仅适用于简单的定时任务调度。
    发展历史:Cron 最初由阿里巴巴集团开发,成为了一个流行的 Java 定时任务框架。
    应用场景:Cron 适用于需要进行简单定时任务调度的场景,例如定时统计报表、定时数据同步等。
    官网和社区:Cron 的官方网站为 https://github.com/apache/skywalking/tree/master/plugins/timelog,社区非常活跃,有大量的开发 者在该社区中分享经验、提问和解决问题。
    注意事项:在使用 Cron 时,需要关注任务的并发问题,避免出现任务冲突。同时,Cron 可能会受到其他应用程序或系统环境的影响,因此需要确保任务在执行过程中的稳定性。
    常见问题及解决方法:
  • 问题:任务冲突导致任务无法正常执行。
    解决方法:可以通过设置任务调度器的方式来避免任务冲突,例如设置任务的唯一性、设置任务的执行时间等。
  • 问题:任务执行失败或无法执行。
    解决方法:可以通过检查任务日志、分析任务依赖关系等方式来定位问题,并进行相应的修复。

2、Quartz、xxl-job、elastic-job、Cron四个定时任务框架和Spring Boot项目集成实战

  1. Quartz
    Quartz 集成 Spring Boot 需要将 Quartz 作为 Spring Boot 的一个外部依赖引入。首先在 Maven 项目的 pom.xml 文件中添加 Quartz 的依赖:
<dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.2</version>
</dependency>

然后在 Spring Boot 项目的 application.properties 文件中添加相关的配置,例如:

# 配置 Quartz 数据源
spring.datasource.url=jdbc:mysql://localhost:3306/quartz_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=quartz
spring.datasource.password=quartz
# 配置 Quartz 作业类
spring.quartz.job.class=com.example.Job
# 配置 Quartz 作业调度器
spring.quartz.job.properties.jobName=myJob
spring.quartz.job.properties.group=myGroup
spring.quartz.job.properties.cron=0/5 * * * * *
spring.quartz.job.properties.jobDataMap=@{}

接下来,创建一个继承自 QuartzJob 的作业类,并实现 execute 方法,例如:

@Component
public class Job implements QuartzJob {@Overridepublic void execute(JobExecutionContext context) {// 作业执行逻辑}
}

最后,在 Spring Boot 的启动类上添加 @EnableScheduling 注解,例如:

@SpringBootApplication
@EnableScheduling
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
  1. xxl-job
    xxl-job 集成 Spring Boot 需要将 xxl-job 作为一个 Spring Boot 启动器引入。首先在 Maven 项目的 pom.xml 文件中添加 xxl-job 的依赖:
<dependency><groupId>com.xxl-job</groupId><artifactId>xxl-job-spring-boot-starter</artifactId><version>2.3.0</version>
</dependency>

然后在 Spring Boot 项目的 application.properties 文件中添加相关的配置,例如:

# 配置 xxl-job 调度器
spring.xxl.job.admin.address=localhost:8080
spring.xxl.job.core.executor.type=simple
spring.xxl.job.core.job.coalesce=true
spring.xxl.job.core.job.spring.cron=0/5 * * * * *
spring.xxl.job.core.job.spring.name=myJob
spring.xxl.job.core.job.spring.group=myGroup
spring.xxl.job.core.job.spring.timeout=30000

接下来,创建一个继承自 AbstractJob 的作业类,并实现 execute 方法,例如:

@Component
public class Job extends AbstractJob {@Overrideprotected void executeInternal(JobExecutionContext context) {// 作业执行逻辑}
}

最后,在 Spring Boot 的启动类上添加 @EnableXxlJob 注解,例如:

@SpringBootApplication
@EnableXxlJob
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
  1. elastic-job
    elastic-job 集成 Spring Boot 需要将 elastic-job 作为一个 Spring Boot 启动器引入。首先在 Maven 项目的 pom.xml 文件中添加 elastic-job 的依赖:
<dependency><groupId>org.apache.shiro</groupId><artifactId>elastic-job-lite-core</artifactId><version>2.1.5</version>
</dependency>

然后在 Spring Boot 项目的 application.properties 文件中添加相关的配置,例如:

# 配置 ElasticJob 数据源
spring.datasource.url=jdbc:mysql://localhost:3306/elastic_job_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=elastic_job
spring.datasource.password=elastic_job
# 配置 ElasticJob 作业类
spring.elasticjob.job.class=com.example.Job
spring.elasticjob.job.name=myJob
spring.elasticjob.job.group=myGroup
spring.elasticjob.job.cron=0/5 * * * * *
spring.elasticjob.job.timeout=30000

接下来,创建一个继承自 ElasticJob 的作业类,并实现 execute 方法,例如:

@Component
public class Job implements ElasticJob {@Overridepublic void execute(JobExecutionContext context) {// 作业执行逻辑}
}

最后,在 Spring Boot 的启动类上添加 @EnableElasticJob 注解,例如:

@SpringBootApplication
@EnableElasticJob
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
  1. Cron
    Cron 集成 Spring Boot 非常简单,只需要在 Spring Boot 项目的 application.properties 文件中添加相关的配置,例如:
# 配置 Cron 数据源
spring.datasource.url=jdbc:mysql://localhost:3306/cron_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=cron
spring.datasource.password=cron
# 配置 Cron 作业类
spring.cron.job.class=com.example.Job
# 配置 Cron 作业调度器
spring.cron.job.spring.cron=0/5 * * * * *
spring.cron.job.spring.name=myJob
spring.cron.job.spring.group=myGroup

接下来,创建一个继承自 CronJob 的作业类,并实现 execute 方法,例如:

@Component
public class Job implements CronJob {@Overridepublic void execute(JobExecutionContext context) {// 作业执行逻辑}
}

最后,在 Spring Boot 的启动类上添加 @EnableScheduling 注解,例如:

@SpringBootApplication
@EnableScheduling
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

以上就是 Quartz、xxl-job、elastic-job、Cron 四个定时任务框架如何集成到 Spring Boot 的详细介绍,每个框架都有相应的使用方法和注意事项,可以根据实际需求选择合适的框架进行使用。

相关文章:

定时任务特辑 | Quartz、xxl-job、elastic-job、Cron四个定时任务框架对比,和Spring Boot集成实战

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…...

【面试经典150 | 二叉树】对称二叉树

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;递归方法二&#xff1a;迭代 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的…...

使用Git进行版本控制

参考&#xff1a;《Python编程从入门到实践》 前言1、安装、配置 Git1.1 在Linux系统中安装Git1.2 在OS X系统中安装Git1.3 在Windows系统中安装Git1.4 配置Git 2、创建项目3、忽略文件4、初始化仓库5、检查状态6、将文件加入到仓库中7、执行提交8、查看提交历史 前言 版本控制…...

专业课145+总分440+东南大学920考研专业基础综合信号与系统数字电路经验分享

个人情况简介 今年考研440&#xff0c;专业课145&#xff0c;数一140&#xff0c;期间一年努力辛苦付出&#xff0c;就不多表了&#xff0c;考研之路虽然艰难&#xff0c;付出很多&#xff0c;当收获的时候&#xff0c;都是值得&#xff0c;考研还是非常公平&#xff0c;希望大…...

Leetcode每日一题

https://leetcode.cn/problems/binary-tree-preorder-traversal/ 这道题目需要我们自行进行创建一个数组&#xff0c;题目也给出我们需要自己malloc一个数组来存放&#xff0c;这样能达到我们遍历的效果&#xff0c;我们来看看他的接口函数给的是什么。 可以看到的是这个接口函…...

USB连接器

USB连接器 电子元器件百科 文章目录 USB连接器前言一、USB连接器是什么二、USB连接器的类别三、USB连接器的应用实例四、USB连接器的作用原理总结前言 USB连接器的使用广泛,几乎所有现代电子设备都具备USB接口,使得设备之间的数据传输和充电变得简单和便捷。 一、USB连接器是…...

软件工程之需求分析

一、对需求的基本认识 1.需求分析简介 (1)什么是需求 用户需求&#xff1a;由用户提出。原始的用户需求通常是不能直接做成产品的&#xff0c;需要对其进行分析提炼&#xff0c;最终形成产品需求。 产品需求&#xff1a;产品经理针对用户需求提出的解决方案。 (2)为什么要…...

URL提示不安全

当用户访问一个没有经过SSL证书加密的网站&#xff08;即使用HTTP而不是HTTPS协议&#xff09;&#xff0c;或者SSL证书存在问题时&#xff0c;浏览器URL会显示不安全提示。这些提示旨在保护用户免受潜在的恶意活动&#xff0c;并提醒他们谨慎对待这些不安全的网站。那么该如何…...

JavaBean是什么

详情请参考JavaBean规范&#xff1a;https://www.oracle.com/java/technologies/javase/javabeans-spec.html JavaBean是可重用的软件组件&#xff0c;是一个java类&#xff0c;方法名称符合一定的规范&#xff0c;这样使用方使用起来方便&#xff0c;例如框架和工具可以根据规…...

202309-2

http://118.190.20.162/view.page?gpidT174 题目分析&#xff1a; 这道题读完题后感觉像是考察前缀和&#xff0c;这里回顾下什么是前缀和&#xff1a;https://blog.csdn.net/weixin_45629285/article/details/111146240 我们利用前缀和算法&#xff0c;就可以在O(nm)的时…...

数字图像处理(实践篇)二十 人脸特征提取

目录 1 安装face_recognition 2 涉及的函数 3 实践 使用face_recognition进行人脸特征提取. 1 安装face_recognition pip install face_recognition 或者 pip --default-timeout100 install face_recognition -i http://pypi.douban.com/simple --trusted-host pypi.dou…...

Python自动化:selenium常用方法总结

使用的Python版本为3.8&#xff0c;selenium版本为4.15.2 Python自动化:selenium常用方法总结 1. 三种等待方式2. 浏览器操作3. 8种查找元素的方法4. 高级事件 1. 三种等待方式 强制等待 使用模块time下的sleep()实现等待效果隐式等待 使用driver.implicitly_wait()方法&#…...

『开源资讯』JimuReport积木报表 v1.6.6 版本发布—免费报表工具

项目介绍 一款免费的数据可视化报表&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完成报…...

每天五分钟计算机视觉:使用1*1卷积层来改变输入层的通道数量

本文重点 在卷积神经网络中有很多重要的卷积核&#xff0c;比如1*1的卷积核&#xff0c;3*3的卷积核&#xff0c;本文将讲解1*1的卷积核的使用&#xff0c;它在卷积神经网络中具有重要的地位。由于1*1的卷积核使用了最小的窗口&#xff0c;那么1*1的卷积核就失去了卷积层可以识…...

Java (JDK 21) 调用 OpenCV (4.8.0)

Java 调用 OpenCV 一.OpenCV 下载和安装二.创建 Java Maven 项目三.其他测试 一.OpenCV 下载和安装 Open CV 官网 可以下载编译好的包&#xff0c;也可以下载源码自行编译 双击安装 opencv-4.8.0-windows.exe 默认为当前目录 安装即解压缩 根据系统位数选择 将 x64 目录下 op…...

git 常用的使用方法

1.查看分支 $ git branch #查看本地分支 $ git branch -r #查看远程分支 $ git branch -a #查看所有分支 $ git branch -vv #查看本地分支及追踪的分支 2.创建分支 方法1 $ git branch 分支名 #创建本地分支 #将本地分支push&#xff0c;就创建了远程分支方法2 #创建本地分…...

使用Caliper对Fabric地basic链码进行性能测试

如果你需要对fabric网络中地合约进行吞吐量、延迟等性能进行评估&#xff0c;可以使用Caliper来实现&#xff0c;会返回给你一份网页版的直观测试报告。下面是对test-network网络地basic链码地测试过程。 目录 1. 建立caliper-workspace文件夹2. 安装npm等3. calipe安装4. 创建…...

一台是阿里云,一台是腾讯云,一台是华为云,一台是百度云等多种公有云混合安装K8S集群

1. 修改主机名称和添加hosts #永久修改主机名 hostnamectl set-hostname master && bash #在master01上操作&#xff0c;阿里云服务器 hostnamectl set-hostname worker1 && bash #在node01上操作&#xff0c;阿里腾讯云服务器 hostnamectl set-ho…...

期末速成数据库极简版【查询】(3)

目录 多表查询 【8】多表连接——内连接 &#x1f642;等值连接 &#x1f642;自然连接 &#x1f642;非等值连接 【9】多表连接——外连接 【10】交叉连接不考 【11】联合查询 【12】扩展多表连接 【13】嵌套查询 &#x1f642; 多表查询 【8】多表连接——内连…...

人工智能_机器学习061_KKT条件公式理解_原理深度解析_松弛变量_不等式约束---人工智能工作笔记0101

然后我们再来看,前面我们,拉格朗日乘子法,把带有条件的,问题,优化成了等式问题,从而, 构建拉格朗日乘子公式,进行实现了求解,但是在现实生活中,往往也有,很多不等式问题. 比如上面的这个,就是要求是h(x)<=0的情况下,函数f(x)的最小值. 可以看到,这个带有一个不等式的条件,…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...