摘要: 最近项目赶的紧,歇了一个星期没写博客了,趁周末继续写这个系列。 先前我们讲的都是“线性结构”,他的特征就是“一个节点最多有一个”前驱“和一个”后继“。那么我们今天讲的树会是怎样的呢?我们可以对”线性结构“改造一下,变为”一个节点最多有一个"前驱“和”多个后继“。哈哈,这就是我们今天说的”树“。一: 树 我们思维中的”树“就是一种枝繁叶茂的形象,那么数据结构中的”树“该是怎么样呢?对的,他是一种现实中倒立的树。1:术语 其实树中有很多术语的,这个是我们学习树形结构必须掌握的。 <1> 父节点,子节点,兄弟节点 这个就比较简单了,B和C的父节点就是A,反过来说就是B和C... 阅读全文
posted @ 2011-12-11 00:18 一线码农 阅读(8319) 评论(10) 推荐(8)
摘要: 楼主做前端开发一年多了,对前端的见解还是多多少少有一点的,今天特拿出来跟大家分享分享。做前端开发少不了各种利器。比如我习惯用的还是Google浏览器和重型武器Fiddller。一: 原始情况首先大家看看如下的代码: 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="JsLoad.Default" %> 2 3 <!DOCTYPE html PUBLIC "-//W3 阅读全文
posted @ 2011-12-04 19:32 一线码农 阅读(22777) 评论(56) 推荐(112)
摘要: 今天跟大家聊聊栈,在程序设计中,栈的使用还是非常广泛的,比如有“括号匹配问题“,”html结构匹配问题“。所以说掌握了”栈“的使用,对我们学习算法还是很有帮助的。一: 概念 栈,同样是一种特殊的线性表,是一种Last In First Out(LIFO)的形式,现实中有很多这样的例子, 比如:食堂中的一叠盘子,我们只能从顶端一个一个的取。二:存储结构 ”栈“不像”队列“,需要两个指针来维护,栈只需要一个指针就够了,这得益于栈是一种一端受限的线性表。 这里同样用”顺序结构“来存储这个”栈“,top指针指向栈顶,所有的操作只能在top处。 代码段: 1 #region 栈的... 阅读全文
posted @ 2011-12-03 23:01 一线码农 阅读(7231) 评论(2) 推荐(13)
摘要: 可能大家都知道,线性表的变种非常非常多,比如今天讲的“队列”,灰常有意思啊。一:概念 队列是一个”先进先出“的线性表,牛X的名字就是“First in First Out(FIFO)”, 生活中有很多这样的场景,比如读书的时候去食堂打饭时的”排队“。当然我们拒绝插队。二:存储结构 前几天也说过,线性表有两种”存储结构“,① 顺序存储,②链式存储。当然“队列”也脱离 不了这两种服务,这里我就分享一下“顺序存储”。 顺序存储时,我们会维护一个叫做”head头指针“和”tail尾指针“,分别指向队列的开头和结尾。代码段如下: 1 #region 队列的数据结构 2 ... 阅读全文
posted @ 2011-12-01 17:17 一线码农 阅读(7492) 评论(5) 推荐(9)
摘要: 一:线性表的简单回顾 上一篇跟大家聊过“线性表"顺序存储,通过实验,大家也知道,如果我每次向顺序表的头部插入元素,都会引起痉挛,效率比较低下,第二点我们用顺序存储时,容易受到长度的限制,反之就会造成空间资源的浪费。二:链表 对于顺序表存在的若干问题,链表都给出了相应的解决方案。1. 概念:其实链表的“每个节点”都包含一个”数据域“和”指针域“。 ”数据域“中包含当前的数据。 ”指针域“中包含下一个节点的指针。 ”头指针”也就是head,指向头结点数据。 “末节点“作为单向链表,因为是最后一个节点,通常设置指针域为null。代码段如下: 1 ... 阅读全文
posted @ 2011-11-30 12:12 一线码农 阅读(6947) 评论(13) 推荐(11)
摘要: 人活在社会上不可能孤立,比如跟美女有着千丝万缕的关系,有的是一对一,有的是一对多,有的是多对多。哈哈,我们的数据也一样,存在这三种基本关系,用术语来说就是:<1> 线性关系。<2> 树形关系。<3> 网状关系。一: 线性表 1 概念: 线性表也就是关系户中最简单的一种关系,一对一。 如:学生学号的集合就是一个线性表。 2 特征: ① 有且只有一个“首元素“。 ② 有且只有一个“末元素”。 ③ 除“末元素”外,其余元素均有唯一的后继元素。 ④ 除“首元素”外,其余元素均有唯一的前驱元素。 3 ... 阅读全文
posted @ 2011-11-28 22:59 一线码农 阅读(9333) 评论(4) 推荐(15)
摘要: 大家是否感觉到,树在数据结构中大行其道,什么领域都要沾一沾,碰一碰。就拿我们前几天学过的排序就用到了堆和今天讲的”二叉排序树“,所以偏激的说,掌握的树你就是牛人了。今天就聊聊这个”五大经典查找“中的最后一个”二叉排序树“。1. 概念: <1> 其实很简单,若根节点有左子树,则左子树的所有节点都比根节点小。 若根节点有右子树,则右子树的所有节点都比根节点大。 <2> 如图就是一个”二叉排序树“,然后对照概念一比较比较。 2.实际操作: 我们都知道,对一个东西进行操作,无非就是增删查改,接下来我们就聊聊其中的基本操作。 <1> 插入:相信大家对“... 阅读全文
posted @ 2011-11-27 23:34 一线码农 阅读(10028) 评论(9) 推荐(10)
摘要: 大家可否知道,其实查找中有一种O(1)的查找,即所谓的秒杀。哈希查找: 对的,他就是哈希查找,说到哈希,大家肯定要提到哈希函数,呵呵,这东西已经在我们脑子里面形成固有思维了。大家一定要知道“哈希“中的对应关系。 比如说: ”5“是一个要保存的数,然后我丢给哈希函数,哈希函数给我返回一个”2",那么此时的”5“和“2”就建立一种对应关系,这种关系就是所谓的“哈希关系”,在实际应用中也就形成了”2“是key,”5“是value。 那么有的朋友就会问如何做哈希,首先做哈希必须要遵守两点原则: ①: key尽可能的分散,也就是我丢一个“6”和“5”给你,你都返回一个“2”,那么这样的... 阅读全文
posted @ 2011-11-24 00:22 一线码农 阅读(10998) 评论(11) 推荐(10)
摘要: 在我们的生活中,无处不存在着查找,比如找一下班里哪个mm最pl,猜一猜mm的芳龄.......对的这些都是查找。在我们的算法中,有一种叫做线性查找。分为:顺序查找。 折半查找。查找有两种形态:分为:破坏性查找, 比如有一群mm,我猜她们的年龄,第一位猜到了是23+,此时这位mm已经从我脑海里面的mmlist中remove掉了。 哥不找23+的,所以此种查找破坏了原来的结构。 非破坏性查找, 这种就反之了,不破坏结构。顺序查找: 这种非常简单,就是过一下数组,一个一个的比,找到为止。 1 using System; 2 using System.Colle... 阅读全文
posted @ 2011-11-20 19:07 一线码农 阅读(13127) 评论(5) 推荐(12)
摘要: 今天跟大家聊聊最后三种排序: 直接插入排序,希尔排序和归并排序。直接插入排序: 这种排序其实蛮好理解的,很现实的例子就是俺们斗地主,当我们抓到一手乱牌时,我们就要按照大小梳理扑克,30秒后, 扑克梳理完毕,4条3,5条s,哇塞...... 回忆一下,俺们当时是怎么梳理的。 最左一张牌是3,第二张牌是5,第三张牌又是3,赶紧插到第一张牌后面去,第四张牌又是3,大喜,赶紧插到第二张后面去, 第五张牌又是3,狂喜,哈哈,一门炮就这样产生了。 怎么样,生活中处处都是算法,早已经融入我们的生活和血液。 下面就上图说明: 看这张图不知道大家可否理解了,在插入排序中,数组会被... 阅读全文
posted @ 2011-11-20 00:34 一线码农 阅读(21074) 评论(18) 推荐(26)
摘要: 首先感谢朋友们对第一篇文章的鼎力支持,感动中.......今天说的是选择排序,包括“直接选择排序”和“堆排序”。话说上次“冒泡排序”被快排虐了,而且“快排”赢得了内库的重用,众兄弟自然眼红,非要找快排一比高下。这不今天就来了两兄弟找快排算账。1.直接选择排序:先上图:说实话,直接选择排序最类似于人的本能思想,比如把大小不一的玩具让三岁小毛孩对大小排个序,那小孩首先会在这么多玩具中找到最小的放在第一位,然后找到次小的放在第二位,以此类推。。。。。。,小孩子多聪明啊,这么小就知道了直接选择排序。羡慕中........对的,小孩子给我们上了一课,第一步: 我们拿80作为参照物(base),在80后面 阅读全文
posted @ 2011-11-16 14:25 一线码农 阅读(20223) 评论(21) 推荐(31)
摘要: 今天是开篇,得要吹一下算法,算法就好比程序开发中的利剑,所到之处,刀起头落。针对现实中的排序问题,算法有七把利剑可以助你马道成功。首先排序分为四种: 交换排序: 包括冒泡排序,快速排序。 选择排序: 包括直接选择排序,堆排序。 插入排序: 包括直接插入排序,希尔排序。 合并排序: 合并排序。那么今天我们讲的就是交换排序,我们都知道,C#类库提供的排序是快排,为了让今天玩的有意思点,我们设计算法来跟类库提供的快排较量较量。争取KO对手。冒泡排序:首先我们自己来设计一下“冒泡排序”,这种排序很现实的例子就是:我抓一把沙仍进水里,那么沙子会立马沉入水底,沙子上的灰尘会因为惯性暂时沉入... 阅读全文
posted @ 2011-11-14 23:16 一线码农 阅读(60091) 评论(82) 推荐(119)
摘要: 今天是系列的终结篇,当然要分享一下wcf的托管方面的知识。wcf中托管服务一般有一下四种:Console寄宿: 利于开发调试,但不是生产环境中的最佳实践。winform寄宿: 方便与用户进行交互,用户想开就开,想关就关,但如果机器重启了,不得不自己手动开一下,危险+麻烦。IIS寄宿: 此寄宿在实战项目中得到了广泛的应用。 好处有:随系统启动和停止。 iis有大量的管理策略对其进行管理。 即想利用wcf的功能,还想访问asp.net的功能。... 阅读全文
posted @ 2011-11-13 14:07 一线码农 阅读(8722) 评论(8) 推荐(18)
摘要: 今天是wcf系列的第四天,也该出手压轴戏了。嗯,现在的大型架构,都是神马的,nginx鸡群,iis鸡群,wcf鸡群,DB鸡群,由一个人作战变成了群殴.......今天我就分享下wcf鸡群,高性能架构中一种常用的手法就是在内存中维护一个叫做“索引”的内存数据库,在实战中利用“索引”这个概念做出"海量数据“的秒杀。好,先上图:这个图明白人都能看得懂吧。因为我的系列偏重于wcf,所以我重点说下”心跳检测“的实战手法。第一步:上一下项目的结构,才能做到心中有数。第二步:“LoadDBService”这个是控制台程序,目的就是从数据库抽出关系模型加载在内存数据库中,因为这些东西会涉及一些算法的 阅读全文
posted @ 2011-11-13 01:07 一线码农 阅读(12215) 评论(44) 推荐(30)
摘要: 今天是速成的第三天,再分享一下WCF中比较常用的一种技术,也就是”事务“。在B2B的项目中,一般用户注册后,就有一个属于自己的店铺,此时,我们就要插入两张表, User和Shop表。当然,要么插入成功,要么全失败。第一步: 首先看一下项目的结构图:第二步: 准备工作,我们新建Commerce数据库,用EF去映射,然后新建ServiceWCF类库,具体步骤就省略, 这一块不懂可以留言。第三步:新建一个Model类库。建立两个实体类Shop和User,当然自定义类型在WCF中传输, 必须在类上加上【DataContract】,属性上加【DataMember】。 Shop.cs 1... 阅读全文
posted @ 2011-11-06 18:12 一线码农 阅读(9465) 评论(16) 推荐(7)