自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zheliku的博客

记录学习的点点滴滴~

  • 博客(328)
  • 收藏
  • 关注

原创 2025-05-08 Unity 网络基础9——FTP通信

FTP(文件传输协议)是用于在互联网上传输文件的协议,支持文件拷贝、登录、目录查询等功能。其工作原理基于TCP通信,需建立控制连接和数据连接。FTP支持主动和被动两种传输模式,以及ASCII和二进制两种数据传输方式。在Windows 11环境下,可以通过控制面板启用FTP服务,并使用IIS管理器配置FTP站点,包括设置IP地址、身份验证方式和授权规则。此外,还需在防火墙中允许FTP应用通过。用户可以通过指定IP地址访问FTP服务器,并可选择匿名登录或使用用户名和密码验证。常用的FTP API包括Networ

2025-05-08 23:13:55 614

原创 2025-05-07 Unity 网络基础8——UDP同步&异步通信

创建套接字 Socket。用Bind()方法将套接字与本地地址进行绑定。用和SendTo()方法在套接字上收发消息。用Shutdown()方法释放连接。关闭套接字。

2025-05-07 21:52:50 1284

原创 2025-05-07 Unity 网络基础7——TCP异步通信

往往异步方法当中都会使用多线程执行某部分逻辑,因为不需要等待方法中逻辑执行完毕就可以继续执行下面的逻辑。​ Async 方法相比于 Begin / End 方法,参数相对少一些。​ Unity 中协同程序中的某些异步方法,有的使用的是多线程,有的使用的是迭代器分步执行。​ 在回调函数中调用,用于完成异步连接操作并返回新的客户端 Socket。接口由包含可异步作的方法的类实现,是启动异步作的方法的返回类型。方法中逻辑可能还没有执行完毕,就继续执行后面的内容。方法中逻辑执行完毕后,再继续执行后面的方法。

2025-05-07 11:15:01 824

原创 2025-05-04 Unity 网络基础6——TCP心跳消息

​ 在客户端主动退出时,我们会调用 socket 的ShutDown()和Close()方法,但调用这两个方法后,服务器端无法得知客户端已经主动断开。​ 本文主要介绍在网络通信中,如何服务端如何判断客户端断开连接。

2025-05-04 10:00:43 613

原创 2025-04-29 Meta Quest Link 登录问题

​ 最近 Meta Quest Link 应用一直登录不上,无法有线串流。搜寻了众多方案,终于尝试成功,特此记录。2 种方案二选一即可。

2025-04-29 11:35:26 516

原创 2025-04-24 Python&深度学习4—— 计算图与动态图机制

​ 自动梯度计算:通过构建计算图(Computational Graph)自动计算张量的梯度,无需手动推导。​ 计算图是用来描述运算的有向无环图,由节点(Node)和边(Edge)组成。​ grad_fn:记录创建张量时的运算方法,用于反向传播时的求导规则。​ 在动态图中,每一步操作即时生成计算节点,可灵活插入调试代码。操作原地修改数据,否则自动求导结果会出现错误。​ 功能:求取梯度。

2025-04-24 16:03:58 1202

原创 2025-04-23 Python&深度学习3——Tensor

张量是多维数组的泛化形式,涵盖标量(0维)、向量(1维)、矩阵(2维)及更高维结构。示例:RGB 图像用三维张量表示,维度为(高度, 宽度, 通道数),其中通道对应红、绿、蓝三色。

2025-04-23 22:12:55 1115

原创 2025-04-22 李沐深度学习5 —— 线性回归

​ 在美国买房时,买家需根据房屋信息(如卧室数量、卫生间数量、面积等)预测合理的成交价。输入数据:房屋特征(如X1=卧室数X2=卫生间数X3=面积输出目标:预测成交价Y。实际挑战:卖家的标价和网站估价(如Redfin)仅为参考,最终需通过竞价决定成交价,因此准确预测至关重要。​ 计算输入特征X\mathbf{X}X和模型权重w\mathbf{w}w的矩阵-向量乘法后加上偏置bbb。​ 注意,上面的XwXw是一个向量,而bbb是一个标量。

2025-04-22 11:02:44 1438

原创 2025-04-20 李沐深度学习4 —— 自动求导

​ 虽然这些更奇特的对象确实出现在高级机器学习中(包括[深度学习中]),但当调用向量的反向计算时,我们通常会试图计算一批训练样本中每个组成部分的损失函数的导数。​ 使用自动微分的一个好处是:即使构建函数的计算图需要通过 Python 控制流(例如,条件、循环或任意函数调用),我们仍然可以计算得到的变量的梯度。​ 从输入到输出逐层计算梯度,每次计算一个输入变量对输出的梯度,通过链式法则逐层传递梯度。​ 这里,我们的目的不是计算微分矩阵,而是单独计算批量中每个样本的偏导数之和。每个分量的梯度,并打印这些梯度。

2025-04-20 22:57:09 725

原创 2025-04-19 Python 强类型编程

​ Python 是一门强类型的动态类型语言,可以动态构造脚本执行、修改函数、对象类型结构、变量类型,但不允许类型不匹配的操作。​ Python 也提供了类型标注功能,有了类型标注提示后,就可以在编码时即发现错误。​ 如下是一个非常长的(14个)PEP(Python 改进建议)的列表和落地情况(图中时间是文档时间 +1 年左右是实际落地时间),并且在 PEP 483 开始快速迭代(图中橙色是比较重要的迭代),并且到了 Python3.7 才真正算是成型。提供 SDK、库/接口给其他人时。

2025-04-19 00:04:25 739

原创 2025-04-18 李沐深度学习3 —— 线性代数

同样,给定具有相同形状的任意两个张量,任何按元素二元运算的结果都将是相同形状的张量。例如,将两个相同形状的矩阵相加,会在这两个矩阵上执行元素加法。​ 默认情况下,调用求和函数会沿所有的轴降低张量的维度,使它变为一个标量。​ 标量由只有一个元素的张量表示。​ 将张量乘以或加上一个标量不会改变张量的形状,其中张量的每个元素都将与标量相加或相乘。​ 张量就像向量是标量的推广,矩阵是向量的推广一样,我们可以构建具有更多轴的数据结构。通常,使用矩阵-向量积来描述在给定前一层的值时,求解神经网络每一层所需的复杂计算。

2025-04-18 08:25:59 666

原创 2025-04-18 李沐深度学习2 —— 数据操作&预处理

巷子类型为“Pave”的行会将“Alley_Pave”的值设置为1,“Alley_nan”的值设置为0。这个新的张量包含与转换前相同的值,但是它被看成一个 3 行 4 列的矩阵。下面的例子分别演示了当我们沿行(轴-0,形状的第一个元素) 和按列(轴-1,形状的第二个元素)连结两个矩阵时,会发生什么情况。​ 在上面的例子中,为了获得一个3行的矩阵,我们手动指定了它有 3 行和 4 列。在下面的例子中,我们使用逗号来表示一个具有 5 个元素的元组,其中每个元素都是按元素操作的结果。在这里,我们将考虑插值法。

2025-04-18 05:49:27 1052

原创 2025-04-17 李沐深度学习1 —— 深度学习介绍

​ 核心优势:自动从数据中学习特征,无需人工设计规则(如传统计算机视觉需手动提取边缘、纹理等特征)。​ AI 技术演进:符号学(早期 AI)→ 概率模型(统计学习)→ 机器学习 → 深度学习。​ 深度学习是机器学习的子集,但能处理更复杂的任务(如图像、语音、自然语言)。

2025-04-17 14:50:09 543

原创 2025-04-09 吴恩达机器学习6——神经网络(1):介绍

生物学灵感(1950s)最初目标是模仿人脑神经元的学习机制(电信号传递与连接形成)。现代神经网络已大幅简化,与真实大脑机制差异显著。技术发展浪潮1950s:首次提出 → 1980s-1990s:手写识别(邮政编码、支票处理) → 2005年后:以“深度学习”复兴。“深度学习”术语因更易传播被广泛采用。语音识别(首个成功领域)→ 计算机视觉(2012 ImageNet里程碑)→ NLP/推荐系统/医疗等。

2025-04-09 16:56:50 1104 5

原创 2025-04-08 NO.4 Quest3 交互教程

​ 新版 Meta SDK(v74)优化了 Quest 开发流程,使得原本复杂的开发设置变得简单了许多,这在旧版(v63)是不可想象的!​ 特此记录。

2025-04-08 06:49:14 1256

原创 2025-04-07 NO.3 Quest3 MR 配置

​ 透视(Passthrough)是将应用的背景从虚拟的图层替换成现实图层,类似于 P 图更换背景,虚拟物体相当于叠加在现实图层之上的元素。​ 在单纯的透视下,虚拟物体和现实物体二者之间并不会进行交互。

2025-04-07 22:42:30 707 3

原创 2025-04-06 NO.2 Quest3 基础配置与打包

Quest3 开发环境配置见。

2025-04-06 23:15:31 937

原创 2025-04-06 Unity Editor 实践 1 —— Editor 窗体框架

​ 窗体框架由“页面标签”和“页面内容”组成。​ 点击“页面标签”时,会显示对应的“页面内容”。

2025-04-06 04:32:53 978

原创 2025-04-06 Unity Editor 2 —— GUILayout

​ 下图 “1” 表示垂直布局间隔 100,“2” 表示 Button 被水平挤压到最小。​ 创建 GUILayoutExample.cs 脚本,继承 EditorWindow。当区域不够显示全部内容时,启用滑动条呈现滚动视图。在 EditorWindow 中,该窗口无法显示。使用包围盒包裹文本内容(深色区域)。可在 RunTime 模式下显示。​ 默认排列方式为垂直排列。向两边扩张,挤压中间区域。按下和松开都会触发。

2025-04-06 03:41:53 1062

原创 2025-04-05 吴恩达机器学习5——逻辑回归(2):过拟合与正则化

也称为高偏差(High Bias),即模型对数据有较强的先入之见(如强行用线性模型拟合非线性数据)。也称为高方差(High Variance),即模型对训练数据的微小变化非常敏感。)的参数施加惩罚,使其接近 0,从而近似退化为低阶模型(如二次函数)。模型过于简单,无法捕捉数据中的模式,导致训练误差和测试误差都较高。模型过于复杂,过度拟合训练数据(甚至噪声),导致泛化能力差。模型在未见过的数据上表现良好的能力,是机器学习的核心目标。​ 例如:对高阶多项式项(如。

2025-04-05 23:16:03 951 6

原创 2025-04-05 吴恩达机器学习4——逻辑回归(1):基础入门

定义:预测离散的输出值(类别),而非连续数值。二元分类:输出仅有两个可能值(如 0/1、否/是、假/真)。正类(Positive Class):目标类别(如垃圾邮件、恶性肿瘤),标记为 1。负类(Negative Class):非目标类别(如正常邮件、良性肿瘤),标记为 0。垃圾邮件检测(是/否)金融欺诈识别(欺诈/正常)肿瘤分类(恶性/良性)核心思想:输出始终限制在 [0,1] 之间,表示概率。用途:解决二元分类问题(输出y∈01y ∈ {0,1}y∈01。

2025-04-05 19:00:45 802

原创 2025-04-04 Unity 网络基础5——TCP分包与黏包

​ 在ToBytes()方法中,先写入消息 Id,然后写入该消息的长度,最后写入消息内容。sizeof(int) + // 消息长度// 写入消息长度// 减去消息长度和消息 Id 的长度// 反序列化不需要解析 Id,在此之前应解析 Id 从而使用该方法PlayerId。

2025-04-04 19:30:51 1117 1

原创 2025-04-03 Latex学习1——本地配置Latex + VScode环境

回到文件页面,可看到当前目录下新建了 ./build 文件夹,编译的 pdf 放在该目录中。进入 TEX 插件页面,选择编译方式,点击编译。说明:“new.synctex.gz” 存放反向编译内容,删除后不可以双击 pdf 定位到对应 tex 位置。​ 因为 .pdf 图像的编译速度比 .png 文件快,其编译过程不需要调用 libpng 库。​ 对于大型图像文件(每个文件大小为 >1MB),建议保存为 .png 或 .pdf。文件较大时,编译时间会很长,个人不习惯自动编译,因此选择 never。

2025-04-03 03:45:11 2169 3

原创 2025-03-25 Unity 网络基础4——TCP同步通信

​ 例如,选用 int 类型作为消息 ID 类型,前 4 个字节为消息 ID,后面的字节为数据类的内容。​ 一个 Sccket 对象表示一个本地或者远程套接字信息,可被视为一个数据通道,连接与客户端和服务端,数据的发送和接受均通过这个通道进行。主要用于实现 UDP 通信,提供无连接的通信服务,数据包长度不能大于 32KB,不提供正确性检查,不保证顺序,可能出现重发、丢失等情况。中,使用线程池处理接收到的消息,而不是立即处理,防止用户等待时间过长。​ 进入 Unity,点击运行,可看到通信结果。

2025-03-25 04:17:04 1147

原创 2025-03-23 吴恩达机器学习3——线性回归(2):多维特征

在机器学习中,矢量化可以极大地提高代码的效率,尤其是在处理大规模数据集时。​ 我们使用这两个特征来预测房屋的价格。这些特征的值范围差异很大,因此在应用梯度下降时,特征缩放变得尤为重要。​ 特征缩放通过将不同特征的值范围调整到相似的水平,使等高线图更接近圆形,从而优化梯度下降的路径。​ 如果特征的值范围差异很大,梯度下降可能会在等高线图中来回弹跳,导致收敛速度变慢。计算,即先计算索引 0 的值,然后是索引 1,索引 2。矢量化利用现代计算机的并行计算能力,尤其是在使用 GPU 时,可以显著加速计算过程。

2025-03-23 17:03:46 290 2

原创 2025-03-21 Unity 网络基础3——TCP网络通信准备知识

​ 在网络通信中,需要将传递的类对象信息序列化为 2 进制数据(商业游戏中,一般为 byte 字节数组),再将该 2 进制数据通过网络传输给远端设备,远端设备获取到该 2 进制数据后再将其反序列化为对应的类对象。​ 域名系统(Domain Name System,DNS)是互联网的一项服务,是将域名和 IP 地址相互映射的分布式数据库,能够更方便地访问互联网。​ IPEndPoint 类将网络端点表示为 IP 地址和端口号,是 IP 地址和端口号的组合。序列化:将类对象信息转换为可保存或传输的格式的过程。

2025-03-21 15:11:34 1251

原创 2025-03-21 Unity 序列化 —— 自定义2进制序列化

​ BinaryFormatter 类可以将 C# 类对象快速转换为字节数组数据。​ 在网络开发时,不会使用 BinaryFormatter 进行数据序列化和反序列化。因为客户端和服务端的开发语言多数情况下不同,BinaryFormatter 序列化的数据无法兼容其它语言。​ 因此,需要自定义序列化方式。2023-05-27 Unity 2进制4——类对象的序列化与反序列化_unity 二进制序列化-CSDN博客。。Unity 版本:6000.0.42f1。

2025-03-21 06:59:40 715

原创 2025-03-19 Unity 网络基础2——网络通信基础

​ TCP/IP 协议不仅仅指的是 TCP 和 IP 两个协议,而是指由 FTP、SMTP、TCP、UDP、IP 等协议构成的协议簇,只因为 TCP 协议和 IP 协议最具代表性,所以被称为 TCP/IP 协议。​ B/S 是一种特殊的 C/S 模型,特殊之处是 B/S 的客户端不需要开发,一般是某种浏览器,比如IE、Chrome、QQ 浏览器、360 浏览器等。​ 超文本传输协议,是简单的请求—响应协议,通常运行在 TCP 协议之上,指定了客户端可能发送给服务端什么样的信息以及得到什么样的响应。

2025-03-19 10:52:11 888

原创 2025-03-17 NO.1 Quest3 开发环境配置教程

​ 使用国内特供版的 Unity Hub 也能下载国际版 Unity 编辑器,因为导入 SDK 是在 Unity 编辑器当中进行的,所以 Unity Hub 可以是国际版,也可以是国内特供版,而 Unity 编辑器建议使用国际版,坑点可能会更少。​ 部分情况下,场景当中的某些物体渲染用的 shader 不兼容串流模式下电脑端的设置,造成只有一只眼睛能够渲染出虚拟物体,另外一只眼睛渲染不出虚拟物体,或是整个渲染的画面会有些异常的效果。​ 在 V74 之前,选择底层插件提供方:“Oculus”。

2025-03-17 23:29:51 1859 4

原创 2025-03-17 Unity 网络基础1——网络基本概念

​ 互联网又音译为因特网(Internet),也称国际网络,指网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议(规则)相连,形成逻辑上的单一巨大国际网络。​ 因特网是国际上最大的互联网。​ 万维网(World Wide Web,简称 WWW,也称 Web、3W 等)是存储在因特网的计算机中,数量巨大的文档(页面)的集合。​ IP 地址(Internet Protocol Address)指互联网协议地址,又译为网际协议地址,是 IP 协议提供的一种统一的地址格式,即设备在网络中的具体地址。

2025-03-17 02:05:09 536

原创 2025-03-15 吴恩达机器学习2——线性回归(1):案例入门

​ 线性回归模型是使用最广泛的学习算法,让我们从一个可以使用线性回归解决的问题开始。

2025-03-15 16:00:28 487

原创 2025-03-15 Python&深度学习2——Numpy库

本文使用的 Python 解释器与 NumPy 库的版本如下。

2025-03-15 10:54:39 1032

原创 2025-03-12 Python&深度学习1——安装Anaconda与PyTorch库

2025-03-12 01:27:29 1707

原创 2025-03-10 吴恩达机器学习1——机器学习概述

​ 1959 年,Arthur Samuel 将机器学习定义如下:​ 使计算机无需明确编程即可学习的领域。​ 他编写了一个跳棋程序,其惊人之处在于 Arthur Samuel 本人并非一个非常好的跳棋选手。他所做的是,对计算机进行了编程,使其可以与自己进行数以万计的对局,程序通过观察哪些位置能够获胜以及哪些位置会导致失败,尝试学习什么是好的或坏的位置。计算机有耐心与自己对弈数万次,因此能够获得如此多的跳棋经验,最终成为 Arthur Samuel 本人更好的跳棋玩家。

2025-03-10 15:28:18 935

原创 2025-01-22 Unity Editor 1 —— MenuItem

​ 上述代码为菜单路径添加了快捷键 “C” 触发,因为在菜单路径 “EditorExtensions/01.Menu/06.Hello Editor” 后添加了 " _c":使用空格隔开菜单路径与快捷键,使用下划线表示快捷键是单个键 “C”。​ Editor 文件夹是 Unity 中的特殊文件夹,Unity 中所有编辑器相关的脚本都需要放置在其中,其相关的命名空间为 UnityEditor。​ 尽管直接调用静态函数更为方便,但当该静态函数为 private 且需要在外部调用时,便可使用该方法。

2025-01-22 04:54:30 824

原创 2025-01-07 Unity 使用 Tip3 —— 游戏保存数据到 Application.persistentDataPath 不生效解决方案更新

​ WebGL 平台限制了文件访问系统,在 Unity 以前版本中,开发者想要在 WebGL 上保存游戏到本地很不方便。​ 目前,Unity 新版中给出了一项解决方案,但经测试,该方案目前不可取(截止 2025-01-07)。

2025-01-07 01:31:39 1046

原创 2025-01-06 Unity 使用 Tip2 —— Windows、Android、WebGL 打包记录

​ 最近尝试将写的小游戏打包,主要平台包括 Windows、Android 和 WebGL,以下是一些打包过程记录。

2025-01-06 05:55:57 1662

原创 202-01-06 Unity 使用 Tip1 —— UnityHub 模块卸载重装

起因:​ WebGL 平台打包程序报错,懒得修复了,因此粗暴地删了重装。但是 UnityHub 不支持卸载模块,因此手动配置。

2025-01-06 01:18:51 601

原创 2025-01-04 Unity插件 YodaSheet2 —— 基础用法

​ 依据路径 “Asset”->“Yade”->“Editor”->->“Common”,找到目录下的 “CodeGeneratorEditor.cs” 代码文件。​ 在第 286 行的 Create() 方法中修改默认生成路径。

2025-01-04 03:34:31 1166

原创 2025-01-04 Unity插件 YodaSheet1 —— 插件介绍

​ Yade 提供类似于 Excel 或者 Google Sheets 的表格编辑器,可以轻松地在 Unity 编辑器中编辑搜索导入和导出数据。Yade 的表格编辑器还提供公式批量导入数据列头配置代码生成黑色主题支持等​ Yade 可以直接访问表格反序列化为 C# 对象和高速的二进制序列化API。反序列化为 C# 对象支持自定义的实现了 ICellParser 接口的数据类型。此外,Yade 还提供运行时访问在线表格数据的 API。支持在线的 CSV 文件和 Google Sheets 分享链接。

2025-01-04 03:33:16 864

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除