HTML <samp> 标签是一个短语标签,用于在浏览器中表示来自计算机程序或脚本的示例输出。在 <samp> 和 </samp> 标签之间的内容会在浏览器中呈现为默认的等宽字体。注意:<samp> 标签尚未被弃用,但您也可以使用 CSS 属性来实现相同的效果。

- 阅读剩余部分 -

HTML <s> 标签用于表示一段内容在某种程度上不再准确或相关。在 <s>(开始)和 </s>(结束)标签之间的文本会被显示为中划线。注意:不要将 <s> 与 <del> 和 <s> 混淆,因为 <del> 用于已删除或从文档中移除的文本,而 <s> 表示不再准确的文本。

- 阅读剩余部分 -

HTML <ruby> 标签用于在网页上表示 ruby 注释。Ruby 注释在显示中文和日文等东亚字符的发音时非常有用。<ruby> 标签包含一个或多个 <rt> 元素,用于给出 ruby 注释的发音,并在注释字符的上方显示。它还可以包含一个(可选的) <rp> 元素,用作不支持 ruby 注释的浏览器的回退括号。HTML <ruby> 标签还可以用于表示与主要内容相关的小注释,而不仅限于东亚语言。

- 阅读剩余部分 -

说说主从数据同步的方式?

Redis在2.8及以上版本使用psync命令完成主从数据同步,同步过程分为:全量复制和部分复制。

redis-7518f715-6dee-4e70-b972-8aed9879e451.png

全量复制通常用于初始复制的场景。在早期的Redis版本中,只支持全量复制,它会将主节点的所有数据一次性发送给从节点。然而,当数据量较大时,这会对主从节点和网络造成很大的开销。

全量复制的完整运行流程如下:

  1. 从节点发送psync命令进行数据同步。由于是第一次复制,从节点没有复制偏移量和主节点的运行ID,因此发送psync-1
  2. 主节点根据psync-1解析出当前为全量复制,并回复+FULLRESYNC响应。
  3. 从节点接收主节点的响应数据,并保存运行ID和偏移量offset。
  4. 主节点执行bgsave命令将数据保存到RDB文件中。
  5. 主节点将RDB文件发送给从节点,从节点接收并保存该文件作为自身的数据文件。
  6. 在从节点接收RDB快照期间,主节点仍然响应读写命令,并将这段时间内的写命令数据保存在复制客户端缓冲区中。当从节点加载完RDB文件后,主节点再将缓冲区内的数据发送给从节点,以确保主从数据的一致性。
  7. 从节点接收主节点传输的所有数据后,清空自身的旧数据。
  8. 从节点加载完RDB后,如果开启了AOF持久化功能,会立即执行bgrewriteaof操作,以确保全量复制后AOF持久化文件立即可用。

部分复制是Redis针对全量复制开销较高的情况进行的优化措施,使用psync {runId} {offset}命令实现。当从节点正在复制主节点时,若出现网络中断或命令丢失等异常情况,从节点会向主节点请求补发丢失的命令数据。如果主节点的复制积压缓冲区中存在这些数据,主节点会直接发送给从节点,从而保持主从数据的一致性。

具体的部分复制流程如下:

  1. 当主从节点之间的网络中断超过repl-timeout时间后,主节点会认为从节点发生故障并中断复制连接。
  2. 在主从连接中断期间,主节点仍然响应命令,但由于复制连接中断,命令无法发送给从节点。然而,主节点内部存在复制积压缓冲区,仍然可以保存最近一段时间的写命令数据,默认最大缓存大小为1MB。
  3. 当主从节点的网络恢复后,从节点会重新连接主节点。
  4. 主从连接恢复后,从节点会发送之前保存的复制偏移量和

主节点的运行ID作为psync命令的参数,请求进行部分复制操作。

  1. 主节点接收到psync命令后,首先核对参数中的运行ID是否与自身一致。如果一致,表示之前进行复制的是当前的主节点。然后,主节点根据偏移量在复制积压缓冲区中查找数据。如果偏移量之后的数据存在于缓冲区中,主节点会向从节点发送+CONTINUE响应,表示可以进行部分复制。
  2. 主节点根据偏移量将复制积压缓冲区中的数据发送给从节点,确保主从复制进入正常状态,保持数据的一致性。

HTML <rp> 标签用于为在浏览器中无法显示 ruby 注释的内容提供回退括号。Ruby 注释用于在几种亚洲语言中显示特定字符,使用 <ruby> 元素。<rp> 标签必须将包含注释文本的 <rt> 元素与括号一起括起来。

- 阅读剩余部分 -