双点双向重分发

双点双向重分发用在一个含有RIP和OSPF的AS中,使不同的IGP拥有彼此的路由条目。

一般生产环境发生在,类似公司收购整合时的网络整合,等等。

在做双点双向重分发时会遇到各类问题,如重分发后路由条目类型,度量值。

关键是重分发后使边界路由器的路由表项正常,与精确选路。

非常详细的配置与GNS3模拟器的拓扑包括所有路由器的配置都在这里:

(更多…)

静态路由的高级应用

这一年以来,发生了许许多多的事情。一直静不下心去学习去写东西去做令自己满意的事情。

直到世界慢慢平静下来,上个月又过了CCNA的认证,同时也把将来的计划和学习方向规划得体后,决定继续向CCNP的进发。

首先先分享的是一个静态路由的高级应用,能实现精确选路和保证可用性。
(更多…)

如何向境外汇款

本文谨献给第一次往海外汇款又四处碰壁的菜鸟们。

最近由于某些原因需要往境外汇款,来回折腾好几次,交了些学费,也算是明白了。

先从汇款方式开始吧。本次我考虑过的共有三种:银行转账汇款;西联汇款;PayPal

1.银行转账汇款。由于原先手上只有工行的储蓄卡,于是在咨询客服后决定从网上银行直接付款到对方账户。首先要从网银购入你要汇的他国货币,就是购汇。购汇之后,通过网银上的向他国他行转账操作,填写表单即可,足不出户比较方便。工行目前的手续费是网银每笔100RMB(柜台是150RMB+千分之0.8

(更多…)

C语言笔记:两字符串比较

自写函数,实现字符串比较.若字符串中字符不同,则输出两者的ASCII码差值

#include 
int strcmp(char *p1,char *p2)
{
int i,h,j,k;
for (i=0;p1[i]!='\0' || p2[i]!='\0';i++)
{
	if (*(p1+i)!=*(p2+i))
	{
		h=(int)*(p1+i);
		j=(int)*(p2+i);
		k=h-j;
		return k;
	}
}
printf("The same word\n");
return 0;
}

int main()
{
	char s1[100],s2[100];
	int result;
	printf("Please input the first word:\n");
	gets(s1);
    printf("Please input the second word:\n");
	gets(s2);
	result=strcmp(s1,s2);
	printf("%d",result);
	return 0;
}

C语言笔记:定义结构体完成分数四则运算

#include 

typedef struct{				//定义“分数”结构体,num代表分子,denom分母
	int num;
	int denom;
}fraction;

fraction makeRat(int num, int denom);			//创建一个分数,num代表分子,denom代表分母
void Display(fraction r);						//显示一个分数

fraction add(fraction first, fraction second);	//分数的加
fraction sub(fraction first, fraction second);	//分数的减
fraction mul(fraction first, fraction second);	//分数的乘
fraction div(fraction first, fraction second);	//分数的除

fraction neg(fraction rat);						//求一个分数的相反数
fraction inv(fraction rat);						//求一个分数的倒数

int gcd(int a, int b);					//求两个数a和b最高公因数
int main(){
	fraction a,b,c,d;
	a = makeRat(1,2);
	b = makeRat(11,23);
	c = makeRat(5,6);
	d = makeRat(5,26);
	
	fraction result = div(add(a,b),sub(c,d));	
	Display(result);
	return 0;
}

fraction makeRat(int num, int denom){
	fraction rat;
	int i = gcd(num, denom);
	rat.num = num / i;
	rat.denom = denom / i;
	return rat;
}

void Display(fraction r){
	printf("%d / %d\n", r.num, r.denom);
}

fraction add(fraction first, fraction second){
	int num, denom;
	num = first.num * second.denom + first.denom * second.num;
	denom = first.denom * second.denom;
	return makeRat(num, denom);
}

fraction neg(fraction rat){
	return makeRat(-rat.num, rat.denom);
}

fraction sub(fraction first, fraction second){
	return add(first, neg(second));
}

fraction mul(fraction first, fraction second){
	int num, denom;
	num = first.num * second.num;
    denom = first.denom * second.denom;
    return makeRat(num, denom);
}

fraction inv(fraction rat){
	return makeRat(rat.denom, rat.num);
}

fraction div(fraction first, fraction second){
	return mul(first, inv(second));
}

int gcd(int a, int b){
	while(b != 0){
		int tmp = a % b;
		a = b;
		b = tmp;
	}
	return a;
}

C语言笔记:有关字符串替换

自写函数,使用数组,形式上使用指针.实现输入一个含有n个字符的字符串str1,再输入另一个含有m个字符的字符串str2,从str1中的某位开始替换为str2.

#include 
#include 
void copyx(char *x,char *y,int i);
int main()
{
	char str1[100],str2[100];         //[]里的数字足够大即可
	int l,i;
	printf("Please input the first word:\n");
	scanf("%s",str1);
	printf("Please input the second word:\n");
	scanf("%s",str2);
	l=strlen(str1);
	printf("Where do you want to insert the second word (From 1 to %d)\n",l);
	scanf("%d",&i);
	if (i<=0 || i>l)
	{
		printf("Wrong Number!\n");
		return 0;
	}
	copyx(str1,str2,i);
	printf("%s",str1);
	return 0;
}

void copyx(char *x,char *y,int n)
{
    int j;
    for (j=0;y[j]!='\0';j++)
	{
	  *(x+n+j)=*(y+j);
        }
    *(x+n+j)='\0';
}