边缘智能:边缘计算和人工智能的深度融合

news2024/11/29 12:43:40

摘要

随着通信技术的飞速发展和移动设备使用的激增,一种全新的计算范式——边缘计算正在迅速普及。与此同时,随着深度学习的突破和硬件架构的许多改进,人工智能(AI)应用正在蓬勃发展。在网络边缘产生数十亿字节的数据,对数据处理和结构优化提出了巨大的要求。因此,将边缘计算与人工智能相结合的需求非常强烈,从而产生了边缘智能。在本文中,我们将边缘智能分为智能边缘(支持智能的边缘计算)和边缘智能(边缘人工智能)。

前者侧重于借助流行且有效的AI技术为边缘计算中的关键问题提供更优的解决方案,而后者则研究如何在边缘上完成构建AI模型的整个过程,即模型训练和推理。本文从更广阔的视角对这一新的跨学科领域进行了深入的研究。它讨论了核心概念和研究路线图,这应该为边缘智能潜在的未来研究计划提供必要的背景。

1 前言

通信技术正在经历一场新的革命。第五代蜂窝无线系统(5G)的出现,带来了增强型移动宽带(eMBB)、超可靠低延迟通信(URLLC)和大规模机器类型通信(mMTC)。随着物联网(IoT)的普及,广泛分布的移动和物联网设备产生了更多的数据,可能比超大规模云数据中心产生的数据还要多。具体来说,根据爱立信的预测,45%到2024年,全球互联网数据的40ZB将由物联网设备产生。将如此庞大的数据从边缘转移到云端是非常棘手的,因为这可能会导致网络过度拥堵。因此,更适用的方式是直接在边缘处理用户需求,从而催生了一种全新的计算范式——(移动→多接入)边缘计算。边缘计算的主题涵盖了不同学科的许多概念和技术,包括面向服务的计算(SOC),软件定义网络(SDN),计算机体系结构等。

边缘计算的原理是将计算和通信资源从云端推送到网络边缘,提供服务和计算,避免不必要的通信延迟,为最终用户提供更快的响应

没有人能否认人工智能(AI)现在正在迅速发展。大数据处理需要更强大的方法,如人工智能技术,来提取洞察力,从而做出更好的决策和战略业务举措。在过去的十年中,随着AlexNet和深度神经网络(dnn)的巨大成功,它可以学习数据的深度表示,已经成为最流行的机器学习架构。以dnn及其分支,即卷积神经网络(cnn)、循环神经网络(rnn)和生成对抗网络(gan)为代表的深度学习,在过去几年中逐渐成为最流行的人工智能方法。深度学习在广泛的领域取得了惊人的突破,包括计算机视觉、语音识别、自然语言处理和棋盘游戏。此外,硬件架构和平台不断快速改进,这使得满足计算密集型深度学习模型的需求成为可能。特定应用加速器的设计是为了进一步提高吞吐量和能源效率。综上所述,在深度学习技术突破和硬件架构升级的推动下,人工智能正在持续取得成功和发展。

考虑到人工智能对于快速分析大量数据和提取见解在功能上是必要的,因此存在将边缘计算和人工智能集成的强烈需求,从而产生了边缘智能。边缘智能并不是边缘计算和人工智能的简单结合。在本文中,我们建立一个更广阔的视野和视角。我们建议将边缘智能分为边缘人工智能和边缘人工智能。

    1. 智能边缘(AI for edge)是一个致力于利用有效的人工智能技术更好地解决边缘计算中的约束优化问题的研究方向。在这里,AI被用来赋予edge更多的智能和最优性。因此,它可以被理解为智能支持的边缘计算(IEC)。
    1. 边缘智能 (AI on edge)研究如何在边缘上运行AI模型。它是一个具有设备-边缘-云协同的AI模型运行训练和推理的框架,旨在从海量分布式边缘数据中提取见解,同时满足算法性能、成本、隐私性、可靠性、效率等要求。因此,可以将其理解为边缘人工智能(AIE)。

2 边缘计算和人工智能的关系

我们相信人工智能和边缘计算的融合是自然和不可避免的。实际上,它们之间存在一种互动关系。一方面,人工智能为边缘计算提供了技术和方法,边缘计算可以通过人工智能释放其潜力和可扩展性;另一方面,边缘计算为人工智能提供了场景和平台,人工智能可以通过边缘计算扩展其适用性。

**人工智能为边缘计算提供了技术和方法。**一般来说,边缘计算是一种分布式计算范式,通过构建软件定义网络来分散数据并提供具有鲁棒性和弹性的服务。边缘计算面临不同层次的资源分配问题,如CPU周期频率、访问权限、射频、带宽等。因此,为了提高系统效率,对各种功能强大的优化工具提出了很高的要求。人工智能技术有能力处理这项任务。从本质上讲,人工智能模型从实际场景中提取无约束优化问题,然后用随机梯度下降(SGD)方法迭代地找到渐近最优解。无论是统计学习方法还是深度学习方法都可以为边缘提供帮助和建议。此外,包括多臂强盗理论、多智能体学习和深度q -网络(DQN)在内的强化学习在边缘资源分配问题中发挥着越来越重要的作用。

边缘计算为人工智能提供场景和平台。物联网设备的激增使物联网(IoE)成为现实[10]。除了超大规模的云数据中心,越来越多的数据是由分布广泛的移动和物联网设备产生的。更多的应用场景,如智能网联汽车、自动驾驶、智能家居、智慧城市、公安实时数据处理等,可以极大地促进人工智能从理论到实践的实现。

此外,通信质量高、计算能力要求低的人工智能应用可以从云迁移到边缘。总之,边缘计算为人工智能提供了一个功能丰富的异构平台。

如今,具有计算加速功能的人工智能芯片,如现场可编程门阵列(fpga)、图形处理单元(gpu)、张量处理单元(tpu)和神经处理单元(npu),正逐渐成为与智能移动设备集成的可能。越来越多的公司参与芯片架构的设计,以支持边缘计算范式,并促进资源有限的物联网设备上的深度神经网络加速。边缘硬件的升级也为人工智能注入了生机与活力。

3 边缘智能研究路线

如图1所示,边缘智能路线图中的架构层分别描述了两个方向的逻辑分离,即智能边缘(左)和边缘智能(右)。在自底向上的方法中,我们将边缘计算的研究工作分为拓扑、内容和服务。人工智能技术可以应用于所有这些领域。通过自顶向下的分解,我们将边缘人工智能的研究分为模型自适应、框架设计和处理器加速。在分别讨论边缘人工智能和边缘人工智能之前,我们首先描述了对它们进行优化的目标,这被统称为体验质量(QoE)。QoE仍然处于路线图的顶端。
在这里插入图片描述

3.1 性能指标

    1. 性能。AI for edge和AI on edge的性能成分是不同的。对于前者,当涉及到计算卸载问题时,性能可能是成功卸载的比率。当涉及到服务布局问题时,它可能是服务提供商需要最大化的收入和需要最小化的基站租用成本。对于后者,性能主要包括训练损失和推理精度,这是人工智能模型最重要的标准。
      尽管计算场景已经从云集群转变为设备、边缘和云的协同系统,但这些标准仍然发挥着重要作用。
    1. 成本。成本通常包括计算成本、通信成本和能源消耗。计算成本反映了对实现的CPU周期频率、分配的CPU时间等计算资源的需求,而通信成本则反映了对功耗、频带、访问时间等通信资源的需求。许多工作还集中在最小化由分配的计算和通信资源引起的延迟(延迟)。能源消耗并不是边缘计算所独有的,由于移动设备的电池容量有限,能源消耗更为关键。
      降低成本至关重要,因为边缘计算承诺通过解决实现5G的关键挑战,大幅降低延迟和能耗。
    1. 隐私(安全)。随着公众数据泄露意识的增强,隐私保护已成为近年来最热门的话题之一。这种现状导致了联邦学习的诞生,它在防止数据泄露的同时,聚合了来自分布式设备的本地机器学习模型[11]。安全与保护隐私紧密相连。它还与中间件和边缘系统软件的健壮性有关,本文不考虑这一点。
    1. 效率。无论是边缘人工智能还是边缘人工智能,高效率向我们承诺了一个性能优异、开销低的系统。对效率的追求是改进现有算法和模型的关键因素,特别是对于边缘人工智能。为了提高深度人工智能模型的训练和推理效率,提出了模型压缩、条件计算和算法异步等方法。
    1. 可靠性。系统可靠性确保边缘计算在任何规定的运行周期内不会出现故障。
      它是用户体验的一个重要指标。对于边缘智能,系统可靠性似乎对边缘AI尤为重要,因为模型训练和推理通常以分布式和同步的方式进行,并且由于无线网络拥塞,参与的本地用户有很大可能无法完成模型的上传和下载。

3.2 智能边缘概述

路线图的左侧是AI for edge。我们将这种工作命名为IEC智能边缘(即智能支持的边缘计算),因为人工智能为解决复杂的学习、规划和决策问题提供了强大的工具。

通过自底向上的方法,边缘计算中的关键关注点分为三层,即拓扑内容服务
该部分内容不再展开叙述,有兴趣可以参考文献原文。

3.2 边缘智能概述

路线图的右边是AI边缘。我们将这种工作命名为AIE 边缘智能 (Artificial Intelligence on Edge),因为它研究的是如何在网络边缘上对AI模型进行训练和推理。通过自顶向下的分解,我们将边缘人工智能的研究分为三类:模型自适应框架设计推理加速

考虑到模型自适应的研究工作是基于现有的训练和推理框架,让我们首先介绍框架设计。

3.2.1 框架设计

框架设计的目的是在不修改现有人工智能模型的情况下,为边缘提供更好的训练和推理架构。研究人员试图为模型训练和模型推理设计新的框架。

3.2.2 模型训练

对于模型训练,除了那些基于知识提炼的框架外,所有提出的框架都是分布式的。分布式训练框架可以分为数据分割模型分割[30]。

数据分割可以进一步分为主设备分割、辅助设备分割和设备-设备分割。不同之处在于训练样本来自哪里,以及如何组装和汇总全局模型。

模型分割将神经网络的层分开,并将它们部署在不同的设备上。它高度依赖于复杂的管道。基于知识提炼的框架可能是分散的,也可能不是,它们依赖于迁移学习技术[31]。知识蒸馏可以提高浅层学生网络的准确性。它首先在一个基本数据集上训练一个基本网络。之后,可以将学习到的特征转移到学生网络中,分别在他们的数据集上进行训练。基础网络可以在云或边缘服务器上进行训练,而这些学生网络可以分别通过许多带有y隐私数据的移动终端设备进行训练。我们相信,在基于知识提炼的边缘模型训练框架中,存在着许多值得探索的途径。

模型训练中最流行的工作是联邦学习[11]。在以分布式方式训练dnn时,提出了联邦学习来保护隐私。

在不将用户私有数据聚合到中央数据中心的情况下,联邦学习Federated Learning可以在多个客户机上训练一系列本地模型。然后,通过平均每个客户端的训练梯度来优化全局模型。我们不打算在本文中详细阐述联邦学习。

对于存储和计算资源有限的边缘节点,单独训练一个全面的模型是不现实的。因此,一种更适用的方法是分布式训练,这种方法需要边缘节点之间的协调。对于边缘节点之间的通信,挑战在于如何从分布式局部模型中优化全局梯度。无论采用何种学习算法,随机梯度体面(Stochastic Gradient Decent, SGD)都是模型训练的必要条件。分布式边缘节点使用SGD基于它们自己的数据集更新它们的局部梯度,这些数据集可以被视为一个小批量。之后,它们将更新后的梯度发送到中心节点进行全局模型升级。在这个过程中,必须考虑模型性能和通信开销之间的权衡。如果所有边缘节点同时发送本地梯度,可能会导致网络拥塞。更好的方法是选择性地选择有较大改进的局部梯度。在这种情况下,可以保证全局模型的模型性能,同时降低通信开销。

3.2.3 模型推理

虽然模型分割在模型训练中很难实现,但它是一种常用的模型推理方法。模型分割/划分可以看作是模型推理的框架。其他方法,如模型压缩、输入过滤、早期退出等,可以看作是对现有框架的改编,这些将在下一段中介绍,并在小节V-A中详细阐述。在边缘上进行模型推理的一个典型例子是[32],其中将DNN分成两部分并协同进行。计算密集型部分在边缘服务器上运行,而另一部分在移动设备上运行。问题在于根据推理精度的限制,在哪里划分层以及何时退出复杂的深度神经网络。

3.2.4 模型自适应

模型适应基于现有的训练和推理框架(通常是联邦学习)进行适当的改进,使它们更适用于边缘。联邦学习有在边缘运行的潜力。然而,联邦学习的普通版本对通信效率有很强的要求,因为完整的本地模型应该被发送回中央服务器。因此,许多研究人员开发了更有效的模型更新和聚合策略。许多工作致力于在保证系统性能的同时降低成本和提高鲁棒性。实现模型自适应的方法包括但不限于模型压缩、6条件计算、算法异步化和彻底去中心化。模型压缩利用梯度和权值固有的稀疏性结构。可能的方法包括但不限于量化、降维、剪枝、精度降阶、组件共享、截止等。这些方法可以通过奇异V值分解(SVD)、霍夫曼编码(Huffman Coding)、主成分分析(PCA)等方法实现。条件计算是通过选择性地关闭dnn的一些不重要的计算来减少计算量的一种替代方法。

可能的方法包括但不限于组件关闭、输入过滤、提前退出、结果缓存等。条件计算可以看作是逐块退出[33]。此外,利用随机八卦通信可以减少不必要的计算和模型更新。

算法异步尝试以异步方式聚合局部模型。它旨在克服联邦学习中模型更新的低效和冗长的同步步骤。彻底的去中心化消除了中央聚合器,以避免任何可能的泄漏并解决中央服务器的故障。实现完全去中心化的方法包括但不限于区块链技术和博弈论方法。

4 边缘智能

我们将边缘人工智能的研究分为模型自适应、框架设计和处理器加速三个方面。现有的模型训练和推理框架很少。训练框架包括联邦学习和知识蒸馏,推理框架包括模型抽取和模型划分。由于相对有限的计算和存储能力,边缘人工智能模型与基于云的预测相比是有限的。如何在资源稀缺的设备上进行模型训练和推理是一个亟待解决的问题。因此,与设计新框架相比,边缘计算的研究人员更感兴趣的是改进现有框架,使其更适合边缘,通常会减少资源占用。因此,基于联邦学习的模型自适应得到了蓬勃发展。

4.1 模型压缩

如图3所示,模型压缩的方法包括量化、降维、剪枝、组件共享、精度降阶等。它们利用梯度和权值固有的稀疏结构来尽可能地减少内存和信道占用。权重压缩和量化技术包括但不限于奇异V值分解(SVD)、霍夫曼编码和主成分分析。由于篇幅有限,本文将不提供对这些内容的全面介绍。考虑到许多作品同时使用上述方法,我们不进一步划分模型压缩技术的状态。还有一点需要明确指出的是,模型压缩既适用于模型训练也适用于模型推理。因此,我们不刻意区分它们。
在这里插入图片描述
正如我们前面提到的,沟通效率对联邦学习至关重要。当我们将联邦学习移动到边缘时,最小化通信轮数是主要目标,因为如果一个或多个本地设备脱机或网络拥塞,可能无法实现更新全局模型。

因此,从不同的角度来看,许多工作都集中在减少联邦学习的通信开销上。

在不降低推理精度的前提下对训练好的模型进行压缩是实现这一目标的最佳途径之一。例如,在[53]中,提出了结构化更新和草图更新以降低上行通信成本。对于结构化更新,从受限的低维空间学习局部更新;对于草图更新,上传模型在发送到中央服务器之前被压缩。
一些研究还探讨了基于分割dnn的模型压缩。例如,Li等人提出了一种用于边缘和云之间协同推理的自调谐神经网络量化框架[66]。首先,对DNN进行分区。第一部分在边缘设备上量子化执行,第二部分在云中全精度执行。[67]中的工作提出了一个框架来加速和压缩模型训练和推理。它根据深度将dnn划分为多个部分,并根据不同部分的中间特征构建分类器。

此外,通过知识蒸馏提高了分类器的准确率。

除了联邦学习之外,还有研究统计学习模型或其他流行的深度模型(如ResNet和VGG架构)在资源有限的终端设备上的执行的工作。例如,Gupta等人提出了一种压缩且精确的k-最近邻(kNN)算法ProtoNN[61]。ProtoNN通过随机邻域压缩(Stochastic Neighborhood Compression, SNC)学习少量的原型来表示整个训练集[68],然后用稀疏投影矩阵将整个数据投影到较低的维度。它在明确的模型尺寸约束下对投影和原型进行联合优化。

模型压缩是目前人工智能领域一个非常活跃的方向,因为它很容易实现。然而,最先进的工作通常与边缘计算系统的特定应用场景无关。构建边缘平台和硬件的新作品有机会出现。

4.2 条件计算

如图3所示,条件计算的方法包括组件共享、组件关闭、输入过滤、早期退出、结果缓存等。简单地说,条件计算就是选择性地关闭一些不重要的计算。因此,可以将其视为逐块退出[33]。

许多工作都致力于排序和选择最值得计算的部分,或者在达到置信阈值时提前停止。例如,Hostetler等人实例化了一个运行时可节流的神经网络,它可以自适应地平衡学习精度和资源占用,以响应控制信号[62]。它通过块级门控实现了条件计算。

这个想法也可以用于参与者的选择。

它选择联邦学习中最有价值的参与者进行模型更新。没有价值的参与者不会参与全球模型的聚合。据我们所知,目前还没有专门针对参与者选择的工作。我们热切地期待着它令人兴奋的工作。

4.3 算法异步

算法异步尝试以异步方式聚合局部模型用于联邦学习。如前所述,由于无线网络拥塞,参与的本地用户有很大的概率无法完成模型的上传和下载。除了模型压缩之外,另一种方法是点对点交换权重和梯度来降低无线信道的高并发性。随机八卦交流就是一个典型的例子。基于随机八卦算法,Blot等

提出GoSGD异步训练dnn[63]。在大规模边缘系统中,最具挑战性的训练问题是收敛速度的下降。为了克服这个问题,Daily等人引入了GossipGraD,它可以大大降低通信复杂度,保证快速收敛

4.4 彻底分权

彻底去中心化试图移除中央聚合器,以避免任何可能的泄漏。尽管联邦学习不需要消费者的私有数据,但是模型更新仍然包含私有信息,因为仍然需要对协调训练的服务器的某种信任。为了完全避免隐私泄露,区块链技术和博弈论方法可以帮助完全去中心化。

通过利用区块链,特别是智能合约,不再需要用于模型聚合的中央服务器。

因此,可以避免由模型聚合引发的崩溃。此外,用户隐私可以得到保护。我们相信基于区块链的联邦学习将在未来几年成为一个热门领域和繁荣方向。存在着将其付诸实践的作品。在[65]中,提出了基于区块链的联邦学习架构BlockFL,将边缘节点作为矿工。矿工交换并验证每个设备贡献的所有本地模型更新,然后运行工作量证明(PoW)。首先完成PoW的矿工生成一个新的区块,并从区块链网络获得挖矿奖励。最后,每个设备从最新的块更新其本地模型。本文将区块链与联邦学习有效集成,构建可信的边缘学习环境。

4.5 边缘智能面临的挑战

从数据可用性、模型选择和协调机制三个方面分别列出了边缘人工智能面临的重大挑战。

1)数据可用性:最严峻的挑战在于原始训练数据的可用性和可用性,因为可用的数据是一切的开始。首先,移动用户提供数据可能需要适当的激励机制。否则,原始数据可能无法用于模型训练和推理。此外,来自各种终端设备的原始数据可能存在明显的偏差,这将极大地影响学习性能。虽然联邦学习可以克服非智能学习带来的问题。样本在一定程度上,训练程序在鲁棒通信协议的设计上仍然面临很大的困难。因此,在数据可用性方面存在巨大的挑战。

2)模型选择:目前,从模型本身到训练框架和硬件,需要训练的AI模型的选择面临着以下几个方面的严峻挑战。首先,如何选择适合人工智能模型学习精度和规模的阈值,以便快速部署和交付。其次,在资源有限的情况下,如何选择探针训练框架和加速器架构。模型选择与资源分配和管理相耦合,问题复杂且具有挑战性。

3)协调机制:由于异构边缘设备之间的计算能力和通信资源可能存在巨大差异,因此所提出的模型适应方法可能无法普遍适用。这可能会导致同一种方法在不同的移动设备集群中获得不同的学习结果。因此,异构边缘设备之间的兼容性和协调性至关重要。硬件和中间件中云、边缘和设备之间的灵活协调机制是迫切需要设计的。

它为无处不在的边缘设备提供了统一的边缘学习API接口的研究机会。

6 总结

边缘智能虽然仍处于早期阶段,但已经吸引了越来越多的研究人员和公司参与研究和使用它。本文试图通过简洁有效的分类提供可能的研究机会。具体来说,我们首先讨论边缘计算与人工智能之间的关系。我们认为,两者相互促进、相互加强。然后,我们将边缘智能分为边缘人工智能和边缘人工智能,并绘制了研究路线图。前者侧重于借助流行和丰富的人工智能技术为边缘计算中的关键问题提供更好的解决方案,而后者研究如何在边缘上进行人工智能模型的训练和推理。无论是面向边缘的人工智能还是边缘上的人工智能,研究路线图都以层次结构的形式呈现。

通过自底向上的方法,我们将边缘计算的研究分为拓扑、内容和服务,并介绍了如何用智能激活边缘的一些例子。

通过自顶向下的分解,将边缘人工智能的研究分为模型自适应、框架设计和处理器加速,并介绍了一些现有的研究成果。最后,我们在AI for edge和AI on edge的几个热门话题中介绍了当前的技术状况和重大挑战。我们试图为边缘智能这个新兴领域提供一些启发性的想法。我们希望本文能够激发对边缘智能未来潜在研究方向的富有成效的讨论。

参考文献:[1] Deng S , Zhao H , Fang W ,et al.Edge Intelligence: The Confluence of Edge Computing and Artificial Intelligence[J]. 2019.DOI:10.1109/JIOT.2020.2984887.

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

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

相关文章

也聊聊BLDC 电机的 10 大热门应用---【其利天下技术分享】

近年来,随着全球提出的低碳,高能效的概念提出,作为高效动力来源的BLDC技术,越来越受到各界的追捧。 大家都知道,BLDC的发展史也就短短几十年的时间,随着近年来,新磁性材料的运用、微电子技术和…

基于大模型的虚拟数字人__虚拟主播实例

基于大模型的虚拟数字人__虚拟主播实例 本文目录: 一、技术的背景: 二、创意名称: 三、创意背景 四、创意目标 五、创意设计 六、技术实现路径 七、完整代码实现 八、创意总结 九、人工智能虚拟人物的一些优秀代表作品及其特点 十、…

河道水位标尺识别预警 yolov7

河道水位标尺识别预警系统通过pythonyolov7网络模型技术,河道水位标尺识别预警算法对河道水位标尺进行实时监测,当河道水位出现异常情况时,河道水位标尺识别预警算法将自动发出警报提示后台管理人员及时采取措施。YOLO系列算法是一类典型的on…

【工具篇】SpringBoot基于assembly的服务化打包方案

简介 最近项目中,使用插件式开发方式,将多个Web应用打成一个FatJar程序包部署运行。但考虑到原始裸Jar包方式交付,有很多不便之处,比如启动命令过长(JVM参数配置、Spring环境配置等)、配置无法修改等问题会…

基于OpenMV的自动驾驶智能小车模拟系统

一、项目简介 基于机器视觉模块OpenMV采集车道、红绿灯、交通标志等模拟路况信息,实现一辆能车道保持、红绿灯识别、交通标志识别、安全避障以及远程WiFi控制的多功能无人驾驶小车。 赛道规格: 1、编程所需软件: OpenMV:使用Op…

cuda pyinstall cvs 使用记录

1.pip 换源 pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/2.安装匹配cuda的pytorch 官网:PyTorch pip3 install torch torchvision torchaudio查看能否使用cuda: import torch torch.cuda.is_available()获得以下反馈: 意思…

CSS基础学习--22 图像透明/不透明

一、透明度属性 CSS3中属性的透明度是 opacity 正常的图像 相同的图像带有透明度: img {opacity:0.4;filter:alpha(opacity40); /* IE8 及其更早版本 */ } 备注:Opacity属性值从0.0 - 1.0。值越小,使得元素更加透明。 IE8和早期版本使用滤…

【MySQL】库和表结构的增删查改

目录 一、库的操作 1、创建数据库 2、数据库所使用的编码 2.1查询编码集和校验集 2.2查看数据库的字符集和校验集 2.3创建数据库指定字符集和校验集 2.4不同的校验集所筛选的数据结果不一样 3、查看数据库 4、修改数据库 5、删除数据库 6、数据库的备份和恢复 6.1备…

【Spring MVC】获取 @RequsetBody 标识的对象,使用适配器模式增加代码可读性

1. 前言 一个技术需求引发的思考和实践: 思考 用 AOP 把校验代码 实践 用 Spring MVC 的 RequestBodyAdvice 做AOP逻辑继承 RequestBodyAdviceAdapter 实现自己的 适配器用自己的适配器让代码可读性增加熟悉 Spring MVC 、Java 反射的一些实践 本文内容 澄清一个A…

Mysql 调优

前言 硬件层面:使用固态硬盘、扩大内存、加大带宽等等 架构层面:主从复制实现读写分离【一主一 或 双主双从】 表结构层面:对表结构进行垂直拆分、水平分表、分库分表。常用的数据库中间件有:MySQL Proxy、MyCat以及ShardingSphe…

电脑C盘的清理 | 微信QQ缓存信息

记录一下我处理C盘爆满时的几个方法,基本上都是可以日常使用的。 一、磁盘清理 链接 二、查看具体哪些文件占内存 win图标右击 -----> 点击“系统(Y)” 点击查看具体是哪些文件夹哪些app占用了大量的内存,并选择删除部分…

第二章 re模块

1. re模块介绍 正则表达式 在处理字符串时,经常会有查找符合某些复杂规则的字符串的需求。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 re 模块 Python 提供了 re 模块用于实现正则表达式的操作。在实现时&…

CTFshow-pwn入门-前置基础pwn23-pwn25

pwn23-25的题目会涉及到ret2shellcode、ret2libc等内容,本篇文章只会侧重研究这几道题目的wp,不会过多涉及到ret2shellcode、ret2libc的基本原理,等有时间再来写关于ret2libc、ret2shellcode…的相关内容。大家可以参考CTFwiki的文章去慢慢学…

FPGA_数码管显示UART串口接收的数据

实验目标:通过电脑调试助手向FPGA的UART串口接收模块发送数据,然后数据可以稳定显示在数码管上。 实验目的: 练习UART串口模块和数码管的使用。之前已经有文章详细讲解了串口和数码管的开发,故这里直接提供设计思路供大家参考。 &#xff08…

求解矩阵行列式因子、不变因子、初等因子、Jordan标准形

首先,我们先来简要了解一下行列式因子、不变因子和初等因子的概念。 下面举例说明。 例1 首先,我们要求 λ I − A λI-A λI−A 然后,我们先求行列式因子。 D 2 ( λ ) D_2(λ) D2​(λ)的求法如下: 然后,我们再求…

015、数据库管理之用户和权限

用户和权限 认证与赋权连接过程本地连接远程连接查看用户信息创建用户账号创建角色管理用户账户管理角色设置账号密码忘记root密码实验1-用户和角色实验2-授权注意事项 认证与赋权 认证:对用户进行验证 是权限控制的第一步当用户第一次连接数据库时必须进行认证如果…

【Git】TortoiseGit(小乌龟)配置SSH和使用

目录 1、TortoiseGit(小乌龟)配置SSH 1.1、右击打开Git命令窗口 1.2、设置Git的全局name和email 1.3、查看是全局名字和邮箱是否设置成功 1.4、生成 sshkey秘钥 2、TortoiseGit(小乌龟)的使用 2.1、创建本地仓库 2.2、添加…

企业会计软件必备!深入了解为何选择会计软件以及其带来的好处

随着科技的发展,企业需要更加智能化和数字化的财务管理方式,因此会计软件是现代社会的必然产物,会计软件可以帮助企业更有效地进行财务管理。 企业为什么需要会计软件? 提高准确度 通过传统的手工操作财务记录,会有很…

Qt6.2教程——2.介绍 Qt 中的 QWidgets、QMainWindow 和 QDialog

详细介绍 Qt 中的 QWidgets、QMainWindow 和 QDialog Qt 是一个广受欢迎的跨平台 C GUI 库。在 Qt 中,创建图形用户界面的基本单元是 Widget。本文将详细介绍三个重要的 Widget 类:QWidget, QMainWindow 和 QDialog,并比较它们的特点和用途。…

设计模式之原型模式笔记

设计模式之原型模式笔记 说明Prototype(原型)目录UML原型模式示例类图RealizeType类(浅克隆)测试类 原型模式案例奖状类测试类 扩展(深克隆)学生类奖状类测试类 说明 记录下学习设计模式-原型模式的写法。 Prototype(原型) 意图:用原型实例指定创建对象的种类,并…