- 博客(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
248
原创 限流工具(令牌桶算法) RateLimiter使用 以及 注解@PostConstruct使用
我们需要限制方法被调用的并发数不能超过100(同一时间并发数),则我们可以用信号量Semaphore实现。可如果我们要限制方法在一段时间内平均被调用次数不超过100,则需要使用RateLimiter。@PostConstruct注解如果想在生成对象时完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么久无法在构造函数中实现。为此,可以使用@PostConstruct注解一个方法来完成初始化,@PostConstruct注解的方法将会在依赖注入完成后被自动调用。执行顺序为:Constru.
2021-08-31 14:19:03
491
原创 CompletableFuture使用
CompletableFuture 使用CompletableFuture可以获取多线程的返回值具体使用看代码中的注释thenAccept和thenApply区别:thenAccept 没有返回值,thenApply有返回值 // 记录值(用于存入数据库) ConcurrentLinkedQueue<FileRecordDO> recordDos = new ConcurrentLinkedQueue<>(); // 返回列表值
2021-08-31 11:15:44
316
原创 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
1230
原创 filter实现接口验签流程+保证body请求体不丢失
接口验签流程接收前端传来的入参,并根据入参的key通过ASCII码进行排序(放到treeMap即可)将排序好的json字符创进行md5摘要。(将sign字段去除)将排序好的字符串与前端传入的sign字段进行比对,如果正确,继续,错误返回错误信息存在的问题(body丢失,所有post请求失效)从HttpServletRequest获取的InputStream读一次就无法再读了解决办法:将inputStream通过 extends HttpServletRequestWrapper进行inpu
2021-08-23 14:55:27
741
原创 查找日志,根据关键字
grep -C 10 ‘ig_bbc’ request.log | less 关键字搜索g 跳到开头G 跳到文件结尾b 往前翻一页(一屏幕)f 往后翻一页(一屏幕)
2021-08-10 14:28:06
74
原创 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
285
原创 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
199
原创 记录一次HttpServletRequest无法获取请求参数问题
记录一次HttpServletRequest无法获取请求参数问题request.getInputstream和request.getReader都无法获取参数使用如下方法可以 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRe
2021-05-12 16:37:10
2006
原创 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
68
原创 反射学习记录(有想一起学习的小伙伴可以私信我)
反射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
83
原创 多线程学习记录(有想一起学习的小伙伴可以私信我)
多线程学习一、线程实现的三种方式:文字表述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
466
原创 Vue 弹确认框
Vue 弹确认框delet(record){varthat=thisconsturitest='/dataElement/delete/'.concat(record.dataElementId)this.$confirm({//询问是或否确定删除title:'确定要删除该数据吗?',content:'该操作不可撤销',okText:'确定',...
2020-08-10 15:20:51
6376
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人