- 博客(859)
- 资源 (18)
- 收藏
- 关注
原创 springboot yml 文件无法识别中文字符问题
YAML配置中的中文key确实需要特殊处理,特别是在复杂嵌套结构中。虽然简单场景下可能工作,但为了确保兼容性和稳定性,使用"[中文key]"格式是最稳妥的做法。
2025-11-19 22:42:00
213
原创 Nginx请求超时
前段时间做一个需求,就是从页面下载excel的需求,数据都是存在数据库里,开始咔咔一顿AI写代码,写完自己本地启动测试,ok,一切都是那么美好,接口正常返回数据,结果,结果问题就来了,上到测试环境,从页面点击下载的时候,报错,F12一看接口竟然返回了404!先说一下我们的项目的架构:前端首先请求Nginx,然后 NG 里做了请求代理转发到gateway,由gateway 路由转发到具体的service。
2025-11-08 12:23:07
376
原创 如何保证接口幂等性
接口幂等性是指:无论调用接口多少次,对系统状态的影响都与第一次调用一致。简单说就是"重复请求与单次请求效果相同"。金融支付类:推荐Token机制+唯一索引库存扣减类:推荐乐观锁机制订单创建类:推荐唯一索引约束数据更新类:推荐状态机或版本号控制关键是要根据业务特点选择最合适的方案,并在系统设计初期就考虑幂等性问题。
2025-10-26 16:56:54
323
原创 JWT中secret的作用
可以生成没有 Secret 的 JWT。当使用算法时,JWT 不会进行签名验证,这意味着任何人都可以创建或修改这些 token。
2025-10-08 16:18:36
234
原创 接口访问速度突然变慢,怎么排查
2. 还是线程池,是否有多个业务共用一个线程池的场景,建议在资源允许的情况下,每个业务场景配置自己的线程池,一个是比较灵活,可以根据实际业务场景配置线程池的参数,防止配置过少或过多;现在大多数的业务都微服务化了,可能一个请求需要调用好几个甚至几十个ms才能拿到最终的结果,但是如果一旦中间某个servcie出现了问题,影响的将会是整条调用链路,就比如某个ms突然变的很慢,那么整个请求也会跟着一起变慢,怎么排查这个问题,然后怎么解决?1. 是否线程池配置的参数有问题,比如核心线程数,或者最大线程数是否合理。
2025-09-25 21:34:50
345
原创 jvm类加载过程
顺序:加载 -> 验证 -> 准备 -> 解析 -> 初始化。注意:《Java虚拟机规范》允许解析阶段在某些情况下在初始化之后开始,这是为了支持Java的动态绑定(运行时多态)。懒加载:JVM并不是在启动时就把所有类都加载完,而是按需加载(延迟加载),只有在类被“主动使用”时才会初始化。双亲委派模型:类的加载是由类加载器完成的。JVM通过双亲委派模型(Parents Delegation Model)来组织类加载器之间的关系,从而保证了Java核心类的安全性和唯一性。
2025-09-24 10:36:20
982
原创 synchronized锁升级过程
锁升级的完整过程:对象初始化后,处于无锁状态。当第一个线程访问时,JVM 会尝试为其加上偏向锁(如果启用)。当第二个线程尝试获取锁时,撤销偏向锁。两个线程开始通过 CAS 操作竞争轻量级锁。如果竞争轻微(如线程交替执行),轻量级锁自旋成功,则保持。如果竞争加剧(如自旋超过一定次数,或自旋线程数超过CPU核心数的一半),为了避免CPU空转,JVM 将轻量级锁升级为重量级锁。未获得锁的线程停止自旋,被挂起并进入阻塞队列。锁的优缺点对比:锁状态优点缺点适用场景。
2025-09-23 09:41:08
532
原创 G1垃圾回收器的优势
G1垃圾回收器通过分区化内存管理、并发回收、增量压缩和预测性模型,解决了传统GC的许多问题,能够在低延迟和高吞吐量之间取得良好的平衡。因此,它被推荐为大多数现代Java应用程序的默认垃圾回收器。
2025-09-19 15:25:01
568
原创 redission 看门狗机制
Redis 的“看门狗”是 Redisson 框架为解决分布式锁业务执行超时问题而设计的自动续期机制。它通过后台线程定期刷新锁的过期时间,确保只要客户端进程存活且未主动释放,锁就不会过期,从而保障了分布式锁在长耗时业务场景下的安全性。这是 Redisson 相比原生 Redis 命令或简单客户端实现分布式锁的一个重要优势。使用时需理解其默认行为和配置选项。看门狗怎么知道线程有没有执行完任务?Redisson 的看门狗机制并不直接监控业务线程的执行状态,而是通过一种巧妙的 。
2025-09-17 10:14:32
868
原创 kafka如何保证消息不被重复消费
对于 消费消息 -> 重新发送kafka -> 提交offset 这个业务场景来说,kafka 事务能保证在程序出现异常的情况下,重新发送到 kafka 的消息无效,也就是消费者看不到这些消息,然后 offset 提交失败,也就是说消费者还是需要从上一次的offset继续消费消息。再者, 需要手动提交offset,而且提交的间隔不宜过长,比如可以设置每消费10条消息就提交offset,这样即使消费失败,最多也就需要判断10条消息的id,防止消息过多,判断这么多消息是否被消费过也是一种性能浪费。
2025-09-16 09:46:06
342
原创 分布式系统cap三者为什么不能同时满足
CAP定理的核心结论是:由于网络分区不可避免,分布式系统必须在发生分区时,在一致性(C)和可用性(A)之间做出选择。不存在一个完美的分布式系统能同时满足三者,实践中都是在根据业务场景进行权衡(CP or AP)
2025-09-16 08:52:19
1020
原创 为什么要equals方法和hashcode方法一起重写
对象不会被放入哈希集合,为了代码的健壮性、可维护性和遵守 Java 规范,。 这几乎是 Java 开发中的一条铁律。这个反例清晰地展示了只重写。类例子,并尝试将其放入。的工作原理:**。
2025-09-10 15:03:35
918
原创 redis key过期后会立马删除吗
场景删除机制延迟性Key 过期后被访问惰性删除立即删除实时(访问时触发)Key 过期后未被访问,但被定期删除抽中定期删除清理秒级延迟(取决于抽查频率和运气)Key 过期后长期未被访问且未被抽中可能滞留内存不确定(直到被访问或抽中)
2025-09-10 14:50:20
642
原创 Redis如果有大量的请求一时处理不完,这些请求会存放在哪里
你可以把整个过程想象成一个网红餐厅:TCP 内核队列 = 餐厅门外的等候区客人(请求)到来后,如果里面坐满了,先在门外的椅子上排队。和somaxconn就相当于门外等候区的座位数量。座位满了,新来的客人就会被劝离(连接被拒绝)。Redis 内部队列 = 餐厅内已下单但等待制作的订单客人已经被领进门坐下并点了菜(请求已被 Redis 接收并解析),但厨房(Redis 主线程)只有一个厨师,一次只能炒一盘菜。订单需要在厨房的订单栏上排队等待制作。
2025-09-09 09:29:03
585
原创 redis里多线程的应用具体在哪些场景
超高并发连接:当有数万个客户端同时连接时,网络 I/O 的总压力非常大。大流量管道(pipeline):客户端使用了 pipeline,一次发送大量命令,读取和解析这些命令包的开销很大。返回大量数据的操作:例如执行一个LRANGE命令获取上万个元素,将结果写回 socket 的网络输出量很大。重要结论:“慢”的不是CPU,而是I/O:多线程I/O解决的是网络读写这个瓶颈,而不是CPU计算瓶颈。命令执行本身在内存中极快,通常不是问题。命令执行仍是单线程。
2025-09-09 09:11:00
864
原创 redission实现读写锁的原理
Redisson 实现分布式读写锁的核心原理是 + ,在保证强一致性的同时实现高效的读并发(读不阻塞读,写阻塞读)。
2025-09-06 10:53:37
699
原创 hashmap计算key的hash的时候为什么要右移16位
而计算index或者说索引或者说桶的时候,是用hashmap的数组长度-1 & 上面计算的hash值,所以如果上面提到的hash值包含整个hash的32位信息的话,极大的减少了hash碰撞的可能性。hashmap计算key的hash的时候,右移16位目的是为了让低16位包含完整的hash值的信息,因为大部分情况下,hashmap的数组长度是小于2的16次方的,
2025-08-30 21:17:53
269
原创 java 和 synchronized里的CAS问题
java多线程自旋的CAS是什么意思,详细说明在 Java 多线程中,自旋的是一种,用于在高并发场景下实现线程安全。它结合了自旋(即线程在不断尝试获取资源时不会立即阻塞)和 CAS 原子操作,从而在一定条件下实现更高效的线程同步。Java 的java复制输出结果是:复制whileJava 中的 CAS 操作依赖于 sun.misc.Unsafe类,底层通过硬件指令(如 x86 架构的CMPXCHG指令)实现。以下是的方法的实现:java复制ABA。
2025-08-18 11:17:11
644
原创 IDEA中查看方法的调用链
标注⑤:调用关系树,譬如说:A方法中调用了B方法,B方法中调用了C方法和D方法.....(因为我们的项目有好多module,所以用这个的时候也会把调用JAR包,JDK中的方法显示出来,这个就很烦)解释说明:标注④:被调用关系树,譬如说:A方法被B方法和C方法调用,B方法又被D方法调用,C方法被E方法调用.....2.1把光标放在方法名上,右键,选择Analyze -->Data Flow to Here命令(如图)3 查看一个Java类、方法或变量的直接使用情况(和2的功能主要区别在于,2是调用链)
2024-08-25 13:14:42
1742
1
原创 MapStruct参数拷贝
我们上面代码里面可以看到,处理参数和返回参数都要经过不同的转换,这里面看似乎增加了不少工作量,主要是测试案例写的比较简单,真实场景中,如果你不区分,就有可能引起各种问题,如信息泄露等。所以定义了不同的层次,当然,根据需要选择。好了,上面就是基本用法了,至于更复杂的用法,推荐查看官网案例。2.添加转换接口类,可以按照不同业务写多个接口,加上注解。来拷贝对象,但是这不是完全的深拷贝,我们可以用。这上面只是简单的参数相同和集合映射的例子,我们先看看前面的部分代码。另外,上面我们使用了。
2024-06-26 08:37:54
661
原创 spring @Order注解
Order多个相同类型处理器的执行顺序:例如多个异常处理器处理相同类型的异常。多个切面(Aspect)的执行顺序:在 AOP 中控制不同切面的执行先后顺序。多个过滤器(Filter)的执行顺序:在 Spring Web 中控制过滤器的执行顺序。通过使用@Order注解,你可以明确指定这些组件的执行顺序,从而确保应用行为符合预期。
2024-06-18 20:44:02
636
原创 Springboot应用设置跳过SSL证书认证
虽然这个类在开发和测试环境中可能有用,但在生产环境中使用是不安全的,因为它会使你的应用程序容易受到各种 SSL/TLS 攻击。请确保在生产环境中进行适当的证书验证,以保护数据传输的安全性。
2024-06-18 10:50:21
2374
1
原创 jpa下hibernate的ddl-auto的各种属性
一般选择validate/update/none,绝对不能选 create, create-drop,update能帮助建表。如果希望实体类发生改动而数据库表做出相应的更改且不破坏数据库现有的数据,要将spring.jpa.hibernate.ddl-auto属性值设置为update。这里还有一点,就算把ddl-auto设置成update值,也不能识别对表结构的所有更改,往往只能识别出增加的字段,比如修改字段名,修改字段类型或者删除一个字段都是不能够识别的。
2024-06-18 10:15:12
2725
原创 CSRF 攻击详解
禁用 CSRF 保护有其合理的应用场景,特别是在开发 RESTful API、使用其他防护措施、内部应用和非浏览器客户端时。然而,需要谨慎对待这个决定,并确保在适当的场景中启用 CSRF 保护,以防范潜在的安全风险。
2024-05-22 22:09:28
5411
原创 spring validator使用
在开发现代应用程序时,数据验证是确保用户输入的正确性和应用程序数据完整性的关键方面。Spring Boot 提供了强大的数据验证机制,使开发者能够轻松地执行验证操作。本文将深入介绍 Spring Boot 中的 Validation,以及如何在应用程序中正确使用它。因Springboot的默认内置了(Spring boot 2.3以前版本),虽然也能做到数据校验,但是考虑到是一个抽象层,使得验证框架的具体实现变得可插拔。这意味着,除了,开发者可以选择其他符合 Bean Validation 规范的实现。
2024-05-16 22:23:07
937
原创 (适配器模式)当接口要加入新方法时,我后悔没有早点学设计模式了
通过适配器模式和策略模式,我们即可以保证具体的实现类实现共同的接口或继承共同的基类,同时,又能在新增功能(方法)的时候,尽可能的保证设计的清晰。不像之前那种破罐子破摔的方式,接口和实现类几乎脱离了关系,每个实现类,各玩儿各的。
2024-05-16 22:20:58
818
原创 CompletableFuture 异步关于异常的坑
在使用异步CompletableFuture时,无论是否有返回值都要调用get()/join()方法,避免程序执行报错了,仍然返回成功。结果:接口返回成功,控制台打印异步线程异常日志,主线程没有打印异常日志。结果:结果返回成功,控制台打印异步线程异常信息,主线程没有打印异常信息。结果:结果返回成功,控制台打印异步线程异常信息,主线程没有打印异常信息。处理,如果只是对异常做处理,不涉及对上一个异步任务结果的情况,调用。结果:接口返回失败,控制台打印异常日志。结果:接口返回成功,控制台打印异常信息。
2024-05-14 20:34:49
631
原创 SpringBoot接收参数的19种方式
https://juejin.cn/post/7343243744479625267?share_token=6D3AD82C-0404-47A7-949C-CA71F9BC9583
2024-05-14 20:31:42
427
原创 springboot @Async 失效的9种场景
这个问题还是比较有意思的,今天这篇文章总结了@Async注解失效的9种场景,希望对你会有所帮助。
2024-05-08 18:07:41
1408
转载 Spring 核心扩展点
一般情况下,Spring通过反射机制利用bean的class属性指定支线类去实例化bean,在某些情况下,实例化Bean过程比较复杂,如果按照传统的方式,则需要在bean中提供大量的配置信息。使用场景:用户可以扩展这个类,来为要实例化的bean作一个代理,比如为该对象的所有的方法作一个拦截,在调用前后输出一行log,模仿。可以看到,该类用于执行各种驱动接口,在bean实例化之后,属性填充之后,通过执行以上红框标出的扩展接口,来获取对应容器的变量。其作用是在bean的初始化阶段,如果对一个方法标注了。
2024-04-04 21:31:08
150
转载 springcloud ConfigDataContextRefresher刷新central config
首次请求/adviser/loss/test接口,会发现返回=》张三:18,然后修改git上的配置,将年龄修改为20,再次请求/adviser/loss/test接口,发现配置并未更新。关于新版本的实现属实不太理解(功力尚浅),我个人也在学习和总结,后续如果有新的进展,我也会及时更新的,如果您有相关资料或见解,也烦请指教。在2处,重新加载配置,在当前的版本,有2中实现方式:一种是兼容旧版本的实现,一种是新版本的实现,这两种实现分别在。放入缓存中(缓存中没有则放入,有则返回原对象),然后调用。
2024-03-26 18:05:41
440
原创 @JsonProperty作用
JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。这里需要注意的是将对象转换成json字符串使用的方法是fasterxml.jackson提供的!jackson的maven依赖。
2024-03-25 17:01:18
1693
1
转载 OAuth2.0通俗易懂的解释
是目前最流行的授权机制,用来授权第三方应用,获取用户数据。这个标准比较抽象,使用了很多术语,初学者不容易理解。其实说起来并不复杂,下面我就通过一个简单的类比,帮助大家轻松理解,OAuth 2.0 到底是什么。
2024-01-30 16:01:13
263
原创 谷歌浏览器启用实时字幕功能
您可对字幕进行自定义,以使其更便于阅读。使用字幕框上的箭头收起和展开字幕。选择字幕以将其移至浏览器中您偏好的位置。更改字幕字体、大小、颜色和不透明度。更改背景颜色和不透明度。在计算机上打开 Chrome。在右上角,依次选择“更多”图标设置。在“设置”页面底部,依次选择无障碍字幕偏好设置。在计算机的系统偏好设置中,选择您想使用的自定义项。
2024-01-05 20:32:38
20620
1
原创 TaskDecatator用法
方法的目的是让你可以在实际的任务执行之前,对任务进行一些额外的处理。只是一个自定义装饰行为的接口,具体的上下文传递逻辑需要根据你的实际应用场景来设计。例如,在执行异步操作时,你可能需要将主线程的一些上下文信息(比如用户身份验证令牌或请求上下文信息)传递给执行异步操作的线程。,它会捕获提交任务时当前线程的上下文,并在任务实际执行前将这个上下文设置到执行任务的线程中。方法中的逻辑会在你的任务代码之前执行,允许你设置或者修改线程的状态,以便这些状态可以在任务执行时被使用。方法,然后再执行你的任务代码。
2023-12-19 14:57:30
2738
原创 redis实际应用实现合集
首先需要把10个观众的id(具体是什么id可以根据实际业务情况自己定义)放到redis 的 set 集合里。从10名观众中抽取奖项,其中一等奖1人,二等奖2人,三等奖3人。插入10个观众,act:002是活动的名字,后面分别是观众id。从10个观众中随机抽2名幸运观众。需要用到redis的。
2023-12-11 21:20:44
333
mybatis逆向工程jar组件包
2018-01-24
c3p0-0.9.2.1和mchange-commons-java-0.2.3.3
2017-11-22
mercurial_extension.zip
2019-06-03
matlab-libsvm
2015-04-05
aspectjweaver-1.8.7和aopalliance1.0
2017-11-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅