自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (2)
  • 收藏
  • 关注

原创 高薪Offer收割机之聚集索引和非聚集索引

什么是聚集索引,非聚集索引,回表查询,覆盖索引本文会详细讲解

2023-08-08 10:07:56 93

原创 高薪Offer收割机之索引及索引的数据结构

索引是面试常考热点,索引底层的数据结构到底长啥样,文章会为你详细解析!

2023-08-02 11:56:17 96

原创 高薪Offer收割机之MySql如何定位慢查询

当系统中存在执行很慢的sql语句时可能会导致页面加载过慢,接口压测响应时间过长,数据库中sql语句的执行速度往往会成为整个系统的瓶颈,执行耗时很长的查询我们称之为慢查询,如何定位和分析慢查询呢,本文详细进行了讲解

2023-07-24 19:33:16 128

原创 高薪Offer收割机之redis集群

单节点的redis并发能力是有限的,如果需要进一步提高redis的并发能力,就需要搭建集群。Redis中的集群分为三种:主从复制,哨兵模式,分片集群本篇文章详细的介绍了这几种集群的机制和原理

2023-07-19 11:52:41 296

原创 高薪Offer收割机之Redis分布式锁

redis的一个重要的用途就是作为分布式锁,本篇文章详细介绍了redis作为分布式锁锁的用法。

2023-07-16 16:54:58 95

原创 高薪Offer收割机之Redis数据过期和淘汰策略

内存空间是有限的,Redis数据存满以后如何保证新的数据能够存入,这就需要数据过期和淘汰策略,本篇文章详细讲解了这两种策略。

2023-07-11 18:04:49 177

原创 高薪Offer收割机之Redis的数据持久化

Redis的持久化是使用Redis缓存中必然会碰到的问题也是面试的a热点问题,本文详细介绍了Redis的两种持久化方式RDB和AOF

2023-07-09 22:19:04 85

原创 高薪offer收割机之-双写一致性

双写一致性也就是在更新数据库的时候如何保证缓存中的数据与数据库中的一致是一个让人头疼的问题也是面试官爱问的问题,本文会结合各个场景给出相应的方案。

2023-07-07 09:53:12 88

原创 高薪offer收割面试题之缓存穿透,击穿,雪崩

从布隆过滤器查询某个key是否存在时,先用添加key时的hash函数对这个key进行计算,查看布隆过滤器的位数组中对应的位置是否都为 1,只要有一个位为零,那么说明布隆过滤器中这个 key 不存在.如果这几个位置全都是 1,那么说明极有可能存在.因为这些位置的 1 可能是因为其他的 key 存在导致的。也就是虽然在数据库中查找不到该id的文章,也把该文章的信息缓存起来,只是缓存的为空值,这样以后每次查询这个id的文章就可以在缓存中命中,虽然值为空。这个过期时间不是真正的过期时间只是逻辑上的因此叫逻辑过期。

2023-07-04 20:47:16 81

原创 高薪offer收割面试题之-Comparable和Comparator

1.如果要按照年龄升序排序, 则o1.getAge()大于o2.getAge()返回正整数,o1.getAge()与o2.getAge()相等返回0,o1.getAge()小于o2.getAge()返回负整数。2.如果要按照年龄降序排序, 则o1.getAge()小于o2.getAge()返回正整数,o1.getAge()与o2.getAge()相等返回0,o1.getAge()大于o2.getAge()返回负整数。Comparable后缀是able说明它代表的是一种能力,什么能力呢,排序的能力。

2023-04-27 10:00:51 405

原创 Spring Security七:授权

授权的方式包括web授权和方法授权,web授权是通过url拦截进行授权,方法授权是通过方法拦截进行授权,他们都会调用accessDecisionManager进行授权决策,若为web授权则拦截器为:FilterSecurityIntecepter,若为方法授权则拦截器为:MethodSecurityIntecepter,如果同时通过web授权和方法授权则先进行web授权再执行方法授权,最后决策通过...

2020-02-29 07:58:33 269

原创 Spring Security六:自定义认证

通过前面的学习我们可以使用spring security完成简单的认证和授权,但是实际项目中用户的数据往往都是存在数据库中,登录页面也需要可以自由定制,下面我们就来学习使用spring security如何完成创建mavean项目选择模板 mavean-archetype-webapp 自定义登录页面: 创建登录页面,结构如下:在WEBCONFIG.j...

2020-02-26 07:57:28 311

原创 Spring Security五:Spring security原理

Spring security可以进行认证和授权,认证和授权需要针对每一个请求,所以这个功能,可以用过滤器来实现,spring security正是通过一系列过滤器来实现认证和授权功能的。我们来看看其中几个比较重要的过滤器,类和接口。 UserDetails: public interface UserDetails extends Serializable {Coll...

2020-02-25 07:51:09 315

原创 SpringSecurity四:Springboot集成SpringSecurity

Spring security也是spring家族中的一员,使用spring boot集成spring security非常的方便,下面就通过一个例子来讲解一下如何在spring boot中集成spring security 创建mavean工程springboot_security Pom.xml<parent> <groupId>org....

2020-02-24 07:37:45 165

原创 Spring Security三:Spring Security介绍

Spring Security是企业中使用广泛的认证授权框架,它也是spring家族中的一员,特别是它和spring boot结合开发非常的简单,能够极大的提高我们的生产力1创建一个mavean工程:SpringSecurity022pom中在上一个案例的基础上增加spring Security的依赖:<dependency><groupId>...

2020-02-23 06:59:05 117

原创 Spring Security二:Session的认证方式

下面来通过一个实例讲解Session认证的方式创建工程:引入依赖:<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifa...

2020-02-22 07:55:05 3116

原创 SpringSecurity一:认证和授权

什么是认证?认证就是取得合法身份,比如京东需要用户登录以后才能才能下订单,这里的登录就是认证。登录成功以后就具有了合法身份可以继续进行下一步的操作。常用的认证方式常用的认证方式有基于session的认证和基于token的认证。先来看一下基于session的认证:用户登录成功后服务器会将用户的信息保存在session(当前会话)当中,每个session对应有一个sessionid...

2020-02-21 07:42:07 733

原创 MySql优化之索引优化

索引是数据库优化最重要的手段,当我们遇到数据库性能问题的时候首先想到的就应该是索引优化,我们通过一个例子来看看索引对查询效率的影响究竟有多大:我们还是沿用上一讲的数据库里面有一百万条数据:根据id查询index_test表看一下它的查询计划:查询速度很快,因为id上有主键索引,这里是索引查询再来根据user字段查询一下:花了0.57秒,如果在user字段上加上...

2020-02-20 08:05:33 2610

原创 MySql优化之show profile分析SQL

Mysql从5.0.3版本开始增加了对show profiles和show profile的支持,show profile能够帮我们了解在sql语句执行过程中时间耗费在了哪些地方以下操作都是session级别的我们可以通过 select @@have_profiling来显示当前mysql是否支持profile:通过 select @@profiling查看profile是否...

2020-02-19 07:43:31 346 1

原创 MySql优化之分析执行计划

explain分析执行计划通过以上步骤定位到有问题的sql语句以后我们可以通过explain来分析一下该select语句的执行计划,包括该语句如何连接和连接的顺序Explain select * from user where id = 1;这个命令可以显示select * from user where id = 1这个查询语句的执行计划Id:select查询的序列号,...

2020-02-18 07:50:29 136

原创 MySql优化之前期探索

一个系统中数据库往往会成为性能瓶颈,在开发阶段更多考虑的可能是功能的完成,随着系统的投入使用,数据量越来越大,sql语句查询速度慢的问题就会被凸显出来。对于一个有sql语句性能为题的系统,如何找出问题,解决问题,就是下面要探讨的内容:查看sql执行频率:Mysql客户端连接成功以后,通过show [session|global] status命令可以提供服务器状态信息,show sess...

2020-02-17 08:11:41 122

原创 MySql的逻辑架构

Mysql在互联网企业中应用非常广泛,互联网企业的特点访问量非常大,怎么样优化mysql就成了摆在我们面前的一道难题。我们从mysql的逻辑架构说起:最上面一层是客户端的连接服务,主要完成客户端的连接处理,授权认证。在该层有一个线程池,每一个连接从线程池中获取线程,省去了创建和销毁线程的开销。中间这一层可以完成查询解析,分析,优化,缓存。存储过程,触发器,视图也是在这一层。最下...

2020-02-16 08:02:45 174

原创 Mysql索引的用法

1.索引的分类在mysql中索引可以分为三类:主键索引:设置为主键的列会创建主键索引,主键唯一非空。 单列索引:即索引中只包含一个列,一张表可以有多个单列索引 唯一索引:索引列的值必须唯一,允许有空值4)复合索引:即索引中可以包含多个列2.创建索引可以在创建表的同时创建索引,也可以在已有表的基础上去创建索引环境准备创建数据库和表:CREATE DATABA...

2020-02-15 08:08:00 156

原创 mysql索引探秘

1.索引是什么东西?索引就是一个数据结构,我们把表中的记录用一个适合高效查找的数据结构来表示,目的就是让查询变得更高效。2.它到底怎么运作的?这个问题就说来话长了,且听我慢慢道来:在mysql中使用最广泛的数据引擎是InnoDB 引擎,它里面用的是 B+ 树索引。我们重点分析一下这个索引的原理:要想理解B+树索引要先从 二叉查找树,平衡二叉树和 B 树说起因为B+树索引就是...

2020-02-14 08:02:22 126

原创 适配器模式

话说有一个培训机构做了一个管理系统,里面有一个教师类,教师类中有讲课的方法。实现教师类和其接口Public interface Iteach{ Void teach ();}Public class Teacher implements Iteach { void teach(){ System.out.println(...

2020-02-13 08:03:04 79

原创 HashSet的原理?

我们先看一下HashSet和TreeSet在整个集合框架中的位置。他们都实现了Set接口。他们之间的区别是HashSet不能保证元素的顺序,TreeSet中的元素可以按照某个顺序排列。他们的元素都不能重复。先来看一下HashSet:public static void main(String[] args) { Set<String> set = new Ha...

2020-02-12 08:10:49 169

原创 ArrayList,LinkedList和Vector的区别

ArrayList,linkedList和Vector都继承自List接口。ArrayList和Vector的底层是一个动态数组,LinkedList的底层是一个双向链表.ArrayList和Vector的区别就是ArrayList是线程不安全的,Vector是线程安全的,Vector中的方法都是同步方法(synchronized),所以ArrayList的执行效率要高于Vector,它也是用...

2020-02-11 08:09:44 229

原创 Cas详解

Cas也是线程同步的一种解决方案,很多人区分不清楚它和synchronized。先看下这段代码:public class MyCas { private static int num = 0; public static void main(String[] args) throws InterruptedException { for (int i = 0...

2020-02-10 08:24:04 249

原创 ThreadLocal详解

在多线程应用程序中如果我们想让每个线程有一个自己对应的变量可以进行存取,不受其它线程的影响就可以使用ThreadLocal,而synchronized是通过加锁来保证一次只有一个线程能对共享变量进行修改。来看一下ThreadLocal的使用:public class ThreadLocalDemo { ThreadLocal<Integer> threadLocal ...

2020-02-09 08:27:13 483

原创 volatile关键字

要想更好的理解volatile关键字,我们先来聊聊基于高速缓存的存储交互:我们知道程序中进行计算的变量是存储在内存中的,而处理器的计算速度和内存的读取速度完全不在一个量级,区别犹如兰博基尼和自行车。要让兰博基尼开一小段就停下来等会自行车显然不太合适,所以在处理器和内存之间加了一个高速缓存,高速缓存速度远高于内存,犹如奔驰,虽然和兰博基尼还有一定差距,每个处理器都对应一个高速缓存。当...

2020-02-08 07:47:05 147

原创 synchronized 底层实现原理

Synchronized是Java并发编程的基础,也是面试的高频考点。它的用法很独特,每一个对象都可以作为锁,很多人就很疑惑,它到底锁定的是什么呢?要想真正弄明白这个问题就需要深入到Synchronized的实现机制,下面我用最易懂的方式来解析一下这个最难懂的关键字Synchronized被称为同步锁,它的作用是保证一段代码在同一时间只能被一个线程执行,它是如何做到的呢?synch...

2020-02-07 07:40:35 451

原创 HashMap的底层原理

HashMap的底层原理面试必考题。为什么面试官如此青睐这道题?HashMap里面涉及了很多的知识点,可以比较全面考察面试者的基本功,想要拿到一个好offer,这是一个迈不过的坎,接下来我用最通俗易懂的语言带着大家揭开HashMap的神秘面纱一:HashMap的节点:HashMap是一个集合,键值对的集合,源码中每个节点用Node<K,V>表示static class...

2020-02-06 08:44:45 120

原创 Springmvc执行流程

Springmvc自出道以来便以其简单易用,功能强大而闻名于java界,借着其亲爹spring的名头迅速流行起来,可怜昔日的老大structs2频频被曝漏洞,加上使用的复杂性,逐渐日暮西山 ,被springmvc所超越。今天我就来带大家探讨一下springmvc的执行过程:先上图:下面结合源代码和上图来说明:一:发送请求到DispatchServlet(中央控制器)Web.xm...

2020-02-05 10:53:16 268

原创 Spring boot自动配置原理

springboot和ssm之间最大的区别就在于它的自动配置,springboot自动配置原理也是springboot的精髓,可以说掌握了它就掌握了springboot的90%,便可以游刃有余的使用springboot,我来说说springboot的自动配置原理:我们创建好一个springboot项目它是从这里开始执行的:@SpringBootApplicationpublic cla...

2020-02-04 13:23:27 81

原创 Spring事务的实现

不知道你有没有被spring的事务困扰过,事务传播行为,事务隔离级别,aop一堆的概念袭来,要不要缴械投降?本文就来带你蹂躏这些难懂的概念,各个击破最终理解事物。Spring提供了一个事务管理接口,PlatformTransactionManager它里面提供了常用的事务操作的方法:public interface PlatformTransactionManager {//获取...

2020-02-03 16:38:02 110

原创 Spring事务传播行为

假如有两个方法A和B,A调用B,这两个方法上都加了事物,究竟使用哪个事物?Public void A(){ B();}这就是spring事物传播行为要解决的问题。在spring中有七种事务传播行为。 简单介绍一下这七种方式(如果不懂不用纠结,后面详细介绍)常用:REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入...

2020-02-02 10:44:40 116

原创 事务的隔离级别-原来可以这样来处理胀读,幻读,不可重复读

事务是数据库中的一个核心概念,指的是对数据库的一组操作作为一个整体,要么都执行要么都不执行。事务有四大特性:原子性:每个事务都是一个整体,不可再拆分,事务中的sql语句要么都执行成功,要么都执行失败。 一致性:事务执行前后数据库的状态保持一致。比如不管如何转账,转账前后的总钱数是不变的。 隔离性:事务和事务之间不应该相互影响,保持隔离。 持久性:事务一旦提交对数据库的修改就是永久的,...

2020-02-01 08:44:22 422

原创 Spring AOP解决了面向对象不能解决的什么问题

Spring AOP是Spring的三大基石之一它究竟解决了什么痛点能获如此殊荣?Java在面向对象的世界里无限风光,oop成就了无数经典的软件,它让我们的软件更健壮,更易于维护,但是程序猿对软件的质量追求是永无止境的,oop对于业务的抽象和封装完美的无懈可击然而对于系统层面的一些需求比如系统日志,性能统计等,分散在软件的各个角落,维护起来很是不爽,这种问题的解决确是oop力所不能及的...

2020-01-31 11:02:20 1186

原创 spring ioc原理解析

spring作为java家族最为辉煌的框架究竟做对了什么让它享有如此盛誉?下面通过剖析spring ioc这个spring最为核心的功能来把玩一番一:spring ioc的原理:小A刚到公司老大安排了一个活,公司前不久刚开发了一个社交网站,运行不太稳定,经常会出现莫名其妙的bug,需要在必要的地方加上日志,方便找到错误,小A很快就开发好了日志记录类,为了以后的扩展性,还添加了一个接口:...

2020-01-30 08:51:21 241

原创 如何理解spring ioc

什么是iocioc全称是【Inversion of Control】控制反转,按照字面意思理解,将控制反转过来,这里的控制指的是什么,为什么要进行反转,ioc可以解决什么问题?要回答这些问题,我们需要先了解一下ioc为什么会产生为什么要有iocjava是一门面向对象的语言,我们的应用程序通过一个个对象之间的相互关联和作用来完成功能,在网上看到一个特别形象的比喻,这里借用一下:这...

2020-01-29 09:26:47 590

集合底层结构.docx

常用集合底层原理深度解析,包括arraylist,hashmap,hashset,linkedarrayList,面试必备!

2019-09-04

代理模式精解.docx

深入浅出讲解代理模式,大厂面试必备~十分钟理解!

2019-09-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除