自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

daizhj的专栏

http://t.sina.com.cn/daizhj

  • 博客(375)
  • 收藏
  • 关注

原创 重磅发布码农界的第一张吉他专辑小样

首先说明这不是标题党,呵呵。可以说这是我的第一张,应该也是全世界首张“码农演奏的吉他录音小样” 。很久没有发BLOG了。本来想从此"隐退"下去。但在一年前的一个叫向怡宁的人在网上的视频震动了我,让我把本来准备40岁以后要做的事情提前几年来搞,而这也是我20年来一直想做的事,就是“玩音乐”。

2014-11-12 13:55:14 2471

原创 HRPlugin For Xcode发布(附源码地址)

今天介绍给大家介绍的这个插件,是我在IOS平台上开发以来,一些想法的集合体。因为本人时常感觉在开发过程中无论从GOOGLE资料查找和SQL数据库查询,正则表达式测试,SVN等,这些经常要做的操作中,耽误了我不少的时间,甚至会打断我对业务的思考,进而影响对程序的理解。     在忍无可忍的情况下,我决定自己动手造一些工具,希望借它避开频繁切换窗体过程对开发者思维的影响。     好了,开

2013-06-25 14:08:12 2781

原创 当C++遇到IOS应用开发---LRUCache缓存

本文着重介绍如何在XCODE中,通过C++开发在IOS环境下运行的缓存功能。算法基于LRU(最近最少使用)。有关lru详见:      http://en.wikipedia.org/wiki/Page_replacement_algorithm#Least_recently_used            之前在网上看到过网友的一个C++实现,感觉不错,所以核心代码就采用了他的设计。

2012-11-13 15:28:15 7199 3

原创 当C++遇到IOS应用开发---Dict集合

在Object-c中,字典(KEY/VALUE)使用NSDictionary 和NSMutableDictionary(可变长)。使用语法如下: NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key1",nil];//注意用nil结束

2012-11-09 15:47:15 2891

原创 当C++遇到IOS应用开发之---List集合

在Object-c中,数组使用NSArray和NSMutableArray(可变长数组)。使用语法如下:NSArray *array = [[NSArray alloc] initWithObjects:@"One",@"Two",@"Three",@"Four",nil];      取数组元素的方法: [array objectAtIndex:2]);

2012-11-07 15:01:04 3272 1

原创 当C++遇到IOS应用开发---字符串处理

在Object-c中,字符串处理通常使用NSString,NSMutableString这两个类,前者用于定长字符串,后者用于可变长度字符串的操作。尽量其提供的方法很丰富,但一用起来后就让人感到很难受,比如其超长的方法名称(如stringByReplacingPercentEscapesUsingEncoding),再加上嵌套“[]”式的调用方式,让人很快就会产生"[]"匹配综合症。

2012-11-06 17:11:33 3406

原创 当C++遇到IOS应用开发---SQLITE篇

大约是一年多前开始接触OBJECT-C并进行IOS开发,一上来就被OBJECT里那种近似于“丑陋”的方法命名及其[]调用方式给“强暴”了一把,所以在后来的开发过程中,开始思考如何能使用C++方式来混编开发。经过了近半年多的代码积累和开发调试,开始有了这个系列的内容。本系列BLOG的主要方向是引导IOS开发者特别是之前用C#和C++的朋友,可以一步步搭建属于拥有.net风格的基本类库,并快速进行IO

2012-11-06 10:57:41 8865 6

原创 开源ImageFilter库For IOS源码发布

鉴于之前有朋友反映将ImageFilterForC直接用于XCODE开发会报出错误的原因。最近正好入手一部MAC PRO,所以顺便将ImageFilterForC做了部分改动并迁移到了IOS上,同时做了一个测试应用。大家可以从这个地址:        https://github.com/daizhenjun/ImageFilterForIOS       下载该应用(源码),

2012-07-17 14:10:59 2788 3

原创 开源ImageFilter库v0.4:新增26种图片效果

在原有70多种滤镜(v0.3)基础上,又新增实现26种图片效果。目前三个平台的源码已同步并测试完毕。      有朋友反映在ios平台上使用时出现编译错误,这里需要说明的是,因为本人手上没有mac的本本,只是使用VC进行开发,并参照相应的object-c代码写了相应的转型程序,所以并不保证在xcode上100%的编译成功。但可以先尝试将invertfilter.h文件(源码中)改写成.mm文件

2012-06-21 12:49:28 4731 1

原创 开源ImageFilter库v0.3:新增22种图片效果

在原有50多套滤镜(v0.1)基础上,又新增实现22种图片效果。目前三个平台的源码已同步并测试完毕。   下面是图片效果: 原图: ZoomBlurFilter ThreeDGridFilter ColorToneFilter ColorToneFilter1 ColorToneFilter2

2012-05-31 15:09:08 3532

原创 开源ImageFilter库:新增7类滤镜,支持12种图片效果

经过近三天的开发,在原有40套滤镜(v0.1)基本上,又新增实现了7类滤镜(v0.2),通过组合使用,可直接做出12种图片效果。相信总有几款适合您,哈哈。          下面是图片效果:LomoFilterPaintBorderFilter-green PaintBorderFilter-blue PaintBorderFilter-yellow

2012-05-21 13:47:20 17339 5

原创 Android, WindowsPhone7, IOS ,vc2010平台40多套图片滤镜开源

历经三个多月开发,终于完成了这三个库的编码工作。用到的开发语言主要有使用了C++(含部分Object-c),JAVA,C#。经过检测,目前已正式投入到生产环境中。      为了实现三种语言一种命名方式,我采用了相同的类名,接口,namespace(package)。可以说只要熟悉了其中一个平台的代码,就可以很顺利的写出另外两个平台的滤镜代码(当然我后续还会加入更多的滤镜效果)。

2012-05-15 13:57:17 4730 5

原创 Discuz!NT 中的LLServer架构设计

在开发LLServer的同时,我一直在跟进测试企业版的相应LLServer客户端,目前这部分代码已测试完毕并提交的Discuz!NT产品中,会跟随最新的源码包一并发布。本文主要是介绍一下产品中引入LLServer的架构思路。     在Discuz!NT的企业版产品中,使用了

2011-08-26 11:27:12 4891

原创 LLServer1.0及C#客户端正式发布并开源

LLServer是本人基于libevent和leveldb这两个开源软件,开发的轻量级数据存储服务器软件,借助libevent高效网络接口实现对leveldb的访问封装。       项目网址:http://code.google.com/p/llserver/  使

2011-08-23 13:09:34 2981 1

原创 Mongodb 源码分析--Replication之OpLog

    在之前的文章中,介绍了关于master-slave模式下的主从端代码的执行流程,因为当时篇幅所限,未对oplog的数据结构以及mongodb的local数据库作过多阐述,而这可能会让不知道其内容的朋友看代码时云里雾里找不到头绪,今天我专门用一篇文章来大致解释一下(这些内容可能会在后面章节中有所涉及)。      首先了解一个local数据库:      在mo

2011-06-27 11:53:00 5969 2

原创 Mongodb源码分析--Replication之主从模式--Slave

    在上文中介绍了主从(master-slave)模式下的一些基本概念及master的执行流程。今天接着介绍一下从(slave)结点是如何发起请求,并通过请求获取的oplog信息来构造本地数据的。    不过开始今天的正文前,需要介绍一下mongodb在slave结点上进行数据同步时的一个大致流程:        1.当一个从结点启动时,它会对主结点进行一次彻底同步。从

2011-06-20 08:34:00 6753 2

原创 这样的“牛”人最好别碰上

  很久没写口水文了,因为一直没有像样的话题。另外作为一个技术从业者,写那类东东实在没什么意思。但昨天与公司销售一起去一家客户那做技术交流的过程中发现了技术之外的话题,我想很多公司可能也正在上演以这类话题所引发的冲突,所以就一并以流水帐的方式呈现出来了。 因为这次是客户那边的CTO对我们产品有疑问,所以之前我们早早准备了一些资料和相关测试说明文档,希望能全方位的介绍一下我们产品特别

2011-06-17 11:34:00 99445 153

原创 Mongodb 源码分析--Replication之主从模式--Master

      mongodb中提供了复制(Replication)机制,通过该机制可以帮助我们很容易实现读写分离方案,并支持灾难恢复(服务器断电)等意外情况下的数据安全。      在老版本(1.6)中,Mongo提供了两种方式的复制:master-slave及replica pair模式(注:mongodb最新支持的replset复制集方式可看成是pair的升级版,它解决p

2011-06-13 12:50:00 5575 1

原创 Mongodb 源码分析--链接池(ConnPool)

    在之前的一篇文章中,介绍了mongos的balaner的执行流程,其中在源码中的Balancer::run()方法里简单说明了为了连接到configserver,balancer通过构造ScopedDbConnection实现来链接并执行相应操作,因为当时篇幅所限,只是该链接使用池化的方式一带而过,今天就专门介绍一下mongodb中使用池化方式来管理链接对象以提升链接效

2011-06-07 09:09:00 5401 4

原创 Mongodb源码分析--Mongos之分布式锁

在之前的一篇文章中,介绍了balancer会声明使用分布式锁来协调分布式环境下的信息沟通并确保事务一致性,有关分布式锁的一些原理性信息可以参见这几篇文章:http://wenku.baidu.com/view/19ce3085b9d528ea81c77982.html,http://wenku.baidu.com/view/d94ac11ffc4ffe473368ab27.html

2011-05-30 09:56:00 8765 6

原创 Mongodb源码分析--Mongos之balancer(均衡)

在之前的一篇文章中,介绍了mongos的启动流程,在那篇文章的结尾,介绍了mongos使用balancer来进行均衡,今天就继续讲其实现方式。首先我们看一下Balancer及相关实现策略的类图:

2011-05-23 11:00:00 5717 5

原创 Mongodb源码分析--Mongos

MongoDB提供了auto-sharding 功能。因为其是auto-sharding,即mongodb通过mongos(一个自动分片模块,用于构建一个大规模的可扩展的数据库集群,这个集群可以并入动态增加的机器)自动建立一个水平扩展的数据库集群系统,将数据库分表存储在sharding的各个节点上。 一个mongodb集群包括一些shards(包括一些mongod进程),mongos路由进程,一个或多个config服务器

2011-05-16 10:18:00 5796 5

原创 Mongodb源码分析--查询结果集封装

在这个系列的开头几篇文章中,曾经介绍了Mongodb的查询流程,因为篇幅所限,并未介绍对cursor进行遍历查询时,如何将查询记录装填进结果集中。今天就针对诸如"select top n"这类返回一定数量记录的查询操作,来分析mongodb是如何将查询结果装填到结果集中的。这里要说明的是之前文章中的大部分程序流程,在select top 这类操作也都是要执行的,所以这里接着之前文章所说的内容,继续向底层挖掘相应的功能逻辑:

2011-05-09 14:12:00 4702 11

原创 Mongodb源码分析--Command体系架构

Command在Mongodb中是一类特殊操作,它提供了强大的管理及各项操作(比如建库,索引,删除集合等)。可以说通过Command可以完成几乎所有想做的事情。同时Mongodb开发者在Command上又做了非常清晰体系架构和设计,便于管理和高效执行各种类型的Command。 今天就专门用一篇篇幅来着重介绍一下其Command的体系架构,并用例子来介绍mongod是如何将Command引入其中的。

2011-05-03 10:15:00 4187 4

原创 Mongodb源码分析--内存文件映射(MMAP)

在Mongodb中,其使用了操作系统底层提供的内存映射机制,即MMAP。MMAP可以把磁盘文件的一部分或全部内容直接映射到内存,这样文件中的信息位置就会在内存中有对应的地址空间,这时对文件的读写可以直接用指针来做,而不需要read/write函数了。同时操作系统会将数据刷新保存到磁盘上。如下图:

2011-04-25 08:41:00 8799 14

原创 Mongodb源码分析--游标Cursor

在Mongodb中,其提供了类似关系型数据中cursor对象来遍历数据集合,同时mongodb并要根据不同的场景生成不同的游标对象(cursor),比如顺序遍历游标(basicCursor),反向游标(reverseCursor), B树索引游标(btreeCursor)等。 下面是其游标体系架构类图,cursor.cpp, cursor.h, clientcursor.cpp, clientcursor.h

2011-04-18 08:38:00 4175 5

原创 Mongodb源码分析--更新记录

在之前的一篇文章中,介绍了assembleResponse函数(位于instance.cpp第224行),它会根据op操作枚举类型来调用相应的crud操作,枚举类型定义如下: 可以看到dbUpdate = 2001 为更新操作枚举值,下面我们看一下assembleResponse在确定是更新操作时调用的方法,如下:

2011-04-11 10:48:00 4513 1

原创 Mongodb源码分析--删除记录

在之前的一篇文章中,介绍了assembleResponse函数(位于instance.cpp第224行),它会根据op操作枚举类型来调用相应的crud操作,枚举类型定义如下...可以看到dbDelete = 2002 为删除操作枚举值。当客户端将要删除的记录(或条件的document)发到服务端之后,mongodb通过消息封装方式将数据包中的字节流解析转成 message类型,并进一步转换成dbmessage之后,mongodb就会根据消息类型进行判断,以决定接下来执行的操作),下面我们看一下 assemb

2011-04-06 14:25:00 3926 7

原创 Mongodb源码分析--消息(message)

在Mongodb中,客户端和服务端进行通信是基于mongodb wire protocol。说白了,该协议是一个简单的基于socket,请求/响应方式的协议,客户端使用常规的TCP/IP套接字(socket)进行通信。客户端与服务端使用约定的消息(格式)进行通信,其消息头结构与C语言中的struct类似。具体的代码(位于message.cpp):

2011-04-02 14:49:00 2478

原创 Mongodb源码分析--插入记录及索引B树构建

在之前的mongodb查询流程中,介绍了assembleResponse函数(位于instance.cpp第224行),它会根据op操作枚举类型来调用相应的crud操作,枚举类型定义如下: enum Operations { opReply = 1, /* reply. responseTo is set. */ dbMsg = 1000, /* generic msg command followed by a string */

2011-03-30 13:14:00 8934 5

原创 Mongodb源码分析--日志及持久化

在本系列的第一篇文章(主函数入口)中,介绍了mongodb会在系统启动同时,初始化了日志持久化服务,该功能貌似是1.7版本后引入到系统中的,主要用于解决因系统宕机时,内存中的数据未写入磁盘而造成的数据丢失。其机制主要是通过log方式定时将操作日志(如cud操作等)记录到db的journal文件夹下,这样当系统再次重启时从该文件夹下恢复丢失的(内存)数据。

2011-03-21 16:35:00 3763

原创 mongodb源码分析--查询

在之前的一篇文章中,介绍了mongodb的主程序入口main()的执行流程,其实main只是实始化一些参数信息并做了些后台线程任务的启动工作(包括数据准备和恢复),并最终启动一个线程进行循环侦听。今天将会介绍在mongodb中数据查询 (find)的流程,以了解mongodb是如果对message进行拆包分析,以及数据进行表扫描及索引使用的。

2011-03-18 17:34:00 3429

原创 Mongodb源码分析--主程序入口main()

作为这个系列的开篇,本人特此声明,因为本人技术功力有限,且对mongodb源码目前也在研究探索中,可能会对mongodb内部某些实现机制及原作者的意图领会不够精确,因此错误再所难免,希望大家批评指正。另外本文所使用的mongodb源码为1.8 rc1,同时如果有条件的话,大家可以安装vs2010,用C++来编译调试mongodb源码,以便通过运行过程中的数据和流程来验证自己的判断。

2011-03-17 17:56:00 3599 1

原创 VS2010 C++下编译调试MongoDB源码

考虑到mongodb使用了boost库源码,参考mongodb官方文档后,下载编译boost版本是1.42(时间为2010-2-2)或更新版本: boost版本1.42: http://sourceforge.net/projects/boost/files/boost/1.42.0/boost_1_42_0.zip/download

2011-03-07 13:21:00 5467 8

原创 关于Memcache mutex设计模式的.net实现

之前在网上看过memcache-mutex的场景分析和实现代码,这里将.net方式加以实现,当然这里主要是依据原文的伪代码照猫画虑,以作为总结及记录。如果您对相应实现感兴趣可以尝试使用本文提供的代码进行测试,如果有问题请及时与我联系。 原文链接:http://timyang.net/programming/memcache-mutex/

2011-02-22 12:18:00 2055 2

原创 Discuz!NT中的Redis架构设计

在之前的Discuz!NT缓存的架构方案中,曾说过Discuz!NT采用了两级缓存方式,即本地缓存+memcached方式。在近半年多的实际运行环境下,该方案经受住了检验。现在为了提供多样式的解决方案,我在企业版里引入了Redis这个目前炙手可热的缓存架构产品,即将memcached 与Redis作为可选插件方式来提供了最终用户,尽管目前测试的结果两者的差异不是很大(毫秒级),但我想多一种选择对用户来说也是好的。

2011-02-21 11:01:00 3119

原创 使用ServiceStackRedis链接Redis简介

注:关于如何在windows,linux下配置redis,详见这篇文章:) 目前网上有一些链接Redis的C#客户端工具,这里介绍其中也是目前我们企业版产品中所使用的ServiceStackRedis, 链接地址:

2011-02-17 14:26:00 6991 3

原创 我的2010

再过十几天,2010年就要过去了,为了避免虚度光阴,花些时间把这一年的工作,生活及所感所想归纳一下。 这一年启动并开源了两个项目,一个是silverlight摄像头应用,一个是TokyoTyrentClient客户端。 都开源在了codeplex下,链接如下: http://tokyotyrantclient.codeplex.com/ http://webcam.codeplex.com/ 当然这一年也是兴趣和关注领域发

2010-12-16 17:19:00 1443 3

原创 NET下RabbitMQ实践[实战篇]

之前的文章中,介绍了如何将RabbitMQ以WCF方式进行发布。今天就介绍一下我们产品中如何使用RabbitMQ的!在Discuz!NT企业版中,提供了对HTTP错误日志的记录功能,这一点对企业版非常重要,另外存储错误日志使用了MongoDB,理由很简单,MongoDB的添加操作飞快,即使数量过亿之后插入速度依旧不减。在开始正文之前,先说明一下本文的代码分析顺序,即:程序入口==》RabbitMQ客户端===>RabbitMQ服务端。好了,闲话少说,开始正文!

2010-10-25 15:37:00 1575

原创 NET下RabbitMQ实践[WCF发布篇]

在之前的两篇文章中,主要介绍了RabbitMQ环境配置,简单示例的编写。今天将会介绍如何使用WCF将RabbitMQ列队以服务的方式进行发布。注:因为RabbitMQ的官方.net客户端中包括了WCF的SAMPLE代码演示,很适合初学者,所以我就偷了个懒,直接对照它的SAMPLE来说明了,算是借花献佛吧,呵呵。首先我们下载相应源码(基于.NET 3.0),本文主要对该源码包中的代码进行讲解,链接如下:

2010-10-22 14:46:00 3754 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除