自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

真的愿意去努力,人生最坏的结果,也不过是大器晚成。

没有废话,没有套路,纯技术干货文章。

  • 博客(95)
  • 资源 (1)
  • 收藏
  • 关注

原创 Spring catch捕获了异常,全局事务依然回滚 @Transactional 踩坑记

问题描述serviceA 和 serviceB 均有数据库插入和修改操作且都添加了 @Transactional注解Controller层调用serviceA,serviceA调用serviceB, ServiceB内执行时抛出数据库sql异常, 并且该异常已被serviceB try catch, 所以程序依然能正常执行完成,但是最终程序正常执行完所有代码后,全局事务依然会回滚!(serviceA和serviceB都会回滚)代码示例@Servicepublic class ServiceAImp

2021-04-16 22:18:38 40

原创 消息队列RabbitMQ版 原生延迟消息实现

RabbitMQ的延迟消息实现方案如下图片来源地址:https://help.aliyun.com/document_detail/148083.html?spm=5176.11065259.1996646101.searchclickresult.44d15ab6tjjNNQ#section-rpd-mjh-kee今天,我们来实现的就是消息队列RabbitMQ版的原生延迟消息方案核心依赖<dependency> <groupId>org.springframewo

2021-03-22 19:53:03 183

转载 spring cloud feign jackson 枚举json互转 枚举json序列化/反序列化

问题描述接口返回对象中的一个属性是枚举类型,并且是以json格式输出的,如下:"status": { "name": "NOT_STARTED", "desc": "待开始", "code": 0 }该接口通过前端或者postmain正常调用都没问题,但是。。。内部服务通过feign调用就会出现异常,如下feign.codec.DecodeException: Error while extr

2020-12-22 13:22:54 306

原创 Spring Cloud Gateway + oauth2 跨域配置实现

版本说明spring-cloud-starter-gateway : 2.2.5RELEASEspring-cloud-starter-oauth2 : 2.2.4RELEASEspring-security-oauth2 : 2.3.8RELEASEnacos跨域配置spring: cloud: gateway: globalcors: add-to-simple-url-handler-mapping: true

2020-12-04 17:49:22 445

原创 spring-cloud-starter-oauth2 token自动续签

需求:希望用户的token失效不是由登录后开始计时,而是在用户超时未请求后失效(不使用refresh_token模式),也就是要在用户每次请求后去重置token的有效期。实现方案:网关gateway实现ResourceServerConfiguration.javaimport org.springframework.beans.factory.annotation.Autowired;import org.springframework.cloud.context.config.annotati

2020-11-28 17:35:15 364 1

原创 axios使用delete请求data传参示例

后台接口定义示例@DeleteMapping("/delete")@ApiOperation("批量删除接口")public Result<Boolean> delete(@RequestBody List<Long> ids) { return XXService.delete(ids);}axios请求示例axios 0.22.0 版本以下的deleteXX(row){ var ids = []; ids.push(row.id) this.$

2020-11-28 16:22:03 413 3

原创 JAVA 8 获取系统默认时区

java8获取当前时间LocalDateTime.now()java8获取时间戳// 时区写死LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));获取系统默认时区OffsetDateTime.now().getOffset()读取系统时区获取时间戳// 获取默认时区ZoneOffset zoneOffset = OffsetDateTime.now().getOffset();// 时间戳long time = Local

2020-10-24 15:56:40 268

原创 SpringBoot 2.x 集成 kafka

搭建kafka运行环境kafka安装教程(windows版)版本springboot版本2.1.12.RELEASEspringCloud版本Greenwich.SR6kafka maven依赖<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId></dependency&

2020-09-26 13:27:16 197

原创 kafka安装教程(windows版)

下载下载安装文件: http://kafka.apache.org/downloads.html解压配置修改进入config目录,修改server.properties文件把 log.dirs的值改成 ./logs启动运行以管理员身份运行cmd,进入kafka安装目录执行:.\bin\windows\kafka-server-start.bat .\config\server.properties可以看到,kafka还依赖于zookeeper安装并运行zookeeper然

2020-09-20 13:57:41 62

原创 java常用的消息队列 看完这篇你就懂了

为什么使用消息队列 ?使用场景消息队列的使用场景其实有很多,但是比较核心的有 3 个:解耦、异步、削峰解耦看这么个场景。A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃…在这个场景中,A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。A 系统要时时刻刻考虑 BCDE 四个系统如果挂了该咋办?要不要重发,要不要把消息存起来?头发都白了啊!

2020-09-13 20:05:19 284

原创 关于linux buffer/cache 看完这篇你就懂了

free 命令 与 buffer/cache在 Linux 系统中,我们经常用 free 命令来查看系统内存的使用状态。在一个 centos 的系统上,free 命令的显示内容大概是这样一个状态:-m: 显示单位为MBfree -m 各个参数的说明total 内存总数used 已经使用的内存数free 空闲的内存数shared 多个进程共享的内存总额buff/cache 缓存的大小available 可用内存 free + buff/cache什么是 buffer/cache?bu

2020-09-06 10:34:58 305

原创 java 多个单页的tif文件 合并成 一个多页的tif文件

* <!-- pdf2tif 一个tif https://www.cnblogs.com/ywjy/p/5045710.html --> * <!--<dependency> * <groupId>com.sun.media</groupId> * <artifactId>jai_codec</artifactId> * <ve.

2020-08-20 23:06:18 308

原创 java 实现 PDF 转 TIF 【彩色压缩版】

maven依赖<!-- pdf2tif 彩色版 --> <dependency> <groupId>com.sun.media</groupId> <artifactId>jai_codec</artifactId> <version>1.1.3</version> </dependency>

2020-08-09 12:58:05 148

原创 java 实现 PDF 转 TIF【黑白版】

先看效果原pdf文件11页 473kb转换后变成11个tif文件 共503kb实现代码maven依赖<dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>1.8.9</version> <scope>compile</scope>&

2020-08-01 16:29:35 372 6

原创 阿里云OSS批量根据文件url获取字节数组集合

定义接口byte[] readFile(String url);List<byte[]> batchReadFile(List<String> urls);依赖包import com.aliyun.oss.OSS;import com.aliyun.oss.OSSClientBuilder;import com.aliyun.oss.model.CannedAccessControlList;import com.aliyun.oss.model.DeleteObj

2020-07-26 13:46:49 260

原创 使用navicat实现sql server数据库到mysql数据库的定时数据同步任务

工具准备navicat创建数据传输任务最好使用administrator账户登录电脑打开navicat新建目标数据库mysql的连接,然后打开数据库在表那一栏鼠标右键选择导入向导选择需要同步的数据表如果是单次导入可以选择第一种,覆盖导入选择最后一种,定时导入选择下图中的添加或更新(记得前一步需选择一个唯一主键)点击保存下来,也可以点击开始调试OK后在保存下图就是刚刚保存的传输任务创建定时计划设置计划任务,也就是定时规则,大家根据自己的需求去设置即可检查计划任

2020-07-19 16:31:15 800

原创 解决TortoiseGit拉取阿里云效代码仓库出错 fatal: protocol error: bad line length character

TortoiseGit默认的改为git默认的

2020-07-19 15:31:10 420 2

原创 nacos新增自定义配置文件服务启动读取不到

1、配置文件检查仔细检查nacos上的配置文件格式内容等是否有错误或者格式不正确。2、服务读取配置是否添加spring: cloud: nacos: config: extension-configs: - data-id: xxx.yaml group: ${xxx-nacos-group} refresh: true3、配置类是否添加相关注解@Data@Configuration@

2020-07-12 12:31:26 1173

转载 异步计算FutureTask类

FutrueTask概念FutureTask一个可取消的异步计算,FutureTask 实现了Future的基本方法,提供 start cancel 操作,可以查询计算是否已经完成,并且可以获取计算的结果。结果只可以在计算完成之后获取,get方法会阻塞当计算没有完成的时候,一旦计算已经完成,那么计算就不能再次启动或是取消。一个FutureTask 可以用来包装一个 Callable 或是一个runnable对象。因为FurtureTask实现了Runnable方法,所以一个 FutureTask可以提交

2020-07-05 19:32:25 83

转载 数据结构算法 - 红黑树

红黑树是一棵自平衡的二叉搜索树,因此在学习红黑树之前,我们需要回顾一下之前所学的知识二叉搜索树和平衡二叉树。1、二叉搜索树二叉搜索树又叫二叉查找树或者二叉排序树,它首先是一个二叉树,而且必须满足下面的条件:1)若左子树不空,则左子树上所有结点的值均小于它的根节点的值;2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值3)左、右子树也分别为二叉搜索树二叉搜索树示例2、平衡二叉树二叉搜索树解决了许多问题,比如可以快速的查找最大值和最小值,可以快速找到排名第几位的值,快速搜索和

2020-06-28 21:43:20 159

转载 MySQL四种事务隔离级别解析

经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢?本文就帮大家梳理一下。MySQL 事务本文所说的 MySQL 事务都是指在 InnoDB 引擎下,MyISAM 引擎是不支持事务的。数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做,其实不是没做,是可能做了一部分但是只要有一步失败,就要回滚所有操作,有点一不做二不休的意思。假设一个网购付款的操作,用户付款后要涉及到订单状态更新、扣库存以及其他一

2020-06-12 17:36:42 146

转载 OOM(Out Of Memory)详解

什么是OOMOOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,来源于java.lang.OutOfMemoryError。看下关于的官方说明:Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector. 意思就是说,

2020-06-04 17:43:38 143

转载 缓存穿透、缓存击穿、缓存雪崩详解

一、缓存处理流程前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。二、缓存穿透描述:缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。解决方案:接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-valu

2020-06-03 15:44:29 105

转载 乐观锁、悲观锁原理解析

并发控制当程序中可能出现并发的情况时,我们就需要通过一定的手段来保证在并发情况下数据的准确性,通过这种手段保证了当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。这种手段就叫做并发控制。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。没有做好并发控制,就可能导致脏读、幻读和不可重复读等问题。我们常说的并发控制,一般都和数据库管理系统(DBMS)有关。在DBMS中的并发控制的任务,是确保在多个事务同时存取数据库中同一数据时,不破坏事务的隔离性和统一性以及

2020-05-22 08:46:00 164

转载 redis底层数据结构

1、概述相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-value数据库。在《Redis设计与实现》这样描述:Redis 数据库里面的每个键值对(key-value) 都是由对象(object)组成的:数据库键总是一个字符串对象(string object);数据库的值则可以是字符串对象、列表对象(list)、哈希对象(hash)、集合对象(set)、有序集合(s

2020-05-21 17:22:15 154

转载 数据结构 BTree和B+Tree详解

B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来。二叉查找树二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值。如下图所示就是一棵二叉查找树,对该二叉树的节点进行查找发现深度为1的节点的查找次数为1,深度为2的

2020-05-21 10:18:19 128

转载 深入理解mysql的底层实现

MySQL 的常用引擎1. InnoDBInnoDB 的存储文件有两个,后缀名分别是 .frm 和 .idb,其中 .frm 是表的定义文件,而 idb 是数据文件。InnoDB 中存在表锁和行锁,不过行锁是在命中索引的情况下才会起作用。InnoDB 支持事务,且支持四种隔离级别(读未提交、读已提交、可重复读、串行化),默认的为可重复读;而在 Oracle 数据库中,只支持串行化级别和读已提交这两种级别,其中默认的为读已提交级别。2. MyisamMyisam 的存储文件有三个,后缀名分别是 .

2020-05-20 16:56:44 256

转载 Mysql索引失效

首先,复习一下索引的创建:普通的索引的创建:CREATE INDEX (自定义)索引名 ON 数据表(字段);复合索引的创建:CREATE INDEX (自定义)索引名 ON 数据表(字段,字段,。。。);删除索引:DROP INDEX 索引名;以下通过explain显示出mysql执行的字段内容:id: SELECT 查询的标识符. 每个 SELECT 都会自动分配一个唯一的标识符.select_type: SELECT 查询的类型.table: 查询的是哪个表

2020-05-20 11:42:25 88

原创 springCloudFeign使用示例

框架版本<spring-boot.version>1.5.15.RELEASE</spring-boot.version><spring-cloud.version>Edgware.SR4</spring-cloud.version>1、添加pom依赖<!--feign--><dependency> <...

2020-05-03 10:58:44 89 1

原创 springCloud集成分布式事务LCN 4.1.0

集成配置步骤:1、LCN源码下载下载地址:https://github.com/codingapi/tx-lcn/releases下载编译OK后将该项目当做一个微服务集成到你的微服务项目中2、LCN入驻将下载源码中的该项目以微服务的形式集成到你的微服务项目中替换配置文件原配置文件...

2020-04-29 23:09:13 678

原创 使用sh脚本实现自动化部署配置教程

适用项目:传统单体项目、微服务项目等先说下最终达到的效果,最终本地只需要执行一行命令,即可实现自动打包上传到服务器并自动重启,并且因为上传到服务器后会立马自动重启,所以影响到测试的时间也就分把钟了。可以极大程度的缩短服务更新时间,简化发包流程,从而提高开发效率。配置步骤:1、本地依赖安装Maven、jdk、git、PuTTYMaven 和 jdk 大家电脑上都是有的 ,git的话需要安...

2020-04-27 09:50:39 255

原创 linux(centos7.4)安装 zookeeper

安装步骤1、下载zookeeperwget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.13.tar.gz2、解压tar -zxvf zookeeper-3.4.13.tar.gz解压之后,在zookeeper目录下创建以下目录:cd zookeeper-3.4.13mkdi...

2020-04-26 18:04:09 55

原创 linux(centos7.4)安装tomcat

安装步骤:1、下载tar包tomcat7tomcat8tomcat9tomcat102、上传至服务器然后解压推荐使用weget直接下载tar -zxvf apache-tomcat-7.0.103-src.tar.gz3、指定安装目录mkdir /usr/local/tomcatcp -r /home/apache-tomcat-7.0.103-src /usr/loca...

2020-04-20 23:17:42 74

原创 SVN配置Apache的http协议访问

配置步骤:1、安装httpdyum install -y httpdsystemctl enable httpdsystemctl start httpd2、安装的svn模块yum install mod_dav_svn3、查看ls /etc/httpd/modules/ | grep svnmod_authz_svn.somod_dav_svn.so4、创建SVN仓...

2020-04-09 12:14:35 96

原创 linux(centos7.4)搭建svn服务器

搭建步骤:1、yum安装subversionyum install subversion2、查看安装版本,检查安装是否成功svnserve --version3、查看安装位置rpm -ql subversion4、创建版本库创建用于存放版本库的目录 mkdir -p /usr/local/svnData创建svn版本库svnadmin create /usr/loca...

2020-03-31 13:48:39 72

原创 linux(centos7.4)安装Redis

安装步骤1、检查是否有redis yum 源yum install redis如安装成功则直接进入步骤3否则需下载fedora的epel仓库yum install epel-release2、安装redisyum install redis3、安装完毕后,使用下面的命令启动/停止 redis服务启动redisservice redis start停止redisser...

2020-03-25 12:21:50 63

原创 linux(centos7.4)安装Rabbitmq

安装步骤:1、下载Erlang 和 rabbitmq的 rpm包注意Erlang 和 rabbitmq 的版本有对应关系要求rabbitmq的rpm包下载(网页打开后拉到最下面)https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.15erlang 的 rpm包下载https://github.com/rabbitm...

2020-03-19 12:43:09 60

原创 linux(centos7.4)安装Nginx

安装步骤:一. gcc 安装安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:yum install gcc-c++二. PCRE pcre-devel 安装PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使...

2020-03-10 10:44:05 101

原创 mysql非常用命令笔记

一、连接数据库不借助数据库管理软件(如Navicat等软件),通过dos连接mysql服务器,然后操作数据库.连接数据库通用格式:mysql -P 端口号 -h mysql主机名或ip地址 -u 用户名 -p解释: (-P大写P代表端口,小写p代表密码,h代表主机名或ip,u代表user用户)” mysql -P 3306 -h 192.168.1.101 -u root -p1.本地...

2020-03-05 13:28:33 97

原创 linux(centos7.4)安装mysql5.7

安装方式:yum方式安装安装步骤:一、安装MySQL YUM资源库 yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm二、安装MySQL 5.7yum install -y mysql-community-server三、启动MySQL和开启MySQL的自动启动...

2020-03-01 12:04:39 91

SpringBoot集成Redis-Demo

原创不易,感谢支持!

2020-08-06

空空如也

空空如也

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

TA关注的人 TA的粉丝

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