- 博客(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
原创 SpringBoot中事务失效的场景及原因分析
缺少注解或注解属性配置错误(如isolation等),导致事务未按预期生效。注解需添加到public上,且需通过代理调用(如通过Spring容器注入的Bean调用)。使用MySQL时,若表引擎为MyISAM(默认不支持事务),需改为InnoDB。默认仅对和Error回滚。若抛出检查异常(如)且未在注解中声明,事务不会回滚。
2025-08-12 10:49:20
677
原创 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
原创 Pig Cloud使用Debezium实时监听数据变更
Debezium 是一个,专门用于,并将这些变更以事件流的形式发送到消息队列(如Kafka),供其他服务消费。它相当于数据库的"显微镜",能毫秒级感知数据变动:读取MySQL的binlog。
2025-07-23 20:56:39
383
原创 Springboot服务启动过程中执行代码的两种机制机制
所有Bean已初始化完成,可安全依赖其他组件。方法,参数为字符串数组形式的原始命令行参数。接口指定执行顺序,数值越小优先级越高。使用场景:每天凌晨执行历史订单对账。对象,提供更丰富的参数解析功能。(如数据迁移、定时任务启动)。多个Runner实现可以通过。:应用上下文刷新完成(接收原始命令行参数(
2025-07-23 20:26:14
626
原创 一篇吃透多线程的相关概念
Runnable// 自定义线程工厂group = (s!= null)?// 设置合理的线程优先级// 设置异常处理器});return t;// 优先级任务包装类@Overridetask.run();@Override// VIP订单优先return -1;return 1;// 相同优先级按创建时间排序// 自定义拒绝策略@Override// 记录被拒绝的任务// 尝试降级处理。
2025-07-19 17:33:12
935
原创 修改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
原创 通过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
原创 springboot中校验11位中国大陆手机号的正则表达式
在Java中,@Pattern注解用于指定一个正则表达式模式,用于验证一个字符串的格式是否满足要求。@Pattern注解可以用于方法、字段和参数上。
2025-06-04 16:41:04
389
原创 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关注的人
RSS订阅
1