大家好,我是一个特种兵,代号 SDS

全称 Simple Dynamic String

即简单动态字符串

前些天

Redis 战区遭到外来物种入侵

我的表弟 C字符串 抵挡不住,败退而归

我要帮他报仇

但在那之前,我要先提升战斗力

...

首先,我要换个能计数的智能弹夹

像这样

哦不,放错图了,是这样

这样能快速看到还剩下多少子弹

不像我表弟,

他每次都得把弹夹拿出来,一颗颗数才行

每次想看弹夹里的子弹数

直接看计数器 len 就好了

我们这的枪跟别的不一样

装弹时一不小心装多了

就会缓冲区溢出

说人话就是炸膛

(搭档的类型也是 C字符串)

我那可怜的表弟,

跟他搭档排排站,

结果他搭档一个炸膛

头上直接肿了一个包

前车之鉴

我决定找隔壁的奸商买个头盔

它能在我装弹前提醒我

弹夹里还剩下多少容量

这样就能避免我炸膛了

智能弹夹看使用量

智能头盔看剩余量

完美~

搞定了防具

我还得想办法提升攻击力

经过一阵砍价杀价

我又从隔壁奸商那搞来了一个万能枪口

它能让我发射各种各样的子弹

这也是从小表弟那吸取的经验

他上次打了一发这种子弹后:

(C字符串遇到'\0'则结束)

剩下的子弹就打不出来了

我可不能再搞出这种幺蛾子

在上战场前,

我找到了我的教官做最后的道别

不料他又传授我两个秘技

第一个是“空间预分配”

(更换弹夹,在这里主要是变更弹夹容量,而非补充子弹)

也就是说

只剩一颗子弹时

要换成有子弹容量为 2 的弹夹

这样,其他弹夹才可以留给需要的伙伴

换句话说

手中的加特林有 2MB 子弹了

换弹夹时不用预留太多子弹空间

2MB + 1MB 即可

第二个是“惰性空间释放”

这样可以节省更换弹夹的时间。

呼,终于全副武装

表弟,等我

哥哥一定帮你报仇…

················· END ·················

长按进入小程序,隐藏各种黑科技(更多精彩值得期待……)
最近热文:被封杀的片库网,又恢复了!!!
为什么下载那种小电影时,经常会卡在99%?
推荐一款PDF神器,功能有点逆天!
一周内被程序员疯转5.6W次,最终被大厂封杀!
骂了 10 年,微信这功能终于要来了!2T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,人工智能,考研,软考,英语,等等。在公众号内回复「资源」,即可免费获取!回复「社群」,可以邀请你加入读者群!❤️给个「在看」,是对我最大的支持❤️

Redis之下,大兵SDS的复仇之旅 !相关推荐

  1. Redis 动态字符串(SDS)底层原理详解

    文章目录 前言 1. 动态字符串 1.1 SDS的数据结构 1.2 SDS 与 C 字符串的区别 1.2.1 常数复杂度获取字符串长度 1.2.2 杜绝缓冲区溢出 1.3 减少修改字符串时带来的内存重 ...

  2. Redis 数据结构 :SDS、链表、字典、跳表、整数集合、压缩列表

    文章目录 SDS 结构分析 内存策略 空间预分配 惰性空间释放 总结 链表 结构分析 总结 字典 结构分析 rehash 渐进式rehash 总结 跳表 结构分析 总结 整数集合 结构分析 升级 降级 ...

  3. Redis—字符串和SDS

    一.字符串 字符串的实现代码在sds.c和sds.h文件中. 1.1 字符串介绍 字符串是Redis中最为常见的数据存储类型,其底层实现是简单动态字符串sds(simple dynamic strin ...

  4. python redis 订阅发布_【Python之旅】第七篇(三):使用Redis订阅服务

    在C/S架构中,可以充分地利用Redis订阅服务,实现服务器端和客户端的信息收发,下面说说在Python中如何使用Redistribute的订阅服务. 这里要举的例子是,Server端进行服务的订阅, ...

  5. redis 图片2进制保存_Redis数据结构底层的SDS了解吗

    面试场景 面试官:Redis有哪些数据类型? 我:String,List,set,zset,hash 面试官:没了? 我:哦哦哦,还有HyperLogLog,bitMap,GeoHash,BloomF ...

  6. c语言实现string sds,redis学习 - sds字符串

    redis学习 - sds字符串 Redis 设计与实现:如果想要知道redis底层,这本书可以给予不少的帮助,非常推荐每一位学习redis的同学去翻一翻. sds字符串建议多看看源代码的实现,这篇文 ...

  7. redis源码注释二:简单字符串sds.c sds.h

    1. sds(Simple Dynamic String)简介 sds(Simple Dynamic String)简单动态字符串. redis没有直接用char*,而是使用sds替代char*.为什 ...

  8. Redis 对象的数据结构原理 - SDS、Inset、Dict、ZipList、QuickList、SkipList、RedisObject

    Redis 数据结构 1. SDS Redis 是用 C 语言写的,但是对于 Redis 的字符串,却不是 C 语言中的字符串(即以空字符'\0'结尾的字符数组),它是自己构建了一种名为 简单动态字符 ...

  9. Redis源码阅读笔记(1)——简单动态字符串sds实现原理

    首先,sds即simple dynamic string,redis实现这个的时候使用了一个技巧,并且C99将其收录为标准,即柔性数组成员(flexible array member),参考资料见这里 ...

最新文章

  1. PHP 使用 Redis
  2. python是c语言写的吗-python和C语言的差别
  3. python PyQt5 QtWidgets.QWidget.size()函数 QSize
  4. 你的手机上未安装应用程序”的解决方案
  5. RabbitMQ系列-顺序消费模式和迅速消息发送模式
  6. 汇编语言-010(循环移位ROL,ROR 、进位循环进位RCL,RCR 、有符号数溢出 、双精度移位SHLD,SHRD、SHL和ADD计算 、位运算应用)
  7. BeanUtil使用例子:解析并转化HttpServletRequest到Bean的全面测试
  8. Redis的AOF日志
  9. Python中的运算符是什么?本文详解!
  10. 《中国人工智能学会通讯》——12.44 分类型数据的定义
  11. @PropertySource 解析 yml 配置文件,自定义解析 yaml 工厂类
  12. 计算机网络知识点汇总
  13. PHP中常用的十个字符串函数
  14. CCF201912-3 化学方程式*
  15. 升级win11后,觉得不好用想重装win10系统?教你重装win10“精简版”
  16. 【目标】新学期计划与目标
  17. 点击图片放大,实现移动端双指缩放,单指拖拽功能
  18. 洛谷 T156530 儒略历(传智杯-练习赛)
  19. 手把手教你用owncloud搭建属于自己的云盘
  20. jinja2简单介绍

热门文章

  1. 服务器cpu e系列和x系列,看名识U品 认清E系列服务器CPU
  2. 【2021最新版】ZooKeeper面试题总结(49道题含答案解析)
  3. 公交车大巴车联网监控管理解决方案
  4. DA14580开发工具的下载与使用
  5. 项目管理中story point与时间的关系
  6. 【js】判断某一天是星期几
  7. ft232电路ttl_基于Arduino使用FT232 USB转TTL串口模块
  8. 【茗创科技】如何看待心理学实验中的数据缺失?
  9. PANS:视觉暴露增强了初级视皮层的刺激编码和保持
  10. 上古卷轴5移除瑟拉娜兜帽_《上古卷轴5》那个令我心疼又感动的角色,大小姐瑟拉娜...