代码改变世界

随笔分类 -  Linux

深入剖析 redis 主从复制

2014-05-12 21:44 by 捣乱小子, 17329 阅读, 收藏, 编辑
摘要: 主从概述redis 支持 master-slave(主从)模式,redis server 可以设置为另一个 redis server 的主机(从机),从机定期从主机拿数据。特殊的,一个 从机同样可以设置为一个 redis server 的主机,这样一来 master-slave 的分布看起来就是一个... 阅读全文

深入剖析 redis AOF 持久化策略

2014-04-14 21:19 by 捣乱小子, 14310 阅读, 收藏, 编辑
摘要: 本篇主要讲的是 AOF 持久化,了解 AOF 的数据组织方式和运作机制。redis 主要在 aof.c 中实现 AOF 的操作。数据结构 rioredis AOF 持久化同样借助了 struct rio. 详细内容在《深入剖析 redis RDB 持久化策略》中有介绍。AOF 数据组织方式假设 re... 阅读全文

深入剖析 redis RDB 持久化策略

2014-03-26 12:31 by 捣乱小子, 12527 阅读, 收藏, 编辑
摘要: 简介 redis 持久化 RDB、AOFredis 提供两种持久化方式:RDB 和 AOF。redis 允许两者结合,也允许两者同时关闭。RDB 可以定时备份内存中的数据集。服务器启动的时候,可以从 RDB 文件中回复数据集。AOF 可以记录服务器的所有写操作。在服务器重新启动的时候,会把所有的写操作重新执行一遍,从而实现数据备份。当写操作集过大(比原有的数据集还大),redis 会重写写操作集。本篇主要讲的是 RDB 持久化,了解 RDB 的数据保存结构和运作机制。redis 主要在 rdb.h 和 rdb.c 两个文件中实现 RDB 的操作。数据结构 rio持久化的 IO 操作在 rio. 阅读全文

深入剖析 redis 事件驱动

2014-03-09 15:28 by 捣乱小子, 11855 阅读, 收藏, 编辑
摘要: 概述redis 内部有一个小型的事件驱动,它和 libevent 网络库的事件驱动一样,都是依托 I/O 多路复用技术支撑起来的。利用 I/O 多路复用技术,监听感兴趣的文件 I/O 事件,例如读事件,写事件等,同时也要维护一个以文件描述符为主键,数据为某个预设函数的事件表,这里其实就是一个数组或者链表 。当事件触发时,比如某个文件描述符可读,系统会返回文件描述符值,用这个值在事件表中找到相应的数据项,从而实现回调。同样的,定时事件也是可以实现的,因为系统提供的 I/O 多路复用技术中的函数允许我们设定时间值。上面一段话比较综合,可能需要一些 linux 系统编程和网络编程的基础,但你会看到多 阅读全文

【译】Simple MySQL ORM for C

2013-03-22 12:54 by 捣乱小子, 2246 阅读, 收藏, 编辑
摘要: 原文链接:http://daoluan.net/blog/?p=1613一直不知道有ORM这种东西,直到和 @海坡 交流后才接触。在项目中,需要将数据存储到数据库中,首先想到的是生成各种raw SQL的解决方法。但随着项目的进展,发现它很不灵活。譬如可能因为有新的需求,在数据库student表中添加dept_no字段,那在各种raw SQ中就需要进行修改了,工程浩大。如果操作(插入\修改\删除)数据库表中的数据,和操作数据对象一样,可以简化很多的操作,便于数据层的变更,而不必修改逻辑层代码。//项目随手摘录的一个构造插入指定对象数据的INSERT语句的方法。int gtd_genInsertS 阅读全文

基于TCP的C/S初级网络编程2

2012-08-06 20:40 by 捣乱小子, 1492 阅读, 收藏, 编辑
摘要: 导读本篇文章对http://www.daoluan.net/blog/?p=774中的“计算器”进行改进,与大家分享。上面那篇中的服务端属重复型,即一个时刻只处理一客户的请求,处理期间不搭理其他客户。此篇对上篇的“计算器”进行小小的改进——能够接受多个客户的请求。改进细则:独立bind,listen,accept,serve(即calc过程)功能模块;所有错误成功提示提取至各功能模块(函数)之外,错误/成功根据各函数的返回值判断(这更符合UNIX编程风范);客户的服务过程由产生的子进程负责。缺陷:由子进程来负责serve的部分。服务器主进程(父进程)不负责等待子进程结束,资源由内核回收(这一要 阅读全文

基于TCP的C/S初级网络编程1

2012-08-02 21:29 by 捣乱小子, 2651 阅读, 收藏, 编辑
摘要: 导读本篇实现C/S架构的“计算器”,与大家分享。看了会网络编程,便不自觉YY了下:实现一个简单的计算器,客户端给出简单的运算,服务端负责运算。这一小项目做起来很有意思,而且难度不大,所以推荐初学者试着去做做。下面分享在实现上述“计算器”的过程。简单的基于tcp协议的 C/S编程都离不开这几个函数:服务端:socket,bind,listen,accept,recv,send客户端:socket,connect,recv,send因为“计算器”还设计涉及客户端的阻塞(因为客户端提交了运算要求过后,服务端可能要等会才能回送计算结果,这时要求客户端阻塞等候),所以涉及select函数。select函 阅读全文

Unix/Linux 那些系统启动后的进程

2012-07-13 14:47 by 捣乱小子, 2232 阅读, 收藏, 编辑
摘要: 闲扯什么时候开始有“UNIX/LINIX”这一词汇,我忘了?只知道它是一个操作系统,跟dos一个级别的?!也就停留在这个概念的层次上,所以很多对我来说都是迷。UNIX也走过了40多个年头的路程,而它的每一个组织不断得到改进;21世纪开源势头正猛,前进的步伐更快了!正文眼过千边,不如收过一遍!以下结论来自apue、互联网或者些许自己的理解,实践环境:Linux 2.6。当内核加载完成之后,会创建init进程,它是系统的第一个进程init。init进程ID为1,也因此它是之后所有进程的“祖宗”!init进程是系统进入了多用户的状态,允许多个终端设备登录(tty1,tty2...)。对于每一个终端设 阅读全文

简单的外壳(shell)

2012-02-23 22:23 by 捣乱小子, 3961 阅读, 收藏, 编辑
摘要: 写在前面的很多人在csdn上分享了自己的面试经验,其中笔试值得一提。公司笔试的题目有些比较基础但是又是比较核心的概念。就比如,什么是线程,什么是多线程,什么是进程,什么是多进程,线程和进程有什么区别!!这题目一上眼,脑子中一晃就一个印象:看过很多次了,但是就是说不明白他是什么东西了。线程是进程中的一个单一控制流;一个进程可能完成很大的任务,多线程即一个进程中有多个线程,每个线程完成不同的工作,这样就提高了程序运行的速度。进程是运行中的程序,它是与线程的区别是进程有独立的代码,数据和存储空间,但是线程可以共享数据空间,而每个线程有独立的执行堆栈和程序计数器。概念是很清楚的,非得理解并记住不可,不 阅读全文

linux下配置tftp服务器

2011-09-24 12:03 by 捣乱小子, 667 阅读, 收藏, 编辑
摘要: 这次tftp服务器配置是在red hat linux5版本下操作的,所以如果在其他版本的话,如果大家有发现的话,分享一下----->daoluanxiaozi@126.com1.在终端下进入root权限,首先看看有没有安装tftp服务器和客户端组件,验证命令:rpm -qa | grep tftp(看图)如果没有图中所显示的效果,那么你的主机上可能没有安装tftp组件,那么就要着手安装了,联网的话可以直接yum install tftp和yum install tftp-server;如果这个方法都没有成功的话,那就要到网上找找tftp的安装包了(最好是rpm格式的),在这里个大家推荐一 阅读全文