dataStructure->Stack

数据结构之堆栈

1
2
3
4
5
6
7
8
9
10
11
12
typedef struct dataStruct
{
elemType *LinkList;
elemType *Stack;
elemType *Queue;
elemType *String;
elemType *Array;
elemType *Tree;
elemType *Graph;
elemType *Indexing;
elemType *Sorting;
}* dataStructure;

堆栈定义

堆栈我在早年学习微机原理的时候就已接触过。在对寄存器操作的时候,为了避免某些指令对寄存器中原先的值产生影响,在执行指令前,要进行入栈push操作,会将某些寄存器的值push到内存中,执行指令之后,执行出栈pop操作,主要作用就是现场保护与现场恢复。

dataStructure->LinkList

数据结构之线性表

1
2
3
4
5
6
7
8
9
10
11
12
typedef struct dataStruct
{
elemType *LinkList;
elemType *Stack;
elemType *Queue;
elemType *String;
elemType *Array;
elemType *Tree;
elemType *Graph;
elemType *Indexing;
elemType *Sorting;
}* dataStructure;

线性表

线性表分为顺序表和链表,链表分为单链表、双链表、循环链表(单循环链表和双循环链表)。

顺序表

1
2
3
4
5
6
7
typedef struct
{
Elemtype *elem; //数组
int length; //当前表的长度
int listsize; //表的数组容量
int incrementsize; //表增容量
} SqList;

顺序表的存储单元是连续的,也就是在内存中,表的元素顺序摆放。过于简单了,随便康康定义就行了。

链表

在存储单元之中不连续,通过指针连接起来,像链条一样故称之为链表

几种排序算法

排序算法

1 冒泡(Bubble Sort)

图解

算法步骤

Linux下C语言的WAITPID函数的利用

进程与程序

进程是程序执行的过程,它是动态的。包括动态创建、调度、以及消亡。当用户在终端键入一个命令的时候,将启动一个进程。

eg:

1
vim

这个命令启动了一个vim进程,多个用户可以同时运行vim,但是程序只有一个,位于系统目录里的/usr/bin,每个用户的vim进程都是独立的。

温习一波GCC

GCC

GCC是GNU Compiler Collection的缩写,跨平台编译器集合。
支持C,C++,Java等语言。

C的编译

  1. 预处理
  2. 编译:生成汇编语言.s文件
  3. 汇编:生成目标代码.o文件
  4. 链接:生成可执行程序

用C++实现简单的ARP欺诈攻击

什么是ARP?

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

为什么它会很容易攻击?

地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,无论这个主机有没有REQUEST或是已经收到了REPLY,当再有REPLY来的时候,它都会记下这个REPLY中的信息,并更新自己的ARP缓存。同样,也只要是有主机发送ARP REQUEST,他就会记下这个信息,并更新自己的ARP缓存。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×