实战手册
文章平均质量分 93
在软件开发中,影响进度的常是被忽视的细节问题。这些问题虽小,却可能成为项目推进的“拦路虎”,排查和解决它们常耗时费力,且缺乏清晰思路。这些问题像暗处的“小怪兽”,可能是配置错误、工具异常或机制问题,让人无从下手。本专栏系统整理了这些疑难杂症,提供高效解决方案,帮助开发者快速应对,节省时间和精力。
行者无疆1982
热爱技术,专注于架构、设计、开发,侧重于综合运用与实战,所有内容均动手验证确认,不以讹传讹,欢迎评论、转发和私信。
每周更新一篇高质量原创文章,你的支持是创作的动力,记得添加关注~。
一起努力,遇见更好的自己。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
规范驱动编程系列——亚马逊AI编程工具Kiro工具实测3——实施计划编写
本文详细制定了"生命日历"功能的开发实施计划。该计划采用增量开发方式,将项目分解为15个主要阶段,包括基础架构搭建、核心计算逻辑实现、网格渲染、交互功能、设备适配、数据持久化等。每个任务都包含具体的子任务、测试要求和需求关联,确保功能完整性和质量。计划特别强调测试驱动开发,包含属性测试、单元测试和最终集成测试等多个验证环节,并设置了两个关键检查点来确保开发质量。整个实施过程注重需求可追溯性和代码质量,最终目标是交付一个功能完善、性能优化的生命日历应用。原创 2026-02-23 09:24:44 · 923 阅读 · 0 评论 -
亚马逊AI编程工具Kiro工具初体验——人工实测,非AI生成
本文对比多款AI编程工具,重点实测亚马逊Kiro。其支持国内直访,内置Claude模型,新用户赠500点数,采用规范驱动开发,先生成需求、设计文档再编码,流程可控。作者用个人时间管理项目测试逆向生成规范,Kiro可产出需求与设计文档,但存在语言切换不灵活、理解偏差、偶发卡顿等问题,准确率约七成。整体看,Kiro解决海外工具网络与成本痛点,规范驱动模式更适配当前开发,但智能化仍有提升空间。原创 2026-02-04 08:50:06 · 1975 阅读 · 0 评论 -
前端 Axios 深度封装实战:拦截器 + 文件处理 + 业务接口统一管理
Axios是一个基于Promise的HTTP客户端,主要用于浏览器和Node.js环境,提供简洁的API进行数据请求。它具有支持Promise、拦截器功能、跨平台等特点,适用于数据获取、表单提交、文件上传等场景。本文介绍了Axios的基本使用、拦截器配置、常见问题解决方案,并分享了项目实战中的封装技巧,包括全局配置、超时设置和错误处理,帮助开发者高效管理前后端数据交互。原创 2026-01-26 08:00:00 · 2765 阅读 · 0 评论 -
AI编程实战探索——真实业务需求下的GLM、QWEN、DeepSeek的表现
本文探索了AI辅助开发在个人时间管理应用「时光助手」优化中的实践。通过测试TRAE插件中的不同AI模型(GLM-4.6、Qwen-3-Coder、DeepSeekV3.1),发现AI在需求理解方面表现良好,但在代码实现环节存在显著问题:GLM-4.6陷入输出循环无法完成需求;Qwen-3-Coder虽能快速响应,但修改了大量无关代码,导致原有功能受损。实验表明,当前AI辅助开发仍存在修改范围失控、引入错误依赖等问题,需人工介入修正。未来需进一步优化AI对项目上下文的理解能力,才能真正提升开发效率。原创 2026-01-19 08:00:00 · 1078 阅读 · 0 评论 -
Tauri框架实战——鼠标左键单击托盘图标不显示菜单
本文记录了使用Tauri框架为个人时间管理应用"时光助手"开发Windows客户端时遇到的问题及解决方案。主要解决了托盘图标左键点击异常弹出菜单的问题,通过修改TrayIconBuilder配置,添加左键点击事件处理逻辑,实现左键点击显示主窗口的功能。在调试过程中遇到编译错误,发现是MouseButton引用路径不正确,最终通过导入tauri::tray::MouseButton模块解决了问题。整个过程体现了AI辅助开发时可能出现的路径引用错误,需要开发者进行人工复核和调试。原创 2026-01-12 15:19:18 · 830 阅读 · 0 评论 -
把 Web App 装进客户端——Tauri框架实战:托盘功能、消息通知、构建安装程序
摘要:为解决现有Web版时间管理系统易误关闭和高内存占用问题,需开发Windows桌面端应用。经技术方案对比分析,Electron虽生态成熟但体积大、内存高;Tauri轻量高效(2-8MB)更符合需求;原生开发成本过高。最终基于"轻量应用、追求性能/体积"场景,选择Tauri作为最优方案,平衡开发成本与用户体验。原创 2026-01-06 14:10:29 · 1887 阅读 · 0 评论 -
氛围编程离我们还有多远——字节跳动 AI 编程工具TRAE在真实业务需求下的功能测试与综合评估
本文记录了使用TRAE SOLO模式开发服务器监控模块的全过程。作者首先描述了在复杂项目中AI辅助开发的挑战,随后详细展示了AI从需求理解、项目架构分析到代码实现的完整流程。AI准确识别了18模块的Spring Boot项目结构,合理规划了8个开发步骤,并在补充需求后正确调整方案。开发过程中,AI展现了良好的上下文记忆能力,能自主探索项目并理解技术栈。最终AI基于oshi组件完成了监控模块的开发。整个案例展示了AI在理解复杂项目、遵循编码规范方面的能力,但也暴露出设计过程透明度不足的问题。原创 2025-12-29 08:35:02 · 1731 阅读 · 0 评论 -
MySQL字符编码与校对规则:从踩坑到吃透的实战总结
MySQL字符编码与校对规则是数据库开发中的关键问题。文章通过实际案例解析了utf8与utf8mb4的区别,强调utf8mb4对emoji和多语言的支持优势。详细介绍了编码设置方法(数据库、表、字段三级设置)和校对规则选择(unicode_ci/general_ci/bin的适用场景),指出编码与规则必须匹配使用。特别提醒数据迁移时要注意编码转换,并给出全链路编码统一的解决方案。最后总结三点核心建议:优先utf8mb4编码,合理选择校对规则,确保全系统编码一致。这些经验能有效避免乱码问题,提升开发效率。原创 2025-12-15 08:00:00 · 962 阅读 · 0 评论 -
Server-Sent Events生产环境收不到消息推送的问题排查
摘要 本文分析了开发环境与生产环境下SSE(Server-Sent Events)功能差异问题。开发环境中SSE能正常工作,而生产环境通过Nginx代理后出现前端无响应问题。主要原因是:开发环境下Spring Boot的默认处理(Content-Type为application/octet-stream)能被浏览器宽松解析,而生产环境中Nginx会修改响应头为text/html,导致SSE协议失效。验证发现SseEmitter已自动设置Content-Type为text/event-stream,但Ngin原创 2025-12-01 08:00:00 · 1023 阅读 · 0 评论 -
Vue中Markdown编辑与展示组件选型指南
本文系统梳理了Vue项目中Markdown组件的选型策略。根据Vue版本(2/3)、功能需求(编辑/展示/流式)、扩展需求(公式/流程图等)和性能要求,推荐:Vue3项目首选@kangc/v-md-editor(功能全面),Vue2项目选择mavon-editor,流式场景采用vue-renderer-markdown,轻量展示需求可选@vueuse/markdown。同时提供了基础解析库+自定义方案的高度定制实现示例。建议结合项目技术栈和具体需求,参考文中决策树进行组件选型。原创 2025-11-24 08:22:53 · 922 阅读 · 0 评论 -
被 MyBatis 一级缓存 “坑” 了:数据修改前后属性判断失效之谜
摘要:在实体修改功能实现中,底层采用模板方法模式。原本运行良好的实体修改机制,在任务管理系统中出现异常 - 通过任务日志间接标记任务完成时,创建新任务的逻辑未执行。经诊断发现是MyBatis会话缓存导致修改前后的状态判断失效:修改前的查询未访问数据库而是从缓存读取已修改的实体。解决方案是在关键位置清空会话缓存(sqlSessionTemplate.clearCache()),确保修改前的查询能获取数据库真实状态。该问题揭示了ORM框架一级缓存的特性与数据库事务的区别,为处理类似场景提供了参考。原创 2025-11-17 08:00:00 · 1217 阅读 · 0 评论 -
一文读懂Server - Sent Events(SSE):开启实时数据推送新时代
本文介绍了Server-Sent Events (SSE) 技术,它是一种服务器向客户端主动推送实时数据的轻量级方案。相比传统的轮询和长轮询,SSE基于持久HTTP连接实现单向通信,具有实时性高、实现简单、资源消耗低的优势。文章详细阐述了SSE的工作原理,并提供了前后端实现示例(前端使用EventSource API,后端以Spring Boot为例)。通过与WebSocket和长轮询的对比分析,指出SSE更适用于服务器单向推送场景,如股票行情、实时监控等,而WebSocket适合双向交互应用。SSE以其简原创 2025-11-10 08:41:04 · 621 阅读 · 0 评论 -
深入浅出Guava EventBus:观察者模式的实际应用,事件驱动编程的得力助手
Guava EventBus是Google提供的一个基于观察者模式的事件发布-订阅系统,适用于解耦事件处理逻辑。通过定义事件类、订阅者(使用@Subscribe注解)和EventBus实例,可以实现发布者与订阅者的松耦合。支持同步(EventBus)和异步(AsyncEventBus)处理,以及粘性事件(新订阅者能收到之前发布的事件)。使用时需注意事件类型匹配问题,避免订阅者无法接收预期事件。典型应用场景如电商系统的订单处理、库存更新等需要解耦的业务逻辑。原创 2025-10-27 08:41:59 · 990 阅读 · 0 评论 -
一文深度解析跨域访问:原理、机制及Spring Boot、Spring Security示例
Spring Boot跨域访问解决方案摘要 前后端分离开发中,跨域问题由浏览器同源策略引发,限制不同源(协议、域名、端口)的资源访问。核心解决方案包括: JSONP:利用<script>标签规避同源策略,仅支持GET请求,存在安全隐患。 CORS(推荐): 通过服务器响应头(如Access-Control-Allow-Origin)控制跨域权限 支持预检请求(OPTIONS)和缓存(maxAge) 可精确配置允许的源、方法和请求头 Spring Boot实现方案: 局部配置:使用@CrossOr原创 2025-10-23 09:01:03 · 1132 阅读 · 0 评论 -
一文读懂 Ehcache:Java开发者的缓存利器
Ehcache是Java开发中常用的进程内缓存框架,通过将数据存储在JVM内存中实现快速访问。它具有高效、灵活配置和分布式支持等特点,能够减轻数据库压力、提高应用响应速度。与Redis相比,Ehcache作为进程内缓存访问速度更快但功能较简单,适用于单体应用;Redis则更适合分布式系统。文章还提供了Spring Boot集成Ehcache的示例代码,展示了基本配置和使用方法。开发者应根据具体场景选择合适的缓存方案,Ehcache适合高性能要求的单体应用,而Redis更适合分布式环境下的复杂需求。原创 2025-10-20 08:00:00 · 925 阅读 · 0 评论 -
一文速通AI的20个核心基础概念
在当今数字化浪潮中,AI已成为推动各领域变革的核心力量。然而,其丰富而复杂的概念体系常令初学者望而生畏。以下精心挑选并深入解读20个AI核心基础概念,助您快速搭建AI知识框架,轻松踏入AI世界。1. 人工智能(AI)人工智能作为计算机科学的前沿分支,致力于赋予机器人类般的智能。想象为计算机植入 “智慧芯片”,使其能像人类一样感知环境、处理数据、总结规律、做出决策并解决各类问题。从传统的基于规则的专家系统,到当下热门的深度学习驱动的神经网络,AI技术不断演进。其终极目标是打造能在复杂多变的环境中自主运行,原创 2025-10-13 08:00:00 · 1198 阅读 · 0 评论 -
Spring AI Alibaba:Java 开发者集成阿里大模型的利器
摘要:Spring AI Alibaba 是连接 Spring AI 与阿里大模型生态的桥梁,实现了对通义千问、百炼平台等阿里系AI服务的标准化集成。它为Java开发者提供统一接口、生态融合和企业级特性,支持多模型接入、百炼平台专属适配、提示词模板引擎等功能。通过简单配置即可快速构建AI应用,并支持RAG等高级场景,显著降低阿里云生态下AI应用的开发门槛和维护成本,是Spring开发者集成阿里大模型能力的高效解决方案。原创 2025-10-06 08:00:00 · 1474 阅读 · 0 评论 -
Spring AI:开启 Java 开发者的 AI 原生应用开发之旅
摘要:Spring AI是Spring官方推出的AI开发框架,旨在连接Java生态与AI大模型,通过标准化接口封装解决不同AI服务API差异问题。其核心特性包括模型抽象层、提示词工程、向量存储集成和函数调用,支持多模型适配和动态参数注入。相比LangChain4j和原生OpenAI SDK,Spring AI在Spring生态集成、企业级特性和学习曲线方面具有优势,尤其适合Java开发者快速构建AI应用,降低技术门槛并提升开发效率。原创 2025-09-29 08:00:00 · 1140 阅读 · 0 评论 -
基于 Redisson 实现分布式锁:解锁分布式世界的“秘密武器”
嘿,小伙伴们!在分布式系统这个热闹非凡的“江湖”里,分布式锁可是位举足轻重的大侠。想象一下,多个服务器节点都眼巴巴地盯着同一份资源,都想冲上去操作,如果没有一把“锁”来维持秩序,那场面,简直就是一锅粥,数据不一致等各种棘手问题就会像调皮的小怪兽一样到处乱窜。今天咱就来好好唠唠如何用 Redisson 这个神器来实现分布式锁,把这些小怪兽统统收拾得服服帖帖!原创 2025-09-22 08:00:00 · 697 阅读 · 0 评论 -
深入浅出Java分布式锁:从原理到实践
分布式锁技术解析与实战 摘要:分布式锁是解决多节点共享资源并发访问的关键技术,需满足互斥性、安全性和可用性。主流方案包括:1)数据库锁(实现简单但性能差);2)Redis锁(高性能,适合高并发);3)ZooKeeper锁(高可靠,保障强一致性)。文中通过Spring Boot示例演示了基于Redisson的Redis分布式锁和基于Curator的ZooKeeper锁实现,涵盖依赖配置、加锁/释放锁等核心代码。技术选型需权衡性能、可靠性和复杂度,数据库锁适用于小型项目,Redis锁适合秒杀等高并发场景,Zoo原创 2025-09-15 08:12:37 · 810 阅读 · 0 评论 -
Git 从入门到实战:基于 TortoiseGit 的图形化操作指南
本文为零基础用户提供TortoiseGit英文版的使用指南。Git作为分布式版本控制系统,能有效解决代码版本管理和多人协作问题。TortoiseGit作为其图形化工具,通过右键菜单简化操作流程。文章首先对比Git与SVN的核心优势,强调Git在离线工作、分支管理和数据安全方面的优势。随后详细讲解TortoiseGit的安装配置步骤,包括Git环境准备和用户信息设置。核心概念部分用"三区三动作"模型简化理解。最后重点介绍常用操作:创建本地仓库、克隆远程项目、提交修改、同步代码、推送更新以及原创 2025-09-08 07:56:00 · 1391 阅读 · 0 评论 -
MySQL 表名大小写敏感?5.7 与 8.0 版本设置方法全解析
MySQL表名大小写敏感问题解析:MySQL表名大小写处理由操作系统和lower_case_table_names参数共同决定。该参数在5.7和8.0版本存在差异:5.7可随时修改,8.0必须在初始化前设置。列名大小写规则与表名不同,主要取决于字符集collation。生产环境建议统一设置lower_case_table_names=1,开发时保持命名规范一致。版本升级或数据迁移时需特别注意该参数的兼容性设置,避免出现表访问问题。原创 2025-09-01 08:00:00 · 1451 阅读 · 0 评论 -
一文看懂 SSM 框架:新手也能明白的通俗解释
摘要:SSM框架是Java开发中常用的组合,包含Spring、Spring MVC和MyBatis。Spring如同公司的行政部门,负责对象管理(IoC/DI)和事务处理;Spring MVC类似餐厅服务员,处理用户请求并协调前后端交互(MVC模式);MyBatis则是数据库"翻译官",简化JDBC操作,将SQL映射为Java对象。三者协同工作:Spring提供基础框架,Spring MVC处理Web请求,MyBatis管理数据访问,共同提升开发效率。原创 2025-08-25 08:00:00 · 728 阅读 · 0 评论 -
架构图绘制工具PlantUML简介及语法
本文介绍了两种架构图绘制方法:绘图软件(如draw.io)灵活但耗时,基于文本的工具(如PlantUML)高效易管理但样式受限。重点讲解了PlantUML的基本用法,包括文件格式、注释、宏替换、include引入资源、C4模型元素(Person、System等)、关系定义和布局控制。提供了一个最小完整示例,展示如何用简洁代码生成包含买家、电商系统和支付宝的上下文图,并自动生成图例。文章还提供了PlantUML官网链接和中文手册,便于读者进一步学习。原创 2025-08-18 08:10:55 · 1363 阅读 · 0 评论 -
Spring Boot实战系列1—— 日志输出
Spring Boot日志实战指南 本文介绍了Spring Boot应用中日志的重要作用与配置方法。日志在开发调试阶段帮助定位问题,在生产环境监控系统运行状态,是排查问题的关键依据。 核心要点: 主流日志组件对比:SLF4J作为日志门面,配合Logback(默认)或Log4j2实现 日志对象实例化:推荐使用@Slf4j注解简化Logger创建 日志输出方法:info/dubug/error等不同级别日志的使用方式 日志配置详解:通过logback.xml控制日志格式、输出目的地(控制台/文件)和级别 文中提原创 2025-08-04 08:00:00 · 952 阅读 · 0 评论 -
Java 开发中主流模板引擎简介及对比
摘要: Java模板引擎是实现动态内容生成的重要工具,通过分离数据与模板来提高开发效率。本文介绍了模板引擎的基本概念、组成和工作流程,重点分析了其在网页生成、邮件发送、文件配置、代码生成和报表制作等场景的应用价值。对比了Thymeleaf、FreeMarker、Velocity等主流模板引擎的特点与适用场景,并提出了选择建议、性能优化和安全防护等注意事项。最后通过FreeMarker代码示例展示了模板引擎的实际应用方式,为开发者提供了技术选型和实践指导。原创 2025-07-28 08:02:27 · 930 阅读 · 0 评论 -
使用Jenkins实现Windows服务器下C#应用程序发布遇到的共享冲突问题解决方案
摘要 本文记录了Windows服务器下C#应用程序发布过程中遇到的文件占用问题及解决方案。通过Jenkins发布时发现文件传输成功但覆盖失败,排查发现xcopy因文件占用导致共享冲突。尝试使用robocopy命令和不同IIS服务停止方式(iisadmin、w3svc)后,最终确定"net stop w3svc"能有效释放文件占用。文章对比了iisadmin和w3svc服务的区别,并验证了解决方案的有效性,体现了实践过程中从理论到实际的技术探索过程。原创 2025-07-21 08:00:00 · 1247 阅读 · 0 评论 -
Spring Retry:优雅处理失败重试的利器
Spring Retry是Spring框架提供的声明式重试机制,用于处理暂时性故障(如网络抖动、数据库连接中断等)。通过@Retryable注解可轻松为方法添加重试功能,支持自定义重试次数、退避策略等。使用时需确保操作幂等性,合理设置重试参数,并注意内部方法调用需单独标注。典型应用场景包括远程服务调用、数据库操作等可能出现短暂失败的场景。与熔断器不同,Spring Retry专注于失败重试而非服务熔断。原创 2025-07-14 08:00:00 · 1320 阅读 · 0 评论 -
JWT:原理、机制与实践
JWT(JSON Web Token)是一种无状态、自包含的用户认证解决方案,由头部、负载和签名三部分组成,具有跨域支持和高安全性的特点。其工作流程包括令牌生成、传输和验证三个环节。使用时需注意安全性问题,如采用强加密算法、防范XSS攻击、设置令牌过期机制等。文章还探讨了JWT在单点登录场景的风险、令牌撤销机制以及常见问题处理。JWT尤其适合分布式系统,能有效减轻服务器存储压力,提高系统扩展性。原创 2025-07-07 08:00:00 · 790 阅读 · 0 评论 -
Java拷贝专题—— 浅度拷贝与深度拷贝,常用工具类对比及推荐
本文探讨了Java开发中的对象拷贝操作,区分了浅拷贝和深度拷贝的概念与实现方式。浅拷贝仅复制对象字段的引用,而深度拷贝递归复制整个对象图。文章对比了常用深度拷贝工具类(Apache Commons BeanUtils、Dozer和Orika),重点介绍了Orika框架的高性能特性及其在Spring Boot环境下的集成方法。Orika通过代码生成技术实现高效对象映射,简化了复杂对象转换过程。在Spring Boot项目中,只需添加依赖并配置Mapper即可使用Orika进行对象拷贝,为开发提供了便捷高效的解原创 2025-06-30 08:00:00 · 1240 阅读 · 0 评论 -
数据库与缓存最终一致性方案——延迟双删技术
本文探讨了缓存与数据库数据一致性问题,重点介绍了延迟双删技术方案。文章首先分析了常用缓存策略(Cache-Aside、Read-Through等)的优缺点,指出数据不一致的风险。延迟双删策略通过在数据库更新前后两次删除缓存(间隔500毫秒左右),有效降低了数据不一致概率。该方案实现简单,适用于最终一致性要求的场景,但也存在延时时间难以确定、无法完全避免并发问题等局限性。相比其他方案(消息队列、Canal监控等),延迟双删在简单性与效果间取得了较好平衡。作者强调,强一致性必须采用锁机制,而延迟双删是业务可接受原创 2025-06-23 08:00:00 · 1721 阅读 · 0 评论 -
深入浅出:Oracle 数据库 SQL 执行计划查看详解(3)——表的连接方式及返回各列含义
本文摘要: Oracle数据库提供了多种表连接方式,包括嵌套循环连接(适合小表连接或索引访问)、哈希连接(适合大表无索引场景)和合并连接(适合已排序表的等值连接)。执行计划分析可通过Operation列查看操作步骤,Name列识别对象名称,Rows/Bytes列评估数据量,Cost/Time列衡量性能成本。优化技巧包括收集统计信息、创建适当索引和分析查询结构,以提升数据库查询效率。原创 2025-06-16 08:00:00 · 998 阅读 · 0 评论 -
深入浅出:Oracle 数据库 SQL 执行计划查看详解(2)——执行计划的关键元素
执行计划的关键元素包括:1) 全表扫描(TABLE ACCESS FULL),适用于无索引或数据量小的情况;2) 索引扫描(INDEX SCAN),分为唯一扫描(INDEX UNIQUE SCAN)和范围扫描(INDEX RANGE SCAN),通过索引快速定位数据;3) 通过ROWID的表存取(TABLE ACCESS BY USER ROWID),利用Oracle内置的行标识符高效访问单行数据。通过分析执行计划可以优化SQL性能,合理使用索引能显著提升查询效率。原创 2025-06-09 08:01:40 · 1172 阅读 · 0 评论 -
深入浅出:Oracle 数据库 SQL 执行计划查看详解(1)——基础概念与查看方式
本文介绍了Oracle数据库SQL性能优化的关键手段——执行计划分析。首先说明了执行计划的概念,即数据库执行SQL语句的详细步骤和策略。接着详细讲解了三种查看执行计划的方法:通过V$SQL_PLAN视图查询(操作繁琐)、使用EXPLAIN PLAN语句(分两步操作)以及自动执行计划追踪(最便捷直观,推荐使用)。其中重点描述了SQL Developer工具中图形化执行计划的查看方式,为数据库优化提供了实用指导。原创 2025-06-03 10:05:53 · 1446 阅读 · 0 评论 -
前端组件间接依赖版本升级后导致版本不兼容引发的血案——ERR_PACKAGE_PATH_NOT_EXPORTED No “exports” main defined in
先前分享了一篇因为前端组件版本使用^指定引发的不兼容问题博客,本以为问题已彻底解决,结果遇到了新的挑战。有小伙伴反馈一二三应用开发平台搭建开发环境的时候,按照操作手册,进行了最后一步,启动的时候会报错:我拿本地的开发环境测试正常,然后从Gitee上重新拉取搭建开发环境,复现了问题。原创 2025-03-25 10:41:10 · 3468 阅读 · 11 评论 -
一二三应用开发平台——能力扩展:多数据源支持
随着项目规模的扩大,单一数据源已无法满足复杂业务需求,多数据源应运而生。MyBatis-Plus 的官网提供了两种多数据源扩展插件:开源生态的 dynamic-datasource 和 企业级生态的 mybatis-mate。这里遵循开源免费的原则,选择前者dynamic-datasource,集成到平台中来。首先需要考虑的把依赖加到哪个模块下。数据源属于底层实现,平台的核心模块如system、support、entity-config,以及能力扩展模块,如mail、notification等,还有基于平原创 2025-03-10 10:13:16 · 1068 阅读 · 0 评论 -
使用Jenkins实现Windows服务器下C#应用程序发布
在现代化的软件开发流程中,持续集成和持续部署(CI/CD)已经成为不可或缺的一部分。Jenkins作为一款开源的自动化运维工具,能够帮助我们实现这一目标。本文将详细介绍如何在Windows服务器下使用Jenkins来自动化发布C#应用程序。原创 2025-02-24 08:42:58 · 1906 阅读 · 0 评论 -
Vue项目中组件版本号使用^宽泛设置引发的兼容性问题及解决方案
在Vue项目中,package.json中使用^符号指定版本号虽然方便,但也可能引发版本不兼容的问题。通过使用固定版本号、将pnpm-lock.yaml纳入Git管理、使用npm shrinkwrap这几种方式,可以有效管理项目依赖,避免构建失败和运行时错误。希望这些方法能帮助你在项目开发中更加顺利地管理依赖,提高开发效率。原创 2025-02-03 08:00:00 · 2240 阅读 · 0 评论 -
net web项目多环境配置的正确姿势
一套老的系统,基于.net技术栈的web系统,配置文件web.config中配置了包括数据库连接在内的诸多键值对,高达几十项。原先并没有对配置文件进行规范管理,源码中的配置仅对应开发测试环境。开发测试完成后,编译,将需要更新的文件手工复制到生产环境覆盖,如添加了新的配置项,同样需要手工修改生产服务器上的web.config文件。这种方式效率低下且容易出错。为了提高运维效率,使用Jenkins搭建了自动发布,这时候先前手工处理配置文件的模式也形成了制约。分析这是一个典型的多环境下配置文件的管理问题。原创 2025-01-27 10:06:09 · 1086 阅读 · 0 评论 -
SpringBoot项目组件版本依赖冲突问题
开发平台在集成minio时,pom引入了sdk。在调用上传文件API时,控制台报错:从错误来看,是okhttp的版本过低,minio要求版本4.11.0及以上.初看这错误一脸懵,okhttp是minio内部依赖的jar包,难不成其他地方也在使用,造成了版本冲突?使用maven helper插件提供的jar包依赖分析,发现并没有出现okhttp冲突的情况。然后整个项目工程中搜索okhttp关键字,任何模块没有显性使用过。查看使用minio组件模块的依赖,确认当前使用的okhttp的版本是3.14.8,明显低原创 2023-12-04 08:00:00 · 3474 阅读 · 0 评论
分享