自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Cloud GateWay搭建

Spring cloud Gateway 搭建

2022-06-29 23:12:56 2954 1

原创 Spring线程池使用之@EnableAsync、@Async

文章目录Spring线程池的使用第一步创建线程次对象,并注入到容器里第二步编写代码使用线程池Spring线程池的使用Spring整合了ThreadPoolExecutor类,并且提供了ThreadPoolTaskExecutor类。使用的思路就是先将线程池对象放入到IOC容器中,然后通过解析注解进行AOP调用第一步创建线程次对象,并注入到容器里package cn.zl.swagger2demo.config;import org.springframework.context.annotati

2021-08-02 21:29:42 257

原创 Kafka——javaAPI

文章目录Kafka的JavaAPI1.未整合版的Kafka的API1.1 Producer 消息发送端代码1.2 Consumer 消息消费端代码2.Spring Boot整合Kafka2.1 发送者代码(Producer)2.2 发送者代码(Consumer)Kafka的JavaAPI针对java程序员来说,必定是在代码中对kafka进行操作。1.未整合版的Kafka的API<dependency> <groupId>org.apache.kafka</grou

2021-07-22 03:29:43 328

原创 Kafka——集群

文章目录集群1. 搭建个集群2. 集群发送消息3. 集群消费3.1 Procuder3.2 Consumer4. 消费顺序集群对于kafka来说,一个单独的broker意味着kafka集群中只有一个节点。要想增加kafka集群中的节点数量,只需要多启动几个broker实例即可,为了有更好的理解,现在我们在一台机器上同时启动三个broker实例。1. 搭建个集群建立好2个broker的配置文件:cp config/server.properties config/server-1.propertie

2021-07-21 17:27:10 1314

原创 Kafka——入门

文章目录Kafka1.Kafka是什么?2.Kafka的使用场景3.Kafka的基本概念4.Kafka的基本操作5.Kafka配置文件server.properties核心配置详解:6.单播消息与多播消息,消费多个主题6.1 单播消息6.2 多播消息6.3 消费多个主题7.Topic 和消息日志Log8.总结Kafka1.Kafka是什么?Kafka 是一个分布式、支持分区(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统。最大的特点就是可以实时处理大量的数

2021-07-21 03:48:35 333 3

原创 Redis——分布式锁

文章目录Redis分布式锁1.为什么要用redis锁Redis分布式锁1.为什么要用redis锁JVM本身有提供锁的机制,当然也只局限于当前的jvm中。如果是多个jvm进行操作,jvm提供的锁就会失效。所以我们需要一个多实例之间仍然可以唯一标识。正好redis支持,通过使用SETNX 命令SETEX key seconds value...

2021-07-20 14:31:04 93

原创 Redis——常见问题及解决方案

文章目录Redis常见问题1. 缓存雪崩2. 缓存穿透3. 缓存击穿4. 缓存一致性问题Redis常见问题redis通常是被做为缓存来使用的,既然做为缓存来使用,就可能会出现缓存雪崩,缓存击穿,缓存穿透,数据一致性等问题。1. 缓存雪崩缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机,终究还是数据库发生的问题。这个在我们编码的时候就应该考虑到。解决方案:针对缓存区设置随机过期时间,可以范围性的随机。比如说 ,当前缓存过期时间24小时,我们可以在23到

2021-07-19 21:08:06 250 1

原创 Redis——Redis详解

文章目录Redis1. 常见数据类型Redis1. 常见数据类型常见的数据类型,一共有5种。String: 标准的key、value类型。给Key取名字的时候比较关键,这样我们直接判断缓存中有没有值,没有值就查库。Hash: 类似于java中的对象结构。...

2021-07-18 23:23:26 248 2

原创 Mybatis——Mybatis初级知识

文章目录Mybais1.Mybatis的使用2.Mybatis的工作原理3.#{}和${}的区别4.mybatis传入参数4.1 顺序传入参数4.2 使用@Param注解4.3 使用Map传递参数4.4 java bean传递多个参数4.5 直接使用JSON传递参数4.6 传递集合类型参数List、Set、Array4.7 参数类型为对象+集合5.mybatis结果映射6. mybatis 的缓存6.1 一级缓存6.2 二级缓存Mybais1.Mybatis的使用数据库的配置此处省略,配置方法很多种。

2021-07-18 03:13:07 271 1

原创 SpringMVC——拦截器

文章目录拦截器1.拦截器的使用2.拦截器方法说明拦截器拦截器是SpringMVC 框架提供的一个组件,作用于过滤器相似。处理请求的大致流程如下。1.拦截器的使用首先需要实现HandlerInterceptor接口public class CityInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServlet

2021-07-17 17:33:33 61

原创 SpringMVC——SpringMVC组件及工作原理

文章目录SpringMVC组件1. 前端控制器(DispatcherServlet)2. 处理映射器(HandlerMapping)2.1 RequestMappingUrlHandlerMapping2.2 BeanNameUrlHandlerMapping2.3 SimpleUrlHandlerMappingSpringMVC组件1. 前端控制器(DispatcherServlet)先看一下DispatcherServlet的配置。DispatcherServlet 实现了HttpServle

2021-07-17 15:06:22 190 2

原创 SpringMVC——配置SpringMVC

文章目录配置SpringMVC1.先创建一个web项目导入相关依赖2.创建一个web项目编写web.xml3.编写控制层代码4.编写SpringMVC的xml5.启动容器测试一下配置SpringMVC这里只是单独的配置了一下SpringMVC的使用,并没有针对SpringMVC与Spring整合,这里只是基本使用,未配置过多的东西。1.先创建一个web项目导入相关依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="htt

2021-07-17 00:05:55 90

原创 Spring——事务管理

文章目录Spring事务管理1. 编程式事务2. 声明式事务3. 看一下 @Transactional注解3. 事务的传播行为Spring事务管理Spring 事务分为两种:一种是编程式事务,一种是声明式事务。1. 编程式事务编程事务,获取到TransactionTemplate对象,然后来控制事务的提交与回滚DAO@Componentpublic interface DemoDao { @Insert("insert into demo values(1,2000)") vo

2021-07-16 13:51:06 109

原创 Spring——bean的生命周期&bean的循环依赖问题

文章目录bean的生命周期1. bean的和生命周期图bean的循环依赖问题2.什么是循环依赖?3.什么情况下的循环依赖可以解决?4.Spring 是如何解决循环依赖的?bean的生命周期Spring中bean的生命周期,指的是单例bean创建到销毁的过程。1. bean的和生命周期图Spring 整个创建bean的过程,扩展点多,大致为以下这个样子。bean的循环依赖问题2.什么是循环依赖?由上图可知,是先注入A?还是先注入B?所以这样就形成了循环依赖。3.什么情况下的循环依赖可以解决

2021-07-15 16:06:45 313

原创 Spring——Aware接口总结

文章目录Aware接口1. 什么是Aware接口?2.Aware 种类3.Aware 何时被调用?Aware接口1. 什么是Aware接口?Aware接口从字面上翻译过来是感知捕获的含义。其实就是我们的bean去实现Aware子接口中的某个接口,然后Spring容器会帮我们创建对象注入到容器中。之后,在合适的时间,获取到这些对象,进行方法回调。2.Aware 种类Aware一共有12中种,每一种都有不同的作用。接口作用BeanNameAware这个方法只是简单的返回我们当前

2021-07-14 23:55:16 638

原创 Spring——BeanPostProcessors (bean的后置处理器)

文章目录BeanPostProcessors1. BeanPostProcessors 注册( registerBeanPostProcessors(beanFactory);方法)2. BeanPostProcessors 调用( registerBeanPostProcessors(beanFactory);方法)BeanPostProcessorsbean的后置处理器1. BeanPostProcessors 注册( registerBeanPostProcessors(beanFactory)

2021-07-14 15:03:04 695

原创 Spring——IOC Bean的创建

文章目录IOC Bean的创建1. Bean合适被创建了?2. refresh() 中的finishBeanFactoryInitialization(beanFactory);方法2.1finishBeanFactoryInitialization(beanFactory);方法2.2 preInstantiateSingletons();方法2.3 getBean(beanName);真正创建bean的方法2.4 createBean(beanName, mbd, args);创建单例对象。2.5 do

2021-07-12 19:41:12 129

原创 Spring——关于postProcessBeanFactory(beanFactory)的思考

文章目录1. postProcessBeanFactory(beanFactory)的思考2. 自定义实现ApplicationContext对象,重写postProcessBeanFactory(beanFactory)方法。3. 思考的结果1. postProcessBeanFactory(beanFactory)的思考此方法是在refresh()模板方法中,但是此方法的实现是空的。因为此方法的参数是BeanFactory,所以我们可以重写此方法,然后针对beanFactory进行一些修改。2.

2021-07-12 00:28:03 2165 1

原创 Spring——@Configuration注解

文章目录@Configuration注解1. @Configuration注解什么作用?1.1 value值验证,与@Component一样的功能1.2 proxyBeanMethods值验证,是否生产CGLIB代理类1.2.1 proxyBeanMethods 值为true1.2.1 proxyBeanMethods 值为false@Configuration注解1. @Configuration注解什么作用?被@Configuration注解修饰表示当前的类是一个配置类。看一下@Configura

2021-07-12 00:15:57 346

原创 Spring——BeanFactory的后置处理器

文章目录BeanFactory的后置处理器1. BeanFactory的后置处理器是什么?2. BeanFactory的后置处理器分类3. BeanFactory的后置处理器使用3.1 BeanDefinitionRegistryPostProcessor 带注册功能的3.2 BeanFactoryPostProcessor 不带注册功能的4. BeanFactory的后置处理器IOC加载顺序。4.1 Spring自带的BeanFactory的后置处理器。4.2 自定义的BeanFactory的后置处理器。

2021-07-11 22:08:09 945

原创 Spring——@AliasFor注解

文章目录@AliasFor@AliasFor

2021-07-11 13:51:34 779

原创 Spring——注解方式IOC加载源码解读

文章目录注解方式IOC加载源码解读1. 注解方式的启动类使用2. AnnotationConfigApplicationContext的构造方法。2.1 this(),调用AnnotationConfigApplicationContext的无参构造方法。2.1.1 查看AnnotatedBeanDefinitionReader构造方法。2.1.2 查看ClassPathBeanDefinitionScanner构造方法。2.2 register(配置类),查看干了什么事情2.3 refresh()2.3.

2021-07-11 02:24:18 157

原创 Spring——IOC加载原理

文章目录IOC加载原理1. 什么是IOC的加载?2. IOC加载分类3. SpringIOC加载关键组件3.1 注册器(register)3.2 读取器(reader)3.3IOC加载原理1. 什么是IOC的加载?无论是配置文件还是注解方式,到创建bean的这个过程。大致分为两段:1.读取并解析配置文件或者注解配置,注册到 beanDefinitionMap这个集合中。2.从 beanDefinitionMap集合中获取BeanDefinition(就是解析后的bean元信息)来创建bean。第一个过

2021-07-10 18:48:28 212

原创 JMM——线程池ThreadPoolExecutor

文章目录ThreadPoolExecutor1.什么是ThreadPoolExecutor(线程池)?2.如何去使用线程池?3.线程池的参数4.线程池的运行原理ThreadPoolExecutor1.什么是ThreadPoolExecutor(线程池)?线程池就是装有多个线程的容器,当需要跑任务的时候,直接往线程池丢一个任务,线程池自动来分配线程帮我们解决。线程池的类为java.util.concurrent.ThreadPoolExecutor2.如何去使用线程池?public class T

2021-07-04 14:04:27 62

原创 JMM——CAS

文章目录CAS1.什么是CAS?CAS1.什么是CAS?CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换。因为CAS是一条原子指令,所以我们整个设置值得过程无需担心安全问题。JVM中的CAS操作正是利用了上文中提到的处理器提供的CMPXCHG指令实现的。针对java开发来说的话,CAS的API都封装在sun.misc.Unsafe类里。...

2021-07-04 11:48:56 90

原创 JMM——AQS之Condition类

文章目录Condition1.什么是Condition?2.Condition的使用案例3.Condition的源码解读3.1从reentrantLock.newCondition();构造方法入手3.2从condition.await();等待挂起入手3.3从condition.signal();唤醒入手3.Condition的总结Condition1.什么是Condition?Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的

2021-07-02 19:10:00 86

原创 JMM——AQS之BlockingQueue队列

文章目录AQS之BlockingQueue队列1.什么是BlockingQueue队列2.BlockingQueue API 详解2.1 入队API2.2 出队API2.3 其他的API3.队列的数据结构4.队列类型5. 常用实现类AQS之BlockingQueue队列1.什么是BlockingQueue队列BlockingQueue,是java.util.concurrent 包提供的用于解决并发生产者 - 消费者问题的最有用的类,它的特性是在任意时刻只有一个线程可以进行take或者put操作,并

2021-07-02 15:37:18 97

原创 JMM——AQS之CountDownLatch源码解读

文章目录CountDownLatch1. CountDownLatch是什么?2.CountDownLatch的用法3.CountDownLatch的使用场景4.CountDownLatch的源码解读4.1 CountDownLatch的构造方法入手4.2 countDownLatch.await();获取锁4.2.1 tryAcquireShared();尝试获取锁4.2.2 doAcquireSharedInterruptibly();进入阻塞4.3 countDownLatch.countDown()

2021-07-02 13:01:04 120

原创 JMM——AQS之Semaphore源码解读

文章目录Semaphore源码解读1.Semaphore 是什么?2.Semaphore 的用法3.Semaphore的API4.Semaphore的源码解读(公平锁为例)4.1 从构造方法入手4.2 从semaphore.acquire(); 获取锁逻辑入手4.2.1 查看tryAcquireShared();方法4.2.2 查看doAcquireSharedInterruptibly();方法4.3 从semaphore.release(); 释放锁逻辑入手4.3.1 tryReleaseShared(

2021-07-01 23:09:31 105

原创 JMM——AQS之ReentrantLock源码解读

文章目录ReentrantLock源码解读1.什么是ReentrantLock?2.ReentrantLock的用法3.源码解读(公平锁为例)3.1 从构造方法入手3.2 加锁逻辑入手 reentrantLock.lock();3.2.1 查看tryAcquire方法。3.2.2 查看addWaiter方法。3.2.3 查看acquireQueued方法。3.3 释放锁逻辑入手 reentrantLock.unlock();3.3.1 tryRelease(),尝试释放锁。3.3.2 unparkSucce

2021-06-30 20:52:39 138

原创 JMM——初识AQS锁框架

文章目录AQS锁框架1.什么是AQS锁框架?2.AQS的组成2.1 同步器2.2 阻塞队列AQS锁框架须知,在操作系统层面只有两种锁,一种是mutex(互斥锁),另一种是自旋锁(基于CAS实现的),剩下的所有锁,都是基于mutex 和 cas 来实现的。1.什么是AQS锁框架?Java在目前的版本中(1.8),一共有两套锁体系,一种是Synchronize关键字,一种是AQS。synchronize关键字,是JVM来实现的,也就是所谓的C++来实现的。此篇不做过多解释。AQS锁框架,全程A

2021-06-30 17:12:47 198

原创 Mysql——事务

文章目录mysql 事务1.什么是事务?2.事务四大特性 ACID3.并发事务的问题4. 事务的隔离级别4.1 读未提交( READ UNCOMMITTED)4.2 读已提交(READ COMMITTED)4.3 可重复读(REPEATABLE READ)4.4 序列化(SERIALIZABLE)mysql 事务1.什么是事务?事务就是一次性对数据库进行批量操作。里面可能包含增、删、改、查。但是需要一次性完成,不能被其他的操作所影响。2.事务四大特性 ACID事务是抽象出来的一个东西,它有四大特性

2021-06-27 19:14:38 52

原创 JMM———线程中断

文章目录线程中断1.JDK提供的API1.1 JVM直接中断线程1.2 程序员自己来掌握线程的中断2.线程不同状态的影响2.1 NEW | TERMINATED 无效2.2 RUNNABLE 有效2.3 BLOCKED 有效2.4 WAITING/TIMED_WAITING 有效且通过抛出异常来结束等待线程中断线程中断,如果说创建线程,启动线程,控制线程的生!那么中断线程就是控制线程的死!线程的生死大权在手,还怕掌控不了它们?1.JDK提供的APIJDK本身为我们提供了,两套线程中断的方法。第一

2021-06-26 22:21:18 163

原创 JMM——volatile关键字

文章目录volatile关键字1.可见性:2.有序性(volatile禁止指令重排序优化)2.1CPU硬件volatile关键字  volatile关键字是Java虚拟机提供的轻量级的同步机制。有以下两个作用:可见性: 保证被volatile修饰的共享变量对所有线程总是可见的。也就是当一个线程修改了被volatile修饰的变量的值,其他的线程立即可以感知到。有序性:禁止指令重排序。1.可见性:  当一个共享变量被volatile修饰后,其他的线程立刻就可以感知到。举例:没有volati

2021-06-20 19:40:21 97

原创 JMM——并发编程的常见问题

文章目录JMM特性JMM特性分类1.原子性JMM特性通过上一篇 JMM初识 我们充分了解什么是JMM,JMM的作用。凡物都有一个特性,所以此篇聊聊JMM的特性。JMM特性分类原子性有序性可见性1.原子性 何为原子性?高中物理课讲过,世界上物质的组成最小的单位是原子。(虽然科学家后来发现了夸克)。但是我们以课本为主,原子什么特性?单个且完整。到代码层面,程序的最小组成单位就是一段一段执行的代码,我们把每一次执行的一段代码,就称呼为具有原子性的代码。...

2021-06-20 05:56:19 221

原创 JMM——认识JMM

文章目录JMM(并发编程之内经)1.JMM(Java Memory Model)内存模型2.JMM区域划分2.1 共享内存2.2 工作内存3.基于JMM线程工作流程4.JMM线程模型多线程可能引发的安全问题5.数据同步的八大原子性操作同步规则分析JMM(并发编程之内经)时刻谨记JMM是一套抽象的规范,并不真实存在。但是我们不能去违背它。为什么要理解JMM?JMM是Java为了解决多线程并发等问题,提出了一套规范。并针对并发可能出现的一系列问题,基于此模型提供了多种解决方案。便于我们java程序员可以

2021-06-19 23:36:16 799

原创 JVM——自定义类加载器

文章目录自定义类加载器1.为什么要自定义ClassLoader2.如何自定义ClassLoader自定义类加载器1.为什么要自定义ClassLoader因为系统的ClassLoader只会加载指定目录下的class文件,如果你想加载自己的class文件,那么就可以自定义一个ClassLoader。而且我们可以根据自己的需求,对class文件进行加密和解密。2.如何自定义ClassLoader使用步骤:1.新建一个类继承java.lang.ClassLoader类,重写它的findClass方法。

2021-05-27 21:59:33 79

原创 JVM——双亲委派机制

文章目录双亲委派机制1.类加载器的类别2.双亲委派机制的执行过程3.双亲委派机制的好处双亲委派机制1.类加载器的类别想了解双亲委派机制,首先我们需要知道类加载器的分为几类。以及他们的关系。一般分为:BootStrap(核心类加载器)ext(扩展类加载器)app(应用类加载器)custom(自定义类加载器)BootStrap类加载器是ext类加载器的父类加载器,ext类加载器是app类加载器的父类加载器,app类加载器是custom类加载器。2.双亲委派机制的执行过程如果一个类加载器

2021-05-27 21:05:50 38

原创 JVM—类加载器

文章目录类加载1.类加载的过程2.类加载的时机3.类加载器种类4.类加载器的范围类加载1.类加载的过程1.loading(加载)  加载指的是将硬盘上的class文件,通过IO方式读取到内存中。 通过使用不同的类加载器,可以从不同来源加载类的二进制数据,通常有如下几种来源:从本地文件系统加载class文件。从JAR包加载class文件,例如:JDBC的数据库驱动类就放在JAR文件中,JVM可以从JAR文件中直接加载该class文件通过网络加载class文件。把一个J

2021-05-26 23:24:10 79

原创 JDBC的URL详解

文章目录JDBC的URL详解1.jdbc的格式2.例如:3.参数详解:JDBC的URL详解1.jdbc的格式jdbc:mysql://[host][,failoverhost...][:port]/[database] [?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...2.例如:jdbc:mysql://10.171.55.193/uba_db?useUnicode=true&characte

2021-04-12 21:15:36 15743

空空如也

空空如也

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

TA关注的人

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