PCI认证 密钥注入 ECC算法工具 NID_secp521r1 国密算法 openssl 全套证书生成,从证书提取公私钥数组 x,y等
步骤
1.全套证书已经生成。OK
2.找国芯要ECC加密解密签名验签代码。给的逻辑说明没有示例代码很难的上。
3.集成到工具 与SP联调。
1.用openssl全套证书生成及验证
注意:这里CA 签发 KLD 证书用的是SHA256。因为芯片只支持SHA256算法,不支持SHA512。改成统一。
echo 如果有提示,需要把openssl的cnf下的文件复制到提示的目录下
@echo off
setlocal enabledelayedexpansion:: 设置密码
set PASSWORD=YourPassword:: 证书信息
set CA_CERT_SUBJ="/C=CN/ST=Beijing/L=Beijing/O=FT/OU=FT/CN=FT_KLD_CA/emailAddress=ftkdh@ftsafe.com"
set KLD_CERT_SUBJ="/C=CN/ST=Beijing/L=Beijing/O=FT/OU=FT/CN=FT_KLD/emailAddress=ftkdh@ftsafe.com":: 生成 CA 私钥(P-521)并加密
openssl ecparam -name secp521r1 -genkey -out CA_key.pem
openssl pkcs8 -topk8 -inform PEM -outform PEM -in CA_key.pem -out CA_key_enc.pem -passout pass:%PASSWORD%
::del CA_key.pem
echo [INFO] Encrypted CA Private Key generated: CA_key_enc.pem:: 生成 CA 自签名证书(有效期 10 年)
openssl req -x509 -new -key CA_key_enc.pem -sha512 -days 3650 -subj %CA_CERT_SUBJ% -passin pass:%PASSWORD% -out CA_cert.crt
openssl req -x509 -new -key CA_key_enc.pem -sha512 -days 3650 -subj %CA_CERT_SUBJ% -passin pass:%PASSWORD% -out CA_cert.pem
echo [INFO] CA Certificate generated: CA_cert.pem:: 生成 KLD 私钥(P-521)并加密
openssl ecparam -name secp521r1 -genkey -out KLD_key.pem
openssl pkcs8 -topk8 -inform PEM -outform PEM -in KLD_key.pem -out KLD_key_enc.pem -passout pass:%PASSWORD%
del KLD_key.pem
echo [INFO] Encrypted KLD Private Key generated: KLD_key_enc.pem:: 生成 KLD 证书请求(CSR)
openssl req -new -key KLD_key_enc.pem -sha512 -subj %KLD_CERT_SUBJ% -passin pass:%PASSWORD% -out KLD_csr.pem
echo [INFO] KLD Certificate Signing Request generated: KLD_csr.pem:: 使用 CA 签发 KLD 证书(有效期 10 年),输出为 .crt 格式
openssl x509 -req -in KLD_csr.pem -CA CA_cert.pem -CAkey CA_key_enc.pem -CAcreateserial -sha256 -days 3650 -passin pass:%PASSWORD% -out KLD_cert.crt
echo [INFO] KLD Certificate signed by CA: KLD_cert.crt:: 清理临时文件
::del CA_cert.srl
::del KLD_csr.pemecho [SUCCESS] All certificates generated successfully!echo "查看密钥是否有效"
pause
openssl ec -in CA_key_enc.pem -check -passin pass:%PASSWORD%openssl ec -in KLD_key_enc.pem -check -passin pass:%PASSWORD%echo "查看证书信息,确认 "Issuer" 是 CA 证书。"
openssl x509 -in KLD_cert.crt -text -nooutendlocal
pause
导出KLD公私钥
echo # 从加密私钥提取明文私钥
openssl ec -in KLD_key_enc.pem -passin pass:YourPassword -out KLD_key.pemecho # 从私钥提取公钥
openssl ec -in KLD_key.pem -pubout -out KLD_pub.pem
把证书里的私钥、公钥提取为c语言数组。
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives import serializationdef format_c_array(name, data, length=68):"""格式化为 C 语言 uint8_t 数组"""hex_values = ', '.join(f"0x{b:02X}" for b in data)return f" uint8_t {name}[{length}] = {{\n {hex_values}\n }};\n"# 读取私钥
with open("KLD_key.pem", "rb") as f:private_key = serialization.load_pem_private_key(f.read(), password=None)# 读取公钥
with open("KLD_pub.pem", "rb") as f:public_key = serialization.load_pem_public_key(f.read())# 获取私钥数值
priv_number = private_key.private_numbers().private_value
priv_bytes = priv_number.to_bytes(68, 'big') # 转换成 68 字节大端存储# 获取公钥数值
pub_numbers = public_key.public_numbers()
x_bytes = pub_numbers.x.to_bytes(68, 'big') # 转换成 68 字节
y_bytes = pub_numbers.y.to_bytes(68, 'big') # 转换成 68 字节# 格式化为 C 语言数组
print(format_c_array("priv_key", priv_bytes))
print(format_c_array("pub_key_x", x_bytes))
print(format_c_array("pub_key_y", y_bytes))
KLD_cert.crt去头尾,中间做base64解码16进制数组
需要发放KLD_cert.crt到SP验证。
ECC算法工具
有这个工具可以验证:ECC加密解密签名验签。
使芯片算法与PC算法保持一致。
私钥长度 公钥X长度 公钥Y长度 都是68
#ifndef ECC2_H
#define ECC2_H
#include <openssl/ec.h>
#ifdef __cplusplus
extern "C"
{
#endifextern uint8_t priv_key_data[68];extern uint8_t pub_key_x_data[68];extern uint8_t pub_key_y_data[68];int KLD_ECC_Privatekey_Decrypt(BYTE* pEncdata, WORD wEncDataLen, BYTE* pExpressData, INT* pwExpressDataLen);int ECCPublicDecrypt(BYTE* public_key_B, BYTE* pbSignature, BYTE* bHashdata);int ECCPublicEncrypt(BYTE* pEncdata, WORD wEncDataLen, BYTE* pExpressData, INT* pwExpressDataLen);int KLD_ECC_Privatekey_Encrypt(BYTE* pEncdata, WORD wEncDataLen, BYTE* pExpressData);int ECC_ENC(const EC_GROUP* group, const EC_POINT* pub_key, const uint8_t* plain, size_t plain_len, uint8_t* cipher, size_t* cipher_len, BN_CTX* bn_ctx);int ECC_DEC(const EC_GROUP* group, const BIGNUM* priv_key, const uint8_t* cipher, size_t cipher_len, uint8_t* plain, size_t* plain_len, BN_CTX* bn_ctx);int ECC_main();#ifdef __cplusplus
}
#endif#endif
c++用openssl 3.4.1实现ecc算法的加解密与签名验签示例 代码写在一个文件里
Ecc Curve为P-521,从文件读CA_cert.pem和CA_key_enc.pem,
如果需要 就加上#define OPENSSL_API_COMPAT 10100 // 保持与 1.1.0 兼容
“ECC_Encrypt 算法
输入:明文 M,公钥 P(Px,Py),ECC曲线参数curve(p,a,b,G,n)
输出:密文 C 或 invalid
算法流程:
1. 生成随机数 k ∈ [1, n-1]
2. 计算椭圆曲线点 R(Rx, Ry) = kG
3. 计算椭圆曲线点 Q(Qx, Qy) = kP
4. 按照大端序将明文M转换成整数 m. 如果m==0或m>=n,则输出invalid
5. 计算 c = m * Qx mod n
6. 将点(Rx,Ry)转换成字节串C1,将整数c转换成字节串C2
7. 输出密文 C = C1 || C2ECC_Decrypt 算法
输入:密文 C = C1 || C2,私钥 d,ECC曲线参数curve(p,a,b,G,n)
输出:明文 M 或 invalid
算法流程:
1. 将字节串C1转换成点R(Rx, Ry), 检查R是否在曲线上,如果不在则输出invalid
2. 计算椭圆曲线点 Q(Qx, Qy) = dR
3. 将字节串C2转换成整数c,计算 m = c * Qx^(-1) mod n
4. 将整数m转换成明文M”结合芯片提供的接口信息/*******************************************************************************
* Function Name : ECC_Encrypt
* Description : ECC加密
* Input : -mes :明文数据
* -klen :数据长度-pstuPubKey :公钥-pstuEccPrams :椭圆曲线参数
* Output : -cipher :密文数据
* Return : 执行结果
******************************************************************************/
extern UINT8 ECC_Encrypt(unsigned char *mes, unsigned short klen, SM2_STU_PUBKEY *pstuPubKey, SM2_STU_PRAMS *pstuEccPrams, unsigned char *cipher);
/*******************************************************************************
* Function Name : ECC_Encrypt
* Description : ECC加密
* Input : -cipher :密文数据
* -klen :数据长度-stuPrivKey :私钥-pstuEccPrams :椭圆曲线参数
* Output : -plain :明文数据
* Return : 执行结果
******************************************************************************/
extern UINT8 ECC_Decrypt(unsigned char *cipher, unsigned short klen, ECC_STU_BIGINT32 *stuPrivKey, SM2_STU_PRAMS *pstuEccPrams, unsigned char *plain);
C++工程加入openssl
C++工程加入openssl 使用的是Win32OpenSSL-3_0_16.exe 好像Win32OpenSSL-3_4_1.exe也行。
C:\Program Files (x86)\OpenSSL-Win32\include;
C:\Program Files (x86)\OpenSSL-Win32\lib\VC\x86\MTd;
libcrypto.lib;libssl.lib;
ECC加解密流程
ECC_Encrypt 算法
输入:明文 M,公钥 P(Px,Py),ECC曲线参数curve(p,a,b,G,n)
输出:密文 C 或 invalid
算法流程:
1. 生成随机数 k ∈ [1, n-1]
2. 计算椭圆曲线点 R(Rx, Ry) = kG
3. 计算椭圆曲线点 Q(Qx, Qy) = kP
4. 按照大端序将明文M转换成整数 m. 如果m==0或m>=n,则输出invalid
5. 计算 c = m * Qx mod n
6. 将点(Rx,Ry)转换成字节串C1,将整数c转换成字节串C2
7. 输出密文 C = C1 || C2ECC_Decrypt 算法
输入:密文 C = C1 || C2,私钥 d,ECC曲线参数curve(p,a,b,G,n)
输出:明文 M 或 invalid
算法流程:
1. 将字节串C1转换成点R(Rx, Ry), 检查R是否在曲线上,如果不在则输出invalid
2. 计算椭圆曲线点 Q(Qx, Qy) = dR
3. 将字节串C2转换成整数c,计算 m = c * Qx^(-1) mod n
4. 将整数m转换成明文M
ECC加解密算法C代码
在这里插入代码片
500
相关文章:
PCI认证 密钥注入 ECC算法工具 NID_secp521r1 国密算法 openssl 全套证书生成,从证书提取公私钥数组 x,y等
步骤 1.全套证书已经生成。OK 2.找国芯要ECC加密解密签名验签代码。给的逻辑说明没有示例代码很难的上。 3.集成到工具 与SP联调。 1.用openssl全套证书生成及验证 注意:这里CA 签发 KLD 证书用的是SHA256。因为芯片只支持SHA256算法,不支持SHA512。改成统一。…...
微软 SC-900 认证-考核Azure 和 Microsoft 365中的安全、合规和身份管理(SCI)概念
微软 SC-900 认证介绍 SC-900 认证考试是微软推出的一项基础级别认证,全称为 Microsoft Certified: Security, Compliance, and Identity Fundamentals。该认证旨在验证考生对微软云服务(如 Azure 和 Microsoft 365)中的安全、合规和身份管理…...
Uniapp 集成极光推送(JPush)完整指南
文章目录 前言一、准备工作1. 注册极光开发者账号2. 创建应用3. Uniapp项目准备 二、集成极光推送插件方法一:使用UniPush(推荐)方法二:手动集成极光推送SDK 三、配置原生平台参数四、核心功能实现1. 获取RegistrationID2. 设置别…...
OpenCV图像平滑处理方法详解
文章目录 引言一、什么是图像平滑?二、常见的图像平滑方法1.先对图片加上噪声点2. 均值滤波(Averaging)3. 方框滤波(boxFilter)4. 中值滤波(Median Blur)5. 高斯滤波(Gaussian Blur&…...
Lua 中,`math.random` 的详细用法
在 Lua 中,math.random 是用于生成伪随机数的核心函数。以下是其详细用法、注意事项及常见问题的解决方案: Lua 中,math.random 的详细用法—目录 一、基础用法1. 生成随机浮点数(0 ≤ x < 1)2. 生成指定范围的随机…...
使用PX4,gazebo,mavros为旋翼添加下视的相机(仿真采集openrealm数据集-第一步)
目录 一.方法一(没成功) 1.运行PX4 2.运行mavros通讯 3.启动仿真世界和无人机 (1)单独测试相机 (2)make px4_sitl gazebo启动四旋翼iris无人机 二.方法二(成功) 1.通过 rosl…...
ATEngin开发记录_4_使用Premake5 自动化构建跨平台项目文件
该系列只做记录 不做教程 所以文章简洁直接 会列出碰到的问题和解决方案 只适合C萌新 文章目录 Permake5为什么使用 Premake? 项目实战总结一下:详细代码: Permake5 Premake5 是一个跨平台的构建配置工具,它允许开发者通过使用一个简单的脚…...
equals() 和 hashCode()
作为 Java 开发者,我们经常会用到 equals() 和 hashCode() 这两个方法。 它们是 Object 类中定义的基础方法,看似简单,但如果理解不透彻,很容易在实际开发中踩坑。 本文将深入探讨这两个方法的作用、区别、以及如何正确地重写它们…...
臭氧除菌柜市场报告:2031年全球臭氧除菌柜市场销售额预计将达到9.4亿元
一、市场概述 (一)定义与分类 臭氧除菌柜,作为新一代绿色消毒设备,主要利用臭氧(O₃)的强氧化性来实现无化学残留的消毒净化。根据产品类型,可分为单门型和双门型。单门型设计紧凑,…...
解决python manage.py shell ModuleNotFoundError: No module named xxx
报错如下: python manage.py shellTraceback (most recent call last):File "/Users/z/Documents/project/c/manage.py", line 10, in <module>execute_from_command_line(sys.argv)File "/Users/z/.virtualenvs/c/lib/python3.12/site-packa…...
通用接口函数注册模块设计与实现
文章目录 通用接口函数注册模块设计与实现1. 模块概述2. 核心功能2.1 数据结构函数注册项结构体注册函数宏 2.2 核心函数实现函数:sl_register_interface_functions 3. 使用示例3.1 基础使用示例 - 设备驱动接口定义接口结构体实现具体函数创建注册表注册接口 3.2 高…...
C,C++,C#
C、C 和 C# 是三种不同的编程语言,虽然它们名称相似,但在设计目标、语法特性、运行环境和应用场景上有显著区别。以下是它们的核心区别: 1. 设计目标和历史 语言诞生时间设计目标特点C1972(贝尔实验室)面向过程&#…...
scala-集合3
集合计算高级函数 过滤:遍历一个集合并从中获取满足指定条件的元素组成一个新的集合 (筛选出满足条件的元素组成新集合。) 转换或映射(map):将原始集合中的元素映射到某个函数。 扁平化:取消…...
Spring MVC 重定向(Redirect)详解
Spring MVC 重定向(Redirect)详解 1. 核心概念与作用 重定向(Redirect) 是 Spring MVC 中一种客户端重定向机制,通过 HTTP 302 状态码(默认)将用户浏览器重定向到指定 URL。 主要用途…...
Scala的集合(二)
1. 集合计算高集函数 任务要求 1)过滤:遍历一个集合并从中获取满足指定条件的元素组成一个新的集合 2)转化/映射(map):将集合中的每一个元素映射到某一个函数 3)扁平化 4)扁平化映射 注:flatMap 相当于先进行 map 操作&#…...
GZ036区块链卷三 EtherGame合约漏洞详解
题目 pragma solidity ^0.8.3; contract EtherGame {uint public targetAmount 7 ether;address public winner;function deposit() public payable {require(msg.value 1 ether, "You can only send 1 Ether");uint balance address(this).balance;require(bala…...
BGP路由协议之路由通告/传递
BGP 的路由宣告 BGP 自身并不会发现并计算产生路由,只会将 IGP 路由表中的路由引入到 BGP 路由表中,并通过 Update 报文传递给 BGP 对等体(邻居) Network 宣告,前提是路由表中存在该条路由 import-route 引…...
Python合并多个pdf
场景: 现在要解决批量合并PDF的问题。 有很多PDF文件需要合并成一个,比如报告、发票或者多个章节的文档。 对于Windows用户,Adobe Acrobat是专业的选择,但需要付费。但是我不想花钱,所以推荐免费软件,比…...
聊一聊接口测试时遇到上下游依赖时该如何测试
目录 一、手工测试时的处理方法 1.1沟通协调法 1.2模拟数据法 二、自动化测试时的处理方法 2.1 数据关联法(变量提取) 2.2 Mock数据法 2.3自动化框架中的依赖管理 三、实施示例(以订单接口测试为例) 3.1Mock依赖接口&…...
pdf转latex
Doc2X(https://doc2x.noedgeai.com/) Doc2X 是一个由 NoEdgeAI 提供的在线工具,主要用于将 PDF 文件(尤其是学术论文、报告等文档)转换为 LaTeX 格式。LaTeX 是一种高质量排版系统,广泛应用于学术界和出版…...
剖析 Docker Swarm 操作对原有容器端口影响
剖析 Docker Swarm 操作对容器端口影响 一、背景阐述 在使用 Docker Swarm 构建集群环境过程中,于 ts3 节点出现了原有的容器端口全部失效,手动重启后才恢复的情况。期间涉及 docker swarm init --advertise-addr172.16.10.110 以及 docker swarm join…...
QML面试笔记--UI设计篇02布局控件
1. QML 中常用的布局控件 1.1. Row1.2. Column1.3. Grid1.4. RowLayout1.5. ColumnLayout1.6. GridLayout1.7. 总结 1. QML 中常用的布局控件 1.1. Row 背景知识:Row 布局用于将子元素水平排列,适合简单的线性布局,如工具栏按钮或表单输入…...
Java全栈项目--校园快递管理与配送系统(4)
源代码续 /*** 通知工具类*/// 通知类型常量 export const NotificationType {SYSTEM: 1,EXPRESS: 2,ACTIVITY: 3 }// 通知类型名称映射 export const NotificationTypeNames {[NotificationType.SYSTEM]: 系统通知,[NotificationType.EXPRESS]: 快递通知,[NotificationType…...
c语言练习一
1、统计二进制数中1的个数 #include <stdio.h>int main(void) {int count 0; //统计1出现次数 int x 0b1011;while(x){count ;//x 0b1011 > x-1 0b1010 x-1,将x从右往左数遇到第一个1变成0,左边全部变为1,右边不变 //x&x-1 1010 …...
Scala安装
Spark安装 Spark的Local模式仅需要单个虚拟机节点即可,无需启动hadoop集群。实验步骤如下: 将spark的安装包上传到虚拟机node01中(建议路径:/opt/software/spark)并解压缩文件。将解压文件夹重命名为spark-local 解…...
爱普生RTC模块RA8804CE在ADAS域控制器的应用
在汽车智能化、自动化飞速发展的时代,ADAS(高级驾驶辅助系统)的多传感器融合与实时决策高度依赖精准的时间基准。毫秒级的时间偏差可能导致传感器数据错位,直接影响行车安全。爱普生RA8804CE实时时钟模块凭借其内置的32.768 kHz晶…...
开箱即用!推荐一款Python开源项目:DashGo,支持定制改造为测试平台!
大家好,我是狂师。 市面上的开源后台管理系统项目层出不穷,对应所使用到的技术栈也不尽相同。 今天给大家推荐一款开源后台管理系统: DashGo,不仅部署起来非常的简单,而且它是基于Python技术栈实现的,使得基于它进行…...
C++使用WebView2控件,通过IPC通信与Javascript交互
引言 在现代桌面应用程序开发中,Web技术与原生应用的融合变得越来越普遍。Microsoft的WebView2控件为C开发者提供了一个强大的工具,使他们能够在桌面应用中嵌入基于Chromium的Web浏览器引擎。本文将详细介绍如何在C应用程序中使用WebView2控件ÿ…...
算法中Hash备胎——LRU的设计与实现
核心内容1.理解LRU的原理2.理解LRU是如何实现的3.能够通过代码实现LRU 缓存是应用软件的必备功能之一,在操作系统、Java里的Spring、mybatis、redis、mysql等软件中都有自己的内部缓存模块,而缓存是如何实现的? 在操作系统教科书里我们知道…...
Profinet邂逅ModbusRTU:印刷厂有网关“一键打通”通信链路
Profinet邂逅ModbusRTU:印刷厂有网关“一键打通”通信链路 在现代化印刷厂的生产线上,高效稳定的设备通信是保障印刷质量和生产效率的关键。某印刷厂的印刷机控制系统采用了西门子PLC进行自动化控制,同时还有众多基于ModbusRTU协议的传感器和…...
Spring中使用Kafka的详细配置,以及如何集成 KRaft 模式的 Kafka
在 Spring 中使用 Apache Kafka 的配置主要涉及 Spring Boot Starter for Kafka,而开启 KRaft 模式(Kafka 的元数据管理新模式,替代 ZooKeeper)需要特定的 Kafka Broker 配置。以下是详细步骤: 一、Spring 中集成 …...
C++之继承
本节我们将要学习C作为面向对象语言的三大特性之一的继承。 前言 一、继承的概念 二、继承的定义 2.1 定义格式 2.2 继承基类成员访问方式的变化 2.3 继承类模板 三、基类和派生类之间的转换 四、继承中的作用域 五、派生类的默认成员函数 六、实现一个不能被继承的类 七、继承…...
服务器申请 SSL 证书注意事项
一、确认证书类型 基础域名型(DV):这类证书验证速度最快,通常只需验证域名所有权,几分钟到几小时即可颁发。适用于个人博客、小型企业展示网站等对安全性要求不是顶级严苛,且急需启用 HTTPS 的场景。但它仅…...
【资料分享】全志T536(异构多核ARMCortex-A55+玄铁E907 RISC-V)工业核心板说明书
核心板简介 创龙科技SOM-TLT536是一款基于全志科技T536MX-CEN2/T536MX-CXX四核ARM Cortex-A55 +...
博途 TIA Portal之1200做从站与调试助手的TCP通讯
其实,1200做从站与调试助手做TCP通讯很简单,只需要在组态时把“主动建立连接”放在对侧即可。但是我们还是要从头讲起,以方便没有基础的朋友能直接上手操作。 1、硬件准备 1200PLC一台,带调试助手的PC机一台,调试助手…...
移动端六大语言速记:第9部分 - 并发与多线程
移动端六大语言速记:第9部分 - 并发与多线程 本文将对比Java、Kotlin、Flutter(Dart)、Python、ArkTS和Swift这六种移动端开发语言在并发与多线程方面的特性,帮助开发者理解和掌握各语言的并发编程机制。 9. 并发与多线程 9.1 线程与进程 各语言线程与进程的创建和管理方…...
基于大模型的ALS预测与手术优化系统技术方案
目录 技术方案文档:基于大模型的ALS预测与手术优化系统1. 数据预处理与特征工程模块流程图伪代码2. 多模态融合预测模型模型架构图伪代码3. 术中实时监测与动态干预系统系统流程图伪代码4. 统计验证与可解释性模块验证流程图伪代码示例(SHAP分析)5. 健康教育与交互系统系统架…...
【Vue3知识】组件间通信的方式
组件间通信的方式 概述**1. 父子组件通信****父组件向子组件传递数据(Props)****子组件向父组件发送事件(自定义事件)** **2. 兄弟组件通信****通过父组件中转****使用全局状态管理(如 Pinia 或 Vuex)** **…...
【数据挖掘】岭回归(Ridge Regression)和线性回归(Linear Regression)对比实验
这是一个非常实用的 岭回归(Ridge Regression)和线性回归(Linear Regression)对比实验,使用了 scikit-learn 中的 California Housing 数据集 来预测房价。 📦 第一步:导入必要的库 import num…...
RuntimeError: Error(s) in loading state_dict for ChartParser
一 bug错误 最近使用千问大模型有一个bug,报错信息如下 raise RuntimeError(Error(s) in loading state_dict for {}:\n\t{}.format( RuntimeError: Error(s) in loading state_dict for ChartParser:Unexpected key(s) in state_dict: "pretrained_model.em…...
汽车无钥匙启动125KHz低频发射天线工作原理
汽车智能钥匙低频天线是无钥匙进入(PE)及无钥匙启动(PS)系统的一部分,主要负责发送低频信号,探测智能钥匙与各低频天线间的相对位置,判断车内是否存在智能钥匙。 支持PEPS系统实现便捷操作 无…...
【Docker基础-镜像】--查阅笔记2
目录 Docker镜像概述base镜像镜像的分层结构镜像的理解镜像的构建docker commit 制作镜像DockerfileDockerfile 指令FROMLABELRUNARGENVADDCOPYWORKDIRUSERVOLUMEEXPOSECMD 和 ENTRYPOINT Docker镜像概述 镜像是Docker容器的基石,容器是镜像的运行实例,…...
LeetCode 第47题:旋转数组
LeetCode 第47题:旋转数组 题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例1: 输入…...
数据库管理工具实战:IDEA 与 DBeaver 连接 TDengine(二)
五、DBeaver 连接 TDengine 实战 5.1 安装 DBeaver 下载安装包:访问 DBeaver 官方网站(https://dbeaver.io/download/ ),根据你的操作系统选择合适的安装包。如果是 Windows 系统,下载.exe 格式的安装文件࿱…...
4S店汽车维修保养管理系统 (源码+lw+部署文档+讲解),源码可白嫖!
摘要 二十一世纪我们的社会进入了信息时代,信息管理系统的建立,大大提高了人们信息化水平。传统的管理方式已经与当今4S店汽车维修保养管理系统的业务需求不相适应,也与4S店汽车维修保养管理系统化建设的发展趋势不相适应。本文针对这一需求设计并实现了…...
【Mysql】主从复制部署(保姆级)
本次部署用到三台Ubuntu虚拟机(一主两从): Master服务器:192.168.166.107 Slave1服务器:192.168.166.101 Slave2服务器:192.168.166.103 一、部署思路 首先我们要先捋清主从复制的部署思路…...
华为AR1200密码忘记
1、通过Console口连接设备并重启设备。在设备启动过程中,看到提示信息“Press CtrlB to break auto startup...”时,在三秒内按下CtrlB,输入BootLoader密码后,默认密码:Adminhuawei ,进入BootLoader主菜单…...
高级java每日一道面试题-2025年3月26日-微服务篇[Nacos篇]-在Spring Cloud项目中如何集成Nacos?
如果有遗漏,评论区告诉我进行补充 面试官: 在Spring Cloud项目中如何集成Nacos? 我回答: 在Spring Cloud项目中集成Nacos,可以充分利用Nacos作为服务注册与发现中心以及配置管理中心的功能。以下是详细的步骤和说明,帮助你完成这一集成过程…...
YOLO-LLTS:低光照实时交通标志检测算法详解
论文地址:https://arxiv.org/pdf/2503.13883 目录 一、论文概述 1.1 研究背景 1.2 论文结构 二、核心创新点 2.1 CNTSSS数据集 2.2 HRFM-TOD模块 2.3 MFIA模块 2.4 PGFE模块 三、实验与结果 3.1 实验设置 3.2 性能对比 编辑3.3 消融实验 四、代码复现建议 4.…...
golang 性能优化分析工具 pprof
pprof简介 pprof 是 Go 语言标准库提供的一个强大的性能分析工具,它能帮助开发者深入了解程序的运行时行为,找出性能瓶颈,进而对代码进行优化。下面从多个方面对 pprof 进行详细介绍: 主要功能 CPU 性能分析:能够记…...