自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Springboot国际化

*** Locale解析器,默认解析器为AcceptHeaderLocaleResolver,拦截Accept-Language请求头* 这自定义拦截Language请求头*/@Override= null){}else{@Override。

2025-07-05 11:32:22 252

原创 SpringSecurity学习

2025-06-30 22:25:44 102

转载 什么是oauth2

OAuth 2.0 是一套关于。

2025-06-29 22:50:23 23

原创 SpringSecurity6-oauth2-三方gitee授权-授权码模式

【代码】SpringSecurity6-oauth2-三方gitee授权-授权码模式。

2025-06-29 22:40:54 364

原创 SpringSecurity6-授权-动态权限

完成上述配置后,登录,访问资源,如果登录用户的角色没有对应的资源路径权限,则报403,否则正常访问。

2025-06-29 21:54:03 329

原创 SpringSecurity6(认证-前后端分离)

本文介绍了基于SpringBoot 3.2.8和Spring Security 6.1.11的认证系统设计方案。系统使用JDK17开发,包含验证码过滤、密码加密认证、记住我功能、并发会话控制、Redis会话存储、CSRF防护等安全特性。配置文件中详细设置了数据库连接池、Redis会话存储等参数。通过自定义PasswordEncoder支持多种加密算法(如MD5、BCrypt等),并使用@EnableRedisIndexedHttpSession实现Redis持久化会话管理。系统整合了MybatisPlus、

2025-06-23 22:29:04 333

原创 Spring AI Alibaba集成阿里云百炼大模型

【代码】Spring AI Alibaba集成阿里云百炼大模型。

2025-05-18 13:20:48 596

原创 Spring AI Alibaba集成阿里云百炼大模型应用

阿里云百炼推出的和,有效解决了大模型在处理私有领域问题、获取最新信息、遵循固定流程以及自动规划复杂项目等方面的局限,显著拓展了其应用范围。

2025-05-18 13:10:43 758

原创 JDK10新特性

花费少许的编译时间来节省稍后相当长的执行时间,JIT这种设计的确增加不少效率,但是它并未达到最顶尖的效能,因为某些极少执行到的Java指令在JIT编译时所额外花费的时间可能比interpreter解释器执行时的时间还长,针对这些指令而言,整体花费的时间并没有减少。简单说,在某些特定情况下,可以只暂停指定的线程,而不是全部线程,比如偏向锁撤销时,不需要暂停所有线程,并遍历找到持有偏向锁的线程,判断线程是否进行撤销,在线程本地握手的方式中,可以只暂停持有偏向锁的线程,并执行回调,检查线程是否撤销偏向锁。

2025-05-10 16:48:28 817

原创 Debezium嵌入式连接postgresql封装服务

环境:JDK8,Debezium1.94,postgresql12。

2025-04-05 13:32:16 438

原创 Debezium介绍

Debezium是一个开源的分布式平台,用于捕获数据库的变更事件(CDC,Change Data Capture)。它能够实时捕获数据库中的行级更改,并将这些更改作为事件流发送到消息中间件(如 Apache Kafka)。Debezium 构建于 Apache Kafka Connect 之上,提供了一组 Kafka Connect 兼容的连接器,每个连接器都针对特定的数据库管理系统(DBMS)。高可用。

2025-03-22 10:40:42 1343

原创 Kafka集成Debezium监听postgresql变更

下载postgres的插件:https://debezium.io/documentation/reference/2.7/install.html。使用命令启动 Kafka Connect 服务(单机kafka)pgsql修改配置文件:postgresql.conf。进入kafka配置目录配置连接器(单机kafka)2.7版本支持postgresql12数据库。

2025-03-22 09:16:15 603

原创 centos7安装单机kafka

kafka-console-consumer.sh 使用 consumer 控制台订阅 topic。kafka-console-producer.sh 使用 producer 控制台发布 event。下载安装包并进行解压:kafka_2.12-2.2.1.tgz。验证kafka是否启动成功。

2025-03-22 09:08:21 524

原创 centos7安装单机zookeeper

下载安装包并解压:apache-zookeeper-3.4.14-bin.tar.gz。

2025-03-22 09:06:35 361

原创 centos7搭建postgresql12主从

主从搭建192.168.159.101 node1 主库(读写)192.168.159.102 node2 备库(只读)

2025-03-22 09:02:31 335

原创 centos7安装postgresql12

配置centos用户信息,pgsql不能在root用户启动。修改pg_hba.conf。

2025-03-22 08:57:10 201

原创 Springboot集成Debezium监听postgresql变更

2.application.properties配置。1.创建springboot项目引入pom。

2025-03-22 08:53:22 587

原创 docker搭建elk

2.ES配置elasticsearch.yml3.logstash配置logstash.ymllogstash.conf:4.kibana配置kibana.yml:

2025-03-12 19:57:48 648

原创 检查表达式是否合法

【代码】检查表达式是否合法。

2025-02-05 21:18:16 140

原创 JDK9新特性

a ==> 1b ==> 2$7 ==> 3...> }| 已创建 方法 sum(int,int)$9 ==> 3...> int a;...> int b;...> }...> }...> }| 已创建 类 Calc$12 ==> 3。

2025-02-05 21:09:34 1314

原创 CompleteFuture详解

如上图所示,这里描绘的是一个业务接口的流程,其中包括CF1/CF2/CF3/CF4/CF5共5个步骤,并描绘了这些步骤之间的依赖关系,每个步骤可以是一次RPC调 用、一次数据库操作或者是一次本地方法调用等,在使用CompletableFuture进行 异步化编程时,图中的每个步骤都会产生一个CompletableFuture对象,最终结果 也会用一个CompletableFuture来进行表示。传递时使用指定线程池中的线程,当不传递时,会使用ForkJoinPool中的共用线程池 CommonPool。

2024-12-30 19:37:38 2361 1

原创 三种SPI机制的了解及使用

实现DBApi接口,并且在resources下创建META-INF/services/全限定接口名称文件,这里如上图所示,然后文件中写实现类的全限定类名。SPI的本质就是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类型。注意模块之间需要对应引用依赖,比如:db-api需要被其他三个模块引入,main-project要引入两个实现模块依赖。方式实现SPI机制,可以在不修改源码的前提下,提供Spring框架的扩展性。Spring SPI沿用了Java SPI的设计思想,采用。

2024-10-27 11:18:06 911

原创 SpringBoot自定义starter

resources -> META_INF -> spring -> org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件。resources -> META_INF -> spring.factories # SpringBoot 2.7以前写法,2.7版本废除,3版本后终止使用。访问结果:http://localhost:8081/test/starter。2.7~3.0之间,两种方式共存。

2024-10-26 11:11:47 410 1

原创 策略模式结合Spring使用

【代码】策略模式结合Spring使用。

2024-05-30 23:21:24 527

原创 Vue父子组件传值

父组件传递过来的值:num:{{num}} 减加子组件的值:{{num}}

2024-05-23 20:44:42 506

原创 mybatis批量提交工具类

【代码】mybatis批量提交工具类。

2024-05-21 22:39:59 434

原创 mybatis代码生成器

【代码】mybatis代码生成器。

2024-05-21 22:29:58 322

原创 Jenkins的快速入门

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub。

2024-03-22 00:06:42 2016

原创 数据结构-栈-表达式运算

【代码】数据结构-栈-表达式运算。

2024-03-10 22:31:10 613 1

原创 数据结构-稀疏数组

当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。

2024-03-10 10:06:42 484

原创 mysql死锁排查

查看等待锁的事务:SELECT * FROM information_schema.INNODB_LOCK_WAITS。查看正在锁的事务:SELECT * FROM information_schema.INNODB_LOCKS。查看正在运行的事务:SELECT * FROM information_schema.INNODB_TRX。查看事务:SELECT * FROM information_schema.INNODB_TRX。查看线程列表:show processlist;表中数据:student。

2024-01-04 22:29:21 1608

原创 Reactor线程模型详解

在目前的线程模型中一种是传统阻塞的I/O模型,一种是Reactor线程模型。

2023-12-13 23:54:54 1705

原创 IO零拷贝

Linux 2.1 开始提供了 sendFile 函数,其基本原理是:数据根本不经过用户态,直接从 Kernel Buffer 进入到 Socket Buffer,并且由于和用户态完全无关,这就避免了一次上下文切换。因此零拷贝通常是站在操作系统的角度看,即整个过程中,内核缓冲区之间是没有重复数据的。由此可见,复制的操作太频繁,共有 2 次 DMA 拷贝、2 次 CPU 拷贝、4 次上下文切换。紧接着发生第二次数据拷贝,即从内核缓冲区拷贝到用户缓冲区,同时发生一次内核态到用户态的上下文切换。

2023-12-13 23:19:42 1001

原创 Linux的五种IO模型

不管使用何种方式,好处都是应用进程不会阻塞,可以继续执行,只要等待信号通知数据准备好被处理了、数据准备好被读取了。操作系统内核收到用户进程发起的请求后,从 I/O 设备读取数据到 kernel buffer 中,再将 buffer 中的数据拷贝到用户进程的地址空间,用户进程获取到数据后返回给客户端。和信号驱动 I/O 模型的区别是前者内核告诉我们何时可以开始一个 I/O 操作,而后者内核会告诉我们一个 I/O 操作何时完成。众所周知,出于对 OS 安全性的考虑,用户进程是不能直接操作 I/O 设备的。

2023-12-13 23:08:50 1475 1

原创 基于ReentrantLock详解AQS源码

7.上述流程可以说是公平锁的抢占方式,每次都是队列头节点的下一个节点抢到锁,严格排队枪锁,如果是非公平锁,则在唤醒head的下一个节点进行抢锁时,其他线程也可以在此期间抢锁,如果被其他线程抢到锁,则head的下一个节点还是会重新挂起,然后新的抢占锁的线程会重新关联head节点。6.线程三释放锁,把AQS中的state设置为0,清空持有锁线程,队列中的节点还是存在一个头节点,这个节点的内容都是空的,只要头节点创建出来了就一直存在,持有锁的线程会关联头节点。

2023-12-12 23:49:40 1468

原创 HashMap JDK1.8源码详解

首先将高16位无符号右移16位与低十六位做异或运算。如果不这样做,而是直接做&运算那么高十六位所代表的部分特征就可能被丢失 将高十六位无符号右移之后与低十六位做异或运算使得高十六位的特征与低十六位的特征进行了混合得到的新的数值中就高位与低位的信息都被保留了 ,而在这里采用异或运算而不采用& ,| 运算的原因是 异或运算能更好的保留各部分的特征,如果采用&运算计算出来的值会向1靠拢,采用|运算计算出来的值会向0靠拢。int类型的数值是4个字节的,右移16位异或可以同时保留高16位于低16位的特征。

2023-09-10 22:31:14 248

原创 ConcurrentHashMap jdk1.8源码详解

原理:cas + synchronized + 数组 + 链表 + 红黑树。用来标识旧hash表扩容后占位的临时节点,即当前桶扩容迁移成功的标识。

2023-09-07 20:38:38 719

原创 shiro快速入门

基本上涉及到用户参与的系统都需要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。权限管理包括用户身份认证和授权两部分,简称认证授权,对于需要访问控制的资源用户首先经过身份认证,认证过后用户具有该资源的访问权限即可访问。身份认证,就是判断一个用户是否为合法用户的处理过程,最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。

2023-08-02 23:19:11 296

原创 RabbitMQ快速入门

……导入依赖:发送消息模块:接收消息模块:发送消息:接收消息:Fanout类型的交换机:发送消息:接收消息:Topic类型的交换机:发送消息:接收消息:总结:Topic类型的交换机也是消息一对多的一种交换机类型,它和fanout都能实现一个消息同时发送给多个队列;fanout更适用于使用在一个功能不同的进程来获取数据,例如,手机App中的消息推送,一个App可能会还有很多个用户来进行安装,然后他们都会启动一个随机的队列来接收者自己的数据;Topic更适用于不同功能模块来接收同一个消息,

2023-08-02 23:10:49 2479 1

原创 Hibernate Validator

Null 被注释的元素必须为 null@NotNull 被注释的元素必须不为 null@AssertTrue 被注释的元素必须为 true@AssertFalse 被注释的元素必须为 false@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值。

2023-08-02 22:46:59 713

空空如也

空空如也

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

TA关注的人

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