自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(160)
  • 资源 (15)
  • 问答 (3)
  • 收藏
  • 关注

原创 Idea使用问题解决汇总&高效插件

idea修改maven默认配置不生效Idea插件IDEA字节码学习查看神器介绍

2020-08-21 23:32:30 222

原创 OAuth2.0和JWT

阮一峰的通俗的讲解了OAuth 2.0 的设计思路和运行流程简单来说,OAuth(开放授权)是一种开放标准,用于允许用户在不暴露其凭据(如用户名和密码)的情况下,让第三方应用程序访问其资源(如用户的照片、视频、联系人列表等)。OAuth 主要用于授权,而不是身份验证。如果想看真实的应用场景,可以看文档。

2024-09-07 22:09:11 314

原创 业务解耦-Spring事件监听的三种实现方式

Listener代码如下:定义了两个加@EventListener注解的方法,这两个方法都是监听的UserEvent,所以用@Order注解定义了顺序,数字越小优先级越高,越优先执行。:整个调用链同样都是同步执行的,如果某个Listener抛出了异常,那么后续的Listener也不会继续执行,而发布事件所在的方法也会受影响抛出异常。:整个调用链都是同步执行的,如果某个Listener抛出了异常,那么后续的Listener也不会继续执行,而发布事件所在的方法也会受影响抛出异常。这个属性用处还是比较大的,

2024-08-30 23:16:58 887

原创 AI资料汇总

通俗的讲了大预言模型的一些概念,短时间内让你对大预言模型概念有基本了解。

2023-12-02 15:39:53 205

原创 git合并错分支还原技巧

如果合并错了,但是还没有push,还原的简单粗暴的方式就是把合并后的分支删了。本文主要讲的是git合并错分支并且已经push了的还原方式比如:开发分支future_1,合并到项目组共同使用的分支develop上了,并且已经push了,后来才发现,此时需要还原develop分支。

2023-10-27 00:10:39 3920

原创 JAVA删除excel指定列

deleteColumns(InputStream excelStream, List delColumnTitleList)方法实现了批量删除列的逻辑。首先POI没有提供删除列的API,所以就需要用其他的方式实现。先将该列所有值都清空,然后将该列之后的所有列往前移动。

2023-10-25 18:26:20 3031

原创 Mac下使用idea和maven命令打包都失败的解决

突然某天,项目打包失败,会提示org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project ******: Compilation failure网上查的解决方式都无法解决,比如:maven配置的jdk版本和项目的不一致;maven-c

2022-06-15 11:27:47 778 1

原创 BigDecimal返回前端强制保留小数点后两位

首先,代码层面:DecimalFormat decimalFormat = new DecimalFormat("0.00#");BigDecimal usdAmount = new BigDecimal("1");new BigDecimal(decimalFormat.format(amount));其次,返回值上添加注解:@JsonFormat(shape = JsonFormat.Shape.STRING)private BigDecim

2022-06-09 11:52:56 1836

原创 SpringBoot使用@JsonDeserialize和@JsonSerialize优雅的处理数据格式

使用SpringMVC,在Controller中接受请求的数据,或者返回数据,有些需要做些特殊的处理。比如说,请求过来的数据是以万为单位的,但是我们需要转化为以元单位的;返回的手机号,中间四位需要以****隐藏。对于这种需求,我们可以手动进行处理。我们也可用@JsonSerialize和@JsonDeserialize来优雅的处理。@JsonDeserializer在我做的项目中,遇到这样一种情况,有一组字段,我定义的数据类型是String类型,如果选择了一个,传单个数字;如果多选了,需要用逗号.

2021-12-08 16:10:40 4009

原创 Idea快捷键英文描述

有时候我们换了电脑或者换了系统,重新安装了idea,需要重新配置成顺手的快捷键。但是只记得当时用的快捷键,却不知道应该修改哪个。下面记录下,用到可以在keymap里搜,然后换成自己习惯的快捷键。Delete Line 删除行Move Line Down 下移一行Move Line Up 上移一行Duplicate Lines ...

2021-09-17 22:04:46 348

原创 Docker部署SpringBoot项目

1.创建Spring-boot项目首先在IDE中创建一个SpringBoot项目,我这里命名为docker-demo由于只做测试用,maven只引入web依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>我这里只创建一个Con

2021-08-27 14:40:19 299

原创 手撸Spring boot stater,傻瓜都能学会

我们在使用Spring boot的时候,引入其他组件的时候,会直接引入一个个的starter的依赖。比如用redis的时候会引入spring-boot-starter-data-redis,用rocketmq的时候,会引入rocketmq-spring-boot-starter。我们也可以采用这种方式,将我们自己开发的组件做成starter,让其他程序直接引用。下面做一个demo来介绍下具体的实现方法。一.新建项目我们建一个名为 custom-spring-boot-starter 的sprin

2021-06-27 01:26:01 644 1

原创 SpringMVC自定义消息转换器其实很简单

在我们的日常开发中,作为服务端,接受到的请求数据是加密字符串。我们可能会在Controller中获取到加密的字符串,然后手动解密,类似于如下做法(用base64做样例):@PostMappingpublic void base64Post(String base64Param) throws UnsupportedEncodingException { String jsonStr = new String(Base64.getDecoder().decode(base64Param), "

2021-06-24 00:03:53 1521 2

原创 Spring事务隔离级别与设置

我们都知道数据库隔离级别有4中,分别为读未提交、读已提交、可重复读、串行化。其实Spring也可以设置数据库隔离级别。Spring事务隔离级别比数据库事务隔离级别多一个default1) DEFAULT (默认) 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。另外四个与JDBC的隔离级别相对应。2) READ_UNCOMMITTED (读未提交) 这是事务最低的隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生

2021-06-18 01:04:09 6997 1

原创 java子线程获取父线程本地变量

我们都知道ThreadLocal可以设置本地变量,之后在当前线程中获取。但是如果我们在线程中设置了变量,在子线程需要获取,该如果做呢?InheritableThreadLocal

2021-06-12 00:41:01 5019 2

转载 Redis为啥单线程效率还这么高?

redis的线程模型问这个原理性的问题,其实你可以结合着图来给面试官讲这个问题,边画图边讲最有说服力,面试官在心里会给你默默地竖起大拇指。1)文件事件处理器Redis基于Reactor模式开发了网络事件处理器,这个处理器叫做文件事件处理器 file event handler。这个文件事件处理器,它是单线程的,所以 Redis 才叫做单线程的模型,它采用IO多路复用机制来同时监听多个Socket,根据Socket上的事件类型来选择对应的事件处理器来处理这个事件。如果被监...

2021-06-06 21:48:49 1014

转载 常见网络IO模型 AND JAVA中的IO模型

常见网络IO模型UNIX 系统下, IO 模型一共有 5 种: 同步阻塞 I/O、同步非阻塞 I/O、I/O 多路复用、信号驱动 I/O 和异步 I/O。BIO

2021-06-06 21:36:47 208

原创 RestTemplate优雅的发送Get请求

在我们的项目中,如果借助RestTemplate发送Get请求,我们可以通过拼接字符串的方式将url拼接出来,比如下面这种方式:String url = "http://127.0.0.1/get?id=" + id + "&name=" + name;

2021-05-31 23:18:10 24584 6

原创 Redis实现分布式锁

在Java的并发编程中,我们通过锁,来避免由于竞争而造成的数据不一致问题。通常,我们以synchronized 、Lock来使用它。但是Java中的锁,只能保证在同一个JVM进程内中执行。如果在分布式集群环境下呢?...

2021-05-30 21:04:05 384 2

原创 Spring Bean的生命周期和钩子接口

Spring Bean的生命周期流程如下图:Spring Bean生命周期代码验证下面我们来通过代码来验证下:public class SpringBean implements BeanNameAware, BeanFactoryAware, ApplicationContextAware,

2021-05-23 19:29:54 783 2

原创 java内省-设置java bean属性的利器

反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.以上

2021-05-21 22:01:58 380 1

转载 动态代理总结,你要知道的都在这里,无废话!

前言面试题:讲讲jdk动态代理,cglib区别,实现原理,优缺点,怎么实现方法的调用的这篇文章总结你需要回答的知识点,全程少废话,怼干货,文章较长,可以点赞在看,喜欢这种文章的话,我之后也会一直分享的,硬核文章也会定期分享!同时之前的个人网站:upheart.cn/,最近两天想了想,决定继续维护着,公众号文章会定期(一般2天左右)同步更新到上去至于之所以决定继续维护,主要是为了大家工作的时候也方便学习,毕竟大家工作的时候总不能玩手机看公众号文章吧,哈哈!代理模式代理模式是一种设计

2021-05-20 20:35:12 241

原创 RedisTemplate使用序列化解析-老板再也不用担心redis存取数据有问题啦!

准备工作首先本测试项目需要引入以下依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>application.yaml也先只简单的配置些redis的必要参数server: port: 8080spring

2021-05-19 22:42:33 768 3

转载 巧用索引的利器-Mysql 5.7 的‘虚拟列’

Mysql 5.7 中推出了一个非常实用的功能虚拟列 Generated (Virtual) Columns对于它的用途,我们通过一个场景来说明假设有一个表,其中包含一个 date 类型的列`SimpleDate` dateSimpleDate 是一个常用的查询字段,并需要对其执行日期函数,例如SELECT ... WHERE dayofweek(SimpleDate) = 3 ...此时的问题是 即使对 SimpleDate 建立索引,这个查询语句也无法使用,因为日期函数阻

2021-05-18 22:47:57 178

原创 Spring项目在项目退出时做些操作

有两种方式:1.实现org.springframework.beans.factory.DisposableBean接口2.使用@PreDestroy注解两种只使用一种即可,上代码:@Componentpublic class ShutdownHandler implements DisposableBean { @Resource private UserMapper userMapper; @Override public void destroy

2021-05-17 22:39:53 348 1

原创 使用hibernate-validator进行参数校验最佳实践+校验工具类

在我们用Controller接收参数后,往往需要对参数进行校验。如果我们手写校验的话,就会有一堆的判空代码,看起来很不优雅,写起来也费时费力。下面来看下通过hibernate-validator来进行优雅的参数校验。首先需要引入依赖:<dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId>

2021-05-15 23:55:32 11477 5

原创 RocketMQ代码实战(八):事务消息(半消息)

maven依赖和配置参考RocketMQ代码实战(一):使用rocketmq-spring-boot-starter发送和消费消息首需要注意的是 事务消息(半消息) 仅仅只是保证本地事务和MQ消息发送形成整体的 原子性 ,而投递到MQ服务器后,并无法保证消费者一定能消费成功!以下代码实例实现的是创建user后再发送消息。消息生产@RestController@Slf4jpublic class RocketMqController { @Autowired priva

2021-05-14 21:02:45 4295

原创 RocketMQ代码实战(七):延时消息

延时消息使用场景:比如电商里,提交了一个订单就可以发送一个延时消息,1h后去检查这个订单的状态,如果还是未付款就取消订单释放库存。上代码:消息发送@RestController@Slf4jpublic class RocketMqController { @Autowired private RocketMQTemplate rocketMQTemplate; @GetMapping("sendMqDelay") public Object send

2021-05-08 22:15:32 2870

原创 RocketMQ代码实战(六):单向发送消息

单向发送消息这种方式主要用在不特别关心发送结果的场景,例如日志发送。上代码:@RestController@Slf4jpublic class RocketMqController { @Autowired private RocketMQTemplate rocketMQTemplate; @GetMapping("sendMqOneway") public Object sendMqOneway() { MqMessage message

2021-05-07 23:44:07 685

原创 RocketMQ代码实战(五):发送异步消息

在前面的文章中,我们都是通过rocketMQTemplate.syncSend发送的消息都是同步消息,即需要发送消息成功后才可以继续往下执行。然而在一些对响应时间敏感的业务场景,即发送端不能容忍长时间地等待Broker的响应。那么我们就需要异步消息了。上代码:@RestController@Slf4jpublic class RocketMqController { @Autowired private RocketMQTemplate rocketMQTemplate;

2021-05-07 23:29:25 3493

原创 RocketMQ代码实战(四):RocketMQ消息顺序

我们先来看这样一个程序:发送消息的代码:@RestControllerpublic class RocketMqController { @Autowired private RocketMQTemplate rocketMQTemplate; @GetMapping("sendMqRandom") public Object sendMqRandom() { List<SendResult> results = new Arra

2021-05-07 22:56:09 629

原创 RocketMQ代码实战(三):RocketMQ消费模式

RocketMQ有两种消费模式:集群消费 和 广播消费集群消费模式下,集群消费模式下,相同Consumer Group的每个Consumer实例平均分摊消息。广播消费模式下,相同Consumer Group的每个Consumer实例都接收全量的消息。我们在之前的文章中代码实战:使用rocketmq-spring-boot-starter发送和消费消息代码实战:RocketMQ发送带Tag的消息 的演示中,没有指定消费模式,默认的是集群消费模式。那本次我们来演示下,如何采用广播消费

2021-04-28 23:41:56 669

原创 RocketMQ代码实战(二):RocketMQ发送带Tag的消息

在代码实战:使用rocketmq-spring-boot-starter发送和消费消息 讲解了使用rocketmq-spring-boot-starter快速搭建生产者消费者服务,本次继续讲解 发送带Tag的消息Tag(标签)可以看作子主题,它是消息的第二级类型。同一业务模块不同目的的消息就可以用相同 Topic 而不同的 Tag来标识。比如交易消息又可以分为:交易创建消息、交易完成消息等,一条消息可以没有 Tag。1.发送消息@RestControllerpublic class Rock

2021-04-28 23:11:39 7470

原创 RocketMQ代码实战(一):使用rocketmq-spring-boot-starter发送和消费消息

通过rocketmq-spring-boot-starter可以快速的搭建rocketmq生产者和消费者服务。1.引入依赖:<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.0.4</version></dependen

2021-04-28 22:35:31 3343

原创 Windows部署RocketMQ,搭建本地学习环境

可以参考:1.使用docker安装RocketMQ也可以参考:2.RocketMQ 安装 For Windows10(完整版)但是我通过通过docker安装的,不知道什么原因,只有rockermq-console可以用,于是我就参考2部署的namesrv和broker。参考1部署的rockermq-console,本着本地学习的原则,能快速使用即可。...

2021-04-28 22:13:57 175

转载 RocketMQ中的读写队列

在创建或更改topic时,需要配置writeQueueNums和readQueueNums数,这里的读写队列有什么作用?初识rocketmq的童鞋,很容易把读写队列和读写分离混淆在一起。其实在rocketmq里是完全不同的两个概念。读写分离,是用HA机制,将一个节点的数据同步到另外一个节点,主节点多用于写(也可读),从节点只用于读。往往一主多从,通过读写分离减轻系统压力。读写队列,则是在做路由信息时使用。在消息发送时,使用写队列个数返回路由信息,而消息消费时按照读队列个数返回路由信息。在物理文件层面

2021-04-28 21:32:17 1425

原创 RocketMQ架构以及消息领域模型

部署架构官网给的架构图他主要有四大核心组成部分:NameServer、Broker、Producer以及Consumer四部分Producer消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。Producer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer获取Topic路由信息,并向提供Topic 服务的Master建立长连接,且定时向

2021-04-28 00:51:02 485

原创 Spring添加Filter

SpringMVC添加Filter基于xml配置的方式在web.xml中声明<web-app> <filter> <filter-name>Filtername</filter-name> <filter-class>Filter类</filter-class> </filter> <!-- filter中可以在init方法中通过FilterConf

2021-01-21 00:30:21 1678

原创 Spring AOP切点表达式args的两种用法:限制参数类型 and 获取目标方法参数

Spring AOP的args切点表达式有两种用法,一种是限制参数类型,另一种是获取目标方法参数。然而没见到将这两种用法放到一起讲解的,今天,笔者做了几个demo,做了对比。首先,测试代码是基于springboot做的测试。引入的spring aop的依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</

2021-01-16 15:03:50 4079 1

原创 基于注解的Spring AOP注解用法详解

AOP术语通知(Advice): 通知定义了切面是什么以及何时使用。何时:某个方法调用前?调用后?之前之后都调用?还是只是方法抛出异常时调用?Spring切面可以应用5种类型的通知:前置通知、后置通知、返回通知、异常通知、环绕通知。 连接点(JoinPoint):指的是在应用程序执行过程中能够插入的点,也就是可用位置; 切入点(PointCut):切入点是建立在连接点基础上的,例如有十个方法,每个方法的调用前后等都是连接点,但你只想在某个方法的调用前织入通知,那么就可以使用切点来定义这个方法。通过切

2021-01-16 14:31:10 1430

jdk1.8.0_162绿色版免安装版

jdk1.8.0_162绿色版免安装版 jdk1.8.0_162绿色版免安装版

2018-05-23

(64位)rabitmq3.7.4+(64位)erlang20.3

(64位)rabitmq3.7.4+(64位)erlang20.3 免于从官网下载的龟速

2018-04-20

cropper插件截图并上传

1.index.html是jQuery之家给的demo,不能上传图片。 2.cropperDemo.html和cropperWrap.js是我在此基础上做了封装,去掉了页面上不需要的东西,支持将截图上传并附带其他参数信息。 3.JieTuController伪代码.java是给的springMVC的伪代码。 4.最后我发现原本jQuery之家在example/crop-avatar目录中做了一个支持php的demo

2017-11-15

linux安装nginx所需包

包含nginx-1.9.9.tar.gz;openssl-fips-2.0.11.tar.gz;pcre2-10.20.tar.gz;pcre-8.38.tar.gz;zlib-1.2.8.tar.gz

2016-10-27

MyBatis_Generator

将features和plugins文件中的内容复制到eclipse相应的目录即可

2016-07-31

eclipse注释模板文件

eclipse注释模板文件

2016-07-21

jdk1.7绿色免安装版part2

jdk1.7绿色免安装版part2

2016-06-28

jdk1.7绿色免安装版

jdk1.7绿色免安装版part1

2016-06-28

eclipse反编译看jar源码插件jad

安装说明: 将net.sf.jadclipse_3.3.0.jar复制到eclipse安装目录下的plugins目录中;将jad.exe放入电脑中任意文件夹中比如D:\Java\jdk1.7.0\bin,在eclipse的首选项中的jadClipse的path to decompiler中配置为 D:\Java\jdk1.7.0\bin\jad.exe,即jad.exe的位置。重启eclipse即可。

2016-03-06

redis-2.8.9.zip for window 64位

redis-2.8.9.zip for window 64位

2015-12-18

redis for linux

linux下的redis

2015-12-18

js用ip和子网掩码计算网络地址

用js实现通过ip和子网掩码计算出网络地址

2015-10-28

省市区三级联动传值名称+省市区腾讯地图定位+经纬度定位

省市区三级联动,输入街道具体地址可定位到腾讯地图上,在地图上点击获取点击位置的经纬度,后台传值为省市区的名称,不是代号。

2014-12-02

mybatis-generator-core-1.3.2

如果你在myeclipse中无法在线安装mybatis generator,那么这个可以帮助你用命令行实现mybatis generator,不需要在myeclipse中安装

2014-09-13

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

TA关注的人

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