什么网站做水果蔬菜批发/软件外包
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,
15年
工作经验,精通Java编程
,高并发设计
,Springboot和微服务
,熟悉Linux
,ESXI虚拟化
以及云原生Docker和K8s
,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):foreast_sea
AES 与 SM4 加密算法:深度解析与对比
一、引言
在当今数字化飞速发展的时代,信息安全成为了至关重要的基石。无论是个人的隐私数据、企业的商业机密,还是国家的关键信息,都需要强大的加密技术来保驾护航。加密算法犹如信息世界的守护卫士,将明文数据转化为密文,使得未经授权者难以窥探其中的奥秘。
AES(Advanced Encryption Standard)加密算法
,作为全球范围内广泛应用的加密标准,有着举足轻重的地位。它是由美国国家标准与技术研究院(NIST)于 2001 年确定的新一代加密标准,旨在取代旧有的 DES(Data Encryption Standard)算法。AES 凭借其出色的安全性、高效性和广泛的适应性,在众多领域得到了大规模的应用,从网络通信中的数据加密传输,到金融领域的交易安全保障,再到各类电子设备的数据存储加密等,都有 AES 的身影。其加密原理基于对称加密思想,通过多轮的加密变换,将输入的明文逐步转换为难以破解的密文,在不同的密钥长度下(如 128 位、192 位和 256 位),提供了不同级别的安全防护。
而 SM4 加密算法
,则是我国自主研发的一种对称加密算法,在国内的信息安全体系中扮演着核心角色。随着我国信息技术产业的不断崛起和对信息安全自主可控需求的日益增长,SM4 应运而生。它在国内的政务、金融、能源等关键领域有着广泛的应用,保障着我国重要信息基础设施的安全。SM4 算法的设计基于特定的数学结构和变换,通过多轮迭代运算对数据进行加密处理,其密钥长度固定为 128 位,能够有效地抵御多种形式的密码攻击。
在加密算法的浩瀚星空中,AES 和 SM4 无疑是两颗耀眼的明星。深入理解它们的原理、特性、应用场景以及性能差异,对于信息安全领域的专业人士以及广大关注信息安全的用户来说,都具有极为重要的意义。本文将对 AES 和 SM4 加密算法进行全面而深入的探讨,从各个维度对它们进行剖析和对比,为读者揭开这两种加密算法的神秘面纱。
二、AES 加密算法
2.1 算法概述
AES 是一种对称分组密码算法,这意味着加密和解密过程使用相同的密钥。它对固定长度的数据块(通常为 128 位)进行加密操作。AES 算法的设计目标是提供高强度的安全性、高效的加密和解密速度以及良好的灵活性,以适应不同的应用环境和安全需求。
2.2 加密原理
- 字节代换(SubBytes):这是 AES 加密的第一步,将输入的 128 位数据块中的每个字节按照一个预先定义的 8 位 S 盒(Substitution Box)进行替换。S 盒的设计具有非线性特性,能够有效地混淆输入数据,增加密码分析的难度。例如,对于一个特定的字节值,通过 S 盒的映射,会得到一个全新的字节值,从而改变了数据的原始表示形式。
- 行移位(ShiftRows):在字节代换之后,对数据块的行进行循环移位操作。具体来说,第一行保持不变,第二行循环左移 1 个字节位置,第三行循环左移 2 个字节位置,第四行循环左移 3 个字节位置。这种移位操作进一步扩散了数据在不同行之间的关系,使得加密效果更加复杂。
- 列混合(MixColumns):此步骤将数据块中的每一列看作一个多项式,并与一个固定的多项式进行模乘法运算。通过这种方式,列混合操作在列的方向上对数据进行了再次混淆和扩散,使得数据的各个部分之间的相关性更加难以捉摸。例如,对于一个 4x4 的字节矩阵表示的数据块,每一列的四个字节经过列混合运算后,会得到全新的字节组合。
- 轮密钥加(AddRoundKey):在每一轮加密中,将前面步骤得到的数据与当前轮的轮密钥进行逐位异或操作。轮密钥是由原始密钥通过密钥扩展算法生成的,每一轮使用不同的轮密钥。这个步骤将密钥信息融入到加密过程中,确保只有拥有正确密钥的接收方才能解密密文。
AES 算法通常会进行多轮这样的加密操作,轮数取决于密钥的长度。对于 128 位密钥,会进行 10 轮加密;192 位密钥进行 12 轮;256 位密钥进行 14 轮。
2.3 应用场景
- 网络通信安全:在互联网通信中,如 SSL/TLS 协议(用于保障网页浏览、电子邮件等安全通信)的底层部分常采用 AES 加密算法对传输的数据进行加密,防止数据在网络传输过程中被窃取或篡改。例如,当用户在网上购物时,用户的个人信息、信用卡信息等敏感数据在客户端与服务器端之间传输时,会使用 AES 加密,确保这些信息的安全。
- 金融领域数据保护:银行等金融机构在处理客户的账户信息、交易记录等数据时,广泛应用 AES 加密。无论是数据在内部网络中的传输,还是存储在数据库中的数据,AES 加密都能有效地防止金融数据泄露,保护客户资产安全和金融机构的信誉。例如,银行的网上银行系统在用户登录、转账等操作过程中,相关数据都经过 AES 加密处理。
- 存储加密:在计算机存储设备上,如硬盘、移动存储介质等,AES 加密用于保护存储在其中的数据。操作系统提供的加密功能,如 Windows 的 BitLocker 和 macOS 的 FileVault,很多时候都采用 AES 加密算法来对磁盘上的数据进行加密存储。这使得即使存储设备丢失或被盗,未经授权的用户也难以获取其中的数据。
2.4 性能特点
- 加密速度较快:AES 算法在现代计算机硬件上具有较高的加密和解密速度,尤其是在处理大量数据时表现出色。这得益于其相对简单且规整的加密结构,能够充分利用计算机的指令集并行性。例如,在多核处理器的计算机上,AES 加密可以通过多线程并行处理不同的数据块,大大提高了整体的加密效率。
- 密钥长度灵活:AES 支持 128 位、192 位和 256 位三种不同的密钥长度。较短的密钥长度(如 128 位)在一些对性能要求较高但安全需求相对较低的场景中,可以提供较快的加密速度;而较长的密钥长度(如 256 位)则适用于对安全性要求极高的场景,如军事、国家安全等领域,虽然加密速度相对较慢,但能提供更强的抗攻击能力。
2.5 AES 算法的优势与局限
- 优势:
- 广泛应用与成熟:AES 是国际上广泛采用的加密标准,经过了多年的实践检验和大量的安全性分析,有众多的加密库和工具支持,在不同的操作系统、编程语言和硬件平台上都能方便地实现。
- 灵活性:支持多种密钥长度,可以根据不同的安全需求选择合适的密钥长度。例如,对于一般的非敏感数据加密,可以选择 128 位密钥以提高加密效率;而对于高度敏感的数据,如金融交易数据,可以采用 256 位密钥来增强安全性。
- 高效性:在现代计算机硬件上,AES 算法的加密和解密速度相对较快,尤其是在有专门的硬件加密模块(如 AES-NI 指令集支持的处理器)时,能够显著提高加密和解密的性能。
- 局限:
- 量子计算威胁:随着量子计算技术的发展,理论上量子计算机有可能在较短时间内破解 AES 算法。虽然目前实用的量子计算机尚未达到能够大规模破解 AES 的水平,但这是未来可能面临的一个潜在风险。
- 侧信道攻击:AES 算法在某些实现环境下可能面临侧信道攻击,如通过分析加密过程中的功耗、电磁辐射等信息来获取密钥信息。虽然可以通过一些防御措施(如掩码技术等)来降低风险,但这也增加了算法实现的复杂性和成本。
2.6 AES 算法的 Java 代码示例
以下是一个使用 Java 实现 AES 加密算法的简单示例代码:
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.util.Base64;public class AESExample {public static void main(String[] args) throws Exception {// 生成密钥KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");// 设置密钥长度为 128 位keyGenerator.init(128);SecretKey secretKey = keyGenerator.generateKey();// 实例化加密器Cipher cipher = Cipher.getInstance("AES");// 初始化加密器为加密模式,传入密钥cipher.init(Cipher.ENCRYPT_MODE, secretKey);// 待加密的明文String plaintext = "Hello, AES Encryption!";// 将明文转换为字节数组byte[] plaintextBytes = plaintext.getBytes();// 进行加密操作byte[] ciphertextBytes = cipher.doFinal(plaintextBytes);// 将加密后的字节数组转换为 Base64 编码的字符串,方便显示String ciphertext = Base64.getEncoder().encodeToString(ciphertextBytes);System.out.println("加密后的密文: " + ciphertext);// 初始化加密器为解密模式,传入密钥cipher.init(Cipher.DECRYPT_MODE, secretKey);// 对密文进行解码,得到字节数组byte[] decodedCiphertextBytes = Base64.getDecoder().decode(ciphertext);// 进行解密操作byte[] decryptedBytes = cipher.doFinal(decodedCiphertextBytes);// 将解密后的字节数组转换为字符串String decryptedText = new String(decryptedBytes);System.out.println("解密后的明文: " + decryptedText);}
}
在上述代码中:
- 首先使用
KeyGenerator
类生成一个 128 位的 AES 密钥。 - 然后通过
Cipher
类实例化一个 AES 加密器,并分别初始化为加密模式和解密模式,传入生成的密钥。 - 对于明文,先转换为字节数组,使用加密器的
doFinal
方法进行加密,得到密文字节数组,再转换为 Base64 编码字符串显示。 - 解密时,先将 Base64 编码的密文解码为字节数组,再使用解密器的
doFinal
方法进行解密,最后将解密后的字节数组转换为字符串显示。
三、SM4 加密算法
3.1 算法概述
SM4 是我国自主设计的对称加密算法,采用分组密码体制,分组长度为 128 位,密钥长度也为 128 位。它的设计旨在满足国内信息安全领域对自主可控加密技术的需求,在国内的众多关键信息系统中得到了广泛的应用和推广。
3.2 加密原理
- 非线性变换(T 函数):SM4 算法的核心是一个名为 T 函数的非线性变换。T 函数将输入的 32 位数据进行一系列复杂的操作,包括非线性替换、线性变换和循环移位等。首先,将输入的 32 位数据分为四个 8 位的子块,对每个子块进行 S 盒替换,这个 S 盒与 AES 的 S 盒类似,具有非线性特性,能够对数据进行混淆。然后,对替换后的结果进行线性变换和循环移位操作,最终得到 T 函数的输出。
- 轮函数:SM4 的加密过程由 32 轮迭代的轮函数组成。在每一轮中,将 128 位的数据块分为四个 32 位的字,分别记为 X0、X1、X2、X3。轮函数的操作如下:首先计算 T(X0 XOR X1 XOR X2 XOR rk),其中 rk 是当前轮的轮密钥,XOR 表示异或运算。然后将计算结果与 X3 进行异或运算,得到新的 X0。接着,将原来的 X0 赋值给 X1,X1 赋值给 X2,X2 赋值给 X3,开始下一轮的迭代。
- 密钥扩展:SM4 的密钥扩展算法将 128 位的原始密钥扩展成 32 轮所需的轮密钥。密钥扩展过程中使用了一些特定的常数和变换规则,确保轮密钥之间具有足够的独立性和安全性。
3.3 应用场景
- 国内政务信息系统:在政府部门的电子政务网络中,大量的公文流转、政务数据存储与传输等环节都采用 SM4 加密算法。例如,政府部门之间的机密文件传输,使用 SM4 加密确保文件内容不被泄露,保障政务工作的安全有序进行。
- 金融关键业务:国内的一些金融机构,尤其是在涉及核心业务系统和关键数据的处理时,逐渐开始采用 SM4 加密。例如,在金融机构内部的清算系统、核心数据库存储等方面,SM4 加密为金融数据提供了自主可控的安全保障,降低了对国外加密技术的依赖,增强了金融系统的安全性和稳定性。
- 能源等基础设施领域:在能源行业,如电力、石油等企业的生产管理系统、数据采集与监控系统(SCADA)中,SM4 加密用于保护关键的生产数据、设备控制指令等信息。防止非法入侵和数据篡改,确保能源基础设施的安全稳定运行。
3.4 性能特点
- 安全性高:SM4 算法经过了严格的安全性分析和测试,能够有效抵御多种密码分析攻击,如差分密码分析、线性密码分析等。其 128 位的密钥长度提供了足够的安全强度,在国内的信息安全体系中能够满足大多数关键应用场景的安全需求。
- 与国内硬件适配性好:由于是我国自主研发的算法,SM4 在国内自主研发的芯片、加密设备等硬件上往往具有更好的适配性和性能表现。例如,一些国产的安全芯片专门针对 SM4 算法进行了优化设计,能够充分发挥 SM4 的加密性能,提高加密和解密的效率。
3.5 SM4 算法的优势与局限
- 优势:
- 自主可控:SM4 是我国自主研发的加密算法,具有自主知识产权,在国内一些对信息安全自主性要求较高的领域应用广泛,能够有效保障国内信息系统免受国外加密技术潜在的安全威胁和限制。
- 性能良好:在软件实现方面,SM4 算法的加密和解密速度相对较快,能够满足大多数国内应用场景的性能需求。并且随着国内硬件技术的发展,针对 SM4 算法的硬件加速模块也在不断研发和完善,将进一步提高其性能。
- 安全性高:经过了国内相关机构的安全性评估和实践检验,在设计上采用了多种密码学技术来确保算法的安全性,如非线性变换、线性扩散等,能够有效抵御常见的密码分析攻击。
- 局限:
- 国际应用受限:由于 SM4 是我国自主设计的算法,在国际上的应用相对较少,相关的国际标准和规范中未广泛包含 SM4,这可能导致在一些国际合作项目或涉及国际数据交换的场景中,其兼容性和认可度相对较低。
- 生态支持相对较弱:与 AES 相比,SM4 的开源库、工具和硬件支持在国际范围内相对较少,开发人员在使用 SM4 算法时可能面临库的功能有限、文档不足等问题,这在一定程度上限制了其更广泛的应用和推广。
3.6 SM4 算法的 Java 代码示例
要在 Java 中使用 SM4 算法,需要引入相关的依赖。这里可以使用 Bouncy Castle
库,它是一个广泛使用的密码学库,支持多种加密算法包括 SM4
。在 Maven 项目中,添加以下依赖:
<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.72</version>
</dependency>
以下是使用 Bouncy Castle 库实现 SM4 加密算法的示例代码:
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.engines.SM4Engine;
import org.bouncycastle.crypto.modes.CBCMode;
import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.util.encoders.Base64;public class SM4Example {public static void main(String[] args) throws Exception {// 生成 128 位的 SM4 密钥byte[] key = new byte[16];// 这里可以使用随机数生成器等方式生成真正的密钥// 为了示例简单,这里只是简单初始化for (int i = 0; i < 16; i++) {key[i] = (byte) i;}// 实例化 SM4 引擎,采用 CBC 模式SM4Engine sm4Engine = new SM4Engine();CBCMode cbcMode = new CBCMode(sm4Engine);PaddedBufferedBlockCipher cipher = new PaddedBufferedBlockCipher(cbcMode);// 设置密钥参数CipherParameters keyParam = new KeyParameter(key);cipher.init(true, keyParam);// 待加密的明文String plaintext = "Hello, SM4 Encryption!";// 将明文转换为字节数组byte[] plaintextBytes = plaintext.getBytes();// 进行加密操作,输出字节数组byte[] ciphertextBytes = new byte[cipher.getOutputSize(plaintextBytes.length)];int length = cipher.processBytes(plaintextBytes, 0, plaintextBytes.length, ciphertextBytes, 0);cipher.doFinal(ciphertextBytes, length);// 将加密后的字节数组转换为 Base64 编码的字符串,方便显示String ciphertext = Base64.toBase64String(ciphertextBytes);System.out.println("加密后的密文: " + ciphertext);// 初始化加密器为解密模式,传入密钥cipher.init(false, keyParam);// 对密文进行解码,得到字节数组byte[] decodedCiphertextBytes = Base64.decode(ciphertext);// 进行解密操作,输出字节数组byte[] decryptedBytes = new byte[cipher.getOutputSize(decodedCiphertextBytes.length)];length = cipher.processBytes(decodedCiphertextBytes, 0, decodedCiphertextBytes.length, decryptedBytes, 0);cipher.doFinal(decryptedBytes, length);// 将解密后的字节数组转换为字符串String decryptedText = new String(decryptedBytes);System.out.println("解密后的明文: " + decryptedText);}
}
在上述代码中:
- 首先生成一个 128 位的 SM4 密钥(这里只是简单示例,实际应用中应使用安全的密钥生成方式)。
- 然后实例化 SM4 引擎,并采用 CBC(Cipher Block Chaining)模式,通过
PaddedBufferedBlockCipher
类来进行加密操作。 - 对于明文,转换为字节数组后进行加密,得到密文字节数组并转换为 Base64 编码字符串显示。
- 解密时,先将 Base64 编码的密文解码,然后进行解密操作,最后将解密后的字节数组转换为字符串显示。
四、AES 与 SM4 的性能差异
4.1 加密速度对比
- 在通用计算机平台上,AES 由于其广泛的应用和长期的优化,在一些常见的硬件环境下,如英特尔 x86 架构处理器,其加密速度相对较快。尤其是在处理大量数据时,AES 的多轮加密结构和对硬件指令集的良好利用,使其能够高效地完成加密任务。例如,在对大文件进行加密存储时,AES 可能比 SM4 花费更少的时间。
- 然而,在一些国产自主研发的特定硬件平台上,尤其是针对 SM4 进行了优化设计的芯片或加密设备,SM4 的加密速度可能会超过 AES。这些硬件平台能够充分发挥 SM4 算法的特性,通过专门的电路设计和指令优化,实现高效的加密运算。
4.2 安全性对比
- AES 作为国际通用的加密标准,经过了多年的全球范围内的密码分析和攻击测试,在不同的密钥长度下都具有较高的安全性。其复杂的加密结构和多轮变换有效地抵御了各种已知的密码攻击方法。例如,在面对差分密码分析和线性密码分析时,AES 的设计使得攻击者难以找到有效的攻击路径。
- SM4 同样具有很高的安全性,其 128 位的密钥长度和独特的加密结构能够抵御多种常见的密码攻击。并且,由于是我国自主研发的算法,其内部结构和算法细节相对保密,减少了被外部针对性攻击的风险。在国内的关键信息系统中,SM4 已经被证明能够有效地保护重要信息的安全。
4.3 资源占用对比
- AES 在通用软件实现时,对计算机的内存和计算资源的占用相对较为稳定。其算法的复杂度决定了在不同的运行环境下,其资源消耗有一定的规律可循。例如,在普通的个人电脑上运行 AES 加密程序时,内存占用量和 CPU 使用率在加密过程中会有一个相对可预测的变化范围。
- SM4 在一些国产硬件平台上可能具有资源占用优势,因为这些硬件平台可以针对 SM4 进行定制化的资源分配和优化。但在通用的国外硬件平台上,由于缺乏专门的优化,其资源占用可能会相对较高,例如可能会占用更多的 CPU 时间来完成相同的加密任务。
五、结论
AES 和 SM4 作为两种重要的对称加密算法,各自有着独特的优势和特点。AES 在国际上广泛应用,具有成熟的技术生态和较高的通用性,在多种通用硬件平台上表现出良好的加密速度和性能。而 SM4 作为我国自主研发的加密算法,在国内的关键信息领域发挥着不可替代的作用,其与国内硬件的适配性以及自主可控性为我国的信息安全提供了坚实的保障。
在未来的信息安全发展中,随着全球信息技术格局的不断变化和我国信息安全战略的深入推进,AES 和 SM4 可能会在不同的场景下继续发挥各自的作用,并且两者之间也可能会相互借鉴和融合。例如,在一些跨国企业的全球信息系统中,可能会同时考虑使用 AES 来满足国际业务的兼容性需求,以及 SM4 来保障在国内部分业务的自主安全。对于信息安全领域的从业者和研究人员来说,深入理解这两种算法的原理、性能和应用场景,将有助于更好地构建安全可靠的信息系统,应对日益复杂的信息安全挑战。
六、参考资料文献
AES 官方文档
SM4 官方文档
密码学相关书籍,如《密码编码学与网络安全:原理与实践》
相关文章:

AES 与 SM4 加密算法:深度解析与对比
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...

启保停电路如何接到PLC
传感器:NPN :棕:正 蓝:负 黑:信号 1M——>24V PNP:1M——>0V...

HTTP multipart/form-data 请求
序言 最近在写项目的过程中有一个需求是利用 HTTP 协议传输图片和视频,经过查询方法相应的方法发现使用 multipart/form-data 的方式,这是最常见处理二进制文件的表单编码类型。 学习了一下午,现在总结一下使用的方法和相关的知识点&#x…...

配置服务器的免密登录
在服务器中配置别名和免密登录 如果没有生成过公钥和密钥 ssh-keygen然后就生成了公钥和密钥,下一步进入.ssh文件夹 cd .ssh/可以看到文件夹中会多出来三个文件 id_rsa:密钥id_rsa.pub:公钥known_hosts:A通过ssh首次连接到B&am…...

普通遥控电动遮阳雨棚怎么接入米家并用苹果手机Siri控制
环境: 遥控电动遮阳雨棚 无线射频拷贝器 米家APP 问题描述: 普通遥控电动遮阳雨棚怎么接入米家并用苹果手机Siri控制 解决方案: 1.先看看遥控器射频参数,有些在里面板子上,要拆开才能看到,我这是433的 2.到网店…...

两种不同简缩极化的六个方程
方程1 (3*A*(b - a*1i 1) - A*((c d*1i)*(f1 f2*1i)*1i - (c d*1i)^2))*(a - b*1i)*1i 3*A*(b - a*1i 1) 2*(A*(c f2 d*1i - f1*1i) A*(c d*1i - (a b*1i)*(c d*1i)*1i))*(c - d*1i) (A*(c f2 d*1i - f1*1i) A*(c d*1i - (a b*1i)*(c d*1i)*1i))*(f1 - f2…...

环形缓冲区(Ring Buffer):概念、功能、使用场景与实现
一、概念 环形缓冲区(Ring Buffer),又称循环缓冲区,是一种用于数据缓冲的数据结构。其核心思想是将缓冲区视为一个环形结构,当数据写入到缓冲区的末尾时,会自动回绕到缓冲区的开头继续写入,形成…...

大连理工大学数据结构2003年硕士入学试题
大连理工大学2003年硕士入学试题 数据结构部分(共75分) 一、回答下列问题(20分) 1.循环队列用数组A[0..m—1)存放其数据元素。设tail指向其实际的队尾,front指向其实际队首的前一个位置,则当前队列中的数据元素有多少个…...

Master EDI 项目需求分析
Master Electronics 通过其全球分销网络,支持多种采购需求,确保能够为客户提供可靠的元件供应链解决方案,同时为快速高效的与全球伙伴建立合作,Master 选择通过EDI来实现与交易伙伴间的数据传输。 EDI为交易伙伴之间建立了一个安…...

图海寻径——图相关算法的奇幻探索之旅
一、图的表示 1. 邻接矩阵 (Adjacency Matrix) #include <iostream> #include <vector> #include <queue> #include <limits>using namespace std;class GraphMatrix { private:int numVertices;vector<vector<int>> adjMatrix;const st…...

亚马逊云科技re:Invent:生成式AI与全球布局
作为全球云计算和人工智能领域一年一度的顶级盛宴,亚马逊云科技2024 re:Invent全球大会吸引了超过6万名现场观众以及40多万名线上参会者。而大会上生成式AI的相关话题和内容,也成为了所有观众关注的焦点。 大会期间,亚马逊云科技全球服务副总…...

Android 因为混淆文件配置,打release包提示running R8问题处理
一、报错信息 Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in E:\workplace\xxxxxx\app\build\outputs\mapping\release\missing_rules.txt. Missing class org.mediakit.R$layout (refer…...

20241209给Ubuntu20.04系统的的交换分区增加为20GB的步骤
20241209给Ubuntu20.04系统的的交换分区增加为20GB的步骤 2024/12/9 21:10 缘起,编译中科创达的高通CM6125模块的Android10的时候,老报错。 编译环境可以编译荣品的RK3566的Android13/Buildroot。 以前荣品的RK3566的Android13的编译环境是可以编译通CM6…...

Centos7环境下nifi单机部署
Centos7环境下nifi单机部署 前言一、安装Nifi1.1 下载并解压1.2 修改配置文件 二、启动Nifi程序三、Nifi的简单使用3.1 文件移动3.2 本地文件传到HDFS 参考博客 前言 本以为在服务器上部署nifi很简单,跟着教程走就好,但是并没有成功,可能是因…...

如何通过轻易云实现金蝶云星空与旺店通数据集成
案例分享:柏为金蝶退料申请退料开单08.03 在企业的供应链管理中,数据的准确性和实时性至关重要。本文将重点介绍如何通过轻易云数据集成平台,将金蝶云星空的数据高效集成到旺店通旗舰奇门系统中,以实现柏为金蝶退料申请退料开单0…...

OSG开发笔记(三十七):OSG基于windows平台msvc2017x64编译器官方稳定版本OSG3.4.1搭建环境并移植Demo
若该文为原创文章,未经允许不得转载 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/144258047 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 长沙红胖子Qt…...

2024最新小猫咪PHP加密系统源码V1.4_本地API接口_带后台
2024最新小猫咪PHP加密系统源码V1.4_本地API接口_带后台 小猫咪PHP加密系统历时半年,它再一次迎来更新,更新加密算法(这应该是最后一次更新加密算法了,以后主要更新都在框架功能上面了),适配php56-php74&a…...

K8S OOM killer机制
当kubelet没来得及触发pod驱逐,使得节点内存耗尽时,将触发节点上的OOM killer机制; Linux上有个机制叫OOM killer(Out Of Memory killer),这个机制会在系统内存耗尽的情况下发挥作用,即根据一定…...

什么是绩效文化?
绩效文化是一种组织文化,它将绩效视为核心价值观,贯穿于组织的各个层面和活动之中。 一、绩效文化的内涵 目标导向 绩效文化强调组织成员都朝着共同的目标努力。这个目标通常是明确、可衡量的,如企业的年度利润目标、市场份额增长目标等。例…...

【人工智能-CV领域】对抗生成网络(GAN)与扩散模型全面解析与深度融合:实现AI生成能力的新突破
文章目录 了解更多AI内容生成模型概述对抗生成网络(GAN)的深度解析GAN的基本原理GAN的损失函数GAN的优势与挑战 扩散模型(Diffusion Model)的深入探讨扩散模型的基本原理扩散模型的损失函数扩散模型的优势与挑战 GAN与扩散模型的全…...

IT系统运维监控指标体系-持续完善中
分类指标名称定义说明指标类型采集频率统计数据频率计量单位数据精度应用注册用户数统计当前注册用户总数量统计类1分钟分钟、小时、日个整数应用在线用户数统计当前在线用户总数量统计类1分钟分钟、小时、日个整数应用日登录人数统计当日登录用户总数量统计类1分钟分钟、小时、…...

RPC设计--TcpAcceptor
TcpAcceptor 其功能较为简单,把套接字通信的一整套流程封装起来。在构造函数中就创建好连接套接字、设置好端口复用,等待accept,即自己封装socket 、 bind等函数调用 传入本地要监听的地址和端口,完成上述流程。 可提供getList…...

《Python数据分析:活用pandas库》学习笔记Day1:Panda DataFrame基础知识
Python数据分析:活用pandas库 Python强大易用,是数据处理和数据分析利器,而众多库的加持令其如虎添翼。Pandas就是其中一个非常流行的开源库,它可以确保数据的准确性,将数据可视化,还可以高效地操作大型数…...

【Go 基础】并发相关
并发相关 CAS CAS算法(Compare And Swap),是原⼦操作的⼀种,,CAS 算法是⼀种有名的⽆锁算法。⽆锁编程,即不使⽤锁的情况下实现多线程之间的变量同步。可⽤于在多线程编程中实现不被打断的数据交换操作,从…...

数据质量规则(Data Quality Rules)
数据质量规则(Data Quality Rules)是指用来确保数据的准确性、完整性、一致性和可用性的标准或逻辑规则。这些规则通常在数据集成、数据存储和数据分析过程中执行,以保证数据符合预期的业务需求或技术规范。 以下是数据质量规则的分类及其内…...

stm32延时
1. void delay_config(void) {SysTick->CTRL | SysTick_CTRL_CLKSOURCE_Msk; //时钟源为系统时钟168MHzSysTick->LOAD 167; //重载值为168-1,每1us溢出一次 }void delay_ms(u32 nTime) {nTime * 1000;SysTick->CTRL | SysTick_CTRL_ENABLE_Msk; //…...

工作随笔2024,12.9
1.关于connect重复连接,会导致当该信号发出时槽函数会执行对应的次数,所以在添 加init相关名称的函数要查看内部是否有connect,是否会造成重复连接. 2. 建议如果是唯一一个连接的,可以使用uni Que connection这个属性 3. 有关事…...

【PGCCC】 pg_query 6.0:使用 Postgres 自己的解析器解析、反解析和规范化 SQL 查询的 Ruby 库
pg_query 这个 Ruby 扩展使用实际的 PostgreSQL 服务器源来解析 SQL 查询并返回内部 PostgreSQL 解析树。 此外,该扩展允许您规范化查询(用 $n 替换常量值)并将这些规范化的查询再次解析为解析树。 当您构建此扩展时,它会构建 …...

18.Vue 3 + OpenLayers:实现添加全屏显示功能示例
前言 在地图应用中,全屏显示功能可以为用户提供更好的视觉体验和交互感受。本文将带大家实现一个基于 Vue 3 和 OpenLayers 的全屏显示地图功能,适合初学者或开发者快速上手。 项目准备 1. 项目搭建 如果尚未创建 Vue 3 项目,可以通过以下…...

04_掌握Python基础语句
学习完本篇内容,你将掌握以下技能: 掌握 Python 中的基础类型,包括整数、浮点数、布尔值、字符串等。掌握 Python 中的运算符,包括算术运算符、比较运算符、逻辑运算符、位运算符等。掌握 Python 中的语句,包括赋值语句、选择语句、循环语句等。掌握 Python 中的控制流语句…...