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

【Windows本地部署n8n工作流自动平台结合内网穿透远程在线访问】

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 前言
    • 1.安装 Docker
    • 2. 本地部署 n8n
    • 3. 简单使用演示
      • 3.1 激活 license key
      • 3.2 创建 AI 工作流
      • 3.3 安装 MCP 节点
      • 3.4 添加 MCP 服务
    • 4. 安装内网穿透工具
    • 5. 配置固定公网地址
    • 总结

前言

本文主要介绍如何在 Windows 系统使用 Docker 部署 n8n 工作流自动平台,并添加 MCP 服务实现自动化 AI 处理任务,结合 cpolar 内网穿透工具还能轻松实现随时随地远程在线访问与使用,无需公网 IP 也不用准备云服务器那么麻烦。

n8n 是一个开源的低代码自动化工作流平台,它拥有 400 多个集成和 900 多个可以立即使用的模版,允许用户通过可视化界面连接不同的应用程序和服务,方便我们构建强大的任务自动化流程。

n8n 通过画布的方式,构建自动化工作流,可以有效减少重复性手动操作,提高工作效率。最重要它支持本地部署,保证我们数据安全。官方提供了两种方式本地部署 n8n,本例中使用 docker 方式进行部署,下面就来具体演示一下操作流程。

n8n.io - Screenshot

1.安装 Docker

首先访问Docker 官网下载地址,下载 X86_64 版本的 Docker Desktop for Windows:

image-20250415143525515

其他操作系统下载与安装 Docker 可以查看这篇文章:Linux、Windows、MacOS 安装 Docker

可选: 如果想自己指定安装目录,可以打开 cmd 等终端工具使用命令行的方式 :

参数 –installation-dir=D:\Docker 可以指定安装位置:

start /w "" "Docker Desktop Installer.exe" install --installation-dir=D:\Docker

然后,在任务栏搜索功能,勾选适用于Linux的Windows子系统虚拟机平台

image-20250415145553963

管理员权限打开命令提示符(cmd),安装 wsl2:

wsl --set-default-version 2
wsl --update --web-download

等待 wsl 安装成功:

image.png

如因网络问题无法拉取 docker 镜像可按下方步骤操作配置镜像源:

Setting->Docker Engine->添加上换源的那一段,如下图:

"registry-mirrors":["https://hub.rat.dev","https://docker.1panel.live"],

image-20250415150207511

点击应用并保存后,重新打开 docker desktop 后,左下角显示 engine running 即可正常使用 Docker。

image-20250415151708855

2. 本地部署 n8n

在 n8n 的 github 主页:https://github.com/n8n-io/n8n 我们可以看到 docker 拉取并运行 n8n 容器的命令:

image-20250415152020714

打开 cmd 终端,执行命令即可:

docker volume create n8n_data
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

image-20250415152136269

n8n 容器启动后,在浏览器中输入 http://localhost:5678

image-20250415153534746

在 docker desktop 中也能看到容器信息:

image-20250415161418350

访问后如果显示 n8n 注册账号页面,则说明安装成功:

image-20250415153502639

3. 简单使用演示

3.1 激活 license key

填写注册信息后,点击 next 下一步:

image-20250415162720309

再简单填写一下调查问题点击 get started 继续:

image-20250415162938041

点击获取免费的 license key 到邮箱:

image-20250415163155280

最后进入邮箱,点击激活 license key 即可。

3.2 创建 AI 工作流

在 n8n 的主界面,我们首先点击右侧的使用现成的 AI Agent 模版进行创建即可:

image-20250415170756218

打开后,我们能看到提供了一个基础的工作流模版,我下面进行一下简单的修改,以便调用本地大模型进行工作:

image-20250415170924181

这个工作流的流程是接受到聊天信息后传导至后边的 AI Agent 模块,然后调用聊天大模型,这里的示例使用的是 OpenAI 的模型,我在本地已经安装了 Ollama 来调用大模型,所以先将这个删除:

image-20250415171239703

删除之后,点击加号,在右侧的语言模型栏中能看到 ollama chat model,选择即可:

image-20250415171452819

在跳转的配置界面中,点击创建新凭证:

image-20250415171718872

然后输入你的 ollama 安装设备的 IP 地址,左上方的名字也可以自定义修改:

image-20250415172024022

看到连接测试成功的提示,即配置成功:

image-20250415172104229

PS:为了成功远程调用本地安装的 Ollama,我们需要提前进行一下环境变量设置:

setx OLLAMA_HOST "0.0.0.0"
setx OLLAMA_ORIGINS "*"

然后重启一下 ollama 服务即可

然后,选择一下要通过 ollama 调用本地哪个大模型:(支持函数调用的模型)

image-20250415172300587

然后点击返回即可:

image-20250415172356434

现在可以在 n8n 主界面看到模型已经修改为了 ollama chat model:

image-20250415172459485

memory 部分默认保留,tool 暂时不用管,稍后添加:

image-20250415172803681

我们先用这个简单的工作流来测试一下:

image-20250415173713919

运行结束后,可以看到工作流的每个节点都显示绿色的对号表示没有出错:

image-20250415173910150

底部左侧能看到聊天交互中的提问与回答,在右边的日志面板中点击模型也能查看聊天记录:

image-20250415174329336

3.3 安装 MCP 节点

接下来,我们可以在 n8n 中添加 MCP 节点来实现在工作流中支持 MCP 服务。

点击个人账号–设置:

image-20250416113516917

点击社区节点后安装一个社区节点:

image-20250416113649776

输入节点名称:n8n-nodes-mcp 勾选下面选项,点击安装:

image-20250416113751735

安装完成后,需要重启一下 n8n 服务,我们现在就能在 n8n 工作流中中集成 mcp 服务了:

image-20250416113909889

3.4 添加 MCP 服务

回到首页,点击刚才创建的工作流:

image-20250416114018235

点击添加 tool:

image-20250416134720340

输入 mcp,选择下面描述为 Use MCP client 的 MCP Client Tool:

image-20250416144257174

选择后,在弹出的页面首先点击新建进行 mcp 服务的设置:

image-20250416144720221

这里我们创建一个 Tavily MCP Server 进行演示,这是一款开源项目,AI 助手可以方便地利用 Tavily 提供的搜索和提取工具,获得实时网络搜索和数据提取能力,快速获取和解析网络上的信息资源。

Tavily MCP Server 的 github 主页:https://github.com/tavily-ai/tavily-mcp

在添加 Tavily MCP Server 到 n8n 工作流中之前,我们需要先获得它的安装参数与 API Key,都可以在它的 github 主页获得。

image-20250416152507006

image-20250416152909177

将上边的参数添加到新建的 MCP 服务配置中:

image-20250416152812595

这里的环境变量需要添加的是 TAVILY_API_KEY:

image-20250416153001929

三项都填好后,保存即可:

image-20250416153059671

然后在跳转的页面给这个 mcp 服务重新命名一下方便识别,大家可以自定义:

image-20250416153357787

修改完点击返回,可以看到已经在 tool 中添加了一个 Tavily Mcp 服务:

image-20250416153637795

然后在 AI Agent 中进行一下设置修改:

将 source for prompt 选项修改为 define below,然后下面的 prompt 修改为:{{"Choose proper tool for user input:"+$json.chatInput }} 即根据用户的输入选择工具

image-20250416170524697

现在我们在聊天框中向它提个问题,可以看到每个节点都正常执行工作流,并给出了答案:

image-20250416155434744

到这里就成功在本地部署了 n8n 工作流平台并学习了如何调用本地大模型与添加 mcp 服务,之后你可以根据自己的需求添加其他的 mcp 服务来打造自己的全自动 AI 助手啦。

4. 安装内网穿透工具

但如果想实现不在同一网络环境下,也能随时随地在线使用 n8n 平台在网页中让 AI 助手执行任务,那就需要借助 cpolar 内网穿透工具来实现公网访问了!接下来介绍一下如何安装 cpolar 内网穿透,过程同样非常简单:

首先进入 cpolar 官网:

cpolar 官网地址: https://www.cpolar.com

点击免费使用注册一个账号,并下载最新版本的 cpolar:

image-20250307152003085

登录成功后,点击下载 cpolar 到本地并安装(一路默认安装即可)本教程选择下载 Windows 版本。

image-20240319175308664

cpolar 安装成功后,在浏览器上访问 http://localhost:9200,使用 cpolar 账号登录,登录后即可看到配置界面,结下来在 WebUI 管理界面配置即可。

img

接下来配置一下 n8n Web UI 页面的公网地址:

登录后,点击左侧仪表盘的隧道管理——创建隧道,

  • 隧道名称:n8n(可自定义命名,注意不要与已有的隧道名称重复)
  • 协议:选择 http
  • 本地地址:5678
  • 域名类型:选择随机域名
  • 地区:选择 China Top

image-20250416160452787

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式。

image-20250416160544243

使用上面的任意一个公网地址,在电脑或手机平板任意设备的浏览器进行登录访问,即可成功看到 n8n 的 WebUI 界面,这样一个公网地址且可以远程访问就创建好了,使用了 cpolar 的公网域名,无需自己购买云服务器,即可随时随地在网页中远程使用本地部署的 AI 工作流平台了!

image-20250416161124231

小结

为了方便演示,我们在上边的操作过程中使用 cpolar 生成的 HTTP 公网地址隧道,其公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在 24 小时内会发生随机变化,更适合于临时使用。

如果有长期远程访问本地部署的 n8n 通过 WebUI 在线使用工作流平台,或者异地访问与使用其他本地部署的服务的需求,但又不想每天重新配置公网地址,还想让公网地址好看又好记并体验更多功能与更快的带宽,那我推荐大家选择使用固定的二级子域名方式来配置一个公网地址。

5. 配置固定公网地址

接下来演示如何为其配置固定的 HTTP 公网地址,该地址不会变化,方便分享给别人长期查看你部署的项目,而无需每天重复修改服务器地址。

配置固定 http 端口地址需要将 cpolar 升级到专业版套餐或以上。

登录 cpolar 官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留:

image-20250416164326303

保留成功后复制保留成功的二级子域名的名称:myn8n,大家也可以设置自己喜欢的名称。

image-20250416164413871

返回 Cpolar web UI 管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道:n8n,点击右侧的编辑:

image-20250416164521911

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名:myn8n

点击更新(注意,点击一次更新即可,不需要重复提交)

image-20250416164555556

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名:

image-20250416164626769

最后,我们使用上边任意一个固定的公网地址访问,可以看到访问成功,这样一个固定且永久不变的公网地址就设置好了,可以随时随地在公网环境异地在线访问本地部署的 Open WebUI 来使用 QWQ32B 大模型了!

image-20250416164709795

image-20250416164821162

总结

通过以上步骤,我们实现了在 Windows 系统电脑本地安装 n8n 工作流平台,并结合 cpolar 内网穿透工具轻松实现在公网环境中使用浏览器远程访问,并为其配置固定不变的二级子域名公网地址的全部流程,经过简单测试,这款工作流平台确实效果很惊艳,非常期待它后续的发展,也感谢您的观看,有任何问题欢迎留言交流。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

相关文章:

【Windows本地部署n8n工作流自动平台结合内网穿透远程在线访问】

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Python中如何加密/解密敏感信息(如用户密码、token)

敏感信息,如用户密码、API密钥、访问令牌(token)、信用卡号以及其他个人身份信息(PII),构成了现代应用程序和系统中最为关键的部分。这些信息一旦被未经授权的第三方获取,可能引发灾难性的后果,从个人隐私泄露到企业经济损失,甚至是大规模的社会安全问题。保护这些敏感…...

Win10如何一键切换IP地址教程

切换IP地址可能对于许多用户来说是一个相对陌生但又可能经常需要进行的操作。无论是出于网络安全、突破网络限制还是仅仅为了测试目的,一键切换IP地址都能带来极大的便利。以下是在 Windows 10 中通过批处理脚本实现一键切换 IP 地址的详细教程: 方法一&…...

2021-11-09 C++三位数平方含有该数

缘由求解&#xff0c;运算函数&#xff0c;哪位大神教一下-编程语言-CSDN问答 void 三位数平方含有该数() {//缘由https://ask.csdn.net/questions/7560152?spm1005.2025.3001.5141int a 100, aa 1000, f 0;while (a < aa){f a*a;while (f > a)if ((f - a) % aa)f …...

高效检测书签网址,告别无效链接烦恼

软件介绍 你是否有过面对浏览器中满满的书签&#xff0c;却不知道哪些网址还“健在”&#xff0c;哪些已经“跑路”的烦恼&#xff1f;别担心&#xff0c;今天就给大家介绍一款神奇的小工具——“网址小卫士”。 检测轻松搞定 还在一个个手动检查书签网址的有效性吗&#xf…...

SpringBoot高校学生评教系统设计实现

概述 基于SpringBoot的高校学生评教系统项目&#xff0c;该系统包含了学生评教、教师管理等功能&#xff0c;适合作为JavaWeb学习项目。 主要内容 1. 学生功能模块 查看评教信息&#xff1a;可以查看学期、院系、任课教师、课程名称等信息评价打分功能&#xff1a;可以对课…...

代码随想录算法训练营第二十天

LeetCode题目: 39. 组合总和40. 组合总和 II131. 分割回文串2176. 统计数组中相等且可以被整除的数对(每日一题) 其他: 今日总结 往期打卡 39. 组合总和 跳转: 39. 组合总和 学习: 代码随想录公开讲解 问题: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 targ…...

C++入门基础:命名空间,缺省参数,函数重载,输入输出

命名空间&#xff1a; C语言是基于C语言的&#xff0c;融入了面向对象编程思想&#xff0c;有了很多有用的库&#xff0c;所以接下来我们将学习C如何优化C语言的不足的。 在C/C语言实践中&#xff0c;在全局作用域中变量&#xff0c;函数&#xff0c;类会有很多&#xff0c;这…...

GPU怎么绑定到服务器上

确认服务器与 GPU 兼容性1&#xff1a;不同的服务器和 GPU 型号连接方式有所不同&#xff0c;要确保所选的 GPU 卡与服务器兼容。可通过服务器和 GPU 的产品文档&#xff0c;或使用服务器厂商提供的兼容性查询工具进行确认。安装前准备&#xff1a;关闭服务器电源&#xff0c;并…...

opencv函数展示2

一、像素操作与算术运算 1.cv2.split() 2. cv2.merge() 3.cv2.add() 4.cv2.bitwise_and() 5.cv2.bitwise_or() 6.cv2.inRange() 二、仿射变换 1.cv2.getRotationMatrix2D() 2.cv2.warpAffine() 3.cv2.flip() 4.cv2.resize() 三、透视变换 1.cv2.getPerspectiveTransform() 2…...

零基础上手Python数据分析 (16):DataFrame 常用统计分析方法

写在前面 —— 超越简单排序,探索数据内在规律,掌握Pandas统计分析基础 上一篇博客,我们学习了如何使用 Pandas 对 DataFrame 进行排序和排名,这使得我们能够更好地组织数据并快速定位关键信息。 然而,仅仅对数据进行排序和排名,还不足以完全理解数据。 要想更深入地解…...

文件系统 软硬连接

&#x1f33b;个人主页&#xff1a;路飞雪吖~ &#x1f320;专栏&#xff1a;Linux 目录 一、理解文件系统 &#x1f320;磁盘结构 二、软硬连接 &#x1f31f;软硬链接 &#x1f320;软链接&#xff1a; &#x1f320;硬链接&#xff1a; &#x1f31f;理解软硬链接的应…...

Linux环境基础开发工具使用

本节目标&#xff1a; 1. 学习yum工具&#xff0c;进行软件安装 2. 掌握vim编辑器使用&#xff0c;学会vim的简单配置 3. 掌握gcc/g编译器的使用&#xff0c;并了解其过程&#xff0c;原理 4. 掌握简单gdb使用于调试 5. 掌握简单的Makefile编写&#xff0c;了解其运行思想…...

秘密任务 2.0:如何利用 WebSockets + DTOs 设计实时操作

在之前的文章中&#xff0c;我们探讨了为什么 DTO 是提升 API 效率和安全性的秘密武器。现在&#xff0c;我们进入了一个全新的场景——我们将深入探讨如何通过 WebSockets DTOs 实现实时操作&#xff01; Agent X 正在进行一项高风险的卧底任务。突然&#xff0c;总部更新了…...

LeetCode hot 100—括号生成

题目 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["((()))","(()())","(())()","()(())",&…...

2025.04.17【Dendrogram】生信数据可视化:Dendrogram图表详解

Dendrogram customization Go further with ggraph: edge style, general layout, node features, adding labels, and more. Customized circular dendrogram Learn how to build a circular dendrogram with proper labels. 文章目录 Dendrogram customizationCustomized c…...

SDL基础

SDL SDL&#xff08;Simple DirectMedia Layer&#xff09;是一个开源的跨平台多媒体开发库&#xff0c;主要用于开发需要图形、音频和输入设备支持的应用程序。它使用C语言编写&#xff0c;提供了简单易用的API&#xff0c;**能够帮助开发者快速实现跨平台的多媒体功能。**SD…...

硬件工程师面试常见问题(2)

第六问&#xff1a;你知道那些常用逻辑电平?TTL与COMS电平可以直接互连吗? 逻辑电平&#xff1a;是数字电路中用于表示二进制逻辑状态&#xff08;0 和 1&#xff09;的电压或电流信号范围&#xff0c;是数字系统中器件间信号传输的统一标准。 注&#xff1a;逻辑电…...

Python自学第2天:条件语句,循环语句

条件语句 1.条件判断 score 60 if score > 90:print("优秀") elif score > 60:print("及格") else:print("不及格") 注意&#xff1a; 1、每个条件后面要使用冒号 :&#xff0c;表示接下来是满足条件后要执行的语句块。2、使用缩进来划…...

2025年4月16日华为笔试第一题100分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 01. 博物馆展览规划 问题描述 卢小姐是一家著名博物馆的策展人,她需要从众多展品中选择一些组成新的展览。每件展品可以展示不同的历史文化主题,而博物馆希望通过最少的展品数量覆…...

智能体开发的范式革命:Cangjie Magic全景解读与实践思考

引言&#xff1a;当智能体开发遇见仓颉魔法 在人工智能技术日新月异的今天&#xff0c;智能体(Agent)开发正从实验室走向产业应用的核心舞台。2025年3月&#xff0c;仓颉社区推出的Cangjie Magic开源平台&#xff0c;以其创新的设计理念和技术架构&#xff0c;为这一领域带来了…...

LeetCode hot 100—单词搜索

题目 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是那些水平相邻或…...

基于flask+vue框架的灯饰安装维修系统u49cf(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,工单人员,服务项目,订单记录,服务记录,评价记录 开题报告内容 基于 FlaskVue 框架的灯饰安装维修系统开题报告 一、选题背景与意义 &#xff08;一&#xff09;选题背景 随着城市化进程的加速与居民生活品质的显著提升&#xf…...

C/C++指针

为什么要使用指针 函数的值传递&#xff0c;无法通过调用函数&#xff0c;来修改函数的实参&#xff1b;被调用函数需要提供更多的“返回值”给调用函数&#xff1b;减少值传递时带来的额外开销&#xff0c;提高代码执行效率 指针定义&#xff1a;指针是什么 int age18; /* …...

Unity编辑器扩展之项目资源查找工具

一、需要实现的效果如下: 二、在项目的Asset目录下新增Editor目录,新增AssetSearchWindow和EditorDefine和EditorTools这三个C#脚本,并复制以下的代码保存好之后,就可以实现上述功能啦。 -------------------------------------------EditorTools脚本Begin----------------…...

什么是分布式锁?

分布式锁是一种在分布式系统中控制资源共享的机制。 一、背景和作用 在单机环境下&#xff0c;当多个线程同时访问共享资源时&#xff0c;可以通过线程锁&#xff08;如 Java 中的 synchronized 关键字、ReentrantLock 等&#xff09;来保证操作的原子性、可见性和有序性&#…...

ESP32- 开发笔记- 硬件设计-ESP32-C3 天线设计-利用嘉立创EDA来设计

这个硬件设计&#xff0c;只是一个随手记录文档。如果中间有什么问题&#xff0c;欢迎大家提出来。 1 板载天线 1.1 背景介绍 PCB&#xff08;Printed Circuit Board&#xff09;板载天线是现代电子设备中用于无线通信的一种关键组件&#xff0c;它直接集成在电路板上&#…...

setTimeoutsetIntervalrequestAnimationFrame

requestAnimationFrame 详解及与 setTimeout/setInterval 的比较 requestAnimationFrame&#xff08;简称 rAF&#xff09;是浏览器提供的专门用于 动画渲染 的 API&#xff0c;相比 setTimeout 和 setInterval&#xff0c;它在性能和流畅度上有显著优势。以下是详细解析和对比…...

Python内置函数---anext()

用于异步迭代器的核心工具&#xff0c;专为处理异步数据流设计。 1. 基本语法 await anext(async_iterator, default) 参数&#xff1a; async_iterator &#xff1a;实现了异步迭代协议的对象&#xff08;如异步生成器、异步迭代器类&#xff09;。 default &#xff08;可选…...

JavaEE——线程安全

目录 前言1.线程安全的定义2.线程安全问题产生的原因2.1 多个线程修改一个变量2.2 修改操作不是原子的2.3 内存可见性引起的线程安全问题 3.解决线程安全问题的方法3.1 通过synchronized关键字加锁3.2 使用volatile关键字 总结 前言 在使用多线程的时候&#xff0c;难免会出现…...

MongoServerError: Authentication failed.处理办法

1停止MongoDB服务&#xff1a; systemctl stop mongod2临时修改MongoDB配置&#xff0c;禁用认证&#xff1a; vim /etc/mongdb.config 在配置文件中找到 security:authorization: disabled # 临时关闭认证3.重启MongoDB服务 # 重启MongoDB服务 sudo systemctl restart mon…...

IOS微信小程序无法显示背景图片

最近线上突然出现了一个问题&#xff0c;就是原来的在线上的小程序无法显示背景图片。而且这个问题只有在IOS上才有。在安卓上是正常的。 然后这里和前端沟通说是&#xff0c;看能不能用苹果手机真机调试。果然也成功复现出来了&#xff0c;部分图片无法显示。 然后在网上找了…...

实验五 8255和LED数码管显示实验

一、实验目的 1&#xff0e;掌握并行接口8255A的工作原理及使用方法。 2&#xff0e;了解七段数码管显示数字的原理。 3&#xff0e;掌握多位数码显示的接口技术。 二、实验电路 三、实验内容 1&#xff0e;静态显示&#xff1a;按图3连接好电路&#xff0…...

秒杀系统解决两个核心问题的思路方法总结:1.库存超卖问题;2.用户重复抢购问题。

秒杀系统解决两个核心问题 秒杀系统解决两个核心问题&#xff1a;一、解决库存超卖的核心逻辑&#xff1a;解释&#xff1a;原子性保证&#xff1a; 二、如何避免重复抢购&#xff1a;使用 Redis 做唯一标识判断优点&#xff1a; 三、流程完整梳理&#xff1a;四、通过数据库建…...

大数吞小数

A-春_牛客练习赛134 double 的有效数字约 15-17 位十进制&#xff0c;因此&#xff1a; 如果两个数的数量级相差超过 15-16 个数量级&#xff0c;较小的数会被吞掉。...

1-9 堆宝塔

堆宝塔游戏是让小朋友根据抓到的彩虹圈的直径大小&#xff0c;按照从大到小的顺序堆起宝塔。但彩虹圈不一定是按照直径的大小顺序抓到的。聪明宝宝采取的策略如下&#xff1a; 首先准备两根柱子&#xff0c;一根 A 柱串宝塔&#xff0c;一根 B 柱用于临时叠放。把第 1 块彩虹圈…...

Java虚拟机(JVM)平台无关?相关?

计算机的概念模型 计算机实际上就是实现了一个图灵机模型。即&#xff0c;输入参数&#xff0c;根据程序计算&#xff0c;输出结果。图灵机模型如图。 Tape是输入数据&#xff0c;Program是针对这些数据进行计算的程序&#xff0c;中间横着的方块表示的是机器的状态。 目前使…...

第七章--查找

查找表 定义 由同一类型的数据元素(或记录)构成的集合。 1&#xff09;特点&#xff1a;数据元素的类型相同&#xff1b;结构松散→先后次序无关紧要&#xff0c;只关心是否在集合内。 2&#xff09;常用操作&#xff1a;查询某个“特定的”数据元素是否在查找表中&#xf…...

photo-sphere-viewer 4.8.1在vue中使用

photo-sphere-viewer 加载单张平面图 import { Viewer } from photo-sphere-viewerthis.viewer new Viewer({panorama: ‘完整的url,也可以是一个base64’,// Containercontainer: document.getElementById(viewer1),navbar: true,// Resize the panoramasize: {width: 100%,…...

vue MarkdownIt标签多出了<p>标签导致高度变丑

​ 效果如下&#xff1a; ​ [点击并拖拽以移动] ​ F12观察后发现多了 标签包裹&#xff0c;所以要解决 标签。 在 markdown-it 中禁用自动包裹 <p> 标签的方法 要让 markdown-it 渲染的 Markdown 内容不自动包裹 <p> 标签&#xff0c;你可以使用以下两种方…...

《Java 并发编程实践》阅读笔记(一):线程重要性

文章目录 一. 并发历史二. 线程优势三. 线程带来的风险1. 安全性问题2. 活跃性问题3. 性能问题 四. 线程无处不在示例1: Timer示例2: 远程方法调用(Remote Method Invocation, RMI)示例3: GUI 程序 一. 并发历史 操作系统的出现 大型机时代, 没有操作系统, 一台主机只能执行一…...

算法思想之分治-归并

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;算法思想之分治-归并 发布时间&#xff1a;2025.4.17 隶属专栏&#xff1a;算法 目录 算法介绍核心思想与步骤时空复杂度分析C代码实现关键特性与优化 例题排序数组题目链接题目描述算法思路代码实现 交易逆序对的总…...

Vue基础(5)_事件修饰符

事件修饰符 Vue中的事件修饰符&#xff1a; 1、prevent&#xff1a;阻止默认事件(常用)。 2、stop&#xff1a;阻止事件冒泡(常用)。 3、once&#xff1a;事件只触发一次(常用)。 4、capture&#xff1a;使用事件的捕获模式。 5、self&#xff1a;只有event.target是当前操作的…...

网络编程 - 1

目录 为什么需要网络编程&#xff1f; —— 丰富的网络资源 什么是网络编程 网络编程中的基本概念 发送端和接收端 请求和相应 客户端和服务端 常见的客户端服务端模型 Socket 套接字 概念 分类 解释 有连接 / 无连接 可靠传输 / 不可靠传输 面向字节流 / 面向数…...

github | 仓库权限管理 | 开权限

省流版总结&#xff1a; github 给别人开权限&#xff1a;仓库 -> Setting -> Cllaborate -> Add people GitHub中 将公开仓库改为私有&#xff1a;仓库 -> Setting -> Danger Zone&#xff08;危险区&#xff09; ->Change repository visibility( 更改仓…...

【系统搭建】DPDK关键概念与l2fwd源码解析

DPDK&#xff08;Data Plane Development Kit&#xff09;是一套用于高性能网络数据面处理的开发框架&#xff0c;其核心设计在于绕过内核协议栈&#xff0c;它提供了一个用户空间下的高效数据包处理库函数&#xff0c;可以用于快速开发高性能的网络应用程序&#xff0c;如网络…...

【Qt】初识Qt(一)

目录 一、Qt的背景二、认识Qt项目 一、Qt的背景 关于客户端开发&#xff1a; 客户端开发的重要任务&#xff0c;是编写和用户交互的界面&#xff0c;和用户交互的界面有两种风格&#xff1a; TUI&#xff1a;命令行界面&#xff0c;也叫终端界面GUI&#xff1a;图形化界面 Q…...

Django REST framework 并结合 `mixin` 的示例

下面为你提供一个使用 Django REST framework 并结合 mixin 的示例,该示例将实现一个简单的图书管理 API。 项目需求 我们要创建一个图书管理系统的 API,支持对图书信息的创建、读取、更新和删除操作。 实现步骤 1. 项目初始化 首先,确保你已经安装了 Django 和 Django…...

《前端性能优化秘籍:打造极致用户体验》

在当下&#xff0c;网站和应用的性能表现直接关乎用户去留。快速加载、流畅交互的页面能让用户沉浸其中&#xff0c;反之&#xff0c;缓慢的响应速度则会让他们毫不犹豫地离开。对于前端开发者而言&#xff0c;性能优化不仅是技术追求&#xff0c;更是提升用户体验、增强产品竞…...

数据结构与算法学习导航

目录 指导思想资料总结代码随想录hello-algoOI-WIKI 一名麻瓜的刷leetcode的简单概述。 在这里对过去的自己说: 如果你相信算法有用你就刷刷leetcode&#xff0c;如果不相信面试会让你相信。 当然&#xff0c;现在我确实认为算法和数据结构有用&#xff0c;leetcode也有用。 …...