- 博客(20)
- 收藏
- 关注
原创 基于redis+lua脚本实现限流
摘要:该代码实现了一个基于Redis的令牌桶限流算法,包含等待获取令牌(waitForToken)和归还令牌(returnToken)两个方法。通过Lua脚本保证原子性操作,维护令牌数量和时间戳。当令牌不足时线程会等待重试,最大令牌数为5个,每秒自动补充。归还令牌功能可选,确保令牌数不超过最大值。使用租户ID区分不同限流策略,适用于多租户系统的请求限流场景。
2025-07-26 10:51:52
89
原创 导出文件20万 线程池
实现要点说明:线程池配置:核心线程数:4个最大线程数:8个队列大小:10个任务使用CallerRunsPolicy拒绝策略分批处理:每5万条数据一个sheet页自动计算所需sheet页数量使用subList分割数据Excel写入优化:使用SXSSFWorkbook处理大数据量内存中只保留100行数据自动清理临时文件线程安全保障:使用ReentrantLock保证Excel写入线程安全使用CopyOnWriteArrayList存储Future任务资源管理:正确关闭线程池
2025-07-26 09:41:24
130
原创 使用反射查找内部类或对象是否继承父类统一处理数据
该代码实现了一个递归方法populateShopId,用于为对象及其嵌套结构设置shopId。方法首先检查对象是否实现了ShopIdentifiable接口,是则设置其shopId;然后递归处理List和数组类型的对象;最后通过反射检查对象内部字段,对符合条件的字段值递归调用本方法。该方法支持深度遍历各种复杂对象结构,确保所有符合条件的嵌套对象都能被正确设置shopId,同时对异常情况进行日志记录。
2025-07-25 11:03:01
135
原创 多线程多个相同的订单号如何保证顺序串行执行
摘要:该代码实现了对重复订单的批量并发处理功能。主要流程包括:1)将重复订单按订单号分组;2)使用分布式锁控制每个订单的并发处理;3)将大批量订单拆分为小批次(每批100条)处理;4)通过CompletableFuture实现异步并发执行;5)最终汇总所有处理结果。处理过程中保证了线程安全,并记录了失败信息。该方法适用于需要高效处理大量重复订单的场景,通过分批并发和锁机制确保了数据一致性和处理效率。
2025-07-15 16:55:21
86
原创 spring boot 启动校验controller 接口方法一致性校验器
摘要:ControllerParameterAnnotationChecker是一个SpringBoot组件,用于检查Controller类与接口方法签名的一致性。主要功能包括:1)通过配置化的包扫描路径(@ConfigurationProperties)查找Controller类;2)验证每个Controller必须实现且仅实现一个接口;3)检查方法必须使用@PostMapping注解;4)确保方法参数带有@RequestBody或@PathVariable注解;5)支持通过白名单(excludeClas
2025-06-28 15:12:21
131
原创 使用代码查看idea中的最大堆内存,已分配内存,空闲内存
这段Java代码展示了如何获取JVM内存使用情况。通过Runtime类的getRuntime()方法获取运行时实例,然后使用maxMemory()、totalMemory()和freeMemory()方法分别获取最大可用堆内存、当前分配的内存和空闲内存,并将结果转换为MB单位输出。这些信息对于监控和优化Java应用程序的内存使用非常有用。
2025-06-10 10:18:06
392
原创 VUE使用importpdfmake.min.js插件生成PDF
button @click="generatePdf">生成PDF</button>text: '这是一个段落。'这是一个简单的PDF示例。GeneratePdf.vue组件。index.html首页引入插件。/* 添加一些全局样式 *//* 添加一些样式 */
2025-01-21 15:17:46
481
原创 使用固定大小的线程池同步数据
/ 设置合理的超时时间。PmsLibService.setLog(SyncOnScheduleService.class, "同步CRM部门信息更新失败:" + e.getMessage());message = "同步失败:线程池关闭超时";// 等待当前批次的所有任务完成。// 重新创建线程池。
2024-12-02 13:50:34
639
原创 钉钉消息集成各种类型
markdown.setText("**这是Markdown消息**\n\n- 列表项1\n- 列表项2");markdown.setTitle("Markdown 消息标题");actionCard.setText("这是动作卡片内容");text.setContent("这是纯文本消息");form.setValue("这是OA消息内容");body.setTitle("OA 消息标题");head.setText("OA 消息头部");link.setText("这是链接消息");
2024-11-13 15:03:21
745
原创 element ui/vue前端实现下拉树
el-select clearable ref="selectTree" v-model="form.CA009_NAME" placeholder="请选择"
2024-05-31 10:28:14
377
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1