用一杯星巴克的钱,训练自己私有化的ChatGPT

news2025/4/5 12:47:11

点击蓝字 关注我们

5f3a6ff9e7614512c94af8fb799e7008.png

文章摘要:用一杯星巴克的钱,自己动手2小时的时间,就可以拥有自己训练的开源大模型,并可以根据不同的训练数据方向加强各种不同的技能,医疗、编程、炒股、恋爱,让你的大模型更“懂”你…..来吧,一起尝试下开源DolphinScheduler加持训练的开源大模型!

导读

让人人都拥有自己的ChatGPT

ChatGPT的诞生无疑让我们为人工智能的未来充满期待,它以其精细的表达和强大的语言理解能力,震撼了全球。但是在使用ChatGPT的时候,因为它是SaaS,所以个人隐私泄露,企业数据安全问题是每一个人、每一个企业都担心的问题。而现在越来越多的开源大模型出现,让个人/企业拥有自己的大模型成为可能,但是,开源大模型上手、优化、使用要求门槛都比较高,很难让大家简单的使用起来。为此,我们借助Apache DolphinScheduler,一键式地支持了开源大模型训练、调优和部署,让大家可以在极低的成本和技术储备下,用自己的数据训练出专属于自己的大模型。当然,开源大模型的功力距离ChatGPT还有距离,但是经过测试我们看到7、8成的功力还是有的,而且这是可以根据你的场景和领域知识特殊训练过的,针对性更强。同时,我们坚信将来随着技术发展,开源大模型的能力会越来越强,让用户体验越来越好。来吧,我们准备开始。

面向人群——每一个屏幕面前的你

我们的目标是,不仅专业的AI工程师,更是任何对GPT有需求和兴趣的人,都能享受到拥有更“懂”自己的模型的乐趣。我们相信,每一个人都有权利和能力去塑造自己的AI助手,而Apache DolphinScheduler可见即所得的工作流程为此提供了可能。顺带介绍下Apache DolphinScheduler,这是一个Star超过1万个的大数据和AI的调度工具,它是Apache软件基金会旗下的顶级项目,这意味着你可以免费使用它,也可以直接修改代码而不用担心任何商业问题

无论你是业界专家,寻求用专属于你的数据来训练模型,还是AI爱好者,想尝试理解并探索深度学习模型的训练,我们下面的这个工作流程都将为你提供便捷的服务。它为你解决了复杂的预处理、模型训练、优化等步骤,只需1-2个小时几个简单的操作,加上20小时的运行时间,就可以构建出更“懂”你的ChatGPT大模型

那么,我们一起开启这个神奇的旅程吧!让我们把AI的未来带到每一个人的手中。

仅用三步,构造出更“懂”你的ChatGPT

  1. 用低成本租用一个拥有3090级别以上的GPU显卡

  2. 启动DolphinScheduler

  3. 在DolphinScheduler页面点击训练工作流和部署工作流,直接体验自己的ChatGPT吧

01

准备一台3090显卡的主机

首先需要一个3090的显卡,如果你自己有台式机可以直接使用,如果没有,网上也有很多租用GPU的主机,这里我们以使用AutoDL为例来申请,打开 https://www.autodl.com/home,注册登录,后可以在算力市场选择对应的服务器,根据屏幕中的1,2,3步骤来申请:

9f858dfe8c4b2614bf4c55b65eb501f6.png

这里,建议选择性价比较高的RTX3090,经过测试支持1-2个人在线使用3090就可以了。如果想训练速度和响应速度更快,可以选择更强的显卡,训练一次大约需要20小时左右,使用测试大概2-3个小时,预算40元就可以搞定了。

镜像

点击社区镜像,然后在下面红框出输入 WhaleOps/dolphinscheduler-llm/dolphinscheduler-llm-0521 之后,即可选择镜像,如下如所示,目前只有V1版本的,后面随着版本更新,有最新可以选择最新

980a60478c1e403a930cb1523a08392f.png

如果需要多次训练模型,建议硬盘扩容一下,建议100G即可。

创建后,等待下图所示的进度条创建完成即可。

565511caffc06579fdba57c218b21299.png

02

启动DolphinScheduler

为了可以在界面上部署调试自己的开源大模型,需要启动DolphinScheduler这个软件,我们要做以下配置工作:

进入服务器

进入服务器的方式有两种,可以按照自己的习惯进行:

1. 通过JupyterLab页面登录(不懂代码的请进)

点击如下JupyterLab按钮

82111ce316f2c71ef065d60bb0a71ce4.png

页面跳转到JupyterLab,后可以点击这里的终端进入

fbd94fe8901f75ef44e5e75f9a0c2e79.png

a1c65e310c9dd3700066f4ece29c908b.png

2. 通过终端登录(懂代码的请进)

我们可以从下图这个按钮获取SSH连接命令

fb559fdb26a9938e5ab26a4adfd35fef.png

并通过终端链接

ffd846f5e5a8b8a69d2151e1b7532e70.png

导入DolphinScheduler的元数据

在DolphinScheduler中,所有的元数据都存储在数据库中,包括工作流的定义,环境配置,租户等信息。为了方便大家在使用时能够启动DolphinScheduler时候就能够看到这些工作流,我们可以直接导入已经做好的工作流定义数据,照屏幕copy进去。

修改导入MySQL的数据的脚本

通过终端如下命令,进入到以下目录

cd apache-dolphinscheduler-3.1.5-bin

敲击命令,vim import_ds_metadata.sh 打开 import_ds_metadata.sh 文件

文件内容如下

#!/bin/bash

# 设置变量
# 主机名
HOST="xxx.xxx.xxx.x"
# 用户名
USERNAME="root"
# 密码
PASSWORD="xxxx"
# 端口
PORT=3306
# 导入到的数据库名
DATABASE="ds315_llm_test"
# SQL 文件名
SQL_FILE="ds315_llm.sql"

mysql -h $HOST -P $PORT -u $USERNAME -p$PASSWORD -e "CREATE DATABASE $DATABASE;"

mysql -h $HOST -P $PORT -u $USERNAME -p$PASSWORD $DATABASE < $SQL_FILE

把 xxx.xxx.xxx.x 和 xxxx 修改成你公网上一个mysql的一个数据库的数据(可以自己在阿里云、腾讯云申请或者自己安装一个),然后执行

bash import_ds_metadata.sh

执行后,如果有兴趣可在数据库中看到相应的元数据(可连接mysql查看,不懂代码的略过)。

5435cfb7caf4e6b6b990b86dbdcc0e5a.png

启动DolphinScheduler

在服务器命令行里,打开下面的文件,修改配置到DolphinScheduler连接刚才的数据库

/root/apache-dolphinscheduler-3.1.5-bin/bin/env/dolphinscheduler_env.sh

修改数据库部分的相关配置,其他部分不用修改,把’HOST’和’PASSWORD’的值改为刚才导入的数据库的相关配置值 xxx.xxx.xxx.x 和 xxxx:

......
export DATABASE=mysql
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://HOST:3306/ds315_llm_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
export SPRING_DATASOURCE_USERNAME="root"
export SPRING_DATASOURCE_PASSWORD="xxxxxx"
......

配置完成后执行(也在这个目录下 /root/apache-dolphinscheduler-3.1.5-bin )

bash ./bin/dolphinscheduler-daemon.sh start standalone-server

执行完成后,我们可以通过 tail -200f standalone-server/logs/dolphinscheduler-standalone.log 查看日志,这时候,DolphinScheduler就正式启动了!

启动服务后,我们可以在AutoDL控制台中点击自定义服务(红框部分)会跳转到一个网址:

8e6b764c8bb52fd1f1d2fedbbd37253b.png

打开网址后发现是404,别着急,我们补充一下url的后缀 /dolphinscheduler/ui 即可

749fd2bc54028b56971aafa213200411.png

AutoDL模块开放一个6006的端口,我们将DolphinScheduler的端口配置成6006之后,可以通过上面的入口进入,但是因为跳转的url补全,所以404,因此我们补全URL即可

登录用户名密码

用户名: admin

密码: dolphinscheduler123

登录后点击 项目管理,即可看到我们预置的项目 vicuna,再次点击 vicuna后,我们即可进入该项目。

a22224c71ef17d90fc3d0b679d2d4bab.png

03

开源大模型训练与部署

工作流定义

进入vicuna项目后,点击工作流定义,我们可以看到三个工作流,Training,Deploy,Kill_Service,下面解释下这几个功能的用途和内部选择大模型和训练你自己的数据的配置:

1ee2745826f3e21793797894c0598767.png

我们可以点击下面的运行按钮运行对应的工作流

5655b339cffcb899d852f1de92558543.png

Training

点击后可以看到工作流的定义,包含两个,一个是通过lora finetune模型(主要使用alpaca-lora, https://github.com/tloen/alpaca-lora),一个是将训练出来的模型与基础模型进行合并,得到最终的模型。

具体的任务定义,可以双击对应的图标查看。

4e3406d34465681802f385d13af30299.png

该工作流具有以下参数(点击运行后弹出)

  • base_model: 基础模型,根据个人情况选择自行下载,注意开源大模型仅为学习和体验用途,目前默认为 TheBloke/vicuna-7B-1.1-HF

  • data_path: 你要训练的个性化数据和领域数据的路径,默认为 /root/demo-data/llama_data.json

  • lora_path: 训练出来的lora权重的保持路径 /root/autodl-tmp/vicuna-7b-lora-weight

  • output_path: 将基础模型和lora权重合并之后,最终模型的保存路径,记下来部署的时候需要用到

  • num_epochs: 训练参数,训练的轮次,可以设为1用于测试,一般设为3~10即可

  • cutoff_len: 文本最大长度,默认1024

  • micro_batch_size: batch_size

f2ffaf5990741cfc84ed0ad935389b6c.png

Deploy

部署大模型的工作流(主要使用FastChat,https://github.com/lm-sys/FastChat),会先引用kill_service杀死已经部署的模型,在依次启动 controller,然后添加模型,然后打开gradio网页服务。

d8cdadba5d1379d0715396eb684b5075.png

启动参数如下

b6022a1069a18d5b918473a7d989c3ea.png

  • model: 模型路径,可以为huggingface的模型id,也可以为我们训练出来的模型地址,即上面training工作流的output_path。默认为TheBloke/vicuna-7B-1.1-HF 使用默认,将直接部署vicuna-7b的模型

Kill_service

这个工作流用于杀死已经部署的模型,释放显存,这个工作流没有参数,直接运行即可。

如果一些情况下,我们要停掉正在部署的服务(如要重新训练模型,显存不够时)我们可以直接执行kill_service工作流,杀死正在部署的服务。

看过经过几个实例,你的部署就完成了,下面我们实操一下:

大模型操作实例演示

1. 训练大模型

启动工作流

可以直接执行training的工作流,选择默认参数即可

启动后,可以点击下图红框部分工作流实例,然后点击对应的工作流实例查看任务执行情况

91317836c119b4abcdb8b41d8873d22c.png

右键对应的任务,可以查看对应的日志,如下

2a4755d1b62b96b9592b9742a3b03b54.png

也可以在左边栏最下面的任务实例栏中,查看对应的任务状态和日志等信息

在训练过程中,也可以通过查看日志查看具体训练的进度(包括当前的训练步数,loss指标,剩余时间等),有个进度条一直显示目前在第几个step,step = 数据量 * epoch / batchsize

8494279d5a3a01068f12ff72c3a39f9a.png

训练完成后日志如下

8bd0ebce087a526f3bd376713153aece.png

e433942b857f07cf7c8458645fc6889e.png

更新自己个性化训练数据

我们默认的数据是在  /root/demo-data/llama_data.json ,当前数据来源于下面华佗,一个使用中文医学数据finetune的医学模型,对,我们样例是训练一个家庭医生出来:

b485ee579c6bc3c899067d5e7ad0ed33.png

如果自己有特定领域的数据,可以指向自己的数据,数据格式如下

一行一个json,字段含义为

  • instruction ****: 指令,为给模型指令

  • input : 输入

  • output : 期望模型的输出

如以下

{"instruction": "计算算数题", "input": "1+1等于几", "output": "2"}

温馨提示,可以将 instruction 和 input 合并为 instruction , input为空也可以。

按照格式制作数据,训练时修改data_path 参数执行自己的数据即可。

注意事项

第一次执行训练,会从你指定的位置拉取基础模型,例如TheBloke/vicuna-7B-1.1-HF ,会有下载的过程,稍等下载完成即可,这个模型下载是由用户指定的,你也可以任选下载其他的开源大模型(注意使用时遵守开源大模型的相关协议)。

因为网络问题,第一次执行Training的时候,有可能会下载基础模型到一半失败,这个时候可以点击重跑失败任务,即可重新继续训练,操作如下所示

7772b8108a9bb4c625f542285d5a35f4.png

如果要停止训练,可以点击停止按钮停止训练,会释放训练占用的显卡显存

3f111de46f0131b1522a048b4c3ab39e.png

部署工作流

在工作流定义页面,点击运行deploy工作流,如下如所示即可部署模型

cb7ec94a7d67f989ffd69171656bbc7a.png

如果自己没有训练出来的模型的话,也可以执行默认参数 TheBloke/vicuna-7B-1.1-HF,部署vicuna-7b的模型,如下图所示:

a4c421f3dc8e0603e208df5a0cd6e55d.png

如果在上一步我们进行了模型训练,我们可以部署我们的模型了,部署之后就可以体验我们自己的大模型了,启动参数如下,填入上一步的模型的output_path即可

741a3da23342898ca68504b4b92d7c3b.png

下面我们进入部署的工作流实例,如下图所示,先点击工作流实例,然后点击deploy前缀的工作流实例即可

d9960bce570d4cd94548ae8124532478.png

右键点击refresh_gradio_web_service后可以查看任务日志,找到我们大模型链接的位置,操作如下

7a8a654887d2dcae5636072d4e4dc3b5.png

在日志的最后,我们可以看到一个链接,可以公网访问,如下

5ffc93dbf433ac2442921adb25468a79.png

这里有两个链接,一个是0.0.0.0:7860 因为AutoDL只开放了6006端口,并且已经用于dolphinscheduler,所以我们暂时无法访问该接口,我们可以直接访问下面的链接

[https://81c9f6ce11eb3c37a4.gradio.live](https://81c9f6ce11eb3c37a4.gradio.live) 这个链接每次部署都会不一样,因此需要从日志找重新找链接。

进入后,即可看到我们的对话页面

aaf9a3deb7aa31d783545d752fbfb245.png

6859d0d13c81578e771d4af8f5d70ef2.png

对!就这样你就拥有了你自己的ChatGPT了!而且它的数据仅服务于你自己!而且!你只花了不到一杯咖啡的钱哦~~

体验一下,你自己的私有化ChatGPT吧!

04

总结

在这个以数据和技术驱动的世界中,拥有一个专属的ChatGPT模型具有无法估量的价值。随着人工智能和深度学习的日益发展,我们正处在一个可塑造个性化AI助手的时代。而训练和部署属于自己的ChatGPT模型,可以帮助我们更好地理解AI,以及它如何改变我们的世界。

总的来说,自训练和部署ChatGPT模型可以帮助你更好地保护数据安全和隐私、满足特定的业务需求、节约技术成本,同时通过工作流工具如DolphinScheduler使训练过程自动化,并更好地遵守当地的法律法规。这都使得自训练和部署ChatGPT模型成为一个值得考虑的选择。

附注意事项:

数据安全与隐私

当你使用公共API服务使用ChatGPT时,你可能会对数据的安全性和隐私有所顾虑。这是一个合理的担忧,因为你的数据可能会在网络中被传播。通过自己训练和部署模型,你可以确保你的数据仅在你自己的设备或你租用的服务器上存储和处理,保障数据安全与隐私。

特定领域知识

对于具有特定业务需求的组织或个人来说,通过训练自己的ChatGPT模型,可以确保模型具有与业务相关的最新和最相关的知识。无论你的业务领域是什么,一个专门针对你的业务需求训练的模型都会比通用模型更有价值。

投入成本

使用OpenAI的ChatGPT模型可能会带来一定的费用,同时如果要自己训练和部署模型,也需要投入一定的资源和技术成本,40元就可以体验调试大模型,如果长期运行建议自己采购3090显卡,或者年租云端服务器。因此,你需要根据自己的具体情况,权衡利弊,选择最适合自己的方案。

DolphinScheduler

通过使用Apache DolphinScheduler的工作流,你可以使整个训练过程自动化,大大降低了技术门槛。即使你不具备深厚的算法知识,也可以依靠这样的工具,顺利地训练出自己的模型。支持大模型训练的同时,它也支持大数据调度、机器学习的调度,帮助你和你的企业非技术背景的员工简单上手的做好大数据处理、数据准备、模型训练和模型部署,而且,它是开源且免费的。

开源大模型法律法规约束

DolphinScheduler只是可视化AI工作流,本身不提供任何开源大模型。用户在使用下载开源大模型时,你需要注意自行选择不同的开源大模型使用约束条件,本文中的开源大模型所举的例子仅供个人学习体验使用,使用大模型时需要注意遵守开源大模型开源协议合规性。同时,不同国家都不同严格的数据存储和处理规定,在使用大模型时,你必须对模型进行定制和调整,以适应你所在地的具体法律法规和政策。这可能包括对模型输出的内容进行特定的过滤等,以满足当地的隐私和敏感信息处理规定。

参与贡献

随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。

b2e21613a7c27820b9558f34520b3e6c.png

参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括:

ac7cf9cd32d598b6041464c0d171dcb1.png

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689

非新手问题列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22

如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/community/development/contribute.html

来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。

参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。

178dfcf421445b7d722c56134ee0f51e.jpeg

添加社区小助手微信(Leonard-ds) 

添加小助手微信时请说明想参与贡献。

来吧,开源社区非常期待您的参与。

< 🐬🐬 >

更多精彩推荐

☞Apache DolphinScheduler 深圳 Meetup,走进OPPO不容错过的大数据盛宴!

☞优秀用户案例有奖征集 | 活动火热开启,快来投稿!

☞Apache DolphinScheduler 发布 3.1.6 版本,支持 SeaTunnel Zeta 引擎

☞Apache DolphinScheduler 荣获 2022 年中国开源创新大赛二等奖!

☞去年办了这么多场Meetup都没有你,2023年赶紧安排起来!

☞企业级应用如何用 Apache DolphinScheduler 有针对性地进行告警插件开发?

☞CommunityOverCode Asia 2023 强势来袭!15 大专题议题征集 6 月 6 日截止

我知道你在看6da6a88ef2a8bbd29277c0edac456022.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/587454.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

想知道如何给游戏视频配音?有三个好方法教给你

现在越来越多的小伙伴会在闲暇之余打打游戏&#xff0c;也会观看一些游戏视频&#xff0c;其中不少游戏视频都有配音。游戏视频配音是一项有趣而富有创造力的任务&#xff0c;它可以让你为游戏画面注入声音&#xff0c;增强观众的体验。无论你是一个游戏爱好者还是一个内容创作…

前端vscode插件bito

GPT-4和ChatGPT越来越火&#xff0c;前端人员是否也能在日常工作中尝试体验其带来的乐趣呢&#xff1f; 答案是可以的&#xff01;安排&#xff01;&#xff01; 今天介绍一款vscode的插件 【bito】。 安装 安装后只需要自己注册一下&#xff0c;创建一个workspace就可以使用…

【满分】【华为OD机试真题2023B卷 JAVAJS】经典屏保

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 经典屏保 知识点循环迭代编程基础 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: DVD机在视频输出时,为了保护电视显像管,在待机状态会显示“屏保动画”,如下图所示,DVD Logo在屏幕内来回运动,碰到边缘会反弹…

凡亿教育荣获2023 STM32峰会“生态合作伙伴”奖项

作为中国知名的电子设计在线教育领域的优秀企业&#xff0c;凡亿教育喜迎好消息&#xff01;2023年5月12日&#xff0c;STM32峰会在深圳重磅回归&#xff0c;凡亿教育荣获STM32峰会颁发的“生态合作伙伴”奖项&#xff0c;这一殊荣充分肯定了凡亿教育在STM32生态系统中的杰出贡…

C进阶:数据在内存中的存储(1)

引入&#xff1a; 大家好&#xff0c;感谢大家最近的支持&#xff0c;今天也是开始了C进阶一系列的博文的创作&#xff0c;欢迎大佬们来指点&#xff0c;欢迎来一起沟通&#xff01;&#xff01;&#xff01; 数据类型的介绍 我们都知道&#xff1a;C语言具有以下几种数据类…

拼多多继续ALL IN

2023年注定是中国电商不平凡的一年。 随着网购用户数量见顶&#xff0c;经济形势进入新常态&#xff0c;电商平台已经来到了短兵相接的肉搏战阶段。 此刻的618大促&#xff0c;硝烟弥漫&#xff0c;刀光剑影&#xff0c;电商“决战”似乎是迫在眉睫。对各个平台来说&#xff0c…

SpringBoot:WebSocket实现消息撤回、图片撤回

下面只是讲述一下实现思路&#xff0c;代码基本没有哈&#xff01;有时间单独发表一篇关于websocket的相关操作的博客。 1. 消息撤回、图片撤回 个人觉得关于撤回&#xff0c;需要下述几个过程&#xff1a; 发送的消息的标签上可以定义一个属性&#xff0c;这个属性的值应该是…

18- 弹幕系统设计

1、弹幕系统设计 场景分析&#xff1a;客户端针对某一视频创建了弹幕&#xff0c;发送后端进行处理&#xff0c;后端需要对所有正在观看该视频的用户推送该弹幕。 1.1、实现方式 使用短连接进行通信或使用长连接进行通信。 1.1.1、短连接实现方案 所有观看视频的客户端不断…

单元测试尽量不要区分类与方法

单元测试尽量不要区分类与方法 单元测试是软件开发中非常重要的一环&#xff0c;其主要作用是在开发过程中对代码进行自动化测试与检验&#xff0c;从而保证代码质量&#xff0c;减少错误和缺陷的产生。然而&#xff0c;在实际的单元测试中&#xff0c;很多人会选择将测试分成类…

svg教程-初识svg

第一章 认识svg 简单来说&#xff1a; 位图&#xff1a;放大会失真图像边缘有锯齿&#xff1b;是由像素点组成&#xff1b;前端的 Canvas 就是位图效果。 矢量图&#xff1a;放大不会失真&#xff1b;使用 XML 描述图形。 我在 知乎 上找了一个图对说明一下。 左边是位图&…

chatgpt赋能python:用Python打造个人网站的SEO优化

用Python打造个人网站的SEO优化 简介 在互联网时代&#xff0c;拥有一个个人网站已经成为了一个时尚和必要的事情。网站不仅可以展示你的技能和个人风采&#xff0c;还可以提高你的知名度和影响力。但是&#xff0c;如何让人们发现你的网站&#xff0c;通过搜索引擎来访问你的…

从中序与后序遍历序列构造二叉树(java)

从中序与后序遍历序列构造二叉树 leetcode 106 题 从中序与后序遍历序列构造二叉树解题思路解题代码&#xff1a;二叉树专题 leetcode 106 题 从中序与后序遍历序列构造二叉树 leetcode 106:从中序与后序遍历序列构造二叉树 原题链接 题目描述&#xff1a; 给定两个整数数组 i…

342. 4的幂

342. 4的幂 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 342. 4的幂 https://leetcode.cn/problems/power-of-four/ 完成情况&#xff1a; 解题思路&#xff1a; 跟之前的一个丑数一样&#xff0c;循环条件就…

使用VSCode SSH公网远程连接本地服务器开发 - cpolar内网穿透

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…

MySQL-事件详解

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️树高千尺&#xff0c;落叶归根人生不易&…

本地Linux服务器安装MongoDB数据库【公网远程数据库】

文章目录 &#x1f449;关于作者&#x1f449;前言&#x1f61c;1. 配置Mongodb源&#x1f61c;2. 安装MongoDB&#x1f61c;3. 局域网连接测试&#x1f61c;4. 安装cpolar内网穿透&#x1f61c;5. 配置公网访问地址&#x1f61c;6. 公网远程连接&#x1f61c;7. 固定连接公网地…

基于Kubernetes的实战案例分享

▲ 点击上方"DevOps和k8s全栈技术"关注公众号 本技术文档旨在分享一个基于Kubernetes&#xff08;简称K8s&#xff09;的实际应用案例。我们将介绍K8s集群的规模、部署架构&#xff0c;并详细说明该案例在生产环境中的实际应用。通过本文档&#xff0c;读者将能够了解…

elasticsearchelastic-head docker安装

Elasticsearch8.7.1 安装 拉取镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:8.7.1创建elastic 网络 docker network create elastic执行创建 docker run --name esA --net elastic -p 9200:9200 -e ES_JAVA_OPTS"-Xms1g -Xmx1g" -it dock…

【笔记】微机原理及接口技术1 -- 微机基础与8086

微机基础 微机组成 下图展示了微型计算机的硬件系统基本结构 中央处理器(CPU): 负责执行计算机程序指令,进行数据运算和逻辑运算。 主存: 用于 storing 程序和数据,包括只读存储器 ROM 和随机存储器 RAM。 输入设备: 外部数据输入的途径,如鼠标、键盘、扫描仪等。 输出设备…

Hudi Flink SQL代码示例及本地调试

前言 之前在Flink Hudi DataStream API代码示例中总结了Hudi Flink DataStream API的代码及本地调试&#xff0c;并且在文中提到其实大家用Table API更多一些&#xff0c;但是我感觉Table API调试源码可能会比较难一点&#xff0c;因为可能会涉及到SQL解析&#xff0c;不清楚T…