Java 面试
文章平均质量分 94
囊括Java 面试相关的高频面试点,具有知识点全面、突出高频、原理具有深度
一只倔强的蜗牛
编码人生,深耕技术
展开
-
myql Explain 详解与索引最佳实践
文章目录一、Explain概述二、准备工作三、Explain类型四、explain 中的列1. id列1)简单子查询2)from 子句中的子查询3)union查询2. select_type列3. table列==4. type列==5. possible_keys列==6. key列==7. key_len列8. ref列==9. rows列====10. Extra列==五、索引最佳实践使用的表最佳实践1. 全值匹配2.最佳左前缀法则3.不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会原创 2021-07-14 16:27:07 · 287 阅读 · 0 评论 -
mysql 索引底层数据结构和原理
1. 索引是什么?索引是帮助MySQL高效获取数据的排好序的数据结构2. 磁盘存取原理?寻道时间(速度慢,费时)旋转时间(速度较快)表中每一行记录在磁盘上不一定是连续的!因为往同一张表中插入数据是存在时间间隔的,这样在间隔期磁盘上会有其他数据写入。磁盘组成部分:多个盘片(逆时针旋转) + 磁柱 + 磁头(左右移动)数据存储在磁道中间的扇区一次磁盘IO = (磁头)寻道时间 + (盘片)旋转时间3. 为什么要用 BTREE 作为索引数据结构?二叉树红黑树原创 2021-07-14 11:32:42 · 163 阅读 · 0 评论 -
mysql 基础架构:一条SQL查询语句是如何执行的?
目录连接器查询缓存分析器优化器执行器下面我给出的是 MySQL 的基本架构示意图,从中你可以清楚地看到 SQL 语句在 MySQL 的各个功能模块中的执行过程。大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数.原创 2021-07-13 16:31:00 · 100 阅读 · 0 评论 -
mysql 日志系统:一条SQL更新语句是如何执行的?
目录重要的日志模块:redo log重要的日志模块:binlog两阶段提交小结前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句的执行流程又是怎样的呢?之前你可能经常听 DBA 同事说,MySQL 可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢?我们还是从一个表的一条更新语句说起,下面原创 2021-07-13 20:23:58 · 111 阅读 · 0 评论 -
【转载】分布式之消息队列复习精讲
引言为什么写这篇文章?博主有两位朋友分别是小A和小B:小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑。再不然就是和运营聊聊天,写几个SQL,生成下报表。又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线。每天过的都是这种生活,技术零成长。 小B,工作于某国企,虽然能接触到一些中间件技术。然而,他只会订阅/发布消息。通俗点...转载 2018-10-13 23:10:22 · 138 阅读 · 0 评论 -
Java 8 熟练掌握这些新特性就够了
一、前言Java 8带来了很多新特性,平时用的比较多的,一个是基于stream方式的集合处理,这其中又结合了另一个关键的知识点——函数式编程,可以用Lambda表达式的方式在stream中传入函数式接口,从而改变stream。另一个是新的时间处理API,目前用的还不是很多,从API层面上来看更合理、大一统了,后面工作过程中有机会还是把这块更多的用起来!二、新特性介绍这块自己没有再...原创 2019-07-27 10:54:36 · 148 阅读 · 0 评论 -
常见设计模式——模板方法
Intent定义算法框架,并将一些步骤的实现延迟到子类。通过模板方法,子类可以重新定义算法的某些步骤,而不用改变算法的结构。Class DiagramImplementation冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。public abstract class CaffeineBeverage { fina...原创 2019-03-22 10:28:34 · 155 阅读 · 0 评论 -
常见设计模式——代理模式
Intent控制对其它对象的访问。Class Diagram抽象角色:声明真实对象和代理对象的共同接口,这样在任何使用真实对象的地方都可以使用代理对象。代理角色:代理对象内部含有真实对象的引用,从而可以在任何时候操作真实对象。代理对象和真实对象具有相同的接口,这样就可以在任何时候替代真实对象。代理对象通常在执行真实对象的操作前后,附加某些其他的操作,相当于对真实对象进行封装。真...原创 2019-03-22 10:20:23 · 177 阅读 · 0 评论 -
常见设计模式——装饰模式
Intent为对象动态添加功能。Class Diagram装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能...原创 2019-03-22 09:19:44 · 155 阅读 · 0 评论 -
常见设计模式——策略模式
Intent定义一系列算法,封装每个算法,并使它们可以互换。策略模式可以让算法独立于使用它的客户端。Class DiagramStrategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 ...原创 2019-03-21 21:28:56 · 156 阅读 · 0 评论 -
常见设计模式——观察者模式
Intent定义对象之间的一对多依赖,当一个对象状态改变时,它的所有依赖都会收到通知并且自动更新状态。主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。Class Diagram主题(Subject)具有注册和移除观察者、并通知所有观察者的功能,主题是通过维护一张观察者列表来实现这些操作的。观察者(Observer)的注册功能需要调用...原创 2019-03-21 21:21:45 · 150 阅读 · 0 评论 -
常见设计模式——三种工厂模式(简单工厂、工厂方法、抽象工厂)
1 、简单工厂(Simple Factory)Intent在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。Class Diagram简单工厂把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个具体子类来实例化。这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用...原创 2019-03-21 20:40:31 · 478 阅读 · 0 评论 -
常见设计模式——单例模式
设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。1. 单例(Singleton)Intent确保一个类只有一个实例,并提供该实例的全局访问点。Class Diagram使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。私有构造函数保证了不能通过构造函数来创建对象实...原创 2019-03-21 20:17:31 · 135 阅读 · 0 评论 -
JDK 线程池
一. 为什么用线程池(线程池的作用)1. 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率例如:记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3如果T1+T3>T2,那么是不是说开启一个线程来执行这个任务太不划算了!正好,线程池缓存线程,可用已有的闲置线程来执行新任务,避免了T1+T3带来的系统开销2. 线程并发数...原创 2018-10-07 12:22:40 · 326 阅读 · 0 评论 -
Java IO
一、概览二、磁盘操作三、字节操作实现文件复制装饰者模式四、字符操作编码与解码String 的编码方式Reader 与 Writer实现逐行输出文本文件的内容五、对象操作序列化Serializabletransient六、网络操作InetAddressURLSocketsDatagram七、NIO流与块通道与缓冲区缓冲区状态变...原创 2018-11-28 14:44:29 · 125 阅读 · 0 评论 -
HashMap的工作原理
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入...转载 2018-07-02 15:11:01 · 73 阅读 · 0 评论