- 博客(17)
- 问答 (3)
- 收藏
- 关注
原创 springdoc-swagger3,Authorization token授权头添加不生效问题
swagger3按照 swagger2的格式,添加授权请求头###但我们接口如果需要这么一个权限,使用的也是Authorization,该怎么办呢?继续查看文档,提供了一个解决方案:添加全局请求头信息只是这样还不够,还需要在每个接口上添加 Authorization 授权放行 security 参数,指定要放行的权限key打开swagger:点击授权登陆,填写 token参数...
2022-06-21 17:21:27
7043
1
原创 Integer.highestOneBit(int i)的实现逻辑与算法的深度刨析
首次看到这个方法是在JDK 1.7 HashMap 数组的扩容中,JDK8 HashMap的数组扩容,但自己也是利用了这种算法该方法的作用是找出给定int数的,小于等于该数值的2的最大次方数,比如给定9,返回8…看源码,利用两个位运算符,位移和或 。代码非常之少,那么这个算法是怎么设计出来的呢?实现依据是什么呢? publicstaticinthighestOneBit(int i) { // HD, Figure 3-1 i |= (i >> 1);
2021-10-27 10:40:45
180
原创 类型转换,异常排查java.lang.ClassCastException: java.util.HashMap$Node cannot be cast to java.lang.String
一次集合构造方法泛型省略引起的特殊的异常:java.lang.ClassCastException: java.util.HashMap$Node cannot be cast to java.lang.String这个异常意思是把map类型转string失败,map类型不能转string类型当时非常疑惑,在for循环处抛异常,而非空判断又没什么问题,很奇怪,而且参数就是个List类型啊,List中肯定是String,可报错的原因看,List中的元素是Map类型,这就奇怪了,于是查看上层调用原来是
2021-07-08 21:38:31
3063
原创 1、JAVA实现多线程的几种方式(超详细)
前言广义上讲,JAVA实现多线程有三种方式:继承Thread类、实现Runnable接口、实现Callable接口利用FutureTask类,本质上来说,最终都要通过 new Thread(…).start();来实现,也就是说最终的多线程还是由Thread类来实现的,那么其它两种方式出现的目的是什么呢?因为Thread继承的直接方式具有一定的局限性,另外两种方式在Thread的基础上利用优秀的设计模式(装饰器、适配器模式)对Thread进行了功能扩展/***构造方法, 这里并没有 Callable
2021-06-29 11:47:08
455
原创 JAVA创建软链以及软链切换出现的FileAlreadyExistsException以及软链包不存在异常原因分析记录
一、创建软链JDK java.nio.file 下Files类 提供了原生的软链创建API public static Path createSymbolicLink(Path link, Path target,FileAttribute<?>... attrs) throws IOException { provider(link).createSymbolicLink(link, target, attrs); return link;
2021-06-25 11:18:32
701
原创 maven打包提示程序包不存在,找不到符号问题排查
一直打包不成功,但是本地可以运行,看这个包,不是通过maven引入的,是单独引入的jar包,针对单独引入的包,maven打包时是查不到这个路径的,所以要在pom文件中引入jar包的工程路径,然后再打包就没问题了...
2021-05-13 13:58:31
1522
原创 字符串查找KMP算法java(理论篇)
学习KMP要先了解字符串查找的暴力算法中的显示回退实现串查找的暴力算法中的显示回退实现暴力匹配算法的缺点:文本串:ABAAAABAAAAA 模式串ABAAAAA例如给定文本串和模式串,我们发现 直到第(5次移动才找到),中间2、3、4、5次移动都是没必要的(一次移动并不是一次比较),很多时间浪费在这些无必要的中间过程中,是否有什么方法可以规避这些无效的匹配呢?ABAAAABAAAAAABAAAAA (1)ABAAAAA (2)ABAAAAA (3)
2021-04-27 15:28:09
222
原创 字符串查找算法之暴力匹配算法实现JAVA
字符串搜索暴力算法文本串:ABADEFG 模式串: ADEF(1)两个for循环实现 public static int search(String pat, String txt){ int M = pat.length; int N = txt.length; for(int i = 0; i <= N-M; i++){ int j; for(j = 0; j < M; j++){ if(txt.charAt(i+j) != pat.charAt(j)){
2021-04-26 10:38:08
171
原创 java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
上代码,claims.get(IAT)获取的是Integer对象,当时觉得 int转long,低精度转高精度,没问题啊,怎么报错了?仔细看报错,ClassCastException,class转换报错,Integer和Long属于不同类型的对象,所以转不了,方案,先把Integer转成基础类型int,再由基础类型int转为基础类型longlong iat = (long)claims.get(IAT);修改后:long iat = (long)(int)claims.get(IAT);...
2021-03-29 11:26:28
2634
原创 希尔排序的步长选择问题
希尔排序如何选择步长呢?步长的选择有什么规则呢?是随意选的吗?显然不是首先我们知道,希尔排序是插入排序的一次提升,是针对插入排序的一次优化,不管怎么选择步长,最终都有对所有数据进行一次插入排序,所以,最后一定要保证对步长为1的时候进行逻辑处理,比如10个数,步长每次缩小一半,首次步长选择就应该是 2H+1,且2H+1<= 10,所以对10个数,步长每次缩进一半,最佳就应该为 3:总结:对长度为L的集合,假设步长的每次缩进为N,那么首次步长 d的大小必须满足,N*d + 1 <= L..
2021-03-14 22:40:04
3700
原创 springboot解决跨域问题
跨域首先,跨域是浏览器的同源策略,其实对于接口来讲,有请求就有响应,也就是说即便是跨域,正确的响应已经给到了浏览器,浏览器如果发现是跨域了,就会对响应做校验,看看是否有允许跨域的设置,(请求头设置跨域字段),如果有就把响应给到请求,如果没有则丢弃掉该响应,这就是浏览器的同源策略浏览器发送请求有几种方式,**我常用第5种,比较方便,一个注解搞定** (1)、<sript src="url"/>、<a/>、<image/>等标签,该请求不存在跨域问题 (2)、ajax
2020-11-25 11:48:21
112
原创 redis+lua实现简单的分布式接口限流器
需求:以用户为单位,对接口访问进行限制,上限要求:5次/秒,环境:服务器两台,redis一台,共用首先想到NGINX配置进行限流,但NGINX原生是基于IP进行限制的,现在要基于用户,user_id参数请求头传递,时间急,采用redis方案!1、最早方案:首次访问接口,插入redis,过期时间1S,1S期间每再次访问接口就新增,并判断,该方案直接被测试不通过,原因很简单,上一秒的后500ms请求3次,下一秒的前500ms请求3次,合计请求6次,已经超标了,但该方案只记录三次,失败!2、list记录用户
2020-11-16 17:51:14
208
原创 分布式锁@Shedlock解决集群定时任务问题@Scheduled,springboot
Shedlock是个分布式锁,大致实现,就是针对多个服务,提供一个公有的存储,来维护这个锁(类似悲观锁机制)因为拿不到就跳过本次执行这个策略,所以非常适定时任务(实际上就是为定时任务设计的),先看下不加锁,模拟集群、分布式(多套服务同一套代码) @Scheduled(cron = "0/5 * * * * ?") //@SchedulerLock(name = "qpsStatisticsTask", lockAtLeastForString = "PT60S", lockAtMost
2020-09-22 12:10:54
1677
原创 List截取的几种方式
RT:为了方便先创建一个类的静态属性,并赋值,业务要求,返回n条数据,不足n条全部返回public class SubList { private static List<Dog> dogList; static { Dog dog1 = Dog.builder().age(8).build(); Dog dog2 = Dog.builder().age(2).build(); Dog dog3 = Dog.builder()
2020-08-07 13:22:10
19127
1
原创 java百分比保留小数,精度问题,最大值补偿方案
java提供了两种方式计算百分比, int a = 3; int sum = 7; DecimalFormat df =new DecimalFormat("#0.00%"); //详细看DecimalFormat API, String format = df.format((float) a / (float) sum); //float或者double都可以 //不加%后缀可以得出小数格式的百分比取值 DecimalFormat df =ne
2020-07-31 12:11:59
1687
原创 swagger参数顺序排序问题
以前开发的是接口对接前端,,发现swagger入参、出参顺序是按照参数名首字母排的,这就比较乱,比如两个时间参数startTime、endTime,即便在对象DTO中定义的挨着,到swagger-ui却差了八里地,最近做了个项目,API的,没有前端对接了,产品成型就是API接口,用户是直接查看swagger做参考的,这种乱序直接被产品打了回来,看了下swagger文档,其实固定顺序很简单,只需要在注解后面加个属性,如图...
2020-07-22 17:47:03
9433
7
原创 idea启动项目后访问,css、js加载失败的原因
如图,clone项目后出现这样的情况查看路径对比:访问成功的路径为失败的静态资源路径为:查看jsp代码开始疑惑,代码的加载也是根路径,没问题啊,这里的根路径 “” 就和tomcat的配置有关了如图,此时的根路径是 “/KYTMS_war ”,但静态资源的访问路径是 “/”,所以出现了问题此时的解决方案有在代码上把静态资源的访问加上一个路径,如果是jsp的话,方案一:动态获取...
2020-02-15 15:56:16
2970
1
空空如也
javax下的crypto和sercurity两个加密包,有啥区别?各自用在什么场地方?
2020-12-11
单例的懒汉模式为何不安全?
2018-11-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人