AI本地部署之ragflow
Ubuntu+ragflow+deepseek本地部署目录
- 一、配置说明
- 1. 软件配置说明
- 2. 硬件配置说明
- 二、RagFlow安装和部署
- 1. 前置条件
- 2. 安装
- 注:如果发现没有出现这个界面,可以进入ragflow/docker/ragflow-logs这个路径,查看ragflow_server.log文件中的内容,这里记录了ragflow运行过程中出现的问题,再进行逐一排查。
- 三、配置Ollama大模型启动引擎
- 1. 从官网下载Ollama模型加载器,官网给出的Linux下载命令是,其他系统的根据官网提示即可:
- 2. 修改配置
- 3. 下载模型
- 四、配置ragflow+ollama实现deepseek-r1本地部署
- 1. 配置端口
- 2. 配置本地知识库
- 3. 创建应用,进行测试:
- 续、可能存在的问题汇总
- 1.【划重点】善用日志排查问题
- 2. ragflow提示某个镜像组件未启动
- 3. ragflow提示缺少某个组件
- 4. 常用docker和ollama的帮助命令:
在Ubuntu24.04系统上部署ragflow 添加deepseek大模型
一、配置说明
1. 软件配置说明
- cuda工具配置说明
- ubuntu系统版本说明
2. 硬件配置说明
二、RagFlow安装和部署
1. 前置条件
CPU >= 4 核
RAM >= 16 GB
Disk >= 50 GB
Docker >= 24.0.0 & Docker Compose >= v2.26.1
docker的安装可以参考之前的文章。当然也可以跟着ragflow官方的教程走,建议提前更换docker使用的镜像源,在/etc/docker/daemon.json下。记录一个不便之处,因为本人的ubuntu用户账号未添加root权限,所以在这里可以将docker添入root用户组,默认拥有sudo权限,这样就不用在每次使用docker命令时,需要添加sudo关键字。
$ sudo groupadd docker
$ sudo gpasswd -a ${USER} docker
$ sudo service docker restart
2. 安装
- 拉取ragflow项目
$ git clone https://github.com/infiniflow/ragflow.git
这一步如果说通过git拉取速度不快的话,建议直接采用魔法方法:ragflow项目界面>code>Download ZIP直接下载,或者找国内的其他网站如gitee等网站,下载到本地需要存放的位置,然后解压缩。
- 进入 docker 文件夹,利用提前编译好的 Docker 镜像启动服务器:
$ cd ragflow/docker $ docker compose -f docker-compose.yml up -d
根据官方教程,运行上述命令会自动下载 RAGFlow slim Docker 镜像 v0.17.0-slim。请参考原文查看不同 Docker 发行版的描述。
如需下载不同于 v0.17.0-slim 的 Docker 镜像,请在运行 docker compose 启动服务之前先更新 ragflow/docker/.env 文件内的 RAGFLOW_IMAGE 变量。比如,你可以通过设置 RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.0 来下载 RAGFlow 镜像的 v0.17.0 完整发行版。
slim和非slim版本之间的区别在于,是否自带embedding模型,这两个版本之间的大小差距在7-10GB之间,因此在下载之前需要考虑本地磁盘容量是否足够,本人下载使用的slim版本,大小为10GB左右,slim版本大概在18GB上下此外还需要注意,在镜像拉取完成之后,需要注意这里是否对应的镜像已经完整了,使用docker images命令查看镜像是否齐全,权限不够的在命令前面添加sudo docker images查看即可。
docker images 查看 ,看到下载使用的是slim版本,后期自行选择安装嵌入模型。
- 查看docker容器内组件运行情况
$ docker logs -f ragflow-server
在docker镜像拉取以后,默认会启动镜像内容,接着就可以通过上述命令查看是否启动成功 ,启动成功应该是如下标志:
注:如果发现没有出现这个界面,可以进入ragflow/docker/ragflow-logs这个路径,查看ragflow_server.log文件中的内容,这里记录了ragflow运行过程中出现的问题,再进行逐一排查。
需要注意在上述工作完成之后,不是要进入如下的两个网址:
- http://127.0.0.1:9380
- http://本地IP:9380
而是要进入:http://localhost:80 先注册账号,是下面这个页面,账号符合邮箱地址,密码随便设置,反正数据都是保存在本地的:
http://192.168.21.24:80
-
注册 + 登录 :
-
配置模型
搭建好ragflow之后,我们就需要考虑为ragflow挑选LLM模型,
通过点击>右上角头像>左侧菜单栏模型提供商,选择合适的模型启动引擎即可,这里因为本地配置了ollama,所以使用ollama直接使用即可:
三、配置Ollama大模型启动引擎
可以参考之前文章,部署Ollama
1. 从官网下载Ollama模型加载器,官网给出的Linux下载命令是,其他系统的根据官网提示即可:
$ curl -fsSL https://ollama.com/install.sh | sh
使用这个下载的速度会非常慢,可能会卡死或者提示下载几天,建议可以从国内第三方网站下载,如魔塔社区等,通过这种方式下载的模型,就需要ollama文件中,通过命令行的方式安装ollama,这里我以魔搭社区中的提示为例:
$ cd ollama-linux$ sudo chmod 777 ./ollama-modelscope-install.sh$ ./ollama-modelscope-install.sh
安装完成后,一般系统会自动运行,输入以下命令,查看ollama是否已经安装完成:
$ ollama -v
安装成功会出现如下标志:
$ ollama version is 0.6.0
2. 修改配置
在下载完成ollama模型后,不要急着去下载模型,建议在本地修改以下配置后在考虑下载模型:
① 因为ollama默认下载的位置会将模型下载至如下地址/usr/share/ollama/.ollama/models,非常不利于我们查看和修改对应的信息,而且通常一个LLM模型的存储空间占用都是大几个GB或者几十GB起,最好根据自己的实际情况,放在相对安心的位置比较好;
②考虑到接下来,ollama在启动模型后是需要在本地部署并支持被外部访问,因此还需要添加ollama的本地地址使用0.0.0.0,否则默认启动会启用只有本机系统可用的127.0.0.1回环端口,这也就意味着前面在docker中部署的ragflow作为外部应用无法访问。
基于上述问题,特此在/etc/systemd/system/ollama.service中的[Service]这一个下面导航栏下,添加以下信息:
# 模型下载地址设置,其中/xxx/可以根据自己的实际情况设置绝对地址或相对地址
Environment="OLLAMA_MODELS=/xxx/ollama/models"
# 访问端口设置
Environment="OLLAMA_HOST=0.0.0.0"
修改完上述文件后,对ollama重新加载并更新配置:
# 刷新配置
$ sudo systemctl daemon-reload# 重启ollama
$ sudo systemctl restart ollama.service# 查看一下重启后的ollama运行状态
$ sudo systemctl status ollama
3. 下载模型
在完成上述内容之后,可以开始在ollama官网寻找对应的大模型进行下载:
参考 之前文章之 部署Ollama 和dif y
四、配置ragflow+ollama实现deepseek-r1本地部署
1. 配置端口
同本人之前部署的dify 过程
配置如下:
完成:
同dify: 部署嵌入模型
完成 :
2. 配置本地知识库
2-1. 接下来我们就可以创建知识库了
然后对知识库做配置,这里是 dify中没有的,不同的
2-2. 确定,完成:
2-3. 按照提示信息,刷新页面,来到系统模型设置弹框:
关于嵌入模型的选择上,选择一个前文所提到的非slim自带的嵌入模型即可,但是由于ragflow自带的embedding模型似乎只会调用cpu进行解析,所以这里建议可以使用ollama自己部署,步骤同上 ollama pull ,即可通过gpu调用的形式加载embedding模型,加快文档解析速度。
2-4. 之后点击数据集>新增文件>本地文件或者新建空文件,即可实现文件上传,解析文件后,在聊天界面实现和模型畅快的聊天。
选好文件/文件夹,ragflow支持整个文件夹上传,与dify不同点。
2-5. 点击确定:
2-6. 点击解析:
3. 创建应用,进行测试:
3-1. 你是我的超级智能助理,帮我从知识库或联网搜索客户的问题答案,进行友好的回答
3-2. 之前遗漏了 2.6步【解析】,上传知识库解析完之后 ,再次编辑应用机器人,添加知识库:
3-3.
续、可能存在的问题汇总
1.【划重点】善用日志排查问题
ollama运行过程中遇到问题,使用如下命令查看ollama日志:
$ journalctl -u ollama -f
ragflow运行过程中遇到问题,同前文中所示,查看对应的日志文件即可
2. ragflow提示某个镜像组件未启动
如Can’t connect redis,无法链接redis库
# 查看已经启动的docker容器$ docker ps# xxx表示对应的ragflow需要的组件$ docker start ragflow-xxx
3. ragflow提示缺少某个组件
问题描述:如Failed to resolve ‘minio’ ([Errno -3] Temporary failure in name resolution)
解决方法:docker中重新抓一个镜像组件下来
$ docker pull ragflow-minio
4. 常用docker和ollama的帮助命令:
$ docker -h
$ ollama -h
相关文章:
AI本地部署之ragflow
Ubunturagflowdeepseek本地部署目录 一、配置说明1. 软件配置说明2. 硬件配置说明 二、RagFlow安装和部署1. 前置条件2. 安装注:如果发现没有出现这个界面,可以进入ragflow/docker/ragflow-logs这个路径,查看ragflow_server.log文件中的内容&…...
源码分析之Leaflet属性控件Control.Attribution实现原理
概述 Control.Attribution 是一个 Leaflet 地图控件,用于显示地图的版权信息。它可以显示地图提供者的名称和链接,以及地图上的图层的版权信息。 源码分析 源码实现 Control.Attribution的源码实现如下 var ukrainianFlag <svg aria-hidden"…...
NO.62十六届蓝桥杯备战|基础算法-二分查找|查找元素的第一个和最后一个位置|牛可乐和魔法封印|A-B数对|烦恼的高考意愿(C++)
⼆分算法是我觉得在基础算法篇章中最难的算法。⼆分算法的原理以及模板其实是很简单的,主要的难点在于问题中的各种各样的细节问题。因此,⼤多数情况下,只是背会⼆分模板并不能解决题⽬,还要去处理各种乱七⼋糟的边界问题 34. 在…...
开源模型应用落地-Qwen2.5-Omni-7B模型-部署 “光速” 指南
一、前言 2025年3月,阿里巴巴通义千问团队开源的全模态大模型Qwen2.5-Omni-7B,犹如一记惊雷划破AI领域的长空。这个仅70亿参数的"小巧巨人",以端到端的架构实现了对文本、图像、音频、视频的全模态感知,更通过创新的Thinker-Talker双核架构,将人类"接收-思…...
顺序容器 -forward list单链表
forward list单链表是C11加入到STL的。 使用forward list,必须包含头文件<forward_list> #include <forward_list> 这个头文件被定义在命名空间std内。 namespace std {template <typename T,typename Allocator allocator<T> >class …...
C++:算术运算符
程序员Amin 🙈作者简介:练习时长两年半,全栈up主 🙉个人主页:程序员Amin 🙊 P S : 点赞是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全…...
缺页异常导致的iowait打印出相关文件的绝对路径
一、背景 在之前的博客 增加等IO状态的唤醒堆栈打印及缺页异常导致iowait分析-CSDN博客 里,我们进一步优化了D状态和等IO状态的事件的堆栈打印,补充了唤醒堆栈打印,也分析了一种比较典型的缺页异常filemap_fault导致的iowait的情况。 在这篇…...
【Centos】centos7内核升级-亲测有效
相关资源 通过网盘分享的文件:脚本升级 链接: https://pan.baidu.com/s/1yrCnflT-xWhAPVQRx8_YUg?pwd52xy 提取码: 52xy –来自百度网盘超级会员v5的分享 使用教程 将脚本文件上传到服务器的一个目录 执行更新命令 yum install -y linux-firmware执行脚本即可 …...
多模态模型:专栏概要与内容目录
文章目录 多模态模型📚 核心内容模块Stable Diffusion基础教程Stable Diffusion原理深度解析部署与环境配置其他多模态模型实践 多模态模型 🔥 专栏简介 | 解锁AI绘画与多模态模型的技术奥秘 探索多模态AI技术,掌握Stable Diffusion等流行框…...
1. 购物车
1. 购物车 咱们购物车基于 V2 装饰器进行开发,底气来源于 自定义组件混用场景指导 1.1. 素材整合 observedv2和Trace 数据模型和页面 // 其他略 // 购物车 export interface CartGoods {count: number;id: string;name: string;picture: string;price: number;…...
frp 让服务器远程调用本地的服务(比如你的java 8080项目)
1、服务器上安装frp 2、本地安装frp 服务器上 frps.toml 配置信息: bindPort 30000auth.token "密码" # 客户端连接密码vhostHTTPPort 8082 本地 frpc.toml serverAddr "服务器ip" serverPort 30000 auth.token "服务器上设置的…...
《AI大模型应知应会100篇》第56篇:LangChain快速入门与应用示例
第56篇:LangChain快速入门与应用示例 前言 最近最火的肯定非Manus和OpenManus莫属,因为与传统AI工具仅提供信息不同,Manus能完成端到端的任务闭环。例如用户发送“筛选本月抖音爆款视频”,它会自动完成: 爬取平台数据…...
大模型——如何在本地部署微软的OmniParser V2
微软的 OmniParser V2 是一款尖端的人工智能屏幕解析器,可通过分析屏幕截图从图形用户界面中提取结构化数据,使人工智能代理能够与屏幕元素进行无缝交互。该工具是构建自主图形用户界面代理的完美选择,它改变了自动化和工作流程优化的游戏规则。在本指南中,我们将介绍如何在…...
Oracle触发器使用(一):DML触发器
Oracle触发器使用(一):DML触发器 DML触发器条件谓词触发器INSTEAD OF DML触发器复合DML触发器Oracle数据库中的触发器(Trigger)本质上也是PL/SQL代码,触发器可以被Enable或者Disable,但是不能像存储过程那样被直接调用执行。 触发器不能独立存在,而是定义在表、视图、…...
智慧园区大屏如何实现全局监测:监测意义、内容、方式
智慧园区的价值不容小觑呀,可以说园区的大部分数据都在这个大屏上,监测数据越多,那么大屏的价值就越大。很多小伙伴拿到需求后感觉无从下手,本文在这里智慧园区大屏可以监测哪些内容、监测的意义、监测的方式等,欢迎点…...
LeetCode 解题思路 31(Hot 100)
解题思路: 递归参数: 字符串 s、结果集 result、当前路径 path、回文子串数组 dp、开始位置 start。递归过程: 当当前路径 path 的长度等于 s.length() 时,说明已经分割完成,加入结果集。若当前起止位置满足回文条件…...
fastAPI详细介绍以及使用方法
FastAPI是一个现代的Python web框架,它提供快速构建API的能力。它具有高性能、易用性和文档自动生成的特点,使得开发者能够快速开发高效的API服务。 以下是一些FastAPI的主要特点和优势: 快速:FastAPI基于Python 3.6的异步框架St…...
数字人训练数据修正和查看 不需要GPU也能运行的DH_live-加载自己训练-
自己训练模pth报错 le "D:\ai\dh_live\app.py", line 42, in demo_mini interface_mini(asset_path, wav_path, output_video_name) File "D:\ai\dh_live\demo_mini.py", line 21, in interface_mini renderModel_mini.loadModel("checkpoi…...
WGAN-GP 原理及实现(pytorch版)
WGAN-GP 原理及实现 一、WGAN-GP 原理1.1 WGAN-GP 核心原理1.2 WGAN-GP 实现步骤1.3 总结二、WGAN-GP 实现2.1 导包2.2 数据加载和处理2.3 构建生成器2.4 构建判别器2.5 训练和保存模型2.6 图片转GIF一、WGAN-GP 原理 Wasserstein GAN with Gradient Penalty (WGAN-GP) 是对原…...
chromium魔改——navigator.webdriver 检测
chromium源码官网 https://source.chromium.org/chromium/chromium/src 说下修改的chromium源码思路: 首先在修改源码过检测之前,我们要知道它是怎么检测的,找到他通过哪个JS的API来做的检测,只有知道了如何检测,我们…...
Sentinel[超详细讲解]-7 -之 -熔断降级[异常比例阈值]
📖 主要讲解熔断降级之 --- 异常比例阈值 🚀 1️⃣ 背景 Sentinel 以流量作为切入点,提供了很多的丰富的功能,例如🤗: 流量控制,熔断降级等,它能够有效的适用各个复杂的业务场景&am…...
程序化广告行业(56/89):S2S对接与第三方广告监测全解析
程序化广告行业(56/89):S2S对接与第三方广告监测全解析 大家好!在前面的博客中,我们一起深入学习了程序化广告的人群标签、用户标签生成、Look Alike原理,以及DMP与DSP对接和数据统计原理等内容。今天&…...
C++进阶知识复习 31~38
目的 写这一系列文章的目的主要是为了秋招时候应对计算机基础问题能够流畅的回答出来 (如果不整理下 磕磕绊绊的回答会被认为是不熟悉) 本文章题目的主要来源来自于 面试鸭 部分面试鸭上没有而牛客网上有的博主会进行查缺补漏 题目编号按照面试鸭官网…...
Spring Boot 整合mybatis
2025/4/3 向全栈工程师迈进!!! 配置文件在实际开发中如何使用呢,接下去将通过Spring Boot整合mybatis来看配置文件如何在实际开发中被使用。 一、引入mybatis起步依赖 在pom.xml中引入mybatis的起步依赖,如下。 在这…...
新能源汽车测试中的信号调理模块:从原理到实战应用
摘要 信号调理模块(Signal Conditioning Module, SCM)是新能源汽车(NEV)测试系统中的关键环节,直接影响数据采集的精度与可靠性。本文面向HIL测试工程师、电机测试工程师及整车动力经济性测试工程师,系统性…...
一篇关于Netty相关的梳理总结
一篇关于Netty的梳理总结 一、Netty1.1 什么是netty?为什么要用netty1.2 Netty是什么? 二、Netty关于网络基础2.1 线程池2.2 线程池线程的生命周期和状态2.3 为什么要使用线程池2.4 简述线程池原理,FixedThreadPool用的阻塞队列是什么2.5 并发…...
纺织车间数字化转型:降本增效新路径
在纺织行业竞争日益激烈的当下,如何提升生产效率、降低成本成为企业关注的焦点。某纺织车间通过创新引入明达技术MBox20网关并部署IOT 平台,成功接入千台设备,实现了生产模式的重大变革。 以往,纺织车间生产犹如黑箱,…...
递归典例---汉诺塔
https://ybt.ssoier.cn/problem_show.php?pid1205 #include<bits/stdc.h> #define endl \n #define pii pair<int,int>using namespace std; using ll long long;void move(int n,char a,char b,char c) // n 个盘子,通过 b,从 a 移动到 …...
Unity2D:从零开始制作一款跑酷游戏!
目录 成品展示 美术资源 制作步骤 场景预布设: 实现人物基础功能: 移动背景——横向卷轴: 生成障碍物: 生成敌人与攻击逻辑: UI制作与重新开始: 导出游戏: 小结 大家小时候都玩过《…...
维拉工时自定义字段:赋能项目数据的深度洞察 | 上新预告
原文链接:维拉工时自定义字段:赋能项目数据的深度洞察 | 上新预告 在项目管理实践中,每个企业都有独特的数据统计与分析需求。为了帮助用户实现个性化数据建模,从而更精准地衡量项目进度和预算投入,维拉工时全新升级的…...
C++ | 文件读写(ofstream/ifstream/fstream)
一、C文件操作核心类 C标准库通过<fstream>提供了强大的文件操作支持,主要包含三个关键类: 类名描述典型用途ofstream输出文件流(Output File Stream)文件写入操作ifstream输入文件流(Input File Stream&#…...
flux文生图部署笔记
目录 依赖库: 文生图推理代码cpu: cuda版推理: 依赖库: tensorrt安装: pip install nvidia-pyindex # 添加NVIDIA仓库索引 pip install tensorrt 文生图推理代码cpu: import torch from diffusers import FluxPipelinemodel_id = "black-forest-labs/FLUX.1-s…...
二语习得理论(Second Language Acquisition, SLA)如何学习英语
二语习得理论(Second Language Acquisition, SLA)是研究学习者如何在成人或青少年阶段学习第二语言(L2)的理论框架。该理论主要关注语言习得过程中的认知、社会和文化因素,解释了学习者如何从初学者逐渐变得流利并能够…...
策略模式实际用处,改吧改吧直接用,两种方式
controller RestController RequestMapping("admin/test") RequiredArgsConstructor(onConstructor __(Autowired)) public class TestController {Autowiredprivate VideoFactory VideoFactory;GetMapping("getList")public R getList(){// 第一种方式T…...
计算机网络-TCP的流量控制
内容来源:小林coding 本文是对小林coding的TPC流量控制的精简总结 什么是流量控制 发送方不能无脑的发数据给接收方,要考虑接收方处理能力 如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制 从而导致网…...
搬砖--贪心+排序的背包
a在上面b在下面->a.v-M-b.m>b.v-M-a.m->剩余率大 所以我先遍历a,让a在上面 这就是要考虑贪心排序的01背包 因为它有放的限制条件 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<ll,int>…...
git克隆数据失败
场景:当新到一家公司,然后接手了上一个同时的电脑,使用git克隆代码一直提示无法访问,如图 原因:即使配置的新的用户信息。但是window记录了上一个同事的登录信息,上一个同事已经被剔除权限,再拉…...
Dart 语法
1. 级联操作符 … var paint Paint()..color Colors.black..strokeCap StrokeCap.round..strokeWidth 5.0;2. firstWhereOrNull 3. 隐藏或导入部分组件 // Import only foo. import package:lib1/lib1.dart show foo;// Import all names EXCEPT foo. import package:lib…...
34、web前端开发之JavaScript(三)
十. DOM操作详解 1、DOM简介 文档对象模型(DOM,Document Object Model)是JavaScript与网页内容交互的接口。它将HTML文档表示为一种树状结构(DOM树),其中每个节点代表文档的一部分(例如元素、…...
自适应卡尔曼滤波
目录 自适应卡尔曼滤波 自适应卡尔曼滤波 主要作用,去抖动 AdaptiveKalmanFilter.py import cv2 import numpy as np from collections import deque# ------------------ 核心去抖算法 ------------------ import cv2 import numpy as np from collections import deque#…...
EIP-712:类型化结构化数据的哈希与签名
1. 引言 以太坊 EIP-712: 类型化结构化数据的哈希与签名,是一种用于对类型化结构化数据(而不仅仅是字节串)进行哈希和签名 的标准。 其包括: 编码函数正确性的理论框架,类似于 Solidity 结构体并兼容的结构化数据规…...
Day 3:Leetcode 比特位计数+只出现一次的数字 II
比特位计数 本质是一个递推,时间复杂度O(n),空间复杂度O(n)。 class Solution { public:vector<int> countBits(int n) {vector<int> ans(n 1);ans[0] 0;//ans[1] 1;for(int i 1; i < n; i){if(i & 1){ans[i] ans[i/2] 1;}else…...
CentOS7安装conda
root用户登录虚拟机后更新yum yum update 下载Miniconda,路径就在/root下 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh conda分为Miniconda和Anaconda, Miniconda是Conda的轻量级版本,只包含conda和Python…...
[Linux]从零开始的vs code交叉调试arm Linux程序教程
一、前言 最近的项目中需要集成rknn的视觉识别,在这之前我并且没有将rknn集成到自己项目的经验。这里我需要在rknn原本demo的基础上我还需要集成自己的业务代码。但是又有一个问题,原本rknn我们都是使用交叉编译编译到开发板上的,并且我们还要…...
【顶刊级科研绘图】AI支持下Nature级数据可视化(如何画图、如何标注、如何改图、如何美化、如何组合、如何排序)
技术点目录 第一章、绘图原则与概念:规范清晰简洁自明第二章、DeepSeek、ChatGPT、R绘图系统:八仙过海各显神通第三章、美学设计与细节:完美图表华丽呈现第四章、数据类型与图表:宝典在手各个击破第五章、统计分析与可视化&#x…...
CSRF跨站请求伪造——入门篇【DVWA靶场low级别writeup】
CSRF跨站请求伪造——入门篇 0. 前言1. 什么是CSRF2. 一次完整的CSRF攻击 0. 前言 本文将带你实现一次完整的CSRF攻击,内容较为基础。需要你掌握的基础知识有: 了解cookie;已经安装了DVWA的靶场环境(本地的或云的)&am…...
Spring Boot应用中实现Jar包热更新的实践指南
Spring Boot应用中实现Jar包热更新的实践指南 一、引言 在现代软件开发中,快速迭代和持续交付是至关重要的。对于基于Spring Boot的应用程序,一旦部署到生产环境,传统的更新方式通常是重新打包并重启应用,这不仅耗时,…...
JVM深入原理(七)(一):运行时数据区
目录 7. JVM运行时数据区 7.1. 运行时数据区-总览 7.2. 运行时数据区-查看内存对象 7.3. 运行时数据区-程序计数器 7.3.1. 程序计数器-作用 7.3.2. 字节码指令执行流程 7.4. 运行时数据区-Java虚拟机栈 7.4.1. 栈-概述 7.4.2. 栈帧-组成 7.4.2.1. 栈帧-帧数据 7.4.2…...
约瑟夫环的四种(数组,链表,递归,迭代)解决方案,与空间、时间复杂度分析
以下方法均没有考虑结果集的空间与时间复杂度 1.数组解法 实现代码(未优化) class Main {public static void main(String[] args){Scanner read new Scanner(System.in);int n read.nextInt();int m read.nextInt();int[] people new int[n]; //…...
skynet.start 的作用详细解析
目录 skynet.start 的作用详细解析1. 功能概述2. 基本用法3. 关键作用(1) 注册消息处理函数(2) 启动事件循环(3) 服务生命周期管理 4. 与其他函数的协作5. 未调用 skynet.start 的后果6. 高级场景:何时不需要 skynet.start7. 总结 skynet.start 的作用详细解析 在 …...