自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 springsecurity+jwt实现前后端分离认证授权

Spring Security 中文文档Spring Security是一个Java框架,用于保护应用程序的安全性。它提供了一套全面的安全解决方案,包括身份验证、授权、防止攻击等功能。Spring Security基于过滤器链的概念,可以轻松地集成到任何基于Spring的应用程序中。它支持多种身份验证选项和授权策略,开发人员可以根据需要选择适合的方式。此外,Spring Security还提供了一些附加功能,如集成第三方身份验证提供商和单点登录,以及会话管理和密码编码等。

2024-09-20 03:01:33 197

原创 Caffenie配合Redis做两级缓存,Redis发布订阅实现缓存一致更新

在项目中。一级缓存用Caffeine,二级缓存用Redis,查询数据时首先查本地的Caffeine缓存,没有命中再通过网络去访问Redis缓存,还是没有命中再查数据库。具体流程如下。

2024-09-10 03:09:53 578

原创 日志logback.xml

【代码】日志logback.xml。

2024-09-10 02:02:00 339

原创 接口幂等的方案

接口幂等的方案和代码落地

2024-09-09 08:58:44 387

原创 SpringBoot中利用EasyExcel+aop实现一个通用Excel导出功能

主要功能:可以根据前端传递的参数,导出指定列、指定行。

2024-09-08 04:55:50 464

原创 Synchronized、Reetrantlock

任意对象都可以作为同步锁。同步方法的锁:静态方法(类名.class)、非静态方法(this)同步代码块:自己指定,很多时候也是指定为this或类名.class。

2024-09-05 17:12:23 916

原创 CyclicBarrier屏障锁

使用场景。

2024-09-05 01:57:29 133

原创 CountDownLatch使用场景和方法

倒计时锁:主要的使用场景就是一个线程等待多个线程执行完毕后再执行。

2024-09-05 01:56:11 394

原创 CompleteableFuture异步编程框架

有3个被调用的service(MemberService,OrderService,ProductService),每个service中有个search方法,分别耗时5,4,3秒钟。有一个查询需求,需要分别调用这3个service的search方法,获取对应会员、订单、产品列表。消费上一次调用的结果,返回另一个结果。示例:等待memberService和orderService都结束后,再执行后面的异步操作。不管上一次调用的结果是什么,没有参数,没有返回值。等待所有并行任务执行后,再执行后面的操作。

2024-09-05 01:22:41 931

原创 idea新建父工程和添加导入新模块的步骤

如何在idea中新建一个父工程,然后在父工程下新建多个微服务模块或者java模块?

2024-09-04 04:26:47 606

原创 MQ专题:消息积压相关问题和解决思路

一、如何发现消息出现了堆积二、常见的原因及解决方案三、消息出现了大量堆积,如何解决四、建议

2024-09-03 05:03:29 199

原创 幂等的通用实现方案

幂等指多次操作产生的影响只会跟一次执行的结果相同,通俗的说:某个行为重复的执行,最终获取的结果是相同的,不会因为重复执行对系统造成变化。数据库操作的幂等性,4种种方案都可以,第3种方案算是一种通用的方案,可以在项目框架搭建初期就提供此方案,然后在组内推广,让所有人都知晓,可避免很多幂等性问题。方案4大家也要熟悉这个处理过程。

2024-09-03 04:53:58 755

原创 MQ专题:顺序消息落地方案

投递消息的顺序和消费消息的顺序一致。比如生产者按顺序投递了1/2/3/4/5 这 5 条消息,那么消费的时候也必须按照1到5的顺序消费这些消息。

2024-09-03 02:54:08 840

原创 MQ专题:消费幂等性

消费者从mq中拉取消息后,mq需要将消息从mq中删除,这个删除有2种方式方式1:MQ自动删除消费者从mq中拉取消息后,mq立即就把消息删掉了,此时消费者还未消费。这种可能会有问题,比如消费者拿到消息后,消费失败了,但是此时消息已经被mq删除了,结果会导致消息未被成功消费。方式2:消费者通知MQ删除(也叫手动ack)消费者从mq拉取消息后,做业务处理,业务处理完成之后,通知mq删除消息,这种就叫做消费者手动ack。

2024-09-02 16:19:33 678

原创 git命令

【代码】git命令。

2024-09-02 15:14:41 439

原创 Linux基础(包括centos7安装、linux基础命令、vi编辑器)

如果没有获取到虚拟机的ip地址,就是由于启动服务器是未加载网卡,导致ip地址初始化失败而造成的,就应该修改网络初始化配置,设定网卡在系统启动时初始化。软链接(也称为符号链接或symlink)是指一个特殊类型的文件,它包含了另一个文件或目录的路径信息。cat:用来 查看文件内容、创建文件、文件合并、追加文件内容 等功能;1、在敲出文件/目录/命令的前几个字母后,按下tab键会自动补全,再按一下 tab 键,系统会提示可能存在的命令;-f :持续追踪文件变化,既可以动态地查看文件的最新内容。

2024-09-01 18:23:05 1721

原创 docker安装配置、docker命令

docker build:基于dockerfile构建自定义镜像docker save:将镜像保存为压缩文件docker load:将压缩文件加载为镜像docker push:将镜像推到仓库部署一个Java应用的步骤:1、准备一个linux服务器2、安装JRE并配置环境变量3、拷贝JAR包4、运行JAR包指令说明示例FROM指定基础镜像ENV设置环境变量,可在后面指令使用COPY拷贝本地文件到镜像的指定目录RUN执行Linux的shell命令,一般是安装过程的命令。

2024-09-01 16:16:25 2274

原创 ping不通本地虚拟机的静态ip的解决方案

把nat设置中的网关ip改成Gateway = 192.168.200.2。把子网ip改为192.168.200.0 前三部分相同,第四部分是0。记住Gateway = 192.168.200.2。

2024-09-01 16:08:34 368

原创 MQ专题:延迟消息的通用方案

方案不依赖于MQ中间件,依靠MySQL和DelayQueue解决,不管大家用的是什么MQ,具体是RocketMQ、RabbitMQ还是kafka,本文这个方案你都可以拿去直接使用,可以轻松实现任意时间的延迟消息投递。由于延迟消息的时间不确定,若要达到实时性很高的效果,也就是说消息的延迟时间是不知道的,那就需要轮询每一秒才能确保消息在指定的延迟时间被处理,这就要求job需要每秒查询一次db中待投递的消息。此方案对中间件有依赖,不同的MQ实现是不一样的,若换成其他的MQ,方案要重新实现。

2024-08-30 00:15:44 1044

原创 MQ专题:事务消息的实现方式

step5失败了,其他步骤都成功,此时业务执行成功,但是消息投递失败了,此时需要有个job来进行补偿,对于投递失败的消息进行重试。这个job负责从本地t_msg表中查询出状态为0记录或者失败需要重试的记录,然后进行重新投递到MQ。对于投递失败的,采用衰减的方式进行重试,比如第1次失败了,则10秒后,继续重试,若还是失败,则再过20秒,再次重试,需要设置一个最大重试次数,最终还是投递失败,则需要告警+人工干预。

2024-08-29 13:44:51 178

原创 sql语句练习(自用)

2.使用子查询的第二个和第三个查询可能会较慢,尤其是当 student 表和 score 表很大时,因为对于每个学生记录,数据库都需要执行两次独立的子查询。3.EXISTS 和 NOT EXISTS 通常比 IN 和 NOT IN 更高效,因为它们在找到第一个匹配的行后就会停止搜索。左外连接:左表全部都有,左右两表能不能匹配是看 on 条件的左右两边 ,而不是看表在sql语句中的前后顺序。end as 列别名。1.使用 JOIN 的第一个查询通常在处理大量数据时更有效,因为数据库可以更高效地执行连接操作。

2024-08-22 01:19:55 1114

原创 类似评论、省市区这种具有层次结构的数据表怎么设计?

业务功能模块设置一个给每个数据设置一个parent_id这样,所有评论和回复都放在一张表里再举一个例子,比如。

2024-07-10 04:41:49 345 1

原创 本地缓存caffeine cache

略。

2024-07-10 03:54:01 153 2

原创 entity类用到的注解

修饰类@EqualsAndHashCode(callSuper = true)修饰属性@ApiModelProperty(value = “更新时间区间的结束时间”, example = “2022-7-18 19:52:36”)@DateTimeFormat(pattern = DateUtils.DEFAULT_DATE_TIME_FORMAT) // yyyy-MM-dd HH:mm:ss@DateTimeFormat 和 @JsonFormat 注解详解

2024-07-10 03:40:12 265

原创 PageDTO<T>,PageQuery,BeanUtils,CollUtils的封装

【代码】PageDTO<T>,BeanUtils,CollUtils的封装。

2024-07-10 03:07:29 488

原创 项目开发知识-高并发优化方案

解决高并发问题从宏观角度来说有3个方向:其中,水平扩展和服务保护侧重的是运维层面的处理。而提高单机并发能力侧重的则是业务层面的处理,也就是我们程序员在开发时可以做到的。因此,本章重点讨论如何通过编码来提供业务的单机并发能力。

2024-07-03 04:34:58 932

原创 使用DelayQueue实现延迟任务

有时候,我们需要在当前时间点往后延迟一定时间,再执行任务,该怎么实现呢?

2024-07-03 04:27:25 764

原创 Spring相关注解

写到方法上,表述 当前类的构造方法执行后执行: 初始化对象后执行。写到方法上,表述 当前类(正常关闭容器)销毁前执行该方法。

2024-07-03 03:42:57 137

原创 序列化Serializable

如果不implements Serializable,会报错,除非RedisTemplate<String,Object>配置了各种序列化器。举例Redis直接传输对象。

2024-07-03 00:28:44 316

原创 Springboot整合RedisTemplate以及业务工具类示例

docker安装Redis参考我另一篇博客。

2024-07-02 16:34:36 714

原创 mybatisplus的lambdaQuery()使用案例

查询分页为了用方式一,可以在service里注入别的service,但是注意要防止循环依赖,可以用mapper获取自己的mapper,

2024-06-27 06:47:22 446

原创 lambda_函数式编程_stream流

【代码】stream流使用案例。

2024-06-27 06:34:57 131

原创 springboot异常产生原因

改成了IdType.ASSIGN_ID,使用雪花算法自动生成,成功解决。原因是Model类中设置为自增,数据库中并没有设置。

2024-06-27 05:33:25 180

原创 时间获取工具DateUtils封装

【代码】时间获取工具DateUtils封装。

2024-06-27 04:47:32 210

原创 lombok相关注解

@Accessorshttps://blog.csdn.net/sunnyzyq/article/details/119992746@EqualsAndHashCode(callSuper = false)https://blog.csdn.net/xiebeixb/article/details/105070222

2024-06-27 04:23:39 250

原创 springboot项目requestId设置、统一responsebody封装以及切面

【代码】springboot项目requestId设置、统一responsebody封装以及切面。

2024-06-27 04:00:27 983

原创 idea常用快捷键

ctrl + shift + a 全局搜索

2024-06-24 05:24:44 146 1

原创 Feign远程调用丢失请求头的问题

【代码】Feign远程调用丢失请求头的问题。

2024-06-22 05:18:44 148

原创 validator参数校验

可以通过捕获参数校验产生的异常,直接返回前端校验信息。log . error("请求参数校验异常 -> MethodArgumentNotValidException, {}" , msg);log . error("请求参数异常 -> ConstraintViolationException, {}" , e . getMessage());

2024-06-14 03:01:30 405

原创 springboot集成swagger、knife4j及常用注解

1.2 添加Swagger配置关键 RequestHandlerSelectors.basePackage(“com.gz”)通常情况下,swagger配置放在common模块中,别的模块需要集成swagger时,只需要引入common模块就行,因此需要将SwaggerConfiguration类在META-INF/spring.facories文件里进行配置,这样才能将SwaggerConfiguration类注册进IOC容器。但是如果SwaggerConfiguration类在启动类的同级目录或子

2024-06-13 20:37:51 789

Skywalking仪表盘使用

Skywalking仪表盘使用

2024-06-07

双写一致性设计方案-TCP模式/MQ模式

MySQL主从同步机制 Canal实现数据同步原理 数据双写一致性设计方案-TCP模式/MQ模式

2024-05-17

freemaker,minio

freemaker,minio

2024-05-13

消息中间件kafka详细教程md文档

Kafka 是一个分布式流媒体平台,类似于消息队列或企业消息传递系统。kafka官网:http://kafka.apache.org/

2024-05-13

空空如也

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

TA关注的人

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