随手记
文章平均质量分 52
倾尽全力终无悔
这个作者很懒,什么都没留下…
展开
-
MyBatis 操作动态表、动态列,数据迁移
MyBatis 操作动态表、动态列,数据迁移原创 2023-05-19 18:02:34 · 505 阅读 · 0 评论 -
hutool工具并发使用 Sftp sftp = new Sftp(sshHost, sshPort, sshUser, sshPass) 的坑
hutool 使用 Sftp 的一些坑原创 2022-12-22 16:12:52 · 5271 阅读 · 0 评论 -
前端 input 输入框限制只输入整数值,输入不显示其他字符
最初是在网上搜索layui input框输入整数,网上查出来的结果基本上都是一样,使用的都是onkeyup,onkeyup是按键弹起时触发,因此在输入的时候会先显示字符后再清除,换成oninput后就能解决这个问题,如果要IE支持,还需要加上onpropertychange。oninput 是 Chrome 支持的,onpropertychange 是 IE 支持的。...原创 2022-08-16 11:18:04 · 1432 阅读 · 0 评论 -
Spring Boot、Spring Cloud、Spring Cloud Alibaba 各个版本的对应关系
Spring Boot、Spring Cloud、Spring Cloud Alibaba 各个版本的对应关系原创 2022-07-14 23:00:41 · 294 阅读 · 0 评论 -
限购(一人一单)问题解剖及解决方案
目录限购问题问题:活动产品,每个用户购买不能超过1个?解决方案:Java锁(单机)解决方案:分布式锁(集群)Redis实现分布式锁问题?setnx锁超时释放使用 redisson 来实现分布式锁总结限购问题限购问题是生活中很常见的,如某某手机限购不能超过几台,商品搞活动时每人购买不能超过1件…这种问题看似很简单,但一个处理不好,就会出现超买问题问题:活动产品,每个用户购买不能超过1个?线程1进来先校验A客户是否下单过,此时是没有,在还未来得及生成订单,线程2进来校验A客户是否下单过,由于线程原创 2022-04-15 23:28:57 · 2221 阅读 · 0 评论 -
秒杀超卖问题解剖及解决方案
目录超卖问题问题:先校验产品库存,再更新库存解决方案一:乐观锁版本号模式解决方案二:乐观锁,更新后库存大于0问题:为什么不使用悲观锁来解决?总结超卖问题秒杀往往伴随着高并发,一个处理不好就会出现超卖问题问题:先校验产品库存,再更新库存线程1先校验库存,余100,在线程1未来得及更新库存时,线程2进来校验库存,还是余100,然后两个线程都能更新库存,导致最终结果超卖解决方案一:乐观锁版本号模式在更新产品库存时,产品库存等于校验时库存时才更新。线程1:在校验时库存余100,update t原创 2022-04-14 23:25:40 · 3409 阅读 · 4 评论 -
Java 之 CyclicBarrier 原理篇
目录引言测试示例CyclicBarrier 源码结构await 等待构造器的预设命令执行总结引言CyclicBarrier 就像就组长召唤大家开会一样,首先是预约一个时间,小组成员提前做好准备,待开会组长发言完,小组成员再做出响应;测试示例import java.util.concurrent.CyclicBarrier;public class CyclicBarrierTest { public static void main(String[] args) {原创 2022-02-15 23:11:33 · 331 阅读 · 0 评论 -
Java 之 Semaphore 原理篇
目录引言测试示例Semaphore 源码acquire 抢占资源release 释放资源总结引言Semaphore 就像是饭堂,饭堂有固定的桌位,在吃饭高峰期时就要来早点抢位,不然桌位坐满了就得等别人吃完才有桌位吃饭;测试示例import java.util.Random;import java.util.concurrent.Semaphore;import java.util.concurrent.TimeUnit;public class SemaphoreTest {原创 2022-02-14 23:51:51 · 620 阅读 · 0 评论 -
Java 之 CountDownLatch 原理篇
目录引言测试程序await 阻塞countDown总结引言CountDownLatch 就像游戏中的打BOOS,打BOOS之前有几道关卡,必须通过这几道关卡才能见到BOOS;CountDownLatch 可以通过设置一个计数器,当计数器到0之前都会阻塞在 await 前面,通常是在多线程时,在子线程执行完后调用countDown进行倒数,待所有子线程执行完,计数器倒为0时再执行主线程 await 后面的逻辑;测试程序import java.util.concurrent.CountDownLa原创 2022-02-09 23:55:52 · 788 阅读 · 0 评论 -
Java字符串转Integer
String num = "98.500";int intValue = new BigDecimal(num).intValue();原创 2021-12-28 17:14:03 · 599 阅读 · 0 评论 -
论Seata是否适合高并发下的分布式事务解决方案(附测试结果)
文章目录引言测试结果Seata在高并发下出现的问题问题分析Seata结论一、pandas是什么?二、使用步骤1.引入库2.读入数据总结引言对Seata AT模式进行压测,基于Seata1.4.1,订单服务调库存服务测试结果使用 jmeter 进行压测,在100并发下成功数是 23、29,成功率不到30%,在1000并发下成功数是276、260,成功率同样是不到30%Seata在高并发下出现的问题获取全局锁失败Seata服务器中出现的异常:io.seata.core.exceptio原创 2021-04-04 22:14:39 · 4696 阅读 · 4 评论 -
Hutool导出Excel,导多个Sheet页
重要方法// 指定要写出的 Sheet 页bigWriter.setSheet(sheet.getSheetName());工具类public class HuExcelUtils { /** * 导出多个 Sheet 页 * @param response * @param sheetList 页数据 * @param fileName 文件名 */ public static void exportExcel(Ht原创 2020-06-03 19:32:05 · 9837 阅读 · 3 评论 -
Hutool 导出Excel,只导出设置了别名的字段
目录只导设置别名的字段工具类使用只导设置别名的字段Hutool 的导出会默认将实体类(或Map)的所有字段都导出来,有时候根据业务的需求不要一些多余的字段,这就很烦,请教了一下大佬,知道有这么一个方法bigWriter.setOnlyAlias(true); // 官方提供了这个方法,参数为true时只导出有别名的工具类public class HuExcelUtils { /** * excel 导出工具类 * * @param response原创 2020-05-14 19:19:38 · 8011 阅读 · 1 评论