11 2011 档案
摘要:一:线性表的简单回顾 上一篇跟大家聊过“线性表"顺序存储,通过实验,大家也知道,如果我每次向顺序表的头部插入元素,都会引起痉挛,效率比较低下,第二点我们用顺序存储时,容易受到长度的限制,反之就会造成空间资源的浪费。二:链表 对于顺序表存在的若干问题,链表都给出了相应的解决方案。1. 概念:其实链表的“每个节点”都包含一个”数据域“和”指针域“。 ”数据域“中包含当前的数据。 ”指针域“中包含下一个节点的指针。 ”头指针”也就是head,指向头结点数据。 “末节点“作为单向链表,因为是最后一个节点,通常设置指针域为null。代码段如下: 1 ...
阅读全文
摘要:人活在社会上不可能孤立,比如跟美女有着千丝万缕的关系,有的是一对一,有的是一对多,有的是多对多。哈哈,我们的数据也一样,存在这三种基本关系,用术语来说就是:<1> 线性关系。<2> 树形关系。<3> 网状关系。一: 线性表 1 概念: 线性表也就是关系户中最简单的一种关系,一对一。 如:学生学号的集合就是一个线性表。 2 特征: ① 有且只有一个“首元素“。 ② 有且只有一个“末元素”。 ③ 除“末元素”外,其余元素均有唯一的后继元素。 ④ 除“首元素”外,其余元素均有唯一的前驱元素。 3 ...
阅读全文
摘要:大家是否感觉到,树在数据结构中大行其道,什么领域都要沾一沾,碰一碰。就拿我们前几天学过的排序就用到了堆和今天讲的”二叉排序树“,所以偏激的说,掌握的树你就是牛人了。今天就聊聊这个”五大经典查找“中的最后一个”二叉排序树“。1. 概念: <1> 其实很简单,若根节点有左子树,则左子树的所有节点都比根节点小。 若根节点有右子树,则右子树的所有节点都比根节点大。 <2> 如图就是一个”二叉排序树“,然后对照概念一比较比较。 2.实际操作: 我们都知道,对一个东西进行操作,无非就是增删查改,接下来我们就聊聊其中的基本操作。 <1> 插入:相信大家对“...
阅读全文
摘要:大家可否知道,其实查找中有一种O(1)的查找,即所谓的秒杀。哈希查找: 对的,他就是哈希查找,说到哈希,大家肯定要提到哈希函数,呵呵,这东西已经在我们脑子里面形成固有思维了。大家一定要知道“哈希“中的对应关系。 比如说: ”5“是一个要保存的数,然后我丢给哈希函数,哈希函数给我返回一个”2",那么此时的”5“和“2”就建立一种对应关系,这种关系就是所谓的“哈希关系”,在实际应用中也就形成了”2“是key,”5“是value。 那么有的朋友就会问如何做哈希,首先做哈希必须要遵守两点原则: ①: key尽可能的分散,也就是我丢一个“6”和“5”给你,你都返回一个“2”,那么这样的...
阅读全文
摘要:在我们的生活中,无处不存在着查找,比如找一下班里哪个mm最pl,猜一猜mm的芳龄.......对的这些都是查找。在我们的算法中,有一种叫做线性查找。分为:顺序查找。 折半查找。查找有两种形态:分为:破坏性查找, 比如有一群mm,我猜她们的年龄,第一位猜到了是23+,此时这位mm已经从我脑海里面的mmlist中remove掉了。 哥不找23+的,所以此种查找破坏了原来的结构。 非破坏性查找, 这种就反之了,不破坏结构。顺序查找: 这种非常简单,就是过一下数组,一个一个的比,找到为止。 1 using System; 2 using System.Colle...
阅读全文
摘要:今天跟大家聊聊最后三种排序: 直接插入排序,希尔排序和归并排序。直接插入排序: 这种排序其实蛮好理解的,很现实的例子就是俺们斗地主,当我们抓到一手乱牌时,我们就要按照大小梳理扑克,30秒后, 扑克梳理完毕,4条3,5条s,哇塞...... 回忆一下,俺们当时是怎么梳理的。 最左一张牌是3,第二张牌是5,第三张牌又是3,赶紧插到第一张牌后面去,第四张牌又是3,大喜,赶紧插到第二张后面去, 第五张牌又是3,狂喜,哈哈,一门炮就这样产生了。 怎么样,生活中处处都是算法,早已经融入我们的生活和血液。 下面就上图说明: 看这张图不知道大家可否理解了,在插入排序中,数组会被...
阅读全文
摘要:首先感谢朋友们对第一篇文章的鼎力支持,感动中.......今天说的是选择排序,包括“直接选择排序”和“堆排序”。话说上次“冒泡排序”被快排虐了,而且“快排”赢得了内库的重用,众兄弟自然眼红,非要找快排一比高下。这不今天就来了两兄弟找快排算账。1.直接选择排序:先上图:说实话,直接选择排序最类似于人的本能思想,比如把大小不一的玩具让三岁小毛孩对大小排个序,那小孩首先会在这么多玩具中找到最小的放在第一位,然后找到次小的放在第二位,以此类推。。。。。。,小孩子多聪明啊,这么小就知道了直接选择排序。羡慕中........对的,小孩子给我们上了一课,第一步: 我们拿80作为参照物(base),在80后面
阅读全文
摘要:今天是开篇,得要吹一下算法,算法就好比程序开发中的利剑,所到之处,刀起头落。针对现实中的排序问题,算法有七把利剑可以助你马道成功。首先排序分为四种: 交换排序: 包括冒泡排序,快速排序。 选择排序: 包括直接选择排序,堆排序。 插入排序: 包括直接插入排序,希尔排序。 合并排序: 合并排序。那么今天我们讲的就是交换排序,我们都知道,C#类库提供的排序是快排,为了让今天玩的有意思点,我们设计算法来跟类库提供的快排较量较量。争取KO对手。冒泡排序:首先我们自己来设计一下“冒泡排序”,这种排序很现实的例子就是:我抓一把沙仍进水里,那么沙子会立马沉入水底,沙子上的灰尘会因为惯性暂时沉入...
阅读全文
摘要:今天是系列的终结篇,当然要分享一下wcf的托管方面的知识。wcf中托管服务一般有一下四种:Console寄宿: 利于开发调试,但不是生产环境中的最佳实践。winform寄宿: 方便与用户进行交互,用户想开就开,想关就关,但如果机器重启了,不得不自己手动开一下,危险+麻烦。IIS寄宿: 此寄宿在实战项目中得到了广泛的应用。 好处有:随系统启动和停止。 iis有大量的管理策略对其进行管理。 即想利用wcf的功能,还想访问asp.net的功能。...
阅读全文
摘要:今天是wcf系列的第四天,也该出手压轴戏了。嗯,现在的大型架构,都是神马的,nginx鸡群,iis鸡群,wcf鸡群,DB鸡群,由一个人作战变成了群殴.......今天我就分享下wcf鸡群,高性能架构中一种常用的手法就是在内存中维护一个叫做“索引”的内存数据库,在实战中利用“索引”这个概念做出"海量数据“的秒杀。好,先上图:这个图明白人都能看得懂吧。因为我的系列偏重于wcf,所以我重点说下”心跳检测“的实战手法。第一步:上一下项目的结构,才能做到心中有数。第二步:“LoadDBService”这个是控制台程序,目的就是从数据库抽出关系模型加载在内存数据库中,因为这些东西会涉及一些算法的
阅读全文
摘要:今天是速成的第三天,再分享一下WCF中比较常用的一种技术,也就是”事务“。在B2B的项目中,一般用户注册后,就有一个属于自己的店铺,此时,我们就要插入两张表, User和Shop表。当然,要么插入成功,要么全失败。第一步: 首先看一下项目的结构图:第二步: 准备工作,我们新建Commerce数据库,用EF去映射,然后新建ServiceWCF类库,具体步骤就省略, 这一块不懂可以留言。第三步:新建一个Model类库。建立两个实体类Shop和User,当然自定义类型在WCF中传输, 必须在类上加上【DataContract】,属性上加【DataMember】。 Shop.cs 1...
阅读全文
摘要:承接上一章,今天来讲MSMQ在实战项目中的应用。众所周知,放了防止订单丢失,我们都是采用Order过一下MSMQ。 MSMQ的优点个人认为是:先天的异步消息发送和天生的自动负载均衡。好了,看看MSMQ在实战中的应用。第一步: 准备工作,安装MSMQ服务器,然后勾上下图选项,安装即可。第二步:新建一个类库。建立两个文件IOrder.cs,Order.cs。截图如下。第三步:新建Host的Console程序,建立App.config文件,截图如下。第四步:在console程序中:①:创建队列。②: 开启服务。最后一步:新建一个Console程序作为客户端来对MSMQ进行测试,这次我们通过“信道”的
阅读全文