引入MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。
常见的查询算法以及数据结构建立索引,其实就是为了构建一种数据结构,可以应用到上面的一种算法。提供查询的效率
索引的本质是:
帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。
如果没用索引的话,会按照上下顺序来查找,就会匹配整张表,这叫全表扫描,这样的效率是很低的。
而mysql中的索引是在引擎层中实现的
b+tree索引 最常见的 都支持
hash索引 精确匹配 memory支持
r-tree索引 空间位置 myisam支持
full-text索引 除了memory不支持其他都支持
b-tree多路平衡查找树
几阶b-tree就最多有几个节点,会有n+1 ...
基础1.说下计算机网络体系结构计算机网络体系结构通过复杂的网络通信分为不同的层次,来实现交互化的目的。常见的模型分为OSI七层模型,tcp/ip四层模型和五层体系结构
OSI是理论上的网络通信模型,TCP/IP是实际应用层面的网络通信模型,五层结构是为了方便理解和记忆
OSI七层模型是一个网络架构模型,由国际标准化祖师提出,用于描述和标准化各种计算机网络的功能和过程。这七层分别是应用层:最靠近用户的层,负责处理特定的应用程序细节。这一层提供了网络服务和用户应用软件之间的接口,例如web浏览器,ftp客户端和服务器,电子邮件客户端等等。
表示层:确保一个系统发送的信息可以被另一个系统的应用层读取。负责数据的转换压缩和加密。例如,确保数据从一种编码格式转换为另一种。ASCII->EBCDIC
会话层:管理用户的会话,空网络上两节点之间的对话和数据交换的管理。负责建立维护和终止会话。例如建立一个回鹘令牌,以便在网络上两个节点进行传递。
传输层:提供端到端的通信服务,保证数据的完整性和正确顺序。这一层包括TCP和UDP等。
网络层:负责在多个网络之间进行数据传输,确保数据能够在复杂的网络 ...
hash1.hash映射给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
你可以按任意顺序返回答案。
wp:
12345678910111213class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<>(); for(int i = 0; i< nums.length; i++) { if(map.containsKey(target - nums[i])) { return new int[] {map.get(target-nums[i]),i}; } ...
English
未读每日一话+单词遗忘表3.1There is something in every human being, even the most degraded, that slavery cannot corrupt – the soul’s instinct for freedom.
spade 铲子
steer 驾驶
stock 股票
storey 楼层
每日一话+单词遗忘表3.2It always seems impossible until it’s done.
stove 火炉
straight 直的
strain 张力
strategy 战略
sphere 球
stretch 延申
stride 大步
strike 罢工
strip 剥去
strive 努力
speculate 思考
每日一话+单词遗忘表3.3One cannot always be a hero, but one can always be a man.
strap 捆绑
subsequent 随后的
substance 实质的
subtract 减去
suburb 郊区
suck 吮吸
equiva ...
事务事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。
ACID特性
原子性(Atomicity)
事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。
回滚可以用回滚日志(Undo Log)来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。
一致性(Consistency)
数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对同一个数据的读取结果都是相同的。在事务操作前和事务操作后,数据满足完整的约束
隔离性(Isolation)
一个事务所做的修改在最终提交以前,对其它事务是不可见的。数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致,因为多个事务同时使用相同的数据时,不会相互干扰,每个事务都有一个完整的数据空间,对其他并发事务是隔离的。隔离性是通过MVCC或者锁机制进行实现的
持久性(Durability)
一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃 ...
基本概念数据库(Database):存放和提供数据的库房
数据(Data):数据库中存储的基本对象
数据库管理系统(DBMS):位于用户和操作系统之间的一层数据管理软件
数据库系统:包括数据库,数据库管理系统,应用程序,数据库管理员
主键:用于唯一标识表中的某一条记录的属性或者属性的集合
外键:用于与另一张表关联,外键为灵一张表的主键
超键:超键是唯一能区分元组的属性和属性的集合
实例:数据库在某一时刻存储的真实数据
数据操纵语言:增删改查
数据定义语言:定义、删除、修改数据库中的对象
数据控制语言:用于控制用户对数据库操纵的权限
数据模型:现实世界数据特征的抽象,用来定于数据如何组织,数据之间的关系是怎么样的
并相容性:两个关系具有并相容性需要保证具有相同的属性个数,以及对于每个属性都有相同的域
视图:视图时虚拟的表,并不是物理存储的数据。是基本表或其他视图派生的数据。对视图的更新,实际上转换为对实际基表的更新。
数据模型现实世界数据特征的抽象,用来定义数据如何组织,数据之间的关系怎样。
层次:
概念模型:按用户的观点来对数据或者信息进行建模
逻辑/实现模型:层次模型,网状模型,关系 ...
基本概念传输方式网络根据传输方式可以进行分类,一般分为面向连接型和面向无连接型。
面向连接型中,在发送数据之前,需要在主机之间建立一条通信线路。
面向无连接型则不要求建立和断开连接,发送方可用于任何时候发送数据。接收端也不知道自己何时从哪里接收到数据。
分组交换处在互联网边缘部分的机器,也就是互联网终端主机,它们官方一点的话术就是端系统。
在互联网应用中,每个终端系统都可以彼此交换信息,这种信息也被称为报文(Message),报文是一个超集的概念,它可以包括你想要的任何东西,比如文字、数据、电子邮件、音频、视频等。为了从源目的地向端系统发送报文,需要把长报文切分为一个个小的数据块,这种数据块称为分组(Packets),也就是说,报文是由一个个小块的分组组成。
这些分组其实就是包
在分组的传输过程中,每个分组都要经过通信链路和分组交换机,分组要在端系统之间传输需要经过一定的时间,如果两个端系统之间需要传输的分组为 L 比特,链路的传输速率问 R 比特/秒,那么传输时间就是 L / R秒。
一个端系统需要经过交换机给其他端系统发送分组,当分组到达分组交换机时,交换机会如何操作?交换机会 ...
English
未读每日一话+单词遗忘表2.1The more you experience and appreciate the goodness of life, the more there is to be lived.
pearl 珍珠
peasant 农民
peculiar 特殊的
pedestrian 步行者
peer 凝视
penalty 处罚
penetrate 刺入
perhaps 也许
peril 危险
persevere 坚持
persist 持续
perspective 远景
persuade 说服
每日一话+单词遗忘表2.2Your generation has come of age facing a challenge like no other generation before you.
pessimism 悲观的
petroleum 石油
phase 相位
phrase 成语
pile 堆
pillar 柱子
pinch 捏
每日一话+单词遗忘表2.3Don’t try to win a friend by presenting gifts.
pipe 烟斗 ...
Marxists
未读2025.1.26在革命的过程中,我们要注意谁是我们的朋友。谁是我们的敌人,团结我们能所团结的,打到我们的敌人。
地主阶级是国际资产主义的附庸,特别是大地主阶级和大买办阶级,他们是完全靠着国际资本主义,来压榨底层的百姓的。小地主阶级和小买办阶级是可以团结的,给与他们扩大的实力,他们可以为革命所用。要团结一切可以团结的力量。
中产阶级代表跟小地主阶级类似,他们是矛盾的,他们是人数较少的。可以对他们进行团结,扩大他们的生产,扩大他们的力量,在革命的大旗下进行扩大化。进行革命化的特色改造。
小资产阶级或者说是无产阶级是我们革命的主力军,他们的力量是强大的,他们的力量是可以翻天覆地的。他们有很少或者没有生产资料,他们处于社会的最底层,其中有很大一部分人有很强的向上的力量,很强的革命的力量。我们要从他们之中去发展力量,积蓄力量,给大地主阶级和大买办阶级或者说是大官僚阶级沉重的打击。
2025.1.27组织运动,农民是我国力量最大的,人数最多的阶层。这里的农民不单单是指农村户口的农民,而是指的是出生于农村,从农村长大。祖祖辈辈和土地和农村相关联的人。他们是任劳任怨的,不到迫不得已的的时候,是不会反 ...
知识重点1.拥塞机制和流量控制流量控制:
防止发送方发送数据过快,导致接收方来不及处理,从而造成数据丢失。他是在点对点通信的时候,就是我们端口之间连接的地方。
滑动窗口(Sliding Window):接收方通过 TCP 报文首部的“窗口大小”字段,告知发送方自己当前的处理能力(接收缓冲区剩余空间)。
接收窗口(rwnd):接收方根据自己的接收能力动态调整窗口大小,发送方根据接收方通告的窗口大小调整发送速率,确保发送速率不超过接收方的处理能力。
零窗口探测(Zero Window Probe):如果接收方通告窗口大小为 0,发送方会停止发送数据。为了防止死锁(接收方一直没有机会发送非零窗口通告),发送方会定期发送窗口探测报文,询问接收方的窗口大小。
底层实现:
TCP 协议栈会在接收到数据时,根据接收缓冲区的剩余空间更新 rwnd 的值。
发送方发送数据时,会根据 rwnd 的值以及拥塞窗口(cwnd)来动态调整发送速率。
TCP 协议栈实现了零窗口探测机制,定期发送探测报文。
拥塞机制:
防止发送方发送数据过多,导致网络拥堵,从而降低整个网络的传输效率。全局网络,考虑整个网络 ...
基础引入两个计算机设备想要通信,可以用一根线连接起来,两台设备使用电信号传播数据
如果都是用一根线连接两台设备的话,所需要的线数C等于
C=(n-1)n/2但这样不太理想
所以我们可以使用一个hub就是一个集线器
比如
设备1可以通过hub然后转发给设备3,但这样的话是群发,不太安全
而且只能单向的交流,也不太好
所以使用了交换机,使用mac值来区分设备
这个是全球唯一的
允许两台设备双向交流,也可以两台交换机来交换数据,这叫桥接网络
内网这样是可以使用的,但是不能使用很多,因为交换机的存储mac地址的数量是有限的。
路由器可以适用于网络的转发
不同网络连接到路由器的ip叫做默认网关
ip只是一个过程使用,最后还是使用mac地址来转发数据
概述1.1基本术语结点 (node):网络中的结点可以是计算机,集线器,交换机或路由器等。
链路(link ) : 从一个结点到另一个结点的一段物理线路。中间没有任何其他交点。
主机(host):连接在因特网上的计算机。
ISP(Internet Service Provider):因特网服务提供者(提供商)。
IXP(Internet eXch ...
Markdown
未读Markdown是啥Markdown是一种轻量级标记语言,它以纯文本形式(易读、易写、易更改)编写文档,并最终以HTML格式发布。Markdown也可以理解为将以MARKDOWN语法编写的语言转换成HTML内容的工具。
语法标题用=和-来标记一级和二级标题
一级
二级
一级二级三级段落
可以用> >> >>>或者是-
代码快就在每行加上四个空格或者一个制表符
1
1
强调使用啊 *
或者是_fff_ -
·呆呆· ··使用这个
列表使用-
或者是直接使用符号
分割线直接使用三个—-
链接【】()
然后图片就是
!【】()
注意是英文的符号好吧
1234567891011---title: "Grades"---radar-beta axis m["Math"], s["Science"], e["English"] axis h["History"], g["Geography"], a[" ...













