自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入理解 RAG(检索增强生成):核心流程、技术选型与进阶实战

离线:切块清洗 → 向量化 → 入库建索引在线:问题向量化召回 → Rerank 精排 → LLM 基于素材生成答案。

2026-05-23 19:59:53 452

原创 Agent开发基础概念

LLM大语言模型,就是AI对话。通过预测下一个最有可能出现的词来完成这场接龙游戏。

2026-05-23 19:00:31 59

原创 【五分钟教会你使用git】初入公司必学技能——git

git是当前最流行的分布式版本管理系统,也是我们进入企业以后一定会接触到的一个工具。简而言之就是,它可以帮助你从公司的公共代码仓库当中,将代码拉取到你的本地仓库。并且通过它,你可以同时与你的其他同事一起合作完成代码,并且不会互相干扰。

2025-11-19 21:06:20 551

原创 【leetcode100】189.轮转数组

例如1 2 3 4 5 第一次反转 5 4 3 2 1,之后假如我们要进行轮转2次,也就是将前3个和后2个分别进行反转。分别是3 4 5 2 1和3 4 5 1 2这样就达到了轮转的效果。轮转数组,其实就相当于我们。

2025-10-22 16:56:07 167

原创 【leetcode100】和为k的子数组(两种解法)

这个题还可以进行优化,我们可以使用前缀和。我们可以使用pre前缀和。我们只需要判断前缀和里是否存在 k-pre就可以了。给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数。输入:nums = [1,1,1], k = 2。子数组是数组中元素的连续非空序列。

2025-10-17 16:47:18 297

原创 【leetcode100】42.接雨水

【代码】【leetcode100】42.接雨水。

2025-10-17 14:40:26 157

原创 【滑动窗口】详解+实战(Java代码)

它是用来高效解决连续子序列问题一种算法。左窗口:通过移动左窗口来将窗口缩小右窗口:通过向右移动窗口来扩大窗口同时滑动窗口还可以分为固定大小的窗口,和不定长大小的窗口。

2025-10-17 11:41:28 696

原创 【Springboot项目实战】登录模块怎么写

当用户登录时,先判断是否存在该用户以及用户信息是否正确。接着判断Redis当中是否存在token,如果不存在,我们就通过uuid创建一个随机token,并存入Redis当中。如果存在那么我们就返回带有该token信息的返回参数。在这之前我们要明白,作为一个完善的项目,我们不能仅仅只比较数据库中的数据是否相同,这样别人可能可用通过接口直接获取信息。作为一个SpringBoot项目,我们要从前端接收账号密码等信息。首先要知道,登录就是检查数据库中是否存在该用户信息。如果存在并且输入的信息正确就可以成功登录。

2025-10-01 11:22:25 202

原创 先声医学诊断Java后端面经

--sql语句学的真的很烂,做噩梦甚至都梦见写sql语句。13.一个学生对象的List集合转成Map,key是学生姓名,value是总分,使用Stream流怎么写。---我回答完是,就没有再去具体的询问我项目了。12.jdk8新特性--全忘记了,就记得Lambda表达式和StreamAPI了 ,真服了我这记性了。5.网络的分层模型--- 去年期末考还在背,结果现在一个字都说不上来。---再也不会说学过计网了。---好几个面试管问我了。18.Liunx会吗---不会。19.Docker会吗--不会。

2025-09-20 09:31:22 192 1

原创 leetcode-hot100 11.盛水最多容器

我们将定义左右两个指针,比如图中,最初是1*8,想要使盛水变大,在改变宽度的情况下,只有让短的柱子进行移动。

2025-09-10 20:33:46 312 1

原创 leetcode-hot100两数之和

创建一个Map集合Key为数组中的值,Value为下标。首先循环遍历nums,判断Map中是否存在与当前下标nums[i]相加为target的数,如果存在返回该数的Value以及i。然后将其放入map集合中继续向下遍历。直接双重循环遍历是否存在数组中两个数相加为target。

2025-09-09 16:22:35 168

原创 【CouponHub项目开发】用户秒杀优惠券

我们在执行完lua脚本去扣减缓存中的优惠券数量,以及插入用户领券记录到数据库中后又执行了将用户领券记录放入缓存中,以及发送延时消息来删除过期的优惠券。接着根据执行结果来进行后续操作,如果执行成功,就将用户领券记录插入数据库当中,并且将该条领券信息放入到Redis当中的用户领券记录当中。接着,通过lua脚本来执行原子性的扣减库存,并且进行判断是否符合领取条件,以及则增加领取次数。最后通过发送延时消息队列来进行将到期的优惠券从缓存中删除。首先,先进行条件判断,判断是否有缓存,是否在有有效期。

2025-09-05 18:51:59 225

原创 【CouponHub项目开发】分发优惠券

在之前的创建分发任务,然后使用线程池异步解析Excel表格并使用Redission延时队列来进行兜底的时候,有一个如果是立即执行的任务,就直接发送消息队列去执行优惠券分发任务,如果是定时任务就通过xxl-job监测到时间后发送消息。接着我们构建用户领券记录,并且将其添加到数据库当中,接着再把优惠券添加到Redis中的用户领券记录中。在监听器当中,我们先去判断数据库中数据是否充足,并进行扣减。首先我们先进行信息的验证,如果验证正确,再去执行后续逻辑。

2025-09-05 17:48:10 297

原创 【CouponHub项目开发】解决缓存穿透、缓存击穿问题

缓存击穿是指Redis当中有热点key失效,导致大量数据进入数据库进行访问,给数据库带来巨大压力缓存穿透是指出现 有查询数据库中不存在的数据的请求,这种请求会不断地进行直接打在数据库中,给数据库带来巨大压力。

2025-09-05 16:18:43 376

原创 【CouponHub项目开发】EasyExcel解析Excel并使用线程池异步执行和延时队列兜底

然后不断循环去获取阻塞队列中的delayJSON,然后再根据delayJSON中的id去查询数据库,判断数据库中这个优惠券分发任务的分发数量是否为0.如果为0说明线程池没有去执行 refreshCouponTaskSendNum方法,然后让该线程去执行。那么如果是单线程运行情况下,会导致用户等待大量时间使用线程池异步执行则可以直接返回用户操作成功的响应,而真正的操作是交给后台线程异步执行的。因为如果任务刚提交到线程池当中就宕机了,那么线程池当中的任务就不会执行了,为了解决这种情况,采用延时队列进行兜底。

2025-09-04 20:58:20 458

原创 【CouponHub项目开发】使用RocketMQ5.x实现延时修改优惠券状态,并通过使用模板方法模式重构消息队列发送功能

我们可以通过去定义一个生产者的抽象类(模板),然后去通过定义具体的类来继承这些抽象类。然后在创建优惠券模板的方法中我们只需要去定义一个事件,然后调用该类的方法去发送消息即可。在上个章节中我实现了创建优惠券模板的功能,但是,优惠券总会有过期时间,我们怎么去解决到期自动修改优惠券状态这样一个功能呢?然后会获取这个时间是否存在延时时间这个属性,如果有则发送延时消息,如果没有,就发送普通消息。这样一个延时发送的消息生产者就定义好了,接着我们去定义消费者。这就是延时发送消息的生产者的一个实现类。

2025-09-04 17:52:09 689

原创 【CouponHub开发记录】SpringAop和分布式锁进行自定义注解实现防止重复提交

当我们创建优惠券时,可能会出现由于网络延时等问题导致用户重复点击创建优惠券模板的操作。我们可以通过分布式锁,给当前线程进行加锁。如果获取锁失败说明重复提交。该语句是接着执行切点之后的逻辑,也就是创建优惠券。但是这样直接写到业务当中导致代码比较繁琐,冗余。因此我们可以创建自定义注解,将该逻辑抽离出来。接着去执行获取分布式锁、然后执行相应逻辑。该环绕通知会拦截所有带这个注解的方法。直接再创建优惠券之前进行加锁。

2025-09-03 20:25:50 540 41

原创 CouponHub项目开发记录-基于责任链来进行创建优惠券模板的参数验证

责任链是一种设计模式,是让请求沿着一条处理链进行传递,从而让这条责任链上的对象来对该请求进行处理。Controller层进入service层中的创建优惠券模板方法首先可以看到他调用了责任链上下文对象的handler处理方法,我们再进入对象内部首先可以看到他注入了一个ApplicationContext对象,通过该对象可以获取到SpringIOC当中的Bean。接着他定义了一个Map作为容器保存一个责任链,key为mark,value创建的责任链对象集合接着再看其中的run方法。

2025-09-03 18:05:32 606 18

原创 【MySQL详解】索引、事务、锁、日志

索引可以类比成图书的目录,通过索引能够快速找到数据的位置,提高查询效率。

2025-09-01 21:47:39 852 5

原创 告别文档查阅痛点!金仓文档系统焕新上线:极致用户体验,秒级精准检索

你是否曾在浩如烟海的产品手册中迷失方向?😵是否为了一个关键参数翻遍十几页冗余说明?是否对时灵时不灵的搜索功能感到抓狂?甚至因为漫长的加载时间而失去耐心?我们懂你!这些曾困扰无数金仓用户的文档痛点,从今天起,正式成为历史!金仓文档系统是专为金仓用户打造的自助式在线帮助平台。历经深度打磨与全面升级,现以全新面貌上线!我们以用户为中心,重构清晰导航、升级智能检索、优化内容体验、提升加载性能,助你高效解决实际问题。我们深度梳理核心使用场景与链路,文档按用户实际操作旅程清晰呈现:示例搜索场景:每篇文档都

2025-08-28 18:18:45 760 7

原创 MySQL 核心面试题全面解析(含代码示例)

关系型数据库(RDBMS)是建立在关系模型基础上的数据库,它通过二维表来组织数据,强调数据的完整性和一致性。常见概念有:表、行、列、主键、外键等。MySQL就是一种典型且非常流行的开源关系型数据库管理系统。聚簇索引 (Clustered Index)表数据行的物理存储顺序与索引顺序相同。一个表只能有一个聚簇索引。InnoDB 的主键就是聚簇索引。如果没有主键,InnoDB 会选择一个唯一非空索引代替,如果也没有,则会隐式定义一个主键来作为聚簇索引。非聚簇索引 (Secondary Index)

2025-08-28 17:44:55 1160 1

原创 Spring Cloud 高频面试题详解(含代码示例与深度解析)

是一套分布式系统解决方案的规范集合,它基于 Spring Boot 提供了快速构建分布式系统中常见模式的工具(例如:配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态)。关系与区别:专注于快速、方便地开发单个微服务,提供了自动配置、起步依赖等特性,简化了独立服务的开发。:专注于微服务架构的协调与治理,它将多个 Spring Boot 应用程序整合起来,为它们提供分布式环境下的能力。简单比喻像是制造汽车的工厂,能快速造出许多功能独立的汽车(微服务)

2025-08-27 17:56:39 1216 2

原创 【Spring全家桶必问篇】2025年精选高频面试题深度解析(附代码示例)

控制反转,是一种设计思想。它将传统上由程序代码直接操控的对象调用权交给容器(如Spring IoC容器)来统一管理。简单说,就是将对象的创建、依赖关系的组装控制权从应用程序代码中反转到外部容器。依赖注入,是实现IoC思想的一种主要方式。容器通过反射机制,动态地将某个依赖对象注入到组件(如Bean)中。常见注入方式有:构造器注入、Setter方法注入、字段注入。关系DI是IoC的实现手段之一。我们通过DI这种具体技术来实现IoC的松散耦合设计目标。// Service 层@Service。

2025-08-25 17:58:35 1707 53

原创 飞算JavaAI深度体验:是颠覆性创新还是营销噱头?从安装到实战全解析

每个开发团队都有自己独特的"规矩"。飞算JavaAI的"自定义AI规则引擎"提供了一种全新的解决方案。它允许技术主管或架构师使用自然语言编写规则文件,将团队的开发规范"教"给AI。// project_rules.rule - 自定义规则文件示例// 技术栈规范- 必须使用Java 17和Spring Boot 3.2- 日志框架必须使用Logback,并继承自公司统一的日志配置// 安全规范- 所有对外API接口都必须经过网关鉴权。

2025-08-24 18:12:01 1103 5

原创 时序数据库选型“下半场”:从性能竞赛到生态博弈,四大主流架构深度横评

时序数据的洪流已成为数字世界的“新常态”。🚀单一的性能指标已无法回答这个问题。我们需要一个全新的评估框架,从根源的出发,审视每一款产品在不同维度上的设计取舍。本文将带领读者,从,穿越迷雾,洞悉本质。

2025-08-24 17:51:38 1900

原创 深入剖析分布式事务的Java实现:从理论到Seata实战

Servicetry {// 业务流程step1();step2();step3();// 自定义回滚前处理// 继续抛出异常触发Seata回滚throw e;// 发送消息通知// 记录异常日志// 更新状态等@Bean.description("活跃全局事务数").description("失败事务数")通过本文的详细探讨,我们深入了解了分布式事务的挑战和解决方案。

2025-08-23 18:05:53 1077 33

原创 字节跳动开源Seed-OSS:36B参数模型以512K上下文与可控思考预算重新定义AI实用主义

在过去几年中,AI大模型的“军备竞赛”为我们呈现了一场又一场数字奇观。模型的参数量从百亿迅速攀升至万亿,上下文窗口也从几千扩展到几十万。AI的“蛮力”越来越大,但它的“巧劲”在哪里?我们常常觉得自己面对的是一个能力强大却难以捉摸的“黑箱”。它时而表现出惊人的创造力,时而却输出毫无逻辑的内容;我们无法得知为了回答一个简单问题,它在背后消耗了多少计算资源;更无法控制它在处理复杂任务时应当投入多少“思考深度”。现在,字节跳动Seed团队带着其首次开源的大语言模型Seed-OSS,给出了一个明确的答案。这款。

2025-08-23 17:50:16 804 3

原创 【Java并发编程】Java多线程深度解析:状态、通信与停止线程的全面指南

(在Unix-like系统上)或类似的系统API来创建线程,因此Java线程本质上是操作系统级别的线程。这意味着Java线程的调度和管理由操作系统内核负责,确保了多线程程序的并发执行能力。希望这篇全面解析能帮助你深入理解Java多线程!如果有任何问题,欢迎留言讨论 😊。⚠️ 注意:唤醒的线程仍需竞争锁,只有获取锁的线程能进入RUNNABLE状态。Java线程的生命周期包括以下6种状态(参考。Java底层通过调用。

2025-08-22 18:10:19 1762 7

原创 字节跳动开源 VeOmni:轻松构建「全能AI」,告别工程困境

本文深入解读字节跳动Seed团队最新开源的全模态训练框架VeOmni,探讨其如何突破AI工程化瓶颈,助力开发者高效构建多模态大模型。AI 将真正理解我们的生活,帮助我们创作内容、整理记忆、甚至实时生成跨媒介作品——一个更智能、更体贴的数字世界正在加速到来。将视觉、语音、文本等多种模态融合进单一模型,对开发者而言曾是一项极其复杂的系统工程,堪称「,如同一套AI界的「乐高大师套装」,为全球开发者提供了一套灵活而强大的工具链。现在,每一位研究者都可以像拼装乐高一样,自由、高效地组合理想中的多模态模型。

2025-08-22 17:22:16 1192 6

原创 【Java集合】List,Map,Set-详细讲解

数组的长度是不可变的,一旦被创建,不能被修改。而集合的长度是可变的。数组中存储的元素可以是基本数据类型,也可以是对象。而集合中存储的元素只能是对象。数组可以通过下标直接访问到元素,而集合需要通过迭代器等方式来获取元素。

2025-08-21 18:10:29 2000 65

原创 【Java基础】反射,注解,异常,Java8新特性,object类-详细介绍

反射是指程序在运行过程中,对于任意一个类,都能获取它的属性和方法;对于任意一个对象,都能调用其属性和方法。这种动态获取类信息并操作对象的能力称为 Java 的反射机制。// 反射示例:获取类方法Class<?// 返回 5。

2025-08-18 18:41:51 1504 59

原创 【Java基础常见辨析】重载与重写,深拷贝与浅拷贝,抽象类与普通类

特性抽象类普通类实例化❌ 不能直接实例化✅ 可以直接实例化方法实现可包含抽象方法(无实现)所有方法必须有实现继承关系只能作为基类被继承可继承/被继承构造器可以有构造器(用于子类初始化)必须有构造器// 抽象类示例// 抽象方法(无实现)void rotate() { /* 具体实现 */ } // 普通方法// 普通类示例@Override} // 必须实现抽象方法。

2025-08-18 18:01:55 522 17

原创 【Java基础面试题】数据类型

基本类型选择铁律整数默认用int,超20亿用long浮点默认用double,精确计算用BigDecimal类型转换三原则小转大自动,大转小强制浮点转整数截断小数字符串转换注意格式异常包装类使用精髓集合存储必须用包装类高频计算场景用基本类型对象比较用equals()Integer缓存陷阱默认缓存-128~127值比较用equals()避免用创建对象。

2025-08-16 18:05:34 1646 9

原创 【Java基础面试题】Java基础概念

这是 Java 语言最大的一个特点,即 “一次编写,到处运行”。Java 编译器会将 Java 的源码编译成.class字节码文件。之后该字节码就可以在任何安装了 JVM(Java 虚拟机)的系统上运行了。:Java 有独特的内存管理机制,如垃圾回收机制,能够自动回收那些不再被使用的对象,从而释放其所占用的内存,减少内存泄漏等问题。:Java 语言是面向对象的,支持封装、继承、多态等面向对象的核心特性,有助于开发者构建模块化、可复用的代码。

2025-08-16 17:34:36 593 1

原创 【Java虚拟机】垃圾回收机制

垃圾回收机制是一种内存管理机制,通过回收哪些不再被引用的对象,从而释放他们所占用的内存。避免内存泄漏和内存溢出手动触发:通过调用system.gc()或者Runtime.getRuntime.gc()来建议JVM进行垃圾回收,但是不会立即触发。当内存不足时会自动触发可以通过手动调节JVM的参数来进行触发当创建对象的数量或者使用的内存达到阈值时触发。

2025-08-15 17:49:56 592 4

原创 【Java虚拟机】JVM相关面试题

双亲委派原则是指当一个类加载器接收到类加载请求时,会将该请求委派给其父类,每一层都是这样,只有当父类表示自己不能加载该类时,子类才会尝试去加载。

2025-08-14 18:03:46 769 15

原创 【Java虚拟机】JVM内存模型

JVM的运行时内存主要分为Java虚拟机栈,堆,本地方法栈,程序计数器,元空间五个部分,还有一部分是直接内存,是操作系统的本地内存,也是可以直接操作的。每个线程都有一个独立的虚拟机栈,并且在方法执行前都会在栈中创建一个栈帧,用来存储该方法的一些信息。堆是JVM中最大的一块区域,它是所有线程共享的,用来存储对对象的实例。每当遇到一个new关键字时,都会在堆中为其分配一块内存与虚拟机栈类似,本地方法栈是服务于本地方法的,当方法执行时也会创建一个栈帧。程序计数器可以看作是Java程序运行字节码文件的行号指示器。它

2025-08-13 18:05:04 836 13

原创 Java基础知识总结

【代码】Java基础知识总结。

2025-08-08 18:11:14 1484 17

原创 【Java面试题】注解,异常相关知识

注解本身是一个继承Annotation的特殊接口,它的实例化对象是Java运行时产生的动态代理类。我们使用反射获取注解时,获取到的是Java运行过程中通过动态代理产生的对象,动态代理对象调用自定义注解方法。最终会调用AnnotationInvocationHandler的invoke方法,该方法会从memberValues这个Map中索引出对应值。而memberValues的来源是Java常量池异常是由Throwable及其子类构成。

2025-08-05 17:21:21 461 24

原创 【Java面试题】一分钟了解反射机制

反射是指在java程序运行过程中可以获取到任意一个类的属性和方法,还能调用任意一个对象的内部方法和属性。

2025-08-02 18:04:40 431 6

空空如也

空空如也

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

TA关注的人

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