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

使用AI-01开发板和开源后端服务搭建整套小智服务系统

使用AI-01开发板和开源后端服务搭建整套小智服务系统

四博智联的AI-01开发板,基于乐鑫ESP32-C2 + 专属定制的离线语音模组,能够完美的接入小智AI服务平台,再使用开源后端服务,就能够搭建一个完整的小智AI服务系统了。

下面是具体的搭建过程。

硬件连接

AI-01开发板没有板载USB转串口功能,需要自己通过USB转串口工具来连接到电脑,以便下载固件和查看日志输出信息。
参考官方提供的接线指导:下载说明
在这里插入图片描述

具体连线如下:
在这里插入图片描述

在实际使用中,USB转串口工具仅需连接到AI-01开发板的TX、RX、GND即可。然后用Tyep-C数据线给AI-01开发板供电即可。
需要注意的是,因为AI-01开发板没有提供RESET按钮,所以后续需要通过插拔Tyep-C数据线来重新上电,实现AI-01开发板的重启运行。

按照接线指导连接好以后,将USB转串口工具连接到电脑,再打开电脑的设备管理器,确保正确识别到对应的串口,并显示在端口(COM和LPT)中:
在这里插入图片描述

可以拔掉USB转串口工具,对应的设备会消失。然后过几秒,再重新连接到电脑的USB口,会重新出现。

建立ESP-IDF开发环境

小智AI系统硬件设备的开源代码,可以在VSCode中安装ESP-IDF的扩展和编译工具,来进行编译和烧录。

安装ESP-IDF扩展

首先安装VSCode,可以从https://code.visualstudio.com/download下载。
安装后,打开VSCode,点击右则导航栏的3+1方块图标,进入扩展安装,然后搜索esp-idf安装即可:
在这里插入图片描述

安装ESP-IDF编译工具

安装完ESP-IDF扩展后,点击右边导航栏的乐鑫圆形图标,在Advanced中点击配置ESP-IDF扩展,然后选择EXPRESS进入安装配置:
在这里插入图片描述

在安装配置界面中,按照下图选择从中国服务器下载(for China),并选择v5.3.3版本,再点击Install安装:
在这里插入图片描述

然后,耐心等待安装完成:
在这里插入图片描述

设置ESP-IDF扩展

安装完成后,从ESP-IDF扩展的安装界面,先设置图标,在选择设置:
在这里插入图片描述

在设置界面中,先搜索flash,设置烧录的波特率为921600:
在这里插入图片描述

再搜索monitor,设置串口监视的波特率为74880:
在这里插入图片描述

编译运行示例程序

现在开发环境已经安装配置好了,为了确保能够正常使用,可以运行一个示例程序进行检验。

点击右边导航栏的乐鑫圆形图标,在Advanced中点击展示示例项目,在列出的项目中,选择hello_world,然后点击Select location for hello_world project
在这里插入图片描述

点击后,会提示示例项目保存目录,设置一个目录保存即可。
创建成功后,会自动打开新建的hello world的项目工作界面:
在这里插入图片描述

然后按照下图,点击选择之前在设备管理器中显示的USB转串口工具设备端口号,以及芯片类型esp32c2:
在这里插入图片描述

再点击构建图标,即可编译hello_world的源码:
在这里插入图片描述

编译成功后,会显示如下的内存占用情况:
在这里插入图片描述

在下一步操作之前,需要从电脑先断开AI-01开发板的Tyep-C数据线,再按住AI-01开发板上的按键不放,然后重新连接到电脑上,让AI-01开发板进入下载固件模式。连接完成后,可以松开按键。

操作完成后,再点击底部的ESP-IDF:构建、烧录和监视图标,并在顶部弹出列表中选择UART
在这里插入图片描述

随后,会自动完成编译源码,烧录固件到AI-01开发板,并启动串口监视:
在这里插入图片描述

当VSCode下部的窗口,显示上述信息后,重新插拔AI-01开发板的Tyep-C数据线,AI-01开发板将重新上电运行前面烧录的程序,并输出Hello World
在这里插入图片描述

在进行下一步操作之前,需要点击上述信息输出界面右则各任务输出窗口的回收站图标终止任务,否则后续操作中,烧录和监视串口会有问题。
在这里插入图片描述

成功完成以上各项操作后,ESP-IDF开发环境就准备好了,可以进行后续操作,编译小智AI系统硬件设备的开源代码了。

编译运行DOIT小智AI开源代码

因为AI-01开发板使用的是乐鑫ESP32-C2 + 专属定制的离线语音模组,在小智AI官方的开源代码中没有适配,所以四博智联基于小智AI官方的开源代码,提供了对应的分支版本DOIT_AI,和官方版本的功能没有差异。

下载源码

DOIT_AI的源码,可以从https://github.com/SmartArduino/DOIT_AI下载最新版本:
在这里插入图片描述

在上述界面中,可以使用git工具clone源码,也可以直接下载源码的压缩包。

设置编译参数

使用VSCode打开下载的源码,参考前面hello world,设置串口端口号和芯片类型esp32c2。
另外,还需要通过SDK配置编辑器(menuconfig),开设置Xiaozhi的Board TypeDoit-AI-01-Kit
在这里插入图片描述

保存设置后,点击底部的构建来编译源码:
在这里插入图片描述

编译成功后,显示如下信息:
在这里插入图片描述

烧录运行

在下一步操作之前,需要从电脑先断开AI-01开发板的Tyep-C数据线,再按住AI-01开发板上的按键不放,然后重新连接到电脑上,让AI-01开发板进入下载固件模式。连接完成后,可以松开按键。

操作完成后,再点击底部的ESP-IDF:构建、烧录和监视图标,并在顶部弹出列表中选择UART
在这里插入图片描述

界面会显示如下信息,表示正在烧录固件:
在这里插入图片描述

如果执行后,出现下面的错误,说明串口被占用,或者连接不正确:
在这里插入图片描述

烧录完成后,显示信息如下:
在这里插入图片描述

当VSCode下部的窗口,显示上述信息后,重新插拔AI-01开发板的Tyep-C数据线,AI-01开发板将重新上电运行前面烧录的程序,并输出小智AI运行的信息:
在这里插入图片描述

配网运行

首次烧录运行后,会输出上述配网信息,并语音播报进入配网模式
此时,使用手机连接Xiaozhi开头的热点:
在这里插入图片描述

就能进入配网界面,设置当前环境所使用的WiFi名称和密码:
在这里插入图片描述

配置成功后,AI-01开发板运行的小智AI系统会自动重启,并输出如下的信息:
在这里插入图片描述

激活设备

首次配置网络后,会提示需要激活设备,并语音播报激活信息。
访问小智AI服务平台官网https://xiaozhi.me/,进入控制台注册账号并登录:
在这里插入图片描述

然后,添加新的智能体:
在这里插入图片描述

添加后,点击添加设备:
在这里插入图片描述

然后输入播报或者显示的数字:
在这里插入图片描述

激活成功后,系统会自动重新启动,启动完成,会听到嘟的一声响:
在这里插入图片描述

现在,就可以使用你好小智唤醒小智AI,然后进行对话了。也可以使用按键进行唤醒,然后进行对话。
在这里插入图片描述

搭建开源后端服务

AI-01开发板运行的小智系统,默认会连接到小智AI官方的服务平台。
我们可以使用开源后端服务的源码,来运行自己的小智AI后端服务,让AI-01开发板连接到自己的后端服务。

下载后端服务源码

从https://github.com/xinnan-tech/xiaozhi-esp32-server/releases 可以下载最新发布的开源后端服务的源码:
在这里插入图片描述

下载后解压源码,找到如下的目录,准备后续的操作:
在这里插入图片描述

下载语音识别模型文件

开源后端服务可以在本地运行语音识别服务(ASR),但需要下载对应的模型文件:https://modelscope.cn/models/iic/SenseVoiceSmall/resolve/master/model.pt

下载后,将该文件放置到main/xiaozhi-server/models/目录中:
在这里插入图片描述

安装 Anaconda

要运行开源后端服务,还需要Anaconda来安装python环境运行。
从 https://www.anaconda.com/download/success 下载Windows对应的Anaconda安装包 Anaconda3-2024.10-1-Windows-x86_64.exe
在这里插入图片描述

下载完成后,打开安装包安装,并在配置时,全部打钩:
在这里插入图片描述

安装完成后,搜索Anaconda,打开Anaconda Prompt
在这里插入图片描述

打开后,进入xiaozhi-server对应的目录,并执行下面的命令以查看conda版本,检测是否安装成功:

conda -V

在这里插入图片描述

创建Python运行环境

然后,执行下面的命令,创建需要的Python运行环境:

conda create -n xiaozhi-esp32-server python=3.10 -y

执行成功后,会输出如下的信息:
在这里插入图片描述

再依次执行下面的每一条命令,使用创建的环境,并安装需要的支持包:

conda activate xiaozhi-esp32-serverconda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forgeconda install libopus -y
conda install ffmpeg -y

在这里插入图片描述

安装完成后,执行下面命令,检验是否安装正确:

python -V
conda list opus
conda list ffmpeg

在这里插入图片描述

最后,执行下面的命令,安装开源后端服务所依赖的包:

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip install -r requirements.txt

在这里插入图片描述

安装成功后,会输出如下信息:
在这里插入图片描述

获取大模型apikey

开源后端服务运行时,需要调用LLM(大语言模型)接口,完成AI对话工作。

默认的LLM使用的是ChatGLM,去ChatGLM的官网https://bigmodel.cn/注册登录,然后添加新的Api Key,就可以免费使用:
在这里插入图片描述

配置后端服务

要运行小智后端服务,还需要做一些基础的配置。

首先,如果电脑上有多块网卡,或者运行了VMWare等虚拟机服务的话,上面显示的IP地址不一定是实际联网使用的,可以查看网络连接的属性,来获取当前使用的IP地址:
在这里插入图片描述

然后,执行下面的命令生成默认的配置文件:

mkdir data
copy config.yaml data\.config.yaml

在这里插入图片描述

再用VSCode打开后端服务源码目录xiaozhi-server,并打开data目录中的.config.yaml修改配置:
在这里插入图片描述

根据配置中的提示,修改如下位置:

  • websocket地址:
    在这里插入图片描述

修改websocket的地址,使用前面查看网络属性得到的IPv4地址,端口使用8000即可。

  • ChatGLMLLM的api key:
    在这里插入图片描述

将ChatGLMLLM的api_key,设置为前面获取的ChatGLM的apikey即可。

运行后端服务

上述操作都成功完成后,执行下面的命令,运行后端服务:

python app.py

运行成功后,将会出现如下的信息:
在这里插入图片描述

如果出现下面的提示,一定要点击允许:
在这里插入图片描述

根据前面获取的IPv4地址,最终的服务地址如下:

  • OTA接口地址:http://192.168.1.182:8002/xiaozhi/ota/
  • WebSocket接口地址:ws://192.168.1.182:8000/xiaozhi/v1/

测试后端服务

打开如下目录中的test.html,可以通过网页测试后端服务是否正常:
在这里插入图片描述

在测试界面中,填入上一步最终得到的OTA接口地址和WebSocket接口地址,就可以连接测试:
在这里插入图片描述

配置说明

开源后端服务配置文件中,有很多方面参数可以配置。
例如可以设置AI的人设,以及调用的LLM和TTS配置:
在这里插入图片描述

开源后端服务默认使用的LLM是ChatGLM,免费且速度快,但智能的能力并不是最好的,而使用的语音合成(TTS)服务是EdgeTTS,免费但是速度不快。
如果要想使用更好的效果,可以详细查看开源后端服务配置文件的说明,去开通相应平台的账号,获取对应的连接参数填入:
在这里插入图片描述

在这里插入图片描述

并启用对应的配置:
在这里插入图片描述

设置好对应的配置以后,重新启动后端服务即可生效。

另外,上面搭建的是简化版本的开源后端服务,让大家快速体验自己搭建整套小智服务系统。
如果参考开源后端服务的文档,搭建完整版的后端服务,还包括管理界面,功能非常的强大:
在这里插入图片描述

设置AI-01开发板OTA地址

现在开源后端服务已经成功运行了,只需要将AI-01开发板OTA地址,设置为上一节中最后获取的OTA接口地址,就可以连接到自己的后端服务了。

配置OTA地址

使用VSCode打开设备端DOIT_AI源码,参考之前设置编译参数,通过SDK配置编辑器(menuconfig),设置OTA地址:
在这里插入图片描述

重新编译源码

设置了OTA参数后,点击底部的构建项目图标,重新编译源码:
在这里插入图片描述

构建成功后,会输出如下信息:

在这里插入图片描述

烧录运行

在烧录运行之前,需要把之前打开的监视窗口关闭,否则串口无法重复连接。
在这里插入图片描述

在下一步操作之前,需要从电脑先断开AI-01开发板的Tyep-C数据线,再按住AI-01开发板上的按键不放,然后重新连接到电脑上,让AI-01开发板进入下载固件模式。连接完成后,可以松开按键。

操作完成后,再点击底部的ESP-IDF:构建、烧录和监视图标,自动完成编译、烧录、监视操作:
在这里插入图片描述

烧录完成后,会输出如下的信息:
在这里插入图片描述

待输出上面信息后,重新插拔AI-01开发板的Tyep-C数据线,AI-01开发板将重新上电运行前面烧录的程序,并输出小智AI运行的信息,并听到嘟的一声响:
在这里插入图片描述

现在,说你好小智唤醒小智AI,或者使用按键唤醒小智AI,开始对话:
在这里插入图片描述

从上面的输出信息可以看到,现在使用的是自己的后台服务地址了。

查看后端服务的输出日志,可以看到请求和返回的过程:
在这里插入图片描述

演示效果

下面的演示中,服务端配置中,使用了DoubaoLLM和DoubaoTTS:

在这里插入图片描述

具体演示效果如下:

全开源:使用四博AI-01开发板搭建自已的AI小智服务系统

从上面的演示中可以看到,使用AI-01开发板和开源后端服务搭建环境,可以顺利的运行提供服务,让我们能够拥有自己的小智服务系统了。
另外,演示环境是在本地电脑搭建的,如果是在服务器上搭建的,反馈的速度会更快。如果有充足的显卡资源,还可以自建LLM服务和TTS服务。

鸣谢

  • 感谢虾哥开源小智AI设备端源码:xiaozhi-esp32
  • 感谢开源团队开发后端服务:xiaozhi-esp32-server
  • 感谢四博智联提供AI-01源码:DOIT_AI

相关文章:

使用AI-01开发板和开源后端服务搭建整套小智服务系统

使用AI-01开发板和开源后端服务搭建整套小智服务系统 四博智联的AI-01开发板,基于乐鑫ESP32-C2 专属定制的离线语音模组,能够完美的接入小智AI服务平台,再使用开源后端服务,就能够搭建一个完整的小智AI服务系统了。 下面是具体…...

第三章 权限维持-linux权限维持-隐藏

简介 ssh rootenv.xj.edisec.net -p 密码 xjqxwcyc 1.黑客隐藏的隐藏的文件 完整路径md5 2.黑客隐藏的文件反弹shell的ip端口 {ip:port} 3.黑客提权所用的命令 完整路径的md5 flag{md5} 4.黑客尝试注入恶意代码的工具完整路径md5 5.使用命令运行 ./x.xx 执行该文件 将查询的…...

Linux操作系统系统编程:x86-64架构下的系统调用

在Linux操作系统里,系统编程如同精密仪器的核心部件,掌控着系统运行的关键。而 x86-64 架构下的系统调用,更是连接用户空间程序与内核的关键桥梁。你可以把用户空间的程序想象成一个个 “工匠”,它们有着各式各样的需求&#xff0…...

linux下如何在一个录目中将一个文件复制到另一个录目,删除目录

一.文件复制到另一个目录 在Linux系统中,要将一个文件从一个目录复制到另一个目录,你可以使用cp命令。下面是一些基本的用法: 1. 使用绝对路径 如果你知道文件的绝对路径和目标目录的绝对路径,你可以直接使用cp命令。例如&…...

用Selenium开启自动化网页交互与数据抓取之旅

用Selenium开启自动化网页交互与数据抓取之旅 在当今数字化时代,数据的价值不言而喻,而网页作为海量数据的重要载体,如何高效获取其中的关键信息成为众多开发者和数据爱好者关注的焦点。Selenium这一强大工具,为我们打开了自动化…...

RabbitMQ的交换机

一、三种交换机模式 核心区别对比​​ ​​特性​​​​广播模式(Fanout)​​​​路由模式(Direct)​​​​主题模式(Topic)​​​​路由规则​​无条件复制到所有绑定队列精确匹配 Routing Key通配符匹配…...

多模态大语言模型arxiv论文略读(五十五)

MoMA: Multimodal LLM Adapter for Fast Personalized Image Generation ➡️ 论文标题:MoMA: Multimodal LLM Adapter for Fast Personalized Image Generation ➡️ 论文作者:Kunpeng Song, Yizhe Zhu, Bingchen Liu, Qing Yan, Ahmed Elgammal, Xiao…...

TMI投稿指南(四):投稿相关网址

TMI官网:https://ieeetmi.org/ 模版选择器:选择合适的latex模版 IEEE-Template Selector 评审过程状态查看:​​​​​​ScholarOne Manuscripts AE assigns reviewers:副编辑已经开始选择和邀请审稿人,但同意审稿…...

Oracle无法正常OPEN(三)

在Oracle数据库中,如果几个数据文件丢失,导致数据库无法启动,报错“ORA-01157: cannot identify/lock data file 2 - see DBWR trace file”,如果没有物理备份的情况下,位于丢失数据文件的数据是无法找回的&#xff0c…...

SQL语句练习 自学SQL网 在查询中使用表达式 统计

目录 Day 9 在查询中使用表达式 Day 10 在查询中进行统计 聚合函数 Day 11 在查询中进行统计 HAVING关键字 Day12 查询执行顺序 Day 9 在查询中使用表达式 SELECT id , Title , (International_salesDomestic_sales)/1000000 AS International_sales FROM moviesLEFT JOIN …...

当LLM遇上Agent:AI三大流派的“复仇者联盟”

你一定听说过ChatGPT和DeepSeek,也知道它们背后的LLM(大语言模型)有多牛——能写诗、写代码、甚至假装人类。但如果你以为这就是AI的极限,那你就too young too simple了! 最近,**Agent(智能体&a…...

模拟开发授权平台

这次只是实现应用的curd和公私钥的校验以及第三方的通知dmeo项目,大家可以拓开视野来编写 进入主题 项目链接:桌角的眼镜/develop_auth_platform 直接下拉并运行就行 回调应用代码在test包中 回调应用测试代码 package mainimport ("encoding/…...

python数据分析(八):Pandas 文本数据处理

Pandas 文本数据处理全面指南 1. 引言 在数据分析中,文本数据是常见的数据类型之一。Pandas 提供了强大的字符串处理方法,可以方便地对文本数据进行各种操作。本文将详细介绍 Pandas 中的文本处理功能,包括字符串连接(cat)、分割(split)、替…...

Spring AI:简化人工智能功能应用程序开发

Spring AI:简化人工智能功能应用程序开发 一、项目简介 Spring AI 项目致力于简化包含人工智能功能的应用程序的开发工作,并且不会引入不必要的复杂性。该项目从著名的 Python 项目(如 LangChain 和 LlamaIndex)中获取灵感&#…...

【算法基础】三指针排序算法 - JAVA

一、基础概念 1.1 什么是三指针排序 三指针排序是一种特殊的分区排序算法,通过使用三个指针同时操作数组,将元素按照特定规则进行分类和排序。这种算法在处理包含有限种类值的数组时表现出色,最经典的应用是荷兰国旗问题(Dutch …...

从实列中学习linux shell9 如何确认 服务器反应迟钝是因为cpu还是 硬盘io 到底是那个程序引起的。cpu负载多高算高

在 Linux 系统中,Load Average(平均负载) 是衡量系统整体压力的关键指标,但它本身没有绝对的“高/低”阈值,需要结合 CPU 核心数 和 其他性能指标 综合分析。以下是具体判断方法: 一、Load Average 的基本含义 定义:Load Average 表示 单位时间内处于可运行状态(R)和不…...

[面试]SoC验证工程师面试常见问题(三)

SoC验证工程师面试常见问题(三) 在 SoC 验证工程师的面试中,面试官可能会要求候选人现场编写 SystemVerilog、UVM (Universal Verification Methodology) 或 SystemC 代码,以评估其编程能力、语言掌握程度以及解决实际验证问题的能力。这种随机抽题写代码的环节通常…...

架构进阶:深入学习企业总体架构规划(Oracle 战略专家培训课件)【附全文阅读】

本文主要讨论了企业总体技术架构规划的重要性与实施建议。针对Oracle战略专家培训课件中的内容,文章强调了行业面临的挑战及现状分析、总体技术架构探讨、SOA集成解决方案讨论与问题解答等方面。文章指出,为了消除信息孤岛、强化应用系统,需要…...

stm32教程:软件I2C通信协议 代码模板提供

早上好啊大伙,这一期也是stm32的基础教学,这一期说的是 —— I2C通信协议。 文章目录 一、I2C协议概述二、物理层特性硬件结构速率模式 三、协议层机制起始与停止信号数据帧结构应答机制时钟同步与仲裁 四、通信协议1. 起始信号(START Condit…...

Java零基础入门Day4:数组与二维数组详解

一、为什么需要数组? 当程序需要处理批量同类型数据时,使用多个变量存储会非常繁琐。例如存储70个学生姓名时,需定义70个变量,而数组可以简化这一过程,提高代码可维护性。 示例:变量存储的弊端 String n…...

一条 SQL 查询语句是如何执行的(MySQL)

第一讲:一条 SQL 查询语句是如何执行的 总览图示 MySQL 查询的执行流程可以大致分为以下步骤(如图所示): 连接器(Connection)查询缓存(Query Cache,MySQL 8.0 已废弃)…...

IntelliJ IDEA

文章目录 一、集成开发环境(IDE, Integrated Development Environment)二、IntelliJ IDEAIDEA 安装 三、IDEA 管理 Java 程序的结构四、IDEA 开发 HelloWorld 程序 一、集成开发环境(IDE, Integrated Development Environment) 把代码编写,编译,执行等多…...

详细说明StandardCopyOption.REPLACE_EXISTING参数的作用和使用方法

StandardCopyOption.REPLACE_EXISTING 是 Java java.nio.file.StandardCopyOption 枚举类中的一个常量,它主要用于在文件复制或移动操作中处理目标文件已存在的情况。下面详细介绍其作用和使用方法。 作用 在使用 java.nio.file.Files 类的 copy() 或 move() 方法时…...

Linux 下使用tcpdump进行网络分析原

简介 tcpdump 是一个命令行数据包分析器,可实时捕获和检查网络流量。它通常用于网络故障排除、性能分析和安全监控。 安装 Debian/Ubuntu sudo apt update && sudo apt install tcpdump -yCentOS/RHEL sudo yum install tcpdump -ymacOS brew install…...

人车交叉作业防撞系统介绍

一、技术原理与核心功能 UWB脉冲测距技术 系统基于UWB技术,通过纳秒级非正弦窄脉冲(脉冲宽度0.21.5ns)实现实时测距,精度可达1030厘米。 工作原理:人员佩戴防撞标签(A)与车载基站(B&…...

移动端开发中设备、分辨率、浏览器兼容性问题

以下是针对移动端开发中设备、分辨率、浏览器兼容性问题的 系统化解决方案&#xff0c;按开发流程和技术维度拆解&#xff0c;形成可落地的执行步骤&#xff1a; 一、基础环境适配&#xff1a;从「起点」杜绝兼容性隐患 1. Viewport 元标签标准化 <meta name"viewpor…...

Git 基本操作(二)

目录 撤销修改操作 情况一 情况二 情况三 删除文件 升级git 撤销修改操作 在日常编码过程中&#xff0c;有些时候&#xff0c;我们可能写着写着发现目前的版本的代码越写越挫&#xff0c;越不符合标准&#xff0c;想让我们当前的文件去恢复到上一次提交的版本…...

多模态大模型轻量化探索-开源SmolVLM模型架构、数据策略及其衍生物PDF解析模型SmolDocling

在《多模态大模型轻量化探索-视觉大模型SAM的视觉编码器》介绍到&#xff0c;缩小视觉编码器的尺寸&#xff0c;能够有效的降低多模态大模型的参数量。再来看一个整体的工作&#xff0c;从视觉侧和语言模型侧综合考量模型参数量的平衡模式&#xff0c;进一步降低参数量&#xf…...

gRPC学习笔记记录以及整合gin开发

gprc基础 前置环境准备 grpc下载 项目目录下执行 go get google.golang.org/grpclatestProtocol Buffers v3 https://github.com/protocolbuffers/protobuf/releases/download/v3.20.1/protoc-3.20.1-linux-x86_64.zip go语言插件&#xff1a; go install google.golang.…...

Linux diff 命令使用详解

简介 Linux 中的 diff 命令用于逐行比较文件。它以各种格式报告差异&#xff0c;广泛应用于脚本编写、开发和补丁生成。 基础语法 diff [OPTION]... FILES常用选项 -i&#xff1a;忽略大小写 -u&#xff1a;打印输出时不包含任何多余的上下文行 -c&#xff1a;输出不同行周…...

非对称加密算法(RSA、ECC、SM2)——密码学基础

对称加密算法&#xff08;AES、ChaCha20和SM4&#xff09;Python实现——密码学基础(Python出现No module named “Crypto” 解决方案) 这篇的续篇&#xff0c;因此实践部分少些&#xff1b; 文章目录 一、非对称加密算法基础二、RSA算法2.1 RSA原理与数学基础2.2 RSA密钥长度…...

【安装指南】Chat2DB-集成了AI功能的数据库管理工具

一、Chat2DB 的介绍 Chat2DB 是一款开源的、AI 驱动的数据库工具和 SQL 客户端&#xff0c;提供现代化的图形界面&#xff0c;支持 MySQL、Oracle、PostgreSQL、DB2、SQL Server、SQLite、H2、ClickHouse、BigQuery 等多种数据库。它旨在简化数据库管理、SQL 查询编写、报表生…...

【C++】认识map和set

目录 前言&#xff1a; 一&#xff1a;认识map和set 二&#xff1a;map和set的使用 1.set的使用 2.map的使用 三&#xff1a;map的insert方法返回值 四&#xff1a;map的[ ]的使用 五&#xff1a;multiset和multimap 六&#xff1a;map和set的底层数据结构 七&#x…...

LWIP带freeRTOS系统移植笔记

以正点原子学习视频为基础的文章 LWIP带freeRTOS系统移植 准备资料/工程 1、lwIP例程1 lwIP裸机移植 工程 &#xff0c; 作为基础工程 改名为LWIP_freeRTOS_yizhi工程 2、lwIP例程6 lwIP_FreeRTOS移植 工程 3、freeRTO源码 打开https://www.freertos.org/网址下载…...

【MinerU技术原理深度解析】大模型时代的文档解析革命

目录 一、MinerU概述 获取MinerU 二、核心功能与技术亮点 1. 多模态解析能力 2. 高效预处理能力 3. 多场景适配性 4. API服务 三、技术架构解析 3.1 概述 1. 模块化处理流程 2. 关键模型与技术 3.2 核心组件技术原理 3.2.1 布局检测(Layout Detection) 3.2.2 公式…...

rabbitMQ如何确保消息不会丢失

rabbitmq消息丢失的三种情况 生产者将消息发送到RabbitMQ的过程中时&#xff0c;消息丢失。消息发送到RabbitMQ&#xff0c;还未被持久化就丢失了数据。消费者接收到消息&#xff0c;还未处理&#xff0c;比如服务宕机导致消息丢失。 解决方案 生产者发送过程中&#xff0c;…...

数字智慧方案5970丨智慧农业大数据服务建设方案(69页PPT)(文末有下载方式)

详细资料请看本解读文章的最后内容。 资料解读&#xff1a;智慧农业大数据服务建设方案 在当今数字化时代&#xff0c;农业领域也正经历着深刻变革&#xff0c;智慧农业大数据服务建设方案应运而生。这一方案对推动农业现代化进程意义非凡&#xff0c;下面让我们深入剖析其核心…...

英一真题阅读单词笔记 22-23年

2022年真题阅读单词 2022 年 Text 1 第一段 1 complain [kəmˈpleɪn] v. 抱怨&#xff0c;投诉&#xff1b;诉说&#xff08;病痛&#xff09; 2 plastic [ˈplstɪk] n. 塑料&#xff1b;信用卡 a. 造型的&#xff0c;塑造的&#xff1b;塑料制的 3 durable [ˈd…...

Java大师成长计划之第10天:锁与原子操作

&#x1f4e2; 友情提示&#xff1a; 本文由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;平台gpt-4o-mini模型辅助创作完成&#xff0c;旨在提供灵感参考与技术分享&#xff0c;文中关键数据、代码与结论建议通过官方渠道验证。 在多线程编程中&#xff0c;锁与原子…...

2025大模型安全研究十大框架合集(10份)

2025大模型安全研究十大框架合集的详细介绍&#xff1a; Anthropic AI信任研究框架 Anthropic于2024年10月更新的《安全责任扩展政策》(RSP)&#xff0c;提出了一个灵活的动态AI风险治理框架。该框架规定当AI模型达到特定能力时&#xff0c;将自动升级安全措施&#xff0c;如…...

溯因推理思维——AI与思维模型【92】

一、定义 溯因推理思维模型是一种从结果出发,通过分析、推测和验证,寻找导致该结果的可能原因的思维方式。它试图在已知的现象或结果基础上,逆向追溯可能的原因,构建合理的解释框架,以理解事物的本质和内在机制。 二、由来 溯因推理的思想可以追溯到古希腊哲学家亚里士…...

系统架构设计师:设计模式——结构型设计模式

一、结构型设计模式 结构型设计模式涉及如何组合类和对象以获得更大的结构。结构型类模式采用继承机制来组合接口或实现。一个简单的例子是采用多重继承方法将两个以上的类组合成一个类&#xff0c;结果这个类包含了所有父类的性质。 这一模式尤其有助于多个独立开发的类库协…...

接口测试实战指南:从入门到精通的质量保障之道

为什么接口测试如此重要&#xff1f; 在当今快速迭代的软件开发环境中&#xff0c;接口测试已成为质量保障体系中不可或缺的一环。据统计&#xff0c;有效的接口测试可以发现约70%的系统缺陷&#xff0c;同时能将测试效率提升3-5倍。本指南将从实战角度出发&#xff0c;系统性…...

对第三方软件开展安全测评,如何保障其安全使用?

对第三方软件开展安全测评&#xff0c;能够精准找出软件存在的各类安全隐患&#xff0c;进而为软件的安全使用给予保障。此次会从漏洞发现、风险评估、测试环境等多个方面进行具体说明。 漏洞发现情况 在测评过程中&#xff0c;我们借助专业技术与工具&#xff0c;对第三方软…...

计算方法实验四 解线性方程组的间接方法

【实验性质】 综合性实验。 【实验目的】 掌握迭代法求解线性方程组。 【实验内容】 应用雅可比迭代法和Gauss-Sediel迭代法求解下方程组&#xff1a; 【理论基础】 线性方程组的数值解法分直接算法和迭代算法。迭代法将方程组的求解转化为构造一个向量序列&…...

Qt 中基于 QTableView + QSqlTableModel 的分页搜索与数据管理实现

Qt 中基于 QTableView QSqlTableModel 的分页搜索与数据管理实现 一、组件说明 QTableView&#xff1a;一个基于模型的表格视图控件&#xff0c;支持排序、选择、委托自定义。QSqlTableModel&#xff1a;与数据库表直接绑定的模型类&#xff0c;可用于展示和编辑数据库表数据…...

云计算-容器云-服务网格Bookinfo

服务网格&#xff1a;创建 Ingress Gateway 将 Bookinfo 应用部署到 default 命名空间下&#xff0c;请为 Bookinfo 应用创建一个网 关&#xff0c;使外部可以访问 Bookinfo 应用。 上传ServiceMesh.tar.gz包 [rootk8s-master-node1 ~]# tar -zxvf ServiceMesh.tar.gz [rootk…...

PostgreSQL自定义函数

自定义函数 基本语法 //建一个名字为function_name的自定义函数create or replace function function_name() returns data_type as //returns 返回一个data_type数据类型的结果&#xff1b;data_type 是返回的字段的类型&#xff1b;$$ //固定写法......//方法体$$ LANGUAGE …...

学习记录:DAY22

我的重生开发之旅&#xff1a;优化DI容器&#xff0c;git提交规范&#xff0c;AOP处理器&#xff0c;锁与并发安全 前言 我重生了&#xff0c;重生到了五一开始的一天。上一世&#xff0c;我天天摆烂&#xff0c;最后惨遭实习生优化。这一世&#xff0c;我要好好内卷… 今天的…...

HarmonyOS NEXT第一课——HarmonyOS介绍

一、什么是HarmonyOS 万物互联时代应用开发的机遇、挑战和趋势 随着万物互联时代的开启&#xff0c;应用的设备底座将从几十亿手机扩展到数百亿IoT设备。全新的全场景设备体验&#xff0c;正深入改变消费者的使用习惯。 同时应用开发者也面临设备底座从手机单设备到全场景多设…...