- 博客(29)
- 资源 (3)
- 收藏
- 关注
原创 Linux系统编程多路复用epoll
服务器代码#include <stdio.h>#include <poll.h>#include <sys/types.h>#include <sys/socket.h>#include <unistd.h>#include <arpa/inet.h>#include <string.h>#include <stdlib.h>#include <error.h>#include &
2022-05-28 15:46:36 215
原创 Linux系统编程多路复用poll
服务器代码#include <stdio.h>#include <poll.h>#include <sys/types.h>#include <sys/socket.h>#include <unistd.h>#include <arpa/inet.h>#include <string.h>#include <stdlib.h>#include <error.h>#include &
2022-05-28 15:46:08 150
原创 Linux系统编程多路复用select
服务端代码#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/select.h>#include <unistd.h>#include <arpa/inet.h>#include <string.h>#include <stdlib.h>#include <error.h>#def
2021-09-25 10:38:03 161
原创 Linux系统编程之条件变量
条件变量条件变量是用来同步线程访问竞态资源的,原有的互斥锁不足之处是各个线程都去不断抢夺互斥锁,造成CPU的占用率过高,而条件变量是结合互斥锁来使用,既保证了线程间安全有序的访问竞态资源,又能通过唤醒机制来减少线程不断抢夺互斥锁,从而降低CPU的占用率。1. 条件变量实现原理线程通过判断条件变量是否满足,来决定是否要阻塞线程,若线程阻塞后,需要由其他线程发出notify(signal和broadcast)来唤醒在条件变>量阻塞的线程.2. 线程被空唤醒如果生产者在某一时刻只生产了一件商
2021-09-21 12:23:15 707
原创 Linux系统编程之互斥锁
互斥锁相关函数:1.pthread_mutex_init()#include <stdio.h>#include <string.h>#include <pthread.h>#include <stdlib.h>#include <unistd.h>pthread_mutex_t mutex;void *pthread1(){ while(1) {
2021-09-19 21:38:08 214
原创 Linux System V信号量(互斥操作)
#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>#include <stdio.h>#include <unistd.h>#include <sys/wait.h>#include <stdlib.h>#include <...
2020-03-30 20:11:23 526
原创 Linux C FIFO(有名管道)通信
FIFO(有名管道)与Pipe(无名管道)都是通过内核缓冲区来进行通信,Pipe(无名管道)只能用于有缘进程之间的通信,而FIFO(有名管道)亦可 用于无缘进程之间的通信。创建一个FIFO(/有名管道),其也拥有像文件名的名称,可以通过 ls -l 命令查看,文件类型为p。FIFO写端:#include <stdio.h>#include <sys/types.h&g...
2020-03-26 00:23:11 703
原创 Linux C posix消息队列
poisx消息队列是通过消息的优先级来实现双方的发送和接受,与之相似的System V消息队列是用整型来标记每一条消息。posix_mqsend.c#include <stdio.h>#include <fcntl.h> #include <sys/stat.h> #include <mqueue.h>...
2020-03-23 00:41:22 237
原创 Liunx C Pipe(无名管道)通信
#define _GNU_SOURCE #include <fcntl.h> #include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <sys/types.h>int main(){ int ...
2020-03-22 00:04:11 230
原创 SCHED_RR与SCHED_FIFO调度策略不同点
内核默认调度算法是循环时间分享策略(SCHED_OTHER),实时调度策略分为两种SCHED_RR和SCHED_FIFO,linux系统一般每个调度策略都有99个优先级,其优先级数值从1(低优先级)~ 99(高优先级),每个优先级又有一个进程队列。SCHED_RR :同优先级的实时进程中,每个进程又是通过获得时间片来分时运行。不同优先级的实时进程,高优先级的实时进程能够抢占低优先级的实...
2020-03-11 23:45:04 3978 2
原创 System V IPC基础(一)
System V IPC有三种通信机制 :消息队列 :消息队列中的每条消息都有类型,发消息端发送消息要带有消息类型,收消息端都是通过消息类型来从消息队列中接收消息。共享内存 : 通过操作同一块物理内存,实现进程间通信。信号量 :信号量集包括多组信号量,信号量能使进程实现同步或者互斥。创建上述三种IPC对象的函数接口 :消息队列 : int msgget(key_t key , i...
2020-03-10 22:20:59 199
原创 C语言 typedef函数指针用法和注意点
1 . fun1表示函数返回值为空和形参为空的类型名(fun1如同声明变量的int)#include<stdio.h>typedef void fun1(void); void test1(void){ printf("fun1\n");}int main(){ fun1 *echo; //声明一个存储返回值为空和形参为空的函数指针变量...
2020-03-04 23:00:04 712
原创 GO实现TCP端口转发
1 . 导包package mainimport ( "fmt" "net" "io")2 . 全局变量var ( dst_addr string="127.0.0.1:8900" //目标服务器地址 local_addr string="0.0.0.0:8901" //本地监听地址 )3 . 转发函数func tcp_handle(tc...
2020-02-27 16:58:15 2806 1
原创 Linux C之Socket通信(UDP协议)
一 . UDP实现基本流程(C/S架构)server端socket()bind()recfrom() sendto()close()client端socket()recfrom() sendto()close()1.函数头文件#include <stdio.h>#include <stdlib.h>#include <error....
2020-02-26 21:38:59 565
原创 Linux下配置golang环境shell脚本
安装初始化界面 :#!/bin/bashcolor(){ green='\e[1;32m' res='\e[0m' yellow='\e[1;33m' echo -e ${green} clear}hello(){ echo 1.debian/kali echo 2.centos echo 3.android echo 4.退出 read -p "配置Golang...
2020-02-14 21:51:37 494
原创 进程、线程、超线程技术的类比理解
个人的类比理解:进程(厨房)、线程(煮饭、炒菜…)、CPU1(小C)、CPU2(小D)、进程资源(厨具、蔬菜、锅)单核单线程CPU:在厨房内,小C正在煮着饭,厨房内有各种足够的资源给小C,平时懒散惯的小C,在煮饭的时候,就不想干其他事情,就在那坐着。他本可以边煮饭边炒菜,但他非得等煮好饭了,再去炒菜。(CPU未能充分发挥作用,多数处于空闲状态)单核多线程CPU:有一天,小C的这种做法,...
2020-02-10 23:00:20 357
原创 Linux C之Socket通信(TCP协议)
一 . 基本流程(C/S架构)server端socket()bind()listen()accept()read() wirte()close()client端socket()connet()read() wirte()close()二 . TCP建立连接过程
2020-02-10 01:10:27 580
原创 Linux C之创建进程
在父进程中通过系统库函数fork() ,创建出其子进程 ,子进程就是副本 ,其虚拟地址空间的内容跟父进程一模一样 ,即其运行的代码都是一样的。其区别是进程的PID。fork()函数调用成功后 ,在父进程内返回子进程的PID ,在子进程内返回0 ,调用失败则返回负数,通常是 -1。#include <stdio.h>#include <stdlib.h>#i...
2020-01-04 17:33:42 417
原创 C语言坑之局部变量
函数的动态(auto)变量是在栈存储的。栈存储的变量会在函数结束之后释放掉。 静态变量(static)是在数据区存储,进程结束之后,才会释放。一.动态变量main函数通过调用test函数,test函数接收了fun函数局部变量a的存储地址,但在接收之前,fun函数已经运行结束了,即局部变量a已经被释放掉了,所以test函数再访问a的时候,会提示段错误(编译时也会有警告)。#includ...
2020-01-01 20:12:23 350
原创 Linux----SUID提权复现
使用useradd命令,创建一个普通用户demouseradd -m demo== useradd 的-m选项是在/home目录下创建demo用户的家目录。 ==确认用户是否创建成功cat /etc/passwd在/etc/passwd文件末尾的第一个字段出现用户名demo,则创建用户成功。...
2019-12-03 00:28:02 1221
原创 C语言-----生成哈希表(线性探测法)
/*// @哈希表(线性探测法)/*/#include<stdio.h>#include<stdlib.h>#include<windows.h>#define Field -1#define null -32768typedef struct hashmap...
2019-11-30 21:23:13 2333 1
原创 C语言------约瑟夫环(单向循环链表)
#include <stdio.h>#include <stdlib.h>void creat();//--->>根据人数创建结点函数void run();//---->>运行游戏函数int a,i,n;struct pepole { int number; struct pepole *next; }*head,*s,*b;/...
2019-11-26 22:59:27 561
原创 Linux-----管理用户脚本(shell)
脚本界面创建普通用户删除用户创建kaka超级用户字体初始化函数#!/bin/bash#管理用户脚本colorcsh(){ green='\e[1;32m' blue='\e[1;34m' res='\e[0m' yellow='\e[1;33m' red='\e[1;31m'}脚本启动函数start(){ colorcsh c...
2019-11-24 12:45:40 679 1
原创 c++友元函数
1.友元类因为B类是友元类,所以B类的成员函数能够访问A类的私有成员#include<iostream>using namespace std;class A{ private: void fun() { cout<<"this A private fun"<<endl; } friend cla...
2019-11-23 22:25:54 257 1
原创 c++类注意点
类的调用1) 若A类想在类体内实例化对b,则B类需在A类定义之前有完整的定义。class A{ public: B b;//实例化对象b---->>>(错误)B类没有在A类之前没有定义 void fun_A() { b.fun_B(); }};class B{ public: void fun_...
2019-11-22 20:21:45 169
原创 Linux------密码字典生成器(c语言)
本密码生成器根据地区号码段(7位),然后补全后面4位数字来生成所有组合手机号(11位),其中代码中的1.txt文件是地区号码段,2.txt文件是生成后的密码字典。(注:每个地区的运营商号码段需从网上收集)main.c初始化#include<stdlib.h>#include<stdio.h>#include<string.h>char s[11];...
2019-11-17 16:55:19 1277
原创 【飞控入门基础】 四元数
四元数四元数(Quaternions)是由威廉·卢云·哈密顿在1843年爱尔兰发现的数学概念。四元数的乘法不符合交换律。如果把四元数的集合考虑成多维实数空间的话,四元数就代表着一个四维空间,相对于复数就是二维空间。四元数也称为超复数。四元数形式为:其中a为实部,b , c , d为虚部,i , j , k为虚数单位。i , j , k三者的关系为:1.向量的叉乘2...
2019-08-01 18:10:42 1760 1
原创 【飞控入门基础】二维旋转矩阵
顺时针旋转1. 线段OP绕原点顺时针旋转θ得到OP'2.推导过程1 )已知OP=OP',如图所示,OP在X轴的投影为X,在Y轴的投影为Y2 )OP经过顺时针旋转后,OP'在X轴的投影为X',在Y轴的投影为Y'3 )X , Y的长度分别为4 )X' , Y'的长度分别为5 )X' , Y'化简为6 )最后写成旋转矩阵格式...
2019-07-29 22:23:34 603
原创 C语言小游戏
C语言实现贪食蛇(循链表)头文件#include <stdio.h>#include <windows.h> #include <time.h>#include <stdlib.h>宏定义#define U 1#define D 2#define L 3#define R 4#define GKS GetA...
2019-07-27 17:39:52 3040 3
Linux系统golang环境配置shell脚本
2020-02-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人