自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 String的intern方法

谨慎使用:不要盲目地对所有字符串调用intern()。它应该被用作一种优化手段,而不是默认操作。适用场景:通常用于处理已知会有大量重复且生命周期较长的字符串。例如,数据库中的地区名称、枚举值、XML/JSON解析中的重复键名等。优先使用字面量:直接使用字面量是最佳方式,因为它由编译器自动处理并放入常量池。测试:如果你考虑使用intern()来优化内存,一定要进行充分的测试和性能剖析(Profiling),确保它确实带来了好处,而不是引入了新的问题。总结特性描述方法签名核心作用。

2025-08-24 15:21:45 948

原创 JVM内存模型

特性JVM运行时数据区 (Runtime Data Areas)Java内存模型 (Java Memory Model, JMM)是什么物理上的内存区域划分逻辑上的规则和规范目的描述Java程序运行时,数据存储在哪里定义多线程环境下,如何正确地访问共享内存核心内容堆、栈、方法区、程序计数器等可见性、原子性、有序性、Happens-Before原则关系JMM规范了线程如何与运行时数据区(尤其是堆)进行交互JMM是规则,运行时数据区是“场地”简单来说:运行时数据区回答了“数据放在哪”的问题。

2025-08-24 14:36:59 712

原创 Spring框架相关面试题

除了上述标准作用域,Spring还提供了扩展机制,允许你注册和定义自己的自定义作用域(例如,为每个线程创建一个实例的“thread”作用域)。这需要通过接口来实现,并将其注册到容器中。作用域说明适用场景是否Web相关singleton容器中只有一个实例(默认)无状态服务,工具类否prototype每次请求都创建一个新实例有状态对象否request一次HTTP请求一个实例表单数据,请求参数是session一个用户会话一个实例用户登录信息,购物车是整个Web应用一个实例。

2025-08-24 10:38:08 974

原创 支付宝支付的流程

tips:在异步回调时,为了防止支付宝重新调用支付异步回调,我通过redis中的一个String数据结构,通过setNX存储异步回调逻辑,用支付宝通知Id作为唯一的key进行存储,value随意。(2)异步回调:异步回调就是用户支付成功之后由阿里服务器发起,向我们系统的支付服务发起请求,通知支付成功,然后支付服务完成后续的订单的修改订单状态、修改支付记录状态、扣减库存的操作。首先提交完订单以后请求支付服务接口发起订单服务的接口调用,请求订单信息返回给前端,跳转到支付界面,我就以支付宝为例。

2025-08-17 09:59:10 394

原创 Spring Cloud的五大组件

通过。

2025-08-17 09:26:38 1107 1

原创 SpringBoot中事务失效的场景及原因分析

缺少注解或注解属性配置错误(如isolation等),导致事务未按预期生效。注解需添加到public上,且需通过代理调用(如通过Spring容器注入的Bean调用)。使用MySQL时,若表引擎为MyISAM(默认不支持事务),需改为InnoDB。默认仅对和Error回滚。若抛出检查异常(如)且未在注解中声明,事务不会回滚。

2025-08-12 10:49:20 677

原创 并发编程的三要素是什么

操作不可中断,要么全部执行成功,要么完全不执行,不会被其他线程干扰。

2025-08-05 21:28:33 319

原创 Pig Cloud遇到websocket不能实现同一个用户不同浏览器接受到广播的消息解决方案

自定义SecuritySessionKeyGenerator类,为每个客户端连接建立唯一的key。重写WebSocketSessionHolder类方法。

2025-08-05 09:22:12 258

原创 Spring 中 Bean 的生命周期

在 Spring 容器启动时,它会读取配置文件或者扫描注解来获取 Bean 的定义信息,也就是 BeanDefinition。这个方法会根据 BeanDefinition 中的信息来决定创建 Bean 的方式,比如是通过构造函数还是工厂方法。经过前面的步骤,Bean 就可以在应用中被使用了。Bean 实例创建好后,接下来就是给 Bean 的属性赋值。等,Spring 会在这个阶段调用相应的方法来设置相关的信息。的 Bean,通过反射调用其销毁方法。方法中,会遍历所有的 Bean,对于配置了。

2025-08-02 18:23:51 391

原创 两个服务之间的大规模数据推送

生产者服务将数据写入队列,消费者服务按需拉取,支持批量处理和流量削峰。将大数据拆分为固定大小的分片(如每片1MB),通过HTTP/2或gRPC进行批量传输。设置合理的batch size和并行度,避免单次请求过大或网络阻塞。实施背压(backpressure)机制,当消费者延迟增加时动态降低推送速率。通过时间戳、版本号或变更日志(CDC)标记数据变更,仅推送差异部分。将大量数据分割为多个小块,每个线程处理一个数据块。分块大小需根据数据特性和系统性能调整,过大可能导致线程负载不均,过小会增加调度开销。

2025-08-01 22:18:01 421

原创 幂等性校验(订单重复提交问题)

幂等性指对同一操作的多次执行结果与单次执行结果一致。在订单系统中,重复提交可能导致重复扣款、重复发货等问题,需通过幂等性校验避免。

2025-08-01 20:53:25 611

原创 布隆过滤器BloomFilter

误判率p,二进制位数组长度m,hash函数个数k, 数据规模n(元素数量) 是有关系的,可以通过公式计算,已知数据规模,误判率,可以计算二进制数组长度, 以及hash函数的个数。及时对于一个待判断的元素,即使k个hash函数映射到的数组元素的值都是1,也不能说明这个元素在目标集合中是存在的。但是反过来,对于一个待判断元素,如果至少有一个hash函数映射到的数组元素为0即映射结果为不存在,那么就一定能说明,该元素在目标集合中不存在。要构造布隆过滤器,首先得有一个长度为n的二进制数组,每个存储单元的初值为0.

2025-07-31 21:51:41 1416

原创 分布式锁的基本原理和基于lua脚本的实现(Redisson)

而这四个条件,Redisson实现的分布式锁都可以满足,同时Redisson实现的分布式锁,还是可重入的。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。- 解铃还须系铃人。加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。在任意时刻,只有一个客户端能持有锁。- 加锁和解锁必须具有原子性。

2025-07-31 21:42:23 623

原创 pig Cloud中分布式锁的使用(setIfAbsent)

集群环境下定时任务的精确调度,如报表生成、数据归档等需要全局唯一执行的操作。:集群环境下定时任务的精确调度,如报表生成、数据归档等需要全局唯一执行的操作。

2025-07-31 20:35:58 795

原创 java项目部署常用的linux命令

显示所有Java进程的PID、启动参数和资源占用。

2025-07-25 14:47:47 583

原创 Pig Cloud使用Debezium实时监听数据变更

Debezium 是一个,专门用于,并将这些变更以事件流的形式发送到消息队列(如Kafka),供其他服务消费。它相当于数据库的"显微镜",能毫秒级感知数据变动:读取MySQL的binlog。

2025-07-23 20:56:39 383

原创 pig cloud框架中引入websocket

创建service服务层,实现websock推送。

2025-07-23 20:32:18 330

原创 Springboot服务启动过程中执行代码的两种机制机制

所有Bean已初始化完成,可安全依赖其他组件。方法,参数为字符串数组形式的原始命令行参数。接口指定执行顺序,数值越小优先级越高。使用场景:每天凌晨执行历史订单对账。对象,提供更丰富的参数解析功能。(如数据迁移、定时任务启动)。多个Runner实现可以通过。:应用上下文刷新完成(接收原始命令行参数(

2025-07-23 20:26:14 626

原创 pig Cloud框架同时连接多个数据源,亲测有效

确保导入pig cloud官方数据源链接的依赖,其中包含dynamic多数据源链接的依赖。

2025-07-22 09:50:55 280

原创 一篇吃透事务(Transaction)的概念

分布式事务无银弹,选型需权衡业务容忍度。

2025-07-19 20:59:00 1116

原创 一篇吃透多线程的相关概念

Runnable// 自定义线程工厂group = (s!= null)?// 设置合理的线程优先级// 设置异常处理器});return t;// 优先级任务包装类@Overridetask.run();@Override// VIP订单优先return -1;return 1;// 相同优先级按创建时间排序// 自定义拒绝策略@Override// 记录被拒绝的任务// 尝试降级处理。

2025-07-19 17:33:12 935

原创 java中stream流对多个字段优先级顺序进行排序

如果需要更复杂的排序逻辑,可以通过 lambda 表达式自定义Comparator})

2025-07-16 14:25:30 433

原创 修改windows中的git账户

打开 Windows 控制面板,进入“用户账户” > “凭据管理器” > “Windows 凭据”。进入需要修改的 Git 仓库目录,运行以下命令(去掉。在“普通凭据”列表中,找到与 Git 相关的条目(如。),选择“编辑”或“删除”以更新或清除旧账户信息。

2025-07-05 14:50:06 703

原创 RedisTemplate.opsForValue()“ because “this.redisTemplate“ is null-Redis客户端报空指针

RedisTemplate未被正确注入,不要加private final 修饰。

2025-07-01 15:48:11 148

原创 Nacos配置中心中ON/OFF开关的设计

建议将开关配置设置为动态可刷新,这样无需重启应用即可改变开关状态。)以避免配置中心不可用时出现意外启用。同时确保开关值的比较采用忽略大小写的方式,防止大小写不一致导致的问题。表示开关状态是一种常见的实践。这种设计通常用于功能开关、服务启停等场景。应用启动时读取该配置,并根据值决定是否启用特定功能。通过Nacos的配置管理功能,创建一个配置项,其值为。在Spring Boot应用中,可以通过。对于关键功能开关,建议设置默认值(如。在Nacos配置中心中,使用。

2025-07-01 10:12:00 277

原创 TIMESTAMPDIFF()语法

⚠️ 不同数据库系统(如 MySQL、MariaDB)实现可能略有差异,需参考具体文档。起始时间(较早的时间点),需为合法的日期时间格式(如。结束时间(较晚的时间点),格式同起始时间。

2025-06-23 10:45:11 537

原创 mysql中的IFNULL()语法

IFNULL() 是 MySQL 中的一个控制流函数,用于处理 NULL 值。

2025-06-23 10:42:36 434

原创 通过sql统一更改所有字段的字符集

该方案通过动态生成批量修改语句,可有效处理数百个字段的字符集统一修改需求。

2025-06-13 16:20:25 339

原创 通过sql统一更改所有表的字符集

要统一修改数据库中所有表的字符集,可以使用以下SQL方法。假设要将字符集更改为。将上述查询的结果复制并执行,即可批量修改所有表的字符集和排序规则。

2025-06-13 16:15:54 486

原创 MySql基础知识:用于字符串匹配的FIND_IN_SET()函数

解释:apple 在字符串列表 orange,banana,apple,grape 中的第三个位置。3.如果找到 str 在 str_list 中的位置,返回其位置(从1开始计数)。5.如果 str_list 中有重复的字符串,返回第一次出现的位置。解释:grape 没有出现在列表中,因此返回 0。2.str_list:由逗号分隔的字符串列表。1.str:要查找的字符串。4.如果没有找到,返回 0。

2025-06-13 14:07:18 272

原创 Apache POI 的 FormulaEvaluator 来计算公式的结果

使用 Apache POI 的 FormulaEvaluator 来计算公式的结果

2025-06-12 19:38:16 1158

原创 Apache POI进行Excel导出

首先,需要在pom.xml中添加 Apache POI 的相关依赖。

2025-06-12 18:24:54 269

原创 java通过YearMonth类型保存年月和接收年月类型

【代码】java通过YearMonth类型保存年月和接收年月类型。

2025-06-10 14:13:49 239

原创 pig cloud框架自带通过token获取用户的工具类

【代码】pig cloud框架自带通过token获取用户的工具类。

2025-06-10 10:39:41 266

原创 mysql中判断某一字段等于空字符串赋值为0

在 MySQL 中,可以使用CASE表达式或IF函数来判断某个字段是否为空字符串,并将其赋值为0。

2025-06-06 10:28:02 435

原创 springboot中更新字段为null

在Spring Boot中更新字段为null时,需要注意数据库的默认行为以及实体类的配置。

2025-06-04 18:28:22 479

原创 springboot中校验11位中国大陆手机号的正则表达式

在Java中,@Pattern注解用于指定一个正则表达式模式,用于验证一个字符串的格式是否满足要求。@Pattern注解可以用于方法、字段和参数上。

2025-06-04 16:41:04 389

原创 PIG CLOUD框架实现同时连接多个数据源

实现,可以支持此组件的全部功能。Pig 的多数据配置,是基于。

2025-05-30 11:06:40 535

原创 MyBatisPlus 更新字段为空NULL的注解方式

【代码】MyBatisPlus 更新字段为空NULL的注解方式。

2025-05-30 10:55:17 346

原创 PIG CLOUD 实现自动登录

客户端认证处理:OAuth2ClientAuthenticationFilter 会通过调用 RegisteredClientRepository (数据库存储) 来判断传入的客户端是否正确,前端对于特定的通过sys_oauth_client_details创建客户端认证记录,access_token_validity访问令牌有效期(访问令牌有效期(秒))在sys_oauth_client_details表中创建免登录的客户端记录。

2025-05-29 15:03:14 310

空空如也

空空如也

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

TA关注的人

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