自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从List集合中每次处理固定条数的数据+计算一个数字是几位数

public void dealBySubList(List<KABillPushDto> sourList, int batchCount) { if (CollectionUtils.isEmpty(sourList)) { anlibxApi.groupNotifyIssue(sourList); return; } int sourListSize = sourList.size();

2021-08-31 19:04:24 220

原创 限流工具(令牌桶算法) RateLimiter使用 以及 注解@PostConstruct使用

我们需要限制方法被调用的并发数不能超过100(同一时间并发数),则我们可以用信号量Semaphore实现。可如果我们要限制方法在一段时间内平均被调用次数不超过100,则需要使用RateLimiter。@PostConstruct注解如果想在生成对象时完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么久无法在构造函数中实现。为此,可以使用@PostConstruct注解一个方法来完成初始化,@PostConstruct注解的方法将会在依赖注入完成后被自动调用。执行顺序为:Constru.

2021-08-31 14:19:03 436

原创 CompletableFuture使用

CompletableFuture 使用CompletableFuture可以获取多线程的返回值具体使用看代码中的注释thenAccept和thenApply区别:thenAccept 没有返回值,thenApply有返回值 // 记录值(用于存入数据库) ConcurrentLinkedQueue<FileRecordDO> recordDos = new ConcurrentLinkedQueue<>(); // 返回列表值

2021-08-31 11:15:44 272

原创 Mysql在子查询中使用order by失效问题

需求:根据表中某字段进行分组,获取每组中主键最大的一条数据错误写法:SELECT s.id,s.eid,s.insured_id FROM (SELECT id,eid,insured_id FROM ig_group_operation_log ORDER BY id DESC ) s GROUP BY eid,insured_id - 在子查询中,order by 会被优化器忽略掉,而group by分组后取的是第一条数据,由于子查询中每次都是降序排列,所以无法取到每组最大的一条数据

2021-08-30 14:09:38 1145

原创 filter实现接口验签流程+保证body请求体不丢失

接口验签流程接收前端传来的入参,并根据入参的key通过ASCII码进行排序(放到treeMap即可)将排序好的json字符创进行md5摘要。(将sign字段去除)将排序好的字符串与前端传入的sign字段进行比对,如果正确,继续,错误返回错误信息存在的问题(body丢失,所有post请求失效)从HttpServletRequest获取的InputStream读一次就无法再读了解决办法:将inputStream通过 extends HttpServletRequestWrapper进行inpu

2021-08-23 14:55:27 659

原创 查找日志,根据关键字

grep -C 10 ‘ig_bbc’ request.log | less 关键字搜索g  跳到开头G  跳到文件结尾b  往前翻一页(一屏幕)f  往后翻一页(一屏幕)

2021-08-10 14:28:06 46

原创 DateUtils常用方法

public class DateUtils { private DateUtils() { } public static final String startDay = " 00:00:00"; public static final String endDay = " 23:59:59"; private static final String[] parsePatterns = { "yyyy-MM-dd", "yyyy-MM-

2021-08-06 16:22:57 248

原创 exists ,not exists,in ,not in 区别

Sql 中 in 里面的子查询只能返回一个字段列,如果返回多个列会报错。但是in里面直接使用值是可以的exists是可以返回多个字段的,但是exists并不在意返回的字段结果,而是判断结果的真假in 与exists的区别是:in是将子查询中的查出的结果放到缓存中,然后进行遍历比对,适合in外面的表数据量大,里面的表数据量小的情况exists是外面的查询每执行一次会去子查询中获取一个boolean的结果,适合外面的表数据量小,里面的表数据量大的情况in 并不会让索引失效not ..

2021-07-08 15:13:19 169

原创 记录一次HttpServletRequest无法获取请求参数问题

记录一次HttpServletRequest无法获取请求参数问题request.getInputstream和request.getReader都无法获取参数使用如下方法可以 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRe

2021-05-12 16:37:10 1880

原创 hashmap相关(记录的比较乱,也不够深入)(有想一起学习的小伙伴可以私信我)

hash三列操作除法散列法数组初始容量16扩容因子:0.758-红黑树 泊松分布6-链表hashmap在new的时候没有创建数组(数组里面放的是entry对象,这里面含有key,value,next,hash),只是传了2个参数,一个16,一个0.75如果在初始化的时候,给的数组长度为11,13,17之类的,在put的时候,会有一个转换的过程,将他转为距离它最近的2的n次幂的值初始值设置成2的n次幂原因:1.为了方便对key的&运算,提高效率,&要比取模运算效率高,hash

2020-12-01 14:58:52 47

原创 反射学习记录(有想一起学习的小伙伴可以私信我)

反射java反射机制是在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;先创建class对象有三种方式(推荐1和2方式,因为new 一个对象后jvm会自动帮我们创建一个class对象,再new就重复了):1.class.forname(“类名”)2.类名.class3.new 类名().getClass4.如果是基本数据类型可以通过Integer.TYPE的方式类获取class对象基本方法getFields() 获取对象里面的全部属性(只能是公共的)getDeclared

2020-12-01 14:57:19 66

原创 多线程学习记录(有想一起学习的小伙伴可以私信我)

多线程学习一、线程实现的三种方式:文字表述1.继承thread类,并重写thread类中的run()2.实现runnable接口,实现runnable接口中的run(),(因为runnable接口中只有一个抽象方法,abrast run(),并且抽象接口是必须被实现的),所以也可以采用lambda表达式的写法去启动线程,比如new Thread(()->System.out.println(“线程已启动”)).start,3.通过线程池的方式二、启动线程的三种代码实现方式1.new Th

2020-12-01 14:53:25 435

原创 Vue 弹确认框

Vue 弹确认框delet(record){varthat=thisconsturitest='/dataElement/delete/'.concat(record.dataElementId)this.$confirm({//询问是或否确定删除title:'确定要删除该数据吗?',content:'该操作不可撤销',okText:'确定',...

2020-08-10 15:20:51 6318

空空如也

空空如也

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

TA关注的人

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