【机器学习】机器学习与图像分类的融合应用与性能优化新探索

文章目录

    • 引言
    • 第一章:机器学习在图像分类中的应用
      • 1.1 数据预处理
        • 1.1.1 数据清洗
        • 1.1.2 数据归一化
        • 1.1.3 数据增强
      • 1.2 模型选择
        • 1.2.1 卷积神经网络
        • 1.2.2 迁移学习
        • 1.2.3 混合模型
      • 1.3 模型训练
        • 1.3.1 梯度下降
        • 1.3.2 随机梯度下降
        • 1.3.3 Adam优化器
      • 1.4 模型评估与性能优化
        • 1.4.1 模型评估指标
        • 1.4.2 超参数调优
        • 1.4.3 增加数据量
        • 1.4.4 模型集成
    • 第二章:图像分类的具体案例分析
      • 2.1 手写数字识别
        • 2.1.1 数据预处理
        • 2.1.2 模型选择与训练
        • 2.1.3 模型评估与优化
      • 2.2 图像分类
        • 2.2.1 数据预处理
        • 2.2.2 模型选择与训练
        • 2.2.3 模型评估与优化
    • 第三章:性能优化与前沿研究
      • 3.1 性能优化
        • 3.1.1 特征工程
        • 3.1
        • 3.1.3 模型集成
      • 3.2 前沿研究
        • 3.2.1 深度学习在图像分类中的应用
        • 3.2.2 强化学习在图像分类中的应用
        • 3.2.3 联邦学习与隐私保护
    • 结语

引言

图像分类是计算机视觉领域的一项基本任务,通过分析和理解图像中的内容,自动将图像归类到预定义的类别中。随着深度学习技术的发展,机器学习在图像分类中的应用取得了显著的进展,推动了自动驾驶、医疗影像分析、智能监控等领域的发展。本文将详细介绍机器学习在图像分类中的应用,包括数据预处理、模型选择、模型训练和性能优化。通过具体的案例分析,展示机器学习技术在图像分类中的实际应用,并提供相应的代码示例。
在这里插入图片描述

第一章:机器学习在图像分类中的应用

1.1 数据预处理

在图像分类应用中,数据预处理是机器学习模型成功的关键步骤。图像数据通常具有高维度和复杂性,需要进行清洗、归一化和数据增强等处理。

1.1.1 数据清洗

数据清洗包括去除噪声、裁剪图像和调整图像大小等操作。

import cv2
import numpy as np# 加载图像
image = cv2.imread('image.jpg')# 转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 去除噪声
denoised_image = cv2.GaussianBlur(gray_image, (5, 5), 0)# 裁剪图像
cropped_image = denoised_image[50:200, 50:200]# 调整图像大小
resized_image = cv2.resize(cropped_image, (128, 128))
1.1.2 数据归一化

数据归一化可以消除不同图像之间的亮度和对比度差异,使模型更容易学习。

# 归一化图像
normalized_image = resized_image / 255.0
1.1.3 数据增强

数据增强通过对训练图像进行随机变换,如旋转、平移、翻转等,增加数据的多样性,提高模型的泛化能力。

from keras.preprocessing.image import ImageDataGenerator# 创建数据增强生成器
datagen = ImageDataGenerator(rotation_range=20,width_shift_range=0.2,height_shift_range=0.2,horizontal_flip=True
)# 生成增强图像
augmented_images = datagen.flow(np.expand_dims(normalized_image, axis=0), batch_size=1)

1.2 模型选择

在图像分类中,常用的机器学习模型包括卷积神经网络(CNN)、迁移学习模型和混合模型等。不同模型适用于不同的任务和数据特征,需要根据具体应用场景进行选择。

1.2.1 卷积神经网络

卷积神经网络(CNN)是图像分类领域的基础模型,通过卷积层、池化层和全连接层的组合,提取图像的特征,实现图像分类。

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense# 构建卷积神经网络模型
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(128, 128, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
1.2.2 迁移学习

迁移学习通过使用预训练模型,如VGG、ResNet等,在已有的模型基础上进行微调,适用于数据量较小或训练时间有限的场景。

from keras.applications import VGG16
from keras.models import Model
from keras.layers import GlobalAveragePooling2D# 加载预训练模型
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(128, 128, 3))# 冻结预训练模型的层
for layer in base_model.layers:layer.trainable = False# 添加自定义分类层
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(128, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)# 构建迁移学习模型
model = Model(inputs=base_model.input, outputs=predictions)# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
1.2.3 混合模型

混合模型结合多个模型的优点,通过集成学习的方法提高模型的稳定性和预测精度。

from keras.models import Model
from keras.layers import concatenate# 构建两个子模型
model1 = Sequential()
model1.add(Conv2D(32, (3, 3), activation='relu', input_shape=(128, 128, 1)))
model1.add(MaxPooling2D((2, 2)))
model1.add(Flatten())model2 = Sequential()
model2.add(Conv2D(64, (3, 3), activation='relu', input_shape=(128, 128, 1)))
model2.add(MaxPooling2D((2, 2)))
model2.add(Flatten())# 合并子模型
combined = concatenate([model1.output, model2.output])
x = Dense(128, activation='relu')(combined)
output = Dense(10, activation='softmax')(x)# 构建混合模型
model = Model(inputs=[model1.input, model2.input], outputs=output)# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

1.3 模型训练

模型训练是机器学习的核心步骤,通过优化算法最小化损失函数,调整模型参数,使模型在训练数据上表现良好。常见的优化算法包括梯度下降、随机梯度下降和Adam优化器等。

1.3.1 梯度下降

梯度下降通过计算损失函数对模型参数的导数,逐步调整参数,使损失函数最小化。

import numpy as np# 定义损失函数
def loss_function(y_true, y_pred):return np.mean((y_true - y_pred) ** 2)# 梯度下降优化
def gradient_descent(X, y, learning_rate=0.01, epochs=1000):m, n = X.shapetheta = np.zeros(n)for epoch in range(epochs):gradient = (1/m) * X.T.dot(X.dot(theta) - y)theta -= learning_rate * gradientreturn theta# 训练模型
theta = gradient_descent(X_train, y_train)
1.3.2 随机梯度下降

随机梯度下降在每次迭代中使用一个样本进行参数更新,具有较快的收敛速度和更好的泛化能力。

def stochastic_gradient_descent(X, y, learning_rate=0.01, epochs=1000):m, n = X.shapetheta = np.zeros(n)for epoch in range(epochs):for i in range(m):gradient = X[i].dot(theta) - y[i]theta -= learning_rate * gradient * X[i]return theta# 训练模型
theta = stochastic_gradient_descent(X_train, y_train)
1.3.3 Adam优化器

Adam优化器结合了动量和自适应学习率的优点,能够快速有效地优化模型参数。

from keras.optimizers import Adam# 编译模型
model.compile(optimizer=Adam(learning_rate=0.001), loss='categorical_crossentropy', metrics=['accuracy'])# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.2)

1.4 模型评估与性能优化

模型评估是衡量模型在测试数据上的表现,通过计算模型的准确率、召回率、F1-score等指标,评估模型的性能。性能优化包括调整超参数、增加数据量和模型集成等方法。

1.4.1 模型评估指标

常见的模型评估指标包括准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1-score等。

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score# 计算评估指标
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='weighted')
recall = recall_score(y_test, y_pred, average='weighted')
f1 = f1_score(y_test, y_pred, average='weighted')print(f'Accuracy: {accuracy}')
print(f'Precision: {precision}')
print(f'Recall: {recall}')
print(f'F1-score: {f1}')
1.4.2 超参数调优

通过网格搜索(Grid Search)和随机搜索(Random Search)等方法,对模型的超参数进行调优,找到最优的参数组合。

from sklearn.model_selection import GridSearchCV# 定义超参数网格
param_grid = {'batch_size': [16, 32, 64],'epochs': [10, 20, 30]
}# 网格搜索
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)# 输出最优参数
best_params = grid_search.best_params_
print(f'Best parameters: {best_params}')# 使用最优参数训练模型
model = model.set_params(**best_params)
model.fit(X_train, y_train, epochs=10, validation_data=(X_test, y_test))
1.4.3 增加数据量

通过数据增强和采样技术,增加训练数据量,提高模型的泛化能力和预测性能。

from imblearn.over_sampling import SMOTE# 数据增强
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train, y_train)# 训练模型
model.fit(X_resampled, y_resampled, epochs=10, validation_data=(X_test, y_test))
1.4.4 模型集成

通过模型集成的方法,将多个模型的预测结果进行组合,提高模型的稳定性和预测精度。常见的模型集成方法包括Bagging、Boosting和Stacking等。

from sklearn.ensemble import VotingClassifier# 构建模型集成
ensemble_model = VotingClassifier(estimators=[('cnn', model1),('vgg', model2)
], voting='soft')# 训练集成模型
ensemble_model.fit(X_train, y_train)# 预测与评估
y_pred = ensemble_model.predict(X_test)

在这里插入图片描述

第二章:图像分类的具体案例分析

2.1 手写数字识别

手写数字识别是图像分类中的经典问题,通过分析手写数字图像,识别每个数字的类别。以下是手写数字识别的具体案例分析。

2.1.1 数据预处理

首先,对手写数字数据集进行预处理,包括数据清洗、归一化和数据增强。

from keras.datasets import mnist
from keras.utils import to_categorical# 加载手写数字数据集
(X_train, y_train), (X_test, y_test) = mnist.load_data()# 数据清洗
X_train = X_train / 255.0
X_test = X_test / 255.0# 扩展维度
X_train = np.expand_dims(X_train, axis=-1)
X_test = np.expand_dims(X_test, axis=-1)# 标签编码
y_train = to_categorical(y_train, num_classes=10)
y_test = to_categorical(y_test, num_classes=10)# 数据增强
datagen = ImageDataGenerator(rotation_range=10,width_shift_range=0.1,height_shift_range=0.1,horizontal_flip=False
)
datagen.fit(X_train)
2.1.2 模型选择与训练

选择合适的模型进行训练,这里以卷积神经网络为例。

# 构建卷积神经网络模型
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])# 训练模型
model.fit(datagen.flow(X_train, y_train, batch_size=32), epochs=10, validation_data=(X_test, y_test))
2.1.3 模型评估与优化

评估模型的性能,并进行超参数调优和数据增强。

# 评估模型
loss, accuracy = model.evaluate(X_test, y_test)
print(f'Accuracy: {accuracy}')# 超参数调优
param_grid = {'batch_size': [16, 32, 64],'epochs': [10, 20, 30]
}
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)
best_params = grid_search.best_params_
print(f'Best parameters: {best_params}')# 使用最优参数训练模型
model = model.set_params(**best_params)
model.fit(datagen.flow(X_train, y_train, batch_size=32), epochs=10, validation_data=(X_test, y_test))# 数据增强
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train.reshape(X_train.shape[0], -1), y_train)
model.fit(X_resampled.reshape(-1, 28, 28, 1), y_resampled)# 预测与评估
y_pred = model.predict(X_test)

2.2 图像分类

图像分类是通过分析图像的内容,将图像分配到预定义的类别中。以下是图像分类的具体案例分析。

2.2.1 数据预处理
from keras.datasets import cifar10
from keras.utils import to_categorical# 加载图像分类数据集
(X_train, y_train), (X_test, y_test) = cifar10.load_data()# 数据清洗
X_train = X_train / 255.0
X_test = X_test / 255.0# 标签编码
y_train = to_categorical(y_train, num_classes=10)
y_test = to_categorical(y_test, num_classes=10)# 数据增强
datagen = ImageDataGenerator(rotation_range=20,width_shift_range=0.2,height_shift_range=0.2,horizontal_flip=True
)
datagen.fit(X_train)
2.2.2 模型选择与训练

选择合适的模型进行训练,这里以迁移学习为例。

# 加载预训练模型
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(32, 32, 3))# 冻结预训练模型的层
for layer in base_model.layers:layer.trainable = False# 添加自定义分类层
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(128, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)# 构建迁移学习模型
model = Model(inputs=base_model.input, outputs=predictions)# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])# 训练模型
model.fit(datagen.flow(X_train, y_train, batch_size=32), epochs=10, validation_data=(X_test, y_test))
2.2.3 模型评估与优化

评估模型的性能,并进行超参数调优和数据增强。

# 评估模型
loss, accuracy = model.evaluate(X_test, y_test)
print(f'Accuracy: {accuracy}')# 超参数调优
param_grid = {'batch_size': [16, 32, 64],'epochs': [10, 20, 30]
}
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)
best_params = grid_search.best_params_
print(f'Best parameters: {best_params}')# 使用最优参数训练模型
model = model.set_params(**best_params)
model.fit(datagen.flow(X_train, y_train, batch_size=32), epochs=10, validation_data=(X_test, y_test))# 数据增强
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train.reshape(X_train.shape[0], -1), y_train)
model.fit(X_resampled.reshape(-1, 32, 32, 3), y_resampled)# 预测与评估
y_pred = model.predict(X_test)

在这里插入图片描述

第三章:性能优化与前沿研究

3.1 性能优化

3.1.1 特征工程

通过特征选择、特征提取和特征构造,优化模型的输入,提高模型的性能。

from sklearn.feature_selection import SelectKBest, f_classif# 特征选择
selector = SelectKBest(score_func=f_classif, k=10)
X_selected = selector.fit_transform(X, y)
3.1

.2 超参数调优
通过网格搜索和随机搜索,找到模型的最优超参数组合。

from sklearn.model_selection import RandomizedSearchCV# 随机搜索
param_dist = {'n_estimators': [50, 100, 150],'max_depth': [3, 5, 7, 10],'min_samples_split': [2, 5, 10]
}
random_search = RandomizedSearchCV(estimator=RandomForestClassifier(), param_distributions=param_dist, n_iter=10, cv=5, scoring='accuracy')
random_search.fit(X_train, y_train)
best_params = random_search.best_params_
print(f'Best parameters: {best_params}')# 使用最优参数训练模型
model = RandomForestClassifier(**best_params)
model.fit(X_train, y_train)# 预测与评估
y_pred = model.predict(X_test)
3.1.3 模型集成

通过模型集成,提高模型的稳定性和预测精度。

from sklearn.ensemble import StackingClassifier# 构建模型集成
stacking_model = StackingClassifier(estimators=[('cnn', model1),('vgg', model2)
], final_estimator=LogisticRegression())# 训练集成模型
stacking_model.fit(X_train, y_train)# 预测与评估
y_pred = stacking_model.predict(X_test)

3.2 前沿研究

3.2.1 深度学习在图像分类中的应用

深度学习在图像分类中的应用包括卷积神经网络、生成对抗网络和自监督学习等。

3.2.2 强化学习在图像分类中的应用

强化学习通过与环境的交互,不断优化识别策略,在动态目标检测和自动驾驶中具有广泛的应用前景。

3.2.3 联邦学习与隐私保护

联邦学习通过在不交换数据的情况下进行联合建模,保护用户数据隐私,提高图像分类系统的安全性和公平性。

结语

机器学习作为图像分类领域的重要技术,已经在多个应用场景中取得了显著的成果。通过对数据的深入挖掘和模型的不断优化,机器学习技术将在图像分类中发挥更大的作用,推动计算机视觉和人工智能的发展。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/47604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt支持LG高级汽车内容平台

Qt Group与LG 电子(简称LG)正携手合作,将Qt软件框架嵌入其基于 webOS的ACPLG车载娱乐平台,用于应用程序开发。该合作旨在让原始设备制造商(OEM)的开发者和设计师能为汽车创建更具创新性的沉浸式汽车内容流媒…

【深度学习】inpaint图像中的alpha混合图的边缘处理

比如原图是: 红圈内就是文字水印,经过inpaint后得到图和原图混合,如何处理边界呢,这个代码可以干这事: 越是中心就直接用inpaint图,否则就用原图,这样进行alpha混合。 import numpy as np i…

uniapp:国家、省市区,4级联动

使用uview的Select 列选择器 选择器完成国家,省市区,4级联动 要求后台数据格式: list: [{label: 中国,value: 1,children: [{label: 河南省,value: 2,children: [{label: 郑州市,value: 3,children: [{label: 中原区,value: 4},{label: 郑东…

Re:从零开始的C++世界——类和对象(下)

文章目录 前言1.再谈构造函数🍎构造函数体赋值🍎初始化列表🍎特性🍌特性一🍌特性二🍌特性三🍌特性四🍌特性五 🍎explicit 关键字 2.static成员🍎概念&#x1…

2.4G收发芯片XL2412P,集成单片机 ,通信距离可达110米

XL2412P芯片是一款高性能低功耗的SOC集成无线收发芯片,由RF芯片和32位M0核MCU集成,工作在2.400~2.483GHz世界通用ISM频段。XL2412P为SSOP16封装,正常工作电压范围:1.7~3.6V,正常工作温度范围-40~85℃。XL2412P发射输出…

MQTT服务端EMQX开源版安装和客户端MQTTX介绍

一、EMQX是什么 EMQX 是一款开源的大规模分布式 MQTT 消息服务器,功能丰富,专为物联网和实时通信应用而设计。EMQX 5.0 单集群支持 MQTT 并发连接数高达 1 亿条,单服务器的传输与处理吞吐量可达每秒百万级 MQTT 消息,同时保证毫秒…

vscode 中python 支持自动跳转

随笔记录 目录 1. 背景介绍 2. 解决方案 1. 背景介绍 vscode 远程ssh 打开python 脚本无法自动跳转 2. 解决方案 安装python 插件即可。 至此,已完成vscode 上py 文件支持自动跳转功能

1.6.丢弃法

丢弃法 动机:一个好的模型需要对输入数据的扰动足够健壮,丢弃法就是在层之间加入噪音。也可以在数据中使用噪音,等价与Tikhonov正则 无偏差的加入噪音 ​ 对于数据 x x x,加入噪音后的 x ′ x x′的期望值是不变的,…

Unity如何查找两个transform最近的公共parent

查找两个子对象最近的父对象 一、问题背景二、解决方案思路核心算法代码 三、总结 一、问题背景 最近看到个关于Unity的问题:在Hierarchy面板中的游戏对象,给定两个子物体transform对象,如何查找这两个transform最近的公共父级parent。感觉挺…

【前端】ikun-qrcode:极简的二维码生成组件,使用view而非canvas避免层级问题

文章目录 背景ikun-qrcode界面效果如何发布一款自己的插件到uniapp市场。(5分钟搞定) 背景 之前在uniapp上100行搞定二维码生成, 现在封装为vue组件分享出来: 下载地址: https://ext.dcloud.net.cn/plugin?id19351 …

C语言 | Leetcode C语言题解之第239题滑动窗口最大值

题目&#xff1a; 题解&#xff1a; int* maxSlidingWindow(int* nums, int numsSize, int k, int* returnSize) {int prefixMax[numsSize], suffixMax[numsSize];for (int i 0; i < numsSize; i) {if (i % k 0) {prefixMax[i] nums[i];} else {prefixMax[i] fmax(pref…

抖音视频素材去哪里找啊?视频素材网站库分享

在这个视觉盛宴的抖音平台上&#xff0c;高质量和有趣的视频素材常常是吸引观众的重要钥匙。如果你也正在寻找那些能让你的视频作品更加出色的资源&#xff0c;那么恭喜你&#xff0c;今天我将为你介绍10个超实用的视频素材网站&#xff0c;让你的抖音视频创作充满创意和效率。…

【ROS2】高级:解锁 Fast DDS 中间件的潜力 [社区贡献]

目标&#xff1a;本教程将展示如何在 ROS 2 中使用 Fast DDS 的扩展配置功能。 教程级别&#xff1a;高级 时间&#xff1a;20 分钟 目录 背景 先决条件在同一个节点中混合同步和异步发布 创建具有发布者的节点创建包含配置文件的 XML 文件执行发布者节点创建一个包含订阅者的节…

单例模式->饿汉模式->懒汉模式->阻塞队列->模拟实现阻塞队列->生产者消费者模型

单例模式->是一种固定套路,类似于"棋谱",按照套路来,可以避免一些问题 单例模式的特点->能够保证在某个类中只存在一个实例,不会创建多个实例 饿汉模式(线程安全):最基础的单例模式,类加载的同时就会创建实例,是线程安全的 public class Singleton {// 在类加…

Flutter应用开发:掌握StatefulWidget的实用技巧

前言 随着移动应用的日益复杂&#xff0c;状态管理成为了 Flutter 应用开发中的一项重要挑战。 状态&#xff0c;即应用中的可变数据&#xff0c;它驱动着用户界面的渲染和交互。 在 Flutter 这样的声明式 UI 框架中&#xff0c;如何高效、可维护地管理状态&#xff0c;对于…

GuLi商城-商品服务-API-属性分组-分组修改级联选择器回显

前端代码:略 后端回显接口: 递归方法: @Override publi

jquery中pdf在页面的显示和导出

jquery中pdf在页面的显示和导出 01 显示pdf01 .pdf结尾在线接口显示到页面 &#xff08;pdf.js库怎么安装及使用&#xff09;&#xff1a;只显示一页02 如何用PDF.JS显示整个PDF (而不仅仅是一页)&#xff1f;03 jQuery实现在线预览PDF文件(通过a标签链接跳转)&#xff1a; 02 …

‍我想我大抵是疯了,我喜欢上了写单元测试

前言 大家好我是聪。相信有不少的小伙伴喜欢写代码&#xff0c;但是对于单元测试这些反而觉得多此一举&#xff0c;想着我都在接口文档测过了&#xff01;还要写什么单元测试&#xff01;写不了一点&#xff01;&#xff01; 由于本人也是一个小小程序猿&#x1f649;&#xf…

华为云SQLServer 慢日志查看

作者&#xff1a;梦莱 1、背景 华为云目前只支持 SQLServer 登录数据库&#xff0c;不支持查看慢日志。对于开启慢日志的实例&#xff0c;也只能通过将慢日志下载到本地 再远程连接目标实例数据库查看。本篇将华为云 SQLServer 实例出现资源异常&#xff0c;排查问题的方案整…

【java】力扣 合法分割的最小下标

文章目录 题目链接题目描述思路代码 题目链接 2780.合法分割的最小下标 题目描述 思路 这道题是摩尔算法的一种扩展 我们先可以找到候选人出来&#xff0c;然后去计算他在左右两边元素出现的次数&#xff0c;只有当他左边时&#xff0c;左边出现的次数2 >左边的长度&…