上一页 1 ··· 35 36 37 38 39 40 41 42 43 ··· 46 下一页
摘要: 这个专题因为各种原因好久没有继续下去了,MM吧。。。你懂的,嘿嘿,不过还得继续写下去,好长时间不写,有些东西有点生疏了,这篇就从简单一点的一个“奇偶排序”说起吧,不过这个排序还是蛮有意思的,严格来说复杂度是O(N2),不过在多核的情况下,可以做到N2 /(m/2)的效率,这里的m就是待排序的个数,当m=100,复杂度为N2 /50,还行把,比冒泡要好点,因为重点是解决问题的奇思妙想。 下面我们看看这个算法是怎么描述的,既然是奇偶,肯定跟位数有关了1:先将待排序数组的所有奇数位与自己身后相邻的偶数位相比较,如果前者大于后者,则进行交换,直到这一趟结束。2:然后将偶数位与自己身后相邻的奇数位相.. 阅读全文
posted @ 2014-02-27 01:25 一线码农 阅读(6064) 评论(18) 推荐(2)
摘要: 我们知道很多事情都存在一个分治的思想,同样的道理我们也可以用到数据表上,当一个表很大很大的时候,我们就会想到将表拆分成很多小表,查询的时候就到各个小表去查,最后进行汇总返回给调用方来加速我们的查询速度,当然切分可以使用横向切分,纵向切分,比如我们最熟悉的订单表,通常会将三个月以外的订单放到历史订单表中,这里的三个月就是将订单表进行切分的依据。 好了,分区表的好处我想大家都很清楚了,下面我们看看如何实现。一:分区表 这里我们做个例子,创建一个test数据库,表名为shop,以createtime作为分区依据。1:确定分区依据 怎么分区的话,这个要看具体业务逻辑了,你可以按照时间,地区,求模等.. 阅读全文
posted @ 2014-02-25 00:12 一线码农 阅读(14455) 评论(21) 推荐(21)
摘要: 最近在改公司里面古老的asp代码,不说文件有1w个,起码也有7,8千,而且文件里面include一个嵌套一个。。。当某天jira平台上出现了需要你改的bug的时候,甚至都不知道这个错误在哪个页面,更不说用找出准确的行了,就算找出来了,那时候也是长憋了一口气才找出来的。。。此为背景。。。这时候,可以借助下vs里面强大的 “查找” 功能了。一:文件查找1:文件检索 有时候我们因为改bug的需要,必须要知道这个MD5函数在哪些文件中用到了,然而不像cs中我们可以用shift+f12来查找下函数引用,这时候我们就可以用 “文件查找” 解决这个问题。我们可以在 “查找结果” 中清楚的看到哪些文件和哪.. 阅读全文
posted @ 2014-02-13 23:19 一线码农 阅读(23890) 评论(14) 推荐(6)
摘要: 时间过得真快啊,转眼今年就要过去了,大半年都没有写博客了,要说时间嘛,花在泡妹子和搞英语去了,哈哈。。。前几天老大问我怎么这么长时间都没写博客了,好吧,继续坚持,继续分享我的心得体会。 这个系列我们玩玩aforge.net,套用官方都话就是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域,这个系列研究的重点就是瞎几把搞下AForge.Imaging这个命名空间下面的东东,下载网址:http://www.aforgenet.com/framework/d... 阅读全文
posted @ 2013-12-28 22:12 一线码农 阅读(57886) 评论(19) 推荐(22)
摘要: 这篇开始决定把系列文章的名字改掉,想了个好名字,反正不是玩单机版的就行了。 好了,这篇我们看看一种非持久化的缓存服务器memcache,说到缓存本能反映就是cache,session什么的,是的,可以说这些都是基于.net进程的,通俗点也就做不了多机器的共享,典型的一个就是SSO。一: 安装 memcahce像redis,mongodb一样都需要开启他们自己的服务端,我们下载Memcached_1.2.5.zip,然后放到C盘,修改文件名为memcached。1:install install可以说是万能通用命令,首先我们转到memcached目录,然后memcached.exe -... 阅读全文
posted @ 2013-04-19 00:39 一线码农 阅读(15344) 评论(28) 推荐(15)
摘要: 日常开发中,总会接触到一些好玩的东西,比如这篇的redis,一说到redis,可能就有人跟memcache做比较了,是呀,memcache只能说是简单的kv内存数据结构,而redis支持的数据类型就丰富多了,当然最能让人看上眼的就是SortedSet。有了它,我们就可以玩一些“贪心”的问题,比如适合“贪心”的优先队列,说到优先队列,我们以前实现了仅仅是内存形式的,哎,内存毕竟是内存,当有海量数据的时候,最好能有一个序列化到硬盘的操作。。。恰恰这个场景redis就可以办到。。。一:快速搭建 好了,我们知道redis比较适合做的事情了,现在我们可以进行快速搭建。第一步:下载redis-2.0... 阅读全文
posted @ 2013-04-10 23:25 一线码农 阅读(30684) 评论(20) 推荐(10)
摘要: 上一篇我们看了矩阵的顺序存储,这篇我们再看看一种链式存储方法“十字链表”,当然目的都是一样,压缩空间。一:概念 既然要用链表节点来模拟矩阵中的非零元素,肯定需要如下5个元素(row,col,val,down,right),其中:row:矩阵中的行。col:矩阵中的列。val:矩阵中的值。right:指向右侧的一个非零元素。down:指向下侧的一个非零元素。现在我们知道单个节点该如何表示了,那么矩阵中同行的非零元素的表示不就是一个单链表吗?比如如下:那么进一步来说一个多行的非零元素的表示不就是多个单链表吗,是的,这里我把单链表做成循环链表,我们来看看如何用十字链表来表示稀疏矩阵。从上面的十... 阅读全文
posted @ 2013-04-02 13:44 一线码农 阅读(14979) 评论(2) 推荐(10)
摘要: 我们知道矩阵是一个非常强大的数据结构,在动态规划以及各种图论算法上都有广泛的应用,当然矩阵有着不足的地方就是空间和时间复杂度都维持在N2上,比如1w个数字建立一个矩阵,在内存中会占用1w*1w=1亿的类型空间,这时就会遇到outofmemory。。。那么面临的一个问题就是如何来压缩矩阵,当然压缩的方式有很多种,这里就介绍一个顺序表的压缩方式:三元组。一:三元组 有时候我们的矩阵中只有零星的一些非零元素,其余的都是零元素,那么我们称之为稀疏矩阵,当然没有绝对的说有多少个零元素才算稀疏。针对上面的这个无规律的存放非零元素,三元组提出了一种方法,就是仅仅记录矩阵中的非零元素以及它的行,列以及... 阅读全文
posted @ 2013-03-28 19:02 一线码农 阅读(4920) 评论(3) 推荐(1)
摘要: 话说大学的时候老师说妹子比工作重要~,工作可以再换,妹子这个。。。所以。。。这两个月也就一直忙着Fall in love,嗨,慢慢调整心态吧,这篇就选一个简单的数据结构聊一聊,话说有很多数据结构都在玩组合拳,比如说:块状链表,块状数组,当然还有本篇的双端队列,是的,它就是栈和队列的组合体。一:概念我们知道普通队列是限制级的一端进,另一端出的FIFO形式,栈是一端进出的LIFO形式,而双端队列就没有这样的限制级,也就是我们可以在队列两端进行插入或者删除操作。二:编码1:定义结构体通常情况下,队列的内部都是采用数组来实现,而且带有两个指针head和tail来指向数组的区间段,为了充分利用数组空间. 阅读全文
posted @ 2013-03-20 18:09 一线码农 阅读(6556) 评论(10) 推荐(4)
摘要: 年底了,人浮躁多了,沉不下去心研究技术了,不过昨天终于抢到了回家的票,很开心。 言归正卷,在WCF出来之后,可能我们玩这些原始的TCP越来越少了,我们知道WCF对TCP进行了再一次的包装,第一反应给我们的或许是同构系统用TCP,异构系统用HTTP,那么问题来了,异构系统到底可不可以用TCP呢?至少WCF是玩不了的,因为其他语言没有针对.net的“服务引用”,也没有什么ChannelFactory给你去玩,如果你是一定要追求性能的话,原始的TCP会助你一臂之力的。我们知道最最原始的是玩Socket,由于Socket比较复杂,但是最灵活,C#里面提供了两个简化的包装类:TcpListener和T. 阅读全文
posted @ 2013-01-18 15:30 一线码农 阅读(11354) 评论(7) 推荐(12)
摘要: 去年买了本数字图像处理算法,一直都没有看,前几个星期都一直忙着工作上的活,趁这阶段悠闲点,玩一玩图片处理,这玩意还是非常有意思的。 以前我们在做Web上的用户注册时,通常都会做一个验证码,大家都知道用来防止暴力注册的,当然提到验证码大家都知道C#里面有一个Bitmap类专门用来处理图片的,好吧,这一篇我们从最简单的“图片灰度化”说起。一:图片灰度化 我们都知道,位图是由一个一个像素点组成的,像素点可能是红色,橙色,粉色等等,这些颜色我们都知道是用RGB来表示的。每个颜色分量都是一个字节(0-255),所以一般情况下图的像素点都是24位,当然还有32位,64位,当RGB是0-255之间的不... 阅读全文
posted @ 2013-01-04 23:52 一线码农 阅读(7350) 评论(17) 推荐(2)
摘要: 说到排序,大家第一反应基本上是内排序,是的,算法嘛,玩的就是内存,然而内存是有限制的,总有装不下的那一天,此时就可以来玩玩外排序,当然在我看来,外排序考验的是一个程序员的架构能力,而不仅仅局限于排序这个层次。一:N路归并排序1.概序 我们知道算法中有一种叫做分治思想,一个大问题我们可以采取分而治之,各个突破,当子问题解决了,大问题也就KO了,还有一点我们知道内排序的归并排序是采用二路归并的,因为分治后有LogN层,每层两路归并需要N的时候,最后复杂度为NlogN,那么外排序我们可以将这个“二”扩大到M,也就是将一个大文件分成M个小文件,每个小文件是有序的,然后对应在内存中我们开M个优先队... 阅读全文
posted @ 2012-12-19 14:44 一线码农 阅读(13378) 评论(16) 推荐(15)
摘要: 或许在生活中,经常会碰到针对某一个问题,在众多的限制条件下,如何去寻找一个最优解?可能大家想到了很多诸如“线性规划”,“动态规划”这些经典策略,当然有的问题我们可以用贪心来寻求整体最优解,在图论中一个典型的贪心法求最优解的例子就莫过于“最短路径”的问题。一:概序 从下图中我要寻找V0到V3的最短路径,你会发现通往他们的两点路径有很多:V0->V4->V3,V0->V1->V3,当然你会认为前者是你要找的最短路径,那如果说图的顶点非常多,你还会这么轻易的找到吗?下面我们就要将刚才我们那点贪心的思维系统的整理下。二:构建 如果大家已经了解Prim算法,那么Dijkstra算 阅读全文
posted @ 2012-12-18 12:14 一线码农 阅读(10628) 评论(0) 推荐(4)
摘要: 这篇我们看看第二种生成树的Kruskal算法,这个算法的魅力在于我们可以打一下算法和数据结构的组合拳,很有意思的。一:思想 若存在M={0,1,2,3,4,5}这样6个节点,我们知道Prim算法构建生成树是从”顶点”这个角度来思考的,然后采用“贪心思想”来一步步扩大化,最后形成整体最优解,而Kruskal算法有点意思,它是站在”边“这个角度在思考的,首先我有两个集合。1. 顶点集合(vertexs): 比如M集合中的每个元素都可以认为是一个独根树(是不是想到了并查集?)。2.边集合(edges): 对图中的每条边按照权值大小进行排序。(是不是想到了优先队列?)好了,下面该如何操作呢?... 阅读全文
posted @ 2012-12-17 00:28 一线码农 阅读(6363) 评论(6) 推荐(3)
摘要: 这一篇我们看看经典又神奇的并查集,顾名思义就是并起来查,可用于处理一些不相交集合的秒杀。一:场景 有时候我们会遇到这样的场景,比如:M={1,4,6,8},N={2,4,5,7},我的需求就是判断{1,2}是否属于同一个集合,当然实现方法有很多,一般情况下,普通青年会做出O(MN)的复杂度,那么有没有更轻量级的复杂度呢?嘿嘿,并查集就是用来解决这个问题的。二:操作 从名字可以出来,并查集其实只有两种操作,并(Union)和查(Find),并查集是一种算法,所以我们要给它选择一个好的数据结构,通常我们用树来作为它的底层实现。1.节点定义 1 #region 树节点 2 ... 阅读全文
posted @ 2012-12-16 15:00 一线码农 阅读(5696) 评论(2) 推荐(2)
上一页 1 ··· 35 36 37 38 39 40 41 42 43 ··· 46 下一页