自由学习记录(15)

news2024/11/6 0:07:43

Java注解

else if的省略问题(可能看花)

else if也是取最近的if连通,看上去加了{}就可以正常执行了,缩进要命,不提示真容易看错,

组合数公式和数组参数

在 C++ 中,数组作为函数参数时,实际上是以指针的形式传递的,因此它是引用的。修改数组的内容会影响原始数组。

c++里正常数组是引用,vector不同,是默认复制一个备份,然后再Java和c#里,只要是数组,就是引用类型

  • C++:

    • 正常数组(如 int arr[])在函数参数中表现为指针,实际上是通过引用(指向数组的首元素)来传递的。因此,任何修改都会影响原始数组。
    • std::vector 默认是按值传递(复制一份),但可以通过引用传递(std::vector<int>& vec)来避免复制,从而影响原始的 vector
  • Java:

    • 数组是对象,所有数组(如 int[] arr)都是引用类型。因此,传递数组时,是通过引用传递的,任何修改都会影响原始数组。
    • ArrayList 也是对象,行为类似。
  • C#:

    • 数组同样是引用类型(如 int[] arr),通过引用传递,修改会影响原始数组。
    • List<T> 也是引用类型,传递方式相同。

SQL复杂查询

存在量词、全称量词、集合运算(如 IN)和连接运算(如 JOIN

存在量词、全称量词、集合运算(如 IN)和连接运算(如 JOIN)是 SQL 中处理查询的重要概念。它们之间的关系及可替换性取决于具体的语义和上下文。以下是它们的关系及是否可以互相替换的分析。

1. 存在量词 (EXISTS)

  • EXISTS 用于判断是否存在至少一条记录满足某个条件。其语法通常是 WHERE EXISTS (子查询)

2. 全称量词 (ALL)

  • ALL 用于检查某个条件是否对集合中的所有元素都成立。其语法通常是 WHERE column_name OPERATOR ALL (子查询)
    SELECT ProductName
    FROM Products
    WHERE Price < ALL (
        SELECT Price
        FROM Products
        WHERE Category = 'Electronics'
    );
    

    这里查询的是所有电子产品中,价格低于其他所有电子产品的产品。

3. 集合运算 (IN)

  • IN 运算符用于检查某个值是否在一个特定的集合中。其语法通常是 WHERE column_name IN (子查询或值列表)
  •  
    SELECT CustomerName
    FROM Customers
    WHERE CustomerID IN (
        SELECT CustomerID
        FROM Orders
    );
    

    这里查询的是有订单的所有客户。

4.连接运算 (JOIN)

  • JOIN 是一种将多个表的数据结合起来的方式。通过连接条件将相关表的记录组合。

-- 使用 EXISTS
SELECT CustomerName
FROM Customers c
WHERE EXISTS (
    SELECT 1
    FROM Orders o
    WHERE o.CustomerID = c.CustomerID
);

-- 使用 IN
SELECT CustomerName
FROM Customers
WHERE CustomerID IN (
    SELECT CustomerID
    FROM Orders
);
SELECT c.CustomerName
FROM Customers c
WHERE NOT EXISTS (
    SELECT 1
    FROM Orders o
    WHERE o.CustomerID = c.CustomerID
);

select 1

为什么选择 SELECT 1

  • 效率SELECT 1 通常被认为是更有效率的,因为数据库不需要返回任何实际数据行。只要存在至少一条记录,数据库就会返回真值。
  • 语义清晰:使用 1NULL 等常数可以清楚地表明你关心的是记录的存在性,而不是具体的返回值。

3. 可以用 SELECT 2SELECT 3 吗?

是的,你可以用 SELECT 2SELECT 3,甚至 SELECT *,但在这个上下文中,这些选择没有实际意义,因为你并不关心返回的具体值。例如:

  • SELECT 2SELECT 3 也能起到相同的作用,但返回值会有所不同。
  • 如果你用 SELECT *,可能会导致性能下降,因为数据库会试图返回所有列的信息,而在这里并不需要。

NOT EXISTS

NOT EXISTS() 是一个用于检查子查询返回的结果集是否为空的运算符。它返回 TRUE 当子查询没有返回任何行时。这在检查某个条件是否不成立时非常有用。

语法分解

  1. 主查询

    • SELECT c.CustomerName:选择 Customers 表中的客户名称。
    • FROM Customers c:指定从 Customers 表中查询,给这个表一个别名 c
  2. 子查询

    • WHERE NOT EXISTS (...):这一部分用于检查条件,如果子查询中的条件不成立,则主查询的当前记录会被返回。
    • SELECT 1 FROM Orders o:从 Orders 表中选择,给这个表一个别名 oSELECT 1 是一个常用的写法,因为我们只关心是否存在记录,而不是具体的内容
    • WHERE o.CustomerID = c.CustomerID:这是条件,检查 Orders 表中的 CustomerID 是否与主查询中的客户 c.CustomerID 相匹配。

整体逻辑

  • 这个查询的逻辑是:对于每一个客户,检查是否存在与该客户编号匹配的订单。如果没有匹配的订单(即 NOT EXISTS 为真),那么这个客户的名称会被返回。

SELECT c.CustomerID, 
       c.CustomerName, 
       p.ProductID, 
       p.ProductName, 
       od.Quantity, 
       od.Amount
FROM Customers c
JOIN Orders o ON c.CustomerID = o.CustomerID
JOIN OrderDetails od ON o.OrderID = od.OrderID
JOIN Products p ON od.ProductID = p.ProductID
WHERE c.CustomerID IN (
    SELECT CustomerID
    FROM Orders o
    JOIN OrderDetails od ON o.OrderID = od.OrderID
    GROUP BY o.CustomerID
    HAVING COUNT(DISTINCT od.ProductID) >= 3
)
ORDER BY c.CustomerID, p.ProductID;
  • 主查询部分

    • 选择 CustomerIDCustomerName 等字段,以便获取满足条件客户的每条订单明细记录。
  • 子查询部分

    • 计算每位客户订购的商品种类数 COUNT(DISTINCT od.ProductID)
    • 使用 HAVING 过滤出订购商品种类数不少于3的客户编号 CustomerID
  • 条件筛选

    • 主查询根据子查询结果筛选出符合要求的客户的所有订单明细,并按 CustomerIDProductID 排序。

IK和换装功能

在 Unity 中,IK 指的是 Inverse Kinematics(反向运动学),子对象的移动可以让父对象受牵连,正常来说是父物体移动,子对象完全的follow。IK 是一种动画技术,主要用于让角色的身体部位(如手、脚)能够自动到达某个目标位置,并自动调整其他相关的骨骼和关节姿势,达到更加自然的动画效果。

IK 的原理

IK 是逆向计算的,给定目标位置(比如角色要触摸的物体),系统会自动计算出骨骼关节的角度和位置,让角色的手或脚自然地到达目标。而传统的 Forward Kinematics(正向运动学,FK) 则是逐个控制每个关节的角度来影响末端的姿势

  • IK(Inverse Kinematics):知道手或脚的目标位置,通过反向计算得出整个手臂或腿部的关节姿态。
  • FK(Forward Kinematics):直接控制每个关节的旋转来实现末端的位置控制。

Unity 中的 IK 实现

Unity 提供了内置的 IK 功能,特别是在使用 Animator 控制的角色模型时,比如 Unity 的 Humanoid 角色模型。常见的 IK 控制包括手部和脚部,Unity 中的 Animator 组件可以轻松设置 IK 目标:

  • Animator.SetIKPositionAnimator.SetIKRotation:用于设置手或脚的目标位置和旋转。
  • Animator.SetIKPositionWeightAnimator.SetIKRotationWeight:用于设置目标权重值(0 到 1 之间),用于平滑调整到目标。

如何使用 IK

IK听着好像吓人,其实也就是做动画更偷懒的工具

正常来说做动画配状态机,把每个动作的关键帧都要做掉,谁做的下去

帮助把部分整体骨骼的移动控制转移到某个点上,就是IK点

Package找不到也是可能的

可能找不到2D IK,正常

target是帮你生成的对象,只不过立刻关联了,看上去像自己挂的

这个Fabrik Solver就可以反向

反转可以让骨骼正常

换装相关

2D骨骼

psb很方便,美术用ps的可以摆好让我们调整

如果没有看到白色的骨骼,记得点gizmos

上面的两个滑动条,左边的是骨骼的透明度,右边的是权重的颜色表现深度

用算法的算力换取内存,少存一些图片

如果没有橙色边缘线,就双击图片选中

Input.GetAxisInput.GetAxisRaw

在 Unity 中,Input.GetAxisInput.GetAxisRaw 都是用于获取输入轴的值(如水平轴 Horizontal 和垂直轴 Vertical),但它们在响应方式上有一些不同:

1. 平滑插值(Smoothing)

  • Input.GetAxis:返回的值是平滑插值的。换句话说,当你按下某个按键或移动控制杆时,值会逐渐从 0 增加到 1 或从 1 减少到 0。Unity 会为这种输入做插值,使得输入响应更平滑。这对于角色移动、摄像机旋转等需要柔和过渡的操作非常有用。
  • Input.GetAxisRaw:直接返回输入的原始值(-101),没有任何插值。适合需要即时反馈的操作,比如快速方向调整或控制射击等对响应时间要求高的场景。

2. 适用场景

  • Input.GetAxis:用于平滑输入场景,比如角色缓慢移动、渐变的加速。
  • Input.GetAxisRaw:用于即时输入场景,比如菜单选择或方向快速切换,避免平滑延迟。

3. 示例代码

假设你的项目中有一个对象需要左右移动:

float speed = 5f;

void Update() { // 使用 GetAxis 实现平滑移动

float moveSmooth = Input.GetAxis("Horizontal") * speed * Time.deltaTime; transform.Translate(moveSmooth, 0, 0); // 使用 GetAxisRaw 实现即时移动

float moveInstant = Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime; transform.Translate(moveInstant, 0, 0); }

  • 使用 GetAxis 时,对象移动会有加速和减速的效果。
  • 使用 GetAxisRaw 时,对象会立即开始或停止移动。

Input.GetAxisRawInput.GetAxis 的返回值都是 float 类型,而不是 int。虽然 Input.GetAxisRaw 的返回值通常是 -101,但这些值仍然是 float 类型的,并非整数。

具体返回值

  • Input.GetAxisRaw 返回的值范围在 -101 之间,用于表示输入的原始方向状态。例如:

    • 键盘:当按下 “A” 键时,Input.GetAxisRaw("Horizontal") 会返回 -1.0(代表向左的方向),按下 “D” 键时返回 1.0(向右的方向)。
    • 手柄:控制杆的左右或上下方向会直接返回 -1.01.0,没有插值。
  • Input.GetAxis 返回 -1.01.0 之间的平滑浮点数,用于处理插值输入,因此可能返回任意浮点值。

Animator和Animation

这里强转不存在丢失的问题,因为如果按了移动给的直接就是1和-1

float 类型强转成int,float在animator里不能像int一样可以equal

想要强行使用也是不可以的,除了能在animator窗口里面看上去在动,其他都是不能融合的

调试的跳出,逐过程和逐语句

逐语句调试会按代码的每一行执行,而不会进入被调用的函数内部。

逐过程调试会进入当前执行的函数内部,逐行查看函数内的代码执行。

进入一个函数后,通过“跳出”调试可以执行剩余代码,直接跳回到该函数被调用的地方。

Awake和Start到底什么时候调用

awake是场景上任意的游戏对象,在运行状态时首次被激活会调用的函数

Start则是在该游戏物体处于激活状态,脚本本身第一次被激活的时候调用

awake是对象的激活,start是脚本的第一次激活,也不管别的脚本有没有调自己里面的内容 

怎么把电脑正在播放的音频录制下来

下载之后,真相大白,很明显的,

点录制就可以了,不要麦克风声音就在混音器那块把麦克风关了,

还有就是录的默认是视频,如果你只要声音,把录制得到的文件后缀改.mp3就OK了

1. 下载并安装 OBS Studio

确保你已经下载并安装了 OBS Studio。如果没有,可以从 OBS 官方网站 下载并安装。

2. 设置 OBS Studio

  1. 打开 OBS Studio: 启动 OBS Studio。

  2. 创建新场景

    • 在左下角的“场景”框中,点击“+”按钮创建一个新场景(例如,命名为“音频录制”)。
  3. 添加音频源

    • 在下方的“源”框中,点击“+”按钮。
    • 选择“音频输出捕捉”(Audio Output Capture)。
    • 给音频源命名,然后点击“确定”。
    • 在弹出的窗口中,选择你的音频设备(如“立体声混音”或“系统声音”),然后点击“确定”。
  4. 检查音频设置

    • 在主界面右下角,确保“音量混音器”中的音频源音量调节到适当水平。

3. 开始录制

  1. 开始录制

    • 在右下角点击“开始录制”按钮。
    • 播放你想要录制的音频(例如,音乐、视频等)。
  2. 停止录制

    • 完成录音后,返回 OBS Studio,点击“停止录制”按钮。

4. 查找录音文件

  • 默认情况下,录音文件会保存到 OBS 的默认路径中(通常是在 视频 文件夹下),你可以通过点击“文件” > “显示录制的剪辑”来快速找到录音文件。

5. 检查录音效果

  • 播放录制的音频文件,检查录音效果。如果需要,可以根据需要调整 OBS 中的音量和设置。

小贴士

  • 使用监控:如果你希望在录制时监听音频,可以右键点击音频源,选择“属性”,然后在“高级”选项中启用音频监控。
  • 设置输出格式:在“设置” > “输出”中,你可以调整录音的格式和质量。

blend文件怎么用到unity里

.blend 文件是 Blender 的原生文件格式,包含了3D模型、材质、纹理、动画等信息。要将 .blend 文件导入到 Unity 中,通常可以按照以下步骤操作:

导入到 Unity

Unity 会自动识别并导入放在 Assets 文件夹中的 .blend 文件。你可以在 Unity 编辑器的“项目”窗口中看到它。

使用 Blender 文件

  • 拖放使用:将导入的模型从项目窗口拖到场景中。
  • 材质与纹理:如果在 Blender 中设置了材质,Unity 会尝试导入这些设置。但可能需要手动调整材质属性,因为 Blender 和 Unity 使用的渲染引擎不同。

动画(可选)

如果你的模型包含动画,确保在 Blender 中正确设置了动画,并在 Unity 中检查动画是否正常工作。

更新模型

如果在 Blender 中对 .blend 文件进行了修改,Unity 会自动更新模型。如果未自动更新,可以尝试右键单击模型并选择“Reimport”。

小贴士

  • 使用较新的 Blender 版本,因为 Unity 对 .blend 文件的支持在不同版本中有所不同。
  • 如果遇到导入问题,可以考虑将模型导出为更通用的格式,如 FBX 或 OBJ,这些格式在 Unity 中的兼容性更好。

vector的成员方法

  • push_back(value):在末尾添加元素 value
  • pop_back():移除末尾的元素。

 

不管Object被不被激活,Awake函数都会被执行。这时,我们手动勾选一下Start Awake Test前面的勾选框,结果就和第一幅图一样啦,Start和Update都开始被执行了。

我们知道Unity的Find函数可以根据名字查询到场景中的物体,但是这个物体必须是被激活的,如果我们把这个物体SetActive(false)了,那么这个函数是找不到对应物体的。

Unity中Awake和Start的区别_unity awake和start的区别-CSDN博客

lambda加

using UnityEngine;
using UnityEngine.UI;

public class ButtonHandler : MonoBehaviour
{
    public Button myButton;

    void Start()
    {
        myButton.onClick.AddListener(() => 
        {
            Debug.Log("Button clicked!");
        });
    }
}

正常加

using UnityEngine;
using UnityEngine.UI;

public class ButtonHandler : MonoBehaviour
{
    public Button myButton;

    void Start()
    {
        myButton.onClick.AddListener(OnButtonClick);
    }

    void OnButtonClick()
    {
        Debug.Log("Button clicked!");
    }
}

雪白明月照在大地z

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

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

相关文章

直流稳压电源设计

一、设计任务和基本要求&#xff1a; &#xff08;1&#xff09;设计集成直流稳压电源电路。 &#xff08;2&#xff09;输出直流电压5V。 &#xff08;3&#xff09;画出逻辑电路图&#xff0c;对电路进行仿真验证&#xff0c;写出总结报告。 图 1 系统组成框图 二、进度安排…

使用LangChain控制大模型的输出——解析器Parser

LangChain框架中有两个好用的工具&#xff1a; 提示词模板(PromptTemplate)用于指定LLM的输入&#xff0c;解析器(Parser)来正确解释LLM给出的输出 即&#xff1a; 提示词模板(PromptTemplate)&#xff1a;用于格式化地接受输入string变量&#xff0c;作为完整的提示词。 如 给…

如何在Linux系统中使用Apache HTTP Server

如何在Linux系统中使用Apache HTTP Server Apache简介 安装Apache 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 启动Apache服务 验证Apache是否正在运行 访问Apache默认页面 配置Apache虚拟主机 创建虚拟主机配置文件 示例虚拟主机配置 创建网站根目录 准备静态网站内…

基于Spring Boot的员工与部门信息管理系统:增删改查全攻略

介绍项目的搭建过程&#xff0c;包括依赖管理、数据库设计、实体类的创建、控制器的编写以及前端的简单实现。希望通过本项目的学习&#xff0c;能够加深大家对Spring Boot及相关技术的理解&#xff0c;为后续的开发奠定基础。 文章目录 前言 环境搭建 开发规范 查询部门 删除部…

深度学习优化器【学习率调整和梯度修正,Optimizer】

文章目录 一、学习率调整1 余弦退火&#xff08;1&#xff09;Warm up&#xff08;2&#xff09;Cosine Anneal 2 AdaGrad3 RMSprop算法4 AdaDelta算法 二、梯度估计修正1 动量法2 Nesterov加速梯度3 Adam修正的原因 4 AdamW 三、总结参考资料 在当今快速发展的人工智能领域&am…

在米尔电子MPSOC实现12G SDI视频采集H.265压缩SGMII万兆以太网推流

1. 引言 随着网络视频平台的发展&#xff0c;用户对于4K高清画质的需求日益增长。然而&#xff0c;许多用户发现&#xff0c;即使购买了视频平台的会员&#xff0c;观看4K内容时画质却不如预期&#xff0c;有时甚至还会出现模糊、卡顿的情况。这种现象背后涉及到视频编码、网络…

项目复盘:TapTap聚光灯Gamejam

前言 三周的开发终于落下帷幕&#xff0c;其实我个人还是对结果很满意的&#xff0c;虽然作品不及他人的万分之一&#xff0c;不过主要目的还是以熟悉Godot引擎本身为主。这次我做的事情其实主要还是把在Unity那边学到的东西Copy到Godot来&#xff0c;仅此而已&#xff0c;几乎…

WPF自定义日历控件Calendar 的方法

推荐下载地址 https://www.haolizi.net/example/view_2107.html <UserControl.Resources><local1:DayConverter x:Key"DayConverter"/><!--导入转换器--><Style x:Key"CalendarStyle1"TargetType"{x:Type Calendar}">&…

《ToDesk云电脑vs青椒云性能测试,谁更能实现游戏自由?》

ToDesk云电脑vs青椒云性能测试 【前言】【使用云电脑的意义】【实测软件】【性能参数对比】1. 硬件配置2.游戏兼容性3. 延迟、流畅度与画面清晰度4. 用户体验5. 价格对比6. 附加功能 【游戏性能测试】《游戏一 黑悟空》《游戏二 赛博朋克 2077》《游戏三 CS反恐精英》 【本文小…

ctfshow文件包含web78~81

目录 web78 方法一&#xff1a;filter伪协议 方法二&#xff1a;input协议 方法三&#xff1a;data协议 web79 方法一:input协议 方法二&#xff1a;data协议 web80 方法一&#xff1a;input协议 方法二&#xff1a;日志包含getshell web81 web78 if(isset($_GET[file]…

动态IP是什么?

随着互联网成为人们生活的重要组成部分&#xff0c;以信息传递为主导的时代种&#xff0c;网络连接质量对我们的工作效率、学习进度以及娱乐体验等方面都有很大影响。 动态IP&#xff0c;作为网络连接中的一种重要IP代理形式&#xff0c;越来越受到用户的欢迎。本文将深入解析…

vue下载安装

目录 vue工具前置要求&#xff1a;安装node.js并配置好国内镜像源下载安装 vue 工具 系统&#xff1a;Windows 11 前置要求&#xff1a;安装node.js并配置好国内镜像源 参考&#xff1a;本人写的《node.js下载、安装、设置国内镜像源&#xff08;永久&#xff09;&#xff…

在JAVA中使用Paho MQTT客户端

1.在maven里面配置好依赖 <dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.2.2</version> </dependency> 2.创建APP类 package com.leo;import org.e…

Django+websocket实现一个简单聊天

WebSocket是一种在单个TCP连接上进行全双工通信的协议。它由IETF在2011年定为标准RFC 6455&#xff0c;并由RFC7936补充规范&#xff0c;同时WebSocket API也被W3C定为标准。 1、定义与原理 WebSocket是独立的、创建在TCP上的协议&#xff0c;它使用HTTP/1.1协议的101状态码进…

MATLAB实现人类学习优化算法HLO

1.算法简介 人类学习优化算法&#xff08;Human Learning-based Optimization&#xff0c;HLO&#xff09;是一种基于人类学习过程开发的启发式算法。HLO算法的设计灵感来源于人类的智慧和经验&#xff0c;特别是人类在学习和调整过程中展现出的适应性、学习能力和创新思维。该…

【果蔬识别】Python+卷积神经网络算法+深度学习+人工智能+机器学习+TensorFlow+计算机课设项目+算法模型

一、介绍 果蔬识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;通过收集了12种常见的水果和蔬菜&#xff08;‘土豆’, ‘圣女果’, ‘大白菜’, ‘大葱’, ‘梨’, ‘胡萝卜’, ‘芒果’, ‘苹果’, ‘西红柿’, ‘韭菜’, ‘香蕉’, ‘黄瓜’&#xff09;…

Android 策略设计模式的使用:使用设计模式,减少烂代码,让项目更好维护

目录 大家好呀~&#xff0c;我是前期后期&#xff0c;在网上冲浪的一名程序员&#xff0c;分享一些自己学到的知识&#xff0c;希望对大家有所帮助 前言&#xff1a;为什么要使用设计模式 在项目开发过程中&#xff0c;我们会对接很多种支付&#xff1a;国内&#xff08;微信…

uniapp和vite项目配置多环境编译,增加测试环境变量配置--mode test

如果你的项目是使用vite和uniapp配置开发的&#xff0c;就可以在代码里面获取到这些变量&#xff0c;但是开发&#xff0c;测试和发布是不同的请求地址&#xff0c;所以需要配置。Vite 使用 dotenv 从你的 环境目录 中的下列文件加载额外的环境变量&#xff1a; .env …

动态规划 - 编辑距离

115. 不同的子序列 困难 给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数&#xff0c;结果需要对 10^9 7 取模。 算法思想&#xff1a;利用动态规划&#xff0c;分s[i - 1] 与 t[j - 1]相等&#xff0c;s[i - 1] 与 t[j - 1] 不相等两种情况具…

sudo apt install jupyter-notebook安装notebook失败E: Aborting install.

问题&#xff1a; sudo apt install jupyter-notebook安装notebook失败E: Aborting install. ~/jie/mywork/PointNetCFD$ sudo apt install jupyter-notebook --fix-missing Reading package lists... Done Building dependency tree Reading state information... Do…