- 博客(54)
- 收藏
- 关注
原创 Linux 解压命令
tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出下面的参数-f是必...
2020-03-27 09:57:14
930
转载 HTB
HTB,HTB是Hierarchy Token Bucket的缩写。通过在实践基础上的改进,它实现了一个丰富的连接共享类别体系。使用HTB可以很容易地保证每个类别的带宽,虽然它也允许特定的类可以突破带宽上限,占用别的类的带宽。HTB可以通过TBF(Token Bucket Filter)实现带宽限制,也能够划分类别的优先级。HTB(Hierarchical Token Bucket)分层...
2019-07-05 15:18:24
1301
转载 PRIO
PRIO,PRIO QDisc不能限制带宽,因为属于不同类别的数据包是顺序离队的。使用PRIOQDisc可以很容易对流量进行优先级管理,只有属于高优先级类别的数据包全部发送完毕,才会发送属于低优先级类别的数据包。为了方便管理,需要使用iptables或者ipchains处理数据包的服务类型(Type Of Service,ToS)。PRIO分类优先算法(从左至右优先发包),队列规定并不...
2019-07-05 15:17:17
983
转载 CBQ
CBQ,CBQ是Class Based Queueing(基于类别排队)的缩写。它实现了一个丰富的连接共享类别结构,既有限制(shaping)带宽的能力,也具有带宽优先级管理的能力。带宽限制是通过计算连接的空闲时间完成的。空闲时间的计算标准是数据包离队事件的频率和下层连接(数据链路层)的带宽。CBQ的工作机制是确认链路的闲置时间足够长,以达到降低链路实际带宽的目的.为此,它要计算两个数...
2019-07-05 15:16:03
4249
转载 TC实现带宽分配
1:为网卡分配队列2:在该队列上建立分类3:根据需要建立子队列和子分类4:为每个分类建立过滤器创建队列:#tc qdisc add dev eth0 root handle 1: htd default 11dev eth0:要操作的网卡为eth0root:为网卡eth0添加的是一个根队列handle 1: :队列的句柄为1:htb:添加的队列为HTB队列default 11:...
2019-07-05 15:13:50
1356
原创 进程间通信——无名管道
管道int main(){ int pipefd[2]; // 0 读端 1 写端 int ret = pipe(pipefd); if (-1 == ret) { perror("创建管道失败\n"); return -1; } write(pipefd[1], "hello", 6); while (1) { char buf[1...
2018-12-29 10:18:57
171
原创 进程
getpid : 获取当前进程idgetppid :获取当前进程父进程的idinclude <stdio.h>#include <sys/types.h>#include <unistd.h>int main(){ printf ("当前进程id: %d\n", getpid()); printf ("父进程 id: %d\n", ...
2018-12-28 09:51:03
174
原创 多线程卖票系统
#include <stdio.h>#include <time.h>#include <semaphore.h>int ticket = 100;sem_t sem;void *sellticket(void *v){ long num = (long)v; srand((unsigned int)time(NULL)); whi...
2018-12-27 11:51:31
185
原创 文件操作--系统调用: dup. lseek
dup#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <string.h>int main1(){ int fd = open("test...
2018-12-25 11:44:04
187
原创 文件操作--系统调用 open/read/write
打开文件 open#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>int main1(){ // 第一个参数:要打开的文件名 // 第二个参数:打开方式 int fd ...
2018-12-24 10:15:30
598
原创 快速排序
#include <stdio.h>void mySwap(int *a, int i, int j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}void myPrint(int *a, int len){ int i; for (i = 0; i < len; i++) { printf ("%4d", a...
2018-12-22 20:21:03
213
原创 堆排序、归并排序
堆排序#include <stdio.h>void mySwap(int *a , int i , int j) //½«Á½Êý½»»»{ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;} //调整堆void heapify(int *a , int index , int len) { int lindex...
2018-12-22 09:18:01
158
原创 二分插入排序、希尔排序
二分插入排序#include <stdio.h>void mySwap(int *a , int i , int j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp;} void mySort(int *a , int len){ int i ; for(i = 1 ; i < len ; i++)...
2018-12-20 19:28:10
175
原创 选择排序、插入排序
选择排序#include <stdio.h>void mySwap(int *a, int i, int j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}void myPrint(int *a, int len){ int i; for (i = 0; i < len; i++) { printf ("%...
2018-12-19 19:49:48
115
原创 冒泡排序以及双向冒泡排序
冒泡排序#include <stdio.h>void mySwap(int *a , int i , int j) //交换函数{ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;} void mySort(int *a , int len){ int i,j; for(i = 0 ; i < len-1 ;...
2018-12-18 20:52:45
203
原创 非递归实现二叉树的前序、中序和顺序遍历
void pre_order(BTreeNode *root){ if (root == NULL) return; printf ("%4c", root->data); pre_order (root->lchild); pre_order (root->rchild);}// 非递归方式实现前序遍历void pre1(BTreeNode *roo...
2018-12-17 21:21:34
171
原创 多重运算计算器
头文件#ifndef _STACK_H_#define _STACK_H_#define SIZE 10typedef enum {FALSE = 0 , TRUE} BOOL;typedef int Data;typedef struct _node{ Data data; struct _node *next;}Node;typedef struct sta...
2018-12-16 21:43:59
613
原创 顺序队列
头文件#ifndef _QUEUE_H_#define _QUEUE_H_#define SIZE 10typedef enum {FALSE = 0 , TRUE} BOOL;typedef int Data;typedef struct queue{ Data data[SIZE]; int front; //队头指针 int rear; ...
2018-12-15 18:57:34
218
1
原创 链式队列
头文件#ifndef _QUEUE_H_#define _QUEUE_H_#define SIZE 10typedef enum {FALSE = 0 , TRUE} BOOL;typedef int Data;typedef struct _node{ Data data; struct _node *next;}Node;typedef struct que...
2018-12-14 21:29:08
134
原创 链式栈
头文件#ifndef _STACK_H_#define _STACK_H_#define SIZE 10typedef enum {FALSE = 0 , TRUE} BOOL;typedef int Data;typedef struct _node{ Data data; struct _node *next;}Node;typedef struct sta...
2018-12-13 19:42:23
101
原创 顺序栈
头文件#ifndef _STACK_H_#define _STACK_H_#define SIZE 10typedef enum {FALSE = 0 , TRUE} BOOL;typedef int Data;typedef struct stack{ Data data[SIZE]; int top;}Stack;//初始化栈void Init(Stack...
2018-12-12 21:15:08
155
原创 双向链表
头文件#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef enum {TRUE , FALSE , ERROR} BOOL;typedef int Data;typedef struct _node{ Data data; //数据域 struct _node *pre;//指针域 struct _node ...
2018-12-11 19:47:59
94
原创 单向循环链表
#include "Linklist.h"#include <stdlib.h>#include <stdio.h>//创建链表List *CreateList(){ //给List(头结点)分配空间 List *ls = (List *)malloc(sizeof(List)/sizeof(char)); if (NULL == ls) retu...
2018-12-10 19:09:23
106
原创 链表功能函数
#include "LinkList.h"#include <stdlib.h>#include <stdio.h>List *CreateList(){ List *ls = (List*)malloc(sizeof(List)/sizeof(char)); if (NULL == ls) return NULL; // 创建头结点 ls-&g...
2018-12-09 21:39:19
310
原创 链表头文件
#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef enum {TRUE , FALSE , ERROR} BOOL;typedef int Data;typedef struct _node{ Data data; //数据域 struct _node *next;//指针域}Node;typedef st...
2018-12-09 21:38:02
2788
原创 顺序表函数
#include "Seq.h"#include <stdlib.h>#include <stdio.h>//创建顺序表Seq* Create(){ Seq *s = (Seq*)malloc(sizeof(Seq)/sizeof(char)); if (NULL == s) return NULL; // 给顺序表分配空间 s->pDat...
2018-12-07 20:11:25
644
原创 顺序表头文件
#ifndef _SEQ_H_#define _SEQ_H_#define INIT_SIZE 10#define ADD_SIZE 5typedef enum {TRUE, FALSE, ERROR} BOOL;typedef int Data;typedef struct _seq{ Data *pData; // 顺序表的存储空间 int maxSiz...
2018-12-06 14:24:16
1706
原创 小结1
void真正发挥的作用在于:对函数返回的限定;对函数参数的限定。float *p1;int *p2;p1 = p2;其中p1 = p2语句会编译出错,提示“ ‘=’:cannot convert from 'int *' to 'float *' ",需要改为:p1 = (float *)p2;然而void *则不同,任何类型的指针都可以直接赋值给它,无需进行强制类型转换:...
2018-12-05 20:22:17
181
原创 动态库
1、将要作为动态库的文件做成目标文件文件(.o)注意和生成普通目标文件的区别gcc -c xxx.c -o xxx.o -fPIC 2、将目标文件编译成动态库,后缀名是 .sogcc -shared -o lib库名.so xxx.o 3、编译的时候需要把动态库加上 gcc src/main.c -L./lib -lmylib -o...
2018-12-04 21:06:45
104
原创 静态库
静态库 静态库 要被包含到源程序中的库 优点 运行速度快 缺点 占用系统资源比较多 使用的场合 对时间要求很高的场合 静态库的制作:1、把所有的源程序(.c文件)制作成目标文件(.o 文件)gcc...
2018-12-04 09:47:06
166
原创 关键字 typedef
typedef 给类型重命名typedef char INT8;typedef short INT16; typedef int INT32;typedef long INT64; typedef unsigned char UINT8; typedef unsigned short UINT16; typedef unsigned int UINT32;type...
2018-12-03 09:20:34
140
原创 关键字 const
const修饰变量,将变量变成只读属性 ==> 不能通过修饰变量名改变变量空间的值const 只是不能通过修饰的变量改变空间的值,不代表空间的值不能改变修饰指针 , 看const修饰的对象:将变量类型去掉,和谁最近就是修饰的谁 const int *p1 = &a; 修饰*,不能通过*改变指向的空间的值,可以理解为 *p1 不能变...
2018-12-03 09:12:30
167
原创 关键字
extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。static1、修饰局部变量 可以延长局部变量的生命周期,直到程序结束才会被释放2、修饰全局变量 只能在本文件使用,其他文件不可用3、修饰函数 只能在本文件使用,其他文件不可用 ...
2018-12-03 09:05:12
68
原创 复合数据类型
结构体 struct#include <stdio.h>// 结构体struct Student1{ int id; char name[20];}s4 = {2, "小红"};// 无名结构体struct { int id; char name[20];}s2,s3;int main(){ // 定义变量 struct Student1...
2018-11-30 19:36:27
132
原创 通讯录项目
#include <stdio.h>#include <string.h>#define N 10#define FIND 0#define NFIND 1enum {ID = 1, NAME, TEL};enum {QUIT, ADD, DISPLAY, DELETE, SELECT, CHANGE, SORT};struct Data{...
2018-11-29 20:57:06
361
原创 贪吃蛇
// gcc snake.c -lpthread#include <stdio.h>#include <stdlib.h>#include <time.h>#include <signal.h>#include <termios.h>#include <stdio.h>#include <stdlib.h...
2018-11-29 20:43:52
135
原创 1到100相加
1到100相加三种方式#include <stdio.h> int main(){ int i; int sum = 0; for (i = 1; i <= 100; i++) { sum += i; } printf ("%d\n",sum); return 0;} int fun1(int n){ if (n == 1) ret...
2018-11-29 08:57:48
1614
原创 查找两个字符串的最大公共子串
暴力求解法int main() { char *str1 = "aocdfe"; char *str2 = "aadapmcdfa"; int longest = 0; int i,j; int start = 0; for (i = 0; i < strlen(str1); i++) { for (j = 0; j < strlen(str2);...
2018-11-27 16:11:07
385
原创 上三角数组
方阵的主对角线之上称为“上三角”。请你设计一个用于填充n阶方阵的上三角区域的程序。填充规则是:使用1,2,3...的自然数列,从左上角开始,按照顺时针方向螺旋填充。例如:当n=3时,输出:1 2 36 45当n=4时,输出:1 2 3 49 10 58 67当n=5时,输出:1 2 3 4 512 13 14 611 15 710 89程序运行时,要求用户输入整数...
2018-11-26 18:44:35
1416
原创 猜数游戏
#include <stdio.h>#include <stdlib.h> #include <time.h>void Guess(int );int main(){ srand((unsigned int)time(NULL)); int num = rand()%100+1; Guess(num); return 0;...
2018-11-25 20:52:34
176
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人