Loading

摘要: Mybtais插件开发 Mybtais插件开发 mybatis拦截器可以对下面4种对象进行拦截: 1、Executor:mybatis的内部执行器,作为调度核心负责调用StatementHandler操作数据库,并把结果集通过ResultSetHandler进行自动映射 2、StatementHandler: 封装了JDB 阅读全文
posted @ 2023-09-01 17:40 花园SON 阅读(11) 评论(0) 推荐(0) 编辑
摘要:  Spring 动态数据源切换 Spring 动态数据源切换 Spring boot提供了AbstractRoutingDataSource 根据用户定义的规则选择当前的数据源,这样我们可以在执行查询之前,设置使用的数据源。实现可动态路由的数据源,在每次数据库查询操作前执行。它的抽象方法 determineCurrentLooku 阅读全文
posted @ 2023-09-01 17:40 花园SON 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 线程创建方式 线程创建方式 Java中创建线程主要有三种方式,分别为继承Thread类、实现Runnable接口、实现Callable接口。 继承Thread类 继承Thread类,重写run()方法,调用start()方法启动线程 public class ThreadTest { public static 阅读全文
posted @ 2023-09-01 17:39 花园SON 阅读(2) 评论(0) 推荐(0) 编辑
摘要: java实现两个线程交替打印0~100 public class jk { static volatile int num=0; static Object lock=new Object(); public static void main(String[] args) { Runnable task1 = new Task1(); R 阅读全文
posted @ 2023-09-01 17:39 花园SON 阅读(235) 评论(0) 推荐(0) 编辑
摘要: InnoDB RR隔离级别下解决幻读 InnoDB RR隔离级别下解决幻读 演示 A B begin; begin; select *from award where id>2; insert into award (id) values(6); commit; select *from award where id>2; commit 阅读全文
posted @ 2023-09-01 17:37 花园SON 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 单例模式 单例模式 饿汉式,在类初始化时就创建好了单例对象 public class Design { private Design(){ System.out.println("私有方法调用"); } private static final Design singleton1= new Design(); 阅读全文
posted @ 2023-09-01 17:37 花园SON 阅读(3) 评论(0) 推荐(0) 编辑
摘要: HashMap的寻址算法 HashMap的寻址算法 阅读全文
posted @ 2023-09-01 17:36 花园SON 阅读(2) 评论(0) 推荐(0) 编辑
摘要: CAP理论 阅读全文
posted @ 2023-09-01 17:36 花园SON 阅读(2) 评论(0) 推荐(0) 编辑
摘要: Spring Bean 的生命周期 阅读全文
posted @ 2023-09-01 17:36 花园SON 阅读(2) 评论(0) 推荐(0) 编辑
摘要: Redis分布式锁 基于Redis的分布式锁一般有两个SETNX和Redission SETNX 获取锁:通过setNx命令 释放锁:DEL key 命令 手动释放,或者超时释放,给锁添加一个超时时间;(超时时间的设置需要考量,不能太长) 在极端情况:业务阻塞导致锁提前释放了;其他线程一上来,业务没 阅读全文
posted @ 2023-09-01 17:35 花园SON 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 缓存同步策略之同步双写 阅读全文
posted @ 2023-09-01 17:35 花园SON 阅读(3) 评论(0) 推荐(0) 编辑
摘要: MySQL死锁 什么是死锁 死锁是并发系统中常见的问题,一般表现为A,B同时持有对方需要的资源并上锁,A,B都在等待对方释放锁以获取对方手里的资源,如此便产生了死锁。同样也会出现在数据库MySQL的并发读写请求场景中。当两个及以上的事务,双方都在等待对方释放已经持有的锁或因为加锁顺序不一致造成循环等 阅读全文
posted @ 2023-09-01 17:34 花园SON 阅读(9) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal ThreadLocal是在多线程编程的环境下,为每个线程创建一个单独的线程变量,互不影响。避免了多个线程同时操作共享变量时产生冲突而带来的一些问题。相比于加锁的操作,体现一种以空间换时间的思想 ThreadLocal的结构 在早期的版本中,ThreadLocal的实现是每个T 阅读全文
posted @ 2023-09-01 17:34 花园SON 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 多级缓存 在只使用Redis作为缓存的情况下,存在缓存穿透,缓存击穿,缓存雪崩等生产问题,虽然都有对应的解决方法,但不是最优的方法,并且传统缓存策略一般是请求到tomcat后,先查询redis,如果未命中则查询数据库请求要先经过tomcat处理,tomcat的性能成为整个系统的瓶颈。在系统的架构比较 阅读全文
posted @ 2023-09-01 17:32 花园SON 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 什么是canal 官话就不说了,直接一句话 canal是一个用来同步增量数据的一个工具。 canal的工作原理就是把自己伪装成MySQL slave,模拟MySQL slave的交互协议向MySQL Mater发送 dump协议,MySQL mater收到canal发送过来的dump请求,开始推送b 阅读全文
posted @ 2023-09-01 17:30 花园SON 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 规则树 平时进行业务开发的时候,对于某些业务有着一系列的规则流程,采用规则引擎就可以只改变规则树不需要改变代码 构建一个简单的策略树 rule_tree,rule_tree_node,rule_tree_node_line 三张表构建规则树 分别是 规则树表,里面是所有的规则树,树节点表,该表内有t 阅读全文
posted @ 2023-09-01 17:24 花园SON 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 幂等性 什么是幂等性 幂等概念来自数学,表示N次变换和1次变换的结果是相同的。在业务开发的时候幂等的概念有所不同。在业务开发说的幂等性更多指的是接口的幂等性, 即:客户端对服务器的多次请求只要有一次对资源产生了影响,其他所有的请求则都不应该对资源(一般指的是存放的数据)产生影响, 产生影响这个词是很 阅读全文
posted @ 2023-09-01 17:20 花园SON 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 背景 在docker上安装了MySQL 后无法远程访问,运行名令如下,使用数据库连接工具时候无法访问MySQL8报错:Public Key Retrieval is not allowed docker run -p 3306:3306 --name mysql \ -v /home/mysql/l 阅读全文
posted @ 2023-09-01 17:20 花园SON 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 正向代理和反向代理 什么是代理 代理的本质就是对请求进行转发,根据侧重点的不同而分为正向代理和反向代理。正向代理侧重于客户端,目的主要是帮助客户端访问访问不到的资源,同时隐藏客户端的访问。而反向代理侧重于服务端,目的主要是对服务端进行隐藏,客户端不知道实际相应的服务器。 正向代理 如我们现在想要访问 阅读全文
posted @ 2023-09-01 17:19 花园SON 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 背景 最近在完成自己的个人抽奖项目之后,想着为项目提供一个抽奖入口。分析后选择使用公众号来作为入口。 以下是公众号的具体接入流程。 具体接入流程 创建自己的公众号 具体步骤可以去网上搜,网上资源很多的照着来就好。这里就简单贴一个 如何建立一个微信公众号(个人) 接入自己的服务器 公众号是可以设置相关 阅读全文
posted @ 2023-09-01 17:18 花园SON 阅读(4) 评论(0) 推荐(0) 编辑