上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 32 下一页
摘要: 文章地址MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析 阅读全文
posted @ 2012-08-25 20:55 vivianC 阅读(260) 评论(0) 推荐(0)
摘要: 先通过一个小程序来看一看:#includevoid foo(int x, int y, int z){printf("x = %d at [%X]n", x, &x);printf("y = %d at [%X]n", y, &y);printf("z = %d at [%X]n", z, &z);}int main(int argc, char *argv[]){foo(100, 200, 300);return 0;}运行结果:x = 100 at [BFE28760]y = 200 at [BFE2876 阅读全文
posted @ 2012-08-25 20:06 vivianC 阅读(197) 评论(0) 推荐(0)
摘要: 计算机编程语言在过去几十年发现了许多变化。最先出现的语言是用于科学计算的Fortan和逻辑推演的LISP语言,而现在用于网络编程的语言包括C#、Ruby on Rails、Note.JS。下面由Services Angle制作的信息图展示了过去数十年来编程语言的演化过程。1954 FortranFORTRAN(FORmula TRANslator的缩写)意为“公式翻译器”,是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。FORTRAN语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。1958 LISPLISP语言(全名LISt Processor,即链表处理语 阅读全文
posted @ 2012-08-21 12:23 vivianC 阅读(250) 评论(0) 推荐(0)
摘要: 分布式哈希和一致性哈希分布式哈希和一致性哈希是分布式存储和p2p网络中说的比较多的两个概念了。介绍的论文很多,这里做一个入门性质的介绍。分布式哈希(DHT) 两个key point:每个节点只维护一部分路由;每个节点只存储一部分数据。从而实现整个网络中的寻址和存储。 DHT只是一个概念,提出了这样一种网络模型。并且说明它是对分布式存储很有好处的。但具体怎么实现,并不是DHT的范畴。一致性哈希: DHT的一种实现。本质还是一个哈希算法。回想平时我们做负载均衡,按querystring签名对后端节点取模是最简单也是最常用的算法,但节点的增删后所造成的问题显而易见,原有的请求几乎都落不到同一台机器上 阅读全文
posted @ 2012-08-20 20:34 vivianC 阅读(236) 评论(0) 推荐(0)
摘要: 有这样一个面试题——请把从1到1000的数打印出来,但你不能使用任何的循环语句或是条件语句。更不能写1000个printf或是cout。用C/C++语言。我相信,大多数人一开始你可能想到的是递归算法:1234567void f(int n){ printf("%d\n",n); (1000-n) ? f(n+1) : exit(0) ; } int main(){ f(1); }当然,题目中说了不能使用条件语句,所以,上面那种解法的不符合题意的,因为还是变向地使用了条件表达式。不过,我们可以用别的方法来让这个递归终止,比如:除以零,当程序crash,呵呵。12345void 阅读全文
posted @ 2012-08-20 20:11 vivianC 阅读(184) 评论(0) 推荐(0)
摘要: 二叉树:一个根节点,每个节点下挂着最多2个子节点。、概念:度:结点的分支数,二叉树度为2。深度:树的层次。二叉排序树:二叉树的基础上,每个节点上都有一个数字,节点上的数字都比右节点上的大。应用场景:基于内存的排序数据结构,写入时将数据写入到对应的位置。数据可能会出现倾斜,可以想到数字写入顺序如果不是50-20-60-18-55,而是18-20-50-55-60,那么二叉树就会退变为链表。B-树:B-树每个节点上包含着数据和指针,每个指针指向其一个子节点的位置,并且数据的个数为指针的2d-1个。这里的d是指针的个数,同时也是树的“度”。B-树的查找需要一次对每个节点进行二分查找,直至找到或返回n 阅读全文
posted @ 2012-08-20 19:16 vivianC 阅读(149) 评论(0) 推荐(0)
摘要: linux内核在使用fork创建进程时,基本上会使用Copy-On-Write(COW)技术。这里解释一下COW技术以及为什么在fork中使用。WIKI上对COW的解释:Copy-on-write(sometimes referred to as "COW") is anoptimizationstrategy used incomputer programming. The fundamental idea is that if multiple callers ask for resources which are initially indistinguishable 阅读全文
posted @ 2012-08-20 09:25 vivianC 阅读(141) 评论(0) 推荐(0)
摘要: 个人觉得php最方便的就是deployment了,只要把php文件丢到支持php的路径里面,然后访问那个路径就能使用了;无论给主机添加多少php应用,只要把目录改好就没你的事了,完全不用关心php-cgi运行得如何,deployment极为方便。反观python,部属起来真是头痛,常见的部署方法有:fcgi:用spawn-fcgi或者框架自带的工具对各个project分别生成监听进程,然后和http服务互动wsgi:利用http服务的mod_wsgi模块来跑各个project无论哪种都很麻烦,apache的mod_wsgi配置起来很麻烦,内存占用还大,如果要加上nginx作为静态页面的服务器那 阅读全文
posted @ 2012-08-20 09:13 vivianC 阅读(273) 评论(0) 推荐(0)
摘要: 为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三。其一,Redis不仅性能高效,而且完全免费。其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧。最后就是上手容易,操作简单。记得在刚刚接触Redis的时候,由于当时项目的工期相当紧张,留给我们做出选择的空间也是非常有限,一旦技术决策失误,造成的后果也比较严重。所以在做出决定之前,我不仅快速的浏览了Redis官网文档,而且还熬夜搜集了很多网上的相关技术文章。在经过一通折腾之后,毅然决然的选择了它,现在回头想想自己确实是幸运的。 这个系列博客中的内容和数据主要来自于Redis官方文档,本人仅仅是根. 阅读全文
posted @ 2012-08-09 23:39 vivianC 阅读(148) 评论(0) 推荐(0)
摘要: 本文配图来自《高性能MySQL(第二版)》。在数据库中,对性能影响最大的几个策略包括数据库的锁策略、缓存策略、索引策略、存储策略、执行计划优化策略。索引策略决定数据库快速定位数据的效率,存储策略决定数据持久化的效率。MySQL中两大主要存储引擎MyISAM和InnoDB采用了不同的索引和存储策略,本文将分析它们的异同和性能。MySQL主要提供2种方式的索引:B-Tree(包括B+Tree)索引,Hash索引。B树索引具有范围查找和前缀查找的能力,对于N节点的B树,检索一条记录的复杂度为O(LogN)。哈希索引只能做等于查找,但是无论多大的Hash表,查找复杂度都是O(1)。显然,如果值的差异性 阅读全文
posted @ 2012-07-04 11:32 vivianC 阅读(686) 评论(0) 推荐(0)
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 32 下一页