展开菜单

你写的二分法可能有个bug

你写的二分法可能有个bug

在公众号里写了有 80 多篇原创文章了,大家大多都是利用碎片时间来阅读公众号文章,所以我后面的文章也尽量使用更通俗、更简短的文字。 今天要聊的是二分查找法,也被称作对半查找法,是一种非常高效的查找搜索算法。使用二分查找算法有几个前提,一个就是你的数据得是有序的,如果不是有序,那就需要先排序。 其实任何一种算法,都是基于某种数据结构的,二分法适用于保存在数组中的数据,像使用链表数据结构保存的数据都不适合使用二分法。 这是使用二分法的两个比较大的前提,你先知道就好了,下面再做解释。 在二分...

聊聊和钱相关的

这篇文章聊聊和钱相关的话题,在这里,我希望除了技术和代码,还应该有一些和金钱相关的东西,毕竟不管你是做什么技术、写什么样的代码、从事什么工作,最终最重要的目的绝大多数都离不开钱。 而每当谈到钱,大多数人又是含蓄的,至少我是这样的,我自己有必要刻意改变这一点。 经济关系其实是人与人之间的基础关系之一,小时候我总被教育你只要好好学习,不用关心钱和赚钱的事情,尽管家里很穷很困难,我当然不是在批评父母的教育方式,我只不过是在陈述一个事实。 我想我将来应该不会再以这种方式去教育我的孩子,让孩子早一点懂得和金钱相关...

如何分析一条sql的性能

这篇文章将给大家介绍如何使用 explain 来分析一条 sql 。 网上其实已经有非常多的文章都很详细的介绍了 explain 的使用,这篇文章将实例和原理结合起来,尽量让你有更好的理解,相信我,认真看完你应该会有特别的收获。 explain 翻译过来就是解释的意思, 在 mysql 里被称作执行计划,即可以通过该命令看出 mysql 在经过优化器分析后决定要如何执行该条 sql 。 说到优化器,再多说一句,mysql 内置了一个强大的优化器,优化器的主要任务就是把你写的 sql 再给优化一...

字符串匹配算法基础版

字符串匹配算法基础版

最近小谭又被问了一个问题,编程语言中的字符串匹配函数是怎么实现的,是啥原理。 看来大猫又要展示他靠才华吃面的大招了。 小谭一边心里犯嘀咕,这还能有啥原理,直接用不就行了,管那么多干啥,一边对大猫说,今天又想要吃啥面了。 大猫就是这样,经常问你一个问题,你要不会,然后让你请他吃碗面,他给你讲清楚。 大猫腼腆一笑表示今天吃一碗拉面就行,估计是今天这个大招的技术含量不够高吧,一碗拉面就给应付了。 果然,大猫仅用 5 个字就形容了他的大招,暴力匹配法,小谭一听暴力法,...

mysql删除操作其实是假删除

在 InnoDB 中,你的 delete 操作,并不会真的把数据删除,mysql 实际上只是给删除的数据打了个标记,标记为删除,因此你使用 delete 删除表中的数据,表文件在磁盘上所占空间不会变小,我们这里暂且称之为假删除。 上面这个是结论,我们可以通过一个例子来验证下。 沿用前面文章中的例子吧,先创建一个存储过程,插入 10w 条数据,然后看下这 10w 条数据占了多大的空间。 CREATE TABLE `t` (   `id` int(11...

python自动下载高品质无损歌曲

python自动下载高品质无损歌曲

不知道大家有没有这样的感觉,听到一些好听的歌曲,总是想要把歌曲下载到自己电脑或手机上才感觉到踏实,尤其是在早些年智能手机还没这么普及的时候,喜欢的歌曲不在自己电脑上就会没有安全感。 虽然现在听歌基本都是在线听,下载歌曲到本地的意识越来越淡了,但对于一些高品质无损音乐,依然还是有想要下载的冲动,所以今天我们就来使用 python 来解一解这个下载情结。 不清楚大家平常都用什么听歌 APP,我最常用的就是网易云音乐,刚开始就是被其个性推荐算法圈粉了,推荐的都是自己喜欢的歌曲,但因为版权问题,总有一些歌曲不得不去 QQ 音乐上去听。 ...

python采集链家二手房信息

python采集链家二手房信息

都说现在的房价很高,具体有多高呢,我们一起来看看。 现在网上关于房子的价格以及交易信息鱼龙混杂,与实际情况相差比较大,目前链家平台的数据应该是相对比较可靠的,所以这次我们就打算去链家爬一爬。 说到爬虫,前面也有说过,无非就三个主要的步骤 1、获取目标网页或接口 2、从目标网页或接口中解析并提炼出你要的数据字段 3、数据保存 我们今天就以链家平台上北京地区二手房为例,首先是打开目标网页。 https:/...

听说mysql还会选错索引

大家都知道,mysql 一个表中可以创建多个索引,但是在执行一条查询语句的时候,mysql 只能选一个索引,如果我们没有指定 mysql 使用某个索引,那么就是由 mysql 的优化器来决定要使用哪个索引了,然而,mysql 也是会有选错的时候。 前面的文章,我们有介绍过执行一条查询 sql 语句分别会经历那些过程,执行一条sql语句都经历了什么? 存在多个索引的情况下,优化器一般会通过比较扫描行数、是否需要临时表以及是否需要排序等,来作为选择索引的判断依据。 我们先来新建一个表,创建两个普通索引。 C...

介绍一个好玩的

介绍一个好玩的

马上就要放假了,这几天就暂时不写技术文章了,给大家介绍一个好玩的网站。 国外一个 JavaScript 编程比赛平台,该比赛一年举办一次,你可以使用一段 JavaScript 代码实现一个动画,一个小工具,也可以是一个小游戏等,总之随你自由发挥,但要求 JavaScript 代码大小不能超过 1kb。 先来看几个 demo 吧,就随便挑几个看看。 ...

如何让mysql索引更快一点

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

mysql为什么加索引就能快

mysql为什么加索引就能快

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

python画哆啦A梦和大雄

python画哆啦A梦和大雄

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