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

Unity--GPT-SoVITS接入、处理GPTAPI的SSE响应流

GPT-SoVITS

GPT-SoVITS- v2(v3也可以,两者对模型文件具有兼容)

点击后 会进入新的游览器网页

-----

看了一圈,发现主要问题集中在模型的训练很需要CPU,也就是模型的制作上,问题很多,如果有现有的模型,直接引用,使用“推理”即可

基于GPT-SoVITS一键包的合成语音基础 - 哔哩哔哩

就比如用GPT-SoVITS 一色彩羽语音模型分享_哔哩哔哩_bilibili

这个up主练出来的模型

自己要做的其实就很少了

导入之后重启webui.bat

再开启TTS推理WebUI,就进入了UI界面,自己点击交互设置,然后产出结果可以直接用

但这是SoVITS的界面交互,想在unity里使用,必须要用提供的API(不同于网络API的本地API,不需要联网,可以直接处理)

【unity+gpt-sovits接口集成】AI二次元小姐姐项目集成gpt-sovits的api模块,可以实现局域网的丝滑互动了_哔哩哔哩_bilibili

这个up的项目现在也在维护,进项目里了解是可以的,但是在里面的使用过程总是有一些报错,想解决比较麻烦

但是还是可以了解重要的区域是哪一块,哪里要改

而且up对功能的拆分也很不错,LLM类和TTS类分开,大概率是用了继承,然后下面的多个模型都可以使用,在各自里写网络传递请求的方法

---

GPT-SoVITS教程5-如何调用API_哔哩哔哩_bilibili

ViTS的Api调用,是和webui分开的一种更偏向接口功能切割,整块提供的,所以只需要api.bat文件打开,就可以连接api了

对于这个http

http://localhost:9880/docs用这个代替才能进fastapi

然后就进入了api的模块,,这里有参数设置然后自动生成请求格式的

这里的路径是可以填绝对路径的

prompt都是传入的材料的

之后的text则是需要生成的文本、语言(再后面的可以调整也可以不动)

api的格式,,在这生成的是一模一样的

URL 传输时,会对特殊字符进行 百分号编码(Percent-Encoding),比如:

  • \(反斜杠) → %5C
  • :(冒号) → %3A
  • 日文、中文等非 ASCII 字符 会用 UTF-8 编码 转成 %E7%等形式
  • 空格%20

所以会出现乱码一样的情况,但是信息没有变

把这一段直接粘贴到游览器,可以直接得到生成 的音频文件,

(换行清晰格式
localhost:9880/
?refer_wav_path=D%3A%5CBaiduNetdiskDownload%5CUnity_Related%5CIroha%5C参考音频%5C测试参考音频%5C001.私としては奉仕部が協力してくれるのが一番%E3%80%80面倒がないんです.wav
&prompt_text=私としては奉仕部が協力してくれるのが一番%E3%80%80面倒がないんです
&prompt_language=日文
&text=コネクタの使い方すら知らないなんてバカなの?
&text_language=日文
&top_k=15
&top_p=1
&temperature=1
&speed=1

TITS里的切分,是为了生成的时候不跳字吞字而切分的

但是默认的基础api里是不切分的,很容易出现问题

那问题来了,我要怎么整合到unity里用,通过这个网站上的这种格式简化肯定不现实

下面是api的注释内容,

基于 HTTP 请求的语音合成 API,支持 GETPOST 请求,并返回音频流或 JSON 结果。

在 Unity 里调用它,需要构建 HTTP 请求 并处理 返回的音频数据

简单测试的,用GET 请求,参数放在 URL 里(可见),要传的数据量少
URL 可直接访问,可以用浏览器打开测试

POST 请求,参数放在请求体里(Body),不会出现在 URL,不能用游览器打开
适用于复杂请求(大数据/JSON)浏览器不会缓存,数据不会暴露在 URL
支持 JSON、文件上传等复杂数据

直接按照api注释里的来不行

在unity中要使用http,在这里改成allow,,默认是为了安全不允许使用的

改了之后,就可以收到并和api产生交互了

本来以为这些填进去的东西一次只能一填,但并不是这样的

这个网站 是api文档,,对传输的输入字符串 的格式规则的介绍

并没有什么很复杂的地方

要做的是在unity的C#脚本里调用传入这段字符串的时候,这段字符串是符合格式的,是可以丢给UnityWebRequest去做访问请求,并且拿到返回的数据的

也就是说,在APi文档介绍下,我复制这种格式,然后把需要的部分变成变量,其实就已经可以做到APi较好的交互了

现在unity里已经可以发出声音了,,不过这个效果的确是一言难尽,

原来那些B站上发视频这么像的,都是自己一句一句挑最好的表现出来,,

那确实很肝,

---

处理GPTAPI的SSE响应流

功能是串通了,可以做到输入文本并且朗读出来了

但是没有使用流,  等待文本彻底发回----将文本整个进行TTS,有较长的等待周期,(对于DeepSeek这点更加严重,GPT回复的相对更快,两者的API文档差距并没有很多,接下来还是以GPT的API调用来develop)

为了改进,所以先去了解一下gpt的api调用里,是怎么规定实现流的传输的

想让GPT一边生成文本,TTS立刻 解析并且读出来

对于这个的解决方案就是多种的

比如GPT每生成一段文本到逗号和句号的位置,TTS就拆开了一段,并且解析成需要播放的资源

GPT生成文本的速度一般快于TTS转--读的速度,那是否需要一个queue来装载后续的每个文件,然后一直播放?这样会不会出现语句衔接不自然的问题?(但现在主要是解决等待问题,这一方面可以不考虑)

--

先是得到SSE的响应,这在OpenAI的API请求上有变化

下面是第一次成功用cmd接收了SSE响应的格式

curl -N -X POST "https://api.openai.com/v1/chat/completions" ^-x http://127.0.0.1:7890 ^-H "Authorization: Bearer sk-你的API密钥" ^-H "Content-Type: application/json" ^-H "Accept: text/event-stream" ^-H "Cache-Control: no-cache" ^-d "{ \"model\": \"gpt-4o\", \"messages\": [ { \"role\": \"user\", \"content\": \"和我讲讲陶喆是谁\" } ], \"stream\": true }"

这里坑最多的还是curl的测试,对语法的忽视,而这一点AI同样经常忽视

换行符,在很多地方粘贴为了美观会自动加上(或者自动删除没有内容的连续空格),这就让curl真的没有用都浑然不知,,比如我粘贴到了CSDN上,然后再复制,就不能在cmd窗口运行了

所以很有必要了解cmd的书写规则


cmdEnter 解析为命令的结束换行必须用^(^ 后面不能有多余的空格)

路径中有空格,必须用双引号包裹( -d 里JSON 里的空格不影响

curl 允许多个空格,但少部分情况下会出现问题,

出现More?的时候才是说明你是想为了美观用 ^换行了,本质上还是一串黏在一起的

在之后的测试里(注意这里^后面的空格是为了分开,在cmd里绝对不能加)

-X POST  并不必要特意声明post请求类型

-N 也不必要特意声明是(逐行读取流式数据,对于curl)

-x http://127.0.0.1:7890 ^  至关重要 这段对代理的引用,在cmd里curl发送请求给服务器(应该是cmd自己的问题,curl总是不按照代理的来走,手动set Proxy代理也出问题)

-H "Accept: text/event-stream" ^    这个也并不重要,可以去掉

-H "Cache-Control: no-cache" ^    这句也不重要(大部分应该都是openai的api网站已经配置好了)

最后保留的的确只有官方文档里的了curl请求格式了(注意一下换行符和空格)

-------curl可以访问之后,是想c#如何可以接收这种持久输出的格式--

可以接受响应了(apikey的粘贴复制容易出现一些莫名其妙的误差,会提示unauthorized就说明响应是没问题的,只是apikey有格式的问题,去了解一下key传过来的复制粘贴会不会额外动里面的数据)

在请求根据官方api格式发了之后,

 目前接受响应的办法,但是这些都是一次性发送到unity的,没有做到逐条更新var response = await httpClient.PostAsync(apiUrl, new StringContent(jsondata, Encoding.UTF8, "application/json"));Debug.Log(response.StatusCode);Debug.Log(response.Content.ReadAsStringAsync().Result);using (var stream = await response.Content.ReadAsStreamAsync())using (var reader = new StreamReader(stream, Encoding.UTF8)){string line;while ((line = await reader.ReadLineAsync()) != null){if (line.StartsWith("data:")){string data = line.Substring(5);// 在这里处理接收到的数据Debug.Log(data);}}}

完结,HttpClient.SendAsync 方法 (System.Net.Http) | Microsoft Learn

的确是因为httpclient本身的方法里没有可以设置接受请求头就返回的方法

要换成SendAsync(HttpRequestMessage requst)

必须 自己构建这个Message的内部消息,让httpclient帮忙发送

整个完整的函数,在各个类功能正常运行的情况下逻辑一定是没问题的(如果有问题就检查自己的httpclient要不要额外设置代理Proxy,还有就是apikey的复制粘贴可能自动修改内容的问题)

 async Task GetChatStream(string userInput){// 请求的 JSON 数据var requestData = new{model = "gpt-4",messages = new[]{new { role = "system",content = CharacterSetting },new { role = "user", content = userInput }},stream = true};string jsondata = JsonConvert.SerializeObject(requestData);// Print the complete request in a format that can be used directly with curl//string curlCommand = $"curl -X POST \"{apiUrl}\" -H \"Authorization: Bearer {apiKey}\" -H \"Content-Type: application/json\" -d '{jsondata}'";Debug.Log("jsondataBody_Ready");var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, apiUrl){Content = new StringContent(jsondata, Encoding.UTF8, "application/json")};httpRequestMessage.Headers.TryAddWithoutValidation("Authorization", $"Bearer {apiKey}");//*****************************************var response = await httpClient.SendAsync(httpRequestMessage, HttpCompletionOption.ResponseHeadersRead);Debug.Log("response.StatusCode:" + response.StatusCode);//Debug.Log(response.Content.ReadAsStringAsync().Result);using (var stream = await response.Content.ReadAsStreamAsync()){//  Debug.Log("stream");using (var reader = new StreamReader(stream, Encoding.UTF8)){// Debug.Log("reader");string line;while ((line = await reader.ReadLineAsync()) != null){//  Debug.Log("line");if (line.StartsWith("data:")){string chunkdata = line.Substring(5);// 在这里处理接收到的数据var openAIChunk = JsonConvert.DeserializeObject<OpenAIChunk>(chunkdata);Debug.Log(openAIChunk.Choices[0].Delta.Content);text.text += openAIChunk.Choices[0].Delta.Content;}}}}}

优化整理

需要的功能:玩家的对话,AI记得聊天历史

项目启动的时候自动打开SoVITS,可以的话不要显示控制台

目前暂时定这两个需求

之后的打算:把这个2d的交互场景设置到3D场景里,在3D的场景里实现这个2D窗口的所有功能

---

目前先做一个Scroll view,可以滚动查看聊天记录

配置好了,接下来接入SoVITS,还有角色动嘴

Process 类 (System.Diagnostics) | Microsoft Learn

//关于SoVITS的API打开,想了一下还是不管窗口显隐的问题了,还有打开会需要10秒左右的时间,不能产生空判断,这一段的过程比较重复,是一些使用信息的积累,可以做但是还是先管更重要的东西

---所以接下来都假设在SoVITS已经打开好的条件下(正常来说游戏的进入动画就可以把这些给做了,我在这做了也不知道实际如何)

Process类也不用了,直接到队列读取那一块了

这里把对话内容的 实时更新Text组件 和  拆分句子给SoVITS去转换成audioClip文件播放  分开

而且返回的响应一般是一个字的居多,也就不考虑一次来的响应里有多个字符,标点在前面了

很好,看的到播放的队列正常更新了,Clip队列也一直在运作 

现在就差口型的绑定了,这一部分就直接绑定audioSource就可以了

就会根据音量调整嘴巴的闭合

存在嘴巴没有跟着张开的情况,这里的模式调整为override,就可以避免视线 追踪 对2D模型的动画状态一直在调整

这里是调整声音大小的标准,让嘴巴在正确的区间里开闭

相关文章:

Unity--GPT-SoVITS接入、处理GPTAPI的SSE响应流

GPT-SoVITS GPT-SoVITS- v2&#xff08;v3也可以&#xff0c;两者对模型文件具有兼容&#xff09; 点击后 会进入新的游览器网页 ----- 看了一圈&#xff0c;发现主要问题集中在模型的训练很需要CPU&#xff0c;也就是模型的制作上&#xff0c;问题很多&#xff0c;如果有现有…...

一次Linux下 .net 调试经历

背景&#xff1a; Xt160Api, 之前在windows下用.net调用&#xff0c;没有任何问题。 但是移植到Linux去后&#xff0c;.net程序 调用 init(config_path) 总是报错 /root/test 找不到 traderApi.ini (/root/test 是程序目录) 然后退出程序 解决过程: 于是考虑是不是参数传错了&…...

Manus 技术探索 - 使用 gVisor 在沙箱内运行 Ubuntu 容器并通过远程浏览器访问

在容器化技术中&#xff0c;gVisor 为运行不信任的工作负载提供了额外的安全隔离。本文将详细介绍如何利用 gVisor 运行带 GUI 的 Ubuntu 容器&#xff0c;并通过 VNC/NoVNC 实现远程浏览器访问&#xff0c;从而轻松控制容器内的桌面环境。 1. 安装 gVisor 如果你还没有安装 …...

PentestGPT 下载

PentestGPT 下载 PentestGPT 介绍 PentestGPT&#xff08;Penetration Testing GPT&#xff09;是一个基于大语言模型&#xff08;LLM&#xff09;的智能渗透测试助手。它结合了 ChatGPT&#xff08;或其他 GPT 模型&#xff09;与渗透测试工具&#xff0c;帮助安全研究人员自…...

Day07 -实例 非http/s数据包抓取工具的使用:科来 wrieshark 封包监听工具

引入&#xff1a;由于我们day06正确为模拟器配置好了抓包环境&#xff0c;现在用bp去抓取模拟器web包是可以抓取到的&#xff0c;但是某些小程序 & pc端的app 都是有走非http/https协议的数据包的&#xff0c;那么我们就需要用不同的工具去抓取这些其他协议的数据包。 工具…...

机器学习 [白板推导](三)[线性分类]

4. 线性分类 4.1. 线性分类的典型模型 硬分类&#xff1a;输出结果只有0或1这种离散结果&#xff1b; 感知机线性判别分析 Fisher 软分类&#xff1a;会输出0-1之间的值作为各个类别的概率&#xff1b; 概率生成模型&#xff1a;高斯判别分析GDA、朴素贝叶斯&#xff0c;主要…...

c# 查找相似颜色算法

下是一个基于欧几里得距离的C#颜色相似度查找算法实现,包含详细注释和优化策略: using System; using System.Collections.Generic;public class ColorMatcher {// 颜色容器 - 使用字典存储颜色ID到RGB的映射private readonly Dictionary<int, byte[]> _colorDictiona…...

【数据分析】读取文件

3. 读取指定列 针对只需要读取数据中的某一列或多列的情况&#xff0c;pd.read_csv()函数提供了一个参数&#xff1a;usecols&#xff0c;将包含对应的columns的列表传入该参数即可。 上面&#xff0c;我们学习了读取 "payment" 和 "items_count" 这…...

全星研发管理APQP软件系统:助力汽车零部件企业高效研发,打造核心竞争力

在竞争日益激烈的汽车零部件行业&#xff0c;产品质量和研发效率直接影响企业的生存与发展。APQP&#xff08;先期产品质量策划&#xff09;作为行业的研发管理框架&#xff0c;能够有效提升产品质量和研发效率。然而&#xff0c;传统的APQP管理方式往往面临流程繁琐、信息分散…...

ccf3501密码

//密码 #include<iostream> #include<cstring> using namespace std; int panduan(char a[]){int lstrlen(a);int s0;int zm0,sz0,t0;int b[26]{0},c[26]{0},d[10]{0},e0,f0;while(s<l&&l>6){if(a[s]<Z&&a[s]>A){b[a[s]-A];zm;}if(a[s…...

kali之netdiscover

kali之netdiscover Netdiscover 是 Kali Linux 中一款用于网络发现和主机扫描的工具。它通过主动发送 ARP 请求来识别局域网中的活动主机&#xff0c;并显示它们的 IP 地址、MAC 地址和网卡厂商信息。Netdiscover 特别适用于局域网内的主机发现和网络映射。 1. Netdiscover 的…...

Leetcode-2272. Substring With Largest Variance [C++][Java]

目录 一、题目描述 二、解题思路 【C】 【Java】 Leetcode-2272. Substring With Largest Variancehttps://leetcode.com/problems/substring-with-largest-variance/description/2272. 最大波动的子字符串 - 力扣&#xff08;LeetCode&#xff09;2272. 最大波动的子字符串…...

【AI】技术人如何系统学习AI大模型应用开发?

从理论认知到全栈落地的完整指南 一、认知突破&#xff1a;理解大模型的技术本质&#xff08;1-2周&#xff09; 1.1 基础理论筑基 必学内容 大模型演进脉络&#xff1a;从Transformer到GPT-4的技术跃迁核心机制解析&#xff1a;注意力机制、位置编码、自监督学习关键能力边界…...

级联树SELECTTREE格式调整

步骤&#xff1a; 1、将全部列表设置成Map<Long, List<Obejct>> map的格式&#xff0c;方便查看每个父级对应的子列表&#xff0c;减少循环次数 2、对这个map进行递归&#xff0c;重新进行级联树的集合调整&#xff0c;将子集放置在对应的childs里面。 public Dyna…...

深入理解静态与动态代理设计模式:从理论到实践

静态代理设计模式 1.为什么需要代理设计模式&#xff1f; javaEE分层开发中&#xff0c;哪个层次对于我们来讲最重要 DAO---->Service---->Controller JavaEE分层中&#xff0c;最为重要的是Service层 Service层包含了那些代码 Service层核心功能(几十行 上百代码) 额外…...

NET进行CAD二次开发之二

本文主要针对CAD 二次开发入门与实践:以 C# 为例_c# cad-CSDN博客的一些实践问题做一些补充。 一、DLL介绍 在 AutoCAD 中,accoremgd.dll、acdbmgd.dll 和 acmgd.dll 都是与.NET API 相关的动态链接库,它们在使用.NET 语言(如 C#、VB.NET)进行 AutoCAD 二次开发时起着关…...

PyTorch 实现 Conditional DCGAN(条件深度卷积生成对抗网络)进行图像到图像转换的示例代码

以下是一个使用 PyTorch 实现 Conditional DCGAN&#xff08;条件深度卷积生成对抗网络&#xff09;进行图像到图像转换的示例代码。该代码包含训练和可视化部分&#xff0c;假设输入为图片和 4 个工艺参数&#xff0c;根据这些输入生成相应的图片。 1. 导入必要的库 import …...

c#:使用Modbus RTU协议

Modbus是一种广泛应用于工业自动化领域的通信协议&#xff0c;支持多种传输方式&#xff0c;如RTU、TCP等。其中&#xff0c;Modbus RTU是一种基于串行通信的协议&#xff0c;具有高效、可靠的特点。本文将详细介绍Modbus RTU协议的基本原理&#xff0c;并重点解析功能码0x03&a…...

设计模式(行为型)-备忘录模式

目录 定义 类图 角色 角色详解 &#xff08;一&#xff09;发起人角色&#xff08;Originator&#xff09;​ &#xff08;二&#xff09;备忘录角色&#xff08;Memento&#xff09;​ &#xff08;三&#xff09;备忘录管理员角色&#xff08;Caretaker&#xff09;​…...

基于yolo11+flask打造一个精美登录界面和检测系统

这个是使用flask实现好看登录界面和友好的检测界面实现yolov11推理和展示&#xff0c;代码仅仅有2个html文件和一个python文件&#xff0c;真正做到了用最简洁的代码实现复杂功能。 测试通过环境&#xff1a; windows x64 anaconda3python3.8 ultralytics8.3.81 flask1.1.…...

【软考-架构】13.1、软件架构概述-构件技术

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 ✨【重点】系统架构设计软件架构概述软件架构设计与生命周期构件&#x1f31f;软件架构风格数据流风格调用/返回风格独立构件风格虚拟机风格仓库风格闭环控制风格C2体系结…...

RabbitMQ(补档)

RabbitMQ 是一个开源的消息队列软件&#xff08;有时也被称为消息代理&#xff09;&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;。它主要用于应用程序之间&#xff0c;或者软件组件之间的消息通信。通过使用 RabbitMQ&#xff0c;可以实现异步的、可靠的…...

仿“东方甄选”直播商城小程序运营平台

在公域直播流量红利趋于饱和、流量成本大幅攀升的当下&#xff0c;私域直播为企业开辟了新的流量聚集和转化渠道&#xff0c;特别是对于那些希望在私域流量领域取得突破的品牌商家来说&#xff0c;直播场景以其独特的高频互动氛围&#xff0c;相比其他运营方式&#xff0c;展现…...

增量数据同步怎么做

增量数据同步怎么做&#xff1f;比如A系统里有母猪数据&#xff0c;新增了一头母猪&#xff0c;这条母猪数据要低延迟地同步到B系统。而不是A系统全表扫描一遍&#xff0c;然后全部同步到B系统。这种全扫描同步方法延迟非常大&#xff0c;尤其涉及到母猪大数据时&#xff0c;会…...

LeetCode 解题思路 18(Hot 100)

解题思路&#xff1a; 继承 LinkedHashMap&#xff1a; 内置双向链表&#xff0c;自动维护节点的插入顺序和访问顺序。LRU 淘汰逻辑&#xff1a; 覆盖 removeEldestEntry&#xff0c;当元素数量超过 capacity 时&#xff0c;移除最旧条目。removeEldestEntry 方法提供钩子&…...

基于Spring Boot的民宿租赁系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

Go红队开发—web网络编程

文章目录 web网络编程Req快速请求 调试DevModeDebugLogTraceInfo瓶颈分析 控制请求与响应控制请求的字段内容控制调试打印的内容分开dump请求与响应部分请求体设置 作用范围级别设置参数查询URL 路径参数表单请求设置请求头设置 判断响应状态码解析数据SetSuccessResultgjson响…...

ollama不安装到c盘,安装到其他盘

ollama 安装包默认安装到c盘&#xff0c;安装程序并没有提供选择文件夹安装功能&#xff0c;本来c盘就快满了&#xff0c;下几个模型c盘都快爆了&#xff0c;如何将ollma安装到其他盘呢&#xff1f; ollama 默认安装位置 C:\Users\Admin\.ollama 是 Ollama 用来放大模型的文件夹…...

【HTML】一、基础标签

文章目录 1、开发环境准备2、html介绍3、html基本骨架4、标签的关系5、常用标签5.1 标题5.2 段落5.3 换行与水平线5.4 文本格式化标签5.5 图像标签5.6 超链接标签5.7 音频标签5.8 视频标签 6、路径7、网页制作 1、开发环境准备 在编辑器中写代码&#xff0c;在浏览器中看效果 …...

NPU、边缘计算与算力都是什么啊?

考虑到灵活性和经济性&#xff0c;公司购置一台边缘计算机&#xff0c;正在尝试将PCGPU的计算机视觉项目转到边缘计算机NPU上。本文简单整理了三个概念&#xff0c;并试图将其做个概要的说明。 一、算力&#xff1a;数字世界的“基础能源” 1.1 算力是什么 **算力&#xff08…...

spring声明式事务原理01-调用第1层@Transactional方法(事务访问入口)

文章目录 【README】【步骤1】UserAppService调用userSupport.saveNewUser()【步骤2】获取到TransactionInterceptor【步骤3】chain不为空&#xff0c;接着执行CglibMethodInvocation#proceed方法【补充】AopContext作用 【步骤4】CglibMethodInvocation#proceed方法【步骤5】调…...

[MoeCTF 2021]babyRCE

打开题目在线环境可以看到&#xff1a; <?php$rce $_GET[rce]; if (isset($rce)) {if (!preg_match("/cat|more|less|head|tac|tail|nl|od|vi|vim|sort|flag| |\;|[0-9]|\*|\|\%|\>|\<|\|\"/i", $rce)) {system($rce);}else {echo "hhhhhhacke…...

【leetcode hot 100 114】二叉树展开为链表

解法一&#xff1a;执行一次先序遍历&#xff0c;把元素放入list中&#xff0c;然后放回root中 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { th…...

嵌入式八股,为什么单片机中不使用malloc函数

1. 资源限制 单片机的内存资源通常非常有限&#xff0c;尤其是RAM的大小可能只有几KB到几十KB。在这种情况下&#xff0c;使用 malloc 进行动态内存分配可能会导致内存碎片化&#xff0c;使得程序在运行过程中逐渐耗尽可用内存。 2. 内存碎片问题 malloc 函数在分配和释放内…...

基于Python的selenium入门超详细教程(第1章)--WebDriver API篇

学习路线 自动化测试介绍及学习路线-CSDN博客 ​自动化测试之Web自动化&#xff08;基于pythonselenium&#xff09;-CSDN博客 参照博文&#xff1a;selenium入门超详细教程——网页自动化操作-CSDN博客 目录 前言 一、WebDriver API介绍 1.1 什么是WebDriver? 1.2 工…...

IIC通信协议详解与STM32实战指南

IIC通信协议详解与STM32实战指南 引言 IIC&#xff08;Inter-Integrated Circuit&#xff09;是Philips公司开发的串行通信协议&#xff0c;广泛应用于传感器、EEPROM、RTC等低速外设的连接。本文深入解析IIC协议原理&#xff0c;并提供基于STM32的GPIO模拟实现方案&#xff…...

【算法】数组、链表、栈、队列、树

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 持续更新中...数组、链表点击消除环形链表环形链表 II 栈、队列树 持续更新中… 数组、链表 点击消除 AB5 点击消除 这个题很容…...

vscode 配置golang开发环境

vscode 配置golang开发环境 在go1.20环境中需要指定工具的安装版本 go install golang.org/x/tools/goplsv0.15.3 go install github.com/go-delve/delve/cmd/dlvv1.21.0使用go Install/Update tool安装工具会报错 go版本太低, 而很多时候为了项目稳定或风险太高, 我们不太希…...

uniapp APP使用web-view内嵌 h5 解决打包发版浏览器有缓存需要清除的问题

1.在当前项目根节点下的public目录下的index.html里面写入禁止缓存的 meta <!-- 解决前端发版缓存问题 start --><meta http-equiv"pragma" content"no-cache"><meta http-equiv"cache-control" content"no-cache, no-stor…...

机器学习与深度学习中模型训练时常用的四种正则化技术L1,L2,L21,ElasticNet

L1正则化和L2正则化是机器学习中常用的两种正则化方法&#xff0c;用于防止模型过拟合。它们的区别主要体现在数学形式、作用机制和应用效果上。以下是详细对比&#xff1a; 1. 数学定义 L1正则化&#xff08;也叫Lasso正则化&#xff09;&#xff1a; 在损失函数中加入权重参…...

LLM自动化评测

使用的数据集&#xff1a;ceval-exam import requests from datasets import load_dataset, concatenate_datasets import re from tqdm import tqdm import re, time, tiktoken, ollama from ollama import ChatResponse from ollama import Optionsdef llm(model, query, te…...

Android 英文文章选词

点击文章中的一个单词&#xff0c;获取它。 通过点击的坐标y来获取行数&#xff0c;通过x坐标获取字符偏移量&#xff0c;向前遍历匹配&#xff0c;向后遍历匹配&#xff0c;匹配不成功则跳出循环。截取开始位置和最后位置的字符串。 主要代码 public String getSelectText…...

56.HarmonyOS NEXT 登录模块开发教程(十):总结与展望

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT 登录模块开发教程&#xff08;十&#xff09;&#xff1a;总结与展望 文章目录 HarmonyOS NEXT 登录模块开发教程&#xff08;十&a…...

【Go每日一练】猜数字游戏

&#x1f47b;创作者&#xff1a;丶重明 &#x1f47b;创作时间&#xff1a;2025年3月16日 &#x1f47b;擅长领域&#xff1a;运维 目录 1.&#x1f636;‍&#x1f32b;️题目&#xff1a;猜数字游戏2.&#x1f636;‍&#x1f32b;️代码开发3.&#x1f636;‍&#x1f32b;…...

论文分享:PL-ALF框架实现无人机低纹理环境自主飞行

在室内仓库、地下隧道等低纹理复杂场景中&#xff0c;无人机依赖视觉传感器进行自主飞行时&#xff0c;往往会遇到定位精度低、路径规划不稳定等难题。针对这一问题&#xff0c;重庆邮电大学计算机学院雷大江教授团队在IEEE Trans期刊上提出了一种新型自主飞行框架&#xff1a;…...

element-plus中Autocomplete自动补全输入框组件的使用

目录 1.基本使用 ①从官网复制如下代码 ②查看运行效果 ③代码解读 2.调用后端接口&#xff0c;动态获取建议数据 结语 1.基本使用 ①从官网复制如下代码 <template> <div><!-- 自动补全输入框 --><el-autocompletev-model"state":fetc…...

【医学影像 AI】大型语言模型生成 ROP 患者信息材料的能力

【医学影像 AI】大型语言模型生成 ROP 患者信息材料的能力 0. 论文简介0.1 基本信息0.2 摘要 1. 引言2. 材料与方法2.1 大语言模型的使用2.2 可读性标准2.3 统计分析 3. 结果3.1 Bezirci-Yılmaz可读性评分3.2 Ateşman可读性评分3.3 全面性评分3.4 准确性评分 4. 讨论4.1 可读…...

(性能测试)性能测试工具 2.jmeter的环境搭建 3jmeter元件和4使用实例 5jmeter元件和参数化

目录 性能测试工具 性能测试工具 jemeter环境搭建 jmeter的常用目录介绍 jmeter修改语言和主题--jmeter界面的汉化 jmeter元件 jmeter元件和组件的介绍 jmeter的作用域原则 jmeter的执行顺序 案例&#xff1a;执行顺序 jmeter使用案例 jmeter线程组的介绍 jmeter…...

Matlab 四分之一车体车辆半主动悬架鲁棒控制

1、内容简介 略 Matlab 173-四分之一车体车辆半主动悬架鲁棒控制 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

Kafka可视化工具KafkaTool工具的使用

Kafka Tool工具 介绍 使用Kafka的小伙伴&#xff0c;有没有为无法直观地查看 Kafka 的 Topic 里的内容而发过愁呢&#xff1f;下面推荐给大家一款带有可视化页面的Kafka工具&#xff1a;Kafka Tool &#xff08;目前最新版本是 3.0.2&#xff09; 注意&#xff1a;以前叫Kafk…...