- 博客(24)
- 收藏
- 关注
原创 为什么一定要有微任务,直接一个宏任务不行吗
大家在写setTimeout宏任务的时候,不知道有没有想过这个问题:为什么一定要有微任务,直接一个宏任务不行吗?我想过,人要善于思考,才能更深入。想象这样一个场景:你在一家繁忙的咖啡馆点单。如果所有顾客都按照"先来先服务"的原则排队,那么一个点单耗时很长的顾客(比如要定制复杂饮品)会让后面所有只想要一杯浓缩咖啡的顾客等待很久。显然,这不是最高效的方式。聪明的我作为咖啡师会采用优先处理简单订单的策略——这就是微任务的设计理念。直入正文。
2025-08-14 19:32:14
297
原创 前端直接打开 AutoCAD DWG/DXF 文件的 Vue 3 组件来了
在很多前端开发者的认知里,AutoCAD 的 DWG/DXF 文件要么得用本地软件打开,要么需要后端进行格式解析。但现在,,无需任何后端支持——这就是 MlCadViewer。它是什么?是一个基于的高性能 CAD 组件,支持 AutoCAD DWG、DXF 文件的查看与编辑,完全在浏览器端运行。它不仅内置了现代化 UI,还集成了状态管理、渲染引擎、国际化、主题切换等功能,让你在项目里。快速上手。
2025-08-14 19:25:26
434
原创 深入理解npm、pnpm和yarn的lock文件,我发现了一些细节
这种结构,某个依赖的依赖被提升了,lock文件里也记录了,所以它就存在了。前段时间,因为排查一个棘手的依赖问题,我花时间深入研究了一下这三个文件,发现了一些非常有意思的细节。的依赖版本的“契约”,它是实现“可复现构建”(Reproducible Build)的基石,能从根本上避免“在我电脑上是好的啊”这种经典问题。作为团队的负责人,我现在更倾向于pnpm,不仅仅因为它快,更是因为它这种严谨的、可预测的设计哲学,能从根本上避免很多依赖问题。更重要的是,在每个包的条目下,它都明确地列出了。,它们到底长什么样?
2025-08-14 19:15:52
369
原创 [特殊字符]面试官:说说 Map 和 Set 的区别及实际应用
Map 是万能键值表,Set 是高性能唯一集合;缓存、去重、计数、白名单,记住这四个场景就能拿满分。
2025-08-14 18:35:31
289
原创 ⚡90%前端没摸过的 10 个 JS 神 API?复制即用,今晚早下班
把这张表贴在工位,下次写功能先翻 3 秒,别再手写轮询 + 正则了!A 标签页登录,B 标签页自动刷新。用户切标签页时暂停视频、停止轮询。把当前文章内容分享到微信、微博。埋点、预加载、长计算零阻塞。92%(需 HTTPS)图片懒加载、广告曝光统计。95%(需 HTTPS)一键复制邀请码、优惠券码。价格、股票、报表格式化。响应式图表、虚拟滚动。路由、埋点、搜索参数。取消过期请求、防抖动。一键速查表(面试背)
2025-08-14 18:31:52
329
原创 Next.js 静态资源非根目录部署指南
通过正确配置 Next.js 的basePath和,再配合 Nginx 的路由规则,可以实现 Next.js 应用在非根目录下的完美部署。这个方案适用于需要在同一域名下部署多个应用的场景。希望这篇文章能帮助大家解决 Next.js 非根目录部署的问题。如有任何疑问,欢迎讨论交流。
2025-08-13 17:08:21
333
原创 [特殊字符]面试追问:“除了 Promise,还有哪些微任务?”
把任何逻辑塞进微任务队列末尾——快、轻、无 UI 阻塞:DOM 变化后微任务触发——批量、0 回流、性能王者。
2025-08-13 17:03:56
360
原创 基于Redisson的高性能延迟队列架构设计与实现
Component@Overridetry {// 业务处理逻辑:取消超时订单log.error("处理订单超时失败", e);@Override@Override从去年到现在,这套延迟队列方案已经在生产环境稳定运行了一年多。期间经历了各种流量冲击和异常场景的考验,总体来说还是比较抗打的。当然,这个方案也不是完美的。比如在极高并发场景下,Redis的性能可能会成为瓶颈;再比如分布式锁的开销在某些业务场景下可能显得有点重。
2025-08-13 16:50:21
386
原创 用Spring Boot 搭建自己的 MCP Server
如果需要配置MCP Server,首先得有一个大模型的环境,这里直接使用IDEA中的通义灵码插件(也可以用其他大模型的插件),然后配置MCP Server。点击立即添加后,MCP Server会自动执行java -jar D:\test\solar-mcp-server.jar,等待一会儿后就自动连接上了。3、填写MCP Server的配置信息,这里我填写的是D:\test\solar-mcp-server.jar。1、打开IDEA中的通义灵码插件,然后点击MCP 工具,配置MCP Server。
2025-08-13 16:42:09
208
原创 京东一面:接口性能优化,有哪些经验和手段
接口性能优化,有哪些经验和手段?其实这种问法,最好是你结合曾经做过的优化案例来说,然后再补充一些常见的优化手段,那就比较完美啦。转账优化实战其他常见优化手段。
2025-08-13 16:27:51
457
原创 深入浅出Redis:一文掌握Redis底层数据结构与实现原理
我们可以看到,key 的类型固定是 string,而 value 可能的类型是多个\ 而从 Redis 内部实现的角度来看,database 内的这个映射关系是用⼀个 Dict 来维护的。Redis之所以高效,不仅在于它的内存操作,更在于巧妙的数据结构设计。因为 sizemark = size - 1,在二进制的视角看 sizemark 就是除了最高位是 0 其余都是 1 的一串 bit,当进行 **h & sizemask **计算时,其实就是提取 h 中除了最高位其他位时 1 的 bit。
2025-08-12 18:49:51
818
原创 JDK自带的HttpClient,替代Apache的更优解?
自 JDK 11 起,Java 官方正式引入了新的标准 HTTP 客户端 ——,提供了现代化、异步友好的编程体验。而在此之前,一直是 Java 社区使用最广泛的 HTTP 客户端库之一。HttpClient♀️JDK HttpClient响应式编程的优势其实除了最基本的http请求支持外,JDK11在 HTTP 客户端的设计中,使得它不仅支持常规的同步/异步请求,也支持背压控制的响应式数据流处理,这也是该客户端区别于传统库(如 Apache HttpClient)的重要进步之一。
2025-08-12 18:24:58
863
原创 Vue3项目中轻松开发自适应的可视化大屏!附源码!
本篇文章使用的 vue-echarts 是一个数据可视化组件库,它对 echarts 进行了封装,更适合在 Vue 项目中使用。前端组件库用的 ElementPlus,所以这里主要使用 el-row、el-col 和 el-card 进行布局。然后页面第一行数据统计占用 16% 高度,下面两行的图标层分别占用 42% 的高度。第一行数据统计行设置为 flex 布局,并分别设置子 div 的字体颜色。我们分别创建 4 个图表:两个柱状图,一个折线图,一个饼图。图表行和图表设置宽高为 100%
2025-08-12 17:44:03
380
原创 [特殊字符]浏览器隐藏的 API,90% 前端没用过,却能让页面飞起
主线程垃圾时间调度器:把埋点、预加载、长计算塞进空闲帧,零阻塞、零依赖、零配置。
2025-08-12 17:39:15
328
原创 为什么我坚持用git命令行,而不是GUI工具?
但Git那剩下20%的、极其强大的、但在特定场景下才能发挥作用的高级工具,很多GUI工具并没有提供,或者藏得很深。我完全承认,现代的Git GUI工具做得非常出色,它们直观、易上手,尤其是在处理简单的提交和查看分支时,确实很方便。我甚至会推荐刚接触Git的新人,先从GUI开始,至少能对Git的工作流程有个直观的感受。对于我们每天要用上百次的工具来说,零点几秒的效率提升,累加起来也是巨大的。在执行高频的、重复性的操作时,键盘的速度,永远比“移动鼠标 -> 寻找目标 -> 点击”这个流程要快。
2025-08-12 17:35:10
482
原创 告别轮询!深度剖析 WebSocket:全双工实时通信原理与实战
你是否还在用轮询(Polling)“打听”最新消息?WebSocket 的到来让 Web 进入真正的“电话时代”。本文将:1.用生动类比秒懂 WebSocket 与 HTTP 的本质区别;2.分步拆解 WebSocket 握手/数据帧/断开流程;3.基于原生 Go与,提供两个完整可跑 Demo(「公众号推送」示例与「微信群聊」示例),手把手教你实现实时推送与多人广播。
2025-08-11 14:53:29
1039
原创 Node.js 这么多后端框架,我到底该用哪个?
在 Node.js 后端开发的演进中,原生http模块奠定了最底层的通信基础,但开发效率低、缺乏结构,仅适合教学和理解原理。Express 作为最早普及的 Web 框架,以简洁路由和中间件机制迅速成为事实标准,适合中小型项目和快速开发。Koa 则是 Express 团队的重构尝试,引入和洋葱模型中间件,让异步处理更加优雅、控制更灵活。Fastify 聚焦于性能优化,具备出色的吞吐能力和插件化设计,是高并发接口、微服务网关的理想选择。
2025-08-11 14:45:13
494
原创 为了省内存选择sqlite,代价是什么
最近在将包含mysql的项目打包成镜像的时候,感觉mysql的镜像是真的大,拉取下来要很久。【因为本人的服务器配置比较拉胯,所以在windows上拉还可以,但是在服务器拉就很难受了】就在想是不是可以换成sqlite,我的印象中对sqlite的印象就是它占用内存小。既然占用内存小,那是不是在其他的某些方面做了妥协呢?今天主要就来讲讲这个。最后来总结一下什么时候用sqlite,什么时候不该用sqlite。
2025-08-11 14:41:27
461
原创 Vue项目XSS攻击防护指南:从漏洞发现到js-xss完美解决
最近我在开发项目的时候遇到了xss问题,起因是一个气泡生成的小功能用的是vforv-html的方式渲染.结果被漏洞扫描检测出具有xss风险,这篇文章将介绍什么是xss,以及如何在项目中处理.// 获取默认白名单// 输出所有默认允许的标签和属性// 自定义配置// 白名单配置// 继承默认白名单// 添加自定义标签// 修改已有标签的允许属性// 完全自定义某个标签},// 过滤配置stripIgnoreTag: true, // 过滤不在白名单的标签。
2025-08-11 14:30:24
860
原创 JavaScript localStorage 有大小限制吗?溢出会怎样?
自从 Edge 换成 Chromium 内核之后,它俩的所有行为基本表现一直,以前的 IE 内核没做测试,有兴趣的同学可以测试看看 IE 内核的表现行为。时需注意,由于 APP 会自动优化存储空间,写在本地存储中的数据随时都可能被清空删除,所以本地存储的数据是不可靠的。存储的数据无法互通,且无痕模式存入的数据在浏览器关闭时候会被清除(所有无痕模式窗口关闭也会清除)!仅支持字符串存储,所以在存储 JS 的 JSON 数据时,需要将 JSON 数据转为字符串再存储。打开的情况下,才会触发;
2025-08-11 14:20:23
344
原创 React Router:History API、核心原理与路由模式实现
初始化监听:例如 React Router 在 Router 组件中设置监听: useEffect(() => { const unlisten = history.listen((location, action) => { // 核心:触发状态更新,进而更新路由对应的组件 setState({ location, action });,其触发机制与主动导航类似,不过主要区别在于不会生成一个新的历史记录条目,而是。时,内部会创建一个 history 对象,并通过该对象进行导航(比如调用。
2025-08-09 15:59:16
802
原创 SpringBoot应用部署神器:可视化服务管理脚本让运维更轻松
这套基于SHELL的SpringBoot服务管理解决方案通过可视化界面、智能管理机制、资源监控和自动化部署,可以极大提供服务管理效率。它不仅大大提升了运维效率,还降低了操作风险,特别适合单机多服务和小规模微服务架构的部署场景。如果你也在为SpringBoot应用的部署和管理而烦恼,不妨试试这套解决方案。相信它会让你的运维工作变得更加轻松高效!
2025-08-07 18:44:25
335
原创 不再踩坑,在Vue3+vite安装UNOCSS
本文安装经过多次验证,坑点会重点强调,务必注意有两个版本极速版:只有代码和安装命令,非常快捷,适合已经了解unocss的同学详细版:图文教程,非常详细,适合初次接触的同学为了方便复制粘贴,先看极速版,如有遇到问题,再看详细版总共4步,缺一不可js和ts通用,注意修改文件后缀名尽可能的复制粘贴,别手写如有其他需要的安装教程,可在评论区留言。在main.js中添加,别写成 unocss,中间有个点成功示例最终效果,自检可在标签上写样式有代码提示信息@apply 生效。
2025-08-07 18:22:35
605
原创 JavaScript数组操作的5个高效技巧
优雅地创建序列数组和复杂结构flatMap():比map().flat()更高效的扁平化操作reduce() 去重:处理复杂对象数组去重的万能方法some()/every() 短路:高效的条件检查,避免不必要的遍历高级解构:简洁地提取和处理数组数据掌握这些技巧不仅能让代码更简洁,还能显著提升性能。在实际项目中,选择合适的方法往往能带来意想不到的效果!
2025-08-07 18:12:11
288
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人