数据离奇消失bug------栈覆盖

在通过栈申请的内存有一个特点,他是连续的,这就很容易造成一个现象,如果出现栈溢出问题,会覆盖写掉其他变量的东西。比如我下面写的例子。#include<stdio.h>#include<stdlib.h>#include<string.h>charbigmem[50
c/c++ 2021年01月20日 6次浏览

通过fd链接去获取相应的本地地址和远端地址

通过fd链接去获取相应的本地地址和远端地址intget_ip_and_port_by_fd(intfd,char*local_ip,int*local_port,char*peer_ip,int*peer_port){if((!local_ip||!local_port)&&(!pe
c/c++ 网络编程 2021年01月20日 4次浏览

md5从16字节转换为32字节

md5从16字节变为32字节16字节到32字节的转换,实际上是通过将每个字节输出成十六进制数据的来的,所以通过一下函数实现。#include<stdio.h>voidmd5_short_to_long(char*md5_long,char*md5_short){inti=0;char*p
工具 c/c++ 2021年01月20日 4次浏览

相同指针与全局变量编译之坑

相同指针陷阱这是一个将yp指针的值加到xp指针两次的函数。voidfun1(int*xp,int*yp){*xp+=*yp;*xp+=*yp;}这个代码表面一看可以优化成这样voidfun1(int*xp,int*yp){*xp+=2**yp;}但是如果yp于xp指针指向的是同一个地址,那么情况就会
c/c++ 2020年11月27日 79次浏览

服务器----分布式锁原理

锁线程锁lock(mutex)资源操作unlock(mutex)进程锁(nginx中accept锁-共享内存+信号量)分布式锁在不同机器的进程的锁分布式锁的实现方案数据库redis,mysqlzookeeper分布式锁有哪些特征互斥性。可重入性,一个进程允许递归获取锁(需要递归释放锁)。锁超时(进程
工具 c/c++ 网络编程 计算机网络 2020年11月22日 74次浏览

多线程的虚假唤醒理解

虚假唤醒在多线程环境中,在竞争资源的时候,有时候拿到了锁,却发现资源没了,这可能就是使用了条件等待产生的一个惊群效应。pthread_cond_signal将所有的pthread_cond_wait线程都唤醒了,但是只有个别线程竞争到了资源,没有竞争资源的线程就是属于虚假唤醒的线程。对于虚假唤醒的线
c/c++ 程序设计 2020年11月17日 104次浏览

字符串匹配sunday算法封装

字符串匹配在工作中,需要用字符串匹配,为了可以快速切换不同的库,编写了这个匹配接口,方便实现不同字符串匹配库的切换.接口封装sunday.h#include<stdio.h>#include<string.h>#include<stdlib.h>#defineKE
工具 c/c++ 2020年11月04日 106次浏览

hyperscan字符串匹配库接口封装

字符串匹配在工作中,需要用字符串匹配,为了可以快速切换不同的库,编写了这个匹配接口,方便实现不同字符串匹配库的切换.接口封装头文件kwmatch.h#ifndef__KWMATCH_H__#define__KWMATCH_H__//controllogprintswitch#defineKW_DEB
工具 c/c++ 2020年11月04日 106次浏览

将rgba图片信息转换为bmp图片文件

将rgba图片信息转换为bmp图片文件#include<stdio.h>#include<windows.h>#pragmapack(1)//BMP文件头(14字节)typedefstruct/****BMPfileheaderstructure****/{unsignedi
工具 c/c++ 2020年11月01日 114次浏览

使用二级指针申请链表

使用二级指针申请链表#include<stdio.h>typedefstructNode_t{intid;structNode*next;}Node;voidmain(){Node*nodeList=NULL;Node*tmp=NULL;fun(&nodeList,10);tmp
c/c++ 2020年09月29日 112次浏览