Java填坑笔记

其他

面试官:来,年轻人!请手撸5种常见限流算法!

瞬时流量过高,服务被压垮?恶意用户高频光顾,导致服务器宕机?消息消费过快,导致数据库压力过大,性能下降甚至崩溃?……在高并发系统中,出于系统保护角度考虑,通常会对流量进行限流;不但在工作中要频繁使用,而且也是面试中的高频考点。今天我们将图文并茂地对常见的限流算法分别进行介绍,通过各个算法的特点,给出限流算法选型的一些建议,并给出Java语言实现的代码示例。01
2021年1月9日
其他

图解MySQL索引(三)—索引的正确打开姿势

MySQL使用了B+Tree作为底层数据结构,能够实现快速高效的数据查询功能。工作中可怕的是没有建立索引,比这更可怕的是建好了索引又没有使用到。本文将围绕着如何优雅的使用索引,图文并茂地和大家一起探讨索引的正确打开姿势,不谈底层原理,只求工作实战。点赞再看,原创不易,感谢支持~1.
2020年6月18日
其他

图解MySQL索引(二)—为什么使用B+Tree

失踪人口回归,近期换工作一波三折,耽误了不少时间,从今开始每周更新~索引是一种支持快速查询的数据结构,同时索引优化也是后端工程师的必会知识点。各个公司都有所谓的MySQL”军规“,其实这些所谓的优化和规定,并不是什么高深的技术,只是要求大家正确建立和使用索引而已。工欲善其事必先利其器,想要正确运用索引,需要了解其底层实现原理,本文将探索关于索引的“是什么”以及”为什么“。MySQL中关于索引的概念有很多,为了避免混淆,在上一篇文章中关于索引在不同维度分类设计到的一些名词进行了解释,如辅助索引,唯一索引,覆盖索引,B+Tree索引….,
2020年5月31日
其他

图解MySQL索引(上)—聊聊索引的分类

关于MySQL索引相关的内容,一直是一个让人头疼的问题,尤其是对于初学者来说。笔者曾在很长一段时间内深陷其中,无法分清“覆盖索引,辅助索引,唯一索引,Hash索引,B-Tree索引……”到底是些什么东西,导致在面试过程中进入比较尴尬的局面。很多人可能会抱怨”面试造火箭,工作拧螺丝,很多知识都是为了面试学的,工作中根本用不到!“。庆幸的是,MySQL中索引不仅是面试必考知识,还是工作中用到最为频繁的必备技能,在笔者看来,索引是MySQL中性价比最高的一部分内容。由于MySQL中支持多种存储引擎,在不同的存储引擎中实现略微有所差距,索引下文中如果没有特殊声明,默认指的都是InnoDB存储引擎。一、底层数据结构首先,索引是高效获取数据的数据结构。就像书中的目录一样,我们可以通过它快速定位到数据所在的位置,从而提高数据查询的效率。在MySQL中有许多关于索引的名词和概念,对于初学者来说很容易被迷惑。为了方便理解,我建立了一张表,从具体的案例中尝试说清楚这些概念到底是什么。Hash索引正如上文中说到,索引是提高查询效率的数据结构,而能够提高查询效率的数据结构有很多,如二叉搜索树,红黑树,跳表,哈希表(散列表)等,而MySQL中用到了B+Tree和散列表(Hash表)作为索引的底层数据结构。需要注意的是,MySQL并没有显式支持Hash索引,而是作为内部的一种优化,对于热点的数据会自动生成Hash索引,也叫自适应Hash索引。Hash索引在等值查询中,可以O(1)时间复杂度定位到数据,效率非常高,但是不支持范围查询。在许多编程语言以及数据库中都会用到这个数据结构,如Redis支持的Hash数据结构。具体结构如下:B+Tree索引提到B+Tree首先不得不提B-Tree,B-Tree(多路搜索树,并不是二叉的)是一种常见的数据结构。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。B+
2020年3月8日
其他

剑未佩妥,出门已是江湖!聊聊我的2019

剑未佩妥,出门已是江湖。酒尚余温,入口不识乾坤。2019年可以说是对我来说是特别重要的一年。正式结束了自己的学生时代,从事了一个自己不讨厌的职业,遇到了一群优秀的人。借年终总结的浪潮,说说对于2019年的一些感悟,顺便再立一些flag。一,我毕业了四年前带了两件衣服,借了一个同学的拉杆箱,一个人来到了离家两千多公里的哈尔滨,开始了大学生活。2019年打包行李,正式踏上了北漂之路,离开了那个骂一千遍夸一万遍的母校。迷迷糊糊度过了大一,抽烟,喝酒,打架,
2020年1月10日