![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法&设计模式
文章平均质量分 73
该专栏介绍数据结构与算法
诗琪小姐姐
这个作者很懒,什么都没留下…
展开
-
数据结构总结
数据结构:是一组相互之间存在一种或多种特定关系的数据的组织方式和他们在计算机内的存储方式,以及定义在该组数据上的一组操作。数据结构的组织方式一般分为:集合,线性结构,树,图。这四种组织方式之间的关系:数据元素之间的关系从松散到复杂逐次递增。 集合:任意两个结点之间没有邻接关系,组织松散。 线性结构:结点按照逻辑关系一次排列成一条链。 树:数据元素之间具有分支,层次特性,上层结点可以和下原创 2017-10-13 15:25:44 · 345 阅读 · 13 评论 -
设计模式之深入学习
如何高效学习?成为了现代每个人必备的能力,重要的不是学会了知识,因为知识太多了,并且知识技术点,因为接触过了但是不用,不再看过一段时间又忘了,很多知识在我们大脑是没有规则的碎片,而不是知识网,所以学习再多又有何用呢? 我们需要培养的是思维模型,套路,模式,高效学习方法。有了这些,以后不管学习什么,都会很轻松。就像李笑来老师的学习学习再学习,就是说要先学会学习,再去学习,为了学习知识而学习已经是孔子...原创 2019-09-07 10:06:46 · 170 阅读 · 0 评论 -
设计模式-6大设计原则
1.单一职责 就一个类而言,应该仅有一个引起它变化的原因关键是:减少耦合,提高类模块的复用性. 如果一个类里面封装的职责太多的话,可能会导致当改变一个职责的时候,同一个类里面的其他职责也会跟着变化,导致耦合性太强,不可复用。单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,而发现类的多重职责需要设计人员具有较强的分析设计能力和相关实原创 2017-11-12 17:31:51 · 1251 阅读 · 14 评论 -
设计模式-创建型模式
创建型模式: 工厂方法 核心:客户端调用具体的工厂,让工厂去决定实例化哪个具体的类。 核心代码为工厂类创建对应的具体的类,表现为和对应的具体类的依赖关系。//抽象工厂类 Interface Productfactory { Product CreateProduct(); } //具体A工厂 class ConcreteProductFactoryA:Productfa原创 2017-10-13 17:24:58 · 266 阅读 · 16 评论 -
面向对象基础
类 为什么要有类? 类有什么好处? 类有方法和属性(修饰符) 方法包括构造方法,方法的重载,重写,重构,之间的区别及如何使用? 怎么去使用类? 对象 对象的三大特征? 封装 继承 多态 封装,继承,多态分别是如何实现的? 继承有什么样的缺点?是怎么解决的? 类——>抽象类——>接口 抽象类如何使用? 为什么要使用接口? 抽象类和接口的区别? 什么时原创 2017-05-21 15:56:23 · 356 阅读 · 24 评论 -
未将对象引用设置到对象的实例
在敲机房充值记录查询的过程中,当我调用工厂方法,实例化一个DAL层数据库类返回一个充值记录查询的接口,当执行这个接口的方法的过程中出现了如下的错误:未将对象引用设置到对象的实例 出现问题原因: 工厂层:实例化了SqlServerCharge_queryDAL类的一个对象,返回IDAL.IselectDAL接口 '充值记录查询 Public Shared Function原创 2017-03-12 17:06:26 · 2745 阅读 · 20 评论 -
Sqlhelper
什么是sqlhelper? 在学习三层的过程中,我们把对数据库的操作全部写在了DAL层,其中包括数据库的连接,command命令,DataReader等,但是问题是我们只要涉及到数据的访问的操作,我们都需要建立数据库的链接,执行sql命令,为了提高代码的可利用,所以就把对数据库的操作封装到了一个sqlhelper类里面,等我们再执行对数据库的操作的时候直接调用sqlhelper类就可以。怎么使用?原创 2017-03-05 21:17:06 · 817 阅读 · 19 评论 -
用反射+配置文件实现数据访问程序
抽象工厂: 在程序的代码中写明要实例化哪一个数据库,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 反射: 它的格式为: Assembly,Load("程序集名称").CreateInstance("命名空间.类名称"),其中类名称为要实例化的"类名". 在程序顶端上写上using System,Reflection来引用Reflection.在更换数据库,把原创 2017-02-09 14:43:59 · 496 阅读 · 23 评论 -
观察者模式(一)
What? Why? 理解: How?原创 2016-12-12 14:17:14 · 501 阅读 · 27 评论 -
外观模式
什么是外观模式? 引入了一个接口,通过这个接口,使得客户端和子系统的交互更加方便简单。 理解: 我们大家都有过自己做饭和直接去饭店吃饭的经历,自己做饭的话,不仅要准备做菜的原料,还要准备做菜的厨具,还要自己去菜市场把菜买回家,如图一所示,而我们直接去饭店吃饭呢,直接点自己爱吃的菜就可以,正因为有了厨师,我么无需直接和做菜所需的原料,厨具,还有菜直接交互,这里所有的过程直接有厨师完成,原创 2016-12-06 18:38:13 · 764 阅读 · 85 评论 -
模板方法模式——最好的复用
概念: 定义一个算法骨架,实现步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 解释说明: 1.模板方法模式就是定义一个不变的模板,即框架是一定的,但是内容具体细节可能会不一样。 2.把不变的行为搬移到超类,去除子类中重复代码,让子类来实现。 3.我们用的时候只是用这个重复不变的模板,这叫继承,然而让子类去实现它,子类表现不一样,即是多态原创 2016-12-05 14:42:26 · 623 阅读 · 21 评论 -
设计模式——原型模式
概念:原创 2016-11-30 21:41:40 · 379 阅读 · 25 评论 -
冒泡排序优化之快速排序
1原创 2017-10-29 21:47:33 · 335 阅读 · 15 评论 -
直接选择排序VS堆排序
直接选择排序:这是一年前的选择排序: http://write.blog.csdn.net/postedit/51406950.思想: 假设第一个数最大,然后让这个数与后面其他的数依次进行比较,假如第一个位置上的数小的话,就交换位置,这样第一个位置上的数一直存放的每一趟比较完之后最大的数。缺点: 1.每次交换位置会浪费很多时间 2. 对于n个键值选出最小,至少要进行n-1比较,然而继续在剩余原创 2017-10-03 10:46:17 · 453 阅读 · 10 评论 -
动态规划
思想:分治递归:假如我们想求i个物品的最优,需要先求i-1个 物品的最优,再求i-2个物品的最优,这样递归,直到有了出口,把一个大的问题化解为小的子问题,但是小的子问题是最优的即最优子结构,每一个小的子问题的答案都需要记录下来,需要时再找出来,避免了大量重复的计算。实例:0-1背包有5个物品,背包容量为17,现需考虑如何选择装入背包的物品,使装入背包的物品总价值最大。 分析: (1) 背包问题原创 2017-09-24 22:21:41 · 364 阅读 · 26 评论 -
一句话明白排序算法之一——选择排序法
核心思想:假设一个为最大 选择排序演示: 宏观把握: 从第一个位置开始,让第一个数和第二个数比较,如果第一个数小于第二个数,则交换这两个数的位置,如果第一个数大于第二个数,则位置不变,这样第一个位置存放的是大的数,接着让第一个位置上的数(即大数)和第三个数比较,同样,大于第三个数则交换位置,否则,不交换位置,接着让第一个位置上的数和剩下的数比较原创 2016-05-14 17:05:08 · 1317 阅读 · 15 评论 -
一句话明白排序算法之四——桶排序
核心思想: 把数据和数组元素下标相对应,数组元素为该下标数据的个数,直接输出下标就可以实现排序。 每有一个数据,就在以该数据为数组元素下标的数组元素中加1,作为有几个该数据的元素标记,然后把数组元素的下标从左到右依次输出,数组元素里的数为输出该该下标的个数。原创 2016-07-22 22:56:56 · 804 阅读 · 23 评论 -
一句话明白排序算法之三——插入排序
1.核心思想: 每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置,直到全部插入为止,得到一个新的有序序列。 2.排序演示: 3.排序方法: ⒈ 从第一个元素开始,该元素可以认为已经被排序 ⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描 ⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置 ⒋ 重复步原创 2016-07-18 17:43:46 · 626 阅读 · 22 评论 -
一句话明白排序算法之二——冒泡排序
核心思想:每相邻的数比较,小数沉底,大数上浮 排序模型图:原创 2016-05-14 20:56:10 · 1227 阅读 · 14 评论