自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Boot 双数据源配置

双数据源是指在一个应用程序中同时配置和使用两个不同的数据库连接。一个连接订单数据库,处理业务数据一个连接用户中心数据库,处理用户信息这样的架构设计可以实现数据隔离、业务分离,提升系统的可维护性和扩展性。实现原理基于动态切换。

2025-07-14 23:02:25 768

原创 Spring Boot 集成 LangChain4j 示例

LangChain4j 是 LangChain 在 Java 生态下的实现,它是一个开源库,帮助你更方便地在 Spring Boot 应用中集成大语言模型(如 OpenAI 的 GPT-4)来构建智能应用,比如智能问答、聊天机器人、RAG(检索增强生成)系统、Agent、多轮对话等。

2025-06-18 08:54:14 594

原创 Java调用大模型API实战指南

随着大语言模型(如 OpenAI、DeepSeek、通义千问等)的发展,我们可以很方便地用 API 接口调用这些强大的智能助手。在 Java 项目中调用这些模型,可以实现智能问答、代码生成、摘要提取等功能。

2025-06-06 17:29:00 805

原创 免费论文查重与AI检测工具推荐

对于使用AI辅助写作的用户来说,这是一个非常有用的“自查”工具,提前预防因AI生成率过高被系统判为抄袭。虽然与知网等权威数据库略有差异,但对于检测内容原创度、修改方向来说非常实用。对于毕业论文查重查AI有一定参考作用。PaperPass 是一个较早进入市场的查重系统,数据库覆盖较全,适用于。PaperYY 除了查重功能外,

2025-06-03 21:25:46 1382

原创 别再“假装很努力”了,你可能患了这些数字精神病

描绘了一种当代人因深度使用互联网、沉浸在数字环境中而产生的一系列心理、行为和生理反应。:你占有信息,还是信息占有你?定期自检:你的数字行为是让生活更好,还是更疲惫?举个例子理解:你刷短视频停不下来,读书却坐不住,这不是懒,而是你的大脑。,这就是“短视频脑”这种典型的“赛博症状”。

2025-05-16 08:51:10 719

原创 SpringBoot多环境配置

Spring Boot 项目的多环境配置方案,通过 application.yml 配合 application-xxx.yml,可灵活切换开发、测试和生产环境。1、java -jar app.jar --spring.profiles.active=prod 【命令行指定(最常用)】3、 application-prod.yml —— 生产环境配置。2、application-dev.yml —— 本地开发配置。1、application.yml —— 统一入口配置。基于不同环境加载不同的Bean。

2025-05-02 10:15:00 500

原创 写Python代码,需要准备什么?

Python 的开发环境由解释器 + IDE构成,类似 Java 中的JDK + IDE。

2025-04-15 16:44:22 480

原创 Chrome浏览器插件--喝水提醒小助手

浏览器插件(Browser Extension)是一种可以扩展浏览器功能的小型程序。通过插件,开发者可以修改网页内容、与浏览器交互、添加新功能等。我会开发一个喝水提醒小助手插件。API 名称说明使用场景举例提供扩展的生命周期管理、消息传递等功能获取扩展信息、监听安装事件、消息通信本地存储 API,支持local和sync存储保存用户设置、缓存数据操作浏览器标签页,包括获取、更新、创建、关闭等获取当前活动标签页、注入脚本动态注入脚本或样式表(Manifest V3 使用)

2025-04-13 15:16:38 913

原创 redis大key排查指南

大 key 是指:单个 key 本身的内容过大(如一个超长字符串、超长列表、集合等)或者一个集合类 key(如 hash、list、zset、set)中 元素数量过多Redis 是单线程模型,一次性访问、删除大 key 可能阻塞主线程导致其他请求延迟。常见的大 Key 类型数据类型表现形式String超大字符串,如缓存整页 HTML、全文数据等List超长队列,如上万条记录未消费Hash字段数量巨大,如几万个属性包含大量成员。

2025-04-12 17:13:38 1462

原创 VS Code配合Prettier自动格式化代码

每次修改 .prettierrc.cjs 配置文件后,如果发现保存代码时格式化没有生效,可能是 VS Code 插件缓存未及时刷新。建议此时重启 VS Code,确保新的配置被正确加载并生效。

2025-04-10 10:24:58 4320

原创 接口HDMI,DP,USB,Type-c,雷电...

最近打算再入手一台显示器,翻了不少小红书各种推荐帖,发现网上的信息比较零散。于是决定自己动手总结一份【欢迎各位补充…】,方便后续查阅,也便于持续补充更新。选择显示器接口时,核心是匹配你的设备(显卡/笔记本接口)显示器以及使用需求。优先选择数字接口:HDMI 和 DisplayPort 是主流,性能远超 VGA/DVI。按需选择版本:不一定追求最新,满足需求即可。4K@60Hz 办公 HDMI 2.0/DP 1.2 足矣;高刷游戏则需 HDMI 2.1/DP 1.4+。别忘了线缆。

2025-04-07 10:08:17 1760

原创 Java监控与分析工具

(Java Virtual Machine Statistics Monitoring Tool)是 JDK 自带的命令行工具,用于监控 JVM 的 GC(垃圾回收)行为、类加载、编译等。在 Java 开发过程中,了解并掌握 JVM(Java 虚拟机)监控与分析工具对于排查性能问题、优化应用至关重要。是 JDK 自带的 GUI 工具,提供线程、堆、GC 监控及分析功能。是 Java 自带的 GUI 监控工具,提供基本的 JVM 监控能力。是功能最强大的 JVM 诊断工具,可以替代。

2025-04-04 11:27:25 1101

原创 VS Code 必装插件推荐

📌 作用:通义灵码,为开发者提供智能代码建议、代码自动补全、错误检测和修复等功能,提升开发效率。:为 VS Code 提供全面的 Markdown 编辑功能,包括实时预览、自动生成 TOC(目录)、语法高亮、格式化等,提高 Markdown 文件编辑效率。:支持一键运行 JavaScript、Python、Java、C/C++、Go 等语言代码,免去手动打开终端执行命令的麻烦。📌 适用:前端开发,特别适合 HTML、CSS、JavaScript 项目,快速查看代码改动效果,提升开发效率。

2025-04-02 21:02:47 2832

原创 使用 GitHub Pages 快速部署静态网页

支持直接从 GitHub 仓库中部署 HTML、CSS、JavaScript 等。GitHub Pages 来部署前端框架(Vue 3 + Vite)项目。这个包用于将构建好的项目推送到 GitHub 仓库的。替换为你的 GitHub 用户名。,适用于个人博客、项目展示页面等。一般前面操作对了就可以直接访问。是 GitHub 提供的免费。

2025-03-25 13:16:20 1089

原创 用Trae辅助Java开发

只有一次提问。中间没有干预。时间出现了8h的时差,添加任务我在后面代码改动了一下。❤觉得有用的可以留个关注~❤。

2025-03-24 12:46:42 2686

原创 npm安装依赖报错EPERM: operation not permitted快速解决

通过将目录修改为用户目录(如 C:\Users\35571),可以避免权限问题,【用户目录是用户私有的,操作系统会确保用户对自己的目录有最高权限。设置到用户目录下,避免权限问题。

2025-03-24 08:48:53 1405

原创 如何编写一个Spring Boot Starter

这只是一个比较简单的示例。根据具体场景实现丰富的 starter。注意:命名规范:Starter 通常命名为 xxx-spring-boot-starter,自动配置类为 xxxAutoConfiguration。版本兼容性:确保与目标项目的 Spring Boot 版本一致。发布:考虑将 Starter 发布到 Maven Central 等。【deploy发布到远程仓库(maven私服)】❤觉得有用的可以留个关注ya~~❤。

2025-03-22 13:59:06 510

原创 HashMap添加元素的流程图

可减少空间浪费,但会增加哈希冲突的概率;较低的负载因子则减少哈希冲突,但会增加内存开销。结构,当哈希冲突较多时,链表可能变得很长,导致查询性能从 O(1) 退化到 O(n)。回链表,以减少不必要的树操作开销,提高小规模数据场景下的性能。从JDK8开始,为了优化哈希冲突情况下的查找性能,(如果没引入红黑树,则最坏查找复杂度是O(n))在 JDK8,为了优化链表查询性能,引入了。时,链表会转换为红黑树。,以减少动态扩容带来的性能损耗。,将最坏情况下的查找复杂度从。新容量 * 0.75。

2025-03-20 23:18:33 1102

原创 AI 工具提升你的工作效率

如今各类 AI 层出不穷,不必担心 AI 会抢走我们的饭碗。相反,我们应该欣然接受AI,让它成为提升我们工作效率的得力助手。AI 在编程、写作、对话、创作等领域各有专长,选择合适的工具能大幅提升效率。感觉我们都是对AIGC的使用大多还停留在表面,局限于简单的“你问我答”模式,未能深入挖掘其潜力。只有充分利用AI的强大能力,我们才能真正提升工作效率,释放更多创造力和生产力。在使用AI时,掌握有效的提问技巧能够显著提高获取理想答案的效率。

2025-03-03 17:00:04 463

原创 利用Arthas动态修改Java代码:告别繁琐的打包与部署

步骤一:反编译代码,使用jad命令反编译目标类,获取当前运行的 Java 源代码。步骤二:修改代码,根据需求编辑反编译出的源代码,通常在本地进行微调。步骤三:内存编译,使用mc命令将修改后的 .java 文件编译为 .class 字节码文件,直接在内存中完成。步骤四:动态加载,通过redefine命令将新的字节码加载到 JVM,实时更新运行中的类,无需重启服务。

2025-02-25 19:45:14 1042

原创 Java 开发中用于打印完整 SQL 语句的插件(嘎嘎有用)

在 java 开发中,sql 日志常以问号(?)作为参数占位符,这使得调试时需要手动将问号替换为实际的参数值。对于参数较少的情况,手动替换相对简单;但当参数较多时,这一过程不仅繁琐,还容易出现错误。一款IDEA插件,它能够自动将问号占位符替换为相应的参数值。打印出完整的 sql 语句。第一步:配置文件中设置日志级别为 debug。有对应的插件为我们解决了这个问题。

2025-02-20 21:46:45 790

原创 MyBatisPlus 自定义拦截器:全面记录 SQL 执行日志

/ 记录 SQL 日志的日志器 public static final Logger log = LoggerFactory . getLogger("sys-sql");/*** 查询前的拦截* @param executor Executor实例* @param ms MappedStatement实例* @param parameter 查询参数* @param rowBounds 分页信息* @param resultHandler 结果处理器。

2025-02-19 09:00:00 1496

原创 SpringBoot整合ClickHouse数据库教程

ClickHouse 是一个开源的列式数据库,专为 OLAP(联机分析处理)工作负载设计,适合大规模的数据分析。成功整合 Spring Boot 与 ClickHouse 数据库,搭建了一个基础 Demo,可根据实际需求扩展功能。可以使用 MyBatis 简化数据访问。只需更换 MySQL 驱动即可,多对比学习。当然,ClickHouse 还具备许多强大功能,推荐查阅相关教程深入了解。❤觉得有用的可以留个关注❤。

2025-02-18 22:19:43 1293

原创 Spring Boot中使用Flyway进行数据库迁移

如果数据库的当前版本是 1,而你的迁移脚本的版本号也是 1 或者更低,Flyway 会认为这些脚本已经执行过,因此不会再次执行。启动 Spring Boot 应用,Flyway 会自动执行 db/migration 目录下的迁移脚本,并将执行记录存储在 flyway_schema_history 表中。手动执行 SQL 脚本不仅容易出错,也难以维护数据库版本的一致性。如果本地迁移脚本的内容发生了更改(例如,修改了 SQL 脚本),Flyway 会检测到校验和不匹配,从而抛出此错误。

2025-02-14 22:59:49 973

原创 力扣hot100--2

(Binary Tree)是一种树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树在算法和计算机科学中具有广泛的应用,特别是在表达式解析、搜索算法、排序算法、优先级队列、堆和其他数据结构中。递归:迭代:回溯:动态规划:分治法:原题链接:二叉树的中序遍历方法2–使用栈栈(Stack):利用栈来模拟递归的行为。栈在遍历左子树时保存节点,确保能够回到父节点,并遍历右子树。对于二叉树的中序遍历,访问节点的顺序是:。代码的关键在于使用了一个来模拟递归调用的过程。题目: 二叉树的最大

2025-01-27 10:46:06 687

原创 设计模式-策略模式

在项目开发过程中,我接连几次运用策略模式,对它的理解也随之愈发深刻。当我写这篇博客突然想到一个非常适合这个策略模式的例子:支付方式选择(支付宝、微信、银行卡支付等)。

2025-01-21 09:55:17 442

原创 Jackson 中的多态类型支持:@JsonTypeInfo 和 @JsonSubTypes 使用技巧

它们的作用是在序列化和反序列化过程中,帮助 Jackson 识别和处理父类与子类之间的关系。注解用于列出所有可能的子类类型,并为每个子类指定一个唯一的名称(或标识符)。注解用于指定在序列化和反序列化过程中如何处理类型信息。:指定类型信息如何包含在 JSON 中。jackson 坐标:(三个依赖保持版本一致):指定类型信息的标识方式。时,指定类型信息属性的名称。表示在 JSON 中添加一个名为。是 Jackson 库中用于处理。的字段来存储类型信息。

2025-01-16 16:42:18 1860

原创 DataGrip的数据库驱动的离线安装

请确保下载的驱动版本与您所使用的数据库版本完全兼容,以避免出现连接或功能异常。在某些工作环境中,由于网络访问受限,可能无法自动下载所需的数据库驱动。

2025-01-10 15:24:59 763 1

原创 初步了解瀚高数据库

要学会和 MySQL 对比,大差不差的。

2024-12-26 22:15:52 1382

原创 力扣hot100

因为 HashSet 使用的是对象的引用进行比较,所以如果两个节点是同一个节点(即内存地址相同),HashSet 会检测到这个重复的引用,从而判断链表中存在环。我的思路是通过排序后的字符串作为哈希表的键,将原字符串作为值添加到相应的键对应的列表中。否则,更新 merged 列表中最后一个区间的结束值。思路是通过遍历两个链表,计算对应节点值与进位的和,处理进位并构建新链表,最后返回不含虚拟头节点的结果链表。评论区看到一个【还有句话:走到尽头见不到你,于是走过你来时的路,等到相遇时才发现,你也走过我来时的路。

2024-11-28 16:53:23 1253

原创 线上问题排查方案总结

确认问题进程:使用top或htop找到 CPU 占用高的 Java 进程。查看线程情况:使用查看该进程的各个线程 CPU 占用情况,记录高 CPU 占用线程的 TID。转换线程 ID:将 TID 转换为十六进制,使用。生成线程 dump:使用生成线程堆栈,保存至文件。分析堆栈信息:在 dump 文件中搜索十六进制 TID,分析该线程的执行方法,排查高 CPU 的原因。

2024-11-05 16:08:07 1041

原创 面试:java笔试基础总结

this 是 Java 中的一个关键字,用于指代当前对象。只有在实例方法(非static方法)或构造函数中,才有“当前对象”这个概念。已知32位系统,字节为编址单位,1个页面大小为4KB,页表项大小为4B,那么存储页表需要多少空间。3、new String(“abc”) 会在堆中创建一个新的对象,即使内容相同。如果两个变量都是字面量方式赋值,且内容相同,它们指向同一个对象。当时遇到这个题,我是直接在纸上画出来的,画的时候细心一般都不会出错。因为 i j 是不同的对象,地址不同,所以false。

2024-10-16 18:16:11 640

原创 数据结构 -- 跳表

它可以看作是链表与二分查找的结合体,能够在保持数据有序的同时,实现快速的查找,时间复杂度与平衡树(如红黑树)相同,但实现上更为简单。,但是其底层结构需要维护多个层次的节点分裂、合并等复杂操作,特别是在插入和删除时,涉及平衡和重构,带来较高的性能成本。,但其结构更简单,动态操作(如插入、删除、更新)的实现也更加直接,符合 Redis 追求简洁高效的设计理念。删除操作与查找操作类似,从最高层开始查找需要删除的元素,找到元素后,在每一层级的链表中删除该元素的索引。:Redis 的有序集合为什么不使用B+树?

2024-10-11 16:13:21 1825 1

原创 Redis 实现 查找附近的人 功能

使用 Redis 实现“查找附近的人”功能,通常会依赖 Redis 的Geo(地理位置)数据类型来存储用户的经纬度,并基于此进行地理范围查询。Redis 通过GEOADDGEORADIUS等命令来存储用户位置和查找一定范围内的用户。存储用户的地理位置:我们需要存储用户的经纬度信息,以便后续可以基于此进行地理查询。Redis 提供了GEOADD命令,允许将用户的经纬度信息存储在 Redis 中的有序集合中(底层基于ZSet实现)。根据当前用户的位置查找附近的用户:使用GEORADIUS或。

2024-10-09 12:19:39 912

原创 OpenFeign原理

OpenFeign的原理主要涉及通过代理类将服务名称替换为具体的 IP:端口 来实现远程服务调用。Feign 生成代理类:使用 JDK 动态代理为接口生成代理,拦截接口方法调用,构建 HTTP 请求。服务名称替换为IP:端口:Feign 会将服务名称(如serviceA)通过 Ribbon 进行解析,将其替换为对应的IP:端口。负载均衡:Ribbon 在服务发现的基础上,对多个服务实例进行负载均衡,选择一个合适的服务实例。发送 HTTP 请求。

2024-09-13 11:33:52 1798

原创 HashMap线程不安全|Hashtable|ConcurrentHashMap

加锁机制:对每个桶(tab[i])的头节点进行加锁。这种锁定策略使得同一个桶中的修改是线程安全的。并发性能优化:这种设计避免了全局锁,提高了在高并发环境下的性能。当多个线程操作不同的桶时,操作不会相互干扰。

2024-09-12 16:55:51 1019

原创 Redisson实现订单到期关闭

在电商、支付等系统中,一般都是先创建订单(支付单),再给用户一定的时间进行支付,如果没有按时支付的话,就需要把之前的订单(支付单)取消掉。这种类似的场景有很多,还有比如到期自动收货、超时自动退款、下单后自动发送短信等等都是类似的业务问题。7、RabbitMQ死信队列(MQ 方案不推荐,大量无效调度)8、RabbitMQ插件(MQ 方案不推荐,大量无效调度)3、DelayQueue(不推荐,基于内存,无法持久化)10、Redis的ZSet(不推荐,可能会重复消费)4、时间轮(不推荐,基于内存,无法持久化)

2024-09-11 16:42:35 1342

原创 数据结构--二叉树

二叉树(Binary Tree)是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树是各种树结构的基础,广泛应用于数据存储、排序、搜索等领域。

2024-09-10 21:01:04 1981

原创 面试笔试 场景题(部分总结)

优先级队列按比较器排序,如果比较器为空,则按元素的自然顺序排序:对于堆中的每个节点 n 和 n 的每个后代 d,n <= d。创建一个最大堆(PriorityQueue,指定了 Comparator.reverseOrder() 来使其成为最大堆)。来实现,默认是最小堆,即堆顶是队列中最小的元素。数据结构的一个重要类,它基于优先级队列(Priority Queue)的概念。你使用最大堆来找出第 k 小的元素。最大堆的特点是堆顶元素是当前堆中的最大值。当堆的大小超过 k 时,移除堆顶元素(即当前最大元素)。

2024-09-09 18:02:23 1039

原创 数据结构--大根堆小根堆

堆是一种优先级队列实现,通常用于高效地找出最值(最大或最小值)。堆的每个父节点都和其子节点满足一定的关系。是堆调整操作的核心,用来维护堆的性质。是堆(Heap)数据结构的两种类型,它们都是。个元素,这些元素在数组中的索引是从。堆可以使用数组来实现,这是由于堆的。假设堆中某个节点位于数组的索引。最小堆(又称:小根堆,小顶堆)最大堆(又称:大根堆,大顶堆)结构具备的特性使得它可以。映射到一个一维数组中。

2024-09-09 17:38:55 2405 1

空空如也

空空如也

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

TA关注的人

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