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

TA学习之路——1.4 MVP矩阵运算

1.变换矩阵的意义

1.将3D物体转化到2D平面
2.为各个空间的运用做准备

2.MVP矩阵代表什么

MVP矩阵分别是模型(Model)、观察(View)、投影(Projecttion)三个矩阵。我们顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为事件坐标(World Coordinate),观察坐标(View Coordinate),裁剪坐标(Clip Coordinate),并最后以屏幕坐标(Screen Coordinate)的形式结束。

2.1 M矩阵

模型空间->世界空间

以自身为中心的空间坐标系
在这里插入图片描述

以世界为中心的空间坐标系
在这里插入图片描述
从模型空间变换到世界空间
1.第一步进行了缩放
2.第二步进行了旋转
3.第三步进行了平移

对应的依次进行矩阵变换得出变换矩阵
M = [ 1 0 0 t x 0 1 0 t y 0 0 1 t z 0 0 0 1 ] [ cos ⁡ θ 0 sin ⁡ θ 0 0 1 0 0 − sin ⁡ θ 0 cos ⁡ θ 0 0 0 0 1 ] [ s x 0 0 0 0 s y 0 0 0 0 s z 0 0 0 0 1 ] M= \begin{bmatrix} 1 & 0 & 0 & t_x\\ 0 & 1 & 0& t_y\\ 0 & 0 & 1 & t_z\\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} \cos\theta & 0 & \sin\theta & 0\\ 0 & 1 & 0 & 0\\ -\sin\theta & 0 & \cos\theta & 0\\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} s_x & 0 & 0 & 0\\ 0 & s_y & 0 & 0\\ 0 & 0 & s_z & 0\\ 0 & 0 & 0 & 1 \end{bmatrix} M= 100001000010txtytz1 cosθ0sinθ00100sinθ0cosθ00001 sx0000sy0000sz00001

模型空间下的顶点坐标乘M矩阵就可以得到世界空间下的顶点坐标

2.1 V矩阵

世界空间->视觉空间
以摄像机为中心(为零点)的空间坐标系
在这里插入图片描述
V矩阵是将世界空间变换到摄像机空间

平移整个观察空间,摄像机原点和世界坐标原点重合,坐标轴重合

摄像机是在世界空间中是先旋转,再平移

为了让摄像机与世界坐标重合,逆变换

1.第一步进行平移
2.第二步进行旋转
3.第三步Z分量取反(左手坐标系的原因)

对应的依次进行矩阵变换得出变换矩阵
将摄像机坐标系原点移动到世界坐标系原点

V = [ 1 0 0 0 0 cos ⁡ θ − sin ⁡ θ 0 0 sin ⁡ θ cos ⁡ θ 0 0 0 0 1 ] [ 1 0 0 t x 0 1 0 t y 0 0 1 t z 0 0 0 1 ] V= \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & \cos\theta & -\sin\theta& 0\\ 0 & \sin\theta & \cos\theta& 0\\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 & t_x\\ 0 & 1 & 0& t_y\\ 0 & 0 & 1 & t_z\\ 0 & 0 & 0 & 1 \end{bmatrix} V= 10000cosθsinθ00sinθcosθ00001 100001000010txtytz1

2.2 P矩阵

视觉空间->裁剪空间
1.不是真正的投影,为投影做准备
2.目的:判断顶点是否在可见范围内。
3.P矩阵:对x,y,z分量进行缩放,用w分量做范围值。如果x,y,z都在w范围内,那么该点在裁剪空间内。

正交投影
在这里插入图片描述
通常同于2D游戏

透视投影
在这里插入图片描述
通常用于3D游戏
P 0 = [ 1 A s p e c t cot ⁡ F O V 2 0 0 0 0 cot ⁡ F O V 2 0 0 0 F a r + N e a r F a r − N e a r − 2 F a r N e a r F a r − N e a r 0 0 − 1 0 ] P_0=\begin{bmatrix} \frac {1} {Aspect}\cot \frac {FOV}{2} & 0 & 0 & 0 \\ 0 & \cot \frac {FOV}{2} & 0 \\ 0 & 0 & \frac {Far+Near} {Far-Near} & -\frac {2FarNear} {Far-Near}\\ 0 & 0 & -1 & 0 \end{bmatrix} P0= Aspect1cot2FOV0000cot2FOV0000FarNearFar+Near10FarNear2FarNear0
推导参考:https://blog.csdn.net/weixin_45724919/article/details/125368527?sharetype=blogdetail&sharerId=125368527&sharerefer=PC&sharesource=weixin_45724919&spm=1011.2480.3001.8118
shader控制代码

Shader "Unlit/NewUnlitShader 1"
{Properties{_MainTex ("Texture", 2D) = "white" {}//_ADis("A Distance", Float) = 0.0  // 无范围限制_ADis("A Distance", Range(0, 10)) = 1.0_GDis("G Distance", Float) = 1.0}SubShader{Tags { "RenderType"="Opaque" }LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag// make fog work#pragma multi_compile_fog#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0; // 绑定到纹理坐标//UNITY_FOG_COORDS(1)float4 vertex : SV_POSITION; //必须绑定到裁剪空间位置float3 viewPos : TEXCOORD1;// 绑定到纹理坐标1};sampler2D _MainTex;float4 _MainTex_ST;// 必须在此处声明 ↓↓↓float _ADis;  // 保持与Properties中名称完全一致float _GDis;v2f vert (appdata v){v2f o;//UNITY_SETUP_INSTANCE_ID 是 Unity 着色器中用于 初始化当前实例 ID 的宏,//主要服务于 GPU Instancing 技术。它的核心作用是通过设置全局变量 unity_InstanceID,//使着色器能够正确访问当前渲染实例的唯一标识符。UNITY_SETUP_INSTANCE_ID(v); // 必须位于着色器开头//UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO 是 Unity URP(Universal Render Pipeline)中用于初始化立体渲染(Stereo Rendering)顶点输出数据的宏,//主要解决 VR 或多目相机场景下左右眼视图的坐标变换问题。//它会根据当前渲染的视角(左眼 / 右眼)自动调整顶点输出中的位置和视图参数UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);//必须在顶点着色器的最开始调用,否则可能导致后续坐标计算错误//UnityObjectToClipPos(v.vertex) 是 Unity Shader 中的核心坐标变换函数,//其作用为:将模型顶点从对象空间(Object Space)变换到裁剪空间(Clip Space)。//这是所有顶点着色器必须执行的关键操作。o.vertex = UnityObjectToClipPos(v.vertex);//mul(UNITY_MATRIX_VP, mul(unity_ObjectToWorld, vertex))和MVP矩阵差不多//TRANSFORM_TEX 是 Unity Shader 中的纹理坐标变换宏,//其核心作用为:将原始UV坐标与材质属性的缩放(Tiling)和偏移(Offset)参数结合,生成最终采样用的UV坐标。o.uv = TRANSFORM_TEX(v.uv, _MainTex);//UNITY_TRANSFER_FOG(o,o.vertex);//UnityObjectToViewPos将顶点位置从模型空间转换到视图空间o.viewPos = UnityObjectToViewPos(v.vertex);return o;}fixed4 frag(v2f i) : SV_Target{//_ADis = 1;//_GDis = 1;// sample the texturefixed4 col = tex2D(_MainTex, i.uv);// apply fog//UNITY_APPLY_FOG(i.fogCoord, col);//saturate是Shader编程中的关键数学函数,//其功能是将输入值钳制(Clamp)到[0, 1]范围内,等价于 clamp(x, 0.0, 1.0),//但在GPU上具有更高的执行效率。float FadeAlpha = 1 - saturate((-i.viewPos.z - _ADis) / _GDis);col *= FadeAlpha;return col;}ENDCG}}
}

UnityShader参考地址
视频学习地址

相关文章:

TA学习之路——1.4 MVP矩阵运算

1.变换矩阵的意义 1.将3D物体转化到2D平面 2.为各个空间的运用做准备 2.MVP矩阵代表什么 MVP矩阵分别是模型(Model)、观察(View)、投影(Projecttion)三个矩阵。我们顶点坐标起始于局部空间(Local Space)…...

Java数据结构第二十期:解构排序算法的艺术与科学(二)

专栏:Java数据结构秘籍 个人主页:手握风云 目录 一、常见排序算法的实现 1.1. 直接选择排序 1.2. 堆排序 1.3. 冒泡排序 1.4. 快速排序 一、常见排序算法的实现 1.1. 直接选择排序 每⼀次从待排序的数据元素中选出最小的⼀个元素,存放在…...

【机器学习】主成分分析法(PCA)

【机器学习】主成分分析法(PCA) 一、摘要二、主成分分析的基本概念三、主成分分析的数学模型五、主成分分析法目标函数公式推导(梯度上升法求解目标函数)六、梯度上升法求解目标函数第一个主成分七、求解前n个主成分及PCA在数据预…...

perl、python、tcl语法中读写Excel的模块

perl、python、tcl语法中读写Excel的模块 perl、python、tcl语法中存在读写xls和xlsx格式的模块分别有: python ‌读取 Excel‌ ‌xlrd‌:支持传统 .xls 格式的读取‌ pandas‌:通过 read_excel() 方法支持 .xls 和 .xlsx 格式‌ ‌写入 …...

libwebsockets实现异步websocket客户端,服务端异常断开可重连

libwebsockets websocket客户端基本流程网上都有,我只额外优化了重连机制。 在服务器异常断开时不触发LWS_CALLBACK_CLOSED或LWS_CALLBACK_CLIENT_CONNECTION_ERROR,导致无法自动重连 通过定时检查链接是否可写入判断链接是否有效 // 判断wsi是否可用if …...

CAD球体密堆积3D插件V2.0

插件介绍 CAD球体密堆积3D插件V2.0版本可在AutoCAD内建立球体堆积模型,插件采取模拟球体在重力作用下的堆积行为,可生成超密堆积的几何模型及进行堆积过程的动态展示。 插件优化重力堆积物理引擎,新增堆积可视化界面,可直观查看…...

【Linux】线程池、单例模式、死锁

线程池 一.线程池1.日志和策略模式2.线程池1.Task.hpp2.Thread.hpp3.ThreadPool.hpp4.ThreadPool.cc 二.线程安全与重入问题三.线程安全的单例模式1.饿汉模式2.懒汉模式3.懒汉模式线程池1.ThreadPool.hpp2.ThreadPool.cc 四.死锁的概念1.死锁2.死锁的四个必要条件3.避免死锁 五…...

AI+视频监控电力巡检:EasyCVR视频中台方案如何赋能电力行业智能化转型

随着电力行业的快速发展,电力设施的安全性、稳定性和运维效率变得至关重要。传统视频监控系统在实时性、智能化及多系统协同等方面面临严峻挑战。EasyCVR视频中台解决方案作为一种先进的技术手段,在电力行业中得到了广泛应用,为电力设施的监控…...

centos8.0系统部署zabbix6.0监控

centos8.0系统部署zabbix6.0监控 一、部署过程1、确认系统版本2、主机基础环境设置3、安装MySQL 8.0数据库3.1 安装MySQL 8.0仓库3.2 安装软件3.3 设置root用户密码3.4 创建zabbix数据库,授权用户 4、配置zabbix6.0仓库5、安装zabbix服务端软件6、导入zabbix数据表7…...

江科大51单片机笔记【12】AT24C02(I2C总线)

写在前言 此为博主自学江科大51单片机(B站)的笔记,方便后续重温知识 在后面的章节中,为了防止篇幅过长和易于查找,我把一个小节分成两部分来发,上章节主要是关于本节课的硬件介绍、电路图、原理图等理论知识…...

电脑一直重启怎么解决 原因及解决方法

电脑一直重启的故障状态,不仅影响电脑的正常使用,还可能导致数据丢失或损坏。那么,电脑一直重启是什么原因呢?又该如何解决呢?下面将为大家介绍电脑一直重启的常见原因和解决方法,帮助您恢复电脑的正常工作…...

内网安全防护新思路 —— HFish + ELK 与 T-Pot 全面蜜罐系统比较分析

在当前网络安全环境日益复杂的背景下,企业和组织面临着来自外部与内部的多种威胁。为了更好地了解攻击者行为、捕获恶意活动并及时响应,部署蜜罐(Honeypot)系统已成为提升内网安全防护的重要手段。本文将重点介绍两种内网蜜罐防护…...

「 机器人 」扑翼飞行器通过总气动力控制四自由度运动方法

一、前言 在扑翼飞行中,总气动力(Total Aerodynamic Force)是指扑翼在运动过程中受到的所有空气动力作用的合力。它是由以下两种主要力的合成结果: 1. 升力(Lift, ):垂直于空气流方向的力,用于支持飞行器(或生物)的重量。 2. 阻力(Drag, ):平行于空气流方向的力,…...

写了一个二叉树构造函数和画图函数,方便debug

代码 class TreeNode(object):def __init__(self, val, leftNone, rightNone):self.val valself.left leftself.right rightdef construct_tree(nodes):if not nodes:return Noneroot TreeNode(nodes[0])queue [root]index 1while index < len(nodes):node queue.p…...

【prompt实战】知乎问题解答专家

本文原创作者&#xff1a;姚瑞南 AI-agent 大模型运营专家&#xff0c;先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗&#xff1b;多年人工智能行业智能产品运营及大模型落地经验&#xff0c;拥有AI外呼方向国家专利与PMP项目管理证书。&#xff08;转载需经授权&am…...

元组(Tuple)详解——c#

在C#中&#xff0c;元组&#xff08;Tuple&#xff09; 是一种轻量级的数据结构&#xff0c;用于将多个值组合成一个单一的对象。元组非常适合在不需要定义新类或结构体的情况下&#xff0c;临时存储和传递多个相关的值。 C# 中的元组有两种形式&#xff1a; 传统元组&#xf…...

Maven工具基础知识(一)

第一章、Maven概述 一、概述 官网地址&#xff1a;Welcome to Apache Maven – Maven Maven是一个基于Java的项目管理工具&#xff0c;专注于项目构建、依赖管理和项目信息标准化。其核心目标 是简化开发流程&#xff0c;通过标准化项目结构和自动化构建流程&#xff…...

AI模型的构建过程是怎样的(下)

你好,我是舒旻。 上节课,我们讲了一个模型构建的前 2 个环节,模型设计和特征工程。今天,我们继续来讲模型构建的其他 3 个环节,说说模型训练、模型验证和模型融合中,算法工程师的具体工作内容,以及 AI 产品经理需要掌握的重点。 模型训练 模型训练是通过不断训练、验证…...

力扣hot100_二叉树

二叉树的建立与遍历 #include <iostream> #include <vector> #include <queue> using namespace std;// 定义二叉树节点 struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} };// 函数&…...

如何制作Windows系统盘、启动盘?(MediaCreationTool_22H2)

文章目录 每日一句正能量前言一、准备工作二、制作启动盘后记 每日一句正能量 每个在你生命里出现的人&#xff0c;都有原因。喜欢你的人给你温暖关心。你喜欢的人让你学会爱和付出&#xff0c;不喜欢你的人让你自省成长。你不喜欢的人教会你宽容尊重&#xff0c;没有人是偶然出…...

分布式光伏发电的发展现状与前景

分布式光伏发电的发展现状与前景 1、分布式光伏发电的背景2、分布式光伏发电的分类2.1、集中式光伏发电2.1.1、特点、原则2.1.2、优点2.1.3、缺点 2.2、分布式光伏发电2.2.1、特点、原则2.2.2、优点2.2.3、缺点 2.3、对比 3、分布式光伏发电的现状4、分布式光伏发电的应用场景4…...

【AI大模型智能应用】Deepseek生成测试用例

在软件开发过程中&#xff0c;测试用例的设计和编写是确保软件质量的关键。 然而&#xff0c;软件系统的复杂性不断增加&#xff0c;手动编写测试用例的工作量变得异常庞大&#xff0c;且容易出错。 DeepSeek基于人工智能和机器学习&#xff0c;它能够依据软件的需求和设计文…...

NVIDIA k8s-device-plugin源码分析与安装部署

在《kubernetes Device Plugin原理与源码分析》一文中&#xff0c;我们从源码层面了解了kubelet侧关于device plugin逻辑的实现逻辑&#xff0c;本文以nvidia管理GPU的开源github项目k8s-device-plugin为例&#xff0c;来看看设备插件侧的实现示例。 一、Kubernetes Device Pl…...

面向联邦学习隐私保护的同态加密库优化算法研究

面向联邦学习隐私保护的同态加密库优化算法研究 一、引言 联邦学习作为一种新兴的分布式机器学习范式,允许各参与方在不共享原始数据的前提下协同训练模型,有效解决了数据孤岛和隐私保护问题。同态加密作为实现联邦学习隐私保护的关键技术之一,能够在密文上直接进行特定运算…...

20250212:linux系统DNS解析卡顿5秒的bug

问题: 1:人脸离线识别记录可以正常上传云端 2:人脸在线识别请求却一直超时 3:客户使用在线网络 思路:...

动态规划 -第1篇

前言&#xff1a;在计算机科学中&#xff0c;动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;是解决最优化问题的一种重要方法。通过将大问题拆解为小问题&#xff0c;动态规划不仅能够显著降低计算复杂度&#xff0c;还能提高效率。无论是经典的背包问…...

uni-app打包成H5使用相对路径

网上找了一圈&#xff0c;没用&#xff0c;各种试&#xff0c;终于给试出来了&#xff0c;导致打包之后请求的路径没有带上域名 直接去 config.js文件里面的baseUrl路径改成空字符就行了&#xff0c;千万别写/...

【每日学点HarmonyOS Next知识】swiper样式、日期选择、自定义弹窗键盘、文本组件换行、富文本适配

1、HarmonyOS swiper组件样式&#xff1f; 可在样式中设置即可&#xff0c;参考如下demo Entry Component struct SwiperDemo {private swiperController: SwiperController new SwiperController();build() {Column({ space: 5 }) {Swiper(this.swiperController) {Text(0)…...

STM32 I2C驱动开发全解析:从理论到实战 | 零基础入门STM32第五十步

主题内容教学目的/扩展视频I2C总线电路原理&#xff0c;跳线设置&#xff0c;I2C协议分析。驱动程序与调用。熟悉I2C总线协议&#xff0c;熟练调用。 师从洋桃电子&#xff0c;杜洋老师 &#x1f4d1;文章目录 引言一、I2C驱动分层架构二、I2C总线驱动代码精析2.1 初始化配置&a…...

Ragflow技术栈分析及二次开发指南

Ragflow是目前团队化部署大模型+RAG的优质方案,不过其仍不适合直接部署使用,本文将从实际使用的角度,对其进行二次开发。 1. Ragflow 存在问题 Ragflow 开源仓库地址:https://github.com/infiniflow/ragflow Ragflow 当前版本: v0.17.0 Ragflow 目前主要存在以下问题: …...

力扣hot100二刷——链表

第二次刷题不在idea写代码&#xff0c;而是直接在leetcode网站上写&#xff0c;“逼”自己掌握常用的函数。 标志掌握程度解释办法⭐Fully 完全掌握看到题目就有思路&#xff0c;编程也很流利⭐⭐Basically 基本掌握需要稍作思考&#xff0c;或者看到提示方法后能解答⭐⭐⭐Sl…...

【Godot4.3】斜抛运动轨迹曲线点求取函数

概述 原文写于去年9月。一篇测试性的文章。 基于初始位置和初始速度的抛物线 # 抛物运动轨迹曲线 - 基于初始位置和初始速度计算 func projectile_motion_curve(start_pos:Vector2, # 物体的起始位置velocity:Vector2, # 初始速度nums:int, …...

SpringBoot基础Kafka示例

这里将生产者和消费者放在一个应用中 使用的Boot3.4.3 引入Kafka依赖 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId> </dependency>yml配置 spring:application:name: kafka-1#kafka…...

【安卓逆向】安卓病毒介绍及其简单案例分析

目录 引言 一、Android 病毒介绍及分析方法 1.1 Android 病毒预览 1.2 Android 病毒分析必备知识 1.3 Android 病毒的常见类型及恶意行为 1.3.1 常见病毒类型 1.3.2 常见病毒行为 1.4 病毒激活条件 1.5 Android 病毒的传播方式 1.6 Android 病毒分析的一般方法 二…...

Git的命令学习——适用小白版

浅要了解一下Git是什么&#xff1a; Git是目前世界上最先进的的分布式控制系统。Git 和其他版本控制系统的主要差别在于&#xff0c;Git 只关心文件数据的整体是否发生变化&#xff0c;而大多数其他系统则只关心文件内容的具体差异。Git 并不保存这些前后变化的差异数据。实际上…...

Bad owner or permissions on ssh/config - 解决方案

问题 在Windows系统通过ssh连接远程服务器时报错&#xff1a; ssh [ssh_user][ip] Bad owner or permissions on C:\\Users\\[win_user]/.ssh/config原因 这是因为.ssh文件夹或.ssh/config文件的权限异常&#xff0c;当前Windows账号没有读写权限导致的。 Windows系统重装&a…...

AI 赋能软件开发:从工具到思维的全面升级

喜欢可以到主页订阅专栏 引言 在当今技术飞速发展的时代,人工智能(AI)正以前所未有的速度渗透到各个领域,软件开发行业也不例外。AI 不仅改变了开发工具的使用方式,更深刻地影响了开发者的思维模式和工作流程。从代码生成到错误检测,从性能优化到项目管理,AI 正在全面…...

【Ubuntu系统设置固定内网ip,且不影响访问外网 】

Ubuntu系统安装后&#xff0c;由于每次重新开机会被重新分配内网ip&#xff0c;所以我们可以设置固定内网ip&#xff0c;且不影响访问外网&#xff0c;亲测有效 打开【终端】&#xff0c;查看当前内网ip&#xff08;inet&#xff09;&#xff0c;子网掩码&#xff08;netmask&a…...

VSCode集成C语言开发环境

下载MinGW https://sourceforge.net/projects/mingw/ 点击download按钮下载exe文件到本地 点击exe文件安装 选择基础包和c编译版 vscode安装部分跳过 安装code runner和c/c插件 **(1) 创建 C 文件** 新建一个测试文件&#xff08;例如 hello.c&#xff09;&#xf…...

力扣:3305.元音辅音字符串计数

给你一个字符串 word 和一个 非负 整数 k。 返回 word 的 子字符串 中&#xff0c;每个元音字母&#xff08;a、e、i、o、u&#xff09;至少 出现一次&#xff0c;并且 恰好 包含 k 个辅音字母的子字符串的总数。 示例 1&#xff1a; 输入&#xff1a;word "aeioqq"…...

vscode接入DeepSeek 免费送2000 万 Tokens 解决DeepSeek无法充值问题

1. 在vscode中安装插件 Cline 2.打开硅基流动官网 3. 注册并登陆&#xff0c;邀请码 WpcqcXMs 4.登录后新建秘钥 5. 在vscode中配置cline (1) API Provider 选择 OpenAI Compatible &#xff1b; (2) Base URL设置为 https://api.siliconflow.cn](https://api.siliconfl…...

【ELK】ElasticSearch 集群常用管理API操作

目录 常用_cat 概览 集群状态 集群配置 集群磁盘使用 索引信息与配置 shard - 分片 查看段信息 nodes -节点 用户与权限 tasks 和 pending_tasks allocation - 均衡 thread_pool -线程 templete 模版 ILM 生命周期 其他 集群版本&#xff1a; 7.17.6 API地址&…...

BambuStudio学习笔记:MTUtils

# MTUtils.hpp 功能解析## 文件概述 该头文件提供了多线程同步工具和数值生成功能&#xff0c;主要包含以下组件&#xff1a;### 核心组件1. **自旋锁 (SpinMutex)**- 基于原子操作的高性能锁- 实现Lockable概念&#xff0c;可与标准库锁守卫配合使用2. **缓存对象模板 (Cached…...

DeepSeek开启AI办公新模式,WPS/Office集成DeepSeek-R1本地大模型!

从央视到地方媒体&#xff0c;已有多家媒体机构推出AI主播&#xff0c;最近杭州文化广播电视集团的《杭州新闻联播》节目&#xff0c;使用AI主持人进行新闻播报&#xff0c;且做到了0失误率&#xff0c;可见AI正在逐渐取代部分行业和一些重复性的工作&#xff0c;这一现象引发很…...

Ubuntu 22.04 安装配置 FTP服务器 教程

今天搞定在 Ubuntu 22.04 系统上安装和配置 VSFTPD &#xff0c;还会涉及防火墙设置、SSL/TLS 设置&#xff0c;以及创建专门登录 FTP 服务器的账户。开始&#xff01; 一、安装 VSFTPD 首先&#xff0c;咱得让系统知道有啥新软件包可以安装。打开终端&#xff0c;输入下面这…...

2021-05-28 C++自己写一个strcmp函数

规则 当s1<s2时&#xff0c;返回为负数-1&#xff1b; 当s1s2时&#xff0c;返回值 0&#xff1b; 当s1>s2时&#xff0c;返回正数1。 即&#xff1a;两个字符串自左向右逐个字符相比&#xff08;按ASCII值大小相比较&#xff09;&#xff0c;直到出现不同的字符或遇…...

版本控制器Git(3)

文章目录 前言一、分支管理策略二、Bug分支管理遇到Bug时的处理方法使用 git stash 暂存工作区内容创建并切换到Bug修复分支恢复之前的工作 三、临时分支的删除总结 前言 我们在上篇讲到了分支&#xff0c;现在我们就着这个继续来讲解&#xff01; 一、分支管理策略 master分支…...

TDengine 使用教程:从入门到实践

TDengine 是一款专为物联网&#xff08;IoT&#xff09;和大数据实时分析设计的时序数据库。它能够高效地处理海量的时序数据&#xff0c;并提供低延迟、高吞吐量的性能表现。在本文中&#xff0c;我们将带领大家从 TDengine 的安装、基本操作到一些高级功能&#xff0c;帮助你…...

Python Web项目的服务器部署

一.部署运行 1.虚拟环境的安装&#xff1a;&#xff08;一行一行运行&#xff09; wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh bash miniconda.sh -b -p /opt/miniconda3 echo export PATH"/opt/miniconda3/bin:$PAT…...

linux - ubuntu 使用时一些小问题整理 --- 持续更新

目录 ubuntu 中 root用户默认不存在解决办法 在Ubuntu系统中&#xff0c;将用户添加到sudoers文件中&#xff0c;使其能够以超级用户权限执行命令&#xff0c;通常可以通过以下几种方法实现&#xff1a; 方法1&#xff1a;将用户添加到sudo组 方法2&#xff1a;直接编辑sud…...