- 博客(6)
- 收藏
- 关注
原创 设计模式-观察者模式
Observer 模式应该可以说是应用最多、影响最广的模式之一,因为 Observer 的一个实例 Model/View/Control( MVC) 结构在系统开发架构设计中有着很重要的地位和意义, MVC实现了业务逻辑和表示层的解耦。今天就来简单实现以下观察者模式。我们首先来模拟一个场景,比如网上购物,现在有一款手机,价格会随着时间发生变化,如果顾客想要以较低的价格来购买,就需要不停去刷新页面,
2017-03-31 00:58:40 267
原创 LVS源码剖析-内核模块入口
首先思考一个问题,LVS的运行环境? 我们知道,应用层是运行在用户态的,但是如果想修改数据包,只有内核态的程序才可以。所以,问题就转移成如何写一个内核态的程序。 在这里,内核模块可以帮我们实现。 我们可以自己实现一个内核模块,让代码在内核态运行。 下面来看LVS的源码 在ip_vs_core.c这个文件中,首先看头文件我们可以看到里面有 module.h这个头文件,这就是写内核模块需要用到
2017-03-26 23:40:23 1465
原创 分布式系统中的一致性哈希 - c++实现
举个例子,在负载均衡中,需要在服务器列表中选择一个服务器。那么,如何选择呢? 我们可以round robin,即轮询策略,第一次把请求包分给1号服务器,第二次把请求包分给2号服务器。。。。。。这种策略比较简单,好理解,不过较为死板,没有考虑别的因素,是比较简单的均衡。 接下来,我们介绍一种比较好的策略–一致性哈希。一致性哈希理解起来并不困难,我们把服务器散列在一个圆环上,然后选择服务器的时候,从
2017-03-20 22:51:22 698
原创 LVS源码剖析-init
很早以前就准备开始写自己的技术博客,可惜迟迟没有动笔。今天就已LVS源码剖析来作为自己博客的开端吧。之前写过一个负载均衡器,不过有点过于简单,决定来研究一下LVS。首先去LVS官网下载了源码,然后用Source Insight 来阅读,还是很方便的。先简单介绍一下LVS的工作模式。 LVS提供了三种负载均衡模式,NAT、direct routing(DR)和tunnel。 NAT模式中,所有数据
2017-03-20 12:49:33 1068
原创 快速排序
快速排序的一个重点在于Partition过程 每次Partition之后找到基准该放的位置,之后递归调用Partition来对基准两边的数字进行划分。#include<stdio.h>#include<stdlib.h>#include<time.h>//交换数字位置void swap(int *a, int *b){ int tmp = *a; *a = *b;
2017-03-20 12:39:38 192
原创 IA32地址空间映射
环境:bochs2.11,linux0.11在main函数中定义一个临时变量 int tmp = 1; 然后打印其地址 这个时候得到的是其逻辑地址变量tmp存在于栈,所以先查找堆栈段寄存器 SS 共16位 高13位为编号(下标) 低前两位为权限(00为内核态,11为用户态) 低第三位(0代表使用GDT全局段描述符表,1代表使用LDT局部段描述符表) 在bochs中用dump_cpu查看
2017-03-20 00:03:57 398
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人