自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

转载 双向链表的插入及删除图解

双向链表的插入第一步:首先找到插入位置,节点 s 将插入到节点 p 之前 第二步:将节点 s 的前驱指向节点 p 的前驱,即 s->prior = p->prior; 第三步:将节点 p 的前驱的后继指向节点 s 即 p->prior->next = s; 第四步:将节点 s 的后继指向节点 p 即 s->next = p; 第五步:将节点 p 的前驱指向节点 s

2018-01-31 14:20:43 12113 5

转载 localtime 和 localtime_r

上程序:[c-sharp] view plaincopy#include  #include  #include  #include   using namespace std;  int main(int argc,char *argv[]) {     time_t tNow =time(NULL); 

2018-01-31 10:53:45 658

转载 linux内核源码之基础准备篇

在工作的这段时间,发现我的visio画图熟悉了点点,总喜欢把什么源码啊,结构啊之类的就当作流程图来画来理解,因为对于图,有一个很直观的认识,所以接下去也是以图为中心。 关于linux内核体系结构       说到操作系统,我们都会知道windows操作系统,linux操作系统,苹果的ios操作系统,以前很火的塞班操作系统,还有最近消费类电子很火的android操作系统。一个

2018-01-31 10:21:11 152

转载 time(), time_t, localtime(), localtime_r()的理解和用法

time_t的定义:[objc] view plain copytypedef __darwin_time_t time_t;   [objc] view plain copytypedef long    __darwin_time_t;    /* time() */  

2018-01-26 13:43:47 1170

转载 IP数据报中分片标志值

如果IP数据报不分片,分片标志DF(Don’t Fragment)会被设置为1。分片标志MF(More Fragment)设置为0。下面是详细解释:1:首先来一张IP数据报的报文头部结构。 2:需要注意第二行数据,有这么三个字段序列号:开始发送数据时由发送方生成。标识发送方发送的每一个数据报,如果发送的数据报未发生分片,则此值依次加1,如果发生了分片,分片后的各

2018-01-25 15:31:05 12799 2

转载 gets和fgets函数的区别

1. gets与fgets  gets函数原型:char*gets(char*buffer);//读取字符到数组:gets(str);str为数组名。  gets函数功能:从键盘上输入字符,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。         读取的换行符被转换为null值,做为字符数组的最后一个字符,来结束字符串。

2018-01-24 15:01:26 607

原创 三层交换原理图解

(一)大家常常听到的“一次路由,多次交换”,可以简单的理解为:在完成对收到的第一个新数据流进行路由后,产生一个MAC地址与IP地址的映射表,当具有相同地址信息的数据流再次通过时,即根据此表直接在二层完成转发。(二)下面以一个例子,解释三层交换机的转发原理。如图1所示,该组网内,通信的源主机、目的主机连接在同一台三层交换机上,但它们位于不同VLAN(网段)。

2018-01-23 17:32:10 4332

转载 BCM 芯片SDK初始化

SDK初始化前,需要对SDK的架构有所了解,具体如下图;可以看出SDK的代码结构是一个层次化分明的架构,这里对各层的作用和详细工作机制不阐述了,具体可以参见SDK的介绍文档。                                SDK代码的结构图 SDK根据上述架构,BCM模式启动的时候进行的初始化包括以下几个步骤:1.      根据操作系统(linux、vxworks

2018-01-23 17:22:46 3005

转载 MPLS调试笔记之FP用法

ACL mask 和data的位置关系fp initfp data create OffsetBase=PacketStart offset=19 length=2fp data format add QualId=1 RelativeOffset=0 L2=any VlanTag=any OuterIp=any InnerIp=any Tunnel=any mpls=an

2018-01-23 13:42:37 1334

转载 BCM芯片FP原理及相关SDK数据结构介绍

BCM芯片有几个大的模块: VLAN、L2、L3和FP等几个,其中FP的使用也最为灵活,能解析匹配数据包文的前128字节比特级的内容,动作包括转发、丢弃、结合qos修改相应字段、分配vid、流镜像、流重定向、指定端口转发(比如CPU口)、指定下一跳转发往、指定隧道转发等,往往在实现功能上有意想不到的功效。简单来说,如果硬件和BSP分别是九阳真经和九阴真经的话,那么port和vlan是少林七十二项绝

2018-01-23 13:40:31 3276

转载 BCM ESW芯片和Marvell CAT芯片的比较

我曾经分别对BCM的ESW系列芯片和Marvell的XCAT芯片有一段时间的开发经历,这两块芯片在共同支持的功能上没有什么大的不同,但是在硬件实现上有着很大的区别,现在我跟进个人感受总结他们的不同,希望对大家这两家的认识有所启发。Marvell芯片系列分类有意思,如cat、tiger、puma、Lion等,都是用动物来命名的,可能将来会出现elephant、dragon之类的名称,每个系列又有若干

2018-01-19 15:19:10 1510 1

原创 bcm芯片灯

bcm芯片的交换芯片点灯,需要把asm汇编代码转换成二进制数组下到程序里。1)需要编码汇编程序asm,可以参考交换芯片的一系列类型的asm文件。2)把tools文件夹里的ledasm.c和ledasm.h编译成可执行文件,用gcc -o ledasm.exe ledasm.c3)在tools目录下执行./ledasm.exe  xxx.asm(确保可执行文件和xxx.asm在同一目录下)

2018-01-19 15:13:53 1084

转载 BCM交换芯片策略路由功能

BCM交换芯片中和路由相关的几个寄存器 EGR_L3_NEXT_HOP、EGR_L3_INTF、ING_L3_NEXT_HOPBCM XGS系列SDK中和路由相关的几个命令l3 l3table、 l3 defip 、 l3 intf其中l3 intf命令配置了EGR_L3_INTF寄存器, 本质上是配置了3层转发接口 也就是我们常说的vlanif接口。l3 l3table命令和l3 defip命令

2018-01-19 14:56:45 1950 2

转载 Linux中将c文件编译成可执行文件的方法

c文件:project.c方法一//预编译,生成已编译通过的C原始程序 *.i gcc -E project.c -o project.i//编译,生成汇编语言原始程序 *.s gcc -S project.i -o project.s//链接,生成可执行程序 gcc -o project.exe project.s方法二//编译 gcc -c project.c -o project.o//链接

2018-01-19 14:26:53 2244

转载 C语言itoa()函数和atoi()函数详解(整数转字符C实现)

C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。1.int/float to string/array:C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。● itoa():将整型值转换为字符串。● ltoa():将长整型值转换为字符串。● ultoa():将无符号长整型值转换为字符串。●

2018-01-18 16:21:49 268

转载 c中给字符数组,字符串指针赋值的方法总结

在写程序的时候,总是搞混,现在总结一下以免以后再犯 char a[10];怎么给这个数组赋值呢?谭浩强的书上明确指出,字符数组可以在定义时整体赋值,不能再赋值语句中整体赋值。1、定义的时候直接用字符串赋值char a[10]="hello";注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!2、对数组中字符逐个赋值char

2018-01-12 10:22:48 33317 8

原创 c语言中关于字符串的那些事儿(字符数组和字符指针)

在说字符串常量之前,先要区分一下地址常量与地址变量的区别:数据存储的空间中的数据可以被修改,这个空间称为变量,如果空间中的数据不能被修改,这个空间称为常量。地址常量就是地址不能被修改,就像一维数组中的数组名,是一个指针常量,不可被运算和不可被改变。地址变量就是地址能修改,就像一级指针,是一个指针变量,可以通过移动下标或移动指针来改变。 在C中定义字符串有下列几种形式:字符串常量,char数

2018-01-12 10:12:05 368

转载 组播基本概念、IGMP、IGMP监听学习笔记(续)

交换机组播地址表的学习和维护(IGMP监听过程)(假设当前只有一个VLAN)1、当组播路由器发出IGMP通用查询报文然后收到主机回应的IGMP报告报文时,交换机会把收到回应的端口和对应的组播地址学习到组播地址表中(其实只要是IGMP报告报文,都会学习,不管有没有事先查询)。如下图所示:2、当主机发出IGMP离开报文时,组播路由器会发送IGMP特定组查询报文。如果该端口在一定

2018-01-11 15:29:16 1444

转载 组播基本概念、IGMP、IGMP监听学习笔记

为什么需要组播简单来说,就是因为在一些诸如视频点播的应用时,单播对主机的压力太大、而广播又对网络链路的压力太大。所以……组播IP地址224.0.0.0~239.255.255.255 所有组播地址224.0.0.0~224.0.0.255 有特殊用途的组播地址(不能被路由)224.0.0.1 同一网段所有主机224.0.0.2 同一网段所有组播路由器

2018-01-11 15:21:30 18252

转载 IGMP snooping和IGMP proxy的区别

谈到IGMP snooping,又难免会想到IGMP proxy,有的时候多想像,多思考一下或许有更深的体会哦.那他们之间的区别是什么呢,先来看下面这个图,l2 switch开启了IGMP snooping,router1是一个远程multicast router,用PIM协议来转发组播包.  开启IGMP snooping的作用是侦听IGMP router 和IGMP c

2018-01-11 14:13:05 18928

原创 交换机端口加入VLAN的三种模式(access,trunk,hybrid)

untag就是普通的ethernet报文,普通PC机的网卡是可以识别这样的报文进行通讯;tag报文结构的变化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag头;一般来说这样的报文普通PC机的网卡是不能识别的。带802.1Q的帧是在标准以太网帧上插入了4个字节的标识。其中包含:2个字节的协议标识符(TPID),当前置0x8

2018-01-05 13:32:14 15314

原创 交换机的三种转发模式

交换机有三种转发模式:1)直通式转发是指交换机在收到数据帧后,不进行缓存和校验,而是直接转发到目的端口。2)存储式转发交换机首先在缓冲区存储接收到的整个数据帧,然后进行CRC校验,检查数据帧是否正确,如果正确,再进行转发。如果不正确,则丢弃。3)碎片隔离式转发交换机在接收数据帧时,会先缓存数据帧的前64个字节,确保数据帧大于64个字节,再进行转发。

2018-01-05 13:25:42 35339

gcc和g++简介

Linux 中最重要的软件开发工具是 GCC。GCC 是 GNU 的 C 和 C++ 编译器。实际上,GCC 能够编译三种语言:C、C++ 和 Object C(C 语言的一种面向对象扩展)。利用 gcc 命令可同时编译并连接 C 和 C++ 源程序。

2019-01-31

空空如也

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

TA关注的人

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