P2P 通信最大的障碍就是 NAT(网络地址转换),NAT 使得局域网内的设备也可以与公网进行通讯,但是不同 NAT 下的设备之间通讯将会变得很困难。UDP 打洞就是用来使得设备间绕过 NAT 进行通讯的一种技术。 简单解释 NAT NAT 大家应该十分熟悉了,它分为几种。一种就叫做 NAT,它只对 IP 地址进行转换;另一种叫做 NAPT(Network Address/Port Tra...
OpenWRT overlay 空间扩容
安装 OpenWRT 咔咔塞了一大堆插件后,可怜的剩余空间被插件和日志耗尽,不得不对 OpenWRT overlay 进行扩容,本文对此进行了记录 什么是 overlay OpenWRT 一般使用的文件系统是 SquashFS ,这个文件系统的特点就是:只读。 一个只读的文件系统要怎么做到保存设置和安装软件的呢?这里就是使用 /overlay 的分区,overlay 顾名思义就...
在 Ubuntu 上安装 Dockers Engine 流程
先决条件 操作系统要求 要安装 Docker Engine,您需要以下 Ubuntu 版本之一的 64 位版本: Ubuntu Jammy 22.04 (LTS) Ubuntu 小鬼 21.10 Ubuntu 焦点 20.04 (LTS) Ubuntu 仿生 18.04 (LTS) x86_64(或amd64)],armhf,arm64和s390x架构支持 Docke...
Redis的持久化机制:RDB和AOF
什么是Redis持久化 Redis作为一个键值对内存数据库(NoSQL),数据都存储在内存当中,在处理客户端请求时,所有操作都在内存当中进行,如下所示: 这样做有什么问题呢? 其实,只要稍微有点计算机基础知识的人都知道,存储在内存当中的数据,只要服务器关机(各种原因引起的),内存中的数据就会消失了,不仅服务器关机会造成数据消失,Redis服务器守护进程退出,内存中的数据也一样会消失。...
在 PVE 虚拟环境中安装 OpenWRT 流程
前言 前几天捡垃圾¥230淘到一台惠普800G1 SFF 准系统,正好家里缺一台服务器,就直接配了块G3250,先尝试装上PVE实现一波AIO服务器,这篇文章记录下在 pve 环境下折腾 openwrt 的心得,顺便学习下 pve 安装 PVE 在官网中下载 ISO 镜像 烧录到 U 盘中 使用U盘启动 安装,具体可参考【纯净安装】Proxmox-VE ISO原版 安装 ...
跳表原理
跳表(skip list) 对标的是平衡树(AVL Tree),是一种 插入/删除/搜索 都是 O(log n) 的数据结构。它最大的优势是原理简单、容易实现、方便扩展、效率更高。因此在一些热门的项目里用来替代平衡树,如 redis, leveldb 等。 跳表的基本思想 首先,跳表处理的是有序的链表(一般是双向链表,下图未表示双向),如下: 这个链表中,如果要搜索一个数,需要从头到...
布隆过滤器原理和使用方法
布隆过滤器是程序员的一把利器,利用它可以快速地解决项目中一些比较棘手的问题。如网页 URL 去重、垃圾邮件识别、大集合中重复元素的判断和缓存穿透等问题。 布隆过滤器(Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识...
Redis 缓存雪崩、击穿、穿透
缓存雪崩 雪崩定义 举个简单的例子: 如果所有首页的Key失效时间都是12小时,中午12点刷新的,假设有个秒杀活动大量用户涌入,假设当时每秒 6000 个请求,本来缓存在可以扛住每秒 5000 个请求,但是缓存当时所有的Key都失效了。此时 1 秒 6000 个请求全部落数据库,数据库必然扛不住,它会报一下警,真实情况可能DBA都没反应过来就直接挂了。此时,如果没用什么特别的方案来处理这个...
B树和B+树的插入、删除解析
B树 B树的定义 B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数。当m取2时,就是我们常见的二叉搜索树。 颗m阶的B树定义如下: 每个结点最多有m-1个关键字。 1根结点最少可以只有1个关键字。 1非根结点至少有Math.ceil(m/2)-1个关键字。 1每个结点中的关键字都按...
数据库事务隔离级别
数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题。 √: 可能出现 ×: 不会出现 脏读 不可重复读 幻读 ...