自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (2)
  • 收藏
  • 关注

原创 使用gdb查看程序异常退出调用栈

源码:#include <stdio.h>#include <iostream> using namespace std;void func(){ int a[10]; for (int i = 0; i < 11; i++) { a[i] = i; // 这里数组会溢出 }} int main(){ fprintf(stdout, "test start\n"); func(); fprintf(stdout, "test finis

2021-08-29 16:47:49 1259

原创 redis源码学习--对象

redis中把所有用到的数据结构都抽象成对象,所以对象就是对SDS,压缩列表,双向链表和字典的集合,可以分为字符串对象,列表对象,哈希对象,集合对象,有序集合对象。对象的结构体typedef struct redisObject { /* REDIS_STRING 字符串对象 REDIS_LIST 列表对象 REDIS_HASH 哈希对象 REDIS_SET 集合对象 REDIS_ZSET 有序集合对象 */ unsi

2021-07-25 18:44:13 95

原创 redis源码学习--数据结构:SDS设计和实现

redis源码学习--数据结构:SDS设计和实现SDS数据结构定义API实现SDS数据结构定义SDS是simple dynamic string的缩写,是redis定义的字符串的数据结构。根据需要保存的字符串长度的差异,不同结构体定义如下,使用的柔性数组,例如sizeof(struct sdshdr5 )只会计算flags的长度,如果写成:/* Note: sdshdr5 is never used, we just access the flags byte directly. * Howeve

2021-07-11 19:27:40 164

原创 linux中更换文件系统方法

小例子:源文件:foo.c#include<stdio.h>void foo(){ printf("infoo2\n");}test1.c#include <stdio.h>#include <unistd.h>extern void foo(void); // 避免extern 懒得写.hint main(int argc, char * argv[]){loop: foo(); sleep(1); goto loop; return

2020-08-16 20:20:14 1149

原创 redis源码学习--数据结构:跳跃表设计和实现

跳跃表可以方便实现有序存储,可以理解为链表的升级版。所以通过二分查找,可以实现平均O(logN),最坏O(N)的复杂度查找。据说大部分情况可以和平衡树相媲美,但是实现更为简单。先学习跳跃表的原理,可以参考:跳跃表的原理及实现总结几点就是:1、层是为了方便实现二分查找设计的2、理想情况下x层的元素数量是x+1层元素数量的2倍。0层保存了所有的节点,1层保存了0层奇数序的节点(也可以是偶数序),2层保存了1层奇数序的节点。理想情况下层数(不包含0层)和元素数量是2的指数关系,即为了最理想的实现二分查找,

2020-08-09 16:39:44 152

原创 redis源码学习--数据结构:字典设计和实现

redis的字典定义在dict.h,使用hash来实现,所以需要先了解hash的基础知识。一般hash是用数组实现,根据key计算出数组下标存放value,有可能多个key值会对于一个索引,即key产生冲突,redis使用链地址法解决,即索引下存放的是value的链表。数组使用的数量和申请大小的比值称为负载因子,负载因子越大,表示key产生冲突的概率就越大,需要扩充数组;负载因子越小,表示不有内存被浪费,可以缩小数组。以上调整数组大小称为rehash。rehash前后由key计算索引的公式是不一样的。我

2020-07-12 20:51:50 128

原创 redis源码学习--数据结构:ziplist实现

本文接上篇"redis源码学习–数据结构:ziplist设计"https://blog.csdn.net/dmgy614262711/article/details/105879969一下是entry定义的数据结构/* We use this function to receive information about a ziplist entry. * Note that this is...

2020-06-07 21:53:56 158

原创 redis源码学习--数据结构:ziplist设计

redis源码学习–数据结构:ziplistziplist的重点在于压缩,为了高效使用内存,需要对数据结构进行压缩。链表结构理论上需要有额外的空间存储指针字段,所以ziplist实际上用的是连续内存。下面介绍ziplist的结构字段解释zlbytes占4个字节,表示整块结构的长度,包含自己zltail占4个字节,从头到最后一个元素的偏移地址,可以方便的从后遍历...

2020-05-01 21:18:53 228 1

原创 redis源码学习--数据结构:链表

redis源码学习–数据结构之链表@TOCredis中的链表介绍redis中使用的是双向链表,定义在目录src\adlist.c中,结构体定义在同名的头文件中。src\adlist.c封装了链表的API新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作...

2020-05-01 11:35:07 144 1

原创 最短路径问题以及包含过路费的问题--动态规划式的解法

求最短路径的dijkstra算法(详细算法原理自行百度,简单从动态规划角度思考),可以看成是一个动态规划的方法。 动态规划算法通常基于一个递推公式及一个或多个初始状态。当前子问题的解将由上一次子问题的解推出。 dijkstra虽然没有递推公式,但是满足将大问题分解成子问题,当前问题的解由上一次子问题的解推出。算法的思想是 使用了三个一维数组,分别是visit[k],pre_node[k],sh

2017-03-05 16:56:49 913

原创 算法导论--动态规划

自我感觉对于动态规划还比较不熟悉,所以专门看了《算法导论》里面第15章,动态规划这一章。对其中的钢条切割、矩阵链乘法、最长公共子序列和最优搜索二叉树这些问题有一定了解。 动态规划是一种解决最优化问题的方法,而不是一种算法。通常需要解决的这些问题有很多解,这些解都有一个值,找出值最大(最小)的解,通常动态规划可以找出最优的值,以及其中一个最优解,无法找出所有的最优解。 动态规划方法求解问题的四个步

2017-03-01 18:45:15 260

原创 最短路径和最少花费问题--动态规划

最短路径和最少花费问题–动态规划求最短路径的dijkstra算法,可以看成是一个动态规划的方法。 动态规划算法通常基于一个递推公式及一个或多个初始状态。当前子问题的解将由上一次子问题的解推出。 dijkstra虽然没有递推公式,但是满足将大问题分解成子问题,当前问题的解由上一次子问题的解推出。算法的思想是 使用了三个一维数组,分别是visit[k],pre_node[k],short[k]来分

2017-02-23 18:28:24 4894

原创 Linux程序设计--12.5.2用互斥量进行同步

非日常

2016-08-09 09:46:57 298

原创 数据结构(C语言):链表,约瑟夫问题

开始学习数据结构,把写过的代码发上来,希望可以给有需要的人一个参考。//本代码由 大漠孤烟 整理编写,并验证通过//求解约瑟夫问题,涉及到链表节点的生成,节点的插入和删除,对理解链表非常有好处//N个节点围城一圈,从第一个节点开始计数(1),每数到第M的数删除,看最后留下那个数#include#include#includetypedef struct LNode{ int

2016-01-19 13:45:51 1042

STM32使用tim2 4个通道输出互补SPWM 幅度最大

TIM2_CH1和TIM2_CH2是一组,轮流交替生成SPWM,TIM2_CH1生成SPWM时,TIM2_CH2保持为0;TIM2_CH2生成SPWM时,TIM2_CH1保持为0; TIM2_CH3和TIM2_CH4是一组,轮流交替生成SPWM,TIM2_CH3生成SPWM时,TIM2_CH4保持为0;TIM2_CH4生成SPWM时,TIM2_CH3保持为0; PWM频率40K, 要求在TIM2_CH1的SPWM中点时,TIM2_CH3开始生成SPWM,(两组波形的相位相差90度)

2014-03-20

STM32 ADC由定时器触发转换

STM32 ADC由通用定时器3触发转换,并将转换的模拟量通过8个LED灯表示出来

2014-03-20

空空如也

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

TA关注的人

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