- 博客(8)
- 收藏
- 关注
原创 Collectors.toMap你真的会用吗?
按照常规思维,往一个map中put一个已存在的key,会把该key对应的value值覆盖,然而通过实践发现,对于java8中Collectors.toMap并不是这样,而是直接抛出了异常。日常开发中,常常会使用到StreamAPI,平时没有注意该处存在的“坑”的话,上线生产环境后,很有可能会出现某类值收集时出现重复值,从而导致生产事故发生。即,如果old值不为空,则执行传进来的方法,即throwingMerger(),抛出异常。因为传入的 HashMap::new,所以查看HashMap的merge方法,
2023-01-11 14:31:03
954
1
原创 二倍均值法计算红包金额
二倍均值法:假设红包总金额是X,红包个数为Y,每个红包的最低金额是0.01元那么每次抢到的红包金额的范围在 (0.01, (X/Y) *2) 之间。即:每次运算时,在0.01 ~ (剩余金额 / 剩余个数 * 2) 的范围内随机取值也就是最大值为:0~100的随机值 / 100*(剩余金额 / 剩余个数 * 2)
2023-01-11 10:00:00
1698
原创 ThreadPoolExecutor 线程池工作原理
1.运行的线程数小于 corePoolSize,立即创建线程执行任务2.运行的线程数大于或等于 corePoolSize,则任务放入队列3.队列满了,而且正在运行的线程数量小于maximumPoolSize,则创建非核心线程立刻运行任务4.队列满了,而且正在运行的线程数量大于或等于maximumPoolSize,那么线程池会抛出异常,走拒绝策略5.线程完成任务时,会从队列中取下一个任务执行6.当线程无事可做,超过 keepAliveTime 时,若线程数大于 corePoolSize,则回收
2023-01-10 17:24:21
200
原创 Spring Bean 的生命周期
Spring Bean 的生命周期:1.扫描元数据信息封装成BeanDefinition存入BeanDefinitionMap 2.遍历Map 3.实例化对象 4.属性填充 5.Aware接口的实现 6.初始化前 7.初始化 8.初始化后 9.销毁
2023-01-10 14:41:55
98
原创 Redis为什么这么快
Redis 存储为什么那么快?1.完全基于内存 2.数据结构简单,是专门设计的数据结构 3.单线程 4.多路复用I/O 5.底层模型不同
2023-01-10 11:40:19
89
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人