编辑
2024-03-23
服务端
0

为什么你要学习编译原理?

编译原理深入编程语言的结构、语法、语义和复杂的算法,涉及计算机体系结构、操作系统和编程语言之间的交互,还包括存储器管理、进程调度和并发控制等关键概念。通过编译原理的学习,我们知道如何将高级语言转换为底层的机器语言或中间代码,从而理解程序的执行过程及其背后的原理,进而了解如何优化和转换程序代码,程序的抽象思维能力对于解决各种计算机科学问题和设计复杂系统也是非常有帮助的;另一发面,这也有助于我们开发语言处理工具,如编译器、解释器、静态分析工具等。

编辑
2024-02-15
服务端
0

背景

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

锁的分类

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

编辑
2024-01-24
读书
0

冯唐的前半生太过于顺风顺水,“知名作家”“麦肯锡合伙人”和“医学博士”的头衔,冯唐的前半生,简直是个传奇。当医生、商人、作家这三个身份出现在同一个身上,他究竟是哪种天才。

编辑
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:切片的容量,即底层数组能够容纳的元素数量。