阅读Redis源码(三) — redis通信协议与事件驱动

在redis中,关于事件驱动框架的代码集中在ae.h/ae.c中.作者也在头部设置了介绍:a simple event-driven programming library. 这个框架其实很简单,核心就是一个消息 队列,同时只有一个线程负责对其进行处理,这里面的调度思想,还是简单的优先级队列,文件操作优先级永远高于时间操作.而且任务之间并不会进行抢占. 具体执行过程,可以参照如下干特图: time ———————————————————————–>| |<—- 10 ms —->|<—- 10 ms —->|<—- 10 ms —->|<—-…

阅读Redis源码(二) — 数据库及持久化策略

之前的一篇文章写了关于Redis的字典数据结构,但是,他并不是与我们直接交互的.因为我们在进行添加字段的时候,往往需要添加过期值,这一点我们在字典数据结构中没有能够得到体现. 所以,我们需要关注另外一个数据结构,redisDb.即Redis的数据库储存,在redis.h中,该结构体的定义如下. typedef struct redisDb { dict *dict; /* The keyspace for this DB */ dict *expires; /* Timeout of…

阅读Redis源码(一) — 基本数据结构

调试环境搭建 下载redis源代码包,可以访问“redis”官网进行下载.这边,我使用的是2.8.13的稳定版本. 解压之后使用eclipse for c/c++导入工程,选项是依据makefile的那项. 导入之后会出现一个语法错误,但事实上,这个错误是可以乎略的.就是在热带开始redis.c的第2969行,会有如下的代码: snprintf(buf,1024*16,ascii_logo, REDIS_VERSION, redisGitSHA1(), strtol(redisGitDirty(),NULL,10) > 0, (sizeof(long) == 8) ? “64” : “32”, mode,…

Kohana框架请求分发流程

下载Kohana框架代码,可以看到如下的目录结构 其中index.php是程序的主入口,他的主要作用如下: 设置application,module,system的路径 设置Error reporting的等级 如果存在安装文件,就加载它 引导文件,将APPPATH/bootstrap.php引入 可知,故事的开始从index.php开始。 然后,我们可以到bootstrap.php中一探究竟. 这个类中的主要作用就是加载Kohana的核心类Kohana,然后配置.具体而言,可以分为如下步骤: 加载Kohana类 执行Kohana::init函数,该函数的作用是设置错误处理,缓存和日志记录。附加Kohana_Config的阅读器和Kohana_Log的写入器。 随后调用Kohana::modules函数来开启更多的模块 将模块路径添加到级联文件系统 如果每个模块的init.php文件存在就引入它 init.php文件可以执行额外的环境设置,包括添加路由。 在最后,可以设置一个路由,在刚下的Kohana框架中,bootstrap.php的最后是这么一段代码: /** * Set…

杭州第一周(无关技术)

好久没有写博客了。主要是因为前一段时间的期末考试,和最近一周在杭州实习。昨天为了开通电视和和房东更新洗衣机和煤气灶,忙了好久,到下午才结束,然后想去采购,结果到了商场才发现自己身上只有50块钱。。。悲剧的买了点泡面,和筷子洗发露等,正好45,然后15去吃了个饭。 今天,就因为网线和快递的问题,去了趟公司和办宽带的地方,结果,宽带很顺利,一个上午就连安装都好了,然后快递,这就是麻烦了。应该是找不到了,第一次寄快递啊,还好只是一个仓鼠笼子,如果是其他什么的,就悲剧了。然后和快递协商下来,他全额赔付。这点还是很好的,快递也比较讲道理,虽然好像确实是他错了。。。 说说实习的第一周吧,周二入职的,第一天就是搭建开发环境,第一次知道了,原来为了开发环境一致,可以通过Vagrant和VirtualBox来搭建虚拟机环境,因为作为一个Javaer,对PHP的一套不是特别熟悉,因为公司目前的代码都是PHP,所以估计要有一段时间捣鼓PHP,因为马上就是要推行Java的服务化,这也是我推掉阿里来蘑菇街的主要原因,在技术上,可以见证一个技术变革,这个诱惑还是很大的,而且,在这边。可以从整个业务的角度看,而不是仅仅做一个所谓的天猫积分,或者什么的。 第二天,就是第一个任务了,就是一个数据接口的修改,应该是个比较简单的任务,但是一开始就要在近500MB的代码里理清楚过程或者说流程,还是比较痛苦的。而且,数据接口方还留了一个坑。。数据接口不能实时,需要缓存。。然后也了解了Redis。 第三天,就是做完了第一个任务,经过主管的审查之后,就上线了,这个感觉还是很好的,毕竟现在看mogujie.com,就可以看到我的代码效果了。然后画出了几个流程图,一个是Kohana框架的,一个是店铺页面的加载过程。 第四天,就是干第二个任务,修改Banner位置,然后切换模版,这个又是商家平台的部分。相比之下,这个任务又需要和前端团队(龙二)合作,不过相比之下,效率确实高,平时在学校都是我等其他人进度,现在是别人等我进度,当时紧张的一塌糊涂。不过下午的技术分享还是很爽的,以前都是间接的了解一些大型网站的架构,现在就是有阿里架构师给我们分享系统的架构。从一台服务器,演化到现在常见的大型网站的过程,其中也学到了很多新的名词,和一些新的方法。比如说IP层的负载均衡,数据链路层的负载均衡(可以形成三角模式,网络知识),还有一些常见的安全手段,XSS,CSRF等。还有一些细节上的。等有时间,我把这个过程总结出来。 好了,现在就是压力了。公司的人员都很高效,而且牛,而且还在不断的招人。要是不努力提高自己,在团队中的地位就可能会受到影响。 最近在开发环境上浪费的时间太多了,需要好好的反思下了,输出文档。 不过,这四天里,输出了大约3-4份技术文档,和一个任务,另外一个还在进行中。不过,我要继续努力!一个说好的965的实习,我要玩成8106!