Unity--Cubism Live2D模型使用
了解LIVE2D在unity的使用--前提记录

了解各个组件的作用
Live2D Manuals & Tutorials


这些文件都是重要的控制动画参数的
Cubism Editor是编辑Live2D的工具,而导出的数据的类型,需要满足以上的条件
SDK中包含的Cubism的Importer会自动生成一个Prefab。
这个生成的Prefab是转换为Unity可以处理Live2D模型的版本。
可以从Hierarchy视图中操作参数和部件的显示。
了解一下Live2D的制作流程
1立绘分层_哔哩哔哩_bilibili
可以设置阴影、透明度、将人物分为多个部分部分,每个部分都可以有自己的变化曲线
达成最终的呈现效果,所以在Unity调动2D模型的时候,这些很多的变化要如何规范,这是一个盲区
旋转变形器 曲面 父子集 流畅度(带动周围格子变形)
透明度设置为0,需要切换发型则将新发型设置为1,原来的设置为0
可以整体依然用同一套物理

制作过程中也会存在分文件夹制作

对单个头发的部件控制
这样看,SDK的作用确实很重要了,把这些本来规定在Editor里的规则,搬运到unity里得到控制

头部的移动,但头发作为子物体,通过调整,达到保持了重力的垂直效果

眼部的闭合也是通过一个0~1的参数就可以控制变化
睫毛作为部件被变化曲线连带
闭眼不失去高光点
微笑,左右眼开闭,以及闭眼变成微笑融合的情况

这么复杂的变化,unity不能在自己的引擎里控制每一个部分的参数变化
所以需要外部提供变化的规则文件,就像给出多个int ,每个int 只能控制一个范围的变化,但凑起来可以达到在Editor里展现的效果
加速度,scale变化,xy的位置绑定,转换到具体的每一个unity物体
连带的曲面等等,则通过额外的连动计算脚本控制

头部的转向控制,xy控制,z控制大小
图片只需要一张就可以,其余的都是Editor下的对图片的各种物理变化
轻微的拉伸是合理的,并不会造成视觉上的怪异


里面也会有喷枪等额外添加的图片层,可能是贴在原图上,可能是新建资源,
但在unity里,如果是前者无变化,是后者则变化较大,
会涉及到新图的放置问题(但Editor也可以转换成参数控制显隐,以及像转动头部一样的xy控制,最后的模型的处理规则传递到SDK里,应该不会有什么变化)

最后的呈现效果真的很惊人,,资源是仅仅一个图集,但最后呈现的效果非常广,好强,,

每个部件的变化都有自己的 参数可以提供输出,,
每个部件也可以接受别的部件的输出 影响自身部件的变化倍率,变化幅度等等

9导出和按键表情包_哔哩哔哩_bilibili
最后一课导出,
每一个表情,衣服的透明度都单独调整为1,之前的设置为0,然后导出一个文件
每次都导出,每一个透明度替换状态对应一个按钮,就可以在电脑键盘上对应切换状态
---------------
回到unity控制Live2D
在Unity项目模型上 播放从Cubism Editor 输出的嵌入动画文件
.motion3.json在载入时会自动转变为Unity的动画格式AnimationClip
从Cubism Editor输出的嵌入动态文件连同包含它的文件夹拖放到Project视图中
经过该操作,AnimationClip将从.motion3.json生成、、也可以为生成的AnimationClip设置Loop
AnimationClip以曲线的形式拥有设置为模型各参数的值,此曲线上设置的参数的属性位于模型Prefab以下层次结构中。

Cubism Part 控制 Opacity透明度
Cubism Parameters则是 控制变化的参数
指定这些属性,则可以使用在Unity上创建的AnimationClip或程序
操作模型的参数和部件的不透明度
Cubism的 动画格式在 载入项目时会转变为AnimationClip,所以可以使用Animator管理 过渡和混合多个动态
在运行时导入模型 | SDK 教程 | Live2D Manuals & Tutorials
在3.0或更高版本中,处理已经完全重新设计,使用CusbimModel3Json.LoadAtPath导入模型后,调用.ToModel()即可显示模型。
另外,创建并显示Prefab,无需从脚本中编写.update()或.draw()的更新绘制,绘制也会更新。
自己用c#脚本实现对导入模型的“转unity”
在运行时导入模型 | SDK 教程 | Live2D Manuals & Tutorials
这一块附近的内容都相对关键一些,先找找现在有没有更简单的工具可以帮我实现,但我还没找过,关于这些复杂的控制先暂时停下
---
回到制作层面,现在可以接入Deepseek的API来回答出问题了
(这里是future,,还是打算用GPT的API了,)
完成了对话的内容,接下来需要达到的效果是什么样的:
Live2D只是交互的方式,是说话或Idle 的时候可以表现出的动画控制
接下来可以填入什么进去?
1.语音模型,达到朗读发音
....
---

再次回到对Live2D的模型unity里进行控制
Live2D Cubism 模型有 多个参数 用来控制 表情、动作、变形。常见参数:
| 参数名 | 功能 |
|---|---|
ParamAngleX | 头部左右旋转 |
ParamAngleY | 头部上下旋转 |
ParamAngleZ | 头部歪斜(倾斜) |
ParamEyeLOpen | 左眼开合(0=闭眼, 1=睁眼) |
ParamEyeROpen | 右眼开合 |
ParamEyeBallX | 眼球左右移动 |
ParamEyeBallY | 眼球上下移动 |
ParamMouthOpenY | 嘴巴开合(0=闭嘴, 1=张嘴) |
ParamMouthForm | 嘴型(-1=悲伤, 1=笑) |
ParamBodyAngleX | 身体左右旋转 |
ParamBodyAngleY | 身体上下移动 |
简单测试
public class Live2DControl : MonoBehaviour
{private CubismModel model; // Live2D 模型void Start(){model = GetComponent<CubismModel>(); // 获取模型组件}
}打印所有参数
void Start()
{model = GetComponent<CubismModel>();foreach (var param in model.Parameters){Debug.Log("参数名: " + param.Id + ",当前值: " + param.Value);}
}

52个参数,这个还算是简单的模型
.要做到可以控制各个参数,像虚拟主播一样:
EyeBlink | Cubism SDK 手册 | Live2D Manuals & Tutorials
---
CubismEyeBlinkController.Refresh()
CubismEyeBlinkController.EyeOpening
可以通过操作CubismEyeBlinkController.EyeOpening的值,将值应用于眨眼的参数
CubismEyeBlinkController在每帧的LateUpdate()时机
将CubismEyeBlinkController.EyeOpening的值应用于CubismEyeBlinkParameter标记的参数
Cubism SDK for Unity中,各组件的执行顺序由CubismUpdateController控制
---
刚才直接去看了Sample自带的场景,发现了一些可以直接引用的组件,达到实现追踪的效果

target就是挂载的游戏对象,会整体跟随移动
那大致要怎么控制的框架就有了
大致框架理解之后,Sample里的例子就很容易知道重点在哪一部分了



lookAt的动画变化,并不是由unity的animator控制的,此时挂在模型上的animator是空的
导入进来的Live2D模型实际上和 unity里的Motion调整动作没有关系,,或者说在导入之前,Editor里就已经把物理规则定的很标准,是不允许在unity里乱调不暴露出来的重要参数的

这些各种Controller就是整理好的,可以在unity中暴露被修改的部分
unity才是扒拉人家模型,强行想用到自己的引擎里,但Editor对这方面的规定比较完善和硬核,所以unity能改的地方并不多,
状态机可以做的,是安排各种条件,对应各种动作表情(这些也是Editor规定好的,不会为了unity bro去额外改什么规则),这样就可以把效果的控制全转移到C#的代码逻辑上了

这些动作也和状态机没有一点关系

但是参数的修改有时候在unity上没有很及时的同步,不知道是不是适配原因
这些动作的切换是Motion Controller控制的,但是layer count没有很及时的变换(unity也是够卑微 )


Fade Controller,应该就是动作之间切换的时候,透明度逐渐调为0的过程
所以需要list确保淡去哪个,显示哪个

这个动画就运用了状态机,让他自己切换播放

可以确定了,Live2D在unity里就是不能通过Animation播放这些动作的
但是Animation里的 Clip文件,对每个参数的变化的都是有记录的,这些内部参数又是不会暴露给unity的,所以无法通过Animation窗口查看,
但可以在Game窗口里,当状态切换的时候,会把对应的动作调用出来得到展示

每个状态上也挂了对应的观察脚本(应该是控制透明度切换,更换新的动作),并没有把控制权交给unity
进这个脚本里大致看看结构,也可以差不多的感觉到对切换的监控和准备切换为新状态



Cubism的射线检测
一个测试脚本,拖入模型之后,就可以检测到碰撞(也是Sample样本里的)

--------
animator又在一些时候有用,,
OW(Original Workflow,原始工作流)是 Live2D Cubism SDK for Unity 中的一部分,它提供了一系列 组件 和 脚本,用于管理 Live2D 模型的参数、动作、表情、姿势,让开发者可以通过 代码 轻松控制 Live2D 模型的各种表现。
你理解得 基本正确——OW 主要是 暴露出可以操作的参数,让开发者可以通过 C# 修改参数 以控制 Live2D 角色的各种行为,比如 表情、动作、姿势、过渡效果。
OW(Original Workflow)目录下的文件 主要包含以下功能:
文件 作用 CubismParameterStore存储参数值,可用于保存和恢复 Live2D 模型状态 CubismUpdateController管理参数更新,确保模型的参数随时间变化 Expression管理表情(类似 happy.face3.json这样的表情文件)Motion管理动作(如 Idle.motion3.json等)MotionFade处理动画淡入淡出,让不同的动画过渡更自然 Pose管理 Live2D 角色的姿势,用于防止角色姿势不自然
Expression | Cubism SDK 手册 | Live2D Manuals & Tutorials
Expression的文件创建,使用到Live2D上
下载了模型之后,检查有没有生成.asset文件(unity形式的expression和motion文件,下方的文本是json文件,是Cubism Editor 里做好的原始文件,unity并不能控制)


了解各个系统在unity中的使用之前,首先要清楚,unity在Live2D模型的控制力是很卑微的(在以后学习到别的资源引用的时候应该也会这样),
Editor做好的模型都在SDK里几乎自己解决了,给unity也不想unity乱用,所以暴露出来的可控区域很少,基本上OW文档里面说了什么,就只能用这些
Live2D 表情系统(Expression)
1. Expression
Live2D Expression 负责 控制表情,主要用于 眨眼、微笑、皱眉、惊讶 等 短时间的动态变化。
- 通过
.exp3.json文件定义表情参数(类似于“开心”、“惊讶”)。 - 通过
CubismExpressionController播放表情。 - 通过 加算(Additive)、覆盖(Override)、正片叠底(Multiply) 计算表情对参数的影响。
- Unity 的 Animator 没有“正片叠底”功能,所以需要 Expression 系统 处理表情混合。
2. 使用前提
在 Unity 里使用 Expression(表情系统) 之前,需要确保:
- Live2D 预制体(Prefab)已经包含:---SDK has done commonly
CubismUpdateControllerCubismParameterStore
- 有表情文件(.exp3.json):
- 需要从 Live2D Editor 导出,并转换成 Unity 可用的
.exp3.asset文件。
- 需要从 Live2D Editor 导出,并转换成 Unity 可用的
- 表情列表(.expressionList.asset):
- 管理多个表情,类似于“表情索引”。
3. 完整流程
1. 创建 .exp3.asset(表情数据)---SDK has done commonly
.exp3.asset 是 .exp3.json 的 ScriptableObject 版本,用于存储解析后的表情信息。
- 解析
.exp3.json,转换为CubismExpressionData - 创建
.exp3.asset - 不要手动修改
.exp3.asset,否则可能导致异常。
代码示例
// 解析 .exp3.json 并创建 .exp3.asset
expressionData = CubismExpressionData.CreateInstance(ExpressionJson);
AssetDatabase.CreateAsset(expressionData, AssetPath.Replace(".exp3.json", ".exp3.asset"));// 更新 Unity 资源库
EditorUtility.SetDirty(expressionData);
2. 创建 .expressionList.asset(表情列表)---SDK has done commonly
.expressionList.asset 是 管理表情 .exp3.asset 的列表。
- 这个文件 记录了当前模型支持的所有表情。
- 使用
CubismExpressionController通过 索引(CurrentExpressionIndex) 选择要播放的表情。
代码示例
// 获取现有的表情列表
var expressionList = AssetDatabase.LoadAssetAtPath<CubismExpressionList>(expressionListPath);// 如果不存在,创建新资产
AssetDatabase.CreateAsset(expressionList, expressionListPath);// 更新 Unity 资源
EditorUtility.SetDirty(expressionList);
3. 追加 .exp3.asset 到 .expressionList.asset---SDK has done commonly
每个模型的 .expressionList.asset 都需要绑定 .exp3.asset(表情数据)。
代码示例
// 追加新的 .exp3.asset
expressionIndex = expressionList.CubismExpressionObjects.Length;
Array.Resize(ref expressionList.CubismExpressionObjects, expressionIndex + 1);
expressionList.CubismExpressionObjects[expressionIndex] = expressionData;// 更新 Unity 资源库
EditorUtility.SetDirty(expressionList);
4. 通过 CubismExpressionController 播放表情
在 Unity 运行时,可以通过 CubismExpressionController.CurrentExpressionIndex 切换表情。

代码示例
using Live2D.Cubism.Framework.Expression;
using UnityEngine;public class ExpressionController : MonoBehaviour
{private CubismExpressionController expressionController;void Start(){expressionController = GetComponent<CubismExpressionController>();}void Update(){if (Input.GetKeyDown(KeyCode.H)){expressionController.CurrentExpressionIndex = 0; // 播放第一个表情}if (Input.GetKeyDown(KeyCode.S)){expressionController.CurrentExpressionIndex = 1; // 播放第二个表情}}
}
🔹 说明
CurrentExpressionIndex = 0→ 切换到happy.exp3.assetCurrentExpressionIndex = 1→ 切换到sad.exp3.asset- 必须 绑定
CubismExpressionController组件。
5. 让表情有“淡入淡出”效果
每个表情有:
FadeInTime(淡入时间)FadeOutTime(淡出时间)
在 切换表情时,应该 设置上一个表情的 ExpressionEndTime,让它正确淡出。
代码示例
// 让上一个表情淡出
if (_playingExpressions.Count > 0)
{var playingExpression = _playingExpressions[_playingExpressions.Count - 1];playingExpression.ExpressionEndTime = playingExpression.ExpressionUserTime + playingExpression.FadeOutTime;_playingExpressions[_playingExpressions.Count - 1] = playingExpression;
}
🔹 这个代码会 自动计算表情的过渡时间,让表情更流畅。
6. 计算表情并应用
表情在每帧更新时,系统会计算新表情的值,并应用到 CubismParameter 里。
- 表情数据结构
字段 作用 Type.exp3.json类型FadeInTime表情淡入时间 FadeOutTime表情淡出时间 Weight影响权重(0 ~ 1) ExpressionUserTime播放时间 ExpressionEndTime退出时间 Destinations影响的 Live2D 参数 Value表情应用到参数的值 Blend计算方式(Override、Additive、Multiply)
Live2D SDK 通过 CubismExpressionController.OnLateUpdate() 计算表情参数的最终值。
必须在 ParameterStore.SaveParameters() 之后应用表情,否则会导致参数错误。
测试表情的代码
using Live2D.Cubism.Framework.Expression;
using UnityEngine;public class ExpressionController : MonoBehaviour
{private CubismExpressionController expressionController;void Start(){expressionController = GetComponent<CubismExpressionController>();}void Update(){if (Input.GetKeyDown(KeyCode.E)){expressionController.CurrentExpressionIndex++;if (expressionController.CurrentExpressionIndex >= expressionController.ExpressionsList.CubismExpressionObjects.Length){expressionController.CurrentExpressionIndex = -1;}Debug.Log(expressionController.CurrentExpressionIndex);}}
}
模型的Render错位
模型导入到LIVE2D场景之后,会出现这样的问题,因为Editor里的图层顺序安排,在unity里并不适用,要在RenderController里设置后-前 Order,这样部件的排序(大概率是SDK做的Order)就可以改掉unity的展示问题


功能实现记录
梳理一下自己的需求,视线追踪要实现,自由切换表情,,,(这个可能还要结合一下语音内容什么的,已经有动作了,表情要怎么处理,,,这个还得考虑)
--------------
AnimationClip以曲线的形式拥有设置为模型各参数的值,此曲线上设置的参数的属性位于模型Prefab以下层次结构中。(Value在Inspector中隐藏)
[模型根]/Parameters/[参数ID]/Cubism Parameters/Value
----
SDK会带来自己的状态机文件,和动画clip
这些clip都是json转出来的适用于unity的动作控制
clip动画和对模型的控制的其他组件功能是分开的,不会产生重叠的问题
通过使用Motion,您可以从脚本播放动画,而无需使用Unity的Mecanim构建状态机
要使用Motion,您需要CubismFadeController组件和Unity的Animator。
如果在Animator组件中设置AnimatorController,则不会播放Motion,而是播放AnimatorController的动画


但加上也是可以的,只不过和Clip的动画会有一些出入,比如覆盖clip里规定 的各个参数变化,眼睛一直保持某个状态不变等
加于不加并不冲突

太多类型如果都去记,就很消耗时间,var这个类型前缀,用的很多是有原因的

注意,Center是target 对象身上的中心,是可以不拖的,默认就把target物体的中心做中心来计算
(因为是鼠标,所以可能这个地方的lookAt功能并不是很能体现出Center的位置重要性)

参数中,将名为CubismLookParameter的组件附加到希望跟踪的gameobject
最后,准备要跟踪的对象。
在CubismLookController组件的[Target]中,设置实装[ICubismLookTarget]接口的组件。
加look parameter组件一定要加载对应的gameobject上

视线追踪和点击头、身体的随机动画是做好了
----

关于这个自动眨眼,一些模型会自带的做上去,附加上Controller

mao这个模型就附带了,也不用加auto blink input了
-----
口形同步设置

关于blend mode,大多默认是multiply,这样就是如果有别的部分在操作参数,自己则不使用参数
additive就是附加,“正片叠底”
override就是完全控制该blend下的全部参数

MouthMovement包含作为输入范例,根据AudioSource的音量和Sin波操作嘴巴开合值的组件。
此次附加一个名为 CubismAudioMouthInput 的组件,以便您可以从AudioSource设置值。

Sampling Quality:设置要采样的音量的精度。设置的阶数越低,精度越高,计算负载越大。
Gain:设置以多少倍的值处理采样音量。1为等倍
Smoothing:设置从音量计算的开/关值平滑化多少。值越高,则越平滑,但也会增加计算负载
最后,要获取音量,将AudioSource拖入 CubismAudioMouthInput的Audio Input

-----
最后,就是接入语音模型了,也是不怎么了解的领域,先了解一下吧
相关文章:
Unity--Cubism Live2D模型使用
了解LIVE2D在unity的使用--前提记录 了解各个组件的作用 Live2D Manuals & Tutorials 这些文件都是重要的控制动画参数的 Cubism Editor是编辑Live2D的工具,而导出的数据的类型,需要满足以上的条件 SDK中包含的Cubism的Importer会自动生成一个Pref…...
Vue.js 3 的设计思路:从声明式UI到高效渲染机制
目录 一、声明式UI与虚拟DOM的灵活性 二、渲染器:虚拟DOM到真实DOM的桥梁 三、组件的本质与实现 四、编译与运行时的协同优化 五、性能与可维护性的权衡 总结 Vue.js 3 作为新一代前端框架,其设计理念在声明式UI描述、虚拟DOM优化、组件化架构…...
部署前后端项目
部署项目 liunx 软件安装 软件安装方式 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 建议nginx、MySQL、Redis等等使用docker安装,会很便捷,这里只演示JDK、ngxin手动的安装 安装JDK 上述我…...
Vue Diff算法原理深度解析:如何高效更新虚拟DOM?
文章目录 1. 为什么需要Diff算法?2. Diff算法核心原则3. 核心流程图解4. 核心代码实现(简化版)5. Key的重要性示例6. 算法优化策略7. 时间复杂度优化8. 与其他框架的对比9. 总结 1. 为什么需要Diff算法? 在Vue的响应式系统中&…...
Dify平台部署记录
安装dify项目 官网地址:http://difyai.com/ github地址:https://github.com/langgenius/dify 下载项目: git clone https://github.com/langgenius/dify.git下载过慢,直接访问网页下载zip压缩包: 解压,…...
ArcGIS Pro中字段的新建方法与应用
一、引言 在地理信息系统(GIS)的数据管理和分析过程中,字段操作起着至关重要的作用。 无论是进行地图制作、空间分析还是数据统计,字段都是承载属性信息的基本单元。 ArcGIS Pro作为一款功能强大的GIS软件,为用户提…...
Git 的基本概念和使用方式。
Git 是一种分布式版本控制系统,用于跟踪文件和目录的变化。Git 的基本概念和使用方式如下: 仓库(Repository):Git 仓库是用来存储项目文件和历史记录的地方。一个 Git 仓库包含项目的文件、版本记录和配置信息。 提交…...
贪心算法--
1.柠檬水找零 link:860. 柠檬水找零 - 力扣(LeetCode) code class Solution { public:bool lemonadeChange(vector<int>& bills) {// 贪心算法, 优先花出大面额bill, 尽可能保护小面额billint five 0, ten 0;// 不…...
mysql下载与安装、关系数据库和表的创建
一、mysql下载: MySQL获取: 官网:www.mysql.com 也可以从Oracle官方进入:https://www.oracle.com/ 下载地址:https://downloads.mysql.com/archives/community/ 选择对应的版本和对应的操作系统&a…...
万字技术指南STM32F103C8T6 + ESP8266-01 连接 OneNet 平台 MQTT/HTTP
此博客为一份详细的指南,涵盖 STM32F103C8T6 通过 ESP8266-01 连接 OneNet 平台,并使用 MQTT/HTTP 进行数据通信的完整流程。这份文档包括: OneNet 平台的介绍与功能概览在 OneNet 上创建和配置设备的方法STM32CubeIDE 的开发环境搭建ESP826…...
MWC 2025 | 紫光展锐联合移远通信推出全面支持R16特性的5G模组RG620UA-EU
2025年世界移动通信大会(MWC 2025)期间,紫光展锐联合移远通信,正式发布了全面支持5G R16特性的模组RG620UA-EU,以强大的灵活性和便捷性赋能产业。 展锐芯加持,关键性能优异 RG620UA-EU模组基于紫光展锐V62…...
PyCharm 接入 DeepSeek、OpenAI、Gemini、Mistral等大模型完整版教程(通用)!
PyCharm 接入 DeepSeek、OpenAI、Gemini、Mistral等大模型完整版教程(通用)! 当我们成功接入大模型时,可以选中任意代码区域进行解答,共分为三个区域,分别是选中区域、提问区域以及回答区域,我…...
小智智能体语言大模型硬件软件开发
硬件可以参考ESP32-AI语音助手 - 立创开源硬件平台 单片机使用esp32s3,可以直接替换,但是引脚IO有变化,而且esp32s3 io35 36 37不能用,所以得飞一条线,原先接在io35的飞到io4上。如果不飞线的话系统一直重启 软件使用…...
网络tcp协议设置,网络tcp协议设置不了
网络TCP协议的设置通常涉及到多个方面,包括IP地址、子网掩码、默认网关、DNS服务器等参数的配置,以及TCP/IP协议栈本身的配置。如果遇到网络TCP协议设置不了的问题,可能是由多种原因导致的。以下是一些可能的原因及解决方法: 一、…...
配置Hadoop集群
Hadoop的运行模式 本地运行:在一台单机上运行,没有分布式文件系统,直接读写本地操作系统的文件系统。特点:不对配置文件进行修改,Hadoop 不会启动 伪分布式:也是在一台单机上运行,但用不同的 …...
模型微调-基于LLaMA-Factory进行微调的一个简单案例
模型微调-基于LLaMA-Factory进行微调的一个简单案例 1. 租用云计算资源2. 拉取 LLaMa-Factory3. 安装依赖环境4. 启动 LLaMa-Factory 界面5. 从 Huggingface 下载模型6. 模型验证7. 模型微调 1. 租用云计算资源 以下示例基于 AutoDL 云计算资源。 在云计算平台选择可用的云计…...
设置重定向不缓存
response.setHeader(“Cache-Control”, “no-cache, no-store, must-revalidate”); response.setHeader(“Pragma”, “no-cache”);response.setHeader(“Expires”, “0”);response.sendRedirect(newURL); response.setContentType(“text/html;charsetUTF-8”); PrintWr…...
java-算法基础优化
一、ACM风格输入输出(高效,替换原有的输入输出流) 1.推荐原因:(内存托管) 对于原本的Scanner读取流,只能根据行来读取数据,而BufferredReader读取信息可以直接读取整个文件…...
⚡ 回声谷即时通讯系统
基于SpringBootVue3的实时通信解决方案 🌟 核心特性 #mermaid-svg-uxEwEcjlUVI6Tjjf {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-uxEwEcjlUVI6Tjjf .error-icon{fill:#552222;}#mermaid-svg-uxEwEcjl…...
《 PyQt5》—— 创建 Python GUI(图形用户界面)
文章目录 PyQt5安装基本概念进行配置配置QtDesigner配置PyUIC配置Pyrcc 使用PyQt5使用如何使用ui文件 PyQt5 PyQt5 是一个用于创建 Python GUI(图形用户界面)应用程序的强大工具包,它是 Qt 应用程序框架的 Python 绑定。Qt 是一个跨平台的 C…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...
sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...
WEB3全栈开发——面试专业技能点P4数据库
一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库,基于 mysql 库改进而来,具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点: 支持 Promise / async-await…...

