REDIS 五月 10, 2019

Redis底层数据结构

文章字数 18k 阅读约需 16 mins.

简单动态字符串(SDS)

相较于C字符串的优点:

  • 常数复杂度获取字符串长度。
  • 杜绝缓冲区溢出。C字符串不记录自身长度容易造成缓冲区溢出,SDS修改时,API会自动将SDS的空间扩展至执行修改所需的大小,然后才执行实际的修改操作。
  • 减少修改字符串时带来的内存重分配次数。SDS采用空间预分配(增长操作)和惰性释放(缩短操作
  • 二进制安全。C字符串只能保存文本数据,而不能保存像图片、音频、视频、压缩文件这样的二进制数据。SDS可以保存任意格式的二进制数据。
  • 兼容部分C字符串函数,避免了不必要的代码重复。

链表

链表被广泛用于实现Redis的各种功能,比如列表、发布与订阅、慢查询、监视器等。

listNode...

查看全文

REDIS 五月 10, 2019

Redis底层数据结构

文章字数 18k 阅读约需 16 mins.

简单动态字符串(SDS)

相较于C字符串的优点:

  • 常数复杂度获取字符串长度。
  • 杜绝缓冲区溢出。C字符串不记录自身长度容易造成缓冲区溢出,SDS修改时,API会自动将SDS的空间扩展至执行修改所需的大小,然后才执行实际的修改操作。
  • 减少修改字符串时带来的内存重分配次数。SDS采用空间预分配(增长操作)和惰性释放(缩短操作
  • 二进制安全。C字符串只能保存文本数据,而不能保存像图片、音频、视频、压缩文件这样的二进制数据。SDS可以保存任意格式的二进制数据。
  • 兼容部分C字符串函数,避免了不必要的代码重...
查看全文

网络 四月 23, 2019

HTTP、HTTPS协议详解

文章字数 5.6k 阅读约需 5 mins.

早期以信息发布为主的Web 1.0时代,HTTP已可以满足绝大部分需要。证书费用、服务器的计算资源都比较昂贵,作为HTTP安全扩展的HTTPS,通常只应用在登录、交易等少数环境中。但随着越来越多的重要业务往线上转移,网站对用户隐私和安全性也越来越重视。对于防止恶意监听、中间人攻击、恶意劫持篡改,HTTPS是目前较为可行的方案,全站HTTPS逐渐成为主流网站的选择。

HTTP(HyperText Transfer Protocol,超文本传输协议),是一种无状态 (stateless) 协议,提供...

查看全文

密码学 四月 02, 2019

密码学初探

文章字数 5.6k 阅读约需 5 mins.

密码学有着严格的规范,其算法的实现原理是公开的。密码学算法是相对安全的,主要解决四个问题:

  • 机密性(隐私性):在网络中传递的数据如果具备机密性,只有拥有密钥的才能解释这些数据,密钥是加密算法的关键。
  • 完整性:接收方能够确保接收到的数据就是发送方发送的原始数据,在密码学中,主要使用消息验证码(MAC)算法保证完整性。
  • 身份验证:通信双方必须确保对端就是要通信的对象。在密码学中,一般使用数字签名技术确认身份。
  • 不可抵赖性:在密码学中,数字签名技术能够避免抵赖。

OpenSSL:是SSLTLS...

查看全文

网络 三月 21, 2019

计算机网络、TCP原理

文章字数 6k 阅读约需 5 mins.

  • 应用层:通过应用进程间的交互来完成特定的网络应用。应用层协议定义的是应用进程间通信和交互的规则。应用层交互的数据单元成为报文。常用应用层协议有HTTP、DNS、FTP、SMTP。

  • 运输层:运输层的任务就是负责向两个主机中进程之间的通信提供通用的数据传输服务。运输层主要使用以下两种协议:

    TCP:提供面向连接的、可靠的数据传输服务,其数据传输单位是报文段。

    UDP:提供无连接的、尽最大努力的数据传输服务,其数据传输的单位是用户数据报

  • 网络层:选择合适的网间路由和交换结点,为分组交换网上...

查看全文
0%