自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 Shell脚本编程

脚本:本质是一个文件,文件里面存放的是特定格式的指令,系统可以使用脚本解析器,翻译或解析指令并执行解释型:需要解释器,效率低编译型:需要编译链接生成可执行程序,效率高为什么使用shell编程使用shell进行程序设计的原因之一是,你可以快速、简单地完成编程。脚本标量的特殊用法"" (双引号):包含的变量会被解释’’(单引号):包含的变量会当做字符串解释``(反引号):反引号中的内容作为系统命令,并执行其内容,可以替换输出为一个变量1、变量定义变量:变量名=变量值例如:num=10 (

2021-10-17 14:23:46 250

原创 守护进程编程流程

守护进程(精灵进程):系统中的后台进程,周期性的执行某些任务,或者等待某个事件的发生,不会随用户的注销而退出。特点:1、后台服务进程,不会显示在终端,除了关机和kill,守护进程是不会死的。2、 独立于控制终端3、周期性执行某任务4、不受用户登录注销影响5、守护进程一般采用以d结尾的名字(服务)进程组的ID==进程组的组长的ID会话:由多个进程组组成1.创建一个会话注意事项不能是进程组长(不能让一个pid标识两个进程)创建会话的进程称为新进程组的组长创建出的新会话会丢弃原有的控制终端

2021-09-16 23:31:12 217 1

原创 函数指针与指针函数

指针函数: 就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。声明格式为:类型标识符* 函数名(参数表)例如:int* fun(int x,int y);函数指针: 本质是一个指针变量,该指针指向这个函数声明格式为:类型说明符(*函数名)(参数)例如:int (*fun)(int x,int y);函数指针是需要把一个函数的地址赋值给它,有两种写法:fun = &max;fun = max;取地址符&不是必需的,因为一个函数标识符就表示了它的地址,如果

2021-09-16 13:54:56 128

原创 信号及实现

信号:通知进程产生了某个事件。信号的名称是在头文件signal.h中定义的。它们以SIG开头。信号名称说明SIGABORT进程异常终止SIGALRM超时警告SIGFPE浮点运算异常SIGHUP连接挂断SIGILL非法指令SIGINT终端中断SIGKILL终止进程(此进程不能被捕获或忽略)SIGPIPE向无读进程的管道写数据SIGQUIT终端退出SIGSEGV无效内存段访问SIGTERM终止SIGU

2021-09-14 21:51:35 85

原创 http协议,https协议归纳总结

http协议: http(超文本传输协议)协议是一种通讯协议,是指计算机网络中两台计算机之间进行通信所必须遵守的规定或规则,它允许将超文本标记语言文档从Web服务器传送到客户端,是互联网上应用最为广泛的一种网络协议。HTTP协议是不保存状态的协议,即HTTP是无状态协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说,HTTP协议对于发送过来的请求或响应都不做持久化处理。无状态优点:1.更快的处理大量事务,确保协议的可伸缩性。2.由于不必保存状态,这就可以减少服务器的CPU及其内存资源

2021-09-14 21:50:31 251

原创 三次握手和四次挥手以及TCP状态转移图

1.三次握手与四次挥手使用tcpdump观察TCP头部信息我们可以利用tcpdump抓取了一个数据包并分析了其中的IP头部信息,也可以用来分析其中的TCP协议相关的部分。sudo tcpdump -i eth0 -nt ‘(src 源地址 and dst目的地址) or(src 目的地址 and dst 源地址)’TCP三次握手过程的状态变迁CLOSED:起始点,在超时或者连接关闭时候进入此状态,这并不是一个真正的状态,而是这个状态图的假想起点和终点。LISTEN:服务器端等待连接的状态。

2021-09-14 17:13:09 219

原创 TCP与UDP编程以及它们的区别

网络网络是由若干结点和连接这些结点的链路组成,网络中的结点可以是计算机、交换机、路由器等设备。网络设备有:交换机、路由器、集线器传输介质有:双绞线、同轴电缆、光纤互联网把多个网络连接起来就构成了互联网。目前最大的互联网就是我们常说的因特网。IP地址(在网络中唯一标识一台主机)IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配的一个在全世界范围唯一的标识符。IP地址因其特殊的结构是我们可以在因特网上很方便地进行寻址。每个IP地址由网络号和主机号构成。(网络号+主机号一共32位)I

2021-09-13 21:08:37 291

原创 关于fork

pid_t fork(void)函数返回类型pid_t实质是int类型,fork函数会生成一个进程,调用fork函数的进程为父进程,新生成的进程为子进程,在父进程中返回子进程的pid,在子进程中成功返回0,失败返回-1。僵死进程:子进程先于父进程结束,父进程没有调用wait获取子进程的退出码,此时子进程变成僵死进程。解决将死进程:调用wait孤儿进程:父进程先于子进程结束。此时子进程的父进程的pid为1,被init进程收养。获取进程pid:getpid();获取进程的父进程的pid:getppi

2021-09-13 15:23:52 45

原创 关于cmake与make

make为了批处理源文件,于是产生了make编译工具,但是进行makefile文件的编写cmake为了方便makefile的编写,于是产生了cmake编译工具,但要进行CMakeLists文件的编写,于是一个过程中我们需要编写CMakeLists文件进行cmake编译,生成一个makefile文件,然后通过make编译,使用makefile生成一个可执行文件。在我们写程序时,有时候源文件太多,一个一个编译时就会特别麻烦,于是人们设计了一种类似批处理的程序,用来批处理编译源文件,于是就有了make工具

2021-09-13 10:26:39 425

原创 静态库与共享库制作,以及它们之间的区别

库:预先编译好的方法的集合一、静态库这类库的名字一般是libxxx.a,利用静态函数库编译成的文件比较大,因为整个函数库的数据都会被整合进目标代码中,它的优点是编译后的执行程序不需要外部的函数库的支持,因为所有使用的函数都已经被编译进去了。当然这也会成为它的缺点,如果静态函数库改变了,程序就必须重新编译。静态库的创建:ar crv libxxx.a xxx.o…二、共享库这类库的名字一般是libxxx.so,相对于静态函数库,共享函数库在编译的时候并没有被编译进目标代码中,程序执行到相关函数时才调

2021-09-13 08:55:31 269

原创 顺序队列与链式队列

队列:先进后出的一种线性结构,入队的一端称为队尾,出队的一端称为队头顺序队列一定会设计成环形队列,原因是线性队列的入队为O(1),出队为O(n);环形队列的入队为O(1),出队为O(1)判满:尾指针再走一步就到头指针;浪费一个空间不使用,主要是区分空和满的情况顺序队列实现#include<stdio.h>#include<stdlib.h>#include<assert.h>#define SIZE 10typedef struct{ int* bas

2021-04-27 22:47:25 321

原创 顺序栈与链式栈

顺序栈实现#include<stdio.h>#include<stdlib.h>#include<assert.h>#define INIT_SIZE 10typedef struct Stack{ int* base;//指向动态内存 int stackSize;//栈的总大小 int top;//栈顶指针,实际为下标}Stack,*PStack;//初始化void InitStack(PStack ps){ assert(ps!=NULL)

2021-04-27 22:43:47 54

原创 双向链表

带头节点的双向链表,不循环,尾节点的后继为空,头节点的前驱为空#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef struct DNode{ int data; struct DNode* next;//后继指针 struct DNode* prio;//前驱指针}DNode,*DList;//初始化void InitList(DList plist){ assert(plis

2021-04-27 22:38:13 59

原创 循环链表

循环链表:尾部节点的next指向头节点,形成一个环形C语言实现#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef struct CNode{ int data; struct CNode* next;}CNode,*CList;//初始化void InitList(CList plist){ assert(plist != NULL); if (plist == NULL)

2021-04-27 22:36:16 48

原创 类中的默认函数

构造函数初始化对象所占的空间构造函数可以重载,但不可认为调用含有this指针析构函数释放对象所占的其他资源析构函数不能重载,但是可以认为调用有this指针拷贝构造函数用一个已存在的对象生成相同类型的新对象默认的拷贝构造函数是浅拷贝拷贝函数的形参一定要是引用(防止递归拷贝构造)赋值运算符的重载函数用一个已存在的对象赋给相同类型的已存在对象步骤:1.判断是否是赋值2.释放旧资源3.开辟新资源4.赋值...

2021-03-29 18:42:24 49

原创 顺序表

C语言实现顺序表#include<stdio.h>#include<stdlib.h>#include<assert.h>#define NUM 10typedef struct SQList{ int *elem;//动态内存的地址 int length;//有效数据长度 int listsize;//总容量}SQList,*PSQList;//初始化void InitSqList(PSQList ps){ assert(ps!=NULL);

2021-03-29 12:14:16 58

原创 单链表

C语言实现单链表#include<stdio.h>#include<assert.h>#include<stdlib.h>typedef int Elemtype;typedef struct Node{ Elemtype data; struct Node *next;}Node,*pList;void init(pList phead){ assert(phead != NULL); if(phead == NULL) return ;

2021-03-28 19:20:18 122 2

原创 堆和栈

在不同的场景下,堆和栈代表不同的含义。一般情况下,有两层含义:1、程序内存布局情况下,栈和堆表示两种内存管理方式; 2、数据结构场景下,堆和栈表示两种常用的数据结构。1.程序内存分区中的堆和栈栈简介:栈由操作系统自动分配释放,用于存放函数的函数值、局部变量等,其操作方式类似于数据结构中的栈。堆简介:堆由开发人员分配和释放,若开发人员不释放,程序结束时由OS回收,分配方式类似于链表。堆和栈的区别:(1)管理方式不同。栈由操作系统自动分配释放,无需我们手动控制;堆的申请和释放由程序员控制,容易产生内存

2021-03-26 22:49:55 213 1

原创 new关键字的用法

在C语言中开辟空间用malloc,释放用free。malloc函数原型:void *malloc(int size);功能:分配长度为size字节的内存块。在C++中开开辟空间用new关键字,释放用delete关键字。new和malloc的区别1.new是关键字而malloc是函数2.new返回值安全,malloc返回值不安全(半包含)new操作符分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操作符。而malloc内存分配成功则是返回vo

2021-03-26 18:52:15 1871

原创 函数重载

函数重载的作用:重载函数通常用来在同一个作用域内,用同一个函数名,命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,提高了程序的可读性。**C语言:**同名函数不能重载(函数符号生成规则之和函数名有关)**C++:**同名函数可以重载(生成规则是函数原型)函数原型 :返回值 + 函数名 + 形参列表函数重载只与形参列表有关函数重载的三要素:同名、不同参(顺序、个数、类型)、同作用域。...

2021-03-26 11:45:52 84

原创 编译链接运行原理

虚拟地址空间分布:编译链接运行全过程分为:预编译、编译、汇编、链接、运行五个步骤。一、预编译阶段:处理源代码里面以“#”开始的预编译指令,(1.删除#define 文本替换 2.处理#include 进行递归展开 3.处理#if #end if等预编译指令)但是不处理 #pragma,删除注释,添加行号和文件标识。 生成 .i 文件。二、编译阶段:在预编译完成的基础上进行词法分析、语法分析、语义分析和代码优化生成相应的汇编指令。生成 .s 文件。三、汇编阶段:汇编器将汇编代码转变成机器可以执行的指

2021-03-25 21:58:46 414

原创 管道

mkfifo:创建一个管道文件打开管道:必须有两个进程分别以读和写的方式打开open()才能通过打开方式:只读、只写写端关闭,读端返回值为0读端关闭,写端write写入数据会出错有名管道与无名管道的区别:无名管道只能在父子进程之间通信,有名管道可以在任意两个进程间通信写端读端无名管道:...

2020-08-21 14:08:37 90

原创 循环赛日程表

设计一个满足以下要求的日程表:1.每个选手必须与其他n-1个选手各赛一次;2.每个选手一天只能赛一次;3.循环赛一共进行n-1天。#include<stdio.h>#include<stdlib.h>#include <math.h>void Table(int k,int n,int **a);void input(int &k);void output(int **a,int n);int main(){ int k; input

2020-06-06 23:07:38 261

原创 棋盘覆盖-分治法

问题描述;用L型骨牌覆盖给定棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。#include<stdio.h>int board[100][100];int title=1;void ChessBoard(int tr,int tc,int dr,int dc,int size){//tr和tc是棋盘左上角的下标,dr和dc是特殊方格的下标,size是棋盘大小 if(size==1) return; int t=title++;//L型骨牌 int s=siz

2020-06-06 16:35:05 156

原创 八大基础排序

#include<stdio.h>#include<string.h>#include<stdlib.h>void InsertSort(int arr[],int len){ int i=1; int j=i-1; int tmp; for(i;i<len;i++) { tmp=arr[i]; for(j=i-1;j>=0...

2020-05-01 20:30:56 148

原创 数学三角形问题

问题描述:给定由一个n行数字组成的数字三角形,计算从三角形的顶至底的路径经过的数字和的最大值。C语言代码如下:#include<stdio.h>#include<stdlib.h>#define MAXSIZE 10int MaxTriangle(int v[MAXSIZE][MAXSIZE],int n){ int submax[MAXSIZE][MAXSI...

2020-04-09 15:19:04 467

原创 汉诺塔问题

#include<stdio.h>int g_count=0;void Move(char x,char y){ g_count++; printf("%c->%c\n",x,y);}void Hanoi(int n,char a,char b,char c){ if(n==1) { Move(a,c); } else { Hanoi(n-1,a...

2020-03-17 16:17:33 45

原创 字符串问题

#include<stdio.h>#include<string.h>void Mystrcpy1(char *des,const char *src)//将源字符串复制到目标字符串{ int i=0; for(i=0;src[i]!='\0';i++) { des[i]=src[i]; } des[i]='\0';}void Mystrcpy2(c...

2020-03-16 13:59:06 97

原创 半数单集问题

#include<stdio.h>#include<string.h>int HalfSet(int n){ int a[100]={0};//数组初始化为0;来存储算出来的阶段性结果 if(a[n]>0) { return a[n];//数组中每个元素不为0时,退出递归 } else { a[n]=1; for(int i=1;i&lt...

2020-03-15 10:40:47 83

原创 集合划分问题

问题1描述:给定正整数n和m,计算出n个元素的集合{1,2,…,n}可以划分为多少个不同的由m个非空子集组成的集合。#include<stdio.h>int recursion(int n,int m){ int c=0; if(n==m||m==1) return 1; else { c=m*recursion(n-1,m)+recursion(n-1,m-1)...

2020-03-14 19:44:27 111

原创 杨辉三角

#include<stdio.h>void PascalTriangle(){#define ROW 10 int arr[ROW][ROW]; for(int i=0;i<ROW;i++) { for(int j=0;j<=i;j++) { if(j==0||i==j) arr[i][j]=1; else arr[i][j]...

2020-03-13 21:00:47 115

原创 数组逆置

#include<stdio.h>void Reverse(int arr[],int len){ int tmp; for(int i=0,j=len-1;i<j;i++,j--) { tmp=arr[i]; arr[i]=arr[j]; arr[j]=tmp; } for(int i=0;i<10;i++) { printf("%d\n"...

2020-03-11 20:04:05 153

原创 比赛问题

标题两个乒乓队比赛,甲队为A,B,C三人,乙队为X,Y,Z三人,抽签决定比赛名单,已知A不和X比,C不和X,Z比,请编程序找出三对赛手的名单。#include<stdio.h>void Match(){ for(char a='X';a<='Z';a++)//A的对手 { for(char b='X';b<='Z';b++)//B的对手 { for(...

2020-03-11 15:48:14 140

原创 1+2+3...+n的和

#include<stdio.h>void Show(int n){ printf("%d=1",n); for(int i=2;i<n;i++) { if(n%i==0) { printf("+%d",i); } } printf("\n");}int main(){ Show(5);//1+2+3+4+5的和}

2020-03-10 16:26:35 215

原创 水仙花数

#include<stdio.h>bool IsFlower(int n){ int a; int sum=0; int m=n; while(n!=0) { a=n%10; sum+=a*a*a; n/=10; } return sum==m;/* if(sum==m) { return true; } else { return fal...

2020-03-10 15:40:26 113

原创 输出一千以内的完数

完数:一个数如果恰好等于处它本身外的因子之和,这个数就称为完数#include<stdio.h>bool IsPerfectNum(int n){ int sum=0; for(int i=1;i<n;i++) { if(n%i==0) { sum+=i; } } return sum==n;}int main(){ for(int n=...

2020-03-10 14:36:59 363

原创 输入一行字符,分别统计其中英文字母、空``格、数字和其他字符的个数

标题输入一行字符,分别统计其中英文字母、空``格、数字和其他字符的个数#include<stdio.h>#include<math.h>#include<ctype.h>void Count(){ char ch; int alpha = 0;//字母 int digit = 0;//数字 int blank = 0;//空格 int oth...

2020-03-09 15:59:27 211

原创 折半查找

折半查找#include<stdio.h>int BinSearch(int arr[],int len,int key){ int low=0;//起始下标 int high=len-1;//结尾下标 int mid; while(low<=high) { mid=(low+high)/2; if(arr[mid]==key) { return...

2019-10-31 19:33:41 74

原创 n进制计数器

1.在n进制下15×4=112,求n?A:5 B:6 C:7 D:815×4=112(n+5)×4=n^2+n+24n+20=n^2+n+2两边同时对n求余(4n+20)%n=((n^2)+n+2)%n20%n=2%n=2n=62.在n进制下567×456=150216,求n?A:9 B:10 C:12 D:18(5n²+6n+7)×(4n²+5n+6)=n⁵+5...

2019-10-17 19:06:09 1031

原创 计数器

标题1.计数器#include<stdio.h>//求一个数有几位#include<stdio.h>int Count(long long n){ if(n==0) return 1; int i=0; while(n != 0) { n/=10; i++; } return i;}int main(){ printf("%d\n",...

2019-10-14 13:46:18 136

空空如也

空空如也

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

TA关注的人

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