数据分区理论

分布式数据库首先要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整体数据的一个子集。

哈希算法

我们可能很快就想到了:哈希算法。因为对同一个关键字进行哈希计算,每次计算都是相同的值,这样就可以将某个 key 确定到一个节点了,可以满足分布式系统的负载均衡需求。

哈希算法最简单的做法就是进行取模运算,比如分布式系统中有 3 个节点,基于 hash(key) % 3 公式对数据进行了映射。

如果客户端要获取指定 key 的数据,通过下面的公式可以定位节点:

阅读更多

在 Windows 下 VMware 虚拟机的硬盘扩容

扩容硬盘

关闭虚拟机后可以方便的使用图形化界面扩容,这里就不再赘述。下面重点将如何使用命令行操作

使用 vmware-vdiskmanager 扩容

命令如下

1
vmware-vdiskmanager -x [新大小]GB [VMDK文件路径]
阅读更多

红黑树规则

基本规则

  1. 每个结点或是红色,或是黑色的。
  2. 根结点是黑色的。
  3. 叶结点 (虚构的外部结点、NULL结点) 都是黑色的。
  4. 不存在两个相邻的红结点(即红结点的父结点和孩子结点均是黑色的)。
  5. 对每个结点,从该结点到任一叶结点的简单路径上,所含黑结点的数量相同。

简记为:左根右(二叉排序树),根叶黑,不红红,黑路同(黑高相同)

插入规则

非空红黑树插入

阅读更多

longest-increasing-subsequence

要求数组中严格递增的最长公共子序列,解题思路可以从简单到复杂逐步展开。以下是逐步深入的解题思路:

1. 暴力求解

  • 思路: 最简单的方式就是直接穷举数组的所有子序列,并检查这些子序列是否是严格递增的。找到所有严格递增的子序列后,选择其中长度最长的一个。
  • 步骤:
    1. 生成数组的所有可能的子序列。
    2. 对每个子序列进行判断,检查是否严格递增。
    3. 返回长度最长的严格递增子序列。
阅读更多

NVM (Node Version Manager) 使用手册

NVM (Node Version Manager) 是一个用于管理 Node.js 版本的工具,特别方便在项目中需要切换不同 Node.js 版本的情况。以下是 NVM 的基本使用教程:

1. 安装 NVM

macOS/Linux

在 macOS 或 Linux 上,可以通过以下命令安装 NVM:

1
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
阅读更多

Spring Interceptor 与 Filter 的区别

在 Web 应用程序中,FilterInterceptor都是用于处理请求和响应的重要组件。它们可以在请求处理的不同阶段进行干预,实现诸如身份验证、日志记录、数据过滤等功能。本文将详细介绍 Spring 中InterceptorFilter的实现方式,帮助您更好地理解和应用这两种技术。

一、Interceptor 和 Filter 的区别

InterceptorFilter都是 AOP(面向切面编程)的实现方式,但它们有一些区别:

阅读更多

PVE下创建LXC debian 容器并安装docker

为了不影响PVE这个宿主机,推荐使用套娃的形式安装Docker。首先现在CT模板中创建 Linux 容器,推荐使用Debian。

创建过程倒没有什么特别,设置要静态ip网关即可,因为这个Docker服务的媒体大数据都是通过专门的nas盘挂载,本身不需要太大的空间。

好处:

docker的环境对宿主机没有太大的侵入性

LXC容器的显卡直通不会让宿主机无法输出画面

创建LXC Debian 容器

创建

设置如下:

阅读更多

Proxmox VE Qemu/KVM 虚拟机设置要求

Qemu(Quick Emulator 的缩写)是一种模拟物理计算机的开源虚拟机管理程序。从运行 Qemu 的主机系统的角度来看,Qemu 是一个用户程序,它可以访问许多本地资源,如分区、文件、网卡,然后将这些资源传递给模拟计算机,模拟计算机将它们视为真实设备.

在模拟计算机中运行的来宾操作系统访问这些设备,并像在真实硬件上运行一样运行。例如,您可以将 ISO 映像作为参数传递给 Qemu,在模拟计算机中运行的操作系统将看到插入 CD 驱动器的真实 CD-ROM。

Qemu 可以模拟从 ARM 到 Sparc 的多种硬件,但 Proxmox VE 只关注 32 位和 64 位 PC 克隆模拟,因为它代表了绝大多数服务器硬件。由于处理器扩展的可用性,当模拟架构与主机架构相同时,PC 克隆的仿真也是最快的之一。

阅读更多

字体研究

编程字体推荐

  • JetBrains Mono
  • FiraCode
  • Iosevka
  • Sarasa Mono
  • MapleMono SC NF

个人最终选择:Sarasa Mono + Nert Font 自己编译的字体。能够实现中英文严格等宽。

衬线和非衬线

衬线体(serif)和非衬线体(sans-serif)的分类起源于英文字体。

阅读更多