- 博客(100)
- 收藏
- 关注
原创 程序员的 RAG 入门指南:让大模型拥有自己的知识库
RAG 全称 Retrieval-Augmented Generation,也就是检索增强生成。简单来说,RAG 就是给大模型配了一个外挂知识库。模型自己不知道的东西,先去知识库里面翻一翻,找到相关的资料,然后再基于这些资料来回答你的问题。我们都知道 LLM(大语言模型)是有局限的,它的底层是 Transformer 架构,本质上是一个"文字接龙"游戏 —— 根据前面的文字预测后面最可能出现的文字。这就导致一个问题:当模型遇到自己不懂的东西时,它不会说"我不知道",而是会一本正经地胡说八道。
2026-02-15 23:25:26
697
2
原创 Vue3+Node.js实现文件上传分片上传和断点续传【详细教程】
上一篇我们实现了并发控制和安全防线,解决了多文件上传的问题。但如果面试官继续追问:"如果用户要上传一个 2GB 的视频文件怎么办?"或者"上传到一半网络断了,用户需要从头开始吗?"这就需要分片上传和断点续传了。传统的文件上传是将整个文件一次性发送到服务器,这对于大文件来说有几个致命问题:分片上传的核心思路是:将大文件切成小块(如 2MB),逐个上传,最后在服务器端合并。1.2 断点续传 - 网络中断恢复断点续传的原理很简单:上传前先问服务器"你已经收到了哪些分片?",然后只上传缺失的部分。1.3文件哈
2026-02-01 22:31:24
669
10
原创 Vue3+Node.js实现文件上传并发控制与安全防线 进阶篇
上一篇我们实现了最基础的 FormData 上传,体会了前后端的基础联调。但如果在面试中被问到:“如果用户上传了一个 10GB 的文件怎么办?”或者“用户同时选了 100 张图片,浏览器卡死怎么办?”这就需要用到进度监听、双端校验与并发控制。
2026-01-25 15:09:21
714
9
原创 如何基于 RAG 技术,搭建一个专属的智能 Agent 平台
最近这段时间,我把精力主要集中在了一个新项目上——CreatChat。这是一个基于 RAG 架构的智能 Agent 平台。在介绍项目之前,我想先聊聊为什么我要做这件事,以及在这个过程中,RAG(检索增强生成)到底扮演了什么角色。RAG 的出现,就是为了解决这“最后一公里”的问题。它的逻辑其实非常直接:在把问题抛给大模型之前,先去一个外部的“知识库”里检索相关信息。系统把检索到的真实数据(Context)和用户的问题拼在一起,再交给大模型。
2026-01-10 15:25:23
489
10
原创 如何实现SSE流式输出前端-简单实现知识库agent模型, 让你深入了解SSE到底是什么
对接收到的数据块进行清洗定位和分发1. 清洗: 寻找有效数据行SSE 协议规定,一次完整的数据推送(Event)可能包含多行(如。
2026-01-03 21:56:39
1323
17
原创 为什么你的手势签到连线这么慢? 如何提升速度?
--> 使用canvas来画圆和线(这样的话就会导致绘画的时候每一个移动的节点都会导致清空画布再重新画圆, 这样就会导致速度变的很慢, 而且圆本身是不会有变化的, 所以这一步是完全不必要使用canvas来进行绘画的, 所以我们现在使用html+css来绘画)gesture-box就是包裹白色部分的一个盒子, 然后里面渲染了9个圆点, 如果这个盒子的宽高都是300, 那么每个圆点都占用100*100, 并且居中。讲解这个实现之前, 我简单描述一下为什么上一个实现的连线为什么这么慢?
2025-12-22 15:50:22
391
10
原创 为什么在 Vue 3 中 uni.createCanvasContext 画不出canvas?
为了实现组件化隔离,Vue 3 对组件内部的 DOM 节点进行了封装。
2025-12-21 17:34:28
842
13
原创 初步了解Next.js
Next.js是React的一个超集框架,为什么会有Next.js这个框架存在呢,因为它可以解决React的痛点,就是客户端渲染Next.js的一大亮点就是支持多模式混合渲染,分别有四种模式,CSR,SSR,SSG,ISR,然后我开介绍一下这四种模式是什么以及他们分别是如何渲染的。
2025-12-14 21:04:58
501
10
原创 《从零开始:打造“核桃苑”新中式风格小程序UI —— 设计思路与代码实现》
当下AI盛行,使用AI来完成项目事半功倍,当你遇到一个简单的pdf文字需求时, 如何讲文字设计的有感觉?今天我将详细讲解一下UI实现从0->1的过程核桃苑UI设计图-小程序端核桃苑小程序的UI设计图是通过HTML+JS实现的, 可以实现比较复杂的交互效果,体验感也是杠杠滴这个pdf需求文件就不给大家看了, 总之非常简洁~模型大家使用自己喜欢的,Claude, Gemini, GPT都可,AI是哪个不重要, 要看使用它的人, 当然还是推荐大家使用当下比较流行的AI,大家千万不要小看UI设计哦。
2025-12-07 18:10:10
507
14
原创 为什么我不能直接双击打开 HTML?——前端视角的 Localhost 揭秘
特性file:// (双击打开)根目录 (/) 指向电脑磁盘根目录 (如 C:)你的项目文件夹被浏览器拦截 (CORS)正常工作ES Modules无法加载正常加载适用场景仅用于查看纯文本/简单 Demo必须用于正式开发。
2025-11-30 18:04:54
1563
23
原创 常考链表合集【入门】
题目要求我们最终返回一个被反转的链表,以上面的实例为例, 我们是要返回节点5当做头节点的,但是在我们遍历的时候不知道链表的长度,等我们循环结束跳出的时候,cur和next都变成了null, 也就是5的下一个null节点, 所以我们需要一个pre节点来存储我们当前节点的上一个节点, 最终返回它。因为链表的递归节点一般都是.next进行参数传入, 所以当当前节点的下一个节点不为空时(判断当前节点的下一个节点, 实现要判断当前节点是否为空, 否者代码会报错),我们再进行反转。递归的终止条件是什么。
2025-11-23 17:34:48
665
21
原创 无重复字符的最长子串, 小白也能看懂
因为这个方法对于寻找元素非常友好, 通过map.get()可以获取到键对应的值, 通过map.has()可以判断该键是否存在。通过两个指针 left right, left表示左边界, right表示右边界。2. 当我们遇到窗口中已经有的字符, 左窗口跳到该字符的下一个字符。, 我们来看看窗口是如何滑动的(红色的方框表示我们的滑动窗口)首先我们需要将遍历过的字符存到一个数组里面, 这里我推荐使用。看起来这个滑动还挺简单的, 但是到底是如何用代码实现呢?到这里大家应该有思路了, 直接去实现吧~
2025-11-09 17:13:54
415
16
原创 节流防抖你究竟了解多少?
本篇文章我主要讲解的是节流防抖用来做什么的?对于处理高频触发事件, 比如窗口的 “resize”, “scroll”, "input"事件等,如果不加以限制, 这些事件可能会以极高频率进行, 如果回调函数内部的逻辑很复杂, 就会导致页面卡顿, 性能下降。
2025-11-02 18:48:07
887
22
原创 深拷贝浅拷贝
浅拷贝不存在于基本数据类型当中, 只存在于引用数据类型中对于基本类型而言: 如StringNumberBooleannullundefinedSymbolBigInt。这些值存储在栈内存中。当你把一个基本类型的值赋给另一个变量时,你是在复制这个值。let a = 10;let b = a;// 赋值a的值b = 20;// 10 (a 不受影响)对于引用类型而言 : 主要是Object,包括ArrayFunctionDateRegExp(正则) 等。
2025-10-26 17:51:54
1074
24
原创 如何学习Lodash源码?
任意一名工程师都需要有读源码的经历,源码就是代码中最底层的实现逻辑,深入学习源码有利于提高我们的代码思维和实现复杂场景解决问题的能力,如果你是小白,那和我一起来探索源码的世界吧,今天要分享的是学习过程中的一些感受和心得–Lodash源码。
2025-10-19 18:11:12
1020
29
原创 深入理解HTTP协议的本质
移动网络的频繁切换和丢包对TCP是致命的,但对QUIC影响很小。HTTP/2在单一TCP连接上实现了真正的并行传输,这种抽象能力的提升是协议设计的巨大进步。在实践中,HTTP/2的连接复用和小资源并行加载带来了显著的性能提升。这种设计在网页简单时是合理的,但随着网页复杂度增加,性能问题凸显。HTTP延续了TCP/IP的分层哲学,每一层都有明确的职责。很多人对HTTP的无状态性嗤之以鼻,认为这是协议的重大缺陷。这就像优秀的组织架构,前端专注于用户体验,后端专注于业务逻辑,数据库专注于数据一致性。
2025-10-12 18:55:38
860
17
原创 一套完整的前端“白屏”问题分析与解决方案(性能优化)
本文将带你深入浏览器的渲染世界,系统性地剖析页面白屏与卡顿的根源,并提供一套从网络、代码到体验的全方位优化“组合拳”,助你打造极致流畅的应用。在解决问题前,我们必须理解当我们在浏览器输入URL并回车后,究竟发生了什么。: 从第1步到第6步之间,任何一个环节被严重阻塞,屏幕上就画不出任何东西。优化不是盲目的,你需要数据来指引方向和验证成果。性能不仅是秒表上的数字,更是用户的心理感受。: 页面内容已出现,但无法交互。绘制 (Paint)
2025-10-05 18:10:37
2354
19
原创 JavaScript继承详讲
在JavaScript中,继承是非常核心重要的,今天我要和大家分享一下JavaScript中的继承都有那些,以及对应的一些优缺点。
2025-09-28 13:54:36
1017
20
原创 JavaScript对象创建方式完全指南:从原始到现代的演进之路
作为一名前端开发者,JavaScript中对象创建是很重要。在JavaScript这门基于原型的语言中,对象几乎无处不在。今天,我将带领大家回顾JavaScript对象创建的7种方式,从最原始的字面量到现代的ES6 class,每一步演进都解决了前一步的痛点,这就像是JavaScript语言设计的进化史。创建方式代码复用类型识别内存效率参数传递继承支持语法复杂度适用场景对象字面量✗✗✓✗✗简单创建单个对象工厂模式✓✗✗✓✗简单批量创建相似对象构造函数✓✓。
2025-09-14 18:03:27
1276
21
原创 从零构建WebSocket实时聊天室: 原理剖析与代码实战
作为一名前端工程师,实时通信是我们必须掌握的核心技术之一。今天,我将通过一个完整的聊天室项目,带大家深入理解WebSocket的工作原理,并手把手教大家如何构建一个功能完善的实时聊天应用。
2025-09-07 18:31:38
1190
21
原创 Sequelize ORM - 从入门到进阶
Sequelize的模型定义不仅仅是数据表结构的映射,更是业务逻辑的体现。'Student',name: {},},sex: {},mobile: {},},freezeTableName: true, // 防止自动将表名转换为复数createdAt: false, // 创建时间updatedAt: false, // 更新时间默认paranoid: true, // 软删除这个模型定义展示了Sequelize数据类型系统。
2025-08-31 14:31:47
986
26
原创 Node【文件+模块化+对象】详讲:
和exports的关系就是“主菜”和“筷子”的关系。是主菜,最终端上桌(被require)的是它。exports是一双筷子,默认指向这盘主菜。exports.属性 = 值:等同于用筷子夹菜,主菜()里的菜变多了。module.exports = 新对象:等同于把主菜换成了一盘新的菜,这双筷子(exports)还在夹原来的空盘子,与你新换的主菜无关了。因此,当你想导出多个属性时,推荐使用这种方式,或者将所有属性封装在一个对象中,一次性赋值给。但不要同时使用exports添加属性又重新赋值。
2025-08-24 23:31:21
1377
28
原创 JavaScript字符串详解
这种方式会创建一个字符串对象 (Object),而不是一个基本类型的值,可能会在比较时产生意想不到的结果。一旦一个字符串被创建,它的内容就永远无法被改变。这是最常用、最直接的方式。变量的“指针”从旧的。
2025-08-17 18:55:46
957
32
原创 JavaScript垃圾回收机制
GC即,程序工作过程中会产生很多"垃圾",这些垃圾是程序不用的内存或者是之前用过了,以后不会再用的内存空间,而GC就是负责回收垃圾的,因为他工作在引擎内部,所以对于我们前端来说,GC过程是相对比较无感的,这一套引擎执行而对我们又相对无感的操作也就是常说的垃圾回收机制不是所有语言都有GC,一般的高级语言里面会自带GC,比如等,也有无GC的语言,比如C、C++等,那这种就需要我们程序员手动管理内存了,相对比较麻烦在像 C/C++ 这样的语言中,开发者需要手动分配(malloc)和释放(free)内存。
2025-08-10 10:14:01
1528
32
原创 React中的Hooks
和。类组件可以使用state来管理内部状态,也能使用生命周期方法(如)来处理副作用。而函数组件是“无状态的”,它们只能接收props并返回JSX,无法拥有自己的状态和生命周期。简单来说,Hooks 让函数组件也能拥有和类组件几乎同等的能力,从此你可以在不编写 class 的情况下使用 state 和其他 React 功能。这使得函数组件成为现代React开发的首选。
2025-08-03 19:01:55
1637
35
原创 JavaScript单线程实现异步
1.浏览器内核:在讲JavaScript异步之前,先讲一下JavaScript运行环境,因为JavaScript是否能实现异步是通过运行环境机制决定的,我们经常使用的环境就是浏览器环境了,所以我今天主要讲一下在浏览器的渲染进程(浏览器内核)如何执行异步的。负责页面的渲染,脚本的执行和时间处理,对于来说,它其实就是当JS引擎线程执行时GUI渲染线程会被挂起,GUI更新则会被保存在一个队列中等待JS引擎线程空闲时立即被执行,防止渲染结果不可预期。
2025-07-27 12:19:45
1082
27
原创 后台管理系统登录模块(双token的实现思路)
当access_token过期时,需要使用refresh_token来生成一个新的access_token,那么什么时候会触发这个刷新机制呢,其实就是当调用权限接口的时候,如果access_token过期了,服务器教会返回一个401 unauthorized,前端的响应拦截器会获取所有的api请求,当它获取到401的时候,就知道access_token过期了,然后就刷新token了。1.首先我们需要渲染登录界面的窗口,这个很简单就不详细讲解了,然后主要就是关于点击登录按钮的接口的调用。
2025-07-20 14:30:09
1222
32
原创 后台管理系统-权限管理
那么多用户,我们不能给每一个用户单独设置权限,如果说我们的后台可以登录上万个用户,突然有一天,这个后台新增了一个权限,那我们岂不是要给所有的用户都添加上这个权限,这不是很麻烦吗,有没有比较便捷的方法,这个时候,角色可以分为很多个角色,不同的管理部门后台的角色不一样,普通角色可以拥有部分或全部功能模块的权限,超级管理员角色可以拥有所有功能模块的权限,并且可以管理其他用户和角色。在后台管理系统当中,权限管理占着非常重要的位置,权限管理,顾名思义,就是用来管理用户登录后台的权限。,进而控制这个用户的授权范围。
2025-07-11 21:44:22
1035
34
原创 react当中的this指向
在JavaScript当中,this的指向取决于函数调用的上下文,但是在react当中,this通常指向指向问题是一个常见的困扰,如果this没有正确绑定,那么方法中的this很可能会是undefined,导致程序出错。箭头函数不绑定自己的this,它会捕获所在上下文的this值,使用这种方法无需手动绑定,每次渲染的时候需要创建两个函数实例,可能会影响性能。在构造函数当中使用.bind(this)来this的指向绑定,这个方法比较方便,绑定一次即可生效,性能比较好,但是代码比较长。
2025-07-06 22:37:26
571
25
原创 基于React实现的一个记账本
/ 控制显示时间})// 设置当前月份的数据// 获取账单数据//按月进行数据分组})// 当 monthGroup 更新时,设置当前月份的数据,// 计算出这个月的总钱数return acc + Math.abs(item.money) // 支出取绝对值}, 0)return acc + item.money // 收入直接相加}, 0)return {pay,income,total: income - pay, // 结余 = 收入 - 支出。
2025-06-29 00:11:50
1281
35
原创 React基础
react是什么?为什么我们要学react呢,react和vue的区别是什么?1.什么是react?1.react是一个用来渲染用户界面(UI)的(react完全基于JavaScript,只要有js基础,就可以上手react开发)3.虚拟DOM的殊途同归2.开发环境搭建:1.创建项目:npx create-react-app react-demo2.进入项目:npm start。
2025-06-22 20:38:27
1082
24
原创 JavaScript 数据结构详解
最近在复习JavaScript的基础知识,和第一次学确实有了很不一样的感受,第一次学的比较浅,但是回头再进行学习的时候,发现有很多遗漏的东西,所以今天想分享一下新学到的知识,后面会一点一点补充更新JavaScript的数据结构有8个,分别是number string boolean object undefined null 还有es6新增的symbol和bigint,今天主要分享一下null undefined number,其他的等复习完会及时更新的。
2025-06-15 19:17:46
1112
28
原创 深入了解JavaScript当中如何确定值的类型
JavaScript是一种弱类型语言,当你给一个变量赋了一个值,该值是什么类型的,那么该变量就是什么类型的,并且你还可以给一个变量赋多种类型的值,也不会报错,这就是JavaScript的内部机制所决定的,那么当我们在使用一些方法的时候,必须知道该变量是什么类型的,才能调用该变量对应的一些方法,那么我们如何获取到值的变量呢?底层原理:js中为了提高性能效率,使用值编码来存储值的类型,读取值编码当中的类型标签位,根据标签值返回对应的类型字符串。类型判断流程:先区分「直接量」与「指针」
2025-06-06 17:54:09
765
22
原创 深入了解Vue2和Vue3的响应式原理
想必大家在学习vue的时候都会有这样的疑问,自己在学习JavaScript的时候,不论要修改什么内容,只有在页面刷新的时候,我们的值才会发生更新变化,但是当我们在一个vue项目中进行一样的操作的时候,就可以实现实时的变化,这是为什么呢,这是因为vue当中可以实现响应式数据更新,什么是响应式数据更新?到底是通过什么来进行实现的呢?
2025-06-01 19:18:23
1375
26
原创 TypeScript入门到精通
学习ts之前,我们首先了解一下我们为什么要学ts,ts是什么?ts比js有不同呢?TypeScript 是 JavaScript 的一个超集,是由微软开发的自由和开源的编程语言,支持 ECMAScript 6 标准(ES6 教程)。在 JavaScript 的基础上增加了静态类型检查的超集。TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。学习ts的好处:提高代码质量、可维护性和开发效率。
2025-05-24 21:32:26
1314
27
原创 vue3大事件项目遇到的一些问题
这周写完了vue3的大事件项目,从中学到了很多东西,并且解決了一部分bug,現在就和大家分享一下我遇到的问题并且是如何解決的1.版本问题,如果在quill版本2.0之后使用这个方法,那么我们的content会没有绑定上去,也不会有任何值的改变那么如何解决这个问题呢?那就需要用到我们的另一种写法2.x 版本推荐用只有这样,富文本内容和v-modelcontentformModelcontent才能实现真正的双向绑定,内容才能实时同步。
2025-05-18 12:46:08
1231
32
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅