当前位置: 首页 > news >正文

Spring Boot 下 Druid 连接池:多维度优化打造卓越性能

大家好,我是凯哥Java

本文标签:Spring Boot、Druid连接池、数据库连接池优化、性能监控

本文聚焦 Spring Boot 中 Druid 连接池的极致优化,从基础环境搭建、核心参数调优、监控体系构建、安全增强、连接泄漏检测等多方面展开,给出详细策略与高级技巧,还提供避坑指南,助力开发者实现连接池性能、安全与利用率的最佳平衡。

image.png

 

在当今的软件开发领域,数据库连接池的性能对于应用程序的稳定性和效率起着至关重要的作用。在 Spring Boot 项目里,Druid 连接池凭借其强大的功能和出色的性能,成为了众多开发者的首选。然而,要想让 Druid 连接池发挥出极致的性能,就需要从多个维度进行综合优化。接下来,我们就一起踏上这场 Druid 连接池的极致优化之旅。

一、基础环境搭建:稳固优化的基石

 

在开始优化之前,我们得先为 Druid 连接池搭建一个良好的基础环境。就像盖房子需要坚实的地基一样,选择合适的 Druid 版本是关键。建议使用最新稳定版的 Druid(1.2.38+),并在pom.xml文件中添加相应的依赖,同时排除旧版本依赖,这样能确保我们使用到 Druid 的最新特性和修复的问题。想象一下,在一个电商项目中,如果使用了旧版本的 Druid,可能会遇到一些已知的性能问题,而使用最新版本就能避免这些潜在的风险。

 

<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>druid-spring-boot-starter</artifactId>

    <version>1.2.38</version>

</dependency>

二、核心参数调优:定制专属性能

 

Druid 的核心参数就像是汽车的发动机参数,需要根据不同的业务场景进行精心调整。

连接池容量控制

image.png

初始连接数(initialSize):默认值为 0,但为了避免应用启动时大量创建连接带来的开销,我们可以将其设置为 CPU 核心数的一半。比如在一个小型的企业管理系统中,服务器是 4 核 CPU,那么将initialSize设置为 2 就能减少启动时的资源消耗。

最小空闲连接数(minIdle):这是保证业务低峰期仍有足够空闲连接的关键参数。推荐值为 CPU 核心数乘以 1.5,但不能超过数据库的最大连接限制。在一个在线教育平台中,业务流量有明显的高低峰之分,合理设置minIdle可以避免突发流量时频繁创建连接,提高系统的响应速度。

最大活跃连接数(maxActive):需要结合数据库性能和业务峰值 QPS 来调整。经验公式为maxActive = 数据库单连接 QPS * 1.2。在一个高并发的金融交易系统中,如果数据库单连接每秒能处理 100 次 SQL 请求,那么将maxActive设置为 120 能更好地应对业务高峰。

连接生命周期管理

 

获取连接的最大等待时间(maxWait):默认无限制,建议设置为 3000 毫秒,避免线程长时间阻塞。就像在银行排队办理业务,如果等待时间过长,客户就会不耐烦,在应用中也是如此,过长的等待时间会影响系统的性能。

连接池后台检测线程的执行间隔(timeBetweenEvictionRunsMillis):将其设置为 10000 毫秒,能缩短无效连接的回收周期,降低资源占用。在一个大数据分析平台中,每天会产生大量的临时连接,及时回收无效连接能节省宝贵的系统资源。

连接在池中最小空闲时间(minEvictableIdleTimeMillis):对于以短连接为主的业务,如 HTTP 请求,可以将其缩短至 60000 毫秒,避免长空闲连接占用资源。

三、监控体系搭建:洞察性能奥秘

 

Druid 内置了强大的监控功能,就像给汽车安装了一个智能仪表盘,能让我们实时了解连接池的运行状态。

开启 StatFilter(SQL 统计)

image.png

 

通过在application.yml中配置 StatFilter,我们可以统计 SQL 的执行次数、耗时和影响行数,轻松识别慢 SQL。在一个电商平台的订单系统中,通过监控慢 SQL,我们可以找出那些执行时间过长的查询,进行针对性的优化,提高系统的整体性能。

 

spring:

  datasource:

    druid:

      stat-filter:

        enabled: true

        slow-sql-millis: 2000 

        merge-sql: true 

        log-slow-sql: true 

配置 Web 监控页面

 

配置 Web 监控页面后,我们可以实时查看连接池的状态、SQL 执行统计和 URI 调用统计等信息。在一个企业的内部管理系统中,运维人员可以通过这个页面快速定位问题,及时进行处理。

日志集成

 

可以选择 ELK 或 Prometheus + Grafana 进行日志集成,将监控数据进行可视化展示。在一个大型的分布式系统中,通过 Grafana 仪表盘,我们可以直观地看到连接池的利用率、慢 SQL 的分布等信息,为优化提供有力的数据支持。

四、安全增强配置:守护数据安全

 

在数字化时代,数据安全至关重要。Druid 提供了多层安全防护,帮助我们守护数据库的安全。

防止 SQL 注入(WallFilter)

 

通过配置 WallFilter,我们可以拦截危险 SQL,如DROP TABLE、无WHERE条件的批量删除等。在一个社交平台中,如果没有防止 SQL 注入的措施,黑客可能会利用 SQL 注入漏洞获取用户的敏感信息,而 WallFilter 就能有效地防止这种情况的发生。

 

spring:

  datasource:

    druid:

      filters: wall,stat,slf4j 

      wall:

        enabled: true

        delete-allow: false 

        update-allow: false 

        procedure-allow: false 

        config:

          select-allow: true 

密码加密

 

Druid 支持使用 AES 或 SHA - 256 对数据库密码进行加密,避免明文存储带来的安全风险。在一个金融机构的系统中,数据库密码的安全至关重要,加密存储密码能有效防止密码泄露。

防御 CC 攻击(连接频率限制)

 

通过限制单个 IP 的 SQL 执行频率,我们可以防御 CC 攻击。在一个在线游戏平台中,如果遭受 CC 攻击,会导致服务器性能下降,影响玩家的游戏体验,而连接频率限制就能有效地抵御这种攻击。

五、连接泄漏检测:及时发现隐患

 

在应用运行过程中,连接泄漏是一个常见的问题,如果不及时处理,会导致连接池耗尽。Druid 提供了连接泄漏检测功能,当连接被借用超过一定时间未归还时,会强制回收并记录日志,方便我们定位泄漏代码。在一个大型的企业级应用中,连接泄漏可能会导致系统崩溃,而连接泄漏检测功能就像一个 “安全卫士”,及时发现并解决问题。

 

spring:

  datasource:

    druid:

      remove-abandoned: true 

      remove-abandoned-timeout: 300 

      log-abandoned: true 

六、高级优化技巧:挖掘潜在性能

 

除了上述的优化措施,我们还可以采用一些高级优化技巧。

动态调整连接池参数

 

在运行时,我们可以通过 Druid 的DruidDataSource实例动态调整连接池参数。在一个电商平台的促销活动期间,我们可以临时增加最大连接数,以应对高峰流量。

连接预热

 

在应用启动时预创建部分连接,能避免首次请求时因连接创建延迟导致超时。在一个移动应用的后端服务中,连接预热可以提高应用的启动速度,给用户带来更好的体验。

事务连接隔离级别优化

 

根据业务需求设置事务隔离级别,能提高数据库的并发性能。在一个多用户的协作办公系统中,合理设置事务隔离级别可以避免数据冲突,提高系统的稳定性。

七、避坑指南:避免优化陷阱

 

在优化过程中,我们还需要注意一些陷阱。比如,maxActive不要盲目设置为数据库max_connections的上限,要留一定的余量;所有参数的调整都要基于监控数据,避免主观臆断;在生产环境中要禁用调试功能,避免产生大量日志;同时要确保 Druid 版本与 Spring Boot、数据库驱动兼容。

总结

 

通过从基础环境准备、核心参数调优、监控体系搭建、安全增强、连接管理及性能适配等多个维度对 Druid 连接池进行优化,我们可以在连接利用率、性能稳定性和安全性之间找到最佳平衡,让 Spring Boot 项目中的 Druid 连接池发挥出极致的性能。

 

 

Spring Boot 中 Druid 连接池如何进行极致性能优化

Druid 连接池在 Spring Boot 项目里的安全增强配置方法

Spring Boot 结合 Druid 连接池实现连接泄漏检测的技巧

利用 Druid 连接池提升 Spring Boot 应用性能的实战策略

Spring Boot 下 Druid 连接池核心参数调优的最佳实践

作者:凯哥Java

类型:转载

日期:2025年09月16日

标签:Spring Boot、Druid 连接池、数据库连接池优化、性能监控、数据安全、连接泄漏检测、高级优化技巧

 

相关文章:

Spring Boot 下 Druid 连接池:多维度优化打造卓越性能

大家好,我是凯哥Java 本文标签:Spring Boot、Druid连接池、数据库连接池优化、性能监控 本文聚焦 Spring Boot 中 Druid 连接池的极致优化,从基础环境搭建、核心参数调优、监控体系构建、安全增强、连接泄漏检测等多方面展开,给出详细策略与高级技巧,还提供避坑指南,助力…...

讨好型人格自救指南:重建健康自我与关系

讨好型人格自救指南:重建健康自我与关系<script src="https://cdn.tailwindcss.com"></script><script>tailwind.config = {theme: {extend: {colors: {primary: #B8860B,secondary: #DAA520,accent: #F4E4BC,neutral: #2C2C2C,base-100: #FEFDFB…...

vue3使用vue3-pdf-app预览pdf文档

引入第三方组件库npm i vue3-pdf-app@1.0.3vue3 创建组件<template><VuePdfApp :style="`width: ${viewerWidth}; height: ${viewerHeight};`":pdf="src" @pages-rendered="pagesRendered" :config="config"></VuePdf…...

使用lvgl/lv_port_pc_visual_studio在PC上运行LVGL模拟器

本文使用lvgl/lv_port_pc_visual_studio项目,在PC上成功运行了LVGL模拟器,包含详细的步骤。前言 我看的韦东山的LVGL教程,第一章都是在PC上跑模拟器。 在LVGL的文档中,官方推荐了数个IDE。我首先尝试了VS Code,研究了半天都编译不过。又尝试了教程中提供的CodeBlocks的方法…...

深入解析:Spring Boot 深入剖析:SpringApplicationRunListener

深入解析:Spring Boot 深入剖析:SpringApplicationRunListenerpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New&qu…...

Hutool 调用第三方接口报错

报错信息 java.lang.reflect.InaccessibleObjectException: Unable to make field protected java.lang.String java.net.HttpURLConnection.method accessible: module java.base does not "opens java.net" to unnamed module @28c4711cat java.base/java.lang.ref…...

丑东西经济学:全面分析

```html丑东西经济学:全面分析<script src="https://cdn.tailwindcss.com"></script>:root { --primary: #8B5A3C; --secondary: #D4A574; --accent: #2E1F15; --neutral: #F5F1EC; --base-100: #FEFCF8; --base-content: #1A1A1A } body { font-family…...

Python turtle 海龟画图入门指南

Python海龟画图入门指南 Python海龟画图(Turtle Graphics)是一个非常适合编程初学者的图形绘制库,它基于Logo编程语言的概念,通过控制一个"海龟"在屏幕上移动来绘制图形。 海龟画图基础知识 1. 基本概念海龟(Turtle):一个可以在画布上移动的箭头(默认形状为箭头,…...

uni-app中v-if使用”异常”

在vue中如果想实现通过某些条件渲染不同内容,其中使用比较多的就是v-if,它会根据你传入的东西是否为真值来决定要不要显示当前内容块,但是最近在uni-app中使用的时候发现了一点小问题,一起看看是什么问题吧。前情 最近又接手一个全新多端项目,包括抖音/快手/微信/支付宝/安…...

二叉树遍历

1.广度优先遍历 2.深度优先遍历 1.前序遍历 根结点--左子树--右子树 void pre(int p){printf("%d\n",p);if(tree[p].l)pre(tree[p].l);if(tree[p].r)pre(tree[p].r); }2.中序遍历 左子树--根结点--右子树 void in(int p){if(tree[p].l)in(tree[p].l);printf("%d…...

Python Socket网络编程(3)

class类里面先执行__new__,然后__init__ 单例模式线程安全单例模式点击查看代码 import threadingclass Singleton:instance = Nonelock = threading.Rlock()def __new__(cls, *args, **kwargs):if cls.instance:return cls.instancewith cls.lock:if cls.instance:return cls…...

实用指南:有关gitlab14.x版本在内网环境下无法添加webhooks的解决方法

实用指南:有关gitlab14.x版本在内网环境下无法添加webhooks的解决方法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier …...

如何创建可引导的 macOS Tahoe 安装介质

如何创建可引导的 macOS Tahoe 安装介质如何创建可引导的 macOS 安装介质 如何创建可引导的 macOS 安装器 | 如何制作 macOS USB 启动盘 请访问原文链接:https://sysin.org/blog/macos-createinstallmedia/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.orgmacOS …...

强类型、类型安全

说 C++ 是类型安全的强类型语言,这句话其实不完全准确。更精确的说法是,C++ 是一门静态类型、强类型但并非完全类型安全的语言。 我们先来理解一下你提到的两个概念,以及它们在C++中的具体体现。 强类型(Strongly-typed) 强类型主要指的是,在语言中,不同类型的数据之间操…...

完整教程:数据结构——逻辑结构物理结构

完整教程:数据结构——逻辑结构&物理结构pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !i…...

前端面试

题目 JS和TS区别类型JS:动态类型,变量类型在运行时确定,无需显示声明类型。 TS:静态类型,支持类型注解和编译时类型检查,可提前发现错误。编译与运行JS:直接由浏览器或者node.js,无需编译 TS:需要通过编译器(tsc)转换为JS代码后才能运行。语法扩展JS:仅支持基础的ECMAScrip…...

外置Tomcat启动Springboot项目后,请求参数中文乱码的问题解决 - yjry

首先按照常规的排查流程逐个进行配置,都是无效果的: 1、检查了tomcat的conf/server.xml里Connector标签有无配置URIEncoding="UTF-8",添加了配置,无效; 2、tomcat/bin/catalina.bat,添加了JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"配置,无效;…...

JSON字符串转换List对象列表 JSONArray toJavaList

JSON字符串转换List对象列表 JSONArray toJavaListJSON字符串转换List对象列表 JSONArray toJavaListpackage com.example.core.mydemo.java3.jsonDemo;import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.example.core.mydemo.json2…...

gradle项目多模块中主模块加载子模块中的sqlmapper文件方法

gradle项目多模块中主模块加载子模块中的sqlmapper文件方法gradle项目多模块中主模块加载子模块中的sqlmapper文件方法 1.子模块 build.gradlesourceSets.main.resources { srcDirs = ["src/main/resources", "src/main/java"] // 包含Java目录下的XML…...

MCP - 使用 fastmcp 编写 Client 调用 MCP Serverr - Streamable HTTP (四)

xx源代码: mcp_server_tool_registry.zip...

全面理解MySQL架构

一条SQL查询执行的流程客户端 连接工具(Navacat,SQLyog,JDBC)都是客户端,主要用于发送执行SQL语句的请求 服务端 服务端可以分为server层和存储引擎层 server层 负责处理SQL语句, 解析, 优化, 缓存等. 负责权限管理, 用户认证等 提供了复制, 备份, 恢复等高级功能 Server层…...

Figma EX 125.7.5 UI原型设计

** 描述** Figma是一款专业的UI原型设计软件,Figma能够帮助团队创建、测试和发布更好的设计,Figma支持Windows和macOS 等多个平台,软件注意自适应屏幕大小、历史记录、导入Sketch文件等功能。它是一个真正为设计师而开发的设计软件,软件可以让网络设计变得简单。它能够创建…...

啥是CPU

啥是CPU?CPU即为中央处理器,一般决定CPU性能的参数有:频率,核心,线程,指令集频率决定了在相同架构下单CPU核心的运行速度,#核心数量一般决定了CPU处理多任务的能力,现在的绝大部分CPU都是多个核心组合成的线程则决定了核心和内存交换数据的速度某些CPU可能为了降低功耗…...

C# Avalonia 15- Animation- CodeAnimation

C# Avalonia 15- Animation- CodeAnimation例子展现了两种设置动画的方法,各位自行选择。CodeAnimation.axaml代码<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schema…...

vue3 使用 docx-preview 预览 Word文档

引入第三方库npm i docx-previewvue3创建组件<template><div><!-- 用于渲染文档的容器 --><div ref="previewContainer" class="preview-wrapper"></div></div> </template><script setup>import {define…...

数据库原理-第三章——SQL

Structured Query Language数据查询 Select数据操纵 Insert、Delete、Update数据定义 Create、Drop、Alter数据控制 Grant、Revoke事务处理 begin transaction、commit、rollback指针、游标控制(CCL) DECLARE CURSOR、FETCH INTO、UPDATE、WHERE CURRENT数据库的数据类型数值…...

ubuntu 18.04安装mysql 8.0.41

环境Os:ubuntu 18.04 desktop桌面版mysql:mysql:8.0.41 glibc2.17 查看操作系统信息root@db:~# ldd --version ldd (Ubuntu GLIBC 2.27-3ubuntu1) 2.27 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. Th…...

Topaz Photo AI Pro 4.0.4 AI图片智能降噪(win版)

描述 Topaz Photo AI是一款专业的人工智能图片降噪软件,得益于Topaz公司AI算法,这款照片修复软件可以在修复照片的同时运用人工智能算法AI模型计算图片模糊部分,自动修复图片受损的细节,以增强图片画质。利用未来的技术锐化、消除噪点并提高照片的分辨率。Topaz Photo AI 可…...

阿里云基础设施 AI Tech Day AI 原生,智构未来——AI 原生架构与企业实践专场

本次技术沙龙聚焦企业 AI 应用规模化实战痛点分享 Serverless、AI 网关、可观测、AI 消息队列产品解决方案和企业真实实践,与企业共同探讨如何通过向更先进的架构演进来适应 AI 时代的快速变化,为迎接新的增长机会做好准备。活动简介云为 AI 提供了坚实的基础设施支撑。聚焦阿…...

实用指南:LINUX910 CENTOS8 新建虚拟机;重设root密码/时间同步

实用指南:LINUX910 CENTOS8 新建虚拟机;重设root密码/时间同步pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New&qu…...

零基础学习PYthon记录

变量会变化的 , 描述事物的状态 变量接收某个值定义变量 变量名 赋值符号 变量值 name = "david" print(name)不能使用关键字定义变量 定义的变量要有某种意义(看到变量名就要知道是干什么用的) 用下划线区分两个单词david_height = 180 print(david_height)常量固定…...

C++ std::unordered_set

std::unordered_set 是 C++ STL 中的无序关联容器,其核心特性是存储唯一元素且不保证元素顺序,底层基于哈希表实现,因此插入、查找、删除操作的平均时间复杂度为 O(1)。与 std::set(红黑树实现)相比,它更适合对查找速度有高要求且无需元素有序的场景。 1、底层数据结构与…...

如何将一个项目同时提交到GitHub和Gitee(码云)上

要将本地的一个项目同时提交到 GitHub 和 Gitee,可以通过配置多个远程仓库来实现,以下是具体步骤: 前提条件 确保你已经在 GitHub 和 Gitee 上分别创建了空的远程仓库,并且本地已经安装配置好了 Git,能够正常使用 Git 命令行进行操作。 操作步骤初始化本地仓库(如果还未初…...

基于Matlab的LeNet-5车牌字符识别系统实现

一、网络结构改进方案输入层调整输入尺寸:将LeNet-5原始输入尺寸(3232)调整为车牌字符标准尺寸(2828或4848) 通道扩展:增加颜色通道(RGB→灰度需归一化,或保留RGB通道)卷积层优化 layers = [imageInputLayer([28 28 1]) % 输入层convolution2dLayer(5, 6, Padding, sa…...

MATLAB的交通标志牌识别实现

MATLAB的交通标志牌识别实现,使用了颜色分割、形态学处理、模板匹配等核心技术一、核心识别流程设计图像预处理 灰度化与去噪 色彩空间转换(RGB→HSV/Lab) 颜色阈值分割(红色/蓝色/黄色区域提取) 几何特征提取 边缘检测(Canny算子) 形态学操作(腐蚀+膨胀) 轮廓分析(筛…...

Python常见的数据结构和代码示例

概述 Python 中常见的数据结构可以分为内置数据结构和扩展数据结构(主要来自第三方库)两类,以下是详细介绍: 一、内置数据结构(Python 自带) 这些是 Python 解释器原生支持的数据结构,无需额外导入模块。 1. 列表(List)特点:有序、可变(可修改)、允许重复元素,可存…...

Grafana 中文入门教程 | 构建你的第一个仪表盘

在大厂工作久了,时常对一些工具的存在觉得理所当然。 比如说,需要计算资源的时候,一个配置文件就可以要来两百台虚拟化好的机子。需要试下缓存?点下鼠标就可以要到几十个配置好的 Redis 结点。 最省心的是,这些工具都已经根据工作流配置好了:鉴权、优化、网络连接等等通通…...

Gitee DevOps:中国开发者效率革命的数字引擎

Gitee DevOps:中国开发者效率革命的数字引擎 在数字化转型浪潮席卷全球的当下,中国软件产业正面临前所未有的效率挑战。传统开发模式中的人工干预、碎片化工具链和低效协作已成为制约企业创新速度的关键瓶颈。Gitee DevOps作为本土领先的一站式开发运维平台,通过全流程自动化…...

Topaz Photo AI Pro 4.0.4 AI图片智能降噪

描述 Topaz Photo AI是一款专业的人工智能图片降噪软件,得益于Topaz公司AI算法,这款照片修复软件可以在修复照片的同时运用人工智能算法AI模型计算图片模糊部分,自动修复图片受损的细节,以增强图片画质。利用未来的技术锐化、消除噪点并提高照片的分辨率。Topaz Photo AI 可…...

C++ std::map

std::map 是 C++ STL 中最常用的有序键值对容器,其核心功能是存储唯一键(key)与对应值(value)的映射关系,并自动按键的顺序排序。底层基于红黑树(自平衡二叉搜索树)实现,这使得它在键的查找、插入、删除等操作上保持稳定的高效性。 1、底层数据结构与核心特性 1.1 底层…...

易基因:Nat Genet/IF29:董朝斌团队ChIP-seq等揭示作物株型穗型发育调控新机制 助力表观遗传育种驯化改良(顶刊佳作)

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 近日,中国农业大学玉米生物育种全国重点实验室董朝斌教授为第一及共同通讯作者,美国加州大学伯克利分校George Chuck研究员为共同通讯作者,在国际遗传学Top期刊《Nature Genetics》发表了题为“A regulator…...

Edge浏览器网页长截图

长截图步骤1.在Edge浏览器中打开目标网页(需确保网页完全加载后再截图,否则可能截取不完整)‌‌2.按下‌Ctrl+Shift+S‌组合键3.选择截屏模式‌为捕获整页‌(自动滚动并截取整个网页,生成一张长图)‌‌4.截图后可直接复制或保存为图片文件...

Python TensorFlow的CNN-LSTM-GRU集成模型在边缘物联网数据IoT电动汽车充电站入侵检测应用

全文链接:https://tecdat.cn/?p=43881原文出处:拓端抖音号@拓端tecdat随着物联网(IoT)技术在电动汽车充电站(EVCS)中的普及,充电站不仅成为智能交通的关键节点,更因连接电网、用户设备与管理系统,成为网络攻击的重点目标。传统入侵检测系统(IDS)要么难以处理IoT环境…...

C++多线程编程—线程控制、同步与互斥详解

本文将深入探讨C++多线程编程中的核心概念:线程控制、同步与互斥。 1.线程控制:join 与 detach当我们创建一个线程(std::thread)后,我们必须明确在这个线程对象销毁之前,如何管理它所代表的执行线程。这就是 join 和 detach 的用武之地。join()作用:阻塞当前线程(通常是…...

MySQL启动失败:mysqld.log Permis 报错处理.250916

报错:Could not open file /var/log/mysqld.log for error logging: Permis 解决办法: sudo setenforce 0 systemctl restart mysqld systemctl status mysqld如果好了,就更改selinux策略: sudo semanage fcontext -a -t mysqld_db_t "/home/mysql/data(/.*)?" …...

源码管理—密钥硬编码问题

源码管理—密钥硬编码问题目录密钥硬编码的定义: 指在代码、配置里硬编码密码/明文密码在配置文件中,但是不论是通过 AES 加密过的密码,还是将明文密码存储在远程配置文件中,都属于硬编码密钥。 常见的密钥硬编码场景:密钥放在环境变量 密钥加密存储在代码里 密钥放在服务…...

无速度传感器交流电机的扩展Luenberger观测器

扩展Luenberger观测器是一种用于无速度传感器交流电机控制的重要技术,它能够估计电机的内部状态(如转子磁链)和转速。 理论背景 对于感应电机,在静止α-β坐标系下的模型可以表示为: 状态方程: dx/dt = A(ω)x + Bu y = Cx其中: x = [isα, isβ, ψrα, ψrβ]^T u = […...

AI Ping体验记:终于有人做大模型服务的“性能监控”了

引言 最近几个月,我们公司在开发AI应用平台并集成到现有系统中。作为项目的技术选型负责人,我被MaaS平台API的选择问题折磨得不轻。面对市面上众多的大模型服务商,如何选出最适合我们的那一个,真的是个大难题。 市面上的MaaS平台越来越多,光是国内的就有20多家,这还是我知…...

数据库原理-第二章——关系型数据库

pass...

mac 的任务栏 Windows-Style Taskbar For macOS

https://lawand.io/taskbar/...