![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
面试题
文章平均质量分 90
面试题
知识记录者-vincent
这个作者很懒,什么都没留下…
展开
-
使用 Spring 5 的 开WebFlux 发反应式 Web 应用
Spring 5 是流行的 Spring 框架的下一个重大的版本升级。Spring 5 中最重要改动是把反应式编程的思想应用到了框架的各个方面,Spring 5 的反应式编程以 Reactor 库为基础。Spring 5 框架所包含的内容很多,这里只重点介绍其中新增的 WebFlux 模块。开发人员可以使用 WebFlux 创建高性能的 Web 应用和客户端。这里对 WebFlux 模块进行了详细介绍,包括其中的 HTTP、服务器推送事件和 WebSocket 支持WebFlux 简介WebFlux原创 2021-03-07 13:21:24 · 796 阅读 · 0 评论 -
Spring Framework 总结和面试题
核心特性(Core)IoC容器(IoC Container)Spring事件(Events)资源管理(Resources)国际化(i18n)校验(Validation)数据绑定(Data Binding)类型转换(Type Conversion)Spring表达式(Spring Express Language)面向切面编程(AOP)数据存储(Data Access)JDBC 事务抽象(Transactions) DAO支持(DAO Support)原创 2021-01-26 09:34:28 · 638 阅读 · 0 评论 -
使用 Reactor 进行反应式编程
反应式编程(Reactive Programming)这种新的编程范式越来越受到开发人员的欢迎。在 Java 社区中比较流行的是 RxJava 和 RxJava 2。这里要介绍的是另外一个新的反应式编程库 Reactor反应式编程介绍反应式编程来源于数据流和变化的传播,意味着由底层的执行模型负责通过数据流来自动传播变化。比如求值一个简单的表达式 c=a+b,当 a 或者 b 的值发生变化时,传统的编程范式需要对 a+b 进行重新计算来得到 c 的值。如果使用反应式编程,当 a 或者 b 的值发生变化原创 2021-03-07 11:32:50 · 332 阅读 · 0 评论 -
RocketMQ4.x 笔记
什么是JMS?Java消息服务(Java Message Service),Java平台中关于面向消息中间件的接口,JMS是一种与厂商无关的 API,用来访问消息收发系统消息,它类似于JDBC(Java Database Connectivity)。这里,JDBC 是可以用来访问许多不同关系数据库的 API使用场景 核心应用 解耦:订单系统->物流系统 异步:用户注册->发送邮件,初始化信息 削峰:秒杀、日志处理 跨平台 、多语言 分布式事务、最终原创 2020-11-25 10:28:43 · 878 阅读 · 0 评论 -
红黑树和平衡二叉树有什么区别?
什么是二叉树?二叉树(Binary Tree)是指每个节点最多只有两个分支的树结构,即不存在分支大于 2 的节点,二叉树的数据结构如下图所示这是一棵拥有 6 个节点深度为 2(深度从 0 开始),并且根节点为 3 的二叉树二叉树有两个分支通常被称作“左子树”和“右子树”,而且这些分支具有左右次序不能随意地颠倒一棵空树或者满足以下性质的二叉树被称之为二叉查找树若任意节点的左子树不为空,则左子树上所有节点的值均小于它的根节点的值; 若任意节点的右子树不为空,则右子树上所有节点的值均大原创 2020-09-08 23:11:09 · 6256 阅读 · 2 评论 -
MySQL有多少种常用的日志,有什么作用
redo 重做⽇志 作⽤:确保事务的持久性,防⽌在发⽣故障,脏⻚未写⼊磁盘。重启数据库会进⾏redo log执⾏ 重做,到达事务⼀致性 undo 回滚⽇志 作⽤:保证数据的原⼦性,记录事务发⽣之前的数据的⼀个版本,⽤于回滚。 innodb事务的可重复读和读取已提交 隔离级别就是通过mvcc+undo实现 errorlog 错误⽇志作⽤:MySQL本身启动、停⽌、运⾏期间发⽣的错误信息 slow query log 慢查询⽇志 作⽤:记录执⾏时间过⻓的sql,时间阈值可原创 2021-08-09 09:12:22 · 528 阅读 · 0 评论 -
Spring事务的传播属性和隔离级别
事务传播行为 如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为 @Transactional(propagation=Propagation.REQUIRED)如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)@Transactional(propagation=Propagation.NOT_SUPPORTED)不为这个方法开启事务@Transactional(propagation=Propagation.REQUIRES_原创 2021-08-07 12:21:11 · 401 阅读 · 0 评论 -
Redis 缓存击穿、穿透、雪崩的理解和解决方案
缓存击穿 (某个热点key缓存失效了)缓存中没有但数据库中有的数据,假如是热点数据,那key在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到DB,造成瞬时DB请求量大、压力增大和缓存雪崩的区别在于这里针对某一key缓存,后者则是很多key预防:设置热点数据不过期,定时任务定时更新缓存,或者设置互斥锁缓存穿透(查询不存在数据)查询一个不存在的数据,由于缓存是不命中的,并且出于容错考虑,如发起为id为“-1”不存在的数据如果从存储层查不到数据则不写入缓存这将导致这个...原创 2020-08-26 15:33:47 · 80 阅读 · 0 评论 -
分布式事务扫盲
什么是分布式事务事务事务指的就是一个操作单元,在这个操作单元中的所有操作最终要保持一致的行为,要么所有操作都成功,要么所有的操作都被撤销分两种:一个是本地事务:本地事务其实可以认为是数据库提供的事务机一个是分布式事务分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用分布式事务需要保证这些小操作要么全部成功,要么全部失败本质上来说,原创 2021-07-16 11:24:30 · 204 阅读 · 2 评论 -
Java 基础面试题合集Ⅰ
compareTo() 方法和 equals() 方法有什么区别?compareTo() 方法和 equals() 方法都是用于比较两个字符串的但是有2点不同1、equals()可以接收一个Object类型的参数,而compareTo()只能接收一个String类型的参数2、equals()返回值为Boolean,而compareTo()的返回值为int当equals() 方法返回true时,或者compareTo()方法返回0时,则表示两个字符串完成的相等其他String的重要方法原创 2021-03-08 13:52:06 · 188 阅读 · 0 评论 -
什么是TCC?
假设现在有一个电商系统,里面有一个支付订单的场景,那对一个订单支付之后,我们需要做下面的步骤 更改订单的状态为 “已支付” 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货 业务场景有了,现在要更进一步,实现一个 TCC 分布式事务的效果,也就是说,订单服务 - 修改订单状态,库存服务 - 扣减库存,积分服务 - 增加积分,仓储服务 - 创建销售出库单,上述这几个步骤,要么一起成功,要么一起失败,必须是一个整体性的事务举个例子,现在订单的状态都修原创 2021-02-25 17:15:41 · 40050 阅读 · 1 评论 -
spi 是什么?
spi 是什么?spi,简单来说,就是service provider interface,比如你有个接口,现在这个接口有 3 个实现类,那么在系统运行的时候对这个接口到底选择哪个实现类呢?这就需要 spi 了,需要根据指定的配置或者是默认的配置,去找到对应的实现类加载进来,然后用这个实现类的实例对象例如:你有一个接口 A。A1/A2/A3 分别是接口A的不同实现。你通过配置接口 A = 实现 A2,那么在系统实际运行的时候,会加载你的配置,用实现 A2 实例化一个对象来提供服务。spi 机..原创 2021-02-25 10:24:30 · 2626 阅读 · 0 评论 -
如果几十万用户同时访问一个热点缓存,如何优化你的缓存架构?
为什么要用缓存集群使用缓存集群的时候,最怕的就是热 key、大 value 这两种情况什么叫热 key 大 value 呢?热 key,就是你的缓存集群中的某个 key 瞬间被数万甚至十万的并发请求打爆大 value,就是你的某个 key 对应的 value 可能有 GB 级的大小,导致查询 value 的时候导致网络相关的故障问题假设你手头有个系统,他本身是集群部署的,然后后面有一套缓存集群,这个集群不管你用 redis cluster,还是 memcached,或者是公司自研缓存原创 2021-02-24 16:01:38 · 325 阅读 · 0 评论 -
高并发下系统如何保持稳定?
背景情况:线上一个系统,在某次高峰期间 MQ 中间件故障的情况下,触发了降级机制,结果降级机制触发之后运行了一小会儿,突然系统就完全卡死,无法响应任何请求这个系统简单来说就是有一个非常核心的行为,就是往 MQ 里写入数据,但是这个往 MQ 里写入的数据是非常核心及关键的,绝对不容许有丢失,所以设计了一个降级机制,如果一旦 MQ 中间件故障,那么这个系统立马就会把核心数据写入本地磁盘文件,但是如果说在高峰期并发量比较高的情况下,接收到一条数据立马同步写本地磁盘文件,这个性能绝对是极其差的,会导致系统自身的原创 2021-02-24 15:05:33 · 714 阅读 · 0 评论 -
Java 并发之 谈谈你对AQS的理解
ReentrantLock 和 AQS 的关系如果用 java 并发包下的 ReentrantLock 来加锁和释放锁,是什么样的感觉?上面那段代码不难理解,无非就是搞一个 Lock 对象,然后加锁和释放锁这个跟 AQS 有啥关系?因为 java 并发包下很多 API 都是基于 AQS 来实现的加锁和释放锁等功能的,AQS 是 java 并发包的基础类,举个例子,比如说 ReentrantLock、ReentrantReadWriteLock 底层都是基于 AQS 来实现的AQS 的原创 2021-02-24 14:32:07 · 352 阅读 · 1 评论 -
Java 并发之 Java 8 如何优化 CAS 性能?
假设多个线程需要对一个变量不停的累加 1,比如说下面这段代码上面那段代码是有问题的,因为多个线程直接这样并发的对一个 data 变量进行修改,是线程不安全性的行为,会导致 data 值的变化不遵照预期的值来改变举个例子,比如说 20 个线程分别对 data 执行一次 data++ 操作,我们以为最后 data 的值会变成 20,其实不是,最后可能 data 的值是 18,或者是 19,都有可能,因为多线程并发操作下,就是会有这种安全问题,导致数据结果不准确初步解决方案:synchron.原创 2021-02-24 11:37:25 · 179 阅读 · 0 评论 -
Java并发之 volatile 到底是什么?
首先,给大家上一张图,咱们来一起看看如上图,这张图说的是 java 内存模型中,每个线程有自己的工作内存,同时还有一个共享的主内存举个例子,比如说有两个线程,他们的代码里都需要读取 data 这个变量的值,那么他们都会从主内存里加载 data 变量的值到自己的工作内存,然后才可以使用那个值,从图里看到,每个线程都把 data 这个变量的副本加载到了自己的工作内存里了,所以每个线程都可以读到 data = 0 这个值,这样,在线程代码运行的过程中,对 data 的值都可以直接从工作内存里加载了,不原创 2021-02-24 10:32:41 · 81 阅读 · 1 评论 -
如何回答 MySQL 的索引原理与优化问题?
案例背景假设面试官问你:在电商平台的订单中心系统中,通常要根据商品类型、订单状态筛选出需要的订单,并按照订单创建的时间进行排序,那针对下面这条 SQL,你怎么通过索引来提高查询效率呢?select * from order where status = 1 order by create_time asc有的人会认为,单独给 status 建立一个索引就可以了,但是更优的方式是建立一个 status 和 create_time 组合索引,这是为了避免 MySQL 数据库发生文件排序。因为在查原创 2021-01-28 17:23:16 · 194 阅读 · 0 评论 -
如何让系统抗住双十一的预约抢购活动?
案例背景在大促活动期间,“预约抢购”已经是各大电商平台的主要促销手段,京东自然也会和一些大的供应商合作,推出一些低价的爆款产品,比如 2020 年的 “1499 元抢购飞天茅台”活动,就让很多人每天准时准点拿着手机拼人品先把需求梳理一下,总的来说,实现一个抢购系统大概可以分为四个阶段商品预约:用户进入商品详情页面,获取购买资格,并等待商品抢购倒计时 等待抢购:等待商品抢购倒计时,直到商品开放抢购 商品抢购:商品抢购倒计时结束,用户提交抢购订单,排队等待抢购结果,抢购成功后,扣减系统库存,生原创 2021-01-28 16:45:47 · 451 阅读 · 1 评论 -
如何回答消息队列的丢失、重复与积压问题
案例背景以京东系统为例,用户在购买商品时,通常会选择用京豆抵扣一部分的金额,在这个过程中,交易服务和京豆服务通过 MQ 消息队列进行通信。在下单时,交易服务发送“扣减账户 X 100 个京豆”的消息给 MQ 消息队列,而京豆服务则在消费端消费这条命令,实现真正的扣减操作在这个过程中你会遇到什么问题呢?案例分析在互联网面试中,引入 MQ 消息中间件最直接的目的是:做系统解耦合流量控制,追其根源还是为了解决互联网系统的高可用和高性能问题系统解耦:用 MQ 消息队列,可以隔离系统上.原创 2021-01-28 15:52:44 · 1058 阅读 · 2 评论 -
如何在面试中展现出“造轮子”的能力?
案例背景主流的 RPC 框架很多,比如 Dubbo、Thrift、gRPC 等,非主流的框架你在 GitHub 上搜索也有很多结果。框架资源多,工作中的选择也多,基本上都是拿来就用,停留在基础概念和使用上,不会深究技术实现很多候选人对于 RPC 有关的面试问题存在一个误区,认为面试官只会问这样几个问题RPC 的一次调用过程是怎样的? RPC 的服务发现是如何实现的? RPC 的负载均衡有哪些?这些问题看似专业,却很容易搜索到答案,如果作为面试题很难区分候选人的技术能力。所以针对 RP原创 2021-01-28 15:14:24 · 451 阅读 · 1 评论 -
分布式系统中,如何回答锁的实现原理?
案例背景分布式锁是解决协调分布式系统之间,同步访问共享资源的一种方式。详细来讲:在分布式环境下,多个系统在同时操作共享资源(如写数据)时,发起操作的系统通常会通过一种方式去协调其他系统,然后获取访问权限,得到访问权限后才可以写入数据,其他系统必须等待权限释放分布式锁假设你正在面试,面试官模拟了系统秒杀的场景:为了防止商品库存超售,在并发场景下用到了分布式锁的机制,做商品扣减库存的串行化操作。然后问你:“你如何实现分布式锁?”你该怎么回答呢?案例分析当你听到这个问题后,心里会不会窃喜?觉.原创 2021-01-26 12:06:41 · 232 阅读 · 0 评论 -
大数据量并发场景下,如何回答分布式事务一致性问题?
案例背景在互联网分布式场景中,原本一个系统被拆分成多个子系统,要想完成一次写入操作,你需要同时协调多个系统,这就带来了分布式事务的问题(分布式事务是指:一次大的操作由多个小操作组成,这些小的操作分布在不同的服务器上,分布式事务需要保证这些小操作要么全部成功,要么全部失败)以京东旅行系统为例,早期的交易系统是通过 .NET 实现的,所有的交易下单逻辑都写在一个独立的系统中。随着技术改造,用 Java 重写了核心系统,原本的系统也被拆分成多个子系统,如商品系统、促销系统、订单系统。当用户下单时,订单系.原创 2021-01-26 11:16:04 · 418 阅读 · 0 评论 -
大数据量商品存储下,如何深度回答分布式系统的原理性问题?
案例背景在你面试时,有没有被问到以下几个问题如何设计一个支持海量商品存储的高扩展性架构? 在做分库分表时,基于 Hash 取模和一致性 Hash 的数据分片是如何实现的? 在电商大促时期,如何对热点商品数据做存储策略 ? 强一致性和最终一致性的数据共识算法是如何实现的 ?案例分析在互联网业务场景下,为了解决单台存储设备的局限性,会把数据分布到多台存储节点上,以此实现数据的水平扩展。既然要把数据分布到多个节点,就会存在数据分片的问题。数据分片即按照一定的规则将数据路由到相应的存.原创 2021-01-26 10:34:37 · 164 阅读 · 0 评论 -
Docker 有什么优点?使用时需要注意什么问题?
Docker 有什么优点?使用时需要注意什么问题?Docker 是什么?它有什么优点?Docker 是一个开源(开放源代码)的应用容器引擎,可以方便地对容器进行管理。可通过 Docker 打包各种环境应用配置,比如安装 JDK 环境、发布自己的 Java 程序等,然后再把它发布到任意 Linux 机器上Docker 中有三个重要的概念,具体如下 镜像(Image):一个特殊的文件操作系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(如匿名卷、原创 2021-01-26 09:20:52 · 160 阅读 · 0 评论 -
Nginx 的负载均衡模式有哪些?它的实现原理是什么?
Nginx 的负载均衡模式有哪些?它的实现原理是什么?什么是 Nginx?Nginx 是一款开源的高性能轻量级 Web 服务器(也叫 HTTP 服务器),它主要提供的功能是:反向代理、负载均衡和HTTP 缓存。它于 2004 年首次公开发布,2011 年成立同名公司以提供支持,2019 年 3 月被 F5 Networks 以 6.7 亿美元收购之所以需要使用负载均衡是因为,如果我们使用的是一台服务器,那么在高峰期时很多用户就需要排队等待系统响应,因为一台服务器能处理的并发数是固定的。例如,一个原创 2021-01-26 09:20:32 · 194 阅读 · 0 评论 -
红黑树和二叉树有什么区别?
红黑树和二叉树有什么区别?什么是二叉树?什么是红黑树?二叉树(Binary Tree)是指每个节点最多只有两个分支的树结构,即不存在分支大于 2 的节点,二叉树的数据结构如下图所示这是一棵拥有 6 个节点深度为 2(深度从 0 开始),并且根节点为 3 的二叉树二叉树有两个分支通常被称作“左子树”和“右子树”,而且这些分支具有左右次序不能随意地颠倒一棵空树或者满足以下性质的二叉树被称之为二叉查找树若任意节点的左子树不为空,则左子树上所有节点的值均小于它的根节点的值; 若任原创 2021-01-26 09:21:06 · 13351 阅读 · 3 评论 -
生产环境如何排除和优化 JVM?
生产环境如何排除和优化 JVM?如果是在生产环境中直接排查 JVM 的话,最简单的做法就是使用 JDK 自带的 6 个非常实用的命令行工具来排查。它们分别是:jps、jstat、jinfo、jmap、jhat 和 jstack,它们都位于 JDK 的 bin 目录下,可以使用命令行工具直接运行,其目录如下图所示1、jps(虚拟机进程状况工具)jps(JVM Process Status tool,虚拟机进程状况工具)它的功能和Linux中的 ps 命令比较类似,用于列出正在运行的 JVM..原创 2021-01-26 09:21:20 · 241 阅读 · 0 评论 -
你用过哪些垃圾回收器?它们有什么区别?
用过哪些垃圾回收器?它们有什么区别?《Java 虚拟机规范》并没有对垃圾收集器的具体实现做任何的规定,因此每家垃圾收集器的实现方式都不同,但比较常用的垃圾回收器是OracleJDK中自带的HotSpot虚拟机。HotSpot 中使用的垃圾收集器主要包括 7 个:Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS 和 G1(Garbage First)收集器Serial收集器Serial收集器属于最早期的垃圾收集器,也是...原创 2021-01-25 16:02:27 · 178 阅读 · 0 评论 -
JVM 垃圾回收算法有哪些?
如何判断一个对象是否“死亡”?垃圾回收的算法有哪些?垃圾回收器(GC,Garbage Collection)首先要做的就是,判断一个对象是存活状态还是死亡状态,死亡的对象将会被标识为垃圾数据并等待收集器进行清除判断一个对象是否为死亡状态的常用算法有两个:引用计数器算法和可达性分析算法引用计数算法(Reference Counting) 属于垃圾收集器最早的实现算法了,它是指在创建对象时关联一个与之相对应的计数器,当此对象被使用时加 1,相反销毁时 -1。当此计数器为 0 时,则表示此对象未使用,原创 2021-01-25 15:42:03 · 359 阅读 · 0 评论 -
JVM 的内存布局和运行原理?
JVM 的内存布局和运行原理?JVM 的种类有很多,比如HotSpot虚拟机,它是Sun/OracleJDK和OpenJDK中的默认 JVM,也是目前使用范围最广的 JVM。我们常说的 JVM 其实泛指的是 HotSpot 虚拟机,还有曾经与 HotSpot 齐名为“三大商业 JVM”的 JRockit 和 IBM J9 虚拟机。但无论是什么类型的虚拟机都必须遵守 Oracle 官方发布的《Java虚拟机规范》,它是 Java 领域最权威最重要的著作之一,用于规范 JVM 的一些具体“行为”...原创 2021-01-25 15:35:05 · 119 阅读 · 0 评论 -
Redis 是如何实现高可用的?
Redis 是如何实现高可用的?Redis 高可用的手段主要有以下四种数据持久化数据持久化保证了系统在发生宕机或者重启之后数据不会丢失,增加了系统的可靠性和减少了系统不可用的时间(省去了手动恢复数据的过程);主从数据同步(主从复制)主从数据同步可以将数据存储至多台服务器,这样当遇到一台服务器宕机之后,可以很快地切换至另一台服务器以继续提供服务;Redis 哨兵模式(Sentinel)哨兵模式用于发生故障之后自动切换服务器;Redis 集群(Cluster)Redis 集群提供了原创 2021-01-25 15:09:24 · 169 阅读 · 1 评论 -
Redis 中实现消息队列的方式有几种?
Redis 中实现消息队列的方式有几种?早在 Redis 2.0 版本之前使用 Redis 实现消息队列的方式有两种使用 List 类型实现 使用 ZSet 类型实现其中使用List 类型实现的方式最为简单和直接,它主要是通过lpush、rpop存入和读取实现消息队列的,如下图所示lpush可以把最新的消息存储到消息队列(List 集合)的首部,而rpop可以读取消息队列的尾部,这样就实现了先进先出,如下图所示命令行的实现命令如下127.0.0.1:6379...原创 2021-01-25 14:16:54 · 641 阅读 · 0 评论 -
Redis 怎么样实现的分布式锁?
Redis 怎么样实现的分布式锁?分布式锁是控制分布式系统之间同步访问共享资源的一种方式。是为了解决分布式系统中,不同的系统或是同一个系统的不同主机共享同一个资源的问题,它通常会采用互斥来保证程序的一致性,这就是分布式锁的用途以及执行原理分布式锁示意图,如下图所示分布式锁的常见实现方式有四种 基于 MySQL 的悲观锁来实现分布式锁,这种方式使用的最少,因为这种实现方式的性能不好,且容易造成死锁; 基于 Memcached 实现分布式锁,可使用 add 方法来实现,如果添加原创 2021-01-25 13:56:33 · 81 阅读 · 0 评论 -
Redis 是如何处理过期数据的?当内存不够用时 Redis 又是如何处理的?
Redis 是如何处理过期数据的?当内存不够用时 Redis 又是如何处理的?在新增 Redis 缓存时可以设置缓存的过期时间,该时间保证了数据在规定的时间内失效,可以借助这个特性来实现很多功能。比如,存储一定天数的用户(登录)会话信息,这样在一定范围内用户不用重复登录了,但为了安全性,需要在一定时间之后重新验证用户的信息。因此,我们可以使用Redis 设置过期时间来存储用户的会话信息对于已经过期的数据,Redis 将使用两种策略来删除这些过期键,它们分别是惰性删除和定期删除惰性删除是指 .原创 2021-01-25 11:20:33 · 1136 阅读 · 0 评论 -
关系型数据库和文档型数据库有什么区别?
关系型数据库和文档型数据库有什么区别?关系数据库(Relational Database)是建立在关系模型基础上的数据库,借助于几何代数等数学概念和方法来处理数据库中的数据。所谓关系模型是一对一、一对多或者多对多等关系,常见的关系型数据库有Oracle、SQL Server、DB2、MySQL等而文档型数据库是一种非关系型数据库,非关系型数据库(Not Only SQL,NoSQL)正好与关系型数据库相反,它不是建立在“关系模型”上的数据库。文档型数据库的典型代表是MongoDB关系型数据...原创 2021-01-25 10:49:53 · 1350 阅读 · 0 评论 -
MySQL 的优化方案有哪些?
MySQL 的优化方案有哪些?MySQL 数据库常见的优化手段分为三个层面:SQL 和索引优化、数据库结构优化、系统硬件优化等,然而每个大的方向中又包含多个小的优化点1、SQL 和索引优化此优化方案指的是通过优化 SQL 语句以及索引来提高 MySQL 数据库的运行效率①使用正确的索引索引是数据库中最重要的概念之一,也是提高数据库性能最有效的手段之一,它的诞生本身就是为了提高数据查询效率的,就像字典的目录一样,通过目录可以很快找到相关的内容假如我们没有添加索引,那么在查询时就会触发全表原创 2021-01-25 10:15:56 · 733 阅读 · 0 评论 -
MySQL 的运行机制是什么?它有哪些引擎?
MySQL 的运行机制是什么?它有哪些引擎?MySQL 的执行流程是这样的,首先客户端先要发送用户信息去服务器端进行授权认证。如果使用的是命令行工具,通常需要输入如下信息mysql -h 主机名(IP) -u 用户名 -P 端口 -p其中-h 表示要连接的数据库服务器的主机名或者 IP 信息; -u 表示数据库的用户名称; -P 表示数据库服务器的端口号, 小写的 -p 表示需要输入数据库的密码当输入正确密码之后可以连接到数据库了,如果密码输入错误,则会提示“Access原创 2021-01-25 10:14:37 · 92 阅读 · 0 评论 -
MQ 常见的使用场景有哪些?你都用过哪些 MQ 中间件?
MQ 常见的使用场景有哪些?你都用过哪些 MQ 中间件?MQ 可以用来实现削峰填谷,也就是使用它可以解决短时间内爆发式的请求任务,在不使用 MQ 的情况下会导致服务处理不过来,出现应用程序假死的情况,而使用了 MQ 之后可以把这些请求先暂存到消息队列中,然后进行排队执行,那么就不会出现应用程序假死的情况了,所以它的第一个应用就是商品秒杀以及产品抢购等使用场景,如下图所示使用 MQ 实现消息通讯使用 MQ 可以作为消息通讯的实现手段,利用它可以实现点对点的通讯或者多对多的聊天室功能点对点的原创 2021-01-24 23:24:49 · 1917 阅读 · 0 评论 -
Spring 和 Spring Boot 有什么区别?Spring Boot 的优点有哪些?
Spring 和 Spring Boot 有什么区别?Spring Boot 的优点有哪些?Spring为 Java 程序提供了全面的基础架构支持,包含了很多非常实用的功能,如Spring JDBC、Spring AOP、Spring ORM、Spring Test等,这些模块的出现,大大的缩短了应用程序的开发时间,同时提高了应用开发的效率Spring Boot本质上是Spring框架的延伸和扩展,它的诞生是为了简化 Spring 框架初始搭建以及开发的过程,使用它可以不再依赖 Spri...原创 2021-01-24 23:13:24 · 729 阅读 · 0 评论