自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 协程学习笔记二

协程(二)ucontextsetjmp和ucontext哪个更好https://stackoverflow.com/questions/5536913/c-setjmp-h-and-ucontext-h-which-is-betterhttps://stackoverflow.com/questions/15014647/why-was-ucontext-added-to-and-then-removed-from-posix代码学习风云写的协程代码(不搬运了)https://github.c

2022-05-07 11:35:38 209

原创 协程学习笔记

协程概念什么是协程 https://stackoverflow.com/questions/553704/what-is-a-coroutine协程与线程的区别 https://stackoverflow.com/questions/1934715/difference-between-a-coroutine-and-a-thread并行与并发的区别 https://stackoverflow.com/questions/1050222/what-is-the-difference-between-

2022-05-05 17:31:12 750

原创 cJSON学习笔记

安装https://github.com/DaveGamble/cJSON组包#include <stdio.h>#include "cJSON.h"int main(){ // 创建dict结点 cJSON *root = cJSON_CreateObject(); // 添加string子节点 cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack (\"Bee\") Nimble

2022-01-17 15:38:40 873

原创 RSA与python

原理https://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.htmlhttps://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.htmlpython实操'''Private-Key: (1024 bit)modulus: 00:ae:5c:3f:36:3e:6e:41:ad:e6:ac:c2:49:e2:53: 98:d1:2c:63:ca:49

2021-07-14 12:00:11 238

原创 inotify与文件同步

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-05-31 11:52:07 286

原创 实现多线程下msgsnd,msgrcv的超时

msgsnd和msgrcv,只有在一下三种情况下,才会退出阻塞状态写或读消息队列成功对应的消息队列被删除信号中断为了做到超时退出阻塞状态,一般常用的做法是通过alarm,触发信号中断,但是只能是在一个线程的情况下执行。多线程下调用alarm,SIGALRM信号会传递给其中一个线程(我测试下是传递给主线程…)我的做法是,写个定时器,由单独的一个线程执行定时器,执行msgsnd和msgrcv的线程需要注册相应的事件到定时器中,由定时器线程通过pthread_kill,向对应线程发送信号,使得ms

2021-05-21 14:18:01 2138

原创 Redis学习笔记

https://www.bilibili.com/video/BV1S54y1R7SB未完待续…前言大数据的3v和3高大数据时代的3v:主要是描述问题的海量Volume多样Variety实时Velocity大数据时代的3高:主要是针对程序的要求高并发高可拓高性能以淘宝为实例商品的基本信息名称、价格、商家信息商品的描述、评论mongoDB图片视频等静态资源分布式文件系统FastDFS淘宝自己的TFSGoogle的GFSHadoop HDF

2021-03-16 22:57:13 121

原创 网络编程6:网路同步请求和异步请求

客户端请求的时候,有同步请求与异步请求之分:同步请求,一个请求,等返回后,再继续之后的操作;异步请求,一个请求,不等待返回,继续做其他操作,有返回后有再进行操作。如何将同步请求,写成异步请求呢,比如说sql同步请求,http同步请求…以DNS请求为例借用这位巨佬写的DNS请求代码https://blog.csdn.net/mirkerson/article/details/5907955#include <stdio.h>#include <stdlib.h>#in

2021-02-27 21:35:39 255

原创 学习笔记:gdb

GDB是调试命令工具前提:编译的时候需要-g使用:gdb a.out或者gdb先进入,再输入file a.out常用命令gcc -g #使用该参数编译可执行文件,得到调试表gdb a.outgdb 命令行help:查看命令帮助,简写h。help + 命令run:开始运行程序,简写r。run args[1] args[2] …start:开始运行程序,单步执行,停在第一执行语句。 start args[1] args[2] …list:查看原代码,简写l。list

2021-02-23 17:53:28 176

原创 网络编程4:NAT与穿透

NAT概念网络地址转换。出口网关,将内网IP地址和端口,映射成不一样的公网IP地址和端口。NAT类型锥形NAT和对称NAT的区别是,客户端用同一个本地端口同时请求不同的外网服务器,锥形NAT用分配相同的端口号,对称NAT会分配不同的端口号。测试测试环境的网络拓扑结构代码server.c#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <ar

2021-02-23 12:32:15 333

原创 学习笔记:Git

参考https://www.runoob.com/manual/git-guide/https://github.com/rogerdudler/git-guidehttps://docs.github.com/cn/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh零声学院创建仓库git init --bare xx.git #裸仓库, 远端仓库以git结尾, 也可以不用

2021-02-21 22:33:17 418

原创 网络编程3:反应堆与百万链接

epoll反应堆代码#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/epoll.h>#include <string.h>#include <errno.h>#define BUFFER_LENGTH

2021-02-19 22:05:55 174

原创 学习笔记:编译与makefile

概念编译:把源代码翻译成机器语言的目标文件链接:把众多目标文件链接成可执行文件编译预处理gcc -E -o test.i test.c对伪指令(或预处理指令,以#号开头的代码行)和特殊符号进行处理宏定义,#define条件编译指令,#ifdef,#ifndef,#endif,#if,#else,#elif,#endif头文件,#include,预处理将头文件的定义加入到输出文件中!!!!只有这一步需要头文件!!!特殊符号,__FILE__,__LINE__,__DATE__,__STD

2021-02-12 21:04:54 185

原创 学习笔记:内存池

内存池解决了什么?减少内存碎片,提高分配效率几个概念内存页getconf PAGE_SIZE #4096, 4k虚拟内存和物理内存的映射,采用内存页的方式。既不同进程,虚拟内存地址相同,但是对应的物理内存地址不一样。4G内存,为每一个内存分配独一无二的编号,那么就需要2^32个数字,既是用32位长的二进制数表示,或者8位长的十六进制数表示。如果虚拟内存和物理内存的映射采用一一对应的映射关系,既是物理地址id = table[虚拟内存地址id],那么这个table也得2^32 * 地址id长

2021-02-12 21:03:37 149

原创 网络编程学习1:套接字socket

套接字的五元组{protocol,src_addr,src_port,dest_addr,dest_port}socket函数#include <sys/socket.h>int socket(int family, int type, int protocol);//成功返回非负数,失败返回-1//tcp family=AF_INET, type=SOCK_STREAM, protocol=IPPROTO_TCP/0//udp family=AF_INET, type=SOCK

2021-02-04 00:58:23 426

原创 定时器设计

定时器实现方案1、最小堆 二叉树,boost.asio??四叉树,golang??2、红黑树 nginx定时器3、时间轮 skynet存储什么内容:过期时间戳 + callback案例:一个链接10秒钟没有收到数据(心跳包),那么服务端就断开这条链接...

2021-01-29 12:29:14 288

原创 1.4 布隆过滤器

布隆过滤器是一种概率型数据结构,能明确告知某个字符串一定不存在或者可能存在,直观说是hashset,不存储key,通过k个hash值,存储k个标志位,k个标志位均为1,表示可能存在;否则一定不存在。布隆过滤器解决的问题是,海量数据查找。红黑树的需要key比较和存储key;哈希表的存储key,以及碰撞后的key比较。所以需要尝试探寻不存储key的方案,并且拥有哈希表的优点(不需要比较字符串)。布隆过滤器优点:需要存储空间小;不需要比较,查询快。布隆过滤器缺点:不支持删除操作;key有...

2021-01-27 21:12:08 164

原创 1.1 排序算法与kmp算法

冒泡排序void bubbleSort(int *nums,int numsSize){ int i,j,k,flag; for(i=0;i<numsSize;i++){ flag = 0; for(j=0;j<numsSize-i-1;j++){ if(nums[j]>nums[j+1]){ k = nums[j]; nums[j] = nums[j+1]; nums[j+1] = k; flag = 1; } } i

2021-01-26 01:31:39 235

原创 1.2 红黑树 学习笔记

参考:https://www.jianshu.com/p/84416644c080参考:零声学院课程原理不说了。。。插入的三种情况注意需要说明的是,写代码一般是将情况三转换为情况二(以B为中心,左旋)删除的四种情况(只涉及删除黑节点的情况,其他情况很简单的)注意需要说明的是,写代码一般是将情况二转换为情况三(以B为中心,右旋)代码等等再放上来.........

2021-01-15 20:24:09 251 1

原创 C 线程池

参考 <https://blog.csdn.net/qq_36359022/article/details/78796784>参考 <https://www.bilibili.com/video/BV1iJ411S7UA>看了大概的思路,自己理解着敲一下,然后对比原来代码有些地方不同。#include <stdio.h>#include <string.h>#include <stdlib.h>#include <pt

2021-01-06 23:41:24 122

原创 epoll反应堆模型

参考 <https://blog.csdn.net/daaikuaichuan/article/details/83862311>参考 <https://www.bilibili.com/video/BV1iJ411S7UA>求职期间,还是得好好学习。看了大概的思路,自己理解着敲一下。和原来代码的有些地方不同。视频有提到,为什么反应堆模式要注册写事件,因为可能写缓存满了(对方接收窗口小了,接收不过来)。#include <stdio.h>#incl

2021-01-05 00:55:26 188

原创 love2d 2. 自动寻路的贪吃蛇

可以看我这篇https://blog.csdn.net/ZRXSLYG/article/details/109464128conf.luafunction love.conf(t) t.window.width = 150 t.window.height = 150endmain.luamap_walk = {} --记录方向, 无方向为nil, 有方向为up right down leftmap_cost = {} --记录成本, 初始成本为1, 蛇身成本为100000000for

2020-11-20 00:54:09 171

原创 OpenSSL学习笔记三:实操

实操未完待续…对称加密https://www.openssl.org/docs/man1.1.1/man3/可以修改Key、IV、Nonce的最后一位,看加密后的密文是否修改//man EVP_EncryptInit//DES in CBC, ECB, CFB and OFB modesconst EVP_CIPHER * EVP_des_cbc(void);const EVP_CIPHER * EVP_des_ecb(void);const EVP_CIPHER * EVP_des_c

2020-11-20 00:03:24 235

原创 OpenSSL学习笔记二:理论

参考 https://blog.csdn.net/liao20081228/article/details/77159039参考 《深入浅出HTTPS》未完待续…通信以明文传输有以下问题数据被截取->加密数据被篡改->信息校验码数据被伪造->数字签名对称加密核心理论:同一密钥对明文异或后,再对得到的密文异或就可得到明文显著特点* 加解密使用同一个密钥 * 加解密过程完全相同 优点* 加解密的高速度和使用长密钥的难破解性 缺点* 多用户需要多密钥

2020-11-19 23:58:04 259

原创 OpenSSL学习笔记一:命令行

> openssl helpStandard commandsasn1parse ca ciphers cms crl crl2pkcs7 dgst dh dhparam dsa dsaparam ec e

2020-11-17 21:50:53 601

原创 寻路算法初探

https://www.redblobgames.com/pathfinding/a-star/introduction.html1、广搜#include <stdio.h>#include <stdlib.h>#include <string.h>#define bool int#define true 1#define false 0struct Point{ int x; int y;};struct Node{ stru.

2020-11-03 10:59:30 148

原创 love2d 1. 入门

官网love2d.org1、写个贪吃蛇以下是main.lua的代码snake = {}speed = 50function init() snake = {} local head = {x=love.graphics.getWidth()/2,y=love.graphics.getHeight()/2,direction='up'} table.insert(snake,head) local tail = {x=love.graphics.getWid

2020-10-29 12:47:20 355 4

原创 在CentOS安装Powerline,在windows terminal中使用Cascadia Code PL

参考https://powerline.readthedocs.io/en/latest/installation.htmlhttps://www.cnblogs.com/technologylife/p/7898571.html安装powerlinepython3 -m pip install powerline-statuspython3 -m pip show powerline-statusln -s /usr/local/python3.5.3/bin/powerline

2020-09-25 16:22:16 677

原创 minishell 练习

参考:https://blog.csdn.net/studyhardi/article/details/89763358https://blog.csdn.net/OCTODOG/article/details/709421941、先是最简单的,能够执行并输出#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/wait.h>#include &l

2020-09-18 10:54:51 158

原创 TCP Keepalive

#include <stdio.h>#include <string.h>#include <sys/socket.h>#include <netinet/in.h>#include <netinet/tcp.h>#include <signal.h>#include <stdlib.h>void sighandler(int signum){ printf("catch signal %d, br.

2020-09-14 17:19:27 183 2

原创 树莓派 4B Centos7 安装 Aria2

1、安装aira2方法一:通过epel源安装,不推荐,gnutls版本太旧cat << EOF >> /etc/yum.repos.d/epel.repo.bak[epel]name=Epel rebuild for armhfpbaseurl=https://armv7.dev.centos.org/repodir/epel-pass-1/enabled=1gpgcheck=0EOFyum install aria2 -y方法二:编译yum in

2020-08-25 09:48:26 414

原创 树莓派4B购买,安装CentOS经历

在某宝上买了树莓派4B,之前一直不买是因为树莓派4B未很好支持centos,已经2G内存的还是1.1版本。现在终于下单了,单机255元。图片1、安装Centos上官网,下载版本中,找到armhfp那个版本,然后随便选个镜像源,选择RaspberryPI 4的版本即可2、烧录然后我用rufus这个工具,烧录镜像到tf卡。直接选择刚刚下载的那个镜像文件即可。3、插卡,运行没啥好说的,完美运行。4、拓展根分区这个很必要,默认的根分区很小。5、安装python.

2020-08-25 09:44:47 755

原创 Golang实现几个排序算法,并发写法

未完待续冒泡package mainimport( "fmt" _"sync" "math/rand" "time")func create(nums []int)chan int{ ch := make(chan int) go func(){ for i:=0;i<len(nums);i++{ ch <- nums[i] } close(ch) }() return ch}func searchMin(n int,ch1 chan

2020-07-04 22:55:48 452

原创 Go HTTP 转发

package mainimport ( "log" "net/http" //"sync" "io")func init() { log.SetFlags(log.Ldate | log.Lmicroseconds | log.Llongfile)}func handler(w http.ResponseWriter, r *http.Request) { var err error var req *http.Request var resp *http.Respons.

2020-06-11 12:31:31 210

原创 B树 写文件

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <fcntl.h>#define max(a,b) ((a)>(b)?(a):(b))#define min(a,b) ((a)<(b)?(a):(b))#define MAX_OFF_T ((off_t)-1)#define MAX_NODE 15.

2020-06-07 22:51:00 188

原创 go struct 与 []byte 的几个转换

package mainimport ( "fmt" "unsafe" )type Person struct{ name [10]byte age int}func main(){ person := Person{} copy(person.name[:],[]byte("liming")) person.age = 10 fmt.Printf("%+v\n",person) const Person_Size = unsafe.Sizeof(person) v.

2020-05-13 11:52:44 242

原创 Python list 不够 赋值

有个需求,就是数据通过|组合,发给对方。但是每当对方更改文档,要求更多字段,而我这边没有及时更新,导致数据发给对方没通过。估计对方是split,获得list,然后 [0] [1] ...这样赋值。我的一个思路,list转dicfrom sys import argvd = {}for k,v in enumerate(argv): d[k] = vaa=''bb=''cc=''tmp = d.get(0)if tmp: aa = tmp tmp = d.

2020-05-12 10:57:37 187

原创 Go tcp 端口转发

package mainimport( "fmt" "net" "io" "sync" "time")func main(){ listener, err := net.Listen("tcp","localhost:5000") if err != nil{ fmt.Println(err.Error()) return } defer listener.Cl...

2020-04-23 18:22:02 321

原创 Go 的 Reader 和 Writer

package mainimport ( "os" "bytes" "strings" "fmt")func main(){ func(){ file,_:=os.OpenFile("log",os.O_RDWR|os.O_CREATE,0664) defer file.Close() //Writer file.Write([]byte("Hello wor...

2019-12-26 17:32:53 378

原创 VMware CentOS 共享文件夹

一、先在CentOS里安装VMware Tools1、虚拟机设置里,将CD/DVD改为自动检测2、进入系统后,鼠标右键虚拟机,选择安装VMware Tools3、挂载cdsu - rootcd /mntmkdir cdmount /dev/cdrom /mnt/cd4、安装vmtools,安装过程很多是回车的,看清楚先cp /mnt/cd/VMwareTo...

2019-12-02 11:00:11 221

空空如也

空空如也

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

TA关注的人

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