展开菜单

如何让mysql索引更快一点

在 InnoDB 中,从二级索引回到主键索引查询数据,这个过程称作回表过程,而且这个回表过程是可以被优化的,这个优化就是利用覆盖索引。 先说结论,如果一个索引的字段包含了所有要查询的字段,这个索引就称作覆盖索引,覆盖索引可以减少回表过程,能有效提高查询效率。 前面我们有说过,在 InnoDB 中数据都是保存在 B+ 树上,主键索引保存了整行记录,二级索引保存了主键的值。 一次查询操作,要么是遍历主键索引,要么是遍历二级索引,要么就是先遍历二级索引得到主键 id 的值,然后再到主键索引上通过主键...

mysql为什么加索引就能快

mysql为什么加索引就能快

平时我们要优化 mysql 查询效率的时候,最常见的就是给表加上合适的索引了,那今天就来聊聊为什么加了索引就快了呢。 很多人会说索引就相当于一本书的目录,通过目录来找书中的某一页,确实是很快的,如果没有目录,就需要一页一页的去翻书了,大大降低了效率。这个比喻其实还挺恰当的,也是一个很经典的索引比喻了。 在 InnoDB 中,每个索引其实都是一颗 B+ 树,主键索引称作聚簇索引,其他非主键索引称作二级索引,每个表中每一行的记录值都完整的保存在主键索引的叶子节点上,二级索引的叶子节点保存的是主键的值。   ...

python画哆啦A梦和大雄

python画哆啦A梦和大雄

之前有写过两篇关于 python 画画的文章,python教你画一棵树,用python画一朵玫瑰给你。 最近从后台收到的消息来看,不少读者对 python 的 turtle 这个库感兴趣,也收到了读者想用 python 画各种图的各种需求。和一些读者沟通后才知道是学校布置了相关的作业,或者是自己想用这个来做毕业设计。 关于这个问题我想说的是,大家需要的是静下来心来学习 turtle 这个库,熟悉基本的函数,事实上大多数的图都是靠几个基本的函数来画出来的。 包括今天要给大...

python下载抖音无水印视频

python下载抖音无水印视频

只要一刷抖音视频,基本上就是停不下来,看到一些喜欢的视频,就想下载下来,但是通过正常手段下载的视频都会带有抖音的水印,今天就一起来使用非正常手段来看看怎么获取无水印抖音视频。 1、获取视频链接地址 这一步其实就不用多说了,玩抖音的应该都知道怎么获取链接。点击转发分享,在下面的弹层中找到复制链接,然后就获得了该视频的链接。 顺带说一下,这里得到的链接是一种短链接,是经过抖音特殊处理过的链接,通常我们手机短信里收到的营销推广链接也大多数是短链接,短链接原理有兴趣的可自行去了解下。 2、...

数组中重复的数

之前有写过 找出数组中只出现一次的数,今天再来看下怎么找出数组中重复出现的数。 有一个长度为 n 的数组,所有的数字都在 0~n-1 的范围,现在要求找出数组中任意一个重复的数字。 这个题目看起来很简单,看看下面几种思路。 思路一: 先给数组排序,然后再遍历一遍有序数组,依次比较相邻元素,就很容易能找出数组中重复的值。使用快排排序的话时间复杂度为 O(nlogn) 。...

我给自己配置的第一份保险

说到保险,可能很多人不爱听,我以前也是,但最近我亲自给自己配置了一份保险,我这里简单记录下我从保险小白到亲自为自己配置保险的过程,或许对你有帮助。 其实在去年我就有在关注保险,但是只是知道一点点,并没有系统的去了解过,甚至连保费、保额等基本概念都分不清,一直拖到了现在,最近我决定要系统的去科普保险相关的知识,并且要亲自给自己配置一份保险。 保险的种类 保险的种类有很多,我这次科普的主要是健康险和意外险。健康险里比较重要的就是医疗险和重疾险了,购买健康险最需要花功夫的...

自制手写稿处理神器

自制手写稿处理神器

今天分享一个 GitHub 上一个实用神器,可以让你的手写稿图片变清晰、图片大小变更小。 先来看下面的原图和效果图吧。 作者是美国斯沃斯莫尔学院的教授,因为他经常会把他学生的一些优质手写笔记要挂到网上分享给其他的同学,但是这些手写稿经过扫描仪扫描后,图片质量比较差,而且文件还特别的大。 所以他为了解决这个问题,就自己写了一个 python 脚本来专门优化这个问题,这也是他写这个脚本的初衷。 很佩...

找出链表中倒数第K个节点

找出链表中倒数第K个节点

今天来看一道有意思的链表算法题目。 给到一个单向链表,要求找出该链表中倒数第 k 个节点,要求只能遍历一次链表,且空间复杂度为 O(1)。 思路1:如果能从链表尾部开始遍历,那只需倒序遍历 k 个节点即是要找出的节点,但是由于是单链表,只能从头结点开始遍历。 思路2:先遍历一遍该单链表,获取链表的总节点数 n,那么第 n-k+1 这个节点就是倒数第 k 个节点。所以第二次再遍历到第 n-k+1 这个节点即可,但是题目要求只能遍历一遍链表。 ...

mysql索引为啥要选择B+树 (下)

mysql索引为啥要选择B+树 (下)

有读者在 mysql索引为啥要选择B+树 (上) 上篇文章中留言总结了选择 B+ 树的原因,大体上说对了,今天我们再一起来看看具体的原因。 索引为什么要保存在硬盘中 首先要明白几个概念,服务器存储一般分内存和硬盘,内存的大小相对于硬盘来说是很小的。内存的访问速度是纳秒级别的,非常快,而硬盘的访问速度相对内存来说就比较慢了。 不管是访问内存还是硬盘数据,操作系统都是按数据页来读取数据的,即每访问一次硬盘或内存,只读取一页大小的数据,一页的...

mysql索引为啥要选择B+树 (上)

mysql索引为啥要选择B+树 (上)

不知道你有没有这种感觉,那些所谓的数据结构和算法,在日常开发工作中很少用到或者几乎不曾用到,可能只是在每次换工作准备面试的时候才会捡起来学习学习。 那我希望今天这篇文章能让你对数据结构的具体应用能有个初步的概念,就从我们每天都在用的 mysql 数据库说起吧。 今天这个标题,严格来说其实是不正确的,我在前面的文章中有这么解释过:执行一条sql语句都经历了什么? 首先,mysql 主要是由 server 层和存储层两部分构成的。server 层主要包括连接器、查询缓存,...

使用python发送邮件

使用python发送邮件

发送邮件这个功能非常实用,比如你写了一个爬虫,可以通过邮件来接收程序异常或者任务完成的通知,再比如你搭了一个网站,别人只需留下他的邮箱,你就可以自动给他发送邮件。 总之我觉得邮件通知非常适合那些处理批量、大量任务,你可以不用守在电脑前等待处理结果,在程序里配置好邮件通知后,只需留意邮箱通知就好了。 下面我们一起来看看如何使用 python 来实现邮件发送,邮件一般分为纯文本邮件、html 邮件、以及带附件邮件,今天我们使用 python 来分别实现这三种邮件的发送。 在 python 实现发送...

浅谈dns域名解析过程

浅谈dns域名解析过程

前面的文章中有介绍过 打开一个网页背后都发生了什么? 其中第一步就是域名解析,今天我们就一起来看看域名解析的过程。 在开始之前,有必要把域名及 dns 的相关概念解释一下。 域名是什么 举个例子,https://www.baidu.com,这个其实并不是域名,其中 https 是指协议,去掉 https 后,www.baidu.com.(注意最后面有一个点号) 才是真正的域名。 每个域名的最后面都有一个点号 ...