- 博客(92)
- 收藏
- 关注
原创 【后端】Java static 关键字详解
Java中static修饰符用于定义类级别的成员,主要用于静态变量、静态方法、静态代码块和静态内部类。静态成员属于类而非实例,生命周期从类加载开始到JVM结束。静态方法只能访问静态成员,不能使用this/super,可通过类名直接调用。静态代码块在类加载时执行,用于初始化静态资源。与final结合可定义静态常量。使用时需注意:静态方法不支持重写和多态,共享数据需考虑线程安全。典型应用包括工具类设计、单例模式和全局配置。非静态方法可访问静态成员,但静态方法不能直接访问非静态成员。
2025-08-04 09:46:06
297
原创 【前端】JavaScript文件压缩指南
JavaScript 压缩指南摘要 JavaScript压缩通过移除冗余内容(注释、空格)、缩短变量名、简化语法和Tree Shaking来减小文件体积。常用工具包括Terser(主流命令行工具)、Webpack/Rollup插件、在线压缩工具和高性能的esbuild。操作示例涵盖Terser命令行使用、Webpack集成配置和ESBuild快速压缩方法。高级技巧推荐动态导入和服务器端Gzip压缩,同时需注意测试压缩代码、保留源码副本及谨慎使用混淆功能。根据需求可选择Terser(项目开发)、esbuild
2025-07-25 17:05:44
399
原创 【前端】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
722
原创 【前端】JavaScript 的事件循环 (Event Loop)
JavaScript 的事件循环是其实现异步编程的核心机制,通过单线程执行配合任务队列实现高效处理异步操作。关键点包括:同步代码优先执行,异步任务完成后回调进入宏任务队列(如setTimeout)或微任务队列(如Promise.then);事件循环会先清空所有微任务,再执行一个宏任务,循环往复。微任务优先级高于宏任务,这确保了快速响应和UI更新。理解事件循环对控制代码时序和避免阻塞至关重要。
2025-07-23 14:56:14
415
原创 【前端】当前主流的 CSS 预处理器语言Sass / SCSS、Less、Stylus
当前主流的 CSS 预处理器语言 主要有以下几种:Sass / SCSS、Less、Stylus,它们都通过提供变量、嵌套、混入、函数等强大功能来增强原生 CSS,提升开发效率和可维护性
2025-07-23 11:24:33
1147
原创 【前端】corepack包管理器版本管理工具的介绍与使用
Corepack是Node.js内置的包管理器版本管理工具(从v16.9.0默认启用),通过接管yarn/pnpm等命令实现项目级版本控制。开发者在package.json中指定"packageManager"字段后,Corepack会自动下载并使用对应版本,确保团队环境一致性。主要优势包括:无需全局安装包管理器、自动版本切换、支持Docker预缓存等。核心命令有enable/disable(启用/禁用)、prepare(预下载版本)、use(临时指定版本)。适用于需要固定构建环境、多项
2025-07-21 11:41:24
429
原创 Polyrepo与Monorepo两种源代码管理策略介绍与对比
摘要: Polyrepo(多仓库)和Monorepo(单仓库)是两种代码管理策略。Polyrepo将每个项目独立存放,隔离性强、权限精细,但依赖管理复杂且跨项目协作困难;Monorepo将所有相关项目集中管理,支持原子提交、源码级依赖和统一工具链,但仓库体积大、权限控制较难。选择依据项目耦合度与团队需求:Polyrepo适合独立性强、需精细权限的场景,Monorepo更适合高协作性项目。随着工具链成熟,Monorepo在复杂协作场景中更受青睐。
2025-07-21 11:16:37
1058
原创 【AIGC】生成式人工智能技术多行业应用现状
**摘要:**AIGC技术已广泛应用于多个领域,包括媒体传播(自动新闻、虚拟主播)、电商营销(个性化广告、智能客服)、教育医疗(AI辅导、辅助诊断)、影视娱乐(剧本生成、游戏设计)以及办公协同(智能助手、工业优化)。其核心价值在于提升效率和拓展创意,推动行业生态重构。未来趋势聚焦多模态融合、垂直场景深化和人机协作,但需解决版权、可控性等技术挑战。企业需结合需求布局数据与工作流,把握AIGC发展机遇。
2025-07-17 10:53:04
394
原创 【前端】CSS类命名规范指南
CSS 命名规范提升项目可维护性,主流方法包括BEM(Block__Element--Modifier)、SMACSS(五层架构)和SUITCSS(PascalCase命名)。核心原则是语义化命名、一致性、连字符分隔和命名空间。最佳实践建议使用连接符、避免嵌套、合理缩写,大型项目推荐CSS Modules结合SMACSS。数据显示规范命名可减少35%样式冲突,提升50%可读性,降低40%维护成本。中小项目适合BEM+状态类命名方式。
2025-07-16 16:11:48
371
原创 【前端】HTML语义标签的作用与实践
HTML语义标签通过<header>、<nav>、<article>等元素明确内容含义,提升SEO、可访问性和代码可读性。关键标签包括定义页眉、导航、主体内容、独立文章区块等,需避免滥用并正确嵌套。最佳实践包括为每个<section>添加标题、使用alt属性,以及渐进增强兼容旧浏览器。相比非语义<div>,语义标签使搜索引擎和屏幕阅读器更易解析内容结构,合理使用可显著提升SEO效果和用户体验。
2025-07-16 15:55:56
1073
原创 【AIGC】生成式人工智能的学习路径与资源推荐
如果你正想系统学习AIGC技术,却不想被广告干扰,我完全理解你的需求。结合目前主流高校、开源项目与行业认证的体系,我梳理了一份以技术为核心的AIGC学习路径,不含推广内容,方向清晰、层次分明,适合不同基础的学习者参考。
2025-07-15 17:09:05
339
原创 【AIGC】生成式人工智能的发展路径
AIGC(生成式人工智能)发展路径呈现系统性演进,分为"技术驱动—产业融合—生态重构—社会变革"四个阶段。2023-2025年为培育期,大模型迭代且B端应用落地;2025-2027年进入应用蓬勃期,跨模态生成成主流;2028-2030年实现生态成熟,与物联网深度集成。技术从单模态向认知智能演进,产业形成基础设施层、模型层、应用层三层架构。商业落地从降本增效转向创造新价值,但面临算力成本、数据短缺等挑战。未来将向AGI融合与终端硬件集成发展,最终重构内容生产范式,推动进入认知智能时代。
2025-07-15 11:58:48
945
原创 【前端】 Vue 3 中二次封装组件
Vue 3 组件二次封装指南:通过属性/事件透传、插槽继承和方法暴露实现高效复用。关键技巧包括:使用v-bind="$attrs"传递属性,defineExpose暴露方法,TS类型支持,以及全局配置注入。遵循"功能扩展、样式统一、接口简化"原则,推荐采用组合式API实现逻辑复用,同时注意保持组件接口简洁性并提供合理默认值。完整示例展示了如何封装增强型Input组件,包含校验、计数等扩展功能。
2025-06-17 13:31:00
263
原创 【前端】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
501
原创 【前端】js Map集合的使用方法
JavaScript 的 Map 是一种灵活的键值对存储结构,支持任意数据类型作为键并保持插入顺序。主要用法包括:通过 new Map() 创建,使用 set()/get() 添加/获取值,has()/delete() 检查/删除键值,clear() 清空,以及通过 size 获取条目数。Map 支持多种遍历方式(forEach、for...of),并可与数组/对象相互转换。其核心优势在于允许非字符串键、保持顺序和优化增删性能,适用于需要复杂键映射或频繁数据操作的场景。
2025-06-09 17:03:40
453
原创 【前端】vue父组件调用子组件,点击子组件弹出一个对话框,这个对话框写在父组件中还是子组件中
Vue组件间对话框实现方案对比 在Vue项目中,当子组件需要触发对话框时,有两种主要实现方式: 1. 子组件内实现 优点:逻辑内聚,复用方便 缺点:需通过ref操作子组件 适用:对话框内容与子组件紧密相关 2. 父组件内实现 优点:符合单向数据流,便于管理父组件数据 缺点:父组件可能臃肿 适用:对话框依赖父组件状态 建议方案 简单场景用子组件实现 复杂场景推荐父组件控制+子组件$emit触发 可使用插槽增强灵活性 优先考虑方案二(父组件控制),更符合Vue设计原则。
2025-06-09 10:43:20
1014
原创 【前端】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
1108
原创 【前端】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
648
原创 【前端】vue 防抖和节流
本文介绍了Vue.js中防抖(Debounce)和节流(Throttle)两种优化高频事件的技术。防抖适用于延迟执行(如搜索框输入),节流适用于固定间隔执行(如滚动加载)。文章对比了两种技术的核心区别,提供了手动实现、Vue组件应用以及Lodash库的使用方法,并给出最佳实践建议,包括合理设置时间间隔和组件销毁时清理定时器。通过这些技术可有效提升应用性能和用户体验。
2025-06-04 14:01:23
1042
原创 【前端】js 根据文件url下载到本地
本文介绍了JavaScript中实现文件下载的多种方法:1)使用<a>标签的download属性下载同源文件;2)通过Fetch API获取跨域文件并转为Blob处理;3)用表单提交兼容旧浏览器。文章还分析了特殊场景(大文件、浏览器兼容性)注意事项,并提供了综合解决方案。最后强调内存管理、用户体验和跨域问题等关键点。
2025-06-04 09:37:55
1328
原创 【前端】Vue3 中实现两个组件的动态切换保活
Vue3中实现组件动态切换保活的核心方案是结合<component>和<KeepAlive>。基础实现通过shallowRef管理组件切换,KeepAlive包裹实现状态缓存。进阶技巧包括:使用include/exclude精准控制缓存范围;利用onActivated/onDeactivated生命周期管理资源;通过max属性防止内存溢出。常见问题解决方案:确保组件声明name属性、添加过渡动画优化体验、使用key强制刷新缓存。最佳实践推荐按需缓存高频组件,结合本地存储持久化重要数据
2025-05-29 14:35:36
807
原创 如何使用deepseek等AI工具辅助web后端工作的开发
通过结合具体业务需求设计精准提示词,配合人工审核验证,AI工具可提升后端开发效率,同时建议建立团队内部的AI代码审核标准和知识库沉淀机制。“2024年后Spring Boot的最佳安全实践有哪些更新?生成结果可直接作为模块基础代码,需验证数据库连接配置和路由设置。AI应识别SQL注入风险,建议参数化查询。敏感数据处理:使用代码混淆工具后再提交。法律合规:核查生成代码的开源协议兼容性。版本控制:对AI生成代码添加特殊标记。示例场景:快速生成CRUD接口。:采用角色设定+技术约束模式。:对AI生成代码执行。
2025-02-12 18:39:19
1052
原创 如何使用deepseek等AI工具辅助前端工作的开发
使用 DeepSeek 等 AI 工具辅助前端开发的高效方法,涵盖代码生成、问题解决、效率优化等场景,并提供具体案例说明
2025-02-12 12:53:13
949
原创 【后端发展路径】基础技术栈、工程能力进阶、高阶方向、职业发展路径
初期需夯实基础,中期聚焦分布式与工程化,长期向架构或管理方向突破。保持对新技术的敏感度(如Web3后端、量子计算基础设施),同时避免陷入“追逐工具”的陷阱,始终以解决实际问题为导向。后端开发的核心竞争力在于。
2025-02-11 18:59:18
943
原创 【前端发展路径】技术成长路径、职业方向分支、行业趋势与建议、学习资源推荐
前端开发是一个快速发展的领域,技术栈和职业路径也在不断演进。,无论选择哪个方向,保持好奇心和对技术的热情是关键。随着经验的积累,可以逐步找到适合自己的细分领域,成为不可替代的开发者。前端开发的核心价值在于。
2025-02-11 15:39:17
909
原创 C语言学习笔记《带你学C带你飞》P41-P61
文章目录41、内联函数和一些鲜为人知的技巧42、结构体43、结构体数组和结构体指针44、传递结构体变量和结构体指针45、单链表146、单链表247、单链表348、内存池49、基础typedef50、进阶typedef51、共用体52、枚举类型53、位域54、位操作55、移位和位操作的应用56、打开和关闭文件57、读写文件158、读写文件259、随机读写文件60、标准流和错误处理61、IO缓冲区本文是小甲鱼《带你学C带你飞》课程的学习笔记,由于篇幅原因,本文只包含P41到P61的内容查看P1~P20查
2022-04-23 13:48:48
951
原创 C语言学习笔记《带你学C带你飞》P21-P40
文章目录21、指针22、指针和数组23、指针数组和数组指针24、指针和二维数组25、void指针和NULL指针26、指向指针的指针27、常量和指针28、函数29、参数和指针30、指针函数和函数指针31、局部变量和全局变量32、作用域和链接属性33、生存期和存储类型34、递归35、汉诺塔36、快速排序37、动态内存管理138、动态内存管理239、C语言的内存布局40、高级宏定义本文是小甲鱼《带你学C带你飞》课程的学习笔记,由于篇幅原因,本文只包含P20到P40的内容查看P1~P20视频链接21、指
2022-04-19 22:29:43
2002
原创 C语言学习笔记《带你学C带你飞》P1-P20
文章目录1、序言2、第一个程序3、打印4、变量5、常量和宏定义6、数据类型7、取值范围8、字符和字符串9、算术运算符10、关系运算符和逻辑运算符11、if语句12、switch语句和分支嵌套13、while语句和do while语句14、for语句和循环嵌套15、break语句和continue语句16、拾遗17、数组19、字符串处理函数20、二维数组1、序言本文是小甲鱼《带你学C带你飞》课程的学习笔记,由于篇幅原因,本文只包含P1到P20的内容视频链接2、第一个程序编程语言是人类跟机器打交
2022-04-17 11:17:00
2843
3
原创 LeetCode练习题【java】(3)
文章目录1、判断链表是否是环形链表(HashSet、双指针)2、合并两个有序数组(JavaAPI、双指针)3、子数组最大平均数(滑动窗口)4、最长连续递增序列5、柠檬水找零6、三角形的最大周长1、判断链表是否是环形链表(HashSet、双指针)/** * 环形链表 * 给定一个链表,判断链表中是否有环 * 如果链表中有某个节点,可以通过连续跟踪next 指针再次到达该节点,则链表中存在环 * 如果链表中存在环,则返回true。否则,返回false */public class Circula
2022-03-23 16:18:53
1135
原创 LeetCode练习题【java】(2)
文章目录1、三个数的最大乘积(线性扫描)2、无序数组的两数之和(暴力法、HashMap)3、无序数组的两数之和(二分法、双指针)4、求取斐波那契数列第N位的值(递归、双指针迭代)5、排列硬币(二分法、牛顿迭代)1、三个数的最大乘积(线性扫描)/** * 三个数的最大乘积 * 整型数组nums,在数组中找出由三个数字组成的最大乘积,并输出这个乘积。 * 乘积不会越界 * 重点考察:线性扫描 */public class ThreeNumbersMaxProduct { public s
2022-03-21 16:48:57
733
原创 LeetCode练习题【java】(1)
文章目录1、单链表的反转(迭代、递归)2、 统计n以内的素数个数(暴力法、埃筛法)3、删除排序数组中的重复项(双指针法)4、寻找数组的中心下标5、求x的平方根(二分法、牛顿迭代)1、单链表的反转(迭代、递归)public class ReverseSingleList { public static void main(String[] args) { ListNode node5 = new ListNode(5, null); ListNode node4 =
2022-03-20 18:25:16
962
原创 四种常用的查找算法(顺序、二分、插值、斐波那契查找)
文章目录1、查找算法2、线性查找算法2.1、基本介绍2.2、代码实现3、二分查找3.1、基本介绍3.2、代码实现4、插值查找4.1、基本介绍4.2、代码实现5、斐波那契(黄金分割法)查找5.1、基本介绍5.2、代码实现1、查找算法常用的查找算法有四种:顺序(线性)查找二分查找 / 折半查找插值查找斐波那契查找 / 黄金分割点查找2、线性查找算法2.1、基本介绍【顺序查找】要求:如果找到了,就提示找到,并给出下标值。2.2、代码实现//顺序查找public class S
2022-03-15 09:48:59
590
原创 常用排序算法总结和对比
文章目录1、常用排序算法总结和对比2、算法的时间复杂度3、算法的空间复杂度1、常用排序算法总结和对比排序算法平均时间复杂度最好情况最坏情况空间复杂度排序方式稳定性冒泡排序O(n²)O(n)O(n²)O(1)In-place稳定简单选择O(n²)O(n²)O(n²)O(1)In-place不稳定直接插入O(n²)O(n)O(n²)O(1)In-place稳定希尔排序O(nlogn)O(nlog²n)O(nlog²n)
2022-03-02 17:10:52
2695
原创 归并排序和基数排序
文章目录1、归并排序1.1、归并排序基本介绍和思想1.2、归并排序代码实现2、基数排序2.1、基数排序基本介绍和思想2.2、基数排序代码实现1、归并排序1.1、归并排序基本介绍和思想归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。归并排序思想示意图1-基本思想:说明:
2022-02-28 16:37:03
744
原创 简单选择排序和堆排序
文章目录1、简单选择排序1.1、基本介绍1.2、代码实现2、堆排序2.1、基本介绍2.2、基本思想2.3、堆排序步骤图解说明2.4、代码实现1、简单选择排序1.1、基本介绍选择式排序也属于内部排序法,是从预排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。选择排序(select sorting)也是一种简单的排序方法。基本思想是:第一次从arr[0]~arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]~arr[n-1]中选取最小值,与arr[
2022-02-27 22:34:35
559
原创 冒泡排序和快速排序
冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始,,依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排序写好后,再进行)1.2、代码实现//升序排序/
2022-02-26 12:02:26
498
原创 直接插入排序和希尔(shell)排序
文章目录1、直接插入排序1.1、基本介绍和思想1.2、代码实现2、希尔排序2.1、简单插入排序存在的问题2.2、希尔排序法介绍和基本思想2.3、交换法代码2.4、移动法代码(推荐)1、直接插入排序1.1、基本介绍和思想插入式排序属于内部排序法,是对于预排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从
2022-02-25 15:12:44
982
原创 【贪心算法】求解【集合覆盖问题】
1、贪心算法介绍贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果贪心算法注意事项和细节贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果比如下面一题的算法选出的是K1,K2,K3,K5,符合覆盖了全部的地区。但是发现 K2,K3,K4,K5 也可以覆盖全部地区,如果K
2022-02-23 08:45:42
1839
1
原创 【分治算法】解决【汉诺塔问题】
1、分治算法概述分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题…直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换.)…分治算法的基本步骤( 分治法在每一层递归上都有三个步骤):分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题解决:若子问题规模较小而容易被解决则直接解,否则递归地解各
2022-02-22 15:23:13
292
原创 图的基本介绍以及深度优先遍历和广度优先遍历
文章目录1、图的基本介绍1.1、图的定义1.2、图的表示方式2、图的深度优先遍历介绍2.1、图遍历介绍2.2、深度优先遍历基本思想2.3、深度优先遍历算法步骤3、图的广度优先遍历3.1、广度优先遍历基本思想3.2、广度优先遍历算法步骤4、图的应用示例1、图的基本介绍1.1、图的定义图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。结点也可以称为顶点。无向图:顶点之间的连接没有方向,比如A-B,即问以是A->B也可以B->A,无向图如下有向图:
2022-02-21 14:39:17
1202
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人