自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何解决接口幂等性问题?

以上操作需要有一个前提,那就是第一步加锁、和第二步判断的时候,需要有一个依据,这个就是幂等号了,通常需要和上游约定一个唯一ID作为幂等号。比如:一次支付请求,如果支付返回处理中,或者系统异常等,我们需要重试,继续调用,直到他明确的返回支付成功,或者明确的无法支付失败结果。二判这个过程,如果有操作流水,建议基于操作流水做幂等,并将幂等号作为唯一性约束,确保唯一性。想要保证幂等性,最简单的做法就是:在做业务操作之前,先查一下,判断下本次操作是否有被执行过,如果执行过,则不再执行,否则继续执行。

2023-05-25 10:56:03 941

原创 Spring Cloud Gateway学习

Spring Cloud Gateway

2023-03-09 10:44:29 2775

原创 一、策略模式的使用

策略模式的使用

2023-03-06 10:03:45 927

原创 Java 集合常见的高级操作

Java Map集合常见的高级操作

2023-02-16 10:16:47 443

原创 MySQL 加锁规则

MySQL 行锁加锁规则

2022-09-26 10:16:05 2892

原创 第一部分MySQL架构原理

Mysql 体系架构

2022-09-15 22:58:39 150

原创 HashMap中的computeIfAbsent() 方法的使用

HashMap中的computeIfAbsent() 方法的使用。

2022-08-08 09:51:09 308

原创 并发编程简介

Java 并发编程一、 并发编程三要素原子性:即一个不可被分割的操作。Java 中的原子性指:一个或多个操作要么全部执行成功,要么全部执行失败有序性:程序执行的顺序是按照代码的先后顺序执行的。cpu 有可能会对指令进行重排序可见性:当多个线程访问同一个共享变量时,如果其中一个线程对其进行了修改操作,其它线程能立即获取到最新修改的值。二、线程的五大状态对应cpu 的线程状态新建状态:通过new 创建一个线程就绪状态:调用start 方法,处于就绪状态的线程不一定立马就会执

2022-05-22 17:07:32 3229

原创 RabbitMQ 如何保证消息的可靠性以及解决幂等性

1.RabbitMQ 消息发送机制消息大致流程:消息先到达交换机然后根据指定的路由规则由交换机将消息路由到不同Queue(队列)中,由不同的消费者去消费所以要保证消息的可靠性,就是要保证:消息成功的到达交换机 Exchange消息成功的到达 Queue如果能够确认这两步,则认为消息发送成功了。如果这两步中任意一步骤出现了问题,那么消息就没有成功的投递。此时我们应该通过重试等方式去重新发送消息,多次重试之后,如果消息还是不能到达,则可能需要人工介入了。经过上面的分析,要确保消息

2022-05-17 22:53:59 1798 1

原创 redis 快速入门

初识Redis认识NoSQL认识Redis安装RedisRedis常见命令5种常见数据结构通用命令不同数据结构的操作命令Redis的Java客户端Jedis 客户端SpringDataRedis 客户端SQL和NoSQL的对比认识Redis是一个基于内存的键值型NoSQL数据库特征:键值型,支持不同的数据结构。单线程,每个命令都具备原子性低延迟,速度快(基于内存、IO多路复用)支持数据持久化支持主从、哨兵、分片集群模式支持多语言客户端..

2022-05-17 18:52:18 430

原创 MySQL 面试题

001、数据库的三大范式?原子不可分割在第一范式的基础上,非主键完全依赖于主键在第二范式的基础上,消除传递依赖002、索引有哪些优缺点?索引的优点:提高数据检索的效率索引的缺点:时间方面:a. 创建索引和维护索引需要耗费额外的时间b. 当表中的数据经常发生修改时,需要额外的时间去维护索引树空间方面:a. 索引需要额外的物理空间003、索引有哪几种类型?主键索引:数据列不允许重复,不允许为null,一个表只有一个主键唯一索引:数据列不允许重复,允许一个值为null,

2022-05-08 22:43:19 269

原创 Mysql 解决多行重复记录只保留最小的一条

CREATE TABLE `t_student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sno` int(11) NOT NULL, `name` varchar(64) NOT NULL, `sex` int(1) NOT NULL, `class_name` varchar(64) NOT NULL, PRIMARY KEY (`id`), KEY `idx_name` (`name`)) ENGINE=InnoDB AUTO_I

2022-04-01 00:31:14 914

原创 Mysql 索引

MySql 进阶教程http://www.imooc.com/wiki/mysqladvanced/indexbasic.html一、MySQL 索引1.索引的概念存储引擎用于快速查找记录的一种数据结构(排序好的快速查找)索引就是为了提高数据查询的效率。常见的索引类型主要有 B-Tree 索引、哈希索引、空间数据索引(R-Tree)、全文索引InnoDB 和 MyISAM 存储引擎可以创建 B-Tree 索引,单列或多列都可以创建索引;Memory 存储引擎可以创建哈希索引,同时也支持 B

2022-02-18 17:32:37 532

原创 Redis 学习

Redis1、为什么要用Redis?为了提升用户体验 以及 应对更多得用户高性能假如用户第一次访问数据库中的某些数据的话,这个过程是比较慢,毕竟是从硬盘中读取的。但是,如果说,用户访问的数据属于高频数据并且不会经常改变的话,那么我们就可以很放心地将该用户访问的数据存在缓存中。这样有什么好处呢? 那就是保证用户下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,所以速度相当快。不过,要保持数据库和缓存中的数据的一致性。 如果数据库中的对应数据改变的之后,同步改变缓存中相应

2022-02-18 17:31:07 205

原创 git push 到remote 远端冲突解决办法

1、本地push 到远端发生冲突2、使用git pull --rebase origin mastergit rebase 当前正在基变(我理解为git记录发生改变,远端的代码和本地的代码有冲突。)git rebase --skip 跳过git rebase --abort 放弃git rebase --continue 继续3、解决冲突,使用git diff 查看冲突的文件。如果有编译器可以用编译器解决冲突(方便点)4、重新 git add . git commit -m

2022-02-11 11:37:35 1050

原创 BeanUtils.copyProperties 遇到的坑

一、场景最近在项目中需要用到复制对象属性值的需求,第一时间就想到了BeanUtils这个方法。二、BeanUtils 分类Spring:org.springframework.beans.BeanUtils;Apache:org.apache.commons.beanutils.BeanUtils;三、使用Api都是将目标对象属性值复制到新对象属性中,但是参数有所不同,需要注意//Spring org.springframework.beans.BeanUtils;// source:源对

2022-01-21 17:58:38 978

转载 StringUtils字符串工具类左侧补齐(leftPad)、右侧补齐(rightPad)、左右两侧补齐(center)工具方法

这里使用的是org.apache.commons.lang.StringUtils;下面是StringUtils工具类中字符串左侧补齐的方法,示例如下://左侧补齐 第一个参数:原始字符串,第二个参数:字符串的长度,第三个是补充的字符串 String newStr1 = StringUtils.leftPad("oldStr1", 10, "*"); System.err.println(newStr1);//***oldStr1 //获取字符串左侧指定

2021-11-22 10:53:51 7144

原创 自定义属性校验注解

1、导入对应的依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>2、自定义逻辑校验类,需要实现ConstraintValidator<ValidateEmail,String

2021-11-08 23:13:23 291

原创 git工作中常用命令

git命令:git config --global user.email “[email protected]”git config --global user.name “yourname”git clone -b 分支名 地址测试分支:ns_ci_int_qagit pull --rebase origin ns_ci_int_qa 同步远端分支代码线上分支:dbg_add_pro_biz1、从线上分支拉取新的分支开发git addgit commit -m “YJ: xxx”gitk

2021-09-27 11:14:18 4649

原创 Linux 排查CPU 100%问题

定位问题top //查看进程中CPU占用情况显示有问题的线程(找出该进程内最耗费CPU的线程)ps -Hp pid //找到进程中的线程top -Hp pid通过jstack将问题dump到一个文件中jstack pid > pid.log4.将进程id转换为16进制因为线程快照中线程ID都是16进制存放的printf "%x\n" pid5.然后通过16进制的进程id 去 pid.log文件中查看问题...

2021-09-24 10:08:06 780

原创 Springboot 整合Swagger2

1、导入相应的依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency&g

2021-09-09 17:07:54 91

原创 spring-cloud-eureka 服务发现与注册中心

Spring-Cloud-eureka 服务发现与注册中心步骤一:创建一个Maven聚合工程。用来管理Jar包依赖 <properties> <spring.cloud.version>Hoxton.SR1</spring.cloud.version> <spring.cloud.alibaba.version>2.1.0.RELEASE</spring.cloud.alibaba.version>

2021-09-07 13:34:32 71

原创 MySql 批量插入,解决重复值问题

MySql 批量插入使用场景:在需要批量插入大量的数据,判断数据是否重复。1. insert ignore into当插入数据时,如果出现错误时,如重复数据,将不返回错误,只是以警告的形式返回。所以在使用 ignore前请确保语句本身没有问题,否则也会被忽略掉例如:insert ignore into user(name) values('admin');有可能会导致不是因为重复数据报错, 而是因为其他原因报错而被忽略掉了2. on duplicate key update注意

2021-08-20 13:38:47 5970

原创 RequestContextHolder获取requst

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse()

2021-08-18 12:01:59 374

原创 Md5加密

package com.yj.md5;import org.springframework.security.crypto.codec.Hex;import org.springframework.util.DigestUtils;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class Md5Test { public static void mai

2021-08-05 14:33:04 56

原创 BigDecimal 的使用场景

1. ROUND_DOWN(直接省略掉指定位数后的内容)BigDecimal bigDecimal = new BigDecimal(“2.125456”).setScale(2, BigDecimal.ROUND_DOWN);System.out.println(bigDecimal ); //结果:2.122. ROUND_UP(直接对指定位数后的内容做进一位处理)BigDecimal bigDecimal = new BigDecimal(“2.125456”).setScale(2, Bi

2021-08-04 16:36:20 247

转载 mysql 中 case when then .... else end 的简单使用

mysql中case when then else end的使用

2021-07-05 12:06:12 423

转载 自定义校验注解ConstraintValidator

自定义校验注解ConstraintValidator

2021-07-01 16:06:16 607

原创 JVM中常见的几种引用方式

JVM 中常见的几种引用方式1.强引用 只有所有GC Roots对象都不通过强引用 引用该对象,该对象才能被垃圾回收2.软引用(SoftReference) 仅有软引用 引用该对象时,在垃圾回收后,内存仍不足时会再次出现垃圾回收,回收软引用对象 可以配合引用队列来释放软引用自身3.弱引用(WeakReference) 仅有弱引用 引用该对象时,在垃圾回收时,无论内存是否充足,都会回收弱引用对象 可以配合引用队列来释放弱引用自身4.虚引用(PhantomReference) 必须配合

2021-05-27 09:14:51 164

原创 查看运行的java程序的几种方式

windows任务管理器可以查看进程和线程数,也可以用来杀死进程tasklist 查看进程tasklist 杀死进程linuxps -ef 查看所有进程ps -ft -p 查看某个进程(PID)的所有线程kill 杀死进程top 按照大写H切换是否显示线程top -H -p 查看某个进程(PID)的所有线程Javajps 命令查看所有Java进程jstack 查看某个Java 进程某一刻(PID)的所有线程状态jconsole 来查看某个Java 进程中线程的运行情

2021-05-06 17:15:15 3597

原创 SpringAOP里JoinPoint常用方法总结

@Before("customerJoinPointerExpression()")public void beforeMethod(JoinPoint joinPoint){ joinPoint.getSignature().getName(); // 获取目标方法名 joinPoint.getSignature().getDeclaringType().getSimpleName(); // 获取目标方法所属类的简单类名 joinPoint.getSignature().getDeclaring

2021-04-30 23:55:52 1547 1

转载 vue cli4.0 快速搭建项目详解

vue cli4.0 快速搭建项目详解搭建项目之前,请确认好你自己已经安装过node, npm, vue cli。没安装的可以参考下面的链接安装。如何安装node?安装好node默认已经安装好npm了,所以不用单独安装了。如何安装vue cli?剧场环境已搭建好,开始表演!1.进入一个目录,创建项目对应命令:vue create project-one2.我们这里选择手动配置按 ↓ 选择“Manually select features”,再按 Enter3.选择你需要的配置项通过

2021-04-25 16:43:08 290

原创 CopyUtils封装BeanUtils

package com.yj.wiki.utils;import org.springframework.beans.BeanUtils;import org.springframework.util.CollectionUtils;import java.util.ArrayList;import java.util.Collections;import java.util.List;/** * 制作CopyUtil 封装BeanUtils * @param <T> *

2021-04-25 15:54:16 270

原创 Vue 解决element ui 多文件上传的问题

业务场景:在使用vue+elementui 实现文件上传的时候,我发现官网给的组件每次都会自动上传,而且一次上传一个文件。但是我实际的业务是,一次上传多个文件。解决办法:前端代码:<template> <div><!-- 文件上传组件--><!-- :auto-upload="false" 这里设置为不自动上传 ,所以:action="BASE_API+'/upload'“ 失效--> <el-upload

2021-04-24 14:20:09 1681

原创 HttpClient post 传递参数的使用

import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpP...

2021-04-21 17:15:05 1734

原创 mybatis generator 代码生成器

一、mybatis generator 代码生成器使用1、在pom.xml文件中引入插件 <!-- mybatis generator 自动生成代码插件 --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</

2021-04-20 21:23:11 79

原创 SpringBoot集成热部署

1、添加热部署的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>2、在setting compile中设置registry...

2021-04-19 23:03:03 138

原创 学习中遇到的递归查询所有菜单的案例

数据库表设计一共五张表菜单表权限表用户表菜单权限表用户权限表数据库表之间的关系//测试代码//查询出全部的数据,tree显示import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.yj.aclservice.entity.Permission;import com.yj.aclservice.service.PermissionService;import org.junit.

2021-04-11 18:57:26 224

转载 mysql服务设置远程连接 解决1251 client does not support ..问题

转载于

2021-04-08 16:44:24 102

转载 JAVA,字符串首字母转大写(高效率)

对于将字符串的首字母转成大写,首先想到的应该是截取,转换再拼接,但是这种处理效率比较低,通过查资料(http://blog.csdn.net/zhurhyme/article/details/27951099)找到一个移动ASCII的方式来处理,这种方式的效率很高。/** * 将字符串的首字母转大写 * @param str 需要转换的字符串 * @return */ private static String captureName(String str)

2021-04-08 10:21:51 584

空空如也

空空如也

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

TA关注的人

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