专门为嵌入式读者打造的C语言进阶学习。学习重点不再是C语言的基本语法,而是和嵌入式、C语言相关的一系列知识。 作者以C语言为切入点,分别探讨了嵌入式开发所需要的诸多核心理论和技能,力图帮助读者从零搭建嵌入式开发所需要的完整知识体系和技能树。本书从底层CPU的制造流程和工作原理开始讲起,到计算机体系结构,C程序的反汇编分析,程序的编译、运行和重定位,程序运行时的堆栈内存动态变化,GNU C编译器的扩展语法,指针的灵活使用,C语言的面向对象编程思想,C语言的模块化编程思想,C语言的多任务编程思想,进程、线程和协程的概念,从底层到上层,从芯片、硬件到软件、框架,几乎涵盖了嵌入式开发的所有知识点。

文件:url80.ctfile.com/f/25127180-605686570-e19cc4?p=551685 (访问密码: 551685)


以下内容无关:

RDB是一种快照的方式然后AOF是一种就是指令追加的方式。

它们两个都是Redis里面的一种数据持久化的一个机制。

RDB它是快照嘛,快照的话它的那个时间间隔它会有一个配置但是这种配置过程中就是有可能会导致说我的数据丢失的一个问题。

但是AOF它是那种就是追加的方式嘛,所以它的一个数据安全性可能会比RDB会好一点。

高手:#
好的,关于这个问题,我从几个点来回答。

首先,Redis本身是一个基于Key-Value结构的内存数据库,为了避免Redis故障导致数据丢失的问题,所以提供了RDB和AOF两种持久化机制。

RDB是通过快照的方式来实现持久化的,也就是说会根据快照的触发条件,把内存里面的数据快照写入到磁盘,

以二进制的压缩文件进行存储。

image-20220518191233899

RDB快照的触发方式有很多,比如

执行bgsave命令触发异步快照,执行save命令触发同步快照,同步快照会阻塞客户端的执行指令。
根据redis.conf文件里面的配置,自动触发bgsave
主从复制的时候触发
AOF持久化,它是一种近乎实时的方式,把Redis Server执行的事务命令进行追加存储。简单来说,

就是客户端执行一个数据变更的操作,Redis Server就会把这个命令追加到aof缓冲区的末尾,

然后再把缓冲区的数据写入到磁盘的AOF文件里面,至于最终什么时候真正持久化到磁盘,是根据刷盘的策略来决定的。

image-20220518192429097

另外,因为AOF这种指令追加的方式,会造成AOF文件过大,带来明显的IO性能问题,所以Redis针对这种情况提供了

AOF重写机制,也就是说当AOF文件的大小达到某个阈值的时候,就会把这个文件里面相同的指令进行压缩。

image-20220518194041006

因此,基于对RDB和AOF的工作原理的理解,我认为RDB和AOF的优缺点有两个。

RDB是每隔一段时间触发持久化,因此数据安全性低,AOF可以做到实时持久化,数据安全性较高
RDB文件默认采用压缩的方式持久化,AOF存储的是执行指令,所以RDB在数据恢复的时候性能比AOF要好
在我看来,所谓优缺点,本质上其实是哪种方案更适合当前的应用场景而已。

以上就是我对这个问题的理解!

总结#
这个问题的实际意义在于,求职者要知道在什么场景下选择什么样的持久化策略。

因此如果能够对AOF和RDB这两种持久化方式有比较深入的理解,

那自然也就能够在实际开发中合理的进行应用了。

嵌入式C语言自我修养——从芯片、编译器到操作系统相关推荐

  1. 嵌入式C语言自我修养:从芯片、编译器到操作系统(附送书籍)

    关注+星标公众号,不错过精彩内容 来源 | 宅学部落 最近,阅读了王工(王利涛)赠送的一本由他编著的书籍<嵌入式C语言自我修养>,感觉写的挺不错.今天分享一下这本书籍<嵌入式C语言自 ...

  2. 每日一书丨嵌入式C语言自我修养:从芯片、编译器到操作系统

    最近,阅读了王工(王利涛)赠送的一本由他编著的书籍<嵌入式C语言自我修养>,感觉写的挺不错.今天分享一下这本书籍<嵌入式C语言自我修养>:从芯片.编译器到操作系统. 从芯片.编 ...

  3. 跟涛哥一起学习嵌入式 33:《嵌入式C语言自我修养》书稿V1.0版

    经常有网友要我推荐一些关于嵌入式方面的书,尤其是一些转行学嵌入式的朋友,该看那些书能快速构建嵌入式学习所需要的知识体系呢?嵌入式是一门交叉学科,没有足够的知识储备,上来就学习的话,往往也就成了走过场, ...

  4. 嵌入式C语言自我修养:从芯片、编译器到操作系统-习题、笔记

    前沿 C语言测试(1):基本概念考查 什么是标识符.关键字和预定义标识符? 三者有何区别? 标识符(Identifier):由程序员定义,用来表示变量,包括了变量名.函数名.宏名.结构体名等. 标识符 ...

  5. 嵌入式C语言自我修养 (11):有一种函数,叫内建函数

    11.1 什么是内建函数 内建函数,顾名思义,就是编译器内部实现的函数.这些函数跟关键字一样,可以直接使用,无须像标准库函数那样,要 #include 对应的头文件才能使用. 内建函数的函数命名,通常 ...

  6. 嵌入式C语言自我修养 04:Linux 内核第一宏:container_of

    4.1 typeof 关键字 ANSI C 定义了 sizeof 关键字,用来获取一个变量或数据类型在内存中所占的存储字节数.GNU C 扩展了一个关键字 typeof,用来获取一个变量或表达式的类型 ...

  7. 嵌入式C语言自我修养 (04):Linux 内核第一宏:container_of

    4.1 typeof 关键字 ANSI C 定义了 sizeof 关键字,用来获取一个变量或数据类型在内存中所占的存储字节数.GNU C 扩展了一个关键字 typeof,用来获取一个变量或表达式的类型 ...

  8. 嵌入式C语言自我修养 08:变参函数的格式检查

    8.1 属性声明:format GNU 通过 __atttribute__ 扩展的 format 属性,用来指定变参函数的参数格式检查. 它的使用方法如下: __attribute__(( forma ...

  9. 跟涛哥一起学嵌入式 20:后ARM时代,嵌入式工程师的自我修养

    1 嵌入式学习的一些概念理解误区 很多嵌入式初学者认为,学嵌入式,就是学习ARM,就是学习开发板.买一块开发板,然后在上面"移植"u-boot.Linux内核,再使用busybox ...

最新文章

  1. [转]g++ 编译多个相关文件
  2. C语言结构体例子 (一)
  3. DL之Encoder-Decoder:Encoder-Decoder结构的相关论文、设计思路、关键步骤等配图集合之详细攻略
  4. mysql insert 1062_一则 insert 报 ERROR 1062 (23000): Duplicate entry 'xxx' for key,请帮忙看看...
  5. 赛事丨出道题就能赢万元奖金?华录杯大赛告诉你,是真的
  6. python反转列表不用切片_关于python:使用切片表示法反转列表
  7. android elf 加固_APK一键自动化加固脚本
  8. 阿里健康上线新冠核酸检测服务:本周覆盖北京武汉等38城
  9. 纽约人寿CEO加入NYDIG董事会
  10. SAP License:SAP中的一些问题及处理
  11. 面对自然灾害,科技能做什么?
  12. eclipse新建java项目_用eclipse创建Java项目(以一个初学者的角度全面教学)
  13. 《Excel 小技巧》之 一个单元格换行显示日期和星期
  14. Android基础学习(十五)—— 序列化与反序列化(包括 JSON、GSON))
  15. 服务器系统2016开始菜单,大法将致:将Windows Server 2016打造成个人办公系统,WIN2016打造成超级WIN10,WIN2016优化设...
  16. C++程序的存储空间布局
  17. Apple Pay支付分享
  18. android浏览器 url,java – 在Android浏览器中获取当前URL
  19. 2017年暑假实习面经: 去哪儿网(一面, 二面, HR面, Offer), 腾讯IEG(一面, GG...), 百度(一面, 二面, 三面, offer)
  20. mysql xor详细_PHP MySQL应用中使用XOR运算加密算法分享

热门文章

  1. 初二计算机知识,初二信息技术考试试题及答案
  2. 前端之JS条件、循环语句
  3. CS61B :链表(IntList,SLList....)
  4. java ee课程设计报告书_Javaee-课程设计报告
  5. 现代优化算法(五): 蚁群算法
  6. Mysql 后台日志写shell(root权限)
  7. 特步2020年总收入81.72亿元,主品牌下半年显著复苏
  8. 四六级听力考试高频词汇分类记忆-旅游交通类
  9. GD32F103配置SPI+DMA收发数据
  10. 物联网开发和管理平台 - shifu 了解与学习