一、介绍1.什么是索引?一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。2.为什么要有索引呢?索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良 …
java 常量
之前我们对Java集合框架一些常见的面试题做了一个总结式的回答:《【29期】Java集合框架 10 连问,你有被问过吗?》这篇开始针对29期中的一些比较重要的问题做详细的解答。哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的 …
前言Redis 是我们工作中接触最多的非关系型数据库,我所在的公司也是 Redis 的深度用户,我们线上的大部分的业务都使用到了 Redis。与传统数据库不同的是 Redis 的数据是存在内存中的,所以存写速度非常快,因此 Redis 被广泛应用于缓存方向。值得注意的是,Redis 也经常用来做分布式锁。Redis 提供了多种数据类型来支持不同的业务场景。除 …
之前一直没关注过Java底层排序的算法,才仔细看了下Timsort。Timsort 是一个混合、稳定的排序算法,简单来说就是归并排序和二分插入排序算法的混合体,号称世界上最好的排序算法。它由 Tim Peters 在 2002 年实现,一直是 Python 的标准排序算法。Java 在 1.7 后增加了 Timsort API ,从Java中的 Arrays …
引言执行引擎子系统是JVM的重要组成部分之一,在JVM系列的开篇曾提到:JVM是一个架构在平台上的平台,虚拟机是一个相似于“物理机”的概念,与物理机一样,都具备代码执行的能力。但虚拟机与物理机最大的不同在于:物理机的执行引擎是直接建立在处理器、高速缓存、平台指令集与操作系统层面上的,物理机的执行引擎可以直接调用各处资源对代码进行直接执行,而虚拟机则是建立在软 …
1、MySQL 逻辑架构介绍1.2、mysql 的分层思想和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上。插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。1.3、mysql 四层架构连接层: 最上层是一些客户端 …
一 、性能与性能优化性能指的是衡量系统是否能满足用户及技术管理需求的一组指标。性能优化是为了使这些指标能够达到用户及管理的目标,而对系统进行的一系列改进过程。作为信息系统的一项重要工作,性能优化过程将贯穿系统开发和应用的整个生命周期。如何用更少的资源提供更好的系统服务,成本利益最大化,并避免IT风险中的系统容量不足等,是亟待我们在软件开发过程中需要重视并考虑 …
跟其他常见的编程语言不同,Java将编译过程分成了两个部分,这就对性能带来了一定的影响。而即时(Just In Time, JIT)编译器能够提高Java程序的运行速度。本文会先解析一下即时编译器的原理,然后再分享一些在美团实践的经验,希望能对大家有所帮助或者启发。一、导读常见的编译型语言如C++,通常会把代码直接编译成CPU所能理解的机器码来运行。而Jav …
枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在日常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是 7 天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为枚举类型。在 JDK 1.5 之前没有枚举类型,那时候一般用接口常量来替代。而使用 Java 枚举类型 enum 可以更贴近地表示这种常量。 …
前缀和一维前缀和前缀和数组 sum 的每一位记录的是当前位置距离起点位置,这连续一段的和区间和。利用前缀和数组,我们可以快速得到数组任意区间的元素和。构造前缀和数组的时间复杂度是 O(n) ,获得区间和的复杂度是 O(1)当nums数组的元素下标从0开始算时,需要做出一些调整模板和例题LeetCode 303. 区域和检索 - 数组不可变给定一个整数数组nu …