- 博客(233)
- 收藏
- 关注
原创 DBX 的安装(详细教程)
DBX 是一款开源、轻量的多数据库管理工具,支持 70+ 种数据库及数据系统(包括 MySQL、Redis、MongoDB、Kafka 等),安装包仅 20MB 左右。它提供统一界面管理多种数据库,支持桌面版和 Docker 部署,内置 AI 助手和数据迁移功能。相比商业工具 DataGrip 和 Navicat,DBX 完全免费、支持更多数据库类型且资源占用更低,适合需要同时管理多种数据库的开发者。支持 Windows/macOS/Linux 平台,提供在线/离线安装包及 Docker 部署选项。
2026-08-13 14:34:12
444
原创 AI Native 入门级教程
本文探讨如何从"会用AI"升级为"AI原生"的思维方式。文章通过对比"+AI"(在现有流程中添加AI功能)和"AI+"(围绕AI重构流程)两种模式,指出AI Native的核心在于将AI作为基础架构而非补丁。作者提出三个判断标准:AI是否核心引擎、交互是否意图驱动、系统是否持续学习。文中列举了Cursor编程工具、Perplexity搜索等AI Native案例,并对比传统产品的AI附加功能。最后介绍了AI Native应用的四层技术架构:基础模型层、上下文层、编排层和应用层,强调工作流重构和思维转变是实现
2026-07-30 10:54:37
413
原创 JavaScript|第30章:事件机制
JavaScript事件机制摘要 本章系统讲解了浏览器事件机制,包括事件处理、传播模型和常见事件类型。主要内容: 事件处理方式:对比HTML属性、DOM属性和addEventListener三种方式,推荐使用addEventListener注册事件监听器。 事件模型:详细说明事件传播的三个阶段(捕获→目标→冒泡),以及如何利用事件委托优化性能。 事件控制:介绍preventDefault阻止默认行为和stopPropagation停止事件传播的方法。 自定义事件:讲解如何创建和派发CustomEvent实现
2026-07-29 10:30:02
187
原创 JavaScript|第29章:Document 与 DOM 操作
本文系统讲解浏览器 DOM 操作:从浏览器环境与 DOM 树结构入手,介绍节点类型与遍历、getElement*/querySelector 等元素查询、节点的创建插入删除替换克隆与 DocumentFragment、Attributes 与 Properties 区别、classList/style 样式类操作、offset/client/scroll 等尺寸滚动属性、Window 尺寸与滚动控制及 client/page/screen 三种坐标系统,最后通过动态表格、回到顶部、元素拖拽实战巩固所学。
2026-07-29 10:25:59
418
原创 JavaScript|第28章:模块化 — 从 IIFE 到 ES Modules
本文介绍了JavaScript模块化的发展历程与实现方案。从早期的全局函数、命名空间存在命名冲突问题,到IIFE(立即执行函数)模式利用闭包创建私有作用域,再到揭示模块模式明确区分私有与公开接口。随后,服务端出现了CommonJS规范(module.exports/require),浏览器端则采用AMD规范(define/require)。最终ES6引入了语言层面的ES Modules标准(export/import),支持静态分析和Tree Shaking优化。文章还对比了命名导出与默认导出的区别,介绍了
2026-07-29 09:55:36
344
原创 JavaScript|第27章:生成器与异步迭代
本文介绍了JavaScript中的生成器与异步迭代机制。主要内容包括:1)回顾迭代器协议和可迭代协议,包括手动创建迭代器、next()方法及for...of循环的底层机制;2)讲解生成器函数(function*)的基础用法,如yield暂停恢复、next()双向通信;3)介绍yield*委托生成器;4)探讨生成器的高级应用,如状态机;5)异步生成器与for await...of异步迭代;6)生成器在惰性求值、无限序列等场景的应用;7)实战案例包括分页数据流、异步任务队列等。通过生成器可以实现按需计算的惰性求
2026-07-29 09:52:22
381
原创 JavaScript|第26章:async / await — 异步编程的终极方案
文章摘要 《async / await — 异步编程的终极方案》深入讲解了JavaScript中async/await的使用方法。主要内容包括: async函数基础: async函数始终返回Promise对象 返回值会自动包装为Promise 支持多种声明方式(函数声明、箭头函数、对象方法等) await关键字: 只能在async函数内部使用 暂停执行等待Promise结果 支持等待普通值(自动包装为Promise) 底层基于微任务机制实现 执行流程: 遇到await会暂停async函数执行 将后续代码转为
2026-07-23 18:04:12
382
原创 AI极简入门指南
这篇文章用通俗易懂的比喻和结构化讲解,帮助初学者快速理解AI领域的核心概念。文章首先将大模型比作"读过所有公开资料的学霸",解释了其工作原理和局限性;然后通过"点外卖"的案例对比了普通AI与Agent的区别,强调Agent能自主规划执行复杂任务;最后用专业定义+大白话的形式解析了LLM、Prompt、Fine-tuning、RAG、向量数据库等8个高频术语。全文采用生活化类比和实用框架(如提示词三要素模板),让零基础读者也能在5分钟内掌握AI基础知识体系。
2026-07-22 17:46:56
445
原创 JavaScript|第25章:Promise — 异步编程的基石
本文深入探讨了JavaScript中的Promise机制,作为异步编程的核心解决方案。文章首先回顾了回调地狱(Callback Hell)的问题,分析了嵌套回调导致的代码可读性差、错误处理分散等痛点。随后详细介绍了Promise的诞生背景、三种状态(pending/fulfilled/rejected)及其不可逆特性,并通过代码对比展示了Promise通过链式调用实现异步流程"扁平化"的优势。文章还涵盖了Promise的基本用法、错误传播机制、静态方法(all/race等)、Promisification(
2026-07-20 15:17:42
516
原创 JavaScript|第24章:事件循环与并发模型
文章摘要 JavaScript采用单线程模型,但通过事件循环机制实现异步并发。事件循环通过调用栈、任务队列(宏任务与微任务)协调执行顺序。宏任务(如setTimeout)按队列顺序执行,而微任务(如Promise.then)则会在当前宏任务结束后立即全部执行。关键机制包括: 同步代码优先执行 微任务优先级高于宏任务 微任务执行会彻底清空队列 浏览器渲染发生在宏任务之间 这种设计保证了执行顺序的可预测性,同时避免了多线程的同步问题。
2026-07-17 17:56:39
321
原创 JavaScript|第23章:错误处理
本文摘要: JavaScript错误处理是构建健壮程序的关键,主要通过try...catch...finally语法实现。文章详细解析了该语法的使用场景、Error对象的属性(name/message/stack)及常见内置错误类型(SyntaxError/ReferenceError等)。重点包括:finally子句的执行时机与注意事项、嵌套错误处理、异步错误的特殊处理方式,以及try...catch无法捕获的语法错误和异步错误。最后介绍了自定义Error类、错误抛出策略和全局错误捕获机制(window.
2026-07-17 17:54:43
258
原创 JavaScript|第22章:类与面向对象编程
本文摘要: 《JavaScript|第22章:类与面向对象编程》深入讲解了ES6 class语法。主要内容包括: class基本语法:通过对比传统原型写法和class写法,展示后者更清晰优雅的特点。class本质仍是函数,但具有必须new调用、方法不可枚举等特性。 类继承机制:详细讲解extends和super的使用方式,对比原型继承与class继承的底层原理。 高级特性:包括私有字段(#)、静态方法、访问器属性(getter/setter)等ES6+新增功能。 特殊应用:介绍扩展内置类、Mixin模式实现
2026-07-17 17:50:36
215
原创 JavaScript|第21章:原型与原型链
文章摘要:JavaScript原型与原型链 JavaScript采用基于原型的继承机制。每个对象都拥有一个隐藏的[[Prototype]]属性(可通过__proto__访问),指向其原型对象。当访问对象属性时,若自身不存在则沿原型链向上查找。现代API推荐使用Object.getPrototypeOf()和Object.setPrototypeOf()替代__proto__。原型链形成多层继承结构,属性写入仅影响对象自身(原型属性会被"遮蔽"),但setter/getter例外。通过Object.creat
2026-07-17 17:48:25
341
原创 JavaScript|第20章:函数式编程实践
本文介绍了JavaScript函数式编程的核心概念与实践,重点包括纯函数与副作用、不可变性与引用透明性、柯里化与函数组合等。纯函数具有可预测性、可测试性等优势,而不可变数据通过创建新副本实现更新。文章通过代码示例展示了函数式与命令式编程风格的差异,并图解了函数式编程的关键概念。主要内容涵盖纯函数定义、副作用识别、不可变更新模式,以及函数组合等实用技巧,为开发者提供了从理论到实践的完整指导。
2026-07-16 11:02:34
187
原创 JavaScript|第19章:函数进阶
本文介绍了JavaScript函数的进阶特性,重点探讨了递归及其优化技巧。主要内容包括: 递归基础:通过阶乘示例展示了递归调用栈的变化过程,强调基线条件的重要性 经典应用:包括斐波那契数列、深拷贝、数组扁平化和树结构遍历等递归场景 尾递归优化:解释了尾递归减少栈空间占用的原理(O(1)复杂度),并对比普通递归(O(n)复杂度) 递归转迭代:提供递归与迭代实现阶乘的对比代码 文章指出尾递归优化目前仅在Safari浏览器中支持,建议大量递归场景改用迭代实现。最后通过mermaid图直观展示了递归调用的堆栈变化过
2026-07-16 10:59:52
201
原创 JavaScript|第18章:作用域与闭包
这篇文章摘要如下: JavaScript作用域与闭包的核心概念解析 本文深入讲解JavaScript中的作用域机制与闭包原理。主要内容包括: 词法作用域与动态作用域的区别,JavaScript采用静态词法作用域 执行上下文的三阶段(创建、执行、回收)及调用栈的LIFO特性 变量提升机制(var)与块级作用域(let/const)的对比 闭包的定义、工作原理及内存管理注意事项 实际应用场景如模块模式、数据封装等 通过经典例题解析闭包在面试中的常见考察点 文章通过代码示例和图示(如调用栈示意图)帮助理解这些核心
2026-07-16 10:57:28
322
原创 JavaScript|第17章:日期、时间与 JSON
JavaScript 日期、时间与 JSON 摘要 本章深入讲解 JavaScript 中的日期时间处理和 JSON 操作: Date 对象基础 内部使用毫秒时间戳存储 四种创建方式:无参(当前时间)、时间戳、日期字符串、数值参数 特别注意月份从0开始(0=1月)的陷阱 日期字符串解析的时区差异问题 日期操作 提供 get/set 系列方法操作年月日时分秒 时区处理:UTC 与本地时间转换 多种格式化方法:toISOString、toLocaleString 等 JSON 处理 JSON.stringify
2026-07-16 09:24:00
178
原创 JavaScript|第16章:可迭代对象与 Map/Set
摘要 本文深入探讨JavaScript中的可迭代对象与Map/Set集合类型。主要内容包括: 迭代协议:可迭代对象需实现Symbol.iterator方法,返回符合迭代器协议(next()方法)的对象。 内建可迭代对象:Array、String、Map、Set等原生支持for...of遍历。 自定义迭代器:通过实现Symbol.iterator和迭代器协议,可创建自定义可迭代对象(如Range类)。 Map与Set:介绍了Map的键值存储特性(支持对象作为键)和Set的元素唯一性特点。 WeakMap/We
2026-07-15 10:27:36
179
原创 JavaScript|第15章:数组与数组方法
本文全面介绍了JavaScript数组的核心概念与操作方法。主要内容包括: 数组基础:本质是特殊对象,动态长度可存混合类型,创建方式多种(字面量、构造函数、Array.from等) 数组检测:推荐使用Array.isArray()而非typeof或instanceof 长度与空位:length属性可动态调整,稀疏数组与含undefined值的区别 核心操作方法: 增删:push/pop/shift/unshift/splice 截取:slice/concat 遍历:forEach/map/filter/re
2026-07-15 10:23:46
263
原创 python 的安装(详细教程)
Python是一种简洁优雅的高级编程语言,广泛应用于Web开发、数据分析、人工智能等领域。本文介绍了Python 3在Windows系统下的安装与配置步骤,包括安装前准备、下载官方安装包、自定义安装选项(推荐勾选"Add Python to PATH")、环境变量验证等关键内容,并强调Python 2已停止维护,建议使用Python 3最新版。安装时建议选择非系统盘路径,并确保勾选pip和py launcher等核心组件。
2026-07-14 11:09:16
10252
3
原创 JavaScript|第14章:字符串
JavaScript字符串核心要点 基础概念 创建方式:推荐使用单引号/反引号和String()构造函数,避免new String() 不可变性:所有修改操作都返回新字符串,原字符串不变 字符访问:可通过索引或charAt(),注意越界行为差异 重要特性 模板字符串:支持多行内容和表达式插值 Unicode处理:注意码点和代理对问题,emoji可能占2个长度单位 比较排序:字典序比较与localeCompare本地化排序 性能建议 避免循环拼接字符串,推荐使用数组join() 大量字符串操作时注意Unico
2026-07-13 11:31:02
228
原创 JavaScript|第13章:原始类型的方法
JavaScript原始类型方法机制解析 本文深入探讨了JavaScript中原始类型调用方法的底层机制。原始类型(如number、string、boolean)虽非对象,却能调用方法(如.toFixed()、.toUpperCase()),这得益于装箱(Boxing)机制——引擎会临时将原始值包装为对应对象类型(Number、String、Boolean),方法执行后立即销毁临时对象。文章详细解析了原始类型与对象类型的核心差异,并通过流程图展示了装箱/拆箱过程。重点讲解了数字类型的常用方法(toFixed
2026-07-13 10:08:48
319
原创 JavaScript|第12章:属性配置与 getter/setter
JavaScript属性配置与getter/setter摘要 本文深入讲解了JavaScript对象属性的底层配置机制。每个属性除了存储值,还包含三个关键标志: writable:控制属性是否可修改 enumerable:决定属性是否出现在遍历中 configurable:锁定属性配置 核心内容: 使用Object.getOwnPropertyDescriptor查看属性配置 通过Object.defineProperty精确控制属性行为 区分数据属性和访问器属性 实现getter/setter拦截属性访问
2026-07-13 09:55:32
258
原创 JavaScript|第11章:构造器与 new 操作符
JavaScript 构造器与 new 操作符的核心概念包括:构造函数通过 new 调用时自动执行四步操作(创建空对象、链接原型、执行构造体、返回this);构造函数与工厂函数的对比;原型方法共享机制。关联知识涵盖可选链?.的安全访问、Symbol唯一标识特性,以及对象原始值转换规则(toString/valueOf)。最佳实践包括避免构造函数中使用return、推荐class语法替代传统构造器,以及将共享方法置于prototype上优化内存。
2026-07-13 09:34:04
403
原创 JavaScript|第10章:对象方法与this
JavaScript对象方法与this摘要 本章深入探讨JavaScript中对象方法与this关键字的核心机制。主要内容包括: 对象方法:对象可存储函数作为方法,通过obj.method()调用时,方法内的this指向调用对象。 this绑定规则: 默认绑定:独立函数调用时,非严格模式指向全局对象,严格模式为undefined 隐式绑定:通过对象调用时指向该对象(注意方法提取后可能丢失this) 显式绑定:使用call/apply/bind强制指定this new绑定:构造函数调用时指向新创建的对象 手写
2026-07-10 18:08:22
328
原创 JavaScript|第9章:对象 — 基础
本文介绍了JavaScript对象的基础知识,包括对象的创建、属性操作及相关方法。主要内容包括: 对象创建:推荐使用对象字面量{}而非new Object(),支持属性简写和计算属性名。 属性操作: 访问属性:点号.和方括号[]两种方式 增改属性:直接赋值或批量添加 删除属性:使用delete操作符 检查属性:使用in操作符而非=== undefined 注意事项: 访问不存在的属性返回undefined 删除操作只能移除对象自身属性 使用in操作符能准确判断属性是否存在 对象是JavaScript的核心数
2026-07-10 17:16:28
400
原创 JavaScript|第8章:代码质量
JavaScript 代码质量指南 本文介绍了提升 JavaScript 代码质量的四个关键方面: 调试能力 - 详细讲解 Chrome DevTools 的使用,包括控制台日志、断点调试、Watch 表达式和条件断点等技巧。 代码风格规范 - 强调命名规范的重要性,提供变量/函数命名的最佳实践,帮助编写自解释的代码。 自动化测试 - 介绍测试框架的使用,强调用代码验证代码的可靠性。 兼容性处理 - 解释如何通过 Polyfill 和 Babel 确保新特性在旧环境中运行。 文章通过具体示例演示了调试过程,
2026-07-10 15:43:14
368
原创 JavaScript|第7章:函数基础
本文介绍了JavaScript函数的基础知识,主要包括函数声明与函数表达式的区别、箭头函数的特性及其适用场景。函数声明会被整体提升,适合定义通用工具函数;函数表达式不会提升,适合赋值给变量或在条件分支中定义。箭头函数具有更简洁的语法和词法绑定的this特性,适合用于回调函数和需要访问外层this的场景,但不能作为构造函数使用。文章还对比了普通函数和箭头函数在this绑定、arguments对象、构造函数等方面的差异,并给出了使用建议。
2026-07-10 15:40:02
365
原创 JavaScript|第6章:流程控制语句
本文介绍了JavaScript中的流程控制语句,主要包括条件语句和循环语句两大部分。在条件语句中,详细讲解了if...else结构、三元运算符、switch语句的使用方法、特性及适用场景比较。循环语句部分涵盖了for循环(包括基本for循环、for...of和for...in)、while循环和do...while循环的语法与应用场景。文章还提供了if...else与switch的选择策略,强调应根据具体需求(如范围判断、等值比较、分支数量等)选择合适的语句结构,并推荐现代JavaScript中使用对象映射
2026-07-08 22:04:38
285
原创 JavaScript|第5章:运算符与表达式
JavaScript运算符与表达式摘要 本章系统讲解了JavaScript中的运算符与表达式,重点内容包括: 算术运算符 - 包括基本运算符(+ - * / % **)和一元运算符(+ -),特别指出浮点数精度问题(如0.1+0.2≠0.3)及其解决方案 自增/自减运算符 - 区分前置(++a)和后置(a++)的不同效果 比较运算符 - 包括严格相等(===)与宽松相等(==)的区别 逻辑运算符 - 介绍与(&&)、或(||)、非(!)及短路求值特性 特殊运算符 - 空值合并运算符(??)和可选链运算符(?
2026-07-08 17:06:38
310
原创 JavaScript|第4章:类型转换
本文摘要: JavaScript类型转换分为显式和隐式两种。显式转换通过Number()、String()、Boolean()函数实现: Number()严格转换,非数字字符返回NaN,空字符串转为0 String()几乎可将所有值转为字符串,对象调用toString() Boolean()仅6个falsy值(false/0/""/null/undefined/NaN)转为false 隐式转换在特定场景自动触发: 算术运算(+除外)转为数字 +运算可能转为字符串拼接 逻辑/比较运算转为布尔值 ==宽松相等会
2026-07-08 11:47:56
335
原创 JavaScript|第3章:变量与数据类型
文章摘要 本文系统介绍了JavaScript中的变量声明与数据类型。首先对比了var、let和const三种变量声明方式的区别:var存在变量提升和函数作用域问题,let具有块级作用域和暂时性死区特性,const用于声明不可重新赋值的常量。最佳实践建议优先使用const,需要重新赋值时用let,避免使用var。 其次详细讲解了7种原始数据类型: number:统一使用双精度浮点数,包含特殊值Infinity、-Infinity和NaN string:不可变的文本类型,支持模板字符串 boolean:仅包含t
2026-07-08 11:32:07
389
原创 JavaScript|第2章:开发环境与工具链
JavaScript开发环境与工具链摘要 本章系统介绍了现代JavaScript开发的完整环境配置。首先解释了JavaScript引擎(如V8)的工作原理,包括解析、字节码生成和JIT优化流程。详细讲解了浏览器开发者工具的使用方法,包括控制台调试、元素检查、源代码断点调试等核心功能。 重点介绍了Node.js的安装与配置,包括版本管理工具nvm的使用。对比了npm、yarn和pnpm三大包管理器的特点,推荐使用更高效的pnpm。最后通过Vite工具快速搭建了现代JavaScript项目,展示了模块化开发的完
2026-07-08 10:38:26
384
原创 JavaScript|第1章:为什么学习现代 JavaScript
本章介绍 JavaScript 的诞生与演进历程,从 1995 年十天创造到 ES6+ 现代化变革;梳理其在前端、后端、移动端、桌面端的全平台应用;对比 var/let/const、箭头函数、Promise/async await、模块化等核心特性;并展示现代 JS 生态全景与本系列 42 章学习路线图,为零基础入门奠定认知基础。
2026-07-08 10:34:15
413
原创 nvm 的安装与使用(详细教程)
NVM(Node Version Manager)是一个用于管理多个Node.js版本的工具,允许开发者在同一台机器上安装、切换和管理不同版本的Node.js,避免项目间的版本冲突。本文介绍了nvm-windows的安装与使用,包括系统要求、卸载旧版Node.js的步骤,以及两种安装方式(推荐使用安装包自动配置环境变量)。安装后可通过简单命令切换Node.js版本,提升开发效率。适用于Windows 7及以上系统,支持64位架构。
2026-07-07 17:53:40
4751
2
原创 Java 实践:定位 PDF 指定内容的坐标
本文介绍了使用Java定位PDF文件中指定内容坐标的完整方案。首先分析了PDF坐标系的特性(左下角原点、磅单位)与屏幕坐标的差异,强调了坐标转换的必要性。然后提出基于iText 7的事件监听机制,通过捕获TextRenderInfo获取每个字符的边界框。文章详细设计了一个带回溯的前缀匹配算法,可处理字符流中的关键字重叠情况。最后给出了完整的Java实现流程,包括坐标转换、页面旋转修正和结果封装,适用于打码、签章等多种PDF处理场景。该方案解决了PDF二次开发中的核心定位问题,具备生产环境实用性。
2026-06-18 11:20:04
458
原创 Spring MessageSource 国际化方案
本文介绍了Spring MessageSource的国际化使用教程。主要内容包括: 核心概念:Locale标识语言地区组合,ResourceBundle是Java原生国际化方案但存在局限性。 快速入门示例: 创建Spring Boot项目 配置多语言资源文件(messages.properties等) 注入MessageSource获取本地化消息 MessageSource的三种实现: ResourceBundleMessageSource:基于JDK ResourceBundle ReloadableRe
2026-05-25 14:41:34
453
原创 设计模式-解释器模式
解释器模式是一种设计模式,用于定义语言的文法表示并提供解释器来执行该语言的句子。它将语法规则封装为独立的表达式类,通过组合构建抽象语法树(AST),递归解释执行。适用于简单文法的小型语言场景,如数学表达式、SQL解析等。核心角色包括抽象表达式、终结符表达式、非终结符表达式和上下文。实现时需将每种语法规则封装为表达式类,通过组合构建AST并递归调用interpret()方法执行。该模式解决了硬编码解析逻辑导致的代码臃肿问题,提高了扩展性和可读性。
2026-05-19 10:47:33
395
原创 设计模式-访问者模式
访问者模式是一种行为设计模式,通过将操作与对象结构分离来解决在不修改元素类的情况下新增操作的问题。其核心是双分派机制:第一次分派根据元素类型选择accept方法,第二次分派根据访问者类型选择visit方法。该模式适用于数据结构稳定但操作频繁变化的场景,如编译器AST处理、电商系统商品计价等。典型实现包含访问者、元素、对象结构三类角色,通过accept-visit的双重调用实现动态绑定,有效遵循开闭原则。
2026-05-19 10:34:10
433
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅