自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RAG 工作机制详解——一个高质量知识库背后的技术全流程

本文介绍了检索增强生成(RAG)技术的原理和应用。RAG通过先检索相关文档片段再生成答案的方式,有效解决了直接将大文档输入模型的弊端。文章详细拆解了RAG的五个核心环节:分片(将文档切分为片段)、索引(将片段转换为向量并存储)、召回(搜索相关片段)、重排(精选最相关片段)和生成(模型基于片段生成答案)。重点解释了向量、Embedding和向量数据库等关键技术概念,并通过对比召回与重排的不同特点,说明了两阶段筛选的优势。最后完整梳理了从文档准备到最终生成答案的全流程,为构建智能客服和知识库提供了技术指导。

2026-04-01 17:42:23 402

原创 CSS 布局深究:行框模型、幽灵节点与绝对居中的数学原理

摘要:本文深入解析CSS中图片垂直居中时font-size:0的必要性。通过剖析行框模型和幽灵空白节点机制,指出vertical-align:middle实际是参照父元素x-height中心而非几何中心。当父元素字号增大时,x-height和基线位置变化会导致图片偏移。font-size:0通过消除文本间隙并将x-height归零,使基线回归行框几何中心,实现真正的数学级垂直居中。这揭示了CSS文字排版规则与几何坐标的深层关联,为开发者提供严谨的技术理解。

2026-02-15 01:09:44 817

原创 别再被 margin 坑了!一文彻底搞懂外边距重叠

根据 W3C 规范,块级元素的上外边距(margin-top)和下外边距(margin-bottom)有时会合并(折叠)为一个外边距,其大小取其中绝对值最大的那个,而非两者的代数和。特性描述现象垂直方向上相邻的两个块级元素外边距合并为一个。涉及范围普通文档流中的块级元素(Flex/Grid 子项除外)。计算逻辑取最大值($Max(A, B)$),而非求和。核心成因W3C 规范为了优化文本段落排版而设计。最佳修复父子塌陷推荐使用(BFC) 或padding;现代布局推荐使用。

2026-02-14 22:21:26 655

原创 CSS三大特性:层叠、继承与优先级解析

CSS的三大特性相互关联,共同构建了样式规则的解析与渲染体系。层叠性处理规则冲突,继承性实现样式传递,优先级则提供精细化的控制手段。深入理解这些特性,能够帮助前端开发者在实际项目中构建更加稳健、清晰的样式结构,提升代码质量与开发效率。

2026-02-06 23:15:05 330 1

原创 HTML5里最常用的十大标签

4. <title>:标题标签,嵌套在<head>内,用于定义网页的标题,显示在浏览器标签栏,不仅影响用户体验,也是SEO优化的基础要素之一,每个页面建议设置唯一且贴合内容的标题。6. <body>:主体标签,所有需要显示在网页页面上的内容,均需嵌套在<body>内,包括文本、图片、链接、表单等,是网页的核心显示区域,决定了用户看到的页面内容。7. <p>:段落标签,用于定义网页中的段落文本,自动实现文本换行和段落间距,是网页文本内容排版最常用的标签,避免使用换行标签<br>随意拆分段落,保证排版规范。

2026-02-06 21:43:30 216

原创 5个被忽视的HTML原生标签,显著减少JavaScript代码量

HTML5原生标签提供了多种交互组件的内置解决方案,能显著减少JavaScript代码量。<details>和<summary>可实现内容展开/收起;<dialog>提供模态对话框功能,自带遮罩层和焦点管理;<datalist>为输入框添加自动补全建议;<meter>和<progress>可直观展示进度比例;<input type="color">则集成了系统级颜色选择器。这些原生标签不仅提升开发效率,还

2026-02-05 23:52:16 512

原创 Http到底是怎么一回事?我们来大解剖

由于 HTTP 是基于 TCP 传输协议实现的,客户端与服务端要进行 HTTP 通信前,需要先建立 TCP 连接,然后客户端发送 HTTP 请求,服务端收到后就返回响应,至此「请求-应答」的模式就完成了,随后就会释放 TCP 连接。这样虽然对人不友好,但是对计算机非常友好,因为计算机只懂二进制,那么收到报文后,无需再将明文的报文转成二进制,而是直接解析二进制报文,这增加了数据传输的效率。http大家都很熟悉了,大家的网址都是http/https开头的,那到底这个http是什么呢,我们今天来研究研究。

2026-02-04 23:06:36 1315

原创 【挑战系列】挑战一篇文章学完JVM

本文全面介绍了JVM的核心知识,包括内存模型、类加载机制和垃圾回收机制。内存模型部分详细解析了JVM运行时数据区的五大组成部分(虚拟机栈、堆、元空间、程序计数器、本地方法栈)及其功能特点,并比较了堆和栈的区别。类加载机制部分阐述了双亲委派模型、类加载过程以及如何打破双亲委派机制。垃圾回收机制部分讲解了判断垃圾的方法(引用计数法和可达性分析算法)、常见垃圾回收算法(标记-清除、标记-复制、标记-整理)以及各种垃圾收集器(Serial、Parallel、CMS、G1等)的特点和工作原理。文章还深入分析了Mino

2026-02-04 00:50:00 597

原创 HTTPS全面解析:原理、加密机制与证书体

随着互联网技术的高速迭代,网络安全问题日益凸显,已成为制约互联网健康发展的关键因素。在网络环境中传输敏感信息、开展在线交易及共享个人数据时,如何确保数据的安全性与隐私性,已成为亟待解决的核心任务。在此背景下,HTTPS(超文本传输安全协议)应运而生,作为保护网络通信安全的核心技术,成为现代互联网应用不可或缺的重要组成部分。

2026-02-04 00:36:09 979

原创 过来人推荐-一些前端项目

你们如果有一些比较好的想法,那么你们可以通过代码来做出来一个产品,然后上线推广,如果很多人用就证明你这个项目有价值,虽然他可能不如上面的项目看起来高大尚,但是从 0-1 自研一个项目中间会遇到很多很多的项目,其实是可以体现你处理问题和实战的能力的。在我看来如果你的项目有 1000 以上的人使用,那就可以称作是一个比较优秀的项目,当然你的项目也不能特别简单,比如你做了一个很简单的几乎没有含金量项目,但是使用的人很多,这也是行不通的。资源 3:抖音博主远方 os,他的课程也是需要购买的。

2026-02-04 00:27:27 379

原创 过来人的经验-前端学习路线

注意事项:学习一遍知道有这些东西就行,最好上手敲一下,加深记忆,做项目的时候做到某个需求你能知道该用什么,然后再搜用法就行,看完自己做项目手动敲发现不会很正常,要不然企业也不会看重项目经历和实习经历了。效果不重要,但不是默认效果不重要,语义最重要,css 当中浮动快速过一遍即可,属于过时的技术。学完以上这些内容,完成 2-3 个项目,你就可以写简历投递实习了,简历做到尽可能体现自己的能力而不是把一些不想关的东西放到简历上面,比如我是班长、我在学生会做过什么等等,没有用,跟你的岗位没有任何匹配度。

2026-02-04 00:26:01 355

原创 《黑神话:悟空》着色器编译为什么那么久?什么是着色器编译?

可以把它理解为游戏在为您特定的电脑硬件,预装和调试一套专用的图形翻译规则。我们不妨打个比喻:翻译官与流水线游戏引擎(如虚幻5)写的是一套高级的、通用的“图形指令剧本”(着色器代码)。显卡(GPU)有自己的“方言”和“流水线生产线”。不同厂商(NVIDIA、AMD、Intel)甚至同一厂商不同代次的显卡,“方言”都不同。着色器编译就是这个过程:游戏在您的电脑上,实时将通用的“图形指令剧本”,翻译并优化成完全契合您当前这块GPU的“专属机器指令”。它编译的是什么?物体表面的材质。

2026-02-02 23:22:13 711 1

原创 HTML中路径符号.和/详解

摘要:HTML中"./"和"/"是重要的路径符号。"/"表示绝对路径,从网站根目录开始引用资源;"./"表示相对路径,从当前目录开始引用文件。组合使用"../"可指向上级目录。最佳实践建议优先使用相对路径,保持风格一致,使用"./"使路径更清晰。这些符号也适用于CSS和JavaScript中的资源引用。简单记忆规则:"."当前目录,".."上级目录,

2026-01-28 22:28:45 219

原创 面向对象编程综合实战

本文通过两个Java实战案例演示面向对象编程的应用:1)文字版格斗游戏实现,通过Role类封装角色属性及攻击方法,模拟角色对战;2)商品信息管理系统,利用对象数组存储商品对象并遍历显示。案例展示了类的定义、对象实例化、方法调用及数组操作等核心面向对象编程技术,强调类作为现实事物抽象封装的重要性,为后续学习继承、多态等高级特性奠定基础。

2026-01-28 22:23:39 69

原创 Java中的this关键字解析与应用

摘要:本文深入解析Java中this关键字的核心功能与实现机制。this主要用于引用当前对象实例、区分成员变量与局部变量、实现构造函数重载调用及传递对象引用。其本质是方法的隐式参数,通过内存地址访问对象成员。文章对比了局部变量、成员变量和类变量的作用域特性,并给出this的使用建议:解决命名冲突、构造方法重用及链式调用实现。同时指出静态上下文中不可使用this等限制,强调合理使用this有助于编写清晰健壮的面向对象代码,是理解Java对象模型的关键。

2026-01-26 22:32:19 589

原创 JAVA-标签语句

Java标签语句是为循环/语句块添加标记名称的语法,主要用于精确控制多层循环的跳转。其语法为标签名:循环/语句块,配合break/continue 标签名可实现跨层级跳转。通过对比普通循环和标签语句示例可见,普通break只能跳出当前循环,而标签语句可以直接跳出指定外层循环。同样,continue标签可跳过外层循环当前轮次。使用注意事项包括:避免滥用影响可读性、标签必须紧邻循环、不能跨方法跳转。该特性适用于需要精确控制多层循环的场景,日常开发中应谨慎使用。

2026-01-18 20:48:14 84

原创 手机号全是数字,Java里怎么不能用int和long存储?

判断一个“数字”是否应该用String存储的简单原则:如果这个数字是“标识符”(用于识别的字符串),而非“数值”(用于计算的量),就应该用String存储。而我们的手机号是11位数字,比如13800138000,这个数字的值是138亿,远远超过了int类型的最大值(约20亿)。使用String类型存储手机号,它能保证号码的完整性,方便进行格式验证和处理,是实际开发中的最佳实践。String类型会保留手机号中的所有字符,包括开头的0和特殊符号(如+、-等),确保号码的完整性。

2026-01-03 22:17:03 446

原创 JAVA基础-就近原则和this关键字

当你在代码中使用一个变量名时,Java 编译器需要确定你到底指的是哪一个变量。它的查找规则非常简单粗暴:谁离我近,我就用谁。具体的查找顺序是:先找局部范围:看看当前方法(或代码块)里有没有定义这个变量?如果有,就直接用。再找成员范围:如果局部没找到,再去类的成员变量(属性)里找。在实际开发中,为了让代码可读性更高,我们通常把方法的参数名起得和成员变量名一模一样。比如:成员变量叫 , 方法的参数也叫 。Java 结果:输出 “你好,我是 贾宝玉”。尴尬的情况:如果你想在方法里打印出成员变量 “林黛

2026-01-02 23:27:17 298

原创 写给初次用IDEA的新人

用于组织文件的文件夹,比如 src(源代码目录)、lib(依赖库目录)等,目录可嵌套,还能被标记为特殊用途(如 Sources Root、Resources Root)。它的本质就是目录下的嵌套目录结构。最基础的单位,包含源代码文件(如 .java、.cpp)、配置文件(如 pom.xml、application.yml)、资源文件等。项目的子单元,用于拆分大型项目的功能模块,每个模块下会包含Directory(目录)和各类文件,模块有自己的 .iml 配置文件。3. Directory(目录)

2026-01-02 22:00:14 517

原创 【Java进阶】面向对象编程第一站:深入理解类、对象与封装前言

本文介绍了Java面向对象编程的核心概念"类"与"对象"以及封装特性。文章通过饼干模具的比喻形象说明了类(抽象模板)和对象(具体实例)的关系,强调"先有类后有对象"的设计逻辑。详细讲解了类的定义规范、类之间的继承/实现/关联/依赖关系,重点阐述了封装的基本原则和四大优势(安全性、解耦合、复用性、易用性),并通过标准JavaBean示例展示了如何通过访问修饰符和Getter/Setter方法实现数据隐藏和控制。全文旨在帮助读者掌握面向对象编程的基础概

2026-01-02 21:52:40 910

原创 JAVA基础:基本数据类型和引用数据类型

理解它们的区别,是掌握 Java 内存管理、避免 NullPointerException 以及正确比较对象(== vs .equals)的前提。* 想存数字、字符、布尔值 -> 用 基本数据类型 (int, double, boolean...),效率高,存在栈里。* 存储内容:栈里的变量存的是堆内存的地址(类似于门牌号 0x1122),而不是数据本身。* 想存对象、字符串、数组 -> 用 引用数据类型,变量是遥控器,对象在堆里。* 比喻:引用变量就像一个遥控器,它指向堆里的电视机(对象)。

2025-12-31 19:25:20 639

原创 JAVA方法进阶-方法调用的内存原理

方法弹栈后,main 方法通过同样的地址去看,发现堆里的数据确实变了。理解方法调用的内存原理,是掌握 Java 程序运行机制的关键,也是理解“值传递”本质的基础。Java 的方法执行主要依赖于 JVM 内存模型 中的 栈,具体来说是 Java 虚拟机栈(Java Virtual Machine Stack)。* 角色:方法的“道具仓库”。* 栈是私有的,堆是共享的:基本类型数据在栈里“私有”,引用类型数据在堆里“共享”。每当一个方法被调用时,JVM 会在栈中为该方法创建一个单独的内存块,称为 “栈帧”。

2025-12-31 18:58:56 266

原创 学好方法,一篇文章足矣

在 Java 语言中,方法(Method) 是一段封装了特定业务逻辑的代码块,它是类(Class)或对象(Object)行为的具体体现。* 形式参数 (Parameter):定义方法时声明的变量,用于接收传入的数据(例如上文的 a 和 b)。逻辑清晰 :一个命名规范的方法(如 getUserInfo)本身就是最好的文档,能直观传达代码意图。在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可。本篇文章,我将会以较为严谨的语言来拆解方法这一JAVA的基石,保证你对方法有更深入的了解。

2025-12-31 18:48:05 412

原创 数组动态初始化和静态初始化

在Java中,数组的初始化可以分为静态初始化和动态初始化。它们的主要区别在于:静态初始化在声明数组的同时直接指定数组元素的值,而动态初始化则只指定数组的长度,由系统为数组元素分配初始值。

2025-12-30 20:39:23 380

原创 新人必看:for和while的核心区别

想让循环变量 “用完就扔”→ 用for(更简洁、变量作用域更紧凑)。想在循环结束后继续用循环变量→ 用while。

2025-12-29 22:49:13 458

原创 一个题目 带你了解快慢指针

核心实现逻辑:该函数采用快慢指针法(一次遍历最优解),慢指针每次走 1 步、快指针每次走 2 步,利用快指针先到达链表末尾的特性,让慢指针停在中间位置,时间复杂度 O (n)、空间复杂度 O (1)。初始位置关键作用:慢指针初始指向第一个有效节点,快指针初始指向第二个有效节点,这种初始位置差 1 步的设计,决定了偶数个节点时返回中间靠左的值(如 1,2,3,4 返回 2)、奇数个节点时返回正中间值(如 1,2,3,4,5 返回 3)。循环条件的意义fast!=null。

2025-12-28 23:09:19 385

原创 Java基础-类型转换以及易错点

不需要手动写代码,Java 自动将取值范围小的类型转换为取值范围大的类型,避免数据丢失。目标类型 变量名 = (目标类型) 原变量;),将取值范围大的类型转换为取值范围小的类型,可能导致数据丢失 / 溢出。

2025-12-28 20:28:36 268 1

原创 从0开始学JAVA-2 String和char的区别

特性char(字符)String(字符串)数据类型分类基本数据类型(8 种之一,是关键字)引用数据类型(String 类,不是关键字)表示内容单个 Unicode 字符(仅 1 个字符)一串字符的序列(0 个或多个字符)底层存储占用 2 个字节(存储字符的 Unicode 编码)底层是char[]数组(JDK9 后改为byte[]),是对象写法 / 字面量单引号包裹,如'a''1''中'双引号包裹,如"a""123""中国"""(空字符串)char是基本数据类型。

2025-12-27 23:43:29 333

原创 [从零开始学JAVA|第一篇 ] 分清关键字 方法名 字面量 标识符

编程语言预定义、具有特殊含义的单词,不能被用作变量名、方法名等(是 “被语言占用的名字”)。用来标识方法(函数)的名字,是 “调用一段代码逻辑的入口”。直接表示具体值的符号,是 “值的直接写法”。程序员自定义的名字,用来标识变量、方法、类、模块等。plaintext编程语言的名字体系├─ 关键字:预定义、有特殊含义(不能当标识符)└─ 标识符:程序员自定义的名字├─ 类名├─ 方法名(你问的“方法名”属于标识符)├─ 变量名└─ 常量名字面量:不是名字,是“具体值的写法”比如代码public。

2025-12-27 23:39:00 327

原创 计算机为什么使用二进制存储数据

计算机采用二进制存储数据主要基于硬件适配性和运算效率:1)半导体元件(晶体管、电容等)天然具备两种稳定状态,二进制能直接对应;2)二进制运算规则简单,便于电路实现;3)抗干扰能力强,仅需区分高低电平;4)便于存储传输,可高效处理并纠错。这些特性使二进制成为硬件实现最简单可靠的数据表示方式。

2025-12-27 12:49:43 606

原创 obj 文件

在 C++ 开发中,是的简称,是源代码编译后、链接成最终可执行文件前的中间产物。

2025-12-26 23:32:51 553

原创 配置环境变量的核心目的

配置环境变量的核心目的是(比如javacpythong++等),无需手动切换到程序的安装路径,极大简化操作流程。

2025-12-26 23:00:50 339

原创 如何理解编译?

本质是把高级语言代码转换成电脑能执行的机器码;核心步骤:预处理→编译→汇编→链接(新手重点记 “语法检查 + 生成可执行文件”);编译型语言(C/C++)因提前翻译,运行速度远快于解释型语言;编译报错 = 代码有语法错误,必须修复后才能生成可执行文件。简单说:编译就是给电脑 “翻译” 程序的过程,翻译对了(无语法错)就生成能运行的文件,翻译错了(语法错)就提示你改,这是编程中最基础也最核心的环节。

2025-12-26 22:00:22 553

原创 为什么要配置环境变量?

就能在任意 CMD 目录下直接执行。环境变量(以 Windows 的。(运行)命令,无需每次切换到。比如安装 Java 后,将。

2025-12-26 20:11:42 246

原创 CMD是什么

CMD是Windows系统内置的命令行工具,通过文本命令代替图形界面操作。它基于DOS内核演化而来,支持文件管理(dir、cd)、系统维护(ipconfig、ping)和程序调试等操作。新手需掌握基础命令如切换目录(cd)、查看文件(dir)、网络诊断(ping)等,注意区分CMD与PowerShell的区别,谨慎使用管理员权限和危险命令(如del、format)。CMD是系统管理和开发调试的重要工具,适合Windows进阶操作学习。

2025-12-26 19:04:49 1231

原创 谈谈AI对新人的影响和对行业的作用

然后我们讲一讲程序员的成长的本质,从初级到高级真正的差距,他不是说你写代码有多快或者语言有多多,用的框架有多新,而是说你看到业务需求里,越业务需求的时候脑子里的实现思路就初级到中级到高级,是初级这个需求怎么写,中级是这个需求应该是这样的,高级是这个需求的背后是什么。现在就是非常残酷的真相,如果在被用AI的时候AI也在用你,以为在学习编程,实际上在学习如何描述需求,以为写出了代码,实际上只是复制了代码,以为解决了问题,但是实际上是逃避了这个问题,以为提高了效率,但实际上是失去了成长的机会。

2025-12-24 17:37:27 511

原创 拒绝毒鸡汤,回归现实

一提到大厂,大家可能觉得年薪30万、50万甚至百万,但实际上大厂的普通岗位,双非能进的岗位一般集中在15 - 20万左右,且双非在大厂没有晋升空间,因为存在潜在的学历歧视,那些大厂的高薪技术专家、管理层核心骨干等位置,普通人拿不到,这种歧视是客观存在的。客观分析,我们在学习门槛、学习资源、实习机会、信息差、自制力等方面可能存在差距,这不是贬低,是客观存在的差距,我们的学历能力、学习能力、自制力和大厂精英不在一个维度,超不过他们是事实,但这不是终点,我们有自己的长处,要找到自己的赛道,不要去走别人的赛道。

2025-12-24 17:27:31 417

原创 C++ 中手动重载赋值运算符(operator=)时实现部分复制的思路和方法

C++ 中手动重载赋值运算符实现部分复制的核心是:在operator=函数中只拷贝需要的成员变量,忽略不需要的成员。重载时必须先防止自赋值,对指针成员需做深拷贝,并返回自身引用以支持链式赋值。部分复制是基于业务需求的自定义逻辑,适用于某些成员不需要随赋值复制的场景,需注意与深拷贝结合处理指针成员,避免内存问题。

2025-12-23 20:31:31 665

原创 \0的含义和作用

如果字符数组没有以\0结尾,程序处理时会 “越界” 读取内存中的随机数据,直到遇到内存中的某个\0为止,导致乱码:cpp运行// 没有\0的字符数组// 输出:hello + 随机乱码(越界读取)// 结果不确定(直到找到\0)cout << "str数组大小:" << sizeof(str) << endl;// 输出:5(仅包含5个字符)return 0;\0是空字符,ASCII 码为 0,是 C 风格字符串的结束标志,程序通过它识别字符串的边界。用双引号""

2025-12-23 18:28:34 1417

原创 ASCII 码的具体含义和作用

ASCII码是美国信息交换标准代码,用7位二进制数(0-127)将字符映射为数字,使计算机能处理文本。它包含33个控制字符(如换行符)和95个可打印字符(字母、数字、符号)。编程中可实现字符与ASCII码的相互转换,并利用其规律(如大小写字母相差32)进行字符处理。但ASCII仅支持英语,后续扩展ASCII码和Unicode(如UTF-8)解决了多语言编码问题,同时保持对ASCII的兼容。

2025-12-23 15:15:04 1036

空空如也

空空如也

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

TA关注的人

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