自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在使用Swagger-Knife4j时,如何配置Oauth2认证功能?

在使用Swagger-Knife4j时,配置OAuth2认证功能可以通过以下步骤实现。

2024-07-02 15:27:37 390

原创 Java中的锁:类型,比较,升级与降级

同时,对于特定的应用场景,适当调整锁的类型也是必要的。最后,使用高级的并发工具如StampedLock和ReadWriteLock可以在某些情况下提供更好的性能,但也需要对它们的使用方法和适用场景有深入的理解。Java提供了多种类型的锁,包括内置的synchronized关键字,ReentrantLock类以及更高级的并发工具,如StampedLock和ReadWriteLock。锁的升级和降级是指在某些情况下,为了提高程序的性能或实现特定的同步需求,需要调整所使用的锁的类型。一、Java中的锁类型。

2023-10-30 17:11:42 427

原创 Java中的锁:类型,比较,升级与降级

在Java中,锁的升级与降级是指在使用过程中对锁的变更。具体来说,锁升级是指将一个低级别的锁升级为高级别的锁,而锁降级是指将一个高级别的锁降级为低级别的锁。Java提供了多种类型的锁,包括内置的synchronized关键字、ReentrantLock、ReadWriteLock等。本文将详细介绍这些锁的类型,比较它们的性能和适用场景,并探讨锁的升级与降级。它提供了一种更加灵活的锁控制方式,与synchronized关键字相比,ReentrantLock具有更多的功能和配置选项。

2023-10-30 17:10:15 222

原创 原子类:Java并发编程的利器

原子类是Java并发编程中的重要工具,它们提供了一种简单、高效和可靠的解决方案来解决多线程并发问题。通过使用原子类,我们可以确保数据的一致性和原子性,提高程序的性能和可靠性。未来,随着技术的不断发展和优化,原子类将会更加成熟和完善,为Java并发编程提供更加丰富的选择和支持。本文将介绍Java中的原子类及其应用。这些类中的每个方法都是原子的,这意味着它们在并发环境中不会出现数据竞争的问题。原子类通过内部使用硬件级别的原子指令,确保了操作的原子性。原子类是Java提供的一组实现原子操作的类,包括。

2023-10-30 17:07:52 213

原创 Java中的队列:各种类型及使用场景

在Java中,队列是一种重要的数据结构,用于存储按特定顺序排列的元素。队列在多线程环境中特别有用,因为它们可以用来解决并发问题。

2023-10-30 17:05:31 388

原创 CompletableFuture:Java 8中的强大异步编程工具

CompletableFuture是Java 8引入的一个重要特性,它为Java程序员提供了一个强大的工具来处理异步编程。本文将介绍CompletableFuture的基本概念、使用方法和最佳实践,并通过示例进行演示。

2023-10-30 17:00:26 90

原创 CompletableFuture与线程池:Java 8中的高效异步编程搭配

在Java 8中,CompletableFuture和线程池的结合使用为程序员提供了一种高效、灵活的异步编程解决方案。本文将深入探讨CompletableFuture和线程池结合使用的优势、原理及实际应用案例,帮助读者更好地理解并掌握这一技术。

2023-10-30 16:59:28 582

原创 EasyExcel:轻松实现Excel多Sheet导出

easyexcel 多sheet导出

2023-10-25 14:59:54 2770

原创 spring服务接入elk

spring接入elk

2023-02-23 14:18:24 168

原创 @Valid 手工嵌套验证

@Valid 手工嵌套验证

2023-02-02 14:26:25 301

原创 synchronized 和 和 ReentrantLock 的区别

synchronized 和 和 ReentrantLock 的区别

2022-11-01 16:31:46 133

原创 volatile 关键字的作用

volatile

2022-11-01 16:26:12 613

原创 多线程异步 分布式 RedissonClient redis锁

springboot多线程异步 , 分布式锁 redisson

2022-06-02 18:41:14 1134

原创 rabitmq 实践

yml配置spring: rabbitmq: host: offline-tech.com port: 30061 username: admin password: admin connection-timeout: 5000ms publisher-confirms: true publisher-returns: true listener: simple: acknowledge-mode: manua

2022-01-29 11:56:24 1755

原创 springboot consul Feign 使用

添加依赖org.springframework.cloud:spring-cloud-dependencies:Greenwich.SR3‘org.springframework.cloud:spring-cloud-starter-consul-discovery’,‘com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2.1.2.RELEASE’‘io.github.openfeign:feign-okhttp’,‘org.s

2022-01-29 10:23:20 852

原创 logback-spring kafka日志输出到kafka

<?xml version="1.0" encoding="UTF-8"?> ${applicationName} <!-- ConsoleAppender 控制台输出日志 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleApp

2022-01-28 11:46:29 2533

原创 mysql 数据库时间和当前时间不一致

1.mysql的时区设置不正确:首先,查看下mysql中使用的时区show variables like ‘%time_zone%’;测试查看下时间select now();这个应该是没有设置时区1 通过命令修改设置为 东八区set global time_zone = ‘+8:00’;重启连接之后,查看show variables like ‘%time_zone%’;2 修改配置文件找到my.ini, 在mysqld 下增加 default-time-zone = ‘+8:

2021-11-09 11:38:50 9823

原创 索引失效场景,sql查询优化

索引失效场景where使用了or负向查询 != 《》,不大于,不小于,is null ,is not null隐式类型转换,函数,表达式操作计算内置函数,like通配符联合索引中,where中索引列违背最左匹配原则MySQL优化器的最终选择,在sql语句中写明强制走某个索引如果MySQL估计使用全表扫描要比使用索引快,则不使用索引索引列不能参与计算,保持列“干净”sql 优化查询SQL尽量不要使用select *,而是select具体字段。索引列不能参与计算,保持列“干净”尽量的

2021-11-05 11:27:29 245

原创 MYSQL是如何解决幻读的

在MYSQL的RR隔离级别下, MYSQL也解决了幻读的问题。 主要是依靠两个特性解决的, 一个是MVCC(一致性快照) 一个是间隙锁。MVCC如何解决幻读beginselect count() from table where id >10… 一系列的其他操作 …select count() from table where id >10commit上面的sql 语句如果在执行的过程中(中间的一系列操作中), 其他的事务新增了 id>10 的记录, 这个sql

2021-11-05 11:13:32 268

原创 MyBatisSystemException No constructor found in com.***** matching

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: No constructor found in com.***** matching [java.lang.Long, java.lang.String, java.lang.Long, java.sql.Timestamp, java.sql.Timestamp, java.sql.Time

2021-10-27 15:54:33 1091

原创 Springboot 注解总结(包含lombok 注解,swagger注解)

一、启动注解 @SpringBootApplication@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFi

2021-10-27 15:17:38 685

原创 SpringBoot跨域请求处理方法 总结

在项目开发过程中不可避免的就是跨域请求,以下下是跨域请求处理的几种方法总结1. 直接采用SpringBoot的注解@CrossOrigin Controller层在需要跨域的类或者方法上加上该注解即可。2. 处理跨域请求的Configuration继承WebMvcConfigurerAdapter或者实现WebMvcConfigurer接口例如:CrossOriginConfig.javaimport org.springframework.context.annotation.Config

2021-10-26 18:04:08 286

原创 Guava RateLimiter 实现 API 限流,为每个方法设置不同的限流

Guava提供的RateLimiter可以限制物理或逻辑资源的被访问速率,咋一听有点像java并发包下的Samephore,但是又不相同,RateLimiter控制的是速率,Samephore控制的是并发量。RateLimiter的原理类似于令牌桶,它主要由许可发出的速率来定义,如果没有额外的配置,许可证将按每秒许可证规定的固定速度分配,许可将被平滑地分发,若请求超过permitsPerSecond则RateLimiter按照每秒 1/permitsPerSecond 的速率释放许可。引入依赖:mav

2021-10-21 16:35:01 855

原创 MySQL与Oracle的隔离级别

一、事务和隔离级别事务的概念:事务是把对数据库的一系列操作都看做一个整体,要么全部成功,要么全部失败,利用事务我们可以保证数据库的完整性,事务具有原子性。  隔离级别:隔离级别定义了事务与事务之间的隔离距离。脏读(dirty read):当一个事务读取另一个事务未提交的修改时,产生脏读。  不可重复读(nonrepeated read):同一查询在同一事务中多次进行,由于其他事务提交所做的修改,导致每次返回的结果不同,此时发生不可重复读。  幻读(phantom read):同一查询在同一事务中

2021-06-03 16:54:54 2031

原创 jmap和jhat

jmap -heap PID比如Eden区总容量、已经使用的容量、剩余的空间容量,两个Survivor区的总容量、已经使用的容量和剩余的空间容量,老年代的总容量、已经使用的容量和剩余的容量。但是这些信息大家会想了,其实jstat已经有了啊!对的,所以一般不会用jmap去看这些信息,毕竟他信息还没jstat全呢,因为没有gc相关的统计。使用jmap了解系统运行时的对象分布其实jmap命令比较有用的一个使用方式,是如下的:jmap -histo PID这个命令会打印出来类似下面的信息:这个就

2021-06-03 16:51:43 306

原创 jstat

平时我们对运行中的系统,如果要检查他的JVM的整体运行情况,比较实用的工具之一,就是jstat他可以轻易的让你看到当前运行中的系统,他的JVM内的Eden、Survivor、老年代的内存使用情况,还有Young GC和Full gC的执行次数以及耗时。通过这些指标,我们可以轻松的分析出当前系统的运行情况,判断当前系统的内存使用压力以及GC压力,还有就是内存分配是否合理。下面我们就一点点来看看这个jstat工具的使用。jstat -gc PID运行这个命令之后会看到如下列,给大家解释一下:S0C:

2021-06-03 16:38:15 8387

原创 cpu 飙高,死循环,死锁排查

cpu 飙高,死循环,死锁top命令查找死锁的进程通过jstack 进程id > show.txt 命令把进程的 堆栈信息输出到文件top -p 进程id -H 查找死锁具体的线程的 idprintf “%x” 线程id 打印出线程id 的 16位less show.txt 根据线程的16进制 id 查看文件死锁信息在文件最后的内容...

2021-06-03 15:48:38 271

原创 mysql MVCC+间隙锁解决幻读-可重复读

mysql的隔离级别读未提交 -》 读提交 -》 可重复读 -》 串行化InnoDB默认级别为可重复读,可重复读会产生问题 就是幻读。什么是幻读?不可重复读侧重于update这种操作,同一条数据前后读起来不一样的情况,幻读侧重于insert delete这种操作,前后两次select 数据的数量会发生变化举个例子:事务A 第一步 select * 第二步 update 所有字段 第三步 再次select *事务B 执行了insert 一条语句幻读第一种

2021-06-02 16:55:05 497

原创 Websocket业务对接

项目对接完Websocket后,实现业务对接,通过后台业务对接,推送相对应的业务消息给客户端,客户端处理对应业务的消息系统通告业务对接示例发送的消息是一个json串(1)调用WebSocket 服务@Resourceprivate WebSocket webSocket;(2)方法中调用cmd为业务类型,例如topic表示系统消息,user表示用户消息,可以自定义cmd类型,客户端根据返回的cmd类型处理不同的业务响应全体发送//创建业务消息信息JSONObject obj = ne

2020-11-05 18:13:21 677

原创 spring boot WebSocket的集成

WebSocket的集成jeecg boot 集成 websocket 步骤1 maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId></dependency>2 WebSocket配置类import org.springframe

2020-11-05 18:10:29 146

原创 com.sun.tools不存在

需要修改pom.xml修改为以下即可<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6.0</version> <scope>system</scope>

2020-10-19 09:51:38 2185

原创 swagger 全局token设置

Swagger是一个很方便的东东,但正常使用时,我们的接口需要登陆才能访问的。即登陆时,要传一个登陆后的token才能访问的。那这个怎么设置,才可以让所有接口都允许登陆后访问呢。解决办法如下:@EnableSwagger2@Configurationpublic class SwggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGE

2020-10-16 14:18:39 2029

原创 shiro session过期设置

在sessionManager 中设置过期信息。time-server.globalSessionTimeout是从配置文件yml中设置的 @Bean(name = "sessionManager") public DefaultWebSessionManager sessionManager(@Value("${time-server.globalSessionTimeout:3600...

2020-02-25 11:11:23 982

原创 vue登录和token处理

vue 使用用户名和密码成功登录后,获取返回结果header中的token信息,存储到cookie中,发送请求时从cookie中获取tokenauth.jsimport Cookies from 'js-cookie'const TokenKey = 'vue_admin_template_token'export function getToken() { return Cook...

2020-02-25 11:07:47 1225

原创 No mapping for GET /swagger-ui.html

SpringBoot使用Swagger2本来可以使用的,后来出现的异常No mapping for GET /swagger-ui.html,这个异常其实不用怎么解释,说白了就是找不到了。遇到这种情况请先查找,最近你所添加继承了【WebMvcConfigurationSupport】的类如果继承了WebMvcConfigurationSupport,则在配置文件在中配置的相关内容会失效,需要重...

2020-02-25 08:54:57 31019 17

原创 ORACLE WITH AS

ORACLE WITH AS 用法With查询语句不是以select开始的,而是以“WITH”关键字开头可认为在真正进行查询之前预先构造了一个临时表,之后便可多次使用它做进一步的分析和处理WITH Clause方法的优点增加了SQL的易读性,如果构造了多个子查询,结构会更清晰;更重要的是:“一次分析,多次使用”,这也是为什么会提供性能的地方,达到了“少读”的目标。第一种使用子查询的方...

2020-01-15 18:16:04 297

原创 SQL中join方式

在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图、物化视图等联结)。SQL JOIN其实是一个逻辑概念,像NEST LOOP JOIN、 HASH JOIN等是表连接的物理实现方式1.内连接:INNER JOIN注意:inner join 可以使用简写join方式,如下所示,但是建议使用inner join。2.外链接:OUTER JOIN1....

2020-01-15 18:11:51 1458

原创 Java 集合底层原理剖析(List、Set、Map、Queue)

ListArrayList 的属性、数据结构、add/set/remove 具体流程LinkedList 的属性、数据结构、get 具体流程、Java 8 对它的改进Vector 的属性、数据结构、特征、使用场景Stack 的属性、数据结构、实现原理CopyOnWriteArrayList 和 CopyOnWriteArraySet 的数据结构、特征、实现原理ArrayList 和 V...

2020-01-15 17:57:18 375

原创 穿梭框

1. style.css@charset "utf-8";body, ul, dl, dd, dt, ol, li, p, h1, h2, h3, h4, h5, h6, textarea, form, select, fieldset, table, td, div, input {margin:0;padding:0;-webkit-text-size-adjust: none}h1, ...

2019-07-31 17:10:54 552

原创 spring boot打war包

1.修改pom文件把打包方式改为war<packaging>jar</packaging>2.去掉pom中spring-boot-starter-web中内嵌的tomcat搜索tomcat选中右键exclude内嵌的tomcat3.再添加tomcat支持包如下 <!-- tomcat支持包--> <dependency&g...

2019-07-31 17:05:29 101

空空如也

空空如也

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

TA关注的人

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