自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

用来学习的地方

脚踏实地

  • 博客(206)
  • 资源 (5)
  • 收藏
  • 关注

原创 设计模式(三)-结构型模式(6)-享元模式

享元对象是有了,但是我们编程中,起码也要保证唯一标识的半径值,是不能因为程序的变化而变化吧,即对象的外部不能对半径进行修改。这时候就有了外部状态和内部状态的区别。

2023-12-22 16:01:10 1117

原创 设计模式(三)-结构型模式(5)-外观模式

然后每个子系统所实现的功能,就由一个称为外观的高层功能模块来调用。该模式在开发时常常被使用过,所以很容易理解,就不多说了。某个功能模块存在多个子系统时,每个子系统实现各自的子任务,并且将它们组合在一起来完成一个完整的任务。实现一个登录帐户的功能,登录分为验证码验证、连接服务器、从数据库匹配帐户和密码的三个主要步骤。SubSystem(子系统类):实现子系统的功能。可以被外观类调用,也可以直接被客户端调用。Facade(外观类):为子任务提供一个共同对外的高层接口。在客户端调用它的方法。

2023-12-19 22:06:14 863

原创 设计模式(三)-结构型模式(4)-组合模式

比如在文件管理系统中,所有文件和文件夹形成树状结构,文件夹目录里存在子文件夹和文件。枝结点有下一个层级,所以可以对其子结点的对象进行移除或增加新对象的操作。组合对象的抽象接口(Component):定义组合对象的公共接口。(组合对象指的是所有结点。枝结点具体类(Composite):枝节点实现组合对象的抽象方法,并且有一个容器用来存储子结点。在代码设计中,有种情况是对象之间存在层次关系,即对象之间会存在父结点和子结点的关系。叶结点具体类(Leaf):叶结点实现组合对象的抽象方法,但没有子结点。

2023-12-19 12:45:08 614

原创 设计模式(三)-结构型模式(3)-装饰模式

用户可勾选使用特效功能,弹出时会有抖动的效果。(这里的用户可分为使用红包的用户,和调用红包生成器底层库接口的程序员)2、

2023-12-18 13:54:51 982

原创 设计模式(三)-结构型模式(2)-桥接模式

根据设计原则中的单一职责原则:各自模块应当保持各自的分工任务。比如在画图系统中存在形状和画笔的两个维度。形状负责的是它的模样(矩形、圆形、三角形等),而画笔负责的是铅笔、毛笔、圆珠笔之类的选型。

2023-12-14 13:07:20 916

原创 设计模式(三)-结构型模式(1)-适配器模式

在软件设计中,某个模块里有很多公用的功能接口,其中有些公用接口需要用到不同的类当中时,会出现接口不兼容的问题。因为这些不同的类对这个相同任务的接口,都有各自代码逻辑的要求。比如在文件操作的模块中,都有获取文件属性、读写文件操作等共同的功能接口。这就出现了一个问题:保存 txt 文件和保存图片虽然都是保存操作的任务,但是实现的代码逻辑并不相同。在迭代版本中,客户希望在保存文本文件功能的基础上,还想要增加对一个图片文件进行保存的功能。将一个类的接口转换成客户希望的另外一个接口,以解决接口不兼容的问题。

2023-12-13 11:14:00 1420

原创 设计模式(二)-创建者模式(5)-建造者模式

(为了方便理解,下面例子不写得过于复杂,就不使用 Graphics 和 Pen 的复杂方式绘图,而使用 Point 数组进行简单绘图)为了要使得复杂对象里的各个部分的独立性,以及将它们组合在一起的算法需要保持固定(不会轻易改变其算法逻辑),不会随着新需求改变从而改变原有的逻辑。此时就需要用建造者模式了。在软件系统中,会存在一个复杂的对象,复杂在于该对象包含了很多不同的功能模块。该对象里的各个部分都是按照一定的算法组合起来的。将一个复杂对象的构建和其各个部分之间分离,在同一个算法组合里可以创建出不同的对象。

2023-12-11 22:33:23 696

原创 C# Bin、XML、Json的序列化和反序列化

需要一个程序包,在程序包管理控制台里输入安装命令:Install-Package Newtonsoft.Json。2)bin 文件的序列化和反序列化。4)Json 的序列化和反序列化。3)XML 的序列化和反序列化。5)序列化转换的模板。

2023-12-02 22:45:52 711

原创 设计模式(二)-创建者模式(4)-原型模式

用一个已经创建的实例作为原型,来创建一个与原型对象相同的新对象。

2023-11-20 17:15:28 324

原创 设计模式(二)-创建者模式(3)-抽象工厂模式

如果我们知道把所有产品(比如车)分为几个产品族(比如自行车族、汽车族),那么工厂子类就对应指定的产品族进行“批量”创建对象。在工厂模式中,我们需要定义多个继承于共同工厂抽象基类的工厂子类,这些子类负责创建一个对应的对象。不需要每次定义一个新的产品类时,就要扩展新的工厂子类。工厂子类提供一个产品族中多个对象的创建工作,客户端可以方便使用某个产品族中的对象。要增加一个新系列的某一产品,要定义产品抽象类、产品实现类,工厂抽象基类,工厂子类。继承某系列抽象基类,用以实现某系列里某产品的特征和行为的具体类。

2023-11-20 14:00:12 426

原创 设计模式(二)-创建者模式(2)-工厂模式

由于简单工厂模式存在一个缺点,如果工厂类创建的对象过多,使得代码变得越来越臃肿。这样导致工厂类难以扩展新实例,以及难以维护代码逻辑。于是在简单工厂模式的基础上,对工厂类进一步优化。解决了工厂类难以扩展和难以维护的问题。如果想要怎么样的的实例,就要扩展一个其对应的工厂子类就可以了。定义一个工厂抽象基类,让其子类自己决定实例化哪一个工厂类。每次扩展新的工厂子类,就会增加系统的复杂度。继承抽象基类,用以实现特征和行为的具体类。用以定义特征和行为的抽象接口。对对应的实现类进行实例化。提供一辆汽车和一辆自行车。

2023-11-19 17:28:51 301 1

原创 设计模式(二)-创建者模式(2-0)-简单工厂模式

客户端不需要关注创建实例的过程。于是需要通过工厂模式,要把创建对象过程和使用对象进行分离。所以客户端只要使用对象即可,而创建对象过程由一种类来负责,该类称为工厂类。由于创建实例的方式是在静态方法里实现的,所以简单工厂模式也称为静态工厂方法模式。创建一个工厂类,根据不同的参数来创建不同类的对象,并把该对象返回给共同的一个基类。创建对象时,客户端不需要处理整个创建逻辑的过程。只要输入参数就可生成对应的对象。1)如果工厂类存在代码逻辑的错误,一经修改后,整个系统都要受到影响。

2023-11-19 16:46:23 251

原创 设计模式(二)-创建者模式(1)-单例模式

在程序运行当中,我们只希望一个类只能创建一个对象,在多个地方可以公用这个唯一的对象。必须保证类只能创建一个对象。

2023-11-19 12:57:54 510

原创 设计模式(一)-简要概述(2)

部分总结内容以及对应设计模式的链接,待更新中。。。

2023-11-19 12:56:39 249

原创 SQL必知会(二)-SQL查询篇(11)-联结表

联结表SELECT 表1列, 表2列...FROM 表1, 表2...WHERE 有共同列名的过滤条件;另外语法:SELECT 表1列, 表2列...FROM 表1INNER JOIN 表2.. ON有共同列名的过滤条件;联结表的性能联结的每一张表,都需要耗费相应的资源。联结的表越多,性能就越下降。

2023-11-18 17:17:01 210

原创 设计模式(一)-设计原则(1)

但是 A 的部分成员都设置为私有,不能访问 A 类 的私有成员, B 类只能访问 A类的公有成员。而如果实例化一个动物鱼,则鱼不符合飞的行为特征,也就不满足统一性。在类里面,不仅要实现文件的下载上传,还对文件进行读写的功能等。比如模块 A 和模块 B 互相依赖,模块C和B互相依赖,而 C 跟 A 没有关系。根据以上ABC类描述的,数据分析师类作为 C 类,数据管理员类作为 B 类,顾客类作为 A 类。减少模块间的依赖,降低模块间的耦合性。A类依赖B类,当B类修改或消失时,对A类会影响很大。

2023-11-17 00:41:53 479

原创 C# 实现动态数组

(八)CSharp-泛型类和参数约束(1)_csharp 泛型-CSDN博客set;}//容器大小} }// 参考 List 容器,创建后,arry 默认为 new arr[1];在外部用来遍历数组元素的,即foreach(var item in list)。(九)枚举器和迭代器(2)_enumerator 迭代器-CSDN博客//枚举器后面就编写实现对数组操作的函数,如Add,Remove等。

2023-11-14 12:54:07 296

原创 SQL必知会(二)-SQL查询篇(10)-使用子查询

子查询的单列子查询只能返回某一个列,不能是多个列。所以子查询 SELECT 语句只能查询单个列。SELECTgroup by cust_id --由于是分组,会返回多个值-- 错误,SELECT 一次返回的列值,不能是多个值。子查询使用的列SELECT 列1,FROM 表1WHERE 某列[或表1.某列] = 表2.某列FROM 表2;

2023-11-14 09:27:27 150

原创 SQL必知会(二)-SQL查询篇(9)-分组数据

GROUP BY:分组SELECT ... 聚集函数FROM 表GROUP BY 列;-- 错误语法:SELECT 列, 聚集函数FROM 表;(若出现SELECT 列 ,则要与 GROUP BY 列 搭配使用)HAVING:过滤分组SELECT ...聚集函数FROM 表GROUP BY 列HAVING 过滤条件;-- 1.先分组:GROUP BY 列-- 2.后过滤分组:HAVING 过滤条件对行进行过滤: WHERE对行的某些字段进行分组: GROUP BY。

2023-11-14 09:26:46 103

原创 SQL必知会(二)-SQL查询篇(8)-汇总数据

对某列的多行数值进行汇总,比如求某列中所有行的值之间得出的平均值,总和,最大小值等。MIN()、SUM 跟 MAX 用法差不多,就不再做这个笔记了。MAX 函数返回指定列的最大值,忽略掉列值为 NULL 的行。4)DISTINCT 不能用于 COUNT(通配符)对表中行的数目进行计数,列中包括非空值和空值。AVG 函数只能用来确定特定数值列的平均值。组合多个聚集函数一起执行。2)COUNT() 函数。1)AVG() 函数。3)MAX() 函数。

2023-11-14 09:24:22 277

原创 SQL必知会(二)-SQL查询篇(7)-使用函数处理数据

使用 SOUNDEX() 函数:用来匹配与输入的文本有发音相似的文本串。(匹配文本的要素:发音字符和音节)因为有些数据库使用 SQL 函数有差异,所以难以对 SQL 进行移植。1.2)文本处理函数: SOUNDEX() 函数。UPPER() 函数:将文本转换为大写。2)日期和时间处理函数。

2023-11-11 18:11:42 129

原创 SQL必知会(二)-SQL查询篇(6)-创建计算字段

拼接字段-- 列1+列2+其他字符串=拼接后的一列字符串SELECT 列1 + '(' + 列2 + ')'FROM 表;-- RTRIM() 去掉字符串右边的空格SELECT RTRIM(列1 + '(' + 列2 + ')'FROM 表;AS:给某列名称起另外一个名称。SELECT 列AS 新列名FROM 表;对检索的数据进行算术计算SELECT 列1,列2..,列与列之间的计算方程FROM 表;

2023-11-11 18:11:21 175

原创 SQL必知会(二)-SQL查询篇(5)-用通配符进行过滤

LIKE:匹配文本SELECT 列1, 列2FROM 表WHERE 列3 LIKE '内容+通配符';注意 NULL:通配符不匹配列值为 NULL 的行。

2023-11-11 18:10:56 192 1

原创 SQL必知会(二)-SQL查询篇(4)-高级过滤

AND OR:与条件、或条件WHERE 条件1 AND 条件2;WHERE 条件1 OR 条件2;//AND OR 同时使用,注意关键字的优先级:WHERE (条件1 OR 条件2) AND 条件3;IN:条件范围WHERE vend_id IN ('列值1','列值2')NOT:非条件WHERE NOT 条件1。

2023-11-11 18:09:46 125

原创 SQL必知会(二)-SQL查询篇(3)-过滤数据

WHERE:过滤条件SELECT 列1,列2FROM 表WHERE 过滤条件;

2023-11-11 18:09:13 297

原创 SQL必知会(二)-SQL查询篇(2)-排序检索数据

OEDER BY:排序SELECT 列FROM 表ORDER BY 列;SELECT 列1,列2,列3FROM 表ORDER BY 列2,列3;-- 先按列2值升序排序,再根据列2相同值里的项,按列3升序排序SELECT 列1,列2,列3FROM 表-- 2 和 3 代表的是 SELECT 中的列2和列3-- 也就是ORDER BY 设置数字范围在1~3(SELECT 枚举的列数),超出该范围的值会提示语法错误。细节区别:ORDER BY 列2,列3;

2023-11-08 18:15:51 116

原创 SQL必知会(二)-SQL查询篇(1)-检索数据

SELECT:查询SELECT 列FROM 表DISTINCT:过滤掉多余的重复记录只保留一条SELECT DISTINCT 列From 表;TOP:限制最多返回多少行SELECT TOP 行数 列FROM 表;

2023-11-08 18:09:03 306

原创 SQL必知会(一)-学习前的准备

本文作为首篇文章,主要内容是为学习《SQL 必知会》之前做些准备的。下文是本书中每个章节提到的例子《玩具经销商订单系统》,学习者在学习之前需要创建相关的数据库信息。比如我在计算机里安装了 Miscrosoft SQL Server 2014。创建数据库(不创建数据库也行,直接创建的表会默认放在系统数据库 master 里 )创建数据库中的表设置表与表之间的关系(外键主键等)在每张表中添加数据。

2023-11-07 16:06:01 404

原创 修复VS2015没有代码提示的问题【已解决】

(不必要时,要慎用该方法,该方法会把项目历史记录都清除掉,社区版还要重新登陆账号才能使用)安装辅助工具 Visual Assist,发现需要注册或者免费试用要填写信息才能使用(记得这个工具以前是完全免费的),因为不想交钱就卸载了。此刻懂了VS 缺少了代码提示的组件。安装了“Microsoft SQL Server Compact)4.0 ”,应该我之前在重新安装数据库时,把这个卸载掉了。在Visual Studio 中编写代码时,发现使用库函数的时候,在类对象后输入点后,并没有出现类对应的成员信息的提示。

2023-10-27 18:36:47 1264

原创 (一)CSharp-Socket

可以使用 Shutdown() 方法来禁止该套接字上的发送和接收,Shutdown() 方法有一个枚举类型的参数,如 SocketShutdown.Send 表示禁用发送套接字,SocketShutdown.Receive 表示禁用接收套接字,SocketShutdown.Both 表示禁用发送和接收的套接字。通信的异步,指客户端在发送请求后,不必等待服务端的回应就可以发送下一个请求,这样对于所有的请求动作来说将会在服务端得到异步,这条请求的链路就像是一个请求队列,所有的动作在这里不会得到同步。

2023-06-26 12:00:55 684 3

原创 (一)CSharp-多线程编程

使用到 lock (this)、Monitor.Wait(this)、Monitor.PulseAll(this)、Thread.CurrentThread.Abort()

2023-06-26 11:59:49 857

原创 (一)CSharp-网络编程

Dns 类是一个静态类,它提供了有关域名解析的操作,它将从网路主机域名系统中获取 IP 地址和主机名、WWW 域名的对应关系。为 Internet 主机地址信息提供容器的累,它将 DNS 主机名与一个别名数组和匹配的 IP 地址数组相关。该类中包含应用程序连接到主机服务时需要的主机和端口信息,通过组合主机的 IP 地址和端口号构成服务的一个连接点。主机地址分为若干个子网,分为子网地址和主机地址。,为两个端系统(也就是源站和目的站)的会话层之间,提供建立、维护和取消传输连接的功能,并负责可靠地传输数据。

2023-06-26 11:57:44 812

原创 (六)WPF - 资源和样式行为(1)

否则,如果使用静态资源,将仍然使用原来的颜色方案,直到用户重新启动应用程序为止。使用动态资源可以改善加载时间,对静态资源的引用总是发生在 Window 或 Page 加载之后,而对动态资源的引用要到实际使用时才会生效。每个元素都有自己的资源集合,并且为了找到期望的资源, WPF 在元素树中进行递归搜索。为了使用 XML 标记中的资源,需要一种引用资源的方法。动态资源只能用于设置依赖属性值,而静态资源可以在任何地方使用。使用静态资源时,必须总是在引用资源之前在标记中定义资源。动态资源需要占用更多的资源。

2023-06-23 19:58:07 1429

原创 (五)WPF - 依赖属性

第一步是定义表示属性的对象,它是 DependencyProperty 类的实例。属性信息应该始终保持可用,甚至可能需要在多个类之间共享这些信息。因此,必须将 DependencyProperty 对象定义为与其相关联的类的静态字段。字段的定义使用了 readonly 关键字,这意味着只能在 FrameworkElement 类的静态构造函数中对其进行设置。

2023-06-23 19:57:31 1189

原创 (四)WPF - 布局

FlowDirection 是 FrameworkElement (以及其他一些类)的属性,它可以改变元素的内部流的方向。RenderTransform(继承自 UIElement),它在布局结束后被应用(但在元素被渲染前)。LayoutTransform 没有原点的概念,因为被变换元素的定位是由父面板规则完全控制的。DockPanel 提供停靠支持,该容器中的子元素可以使用Dock属性来设置要停靠的容器边缘。用来处理面板子元素的布局问题,但它也可以应用于 那些内容在子控件中对齐的情况。

2023-06-23 19:57:00 860

原创 (三)WPF - XAML

set;set;set;set;break;break;break;

2023-06-23 19:51:40 714

原创 (二)WPF - 应用程序

从 Application 对象的构造器中初始化应用程序,或者处理 Startup 事件通常更好,因为 Application 在这里才完成它的内部初始化(例如,Application.Current 不会在构造器中进行设置)。在 WPF 中传递数据的一个简单的方式就是利用 Application 的 Properties 字典。:当系统运行于低内存的时候,如此少的可用资源以至于 CLR 都不能多分配一个字节了。在这样的情况下,没有任何代码能被即时编译,没有任何变量能被装箱,也没有任何对象能被分配。

2023-06-23 19:50:37 1148

原创 (一)WPF - WPF

如果处理指令接受多个数据参数,这些参数必须包含在 XProcessingInstruction 构造函数的第二个字符串参数中。XML 处理指令用于提供关于 XML 文档的使用和解释方法的额外数据。处理指令最常用于关联 XML 文档和样式表。可以使用 XProcessingInstruction 构造函数来包含处理指令。XML 文档从包含 XML 使用的版本号、使用的字符编码类型以及文档是否依赖外部引用的一行开始。特性提供了有关 XElement 节点的额外信息,它放在 XML 元素的开始标签中。

2023-06-23 19:47:09 1038

原创 (十一)CSharp-LINQ-LINQToXML(4)

如果处理指令接受多个数据参数,这些参数必须包含在 XProcessingInstruction 构造函数的第二个字符串参数中。XML 处理指令用于提供关于 XML 文档的使用和解释方法的额外数据。处理指令最常用于关联 XML 文档和样式表。可以使用 XProcessingInstruction 构造函数来包含处理指令。XML 文档从包含 XML 使用的版本号、使用的字符编码类型以及文档是否依赖外部引用的一行开始。特性提供了有关 XElement 节点的额外信息,它放在 XML 元素的开始标签中。

2023-06-23 16:51:34 674

原创 (十一)CSharp-LINQ-标准查询运算符(3)

一些运算符返回 Ienumerable 对象(或其他序列),而其他运算符返回标量。返回标量的运算符立即执行查询,并返回一个值,而不是一个可枚举类型对象。.NET 框架定义了两套泛型委托类型来用于标准查询运算符,即 Func 委托和 Action 委托。标准查询运算符由一系列 API 方法组成,API 能让我们查询任何 .NET 数组或集合。被查询的集合对象叫作序列,它必须实现 IEnumerable接口,其中 T 是类型。用作方法的运算符直接作用于序列对象,在这里就是 numbers 数组。

2023-06-23 16:50:51 1099

mfc按钮类,1张图片合成3种状态

mfc按钮类,1张图片合成3种状态,博客:http://blog.csdn.net/chen1083376511/article/details/73321840

2017-06-16

MFC自绘按钮类,显示点击,悬浮,初始状态

MFC自绘按钮类,显示点击,悬浮,初始状态,调用按钮类的SetBitmapId函数。

2017-06-16

MFC自绘按钮类,点击、悬浮,初始状态

MFC自绘按钮类,用vs2013写的,在使用按钮类对话框的初始化函数调用按钮类的SetBitmapId函数,关于按钮绘制,欢迎访问本博客文章

2017-06-16

VC6DLL补丁

VC6DLL补丁解决vc调试代码时,不能退出控制台黑屏的问题。不再因为关闭工程再重新打开而麻烦。

2017-01-22

Myeclipse 10.6 (支持所有10版本)破解文件+破解说明。

Myeclipse 10.6 (支持所有10版本)破解文件+破解说明。 如果激活失败,请访问博客:http://blog.csdn.net/chen1083376511/article/details/54238077

2017-01-19

空空如也

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

TA关注的人

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