自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个新人博客,愿多多支持。愿她天天开心

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

原创 C# —— HashTable

集合collections命名空间,专门进行一系列的数据存储和检索的类,主要包含了:堆栈、和队列、list、ArrayList、数组 HashTable 字典。Dictionary 字典 长度不固定 类型固定 存储的是键值对,通过键来进行访问 字典的查询速度更快。HashTable 哈希表 长度不固定 键值类型不固定,存储的是键值对,通过键进行访问。ArrayList动态数组, 长度不固定 类型不固定 通过索引值访问。List 列表 长度不固定,类型固定 通过索引值访问。4 通过键获取值 hash表[键]

2024-07-18 21:20:45 230 2

原创 C# —— 泛型

重点: 泛型方法调用的时候 由传入的类型坚定着实参的类型,实参类型决定着形参的类型,所以形参作用就进而体现了,参数类型不固定 由方法调用决定。例子 封装一个泛型方法 有返回值 泛型数组 ,参数传递一个任意类型的数据和数字 转化为对应长度的数组,并且数组里面存储的是传递的类型。3 定义泛型方法 传递两个泛型参数,两个参数类型不一样 可以使用 Ta 以后可以 T1... 以后可以 T1...T2...T3。2 调用带两个泛型参数的方法 Test1 传递的类型是一个。泛型: 广泛的类型 一般用于传递类型的。

2024-07-17 21:06:22 446 1

原创 C# —— var

var a;报错var: 在声明的时候 不清楚变量的类型,复制成功之后才会知道变量的类型,var在定义完变量一定要赋值,可以接收任意类型的变量。

2024-07-17 20:59:37 412

原创 C# —— CRC16 算法

CRC16:即循环冗余校验码。数据通信当中一种常用的查错校验码其特征信息字段和校验字段的长度可以是任意选定的,对数据进行指定多项式计算并且将得到的结果附加在帧的后面,接受的设备也执行类似的算法,以保证数据传输的正确性和完整性。

2024-07-16 21:10:00 436

原创 C# —— (左移 右移 异或 与 或 )运算规则

因此,左移可以理解为整数的乘法,而右移则是理解为整数的取整除法。如果左移,则右边补零,(3) 1 ^ 1 = 0,0 ^ 0 = 0 任何数异或自己=把自己置0。(2) 1 ^ 0 = 1,1 ^ 1 = 0 1异或任何数=任何数取反。(1) 0^0=0, 0^1=1 0异或任何数=任何数。换算成十进制 8 右移2位 变成8/(2*2)=2。换算成十进制 3 左移2位, 变成3*2*2=12。例如 二进制 011 ,左移2位, 变成01100。

2024-07-16 21:01:29 389

原创 C# —— Sort排序

使用 CaseInsensitiveComparer.Default.Compare 对数字 字符串 汉字都可以进行对比。数组的元素是字符串 字符串也可以进行比较。因为字符串不能使用x-y这种方式进行比较。当返回x-y 正序排序。当返回y-x 正序排序。

2024-07-12 19:50:00 628

原创 C# —— 数组的对象方法

类.方法名() 作业遍历数组,参数2函数,对数组所有的元素进行相同的操作。参数1 复制的目标的数组,参数2是从那个位置开始复制的。以下 数组的对象方法。

2024-07-12 19:36:12 109

原创 C# —— 数组的告诫查询方法

Findlndex 和 Find 用法一样,FindIndex找到满足条件的元素的索引 找不到的返回-1,Find找到满足条件的元素。TrueForAll()判断一个数组元素是否都满足条件,如果都满足了 结果为true,只要有一个不满足 结果为false。Find 参数1 目标数组,参数2是一个方法,返回满足的条件 一般是一个bool值 观察数组的元素是否满足这个条件。list是否存在满足条件的元素 value是数组的元素。判断数组中是否至少有一个满足条件的元素,(只要有一个满足了就为true)

2024-07-11 19:45:30 569 1

原创 C# —— 方法的参数列表

固定参数和不定参数个数的方法声明,先把固定的参数写在前面,不定参数个位数写在后面。参数个数不确定 可以使用 params 数据类型[] 参数名字进行定义;10, "hello world" 是属于固定参数。参数列表格式,如果有一定数量的参数用,隔开。既有固定参数 和不定参数方法的调用。不定参数关键字 params。a,b 是不定参数数组的元素。

2024-07-11 19:38:49 255

原创 C# —— Directory类

Directory 提供了目录以及子目录进行创建移动和列举的操作方法Directory 和DirectoryInfo类 (主要操作文件目录属性列如文件是否隐藏的 或者只读等这些属性)

2024-07-10 21:06:35 727

原创 C# —— BufferedStream的

BufferedStream的主要特点和用途如下:特点:提供缓冲区,减少对底层流的直接访问。提高读写操作的速度,尤其是在处理大量数据时。可以配置缓冲区大小,以适应不同的应用需求。用途:优化对文件、网络资源等底层流的读写性能。作为其他非缓冲流(如FileStream、NetworkStream)的包装器,增加缓冲功能。创建一个缓存去对象 参数是stream对象,指定字节临时存储的路径seek设置当前缓存流中的位置存储数据。

2024-07-10 21:00:24 1380

原创 C# —— BinaryWrite和BinaryRead 文件读取

BinaryWrite 和 BinaryRead 从二进制流读取原始数据 以二进制流写入数据。参数2 创建文件的模式 create 如果文件存在 会把之前的替换。数组 变量 内存当中就是缓存,读写块,不是持久存程序一但停掉 存储数据立马消失。文件读写操作,存储在硬盘空间,持久化存储,坏处 存储慢。参数3 文件的权限,写入文件。清空缓存区,将缓存区里面数据写入指定的文件。创建一个写入对象 参数是文件流。以二进制的形式进行读写文件。

2024-07-09 19:42:22 379

原创 C# —— FileStream文件流

参数3 : 对文件有哪些权限 可以对文件来进行那些操作,列如Read 读取操作,ReadWrite读写操作 write 写。I/O类 包含各种不同的类 用于执行各种文件操作,创建文件删除文件 读写等操作。Append:追加,打开一个已有文件 并将光标移到文件末尾,如果没有该文件先创建文件。create: 创建一个新文件 如果已经有了这个文件 先删除这个旧文件,在创建。如果有8.txt文件,就直接打开 如果没有 先创建再打开,可以进行读写操作;open :打开一个已有的文件,如果没有文件,程序抛异常。

2024-07-09 19:34:16 348

原创 C# —— File文件读写

在进行文件操作的时候 必须先引入IO命名空间 I是in 输入;out 输出File 类指定文件的读取 写入 复制 剪切 删除操作的功能。

2024-07-09 19:31:55 523

原创 C#中的异常捕获 try catch finally

处理异常提供的四个关键字,try...catch...finally...throwfinally 最后,不管异常是否被抛出都会执行,例如 打开一个文件,不管是否出现异常都需要关闭,throw: 当问题出现的时候 程序可以抛出一个异常,使用throw关键字抛出异常,

2024-07-08 19:56:46 395 1

原创 C# —— try catch

如果捕获不同类型的错误 需要在catch时候添加不同类型的对象 FormatException 格式错误的类型;OverflowException超出范围。try catch 可以捕获多个错误,try...cath...cath。异常代码: 例如除数如果为0的情况 或者不同类型转换的时候出的错。try尝试执行代码 有可能出现错误。catch 捕获错误。

2024-07-08 19:52:35 424

原创 C# —— 日期对象

/ 把字符串2023年9月 13 16:40转成时间对象。h表示12小时值 hh表示12小时值个数前面加0。H表示24小时值HH表示 24小时值个数前面加0。DayOfWeek 是枚举类型 具体数值一般都是数字 值类型。// now 是DateTime类型,m表示分钟 mm表示分钟 个位数前面加0。获取2023年9月 13 16:00 距离1979年的眇。dd 表示日期个位前添加0 , 09。MM 表示月份个位前添加0 ,09。ss表示秒个数前面加0。yyyy 表示完整年。

2024-07-04 21:01:35 487

原创 网口串口(Serialport)服务器

Read("Secotion",A,"1000") 最终结果:hello world。//static 静态的变量 只能声明在当前文件中,不能在其他源文件进行使用。Read("Secotion",C,"1000") 最终结果:1000。//以后Read("段名","键名") 返回字符串类型。Read("Secotion",C,1000) 最终结果:1000。对上面ReadData再封装,封装能直接返回指定类型的数据的方法。//读取ini数据的方法。读取的时候 返回一个整型的数据值。

2024-07-03 20:43:20 959

原创 C# —— Math对象

Math 数学类 提供了一些相关数学计算的属性和方法、四舍五入、向上求整、向下求整、开平方,几次方 最大值和最小值 sin cos 绝对值。

2024-07-03 19:32:50 519

原创 C# —— 方法参数ref和out的作用

/ out 关键字只强调能够返回什么值给外边的变量 不关心传入的是什么样的值,3 在方法内部需要先初始化才能使用。// 如果方法参数加上ref ,结果是20,传递的数据是引用类型,在方法进行修改形参,实参会跟着变化。out 关键词,return 关键字用于从函数中返回一个值,只能返回一个值,可以使用out来从函数中返回两个值。结果10,传递的数据是值类型,在方法中进行修改,实参不会跟着变化。ut 输出参数把方法中的一个数据赋值给自己,于引用参数相似。ref 关键字可以使参数变成引用类型的参数,

2024-06-27 19:41:39 329

原创 串口通信例子SeriaPort

串口COM: 是一种用于联接计算机和外设设备的接口,也叫串行接口,简称com,常见的串口有一般电脑应用的RS-232(使用25帧或者9帧的连接器) 通俗来讲串口就是usb接口、鼠标窗口。单位是bit/s,常见的波特率是9600bit,1Byte是8bit 9600bit/8 = 1200字符,也就是1s发送1200个字符。注意波特率不能太大 也不能太小,如果太大了传输的数据不稳定,如果两端的波特率不一致会导致数据不一致,如果太小了。Parity.Even 偶数校检,保证传输过程中高位数是个偶数个。

2024-06-27 19:28:41 801

原创 C# —— 访问修饰符对继承的影响

/ 公共的或者受保护的属性可以被继承过来 例如b c d。// 私有的属性和方法不能继承 例如a不能继承。// 子类的访问: 直接b或者this.b。// 对象访问: 对象.b 访问。// 类访问 People.b。当前类访问: 直接b或者this.b。子类可以继承父类那些东西?

2024-06-26 21:21:40 486

原创 udp udpClient 聊天室

1、UDP(User Data Protocol,用户数据报协议)(1) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。(2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。

2024-06-26 21:16:10 667

原创 C# —— 子类访问父类

创建子类对象的时候可以调用父类的带参数的构造函数,在子类的构造函数后面:base()调用父类的构造。创建子类对像时候 默认调用父类的无参数的构造函数,不会调用带参数构造函数。

2024-06-25 19:57:36 368

原创 udp Socket组播 服务器

组播也可以称之为多播这也是 UDP 的特性之一。组播是主机间一对多的通讯模式,是一种允许一个或多个组播源发送同一报文到多个接收者的技术。组播源将一份报文发送到特定的组播地址,组播地址不同于单播地址,它并不属于特定某个主机,而是属于一组主机。一个组播地址表示一个群组,需要接收组播报文的接收者都加入这个群组。广播只能在局域网访问内使用,组播既可以在局域网中使用,也可以用于广域网。

2024-06-25 19:43:47 532

原创 C# —— 继承

继承: 可以根据现有的类a生成一个新类b,希望b类具有a类的属性和方法,可以让b类继承于a类,所以a类就是父类,b类是子类或者派生类,但是注意一个类不能同时继承两个类,c继承b,b继承a。1.封装: 例如平时定义一个类 添加属性和方法,属性和方法必须通过指定的对象进行使用,(专业来讲。如果说一个类没有继承任何类,默认继承与Object类,所有的类基类都是Object,可以理解为Object就是C#中祖宗。2.继承: 子类和父类的区分,子类可以继承父类的属性和方法 不用在子类重新定义,

2024-06-24 19:31:04 402

原创 udp协议 服务器

udp:(User Datagram Protocol):是一种无链接、不可靠、基于数据报文传输层协议,他不提供数据包的分组排序和组装功能,也不提供可靠性的保证。2 tcp传输数据稳定可靠,适用于对网络通信质量要求高的场景,需要准确无误的发给对方,例如 传输文件 发送文件浏览网页。但是有可能会产生丢包问题,所以适用于实时性要求较高的的但是对丢包没有要求太高场景。当应用程序对传输的可靠性要求不高,但是对传输速度和延迟要求较高时可以使用udp协议。1 udp基于IP 的简单的协议,不可靠的协议。

2024-06-24 19:25:59 585

原创 C# —— 构造函数

构造函数: 一般在函数为类的属性初始值的作用,构造函数的名称类名在类里面定义构造函数 方法名和类名同名 不能带返回值类型 void/非void 不能有// 创建一个构造函数set;set;// 在类里面定义构造函数 方法名和类名同名 不能带返回值类型 void/非void 不能有// 构造函数// 构造函数带参数// 把参数赋值给属性Age = age;set;set;set;set;set;set;set;set;Speed = sp;Type = "大";

2024-06-21 14:31:33 379 2

原创 tcp 客户端进行拆包

MemoeySteream内存流把数据长度和数据内容写在一个包里。调用MemoryStream进行添加数据长度的方法。没有使用MemoryStream进行添加数据长度。

2024-06-21 14:13:26 401

原创 C# —— 属性和字段

4.字段可以存储数据,属性不能存储数据,通过属性访问私有的字段,可以保证私有字段的安全性。属性的gei和set作用: get取出私有字段 可供外部使用;2.字段一般都是私有的private,属性一般是公开的Public。3.字段以小驼峰命名方式 age,属性一般是以大驼峰命名 Age。1.都是定义在一个类中,属于类成员变量。

2024-06-20 19:42:36 337

原创 tcp 粘包和拆包 及 解决粘包方案

TCP 是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的 socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle 算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边界的粘包和拆包是网络编程中常遇到的问题,主要是因为TCP协议的Nagle算法和接收方缓冲区的不足导致的。

2024-06-20 19:35:38 581

原创 C# —— 对象

对象: 类的实例化,类中的其中一个, 可以访问类中的属性和方法,所以才有了对象 属性 或者对象方法 () 这种方法创建对象: 类名 对象名 = new 类名()

2024-06-19 19:42:14 391

原创 C# —— 类

类;就是具有相同属性和方法的对象集合,例如,人类 动物类型 ADC类等 Array数组类 ArrayList类 List类 字符串类等 类包含又什么东西组成 又什么可执行的操作(方法)对象;类的实例化.通俗讲就是类中的其中一个, 例如 哈士奇,鲁班等 a1 a2 a3就是ArrayList中的对象类成员: 一个类包含的信息属性和方法定义一个人类: 属性: 姓名 年龄 身高 体重等 方法;吃饭 睡觉 打豆豆类和对象贯穿于整个面向对象编程语言中,也就是核心内容语法: 修饰符 class类名。

2024-06-19 19:40:00 271

原创 心跳机制讲解及实例

心跳机制出现在tcp长连接中,客户端和服务器之见定时发送一种特殊的数据包通知对方还在线,以确保tcp链接地可靠性,有可能tcp链接由于某些原因(列入网线被拔了,突然断电)导致客户端断了,但是服务器不知道客户端断了,服务器还保持与客户端连接的状态,所以为了不浪费资源,需要知道客户端非正常中断,服务器把断开客户端断开链接,需要加入心跳包机制。

2024-06-18 21:04:36 823

原创 C# —— 字符串的相关属性和方法

string 属于特殊的引用类型字符串创建的三种方式。

2024-06-18 19:19:38 439

原创 C# —— 字典

字典: 包含一个key(键)和这个key所对应的value(值),字典是无序的,key是唯一的,可以根据key获取值。可以吧键当成数组的索引值进行理解<> 泛型定义一个字典 new Dictionary<key的类型, value值的类型>()dic.Add("name", "刘总");// add() 方法添加键值对 键为name值为 值为刘总// 添加一个元素 键为age 值为20。

2024-06-18 19:13:29 418

原创 C# —— for循环语句

第二个空(条件表达式): 表明进入循环的条件 一个bool类型的值(bool类型 条件运算符 逻辑运算符)Console.WriteLine("这是一个特殊的for循环");for循环同while dowhile循环一样 可以同其他条件语句等进行嵌套使用。第一个空(初始表达式): 一般用来声明一个临时的局部变量 用来计数。第三个空(增量表达式): 使用第一个空中的变量 进行自增减运算。for循环执行时 先执行初始表达式 进行变量的初始化。然后切判断条件是否满足 满足条件则执行 不满足则不执行。

2024-06-17 19:32:56 580

原创 C# —— 枚举

枚举是一个特殊的存在// 它是一个被命名的整形常量的集合// 一般用来表示 状态 类型 等等Boss, // 1。

2024-06-17 19:30:41 875

原创 C# —— do_while循环

do...while循环跟其他语句有一个特别注意点 语句结束需要加分号 如果不加会报错。do...while 循环 是先执行一遍 循环体里面的逻辑 再判断是否继续执行。while 循环 先判断条件是否满足 再进行循环。

2024-06-16 20:11:28 273

原创 C# —— while循环语句

通过使用break关键字 跳出循环 break之后的代码不会再进行执行 当然 循环也会结束。当代码逻辑执行完 会回到while循环开头。// 条件分支语句: 让代码产生分支 进行执行。循环体(条件满足时执行的代码块)嵌套使用时 先循环最里面的循环体 循环完之后再执行外层的循环体。// 循环语句 : 让代码可以重复执行。循环未结束时 会一直执行里面的代码块。让顺序执行的代码 可以停下来 循环执行某一代码块。一直循环 执行循环体内的代码块 "直到死为止"作用 : 控制循环逻辑的关键词。

2024-06-16 20:08:42 793

空空如也

空空如也

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

TA关注的人

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