自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C#知识点-22(ADO.NET五个对象,SQL漏洞注入攻击)

SqlCommand表示向服务器提交的一个命令(SQL语句等),CommandText属性为要执行的SQL语句,ExecuteNonQuery方法执行一个非查询语句(Update、Insert、Delete等)由于每次正常连接数据库都会至少执行三个操作(1、登录数据库服务器 2、执行操作 3、注销用户),所以每次通过Connection向数据库服务器申请一个连接都比较耗时。1、ExecuteNonQuery() 执行对数据库的增删改,返回收影响的行数。2、执行SQL语句Command。

2024-03-06 22:08:21 768

原创 C#知识点-21(初识数据库)

数据库与内存、文件的比较内存:优点:存取速度快缺点:-容量小-断电后,数据不会保存文件:优点:数据可以持久化保存缺点:-读取速度慢-编码格式不好控制数据库:优点:-容量大-读取速度快-统一的编码格式缺点:使用难度较高。

2024-03-03 19:18:27 998 1

转载 C#知识点-20(二十三种设计模式)

设计模式1、在某些场景下,针对某些问题的某种特定的解决方案2、设计模式是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结3、让代码更容易被人理解、保证代码可靠性、保证代码稳定性、保证代码易于扩展本文大部分引用了博客园的昵称为Learning hard的博主,这个博主写的真的好,推荐去看看单例设计模式单例设计模式:确保一个类只有一个实例,并提供一个访问它的全局访问点饿汉式优点:1、代码层面,书写简单 2、线程方面,避免了线程同步问题缺点:类加载

2024-03-01 21:47:50 175 1

原创 C#知识点-19(七大设计原则、通过反射破坏单例设计模式、基于Task的异步编程模型、Winform中的异步)

1、设计原则是「高内聚、低耦合」的具体落地。2、单一职责原则要求在软件系统开发、设计中,一个类只负责一个功能领域的相关职责。3、开放封闭原则要求一个软件应该对扩展开放,对修改封闭,即在不修改源代码的情况下,完成系统功能的扩展。4、里式替换原则决定了子类可以赋值给父类,5、依赖倒置原则要求抽象不应该依赖于细节,细节应该依赖于抽象。要面向接口编程,不要面向实现编程。6、迪米特原则要求一个对象尽可能少的与其他对象发生相互作用。

2024-02-28 21:23:58 735

原创 C#知识点-18(多线程、同步、异步编程)

应用:在使用多线程开发的过程中,一些敏感的重要的数据不允许多个线程同时访问,此时就需要多线程同步技术,保证数据在任何时刻,最多有一个线程访问。线程池:线程池就是存储线程的池子,里面是一组已经创建好的线程,随用随取,用完了不销毁,供给后续使用。指同一时刻,有多个线程再多个处理器上同时执行,无论从宏观还是微观来看,这些线程都是一起执行的。线程:是进程的一个实体,是cpu用来调度执行程序的最小单元,一个进程可以拥有多个线程。循环等待性:线程1等待线程2占有的资源,线程2等待线程1占有的资源。

2024-02-28 20:17:00 322

原创 C#知识点-17(正则表达式)

可以在括号中使用连字符“-”来指定字符的区间来简化表示,例如正则表达式[0-9]可以匹配任何数字字符,这样正则表达式“a[0-9]c”等价于“a[0123456789]c”就可以匹配“a0c”、“a1c”、“a2c”等字符串;” 可以匹配 “do” 或 “does”。例如正则表达式“b.g”能匹配如下字符串:“big”、“bug”、“b g”,但是不匹配“buug”,“b..g”可以匹配“buug”。例如,“e{2,}”不能匹配“bed”中的“e”,但能匹配 “seeeeeeeed”中的所有“e”。

2024-02-21 21:14:21 1379

原创 C#知识点-16(计算器插件开发、事件、递归、XML)

概念:事件,就是一个类型安全的委托(事件是安全的,因为在类的外部,事件只能被赋值,而不能被调用)概念:在方法中,自己调用自己。必须在满足某个条件的时候,退出递归。事件的三个重要组成部分:注册事件、触发事件、响应事件。递归查找所有的文件夹和文件。XML:可扩展的标记语言。通过代码创建XML文档。

2024-02-21 21:13:45 477

原创 C#知识点-15(匿名函数、使用委托进行窗体传值、反射)

之前我们写的委托都是需要自己定义委托的参数和返回值,而.NET框架为我们封装了泛型委托框架,让我们不用再声明委托,可以直接使用。它的本质就是一个方法,虽然我们没有定义这个方法,但是编译器会把匿名函数编译成一个方法。概念:反射就是动态获取程序集中的元数据(提供程序集的类型信息)的功能。2、当点击form1按钮时,将textbox里的值传递给form2。3、当点击form2的按钮时,将窗体2中的值传递给窗体1。匿名函数定义的参数列表的参数类型,是不能省略的。不带返回值的委托,可以有参数,也可以没有参数。

2024-02-21 21:12:47 572

原创 C#知识点-14(索引器、foreach的循环原理、泛型、委托)

概念:索引器能够让我们的对象,以索引(下标)的形式,便捷地访问类中的集合(数组、泛型集合、键值对)声明委托:public delegate(委托的关键字) 返回值类型 委托名称(参数列表)2、需要给被循环的对象,创建一个遍历的对象,并且要实现IEnumerator接口。使用委托:创建委托对象,指向某一个跟委托签名一致的方法(签名:参数和返回值)概念:在某些情况,我们不想使用特定的数据类型,可以使用泛型。1、要被循环的对象,需要实现IEnumerable接口。2、索引的数据类型、个数、顺序不固定的时候。

2024-02-21 21:12:05 428

原创 C#知识点-13(进程、多线程、使用Socket实现服务器与客户端通信)

这是因为关闭程序的时候,主窗体这个前台线程关闭了,程序会调用Dispose这个方法进行线程的资源释放。原因是我们的cpu不一定能及时的解决处理线程的操作,因为线程是告诉cpu,“我这个线程准备好了,随时可以操作”,但是具体啥时候操作,程序员说了不算,还要看cpu的“心情”。因为创建textBox1的是主线程,而你创建了一个新的线程th,th调用Test方法会访问主线程创建的控件,这个操作默认是不允许的,我们不允许跨线程的访问,因为这是不安全的。后台线程:只要所有的前台线程结束,后台线程自动结束。

2024-02-21 21:10:36 1041

原创 C#知识点-12(简单控件、使用GDI+绘制验证码、坦克案例)

Winform窗体应用变量名.Visible = false;//将某个控件隐藏起来变量名.Visible = true;//将某个隐藏的控件显示出来变量名.Focus();//将某个控件设置焦点变量名.WordWrap = true;//自动换行//从指定的文件创建Image图像名称.SizeMode = PictureBoxSizeMode.Zoom//图片自适应大小使用Timer控件时,需要将Timer的属性中的Enabled属性设为true;

2024-01-22 21:03:35 431 1

原创 C#知识点-11(FileStream文件流操作,using代码块,加密解密,压缩解压缩,序列化和反序列化,StreamReader和StreamWriter)

加密就是假设把一个数据先通过FileStream.Read读取出来,在缓存区中把每个字节取出来给他一个特定的规律让它发生变化,比如说我用255减去这个数字,然后用FileStream.Write再把加密后的数据写入到新文件中。b.我们软件中,用户的配置,可能是需要进行持久化保存的,我们可以把用户的配置,保存到对象中,并使用序列化的技术持久化的保存到本地文件中,下次再启动程序的时候,再通过反序列化的技术,获取之前保存的对象数据,然后进行下一步的操作。3、把压缩后的数据,写入到指定的目标文件下。

2024-01-21 23:27:57 993 1

原创 C#知识点-10(多态:虚方法、抽象类、接口,单例设计模式、简单工厂设计模式、依赖注入)

定义:抽象类是一种不能被实例化的类,其目的是为了被其它类继承并实现其抽象方法。案例:计算圆形、矩形的面积和周长我们先定义一个父类Shape,这个问题的共同点在于都要计算图形的面积和周长。在父类中写两个方法,一个计算面积,一个计算周长。但是我们没办法在父类中写具体的代码,因为面积周长的计算方式因图形不同而异。所以我们只在父类中写方法而不写具体的方法体,但是这样是“不合法”的。这时候我们将方法定义为抽象方法,添加一个abstract关键字。

2024-01-21 21:20:42 988 1

原创 C#知识点-09(Hashtable集合,装箱和拆箱,泛型集合,File文件操作)

又在栈中另外开辟了一块空间,命名为o,这个o在栈中存储的是它指向的堆中的开辟空间的地址。string str = Encoding.Default.GetString(buffer,0,buffer.Length) 解码,将字节数组转换为我们能看懂的字符串格式的数据,从索引为0的数组开始截取,截取buffer.Length个字节。File.WriteAllLines(path,new string[]{"a","b"}) 将一个文件写入数据,数据类型要求字符串数组,写入的数据会覆盖原有数据。

2024-01-20 15:10:05 927

原创 C#知识点-08(继承,继承里的构造函数问题、里氏替换原则、ArrayList集合)

2、子类虽然没有继承父类的构造函数,但是子类默认会调用父类无参数的构造函数。如果在父类中,有了新的有参数的构造函数,父类默认无参数的构造函数就消失了,子类就调不到了,然后子类就开始报错了。如果一个类,没有显示的继承另一个类,那么这个类就继承了object 如果一个类,就算是显示的继承了另外一个类,这个类,同样也继承了object。结果就是,子类无法调用父类的重名成员,只能调用自己的成员。定义:把类中的一些共有的属性和方法,单独的封装到一个类中,这个类就是这些类的父类(基类),其他类称之为子类(派生类)

2024-01-18 23:04:17 755 1

原创 C#知识点-07续(构造函数再理解,静态与非静态再理解,命名空间)

类直接调用的,一定是静态成员;因为静态类时拿类去调用的,创不创建对象没有意义(因为实例成员需要拿对象去调用,所以实例成员用到时要创建对象)好处:1、显示地调用本类的构造函数,减少大量的初始化的冗余代码。7、静态成员具有全局共享的特点,存储在静态存储区域,在整个的程序运行中,都不会被资源释放。3、跨项目访问:1、添加对要访问项目的引用 2、导入命名空间 3、将要跨项目访问的类的访问修饰符,修改为public。3、实例成员属于对象,在类的外部,通过对象名去调用,在类的内部,通过this关键字调用。

2024-01-18 20:51:34 367 1

原创 C#知识点-07(构造函数、静态与非静态、字符串)

4、s1在堆中为张三,Test方法在栈中创了一个s2,s2="李四"代码执行时在堆中新建了一块空间为李四。这体现了字符串的不可变性,虽然字符串类型是引用类型,但是修改某一份字符串的值不会修改原有字符串在堆中的值,只会在堆中重新开辟一块空间,然后将指针指向新空间的地址。1、在堆中开辟了一个新的空间,这个空间的地址在栈中用p表示。形参在栈中用p2表示,而p2表示的地址和p的地址都相同,他俩指向的是堆中的同一块空间。3、前面描述相同,p2=p3时,将p3的地址给p2,p3的姓名为王五,但p还指向李四。

2024-01-15 22:48:51 1038

原创 C#知识点-06(面向对象思想)

面向对象:强调程序中的对象,这些对象可以是现实世界中的实体或软件中的抽象实体。public :最大的访问权限,不仅在当前项目内部随意访问,出了这个项目,也可以访问。get对字段进行取值,当我们在外界对属性取值的时候,会通过get返回属性包裹的字段的值。set是对字段进行赋值,当我们在外界通过属性给字段赋值的时候,执行的是set。字段:存储数据的,一般为private(私有的,只能在当前类中访问)。面向过程:面向的是完成这件事的过程,强调的是过程中的每一个动作。this关键字:this强调的是对象的成员。

2024-01-13 20:14:25 456 1

原创 C#知识点-05(Params可变参数,彩票案例)

选数字 6个红球 1个篮球 红球 1-33 篮球 1-16 所有的红球,不能重复 篮球可以跟红球重复。生成中奖号码 6个红球 1个篮球 红球 1-33 篮球 1-16 所有的红球,不能重复 篮球可以跟红球重复。2、传入与数组类型元素一致的若干个元素进去,params会把这些跟数组元素类型一致的数据,拼成一个数组。3、使用细节:params可变参数数组,必须是形参列表中的最后一个元素。如果有重复的数字 则返回数组中相同数字的索引;方法一:让用户自选数字。

2024-01-13 15:36:38 429 1

原创 C#知识点-04 (数组、冒泡排序、值类型贺引用类型、方法)

比如是{5,4,3,2,1} 先拿5和其他四个数依次比较,变成{4,3,2,1,5};比如拿5和其他数作比较的时候总共交换了四次,而越往后交换的次数越少(因为在5的比较次数中5已经确定了是最大的数,后面不需要跟5比较,依此类推)。3、开辟的连续的5个空间,每个空间,在内存中仍有内存地址,但是内存地址是没有规律的表达方式,不便于程序员使用或者记忆。1、当我们写了上面这样一行创建数组的代码之后,我们在内存的堆中,开辟了【连续】的5块空间,每块空间,都默认给了一个初值【0】d、out参数,在方法的内部必须赋值。

2024-01-09 21:22:35 470

原创 C#知识点-03 (for循环练习,三元表达式,随机数,常量,枚举,结构体)

注意:定义随机数对象的代码不能写到循环里,因为循环的速度太快,而定义随机数执行效率相较而言又太慢,所以每回都要定义的话会出现大量重复的数字的情况。定义一个结构叫MyColor,有三个成员,分别定义为int类型的red,green,blue。声明一个 MyColor类型的变量,并对其成员赋值.使MyColor可以表示成一个红色.找出100内所有的素数(素数即是质数,质数:只能被1和自身整除的数字,1不是质数)不同于变量定义不需要赋初值的是,定义一个常量必须要赋初值,并且常量的值不允许改变。

2024-01-08 19:57:54 660 1

原创 C#知识点-02 (if_else,Switch_Case,While循环,for循环,try_catch异常捕获 )

else(此处是既不是天晴,也没有乌云的情况,包含所有不属于这两种情况的其他情况)Console.WriteLine("葫芦娃救爷爷");Console.WriteLine("老鼠爱打洞");Console.WriteLine("太阳升起");Console.WriteLine("牛气冲天");Console.WriteLine("要下雨");Console.WriteLine("随便");Console.WriteLine("请随便输入一些东西");Console.WriteLine("一百遍")

2024-01-07 19:54:11 501 1

原创 C#知识点-01(字符串连接,交换变量,数据类型转换,闰年判定问题)

2、占位符 Console.WriteLine("有个同学叫{0},年龄是{1},身高是{2}cm,电话是{3},性别{4},爱好{5}",name,age,height,tel,gender,hobby);1、直接连接 Console.WriteLine("有个同学叫"+name+",年龄是"+age+"岁,身高是"+height+"cm,电话是"+tel+",性别"+gender+",爱好"+hobby);显式类型转换是将大数据转换为小数据,比如将double类型的数据转换成int类型。

2024-01-05 19:29:24 517 1

空空如也

空空如也

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

TA关注的人

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