- 博客(35)
- 资源 (2)
- 问答 (2)
- 收藏
- 关注
原创 【Linux】匿名管道父子进程间通信
相关函数:pipe(int pip[2])其会创建一个匿名管道,其中pip是被out的,成功后,pip[0]会是读端的文件描述符,pip[1]是写端的文件描述符当返回值是-1时,该函数错误,是0时,成功该函数只能在有亲缘关系的进程之间通信当使用fork创建子进程之后,读的那一端会被先挂起直到有数据从写端写入quick start:(vi写的,有点难看)#include <stdio.h>#include <stdlib.h>#include <un
2022-05-12 23:01:22 500
原创 【C语言】大数相加代码
朋友问的,就写了一下,顺便记录记录#include <stdio.h>void add(char* a, char* b) { int ret[1024] = {0}; int location = 0; int lentha = strlen(a); int lenthb = strlen(b); int lenth = lentha > lenthb ? lenthb : lentha; int uper = 0; int this = 0; for (int
2022-05-12 18:11:37 452
原创 【Linux】进程相关知识
1、创建进程函数:fork(),vfork(),返回值为0,则为子进程,大于0,父进程,-1错误fork:子进程复制父进程资源,子进程独立于父进程父子进程运行顺序不确定创建进程系统开销大,写时复制可以缓解vfork:子进程共享父进程地址空间 子进程先运行 创建进程系统开销小quick start:#include...
2022-05-11 00:00:24 175
原创 【Linux】遍历文件夹
#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <dirent.h>#include <stdio.h>#include <string.h>#include <stdlib.h>char*joint(char*head, char*name){ char*ret = (char*)malloc(sizeof(c.
2022-05-10 16:24:04 1807
原创 【Win32】遍历文件夹
先利用FindFirstFile创建文件句柄再利用FindNextFile找到文件,利用其dwFileAttributes判断是否是文件夹,如果不是,则连着文件路径一起输出,如果是,则将文件路径与文件名拼接并递归遍历#include <windows.h>#include <stdio.h>int Judge_Directory(DWORD Attribute) { if ((Attribute & FILE_ATTRIBUTE_DIRECTORY) ==
2022-04-29 16:18:34 617
原创 【Win32】进程以及句柄
注意:本文为学习win32时所写,如有错漏,烦请指出,万分感谢1、线程与进程是什么①进程:所谓进程,是一个空间的概念,里面装的就是代码执行时所有所需要的资源②线程:所谓线程,是一个动态的概念,简单来说就是跑起来的代码所以,一个进程至少要有一个线程才是有意义的2、句柄是什么我们知道,在windows上面,进程的低2G是属于自己的,高2G是属于内核的,是所有进程共享的,那么,每个进程在创建时,包括其中的线程,事件等创建时,都...
2022-04-24 11:17:51 995
原创 【Python】指定字符密码生成(爆破字典生成)
就是一个回溯算法,写着玩玩keyi = []data = []def whatWord(): while True: word = input("请输入可疑字符,输入shier结束") if word == "shier": break keyi.append(word)def backtracking(keyi, start, data, count, cout_keyi): if (start >
2022-04-09 18:15:53 1001
原创 【C语言】表排序与物理排序(附代码)
一、什么是表排序众所周知,排序算法基本上都需要频繁移动元素,但是当要排序的东西不是某个小的数据,而是很大的东西,比如视频,频繁的移动对我们来说代价是非常大的,这时候我们就需要进行表排序,就是设置一个指针指向要排序的东西,而我们对这个指针进行排序(这里的指针不一定是c里面的指针,而是代表着指向某个元素位置的数据)代码如下int main(){ int arr[10] = { 32, 45, 12, 87, 26, 12, 199, 20, 4, 90 }; int table[10] =
2022-01-21 00:23:57 1006 1
原创 【C语言】归并排序的递归和非递归实现
一、递归核心就是一个数组中有序子列排序的问题,这里用了merge函数实现,其中int*a是待排序数组,int*tmp是临时数组,l是左边子列的起始下标,r是右边子列的起始下标,rightend是右边结束的位置,然后就把两个子列都扫描一遍,小的就往tmp里面填写,最后到只有一个子列还有数据,就把剩下的数据全都放进tmp就行了;然后用一个mort函数递归的开始调用merge函数。#include<stdio.h>#include<stdlib.h>void merge
2022-01-19 22:12:35 584
原创 【C语言】并查集的基础表示
如果有10台电脑{1,2,3,4,...,9,10},已知下列电脑之间实现了连接: 1和2,2和4,3和5,4和7,5和8,6和9,6和10问:2和7,5和9之间是否可以连通?效果:代码:#include<stdio.h>#include<stdlib.h>typedef struct data{ int num; int parent;}data;typedef struct gather{ data* info[30...
2022-01-16 16:53:40 387
原创 c语言实现大顶堆思路及代码
插入和删除还没写,不过删除逻辑和创建差不多,太晚了,明天写#include<stdio.h>#include<stdlib.h>typedef struct heap{ int* data; int size; int capacity;}heap;//函数:1.创建堆:返回指针、2.插入:返回指针、3.删除:返回数据、4.遍历:直接输出不返回、5.调整:返回指针、6.最大值:返回数字heap* establish(heap*p);heap* adjus
2022-01-12 00:40:00 882 1
原创 链表中前n个元素逆序问题c语言
#include<stdio.h>#include<stdlib.h>typedef struct node{ int data; struct node* next;}node;node* establish(node* p);void ergodic(node* p);node* reserve(node* p);int lenth(node* p);int lenth(node* p){ node* tmp = p; int cnt = 0;.
2022-01-09 17:48:08 294
原创 判断BST是否相等c语言
#include<stdio.h>#include<stdlib.h>typedef struct bst{ int data; struct bst* left; struct bst* right; int flag;}bst;bst* establish();bst* insert(bst* p);void check(bst* p);int find(bst*p);int main(){ bst* p = establish(); ch.
2022-01-08 20:57:47 364
原创 AVL树的基础实现c语言
#include<stdio.h>#include<stdlib.h>typedef struct avltree{ int data; struct avltree* left; struct avltree* right; int height;}avl;int geth(avl *p); //获取高度int getmax(int a, int b); //获得最大值avl* insert(avl *p, int x); //插入并调整avl* .
2022-01-08 12:20:28 593
原创 c语言实现搜索二叉树的基础操作
#include<stdio.h>#include<stdlib.h>typedef struct tree{ int data; struct tree* right; struct tree* left;}tree;typedef tree* position;position findmin(tree*p);position findmax(tree*p);position find(tree* p, int x);tree* insert(tr.
2022-01-07 00:01:45 328
原创 完全二叉树中的结点数量问题
例题:设一棵完全二叉树有1000个结点,则在该二叉树中的叶子结点数为多少?给出分析过程。解答:设n0为叶子结点,n1为一个孩子的结点,n2为两个孩子的结点因为是完全二叉树,所以结点数位奇数,n1=0,节点数为偶数,n1=1又因为节点数为1000为偶数,所以n1=1又因为n0+n1+n2=1000,所以n0+n2=999又因为n0=n2+1所以n0=500所以叶子结点有500个同理可得n1和n2...
2022-01-06 16:36:54 2329
原创 shell实现rsa算法青春版
RSA加密 1、A选择两个极大素数p,q; 2、A计算n=pq; 3、A计算n的欧拉函数=(p的欧拉函数)*(q的欧拉函数)=(p-1)(q-1); 4、A选择一个与(n的欧拉函数)互质并且小于(n的欧拉函数)的数e; 5、A计算出e对于(n的欧拉函数)的模反元素d; 6、自此(e,n)为公钥,(d,n)为私钥; 7、设有明文M,则加密为 (M的e次方)mod n=C 其中C为加密后...
2022-01-05 14:10:35 957
原创 队列的基础实现C
数组顺环#include<stdio.h>#include<stdlib.h>typedef struct Queue{ int data[10]; int front; int rear;}queue;void Add(queue*p, int item);void Delete(queue*p);int main(int argc, char const* argv[]){ queue* p = (queue*)malloc(sizeof(qu
2021-12-29 23:34:17 260
原创 堆栈的基础实现C
数组单向#include<stdio.h>#include<stdlib.h>typedef struct { int data[10]; int top;}stack;void push(stack*p, int a);void pop(stack* p);int main(int argc, char const*argv[]){ stack* p = (stack*)malloc(sizeof(stack)); p->top = -1;
2021-12-29 10:54:22 614
原创 TCPDUMP的shell小脚本
代码在下面具体思路如下:用户会输入指令,如网卡(ens33),数量(300)等我们需要输出提示:如请输入网卡名,请输入数量等指令需要和选项结合在一起,如网卡前面要加-i,数量前面要加-c等所以,创建func数组,搜集用户输入的指令创建prompt数组,输入我们要给出的提示创建option数组,输入用户指令前面的选项创建常数conditionnum,设置为我们要写入的条件个数最后创建FUNC数组,目的时把func和option结合在一起创建循环,设置i=0,当i小于co
2021-12-27 21:12:37 8837
原创 复习笔记(linux命令)
一、连接利用xshell远程连接linux:ssh +ip二、基础命令查看IP:ip addr切换目录:cd +路径 //cd .. 返回上层查看当前位置:pwd查看文件大小(携带单位):du -h 文件路径查看磁盘大小:fdisk -l查看磁盘使用情况:df查看系统运行进程:top查看cpu使用情况:cat /proc/cpuinfo查看内存情况:cat /proc/meminfo查看文件内容:cat 文件路径创建文件夹:mkdir 文件夹存放路径/文.
2021-12-20 22:15:38 361
原创 C链表入门
#include<stdio.h>#include<stdlib.h>//什么是链表?//链表就是多个结构体连接在一起形成的聚合体//要让多个结构链接在一起,并且可以记录数据,所以结构体可以构建如下typedef struct NODE{ int value; //为了存放数据 struct NODE* next; //为了能指向下一个相同的结构体}node;链表结构体构建完成之后就需要创建链表int main(int a.
2021-12-19 16:05:41 1029
原创 复习笔记(windows)
cmd基础命令注意,windows中/可以理解为命令符号,\可以理解为路径符号cd:改变当前路径;CD [/D] [drive:][path](cd /d c:\c3640;cd ..返回上级目录)dir:显示文件 DIR [drive:][path][filename] (dir c:\c3640)md:创建目录MD [drive:]path (md c:\123)rd:删除目录RD [/S] [/Q] [drive:]path /S删除目录树 /Q删除目录树时不询问move...
2021-12-15 00:05:37 1236
原创 HTTPS协议(包含DH和RSA)
一、什么是HTTPS全称hyper text transmission protocol secursocketlayer,其实就是HTTP加上SSL,但是自从SSL3.0以后就更名TLS了,所以抓到的报文基本上都是TLS的报文,目前使用最广泛的是TLS1.2,最新的版本是TLS1.3。二、PKI体系如A要给B发送消息1、A先将原始数据利用hash加密为信息摘要,再利用A非对称加密的私钥将其加密为数字签名;2、数字签名;原始信息;数字证书(含有A的公钥)三者打包并用对称加密的密钥将其加密
2021-12-11 14:39:41 2250 2
原创 FTP协议
一、概念全称file transfer protocol,文件传输协议,基于TCP21端口(传输命令),20端口(传输数据)二、流程主动模式1、客户机选择随机端口号与客户机熟知端口号21建立TCP连接,这条链接用于传输控制命令2、客户机发送port报文给服务器,表示使用主动模式连接3、服务器使用熟知端口20和客户机进行TCP连接,这条连接用于传输数据...
2021-12-04 17:50:14 1459
原创 UDP协议
一、概念全称user datagram protocol,用户数据报协议,特点是无连接,不排序,不确认,处于传输层二、报文格式src.port(2byte):源端口des.port(2byte):目的端口lenth(2byte):UDP报文与数据的长度,每一个代表一个字节,最小是8check.sum(2byte):校验和<该文档为复习自用,如果能给你有什么启发,非常开心,如果能帮忙指出错误,万分...
2021-12-04 17:20:05 954
原创 TCP协议
一、概念全称 transmission control protocol,传输控制协议,属于传输层协议,面向连接二、报文格式src.port(2byte):源端口des.port(2byte):目的端口seq.num(4byte):序列号,表示自己发送到了哪个数据ack.num(4byte):确认号:表示从到此之前的数据已经接收,需要接受该号数以及之后的数据header.lenth(...
2021-12-04 17:02:39 1117
原创 ICMP协议
一、概念ICMP全称internet control message protocol,网络控制信息协议,主要是为了检测网络是否畅通等(如ping命令),属于网络层之上,传输层之下。二、报文格式Type:0代表请求,8代表回应,3代表不可达,4代表源抑制,5代表重定向,11代表超时,13代表时间戳请求,14代表时间戳回应Code:需要的情况下,0代表网络,1代表主机,2代表协议Checksum:校验和Id...
2021-12-04 15:26:57 1544
原创 DHCP~
一、目的DHCP全称,dynamic host configurition protocol动态主机配置协议,是为了自动获取IP地址,子网掩码,默认网关和DNS等信息二、流程1、主机广播发送discover信息,寻找广播域中的DHCP服务器;2、DHCP服务器收到此广播帧后,从自身DHCP池中找出未被使用的IP地址,并广播发送ARP请求,询问此广播域中是否有携带此IP地址的主机;3、DHCP服务器将找出的IP地址封装在off...
2021-12-04 14:05:45 856
原创 ARP协议
一、概念APR协议,全称Address resolution protocol,地址解析协议,属于TCP/IP协议簇中的网际层,但与MAC紧密相连,所以也有人说是属于2.5层。二、目的已知IP地址,获取其MAC地址。三、原理主机想要知道某个IP的MAC地址,查询自身ARP高速缓存表后,发现并没有,则构建一个ARP数据包(ARP请求),以广播的形式发送,广播域中,所有主机都能收到这个广播帧,非目的主机收到后,发现其IP地址与自身不匹配,则丢弃...
2021-12-04 12:06:00 5047
关于rsa难解的问题
2021-12-11
c语言中定义数组地址为什么不连续
2021-12-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人