编辑
2024-02-15
服务端
0

背景

数据库的锁定机制是为了确保数据一致性而设计的重要规则。通过锁定机制,数据库管理系统能够管理并发访问数据时可能产生的冲突,确保数据的正确性和完整性。另一方面,MySQL也存在多种数据存储引擎,每种存储引擎的锁机制都是为各自的特定场景而优化设计,所以各存储引擎的锁机制也有较大区别。

锁的分类

我们可能听过Mysql各种叫法的锁,他们大部分是从不同维度来去划分而命名的,如下图。

编辑
2024-01-24
服务端
0

内存模型

内存模型描述了程序执行的规范。在golang中,这些规范由 goroutine 执行组成,而 goroutine 的执行又由一系列内存操作构成。golang的内存模型规定了多个goroutine读取变量时候,变量的可见性情况。

内存操作可以从以下四个方面进行详细描述:

  • 类型:包括普通数据读取、普通数据写入、同步操作、原子数据读取、互斥操作或通道操作等。
  • 代码中的位置:即操作在程序代码中的具体位置,通常用行号或函数名标识。
  • 内存位置:指正在访问的内存地址或变量。
  • 值:指正在读取或写入的具体数据值。

为了确保多核、多线程环境下的正确性和一致性,内存模型确保了以下几点:

  • 顺序一致性:在单线程情况下,操作的执行顺序与程序代码中出现的顺序一致。这是最简单的模型,假设所有的读写操作按代码中的顺序执行,但实际上现代处理器和编译器都会进行优化,例如乱序执行(Out-of-Order Execution)和指令重排(Instruction Reordering),这使得顺序一致性变得复杂。
  • 可见性:一个线程对变量的修改对于其他线程是可见的。
  • 原子性:保证某些操作(如读写)是不可分割的,即要么完全执行,要么完全不执行。

比较有意思的是,Golang Memory Model 文章作者并不希望读者通过 Memory Model 来理解自己程序的运行方式,如果必须要这样做的话,很可能是程序的编写方式有问题,很可能意味着高昂的维护成本)

编辑
2024-01-08
服务端
0

概述

索引是用来快速检索出具有特定值的记录,它可以大大提高查询速度。如果没有索引,数据库就必须从第一条记录开始进行全表扫描来找到相关的行。数据越多,成本就越高,检索时如果表的列存在索引,那么MySQL就能快速到达指定位置去搜索数据文件,而不必查看所有数据。

索引是存储引擎快速找到记录的一种数据结构,例如 MyISAM 引擎和 Innodb 引擎都使用 B+ Tree 作为索引结构。 ——《高性能MySQL》

MySQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关;MyISAM 和 InnoDB存储引擎只支持 BTREE 索引,MEMORY/HEAP 存储引擎可以支持HASH和BTREE索引。

  • BTREE 索引:BTREE 索引是一种平衡树数据结构,节点按照键值有序排列,可以快速进行范围查询和排序。
  • HASH 索引:基于哈希表实现,通过哈希函数将键值映射到哈希表中的位置。
编辑
2023-12-21
服务端
0

数组的延伸

在Go语言中,数组是一种固定长度的数据结构,一旦创建,长度就不能改变。这在某些情况下可能会限制它的使用。为了提供更灵活的数据结构,Go引入了切片(slice),它基于数组实现,但具有动态调整大小的能力。

切片的结构

切片的内部结构在src/runtime/slice.go中定义,如下图,它包含三个主要部分:

  • array:指向底层数组的指针。
  • len:切片的长度,即当前切片包含的元素数量。
  • cap:切片的容量,即底层数组能够容纳的元素数量。
编辑
2023-12-13
读书
0

序言

如果你对Netflix网飞不太熟悉,可以把它看作“美国版的爱奇艺”,但规模大得多,市值接近2000亿美元,与迪士尼平起平坐,是全球顶尖的娱乐公司之一。许多经典剧集如《纸牌屋》和《鱿鱼的游戏》都是网飞出品的。有消息称,网飞已经获得了刘慈欣小说《三体》的电视剧改编权,正在筹备拍摄。

Netflix,中文翻译成网飞,也有叫奈飞

网飞在内容创作方面非常出色,但你知道吗?在1997年刚成立时,网飞的主营业务是通过互联网出租DVD光碟。那时,没人会想到网飞会发展成今天的模样。网飞之所以成为传奇,是因为它在短短20多年里,完成了四次惊人的进化:

  • 第一次进化是在创业1年后,砍掉了DVD销售业务,专注于租赁。当时,DVD销售占总收入的97%,而租赁仅占3%。网飞之所以做出这个决定,是因为它看到了DVD销售竞争激烈,利润微薄,而租赁业务则依赖于运营能力,这是网飞的强项。
  • 第二次进化是在创业3年后,取消了单件租赁模式,改为会员制,即按月或按年付费。网飞发现,会员制可以消除客户对滞纳金的不满,让客户自由租赁,随时观看,旧的归还后立即寄出新的,这也大大节省了仓储费用。
  • 第三次进化是在创业10年后,网飞启动了在线视频业务,并随后砍掉了DVD租赁业务,专注于在线视频。当时,DVD租赁仍是网飞的主要收入来源,而在线视频业务则亏损严重。这个决定导致当年利润下滑92%,股价暴跌70%,网飞CEO里德·哈斯廷斯被《福布斯》评为年度最糟糕CEO。
  • 第四次进化是在创业15年后,网飞从追求海量内容转向追求独家内容,投入巨资制作原创剧集,《纸牌屋》一炮而红。从那时起,网飞从一家互联网科技公司进化为“硅谷+好莱坞”合体的娱乐帝国。