- 博客(101)
- 资源 (3)
- 收藏
- 关注
原创 限流算法-redis实现与java实现
本文介绍了四种主流限流算法及其特点:1)固定窗口算法通过时间切分计数,简单但存在临界突发问题;2)滑动窗口算法动态统计区间请求,精准解决临界问题但内存开销大;3)漏桶算法强制匀速处理,严格保护下游但灵活性差;4)令牌桶算法允许突发流量,平衡性能与保护。文中通过形象比喻和对比表格,清晰展示了各算法的核心逻辑、Redis实现方式、内存消耗和适用场景,为技术选型提供参考。
2026-01-26 17:51:14
1092
原创 Git_log_查看文件的修改记录不完整
摘要:使用git log查看文件历史时发现仅显示最近记录,而IDEA却能显示完整记录。经排查发现是修改项目包名导致Git将文件识别为删除重建。解决方法是用git log --follow <文件名>命令,该命令可跟踪文件移动前后的完整历史记录。Git能智能识别文件移动和重命名操作,解决了无法显示完整提交历史的问题。
2025-11-09 13:01:02
217
原创 Git_Rebase
它可以将与另外一个分支的最近的共同提交记录的后的两部分进行变基(重写),并以另外一个分支的提交记录在前,当前分支的提交记录在后的方式,插入到最近共同提交记录的后面,从而创建一个更线性的提交记录。自动变基,仅限于自动合并多个提交到一个提交,他会将带有 fixup 开头信息的提交 都自动合并到指定的提交中。删除这个提交,这个提交的内容也会丢失,如果后面的提交对其中有修改的话,也会产生冲突。我觉得这个提交记录一次性提交了太多东西,我想将这个提交拆成两份,分开提交。后的所有提交记录,并可以通过。
2025-11-09 12:59:19
1119
原创 恢复 git push -force 覆盖的提交记录
同事通过git reset和强制推送覆盖了远程临时分支,导致你的代码丢失。可通过git reflog找回本地记录的commitid,用git reset --hard <commitid>恢复代码,再合并同事的修改后强制推送。注意reflog仅保存本地90天记录,且执行git gc可能被清理。建议先通过git branch创建新分支备份代码。
2025-10-23 23:31:45
453
原创 Idea 查找未使用的代码
本文介绍了两种使用IDEA工具清理未使用代码的方法。方法1通过"Code-Inspect Code"功能进行全项目扫描,可检测未使用的声明并提供删除、注释等操作选项。方法2通过"Analyze Code-Run Inspection by Name"定向查找"unused declaration",支持更精确的搜索条件设置。两种方法本质相同,区别在于前者是全面检查,后者针对特定项。文章还提醒要注意框架特殊情况的处理,并建议开发者善用这些代码检查功能
2025-10-23 23:29:16
1040
原创 Redis 监听过期Key
Redis键空间通知机制通过Pub/Sub实现实时监控键变化,可配置监听特定事件(如过期、淘汰)。使用时需注意其"即发即弃"特性可能导致消息丢失,且不支持持久化。典型应用场景包括订单超时处理、配置刷新和限流控制。SpringBoot中可通过RedisMessageListenerContainer实现监听,但需处理消息丢失和重复消费问题。该机制适合对实时性要求高但允许偶发丢失的场景。
2025-09-23 23:56:08
1296
原创 Redis 发布/订阅
Redis发布订阅(Pub/Sub)机制摘要 Redis的发布订阅模式是一种基于内存的高性能消息通信机制,支持频道广播和通配符订阅。其核心优势在于高实时性和易用性,特别适合弹幕、即时通知等场景。但存在无持久化、消息易丢失、无状态回执和负载均衡缺失等缺陷,不适用于可靠性要求高的场景。通过SUBSCRIBE/PUBLISH等命令实现基础功能,SpringBoot可快速集成监听器(支持MessageListener或自定义方法)。需注意:订阅模式下的连接会阻塞,且Redis-CLI无法直接退订。
2025-09-21 22:50:25
1464
原创 Maven 处理依赖冲突
Maven处理依赖冲突的规则主要包括路径优先原则和第一声明优先原则。路径优先原则指Maven会选择路径最短的依赖版本,而第一声明优先原则指当路径长度相同时,Maven会优先选择在pom.xml文件中先声明的依赖版本。此外,子模块可以通过直接声明依赖版本来覆盖父模块的版本。如果自动处理导致引入低版本依赖,可以通过exclusions或optional手动解决。需要注意的是,如果高版本不兼容低版本,可能会导致编译失败或类找不到异常。最后,可以使用IDEA插件Maven Helper来快速查看和解决依赖冲突。
2025-05-09 11:27:37
1535
原创 Maven 编译指定模版
如果指定的模块依赖于其他模块,Maven 会自动构建这些依赖模块。基于SpringCloud 做的微服务项目,很多都是依赖公共模块下的包,并且多模板都是在一个项目下的。在maven打包时,我们选择指定的模块及依赖的模块进行打包,这样及可以减少打包的时间,也能确保完整性。这样太耗时间了,把流水线的时间拖的太长了。这个参数可以让你只构建特定的模块,而不是整个项目。是模块的路径,通常是一个相对路径或模块名称。:表示只构建指定的模块(module)。一起使用,确保依赖的模块也被正确构建。
2025-04-15 10:07:07
788
原创 SpringDataJpa-字段加解密存储
但是使用原生SQL的时候用加密字段进行查询的化,是不会使用类型转换器的。所以我这里增加了一个注解,来拦截标有该注解的参数,然后将参数的值进行修改,然后再进行查询。这里实现的化使用的是。Spring 提供了 AttributeConverter 用来将实体属性与数据库字段之间的逻辑转换。但是我们这边需要改变类型,只需要改变类型的值。遇到一个需求,对数据库中的某些字段进行加密存储,但是在各个服务流转中,需要是解密状态的。框架使用的是JPA。但是不能修改参数的值,所以这里使用@Around。
2024-12-17 17:11:58
906
原创 SpringAop-拦截参数带注解的方法
拦截方法中参数类型为String且带有@Crypto拦截方法中参数上带有@Crypto:零个或者多个:通配符。
2024-12-17 15:58:26
547
原创 ConfigurationProperties使用
@ConfigurationProperties是的一个注解 用于将配置文件,环境变量中的值映射到一个Java对象的属性上。
2024-08-21 18:27:38
569
原创 Spring Data REST
Spring-Data-Rest 为我们提供许多事件在持久化操作时进行扩展:新增模型数据前:新增模型数据后:更新模型数据前:更新模型数据后:多表关联保存的时候前 例如:OneToOne 等:多表关联保存的时候后 例如:OneToOne 等:删除模型数据前:删除模型数据后/*** 通过 user/search/findTopByAge 来访问* @return*//*** 通过 user/search/findTopBySex 来访问* 可以通过@Param 来指定参数名。
2024-08-16 10:21:11
812
原创 MySQL查询居然不区分大小写
MySQL查询居然不区分大小写!!!。提高灵活性:用户在输入数据时可能不会注意大小写,不区分大小写的查询可以更好地匹配用户的输入,提供更灵活的搜索体验。增强用户体验:对于用户来说,不区分大小写的查询可以减少输入错误带来的搜索问题,用户不需要记住确切的大小写格式。避免重复:不区分大小写的查询可以避免因大小写差异而产生的数据重复问题,确保数据库中的数据唯一性。
2024-08-16 10:17:41
805
原创 SpringDataJpa源码分析
我们在定义Repository的时候通常定义的时一个接口,而并没有去实现这个接口,那么Jpa是如何让开发者无需自己实现接口就可以使用Repository去操作数据库?!!!
2024-08-11 14:42:37
684
原创 Jpa-多表关联-OneToMany与ManyToOne
方法时则会出现更奇怪的问题,只插入主表,没有插入子表,但是对子表进行了更新操作。默认是不会删除关联表的行数据( 注意这里不会将关联表的行数据给删除,需要删除的话则需要开启。当进行更新操作时,将清空主表的关联数据或修改主表的关联数据时,会删除关联的子表数据。当对原有的子表集合进行操作时,会先将原有子表中所有与当前表有关联数据行的关联字段修改为。先查询是否存在主表及子表信息,更新完主表后,对子表进行插入,插入完成后,查询主表与子表的信息,将子表中所有存在关系行的关联字段改为。,并删除子表信息,再删除主表信息。
2024-08-06 23:47:41
1970
原创 Jpa-多表关联-OneToOne
JPA多表关联。默认是不会删除关联表的行数据( 注意这里不会将关联表的行数据给删除,需要删除的话则需要开启。方法用于重新加载实体的状态,从数据库中获取最新的数据,并覆盖当前持久化上下文中的实体状态。只有删除(DELETE)操作时进行级联操作,删除主表的同时会把子表也删除。但是查询的时候是会进行级联查询的。,而到我们获取关联表信息的时候再去对关联表进行查询,这里删除,更新,不会对关联进行操作。)操作时进行级联操作,更新时如果将关联属性修改为。级联查询后,对主表进行删除,再后关联表进
2024-08-06 00:51:08
1237
原创 线程池-拒绝策略
当 Java 提供的这四个拒绝策略你觉得不好用时,你可以自己定义这个拒绝策略来处理。也就是提供接口的实现即可。10,60,// 使用当发生拒绝策略的时候使用forkJoinPool这个线程来执行任务@Override10 个被执行,10 个被执行。当然这里不建议使用这种方式来处理,当大量任务会被执行拒绝策略的时候,这会导致的线程池无线扩充,最终导致内存异常等问题。这里只是举例慎用!!!!当然这里不建议使用这种方式来处理,当大量任务会被执行拒绝策略的时候,这会导致。
2024-07-14 01:12:22
1706
原创 Windows 默认以管理员运行打开CMD
win+r 默认以管理员打开运行CMD。需求:在运行页面输入`cmd` 希望是可以直接通过管理员方式打开的。希望是可以直接通过管理员方式打开的。(注意家庭版是没有这个的)需求:在运行页面输入。
2024-07-13 23:19:45
1188
2
原创 安装WindowsTerminal并设置默认以管理员身份运行启动终端
`Microsoft Store`打不开,且`WindowsTerminal`没有默认以管理员身份运行。下载msixbundle类型的安装包:https://github.com/microsoft/terminal/releases。打开终端勾选以管理员身份运行此配置文件即可。没有默认以管理员身份运行。进入下载文件的路径。
2024-07-12 18:23:17
2999
原创 单例模式实现方式
单例模式(Singleton Pattern)的主要目的是确保一个类只有一个实例,并提供一个全局访问点来访问该实例。在 Java 中,实现单例模式的方式有几种常见的方式。
2024-06-29 20:15:48
323
原创 判断线程/任务是否全部执行完成
判断线程/任务是否全部执行完成,这里所有的都没有指定线程池,所有他这里是使用的。最好不要使用内置的这个线程池,可以自定义一个,然后在创建的时候进行指定。我感觉方案3好用一些。但是如果不放心使用异步任务的话,直接使用方案1即可。都可以实现功能。
2024-01-22 16:37:21
1585
1
原创 SpringBoot 自定义Banner
SpringBoot 自定义Banner,内置变量spring-boot.version:SpringBoot的版本号spring-boot.formatted-version:带v的版本号[外链图片转存中…(img-kzLyUrAu-1705820973870)]直接在类路径下创建banner.txt来替换SpringBoot默认的输出最为方便,想要美化的话,可以通过一些工具来进行生成。
2024-01-21 15:09:56
1368
原创 Tomcat配置项目直接通过http://ip:port访问
Tomcat配置项目直接通过http://ip:port访问,解决项目重复加载两次的问题
2024-01-20 20:50:43
1410
原创 Oracle行转列函数,列转行函数
Oracle 可以通过PIVOT,UNPIVOT,分解一行里面的值为多个列,及来合并多个列为一行。行传列函数,及列转行函数
2024-01-18 18:18:18
5273
原创 非maven项目快速转换为maven项目
`maven-compiler-plugin`:解决在编译过程中识别不到第三方依赖的问题 `maven-war-plugin`:解决在部署后可以让第三方包被tomcat识别 使用这两个插件让我们可以无需一个一个的添加`denpendency`,之后的有再补充的`jar`包,可以通过`denpendency`交给`maven`来管理。
2024-01-15 14:02:26
1457
原创 pom.xml中resouces标签
resources是maven在编译项目时将资源文件或者额外的文件赋值到输出目录中。通常包括配置文件,属性文件,模板文件,jar包等。resouces中可以包含resouce。也就是可以自定义的配置多个资源配置。
2024-01-14 21:18:34
1890
原创 解决Unexpected record signature 0X9&&maven 资源过滤
我们有个需求是根据`excel`模版导出一个`excel`表。我们的项目是SpringBoot,所以理所当然的把这个模版文件放到了,`resources`文件夹中。但是在导出文件的时候却遇到了`invalid code lengths set`及`Unexpected record signature: 0X9`的错误。maven 资源过滤
2024-01-13 23:36:03
3199
原创 maven配置多个远程仓库
单个库的话就使用mirrors即可,配置方便,多个库正常情况下只有一个库生效。多个库的话就使用profiles即可,配置多个profile,多个profile的加载顺序是从下往上,依次加载。并且需要配置激活对应的仓库配置。
2024-01-02 23:04:14
2201
1
原创 解决idea 通过build project 手动触发热部署失败
运行项目的过程中,并且保证(不添加方法,不修改方法名)一定的规则的情况下,可以通过。这里修改了方法名后,他就会提示热部署交换文件失败了,需要手动重启项目。在只修改业务逻辑的情况下,能正常交换成功。来手动热部署项目,也就是会交换。
2023-12-07 22:15:47
1226
原创 Spring三级缓存处理循环依赖的过程
当Spring遇到循坏依赖时,它通过使用三级缓存以及提前暴露不完整的对象来解决问题。举例:在A实例化完成后,Spring会将他放入到三级缓存中。A此时并没有进行初始化,当A进行属性赋值的时候,如果扫描到A对象依赖B对象的话,则又会去实例化B对象,然后再把B对象放入到三级缓存中,当B进行属性赋值的时候,发现需要依赖A对象,那么这个时候就出现了循环依赖的问题了。然后从三级缓存中取出A对象,这里的A对象被包装成了一个的一个lambda。
2023-12-01 00:01:37
1296
GoogleChromePortable64_86.0.4240.183_online.paf.exe
2021-07-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅