- 博客(107)
- 收藏
- 关注
原创 【前端八股文面试题】【JavaScript篇9】介绍js中的this对象
JavaScript 中 this 的指向取决于调用方式:全局环境指向 window/global;普通函数调用取决于严格模式;对象方法指向调用对象;构造函数指向新实例;箭头函数继承外层 this;还可通过 call/apply/bind 显式绑定。关键记忆点是:谁调用指向谁、无主指向全局、new 指向实例、箭头函数看定义、显式绑定可强制指定。(99字)
2025-08-14 11:02:50
305
原创 【前端八股文面试题】【JavaScript篇8】作用域链介绍?
JavaScript作用域链解析:作用域链是变量查找的层级规则,决定代码如何访问变量和函数。其核心逻辑为:从当前作用域开始查找,逐层向外直到全局作用域。函数定义时即确定作用域链(词法作用域),与调用位置无关。闭包是作用域链的典型应用,内部函数可访问外部函数变量。作用域链由函数作用域、块级作用域(ES6+)和全局作用域构成,理解其机制有助于避免变量冲突,是掌握闭包、模块化等高级概念的基础。
2025-08-13 16:37:47
377
原创 【后端】Spring框架控制反转(IoC)与依赖注入(DI)解析
本文介绍了控制反转(IoC)和依赖注入(DI)的核心概念及其在Spring框架中的实现。IoC将依赖对象的创建控制权从应用程序转移到外部容器,实现解耦。DI作为IoC的主要实现方式,Spring提供了三种注入方式:构造器注入(推荐)、Setter方法和字段注入(不推荐)。Spring IoC容器通过组件扫描和注解配置管理Bean的生命周期及依赖关系,支持松耦合、易测试的应用程序设计。文章通过支付服务示例,对比了传统紧耦合方式与Spring DI方式的差异,突出了IoC/DI在可维护性和可扩展性方面的优势。
2025-08-13 16:10:23
1006
原创 【后端】Spring @Resource和@Autowired的用法和区别
摘要: @Resource 和 @Autowired 是两种依赖注入注解,主要区别在于: 来源:@Autowired 是 Spring 原生,@Resource 是 Java 标准(JSR-250)。 注入方式:@Autowired 默认按类型,需配合 @Qualifier 指定名称;@Resource 默认按名称,可直接通过 name 属性指定。 功能:@Autowired 支持可选依赖(required=false)和构造器注入;@Resource 不支持构造器注入且依赖必须存在。 适用场景:Sprin
2025-08-12 22:06:54
980
原创 【前端】qs 库详细介绍
qs 是一个高效的 JavaScript 查询字符串处理库,支持复杂数据结构的解析(parse)和序列化(stringify),弥补了原生 URLSearchParams 的不足。核心功能包括:将查询字符串转为对象(支持嵌套结构)和将对象转为查询字符串。关键特性有嵌套对象处理、多种数组编码格式、深度控制与安全限制、自定义编解码等。qs 广泛应用于 HTTP 请求处理、服务器参数解析和复杂表单数据处理,是 Axios 等库的默认查询处理器。相比原生方法,qs 支持更复杂的数据结构和更灵活的配置选项。
2025-08-12 15:34:00
998
原创 【前端八股文面试题】【JavaScript篇7】什么是JavaScript的原型、原型链? 有什么特点
JavaScript的原型机制和原型链是其面向对象编程的核心。每个函数都有prototype属性,用于存储共享方法和属性;实例通过__proto__访问原型,形成原型链。查找属性时沿链向上,直到Object.prototype。原型具有动态性和共享性,修改会实时影响所有实例。ES6的class语法本质仍是原型继承的封装。理解原型链对掌握继承、类实现至关重要,需注意过长链会影响性能,引用类型属性修改可能引发共享问题。
2025-08-12 15:22:38
911
原创 【前端八股文面试题】【JavaScript篇6】typeof 与 instanceof 的用法与区别
JavaScript中typeof和instanceof是类型判断的两个核心操作符,主要区别在于:typeof用于检测基本数据类型(返回类型字符串),但对null、数组和对象都返回"object";instanceof检查对象是否为某构造函数的实例(包括继承链),但不适用于原始值。typeof适合基本类型和函数检测,instanceof适合对象类型和继承关系验证。实际开发中建议组合使用,并注意typeof null的遗留问题和跨窗口检测限制。
2025-08-11 14:38:24
832
原创 【前端八股文面试题】【JavaScript篇5】js中== 和 ===区别,分别在什么情况使用
JavaScript中==和===的区别:==会进行类型转换后比较,可能产生意外结果(如'5'==5为true);===严格比较类型和值,更安全可靠。建议始终使用===,仅在检查null/undefined时谨慎使用==,避免隐式转换带来的问题。ESLint等工具可强制使用严格相等比较。
2025-08-11 11:06:12
303
原创 【JSON】通俗易懂的JSON介绍
JSON是一种简洁通用的结构化数据格式,采用"键:值"对的形式存储信息,使用{}表示对象、[]表示数组。它具有字典式清晰结构、人机可读性强、跨平台通用三大特点,广泛应用于网络传输、API交互和配置文件。相比XML更轻量高效,支持字符串、数字、布尔值等基础数据类型,但不支持注释和函数。作为程序间的"数据快递箱",JSON通过规范的双引号、逗号等语法实现无歧义数据交换,成为现代开发中最常用的数据格式之一。
2025-08-11 10:48:20
392
原创 【后端】Java 8 特性 `User::getId` 语法(方法引用)介绍
本文介绍了Java中方法引用User::getId的语法特性与使用场景。方法引用是Lambda表达式的简化形式,通过ClassName::methodName语法引用现有方法。文中解析了四种方法引用类型,重点说明User::getId属于实例方法引用,其等价于user -> user.getId(),并会在Stream操作中作为分组依据。文章还对比了方法引用与Lambda表达式的适用场景,指出方法引用适用于简单方法调用,但当需要空值检查或多行操作时仍需使用Lambda。最后强调方法引用是编译器提供的语
2025-08-10 22:36:52
345
原创 【后端】Java 8 特性 Optional 可选类 介绍
Java 8引入的Optional类是一个容器类,用于优雅处理可能为null的值,避免空指针异常。它通过显式处理空值、链式调用替代嵌套检查,提升了代码可读性和健壮性。核心方法包括isPresent()、ifPresent()、orElse()等,支持链式操作如map()、flatMap()和条件过滤。最佳实践建议将其用于方法返回值而非参数或字段,避免直接调用get()。Optional体现了函数式编程思想,能显著减少空指针异常,但不适合替代空集合或作为方法参数。合理使用可使代码更安全简洁。
2025-08-10 11:40:49
414
原创 【前端八股文面试题】【JavaScript篇4】说说对BOM的理解,常⻅的BOM对象有哪些?
BOM(浏览器对象模型)是JavaScript与浏览器交互的核心接口,包含五大关键对象:window(窗口操作与全局容器)、location(URL控制)、navigator(浏览器信息)、history(历史记录管理)和screen(屏幕信息)。与操作网页内容的DOM不同,BOM专注于浏览器窗口行为,如导航、对话框和尺寸调整。需注意BOM缺乏统一标准,存在兼容性问题,建议使用特性检测而非依赖userAgent。HTML5 History API是构建单页应用(SPA)的重要技术。掌握BOM对开发动态Web
2025-08-10 11:33:51
753
原创 【前端八股文面试题】【JavaScript篇3】DOM常⻅的操作有哪些?
本文总结了前端操作DOM的常见方法,分为九大类:查询元素、修改内容属性、创建插入元素、删除替换元素、操作CSS样式、事件处理、DOM遍历、数据属性和其他操作。重点介绍了getElementById、querySelector、classList、事件委托等核心API,并提供了性能优化建议,如使用DocumentFragment批量操作、事件委托技术等。最后指出熟练原生DOM操作后,可借助React/Vue等框架提升开发效率。全文系统梳理了DOM操作知识体系,兼顾基础与进阶内容。
2025-08-09 17:51:19
817
原创 【后端】Java Stream API 介绍
Stream API 是 Java 中的函数式编程工具,用于声明式处理数据序列。它通过流水线式的中间操作(过滤、映射、排序等)和终端操作实现数据处理,具有惰性求值、内部迭代和可并行化等特点。相比传统循环,Stream API 代码更简洁、可读性更强,并能轻松实现并行处理。但需要注意流的不可复用性、避免副作用操作,并行流需谨慎使用。典型使用场景包括数据转换、筛选和聚合等,是处理集合数据的现代高效方式。
2025-08-09 17:43:03
1132
原创 【前端八股文面试题】【JavaScript篇2】说说你了解的js数据结构?
JavaScript提供了丰富的数据结构来组织和操作数据。核心数据结构包括数组(Array)和对象(Object),数组用于有序元素集合,对象用于键值对存储。ES6引入了Map(键值对,键可为任意类型)、Set(唯一值集合)、WeakMap/WeakSet(弱引用版本)。此外还有原始值、TypedArray(二进制数据)、JSON等。选择数据结构需根据具体需求:数组适合有序列表,Map适合任意键类型,Set适合去重,WeakMap适合对象元数据存储。合理选择数据结构能提升代码效率与可维护性。
2025-08-07 15:59:19
494
原创 【前端八股文面试题】【JavaScript篇1】JavaScript中的数据类型?存储上的差别?
JavaScript数据类型分为原始类型和引用类型,存储机制存在显著差异。原始类型(如Number、String等)直接存储在栈内存中,按值访问且不可变;引用类型(如Object、Array等)存储在堆内存中,变量保存地址,按引用访问且可变。赋值时,原始类型复制值,引用类型复制地址。关键区别包括存储位置、赋值行为、比较方式和可变性。理解这些差异有助于避免数据篡改问题,优化内存使用。检测类型可用typeof或instanceof,深拷贝需特殊处理。
2025-08-07 14:30:17
397
原创 【前端】Vite中import.meta功能详解
Vite项目中的import.meta是一个原生支持的元属性,提供模块上下文信息。主要功能包括:1)import.meta.env访问环境变量(内置变量如MODE、自定义VITE_前缀变量);2)import.meta.glob实现文件动态导入;3)import.meta.hot支持模块热替换;4)import.meta.url获取模块URL。这些特性在构建时会被静态优化,需要现代浏览器支持,TypeScript已预定义类型。通过import.meta,Vite将环境变量、模块操作和HMR等功能集成到ES模
2025-08-06 18:05:40
465
原创 【后端】java 抽象类和接口的介绍和区别
摘要: Java中的抽象类和接口是实现抽象与多态的核心机制,但二者存在显著差异。抽象类通过abstract定义,支持成员变量、构造方法和普通方法,用于代码复用和模板设计(单继承);接口则定义行为契约,支持多继承,Java 8+后允许默认/静态方法。关键区别在于:抽象类侧重“是什么”(is-a关系,共享逻辑),接口强调“能做什么”(has-a能力,解耦设计)。最佳实践是优先使用接口,需要复用代码时选择抽象类。例如InputStream是抽象类,而List是接口,体现了不同场景的应用选择。
2025-08-06 17:31:09
476
原创 【后端】Java static 关键字详解
Java中static修饰符用于定义类级别的成员,主要用于静态变量、静态方法、静态代码块和静态内部类。静态成员属于类而非实例,生命周期从类加载开始到JVM结束。静态方法只能访问静态成员,不能使用this/super,可通过类名直接调用。静态代码块在类加载时执行,用于初始化静态资源。与final结合可定义静态常量。使用时需注意:静态方法不支持重写和多态,共享数据需考虑线程安全。典型应用包括工具类设计、单例模式和全局配置。非静态方法可访问静态成员,但静态方法不能直接访问非静态成员。
2025-08-04 09:46:06
705
原创 【前端】JavaScript文件压缩指南
JavaScript 压缩指南摘要 JavaScript压缩通过移除冗余内容(注释、空格)、缩短变量名、简化语法和Tree Shaking来减小文件体积。常用工具包括Terser(主流命令行工具)、Webpack/Rollup插件、在线压缩工具和高性能的esbuild。操作示例涵盖Terser命令行使用、Webpack集成配置和ESBuild快速压缩方法。高级技巧推荐动态导入和服务器端Gzip压缩,同时需注意测试压缩代码、保留源码副本及谨慎使用混淆功能。根据需求可选择Terser(项目开发)、esbuild
2025-07-25 17:05:44
421
原创 【前端】JS与TS及JSX和TSX的详细介绍
本文比较了JavaScript生态中的四种关键技术:JS、JSX、TS和TSX。JavaScript是动态类型的基础语言,JSX为React添加了类HTML语法。TypeScript引入静态类型检查,而TSX结合了TS的类型系统和JSX的UI描述能力。文章通过代码示例展示了各自特点,并提供了对比表格:JS适合小型项目,JSX用于React开发,TS/TSX更适合大型应用和团队协作。随着项目规模扩大,从JS迁移到TS可提高代码质量和可维护性。
2025-07-24 15:36:07
737
原创 【前端】JavaScript 的事件循环 (Event Loop)
JavaScript 的事件循环是其实现异步编程的核心机制,通过单线程执行配合任务队列实现高效处理异步操作。关键点包括:同步代码优先执行,异步任务完成后回调进入宏任务队列(如setTimeout)或微任务队列(如Promise.then);事件循环会先清空所有微任务,再执行一个宏任务,循环往复。微任务优先级高于宏任务,这确保了快速响应和UI更新。理解事件循环对控制代码时序和避免阻塞至关重要。
2025-07-23 14:56:14
432
原创 【前端】当前主流的 CSS 预处理器语言Sass / SCSS、Less、Stylus
当前主流的 CSS 预处理器语言 主要有以下几种:Sass / SCSS、Less、Stylus,它们都通过提供变量、嵌套、混入、函数等强大功能来增强原生 CSS,提升开发效率和可维护性
2025-07-23 11:24:33
1160
原创 【前端】corepack包管理器版本管理工具的介绍与使用
Corepack是Node.js内置的包管理器版本管理工具(从v16.9.0默认启用),通过接管yarn/pnpm等命令实现项目级版本控制。开发者在package.json中指定"packageManager"字段后,Corepack会自动下载并使用对应版本,确保团队环境一致性。主要优势包括:无需全局安装包管理器、自动版本切换、支持Docker预缓存等。核心命令有enable/disable(启用/禁用)、prepare(预下载版本)、use(临时指定版本)。适用于需要固定构建环境、多项
2025-07-21 11:41:24
443
原创 Polyrepo与Monorepo两种源代码管理策略介绍与对比
摘要: Polyrepo(多仓库)和Monorepo(单仓库)是两种代码管理策略。Polyrepo将每个项目独立存放,隔离性强、权限精细,但依赖管理复杂且跨项目协作困难;Monorepo将所有相关项目集中管理,支持原子提交、源码级依赖和统一工具链,但仓库体积大、权限控制较难。选择依据项目耦合度与团队需求:Polyrepo适合独立性强、需精细权限的场景,Monorepo更适合高协作性项目。随着工具链成熟,Monorepo在复杂协作场景中更受青睐。
2025-07-21 11:16:37
1066
原创 【AIGC】生成式人工智能技术多行业应用现状
**摘要:**AIGC技术已广泛应用于多个领域,包括媒体传播(自动新闻、虚拟主播)、电商营销(个性化广告、智能客服)、教育医疗(AI辅导、辅助诊断)、影视娱乐(剧本生成、游戏设计)以及办公协同(智能助手、工业优化)。其核心价值在于提升效率和拓展创意,推动行业生态重构。未来趋势聚焦多模态融合、垂直场景深化和人机协作,但需解决版权、可控性等技术挑战。企业需结合需求布局数据与工作流,把握AIGC发展机遇。
2025-07-17 10:53:04
431
原创 【前端】CSS类命名规范指南
CSS 命名规范提升项目可维护性,主流方法包括BEM(Block__Element--Modifier)、SMACSS(五层架构)和SUITCSS(PascalCase命名)。核心原则是语义化命名、一致性、连字符分隔和命名空间。最佳实践建议使用连接符、避免嵌套、合理缩写,大型项目推荐CSS Modules结合SMACSS。数据显示规范命名可减少35%样式冲突,提升50%可读性,降低40%维护成本。中小项目适合BEM+状态类命名方式。
2025-07-16 16:11:48
422
原创 【前端】HTML语义标签的作用与实践
HTML语义标签通过<header>、<nav>、<article>等元素明确内容含义,提升SEO、可访问性和代码可读性。关键标签包括定义页眉、导航、主体内容、独立文章区块等,需避免滥用并正确嵌套。最佳实践包括为每个<section>添加标题、使用alt属性,以及渐进增强兼容旧浏览器。相比非语义<div>,语义标签使搜索引擎和屏幕阅读器更易解析内容结构,合理使用可显著提升SEO效果和用户体验。
2025-07-16 15:55:56
1078
原创 【AIGC】生成式人工智能的学习路径与资源推荐
如果你正想系统学习AIGC技术,却不想被广告干扰,我完全理解你的需求。结合目前主流高校、开源项目与行业认证的体系,我梳理了一份以技术为核心的AIGC学习路径,不含推广内容,方向清晰、层次分明,适合不同基础的学习者参考。
2025-07-15 17:09:05
351
原创 【AIGC】生成式人工智能的发展路径
AIGC(生成式人工智能)发展路径呈现系统性演进,分为"技术驱动—产业融合—生态重构—社会变革"四个阶段。2023-2025年为培育期,大模型迭代且B端应用落地;2025-2027年进入应用蓬勃期,跨模态生成成主流;2028-2030年实现生态成熟,与物联网深度集成。技术从单模态向认知智能演进,产业形成基础设施层、模型层、应用层三层架构。商业落地从降本增效转向创造新价值,但面临算力成本、数据短缺等挑战。未来将向AGI融合与终端硬件集成发展,最终重构内容生产范式,推动进入认知智能时代。
2025-07-15 11:58:48
1014
原创 【前端】 Vue 3 中二次封装组件
Vue 3 组件二次封装指南:通过属性/事件透传、插槽继承和方法暴露实现高效复用。关键技巧包括:使用v-bind="$attrs"传递属性,defineExpose暴露方法,TS类型支持,以及全局配置注入。遵循"功能扩展、样式统一、接口简化"原则,推荐采用组合式API实现逻辑复用,同时注意保持组件接口简洁性并提供合理默认值。完整示例展示了如何封装增强型Input组件,包含校验、计数等扩展功能。
2025-06-17 13:31:00
296
原创 【前端】cookie和web stroage(localStorage,sessionStorage)的使用方法及区别
摘要:Cookie和Web Storage是Web开发中常见的客户端存储方案,各有特点。Cookie容量小(约4KB),自动随HTTP请求发送,适合会话管理和用户跟踪,可通过JavaScript或HTTP头操作。Web Storage(包括localStorage和sessionStorage)容量更大(5MB+),仅客户端访问,适合存储临时数据。localStorage永久保存,sessionStorage在标签页关闭后失效。Cookie适合认证和小数据,Web Storage适合客户端配置和临时数据。安
2025-06-17 13:27:13
511
原创 【前端】js Map集合的使用方法
JavaScript 的 Map 是一种灵活的键值对存储结构,支持任意数据类型作为键并保持插入顺序。主要用法包括:通过 new Map() 创建,使用 set()/get() 添加/获取值,has()/delete() 检查/删除键值,clear() 清空,以及通过 size 获取条目数。Map 支持多种遍历方式(forEach、for...of),并可与数组/对象相互转换。其核心优势在于允许非字符串键、保持顺序和优化增删性能,适用于需要复杂键映射或频繁数据操作的场景。
2025-06-09 17:03:40
484
原创 【前端】vue父组件调用子组件,点击子组件弹出一个对话框,这个对话框写在父组件中还是子组件中
Vue组件间对话框实现方案对比 在Vue项目中,当子组件需要触发对话框时,有两种主要实现方式: 1. 子组件内实现 优点:逻辑内聚,复用方便 缺点:需通过ref操作子组件 适用:对话框内容与子组件紧密相关 2. 父组件内实现 优点:符合单向数据流,便于管理父组件数据 缺点:父组件可能臃肿 适用:对话框依赖父组件状态 建议方案 简单场景用子组件实现 复杂场景推荐父组件控制+子组件$emit触发 可使用插槽增强灵活性 优先考虑方案二(父组件控制),更符合Vue设计原则。
2025-06-09 10:43:20
1028
原创 【前端】vue3性能优化方案
Vue 3性能优化系统方案涵盖渲染、响应式、加载和代码优化四个维度。关键策略包括:渲染优化(v-if/v-show选择、v-memo缓存、虚拟滚动);响应式优化(shallowRef减少开销、计算属性缓存);组件懒加载(路由级/组件级异步加载、keep-alive);代码优化(Tree Shaking、静态提升)。特别推荐虚拟滚动、懒加载和shallowReactive,可显著提升大型应用的性能。建议配合Vue DevTools和Chrome Performance进行针对性优化,避免过度优化。
2025-06-05 11:38:00
1148
原创 【前端】js如何处理计算精度问题
JavaScript 采用IEEE 754双精度浮点数标准会导致精度问题(如0.1+0.2≠0.3)。解决方案包括:1)整数转换法适合简单运算;2)decimal.js/math.js库处理高精度金融计算;3)BigInt处理大整数;4)使用误差范围比较浮点数;5)谨慎使用toFixed()。最佳实践需根据场景选择方案,复杂计算推荐使用专业数学库,关键数据建议结合后端处理。精度问题是二进制浮点的通病,需系统性应对。
2025-06-05 10:19:56
696
原创 【前端】vue 防抖和节流
本文介绍了Vue.js中防抖(Debounce)和节流(Throttle)两种优化高频事件的技术。防抖适用于延迟执行(如搜索框输入),节流适用于固定间隔执行(如滚动加载)。文章对比了两种技术的核心区别,提供了手动实现、Vue组件应用以及Lodash库的使用方法,并给出最佳实践建议,包括合理设置时间间隔和组件销毁时清理定时器。通过这些技术可有效提升应用性能和用户体验。
2025-06-04 14:01:23
1082
原创 【前端】js 根据文件url下载到本地
本文介绍了JavaScript中实现文件下载的多种方法:1)使用<a>标签的download属性下载同源文件;2)通过Fetch API获取跨域文件并转为Blob处理;3)用表单提交兼容旧浏览器。文章还分析了特殊场景(大文件、浏览器兼容性)注意事项,并提供了综合解决方案。最后强调内存管理、用户体验和跨域问题等关键点。
2025-06-04 09:37:55
1502
原创 【前端】Vue3 中实现两个组件的动态切换保活
Vue3中实现组件动态切换保活的核心方案是结合<component>和<KeepAlive>。基础实现通过shallowRef管理组件切换,KeepAlive包裹实现状态缓存。进阶技巧包括:使用include/exclude精准控制缓存范围;利用onActivated/onDeactivated生命周期管理资源;通过max属性防止内存溢出。常见问题解决方案:确保组件声明name属性、添加过渡动画优化体验、使用key强制刷新缓存。最佳实践推荐按需缓存高频组件,结合本地存储持久化重要数据
2025-05-29 14:35:36
825
原创 如何使用deepseek等AI工具辅助web后端工作的开发
通过结合具体业务需求设计精准提示词,配合人工审核验证,AI工具可提升后端开发效率,同时建议建立团队内部的AI代码审核标准和知识库沉淀机制。“2024年后Spring Boot的最佳安全实践有哪些更新?生成结果可直接作为模块基础代码,需验证数据库连接配置和路由设置。AI应识别SQL注入风险,建议参数化查询。敏感数据处理:使用代码混淆工具后再提交。法律合规:核查生成代码的开源协议兼容性。版本控制:对AI生成代码添加特殊标记。示例场景:快速生成CRUD接口。:采用角色设定+技术约束模式。:对AI生成代码执行。
2025-02-12 18:39:19
1067
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人