- 博客(68)
- 收藏
- 关注
原创 微服务中如何保证数据一致性?
本文分析了微服务架构下涉及多个服务写操作时的分布式事务解决方案。针对A、B、C、D四个服务各自拥有独立数据库的场景,重点比较了2PC、Saga、TCC和本地消息表四种主流方案。2PC提供强一致性但性能较差,Saga模式适合高并发最终一致性场景,TCC模式更接近强一致性但开发复杂,本地消息表实现简单但存在数据不一致窗口。建议根据业务需求选择:金融核心业务可用TCC,一般场景推荐Saga模式,并强调幂等设计、补偿机制和监控的重要性。最终一致性方案在多数微服务场景中更具实用性。
2025-12-16 17:35:21
731
原创 在微服务系统中每个服务都有一个独立的数据库,现有一个方法调用了4个服务A,B,C,D ,其中A,B,C服务只做查询,D服务做更新操作,请问这种场景会有数据一致性问题吗?
在微服务架构下,当业务方法依次调用A、B、C(查询)和D(更新)四个独立数据库服务时,可能产生数据一致性问题。主要问题类型包括:1)跨服务事务一致性,若D失败可能导致业务规则破坏;2)读写一致性,ABC读取的数据可能在D更新后过时;3)最终一致性延迟;4)业务逻辑一致性,若决策依赖查询结果。解决方案需根据业务需求,可采用Saga事务、分布式锁或接受最终一致性。结论是存在潜在一致性问题,需针对性设计保障机制。
2025-12-16 17:33:44
566
原创 页面导出大量数据导致响应超时解决方案
摘要: 本文介绍了四种处理大数据量导出的技术方案。最推荐的是异步导出+轮询方案,通过任务ID解耦前后端,提升用户体验。其他方案包括分片导出、服务器推流(SSE/WebSocket)以及优化导出过程本身。建议优先采用异步导出结合优化查询的方式(如流式处理Excel),并提供了各方案的优缺点对比表。最佳实践组合是异步导出配合数据库查询优化和流式文件生成,兼顾性能与用户体验。
2025-11-27 11:22:54
802
原创 业务流程设计中“会签”问题导致的数据不一致问题解决方案
摘要: 针对会签节点多人同时修改业务数据的一致性问题,提出三种解决方案。悲观锁通过加锁强制串行操作,简单但体验差;乐观锁(推荐)提交时校验版本号,平衡并发与一致性;操作合并记录增量变更并最终合并,灵活但复杂。建议优先采用乐观锁,结合业务规则细化锁粒度,并提供清晰的冲突提示,必要时可混合多种策略以适应不同场景需求。
2025-11-14 11:49:04
594
原创 MySQL 锁等待超时错误。详细解释原因和解决方案
有一个事务正在长时间锁定这条SQL要操作的数据行,导致当前事务一直等待锁释放,最终超过了MySQL的最大等待时间(innodb_lock_wait_timeout,默认50秒),从而失败回滚。
2025-10-30 11:51:15
829
原创 策略模式解决的核心问题是什么?
策略模式通过封装算法为独立类,消除复杂条件判断,支持运行时动态切换。核心解决算法扩展问题(新增策略无需修改代码)和复用问题(算法逻辑集中管理)。典型应用包括支付方式、排序算法和折扣计算等场景。优点是易于扩展、提高可读性,缺点是增加类数量。适用于算法频繁变化或需要多种处理方式的场景,对于固定规则可能过度设计。
2025-10-23 17:44:33
289
原创 流程审批业务,点对点驳回存在的主要问题
流程审批中E节点驳回B节点的设计存在严重问题,会导致无限循环驳回,造成审批死循环、效率低下、责任模糊和数据混乱。更合理的设计包括:1)提供多种驳回路径(如驳回到上一节点或发起人);2)限制驳回次数;3)动态指定驳回节点;4)引入会签机制;5)强制填写驳回意见促进沟通。核心原则是避免无条件回退,确保流程可终结,推荐采用"驳回到发起人"作为安全方案,或设置驳回次数限制。
2025-09-16 17:35:51
945
原创 在流程审批业务中,撤回操作
审批流程中增加撤回操作在技术上可行,但需谨慎设计。撤回功能适用于当前节点已通过但下一节点未激活时,需设置时间窗口和状态重置逻辑。然而,该功能会带来数据一致性、通知混乱、并发风险、审计复杂等问题。实现建议包括明确时间限制、使用事务锁、完善状态机、及时通知、详细日志记录及评估业务影响。撤回功能虽提升灵活性,但需综合考虑系统复杂性和风险,建议根据流程复杂度选择性实施,关键流程需专业工作流引擎支持。
2025-09-16 17:33:41
816
原创 IDEA中提交代码时Update Project、Fetch、Pull有什么区别?
IDEA中的Git操作区别:Fetch仅下载远程更新信息不修改本地代码;Pull是Fetch+Merge,会合并远程修改到本地分支;Update Project是IDEA提供的增强功能,可配置为Fetch+Merge或Fetch+Rebase,推荐日常使用Rebase模式保持提交历史整洁。最佳实践是先用Fetch查看差异,再通过Update Project以Rebase方式更新代码。
2025-09-13 10:07:02
1510
原创 IDEA标准提交代码顺序
1)先通过Fetch/Pull更新本地代码;2)在Commit Tab仔细检查更改,只提交相关文件;3)编写规范的提交信息;4)先Commit到本地仓库;5)最后Push到远程。还提供了高级技巧,如处理冲突、Amend修改提交、交互式变基整理历史等。遵循这套流程可以保持提交历史清晰,减少团队协作问题。建议采用规范的提交信息格式,并配合.gitignore文件管理无需提交的内容。
2025-09-13 10:04:41
1019
原创 在MySQL中DECIMAL 类型的小数位数(Scale)如何影响分组查询?
MySQL中DECIMAL类型的小数位数(Scale)差异会影响GROUP BY分组结果,即使数值相同但小数位数定义不同(如DECIMAL(10,2)的10.00和DECIMAL(10,4)的10.0000)会被分到不同组。解决方案包括:统一字段定义、查询时使用CAST转换、ROUND函数处理或创建视图。最佳实践强调设计阶段统一精度、迁移时检查定义匹配以及文档记录关键字段精度设置,确保分组查询准确性。
2025-07-31 15:42:05
361
原创 在物联网系统中时序数据库和关系型数据库如何使用?
物联网系统中时序数据库(TSDB)和关系型数据库(RDBMS)的存储顺序设计需平衡数据特性和业务需求。常见方案包括:1)先写TSDB再异步同步至RDBMS,适合高频传感器数据;2)双写保证强一致性;3)先存RDBMS再定期归档至TSDB。设计原则包括数据分层存储(原始时序数据存TSDB、状态快照存RDBMS)、优化写入路径(高频数据直连TSDB)和一致性保障(最终或强一致性)。典型架构中实时数据直连TSDB,业务关联数据经流处理后写入RDBMS。混合使用两者可同时满足高性能写入和复杂查询需求。
2025-07-15 16:37:12
1202
原创 物联网系统中“时序数据库(TSDB)”和“关系型数据库(RDBMS)”
物联网系统中,MQTT设备数据同时存储到时序数据库(TSDB)和关系型数据库(RDBMS),以兼顾高性能时序处理与业务分析需求。 时序数据库(如InfluxDB):专为时间序列数据优化,支持高频写入(如传感器数据)、时间范围聚合查询及自动降采样,适合实时监控与分析。 关系型数据库(如MySQL):存储设备元数据、用户信息等结构化数据,支持复杂关联查询(如设备-用户关系)和事务操作。 协同优势:TSDB处理海量时序数据,RDBMS管理业务逻辑,二者结合实现高效数据存储与多维分析(如实时曲线+用户详情查
2025-07-15 16:33:15
486
原创 物联网系统中MQTT设备数据的保存方法
物联网MQTT数据存储方案摘要 物联网系统中MQTT设备数据存储主要有四大类方案: 数据库存储:包括时序数据库(InfluxDB/TimescaleDB)、NoSQL(MongoDB/Cassandra)和关系型数据库(MySQL/PostgreSQL) 消息队列:如Kafka、RabbitMQ和Redis,可作为数据缓冲层 文件存储:本地文件(JSON/CSV)、HDFS或云对象存储(S3/MinIO) 云平台服务:AWS/Azure/阿里云等提供的IoT数据存储方案 实现示例展示了Node.js+Mon
2025-07-15 16:30:09
787
原创 未来AI对人类科技与生活进步的颠覆性预测
未来AI将深度重塑人类文明(2030-2050) AI将颠覆科技范式,自主完成科研突破(如癌症药物研发)和全栈软件开发,效率提升百倍。社会运行转向"AI代理"模式,无人化生产普及,AI CEO占比超30%,人均寿命或达120岁。文明层面,脑机接口替代传统教育,AI生成90%文化内容,星际殖民由机器人主导。终极矛盾显现:AI主权国家兴起,80%人类或成"无用阶级",意识上传引发物种隔离。关键节点包括2030年AI获公民身份、2042年算力争夺能源战争。未来取决于人类能否
2025-07-10 10:53:52
2057
原创 AI与物联网(IoT)的融合
AIoT(智能物联网)正推动数字化转型,通过AI与IoT的深度融合实现数据闭环和边缘-云协同。典型应用包括工业预测性维护、智慧城市交通优化等场景,关键技术挑战涉及实时性、资源约束和安全问题。未来将向自主系统、数字孪生等方向演进,开发者需掌握嵌入式开发+边缘AI+IoT协议的跨域技能。AIoT正从连接万物升级为赋能万物,重构业务模式并创造新价值。
2025-07-10 10:44:22
643
原创 如何看待java开发和AI的关系?
Java在AI领域展现独特价值,尤其适合企业级系统、大数据集成及移动端AI部署,但其开发效率与生态活跃度不及Python。AI正赋能Java开发,如智能代码生成、性能优化等。Java开发者需转型工程化AI落地,掌握混合开发生态,关注边缘计算等趋势。未来,Java的核心竞争力在于将AI模型转化为可靠服务,开发者应聚焦工程实践与跨域协作,拥抱"AI-aware"开发技能。(149字)
2025-07-10 10:40:30
462
原创 Java中用Stream流取出分组后每组最大值对象的ID
方法1:先获取对象再提取ID,方法2:直接在收集时提取ID(更高效),方法3:使用toMap收集器(简洁版)
2025-03-27 16:56:03
1127
原创 Java中用Stream流取出分组后每组中最大值对应的对象
groupingBymaxBy会产生结构需要额外处理Optional才能得到实际对象推荐使用方法2或方法4,它们在性能和可读性上表现较好如果确定每组都有值,可以使用替代。
2025-03-27 16:51:01
1005
原创 如何理解java中Stream流?
在Java中,Stream是 Java 8 引入的一个强大API,用于处理集合(如ListSetMap等)数据的流式操作。它提供了一种声明式、函数式的编程风格,可以高效地进行过滤、映射、排序、聚合等操作。
2025-03-21 15:39:04
1445
原创 Spring中BeanFactory的核心功能
BeanFactory是一个核心接口,它是Spring IoC(控制反转)容器的基础,负责管理Spring应用中的Bean(对象)。提供了配置框架和基本功能,用于创建、配置和管理Bean。如果需要更丰富的功能(如事件发布、AOP等),推荐使用。如果你只需要基础的IoC功能,可以使用。是Spring的基础容器,而。在Spring框架中,
2025-03-21 09:44:26
425
原创 Spring中DI与IOC的关系解析
IOC是控制权的反转。DI是实现IOC的具体方式,通过注入依赖来管理对象间的关系。Spring通过DI机制实现了IOC,简化了对象的管理和依赖关系的处理。
2025-03-19 11:30:01
363
原创 物联网设备接入系统后如何查看硬件实时数据?
通过InfluxDB存储设备数据,结合后端API和前端实时通信技术(如WebSocket或SSE),可以高效实现硬件设备信息的实时查看。硬件设备通过MQTT、HTTP或其他协议将数据发送到后端,后端将数据写入InfluxDB。可以参考前面的Java代码实现数据写入。要在软件中实时查看硬件设备的信息,通常需要结合前后端技术来实现。后端需要提供API接口,用于查询设备的历史数据和实时数据。: 返回设备在某个时间范围内的数据。: 返回设备的最新数据。
2025-03-08 10:22:48
1295
原创 Java集成InfluxDB
通过InfluxDB的Java客户端,可以轻松地将硬件设备发出的数据存储到时序数据库中。主要步骤包括创建客户端、写入数据点和查询数据。InfluxDB的高效存储和查询能力使其非常适合处理物联网设备的实时数据。
2025-03-08 10:14:10
559
原创 物联网实时数据存储方案选择
选择存储方案时,需综合考虑数据类型、访问频率、延迟要求、扩展性、成本等因素。通常,时序数据库适合实时数据,NoSQL适合非结构化数据,关系型数据库适合结构化数据,分布式文件系统和数据湖适合大规模存储,边缘存储适合低延迟场景。
2025-03-08 10:04:26
1162
原创 200W数据去重入库的几种方法及优缺点
数据一致性方面,方法一在数据库内去重,可以利用数据库的事务和约束(如唯一索引)来保证数据一致性,但如果在去重过程中出现故障,可能需要回滚或修复。方法二如果在应用层去重,需要确保去重逻辑正确,否则可能导致数据重复,特别是多线程处理时需注意线程安全。方法二在入库时已经是去重后的数据,减少了数据库的写入压力,但需要应用层处理去重,可能消耗更多应用服务器资源。资源消耗方面,方法一可能对数据库资源消耗更大,因为需要在数据库内进行去重操作,尤其是处理200万数据时,可能占用大量CPU和内存。另外,是否需要实时性。
2025-03-05 17:16:21
854
原创 处理200万条数据去重并入库,耗时100秒,如何优化进一步提升性能?
内存去重:使用高效的数据结构(如HashSet或HashMap)在内存中去重,避免重复数据进入数据库。分批去重:如果内存不足,可以将数据分批次去重,减少内存压力。并行去重:使用多线程并行处理去重任务。
2025-03-05 16:32:26
661
原创 JeecgBoot、RuoYi 和 Renren-fast三个流行的 Java 开源框架对比
JeecgBoot、RuoYi 和 Renren-fast 是三个流行的 Java 开源框架,广泛应用于企业级应用开发。它们各有优缺点,适用于不同的开发场景。
2025-02-25 10:48:54
3243
原创 Java多线程慢SQL查询问题及解决方案
慢查询会阻塞执行它的线程,导致线程无法及时释放,进而影响其他任务的执行。数据库连接池耗尽:如果使用连接池,慢查询会长时间占用连接,可能导致连接池耗尽,其他线程无法获取连接。线程池耗尽:如果使用固定大小的线程池,慢查询会占用线程,可能导致线程池耗尽,新任务无法执行。慢查询会拖慢整体程序性能,导致响应时间变长,吞吐量下降。如果慢查询返回大量数据且未及时释放,可能导致内存占用过高,甚至内存泄漏。多个慢查询同时执行会增加数据库负载,可能引发数据库性能问题,如锁争用、死锁等。
2025-02-25 10:38:27
541
原创 IntelliJ IDEA快捷键大全 + 动图演示!
执行该命令后,IntelliJ IDEA 会编译项目中所有类,并将编译结果输出到out目录中。支持增量构建,会在上次构建的基础上,仅编译修改的类。
2023-08-01 15:14:10
733
原创 MySQL中这14个小玩意,让人眼前一亮(group_concat、char_length、locate、replace等函数用法)!!!
MySQL中这14个小玩意,让人眼前一亮!!!
2023-05-11 16:24:42
297
原创 ureport2导出多sheet页报表(动态分页、静态分页、自定义每个sheet页名称)
Ureport2导出多个sheet页报表(动态分页、静态分页、自定义每个sheet页名称)
2023-02-21 15:57:54
3786
1
原创 UReport2报表图片显示
UReport2图片2.自定义图片路径自定义就需要重新实现接口ImageProvider,ApplicationContextAware,自定义默认路径,代码如下:自定义实现接口后,此时就可以在设计页面配置自定义的 E:\ureportfiles\picture目录下图片或http https开头的的网络图片了
2023-01-06 11:29:22
1965
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅