自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 c#中队列

Console.WriteLine("出队元素: " + queue.Dequeue());Console.WriteLine("队列中的元素数量: " + queue.Count);Console.WriteLine("出队元素: " + queue.Dequeue());Console.WriteLine("出队元素: " + queue.Dequeue());Console.WriteLine("队列中的元素数量: " + queue.Count);queue.Enqueue("第二个元素");

2024-12-22 18:41:34 239

原创 c#委托事件

在C#中,委托和事件是实现Observer设计模式的核心机制,委托是一种类型,它定义了方法的签名,可以将方法当作另一个方法的参数来进行传递。事件是委托的一种特殊形式,它只能在声明它的类内部被调用,外部类不能直接调用,它用于通知事件的发生。委托用于定义事件的类型,事件则用于在一个对象中发布消息,并允许其他对象订阅这些事件。使用委托和事件来实现一个简单的订阅发布模式,有一个Publisher发布消息,并且有一个Subscriber接收消息并在控制台输出。// 模拟按钮点击,触发事件。// 发布消息,触发事件。

2024-12-20 13:55:17 359

原创 c#中事件

在C#中,事件是一种特殊的委托类型,用于在对象之间提供通知。事件的发送方定义了一个委托类型,并在某个事件发生时调用该委托。接收方则订阅该事件,并在事件发生时提供一个方法来处理它。Console.WriteLine("事件被触发了!// ... 执行一些工作 ...,该方法将在事件触发时被调用。// 做一些工作,触发事件。// 做一些工作,然后触发事件。// 触发事件的方法。方法执行时,它会触发。// 定义发送事件的类。// 定义接收事件的类。

2024-12-20 13:40:02 330

原创 c#中委托

委托的声明类似于方法的声明,但委托没有方法体,且不可以在其上使用访问修饰符如public, private等。委托的声明使用delegate关键字。在C#中,委托是一种引用类型,它表示对方法的引用,即,它能够持有对某个方法的引用。委托类似于C或C++中的函数指针,但它是类型安全的。// 与委托匹配的方法。

2024-12-20 13:37:28 241

原创 c#using()自动释放流

/ 当代码执行到这里时,两个StreamWriter资源已经被自动释放。// 当代码执行到这里时,StreamWriter资源已经被自动释放。语句可以在同一时间管理多个资源,只需要在同一个语句中声明多个变量即可。这适用于需要手动管理资源的情况,例如文件流、数据库连接等。// 使用using语句自动释放流资源。语句确保在语句结束时释放对象占用的资源。// 同时使用多个资源。方法,释放与文件相关的资源。语句会在语句结束时调用对象的。语句块结束时会自动调用。

2024-12-18 19:55:07 614

原创 c#递归函数

在C#中,递归是一种非常有用的编程技术,可以用来解决一些复杂的问题。递归通常涉及一个函数调用自己来解决问题。为了使用递归,函数必须有一个明确的退出条件,称为基本案例,以防止无限递归。阶乘是一个非常适合使用递归的问题,因为它可以很自然地表示为一系列较小的问题的解决方案。基本情况(Base Case):这是递归结束的条件,防止无限递归。

2024-12-18 19:53:13 229

原创 C#if判断语句

/ 当条件1为 false 且条件2为 true 时执行的代码。是正数,它会输出"Number is positive.";是负数,它会输出"Number is negative.";// 当所有条件都不为 true 时执行的代码。是零,它会输出"Number is zero."。// 当条件1为 true 时执行的代码。// 当条件为 true 时执行的代码。语句用于根据条件执行不同的代码块。的值输出不同的信息。时执行代码,可以使用。

2024-12-10 20:24:44 711

原创 c#for循环

在C#中,for循环是一种常用的控制流语句,用于重复执行某个操作。:迭代表达式,在每次循环体执行后,并且在下一次条件评估前执行。因此,循环将输出1到10的数字,然后退出。:条件表达式,在每次循环开始前评估。:初始化表达式,在循环开始前执行一次。是否小于或等于10,

2024-12-10 20:19:59 343

原创 CPU和GPU

‌它是计算机的大脑,任何计算任务都依赖于CPU的处理能力。CPU由运算器、控制器、寄存器组和内部总线等组成,主要负责接收指令并执行相应的运算和逻辑处理。‌GPU‌。它广泛应用于个人电脑、工作站和一些移动设备(如智能手机、平板电脑等),并且在科学计算、人工智能、游戏开发等领域有着广泛的应用。‌CPU和GPU的区别?

2024-12-10 19:54:47 1006

原创 KCP协议

kcp是一个快速可靠协议(也可以叫udp的可靠性传输)。结合了tcp的可靠性和udp的传输速度等优点,能以⽐ TCP浪费10%-20%带宽的代价,换取平均延迟降低 30%-40%,且 最⼤延迟降低三倍的传输效果。使用纯算法实现,不负责底层协议(如udp)的收发,内部没有系统调用其中。

2024-12-06 11:03:19 359

原创 c#多维数组

/ 获取第3行第2列的元素(即值6)(数组第一行是从0开始表达)多维数组可以有多于一个的维度,并且每个维度都可以有自己的下限和上限。// 获取第2行第2列第1个面的元素。// 创建一个3x2的二维数组。// 创建一个三维数组。// 创建并初始化一个3x2的二维数组。

2024-12-04 20:09:35 294

原创 TCP粘包

‌‌:‌。

2024-12-03 20:23:24 201

原创 unity生命周期函数

Unity中的生命周期包括Awake(起床)、Start(开QnGul(屏幕更始)、Update(更新)、fixedUpdate(固定更新)、LateUpdate(后期更新)、新)等几个函数。每个生命周期函数都有其在游戏开发中的重要作用。初始化函数(awake start) ,更新函数(update fixedupdate lateupdate),事件处理函数(OnEnable,ondisable,ondestory)

2024-12-02 20:00:05 159

原创 c#中Dictionary

增 Add(key, value), 删:Remove(key),改:字典名[key] = value, 查:TryGetValue(value)ContainsKey和ContainsValue 查找指定的key或value是否存在。//创建字典 Dictionary dic = new Dictionary();Clear()方法用于清空整个字典,即删除所有键值对。Count 字典长度。

2024-12-02 19:56:23 314

原创 c#中的数据类型

判断 true/false,0为false,非0为true(例:-1和2都为true)C#中,string类对象创建后,字符串一旦初始化就不能更改,使用双引号“”引用。为long int的缩写,默认为有符号长整型,数据范围为:与int相同。char: 可容纳单个字符的数据类型用单引号‘’引用。float:单精度类型(用的时候需要在数字后加。double:64位双精度浮点数据类型。数据范围为:(-21亿~+21亿)(2)long:长整数类型。(1)int :整数类型。(以上描述,仅供参考)

2024-11-28 19:49:18 546

原创 c#中的线程

需要注意的是,直接在新线程中访问UI元素(如Windows Forms中的控件)时可能需要跨线程操作,这时可以使用。类来创建和控制线程。以下是一个简单的例子,展示了如何创建并启动一个线程,以及如何使用线程来执行一个简单的任务。// 创建一个线程,并指定一个线程启动时执行的方法。// 在这里执行需要在单独线程中运行的代码。方法来确保在UI控件的创建线程上下文中执行操作。被调用时,C#会创建一个新的线程并执行。方法将在新创建的线程中执行,而。// 线程执行的方法。方法则在主线程中执行。

2024-11-27 19:57:20 176

原创 C#中的线程

线程是一个独立的运行单元,每个进程内部都有多个线程,每个线程都可以各自同时执行指令。每个线程都有自己独立的栈,但是与进程内的其他线程共享内存。但是对于.NET的客户端程序(Console,WPF,WinForms)是由CLR创建的单线程(主线程,且只创建一个线程)来启动。在该线程上可以创建其他线程。

2024-11-26 19:34:14 122

原创 TCP与UDP的区别

TCP是一种面向连接的协议,这意味着在数据传输之前,发送方和接收方必须先进行三次握手以建立连接。TCP通过确认和重传机制来确保数据的完整性和正确性,适用于对数据可靠性要求较高的场景,如文件传输和网页浏览。UDP不提供确认、重传和流量控制机制,适用于对实时性要求较高但对少量丢包不敏感的应用场景,如视频会议和即时通讯。在数据包大小方面,TCP将数据划分为较小的数据包进行传输,而UDP允许发送方一次性将多个数据包打包成一个较大的数据报进行传输。(以上数据仅供参考)

2024-11-25 19:51:25 275

原创 TCP四次挥手

2.第二次挥手:服务器收到这个FIN报文后,发送一个ACK报文作为应答,确认号设置为收到的序列号加1。此时,TCP连接处于半关闭状态,即客户端到服务器的连接已经关闭,但服务器仍然可以发送数据给客户端。第四次挥手:客户端收到服务器的FIN报文后,发送一个ACK报文作为应答,并进入TIME-WAIT4状态。客户端等待足够的时间以确保服务器接收到其ACK报文后,最终进入CLOSED状态。3.第三次挥手:服务器发送完所有待发送的数据后,也发送一个FIN报文给客户端,并进入LAST-ACK状态。

2024-11-24 19:00:18 237

原创 TCP三次握手

‌:服务器收到客户端的SYN包后,会发送一个SYN-ACK包作为响应。这个包包含一个确认号Ack=X+1,同时包含自己的序列号Seq=Y,表示服务器也准备好进行连接。‌:客户端收到服务器的SYN-ACK包后,发送一个ACK包作为确认,确认号Ack=Y+1,序列号为Seq=X+1。‌:客户端发送一个SYN包到服务器,表示客户端希望建立连接。‌在于确保连接的双方都准备好进行数据传输,防止已失效的连接请求突然又传输数据。通过这三次握手,客户端和服务器都确认了对方已经准备好进行数据传输,TCP连接正式建立。

2024-11-21 18:56:34 205

原创 c#Socket通信写法

respond = Encoding.UTF8.GetBytes("服务器收到:"+receiveMessage);//用respond数组接收客户端发来的字节数组,且缓存字节数据的实际长度。//使用IPAddress构造函数把IP地址转换成IPAddress对象。//用Encoding类的转换方法把收到的字节数据转换成字符串。Console.WriteLine("绑定IP地址和端口号");

2024-11-20 20:11:59 1664

原创 c#静态方法与非静态方法

①静态方法只能对静态变量进行操作,而非静态方法可以对静态变量和非静态变量操作;③一个类中的方法可以相互调用,但静态方法只能调用静态方法,不能调用非静态方法;②静态方法可以由对象调用也可以由类名直接调用,而非静态方法只能由对象调用;④创建对象之前,非静态方法没有入口。

2024-11-19 19:40:53 142

原创 c#中的数组

/ 创建一个二维数组,两行三列的数组。数组是使用类型名称后跟方括号定义的,方括号内包含数组应该能够容纳的元素数量,(支持多维数组)。// 创建一个可以存储5个整数的数组。在C#中,数组是一种数据结构,它可以存储相同类型的多个元素。

2024-11-18 20:19:03 135

原创 c#调试窗口

断点过程中我们可以通过 (调试-窗口-即时) 断点时右下角出现的即时窗口,可以在断点过程中修改变量的值或输入表达式。断点过程中我们可以通过 (调试-窗口-监视),打开监视窗口。监视窗口可以自定义要监视的字段或变量的逐步变化过程。断点过程中我们可以通过 (调试-窗口-局部变量) 可以在断点过程中观察断点位置上下代码的变量数值变化。

2024-11-17 19:30:01 215

原创 c#中的调试

1.在中断模式下,可以在右下角看到调用堆栈 找不到的,在调试模式下 通过调试-《窗口-》调用堆栈,打开调用堆栈窗口。在调用堆栈窗口下我们可以观察到当前代码执行到哪一行了,并且可以看到这个代码的是被什么语句调用的。1.我们可以通过 (调试-窗口-断点),打开断点窗口,这个窗口显示了当前项目中添加了的所有的断点,我们可以在这里定位断点的位置,也可以去删除断点。3,光标定位到代码行,按下F9键,在此按下F9是取消断点。4,在需要添加断点的行首位置,直接单击,再次单击取消断点。

2024-11-14 19:48:47 267

空空如也

空空如也

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

TA关注的人

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