【Druid】慢SQL监控、邮件通知及日志拆分

log4j添加druid的慢sql日志记录到指定文件 阅读详情

SQL 优化前传:SQL监控与通知

0. 前言

人民生活幸福,经济稳步向前。社会飞速发展,速度如闪电般迅猛。我们开发团队也都成了快男,开发进度远超产品提需求的速度。因此,我们开启了代码优化模式:专门抽出一段时间,对我们当前产品的代码进行优化。

同事们干得热火朝天:有做登录验证优化的,有做卡片优化的,有做代码格式优化的…而我,就接到了半个SQL 优化的任务:在系统层面做业务或SQL监听,为日后SQL优化做准备。

技术选型
一提到SQL监控,毋庸置疑,我们都会首先想到:Druid

经过几小时的奋战,我实现了基本的 Druid 配置、慢业务与慢SQL监听 以及 慢SQL 或慢业务通知到开发者。本文将这个解决过程记录下来,以供总结、回顾以及读者参考。

前提条件
我们的测试环境已集成部分Druid
除了可以对Druid进行配置,由于是系统集成的问题,其它条件都不能变

学习目标
学习Druid 相关概念
学习并使用Druid实现慢SQL或慢业务的监听和通知
至于 Druid 的原理、源码与思想,作为长期任务,日后慢慢学习、积累

注意
由于 Druid 本身作为一个辅助监听SQL等性能的工具,本身会产生一定开销,会影响性能,实际使用中,建议使用多环境对Druid进行配置。尽量不要在生产环境使用!

1. Druid 简述

数据库连接池负责分配、管理和释放数据库连接。通过数据库连接池能明显提高数据库操作的性能。

Druid 是 阿里 提供的一个开源连接池,除了连接池之外,还提供了非常优秀的数据库监控和拓展功能。

Druid 主要包括:

  • DruidDriver:代理类Driver,提供FilterChains模式的插件体系。
  • DruidDataSource:高效可管理的数据库连接池
  • SQLParser:SQL 分析等

我们可以通过Druid实现:

  • 数据库监控:即本文的重点实战对象,慢SQL监控
  • 替换传统的DBCP等连接池中间件,提供高效、功能强大、可拓展性强的数据库连接池
  • SQL执行日志
    等等等等。

由于功能强大,Druid被称为Java最好的数据库连接池!

详情请参考:
alibaba-druild-github:https://github.com/alibaba/druid

更多的解决方案,可在上述参考链接的 wiki 寻找官方Q & A。

2. Druid 配置

默认本文读者可自行查询或理清 JAVA版本、SpringBoot版本、以及Druid版本之间的兼容关系,可自行解决自己配置的过程中报错或报红问题,本文取其中一个版本来示例。

pom.xml

	<!--   Druid     -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.2.8</version>
    </dependency>

2.1 Druid yml

yml 参考配置。
以 yml 配置已在注释作了一定程度的详解。如果还是疑问比较多,篇幅有限,请读者自行查阅更多的关于 Druid 的博客等文档。

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    druid:
      # MySql、PostgreSQL、SqlServer校验
      validation-query: select 1
      validation-query-timeout: 2000
      # 初始化大小、最大、最小
      initial-size: 5
      max-active: 20
      min-idle: 5
      # 配置获取连接等待超时的时间
      max-wait: 60000
      # 默认是false,应用向连接池申请连接时,连接池会判断这条连接是否可用
      test-on-borrow: false
      # 默认false,当使用完,连接池回收连接的时候会判断该连接是否还可用
      test-on-return: false
      # 申请连接,且testOnBorrow为false时,判断验证这条连接是否可用
      test-while-idle: true
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      # 配置StatViewServlet(监控页面),用于展示Druid的统计信息
      stat-view-servlet:
        enabled: true
        login-username: username
        login-password: password
      # 配置WebStatFilter,用于采集web关联监控的数据
      web-stat-filter:
        # 启用WebStatFilter
        enabled: true
        # 对所有请求进行监控
        url-pattern: /*
        # 排除静态资源的监控
        exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
        # session统计功能
        session-stat-enable: true
        # session统计最大数量,默认1000
        session-stat-max-count: 10
      # 回收线程
      remove-abandoned: true
      remove-abandoned-timeout-millis: 600
      log-abandoned: false
      filters: stat,wall
      filter:
        stat:
          # 慢 SQL 监控, 超过 2s的SQL 记录
          log-slow-sql: true
          slow-sql-millis: 2000
          merge-sql: true
          # 开启
          enabled: true
        # 防止SQL 注入
        wall:
          config:
            alter-table-allow: true

2.2 监控效果

经过上一小节的配置,我们已经可以使用 Druid 监控面板了:

启动项目,访问:地址:端口号/druid/login.html

例如localhost:8082/druid.html

进入登录界面:
login

当我们参考上一小节的配置时,已经填写了用户名密码,就是这个用户名密码登录。

SQL监控页面
sql

慢SQL监控
进入监控页面后,我们可以自己写一个慢SQL触发监控,查看效果。例如,我们可以尝试写一个全表查询SELECT * FROM或复杂且慢的子查询:

  • 触发日志:
    2023-07-23 15:14:04.965 ERROR 29480 --- [  XNIO-1 task-1] c.alibaba.druid.filter.stat.StatFilter   : slow sql 93007 millis. SELECT id, user_id, dept_id_list, dept_name_all, real_name, longitude, latitude......
    
  • 监控界面截图:
    slow

通过以上,我们就已经可以通过 Druid 实现基本的开发/测试环境 慢SQL监控了。

可是,这样可能会产生一些衍生问题,例如,当我们定时任务较多,日志刷新较快的时候,开发者不一定能第一时间注意到慢SQL日志提醒,不一定会第一时间打开 druid 监控面板查看,此时,我们就需要用其他方式将慢SQL第一时间通知到开发者。下面章节,我们将自己写一个Filter ,将信息通知到开发者。

3. Druid 自定义Filter

首先,官方提供了自定义 Filter 实现慢SQL 监控,并 打印到日志的解决方案,详情请见:
官方wiki:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

官方提供了FilterChains ,但是为什么还是要自定义Filter呢,这是因为,当我使用官方的Filter时,发现可能会影响项目原有的配置。而我们在开头的时候就提到过,由于整体项目较为复杂,我们不能修改别的配置。因此我最终使用自定义Filter 加入到 FilterChians 的方式进行自定义的监听动作。

代码示例

  • Spring Filter:
/**
 * @author Sharry
 * @since 2023/7/20
 */
@Slf4j
public class DruidFilter implements Filter {

	/**
	 * default threshold is 2000 ms
	 */
	private final static long THRESHOLD_NANO = 2000L * 1000 * 1000;

	private final MailUtil mailUtil;

	public DruidFilter(MailUtil mailUtil) {
		this.mailUtil = mailUtil;
	}

	@Override
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
		// Filter逻辑处理方法
		long startTime = System.nanoTime();
		filterChain.doFilter(servletRequest, servletResponse);
		long endTime = System.nanoTime();
		long executeTime = endTime - startTime;
		if (executeTime >= THRESHOLD_NANO) {
			// 获取请求路径
			String url = servletRequest.getServerName() + ":" + servletRequest.getServerPort() + servletRequest.getServletContext().getContextPath() + servletRequest.getServletContext().getRealPath("/");

			log.warn("慢SQL或业务整体缓慢 警告: 执行时间{} ms, 详细信息请查阅Druid监控及日志", executeTime / 1000 / 1000);
			// 发送邮件
			mailUtil.sendSimpleMail("emailaddr@gmail.com", "慢SQL或业务整体缓慢 警告", "执行时间" + executeTime / 1000 / 1000 + " ms, 详细信息请查阅Druid监控及日志, 接口路径"+url);
		}

	}

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// Filter初始化方法
	}

	@Override
	public void destroy() {
		// Filter销毁方法
	}

}
  • yml 注册自定义 Filter
# 自定义 filter 配置
filter:
  druidFilter:
    enabled: true
  • 配置类
    注意配置类不要影响原本其他任何配置
/**
 * Druid filter config, add DruidFilter to filter chains
 * @author Sharry
 * @since 2023/7/20
 */
@Configuration
public class DruidFilterConfig {

	private final MailUtil mailUtil;

	@Autowired
	public DruidFilterConfig(MailUtil mailUtil) {
		this.mailUtil = mailUtil;
	}

	@Bean
	public DruidFilter druidFilter() {
		return new DruidFilter(mailUtil);
	}

	@Bean
	@ConditionalOnProperty(prefix = "filter.druidFilter", name = "enabled", havingValue = "true")
	public FilterRegistrationBean<Filter> druidFilterRegistration() {
		FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<>();
		registration.setFilter(druidFilter());
		registration.addUrlPatterns("/*");
		registration.setName("DruidFilter");
		// order of filter
		registration.setOrder(1);
		return registration;
	}
}

通过以上自定义Filter ,我们实现了 慢SQL或慢业务信息 第一时间用邮件发送到开发者。

4. 日志拆分

本次我做SQL监控及通知工作最后一步,便是日志拆分。
日志拆分主要解决的问题:将监听的慢SQL日志,单独用一个Durid日志文件存储,方便开发者查询。本小节结合我们项目实际使用的logback进行示例。

拆分很简单,就是将druid 的日志输出级别及配置信息 配置到 logback xml 配置文件中:

  <!-- 配置Druid监控日志输出到单独的文件 -->
    <appender name="DRUID" class="ch.qos.logback.core.FileAppender">
    <file>logs/druid/druid-monitor.log</file>
    <encoder>
        <pattern>%date [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

    <logger name="com.alibaba.druid" level="WARN">
        <appender-ref ref="DRUID" />
    </logger>

效果示例
log

log

5. 总结

本文通过一些代码示例,将我最近一次druid 实现SQL监听及通知的解决过程记录了一遍。

主要解决问题:

  1. Druid 概念的学习,Druid 基本配置
  2. 不影响原本Spring 配置的情况下,自定义Filter 实现 慢SQL 监听、邮件发送通知
  3. 日志拆分,方便开发者查看
如何使用Druid监控SQL语句的执行情况? 在解压后的 Druid 目录中,编辑配置文件(conf/druid/single-server/micro-quickstart 目录下)以适应你的需求。重要的配置文件包括: 阅读详情

相关推荐

Spring Boot 集成 druid,实现 SQL 监控

Druid提供了强大的监控和扩展功能,通过配置StateFilter可以监控和记录慢SQL。

甘蓝的专栏 1084

DataX-Web可视化数据同步平台实战指南

数据同步是ETL流程中的基础环节,传统基于JSON配置的方式存在使用门槛高的问题。DataX-Web作为开源可视化平台,通过封装DataX核心引擎,提供表单化配置界面,大幅降低数据同步的操作复杂度。该平台采用SpringBoot+Vue.js技术栈,支持MySQL、Oracle等20+数据源,集成任务调度和实时监控功能。在企业级数据治理场景中,DataX-Web能有效提升数据搬运效率,特别适合需要频繁进行跨数据库同步的场景。通过Quartz调度器和Druid连接池的深度优化,平台在稳定性与性能方面表现优异,

weixin_33701294的博客 397

基于SSM框架的汽车售后服务管理系统:从设计到部署的全链路实践

企业级Web应用开发通常围绕B/S架构展开,其核心在于通过浏览器与服务器的高效交互,实现业务流程的线上化与数据管理。SSM(Spring+SpringMVC+MyBatis)作为经典的Java Web开发框架组合,通过Spring的IOC容器管理组件依赖、AOP处理横切关注点,SpringMVC提供清晰的MVC分层与请求分发,而MyBatis则以其半自动化ORM特性,在对象关系映射与复杂SQL灵活控制之间取得平衡,尤其擅长处理多表关联查询与报表统计。这种技术栈的价值在于能够稳健地支撑包含复杂状态流转与数据一

weixin_34411563的博客 459

SpringBoot——开启Druid监控统计功能(SQL监控、慢SQL记录、Spring监控、去广告)

这个过滤器,作用就是统计 web 应用请求中所有的数据库信息,比如 发出的 sql 语句,sql 执行的时间、请求次数、请求的 url 地址、以及seesion 监控、数据库表的访问次数 等等。是当前DataSource配置的基本信息,上述配置的Filter可以在里面找到,如果没有配置Filter(一些信息会无法统计,例如“SQL监控”,会无法获取JDBC相关的SQL执行信息)Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。

qq_43842093的博客 1万+

企业级OA系统优化实战:从单体架构到前后端分离的性能蜕变

在企业级应用开发中,单体架构与前后端分离是两种常见的系统设计模式。单体架构将所有功能模块集中部署,初期开发效率高,但随着业务复杂度的提升,往往面临代码耦合深、维护困难、性能瓶颈等挑战。其核心原理在于将所有技术栈绑定,导致扩展性和团队协作效率受限。相比之下,前后端分离架构通过清晰的职责划分,将前端界面与后端业务逻辑解耦,通常采用RESTful API进行通信,这能显著提升开发并行度、系统可维护性和用户体验。从技术价值看,这种架构模式便于技术栈独立演进,支持更精细化的性能优化,并能更好地适应多端需求。其典型应用

weixin_33875839的博客 316

SSM医院随访系统ZIP包实战指南:基层医疗结构化沟通落地

结构化病情交流与随访管理是基层医疗信息化的核心能力,其本质是将微信、电话、纸本等非正式沟通沉淀为可追溯、带角色、有时序、能关联的结构化数据流。基于SSM框架(Spring+SpringMVC+MyBatis)构建的轻量级Java Web系统,凭借强兼容性、低运维依赖和本地化部署特性,成为医院信息科快速落地随访闭环的首选技术路径。它不追求微服务或前端炫技,而聚焦于真实环境下的可用性——如Windows Server+Tomcat 8.5一键部署、Oracle/SQL Server多库适配、JSP与老系统无缝集

weixin_33857679的博客 347

druid慢sql监控

根据logback.xml配置,会生产慢sql日志slow_sql.log。

幽静净土的技术分享 5865

R语言TCGA数据下载避坑指南:biolinks包实战中的5个常见错误与解决方案

本文详细介绍了使用R语言的TCGAbiolinks包下载TCGA数据时常见的5个错误及其解决方案,包括安装与加载问题、查询构建参数设置、下载中断处理、数据加载格式不匹配以及版本兼容性问题。通过实战案例和代码示例,帮助生物信息学研究者高效获取TCGA数据,避免常见陷阱。

weixin_30892037的博客 84

MyBatis-Plus SQL日志打印全指南:从基础配置到全链路追踪

在Spring Boot项目中,数据库操作的可见性是排查性能瓶颈与数据异常的关键,而SQL日志正是透视数据库行为的一扇窗口。了解MyBatis-Plus的底层日志机制,掌握日志级别、参数占位符还原等核心原理,能有效避免线上环境“看不见SQL”的困境。通过p6spy或自定义拦截器,可以将带?的预处理语句还原为可直接执行的完整SQL;引入traceId并集成ELK,则能实现从接口入口到数据库操作的完整链路追踪,让每一次请求的SQL调用有据可查。无论是本地开发调试、生产环境动态开关日志,还是慢SQL监控,合理的S

weixin_34037173的博客 261

解决fetch_california_housing数据集403错误的三种实用方法

本文针对机器学习初学者加载fetch_california_housing数据集时常见的HTTPError 403: Forbidden错误,提供了三种经过实测的解决方案。详细介绍了手动下载与本地替换、修改源码下载路径以及配置网络访问策略的具体步骤,帮助用户根据自身网络环境和开发场景选择最佳方法,确保数据集顺利加载。

weixin_29074295的博客 550

LTC3783 LED驱动控制器设计与效率优化详解

开关电源控制器是现代LED照明的核心器件,通过电流模式控制实现高效能量转换。其核心原理是通过采样电阻检测负载电流,配合误差放大器形成闭环调节,在汽车电子、显示背光等场景中确保±3%的电流精度。LTC3783作为典型代表,集成升压/降压-升压多拓扑支持,配合PWM调光技术可实现3000:1的无色偏调光范围。在工程实践中,需重点考量功率电感选型、MOSFET开关损耗与热管理设计,例如在38W功率方案中采用10μH/5A电感和4.5mΩ MOSFET可达成95%效率。该方案特别适用于需要应对9-36V宽输入电压波

weixin_36231030的博客 401

java框架整合Springmvc+···+maven

7. 用户设置功能:包括修改用户信息,修改密码、发送消息,修改个人图片,查看角色、查看用户组,管理员修改角色、用户、用户组等。用户组管理(添加、删除、修改、用户组栏目授权,栏目授权、查询、用户组人员添加查询等)

m0_72864708的博客 382

ROS2进程内通信:零拷贝Intra-Process原理与实战

Intra-Process通信是ROS2实现低延迟节点间数据交换的核心机制,其本质是通过C++17智能指针与零拷贝共享内存,在同一进程内绕过序列化、系统调用和上下文切换。相比传统DDS跨进程通信,它将`geometry_msgs::Twist`类消息延迟从42μs降至0.8μs,显著提升机器人实时控制性能。该技术并非自动启用,需满足同执行器、QoS严格匹配、内存所有权明确三大约束,适用于机械臂控制、视觉SLAM、图像处理流水线等对端到端延迟敏感的场景。本文聚焦ROS2原生Intra-Process通讯的原理

weixin_30619101的博客 364

游戏大厂DBA笔试题精讲:从SQL基本功到高可用架构

数据库管理工程师(DBA)是保障业务系统稳定运行的核心角色,其职责涵盖SQL优化、索引设计、事务与锁机制、高可用架构等多个层面。理解这些技术的底层原理,如执行计划分析、MVCC并发控制、主从复制与容灾切换,是提升数据库性能与数据可靠性的关键。在游戏行业,海量玩家并发、实时排行榜、日志分析等业务场景对数据库提出了更高要求,DBA需要具备生产环境的问题排查与运维调优能力。以搜狐畅游校招数据库笔试题为切入点,系统拆解游戏大厂对DBA核心能力模型的考察重点,帮助读者明确复习方向,掌握从理论到实战的必备技能。

dengjuanshou7445的博客 352

芯片封装、功率密度提升及热管理系统优化三个维度分析高功率芯片散热技术挑战

本文探讨高功率芯片散热技术挑战与创新。随着新能源汽车MOSFET用量增至400颗/车,文章聚焦封装技术创新(双面散热、集成模块)、功率密度提升(SGT-MOSFET优化)和热管理系统协同优化三大方向。通过热仿真案例(如CPO散热优化)展示温升改善方案,强调需协同器件级设计、系统级仿真与先进封装技术(混合键合/玻璃基板)来解决高密度互连与散热矛盾,为功率密度跃升提供技术支撑。

莱歌数字的博客 1474

手把手教您windows如何正确的开启局域网共享,如何解决“没权限、空密码访问等诸多问题”,含手动操作教程 + 傻瓜式一键设置工具(局域网共享+打印机管理),二选一总有一款能满足您!

😫 Windows共享总失败?别抓狂!这篇教程带你破解“空密码”访问的核心难题 🔑,四步搞定所有设置。文末还附赠“一键修复”神器 🚀,让文件共享丝滑如德芙!

XiaoqiangClub的博客 1454

Spring Boot企业级服务系统开发实战解析

企业级服务系统开发是当前数字化转型中的重要环节,其核心在于构建高可用、易维护的业务架构。Spring Boot作为主流的Java开发框架,通过自动配置和起步依赖等机制大幅提升了开发效率。在实际工程实践中,结合MyBatis Plus等持久层框架可以快速实现数据访问,而Druid连接池则确保了数据库操作的稳定性。这类技术组合特别适用于区域型服务门户开发,能有效解决服务网点分散、库存同步困难等典型业务痛点。以华为售后服务系统为例,通过三层架构设计、Redis缓存策略以及Elasticsearch分析模块的有机整

weixin_31423955的博客 73

Java调用YOLOv26全解析:从ONNX模型部署到工业质检实战

本文分享了工业自动化领域使用Java调用YOLOv26进行零件缺陷检测的完整方案。通过YOLOv26s模型结合ONNX Runtime Java部署,误检率和漏检率显著降低(分别从12%降至2.1%,8%降至0.8%)。文章详细介绍了方案选型理由、环境配置避坑指南、ONNX模型导出步骤,以及Maven依赖配置(分CPU/GPU版本)。该方案直接在上位机Java环境中运行,避免了跨语言调用损耗,适合工业质检场景部署,提供了可复用的性能优化和多线程推理实现。

2601_94871597的博客 1108

Java接口性能优化实战:15个技巧与完整落地指南

系统性能优化通常围绕响应时间与吞吐量两大核心指标展开,其原理在于先识别链路中的瓶颈环节,再针对性地进行调优。通过合理配置数据库连接池、引入多级缓存、优化慢SQL与索引、控制事务粒度以及利用CompletableFuture实现并行化,可以有效降低RT并提升QPS。这些手段广泛应用于高并发的Java服务场景,从基础设施到业务代码、再到并发架构层层递进。本文梳理了15个可直接落地的优化技巧,涵盖日志异步化、序列化选型、缓存命中率监控、压测回归与灰度验证等关键环节,为Java接口性能调优提供系统参考。

weixin_33270920的博客 224

【Bug已解决】NCCL timeout for validation 解决方案

训练用多卡 DDP / FSDP 正常,但一到或者进程直接 hang 在 eval 的某个集合通信上。最迷惑的是:训练阶段(有集合通信)完全正常,偏偏 eval 阶段(看起来更轻量)超时。因为 eval 阶段某些 rank 没参与 collective,导致参与的那部分 rank 永远等不到同伴。

一键难忘的博客 142

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

初识SAM-Audio Judge:Meta音频分离官方“质量裁判“,一文看懂4维评分的完整入门指南

SAM-Audio Judge 是 Meta 官方推出的音频分离质量评估模型,专为给 [SAM Audio](https://huggingface.co/facebook/sam-audio-judge) 的分离结果"打分"而生。它能将一段原始音频、一段分离后的音频和一句文字描述放在一起比较,输出整体质量、召回率、精确率、忠实度 4 个维度的连续评分,帮你快速判断"这次分离到底干得怎么样"。无论

gitblog_00005的博客 373

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【大型互联网企业架构分享】ssm+shiro+restful+websevice+jms+lucene+quertz+bootstrap

1. 使用阿里巴巴Druid连接池(高效、功能强大、可扩展性好的数据库连接池、监控数据库访问性能、支持Common-Logging、Log4j和JdkLog,监控数据库访问)  2. 提供高并发JMS消息处理机制  3. 所有功能模块化、所有模块服务化、所有服务原子化的方式,提供可拓展的服务模型,使程序稳定运行,永不宕机  4. 提供Wink Rest、Webservice服务,

sunfei927的博客 718

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

使用Apache NiFi和Apache Kafka进行实时库存处理

使用Apache NiFi和Apache Kafka实现从REST到Hive的流式使用案例 第1部分 使用Apache Kafka 2.0和Apache NiFi 1.8,有许多新功能和新功能即将推出。是时候对它们进行测试了。 因此,为了规划我们将要做的事情,我有一个高级架构图。我们将提取许多来源,包括REST提要,社交资源,消息,图像,文档和关系数据。 我们将使用NiFi进行摄取,然...

Tybyqi的博客 2086

【大型互联网企业架构分享】springmvc+mybatis+shiro+restful+webse

1. 使用阿里巴巴Druid连接池(高效、功能强大、可扩展性好的数据库连接池、监控数据库访问性能、支持Common-Logging、Log4j和JdkLog,监控数据库访问) 2. 提供高并发JMS消息处理机制 3. 所有功能模块化、所有模块服务化、所有服务原子化的方式,提供可拓展的服务模型,使程序稳定运行,永不宕机 4. 提供Wink Rest、Webservice服务,故可作为独

chuang123的博客 1231

SpringBoot+Vue构建文档管理系统:文件上传与权限控制实战

在信息化办公与知识管理场景中,企业文档的集中存储、快速检索与安全管控已成为刚需。针对传统文件散落、版本混乱、权限难控等痛点,基于SpringBoot与Vue等主流技术构建文档管理系统,可有效实现文档全生命周期管理。通过MySQL存储元数据、MyBatis实现灵活查询,结合JWT鉴权与RBAC权限模型,保障系统安全性与可追溯性。系统支持多级分类、文件预览、操作日志审计等功能,适用于高校、中小团队及内部知识库等场景。从工程实践出发,分享一套基于SpringBoot+Vue+MySQL+MyBatis的文档管理系

weixin_30402231的博客 309

职工信息管理系统实战:从微服务架构到权限设计全解析

企业信息化建设中,管理系统是核心支撑。其原理在于通过软件系统将线下业务流程数字化、标准化,实现数据统一管理与高效协同。技术价值体现在提升运营效率、保障数据安全与驱动智能决策。典型的应用场景包括人力资源、客户关系及供应链管理。本文以职工信息管理系统为例,深入探讨了如何运用微服务架构、RBAC权限模型与工作流引擎等关键技术,构建一个灵活、安全且可扩展的业务协同平台,并分享了数据库优化与安全加固的实战经验。

corg81763的博客 857
上一篇: 【Java】注解
下一篇: 【杂谈】刷刷 LeetCode SQL 入门查询
CoderSharry
博客等级 码龄4年 515粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值