redis实现之字典

字典在不进行rehash的时候,使用的是ht[0],进行rehash的时候,ht[0]和ht[1]一起使用。typedefstructdict{//类型特定函数dictType*type;//私有数据void*privdata;//哈希表dicththt[2];//rehash索引//当rehash
数据结构 数据库 2021年01月23日 3次浏览

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

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

通过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日 5次浏览

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日 5次浏览

为什么要有协程

同步IO操作同步IO操作相当于将所有的操作都放进了同一个流程里,如果出现阻塞行为,会导致整个程序的卡顿。客户体验极差。异步IO操作异步IO操作相当于将读写事件放到分支线程中去执行,当执行完毕去通知主线程就可以了,此时主线程可以安心的管理他的事件等操作,而不用浪费事件做这种花费事件很长的读写操作,提升
软件设计 2020年12月28日 53次浏览

redis服务器之AOF持久化

AOF持久化除了RDB持久化功能之外,Redis还提供了AOF(AppendOnlyFile)持久化功能。与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。SETmsg"hello"SADDfrui
数据库 2020年12月28日 51次浏览

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

相同指针陷阱这是一个将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次浏览

zookeeper从入门到入土

zookeeper四个重要路径/master群首建立,用来识别群首用的,一个集群只能有一个。/workers节点作为父节点,其下每个znode子节点保存了系统中一个可用从节点信息。/tasks节点作为父节点,其下每个znode子节点保存了所有已经创建并等待从节点执行的任务的信息,主-从模式的应用的客
工具 2020年11月21日 89次浏览

多线程的虚假唤醒理解

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