一场FullGC故障排查
本文记录了一次Java应用CPU使用率异常升高的排查过程。通过分析发现,问题根源是用户上传的Excel数据被加载为大对象List<Map>结构后长期驻留JVM内存,导致Full GC频繁触发,进而引发CPU占用飙升。借助JProfiler工具定位到内存膨胀的具体对象,并结合代码逻辑提出优化方案:删除无用字段或改用缓存存储,避免大对象堆积。最终总结出一套从现象到本质的完整排查思路,强调需区分机器监控与JVM监控,精准定位性能瓶颈。
零拷贝
实现文件传输时,传统方式需频繁系统调用与内存拷贝,导致大量上下文切换和性能损耗。零拷贝技术通过减少用户态与内核态切换及内存拷贝次数,显著提升性能。它利用PageCache在内核态直接将文件数据送至网络,适用于小文件高效传输;而大文件场景则推荐异步IO结合直接IO,避免缓存污染,提升并发处理能力。
8应用架构图
应用架构图是技术实现的蓝图,体现系统内外部应用间的调用与数据关系。基于业务架构,划分展现、业务、数据和基础层,明确技术选型与分层逻辑。单体架构四层分离,职责清晰;分布式架构体现SOA服务调用,突出内部集成与外部依赖。通过调用链路与边界标注,厘清系统定位,支撑产品演进。(238字)
Webpack性能优化
本文介绍Webpack性能优化策略:通过按需加载、Tree Shaking、Scope Hoisting减小打包体积;利用HappyPack、DllPlugin、缓存等提升打包速度;结合代码压缩、resolve优化、长缓存配置,显著提升构建效率与加载性能,适用于大型项目优化实践。(238字)
DDL-数据库
介绍MySQL数据库常用操作命令:查看、创建、删除数据库及切换使用数据库。支持`database`与`schema`互换语法,推荐使用utf8mb4字符集以存储emoji表情,如😌,适用于MySQL 8.0+版本。
XSS攻击
XSS攻击利用网站对用户输入过滤不足,将恶意脚本注入网页,用户访问时执行,可盗取cookie、数据或劫持操作。主要分反射型(通过URL注入)和存储型(存入数据库)。防御方法包括转义字符、白名单过滤富文本、使用CSP策略限制资源加载,有效降低风险。
数组(顺序存储)基本原理
本章讲解数组的核心原理,区分静态数组与动态数组。静态数组是连续内存空间,支持O(1)随机访问,但增删效率低;动态数组基于静态数组封装,自动扩容并提供便捷API。我们将手动实现动态数组的增删查改,深入理解其底层机制,为学习栈、队列、哈希表打下基础。
前端工程化
Webpack是前端模块化打包工具,支持代码分割、模块化与静态分析。相比Grunt/Gulp,更注重模块处理。核心概念包括bundle、chunk、module。Loader用于解析非JS文件,Plugin扩展构建功能。构建流程含初始化、编译、依赖解析、输出等阶段。可通过SplitChunks提取公共代码、Tree-shaking去除无用JS(需ES6模块)、压缩资源、合理配置缓存(如chunkhash)优化性能。支持热更新提升开发效率,配合webpack-cli可自动生成配置。
二叉树基础及常见类型
二叉树是最基础且最重要的数据结构之一,不仅是红黑树、堆、字典树等的构建基础,更体现了递归的核心思想。掌握二叉树,等于掌握算法与数据结构的钥匙。本文详解其类型、性质与实现,助你彻底理解并驾驭各类高级结构与算法。