自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 SpringCloud中Gateway网关介绍

路由由⼀个ID、⼀个⽬标URL(最终路由到的地址)、⼀系列的断⾔(匹配条件判断)和Filter过滤器(精细化控制)组成。如果断⾔为true,则匹配该路由。Predicates断⾔就是我们的匹配条件,⽽Filter就可以理解为⼀个⽆所不能的拦截器,有了这两个元素,结合⽬标URL,就可以实现⼀个具体的路由转发。⼀个请求—>⽹关根据⼀定的条件匹配—匹配成功之后可以将请求转发到指定的服务地址;过滤器(filter)⼀个标准的SpringwebFilter,使⽤过滤器,可以在请求之前或者之后执⾏业务逻辑。...

2022-07-29 19:23:51 589

原创 Java基本数据类型和引用类型的区别

引用数据类型会先将引用放在栈中,然后将对象的信息放在堆中,然后栈中的引用指向堆中的地址。在数据作为参数传递的时候,基本类型是作为值传递,而引用类型是作为引用传递。基本数据类型在创建时,会将数值存放在栈上。...

2022-07-29 18:25:17 558

原创 事务的隔离级别

实现方式是给行数据加锁,但是产生了新的问题幻读,解决幻读又产生了新的隔离级别可串行化。---------mysql默认的隔离级别。解决了脏读,但是又产生了新的问题不可重复读,解决该问题又产生了新的隔离级别可重复读-------oracle默认的隔离级别。(实现方式给行数据加锁,解决不可重复读问题,产生幻读问题,mysql默认的级别)-------(解决脏读,产生不可重复读,oracle默认级别)------实现方式是给表加锁,解决幻读。(产生脏读)------幻读针对的是增删操作。...

2022-07-28 22:18:34 303

原创 String、StringBuffer、StringBuilder的区别

首先new出来的对象肯定是会被放在堆内存中的,然后看abc是不是一个对象,首先会去常量池中查找,如果有,则不需要创建,没有就创建,所以会生成一个或者两个对象!,但是字符串常量一旦被声明不可以改变,但是字符串对象可以改变,但是改变的是其内存地址的指向。2)String使用“+”作为数据的连接操作,StringBuffer/StringBuilder使用append()方法进行数据连接。StringBuffer和StringBuilder类型是字符串变量,当使用append()等操作时,内存地址不发生改变。..

2022-07-27 21:25:49 1686 1

原创 GC面试题

因为内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃。我们知道对象的分配,程序员可以通过new关键字,Class的new-Instance方法等来显示的分配;而对象的释放,程序员不能实时的进行释放,这就需要GC来完成。每个对象实例都有一个引用计数器,被引用则+1,完成引用则-1,任何引用计数为0的对象实例可以被当作垃圾收集。Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。有效的防止了内存泄漏,可以有效的使用可以使用的内存。......

2022-07-26 18:18:57 745

转载 spring boot的启动流程

一、构造SpringApplection的实例,构造SpringApplection的时候会进行初始化的工作,初始化的时候做一下几件事二、调用run方法,启动SpringApplection,run方法执行的时候会做以下几件事。

2022-07-26 17:41:18 240

原创 springboot是如何完成自动配置的

SpringBootApplication,这个注解是复合注解,内部包含@EnableAutoConfiguration@EnableAutoConfiguration内部有一个@Import,这个注解才是完成自动配置的关键@Import导入一个类,这个类内部提供了一个方法(selectImports).这个方法会扫描导入的所有jar包下的spring.factories文件.解析文件中自动配置类key=value,将列表中的类创建,并放到Spring容器中....

2022-07-26 17:24:01 165

转载 spring常用注解

RestController//添加注解,声明此类是一个控制器,加上Rest就不用写@RequestBody注解@Mapper//告诉编译器当前接口是一个映射接口负责为MyBatis框架服务。@Result()//通过Result注解设置字段和对象中属性的对应关系(如果名字一致的不需要配置)@Result中常用的属性是column和property,用于配置数据库中的列名和类中的属性名之间的映射关系。@Controller告诉编译器当前类为一个控制器类。...

2022-07-26 17:17:46 221

原创 MQ的队列模式

一个生产者,多个消费者,每个消费者都有自己的一个队列;生产者发送的消息经过交换机,到达队列,实现一个消息被多个消费者获取的目的。和路由模式类似,同样是一个生产者多个消费者,中间多了个交换机(exchange),一条消息可以被多个消费者获取。同样是传key,但是他的key是可以模糊匹配的,*匹配一个单词,#匹配0或者多个单词。一个生产者多个消费者,中间多了个交换机,一条消息可以被多个消费者获取,但是它在传递消息的时候多设置了个key,消费者拿消息的时候也设置一个或多个key,key匹配才能拿到消息。...

2022-07-26 17:04:48 878

原创 MySQL主从同步的原理

Mysql主从复制中主要有三个线程master(binlogdumpthread)、slave(I/O线程和SQL线程)

2022-07-26 16:39:40 321

原创 重载和重写的区别

重写发生在父子类中;方法名返回类型参数列表相同;重写访问的修饰符一定要大于被重写方法的访问修饰符。重载发生在同一类中;方法名返回类型相同,参数不同;重载可以有不同的访问修饰符。...

2022-07-26 14:52:35 80

原创 分库分表----sharding-JDBC

指的是按照业务对数据库中的表进行分组,同组的放到一个新的数据库中。分库前提单库而言,最大的并发可能就2000左右,但是一个单库来说最好的并发保持在1000左右,当单数据库增大或者并发增加的时候,可以将一个库的数据拆分到多个库中。比如,我们对商场业务垂直拆分之后的用户系统数据库进行水平拆分就比对整个商城业务进行水平拆分好找维度,我们可以根据用户的注册时间和区间等条件进行拆分。分表前提当单表数据量太大,会极大的影响sql的执行性能,这时sql会跑的很慢。当单表到达几百万的时候,性能就会有所下降。...

2022-07-26 14:47:18 817

原创 ==和equals的区别

2)比较Object类型时,如果不重写equals方法,底层还是用的==比较,比较的也是对象的地址值是否相等。3)比较String类型时,重写了equals方法,所以比较的是内容是否相等。1)如果==比较的是基本数据类型,==比较的是。2)如果==比较的是引用类型,==比较的是。equals是Object的方法。1)不能比较基本数据类型。(是否是同一个对象)...

2022-07-26 13:17:44 93

转载 mq消息队列面试题

一、mq是什么?答mq代表消息队列,是一种应用程序对另一种应用程序的一种通信方法,通过消息队列来发送或者接受消息数据,支持应用程序、系统、服务和文件之间的转换,简化了业务应用程序的创建和维护。mq的优点1.异步例如系统A做的是,而系统B、C、D是的业务。比如系统A处理的是,而系统B是订单下单成功了,那发送一条短信告诉具体的用户此订单已成功,而系统C和系统D也是处理一些小事而已。那么就可以设置成如下2.解耦系统A将userId写到消息队列中,系统C和系统D从消息队列中拿数据。?了。......

2022-07-24 21:32:17 1365

原创 怎么解决Redis缓存雪崩、缓存穿透的问题

2.)互斥锁当业务线程在处理用户请求时,如果发现访问的数据不在Redis中,就加个互斥锁,保证同一时间内只有一个请求来构建缓存(从数据库读取数据,再将数据更新到Redis里),当缓存构建完成后,在释放锁。当用户访问的数据,即不再缓存中,也不再缓存数据库中,导致请求在访问缓存时,发现缓存缺失,再去访问数据库时,发现数据库中也没有要访问的数据,没把饭构建缓存数据来服务后续的请求。1.)均匀设置过期时间,给这些数据的过期时间加上一个较小的随机数,别让它们同时大量的过期。2.在缓存中设置空值或者默认值。......

2022-07-21 20:09:36 375

原创 负载均衡的概念以及负载均衡的策略和技术方案有哪些

负载均衡是指把用户访问的流量,通过负载均衡器,根据某种转发的策略,均匀的分发到后端多台服务器上,后端的服务器可以独立的响应和处理请求,从而实现分散负载的效果。3.1)软件负载均衡分为7层协议和4层协议,网络协议有七层,基于第四层传输层来做流量分发的方案称为4层负载均衡,而基于七层应用层来做流量分发的称为7层负载均衡。再轮询的基础之上,增加了一个权重的概念,本质上是一个能者多劳的思想,比如,可以根据宿主的性能差异配置不同的权重。这是根据实时的负载情况,进行动态负载均衡的方式。2.基于硬件负载均衡(贵)...

2022-07-21 17:01:24 1793

原创 SQL从四部分进行优化

业务层面优化是指在sql基础优化上没有问题之后,然后一次性查询的数据量很大,达到上亿的数据量,即使是分页也会很慢,所以要在业务层面进行优化,固定条件,缓存count值,避免每次查询全表扫描计算count值,每次更新都要对count值进行同步修改。前提也是在sql基础优化完成后,有多表联合查询导致查询数据很慢,可以在代码上进行分割,如一条语句查多个表,可以拆分成两条sql语句或者多条sql语句,然后再代码上进行数据拼装。8)应尽量避免在where子句中对字段进行函数操作。6)避免左右模糊查询。......

2022-07-21 16:14:44 335

原创 Redis为什么是单线程,为什么那么快?

因为redis用单个CPU绑定一块内存的数据,然后针对这块内存的数据进行多次读写的时候,都是在一个CPU上完成的。如果我的数据全部都在内存里,我单线程的去操作就是效率最高的。所以redis是单线程。1.因为redis完全基于内存。...

2022-07-21 15:35:48 321

原创 JDK、JRE、JVM之间的关系

JDK是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。JRE是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是整个java实现跨平台的最核心的部分,能够运行以Java语言写的程序。...

2022-07-19 23:24:09 394

原创 Redis两种持久化机制

2.AOF持久化当使用AOF持久化的时候,Redis执行写命令,将被执行的写命令复制到硬盘中,说的通俗一点就是写日志。1.快照持久化(RDB)将Redis某一时刻存在的所有数据都写入硬盘。

2022-07-19 23:12:20 214

原创 @Autowired和@Resource的区别?

Resource是由J2EE提供,需要JDK1.6及以上。提供方@Autowired是由spring提供的。@Autowired是按照type类型来注解的。@Resource是按照name名称来注解的。

2022-07-19 22:29:24 152

原创 拦截器和过滤器的概念和区别

回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。拦截器是SpringMVC中实现的一种基于Java反射动态代理)机制的方法增强工具,拦截器的实现是继承HandlerInterceptor接口,并实现接口的preHandle、postHandle和afterCompletion方法。3.规范不同拦截器是在Spring容器内的,是Spring框架支持的,而Fiter是Servlet规范规定的是Servet容器支持的。...

2022-07-16 16:50:03 780

原创 继承Thread类实现线程与实现Runnable接口实现线程的区别

1.Thread类需要被继承,然后重写run()方法,但是Java中的类是单继承的,也就是说,继承了Thread类获取线程功能后,就不能在继承别的类了。但是Runnable接口解决了这个问题,一个类实现Runnable中的run()方法获得线程功能后,仍可以继承其他类,实现其他功能。也就是说,Runnable解决了Java中类的单继承带来的限制。2.Thread底层也是实现Runnable接口,所以说,使用Thread更加灵活方便。......

2022-07-15 23:17:34 609

原创 线程池的原理、作用及创建方式

2.如果当前线程池中的线程数目>=corePoolSize,则每来一个任务,会尝试将其添加到任务缓存队列中,若添加成功,则该任务会等待空闲线程将其去出去执行,若添加失败(一般来说是任务缓存队列已满),则会尝试创建新的线程去执行这个任务。5.如果线程池中的线程数量大于corePoolSize时,如果某线程空闲时间超过keepAliveTime(线程存活时间单位),线程将被终止,直至线程池中的线程数目不大于corePoolSize;3.提高线程的可管理性。......

2022-07-15 22:12:45 491

原创 Mybatis中一级缓存和二级缓存的区别

2.二级缓存是mapper级别的缓存,多个sqlSerssion去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的,二级缓存底层还是个HashMap实现的。工作原理在当次会话中的相同查询会储存进一级缓存,当sqlSession的会话关闭了(前提要开启二级缓存),该sqlsession的一级缓存数据就回储存到二级缓存中。2.二级缓存是多个SqlSession共有的缓存区域,默认关闭,放在二级缓存中的对象必须实现序列化接口。...

2022-07-15 21:43:11 1735

原创 分布式和集群的区别

集群主要的使用场景是为了分担请求的压力,但是,当压力增大的时候,可能需要存储的部分,比如mysql无法面对大量的写操作,因为MySQL做成集群后,主要的写压力还是在master(主机)的机器上,其他slave(从机)机器无法分担写压力,这时就引出了“分布式”!分布式中的某个子任务节点,可以是一个集群,该集群中的任一节点都作为一个完整的任务出现。集群和分布式都是由多个节点组成,但集群中各节点间基本不需要通信协调,而分布式中各个节点的通信协调是必不可少的。把多个相同的系统部署在不同的服务器上,这叫集群。...

2022-07-14 22:45:30 1659

原创 Java中同步和异步的区别是什么?优点缺点以及概念理解

同步:提交请求--->等待服务器处理--->服务器处理完毕返回的这个期间客户端浏览器不能干别的事异步:请求通过事件触发--->服务器处理(这时客户端浏览器还可以做其他的事情)---->处理完毕通俗易懂的理解:同步就是按顺序执行,执行完一个在执行下一个,需要等待、协调运行。异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作,例如:同步就是:你喊我去吃饭,如果我听到了,我就和你一起去吃饭,如果我没有听到,那你就一直不停的喊,直到我告诉你我听到了,我们才一起去吃饭;而异步就是你喊

2022-07-14 13:05:46 2980

原创 Swagger简介

swagger是什么?1.是一款让你更好的书写API接口文档的的规范且完整框架。2.提供描述、生产、消费和可视化的电子书3.是由庞大工具集合支撑的形式化规范。4.简单理解:swagger就是为了方便系统生成API接口文档的。swagger解决的问题:接口文档不能实时动态生成的问题。swagger作用:使用Swagger,就是把相关的信息存储在它定义的描述文件里面(yml或json格式),再通过维护这个描述文件可以去更新接口文档,以及生成各端代码。...

2022-07-13 22:35:38 831

原创 Zookeeper

Zookeeper是一个开放源码的,高性能的协调服务,它用于Kafka的分布式应用。Zookeeper主要用于在集群中不同节点之间进行通信;它提供了一项基本服务:分布式锁服务,同时,也提供了数据的维护和管理机制...

2022-07-12 19:15:15 249

原创 线程池的核心参数

1.corePooISize 线程池核心线程大小2.maximumPooISize 线程池最大线程数量3.keepAliveTime多余的空闲线程存活时间4.unit空闲线程存活时间单位5.wrokQueue 工作队列6.threadFactory线程工厂7.handler 拒绝策略

2022-07-12 18:53:40 68

原创 spring事务的实现方式

1.基于TransactionProxyFactoryBran的声明式事务管理。2.基于@Transactional的声明式事务管理。 使用该方式,配置文件要简单的多,将事务交给事务注解驱动3.基于Aspectj AOP配置事务 它可以精准的将事务织入到指定的连接点。...

2022-07-12 18:42:38 503

原创 Spring面试题:Spring事务的传播特性与四大特性

四大特性:1.原子性:事务最基本的操作单元,要么全部成功,要么全部失败2.一致性:指的是在一个事务的执行之前和执行之后数据库都必须处于一致性的状态。3.隔离性:指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。4.持久性:指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。传播特性:1.propagation_requierd:如果当前没有事务,就新建一个事务,如果已经存在一个事务,那就加入到这个事务中,这是Spring默认的选择2.propagation_s

2022-07-12 18:22:02 432

原创 kafka是怎么保证消息不丢失的?

kafka防止消息丢失的方法

2022-07-12 17:58:42 503

原创 Java面试题:springMVC的请求流程

Java

2022-07-12 14:33:26 161

原创 Java面试题:常见的数据结构有哪些?

Java面试题:常见的数据结构有哪些?

2022-07-12 11:01:01 301

原创 Java面试题:Spring核心是什么?

Java面试题:Spring核心是什么?

2022-07-10 17:21:32 184

原创 Java面试题:Bean的生命周期

Java面试题:Bean的生命周期

2022-07-10 16:53:20 275

原创 Java面试题:谈谈对Spring IOC的理解

谈谈对Spring IOC的理解

2022-07-10 16:16:00 228

原创 Java面试题:Spring程序是如何启动的?

Java面试题:Spring程序是如何启动的?

2022-07-10 15:08:32 146

原创 Spring是如何加载配置文件到应用程序的?

Spring如何从配置文件到应用程序的

2022-07-10 14:50:00 176

空空如也

空空如也

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

TA关注的人

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