自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (1)
  • 收藏
  • 关注

原创 spring cache 的扩展封装 (小项目用)

expireTime = 30000, // 30秒动态过期,这个只能配合 @CacheabledelayDeleteTime = 5000, // 5秒延迟双删, 这个只能配合 @CacheEvictlockWhenQuery = true //默认值改为false就是使用spring默认的锁aop拦截该注解,使用ThreadLocal维护CacheExtensionContext上下文重写CustomRedisCache在put操作时动态读取过期时间,然后修改核心方法设置过期时间。

2025-03-05 15:21:49 760

原创 一个小功能的改造,结果到处都是redis的身影

然后在redis中记录每个节点的 ip 和 端口,以及每个节点完成的任务情况,当前节点全部任务结束后就去检查下是否每个节点都完成,比如设置等待30秒超时,节点完成任务就每5秒循环一次看下是不是所有节点都完成了任务,直到所有节点已完成或者已下线或者到了超时时间,就再用redis做个标记,记录当前节点已发送消息,其他节点发送前判断一下就没必要发消息了。然后每个线程执行完后,flag 减一。,如果任务比线程多,正在执行的任务同时结束,还没来得及从队列取下一个任务,这时读锁还是全部解锁了,会误判全部任务结束。

2024-07-20 22:19:57 894

原创 有时候表数据多点查询速度反而快一点

所以我遇到的问题就是:虽然测试环境总数据多一点,按 test_a 排序的话。而正式环境,test_a 比 test_c 数据多很多,然后驱动表变成了 test_c。平时业务开发都会有排序,然后我就测试了排序对性能的影响(线上的那个老sql 是从20多秒,优化到了1秒内,我自己造的数据比较少,演示下意思就行了)也就是 test_c 成了驱动表,当排序字段在驱动表上时,才能正常使用索引排序。还有一个优化,如果id是递增的,很多时候排序都是按时间排序,这个时候直接改成按id排序,这样可以少建一个索引。

2024-06-14 14:05:09 342

原创 Mybatis-plus 分页查询的“坑”(不,是我不会用)

像百度,谷歌一样不需要展示具体页数和总条数,然而,上面我说的这些,没有打动产品经理,也没时间所有界面挨个修改,那目前就只能继续处理数量查询。经常做列表界面性能优化的小伙伴都遇到过这样的情况,索引什么的都命中,但是性能就是不好,其中一种情况就是因为 列表为分页查询,列表查询本身挺快的,但是拿到分页的count语句在数据库中执行慢的一批。因为,sql的select用了这样的函数,然后再去分页查询,这种本来就是不正确的使用方式,兼容了最好,报错提示开发者也行。不处理,也能接受吧,程序员自己使用错误在先。

2024-05-20 23:19:41 1837 1

原创 java代码中一眼不容易发现的bug

CompletionService内部有一个阻塞队列,消费者是completionService.take(),就是去阻塞队列中获取 Future, 而生产者则是 completionService.submit,向队列放入Future,当生产者发放入的数量少于take()获取的数据量时,take()就会等待,直到有新的任务进入。然后呢,万千代码中相中了一个老熟人, CompletionService,这个工具类我自己还没用过,,,,但是长得和 CompletableFuture 有几分神似。

2024-05-18 16:57:25 820

原创 发现fastjson 2.0.32 版本的一个bug---数据转换错误

最近参与一个新的项目,测试同事发现一个数据不对,数据库的数据明明是,但是界面显示的却是,这个差距太大了吧。。。一路跟踪代码没有发现任何问题,最后debug发现,jsonObject.toJavaObject(XX.class) 这行代码之后数据就不对了,不会吧,又是fastjson的bug?之前已经遇到一次,数据量太大,fastjson报空指针的问题(版本升级解决),现在又遇到,,,,老司机第一反应就是,小数嘛,是不是精度问题,但是和。

2024-05-09 23:47:00 1566

原创 java 异步表格导出

前端传入查询数据的链接和参数(导出列表数据的情况下,url和参数一般和界面的列表查询接口相同,这样可以减少一个专门的导出接口,在返回对象中添加对应的Excel注解用于生成表头和数据转换),构建请求信息去调用其他服务的查询接口,一定要带上用户信息,因为大部分系统都有数据权限,防止用户看到无权查看的内容。具体不记得了,,,,),我们项目种用的最多的就是第一种方式,带来的问题就是,数据量过大,内存飙升也发生过几次oom,用户体验方面,导出任务比较慢的情况,用户不能离开当前界面需要保持连接,还很可能超时。

2024-04-07 16:57:54 1764 1

原创 消费者一次性取出全部数据的阻塞队列(java自定义)

这里就典型的生产消费问题, 生产一条,丢到线程池消费一条,然而当时的生产者性能远的高于消费者性能,于是决定做这样一个队列,生产者一条一条的产生数据后进入队列,消费者等待队列装满或者1秒以后还没装满就去消费。大概实现:“读” “写”相互等待,“写”满时或者达到超时时间唤醒 ”读“,“读”完立即唤醒 “写”原因: 当时要做一个优化, 大量的数据拉取后,需要同步到 ES,之前是多个线程一条条的插入,这样改造可以一次批量插入几十条数据到 ES,实际性能提升了很多(具体提升多少忘了)

2023-12-18 17:01:26 581 2

原创 mq消费比数据库事务快导致查询不到数据的解决办法思考

mq消费比数据库事务快的问题思考

2022-12-09 17:50:06 1824 1

原创 feign 自动生成 FallbackFactory

feign 自动生成 FallbackFactory

2022-08-02 20:44:01 1126

原创 解决@Async导致ThreadLocal值丢失问题

通过重写线程池,处理子线程threadLocal丢失的问题,并且拒绝策略是CallerRunsPolicy时,需要特别注意

2022-06-27 20:07:21 4616

ios,简单轮播图

初学者,以后修改下拿来通用,呵呵 原理,3张图来回切换,遍历数组,

2015-09-14

空空如也

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

TA关注的人

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