自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

持之以恒,方得始终

本人的博客主要为本人学习的笔记分享、开发过程中出现问题的记录,主要目的是便于日后复习回顾,以及和大家分享经验总结,如有侵权或不妥之处,请及时联系我进行修改QQ:1021204735。

  • 博客(140)
  • 资源 (6)
  • 收藏
  • 关注

原创 ES复合查询工作量评估

ES复合查询工作量评估

2022-06-20 10:40:25 349 1

原创 Spring中的可扩展点(二)自定义属性编辑器

目录1.自定义属性编辑器具体步骤2.DEMO例程2.1 创建Address类2.2 创建Customer类,依赖于Address2.3 创建自定义Editor2.4 创建自定义Registrar2.5 创建customizeEditor.xml配置文件2.6 Application2.7 结果演示3.Spring是如何做到可扩展的1.自定义属性编辑器具体步骤自定义一个实现了PropertyEditorSupport接口的编辑器,重写setAsText方法。

2022-05-14 14:45:29 619

原创 Spring中的可扩展点(一)自定义标签

目录1.自定义标签具体步骤2.DEMO例程2.1 创建User类2.2 创建自定义解析器UserBeanDefinitionParser2.3 创建自定义处理器UserNameSpaceHandler2.4 创建自定义XSD2.5 创建Spring.handlers 和 Spring.schemas2.6 测试类 Application2.7 运行结果及目录结构:​3.我们创建的几个文件是如何关联到一起的4.Spring是如何做到可扩展的1.自定义标签具体步骤

2022-05-13 23:09:26 744

原创 Spring 循环依赖(5.2.x)

1.回顾getBean过程Spring getBean过程如上时序图所示,AbstractBeanFactory第一次调用getSingleton方法入参为beanName:如果未查询到Bean信息那么就会二次调用getSingleton方法,入参为beanName和ObjectFactory:这里用了一个lambda表达式,这次会尝试创建Bean,内部会回调到上图红框里createBean方法开始创建Bean。2.回顾创建拥有简单依赖...

2022-04-29 17:18:53 1051

原创 Spring Bean 生命周期

目录1.元信息配置阶段2.元信息解析阶段(封装BeanDefinition)3.Bean注册阶段​4.实例化阶段5.属性赋值阶段6.初始化阶段6.1 Aware接口回调阶段6.2 实例化前置增强阶段6.3 初始化​6.4 实例化后置增强阶段7.销毁阶段7.1 销毁前阶段7.2 销毁中阶段1.元信息配置阶段Spring 最早支持在 xml 中配置 Bean 的元信息,这些 bean 元信息的配置都处于资源文件中,由于需要大量手工配...

2022-04-29 15:08:30 630

原创 Spring创建BeanDefinition全流程解析(5.2.x)

1.Spring源码怎么学注:这里笔者只是分享一下自己的心得,可能并不适合所有人,如果您觉得有道理不妨一试。 刚看Spring源码优先理清楚整体逻辑,切记刚入手就开始扣代码细节,容易越陷越深导致学迷。建议先理清楚refresh()中的主要方法,再详细深入每一个方法。Spring在设计上大量运用了设计模式(观察者模式、适配器模代理模式),如果碰到看起来很奇怪的名词,先往设计模式上想,找到对应设计模式后先弄懂该设计模式,然后再去看源...

2022-04-25 20:02:40 1075

原创 Spring IOC

1.Spring IOC容器和Bean简介在 Spring 中,构成应用程序主干并由 Spring IOC 容器管理的对象称为 bean。bean 是由 Spring IoC 容器实例化、组装和管理的对象。bean 只是应用程序中的众多对象之一。Bean 以及它们之间的依赖关系反映在容器使用的配置元数据中。IOC也称为依赖注入 (DI),对象仅通过构造函数参数、工厂方法的参数或在对象实例被构造或从工厂方法返回后设置的属性来定义它们的依赖关系, 然后容器在创建 ...

2022-04-13 14:10:58 659

原创 MySQL面试题大全(陆续更新)

1.DQL2.DDL、DML、DCL3.数据库对象相关4.架构相关5.索引相关6.调优相关7.事务相关7.1 事务的ACID特性8.日志相关

2022-03-29 14:09:23 39241 12

原创 MySQL主从复制

1.主从复制作用1.1 读写分离,提高吞吐量可以通过配置读写分离,提高数据库并发处理能力。其中一个是Master主库,负责写入数据,我们称之为:主库其他都是Slave从库,负责读取数据,我们称之为:读库当主库进行更新的时候,会自动将数据复制到从库中,而我们在客户端读取数据的时候,会从从库中进行读取。面对读多写少的需求,采用读写分离的方式,可以实现更高的并发量。而且读写分离还可以减少锁表带来的影响,比如我们让主库负责写,当主库出现写锁的时...

2022-03-24 20:50:52 1417

原创 MySQL知识点思维导图

MySQL知识点思维导图,文章里是PNG格式,可能不是很清晰,文末附上PDF和xmind工程文件链接,需要的小伙伴自取,都只需要1个币(设置成0个币还需要啥下载码)。如有错误的地方欢迎大家批评指正。MySQL知识点思维导图PDFMySQL知识点思维导图PDF-MySQL文档类资源-CSDN下载MySQL知识点思维导图PDF更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/qq_36756682/85022433My...

2022-03-23 10:18:42 1198

原创 MySQL其他数据库日志

之前写数据库事务的时候,写过两种日志:重做日志(redo log)、回滚日志(undo log)对于线上数据库系统,如果发生突然宕机,那么定位到宕机的原因就很关键。我们可以查看数据库的错误日志,因为日志中记录了数据库运行中的诊断信息,包括了错误、警告和注释等信息。1.MySQL支持的日志MySQL有不同类型的日志文件,用来存储不同类型的日志,分为二进制日志、错误日志、通用查询日志和慢查询日志,这是常用的4种日志。MySQL8.0又新增了两种支持的日志:中继日志和数...

2022-03-23 09:52:09 2054 1

原创 MySQL MVCC

目录1.什么是多版本并发控制2.快照读与当前读2.1 快照读2.2 当前读3.复习3.1 复习隔离级别3.2 隐藏字段、undo log版本链4.MVCC实现原理之ReadView4.1 什么是ReadView4.2 设计思路4.3ReadView规则4.4 MVCC整体执行流程1.什么是多版本并发控制MVCC(Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC是通过数据行的多个...

2022-03-16 16:23:38 942

原创 MySQL中的锁

目录1.概述2.MySQL并发事务访问相同记录2.1 并发读2.2 并发写2.3 并发读写2.4 并发问题解决方案3.锁的不同角度分类3.1 从数据操作类型划分:共享锁(S锁)、排他锁(X锁)3.2 从数据操作粒度划分:表级锁、行级锁、页级锁3.2.1 表级锁3.2.2 InnoDB行锁3.2.3页锁3.3从对待锁的态度划分:悲观锁、乐观锁3.4从加锁的方式划分:隐式锁、显示锁3.5其他:全局锁、死锁1.概述锁是...

2022-03-15 17:16:42 2641 1

原创 MySQL事务日志

1.事务的四种特性是基于什么机制实现的事务的隔离性是由锁机制实现的事务的原子性、一致性和持久性由事务的redo日志和undo日志来保证。REDO LOG:重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。UNDO LOG:回滚日志,回滚行记录到某个特定版本,用来保证事务的原子性、一致性。REDO LOG和UNDO LOG都可以视为是一种恢复操作,但是:REDO LOG:记录的是物理级别上的页修改操作,比如页号,偏...

2022-03-11 15:26:44 586 1

原创 MySQL InnoDB数据存储结构

目录1.数据库的存储结构1.1 磁盘与内存交互基本单位:页1.2 页结构概述​1.3 页的大小1.4 页的上层结构2.页的内部结构3.行格式4.表空间4.1 独立表空间4.2 系统表空间1.数据库的存储结构1.1 磁盘与内存交互基本单位:页MySQL索引信息以及数据记录都是保存在文件上的,确切的说是存储在页的结构中。InnoDB将数据划分为若干个页,默认页的大小为16KB。以页作为磁盘和内存交互的基本单位,也就是说在...

2022-03-11 14:50:03 1499

原创 MySQL事务基础知识

目录1.数据库事务概述1.1 存储引擎支持情况1.2 事务基本概念1.3 事务的ACID特性1.4 事务的状态2.如何使用事务3.事务的隔离级别4.事务的常见分类1.数据库事务概述1.1 存储引擎支持情况可以使用 SHOW ENGINES 命令查看MySQL支持事务的存储引擎有哪些1.2 事务基本概念事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态事务处理的原则:保证所有事物都作为一个工作单元来执行,即使出现了故障,...

2022-03-09 23:56:02 2302

原创 Java多线程上机面试题

目录1.两个线程交替打印1-1002.三个线程交替打印1-1001.两个线程交替打印1-100package com.example.practice.Thread;/** * @author liuxiaobai */public class WindowSaleTicket { public static void main(String[] args) { Window window = new Window(); new Thr

2022-02-24 14:45:01 729 1

原创 Tomcat是如何处理一次请求的 源码版本8.0.21

1.Tomcat容器构成2.接收请求前的准备从上图可知Tomcat中有很多容器,包括Server、Service、Connector等。其中Connector正是与HTTP请求处理相关的容器。Service是Server的子容器,而Connector又是Service的子容器。那么这三个容器的初始化顺序为:Server->Service->Connector。Connector的实现分为以下几种:Http Connector:基于HTTP协议,负责建立HTTP连接...

2022-02-13 14:00:52 398

原创 JavaSE基础知识点思维导图

目录1.基本数据类型考点1:基本数据类型取值范围考点2:类型转换考点3:不同数据类型间的计算规则2.引用数据类型1.基本数据类型Java语言提供了八种基本类型,六种数字类型(四个整数型,两个浮点型),一种字符类型,一种布尔型。考点1:基本数据类型取值范围类型 占用存储空间/字节 范围 byte 1 -2^7 ~ 2^7-1 short 2 -2^15 ~ 2^15-1 int 4 -2^31 ~ 2^31-1.

2022-02-09 16:51:35 1068

转载 计算机中为什么要使用补码来进行数据运算?

原码、反码、补码定义原码定义:第一位表示符号,其余位表示值。因为第一位是符号位,所以8位二进制数的取值范围就是:[11111111 , 01111111] ,即 [-127 , 127] 。反码定义:正数的反码是其本身,负数的反码符号位保持不变,其余位取反。补码定义:正数的补码是其本身,负数的补码是符号位保持不变,其余位取反+1。为什么有了原码还需要反码?对于计算机来说,加减是基本的运算(乘和除的本质也是加法),需要设计的尽量简单,计算机辨别符号位会让计算机的设计电路变得很复杂,于是人们

2022-02-09 14:21:07 2332

原创 单体架构下的认证授权方案 - SpringSecurity + JWT

本文言简意赅,需要有一定的Java编程基础,说再多也不如直接撸代码,文末附SpringSecurity + JWT Demo和Github开源项目 mall-tiny 完成实现方案以供参考。直接看代码有疑惑的同学推荐两个B站免费的教学视频:尚硅谷SpringSecurity框架教程(spring security源码剖析从入门到精通)_哔哩哔哩_bilibiliSpringSecurity框架教程-SpringSecurity+JWT实现项目级前端分离认证授权-B站最通俗易懂的SpringSecurit

2022-01-17 10:29:38 1583

原创 Lombok首字母小写,第二个字母大写造成的参数无法接收问题

1.问题现象: 如果VO实体用@Data注解生成get/set,对于首字母小写,第二个字母大写的成员变量,@RequestBody无法完成自动映射,取值为null2.问题实质: Lombook的@Data注解和Spring的Jackson对于get/set的生成方式不同3.问题原因: private String xIndex;对于这种首字母小写,第二个字母大写的成员变量,Lombook生成的get/set...

2021-11-15 18:41:36 3167

原创 更新缓存的正确姿势(先更新缓存还是先更新数据库)

目录1.更新缓存的三种模式1.1Cache Aside1.1.1 先更新DB,后更新缓存​1.1.2先更新缓存,后更新DB1.1.3先删除缓存,再更新DB1.1.4先更新DB,再删除缓存(业界推荐方案)1.2Read/WriteThrough1.3ReadThrough/Write Behind2.三种缓存模式小结1.更新缓存的三种模式引入缓存势必会导致数据的一致性问题(因为分别存放到缓存以及DB),那么在数据更新时,缓存和DB都得更...

2021-11-05 09:39:51 3324

原创 记一次接口优化经历

前言:最近接了一个导出接口的优化需求,原9000+数据导出秒数660+,优化后5S,特此记录一下优化方案以供大家一起讨论学习。本文先通篇列举一下优化的方案,再详细的阐述这次优化的具体细节。1.接口优化维度 个人感觉接口优化分为两个维度,分为接口响应时间(使接口更快的返回数据)和内存占用率(减少接口内存消耗)。1.1 接口响应时间 这类接口需要优化的原因通常是因为该接口响应时间超过了nginx/网关/feign所配置的超时时间限制。那么我们可以考...

2021-10-25 19:59:41 883

原创 Java SPI 插件化开发

1.前言最近业务提出了一个需求,要求在现有A厂商业务逻辑基础上兼容B厂商的业务逻辑,同时支持热切换。简单的方案为给A、B厂商配置不同的标识,业务代码中根据表示来执行不同的业务逻辑。但这么搞缺点也很明显:代码冗杂,可扩展性太低,后期如果新增一个C厂商,负责开发的程序员可能会死。 由于之前对mybatis的源码略有研究,灵光一现是否可以采用插件化的方式,把A、B厂商共有的业务抽离成接口,通过让JVM加载不同实现类的方式实现不同厂商业务逻辑的切换呢?2.什么是spi...

2021-09-18 13:47:08 1228

原创 Java ZIP压缩

目录1.压缩2.解压3.压缩/解压嵌套zip文件思路1.压缩code:package com.example.practice.srp;import lombok.extern.slf4j.Slf4j;import java.io.*;import java.util.ArrayList;import java.util.List;import java.util.Objects;import java.util.zip.ZipEntry;import java.

2021-08-06 15:24:17 502

原创 面向对象编程 OOP

OOP:Object Oriented Programming,面向对象编程。了解面向对象编程之前,需要了解下面向过程编程。现在有一个实际问题需要编程解决,把大象装冰箱里分几步?如果用面向过程的语言去实现则思路如下:void main(){ //1.打开冰箱门 openSomething(Refrigerator refrigerator){ } //2.把大象装入冰箱 putSomethingToRefrigerator(Elephan...

2021-07-14 20:03:05 403

原创 Docker安装ES:7.4.2 +Kibana:7.4.2

目录1.确保docker环境正常2.拉取ES和Kibana镜像3.创建elasticsearch.yml外部配置文件4.启动ES容器5.确认端口开放或直接关闭防火墙6.宿主机浏览器访问ES端口7.启动Kibana8.设置Kibana汉化1.确保docker环境正常2.拉取ES和Kibana镜像docker pull elasticsearch:7.4.2 docker pull kibana:7.4.23.创建elasticsearch.

2021-05-11 20:04:35 666 2

原创 JDK8新特性 - 函数式接口

目录1.函数式接口基础概念2.Java内置四大核心函数式接口3.@FunctionalInterface1.函数式接口基础概念 一个接口中,要求实现类实现的抽象方法有且只有一个,这样的接口称为函数式接口,上Demo://接口中有且只有一个实现类必须实现的方法,是函数式接口interface test1{ void test();}//接口中有两个实现类必须实现的方法,非函数式接口interface test2{ void test1(); ...

2021-05-09 11:45:15 296

转载 Windows IDEA快捷键整理

Ctrl快捷键 介绍 Ctrl + F 在当前文件进行文本查找 (必备) Ctrl + R 在当前文件进行文本替换 (必备) Ctrl + Z 撤销 (必备) Ctrl + Y 删除光标所在行 或 删除选中的行 (必备) Ctrl + X 剪切光标所在行 或 剪切选择内容 Ctrl + C 复制光标所在行 或 复制选择内容 Ctrl + D 复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 (必备) Ctrl

2021-04-27 15:28:26 231

原创 Java线程池知识点总结

1.多线程负责解决什么问题 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。同时也可以快速响应前端,将耗时任务交给线程去执行,提高前端用户的交互体验。2.线程池负责解决什么问题 线程池是存放有一组线程的一个容器。线程池是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作服务,减少了创建和销毁线程所需的时间,从而提高效率。合理的使用线程池可以降低资源消耗,提高响应速度,提高线程的可管理性。3.J...

2021-04-12 12:31:49 454

原创 SpringBoot自动装配(版本2.4.4)

1.@SpringBootApplication 来看一下自动装配的起点:@SpringBootApplication 点进去看下@SpringBootApplication源码: 三个Java元注解:@Target、@Retention、@Documented。 @Inherited:如果一个类用上了@Inherited修饰的注解,那么其子类也会继承这个注解。具体可以查看这篇博文:https://blog.csdn.net/qq_43...

2021-04-10 23:24:17 789

原创 SpringIOC注解总结

1.组件添加相关注解 1.1 @Configuration 作用在类上,告诉Spring这是一个配置类。 相当于一个xml配置文件 1.2 @Bean 作用在方法上,告诉Spring这是一个需要管理的Bean,id默认为方法名,也可以在注解内配置value值作为Bean的id。 相当于xml配置文件中的<Bean>标签 1.3 @ComponentScan ...

2021-03-25 20:03:14 437 1

原创 详述Redis主从复制配置及原理

1.配置Redis主从复制 Redis版本:6.2.1 1.1 环境准备 准备两台安装好相同redis版本的linux服务器,对安装过程有疑问的小伙伴可以看我这篇博文:Centos7.3安装Redis6.2.1,然后在服务器开放防火墙6379端口(如果是阿里云记得在控制台配置6379端口开放规则) 1.2 修改从库redis.conf配置文件 配置主库IP和端口,如果主库有密码把密码也配置上,老版本命令:slaveof 新版本命令...

2021-03-23 15:39:12 422 1

原创 Centos7.3安装Redis6.2.1

目录1.登录官网下载稳定版Redis源码2.将下载好的源文件上传到服务器,使用tar命令解压3.安装gcc环境4.编译&安装5.整理Redis目录结构并启动服务1.登录官网下载稳定版Redis源码 官网下载地址:https://redis.io/download2.将下载好的源文件上传到服务器,使用tar命令解压 笔者上传到user/local目录,执行指令:tar -zxvf redis-6.2.1.tar.gz3.安装...

2021-03-22 12:32:46 1224 2

原创 Redis的RDB和AOP总结

1.RDB和AOF是什么其实很多答案技术官网都有写而且写的非常详细,官网地址:https://redis.io/topics/persistenceRDB (Redis Database):按指定的时间间隔执行数据集的时间点快照AOF (Append Only File):记录服务器接收的每个写入操作,采用仅追加方式将命令写入AOF文件,服务启动时再重新执行AOF文件中的命令以达到恢复数据的目的。使用与Redis协议本身相同的格式记录命令,具有很好的可读性。当日志太大时,Redis可以在后台

2021-03-21 14:44:37 1460 2

原创 git常用命令总结

目录1.Git操作图2.本地操作命令 2.1 git init:初始化本地库 2.2git status:查看当前状态 2.3git add [file name]:将工作区的“新建/修改”添加到暂存区 2.4git commit -m "commit message"[file name]:将文件从暂存区到本地库3.日志操作命令 3.1git log:查看历史提交记录 3.2git log --pretty=o...

2021-03-19 12:20:20 526

原创 JDBC总结

目录1.JDBC概述 1.1 什么是JDBC 1.2JDBC体系结构 1.3 JDBC编写步骤2.获取数据库连接 2.1 Driver接口实现 2.2数据库连接方式举例3.使用PreparedStatement实现CRUD操作 3.1操作和访问数据库 3.2使用Statement操作数据表的弊端 3.3使用PreparedStatement 实现增、删、改操作 3.4使用Pre...

2021-03-10 21:58:05 290

原创 MySQL索引面试题汇总

目录1.前言2.索引数据结构分类3.二叉查找树4.红黑树(自平衡二叉查找树)5.B-Tree6.B+Tree 6.1 B+Tree概述及特点 6.2B+Tree存放数据示例 6.3 MyISAM存储引擎索引实现 6.4InnoDB底层存储引擎索引实现7.索引有关面试题解析 7.1 什么是索引 7.2 索引的分类 7.3 索引的优势 7.4 索引的劣势...

2021-03-07 16:46:58 7113 6

原创 MySql逻辑架构及查询过程

目录1.MySQL逻辑架构图 1.1 连接层 1.2 服务层 1.3 引擎层 1.4 存储层2.MySQL查询过程 2.1 客户端/服务端通信协议 2.2 查询缓存 2.3语法解析和预处理 2.4查询优化 2.5查询执行引擎 2.6返回结果给客户端1.MySQL逻辑架构图 1.1 连接层 Con...

2021-03-05 22:56:22 563

MySQL知识点思维导图工程文件

MySQL知识点思维导图工程文件

2022-03-23

MySQL知识点思维导图PDF

MySQL知识点思维导图PDF

2022-03-23

JavaSE基础知识总结思维导图工程文件

JavaSE基础知识总结思维导图工程文件

2022-02-22

一键关闭Win10自动更新.zip

一键关闭Win10自动更新,亲测有效!

2019-09-13

数据结构课程设计-三叉链表赫夫曼解码译码器

做课设的时候发现网上资料没有用三叉链表动态实现赫夫曼树译码器的资料,自己写了一份,方便大家学习,完全由个人创作。

2017-12-15

空空如也

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

TA关注的人

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