- 博客(57)
- 收藏
- 关注

原创 OnlyOffice:前端编辑器与后端API实现高效办公
OnlyOffice是一套开源的办公软件套件,提供文档编辑、表格编辑、演示文稿制作等功能。它支持多种文件格式(如DOCX、XLSX、PPTX、PDF等),并且通过API接口提供高度可定制的服务。前端编辑器:用户在Web浏览器中直接使用编辑器进行文档创建、编辑和协作。后端API:开发者可以通过与后端进行交互,包括文档管理、用户权限控制、实时协作等功能。前端和后端通过网络协议和Socket连接进行数据交换,实现文档编辑、同步和实时协作。
2025-02-21 18:38:23
1165

原创 Camunda流程引擎
工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。指在组织中,多个任务、活动或过程之间的顺序和控制流。这些任务通常涉及多个参与者、系统或部门,工作流的目标是将复杂的业务逻辑分解为多个可管理的逻辑段,并统一控制这些逻辑段的执行条件、执行顺序以及相互通信,从而实现业务逻辑的解耦与优化。这种方式不仅提高了业务流程的灵活性和可维护性,还促进了各个环节之间的协同工作。
2024-09-18 15:38:59
2626

原创 ubuntu22.04下搭建iRedMail邮件服务器
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。iRedMail是一个开源、免费的邮件服务器项目,基于GPL(v2)协议发布。官网 www.iredmail.org (国内不能访问),可以通过www.iredmail.com访问。iRedMail 是一个强大且开源的电子邮件服务器套件,它简化了在 Linux 和 BSD 系统上部署和管理电子邮件服务器的过程。Postfix功能:作为 SMTP 服务器,负责电子邮件的发送和接收。
2024-06-13 15:40:47
6492
8
原创 如何排查、定位 SQL 慢查询及其优化策略
数据库性能问题往往会直接影响系统响应速度,而 SQL 慢查询是最常见、最直观的性能瓶颈。本文将从慢查询日志的开启执行计划(EXPLAIN)分析,到使用性能调试工具(SHOW PROFILE、OPTIMIZER_TRACE 等),详细讲解如何排查和定位慢查询,并结合实际案例分析原因、提供优化策略,助你提升数据库查询效率。🚀SQL 慢查询的排查与优化是一项综合性工作,需要从日志抓取、执行计划分析、索引设计、SQL 重构到数据库参数调优和硬件优化等多方面入手。
2025-04-03 15:17:17
610
原创 全面解析 Mybatis 与 Mybatis-Plus:深入原理、实践案例与高级特性对比
在 Java 后端开发中,数据持久层始终是关键模块。如何既保证 SQL 调优的灵活性,又能提高开发效率,是众多开发者关注的焦点。本文将从基础介绍开始,全面解析Mybatis与的各个方面,包括工作原理、常见使用场景、详细实例、进阶特性、插件支持以及最佳实践,帮助你在项目中做出更明智的选择。让我们一起开始这段干货满满的技术之旅吧!💡Mybatis高度灵活开发者可以自定义 SQL,实现复杂查询及数据库操作。精细控制通过 XML 映射文件管理 SQL 与实体类之间的关系,充分掌控底层细节。低侵入性。
2025-04-03 14:24:10
927
原创 Graylog 索引配置详解与优化建议
Graylog 作为一款开源日志管理平台,借助 Elasticsearch 存储和检索日志数据,提供实时查询、告警、可视化等功能。如何合理配置索引、分片、副本及轮转策略,不仅直接影响查询性能,还关系到数据安全和存储成本。本文结合常见参数逐一解析其含义、配置方法,并附上注意事项和优化建议,还配以具体示例,助您在实际运维中游刃有余!😊合理配置 Graylog 参数能实现高效、稳定的日志管理。
2025-04-02 10:58:54
978
原创 消费降级:场景、方案与解析
消费降级(Degradation)是一种应急策略,当系统面临极端压力、部分服务响应异常或关键资源不足时,通过主动关闭或简化部分非核心功能,确保核心业务(例如支付、下单、订单处理)能集中资源正常运行。换句话说,在遇到异常或高并发情况下,系统宁愿暂时牺牲次要功能,也要保证主要功能不受影响,从而避免整个平台因过载而崩溃。消费降级是保障系统在高负载、外部依赖异常或数据库压力过高时,依然能保证核心业务正常运行的一种重要策略。
2025-04-01 15:40:29
823
原创 Kafka 深度解析:高性能设计、部署模式、容灾机制与 KRaft 新模式
Kafka 是一款分布式流处理平台,凭借其高吞吐量、低延迟和强大的数据可靠性,广泛应用于日志收集、数据管道、事件驱动架构等场景。本文将深入剖析 Kafka 的核心设计,包括高性能设计解析、不同的部署模式、容灾机制以及 ZooKeeper 与 KRaft 的演进。优化方式实现方式性能提升点顺序写磁盘与日志结构存储分区 + Segment 文件提升写入速度零拷贝技术使用sendfile()系统调用降低 CPU 消耗批量发送与压缩批量打包 + 数据压缩提高数据吞吐量分区机制与并行处理。
2025-03-31 15:24:20
869
原创 Kafka 全面解析
Apache Kafka 最初由 LinkedIn 开发,2011 年贡献给 Apache 基金会,现已成为大数据实时流处理、分布式消息系统的事实标准。高吞吐量与低延迟:每秒能处理上十万甚至上百万条消息,延迟仅几毫秒;分布式与可扩展:采用分区(Partition)机制,实现横向扩展,支持集群扩容;持久化存储与容错:消息持久化写入磁盘,并支持多副本备份,确保数据不丢失;灵活的消息传输模式:既支持点对点也支持发布订阅,通过消费者组实现负载均衡;实时流处理。
2025-03-31 14:05:31
485
原创 从 Word 到 HTML:使用 Aspose.Words 轻松实现 Word 文档的高保真转换
在日常开发中,我们经常需要将 Word 文档转换为 HTML,用于在线预览或展示。但直接转换后的 HTML 可能无法满足项目的美观需求,比如超链接的颜色、下划线等样式容易受到默认浏览器的影响。在这篇文章中,我将介绍如何使用将 Word 转换为 HTML,同时通过自定义 CSS 的方式优化超链接的显示样式。通过 Aspose.Words 将 Word 转换为 HTML,不仅实现了高还原度的转换,还通过自定义 CSS 完善了超链接的展示效果。主要优化亮点:高效转换:快速处理大文件,HTML 还原度高。
2025-03-28 15:09:30
1341
原创 MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案
在使用时,通常我们会在数据库表中设置和两个字段,借助 MyBatis Plus 的自动填充功能来维护这些时间字段。但是,有时候你可能会遇到字段未自动更新的情况,哪怕代码中已经配置了。本文将针对这一问题,分析可能的原因,并提供详细的解决方案。如果你在Mapper.xml中自定义了update语句,那么 MyBatis Plus 不会触发自动填充逻辑。解决方案:方法 1:在 XML 中手动设置</update>方法 2user.setName("李四");原因现象解决方法使用了未更新使用。
2025-03-27 18:08:00
742
原创 Java 线程池全面解析
在高并发和大规模数据处理的应用中,线程管理成为系统性能与稳定性的关键。直接创建和销毁线程会消耗大量资源,并且难以控制线程数量,容易导致资源耗尽。为了解决这些问题,Java 提供了线程池机制,通过线程复用和任务调度降低线程创建成本、改善资源管理、提高系统响应速度。本文将全面解析 Java 线程池的设计背景、原理、类型及其优缺点、适用场景,并结合图示、表格和代码示例详细介绍核心参数、拒绝策略、执行流程、监控调优以及常见问题与解决方案,同时补充 Spring 环境下的用法。
2025-03-25 16:43:54
791
原创 分布式限流方案:基于 Redis 的令牌桶算法实现
在分布式场景下,接口限流变得更加复杂。传统的单机限流方式难以满足跨节点的限流需求,因此需要一种分布式限流方案。这里介绍一种基于Redis和Redisson实现的令牌桶算法分布式限流方案。生成令牌:按照固定的速率向令牌桶中放入令牌。消耗令牌:每个请求到来时需要消耗一个令牌才能执行。桶满时丢弃令牌:如果令牌桶已满,额外生成的令牌会被丢弃。拒绝无令牌请求:当令牌桶为空且有请求到达时,拒绝该请求。示意图| 请求到达 |V| 令牌桶中是否有令牌?/ \是 否/ \
2025-03-21 14:03:26
713
原创 接口限流方案:从原理到实现
在高并发场景下,流量的突然增加可能导致服务器负载过高,甚至导致系统崩溃。为了应对这些挑战,接口限流成为一种重要的保护措施。除了常见的算法限流方案,像Nginx这样的代理服务器也提供了高效的限流机制,尤其在应对恶意流量、DDoS攻击等场景下表现优异。固定窗口计数法滑动窗口计数法漏桶算法令牌桶算法基于Nginx的IP限流分布式限流方案选择适合的限流策略取决于业务场景:如果需要平稳处理流量并避免服务崩溃,推荐使用漏桶算法。如果需要支持突发流量并提供更好的用户体验,推荐使用令牌桶算法。
2025-03-21 13:41:17
863
原创 Caffeine 缓存:简介、优势及应用场景
在现代应用程序中,缓存技术已经成为提升系统性能的关键工具之一。尤其是在高并发、低延迟的场景下,如何高效地管理缓存成为开发者关注的重点。Caffeine是一个基于 Java 的高性能缓存库,因其优秀的性能和灵活的配置选项,迅速成为业内广泛使用的缓存解决方案。本文将深入探讨 Caffeine 缓存的优势、适用场景以及其如何与其他缓存策略(如三级缓存)协同工作,进一步提升系统的性能。Caffeine 是一个快速、基于 Java 的内存缓存库,灵感来自于 Google 的 Guava 缓存。
2025-03-14 17:34:48
949
原创 深入理解Tomcat的Request复用机制及其风险
在高并发的Web应用中,性能优化是每个开发者需要关注的核心问题之一。为了提高Web应用的响应速度和吞吐量,Tomcat等Servlet容器使用了一些优化技术,其中之一便是Request复用。通过对对象进行复用,Tomcat能够减少对象的创建和销毁,提高系统的处理效率。然而,这种优化技术也带来了一些潜在的风险,比如线程安全问题、内存泄漏和安全漏洞。本文将深入探讨Tomcat的Request复用机制,介绍它的工作原理、带来的好处,以及可能存在的风险。Tomcat作为Servlet容器。
2025-03-07 16:06:00
613
原创 如何让非 root 用户构建 Docker 镜像
在默认情况下,Docker 需要root权限或sudo才能运行。这对于日常开发和 CI/CD 流水线可能不够方便,也可能带来安全隐患。那么,如何让非 root 用户也能构建和运行 Docker 容器呢?本篇文章将介绍 三种方法 来实现这一目标,并推荐最佳实践。方法适用场景推荐级添加用户到docker组适用于大多数情况,安全且便捷⭐⭐⭐⭐⭐(推荐)使用sudo运行 Docker适用于临时使用,但不够方便⭐⭐⭐(不推荐)Docker Rootless 模式适用于不能修改用户组的环境⭐⭐⭐⭐。
2025-03-05 16:49:28
1087
原创 Java 开发推荐使用的 JDK 版本及对比分析
Java 作为企业级开发的主流语言,JDK 版本的选择对于项目的性能、兼容性和长期维护至关重要。过去,JDK 8 长期主导市场,但随着 Java 版本的快速迭代,JDK 11、JDK 17 和 JDK 21 已成为企业和开发者的推荐选择。本文将详细分析当前推荐的 JDK 版本、不同版本之间的差异、Spring Boot 兼容性、各版本的优缺点以及升级建议,并提供更深入的技术分析,帮助开发者做出最佳选择。,如果使用 Spring Boot,升级 JDK 是必然选择。,稳定、性能好,适合大部分企业级开发。
2025-03-04 11:44:31
1785
原创 Spring Boot 中短时间连续请求时出现Cookie获取异常问题
在处理异步线程时,特别是涉及到等请求对象时,可能会遇到请求复用和上下文传递问题。通过合理地使用在主线程提前复制Cookie、使用包装request、使用 ThreadLocal 传递 Cookie或者直接传递参数等方法,可以有效避免数据污染和请求对象复用问题,从而确保异步任务中的请求数据正确性。核心问题请求复用:Tomcat 会复用请求对象,导致异步线程访问到已经修改过的请求。异步线程访问不到请求数据:由于请求对象在异步线程执行时可能已经被清理或标记为“完成”,导致访问不到请求数据。解决方案方案适用场景。
2025-02-28 19:03:47
864
原创 Spring Boot 中如何正确地在异步线程中使用 HttpServletRequest
在现代 Web 开发中,使用异步线程处理长时间运行的任务(如文件导出、大规模数据处理等)已经成为一种常见的做法。Spring 提供了多种方式来实现异步请求,其中是一个常见的用法。然而,当我们需要在异步线程中访问时,可能会遇到一些问题,因为的生命周期与线程绑定,而异步线程通常无法继承主线程的请求上下文。为什么异步线程中无法访问 HttpServletRequest?Tomcat 的 request 复用机制及其影响AsyncContext 的作用与局限性。
2025-02-28 16:54:48
1046
原创 Docker 部署 MinIO 对象存储服务
MinIO 是一个高性能、开源的对象存储服务,基于 Apache License v2.0 协议,兼容 Amazon S3 API。作为轻量级存储解决方案,MinIO 提供了卓越的性能,适合存储大容量的非结构化数据,如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。其文件大小可从几千字节到最大 5T 不等,且完全免费。核心优势高性能:支持大规模数据存储与访问,处理速度快。开源与兼容:完全开源,兼容 S3 接口,便于集成。适用场景:适合静态文件存储、数据备份、归档管理等。部署简单。
2025-02-26 16:43:59
1226
原创 OnlyOffice API使用教程:实现文档格式转换
在现代应用开发中,文档的处理和转换是非常常见的需求。OnlyOffice提供了强大的API,可以将Docx文档转换为多种格式,如PDF、PPTX、XLSX等。通过OnlyOffice API,我们可以轻松实现文档转换功能,满足不同应用场景的需求。本文将详细介绍如何使用OnlyOffice API将Docx文档转换为其他格式文件,并提供实际的代码示例。ONLYOFFICE 提供了一个强大的文档转换服务,可以将多种文档格式转换为目标格式。常见的目标格式包括 PDF、ODT、PNG 等。
2025-02-26 15:34:32
1596
原创 Docker 部署 Graylog 日志管理系统
Graylog 是一个开源的日志管理平台,专为实时日志收集、分析和可视化设计。它支持强大的搜索功能,并且与 Elasticsearch 和 MongoDB 集成。通过 Docker 部署 Graylog 可以快速搭建一个完整的日志管理系统。本文将展示如何使用 Docker 和 Docker Compose 来部署 Graylog、Elasticsearch 和 MongoDB。
2025-02-24 17:22:35
1792
2
原创 Docker 部署 OnlyOffice 文档服务器
OnlyOffice 是一个强大的开源文档编辑平台,支持文档、表格、演示文稿等文件格式的编辑。通过 Docker 部署 OnlyOffice 文档服务器,可以简化安装过程并快速实现文档管理和编辑功能。本文将展示如何使用 Docker 部署 OnlyOffice 文档服务器,并对相关配置进行详细说明。通过 Docker 部署 OnlyOffice 文档服务器,能够快速搭建文档编辑平台,提供在线文档编辑、协作和管理功能。本文介绍了如何通过简单的 Docker 命令来配置容器,并确保数据的持久化存储。
2025-02-24 15:57:52
1126
原创 Docker 部署 Jenkins持续集成(CI)工具
Jenkins 是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中。通过 Docker 部署 Jenkins,可以简化安装和配置过程,并让你方便地管理 Jenkins 容器。本文将介绍如何使用 Docker 部署 Jenkins,并对比两种端口配置方式:使用host 网络模式和使用port 映射来设置 Jenkins 容器的访问端口。通过 Docker 部署 Jenkins 容器并设置端口映射或共享主机网络堆栈,都是部署 Jenkins 的有效方式。
2025-02-24 15:39:29
1044
原创 Docker 搭建 Redis 数据库
Redis 是一个开源的高性能键值对存储系统,广泛用于缓存、消息队列等场景。通过 Docker 部署 Redis,能够让你轻松快速地运行 Redis 服务,同时灵活地进行配置和管理。本篇文章将指导你通过 Docker 部署 Redis 容器,并讲解如何挂载配置文件来设置密码、监听端口及其他自定义设置。通过 Docker 部署 Redis 容器非常简便,并且可以灵活配置各个参数。你可以使用挂载本地目录来管理 Redis 的配置文件、数据文件和日志文件,这样可以确保配置和数据持久化存储。
2025-02-24 11:48:10
899
原创 Docker 搭建 Nginx 服务器
在现代 Web 开发中,Nginx 是一个广泛使用的高性能 Web 服务器,它不仅可以用于反向代理,还能作为负载均衡器、HTTP 缓存等。通过 Docker 部署 Nginx,不仅能够简化安装过程,还能轻松进行配置和管理。本篇文章将指导你通过 Docker 快速搭建一个 Nginx 环境,并讲解如何修改配置文件以定制化你的服务器设置。通过 Docker 部署 Nginx 容器非常简便,并且可以灵活配置各个参数。
2025-02-24 11:00:52
1343
原创 Docker 搭建 MySQL 数据库
在本篇文章中,我们将详细介绍如何通过 Docker 快速搭建一个 MySQL 数据库环境,并通过一些简单的配置来实现数据持久化、日志管理和定制化的配置文件。MySQL 的配置文件可以通过挂载宿主机的配置目录到容器内进行自定义。你可以在conf目录下创建一个custom.cnf文件,配置 MySQL 的监听端口等参数。例如,我们可以设置 MySQL 监听的端口为3307,而不是默认的3306,或设置时区+08:00。然后,确保该文件挂载到容器内的正确位置(
2025-02-24 10:36:05
781
原创 修改OnlyOffice编辑器默认字体
在OnlyOffice中,编辑器的默认字体可能不符合公司或个人的需求,通常会使用一些不常见的字体。为了让字体更加符合实际应用,我们可以按照以下步骤,通过Docker容器来修改OnlyOffice编辑器的默认字体。OnlyOffice的容器中可能自带一些原生的字体文件,首先需要删除这些文件,以避免与新字体发生冲突。完成字体文件复制后,我们需要执行OnlyOffice的字体更新脚本,这样系统才能识别并加载新的字体。在删除原有字体文件后,我们需要为新的字体文件创建一个目录,用于存放我们替换的字体。
2025-02-14 12:17:40
1057
原创 OnlyOffice编辑器下载失败排查与解决方案
在使用OnlyOffice编辑器时,常见的问题之一是。具体表现为提示图片URL地址不正确或打开文档时下载失败。本文将详细分析问题的原因,并提供解决方案。
2025-02-13 15:20:35
1366
原创 CentOS7 之iptables防火墙相关命令
在CentOS 7中,iptables是用于配置、管理和监控防火墙规则的工具。它使用规则集来控制进出系统的网络流量。本文将详细介绍如何使用iptables配置防火墙规则、查看和管理防火墙状态以及如何进行常见的防火墙操作。
2025-01-03 10:01:17
1198
原创 数据库索引详解:类型、优缺点及使用场景
MySQL 索引,通俗来说,就是一本书的目录,它可以帮助数据库快速找到数据。假设你要查找一本厚厚的书中某个特定的内容,如果没有目录,你可能需要从第一页翻到最后一页,效率很低。而如果这本书有了目录,你只需要查找目录中相关的章节,快速定位到所需内容。在数据库中,索引的作用就像书籍目录一样,帮助数据库快速定位到具体的数据,避免全表扫描(也就是从头到尾查找),大大提高查询效率。假设有一个users表,里面有成千上万条数据,存储了每个用户的姓名、年龄、邮箱等信息。
2024-12-13 18:15:12
962
原创 Spring Boot 配置多数据源并手动配置事务
通过上述配置,系统能够实现同时操作两个不同的数据源,每个数据源有独立的事务管理、MyBatis 配置等,确保了在进行跨库操作时能够稳定运行。每个模块的配置都进行了明确的注释,方便维护和修改。
2024-12-12 16:09:08
1658
原创 MySQL SQL语句性能优化
查询设计:减少数据量,避免复杂计算和函数操作。索引使用:合理创建索引,利用覆盖索引。表结构:垂直拆分和水平分区,选择合适的数据类型。配置优化:调整缓存和连接池,启用慢查询日志。其他技巧:避免临时表和锁表,使用批量插入和定期优化表。分析工具:使用 EXPLAIN 分析查询执行计划。
2024-12-10 18:18:22
1195
原创 Java与AWS S3的文件操作
Amazon Simple Storage Service(简称 Amazon S3)是由亚马逊网络服务(AWS)提供的一种对象存储服务。它提供了一个高度可扩展、持久、安全且低成本的存储解决方案,用于存储和检索任意数量的数据。适用于本地部署的 S3 兼容存储,或者想要避免依赖 AWS 提供的 SDK。通过 MinIO,你可以在 S3 和 MinIO 之间无缝迁移,或用于私有云环境。适用于直接操作 AWS S3 服务,提供更多 AWS 的特性和功能支持。
2024-12-02 11:39:53
1908
原创 解决Jenkins使用 Git 参数插件拉取 commit 列表缓慢问题
大多数情况下,我们只需要部署最新的 commit 版本。只有当出现版本回滚的需求时,才会采用以前的 commit 版本。通过提供按 commit 版本和最新分支两种构建方式,可以显著提高部署的效率和灵活性。在使用 Git 参数插件时,我们可以设置一个布尔选项 LatestCommit 来决定是否构建最新的 commit。选中该选项时,直接使用最新版本进行部署,无需等待 commit 列表的加载;未选中时,则使用 commit 列表拉取的方式选择特定的 commit 进行构建。
2024-11-13 10:46:35
1462
2
原创 aspose如何获取PPT放映页“切换”的“持续时间”值
获取混淆后的对象属性值,确实会比未混淆的情况下更为复杂。混淆会改变类名、方法名、字段名等,这可能导致在调试或反射时无法直接访问这些属性。文档地址:https://reference.aspose.com/slides/java/com.aspose.slides/islideshowtransition/:由于类名和方法名被混淆,使用反射操作这些类和方法时需要知道混淆后的名称,这通常是不可预测的。:混淆后的类名和方法名使得代码难以阅读和理解,增加了调试和维护的复杂度。图 gson 对象序列化处理报错。
2024-11-07 18:42:50
1213
原创 如何排查CPU占用率过高的问题
在处理生产环境中CPU占用率过高的问题时,准确定位问题的根源至关重要。以下是一个系统化的排查方法,帮助你一步步找出并解决这个问题。
2024-10-17 18:32:13
1442
原创 Camunda如何共享流程定义但不共享流程实例?
有许多情况下,所有租户应该共享相同的定义。在这种情况下,最好是只部署一次定义,使其对所有租户可见。然后,当某一租户创建一个新的实例时,它应该只对该租户(当然还有管理员)可见。这可以通过一种我们称之为 “共享定义” 的使用模式来实现。我们所说的 使用模式 是指它不是Camunda本身的一个功能,而是使用它来实现所需行为的特定方式。部署一个共享定义只是一个 “常规” 的部署,而不用给部署分配一个租户身份。.deploy();在一个应用程序中,我们经常希望向用户提供一个 “可用” 的流程定义的列表。
2024-09-20 15:11:19
1070
原创 Camunda流程引擎并发性能优化
1. 任务竞争问题:多个 JobExecutor 实例可能同时争抢相同的作业,导致锁竞争和资源冲突。影响:竞争会增加数据库负担,降低任务处理效率,导致响应时间延长。2. 负载不均衡问题:在使用 max-jobs-per-acquisition 时,某些 JobExecutor 可能会获得更多任务,而其他实例则可能处于闲置状态。影响:这种不均衡会导致资源利用率降低,可能出现某些服务器过载,而其他服务器闲置的情况。3. 数据库压力问题:频繁的数据库查询和作业获取请求可能导致数据库负载增加。影响。
2024-09-18 18:18:40
1746
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人