- 博客(96)
- 资源 (4)
- 收藏
- 关注
转载 迭代器模式
介绍迭代器是针对集合对象而产生的,对于 集合对象而言,必然涉及到集合元素的添加、删除等操作,同时肯定也支持遍历集合元素的操作,我们可以把遍历操作也放在集合对象中,但这样的话,集合对象就承担太多的责任了,面向对象中有一条设计原则是单一职责原则,所以我们要尽可能的分离这些职责,用不同的类去承担不同的责任。迭代器模式就是来承担遍历集合元素的职责。定义迭代器模式提供了一种方法顺序访问一个聚合对象(理解为集合对象)中各个元素,而又无需暴露该对象的内部表示,这样既可以做到不暴露集合的内部结构,又可以让外部代码透明
2021-08-03 19:54:48 324
原创 解释器模式
动机(Motivate):在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。在这种情况下,将特定领域的问题表达为某种文法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的。意图(Intent):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。结构图(Struct):生活中的例子:适用性:1.当有一个语言需要解释执行,并且你可将该语言中的句子表示为
2021-07-27 18:05:27 304
转载 备忘录模式
**备忘录(Memento)模式的定义:**在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。 备忘录模式是一种对象行为型模式,其主要优点如下。提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够访问这些状态信息。简化了发起人类。发起人不需要管理和保存其内部状态的各个备份,所有状态信息都保存在备忘录中,并由..
2021-07-20 19:24:23 298
原创 状态模式的定义与特点
**状态(State)模式的定义:**对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。状态模式是一种对象行为型模式,其主要优点如下。1.结构清晰,状态模式将与特定状态相关的行为局部化到一个状态中,并且将不同状态的行为分割开来,满足“单一职责原则”。2.将状态转换显示化,减少对象间的相互依赖。将不同的状态引入独立的对象中会使得状态转换变得更加明确,且减少对象间的相互依赖。3.状态类职责明确,有利于程序的扩展。通过定义新的子类很容易地增加新的状态
2021-07-13 19:54:05 1081 1
原创 C#责任链模式
一、引言在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求技术总监的批准,所以在面试的完后,经常会有面试官说,你这个薪水我这边觉得你这技术可以拿这个薪水的,但是还需要技术总监的批准等的话。这个例子也就诠释了本文要介绍的内容。生活中的这个例子真是应用了责任链模式。二、责任链模式介绍2.1 责任链模式的定义从生活中的例子可以发现,某个请求可能需要几个人的审批,即使技术经理审批完了,还
2021-07-06 21:03:38 226 1
原创 命令模式介绍
命令模式的定义与特点命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。命令模式的主要优点如下。1.通过引入中间件(抽象接口)降低系统的耦合度。2.扩展性良好,增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,且满足“开闭原则”。3.可以实现宏命令。命令模式可以与组合模式结合,将多个命令装配成一个组合命令,即宏命令。4.方便实现 Undo 和
2021-06-29 19:23:58 335
原创 visual studio 2010卸载
visual studio 2010卸载教程在网站上寻找了很多卸载方法,例如软件管家之类的,都尝试过,其实卸载的很麻烦,还要通过手动一个一个的去删除visual studio 2010的相关组件。现在发现还是去控制面板卸载比较方便。打开控制面板-卸载程序,找到visual studio 2010的主程序包,右键卸载。会弹出打开visual studio 2010的安装界面,选择卸载或者重装,这时点击卸载即可,等待几分钟,就可以卸载所有相关组件。卸载完成是会显示以下图片就可以了。如果安装呢了软件管家的卸载
2021-06-21 14:56:13 5163 2
原创 C#策略模式
定义定义了算法族,分别封装起来,让他们之间可以相互替换,此模式的算法可以独立于使用它的客户。可以将算法族理解为同一个算法的不同变体,典型的策略模式其实就是客户可以使用同一个算法的不同变体,使用的过程中可以更换。适用性以下情况可以使用策略模式需要使用一个算法的不同变体,如本文的游戏,Hero会使用不同的行为。许多相关的类仅仅行为有异,策略模式提供了一种用多个行为中的一个行为配置一个类的方法上面对策略模式的描述说的可能比较抽象,下面我们还是结合游戏分析一下策略模式。实例class Pr
2021-06-16 09:49:48 603
原创 405. 数字转换为十六进制数
给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。给定的数确保在32位有符号整数范围内。不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。示例 1:输入:26输出:“1a”示例 2:输入:-1输出:“ffffffff”public
2021-06-08 17:41:19 264
原创 dataGridView获得选中单元格行索引
获得选中单元格行索引(1)int _tempIndex =-1;private void dgv_TemplateMsg_CellClick(object sender, DataGridViewCellEventArgs e){_tempIndex = dgv_TemplateMsg.SelectedCells[0].RowIndex;}(2)int _tempIndex =-1;int _ColumnIndex=-1;private void dgv_TemplateMsg_C
2021-05-31 15:24:57 1108
原创 组合模式
一.定义:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得对单个对象和组合对象的使用具有一致性。二.UML类图:三 例子class Program{static void Main(string[] args){ComponentB componentB = new ComponentB();componentB.Add(new ComponentA()); ComponentB component = new ComponentB(); co
2021-05-24 20:27:03 128
原创 Trim(),TrimEnd(),TrimStart() 用法
1.C#中Trim()、TrimStart()、TrimEnd()的用法:这三个方法用于删除字符串头尾出现的某些字符。Trim()删除字符串头部及尾部出现的空格,删除的过程为从外到内,直到碰到一个非空格的字符为止,所以不管前后有多少个连续的空格都会被删除掉。TrimStart()只删除字符串的头部的空格。TrimEnd()只删除字符串尾部的空格。 如果这三个函数带上字符型数组的参数,则是删除字符型数组中出现的任意字符。如Trim("abcd".ToCharArray())就是删除字符串头部及尾部出现的
2021-05-19 09:51:00 735
原创 代理模式
1、定义:为其他对象提供一种代理以控制对这个对象的访问。(中介)2.使用场景Windows快捷方式、VPN、防火墙3.目的(1)在不改变原有代码的基础上,对原有类加以控制(2)访问由于某种原因不能直接访问或者直接访问困难的第三方组件或中间件和适配器比较:1.适配器模式是接口转换2.代理模式是间接访问3.适配器面向不能一起工作两个类,代理模式面向可以一起工作两个类4.具体例子代理模式:为另一个对象提供一个替身或占位符以访问这个对象场景描述:我想要查我的档案记录,但是我不能直接去档案
2021-05-18 20:18:13 132
原创 C#Task简单应用
一、创建Task方式1: Task t1 = new Task(() => {//To Do you code 也可以在这直接调用方法,直接传递参数,也比较方便}); t1.Start(); Task.WaitAll(t1);//等待所有任务结束 注: 任务的状态: Start之前为:Created Start之后为:WaitingToRun方式2: Task.Run(() => {//To Do you code 也可以在这直接调用方法,直接传
2021-05-13 16:56:11 1660 2
原创 Thread简单应用
private void btnStart_Click(object sender, EventArgs e) { try { Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ip = IPAddress.Parse(this.txtIP.Text....
2021-05-10 15:39:50 133 1
原创 MessageBox.Show用法
(1)需要定义命名空间,using System.Windows.Forms其实这个前提,写windows窗体就自动引用了,所以大部分情况下,这个不需要理会,好,下一步;(2)简单用法MessageBox.Show(“你要提示的文本”); //这是最简单的用法,括号里直接加上一个提示内容的文本就可以了第一参数,就是提示文本第二参数,为对话框的标题,比如“温馨提示”,用法:MessageBox.Show(“确定追这个美女吗?”,“温馨提示”);(3)带返回值的用法有时候,需要判断用户按了
2021-05-09 13:18:09 7815
原创 C#选定文件复制到指定文件夹
搜索到的:string pLocalFilePath ="";//要复制的文件路径string pSaveFilePath ="";//指定存储的路径if (File.Exists(pLocalFilePath))//必须判断要复制的文件是否存在{File.Copy(pLocalFilePath, pSaveFilePath, true);//三个参数分别是源文件路径,存储路径,若存储路径有相同文件是否替换}自己应用:多选---->复制指定文件夹OpenFileDialog dlg
2021-04-22 20:23:40 967
原创 C#中List集合使用RemoveAt方法移除指定索引位置的元素
在C#的List集合操作中,移除集合中的元素可以使用Remove方法,不过Remove方法的参数为具体的List集合中的元素,其实还可以使用List集合的RemoveAt方法来移除List集合中的元素,RemoveAt方法的方法签名为void RemoveAt(int index),index代表需要移除的元素在List集合中的索引位置,List集合的索引位置从0开始计算。例如有个List的集合list1,含有1至10的数字,如果要移除2,则对应索引为1,具体实现语句如下:List list1...
2021-04-18 16:24:40 8417
原创 Halcon读取dxf文件生成xld
1.read_contour_xld_dxf (Contours, DXFFliePath, [], [], DxfStatus)hom_mat2d_identity (HomMat2DIdentity)hom_mat2d_scale (HomMat2DIdentity, Scale, Scale, 0, 0, HomMat2DScale)*将任意仿射2D变换,即缩放、旋转、平移和倾斜(倾斜)应用于轮廓中给定的xld轮廓*并以ContoursAffineTrans的形式返回变换后的轮廓affin
2021-04-13 20:15:00 1606 1
原创 C#设计模式--外观模式
设计模式:外观模式(Facade Pattern)简单介绍:外观模式(Facade Pattern):外观模式(Facade)的定义:为子系统中的一组接口提供一个一致的界面,用来访问子系统中的一群接口。比如调用子系统1和子系统2的Print方法,如果没有外观模式那么你需要一个个的调用,子系统如果是少还好,多了就要疯了,这里就可以使用外观模式,调用外观模式对外提供的方法一次性完成对子系统的层层调用生活实例:比如笔记本是一个整体,看似是一件东西,实际上只是将主机和显示器组装在一起而已,对外提供一个电
2021-04-12 21:44:45 196
原创 求出两条线的交点
1、检测直线2、metrology跟随检测直线3、求出两条直线的交点具体代码:read_image (Test, ‘C:/Users/yue/Desktop/test.png’)rgb1_to_gray (Test, GrayImage)dev_set_draw (‘margin’)Row1:=151.354Column1:=247.76Row2:=199.833Column2:=322.308gen_rectangle1 (Rectangle, Row1, Column1, Row2
2021-04-06 20:15:45 910
原创 C#中List基础用法汇总
List复用时注意清空注:本文章转载自:http://www.33lc.com/article/7364.htmlC#中的List怎么样?List类是ArrayList类的泛型等效类,该类使用大小可按需动态增加的数组实现IList泛型接口。 泛型的好处:它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。 性能注意事项:在决定使用IList还是使用ArrayList类(两者具有类似的功能)时,记住IList类在
2021-03-30 15:06:14 2306
原创 Halcon封装函数注意点
分清楚哪些是输入变量,哪些是输出变量:如图所示:图标参数含义:即图片、区域、Xld轮廓等图形变量。变量参数含义:指我们在程序中用得到的整形、浮点型、字符串、数组等变量
2021-03-12 17:36:13 217
原创 Halcon引擎配置
C#调用Halcon无法加载+DLL找不到指定的模块方法一:对系统环境变量进行配置:1.右击此电脑—属性—高级系统设置—环境变量2.选中Path—点击编辑3.将dll文件路径加入其中方法二:在debug里加5个dll:halcon.dllhalconcpp.dllhalcondotnet.dllhdevenginedotnet.dllhalcons.dll...
2021-03-12 17:30:34 569 1
原创 c#中的栈(Stack)的介绍及使用
1.栈(Stack)栈(Stack)代表了一个后进先出的对象集合。当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素stackd类的相关方法和属性1.Count 获取栈(stack)中的元素个数2.public virtual void Clear(); 从 Stack 中移除所有的元素3.public virtual bool Contains( object obj ); 判断某个元素是否在 Stack 中4.public virtual object Pe
2021-02-27 21:41:15 7294
原创 工厂模式
工厂模式:专门将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式。工厂模式:简单工厂模式工厂方法模式抽象工厂模式根本思想:对类的实例化进行封装工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。在简单工厂模式中创建实例的方法通常为静态(static)方法,因此简单工厂模式(Simple Factory Pattern)又叫作静态工厂方法模式(Static Factory Met
2021-02-24 19:44:24 111
原创 单例模式(Singleton)
单例模式意图保证一个类仅有一个实例,并提供一个访问它的全局访问点。适用性当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。例子:(多线程使用)public class Singleton{private static volatile Singleton instance=null;private static object lockHelper = new object();priv
2021-02-22 10:43:43 114
原创 子数组最大平均数 I(643.)
题目:给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。示例:输入:[1,12,-5,-6,50,3], k = 4输出:12.75解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75快捷的解析:public class Solution{public double FindMaxAverage(int[] nums, int k){int sum = nums.Take(k).Sum();int maxNum = sum;for
2021-02-04 14:55:46 115
原创 Array.Sort()排序的原理
Array.Sort()函数,利用这个函数可直接对数组中的数字进行排序,比冒泡排序简单得多了,仅仅只需要一行代码,下面是代码和运行结果。 int[] nums = new int[] { 2, 652, 32, 1, 6, 65 }; Array.Sort(nums); //Array.Reverse(nums);//方法,反转 for (int i = 0; i < nums.Length; i++) {
2021-02-01 14:20:06 4498
原创 寻找数组的中心索引(724)
**题目:**给定一个整数类型的数组 nums,请编写一个能够返回数组 “中心索引” 的方法。我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (5 + 6 = 1
2021-01-28 16:42:59 78
原创 halcon引擎学习
1.添加引用添加 halcondotnet 和 hdevenginedotnet2.调用主函数(完整的halcon程序)public partial class Form1 : Form{HDevOpFixedWindowImpl MyHDevOperatorImpl;//private HDevOpMultiWindowImpl MyHDevOperatorImpl;private HWindow Window;string ProgramPathString;private HDevE
2021-01-20 20:18:06 1257 1
原创 海康相机显示ROI
1.画ROI #region ROI设定 //画矩形框 Point start; Point end; bool blnDraw; //在MouseMove事件中判断是否绘制矩形框 private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) {
2021-01-15 13:58:27 2498
原创 最常见的单词(819)
给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。示例:输入:paragraph = “Bob hit a ball, the hit BALL flew far after it was hit.”banned = [“hit”]输出: “ball”解释:“hit” 出现了3次,但
2021-01-13 17:22:14 114
原创 斐波那契数(509)
题目:斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示例 2:输入:3输出:2解释:F(3) = F(2) + F(1) = 1 + 1 = 2示例 3:输
2021-01-04 09:56:21 84
原创 IP地址无效化(1108)
题目:给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。示例 1:输入:address = “1.1.1.1”输出:“1[.]1[.]1[.]1”示例 2:输入:address = “255.100.50.0”输出:“255[.]100[.]50[.]0”提示:给出的 address 是一个有效的 IPv4 地址解答:1、public class Solution{public
2020-12-30 19:14:33 177
原创 设计停车系统(1603)
请你给一个停车场设计一个停车系统。停车场总共有三种不同大小的车位:大,中和小,每种尺寸分别有固定数目的车位。请你实现 ParkingSystem 类:ParkingSystem(int big, int medium, int small) 初始化 ParkingSystem 类,三个参数分别对应每种停车位的数目。bool addCar(int carType) 检查是否有 carType 对应的停车位。 carType 有三种类型:大,中,小,分别用数字 1, 2 和 3 表示。一辆车只能停在 c
2020-12-25 11:31:35 127
原创 C#静态类、静态方法、非静态方法
静态类:在类(class)上加入static修饰, 表示该类无法被实例化,并且该类中,无法实例化变量或函数。那么如果要在此静态类中添加函数、变量、属性,则必须都是静态的。静态类的主要特性:1:仅包含静态成员。2:无法实例化。3:静态类的本质,是一个抽象的密封类,所以不能被继承,也不能被实例化。4:不能包含实例构造函数。5:如果一个类下面的所有成员,都需要被共享,那么可以把这个类定义为静态类。换一句大白话,C# 2.0中引入了static修饰词就是为了控制代码中“静态类内部不允许出现非静态变
2020-12-23 10:26:18 1654
原创 宝石与石头(771)
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = “aA”, S = “aAAbbbb”输出: 3示例 2:输入: J = “z”, S = “ZZ”输出: 0注意:S 和 J 最多含有50个字母。J 中的字符不重复。题解:1public class Sol
2020-12-22 09:53:36 124 1
test1.sln draw Line draw Circle
2020-08-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人