- 博客(1719)
- 收藏
- 关注
原创 解决 Docker 权限问题:从 “permission denied” 到成功拉取镜像的完整指南
解决Docker权限问题的简明指南 当执行docker pull时遇到"permission denied"错误,通常是因为当前用户未加入docker组。解决方法只需两步: sudo usermod -aG docker $USER 将用户加入docker组 newgrp docker 立即生效组权限变更 验证成功后可正常拉取镜像。此问题源于Docker守护进程默认仅允许root和docker组成员访问/var/run/docker.sock套接字文件。注意生产环境应谨慎分配docker
2025-10-16 15:35:55
457
原创 解密 Spring Boot 核心配置:MySQL (Druid) & Redis 篇
摘要: 本文深入解析Spring Boot中MySQL(Druid)和Redis的核心配置要点。MySQL部分强调8.0+版本需添加allowPublicKeyRetrieval=true参数,详解Druid连接池优化配置;Redis部分指出Spring Boot 3.x配置路径简化为spring.redis,并介绍Lettuce连接池设置。文章特别提醒注意时区设置、编码规范、敏感信息管理等常见"坑点",帮助开发者编写更稳定高效的配置。配置虽小却直接影响应用性能,合理设置连接池参数和正确
2025-10-15 19:43:03
902
原创 Nacos 重启“二重奏”:从认证配置到JWT密钥,一次搞定!
摘要:本文详细记录了解决Nacos容器无限重启问题的完整过程。首次启动失败是因缺少认证密钥配置,补充NACOS_CORE_AUTH_SERVER_IDENTITY_KEY/VALUE后,又因JWT密钥长度不足(需≥32字节且Base64编码)再次失败。通过生成符合要求的Base64密钥并更新NACOS_AUTH_TOKEN,最终使Nacos、MySQL、Redis全部正常启动。关键经验:利用docker logs精准定位错误,严格遵循安全规范配置参数,日志中的ERROR和Caused by是解决问题的金钥匙
2025-10-15 14:30:54
616
原创 告别磁盘空间不足!Hyper-V + Ubuntu 虚拟机磁盘扩容终极指南
这篇文章详细介绍了如何在Hyper-V平台下为Ubuntu虚拟机扩展磁盘空间。首先通过Hyper-V管理器物理扩容虚拟硬盘,然后使用GParted Live ISO进行逻辑分区调整。关键步骤包括:创建检查点安全备份、关闭虚拟机、扩展VHDX文件、用GParted重新分配未使用空间。操作完成后,Ubuntu系统即可识别新增的存储空间。本文提供了完整的图文指引,帮助用户彻底解决虚拟机磁盘空间不足的问题。
2025-10-14 20:48:01
514
原创 Ubuntu虚拟机磁盘扩容全记录:从99%爆满到21%充裕的完美蜕变
Ubuntu虚拟机磁盘扩容实战记录 🚀 紧急状况:磁盘使用率达99%,仅剩172MB,系统运行困难。 扩容过程: 安装GParted工具并解决图形界面显示问题 诊断发现GPT分区表损坏 使用gdisk修复分区表 重新扫描磁盘并刷新分区信息 关键命令: sudo gdisk /dev/sda # 修复分区表 echo 1 | sudo tee /sys/block/sda/device/rescan # 重新扫描 sudo partprobe /dev/sda # 刷新分区表 扩容效果: 总容量从12GB→
2025-10-14 20:23:06
463
原创 从零到一:手把手教你用 Nginx + Shell 脚本部署 Vue 3 项目
本文详细介绍了如何将Vue 3项目部署到Ubuntu服务器,并实现一键化更新。主要步骤包括: 服务器准备:安装Nginx并配置网站目录 Nginx配置:设置Vue Router的history模式处理规则 本地开发:编写自动化部署脚本deploy.sh,实现打包+上传一体化 部署验证:通过脚本快速完成部署更新 整个过程通过Shell脚本实现自动化,大大简化了日常部署流程,适合快速迭代的前端项目。文末还提供了SSH免密登录等优化建议,进一步提升部署效率。
2025-10-11 20:51:47
1178
原创 一次线上“参数解析失败”告警的侦探之旅
线上“参数解析失败”告警排查全记录 问题现象:线上环境出现大量“参数解析失败”错误告警。 排查过程: 追踪异常源:通过全局异常处理器ExceptionHandle.java定位到HttpMessageNotReadableException,确定为JSON反序列化问题; 查找日志:分析logback-spring.xml配置,确认错误日志路径为logs/euchips/error_log.log; 服务器验证:登录线上环境,用grep筛选日志,发现字段grossWeight因传入"212g&quo
2025-10-11 15:24:46
1083
原创 你项目里的 normalize.css 究竟是何方神圣?
摘要: 在重构管理后台项目时,发现不同浏览器对<body>的默认样式存在差异(Chrome默认margin:8px)。通过对比旧项目,发现其使用了normalize.css——一个由Nicolas Gallagher开发的流行CSS库,专门用于统一浏览器默认样式。该库通过保留合理默认值并修复浏览器差异(而非暴力清零),为项目提供了更稳定的样式基础,有效解决了跨浏览器兼容性问题。 (字数:149) 注:摘要聚焦核心问题与解决方案,省略了技术栈细节和图片引用,符合字数要求且保持信息完整。
2025-10-10 16:08:49
841
原创 给 npm install 做一次大扫除:我如何干掉 deprecated inflight 和 glob 警告
摘要 本文分享了如何解决 npm install 时出现的 deprecated inflight 和 glob 警告问题。作者通过 npm ls 命令追踪到警告源头是 style-resources-loader 包,发现其在现代 Vite 项目中已冗余。解决方案包括: 卸载冗余包(节省24个依赖) 清理环境(删除 node_modules 和 lock 文件) 重新安装验证 关键经验: 不要忽视 deprecated 警告 善用 npm ls 排查间接依赖 定期审视项目依赖 拥抱现代工具的内置功能 最终
2025-10-09 21:12:53
1070
原创 一次搞定!Vite + Sass 项目中烦人的 legacy-js-api 警告 ⚠️
摘要 本文针对 Vite + Sass 项目中出现的 legacy-js-api 警告,提供了完整的解决方案。该警告源于 Sass 弃用了旧版 JS API,而 Vite 仍在使用旧接口调用。通过分析官方文档,作者锁定问题在于工具链版本适配,而非业务代码。 解决步骤: 定位问题:确认警告来自 Sass 工具链,需升级 Vite。 优化网络:使用 nrm 切换至淘宝源,解决 npm view 查询卡顿问题。 安全升级:创建 Git 分支,通过 npm install @latest 逐步升级 Vite、Vue
2025-10-09 20:45:49
852
原创 从本地到云端:我如何用 Docker 部署 Spring Boot + MySQL 项目的全过程实录
本文详细记录了作者使用Docker将Spring Boot项目(productQualification.jar)与MySQL数据库部署到Ubuntu服务器的完整过程。通过Docker网络实现容器间通信,先部署MySQL容器并挂载数据卷实现持久化。随后修改应用配置指向容器名,编写Dockerfile定义Java运行环境,构建镜像后启动应用容器。最终通过日志确认Spring Boot应用成功启动并与数据库建立连接,完成从本地开发到云端部署的DevOps实践,展示了Docker在简化部署流程、保证环境一致性方面
2025-10-08 16:49:13
962
原创 Docker 网络排错“史诗”:从 Timeout 到 manifest not found,最终柳暗花明!
摘要: 在 Ubuntu 22.04 服务器部署 Docker 时,遇到 context deadline exceeded 网络超时问题。虽然 curl 通过代理可访问 Docker Hub,但 Docker 守护进程未继承代理设置。通过为 systemd 配置专属代理并重启服务解决网络问题后,又出现 manifest not found 错误,原因是镜像标签 mysql:5.6.16 已失效。改用通用标签 mysql:5.6 后成功拉取镜像。 关键点: 区分终端代理与守护进程代理,需通过 systemd
2025-10-08 15:47:23
790
原创 Docker 权限爬坑记:permission denied?一条命令,一劳永逸!
Docker新手常遇的权限问题:当执行docker命令时出现permission denied错误,通常是因为当前用户不属于docker用户组。解决方法很简单:使用sudo usermod -aG docker 用户名命令将用户加入docker组,然后退出并重新登录系统使权限生效。这条命令解决了Docker安装后最常见的权限问题,避免每次操作都要加sudo的麻烦。
2025-09-30 20:50:58
1037
原创 Ubuntu 22.04 Docker 安装实战:从 Command not found 到 context deadline exceeded 的全过程排查
摘要: 本文记录了在Ubuntu 22.04服务器安装Docker的全过程及问题排查。从初始的curl命令缺失(通过sudo apt install curl解决),到成功安装后遭遇context deadline exceeded网络超时错误。通过分析发现,Docker服务正常运行但无法连接外网,问题根源在于服务器防火墙或网络策略限制。文章总结了关键经验:基础工具验证、分步测试网络连通性、精准解读错误信息,以及从应用层扩展到网络环境的排查思路,最终通过调整网络配置解决问题。整个过程凸显了系统调试的典型方法
2025-09-30 20:36:53
970
原创 Ubuntu 22.04 Hyper-V 虚拟机 SSH 服务完整配置指南
Ubuntu 22.04 Hyper-V SSH配置指南 本文详细介绍了在Ubuntu 22.04虚拟机上配置SSH服务的完整流程: 环境检查:确认系统版本和网络配置 安装配置:通过apt安装openssh-server并启动服务 验证测试:检查端口监听状态并进行本地/远程连接测试 安全优化:修改默认端口、禁用root登录、配置密钥认证 故障排查:提供常见问题解决方案和诊断命令 配置完成后,用户可通过SSH安全访问Ubuntu虚拟机,适用于开发和管理场景。文章包含详细的命令示例和配置说明,适合初级到中级用户
2025-09-30 20:03:24
1351
原创 从虚拟机到 Docker:一份写给开发者的虚拟化软件“寻宝图”
虚拟化技术简明指南 虚拟化技术是开发者管理环境差异的重要工具,主要分为三类: 桌面虚拟化(如VirtualBox/VMware) 功能:在个人电脑运行完整隔离的客户系统 应用场景:跨平台开发测试、运行独占软件、安全沙箱 推荐:VirtualBox(免费)、VMware(高性能)、Parallels(Mac专用) 服务器虚拟化(如VMware vSphere/KVM) 特点:直接运行在物理服务器上 用途:云计算基础设施 代表:vSphere(企业级)、KVM(开源)、Hyper-V(微软系) 容器化(如Doc
2025-09-30 16:01:25
960
原创 深入 Linux 之心:一行 cat 命令,带你解剖服务器的“网络身份证”(cat /etc/network/interfaces)
🔍 Linux 网络配置解剖报告 通过一行 cat /etc/network/interfaces 命令,我们深入解析了 Ubuntu 服务器的静态网络配置。这份"网络身份证"包含四大核心要素: 接口定义:eth0 网卡设为静态 IPv4 模式 地址信息:固定 IP(192.168.31.20)、子网掩码(255.255.255.0) 网络出口:网关指向路由器(192.168.31.1) 域名解析:DNS 服务器(114.114.114.114) 虽然现代系统已转向 Netplan/Y
2025-09-29 20:20:37
1176
原创 Vue实战:从零到一,打造一个功能强大的“自定义导出”组件
Vue实战:打造智能自定义导出组件 本文详细介绍了如何使用Vue.js和Element UI开发一个功能强大的自定义导出组件。该组件支持跨页选择数据、自定义导出列配置和顺序调整,并具有记忆用户偏好功能。实现过程分为三大核心部分: 跨页选择实现:通过Element UI表格的row-key和reserve-selection属性,确保翻页时已选数据不丢失。 父子组件通信:父组件负责管理选中数据和弹窗状态,子组件接收这些数据并处理导出逻辑。 自定义导出功能:子组件使用vuedraggable实现拖拽排序,提供字
2025-09-28 14:03:51
770
原创 解剖一个“产品导出”接口:从Controller到Excel的全链路深度解析
摘要 本文深入剖析了一个产品导出接口GET /product/admin/export的全链路实现。从Controller层简洁的调用开始,逐层解析了业务层、数据服务层、策略与元数据层、通用导出框架和数据访问层的设计架构。 重点展示了如何通过: 分层架构实现职责分离 策略模式(ExportEnum接口)支持多种导出类型 元数据驱动(ProductExportFieldEnum)规范字段定义 服务门面(ProductCommonService)统一数据访问 原生SQL+Tuple解决复杂查询 通用ExcelE
2025-09-26 18:32:51
866
原创 架构之思:我的 Service 层为什么需要“总设计师”、“施工队长”和“工人”?
本文探讨了一种精细化的Service层分层架构设计,将传统的Service层拆分为三个层次:业务层(ProductApiService)、数据服务层(ProductCommonService)和数据访问适配层(ProductService/ProductSqlService)。这种分层借鉴了"总设计师-施工队长-工人"的协作模式,各层职责明确:业务层负责流程编排和业务规则,数据服务层提供可复用的数据能力,数据访问层执行具体操作。通过一个产品保存的复杂业务案例,展示了这种架构如何提升代码清
2025-09-26 17:50:53
1050
原创 架构之思:我的 Service 层为什么需要“双剑合璧”?(ProductService,ProductSqlService)
本文探讨了一种优化Spring Boot三层架构中Service层设计的方案,即将Service层拆分为两个职责明确的组件:ProductService和ProductSqlService。前者基于Spring Data JPA处理标准CRUD操作,保持代码简洁清晰;后者使用原生SQL处理复杂查询,确保高性能。这种"双剑合璧"的设计实现了关注点分离、技术栈最优应用、提升可维护性以及隔离技术风险等优势,使系统既能享受JPA的开发便利,又能获得原生SQL的性能保障。通过这种分层设计,开发者可
2025-09-26 17:21:24
858
原创 破案实录:一次导出功能的“数字翻译”Bug,我是如何在正确的位置“对症下药”的
今天,我想分享一次看似简单,却一波三折的 Bug 修复经历。故事的主角是一个产品导出功能,需求很明确:在导出的 Excel 文件里,“品牌所属地区”这一列,应该显示“中国”、“日本”这样的中文文本,而不是数据库里存储的数字 1、3。
2025-09-26 16:18:23
724
原创 架构简化之道:一次导出功能重构,我为什么“干掉”了 ExportProductDto?
文章摘要:🚀 架构简化之道 - 从DTO到Tuple的优雅重构 本文分享了作者通过重构"产品导出"功能的实战经验,展示了如何通过引入JPA Tuple来简化架构。重构前,系统依赖脆弱的ExportProductDto作为SQL生成模板和数据结构中介,导致数据错位和SQL报错问题。重构后采用直接手写SQL别名和使用Tuple作为数据容器,不仅修复了Bug,还移除了不必要的DTO类,使数据处理流程更直接健壮。这一改变带来了代码量减少、复杂性降低、健壮性提升和可读性提高等多重好处,证明了&q
2025-09-26 15:12:38
960
原创 JPA 性能调优利器:被低估的 Tuple,告别脆弱的 Object[]
JPA性能调优:用Tuple替代Object[]提升代码健壮性 摘要:在JPA复杂查询中,传统的Object[]结果集存在索引脆弱、可读性差等问题。本文介绍JPA Tuple接口的优越性:通过别名而非索引访问数据,彻底解决列顺序依赖问题。案例显示,使用Tuple后,即使SQL查询结构调整,业务逻辑仍能稳定运行。Tuple还提供类型安全、代码自解释性等优势,特别适合原生SQL查询和动态列场景。相比Object[],Tuple使代码更健壮、更易维护,是JPA性能调优的利器。
2025-09-24 19:52:48
850
原创 “顺序”的陷阱:从一次导出功能的数据错乱,反思代码中的“隐形契约”
本文通过一个产品导出功能的数据错乱案例,揭示了代码中"隐形顺序契约"的危害。系统错误地假设了ExportProductDto(定义SQL查询字段顺序)和ProductExportFieldEnum(定义业务字段顺序)的声明顺序一致,导致数据解析时出现张冠李戴的现象。问题的本质在于依赖脆弱的隐式顺序约定,而非明确的别名映射。最终解决方案是重构为基于列别名的解析机制,建立显式的字段契约。这个案例警示开发者:健壮的系统设计应避免依赖不可靠的物理顺序,而应建立明确的名称映射关系,才能保证代码的可
2025-09-24 19:39:19
617
原创 破案实录:从一个“张冠李戴”的导出Bug,我如何由两个“貌合神离”的方法联手导演?
本文揭示了一个产品导出功能中数据错位的Bug,根源在于两个方法之间脆弱的隐式顺序依赖。sqlGenerate方法通过反射生成SQL列顺序,而parseToExportHashMap则依赖枚举声明顺序解析数据,当两者顺序不一致时导致数据错位。解决方案是改用JPA的Tuple接口,通过明确的别名映射建立强契约关系,彻底摆脱对物理列顺序的依赖,确保数据正确导出。重构后的代码通过别名查找实现健壮解析,解决了"张冠李戴"的问题。
2025-09-24 19:15:37
803
原创 后端重构实录:我如何用 Tuple 一举消灭两个“导出”大 Bug
后端重构:用 Tuple 解决导出功能 Bug 本文分享了如何重构一个脆弱的“产品导出”功能,解决两个关键问题:线上数据错位和本地 SQL 报错。原代码依赖于动态生成的 SQL 查询和枚举顺序的隐式约定,导致数据映射不稳定。通过引入 JPA 的 Tuple 接口,重构实现了: 手动编写带明确别名的 SQL 查询 使用 Tuple 按别名而非索引获取数据 建立别名与业务字段的显式映射 重构后代码不再依赖顺序,解决了数据错位问题,同时修复了本地 SQL 报错。这种基于“契约”而非“顺序”的设计显著提高了代码健壮
2025-09-24 18:51:05
1502
原创 破案实录:当 DISTINCT 遇上 ORDER BY,我是如何用一行SQL拯救本地环境的
摘要: 本文分享了一次本地开发环境与生产环境SQL执行差异的排查过程。一条包含DISTINCT和ORDER BY的查询在本地MySQL报错(ONLY_FULL_GROUP_BY模式限制),而线上环境正常。通过对比sql_mode配置,发现本地数据库启用了更严格的语法校验。最终通过临时修改会话级sql_mode(SET SESSION sql_mode = 'STRICT_TRANS_TABLES')快速解决问题,同时强调环境一致性和理解SQL规范的重要性。全文以探案比喻展开,结合流程图和时序图,生动呈现技术
2025-09-24 16:54:11
1271
原创 破案实录:从一个“导出为空”Bug,我揪出了潜伏的数据“幽灵”
摘要: 本文通过一个真实的“导出为空”Bug排查案例,揭示了数据不一致与SQL JOIN写法导致的隐患。线上正常的功能在本地测试时导出空Excel,排查发现本地数据库的脏数据(无效category_id)与INNER JOIN的严格过滤机制共同导致数据丢失。通过改用容错性更强的LEFT JOIN解决,并总结出关键教训:警惕INNER JOIN的副作用,确保测试数据质量,以及环境差异是常见问题根源。最终通过代码优化与数据治理提升系统健壮性。
2025-09-24 16:20:27
985
原创 架构之美:如何让你的后端接口轻松应对“加个字段”的需求?
摘要: 本文通过一个真实案例,展示了优秀后端架构如何优雅应对“加个字段”的需求变更。当需要在品牌详情页增加region字段时,得益于“主-子分离查询”设计(主对象用JOIN FETCH加载完整实体,子列表用DTO投影),仅需修改两处:在VO类添加字段,在Service层增加一行赋值逻辑。这种架构实现了高内聚低耦合,使数据访问层与业务逻辑解耦,既能保证性能又可快速响应需求变更,体现了良好设计对系统可维护性的价值。
2025-09-23 17:09:20
904
原创 Mermaid 时序图避坑指南:轻松搞定 “Trying to inactivate an inactive participant” 错误
Mermaid时序图避坑指南:解决"Trying to inactivate an inactive participant"错误 本文通过一个Spring Data JPA查询案例,剖析了Mermaid时序图中常见的激活/失活错误。当使用-符号试图失活一个未被+激活的参与者时,就会出现该错误。关键解决方法是:1)遵循调用栈原则,确保每个失活都有对应的激活;2)正确设置返回路径,消息应返回给直接调用者而非越级;3)按需激活参与者,简单的单向调用可省略激活标记。文中提供了错误示例和修正后的
2025-09-22 21:26:26
676
原创 JPA Specification 进阶:JOIN FETCH 的陷阱与优雅破局之道
Spring Data JPA 的 Specification 模式无疑是构建动态查询的瑞士军刀。它让我们能够用一种编程化、可组合的方式优雅地构建 WHERE 子句。但是,当你试图在这个强大的工具里加入 JOIN FETCH 来解决 N+1 查询问题时,你可能会发现自己掉进了一个意想不到的“陷阱”里。
2025-09-22 21:23:59
830
原创 后端进化论:如何让一个搜索框同时支持中英文查询?
摘要:后端优雅实现中英文混合搜索 通过改造Spring Boot + JPA Specification的查询逻辑,我们让品牌搜索功能同时支持中英文查询。原代码仅检查name字段,修改后使用criteriaBuilder.or()组合name和englishName的LIKE条件。关键代码仅需在Specification类中添加3行Predicate逻辑,即实现SQL的WHERE (name LIKE ? OR english_name LIKE ?)。这种改造保持高内聚、对前端透明,且易于扩展其他搜索字段
2025-09-22 21:07:07
878
原创 JPA精准狙击:如何为一个“扫码识货”接口打造高性能查询
本文介绍了如何为“扫码识货”接口设计高性能查询方案。通过JPA DTO投影和多重WHERE子句校验,实现精准定位、数据隔离和高性能响应。关键点包括:1)使用DTO投影避免实体加载;2)WHERE子句同时包含业务条件(jancode)和安全校验(adminId);3)依赖数据库索引提升查询效率。最终实现仅需一次轻量级SQL查询即可返回所需数据,满足扫码场景的即时响应需求。
2025-09-22 17:53:46
686
原创 JPA“主-从”详情页查询的艺术:JOIN FETCH与DTO分页的完美协奏
本文介绍了如何高效设计“主-从”详情页API,通过“两步查询法”结合JOIN FETCH和DTO投影分页技术。第一步用JOIN FETCH一次性获取主表及关联对象(如品牌信息),避免N+1查询;第二步用DTO投影实现子表(如商品列表)的真分页查询。Service层将两次查询结果组装成最终响应。这种方案以固定的2次数据库交互,解决了复杂页面数据聚合的性能问题,是处理“主-从”详情页的最佳实践。
2025-09-22 15:30:23
751
原创 Mermaid 绘图奇技淫巧:如何在类图中优雅地展示花括号 {}?(左花括号 { ➡️ #123;) (右花括号 } ➡️ #125;)
本文介绍了在Mermaid类图中优雅展示花括号{}的技巧。由于Mermaid语法本身使用花括号定义类成员,直接在<<刻板印象>>中包含花括号会导致解析错误。解决方案是使用简化的HTML实体编码:将{替换为#123;,}替换为#125;(无需&前缀)。文章通过Spring Data JPA的@EntityGraph示例和完整类图演示了这一技巧,并提供了备选的note注释方案。这些方法能帮助开发者创建包含特殊字符的清晰技术图表。
2025-09-17 22:58:44
1101
原创 JPA动态查询的“终极形态”:当Specification遇上@EntityGraph
JPA动态查询终极方案:Specification + @EntityGraph 摘要:本文展示了如何结合JPA的Specification(动态WHERE条件)和@EntityGraph(解决N+1问题)构建高性能动态查询接口。通过重写Repository的findAll方法并添加@EntityGraph注解,在保持Service层逻辑不变的情况下,实现了动态筛选与关联预加载的完美结合。最终SQL日志证明,该方法能生成高效的JOIN查询,既保留了Specification的灵活性,又彻底消除了N+1性能隐
2025-09-17 22:44:12
1023
原创 JPA状态变更的“最优解”:如何用一条UPDATE语句同时实现修改、校验与并发控制
在后端开发中,实现一个“修改状态”的接口(如“提交审核”、“发布文章”、“取消订单”)是家常便饭。一个常见的实现方式是“先查后改”:先把实体查出来,在Java代码里做一堆if-else校验,然后再保存回去。
2025-09-11 19:34:52
941
原创 不止于JSON:如何用JPA打造一个返回“一句话总结”的智能API
本文探讨了如何利用JPA构建一个返回"一句话总结"的智能API。传统做法是后端返回原始JSON数据,由前端处理复杂的字符串拼接逻辑,这不仅增加前端负担,还导致业务逻辑分散。作者提出了一种更优方案:将数据转换和文本拼接逻辑完全封装在后端Service层,通过JPA高效获取数据,最终为前端提供可直接使用的描述性文本。 文章以"福利需求单"摘要生成为例,展示了三层架构实现:Repository层负责安全查询原始数据;Service层使用StringJoiner进行优雅的文本
2025-09-11 17:33:02
941
原创 从 command not found 到 1.22.22:我的 Yarn 安装奇遇记
本文分享了作者解决 yarn: command not found 问题的完整过程。通过排查发现 Node.js 不会自动安装 Yarn,但会附带 npm。作者使用 npm install --global yarn 成功安装了 Yarn,并通过 yarn -v 验证了安装结果。文章通过表格、流程图、时序图等形式清晰展示了问题解决路径,并解释了 Node.js、npm 和 Yarn 的关系。最终得出关键结论:Node.js 自带 npm,但 Yarn 需要单独安装,使用全局安装参数 --global 才能让
2025-09-11 16:57:34
838
Windows版的redis-2.8.17.rar
2024-07-29
node-v11.15.0-win-x64和node-v14.18.2-win-x64
2024-07-29
LibreOffice-7.6.7-Win-x86-64.msi
2024-07-31
mongodb-compass-1.40.2-win32-x64.msi
2024-07-31
免费的硬件信息检测软件
2024-07-25
spzx-h5(尚品甄选H5)
2024-07-24
nginx-1.20.1.tar.gz
2024-07-24
mysql-installer-community-8.0.38.0.msi
2024-07-22
AppScan-Setup-10.4.0是AppScan软件的一个安装包版本,该版本为AppScan的10.4.0版本
2024-07-22
生成内网通的积分码、免广告码、开通红色昵称、姓名加冠、排名优先
2024-07-19
Snipaste-2.8.5-Beta-x64.rar
2024-07-19
Q-dir-installer-UC.exe
2023-09-13
apache-tomcat-10.1.7-windows-x64.zip
2023-09-08
Ultimate-Vocal-Remover-v5-6-MacOS-arm64.dmg
2025-10-09
Miniconda3-latest-MacOSX-arm64.sh 是一个 Miniconda 安装程序的文件名,专门用于特定类型的苹果电脑
2025-04-18
Eclipse Memory Analyzer Tool (MAT) 的 macOS 安装包
2025-04-09
Snipaste-2.10.5.dmg 是 Snipaste 软件的一个版本,专为 macOS 用户设计的磁盘映像文件(Disk Image File)
2025-03-18
阿里云官方开发的 OSS Browser(对象存储管理客户端)的安装文件,适用于 Apple Silicon 芯片(M系列芯片)的 Mac 电脑
2025-03-18
AppCleaner 是一款专为 macOS 设计的轻量级应用程序卸载工具
2025-01-21
FileZilla 是一款开源的跨平台 FTP(文件传输协议)客户端软件
2025-01-21
zulu8.82.0.21-ca-jdk8.0.432-macosx-aarch64.dmg
2024-11-26
python-2.7.18.amd64.msi
2024-11-13
mysql-installer-community-5.6.51.0.msi
2024-10-15
“WindTerm-2.5.0” 表明版本号是 2.5.0
2024-10-14
mysql-installer-community-5.5.60.1.msi
2024-10-13
tree-1.5.2.2-setup.exe
2024-10-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人