自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

康小庄的博客

成功不分早晚,英雄不问出路

  • 博客(162)
  • 收藏
  • 关注

原创 若依源码分析(前后端无分离版)

权限框架使用的是shiro登录代码的实现接口,同时在sys_logininfor表插入信息接口地址登出也是使用的是shiro自带的登出功能继承shiro的LogFilter类,重写preHandle方法退出的同时更新在线的用户数量,删除退出的用户信息。

2025-03-27 08:14:34 194

原创 Java如何避免ABA问题

在Java中,ABA问题通常出现在使用CAS(Compare and Swap)操作的场景中。CAS操作包含三个操作数:内存位置(V)、预期原值(A)和新值(B)。只有当内存位置V的值等于预期原值A时,才会将内存位置V的值更新为新值B。然而,如果在一个线程执行CAS操作的过程中,另一个线程将内存位置V的值从A改为B,然后又改回A,那么第一个线程在执行CAS操作时,会发现内存位置V的值仍然是A,从而误认为这个值没有发生变化,进而执行更新操作。但实际上,这个值已经发生了变化,只是又变回了原来的值。

2025-03-26 08:05:55 110

原创 RabbitMQ学习笔记

MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常 见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不 用依赖其他服务1.流量消峰 举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正 常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处

2025-03-25 15:42:53 740

原创 Mall学习——SpringSecurity的安全过滤器链

用于配置Spring Security的安全过滤器链,以及定义用户认证和授权的相关配置。通过这些配置,可以实现对不同URL路径的访问控制,以及用户的登录、注销和“记住我”等功能。),以及定义用户认证和授权的相关配置。主要是用于配置Spring Security的安全过滤器链(

2025-03-25 08:21:53 296

原创 Mall学习——登录权限

Feign远程调用Serivce。

2025-03-24 10:17:47 102

原创 Mall学习——MinIO文件上传和删除

实现了一个文件上传功能,使用了MinIO作为对象存储服务。代码首先检查指定的存储桶是否存在,如果不存在则创建,并设置只读权限。然后,将上传的文件存储到MinIO中,并返回上传成功的信息。

2025-03-21 08:08:12 126

原创 数据库版本隔离

READ COMMITTED :每次读取数据前都生成一个ReadView。

2025-03-20 13:52:49 1046

原创 若依学习——数据权限

*** 数据权限过滤注解*//*** 部门表的别名*//*** 用户表的别名*//*** 权限字符(用于多个角色匹配符合要求的权限)默认根据权限注解@ss获取,多个权限用逗号分隔开来*/

2025-03-19 08:14:00 305

原创 若依学习——系统日志

*** 自定义操作日志记录注解/*** 模块/*** 功能/*** 操作人类别/*** 是否保存请求的参数/*** 是否保存响应的参数/*** 排除指定的请求参数/*** 自定义操作日志记录注解/*** 模块/*** 功能/*** 操作人类别/*** 是否保存请求的参数/*** 是否保存响应的参数/*** 排除指定的请求参数/*** 自定义操作日志记录注解/*** 模块。

2025-03-18 09:48:51 136

原创 若依学习——数据脱敏

*** 脱敏类型/*** 姓名,第2位星号替换* 密码,全部字符都用*代替* 身份证,中间10位星号替换* 手机号,中间4位星号替换* 电子邮箱,仅显示第一个字母和@后面的地址显示,其他星号替换* 银行卡号,保留最后4位,其他星号替换* 车牌号码,包含普通车辆、新能源车辆} }/*** 脱敏类型/*** 姓名,第2位星号替换* 密码,全部字符都用*代替* 身份证,中间10位星号替换* 手机号,中间4位星号替换。

2025-03-17 08:58:30 225

原创 若依学习——检查当前请求是否为重复提交

方法用于检查当前请求是否为重复提交。它通过比较当前请求的参数和时间戳与之前存储在 Redis 缓存中的请求信息来判断是否为重复提交。isRepeatSubmit 方法通过比较当前请求的参数和时间戳与之前存储在 Redis 缓存中的请求信息来判断是否为重复提交。从 Redis 缓存中获取之前存储的请求数据,并与当前请求数据进行比较。首先尝试从请求体中获取参数,如果请求体为空,则从请求参数中获取参数,并将其转换为 JSON 字符串。如果不是重复提交,则将当前请求数据存储到 Redis 缓存中,并设置过期时间。

2025-03-14 14:58:18 248

原创 对前端限流操作(Redis版本)4种算法

滑动时间窗口算法的核心思想是通过维护一个时间窗口内的请求计数器,并根据时间窗口的滑动来判断是否接受新的请求。具体来说,当一个新的请求到达时,算法会根据当前时间点判断该请求属于哪个时间窗口,并更新对应窗口的计数器。然而,漏桶算法也存在一些缺点,例如请求延迟,可能导致某些请求的响应时间变长;滑动时间窗口算法是一种限流算法,其原理是记录一段时间内的请求数量,并根据时间窗口的滑动来判断是否接受新的请求。在网络中,漏桶算法可以控制端口的流量输出速率,平滑网络上的突发流量,实现流量整形,从而为网络提供一个稳定的流量。

2024-02-18 15:09:20 1585

原创 切面实现自动填充必备字段

采用Aop切面编程实现数据库操作自动填充必备字段。注解传入类型,来判断填充几个字段。

2024-01-30 10:05:05 226

原创 对前端限流操作(无Redis版本)

这里设置一个定时器在每秒清理一下HashMap数据,防止 HashMap 越来越大。用来获取唯一的 HashMap,其中的Value是从 1970-01-01T00:00:00Z(协调世界时,UTC)到当前时间点之间的毫秒数。的时候,解决方法是限流,前端限制请求次数。故通过后端来对前端的请求做限流次数。方法,这里采用通过Aop切面的方式来限制请求次数。获取单例的map对象存放数据。测试接口,内部方法不用纠结。查看日志,请求过于频繁了!

2024-01-30 10:02:11 637 1

原创 PO VO DTO POJO的概念

PO (Persistent Object):持久化对象,通常是表示一个实体对象,与底层数据库表的结构一一对应。PO包含了与数据库存储相关的属性和方法,一般用于ORM(对象关系映射)过程中,用于映射数据库表的行。PO通常与数据库交互,并包含了持久化操作(例如增删改查)的方法。PO的设计目标是将数据库表结构映射到对象模型中,便于进行数据库操作和持久化,通常也称作DO(Data Object)

2024-01-30 09:59:43 613

原创 Mysql高级——Mysql8一主一从,多主多从搭建

修改 /etc/hosts文件。

2023-11-03 14:04:02 786 1

原创 Mysql高级——锁(2)

可以通过performance_schema.data_locks查看事务的锁情况,和MySQL5.7及之前不同,performance_schema.data_locks不但可以看到阻塞该事务的锁,还可以看到该事务所持有的锁。在InnoDB存储引擎中,LOCK_IS,LOCK_IX,LOCK_AUTO_INC都算是表级锁的模式,LOCK_S和LOCK_X既可以算是表级锁的模式,也可以是行级锁的模式。如果是行锁结构的话,在该结构末尾还放置了一堆比特位,比特位的数量是由上边提到的n_bits 属性表示的。

2023-10-20 09:29:15 185

原创 Mysql高级——锁(1)

在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。同时锁机制也为实现MySQL的各个隔离级别提供了保证。锁冲突也是影响数据库并发访问性能的一个重要因素。所以锁对数据库而言显得尤其重要,也更加复杂。

2023-10-19 11:57:54 176

原创 Mysql高级——事务(2)

事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?事务的隔离性由锁机制实现。而事务的原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证。REDO LOG 称为重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。UNDO LOG 称为回滚日志,回滚行记录到某个特定版本,用来保证事务的原子性、一致性。

2023-10-14 21:17:57 183

原创 Mysql高级——事务(1)

命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。能看出在 MySQL 中,只有InnoDB 是支持事务的。

2023-10-12 16:26:14 92

原创 Mysql高级——数据库调优策略(1)

如果MySql的连接数达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源,将会报错。值越大,可以加载到缓存区的索引和数据量越多,需要的磁盘读写就越少,修改参数为64G,磁盘读写次数可以大幅度降低,可以充分利用内存,释放一些CPU的资源。= 8M :表示联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享。

2023-09-29 19:26:14 220

原创 Mysql高级——数据库设计规范(2)

刚刚的 ER 模型展示了电商业务的框架,但是只包括了订单,地址,用户,购物车,评论,商品,商品分类和订单详情这八个实体,以及它们之间的关系,还不能对应到具体的表,以及表与表之间的关联。我们设计的案例是电商业务,由于电商业务太过庞大且复杂,所以我们做了业务简化,比如针对SKU(StockKeepingUnit,库存量单位)和SPU(Standard Product Unit,标准化产品单元)的含义上,我们直接使用了SKU,并没有提及SPU的概念。相反,另外一边的实体通过这个关系,则只能对应唯一的一边的实体。

2023-09-26 22:18:14 345

原创 Mysql高级——数据库设计规范(1)

在关系型数据库中,关于数据表设计的基本原则、规则就称为范式可以理解为,一张数据表的设计结构需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式规范化 vs 性能为满足某种商业目标 , 数据库性能比规范化数据库更重要在数据规范化的同时 , 要综合考虑数据库的性能通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间通过在给定的表中插入计算列,以方便查询在MySQL中,反范式化(Denormalization)是一种优化技术,用于提高数据库查询性能。

2023-09-23 16:01:38 189

原创 Mysql高级——索引优化和查询优化(3)

前面已经讲过区分度,区分度越高越好。因为区分度越高,意味着重复的键值越少。

2023-09-23 16:00:08 265

原创 Mysql高级——索引优化和查询优化(2)

理解方式一:索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。理解方式二:非聚簇复合索引的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有列(即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是, 索引列+主键 包含 SELECT 到 FROM之间查询的列。

2023-09-20 21:46:50 491

原创 Mysql高级——索引优化和查询优化(1)

学员表插50万条, 班级表插1万条。保证每条数据都不同。随机产生班级编号创建往class表中插入数据的存储过程classstu创建存储过程执行存储过程。

2023-09-20 16:49:45 203

原创 Mysql高级——性能分析工具(2)

完整的访问方法如下: system , const , eq_ref , ref , fulltext , ref_or_null ,index_merge , unique_subquery , index_subquery , range , index , ALL。从执行计划的结果中可以看出,MySQL打算将s2作为驱动表,s1作为被驱动表,重点关注s1的访问方法是eq_ref ,表明在访问s1表的时候可以通过主键的等值匹配来进行访问。是访问多次s2 表后累加起来的值,大家主要关注里边儿的。

2023-09-19 15:43:46 499

原创 Mysql高级——性能分析工具(1)

字母 S 的部分代表观察(会使用相应的分析工具),字母 A 代表的部分是行动(对应分析可以采取的行动)。

2023-09-19 15:43:30 153

原创 Mysql高级——索引设计原则

① 冗余索引举例:建表语句如下我们知道,通过idx_name_birthday_phone_number 索引就可以对name 列进行快速搜索,再创建一个专门针对name 列的索引就算是一个冗余索引,维护这个索引只会增加维护的成本,并不会对搜索有什么好处。② 重复索引col2 INT,我们看到,col1 既是主键、又给它定义为一个唯一索引,还给它定义了一个普通索引,可是主键本身就会生成聚簇索引,所以定义的唯一索引和普通索引是重复的,这种情况要避免。

2023-09-17 14:24:46 179

原创 Mysql高级——索引创建和使用

MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。从功能逻辑上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。按照物理实现方式,索引可以分为 2 种:聚簇索引和非聚簇索引。按照作用字段个数进行划分,分成单列索引和联合索引。小结:不同的存储引擎支持的索引类型也不一样 InnoDB :支持 B-tree、Full-text 等索引,不支持 Hash索引;MyISAM : 支持 B-tree、Full-text 等索引,不支持 Hash 索引;

2023-09-15 11:13:16 3583

原创 Mysql高级——索引(2)

在MySQL数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。索引按照物理实现方式,索引可以分为 2 种:聚簇(聚集)和非聚簇(非聚集)索引。我们也把非聚集索引称为二级索引或者辅助索引。

2023-09-14 16:47:50 151

原创 Mysql高级——索引(1)

索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

2023-09-13 10:45:09 160

原创 Mysql高级——存储引擎

1). 连接层最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。2). 服务层第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。

2023-09-12 16:30:34 205

原创 Mysql高级——日志

错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。该日志是默认开启的,默认存放目录 /var/log/,默认的日志文件名为 mysqld.log。查看日志。

2023-09-12 15:27:22 139

原创 SpringBoot完整项目部署流程(软件安装-前后端部署)

使用XTFP工具将jdk的二进制发布包上传到Linux解压安装包解压完毕配置环境变量,使用vim命令修改文件,在文件末尾加入如下配置重新加载profile文件,使更改的配置立即生效,命令为检查安装是否成功,命令为。

2023-09-02 21:57:57 2206

原创 Docker高级——Docker Swarm集群和部署应用

这样做的弊端很明显,如果新部署的服务出现问题,原来的服务删除之后,很难恢复,那么在 Swarm mode 中到底该如何对服务进行滚动升级呢?集群,拥有了一个管理节点,下面我们继续在两个 Docker 主机中分别执行如下命令,创建工作节点并加入到集群中。,当部署服务时,集群会自动的将配置文件分发到运行服务的各个节点中,大大降低了配置信息的管理和分发难度。你可能会想到,先停止原来的服务,再使用新镜像部署一个服务,不就完成服务的 “升级” 了吗。来管理服务的配置信息,我们只需在集群中的管理节点创建。

2023-08-14 15:07:27 717

原创 Jenkins+Gitlab+Maven集成CI/CD

脚本如下/bin/bash # 查找占用7777端口的进程ID # PID=$(sudo lsof -t -i :7777 | awk 'NR==2{print $2}') PID = $( sudo lsof -t -i :7777) if [ -z " $PID " ];

2023-07-27 17:39:37 298

原创 Jenkins+Gitlab集成CI/CD

maven环境java环境git环境。

2023-07-26 09:19:31 137

原创 Jenkins安装——Yum安装和Docker安装

现在,您可以通过在Web浏览器中输入来访问Jenkins的Web界面,并按照屏幕上的指示完成Jenkins的安装设置。请注意,安装Jenkins可能需要一些时间,具体取决于您的互联网连接速度和系统配置。查看密码。

2023-07-25 09:20:41 365

原创 Docker高级——DockerCompose

Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器Docker-Compose是Docker官方的开源项目, 负责实现对Docker容器集群的快速编排。如果我需要同时部署好多个服务,难道要每个服务单独写Dockerfile然后在构建镜像,构建容器,这样累都累死了,所以docker官方给我们提供了多服务部署的工具。

2023-07-24 08:53:36 458

eladmin资源备份

eladmin资源备份

2025-03-26

尚硅谷学习rabbitmq资源

尚硅谷学习rabbitmq资源

2025-03-25

Reggie外卖整合代码

Reggie外卖整合代码

2023-09-11

CUCN所学SSM大论文总结MMS项目

CUCN所学SSM大论文总结MMS项目

2023-06-01

空空如也

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

TA关注的人

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