【阅读记录】《联邦学习》杨强

第2章 隐私、安全及机器学习

2.3 威胁与安全模型

2.3.1 隐私威胁模型

对机器学习系统的攻击可能在任何阶段发生,包括数据发布、模型训练和模型推理。

  • 模型训练阶段:重构攻击(避免使用寻存储显式特征值的模型,SVM KNN等)
  • 模型推理阶段:模型反演攻击(敌人有白盒或黑盒访问权限)、成员推理攻击(敌人至少拥有黑盒访问权限)
  • 数据发布阶段:特征推理攻击(对数据去匿名化或锁定记录的拥有者)

2.3.2 攻击者和安全模型

现有工作面向两种敌手:

  • 半诚实的(Semi-honest)敌手:在半诚实(抑或诚实但好奇的(honest-butcurious)、被动的)敌手模型中,敌手诚实地遵守协议,但也会试图从接收到的信息中学习更多除输出以外的信息。
  • 恶意的(Malicious)敌手:在恶意的(抑或主动的)敌手模型中,敌手不遵守协议,可以执行任意的攻击行为。

2.4 隐私保护技术

  • 安全多方计算
  • 同态加密
  • 差分隐私

第3章 分布式机器学习

3.1 分布式机器学习介绍

在这里插入图片描述

3.2 面向扩展性的DML

3.2.2 面向扩展性的DML方法

数据并行、模型并行、图并行、任务并行、混合并行和交叉并行

3.3 面向隐私保护的DML

3.3.2 隐私保护方法

隐私处理or密码学方法

第4章 横向联邦学习

4.0(补充) 横向联邦 v.s. 纵向联邦

横向联邦学习

在这里插入图片描述

多个参与者具有相同的数据特征。横向联邦使训练样本的总数量增加。横向联邦学习也称为特征对齐的联邦学习(Feature-Aligned Federated Learning),即横向联邦学习的参与者的数据特征是对齐的。

纵向联邦学习

适用于参与者训练邦本ID重叠较多,而数据特征重叠较少的情况。联合多个参与者的共同样本的不同数据特征进行联邦学习,即各个参与者的训练数据是纵向划分的,称为纵向联邦学习。纵向联邦学习需要先做样本对齐,即找出参与者拥有的共同的样本,也就叫“数据库撞库(entity resolution, a.k.a. entity alignment)”。只有联合多个参与者的共同样本的不同特征进行纵向联邦学习,才有意义。纵向联邦使训练样本的特征维度增多。纵向联邦学习也称为样本对齐的联邦学习(Sample-Aligned Federated Learning),即纵向联邦学习的参与者的训练样本是对齐的。
在这里插入图片描述

小结

  • 横向联邦学习的名称来源于训练数据的“横向划分”,也就是数据矩阵或者表格的按行(横向)划分。不同行的数据有相同的数据特征,即数据特征是对齐的。
  • 纵向联邦学习的名称来源于训练数据的“纵向划分”,也就是数据矩阵或者表格的按列(纵向)划分。不同列的数据有相同的样本ID,即训练样本是对齐的。

4.1 横向联邦学习的定义

横向联邦学习也称为“按样本划分的联邦学习” ( SamplePartitioned Federated Learning 或 Example-Partitioned Federated Learning)。可以应用于联邦学习的各个参与方的数据集有相同的 特征空间和不同的样本空间的场景,类似于在表格视图中对数据进行水平划分的情况。

关于横向联邦学习系统的安全性的定义,我们通常假设一个横向联邦学习系统的参与方都是诚实的,需要防范的对象是一个诚实但好奇(honest-but-curious)的聚合服务器[35,115]。即通常假设只有服务器才能使得数据参与方的隐私安全受到威胁。

4.2 横向联邦学习架构

  • C-S架构
  • P2P架构

4.2.1 客户-服务器架构

典型的横向联邦学习系统的客户-服务器架构示例如图4-1所示,也被称为主-从(master-worker)架构或者轮辐式(hub-and-spoke)架构。在这种系统中,具有同样数据结构的K个参与方(也叫作客户或用户)在服务器(也叫作参数服务器或者聚合服务器)的帮助下,协作地训练一个机器学习模型。横向联邦学习系统的训练过程通常由如下四步组成:
在这里插入图片描述
在这里插入图片描述

上述步骤将会持续迭代进行,直到损失函数收敛或者达到允许的迭代次数的上限或允许的训练时间,这种架构独立于特定的机器学习算法(如逻辑回归和深度神经网络),并且所有参与方将会共享最终的模型参数。
对于模型聚合,可以采用 梯度平均模型平均 的方式。梯度平均是服务器将接收到的梯度信息进行聚合(加权平均等),再将聚合的梯度信息发送给各参与方。模型平均则是发送模型参数至服务器,服务器将接受的信息聚合后发回给各客户端。
在这里插入图片描述

4.2.2 对等网络架构

每个客户端称为训练方,训练方们使用安全链路)(channels)相互之间传输模型参数信息。为保证通信安全,需要使用例如基于公共密钥的加密方法等安全措施。
传输方式:循环传输,随机传输(Gossip学习)。

4.2.3 全局模型评估

本地模型性能表示某一参与方在本地测试数据集上检验得出的横向联邦学习模型的性能,全局模型性能表示所有参与方在测试数据集上对横向联邦学习模型进行测试得出的模型性能。模型性能可以表现为精确度(precision)、准确度(accuracy)和召回率(recall)等。
C-S结构可以通过回传给中央服务器来聚合,P2P结构则可以选取一个临时协调方等方式。

4.3 联邦平均算法介绍

local SGD/FedAvg

4.3.1 联邦优化

联邦学习中的优化问题称为联邦优化。联邦学习面临的挑战:

  1. 数据集的非独立同分布(Non-IID, Non-independent and Identically Distributed)
  2. 数据量不平衡
  3. 参与方数量大
  4. 通信连接不稳定
    为了应对联邦优化中面临的挑战,谷歌的H.Brendan McMahan等人提出使用联邦平均算法来求解联邦优化问题。联邦平均算法可以用于深度神经网络训练中遇到的非凸损失函数(即损失函数是神经网络模型参数的非凸函数,常见于深度神经网络模型).
    在分布式机器学习中,数据中心或集群中并行训练时,通信开销较小,计算开销占主导。但在联邦学习场景中,通信需要依靠互联网,甚至是无线网络,通信代价占主导地位。因此联邦学习中可能需要使用额外的计算以减少训练模型所需通信轮次。有两种主要方法:增加并行度(增加参与方),增加每一个参与方中的计算(在两个通信轮次间进行更复杂的计算)。

4.3.2 联邦平均算法

具体查看 Google的文章:

MCMAHAN H B,MOORE E,RAMAGE D,et al.Federated learning of deep networks using model averaging[A/OL].arXiv.org(2017-02-28).https://arxiv.org/abs/1602.05629v3.

在这里插入图片描述

4.3.3 安全的联邦平均算法

算法4-1中描述的联邦平均算法会暴露中间结果的明文内容,例如从SGD或DNN模型参数等优化算法中产生的梯度信息。它没有提供任何安全保护,如果数据结构也被泄露,模型梯度或者模型参数的泄露可能会导致重要数据和模型信息的泄露。

  • 加法同态加密(AHE):Paillier算法、基于带错误学习(Learning With Errors,LWE)的加密方法

特别地,通过比较算法4-1和算法4-2可以观察到,诸如AHE这类方法,可以很容易地加入原始的联邦平均算法中,以提供安全的联邦学习。文献[35]指出,在特定条件下,算法4-2展示的安全的联邦平均算法将不会给诚实但好奇的协调方泄露任何参与方的信息,并且其中的同态加密方法能够抵御选择明文攻击(Chosen-Plaintext Attack,CPA)。换言之,算法4-2抵御了诚实但好奇的某一方的攻击,确保了联邦学习系统的安全性。
在AHE方法中,数据和模型本身并不会以明文形式被传输,因此几乎不可能发生原始数据层面的泄露。然而,加密操作和解密操作将会提高计算的复杂度,并且密文的传输也会增加额外的通信开销。AHE的另一个缺点是,为了评估非线性函数,需要使用多项式近似(例如,使用泰勒级数展开来近似计算损失函数和模型梯度)。所以,在精度与隐私性之间需要进行权衡。用于保护联邦平均算法的安全技术仍需进一步研究。

在这里插入图片描述

4.4 联邦平均算法的改进

4.4.1 通信效率提升

  1. 压缩的数据参数更新(Sketched updates)。正常计算更新模型,本地压缩(无偏估计值)。
    • 压缩梯度(DGC)、压缩参数
  2. 结构化的模型参数更新(Structured updates)。模型参数更新被限制为允许有效压缩操作的形式。
  3. 避免将不相关的模型更新上传到服务器,降低通信开销。

4.4.2 参与方选择

判断资源与训练任务相关性,判断计算时间,综合考虑参与方。

第5章 纵向联邦学习

我们把在数据集上具有相同的样本空间、不同的特征空间的参与方所组成的联邦学习归类为纵向联邦学习(Vertical FederatedLearning,VFL),也可以理解为 按特征划分的联邦学习 。“纵向”一词来自“纵向划分”(vertical partition),该词广泛用于数据库表格视图的语境中,如表格中的列被纵向划分为不同的组,且每列表示所有样本的一个特征。本章将介绍VFL,包括其定义、架构、算法和面临的研究挑战。

5.1 纵向联邦学习的定义

出于不同的商业目的,不同组织的数据集通常具有不同的特征空间,但这些组织可能共享一个巨大的用户群体。纵向联邦学习的目的是,通过利用由参与方收集的所有特征,协作地建立起一个共享的机器学习模型。

5.2 纵向联邦学习的架构

在这里插入图片描述

  1. 加密实体对齐。通过加密方式对其共同用户。
  2. 加密模型训练。
    1. 步骤1 协调者C创建密钥对,并将公共密钥发送给A方和B方。
    2. 步骤2 A方和B方对中间结果进行加密和交换。中间结果用来帮助计算梯度和损失值。
    3. 步骤3 A方和B方计算加密梯度并分别加入附加掩码(additional mask)。B方还会计算加密损失。A方和B方将加密的结果发送给C方。
    4. 步骤4 C方对梯度和损失信息进行解密,并将结果发送回A方和B方。A方和B方解除梯度信息上的掩码,并根据这些梯度信息来更新模型参数。

5.3 纵向联邦学习算法

5.3.1 安全联邦线性回归

同态加密,联邦线性回归模型。

  • 协同训练。AB方协同训练发送值给C方,C方综合二者结果解密并更新,
  • 协同预测。AB方各自预测一个值,发送给C,C将值加总计算预测结果。

5.3.2 安全联邦提升树

Secure federated tree-boosting,SecureBoost
SecureBoost:结合XGBoost,使用决策树预测输出

第6章 联邦迁移学习

向联邦学习要求所有参与方的样本具有相同的特征空间,而纵向联邦学习需要各参与方具有相同的样本空间和不同的特征空间。然而在实践中,我们经常会面临的情况是,各参与方间并没有足够的共同特征或样本。在这种情况下,通过迁移学习(TransferLearning,TL)技术,我们仍然可以建立一个拥有良好性能的联邦学习模型。我们将这种结合称为联邦迁移学习(Federated Transfer Learning,FTL)。

6.1 异构联邦学习

数据集差异

  • 参与方的数据集之间可能只有少量的重叠样本和特征。
  • 这些数据集的分布情况可能差别很大。
  • 这些数据集的规模可能差异巨大。
  • 某些参与方可能只有数据,没有或只有很少的标注数据。

6.2 联邦迁移学习的分类与定义

迁移学习的本质是发现资源丰富的源域(source domain)和资源稀缺的目标域(target domain)之间的不变性(或相似性),并利用该不变性在两个领域之间传输知识。

  • 基于实例的联邦迁移学习
    横向:挑选或加权训练样本,较小分布差异;纵向:挑选特征,避免负迁移
  • 基于特征的联邦迁移学习
    参与方协同学习一个共同的表征空间,该空间可以缓解从不同数据转换来的表征之间的分布和语义差异。横向:最小化参与方样本间的最大平均差异;纵向:最小化对齐样本中属于不同参与方的表征距离。
  • 基于模型的联邦迁移学习
    协同学习共享模型。横向本身就是一个基于模型的联邦迁移学习。

6.3 联邦迁移学习框架

在这里插入图片描述

第7章 联邦学习激励机制

如何建立激励机制使得参与方持续参与到数据联邦中是一项重要的挑战。实现这一目标的关键是制定一种奖励方法,公平公正地与参与方们分享联邦产生的利润。
本章介绍联邦学习激励方法(Federated Learning Incentivizer,FLI)的各种激励分配方法。它的任务目标为最大化联邦的可持续性经营,同时最小化参与方间的不公平性,动态地将给定的预算分配给联邦中的各个参与方,还可以扩展为一种能够帮助联邦抵御恶意的参与方的调节机制。

7.1 贡献的收益

如何通过情景感知等方式量化每个参与方为联邦带来的收益,从而实现联邦长期的可持续经营。
在这里插入图片描述

7.1.1 收益分享博弈

  • 平等(Egalitarian):平均分配。
  • 边际收益(Marginal gain):收益为加入团队时产生的效用。个体收益分享(Individual profit-sharing)方法、Shapley博弈收益分享方法(The Shapley game profit-sharing)。
  • 边际损失(Marginal loss):收益为离开团队时产生的效用。工会博弈收益分享方法(The Labour Union game profit-sharing)、公平价值博弈方法(The Fair-value game)。

联邦学习激励方法(FLI)

7.1.2 反向拍卖

  • 用于传感器数据的反向拍卖方法:该方法的目的是在提供有质量的数据前提下,寻求最低廉的传感器组合方式。这类方法基于一种假设,即中央实体清楚自己需要何种数据(例如地理分布)。然而,这类方法通常假设数据质量与成本或代价无关(因为反向拍卖需要相同的物品)。一种不好的结果是,参与方可能仅仅为了获取回报,而提交不具有信息的数据来套利。
    另一种获取指定质量的数据的方法是发布奖励,是一种只能接受或放弃的方法。(三种奖励设计方案:通过输出协议,通过信息理论分析,通过模型改良)

7.2 注重公平的收益分享框架

介绍一种FLI方案。

7.2.1 建模贡献

我们假设数据联邦使用联邦学习惯用的模型训练同步模式[64],其中参与方以轮次为单位共享模型参数。在轮次t中,一个参与方i可以把在数据集上训练的本地模型贡献给联邦。联邦可以根据FLI基本方案对参与方i的数据贡献进行评估。

在这里插入图片描述

为此,联邦可以进行沙盒(sandbox)模拟,以估计参与方的贡献对模型性能的影响。评估的结果由一个变量qi(t)≥0记录,表示联邦模型从参与方i的最新贡献中可以获得的期望边际收益。所提出的激励方案与贡献分数产生的方式完全无关。因此,我们不关注qi(t)生成的确切机制,并假设该数值可用来作为FLI的输入。

7.2.2 建模代价

设ci(t)表示参与方i将di(t)贡献给联邦所需要的代价,有许多种方式可以计算。尽管基于市场调研建立计算模型是可行的,但更实用的解决方案仍然是基于竞拍的自述方法。

7.2.3 建模期望损失

对于每一位参与方i,随着时间的推移,联邦会持续追踪从贡献给联邦的数据中得到的收益回报。因为这个值代表了参与方目前已经收到的和其应该收到的收益之间的差别,我们将其定义为期望损失(regret)。

7.2.4 建模时间期望损失

在一些情况下,由于联邦中预算的限制,一次性付清ui(t)需要的花费代价可能会过高。对于这种情况,联邦需要计算分期支付,以多个轮次向参与方支付收益回报。参与方在当前支付预算中所占的份额B(t),取决于他们的期望损失以及他们等待报酬完全被支付所消耗的时间。

7.2.5 策略协调

公平标准:

  • 贡献公平性(Contribution Fairness)。参与方i的回报应该与其对联邦qi(t)的贡献明确相关。
  • 期望损失分配公平性(Regret Distribution Fairness)参与方间的期望损失和时间期望损失应该尽可能的小。
  • 期望公平性(Expectation Fairness)。参与方的期望损失和时间期望损失随时间推移而产生的变化应该尽可能的小。
    为了满足全部公平性标准,随着时间的推移,联邦应该最大化“价值减期望损失偏移(value-minus-regret drift)”目标函数。

7.2.6 计算收益评估比重

第8章 联邦学习与计算机视觉、自然语言处理及推荐系统

8.1 联邦学习与计算机视觉

8.1.1 联邦计算机视觉

虽然计算机视觉近年来取得了空前的进步,并引领着人工智能时代的变革,但这一非凡的成就很大程度是建立在巨大数量的图像数据的可获得性基础上的。市面上最为成功的计算机视觉应用,通常都是由具有大量资源或庞大用户基础的组织研发的,因为他们可以收集到大量且高质量的数据。
这种以资源为中心的深度学习开发模式,一方面确实促进了AI的研究和发展,但另一方面也阻碍了大量小公司对AI技术的使用。因为这些小公司通常只有有限的数据资源。一种可能的获取数据的方式是通过数据共享。然而,由于数据隐私、监管风险、缺乏激励等原因,许多企业并不愿与其他企业直接共享数据。
如:大公司有足够的资源以训练模型,但小公司虽持有良好的数据,但样本数不够,训练效果不好。使用联邦学习可以在保证安全性 下共享检测模型。

8.2 联邦学习与自然语言处理

RNN,LSTM,GRU

8.2.1 联邦自然语言处理

联邦学习在NLP中的一个典型应用是基于移动设备用户频繁键入的单词来学习词库外(Out-of-Vocabulary,OOV)单词[62]。词库外单词是指不包含在用户移动设备的词库表中的词汇。词库表中缺少的单词无法通过键盘提示、自动更正或手势输入来预测。从单个用户的移动设备学习OOV单词来生成模型是不切实际的,因为每个用户的设备通常只会存储有限大小的词库表。收集所有用户的数据来训练OOV单词生成模型也是不可行的,因为OOV单词通常包含用户的敏感内容。在这种场景中,联邦学习显得特别实用,因为它可以根据所有移动用户的数据,训练一个共享的OOV生成模型,并且不需要将敏感内容传输到中心服务器或云服务器上。
任何序列化模型,例如LSTM、GRU和WaveNet,都能用来学习OOV单词。联邦OOV模型训练流程类似于图8-2。该流程迭代地执行以下步骤来训练共享OOV生成模型,直到模型收敛为止。

在这里插入图片描述
在这里插入图片描述

在联邦学习期间,位于每一台移动设备的OOV生成模型将不断得到更新,而训练数据将留在设备中,所以每台移动设备最终都能得到一个更强大的OOV生成模型。如图8-3所示,基于所有移动用户数据而训练得到的OOV模型,能够为每个移动端用户提供丰富多样的查询建议。需要注意的是,用户可以完全决定自己加入或离开联邦学习。所以,服务器应该设立一种分析机制,以监测设备的相关统计数据,例如每轮训练中有多少台设备加入或离开联邦学习过程。

8.2.2 业界研究进展

唤醒词检测(hey,siri):高召回率,低误报率,对背景噪声强鲁棒性,由于一直运行,也要求有限的资源运算。

8.3 联邦学习与推荐系统

推荐系统:

  • 克服信息过载
  • 提供定制化推荐
  • 合理利用资源

8.3.1 推荐模型

  1. 协同过滤(Collaborative Filtering,CF)。用户-商品矩阵,稀疏矩阵。(低秩因子分解方法(Low-
    rank factorization),也称为矩阵因子分解)
  2. 基于内容的推荐系统(Content-based Recommendation System)。商品描述与用户画像的匹配度,关键词对齐。
  3. 基于模型的推荐系统(Model-based Recommendation System)。用户-商品关系建模。
  4. 混合推荐系统(Hybrid Recommendation System)。协同过滤+内容过滤。

8.3.2 联邦推荐系统

通常,一个协同过滤模型可以表示为,由多个用户因子向量(每个向量表示一个用户)组成的用户因子矩阵(user factor matrix)、由多个商品因子向量(每个向量表示一件商品)组成的商品因子矩阵(item factor matrix)的组合。联邦协同过滤由所有用户共同地学习这两个矩阵得到,如图8-4所示。包含以下五个步骤:
在这里插入图片描述

在这里插入图片描述

上述过程是联邦协同过滤的一般情况。我们可以利用更强大的模型来代替协同过滤模型,如深度因子分解机(Factorziation Machine,FM)模型[301]以进一步提高性能。除了定制化的推荐任务,联邦推荐系统还可以利用来自不同参与方的不同特征提高推荐的精确度。

文献[65]

第9章 联邦强化学习

9.1 强化学习介绍

在这里插入图片描述

强化学习(Reinforcement Learning,RL)是机器学习的一个分支,主要 研究序列决策问题 。强化学习系统通常由一个动态环境和与环境进行交互的一个或多个智能体(agent)组成。智能体根据当前环境条件选择动作决策,环境在智能体决策的影响下发生相应改变,智能体可以根据自身的决策、环境的改变过程得出奖励。智能体必须处理顺序决策问题,从而获得最大化价值函数的结果(即期望的折扣奖励总和或期望奖励)。传统的强化学习过程可以表示为马尔可夫决策过程(Markov DecisionProcess,MDP)。
如图9-1所示,智能体首先将观察环境的状态(State),然后基于这个状态选择动作(Action)。智能体期望根据所选的动作,从环境中得到奖励(Reward)。智能体的奖励与其上一步的状态、下一步状态和所做出的决策等因素有关。智能体在状态-动作-奖励-状态周期(SARS)中循环移动。
除了智能体和环境,强化学习系统还包括四个关键子元素:策略(Policy)、奖励信号(Reward)、价值函数(Value function)及可选的环境模型。

9.1.1 策略

决策方法

9.1.2 奖励

奖励方法

9.1.3 价值函数

回报奖励的方法

9.1.4 环境模型

模拟环境动作的虚拟模型

9.1.5 强化学习应用举例

热点:自适应控制、最优控制、离散和连续时间动态系统的反馈控制。
在这里插入图片描述

9.2 强化学习算法

分类方式:

  1. 基于模型与无模型
  2. 基于价值与基于策略
  3. 蒙特卡洛更新与时间差分更新
  4. 在策略与离策略

在这里插入图片描述

9.3 分布式强化学习

当智能体需要探索一个巨大的状态-决策空间,可能会非常耗时或需要大量的算力。

9.3.1 异步分布式强化学习

多个智能体分别探索它们自己的环境,并异步地更新一组全局参数。这允许大量的参与方来协作地学习。由于存在延迟可能会遇到陈旧梯度问题。

  • 异步优势动作评价算法(Asynchronous Advantage Actor-Critic,A3C)
  • 通用强化学习架构(Gorila)

9.3.2 同步分布式强化学习

  • Sync-Opt同步随机优化
  • 优势动作评价算法(Advantage Actor-Critic,A2C)

9.4 联邦强化学习

相较于分布式强化学习更加安全

9.4.1 联邦强化学习背景

9.4.2 横向联邦强化学习 HFRL

并行强化学习(Parallel Reinforcement Learning),多个智能体被假设执行同一任务(与状态和动作相关的奖励相同)。智能体们可能在不同环境中进行学习。需要注意的是,大多数并行强化学习的设置采用的是迁移智能体经验或梯度的操作。显然,由于隐私保护问题,这类方法是行不通的,因此,人们采用HFRL方法来应对隐私保护问题。HFRL应用并行强化学习应用的基础设置,并将隐私保护任务作为一项额外约束(同时对于联邦服务器和智能体)。
在这里插入图片描述

9.4.3 纵向联邦强化学习 VFRL

联邦DQN

第10章 应用前景

金融、医疗、教育、城市计算和智慧城市、边缘计算和物联网、区块链、第五代移动网路

参考文献
[35]PHONG L T,AONO Y,HAYASHI T,et al.Privacy-preservingdeep learning via additively homomorphic encryption[J].IEEETransactions on Information Forensics andSecurity,2018,13(5):1333-1345.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot+maven的个人理财管理系统

基于springbootmaven的个人理财管理系统,演示地址:个人理财系统登录界面 用户名:admin,密码:123456 共分为用户信息管理(用户信息,银行卡,个人征信),理财产品管理(零钱理财,工资理财,期限理财&#xff0c…

oracle查询开始时间和结束时间之间的连续月份

SELECT TO_CHAR(ADD_MONTHS(TO_DATE(2023-01,YYYY-MM), ROWNUM - 1), YYYY-MM) AS fmonth FROM DUALCONNECT BY ROWNUM < CEIL(MONTHS_BETWEEN(TO_DATE(2023-11, YYYY-MM), TO_DATE(2023-01,YYYY-MM))1)

vue跨域请求

vue.config.js devServer:{proxy:"http://localhost:8081"}main.js中定义 import axios from "axios"; axios&#xff0c; App.vue中引用 <template><Article/> </template><script> import Article from "/components/Ar…

jq+canvas:实现图片上传+裁剪+保存等功能

效果图 上传图片之前&#xff1a; 上传图片之后&#xff0c;点击放大/缩小后的效果&#xff1a; 裁剪之后的效果&#xff1a; 代码实现如下&#xff1a; 1.html部分 <input type"file" id"fileInput" accept"image/png, image/gif, image/j…

【Bootloader学习理解学习--加强版】

笔者在接着聊一下bootloader&#xff0c;主要针对MCU的Bootloader。 笔者之前介绍过一篇Bootloader文章&#xff0c;主要是其概念、一些升级包的格式和升级流程&#xff0c;本次接着来说一下。 1、MCU代码运行方式 之前文章也介绍过&#xff0c;MCU的代码运行方式有两种&…

Nacos源码本地搭建流程及目录结构解读

下载地址 https://github.com/alibaba/nacos 目录结构 本地单机启动 首先maven编译完成之后在console下面找到Nacos 这个就是主启动类 然后再vm中配置参数-Dnacos.standalonetrue表示单机启动 当控制台没有报错 访问 http://localhost:8848/nacos 控制台界面登录进来之后显…

27.0/多态/对象向上转型/向下转型/抽象类/抽象方法。

目录 27.1为什么使用多态? 27.1.2什么是多态 27.1.3对象多态 27.1.4多态的使用前提 27.2 向上转型 27.3向下转型 (面试题) 27.4抽象类和抽象方法 特点(面试题): 27.1为什么使用多态? 需求1&#xff1a;动物园让我们实现一个功能&#xff1a; 创建一个狗类 &#xff0c;狗…

cpu飙高问题,案例分析(二)——批处理数据过大引起的应用服务CPU飙高

上接cpu飙高问题&#xff0c;案例分析&#xff08;一&#xff09; 一、批处理数据过大引起的应用服务CPU飙高 1.1 问题场景 某定时任务job 收到cpu连续&#xff08;配置的时间是180s&#xff09;使用超过90%的报警; 1.2 问题定位 观察报警中的jvm监控&#xff0c;发现周期…

软件测试测试文档编写

在软件测试中的流程中&#xff0c;测试文档也是一个重要的流程&#xff0c;所以测试人员也需要学习测试文档的编写和阅读。 一、定义&#xff1a;   测试文档&#xff08;Testing Documentation&#xff09;记录和描述了整个测试流程&#xff0c;它是整个测试活动中非常重要…

基于若依的ruoyi-nbcio流程管理系统增加流程节点配置(二)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 上一节把数据库与相关基础数据字典准备好&#xff0c;下面就来实现相应的功能&#xff0c;目前先针对自定义…

大学招聘平台既然存在逻辑漏

找到一个学校的就业信息网&#xff0c; 随便点击一个招聘会&#xff0c;并且抓包查看返回包 注意返回包中的dwmc参数&#xff0c;这个是公司名称&#xff0c;zplxr参数这个是招聘人员姓名&#xff0c;lxdh参数是电话号码&#xff0c;这几个参数后面有用 在第一张图点击单位登…

Python 爬虫 案例 之 豆瓣Top250电影数据

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 课程亮点&#xff1a; 1、动态数据抓包演示 2、csv文件保存 3、requests模块的使用 4、parsel解析数据的使用 环境介绍&#xff1a; python 3.8 pycharm 模块…

一种方便、优美的使用Python调用fofa API的方法

免责声明&#xff1a;由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c; 文章作者不为此承担任何责任。 学习网络安全的过程中&#xff0c;绕不开fofa搜索&#xff0c;我的需求是使用fofa获取互联网所…

C++不同平台下的RTTI实现

给定一个含有虚函数的对象的地址&#xff0c;找到对应的类名&#xff0c;不同平台下方法也不同&#xff0c;这是由于RTTI实现并没有统一的标准。 Linux&#xff1a; #include <iostream> #include <typeinfo>class Person { public:virtual void func(){std::cout…

[算法总结] - 蓄水池采样算法

问题描述 在长度为N的数组中&#xff0c;随机等概率选取K个元素&#xff0c;如何实现这个随机算法。 思路很简单&#xff0c;生成一个[0, N]的随机数index&#xff0c;然后返回index上的数值即可。 但是&#xff0c;如果输入是一个长度未知的数组比如stream&#xff0c;先遍历…

【Jmeter】什么是BeanShell?

一、什么是BeanShell&#xff1f; BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器&#xff0c;JMeter性能测试工具也充分接纳了BeanShell解释器&#xff0c;封装成了可配置的BeanShell前置和后置处理器&#xff0c;分别是 BeanShell Prep…

中科大蒋彬课题组开发 FIREANN,分析原子对外界场的响应

内容一览&#xff1a; 使用传统方法分析化学系统与外场的相互作用&#xff0c;具有效率低、成本高等劣势。中国科学技术大学的蒋彬课题组&#xff0c;在原子环境的描述中引入了场相关特征&#xff0c;开发了 FIREANN&#xff0c;借助机器学习对系统的场相关性进行了很好的描述。…

盘点72个Android系统源码安卓爱好者不容错过

盘点72个Android系统源码安卓爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 链接&#xff1a;https://pan.baidu.com/s/1qiWeLjF2i4dlgmTYgPPSvw?pwd8888 提取码&#xff1a;8888 项目名称 A keyboardlisten…

【链接MySQL】教你用VBA链接MySQL数据库

hi&#xff0c;大家好呀&#xff01; 之前呢&#xff0c;给大家分享过一个自制链接表管理器的文章&#xff0c;文章中有链接SQL Server数据库的代码&#xff0c;大家对这一段代码比较有兴趣&#xff0c;既然大家有兴趣&#xff0c;那我们今天就来讲一下链接数据库的代码。 这…

Vue路由嵌套和携带参数的几种方法

1、路由嵌套 路由嵌套逻辑&#xff1a; router.index.js中使用children嵌套子路由 //该文件专门用于创建整个文件的路由器 import VueRouter from vue-routerimport About from "/pages/About"; import Home from "/pages/Home"; import News from "…