- 博客(41)
- 资源 (2)
- 收藏
- 关注
原创 Unity 热更新对象绑定的替代方案--StrangeIoC 注入方式
• StrangeIoC提供了强大的依赖注入功能,适用于复杂的项目和热更新场景。• 动态绑定允许你在运行时动态地绑定对象和组件。• 反射提供了更大的灵活性,但性能可能较低。• 配置文件提供了一种灵活的方式来定义和管理对象绑定关系。通过使用StrangeIoC,你可以在热更新场景中更灵活地管理对象和组件的绑定关系,从而提高代码的可维护性和可扩展性。
2025-01-19 11:04:56
846
原创 C# 文件系统I/O操作--Directory类与DirectoryInfo类
两个同属一个命名空间:System.IO,然而Directory 类,提供对目录的静态方法,执行常见的目录操作,如创建、删除、移动、枚举等。不需要实例化,直接调用其静态方法即可。DirectoryInfo 类,代表特定目录,并提供对该目录的详细信息和操作方法。需要先创建 DirectoryInfo 实例,然后通过该实例调用方法和访问属性。
2024-12-19 17:29:50
1171
原创 C# 文件系统I/O操作--File类与FileInfo类
File和FileInfo两个功能基本相同,他们都是基于System.IO命名空间的文件操作类。File 和 FileInfo 都是 .NET 基于System.IO命名空间中用于处理文件的类,但它们的设计理念和使用方式有所不同:File是静态类,它不属于特定对象,所以不能被实例化,如果只是对文件单一、少量的操作,如判断文件是否存在,建议使用File类。FileInfo需要实例化对象后才可以调用相关方法。它对应某一个文件进行重复操作,如果是对一个文件进行大量的操作,建议使用FileInfo类。
2024-12-19 15:09:02
1293
原创 C# 文件系统I/O操作--什么是I/O
I/O 是 Input/Output(输入/输出)的缩写,指的是计算机系统与外部设备之间交换数据的过程。是计算机程序与用户、其他程序或存储设备(如硬盘、网络、显示器等IO设备)进行交互的基础。对于一个系统或者计算机来说,I/O就是提供数据来源和输出数据的部分。
2024-12-18 17:59:44
470
原创 C# 基本数据类型及其占用字节数
定义:位(bit)是计算机存储数据的最小单位,简记为`b`。组成:一个字节由8个位组成。表示范围:位只能表示0或1,用于存储二进制数据。计算机中常用的存储单位及其与位的关系:字节(Byte):8个位组成一个字节,字节是计算机中常用的存储单位,一个英文字符通常占用1个字节,汉字通常需要2个字节(在GBK编码下)。其他存储单位:包括KB(千字节)、MB(兆字节)、GB(吉字节)、TB(太字节)、PB(拍字节)、EB(艾字节)、ZB(泽字节)、YB(尧字节)等,
2024-12-16 20:22:52
1130
原创 C# 方法的参数主要有四种类型:值参数、引用参数ref 、输出参数out、可变参数params
• 值参数:适用于不需要修改原始数据的简单场景。• 引用参数 (ref):适用于需要修改原始数据的场景,注意初始化。• 输出参数 (out):适用于方法需要返回多个值的场景,或者需要确保方法内部一定会为参数赋值的场景。• 可变参数 (params):适用于参数数量可变的场景,简化方法调用。
2024-12-16 19:44:56
849
原创 C# 网络编程--关于Socket编程TCP协议中封包、拆包问题
固定长度的数据包: 适用于数据包长度固定且较小的情况。分隔符: 适用于数据包长度不固定但可以确定分隔符的情况。头部包含长度信息: 适用于数据包长度不固定且没有明显分隔符的情况。
2024-12-16 14:18:52
1240
原创 C#网络编程--WebSocke与Socket的区别以及关系
**在大家技术选型的时候,有没有纠结过使用WebSocket 还是选择 Socket进行通讯或者请求数据呢?我以前一开始也搞不清楚有啥,名字都有“Socket”字眼,到后面接触多了,才明白其中的区别;`WebSocket 主打一个持久、实时,Socket主打一个功能灵活、颗粒度小`。** 所以,WebSocket 和 Socket 都是用于网络通信的技术,但它们在用途、协议和使用方式上有所不同。下面说说它们的区别和关系:
2024-12-13 20:30:00
1416
原创 C#网络编程--TCP/IP协议与Socket的区别以及关系
TCP/IP 是传输控制协议/互联网协议的缩写,是一组用于互联网通信的标准协议集。Socket(套接字)是一种通信机制,允许不同进程之间通过网络进行通信。它提供了一种抽象的接口,使得程序员可以方便地使用 TCP/IP 协议进行网络编程。(就是因为TCP/IP协议也是Socket协议之一,所以很容易混淆!!!其实两个说的不是同个东西,但是它们又密不可分。(承上启下的关系吧)TCP/IP 是一组网络通信协议,定义了数据在网络中的传输规则。Socket 是一种编程接口,提供了应用程序与网络通信的桥梁。
2024-12-13 16:02:36
574
原创 C# 网络编程--关于UDP 通信(二)
UDP 提供了一种快速、简单的数据传输方式,适用于对传输速度有较高要求而对可靠性要求相对较低的应用场景。
2024-12-11 18:00:00
1256
原创 C# 网络编程--关于TCP 通信(一)
• 第一次握手:客户端向服务器发送一个 SYN(同步)包,请求建立连接。• 第二次握手:服务器收到 SYN 包后,回应一个 SYN+ACK(同步确认)包,表示同意建立连接。• 第三次握手:客户端收到 SYN+ACK 包后,发送一个 ACK(确认)包,确认连接已建立。
2024-12-11 10:00:00
1569
原创 C# 网络编程--基础核心内容
在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践。C#网络编程的主要内容包括以下几个方面:Socket 编程、异步编程、TCP 通信、UDP 通信、HTTP 请求、多线程与并发、错误异常处理、安全通信等等,方方面面的知识体系
2024-12-10 15:45:36
1313
原创 C#设计模式--代理模式(Proxy Pattern)
***代理模式***是一种`结构型设计模式`,它为其他对象提供一种代理以控制对这个对象的访问。`代理模式在不直接访问实际对象的情况下,提供了对目标对象的间接访问`。通过引入一个代理对象来间接操作实际对象,可以在不改变实际对象代码的前提下,增加额外的功能操作。
2024-12-10 09:25:34
984
原创 C# 关于加密技术以及应用(二)
• AES 适用于需要高效加密和解密大量数据的场景。• RSA 适用于需要安全地交换密钥、验证数据完整性和来源的场景。• 结合使用:在实际应用中,通常使用 RSA 进行密钥交换,然后使用 AES 进行数据加密,以兼顾安全性和效率。• AES 适用于需要高效加密和解密大量数据的场景,如文件存储、流媒体传输、数据备份等。• RSA 适用于需要安全地交换密钥、验证数据完整性和来源的场景,如网络通信安全、数字签名和验证、用户身份认证等。
2024-12-09 10:50:33
893
原创 C# 关于加密技术以及应用(一)
以上是几种常用的加密技术和相应的示例。具体需求可以选择合适的加密算法来保护数据的安全性和隐私(着重讲解RSA与AES的使用,见下一章节。
2024-12-09 10:47:15
961
原创 C# 关于实现保存数据以及数据溯源推送
实现了一个数据接收、存储和推送的功能。以下是我存储的文本格式。1. 逐行读取文件:使用 StreamReader 逐行读取文件内容。2. 拼接数据:使用 StringBuilder 拼接每一行数据,直到遇到分隔符 `$`。3. 处理完整记录:当拼接的数据包含分隔符 $ 时,将其拆分为完整的记录进行处理。4. 处理剩余数据:在读取完文件后,处理 StringBuilder 中剩余的数据,确保没有遗漏的数据被处理。
2024-12-09 09:22:35
1429
原创 C#字符串--String
在 C# 中,string是一个引用类型,用于表示文本数据。字符串是由 Unicode 字符组成的不可变序列。这意味着一旦创建了一个字符串对象,其内容就不能被改变。1. 使用 StringBuilder 进行频繁的字符串拼接。2. 处理用户输入时注意安全问题,防止注入攻击。3. 使用资源文件进行国际化和本地化。4. 考虑文化差异进行字符串比较。5. 检查字符串长度,避免超出预期。6. 使用自定义格式化字符串控制输出格式。7. 处理多字节字符时使用正确的编码方式。
2024-12-07 17:13:30
1240
原创 C#设计模式--原型模式(Prototype Pattern)
这个示例展示了如何使用状态模式和克隆模式来实现文档编辑器的撤销功能。通过将文档的历史版本存储在栈中,并在需要时进行撤销操作,可以有效地管理文档的状态变化。同时,通过实现 ICloneable 接口,确保每次创建新文档时都能获得一个独立的副本,保证了文档状态的独立性。
2024-12-06 16:40:22
1036
原创 C#设计模式--装饰器模式(Decorator Pattern)
装饰器模式是一种结构型设计模式,它允许在运行时动态地给一个对象添加职责,而不需要修改对象的结构。
2024-12-05 16:31:30
1282
原创 C#设计模式--适配器模式(Adapter Pattern)
适配器模式是一种非常实用的设计模式,特别适用于需要将不同接口的类集成在一起的场景。通过适配器模式,可以有效地解决接口不兼容的问题,提高代码的复用性和灵活性。然而,使用适配器模式也会增加系统的复杂性和维护成本,因此在实际开发中需要权衡利弊,合理使用。
2024-12-05 15:08:43
1745
原创 Unity3D 热更新之HybridCLR方案
根据 HybridCLR 的文档,配置你的项目以支持 HybridCLR。创建一个版本配置表,用于存储当前版本的 DLL 文件信息。创建一个 DLLDownloader 类,用于从服务器下载最新的 DLL 文件。在运行时,可以通过调用 UnloadDLL 方法卸载不再需要的 DLL 文件。在客户端,也需要一个本地版本配置表,用于记录当前已加载的 DLL 文件信息。扩展 DLLLoader 类,使其能够动态加载从服务器下载的 DLL 文件。在控制器中初始化模型和视图,并提供加载和卸载 DLL 的方法。
2024-12-05 09:11:32
1174
原创 Unity3D 网络请求之UnityWebRequest
官方建议我们使用的UnityWebRequest , Unity 2022 及以上版本中,UnityWebRequest 提供了强大的网络请求功能,包括 GET、POST、断点续传、上传和下载等。
2024-12-04 20:31:51
482
原创 C#设计模式--策略模式(Strategy Pattern)
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。
2024-12-04 18:30:00
1169
原创 C#设计模式--状态模式(State Pattern)
首先,定义一个状态接口,所有具体的状态类都将实现这个接口。上下文类维护一个对当前状态的引用,并提供一个方法来改变状态。状态机模式通过将状态和行为分离,使得状态之间的转换更加清晰和可控。虽然它会增加一些代码量,但在处理复杂状态管理和状态转换时,其优点是非常明显的。
2024-12-04 14:45:00
787
原创 C# 设计模式--建造者模式 (Builder Pattern)
建造者模式是一种创建型设计模式,它允许你逐步构建复杂对象,而无需使用多个构造函数或重载。建造者模式将对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。建造者模式通过将对象的构建过程分解为多个方法调用,使得对象的创建更加灵活和可控。虽然它增加了系统的复杂度,但在需要逐步构建复杂对象的场景中,建造者模式能够显著提高代码的可维护性和扩展性。
2024-12-04 09:22:56
595
原创 C# 设计模式--观察者模式 (Observer Pattern)
观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。观察者模式的核心在于解耦主题(被观察者)和观察者之间的依赖关系。
2024-12-03 18:45:00
628
原创 c# 设计模式--抽象工厂模式 (Abstract Factory)
抽象工厂模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式强调的是对象族的创建,而不是单一对象的创建。抽象工厂模式通过提供一个创建一系列相关或相互依赖对象的接口,使得对象的创建更加灵活和一致。虽然它增加了系统的复杂度,但在需要创建多个相关对象的场景中,抽象工厂模式能够显著提高代码的可维护性和扩展性。
2024-12-02 16:29:01
462
原创 C# 设计模式--工厂方法模式 (Factory Method)
工厂方法模式是一种创建型设计模式,它定义了一个创建对象的接口,但让子类决定实例化哪一个类。工厂方法模式将对象的创建延迟到子类。解耦对象的创建和使用:将对象的创建和使用分离,客户端不需要知道具体的产品类,只需要知道创建者的接口。支持多态:客户端可以通过创建者的接口来创建不同类型的对象,支持多态性。易于扩展:增加新的产品时,只需要添加新的具体创建者类,不需要修改现有的代码。
2024-12-02 15:27:48
376
原创 C# 设计模式--单例模式
实现方式优点缺点懒汉式(线程不安全)延迟初始化,节省资源不是线程安全的懒汉式(线程安全)延迟初始化,线程安全实现稍微复杂一些饿汉式 线程安全实现简单 不能延迟初始化可能会浪费资源静态内部类线程安全,延迟初始化实现稍微复杂一些Lazy线程安全,延迟初始化,实现简单需要 .NET Framework 4.0 及以上版本属性初始化器线程安全,实现简单不能延迟初始化静态构造函数线程安全,实现简单不能延迟初始化所谓的,延迟初始化。
2024-12-02 14:39:16
432
原创 C# Stopwatch准确测量运行时间
在开发中,时常会测试性能开发,看看代码执行时间是否符合我们需求,那么Stopwatch 类使用系统计时器来记录时间间隔,非常适合用于性能测试和基准测试。
2024-11-30 17:49:48
446
原创 C# 关于Semaphore 信号量的用途以及正确用法
今天说说一个也很好用的互斥锁,主角就是其实Semaphore 是一种用于限制同时访问某一资源或资源池的线程数量的同步机制。它类似于交通信号灯,控制进入某个区域的车辆数量。以下是 Semaphore 的用途和正确用法的详细说明及示例。直接上代码讲讲以前开发过程中的实战。
2024-11-30 17:37:19
794
原创 C# 锁 Lock 、Monitor 、Mutex 、ReaderWriterLockSlim 用途以及正确用法
在 C# 程序开发过程中,有多种互斥锁用来同步机制,确保线程安全,其中包括 lock、Monitor、Mutex 和 ReaderWriterLockSlim。但是在我看来,虽然都能实现锁的过程,但是每一个都有些许差别,而且每种机制都有其特定的用途和正确的用法。
2024-11-30 15:38:20
669
原创 c# try{...}finally{...}在开发过程实际用途以及用法
try 和 finally 块的主要用途是确保在执行某段代码时,无论是否发生异常,某些重要的清理操作,finally都能被执行。所以呢,这有助于提高代码的健壮性和可靠性,避免资源泄漏和状态不一致的问题。
2024-11-30 15:18:51
245
原创 unity实现COLORMAP_JET色度图
COLORMAP_JET简介计算机视觉中最常用的颜色映射算法是Jet,它具有高的对比度可以有效突出图像中的细节。但如果仔细观察图像的梯度图会发现一系列的颜色带,在青色和黄色区域最为明显。在这里插入图片描述缺点:这对于伪彩图最大的影响在于颜色变化过于剧烈,将导致人眼对于实际数据的误解。很多平滑过渡的区域会被误解为有较大的梯度。由于Jet映射对于人眼感知来说变化不是常量,所以它不具有感知均匀性。这种影响对于色盲人士来说更为明显,将造成伪彩图映射出的信息变得模糊。
2023-10-16 18:40:11
271
原创 Unity 堆体计算
最近公司有一个需求,就是通过点云扫描回来的点云,来计算堆体的体积是多少问题,搞尽脑汁想到了两个方式,还是很粗糙的,因为堆体的形状很多,我这这种仅仅适合正儿八经的没有太多的凹凹凸凸的点云计算体积;体积的思路,依然是通过顶点,每个三角面和中心点组成一个三棱锥(四面体),计算出其所在平行六面体的体积,四面体的体积就是六面体的1/6;以上为蒙特卡洛法计算体积的主要原理,对于每一次生成的随机点,需要判断它在模型的内部还是外部,得到一个P0、P1、P2、P四面体的体积V,依此类推计算累加,估算出不规则堆体模型的体积;
2023-05-17 18:29:26
364
1
原创 关于“A Native Collection has not been disposed, resulting in a memory leak. Enabl”问题
例如:当在进行请求数据时候,打印就报错显示“”,但不能定位错误的地方在哪,于是百度也没有明确答案,然后摸索一番,后面是老大告诉我的,记录一下;
2023-01-05 10:44:38
6150
原创 Unity 场景用鼠标放置模型
本文介绍将一个物体模型放置到另一个物体表面的方法。实现效果是使用鼠标指定物体表面的某一个点,目标物体就会放置到所指定位置上。
2022-10-22 18:23:39
716
原创 Unity 科技透视模式效果
例如:当在科技风场景下,想把场景带有科技风格一点,可以尝试把相机的渲染改一下。主要还是shader控制代码:DebugOverdrawMode(typeof(Camera))()
2022-10-22 18:11:23
1442
天气变换UniStorm 5.1.0.unitypackage
2022-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人