自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 分布式任务调度 ElasticJob

分布式任务调度可以让集群环境下的各个节点执行不同的任务,以此提高效率

2022-06-24 15:37:48 485

原创 Java使用POI操作Excel合并单元格

合并单元格,主要是采用数据模型,先把数据处理好,从中找规律

2022-04-07 16:06:33 35876 8

原创 阿里云 oss 对象存储,上传、下载、删除、获取文件、文件列表,文档预览 demo

记录代码,如有错误,希望大家能够指出问题。1.maven 依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http

2021-01-15 11:07:01 9145 4

原创 可靠消息投递demo

• 结合Seata框架实现更复杂的分布式事务(如订单-库存-支付三阶段)。:手动消费DLQ中的消息,排查支付失败原因(如用户余额不足)。:消费者处理完消息后自动发送确认,RocketMQ删除消息。• 将Demo部署到Docker容器,模拟高并发场景。• 本地事务成功 → RocketMQ持久化消息。• 本地事务失败 → RocketMQ丢弃消息。代码已充分注释,可直接运行。的完整分布式事务实战 Demo,包含。方法将消息发送与本地事务提交原子化。:默认死信队列名称为。

2025-03-21 23:27:53 682

原创 从零开始学可靠消息投递:分布式事务的“最终一致性”方案

RocketMQ 是分布式系统中可靠的“消息管道”,尤其适合需要高一致性和顺序性的场景。是指通过消息队列(如 RocketMQ)确保消息在生产、传输、消费过程中。• 消费失败时自动重试,多次失败后转入死信队列(DLQ)人工处理。:消息存储和转发的中间服务器(如 RocketMQ 的节点)。• 消费者拉取消息后发送确认,Broker 删除已确认消息。:RocketMQ 自动记录消费进度,重启后从断点续传。:所有消息顺序写入单一文件,确保顺序性和原子性。:存储 Broker 元数据(如路由信息)。

2025-03-21 23:14:27 881

原创 从零开始学Seata:分布式事务的终极解决方案

Seata是分布式事务的“瑞士军刀”,既能通过AT模式实现强一致性,又支持TCC/Saga灵活应对不同场景。对于大多数互联网项目,尤其是金融和电商领域,Seata是值得优先选择的解决方案。入门虽难,但通过官方文档和社区资源,可以快速上手并落地。其核心目标是**“让开发者专注业务,自动管理事务”**,通过。:资源管理器,管理数据库连接等资源(类似球员)。:事务协调者,统筹全局事务(类似裁判)。:事务管理器,定义事务边界(类似教练)。:基于乐观锁和异步回滚,减少资源阻塞。:允许短暂不一致,但最终状态一致。

2025-03-21 22:51:41 1235

原创 Saga 模式实战 Demo

的完整 Saga 模式实战 Demo,包含订单创建、库存扣减、支付扣款和物流发送四个服务,结合补偿机制实现最终一致性。通过 Apache Camel 的 Saga 组件,我们无需手动编写复杂的补偿逻辑,即可实现分布式事务的最终一致性保障。:通过 XML 或 DSL 定义事务流程,清晰直观。:结合 ActiveMQ 实现事件持久化和重试机制。:标记事务边界,自动绑定正向服务和补偿方法。的持久化配置,确保事件在服务重启后不丢失。:配置最大重试次数和延迟时间,避免无限重试。• 需要灵活补偿逻辑的复杂业务场景。

2025-03-21 22:45:30 700

原创 从零开始学Saga模式:分布式事务的柔性解决方案

Saga模式是分布式事务的“柔性解决方案”,适合复杂业务场景,但需权衡开发成本和系统复杂性。在实际项目中,可结合2PC(如Seata AT模式)实现强一致性,或通过Saga处理最终一致性需求,灵活选择最适合的方案。:使用Camel的Saga图或Seata的可视化界面监控流程。:定义事务边界和补偿逻辑(通常由业务代码实现)。:记录补偿失败日志,通过运维手动处理。:监听业务事件,触发后续操作或补偿。:服务间通过事件通信,无需直接调用。:补偿操作可异步执行,降低阻塞风险。:补偿事件被多次处理,导致数据错误。

2025-03-21 22:39:08 1134

原创 Seata框架 分布式事务实战 Demo-1

AT 模式是 Seata 的核心模式,结合了 2PC 和乐观锁,通过自动记录 Undo Log 实现高效回滚。通过 Seata 的 AT 模式,我们无需手动实现复杂的 2PC 或 3PC 协议,即可轻松获得分布式事务的强一致性保障。• 各个 RM(库存、支付、订单服务)执行本地事务,自动记录 Undo Log。• 支付记录未提交(需手动回滚,由 Seata 自动处理)。• TM(订单服务)启动全局事务,向 TC 注册分支事务。• 优化业务逻辑,减少事务执行时间。• 微服务架构中需跨服务事务的场景。

2025-03-21 22:31:47 1048

原创 从零开始学3PC:分布式事务的进阶方案

参与者在PreCommit阶段执行本地事务失败(如扣款超限)。:将Commit阶段改为异步消息(如Kafka),降低同步阻塞。• 协调者单点故障(2PC中协调者宕机会导致参与者永久阻塞)。:协调者与部分参与者断开,导致部分节点提交,部分回滚。:若强一致性要求极高,可退回到2PC+备用协调者方案。:结合Saga模式,通过补偿操作修复(如退款)。:三阶段通信增加延迟,尤其在网络不稳定的情况下。:让参与者在最终决定前“表态”,减少阻塞时间。:参与者定期向协调者发送心跳,超时则视为异常。

2025-03-21 22:27:21 954

原创 从零开始学2PC:分布式事务的原子性保障

想象你和朋友约好一起做饭,你负责买菜(参与者A),朋友负责炒菜(参与者B)。协调者就是你们的“总指挥”,确保两人要么都完成,要么都不做。• 执行本地操作(如扣减库存、冻结支付金额),记录** undo 日志**(回滚脚本)。:士兵,执行具体业务操作的服务(如库存系统、支付系统)。:协调者宕机后,参与者无法收到提交/回滚指令,导致死锁。:参与者设置最大等待时间(如30秒),超时后自动回滚。:集群部署协调者,自动选举主节点(如Raft协议)。:指挥官,负责统筹全局事务(如订单系统)。

2025-03-21 22:07:43 761

原创 分布式事务解决方案简介

在分布式系统中,多个服务协同完成一个业务操作时,可能会遇到数据一致性问题。传统单体应用的ACID事务无法直接扩展到分布式环境,主要矛盾在于:•网络不可靠:服务间通信可能失败。•并发冲突:多节点同时修改同一数据。•容错性要求高:需在部分服务宕机时仍保证最终一致性。•强一致性优先:选XA或Seata。•高性能与复杂业务:选TCC或Saga。•异步解耦:选本地消息表。•快速落地:直接采用Seata框架。

2025-03-21 21:44:59 1119

原创 ThreadLocal 的详细使用指南

•。

2025-03-20 21:17:51 1079

原创 流量阶梯 用量按照日、月、年、自然月、自然年,周期叠加分段计算各个阶梯金额

周期时长、周期单位、叠加次数。

2024-04-16 17:55:51 406

原创 KB、MB、GB java转换工具类

【代码】KB、MB、GB 项目转换工具类。

2024-01-17 11:40:23 935 1

原创 开发之路坑之总结

异步逻辑需要异步之前的所创建的数据,可能前数据还未落库,异步逻辑查询,故不能采用这样。工作中需要许许多的坑,记录,提醒自己,也欢迎你们评论自己的坑。

2023-11-08 14:49:18 115

原创 SpringBoot使用validation做参数校验

异常检查

2022-12-06 10:49:43 531

原创 Java使用POI实现动态复杂多级表头

利用POI实现动态复杂表头

2022-10-09 18:05:02 5212 4

原创 Spring Data JPA 动态sql查询 普通查询

JPA动态查询

2022-08-11 10:38:29 1532

原创 MySQL error 28 and solution

MySQL error 28

2022-07-05 19:31:07 334

原创 设计模式 java demo

设计模式

2022-07-01 17:15:44 287

原创 Mysql Duplicate entry ‘xxx‘ for key ‘xxx‘

数据库新增、修改字段重复报错

2022-06-24 17:19:40 412

原创 mysql 死锁

mysql死锁记录

2022-06-24 16:37:46 118

原创 java oom 问题排查

oom异常解决

2022-06-21 17:50:54 1150

原创 SpEL表达式 简单使用

前言:{ "data":{ "dataList":[ { "userName":"name" } ] }, "code":"200", "message":"正常"}你可能在工作中遇到这样一种情况,在jsonStr,要想获取指定的key值的结果工作中场景:任务中心微服务-导出,在dubbo泛化调用中,不同的业务线返回的结构可能不同,怎么做到根据不同路

2022-05-27 17:09:04 805

原创 咕咆第三期完整版 仅供学习

2021-05-28 13:32:38 226 1

原创 springboot 全局异常处理 自定义异常

文章积累知识,如有存在问题,请大家不啬赐教前文:之前写了一篇浅谈代码规范的文章,文章地址:https://mp.csdn.net/editor/html/115002158看官会觉得controller满屏的try-catch,似乎心情会不爽,想到能不能全局处理异常,不再是service抛出异常,controller处理异常,也就是说开发者不关注异常处理,自定义异常直接在service抛出我从来没见过这么嚣张的人,哎!你今天就见到了package com.hzw.sunflower..

2021-04-15 10:52:31 398

原创 ACID事务

文章积累知识,如有存在问题,请大家不啬赐教事务具有4个特征,分别是原子性、一致性、隔离性和持久性,简称事务的ACID特性;一、原子性(atomicity)一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作,这就是事务的原子性二、一致性(consistency)事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。如果数据库系统在运行过程中发生故障,有些事务尚未完成就被迫中断,这些未完成的事务对数据库所作的修改有一部

2021-03-24 15:26:22 249

原创 jenkins.war 部署

Jenkins 持续集成软件,拿到了一个 war 文件,运行 war 文件有两种方式:1. 把 war 文件放到 tomcat 的 webapps 文件夹中,运行 tomcat ,由 tomcat 自动解压运行 war 文件中的程序;2. 不用 tomcat,cmd 进入 war 文件所在目录,直接执行以下命名运行 war 中的程序;java -jar 文件名.war今天主要想说的就是这第二种方式。我们调用如下命令后,war 程序就开始运行了。java -jar jenkins.wa..

2021-03-24 09:47:29 1826 1

原创 自定义 业务异常

文章积累知识,如有存在问题,请大家不啬赐教1、项目异常统一管理 (1)采用枚举类统一管理异常信息,package com.web.utils;public enum ExceptionEnum{ /** * 请发送验证码 */ VERIFICATION_CODE_NOT_SENT("5001", "请发送验证码"), /** * 您输入的验证码有误 */ VERIFICATION_CODE_ERROR("....

2021-03-19 11:28:44 397

原创 SpringMvc Quartz 定时任务集成

文章积累知识,如有存在问题,请大家不啬赐教1、引入jar <!-- quartz --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency>2、sp

2021-03-15 17:27:41 391

原创 mysql 函数 订单7天后自动签收

文章积累知识,如有存在问题,请大家不啬赐教CREATE DEFINER=`root`@`%` PROCEDURE `automatic_signIn`()BEGIN DECLARE done int DEFAULT FALSE; DECLARE z_id int DEFAULT 0; DECLARE infos CURSOR FOR SELECT o.idFROM tbl_order o WHERE o.order_status = 2 AND TIMESTAMPDIFF(

2021-03-15 17:00:35 202

原创 HttpClient doGet/doPost 普通请求,携带参数,携带请求头

文章积累知识,如有存在问题,请大家不啬赐教import com.hbxhx.utils.string.StringUtils;import org.apache.commons.beanutils.BeanMap;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpStatus;import org.apache.commons.httpclient.methods.P

2021-02-22 17:39:18 2816 2

原创 发布时间 距发布多久

/** * 距发布多久 * <p> * <60分钟 --- xx分钟前; * 1小时(含)以上24小时以内 --- xx小时前; * 24小时(含)以上48小时以内 --- 昨天; * 48小时(含)以上 --- yyyy-MM-dd; * * @param releaseTime * @return */ public static String sinceToday2List(Da..

2021-02-18 09:42:53 231 4

原创 ocr.idcard 微信小程序的身份证 OCR 识别

文章积累知识,如有存在问题,请大家不啬赐教官方apl地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/ocr/ocr.idcard.html请求地址POST https://api.weixin.qq.com/cv/ocr/idcard?type=MODE&img_url=ENCODE_URL&access_token=ACCESS_TOCKEN请求参数属性 类型

2021-02-01 12:20:41 3708 5

原创 Swagger2 api 接口文档

文章积累知识,如果正在问题,请大家不啬赐教1、引入jar包 <!-- swagger2 start--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependen

2021-01-25 15:43:16 349 2

转载 java中sleep() 和 wait()区别

对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只...

2018-12-17 11:46:11 144

转载 MySQL 伪序列

//a.用两个语句来实现set @rownum=0;SELECT @rownum:=@rownum+1 AS rownum , id FROM table;//b.用一个sql语句来实现SELECT @rownum:=@rownum+1 AS rownum, table_name.* FROM (SELECT @rownum:=0) r, table_name ;//把rownum的设...

2018-08-30 16:57:59 781

原创 微信小程序支付

首要条件:    1.开通了微信支付,并且小程序绑定了微信支付;    2.准备好小程序的appid,微信支付的商户号,支付秘钥。微信小程序支付核心:     1、小程序向服务端发送获取openid    2、服务端向微信统一下单    3、服务器收到返回信息二次签名发回给小程序    4、小程序发起支付    5、服务端收到回调说明:下面是小程序代码&lt;!--index.wxml--&gt;...

2018-03-20 20:15:30 617

原创 Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use.

首先我们看英文知道端口被占用, 一、推荐方案 启动任务管理器,                                 结束进程javaw.exe 二、启动任务管理器,并没有发现没有javaw.exe, 情况一:1、在dos下,输入 netstat -ano|findstr 8080 ...

2018-03-03 20:27:16 831

空空如也

空空如也

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

TA关注的人

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