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

【优化论】约束优化算法

在这里插入图片描述

约束优化算法是一类专门处理目标函数在存在约束条件下求解最优解的方法。为了更好地理解约束优化算法,我们需要了解一些核心概念和基本方法。

约束优化的核心概念

  1. 可行域(Feasible Region)
    • 比喻:想象你在一个园艺场里种植不同种类的植物,但只有特定区域可以种植。可行域就是这些允许种植的区域。
    • 技术细节:可行域是满足所有约束条件的所有点的集合。若约束条件为 g i ( x ) ≤ 0 g_i(x) \leq 0 gi(x)0 h j ( x ) = 0 h_j(x) = 0 hj(x)=0 ,则可行域可以表示为 { x ∣ g i ( x ) ≤ 0 , h j ( x ) = 0 } \{ x \, | \, g_i(x) \leq 0, \, h_j(x) = 0 \} {xgi(x)0,hj(x)=0}
  2. 拉格朗日乘子法(Lagrange Multipliers)
    • 比喻:假设你在调整种植区域时,既想保持植物健康生长(目标函数),又要遵循园艺场的规定(约束条件)。拉格朗日乘子法就像在这两者之间找到一个平衡点
    • 技术细节:拉格朗日乘子法引入拉格朗日乘子 λ \lambda λ ,构造拉格朗日函数 L ( x , λ ) = f ( x ) + λ g ( x ) L(x, \lambda) = f(x) + \lambda g(x) L(x,λ)=f(x)+λg(x) 。通过求解 ∇ L = 0 \nabla L = 0 L=0 可以找到约束优化问题的解。

常用的约束优化算法

  1. 罚函数法(Penalty Method)
    • 比喻:罚函数法就像在种植区域外种植植物时会受到罚款,这样你会尽量保持在可行域内
    • 技术细节:将约束条件转换为目标函数的一部分,加上一个惩罚项,使得在违反约束条件时目标函数的值变得很大。例如,对于约束 g ( x ) ≤ 0 g(x) \leq 0 g(x)0 ,构造目标函数 f ( x ) + 1 2 ρ max ⁡ ( 0 , g ( x ) ) 2 f(x) + \frac{1}{2}\rho \max(0, g(x))^2 f(x)+21ρmax(0,g(x))2 ,其中 ρ \rho ρ 是罚参数。
  2. 障碍函数法(Barrier Method)
    • 比喻:障碍函数法就像在可行域边界设置了障碍物,防止你越过边界。
    • 技术细节:引入障碍函数 ϕ ( x ) \phi(x) ϕ(x) ,当 x x x 靠近约束边界时,障碍函数值趋于无穷大。例如,对于约束 g ( x ) ≤ 0 g(x) \leq 0 g(x)0 ,构造目标函数 f ( x ) − μ log ⁡ ( − g ( x ) ) f(x) - \mu \log(-g(x)) f(x)μlog(g(x)) ,其中 μ \mu μ 是障碍参数。
  3. 拉格朗日乘子法(Lagrangian Method)
    • 比喻:拉格朗日乘子法就像同时调整种植区域和遵守规定的权重,使两者达到平衡。
    • 技术细节:构造拉格朗日函数 L ( x , λ , ν ) = f ( x ) + ∑ λ i g i ( x ) + ∑ ν j h j ( x ) L(x, \lambda, \nu) = f(x) + \sum \lambda_i g_i(x) + \sum \nu_j h_j(x) L(x,λ,ν)=f(x)+λigi(x)+νjhj(x) ,通过求解 ∇ L = 0 \nabla L = 0 L=0 可以找到问题的鞍点,从而求解优化问题。

实例一

让我们通过一个实例来具体了解约束优化的过程:

假设我们要最小化函数 f ( x ) = x 1 2 + x 2 2 f(x) = x_1^2 + x_2^2 f(x)=x12+x22 ,但有约束 g ( x ) = x 1 + x 2 − 1 ≤ 0 g(x) = x_1 + x_2 - 1 \leq 0 g(x)=x1+x210

  1. 罚函数法
    • 构造罚函数: P ( x ) = x 1 2 + x 2 2 + 1 2 ρ max ⁡ ( 0 , x 1 + x 2 − 1 ) 2 P(x) = x_1^2 + x_2^2 + \frac{1}{2}\rho \max(0, x_1 + x_2 - 1)^2 P(x)=x12+x22+21ρmax(0,x1+x21)2
    • x 1 + x 2 ≤ 1 x_1 + x_2 \leq 1 x1+x21 时,无惩罚项;当 x 1 + x 2 > 1 x_1 + x_2 > 1 x1+x2>1 时,有惩罚项,导致目标函数值增加。【目标是使目标函数最小】
  2. 障碍函数法
    • 构造障碍函数: B ( x ) = x 1 2 + x 2 2 − μ log ⁡ ( 1 − x 1 − x 2 ) B(x) = x_1^2 + x_2^2 - \mu \log(1 - x_1 - x_2) B(x)=x12+x22μlog(1x1x2)
    • x 1 + x 2 x_1 + x_2 x1+x2 接近 1 1 1 时, − log ⁡ ( 1 − x 1 − x 2 ) -\log(1 - x_1 - x_2) log(1x1x2) 的值趋于无穷大,使得目标函数值增大。
  3. 拉格朗日乘子法
    • 构造拉格朗日函数: L ( x , λ ) = x 1 2 + x 2 2 + λ ( x 1 + x 2 − 1 ) L(x, \lambda) = x_1^2 + x_2^2 + \lambda (x_1 + x_2 - 1) L(x,λ)=x12+x22+λ(x1+x21)
    • 求解 ∇ L = 0 \nabla L = 0 L=0 得到: 2 x 1 + λ = 0 2x_1 + \lambda = 0 2x1+λ=0 2 x 2 + λ = 0 2x_2 + \lambda = 0 2x2+λ=0 x 1 + x 2 − 1 = 0 x_1 + x_2 - 1 = 0 x1+x21=0
    • 解得 x 1 = x 2 = 1 2 , λ = − 1 x_1 = x_2 = \frac{1}{2} ,\lambda = -1 x1=x2=21λ=1

实例二

我们需要最小化函数 f ( x , y ) = x + 3 y f(x, y) = x + \sqrt{3}y f(x,y)=x+3 y ,并且满足约束条件 x 2 + y 2 = 1 x^2 + y^2 = 1 x2+y2=1

罚函数法

  1. 构造罚函数
    首先,我们将约束条件转换为一个惩罚项。对于约束条件 x 2 + y 2 = 1 x^2 + y^2 = 1 x2+y2=1 ,我们可以构造以下罚函数: P ( x , y ) = ( x 2 + y 2 − 1 ) 2 P(x, y) = (x^2 + y^2 - 1)^2 P(x,y)=(x2+y21)2

    这里,我们使用平方形式来确保任何违约束的情况都会被显著地惩罚

  2. 构造新的目标函数
    将惩罚项加入到目标函数中,形成新的目标函数: F ( x , y ) = x + 3 y + ρ 2 ( x 2 + y 2 − 1 ) 2 F(x, y) = x + \sqrt{3}y + \frac{\rho}{2} (x^2 + y^2 - 1)^2 F(x,y)=x+3 y+2ρ(x2+y21)2

    其中, ρ \rho ρ 是一个正的罚参数,用来调整惩罚项的权重。

  3. 求解优化问题
    我们的目标是找到使新的目标函数 F ( x , y ) F(x, y) F(x,y) 最小的 x x x y y y 值。

在这里插入图片描述

二次罚函数法算法详解

在这里插入图片描述

基本概念

  1. 目标函数:我们想最小化的函数。例如, f ( x , y ) = x + 3 y f(x, y) = x + \sqrt{3}y f(x,y)=x+3 y
  2. 约束条件:限制条件,必须满足。例如, x 2 + y 2 = 1 x^2 + y^2 = 1 x2+y2=1

罚函数法通过将约束条件转换为惩罚项,加入到目标函数中,从而形成新的目标函数。这个新目标函数在每次迭代时会逐步增加惩罚力度,使得解最终满足约束条件。

步骤解析

第一步:初始化

  1. 给定初始罚参数 σ 1 > 0 \sigma_1 > 0 σ1>0
    • 这是初始的惩罚参数。惩罚参数决定了违反约束条件时受到的惩罚程度。
    • 例如,设定 σ 1 = 1 \sigma_1 = 1 σ1=1
  2. 设定初始点 x 0 x^0 x0
    • 这是我们开始优化的初始猜测值。
    • 例如, x 0 = [ 0.5 , 0.5 ] x^0 = [0.5, 0.5] x0=[0.5,0.5]
  3. 设定迭代次数 k ← 1 k \leftarrow 1 k1
    • 这是一个计数器,用于跟踪迭代次数。
  4. 设定惩罚因子增长系数 ρ > 1 \rho > 1 ρ>1
    • 这是一个用来增加惩罚参数的因子,每次迭代后惩罚参数会乘以这个因子。
    • 例如,设定 ρ = 10 \rho = 10 ρ=10

第二步:迭代过程

  1. while 循环
    • 这个循环会持续运行,直到满足某个收敛准则(例如,目标函数值变化很小,或达到最大迭代次数)。
  2. 以当前点为初始点,求解新的点
    • 我们要最小化新的目标函数 P E ( x , σ k ) P_E(x, \sigma_k) PE(x,σk) ,找到新的 x k + 1 x^{k+1} xk+1

    • 新的目标函数形式为:

      P E ( x , σ k ) = f ( x ) + σ k 2 ( x 2 + y 2 − 1 ) 2 P_E(x, \sigma_k) = f(x) + \frac{\sigma_k}{2} (x^2 + y^2 - 1)^2 PE(x,σk)=f(x)+2σk(x2+y21)2

    • 使用数值优化方法(如梯度下降法)来求解这个新的目标函数。

  3. 更新罚参数
    • 计算新的罚参数 σ k + 1 = ρ σ k \sigma_{k+1} = \rho \sigma_k σk+1=ρσk
  4. 更新迭代次数
    • k ← k + 1 k \leftarrow k + 1 kk+1
  5. 结束迭代
    • 当满足收敛准则时,结束 while 循环。

详细解释与实例

初始化

我们设定初始参数:

σ 1 = 1 , x 0 = [ 0.5 , 0.5 ] , ρ = 10 , k = 1 \sigma_1 = 1, \quad x^0 = [0.5, 0.5], \quad \rho = 10, \quad k = 1 σ1=1,x0=[0.5,0.5],ρ=10,k=1

迭代过程

假设我们要最小化以下目标函数:

f ( x , y ) = x + 3 y f(x, y) = x + \sqrt{3}y f(x,y)=x+3 y

并且满足约束条件:

x 2 + y 2 = 1 x^2 + y^2 = 1 x2+y2=1

第一次迭代

  1. 构造新的目标函数

    P E ( x , σ 1 ) = x + 3 y + 1 2 σ 1 ( x 2 + y 2 − 1 ) 2 P_E(x, \sigma_1) = x + \sqrt{3}y + \frac{1}{2} \sigma_1 (x^2 + y^2 - 1)^2 PE(x,σ1)=x+3 y+21σ1(x2+y21)2

    其中 σ 1 = 1 \sigma_1 = 1 σ1=1

  2. 求解新目标函数
    使用数值优化方法找到最小化 P E ( x , 1 ) P_E(x, 1) PE(x,1) x x x y y y 值。
    假设我们找到新的点 x 1 x^1 x1

  3. 更新罚参数

    σ 2 = ρ σ 1 = 10 × 1 = 10 \sigma_2 = \rho \sigma_1 = 10 \times 1 = 10 σ2=ρσ1=10×1=10

  4. 更新迭代次数

    k ← 2 k \leftarrow 2 k2

第二次迭代

  1. 构造新的目标函数

    P E ( x , σ 2 ) = x + 3 y + 1 2 σ 2 ( x 2 + y 2 − 1 ) 2 P_E(x, \sigma_2) = x + \sqrt{3}y + \frac{1}{2} \sigma_2 (x^2 + y^2 - 1)^2 PE(x,σ2)=x+3 y+21σ2(x2+y21)2

    其中 σ 2 = 10 \sigma_2 = 10 σ2=10

  2. 求解新目标函数
    使用数值优化方法找到最小化 P E ( x , 10 ) P_E(x, 10) PE(x,10) x x x y y y 值。
    假设我们找到新的点 x 2 x^2 x2

  3. 更新罚参数

    σ 3 = ρ σ 2 = 10 × 10 = 100 \sigma_3 = \rho \sigma_2 = 10 \times 10 = 100 σ3=ρσ2=10×10=100

  4. 更新迭代次数

    k ← 3 k \leftarrow 3 k3

这个过程不断重复,直到满足收敛准则为止。

什么是收敛准则

收敛准则是用来决定优化算法何时停止迭代的标准。常见的收敛准则包括以下几种:

  1. 目标函数值变化很小
    • 如果在连续的迭代中,目标函数的值变化很小(小于某个阈值),则认为算法已收敛,可以停止迭代。
    • 例如,设定阈值为 ϵ \epsilon ϵ,如果 ∣ f ( x k + 1 ) − f ( x k ) ∣ < ϵ |f(x^{k+1}) - f(x^k)| < \epsilon f(xk+1)f(xk)<ϵ,则停止迭代。
  2. 梯度值很小
    • 如果目标函数的梯度(或导数)值很小,表示已经到达了极值点附近,则可以停止迭代。
    • 例如,如果 ∥ ∇ f ( x k ) ∥ < ϵ \|\nabla f(x^k)\| < \epsilon ∥∇f(xk)<ϵ,则停止迭代。
  3. 迭代次数达到上限
    • 如果迭代次数达到了预先设定的最大迭代次数,则停止迭代。
    • 例如,设定最大迭代次数为 N N N,如果 k ≥ N k \geq N kN,则停止迭代。

相关文章:

【优化论】约束优化算法

约束优化算法是一类专门处理目标函数在存在约束条件下求解最优解的方法。为了更好地理解约束优化算法&#xff0c;我们需要了解一些核心概念和基本方法。 约束优化的核心概念 可行域&#xff08;Feasible Region&#xff09;&#xff1a; 比喻&#xff1a;想象你在一个园艺场…...

7寸微型FPV无人机技术详解

对于7寸微型FPV&#xff08;First Person View&#xff0c;第一人称视角&#xff09;无人机技术的详解&#xff0c;可以从以下几个方面进行介绍&#xff1a; 一、定义与基本概念 FPV无人机&#xff0c;全称为“第一人称视角无人机”&#xff0c;它利用安装在无人机上的摄像头…...

大数据面试题之Presto[Trino](2)

目录 描述Presto中的Connector是什么&#xff1f; Presto如何实现数据源的插件化&#xff1f; 如何在单机上安装Presto&#xff1f; 描述在集群环境中部署Presto的步骤。 如何为Presto配置JVM参数&#xff1f; 如何优化Presto的配置以提高性能&#xff1f; Presto的日…...

STM32和DHT11使用显示温湿度度(代码理解)+单总线协议

基于STM32CT&#xff0c;利用DHT11采集温湿度数据&#xff0c;在OLED上显示。一定要阅读DHT11数据手册。 1、 DHT11温湿度传感器 引脚说明 1、VDD 供电3.3&#xff5e;5.5V DC 2、DATA 串行数据&#xff0c;单总线 3、NC 空脚 4、GND 接地&#xff0c;电源负极 硬件电路 微…...

EVM-MLIR:以MLIR编写的EVM

1. 引言 EVM_MLIR&#xff1a; 以MLIR编写的EVM。 开源代码实现见&#xff1a; https://github.com/lambdaclass/evm_mlir&#xff08;Rust&#xff09; 为使用MLIR和LLVM&#xff0c;将EVM-bytecode&#xff0c;转换为&#xff0c;machine-bytecode。LambdaClass团队在2周…...

深入Django(八)

掌握Django的管理后台 引言 在前七天的教程中&#xff0c;我们介绍了Django的基础架构、模型、视图、模板、URL路由、表单系统以及数据库迁移。今天&#xff0c;我们将深入了解Django的管理后台&#xff0c;这是一个功能强大的内置管理界面&#xff0c;用于创建、更新、查看和…...

华为开发者大会2024纪要:鸿蒙OS的全新篇章与AI大模型的革命

华为开发者大会2024纪要:鸿蒙OS的全新篇章与AI大模型的革命 在科技的浪潮中,华为再次引领潮流,2024年的开发者大会带来了一系列令人瞩目的创新成果。从鸿蒙操作系统的全新Beta版到盘古大模型的震撼发布,华为正以前所未有的速度重塑智能生态。以下是本次大会的亮点,让我们…...

吴恩达深度学习笔记:机器学习策略(2)(ML Strategy (2)) 2.7-2.8

目录 第三门课 结构化机器学习项目&#xff08;Structuring Machine Learning Projects&#xff09;第二周&#xff1a;机器学习策略&#xff08;2&#xff09;(ML Strategy (2))2.7 迁移学习&#xff08;Transfer learning&#xff09; 第三门课 结构化机器学习项目&#xff0…...

云计算渲染时代:选择Blender或KeyShot进行高效渲染

在云渲染技术日益成熟的背景下&#xff0c;挑选一款贴合项目需求的3D渲染软件显得尤为关键。当前&#xff0c;Blender与KeyShot作为业界领先的全能渲染解决方案&#xff0c;广受推崇。它们虽皆能创造出令人信服的逼真视觉效果&#xff0c;但在特色功能上各有所长。本篇文章旨在…...

html5中的iframe

HTML5中的iframe 浏览上下文是浏览器展示文档的环境&#xff0c;通常是一个tab标签页&#xff0c;一个窗体或者是浏览器页面的一部分。每个浏览上下文都有一个活动文档的源和一个记录所有展示文档的有序历史。浏览上下文的通讯被严格限制&#xff0c;只有两个同源的浏览器上下…...

海睿思问数(TableGPT):开创企业新一代指标应用模式

1 指标建设对企业经营管理数字化的价值分析 指标是将海量数据中关键信息提炼和挖掘出来&#xff0c;以数据为载体展示企业经营管理和分析中的统计量。它通过分析数据&#xff0c;形成一个具有度量值的汇总结果&#xff0c;使得业务状态可以被描述、量化和分解。指标通常由度量…...

LM-Cocktail:一种创新的模型合并方法打破预训练语言模型微调后的性能局限,实现语言模型在一般任务与特定领域的均衡高性能

LM-Cocktail:一种创新的模型合并方法打破预训练语言模型微调后的性能局限,实现语言模型在一般任务与特定领域的均衡高性能 使语言模型的微调类似于调制一杯精致的鸡尾酒。模型合并可用于提高单个模型的性能。我们发现此方法对于大型语言模型和密集嵌入模型也很有用,并设计了…...

默认导出(default)和命名导出

1.默认导出 优点&#xff1a; 简洁的导入语法&#xff1a; 导入时不需要使用花括号&#xff0c;可以直接重命名。单一职责&#xff1a; 模块导出一个主要功能或对象时&#xff0c;默认导出更符合逻辑。 适用场景&#xff1a; 模块只有一个导出&#xff1a; 如一个组件、一个…...

开发个人Go-ChatGPT--1 项目介绍

开发个人Go-ChatGPT--1 项目介绍 开发个人Go-ChatGPT--1 项目介绍知识点大纲文章目录项目地址 开发个人Go-ChatGPT–1 项目介绍 本文将以一个使用Ollama部署的ChatGPT为背景&#xff0c;主要还是介绍和学习使用 go-zero 框架&#xff0c;开发个人Go-ChatGPT的服务器后端&#…...

皮卡超级壁纸 | 幸运壁纸幸运壁纸app是一款涵盖了热门影视剧、动漫、风景等等资源的装饰工具,

软件下载链接&#xff1a;壁纸下载方式在链接中文章底部 皮卡超级壁纸 皮卡超级壁纸是一款专为手机用户设计的壁纸应用&#xff0c;它提供了丰富多样的高清壁纸资源&#xff0c;让用户的手机界面焕然一新。这款应用以其海量的壁纸库和用户友好的操作界面&#xff0c;在市场上…...

普通集群与镜像集群配置

目录 一. 环境准备 二. 开始配置集群 三. RabbitMQ镜像集群配置 四. 安装并配置负载均衡器HA 一. 环境准备 关闭防火墙和selinux&#xff0c;进行时间同步 主机名系统IP服务rabbitmq-1 Rocky_linux9.4 192.168.226.22RabbitMQ&#xff0c;MySQLrabbitmq-2Rocky_linux9.41…...

2024科技文化节程序设计竞赛

补题链接 https://www.luogu.com.cn/contest/178895#problems A. 签到题 忽略掉大小为1的环&#xff0c;答案是剩下环的大小和减环的数量 #include<bits/stdc.h> #include<iostream> #include<cstdio> #include<vector> #include<map> #incl…...

玩转Easysearch语法

Elasticsearch 是一个基于Apache Lucene的开源分布式搜索和分析引擎&#xff0c;广泛应用于全文搜索、结构化搜索、分析等多种场景。 Easysearch 作为Elasticsearch 的国产化替代方案&#xff0c;不仅保持了与原生Elasticsearch 的高度兼容性&#xff0c;还在功能、性能、稳定性…...

【密码学】RSA公钥加密算法

文章目录 RSA定义RSA加密与解密加密解密 生成密钥对一个例子密钥对生成加密解密 对RSA的攻击通过密文来求得明文通过暴力破解来找出D通过E和N求出D对N进行质因数分解通过推测p和q进行攻击 中间人攻击 一些思考公钥密码比对称密码的机密性更高&#xff1f;对称密码会消失&#x…...

【ARMv8/v9 GIC 系列 5.1 -- GIC GICD_CTRL Enable 1 of N Wakeup Function】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 GIC Enable 1 of N Wakeup Function基本原理工作机制配置方式应用场景小结GIC Enable 1 of N Wakeup Function 在ARM GICv3(Generic Interrupt Controller第三代)规范中,引入了一个名为"Enable 1 of N Wakeup"的功能。…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...