自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学海无涯,行者无疆

专注于架构、设计、开发,侧重于综合运用与实战,所有内容均动手验证确认,不以讹传讹,欢迎评论、转发和私信。 每周更新一篇高质量原创文章,你的支持是创作的动力,记得添加关注~。 一起努力,遇见更好的自己。

  • 博客(252)
  • 收藏
  • 关注

原创 面向个人的时间管理系统——时光助手——记录点滴,见证成长

系统由来当下有众多的以时间管理为主题的手机APP和系统,侧重点大多在计划制定与日程安排。计划很重要,比计划更重要是行动,以及行动之后的复盘也不可忽视,而这一切的基础,就是计划的执行过程记录。在当今市场上,尽管众多时间管理工具和系统层出不穷,但在我尝试了众多产品之后,发现它们普遍存在一些不足之处,主要可以归纳为以下三个核心问题:1.执行跟踪的不足:现有的管理工具大多集中于任务的设定,而忽视了执行过程的记录与跟踪。这导致用户难以进行有效的复盘和总结。

2024-07-11 16:47:35 1280

原创 一文读懂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 389

原创 一二三应用开发平台——能力扩展:内部通知、站内信功能增加SSE技术实现方案

本文介绍了平台内部通知功能的实现方案优化。平台原本采用WebSocket技术实现实时消息推送,虽实时性好但实现复杂。经评估后新增了更轻量级的SSE(Server-Sent Events)方案,保留WebSocket的同时提供配置化选择。后端实现包含:1)新增SSE控制器处理连接请求并验证用户身份;2)创建SSE连接管理器维护连接池,处理连接生命周期及消息推送。该优化在保留双向通信能力的同时,为单向通知场景提供了更高效的选择,通过配置化方案满足不同业务场景需求,提升了系统灵活性和资源利用率。

2025-11-03 08:05:52 825

原创 深入浅出Guava EventBus:观察者模式的实际应用,事件驱动编程的得力助手

Guava EventBus是Google提供的一个基于观察者模式的事件发布-订阅系统,适用于解耦事件处理逻辑。通过定义事件类、订阅者(使用@Subscribe注解)和EventBus实例,可以实现发布者与订阅者的松耦合。支持同步(EventBus)和异步(AsyncEventBus)处理,以及粘性事件(新订阅者能收到之前发布的事件)。使用时需注意事件类型匹配问题,避免订阅者无法接收预期事件。典型应用场景如电商系统的订单处理、库存更新等需要解耦的业务逻辑。

2025-10-27 08:41:59 888

原创 一文深度解析跨域访问:原理、机制及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 891

原创 一文读懂 Ehcache:Java开发者的缓存利器

Ehcache是Java开发中常用的进程内缓存框架,通过将数据存储在JVM内存中实现快速访问。它具有高效、灵活配置和分布式支持等特点,能够减轻数据库压力、提高应用响应速度。与Redis相比,Ehcache作为进程内缓存访问速度更快但功能较简单,适用于单体应用;Redis则更适合分布式系统。文章还提供了Spring Boot集成Ehcache的示例代码,展示了基本配置和使用方法。开发者应根据具体场景选择合适的缓存方案,Ehcache适合高性能要求的单体应用,而Redis更适合分布式环境下的复杂需求。

2025-10-20 08:00:00 595

原创 一文速通AI的20个核心基础概念

在当今数字化浪潮中,AI已成为推动各领域变革的核心力量。然而,其丰富而复杂的概念体系常令初学者望而生畏。以下精心挑选并深入解读20个AI核心基础概念,助您快速搭建AI知识框架,轻松踏入AI世界。1. 人工智能(AI)人工智能作为计算机科学的前沿分支,致力于赋予机器人类般的智能。想象为计算机植入 “智慧芯片”,使其能像人类一样感知环境、处理数据、总结规律、做出决策并解决各类问题。从传统的基于规则的专家系统,到当下热门的深度学习驱动的神经网络,AI技术不断演进。其终极目标是打造能在复杂多变的环境中自主运行,

2025-10-13 08:00:00 787

原创 Spring AI Alibaba:Java 开发者集成阿里大模型的利器

摘要:Spring AI Alibaba 是连接 Spring AI 与阿里大模型生态的桥梁,实现了对通义千问、百炼平台等阿里系AI服务的标准化集成。它为Java开发者提供统一接口、生态融合和企业级特性,支持多模型接入、百炼平台专属适配、提示词模板引擎等功能。通过简单配置即可快速构建AI应用,并支持RAG等高级场景,显著降低阿里云生态下AI应用的开发门槛和维护成本,是Spring开发者集成阿里大模型能力的高效解决方案。

2025-10-06 08:00:00 884

原创 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 982

原创 基于 Redisson 实现分布式锁:解锁分布式世界的“秘密武器”

嘿,小伙伴们!在分布式系统这个热闹非凡的“江湖”里,分布式锁可是位举足轻重的大侠。想象一下,多个服务器节点都眼巴巴地盯着同一份资源,都想冲上去操作,如果没有一把“锁”来维持秩序,那场面,简直就是一锅粥,数据不一致等各种棘手问题就会像调皮的小怪兽一样到处乱窜。今天咱就来好好唠唠如何用 Redisson 这个神器来实现分布式锁,把这些小怪兽统统收拾得服服帖帖!

2025-09-22 08:00:00 563

原创 深入浅出Java分布式锁:从原理到实践

分布式锁技术解析与实战 摘要:分布式锁是解决多节点共享资源并发访问的关键技术,需满足互斥性、安全性和可用性。主流方案包括:1)数据库锁(实现简单但性能差);2)Redis锁(高性能,适合高并发);3)ZooKeeper锁(高可靠,保障强一致性)。文中通过Spring Boot示例演示了基于Redisson的Redis分布式锁和基于Curator的ZooKeeper锁实现,涵盖依赖配置、加锁/释放锁等核心代码。技术选型需权衡性能、可靠性和复杂度,数据库锁适用于小型项目,Redis锁适合秒杀等高并发场景,Zoo

2025-09-15 08:12:37 649

原创 Git 从入门到实战:基于 TortoiseGit 的图形化操作指南

本文为零基础用户提供TortoiseGit英文版的使用指南。Git作为分布式版本控制系统,能有效解决代码版本管理和多人协作问题。TortoiseGit作为其图形化工具,通过右键菜单简化操作流程。文章首先对比Git与SVN的核心优势,强调Git在离线工作、分支管理和数据安全方面的优势。随后详细讲解TortoiseGit的安装配置步骤,包括Git环境准备和用户信息设置。核心概念部分用"三区三动作"模型简化理解。最后重点介绍常用操作:创建本地仓库、克隆远程项目、提交修改、同步代码、推送更新以及

2025-09-08 07:56:00 1051

原创 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 1113

原创 一文看懂 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 600

原创 架构图绘制工具PlantUML简介及语法

本文介绍了两种架构图绘制方法:绘图软件(如draw.io)灵活但耗时,基于文本的工具(如PlantUML)高效易管理但样式受限。重点讲解了PlantUML的基本用法,包括文件格式、注释、宏替换、include引入资源、C4模型元素(Person、System等)、关系定义和布局控制。提供了一个最小完整示例,展示如何用简洁代码生成包含买家、电商系统和支付宝的上下文图,并自动生成图例。文章还提供了PlantUML官网链接和中文手册,便于读者进一步学习。

2025-08-18 08:10:55 846

原创 架构可视化双雄全解析_——4+1 视图模型与 C4 模型从入门到落地

本文介绍了4+1视图模型和C4模型两种主流的软件架构可视化方法。4+1视图通过逻辑、开发、进程、物理和场景五个视角全面描述系统,适合不同干系人;C4模型则采用Context、Containers、Components、Code四个层次逐级细化,更聚焦开发团队需求。文章对比了两者的特点和应用场景,并提供了工具推荐和实战案例,帮助开发者在需求变更、团队协作等场景下选择合适的方法,实现架构的有效沟通与管理。

2025-08-11 08:00:00 1006

原创 Spring Boot实战系列1—— 日志输出

Spring Boot日志实战指南 本文介绍了Spring Boot应用中日志的重要作用与配置方法。日志在开发调试阶段帮助定位问题,在生产环境监控系统运行状态,是排查问题的关键依据。 核心要点: 主流日志组件对比:SLF4J作为日志门面,配合Logback(默认)或Log4j2实现 日志对象实例化:推荐使用@Slf4j注解简化Logger创建 日志输出方法:info/dubug/error等不同级别日志的使用方式 日志配置详解:通过logback.xml控制日志格式、输出目的地(控制台/文件)和级别 文中提

2025-08-04 08:00:00 757

原创 Java 开发中主流模板引擎简介及对比

摘要: Java模板引擎是实现动态内容生成的重要工具,通过分离数据与模板来提高开发效率。本文介绍了模板引擎的基本概念、组成和工作流程,重点分析了其在网页生成、邮件发送、文件配置、代码生成和报表制作等场景的应用价值。对比了Thymeleaf、FreeMarker、Velocity等主流模板引擎的特点与适用场景,并提出了选择建议、性能优化和安全防护等注意事项。最后通过FreeMarker代码示例展示了模板引擎的实际应用方式,为开发者提供了技术选型和实践指导。

2025-07-28 08:02:27 709

原创 使用Jenkins实现Windows服务器下C#应用程序发布遇到的共享冲突问题解决方案

摘要 本文记录了Windows服务器下C#应用程序发布过程中遇到的文件占用问题及解决方案。通过Jenkins发布时发现文件传输成功但覆盖失败,排查发现xcopy因文件占用导致共享冲突。尝试使用robocopy命令和不同IIS服务停止方式(iisadmin、w3svc)后,最终确定"net stop w3svc"能有效释放文件占用。文章对比了iisadmin和w3svc服务的区别,并验证了解决方案的有效性,体现了实践过程中从理论到实际的技术探索过程。

2025-07-21 08:00:00 1071

原创 Spring Retry:优雅处理失败重试的利器

Spring Retry是Spring框架提供的声明式重试机制,用于处理暂时性故障(如网络抖动、数据库连接中断等)。通过@Retryable注解可轻松为方法添加重试功能,支持自定义重试次数、退避策略等。使用时需确保操作幂等性,合理设置重试参数,并注意内部方法调用需单独标注。典型应用场景包括远程服务调用、数据库操作等可能出现短暂失败的场景。与熔断器不同,Spring Retry专注于失败重试而非服务熔断。

2025-07-14 08:00:00 945

原创 JWT:原理、机制与实践

JWT(JSON Web Token)是一种无状态、自包含的用户认证解决方案,由头部、负载和签名三部分组成,具有跨域支持和高安全性的特点。其工作流程包括令牌生成、传输和验证三个环节。使用时需注意安全性问题,如采用强加密算法、防范XSS攻击、设置令牌过期机制等。文章还探讨了JWT在单点登录场景的风险、令牌撤销机制以及常见问题处理。JWT尤其适合分布式系统,能有效减轻服务器存储压力,提高系统扩展性。

2025-07-07 08:00:00 671

原创 Java拷贝专题—— 浅度拷贝与深度拷贝,常用工具类对比及推荐

本文探讨了Java开发中的对象拷贝操作,区分了浅拷贝和深度拷贝的概念与实现方式。浅拷贝仅复制对象字段的引用,而深度拷贝递归复制整个对象图。文章对比了常用深度拷贝工具类(Apache Commons BeanUtils、Dozer和Orika),重点介绍了Orika框架的高性能特性及其在Spring Boot环境下的集成方法。Orika通过代码生成技术实现高效对象映射,简化了复杂对象转换过程。在Spring Boot项目中,只需添加依赖并配置Mapper即可使用Orika进行对象拷贝,为开发提供了便捷高效的解

2025-06-30 08:00:00 1025

原创 数据库与缓存最终一致性方案——延迟双删技术

本文探讨了缓存与数据库数据一致性问题,重点介绍了延迟双删技术方案。文章首先分析了常用缓存策略(Cache-Aside、Read-Through等)的优缺点,指出数据不一致的风险。延迟双删策略通过在数据库更新前后两次删除缓存(间隔500毫秒左右),有效降低了数据不一致概率。该方案实现简单,适用于最终一致性要求的场景,但也存在延时时间难以确定、无法完全避免并发问题等局限性。相比其他方案(消息队列、Canal监控等),延迟双删在简单性与效果间取得了较好平衡。作者强调,强一致性必须采用锁机制,而延迟双删是业务可接受

2025-06-23 08:00:00 1523

原创 深入浅出:Oracle 数据库 SQL 执行计划查看详解(3)——表的连接方式及返回各列含义

本文摘要: Oracle数据库提供了多种表连接方式,包括嵌套循环连接(适合小表连接或索引访问)、哈希连接(适合大表无索引场景)和合并连接(适合已排序表的等值连接)。执行计划分析可通过Operation列查看操作步骤,Name列识别对象名称,Rows/Bytes列评估数据量,Cost/Time列衡量性能成本。优化技巧包括收集统计信息、创建适当索引和分析查询结构,以提升数据库查询效率。

2025-06-16 08:00:00 751

原创 深入浅出: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 1028

原创 深入浅出:Oracle 数据库 SQL 执行计划查看详解(1)——基础概念与查看方式

本文介绍了Oracle数据库SQL性能优化的关键手段——执行计划分析。首先说明了执行计划的概念,即数据库执行SQL语句的详细步骤和策略。接着详细讲解了三种查看执行计划的方法:通过V$SQL_PLAN视图查询(操作繁琐)、使用EXPLAIN PLAN语句(分两步操作)以及自动执行计划追踪(最便捷直观,推荐使用)。其中重点描述了SQL Developer工具中图形化执行计划的查看方式,为数据库优化提供了实用指导。

2025-06-03 10:05:53 1126

原创 Java防止重复提交全解析:原理、场景与实战方案

重复提交是指用户在短时间内多次发送相同请求到服务端,导致数据被多次处理的现象。常见原因包括用户多次点击提交按钮、浏览器刷新或回退后重新提交、网络延迟导致客户端重复发送请求等。重复提交可能导致数据库产生重复数据、业务逻辑异常以及服务器资源浪费。解决方案包括前端控制(如禁用按钮、防抖函数)、Token令牌机制、基于AOP+注解的防重提交以及数据库层防护(如唯一索引、乐观锁)。方案选型应根据具体场景,推荐组合使用前端防抖、Token机制、AOP+Redis注解和数据库唯一约束,以提升系统健壮性。

2025-05-26 08:42:23 1476

原创 MySQL数据库实战指南:基础知识、实战应用及最佳实践全攻略

在Java系统开发中,开源组件的使用是不可避免的,但其庞大的功能体系往往带来学习成本。本文基于二八原则,聚焦核心功能,以问题为导向,筛选实用功能,帮助开发者在有限时间内高效掌握组件使用。文章还对比了MySQL、Oracle和SQL Server在性能、适用场景、成本与维护复杂度等方面的差异,并提供了选型建议。此外,详细介绍了MySQL的常用版本及其核心特性,帮助开发者根据项目需求选择合适的版本。最后,文章总结了MySQL常用的存储引擎InnoDB和MyISAM的特点及适用场景,为开发者提供参考。通过本文,开

2025-05-19 08:00:00 2016

原创 AI赋能读书笔记整理:DeepSeek与Get笔记的体验与对比

《蔡康永的说话之道》通过44个小节,以故事形式分享说话技巧,帮助读者提升沟通能力。为高效吸收书中内容,我尝试用AI工具辅助整理笔记。以第一小节《再会辩论,也不必轻易评价别人》为例,AI工具提炼了核心观点,指出过度评价他人会消耗心力,忽视自我反思,尤其在网络时代,社交媒体设计如“点赞”鼓励用户对无关事务进行评价,形成虚假参与感。职业与生活的评价边界需明确,主持人需评价以推动互动,但日常生活中应避免无意义评价。AI工具还提供了结构化笔记,包括现象观察、潜在危害和解决路径,帮助读者更好地理解和应用书中内容。通过A

2025-05-12 10:08:12 1353

原创 一二三应用开发平台——代码生成(6)——视图模板

接下来就是平台自行扩展的前端视图模板了。模板文件如下:生成代码示例如下:新增视图模板文件如下:生成代码示例如下:修改视图模板文件如下:生成代码示例如下:详情视图模板文件如下:新增与修改视图功能二合一,适用于大多是情况。生成代码示例如下:查看视图模板文件如下:生成代码示例如下:树视图模板文件如下:生成代码示例如下:树表视图模板文件如下:树表视图实际是一个组合视图,由树视图和列表视图组成。生成代码示例如下:参照视图模板文件如下:生成代码示例如下:树参照视图模板文

2025-05-05 10:20:09 375

原创 一二三应用开发平台——代码生成(5)——代码模板

接下来看看基于MybatisPlus代码生成器模板进行优化调整的模板,脱离了对数据库表的依赖,增加了诸多与平台设计与实现相关的处理。

2025-04-28 08:00:00 917

原创 一二三应用开发平台——代码生成(4)——生成代码2

配置注入这一环节传入的参数比较多,后面都会用到。这一步是自定义配置的关键所在,需要把实体配置时的信息,放入到customKeyValue集合中,然后代码模板来读取和处理。MybatisPlus的代码生成器只生成了Entity、Mapper、Service、ServiceImpl和Controller层的后端代码,平台在这里进行了扩展,实现了前端页面的生成,以及前后端交互的视图对象VO的生成。策略配置。

2025-04-21 08:00:00 495

原创 一二三应用开发平台——代码生成(3)——生成代码1

接下来具体说一说生成代码的处理。前文提到过,平台的代码生成功能是基于MybatisPlus组件的代码生成器改造的,大框架还是遵循原组件的模式,不过还是做了比较多的集成和改造工作。处理过程与前面说的生成数据库表类似,也是先根据实体编码,获取实体对应的配置信息及其归属的模块配置信息,然后读取下属的数据模型,根据数据模型配置信息来生成代码。

2025-04-14 08:00:00 529

原创 一二三应用开发平台——代码生成(2)——生成库表

在生成库表的时候,我们选择一个或多个实体,点击生成库表操作,平台会根据实体编码进行循环处理。首先根据实体编码,查询对应的实体配置,以及该实体归属的模块信息。然后查询该实体下属的所有数据模型,针对数据模型,来生成对应的数据库表。这里还涉及到一个模型继承与复用的核心设计。系统预置了四个模型:标识模型(只有标识id属性)、映射模型(继承于标识模型,增加了创建人、创建时间、修改人、修改时间)、业务模型(继承于映射模型,增加了逻辑删除标识位)、流程模型(继承于业务模型,增加了与流程相关的一系列发起人、流程状态

2025-04-07 08:00:00 649

原创 一二三应用开发平台——代码生成(1)——整体介绍

当下,低代码与无代码的概念正炙手可热,市面上涌现了众多相关平台。客观而言,低代码开发平台确实通过配置化的方式显著提升了开发效率,降低了成本,并缩短了项目周期。同时,这种开发方式也降低了对开发人员的技能要求,所生成的代码更为标准化,有效减少了低级错误,间接提升了软件质量。然而,低代码开发并非是一个全新的概念,其历史可追溯至较早时期。在一个软件系统中,许多功能具有共性,这些功能可以通过抽象建模和标准化来简化开发流程。例如,单实体(如计量单位)对应单张数据表,展示和操作方式相对简单;

2025-03-31 08:00:00 577

原创 前端组件间接依赖版本升级后导致版本不兼容引发的血案——ERR_PACKAGE_PATH_NOT_EXPORTED No “exports” main defined in

先前分享了一篇因为前端组件版本使用^指定引发的不兼容问题博客,本以为问题已彻底解决,结果遇到了新的挑战。有小伙伴反馈一二三应用开发平台搭建开发环境的时候,按照操作手册,进行了最后一步,启动的时候会报错:我拿本地的开发环境测试正常,然后从Gitee上重新拉取搭建开发环境,复现了问题。

2025-03-25 10:41:10 2808 12

原创 《吃掉那只青蛙》读书总结

提高个人生产力与效能的21条实用性方法,时间管理为主,兼顾其他各方面要素。作者形象地将处理工作中的难题,重要事项比喻成青蛙,优先处理重要的、高价值、高回报、难度高、复杂的任务,即“青蛙”。

2025-03-17 08:00:00 1282

原创 一二三应用开发平台——能力扩展:多数据源支持

随着项目规模的扩大,单一数据源已无法满足复杂业务需求,多数据源应运而生。MyBatis-Plus 的官网提供了两种多数据源扩展插件:开源生态的 dynamic-datasource 和 企业级生态的 mybatis-mate。这里遵循开源免费的原则,选择前者dynamic-datasource,集成到平台中来。首先需要考虑的把依赖加到哪个模块下。数据源属于底层实现,平台的核心模块如system、support、entity-config,以及能力扩展模块,如mail、notification等,还有基于平

2025-03-10 10:13:16 965

原创 《拆掉思维的墙》读书总结

中国知名职业规划师古典老师的三本书可以组成一个系列,也可以称之为三部曲。第一部是《拆掉思维里的墙》,说的是认知的心法。第二部是《你的生命有什么可能》,承接第一部,说的是方法论。第三部是《跃迁》,则是系统论,站在更高的维度来看问题。从认知到方法论再到系统论看问题,这是人类认识事物、层层展开的认知过程。我是先看了最后一部《跃迁》,受益良多,掉头回来阅读这本《拆掉思维的墙》。开篇就提出了一个核心问题:人和人之间,为什么差距和差异会那么大,而且越来越大?

2025-03-07 11:33:03 542

原创 使用Jenkins实现Windows服务器下C#应用程序发布

在现代化的软件开发流程中,持续集成和持续部署(CI/CD)已经成为不可或缺的一部分。Jenkins作为一款开源的自动化运维工具,能够帮助我们实现这一目标。本文将详细介绍如何在Windows服务器下使用Jenkins来自动化发布C#应用程序。

2025-02-24 08:42:58 1595

日程管理时间管理任务管理FullCalendar集成实战Vue+FullCalendar简明版合订版

效果预览:https://meet.popsoft.tech/ 有一些应用系统或应用功能,如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件,但功能比较简单,用来做数据展现勉强可用。但如果需要进行复杂的数据展示,以及互动操作如通过点击添加事件,则需要做大量的二次开发。 FullCalendar是一款备受欢迎的开源日历组件,以其强大的功能而著称。其基础功能不仅免费且开源,为开发者提供了极大的便利,仅有少量高级功能需要收费。然而,尽管该组件功能卓越,其文档却相对简洁,导致在集成过程中需要开发者自行摸索与探索,这无疑增加了不少学习和验证的时间成本。 为此,本文通过日程管理系统的真实案例,手把手带你了解该组件的属性和功能,通过需求导向的方式,详细阐述FullCalendar组件的集成思路和实用解决方案。 在介绍过程中,我们将重点关注集成要点和注意事项,力求帮助开发者在集成过程中少走弯路,提供有效的避坑指南,从而提升开发效率,更好地利用这款优秀的日历组件。 在过程版基础上进行二次整理和创作,使其更有条理性,去除摸索过程中的思路和方案,使其更简明

2024-07-17

日程管理时间管理任务管理FullCalendar集成实战Vue+FullCalendar过程版

效果预览:https://meet.popsoft.tech/ 有一些应用系统或应用功能,如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件,但功能比较简单,用来做数据展现勉强可用。但如果需要进行复杂的数据展示,以及互动操作如通过点击添加事件,则需要做大量的二次开发。 FullCalendar是一款备受欢迎的开源日历组件,以其强大的功能而著称。其基础功能不仅免费且开源,为开发者提供了极大的便利,仅有少量高级功能需要收费。然而,尽管该组件功能卓越,其文档却相对简洁,导致在集成过程中需要开发者自行摸索与探索,这无疑增加了不少学习和验证的时间成本。 为此,本文通过日程管理系统的真实案例,手把手带你了解该组件的属性和功能,通过需求导向的方式,详细阐述FullCalendar组件的集成思路和实用解决方案。 在介绍过程中,我们将重点关注集成要点和注意事项,力求帮助开发者在集成过程中少走弯路,提供有效的避坑指南,从而提升开发效率,更好地利用这款优秀的日历组件。 环境Vue3+Element Plus+FullCalendar 6.1.11。

2024-07-06

java诊断与调优常用命令jmap、jstack、jstat使用实战.pdf

java应用运行过程中难免会出现问题,特别是在生产环境,发生异常或宕机情况,需要诊断与分析,定位原因,进行优化,避免下次再次出现问题。 虽然现在有很多可视化工具,使用起来比命令行更方便,但我们仍需要对基本的命令进行必要的了解。实际上,可视化工具,往往是基于这些基本命令,拿到数据后进行综合处理后输出的最终结果。 本文档从实战角度出发,介绍jps、jmap、jstack和jstat这四个命令的常用方式。 jps 作用:获取java进程号,是后续命令的基础。 当一台服务器运行多个java进程时,该命令默认只输出进程号和应用名,可能无法区分哪个是自己需要分析的对象,这时候可以附加参数 -l,显示完整路径。此外,附加参数-v,可显示jvm参数。 问题:windows环境下java进程存在,但执行jps无结果 原因:windows权限问题,在 Windows系统中,每个 java 进程启动之后都在 %TMP%/hsperfdata_${user} (${user}为当前登录用户名) 目录下建立一个以该 java 进程 pid 为文件名的文件,用以记录该 java 进程的一些信息。

2023-03-07

一二三应用开发平台-企业级通用低代码开发平台V1.0,前后端分离架构,vue3+elementplus+SSM

平台名称:一二三开发平台 简介: 企业级通用开发平台,前后端分离架构,单工程,多模块,部署形态为单体应用。 前端基于vue3.2.47,element-plus 2.1.0,前端框架vue-element-plus-admin深度整合改造。后端SSM+MybatisPlus,使用SpringBoot 2.3.0。 重度使用MybatisPlus,包括主键策略、逻辑删除、乐观锁、自动填充、数据分页、CURD接口、条件构造器等。 当前版本完成了系统内核部分:组织机构、人员、角色、权限、数据字典、日志;低代码配置模块:模块、实体、模型、视图,可快速配置实体元数据,基于元数据生成entity、dao、service、controller、vo及前端vue页面。基于该平台可快速构建企业应用。 内含数据库初始化脚本;平台整体架构图;平台整体研发计划;系统开发环境搭建说明。 1.实现系统内核,打通前后端,系统能运转起来 2.实现低代码配置功能,这是后续开发的孵化器 3.基于低代码配置+高代码辅助实现系统管理模块 4.整合SpringSecurity框架,实现身份认证与权限控制

2023-04-28

word、excel文档内容自动化更新技术方案

生产、研发业务上往往使用大量word和excel文档来作为资料载体,如操作规程、控制手册、卡片……,这些文档会反复使用到一些设备、工艺等参数数据。参数属性主要是名称、编码、正常范围、报警上下限、单位等,这些参数对应的属性值,是会发生变化的。 文档中使用参数的地方,中文的表达方式多种多样,人来阅读文档没啥问题。但是引用参数的文档,实际没有存在“物理”上的关联关系。当参数属性值调整时,需要更新相应的文档,这时候就出现问题了。因为没有关联关系,没有技术手段自动识别,只能人工一点点改文档,这工作量是相当大,找到需要修改的地方就不容易,并且很容易发生漏改、误改问题,从而导致不一致的问题。 解决该问题,常见的方案是通过软件系统来实现,软件系统实现,这是一个模板技术的应用场景。建立基础数据,整理文档模板,自动化替换,并引入全文搜索技术。 通过软件系统解决有诸多优点,比如使用简单、管理规范、可扩展性高。但不得不说,软件系统也有一些缺点,比如成本高,交付周期比较长。上面提到,软件系统是常见方案,但放到特定的背景下未必是最优方案。这里说一种轻量级的解决方案,即通过office自身功能来实现。

2023-02-21

使用vuedraggable实现拖拽式操作实战

Element UI 提供了大部分UI控件,但对于拖拽,确实是个短板,于是就需要额外的控件来补充了,即本文档的主角vuedraggable。 从实战角度,以低代码配置功能为例,说明vuedraggable的属性、方法、用法,以及使用过程中遇到的一些坑点及解决方案。 要点如下: group属性的要点 update和sort事件的差别 add事件如何获取数据 如何处理属性重复添加问题 不同列表间拖动group属性无效 实例: 某个业务实体,如用户管理,常见的菜单对应一个列表页面,顶部为页面级功能按钮,如新增、删除、导出等,中间为查询区域,可以放几个常用的查询条件,最下面则是查询结果,以表格形式展现行列数据。查询结果表格的行记录,最后一列放一些针对于该行数据的快捷按钮,如删除、编辑等。 这个配置功能,一方面涉及到元素的排序,如按钮的次序、查询条件的次序、查询结果中列的次序;另一方面涉及到列表间元素的移动,如将实体属性添加到查询列表或查询结果中。如采用传统模式,需要选中某个元素,点击左移、右移等按钮,既不直观,操作也繁琐。而采用拖拽式操作,所见即所得,用户体验大幅提升。

2023-03-08

使用VUE自定义组件封装数据字典实战

软件系统中,会有一些成组的常量值,来描述业务实体的属性,如性别、证件类型、审批状态等。我们通常称之为数据字典,作为系统后台管理的一个独立功能,来维护字典类型以及对应的字典值。后端功能和实现都比较简单,没什么好说的,本文档重点要说的是前端的封装。 对于数据字典,前端展现往往有三种常用的形式,下拉列表、单选按钮组和复选框组,其中,最常用是下拉列表,这里就以下拉列表的实现为例来说明,其他两种类似,不重复描述。 直接使用select组件,是不是可以呢?答案是可以用,但用起来比较繁琐,需要在页面加载的时候,调用后端API接口拿数据,在data中定义存放字典数据的变量,并且一个实体编辑页面,使用到字典属性往往不止一个,三五个也比较常见,这时候,需要定义多个变量来存放字典项以及加载数据,开发工作量变大且容易出错。 那有没有办法让使用变得更方便呢?答案也简单,就是自定义封装一个组件来实现。我们的目标是传入一个数据字典的类型编码,组件内部调用后端API,完成数据的加载与存储,在选择项变化时,自动更新绑定的对应的业务实体的属性值。同时,在业务实体的编辑页面,也能自动绑定和显示已选择的字典项。

2023-03-07

扩展MyBatisPlus代码生成器实现自定义源码生成,可生成前端页面、vo对象、dto对象等代码

MyBatisPlus自带了一个代码生成器mybatis-plus-generator,可基于数据库库表,结合模板技术,自动生成程序源码,不过默认情况下,只支持Entity、Mapper、Service、Controller这些层次。如果想生成未预置的代码,如vo对象、前端vue页面以及其他自定义代码等,需要做一些定制和扩展来实现。 从使用角度而言,官方资料介绍得比较简要,要实际使用,仍然需要进行具体的尝试和摸索,包括必要时看下源码怎么处理的,才能发现一些限制和约束,最终理顺。 本文档提供了整体实现思路,具体过程,包括模板的定义、数据的注入、代码的生成,以及遇到的问题和解决方案。 原代码生成组件,默认会在最终生成文件名前,默认附加实体名前缀,例如实体名是User,VO.java.ftl会自动生成UserVO.java,这样没问题。但是对于前端页面,如list.vue,edit.vue,因为是分目录放实体,希望最终文件名不变,而不要附加前缀变成UserList.vue、UserEdit.vue。 需要自定义类,继承于官方,重写outputCustomFile方法,实现上述目的。

2023-03-07

软件系统规模估算方法论介绍-功能点分析法

本文不是泛泛的理论介绍,而是从实际应用角度出发,对功能点估算法进行介绍,加入了较多的评论和观点,具备实用价值。 章节目录如下:背景、概述、简介、基本概念、计算方法、延伸计算、优缺点、总结。 应用场景 1.作为软件公司,要研发一个新的产品,功能需求大概明确了,需要确定下研发成本、资源需求等。 2.作为企业,实施软件系统,需要与软件厂商商谈具体的工期与费用等。 3.作为软件公司或企业的管理方,需要对多个软件系统进行横向对比、衡量与评价等。 以上几个问题,实际都指向一个核心问题,即如何客观估算与衡量一个软件系统的规模。只有具备了软件规模的基本数据,与之相关的工作量(人天)、工期、报价、项目成本才能计算。 目前评估软件规模的方法主要分为两种:基于技术视角和基于业务视角。 基于技术视角的方法是从开发者角度出发,如:基于软件源代码行、数据库表、函数数量等。 基于业务视角的方法是从用户角度出发,与软件开发技术无关,如:功能点、故事点、用例点、对象点等。 基于技术视角的评估方法更多地局限于软件开发团队内部,由经验丰富的技术人员估算,经常也被称之为专家估算法。这种估算法标准很难量化和达成一致,不同

2023-02-24

基于uniapp技术框架的微信小程序汇率换算完整源码

【说明】 这是使用uniapp技术框架实现的一个微信小程序,同时对头条小程序做了适配,通过了微信和头条审核并上架。业务功能相对简单,但整体框架完整,包括布局、页签、本地存储、常量、权限、自动更新、分享等。可直接基于本框架开发新的小程序,也可以将其作为学习资料,可减少大量框架方面的实现和调试工作。实现效果可使用微信搜索“小易汇率查询”(后端服务已停运,因此页面未加载数据正常)。 注:汇率数据是后端服务调用了阿里api服务市场的汇率接口,生成json数据,未包含在本源码内。 【业务功能】 本应用提供汇率查询与货币兑换功能,汇率数据准实时更新,主要包含四个页签: 【常用】:精选人民币、美元、欧元、日元、港币、新台币,韩元,英镑,加元,印度卢比等二十多个国家和地区主要货币,进行双向兑换及自定义汇率,可将关注的货币加入收藏。 【收藏】:快速浏览收藏的多种货币组合,实时掌握最新汇率。 【大全】:提供全球一百三十余种货币之间汇率查询,支持智能匹配搜索功能,可将支持的货币加入收藏,同时支持金、银、钯、铂贵金属与货币之间汇率查询。 【分享】:将本应用分享给微信好友、微信朋友圈、QQ好友、QQ空间。

2023-02-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除