- 博客(66)
- 收藏
- 关注
原创 吃透树与二叉树:从递归原理到 JS 全场景遍历实战
想要学懂二叉树,必须先掌握递归思想。大问题拆解为同结构的小问题,重复执行相同逻辑,直到触发终止条件。递归公式(递推关系):大规模问题拆解为多个小规模同类问题,逻辑完全复用递归终止条件(出口):避免无限递归,防止程序栈溢出举个经典的拆解示例:计算层级问题时,f(n)的结果依赖f(n-1)f(n-2)的结果,层层向下拆解,直到f(1)f(2)等已知结果的终止条件,再层层回溯计算出最终结果。递归底层原理:递归的每一次函数调用,都会在内存栈中开辟新的栈帧,保存当前函数的执行上下文。
2026-06-11 20:23:47
114
原创 深度详解JavaScript八大数据类型:从底层原理到内存机制实战
核心定义undefined表示未初始化、不存在、无返回值的被动空状态,是JS引擎默认赋值,非开发者主动操作。四大出现场景(全覆盖)变量声明后未手动赋值,引擎默认赋值为 undefined;访问对象中不存在的属性;无返回值的函数,调用后默认返回 undefined;访问数组不存在的索引位置。// 场景1:声明变量未赋值let a;// 场景2:访问对象不存在属性// 场景3:函数无返回值// 场景4:访问数组不存在索引。
2026-06-11 09:20:19
538
1
原创 深入吃透前端线性数据结构:数组、栈、队列、链表核心原理与实战
数组、栈、队列、链表都属于线性数据结构,元素呈一对一线性关系;树、图属于非线性数据结构,元素关系更复杂。栈和队列并非独立存储结构,是操作受限的数组/链表:栈后进先出,队列先进先出。JS 数组pushunshiftsplice都会修改原数组,不属于纯函数;unshift、数组结合shift实现队列,大数据场景性能较差。JS 数组内存并非一定连续,元素类型混杂时底层切换为哈希表存储。数组查询快、增删慢,适合小数据、高频查询场景;链表增删快、查询慢,适合大数据、高频增删场景。
2026-06-10 18:50:48
204
1
原创 吃透JS同步与异步:从底层原理到Promise实战
JavaScript 是前端、Node.js 后端的核心编程语言,而同步与异步是 JS 最核心、最基础、也是面试高频的重难点。很多开发者只会写定时器、接口请求代码,却不懂底层执行逻辑,经常遇到「代码顺序错乱、接口嵌套地狱、定时器延迟不准」等问题。本文将从底层架构、异步任务类型、JS执行机制、Promise核心原理、实战案例、避坑指南全方位讲解JS同步异步,零基础也能彻底看懂。同步代码优先执行,异步代码延后执行,Event Loop 是同步和异步的调度核心。
2026-06-10 09:15:00
447
1
原创 从零吃透 JS 数组:数据结构思维 + 底层原理 + 实战避坑指南
全文总结前端基础数据结构核心:数组、链表、栈、队列、树、二叉树JS 数组是动态弱类型,和强类型语言完全不同增删 API 全部是非纯函数,会修改原数组empty / null / undefined 三者本质完全不同函数原型链:Array → Function.prototype → Object.prototype二维数组 fill 引用类型会共享内存,必须循环初始化遍历各有优劣:追求性能用 for,追求语义用 for…of,批量处理用高阶函数核心知识点复盘。
2026-06-09 18:52:37
200
原创 Bun 新一代 JavaScript/TypeScript 运行时:从入门到实战
Bun 是一款高性能、开箱即用、零配置的 JavaScript 与 TypeScript 一体化运行时,同时内置了完整的包管理器,可作为 Node.js 的优化升级版使用。相较于传统 Node.js,Bun 核心优势集中在运行速度、启动效率、内置能力三大方向:启动更快、脚本执行效率更高,并且原生支持 TypeScript,无需额外编译配置,真正做到开箱即用。
2026-06-08 22:43:27
229
原创 从前端规范到AIGC实战:全栈开发者必备技术栈复盘
按约束(字数、聚焦维度)精简长文本;落地:行政文档提炼、商品评论汇总、资讯精简。配套completions.mjs封装getCompletion请求AIGC接口// 四条电商原始评论这个熊猫公仔是我给女儿的生日礼物,她很喜欢,去哪都带着。公仔很软,超级可爱,面部表情也很和善。但是相比于价钱来说,它有点小,我感觉在别的地方用同样的价钱能买到更大的。快递比预期提前了一天到货,所以在送给女儿之前,我自己玩了会。我想为我的卧室找一个漂亮的灯,这款灯还有额外的存储空间,价格也不太高。
2026-06-06 20:58:52
163
原创 基于Prompt的NLP项目实战:ES6模块化落地开发指南
全文总结NLP模块化价值:拆分client/方法/入口三层结构,实现配置、接口、业务解耦,复用模型客户端,大幅降低后期迭代维护成本;ES6核心语法落地let/const解决var作用域漏洞、解构简化对象/数组取值、...运算符便捷处理数组,ESM是模块化实现的底层支撑;项目分层逻辑client管模型配置、completion管NLP任务、main管业务Prompt,单一文件职责唯一,符合软件工程设计思想。核心知识点复盘单个默认导出(导入可改名)、export多个命名导出(导入名称固定);
2026-06-06 13:21:54
645
1
原创 彻底吃透JS执行机制:执行上下文、调用栈、var与let/const底层原理
全文总结JS不会逐行解释执行,固定顺序:预编译→执行,变量提升全部发生在编译阶段;执行上下文拆分变量环境、词法环境,分别管控var/function与let/const;调用栈以栈结构管理上下文,函数运行结束上下文出栈销毁;var缺少块级作用域、可重复声明,let/const依靠词法环境补齐短板,暂时性死区、块级作用域都是为修复var漏洞。核心知识点复盘变量环境存var/function,词法环境存let/const;
2026-06-05 23:00:17
518
原创 从栈队列数据结构到JS原型面向对象全解
数据结构:栈FILO、队列FIFO,双栈可以逻辑模拟队列;线性一对一、非线性一对多。JS构造函数:普通调用this指向全局,new调用this指向新建实例,new分四步创建对象。内存优化:实例属性this.xxx独占内存,原型全实例共享,开发通用方法统一放原型。原型链:实例自身→实例__proto__(构造原型)→Object.prototype→null,自上而下检索属性。JS无原生类,原型是JS面向对象原生实现方案。
2026-06-05 19:06:34
475
原创 LLM服务HTTP接口实战:前端HTTP请求全解与项目落地
全文总结(老式AJAX)、fetch(现代首选,对接LLM主流),基于前后端分离B/S架构完成前后端数据交互;网络通信基础:IP定位服务器、端口区分应用、DNS把域名转为IP、Endpoint是接口唯一请求地址;是异步请求核心语法,依托Promise改造,把异步请求同步化,简化LLM/业务接口代码;项目落地:json-server快速搭建Mock后端,前端fetch拉取JSON数组,map拼接HTML字符串渲染页面,完整复刻真实LLM接口对接流程;
2026-06-05 09:30:00
460
原创 JS正则表达式与字符串高阶实战精讲
全文总结手机号校验关键依靠首尾锚点^$,缺失边界符号会出现超长字符串误判通过的问题;正则核心由边界符、范围符、次数符、分组符组成,g修饰符实现全局批量匹配;JS数据类型分为基本值类型、引用类型,是精准判断引用子类型的标准方案;match批量提取内容、replace自定义替换逻辑,多占位替换场景优先使用递归。核心知识点复盘;test做布尔校验,exec捕获分组数据,g开启全局检索;()分组作用:捕获指定片段,不参与字符消耗;replace支持回调函数,动态自定义替换规则;
2026-06-04 23:16:23
642
原创 前端规范化实战:语义化HTML+BEM规范+标准CSS Reset开发微信按钮页面
很多前端开发者写页面只追求实现效果,忽略代码规范、结构语义、浏览器兼容性和团队可维护性。杂乱的class命名、浏览器默认样式差异、页面结构混乱,是新手开发的常见问题。今天这篇文章,带大家用企业级标准开发思路,从零搭建微信风格按钮页面,全程落地:结构化开发思维、HTML5语义化标签、BEM国际命名规范、标准CSS重置、UI精准还原,适合新手学习、团队规范落地、项目复用。本文完整讲解了前端标准化页面开发的完整流程,从开发思维、语义化结构、BEM命名规范、CSS样式重置、UI精准还原、实战代码全方位落地。
2026-06-03 23:22:14
232
原创 从零落地 Generative AI 接口调用:Node.js 工程化最佳实践
AIGC项目行业共识:绝大多数AI项目本质是后端Node项目所有大模型API对接、Agent编排、上下文管理、接口封装全在后端实现,前端只负责页面交互。步骤操作内容核心目的1初始化项目,生成package.json标准化项目配置,管理依赖2.gitignore配置node_modules与.env忽略规则安全+精简代码仓库体积3安装依赖引入大模型SDK+环境变量解析工具4项目根目录新建.env,存放密钥配置私密配置本地留存,杜绝代码硬编码泄露5代码顶层加载环境变量。
2026-06-02 22:12:52
422
原创 Prompt工程实战指南:规范设计、LLM接口封装与避坑技巧
本篇我们掌握了Prompt 工程体系 + LLM 接口开发,从模型原理、参数调优、提示词规范、企业级封装、实战场景全覆盖。用精准、完整、结构化的语言,约束大模型的概率生成行为,让 AI 从“随机说话”变成“按需求精准交付”。
2026-05-31 09:45:00
443
1
原创 从底层吃透哈希容器:Dict/List/Set 核心原理与避坑实战
本文核心讲解了编程底层哈希容器体系:哈希表是 Dict、Set 的底层核心,依靠 key 哈希运算实现 O(1) 极速查询;Dict 适合高速键值检索,内存开销大;List 节省内存,大数据查询低效。同时明确了可哈希规则:只有不可变对象可作为字典、集合的键,可变对象会直接抛出类型错误。最后区分了可变与不可变对象的本质差异,联动 JS 变量提升优先级知识点,打通前后端底层逻辑。
2026-05-30 20:16:31
745
原创 JavaScript 执行原理深入理解:彻底搞懂变量提升与编译执行机制
JS 代码并不是简单的从上到下逐行执行,而是分为编译预编译阶段和代码执行阶段。变量提升、函数提升、暂时性死区等所有诡异语法行为,全部来自预编译阶段的内存分配机制。var存在变量提升、挂载变量环境、允许声明前访问;let/const挂载词法环境、存在暂时性死区、禁止提前访问。函数声明整体提升,函数表达式仅变量提升,这也是日常开发的核心考点。理解执行上下文、变量环境、词法环境,是掌握 JS 底层原理的必经之路。
2026-05-30 13:50:52
574
原创 从零吃透 ES6 核心:变量声明、作用域、变量提升与坑点
ES6 的核心价值,是修复了早期 JS 仓促开发带来的语法缺陷,通过 let/const 替代 var、新增块级作用域、取消变量提升、引入暂时性死区,彻底规范了变量管理,让 JS 具备支撑大型企业级项目的能力。作用域冒泡规则、暂时性死区、const 赋值特性、循环异步陷阱,是前端开发、面试的核心重难点,也是日常编码最容易出错的细节。
2026-05-28 23:55:37
363
原创 从Python列表切片到LLM接口实战:零基础AI编程落地教程
我们利用切片+双指针思想,手动实现字符串去空格函数,替代原生strip()# 左指针:找到第一个非空格位置left = 0left += 1# 右指针:找到最后一个非空格位置right -= 1# 通过切片截取有效字符串区间# 测试效果核心原理:通过双指针定位有效内容区间,再通过切片精准截取,无多余字符操作,效率高于原生strip,适合自定义清洗规则。本文从底层架构、开发工具、基础语法、工程实战四个维度,完成了从Python基础到LLM接口落地的完整闭环教学。
2026-05-27 23:43:29
447
原创 爆火的FDE前沿部署工程师:AI落地最后一公里的核心操盘手
FDE前沿部署工程师是AI行业从技术内卷走向业务落地的核心新兴岗位,也是2025年增速最快、需求最旺盛的技术工种。区别于传统算法、开发岗位,FDE不追求极致的模型底层技术,而是聚焦AI技术的业务落地与价值变现。行业竞争逻辑已经彻底改变:巨头不再比拼模型参数与跑分,而是比拼谁能更快、更稳地将AI嵌入企业核心业务,帮客户实现降本、提效、增收、风控。FDE正是打通AI落地最后一公里的关键角色。
2026-05-27 17:17:47
414
原创 JavaScript 数组去重全解:6 种核心方法
数组去重是前端必备基础能力,核心是判断元素是否重复;所有方案都必须包含参数校验,保证代码健壮性;复杂度从低到高:O(n) < O(nlogn) < O(n²);最优方案:ES6 Set 去重,兼顾简洁性与性能;核心思想:循环对比、API 复用、空间换时间。
2026-05-26 10:52:35
370
原创 JavaScript——对象
本质上是让编译系统先判断 flight.equipment.model 判断它的上一层 flight.equipment 是否为空,如果上一层已经为null了,那就不需要再执行下一个判断,继续运行下一条语句了。手动定义属性数组 + 普通 for 循环,顺序可控、不触碰原型链,更稳定可靠。:ES6 新增,专门遍历数组、Map、Set、字符串等可迭代对象,(2) 手写原型继承: Object.beget (底层原理)(2) 属性值:可以是任意表达式,支持。作用:检测属性值的类型,但。(1) 全局变量的弊端。
2026-05-24 16:32:36
626
原创 全栈开发最小知识图谱:语义化·DOM·模块化·npm
DOM(Document Object Model,文档对象模型)是浏览器把 HTML 页面转换成的对象树。HTML 的每一个标签,在 JS 里都变成一个对象JS 可以通过这棵树访问、修改页面上的任何元素这就是“从静态页面到动态交互”的桥梁前后端分离fe目录负责界面,backend目录处理数据。前端三件套:HTML 搭建结构,CSS 美化样式,JavaScript 实现交互。模块化设计:每个文件夹职责明确,每个文件功能单一。布局核心:遵循“先盒子后内容”的原则,利用容器、行、列构建响应式布局。
2026-05-23 21:49:26
422
原创 借助 Claude Code Chat 模式快速接手并维护已有项目
通过 Claude Code 的 Chat 模式接手一个已有项目,本质上是把理解代码的工作从“人脑暴力解析”变成了“人机对话式探索”。你不必成为这个项目的原始作者,也不必通读每一个文件,你只需要知道你关心的那部分逻辑是怎么运作的,剩下的交给 AI 帮你补全上下文。信任文件夹:授权 cc 进入项目目录,明确安全边界初始化项目:运行 /init,让 cc 生成 claude.md 理解笔记对话式学习:用具体、有场景的问题提问,让 cc 解释核心流程和关键代码。
2026-05-21 09:45:00
780
原创 从Prompt到3D世界:用大模型精准构建你的迷你村庄
在构思Prompt时,首先要回答一个问题:我想做什么样的东西?对于3D小世界编辑器,定位是“摆在桌子上的小模型”,而不是“开放世界探索游戏”。这两者的差异巨大:模型世界:规模有限(8×8网格),视角固定俯瞰,物体像积木一样拼接,强调手作感和可控性。开放世界:无边无际,需要LOD(细节层次)技术、动态加载、第一人称或第三人称漫游。将定位明确写入Prompt,可以防止模型生成过于复杂或不切实际的方案。例如,明确要求“8×8左右的世界”,模型就会采用简单的二维数组存储地形数据,而非设计复杂的区块管理系统。
2026-05-19 11:05:09
496
原创 一人搞定全栈开发!AI 时代极简创业玩法
OPC 一人公司模式Vibe Coding 氛围编程Prompt 提示词工程,三者共同构成了 AI 时代全栈开发的核心方法论。传统软件开发被团队垄断的时代已经过去,普通个体只要掌握 AI 工具调度能力、精准的提示词编写能力、多角色切换思维,就能一人完成从创意构思到产品落地、市场变现的全流程。Goal(目标清晰) + Input(用户输入什么) + Output(输出什么) + Layout(布局) + Features(特色 灵活)
2026-05-16 18:45:23
541
原创 网络原理(六)——HTTPS
HTTP协议在传输过程中存在明文被篡改的风险,HTTPS通过加密机制提升安全性。加密分为对称加密(使用相同密钥)和非对称加密(公钥私钥配对)。HTTPS结合两者优势:用非对称加密传输对称密钥,再用对称密钥加密数据。为防止中间人攻击,引入证书和数字签名机制,由第三方公证机构验证公钥真实性。证书通过校验和比对确保未被篡改,若验证失败则提示风险。HTTPS通过多层加密和认证机制,有效保障用户信息安全。
2026-03-24 18:45:39
410
1
原创 网络原理(五)——HTTP
HTTP是一种广泛使用的应用层协议,基于文本格式,采用"一问一答"模型。HTTP报文分为请求和响应两部分,请求包含方法、URL和头部信息,响应包含状态码和正文。URL是资源定位符,包含协议、IP、端口、路径和查询字符串。GET和POST是主要请求方法,GET通过URL传递数据,POST通过body传递数据。头部信息包含Host、Content-Length、Content-Type等关键字段,用于描述请求属性。Cookie用于身份标识,Referer记录页面来源。HTTP通过Fiddle
2026-03-21 14:01:45
676
1
原创 网络原理(四)——数据链路层 应用层
网络转发的时候,A给B发送一个数据, A 不光要知道 B的IP地址, 也需要知道 B的mac 地址 (尤其是 A和B相邻的时候)访问某个网站的时候,不是每次访问都需要进行 DNS 访问的,相邻的几次访问,域名和 IP的映射关系是不会改变的,ARP 的作用就是协助构造出这个转发表,ARP 能够根据 IP 地址,获取到对应设备的 mac 地址。每个设备收到 ARP请求之后,返回响应, 响应中就会包含对应的 mac 地址的值。,通常是网卡出厂的时候就写死了【mac地址也通常会作为一个机器的身份标识】
2025-12-14 16:14:38
598
原创 网络编程套接字(二)——TCP
创建一个这样的对象就相当于打开了一个 socket 文件这个 socket 对象是给服务器专门使用的这个类本身不负责发送接收,主要负责建立连接ServerSocket(int port) 创建⼀个服务端流套接字Socket,并绑定到指定端⼝方法名 说明Socket accept() 开始监听指定端⼝(创建时绑定的端⼝),有客⼾端连接后,返回⼀个服务端Socket对象,并基于该Socket建⽴与客⼾端的连接,否则阻塞等待void close() 关闭此套接字。
2025-12-07 21:28:46
699
2
原创 网络编程套接字(UDP)
Datagram:数据报DantegramSocket 代表了操作系统中的 socket文件DatagramSocket 是UDP Socket,⽤于发送和接收UDP数据报实际上,文件在操作系统中可以代表更广义的概念,如网卡,网卡硬件设备也是通过文件来封装的(通过网络发送数据,需要从网卡中写入,接收数据要从网卡中读取)标准输入=>控制台:System.in(InputStream)标准输出=>控制台:System.out(OutputStream)
2025-09-11 20:18:39
843
原创 网络原理——初识
网络互联网络互联指将多台计算机连接在一起,完成数据共享数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。根据⽹络互连的规模不同,可以划分为和。局域网通过一个交换机时连接的电脑能够互联广域网游戏兴起了之后,出现了网游,这时就出现了广域网光宇网:把一大堆局域网进行相连,组成了更大的“局域网”由路由器连通,不断套娃。
2025-08-06 18:23:19
1056
原创 文件操作和IO
InputStream 是一个抽象类,不能创建实例,所以我们可以实例化它的子类FileInputStream(字节内容更习惯采用十六进制表示)方法修饰符及返回值类型 ⽅法名 说明int read() 一次读取一个字节,返回 -1 代表已经完全读完了int read(byte[] b) 一个参数版本,尝试把这个参数中的字节数组填满int read(byte[] b, int off, int len) 最多读取 len - off 字节的数据到 b中,从 off 开始,返回实际读到的数量。
2025-08-05 17:48:04
831
原创 多线程进阶(7)——锁策略
CAS的判定原理是,当前load 到寄存器的内容,和 内存 的内容是否一致,如果一致,就认为没有其他线程修改过这个变量,接下来本县城的修改就是安全的。解决方案:引入 版本号 ,约定每次修改,都要对版本号+1,并且每次 CAS比较的时候,都是比较版本号是否相同(相同的话,进行版本号+1和余额修改)·当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素。对于乐观锁,认为锁冲突概率不高,就会尝试通过一些其他方式代替阻塞(如忙等/ 版本号…
2025-07-31 20:07:13
741
原创 多线程(6)——线程池,定时器
(比如线程池有任务队列,有阻塞队列,当任务队列满了的时候,如果再次添加新任务,正常来说,除非特殊说明,我们写的代码是不希望会出现这种突发性的阻塞的(可能会对程序造成不可预估的影响),因此直接添加线程阻塞是不太好的,因此标准库引入了 “拒绝策略”)Executors本质上是对ThreadPoolExecutor 进行了封装,本质上也是一个工厂类,提供了一些工厂方法,对上述的 ThreadPoolExecutor 进行不同的初始化。Java的线程 创建的时候,会申请一些线程(
2025-07-11 16:17:10
730
原创 多线程(5)——单例模式,阻塞队列
在之前,都是按照单线程来编写代码,这个代码执行下来,第一次判定和第二次判定的结论是一定相同的,但是现在是多线程模式了,实际开发中,单例类的构造方法可能是一个非常重量的方法,如果多次触发这个bug,就会浪费好几分钟的时间(加载时间翻倍)2.值加载文件的一小部分,就立即给用户显示,随着用户的翻页操作,在加载对应部分数据(懒汉模式)等待消费者处理,直接扔给阻塞队列,消费者不找⽣产者要数据,⽽是直接从阻塞队列⾥取.因为队列最大容量只有2,如果再入队列,就会触发阻塞了,take() 同理。
2025-05-26 20:11:35
1289
原创 多线程(4)——线程安全,锁
在多线程编程中,线程不安全问题主要源于多个线程同时修改共享数据,且操作非原子性。线程调度的随机性、内存可见性问题和指令重排序是导致线程不安全的根本原因。为了解决这些问题,Java提供了synchronized关键字,通过加锁机制确保操作的原子性,避免多个线程同时修改同一变量。此外,死锁是多线程编程中的常见问题,通常由多个线程相互等待对方持有的锁引起。为避免死锁,可以通过规定加锁顺序或避免在持有锁的情况下申请新锁来打破死锁的四个必要条件。理解并应用这些机制,可以有效提升多线程程序的稳定性和性能。
2025-05-17 11:48:05
983
原创 多线程(3)——线程的状态
线程的状态是一个枚举类型enum,用Thread.State 表示。操作系统中的线程,生命周期和 Thread 对象不完全一致。
2025-05-13 10:00:00
334
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅