时间 57个相关结果 608次搜索

缓存穿透、击穿、雪崩

在并发学习的过程中,缓存是一个非常重要的知识模块。为什么使用缓存呢?第一,提升响应效率和并发量;第二,减轻数据库的压力。如果没有设计好缓存模块,造成了缓存穿透、缓存击穿、缓存雪崩,会导致大量请求访问到数据库,大并发的情况下会让数据库无法承担 …

关于索引数据模型

索引常见的三大数据模型 哈希表 哈希表是常见的键值对(key->value)数据结构。有一个存放value的数组,key用哈希函数换算成一个确定的位置,将value放在数组的这个位置。 不可避免地,多个key值经过哈希函数的换算,会出 …

MySQL实战:一条SQL更新语句是如何执行的?

上一篇我们知道了一条sql查询语句是则如何执行的,接下来我们看看一条sql更新语句是如何执行的。 首先,可以确定的说,查询语句的那一套流程,更新语句也是同样会走一遍。 连接数据库,这是连接器的工作。上一篇说过,查询缓存会在表更新的时候清空这 …

MySQL实战:一条SQL查询语句是如何执行的?

首先要介绍MySQL的组成部分。MySQL由server层和存储引擎层两部分组成。 server层包括:连接器、查询缓存、分析器、优化器、执行器。大多数功能都在server层实现,例如存储过程、触发器、试图、函数等。 存储引擎层负责数据的存 …

数据结构与算法四十:并行算法

时间复杂度是衡量算法执行效率的一种标准。但是,时间复杂度并不能跟性能划等号。在真实的软件开发中,即便在不降低时间复杂度的情况下,也可以通过一些优化手段,提升代码的执行效率。毕竟,对于实际的软件开发来说,即便是像 10%、20% 这样微小的性 …

数据结构与算法三十九:索引

在第 48 节中,我们讲了 MySQL 数据库索引的实现原理。MySQL 底层依赖的是 B+ 树这种数据结构。留言里有同学问我,那类似 Redis 这样的 Key-Value 数据库中的索引,又是怎么实现的呢?底层依赖的又是什么数据结构呢? …

数据结构与算法三十七:B+树

作为一个软件开发工程师,你对数据库肯定再熟悉不过了。作为主流的数据存储系统,它在我们的业务开发中,有着举足轻重的地位。在工作中,为了加速数据库中数据的查找速度,我们常用的处理思路是,对表中数据创建索引。那你是否思考过==,数据库索引是如何实 …

数据结构与算法三十五:概率统计

上一节我们讲到,如何用位图、布隆过滤器,来过滤重复的数据。今天,我们再讲一个跟过滤相关的问题,如何过滤垃圾短信? 垃圾短信和骚扰电话,我想每个人都收到过吧?买房、贷款、投资理财、开发票,各种垃圾短信和骚扰电话,不胜其扰。==如果你是一名手机 …

数据结构与算法三十四:位图

网页爬虫是搜索引擎中的非常重要的系统,负责爬取几十亿、上百亿的网页。爬虫的工作原理是,通过解析已经爬取页面中的网页链接,然后再爬取这些链接对应的网页。而==同一个网页链接有可能被包含在多个页面中,这就会导致爬虫在爬取的过程中,重复爬取相同的 …

数据结构与算法三十三:最短路径

基础篇的时候,我们学习了图的两种搜索算法,深度优先搜索和广度优先搜索。这两种算法主要是针对无权图的搜索算法。针对有权图,也就是图中的每条边都有一个权重,我们该如何计算两点之间的最短路径(经过的边的权重和最小)呢?今天,我就从地图软件的路线规 …