- 博客(14)
- 收藏
- 关注
原创 mybatis分页插件
一.springboot整合mybatis分页插件代码实现application.properties配置信息#spring.datasource.username=root#spring.datasource.password=y@888888#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver#spring.datasource.hikari.jdbc-url==jdbc:mysql://127.0.0.1:3306/m
2021-04-16 16:13:31
128
原创 Reids实现Mybatis二级缓存
一SpringBoot整合Redis实现Mybatis二级缓存需要的maven依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 h
2021-04-14 16:06:57
263
2
原创 mybatis源码深度解析
一.mybatis测试代码maven配置文件<dependencies> <!-- 单元测试相关依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version>
2021-04-14 15:54:15
393
原创 多线程-基础
1.多线程安全问题 定义:当多个线程同时共享同一个全局变量做写的操作的时候,可能会受到其他线程的干扰,导致产生脏读问题,这就是多线程安全问题。 产生背景:多个线程同时共享同一个全局变量,并且都是做写的操作。 多线程安全问题案例:例如抢票案例,假如有100张票要在多个窗口售卖,如果程序没有进行加锁就会产生多线程安全问题,肯能同一时刻多个窗口卖了同一张票导致卖出去的票数不等于100。 代码实例:// 实现Runnable接口的方式public class TicketTest implem
2021-03-18 14:40:38
115
原创 Spring-AOP
1.面向切面变成(AOP) 横切关注点:在软件开发中,散布于应用多处的功能(如日志,事务,安全)被称为横切关注点,简而言之横切关注点可以被描述为影响应用多处的功能。这些横切关注点从概念上是与业务逻辑分离的,但是却嵌套在业务逻辑内,AOP就是分离横切关注点与业务逻辑。 切面:面向切面编程(AOP)在很多场景下更加清晰简洁,在一个地方定义通用功能,通过声明的方式定义这个功能要以何种方式在何处应用,而无需修改受影响的类,横切关注点可以被模块化为特殊的类,这些类被称为切面。 好处: ⑴ . 关注
2021-03-17 15:51:06
134
原创 Redis-Cluster集群
一.Redis-Cluster引入传统的哨兵集群存在的缺点:传统的哨兵集群只有一个主节点,其他都是从节点数据中心化集群,并且从节点数据与主节点数据完全相同,存在数据冗余问题。Redis-Cluster集群:Redis-Cluster集群是redis从3.0版本开始推出的一种去中心化集群方式,并且可以存在多个主节点,采用hash槽分片将数据存放到多个不同的Redis中减少数据冗余问题,可以动态的实现扩容和缩容。二.Redis-Cluster原理原理:采用hash槽,默认预先分配了16384个卡槽
2021-03-17 15:49:03
304
原创 Redis实现分布式锁(单机版)
一.分布式锁什么是分布式锁? 要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。 线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变量(state)。 进程锁:为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程无法访问其他进程的资源,因此无法通过sy
2021-03-17 15:48:25
227
原创 Redis-缓存穿透、击穿、雪崩
一.缓存穿透、击穿、雪崩概念及解决方法缓存穿透基本概念:使用不存在的key频繁的高并发查询,导致缓存中查询不到一直查询数据库,这时对我们的数据库的访问压力非常大;穿透解决办法: ①.网关实现黑名单、实现接口api限流、防御ddos攻击,接口频率限制; ②.布隆过滤器; ③.当缓存和数据库中都不存在时,可以把空置存入到redis中并设置短暂的有效期,但是可能存在影响正常数据,不建议这样使用;缓存击穿基本概念:在高并发的情况下,当有一个热点数据的key失效时,多个请求同时查询数据库然后把查询
2021-03-17 15:47:40
109
原创 Redis持久化、事务机制、淘汰策略及过期key监听
redis常见面试题及解决方法redis与mysql数据同步问题怎么解决? ①.直接通过手动清理redis的缓存,然后重新查询数据; ②.采用mq订阅mysql的 binlog日志文件增量同步到redis中,整个过程是采用异步同步,达到数据最终一致性; ③.使用alibaba的 canal框架,也是通过mq订阅mysql的binlog日志来完成的,也是实现最终一致性;redis持久化机制? 持久化机制有两种:aof和rdb(默认的)增量同步于全量同步? 全量同步:周期性
2021-03-17 15:47:05
255
原创 Redis基于哨兵集群
一.主从复制原理集群的主从复制 单机版的redis,当服务器出现宕机或者其他情况导致服务器不可用,为了防止出现这种情况,我们可以搭建redis主从复制,以解决单机版出现故障不可用问题,主从复制,主节点负责写,从节点负责读,从而达到读写分离,主节点定期同步数据给从节点从而保证数据最终一致性。 数据同步原理:主节点启动以后,当从节点第一次启动的时候主节点会把rdb文件传输给从节点从而达到全量同步,后期通过增量进行同步,数据同步会存在一个短暂的延迟,因为当主节点进行写操作完成以后才会进行通知从节点,
2021-03-17 15:46:07
129
原创 Redis安装
一.Redis安装先去官网下载好redis在linux系统中usr目录下创建一个redis目录,用来安装redis,linux命令如下:mkdir redis把下载好的redis上传到linux系统中,然后解压到redis目录下,注意在那个目录下执行会解压到那个目录下tar -zxvf redis-5.0.12.tar.gz编译redis,把编译后的bin文件放入刚刚的redis目录中,命令如下:make install PREFIX=/usr/rediscd hiredis &
2021-03-17 15:43:31
167
原创 注入bean对象到spring容器方法
一.注解方式@Bean注解: 使用在方法上,方法返回值会被注入到spring容器中,多用于第三方jar注入spring容器,bean的名称为方法名称。代码示例:@Configurationpublic class ThreadPoolConfig { @Bean public ThreadPoolTaskExecutor pipelineThreadPool() { ThreadPoolTaskExecutor taskExecutor = new Thre
2021-02-25 15:44:05
1202
2
原创 设计模式-责任链模式变体之管道模式
一.管道模式的定义 管道模式(Pipeline Pattern) 是责任链模式(Chain of Responsibility Pattern)的常用变体之一。在管道模式中,管道扮演着流水线的角色,将数据传递到一个加工处理序列中,数据在每个步骤中被加工处理后,传递到下一个步骤进行加工处理,直到全部步骤处理完毕(比如电子厂里原材料通过流水线工人一个一个加工最后组装成一个完整的电子产品)。 注:责任链模式只有一个处理器会处理数据,而管道模式是多个处理器会处理二.什么情况下使用管道模式 任务代码较为
2021-02-23 17:55:52
2587
5
原创 设计模式-策略模式
1.策略模式定义: 策略模式(Strategy Pattern)定义了一组策略,分别在不同类中封装起来,每种策略都可以根据当前场景相互替换,从而使策略的变化可以独立于操作者。比如我们要去某个地方,会根据距离的不同(或者是根据手头经济状况)来选择不同的出行方式(共享单车、坐公交、滴滴打车等等),这些出行方式即不同的策略。2.什么情况下使用策略模式 当代码的中if…else… 超过3个以后,并且每个if…else…里的逻辑代码都比较多,这块的需求容易变更时考虑使用策略模式进行优化,多层if…else…
2021-02-22 17:57:05
239
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅