自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 实现MYSQL同步数据到ES

持续更新中.....

2023-10-10 10:36:33 134

原创 基于Redssion封装分布式锁切面

内容持续更新....

2023-05-31 20:06:20 184

原创 基于Freemarker构建下载pdf

内容持续更新中。

2023-05-31 19:54:28 155

原创 基于MybatisPlus框架封装

1.

2023-05-31 19:48:30 222

原创 Builder构造器

以下是一个Builder构造器。

2022-10-26 13:37:50 50

原创 一篇理解MapStruct领域转换工具!

一篇理解MapStruct领域转换工具!

2022-07-15 12:20:44 712 1

原创 springboot整合kafka--从0到1(技术篇)

Kafka 是由 Apache 软件基金会开发的一个开源流处理平台,由 Scala 和 Java 编写。 Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。本章介绍 Spring Boot 集成 Kafka 收发消息。Spring 有专门的项目支持 Kafka ,引入依赖包时需要注意版本兼容问题,以下是 Spring for Apache Kafka 版本兼容列表: 指定 Scala 版本解决 Jackson/Scala 兼容问题:2.配置appl

2022-07-04 09:14:33 1246

原创 kafka基础架构(概念篇)

Kafka最初由Linkedin公司开发,是一个分布式的、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常用于web/nginx日志、访问日志、消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。2.kafka的特性:高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒;可扩展性:kafka集群支持热扩展;持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止丢失;容错性:允许集群中的节点失败(

2022-07-03 01:35:57 2730

原创 Groovy的规则脚本引擎实战

Groovy的规则脚本引擎实战

2022-07-02 12:22:19 3959 2

原创 创建多线程(8种方式)

无论有多少种形式,创建多线程的真正的方法,其实只有两种: > 继承 Thread 类> 实现 Runnable 接口其它形式都是这两种方式的变体。1、继承 Thread 类①实现方式第一步:继承 Thread 类 第二步:重写 run() 方法 第三步:创建 Thread 子类对象 第四步:调用 start() 方法启动线程②start() 方法和 run() 方法区别调用 run() 方法仅仅只是调用了一个子类中重写的父类...

2022-03-29 21:18:17 9336

原创 详解红黑树

前置知识:二叉树,平衡二叉树概念:红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。红黑树是一种特化的AVL树(平衡二叉树),都是在进行插入和删除操作时通过特定操作保持二叉查找.

2022-03-28 19:35:50 113

原创 一篇理解-链表,哈希表,二叉树,平衡二叉树,B树,B+树

链表:链表的概念:链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表的结构是多式多样的,当时通常用的也就是两种:无头单向非循环列表:结构简单,一般不会单独用来存放数据。 实际中更多是作为其他数据结构的子结构,比如说哈希桶等等。带头双向循环链表:结构最复杂,一般单独存储数据。实际中经常使用的链表数据结构, 都是带头双向循环链表。这个结构虽然复杂, .

2022-03-27 15:36:14 1756

原创 深入浅出Elasticsearch 的倒排索引

分词:前置知识在创建索引之前,会对文档中的字符串进行分词。ES中字符串有两种类型,keyword和text。keyword类型的字符串不会被分词,搜索时全匹配查询text类型的字符串会被分词,搜索时是包含查询不同的分词器对相同字符串分词的结果大有不同,选择不同的分词器对索引的创建有很大的影响,这里使用ik分词器进行介绍:ik_max_word分词器: 最细粒度拆分ik_smart分词器: 最粗粒度的拆分单词-文档矩阵:前置知识单词1 单词2 单词3 单词4

2022-03-26 22:34:26 2218

原创 redis缓存击穿、雪崩、穿透

1.缓存穿透(不存在的)缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于 是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是 都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。解决方案:1.布隆过滤器是一种数据结构,对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则 丢弃,从而避免了对底层存储系统的查询压力2.缓存空对象,当缓存层不命中后,即使返

2022-03-26 00:24:17 1110

原创 一篇掌握Redis的主从复制机制+哨兵模式

1. 什么是主从复制主从复制是主机数据更新后根据配置和策略, 自动同步到备机的master/slave机制,Master以写为主,Slave以读为主2.主从复制的作用数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复; 实际上是一种服务的冗余。负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务, 由从节点提供读服务(即写Redis数据时应用连接主节点,

2022-03-25 23:25:06 1449

原创 一篇文章让你读懂Redis持久化机制

概念:Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘(文件)中,这一过程就是持久化。包含: RDB、AOF、不持久以及RDB+AOF-->这四种选项1.RDB持久化机制1.RDB概念:RDB 持久化以指定的时间间隔执行数据集的快照。RDB持久化方式是Redis默认开启的,我们不配置也可以默认使用RDB持久化机制,持久化内存数据到磁盘2. 触发机制2.1.自动触发save 900 1 900秒

2022-03-25 22:58:04 1150

原创 过滤器、监听器、拦截器的区别

1.过滤器:servlet中的过滤器filter是实现了javax.servlet.Filter接口的服务器端程序,主要用途是过滤字符编码,做一些业务逻辑判断等。工作原理:只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你进行拦截到请求,此时你就可以队请求,响应统一设置编码,简化操作;同时还可以进行逻辑判断,如用户是否已经登录,有没有权限访问该页面等等的工作,它随着你的web应用启动而启动的,只初始化一次就可以拦截相关的请求,只有当你的web应用停止或者重新部署的时候才进行销毁。主要

2022-03-21 08:35:10 1271

原创 mycat的安装使用(技术篇)

第一章:概念1.为什么要拆分:①MySQL 实例内部结构1.单一架构[2]复制架构:尽管搭建了复制架构,但是实际上从逻辑上来说仍然只有一个 db_hr 数据库。②性能瓶颈MySQL 工作过程中的性能瓶颈主要来自于下面三个方面(同等硬件条件下):数据存储量:单表 1000 万条数据达到极限;500 万条开始性能明显下降;300 万条开始就应该考虑拆分。 I/O 瓶颈:关系型数据库以硬盘作为主要存储介质,所以必然存在 I/O 瓶颈。 访问量瓶颈:通常 MySQL 的最

2022-03-15 12:37:00 448

原创 mysql优化(排序分组优化)

总结:order by子句需要配合limit子句才能让索引生效如果涉及多个字段的排序,那么这些字段的排序方向一定要一致(要么都是升序,要么都是降序)否则失效。测试order by分组测试排序方向的影响1.单路排序和双路排序如果order by排序的时候,索引生效就在内存中进行排序,如果索引不生效就只能文件中排序,执行 filesort 又分两种不同情况:- 双路排序: - 特征:两批 I/O - 对应的 MySQL 版本:4.1 ...

2022-03-12 23:23:10 1213

原创 mysql优化(子查询优化)

1.结论:在实际开发中,能够不用子查询尽量不用子查询。综合对比:- 从执行顺序来说:关联查询的 id(1,1) 比 子查询的 id(1,2) 要好- 从查询的类型来说:ref 比 index 要好两个级别

2022-03-12 22:30:49 394

原创 mysql优化(关联查询优化)

1.准备数据#分类CREATE TABLE IF NOT EXISTS `class` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,`card` INT(10) UNSIGNED NOT NULL,PRIMARY KEY (`id`));#图书CREATE TABLE IF NOT EXISTS `book` (`bookid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,`card` INT(1

2022-03-12 22:18:00 2619

原创 mysql优化(索引失效)

where 子句部分和最左原则对照,看是否生效的口诀:带头大哥不能死,中间兄弟不能断简单来说就是:MySQL 在决定是否要应用索引时,会对照 SQL 语句中要过滤的字段的顺序和索引中字段的顺序。那么具体是怎么对照的呢?请看下面的细节:所有有过滤功能的子句都会将相关字段去和索引尝试匹配:- ON 子句- WHERE 子句- GROUP BY 子句- HAVING 子句- LIMIT 子句1.创建联合索引:按照这个索引创建方式,索引中字段的顺序是:age、deptid、NAME

2022-03-12 22:05:11 1240

原创 mysql优化(Explain分析)

1.概念①MySQL 内优化器mysql体系结构中,包含sql解析器,优化器等组件,sql解析器解析sql之后,生成解析树,经过验证,解析树如果正确后,由优化器进一步优化解析树,最终形成一个执行计划(profile)②Explain 分析使用explail关键字可以模拟优化器执行sql语句的查询,从而知晓mysql是如何处理你的sql语句的,分析你的查询语句或是表结构的瓶颈explain各个参数的介绍:id:在一个大的查询语句中每个SELECT关键字都对应一个唯一的idselec

2022-03-12 20:59:48 1040

原创 mysql的优化(慢查询)

1.修改配置文件的配置:在mysql的配置文件的末尾加上如下配置(my.ini my.cnf)# 设置为 1 表示开启这项功能log_bin_trust_function_creators=1#如果无法生效,则使用如下命令让它暂时生效SET GLOBAL log_bin_trust_function_creators = 1;2.构建数据:(注意直接复制)# 创建数据库create database db_hr_sys;# 使用数据库use db_hr_sy..

2022-03-12 18:30:52 546

原创 mysql的逻辑结构

1.总述:和其它数据库有所不同,MySQL 的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,『插件式』的『存储引擎架构』将查询和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。2.连接层:最上层是一些客户端和连接服务,包含本地 sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP 的通信。主要任务是连接处理、授权认证、及相关的安全方案等。该层引入了线程池,为通过认证、安全接入的客户端提供线程

2022-03-12 13:36:39 4150

原创 mysql的索引

1.概念介绍:单列索引:一个索引只是根据一个字段创建的,里面只包含单个列,一个表可以有多个单值索引## create index 索引名称 on 要建立索引的字段所在的表(要建立索引的字段);create index id_customer_name on t_customer(customer_name)联合索引:一个索引包含多个列# create index 索引名称 on 要建立索引的字段所在的表(要建立索引的字段,...,要建立索引的字段);create index idx_

2022-03-12 13:06:19 424

原创 三种方式实现阻塞队列(简单版)

1.基于wait和notify方法实现的阻塞队列public class WaitNotifyInterview { public final static int QUEUE_SIZE = 10; public static PriorityQueue<Integer> queue = new PriorityQueue<>(); public static void main(String[] args) { new Thread

2022-03-10 15:19:04 1943

原创 项目中整合分布式事务seata(技术篇)

只需要简单的几步配置就可以使用,让我们开始:前情:seate版本会与openfeign及springboot版本发生冲突,这里使用的版本如下:springboot2.2.1-openfeign2.2.0-amqp2.0.0 如果是高版本的请自行尝试是否可用一下方案(如果是其他的版本可以存在环境问题)(使用seata-all0.7.1)在每隔模块都要导入这个pom依赖<!-- 导入seata模块--> <dependency> ..

2022-02-26 18:19:19 622

原创 分布式事务解决方案的实现者 - Seata(介绍)

1.Seata的介绍:seata是阿里开源的一个分布式事务框架,能够让大家在操作分布式事务时,像操作本地事务一样简单。一个注解搞定分布式事务。解决分布式事务问题,有两个设计初衷,官网地址:http://seata.io/zh-cn/对业务无侵入:即减少技术架构上的微服务化所带来的分布式事务问题对业务的侵入高性能:减少分布式事务解决方案所带来的性能消耗seata中有两种分布式事务实现方案,AT及TCC AT模式主要关注多 DB 访问的数据一致性,当然也包括多服务下的多 DB 数据访问一.

2022-02-22 14:50:50 343

原创 分布式事务的解决方案(XA协议-TCC协议-最大努力通知-MQ事务消息)

1.XA协议的两种实现2PC/3PC分布式事务的实现方式有很多种,最具有代表性的是由Oracle Tuxedo系统提出的XA分布式事务协议。XA协议包括两阶段提交(2PC)和三阶段提交(3PC)两种实现,接下来我们分别来介绍下这两种实现方式的原理。1.1两阶段提交(2PC)两阶段提交又称2PC(two-phase commit protocol),2pc是一个非常经典的强一致、中心化的原子提交协议。这里所说的中心化是指协议中有两类节点:一个是中心化协调者节点(co...

2022-02-22 13:31:06 872

原创 springboot整合Sentinel实现熔断降级

1.sentinel的功能:1.可以监控服务状态2.可以和openfeign整合,进行被动降级(服务端异常)3.sentinel可以进行主动设置,进行降级和熔断2.在pom中添加依赖配置<!-- 加上sentinel--> <dependency> <groupId>com.alibaba.csp</groupId> ...

2022-02-19 13:14:55 1174

原创 springboot项目整合Sleuth实现链路追踪(技术篇)

1.在pom依赖中导入Sleuth的依赖<!--包含了sleuth+zipkin的链路追踪--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency&g

2022-02-18 13:21:34 1239

原创 springboot项目中整合RabbitMQ高级消息队列(技术篇)

注:此篇只是简单整合使用,不涉及RabbitMQ高级消息队列概念1.在pom中导入rabbitMQ整合启动场景依赖<!-- 引入rabbitMQ高级消息队列依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</a

2022-02-17 15:48:18 1568

原创 单点登录认证中心时序图

2022-02-13 21:01:29 548

原创 认证服务之springboot整合springSession(技术篇)

注:此次使用redis缓存进行整合,请在学习本章之前请先学习《springboot项目中使用redis缓存(技术篇)》1.在框架中引入springsession的pom依赖<!-- 整合springSession完成session共享的问题--><dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-s..

2022-02-13 17:26:07 620

原创 mysql面试题(4)

61.Mysql 中使用什么存储引擎?存储引擎称为表类型,数据使用各种技术存储在文件中。技术涉及:Storage mechanismLocking levelsIndexingCapabilities and functions.62.Mysql 驱动程序是什么?以下是 Mysql 中可用的驱动程序:PHP 驱动程序JDBC 驱动程序ODBC 驱动程序CWRAPPERPYTHON 驱动程序PERL 驱动程序RUBY 驱动程序CAP11PHP 驱动程序Ado.net5.

2022-02-12 23:31:39 83

原创 mysql面试题(3)

41.MySQL优化 开启查询缓存,优化查询 explain你的select查询,这可以帮你分析你的查询语句或是表结构的性能瓶颈。 EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索 和排序的 当只要一行数据时使用limit 1,MySQL数据库引擎会在找到一条数据后停止搜索,而不 是继续往后查少下一条符合记录的数据 为搜索字段建索引 使用 ENUM 而不是 VARCHAR。如果你有一个字段,比如“性别”,“国家”,“民族”,

2022-02-11 23:27:03 499

原创 整合springCache简化缓存开发(技术篇)

1.在pom中导入springCache启动器的依赖<!-- 整合springCache缓存--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </depende

2022-02-04 14:49:23 905

原创 mysql面试题(2)

21.MySQL有哪些日志,分别是什么用处?mysql日志一般分为5种错误日志:-log-err (记录启动,运行,停止mysql时出现的信息)二进制日志:-log-bin (记录所有更改数据的语句,还用于复制,恢复数据库用)查询日志:-log (记录建立的客户端连接和执行的语句)慢查询日志: -log-slow-queries (记录所有执行超过long_query_time秒的所有查 询)更新日志: -log-update (二进制日志已经代替了老的更新日志,更新日志在MyS..

2022-02-03 23:32:29 631 1

原创 mysql面试题(1)

1.什么是索引?索引是一种数据结构,可以帮助我们快速的进行数据的查找。2.索引是个什么样的数据结构呢?索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索 引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引。3.Hash索引和B+树索引有什么区别或者说优劣呢?首先要知道Hash索引和B+树索引的底层实现原理:hash索引底层就是hash表,进行查找时,调用一次hash函数就可以获取到相应的键值,之后进行 回表查询获得实际数

2022-02-01 23:28:11 584

空空如也

空空如也

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

TA关注的人

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