280篇 Default中的文章

Redis夺命连环11问

说说Redis基本数据类型有哪些吧

  1. 字符串:redis没有直接使用C语言传统的字符串表示,而是自己实现的叫做简单动态字符串SDS的抽象类型。C语言的字符串不记录自身的长度信息,而SDS则保存了长度信息,这样将获取字符串长度的时间由O(N)降低到了O(1),同时可以避免缓冲区溢出和减少修改字符串长度时所需的内存重分配次数。
  2. 链表linkedlist:redis链表是一个双向无环链表结构,很多发布订阅、慢查询、监视器功能都是使用到了链表来实现,每个链表的节点由一个listNode结构来表示,每个节点都有指向前置节点和后置节点的指针,同时表头节点的前置和后置节点都指向NULL。
  3. 字典hashtable:用于保存键值对的抽象数据结构。redis使用hash表作为底层实现,每个字典带有两个hash表,供平时使用和rehash时使用,hash表使用链地址法来解决键冲突,被分配到同一个索引位置的多个键值对会形成一个单向链表,在对hash表进行扩容或者缩容的时候,为了服务的可用性,rehash的过程不是一次性完成的,而是渐进式的。
  4. 跳跃表skiplist:跳跃表是有序集合的底层实现之一,redis中在实现有序集合键和集群节点的内部结构中都是用到了跳跃表。redis跳跃表由zskiplist和zskiplistNode组成,zskiplist用于保存跳跃表信息(表头、表尾节点、长度等),zskiplistNode用于表示表跳跃节点,每个跳跃表的层高都是1-32的随机数,在同一个跳跃表中,多个节点可以包含相同的分值,但是每个节点的成员对象必须是唯一的,节点按照分值大小排序,如果分值相同,则按照成员对象的大小排序。
  5. 整数集合intset:用于保存整数值的集合抽象数据结构,不会出现重复元素,底层实现为数组。
  6. 压缩列表ziplist:压缩列表是为节约内存而开发的顺序性数据结构,他可以包含多个节点,每个节点可以保存一个字节数组或者整数值。

More ~

wsl 参考的对象类型不支持尝试的操作

wsl无法使用,闪退。起初怀疑是wsl装的有问题,就将wsl按照 https://docs.microsoft.com/zh-cn/windows/wsl/install-win10 重新安装了一次。
安装了docker-desktop后 这个docker-desktop也是闪退。报出Failed to set version to docker-desktop: exit code: -1
这样的错误。

最终百度到:
powershell (管理员)下执行

netsh winsock reset 

不用重启系统。即可。
这时docker-desktop也可以玩了。

More ~

curl ipv6

curl with ipv6 sample code:

# interface 'eth0' is the interface with ipv6 enabled
curl -g -6 'http://[fe80::3ad1:35ff:fe08:cd%eth0]:80/'
curl -g -6 'http://[fe80::3ad1:35ff:fe08:cd]'

# https without ssl validate
curl -g -k -6 'https://[fe80::3ad1:35ff:fe08:cd]'
More ~

linux之 /etc/fstab 详解

/etc/fstab 是 Linux 和其他类 Unix 操作系统的配置文件,用于描述文件系统。它包含有关文件系统的位置、挂载点、文件系统类型和挂载选项的信息。

/etc/fstab 的每一行描述一个文件系统,格式如下:

<file system> <mount point> <type> <options> <dump> <pass>
  • <file system> 是文件系统的位置,可以是设备文件(如 /dev/sda1)、分区 UUID(如 UUID=6c38203b-0ddc-4e35-a4a7-60733e8c1532)或文件系统标签(如 LABEL=MyDataPartition)。
  • <mount point> 是文件系统在文件系统层次结构中的挂载点。
  • <type> 是文件系统的类型,如 ext4xfsswap
  • <options> 是挂载该文件系统时使用的选项,如 rw(可读写)、ro(只读)或 noatime(不更新访问时间)。
  • <dump> 指定文件系统是否应由 dump 程序备份。0 表示不备份,1 表示备份。
  • <pass> 指定文件系统在 fsck 程序检查文件系统时应经过的检查次数。0 表示不检查,1 表示检查一次,以此类推。

以下是 /etc/fstab 中的一些常见示例:

/dev/sda1 / ext4 rw,relatime 0 1
/dev/sda2 /home ext4 rw,relatime 0 2
/dev/sda3 /data ext4 rw,relatime 0 3
/dev/sdb1 /mnt/backup ext4 rw,relatime 0 0
/dev/sdc1 swap swap defaults 0 0

在上面的示例中:

  • /dev/sda1 是根文件系统,挂载在 /
  • /dev/sda2/home 目录的文件系统,挂载在 /home
  • /dev/sda3/data 目录的文件系统,挂载在 /data
  • /dev/sdb1 是备份文件系统,挂载在 /mnt/backup
  • /dev/sdc1 是交换分区,用于虚拟内存。

您可以使用 mount 命令挂载文件系统,也可以使用 umount 命令卸载文件系统。

有关 /etc/fstab 的更多信息,请参阅 man fstab 手册页。

More ~

nginx隐藏错误页的版本号

The “server_tokens” directive is responsible for displaying the Nginx version number and Operating system on error pages and in the “Server” HTTP response header field as shown in the following screenshot.

To disable this, you need to turn off the server_tokens directive in /etc/nginx/nginx.conf configuration file.

vi /etc/nginx/nginx.conf

More ~