- 博客(37)
- 收藏
- 关注
原创 【C#语言入门】22. 接口、依赖反转、单元测试
在现实世界中,由于自身能力有限,合作是一个非常常见的行为,而面向对象是对现实世界的抽象,因此也存在着类与类、对象与对象的合作,即”依赖“。依赖的出现伴随着耦合,依赖越直接,耦合度越高。
2024-03-18 17:04:52
538
原创 【C#语言入门】16. 委托详解
委托是一种类(class),类是数据类型所以委托也是一种数据类型它的声明方式与一般的类不同,主要是为了照顾可读性和C/C++传统注意声明委托的位置,避免写错地方结果声明成嵌套类型委托与所封装的方法必须“类型兼容”——》返回值的数据类型一致,参数列表在个数和数据类型上一致(参数名不需要一样)
2024-03-07 13:23:27
1841
原创 【C#语言入门】10. 操作符详解(下)
位移操作符,数据在内存当中的二进制结构,向左或者向右进行平移。左移加进来的一定是0,右移,操作的是正数,补进来的是0;负数的话,补进来的是1。条件与、条件或,结果都是布尔类型。条件与的短路:当条件与发现左边的结果已经是“假”值了以后,就不会执行右边部分。基本无特殊注意点,要注意两边数据类型不同时,遵循“数值提升”原则。位与、位异或、位或,对位进行操作。
2024-03-06 17:19:13
478
原创 【C#语言入门】15. 方法参数进阶,扩展方法
传值参数:参数的默认传递方式输出参数:用于除返回值外还需要输出的场景引用参数:用于需要修改实际参数的场景数组参数:用于简化方法的调用具名参数:提高可读性可选参数:参数拥有默认值扩展方法:为目标数据类型“追加”方法。
2024-03-06 12:42:17
454
原创 【C#语言入门】14. 字段,属性,索引器,常量
什么是索引器索引器(indexer)是这样一种成员:它使对象能够用于数组相同的方式(即使用下标)进行索引(indexer+双回车)public int?
2024-03-05 13:25:56
1983
原创 【C#语言入门】13. 表达式、语句详解(3)
执行步骤:for-initializer(只执行一次)—》 for-condition(如果是true)—》embedded-statement—》for-iterator。(比较适用于计数的循环)foreach语句用于枚举一个集合的元素,并对该集合中的每个元素执行一次相关的嵌入语句。continue语句将开始直接封闭它的while、do、for、foreach语句的一次新迭代。迭代语句重复执行嵌入语句,有while、do、for、foreach四种语句。do语句按不同条件执行一个嵌入语句一次或多次。
2024-03-05 10:29:56
457
原创 【C#面向对象设计模式】03. Abstract Factory 抽象工厂(创建型模式)
/客户程序road.AAA();如果没有应对“多系列对象构建”的需求变化,则没有必要使用Abstract Factory模式,这时候使用简单的静态工厂完全可以。(而不是对象的变化增减)“系列对象”指的是这些对象之间有相互依赖、或作用的关系,例如游戏开发场景中的“道路”与“房屋”的依赖,“道路”与“地道”的依赖。Abstract Factory模式主要在于应对“新系列”的需求变动。
2024-03-04 18:12:54
436
原创 【C#语言入门】11. 表达式、语句详解(1)
Wikipedia对语句的定义语句是高级语言的语法——汇编语言和机器语言只有指令,语句等价于一个或一组有明显逻辑关联的指令。举例:求圆柱体积。C#语言对语句的定义C#语言的语句除了能够让程序员“顺序的”表达算法思想,还能通过条件判断、跳转和循环等方法控制程序逻辑的走向。简而言之就是:陈述算法思想,控制逻辑走向,完成有意义的动作。C#语言的语句由分号结尾,但由分号结尾的不一定都是语句。语句一定是出现在方法体里的。//这不是语句//这也不是语句。
2024-02-29 16:08:29
431
原创 【C#面向对象设计模式】02. Singleton单件(创建型模式)
保证一个类仅有一个实例,并且提供一个该实例的全局访问点。实际上是对实例个数的控制。
2024-02-29 14:42:53
464
原创 【C#面向对象设计模式】01. 面向对象设计模式与原则
只需要在新的文件里增添新的员工类,让其继承自Employee抽象类,并重写GetSalary()方法,然后在EmployeeFactory.GetEmployee方法中根据相关条件,产生新的员工类型就可以了。使用面向对象编程语言,可以推动程序员以面向对象的思维来思考软件设计结构,从而强化面向对象的编程范式。随着客户公司业务规模的拓展,又出现了更多类型的公司,比如钟点工、计件工……我们需要设计一个人事管理系统,其中的一个功能是对各种不同类型的员工,计算其当月的工资——不同类型的员工,拥有不同的薪金计算制度。
2024-02-28 16:22:43
483
原创 【C#语言入门】09. 操作符详解(中)
正副非反操作符,正副操作符基本与数学运算符一致,但是由于计算机语言中数据类型的最大值和最小值绝对值并不相同,因此对最大值直接取负很有可能产生溢出,因此我们要用到取反操作(~)。默认情况下只能获取基本数据类型的尺寸(结构体),在非默认的情况下我们可以用他去获取非基本数据类型,但是要放在非安全的环境中(unsafe)这些个也是类型,但是创建实例不需要new,这叫做C#的语法糖衣,一些非常基础的类型就帮你省掉了,当然你非要用也是没关系的。能用,但是是一次性的,因为没有把实例存到变量中去,过一会儿就会被回收。
2024-02-27 11:15:38
383
原创 【C#语言入门】08. 操作符详解(上)
越靠上的操作符运算优先级越高,同一行的运算优先级相同,相同的运算优先级大多数则按照从左到右依次运算,赋值运算除外。
2024-01-23 14:14:51
384
原创 【C#语言入门】07. 方法的定义、调用与调试(下)
main函数是主调者(Caller),Calculator.GetConsVolume是被调者(Callee),方法的两个变量在C#中是归主调者也就是这里面的main函数管理内存空间的,也就是说谁调用,谁负责将变量从左到右压到栈内存中去。会出现被调用的函数以及调用它的函数,甚至是调用调用它的函数,直到找完找到最上层的调用函数。需要用到locals面板,他会显示用到的本地变量,同时也会标注出变化了的变量。函数的返回值比较特殊,是存放在CPU的寄存器中的。表示一个方法在被调用时,它在内存空间中的布局。
2024-01-19 16:03:45
387
1
原创 【C#语言入门】06. 方法的定义、调用与调试(上)
如上,π的取值为3.14,但如果用户要求更加精确的π值,你就需要手动去修改每一个3.14值,如果程序很大有上百个3.14那就有很大的工程量,再如果有些地方需要3.14有些地方需要3.1415926,那就不能统一替换,甚至有些地方的3.14不是代表着π值,只是恰巧他也是3.14,那么统一修改就会造成更大的bug。而复用就可以解决这些问题↓复用既可以分解算法,又可以避免更改多次可能造成的bug。
2024-01-17 13:14:45
834
原创 【C#语言入门】03.C#词法、类型、变量、方法与算法简介
首先不能与关键字冲突。可以使用字母,数字和下划线组成标识符,但是不能用数字开头。允许“@”字符作为前缀以使关键字能够用作标识符。循环初体验递归初体验。
2024-01-03 14:40:33
1709
1
原创 【C#语言入门】02.类,对象,类成员简介
例如在现实世界中一架战斗机不仅仅有他的一些基本参数,例如编号,型号,重量,载弹量等等,还有一些功能,他可以飞,可以射击,可以索敌等等。何为“去伪存真”?在现实世界中战斗机可以有很多很多的参数,大到整体的长宽,飞机加速度,小到升降轮的半径,但我们只会抽象出那些我们在程序中需要用到的参数忽略暂时没用的参数,例如我要设计一个有关飞机飞行速度的程序,那么升降轮的半径就可以忽略。何为“由表及里”?表为我们能看到的接口,里为封装的内容。
2023-12-27 17:23:29
390
1
原创 【C#语言入门】01.初识类与名称空间
名称空间可以有效的对成百上千的类进行分类管理,方便查找修改,也可以防止出现同名类的冲突。类:Progarm和Console就是类,Progarm是我们自己写的。**由于C#是完全面向对象的语言,因此程序本身(Program)和入口(Main)都是包含在类里面的。**Console类是微软提前准备好的,可以直接拿来用名称空间:HelloWorld 是名称空间,这是我们自己写的名称空间,可以方便别人调用这个名称空间里面的类。**using System 是引用System这个名称空间到我们的程序中来。
2023-12-27 14:29:24
400
1
原创 【OpenCV基础】10. 直方图应用
直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。
2023-11-16 19:45:02
61
1
原创 【OpenCV基础】09. 图像直方图histogram
直方图的横轴表示从左到右亮度越高,纵轴表示从下到上像素越多。图像直方图由于其计算代价较小,且具有图像平移、旋转、缩放不变性等众多优点,广泛地应用于图像处理的各个领域,特别是灰度图像的阈值分割、基于颜色的图像检索以及图像分类。
2023-11-14 15:59:27
50
原创 【OpenCV基础】08. 边缘保留滤波EPF
边缘保留滤波,实质上是区分高斯模糊的做法,将相对于差别较大的像素点区域进行区分(即,边缘是像素差异最大的地方),而非一统地取权重。无论是均值还是高斯都是属于模糊卷积,模糊之后图像的边缘信息不复存在。
2023-11-13 15:10:38
158
原创 【OpenCV基础】06. 模糊操作
在计算机领域,卷积是一种基于加权求和的数学运算,用于处理信号和数据。它通过将输入信号与卷积核(也称为滤波器)进行卷积操作,从而得到输出信号。卷积核是一个小型的矩阵或向量,其中的权重用于对输入信号进行加权求和。卷积操作的基本原理是在输入信号上滑动卷积核,将卷积核与当前位置的输入值相乘并求和,然后将结果保存到输出信号的对应位置。
2023-10-30 10:20:57
46
1
原创 【OpenCV基础】05. ROI与泛洪填充
泛洪填充算法(Flood Fill Algorithm),泛洪填充算法又称洪水填充算法,这是在很多图形绘制软件中常用的填充算法,最熟悉不过就是windows paint的油漆桶功能。算法的原理很简单,就是从一个点开始附近像素点,填充成新的颜色,直到封闭区域内的所有像素点都被填充新颜色为止。泛红填充实现最常见有四邻域像素填充法,八邻域像素填充法,基于扫描线的像素填充方法。根据实现又可以分为递归与非递归(基于栈)。我们可以理解为泛洪填充是一种彩色图像填充。
2023-10-27 11:25:25
92
1
原创 【OpenCV基础】03. 色彩空间
色彩是人的眼睛对于不同频率的光线的不同感受,色彩既是客观存在的(不同频率的光)又是主观感知的,有认识差异。所以人类对于色彩的认识经历了极为漫长的过程,直到近代才逐步完善起来,但人类仍不能说对色彩完全了解并准确表述了,许多概念不是那么容易理解。“色彩空间”一词源于西方的“Color Space”,又称作“色域”,色彩学中,人们建立了多种色彩模型,以一维、二维、三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间。
2023-10-24 16:27:10
86
原创 【精读人工智能论文】03.GoogLeNet
在过去的三年里,因为深度学习的发展,在图像识别和物体检测领域的性能有了飞速的进展,除开更强大的算力硬件,更大的数据集和模型外,更重要的是新的结构改进和模型思路被提出。GoogLeNet比AlexNet少12倍参数量但是更加准确。另一个值得考虑的因素是随着移动设备和嵌入式设备的发展,算法的计算效率、能耗和内存的使用变得越来越重要。GoogLeNet保证模型在测试阶段乘-加运算次数少于15亿次,不仅仅是实验室学术成果,而且更能应用于实际乃至更大规模的数据集。
2023-10-14 14:31:22
40
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人