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

SSL证书格式详解:PEM、CER、DER、JKS、PKCS12等

引言

在网络安全领域,SSL/TLS证书是保障互联网通信安全的核心工具。它们通过加密连接,确保服务器与客户端之间的数据隐私和完整性。然而,对于初学者来说,SSL证书的多种格式——PEM、CER、JKS、PKCS12、PFX等——常常令人困惑。每种格式有其特定的用途、兼容的平台和独特的特性。本文旨在以通俗易懂的方式,详细介绍这些证书格式的概念、用途、区别以及实际应用场景,帮助小白理清思路,避免混淆。

本文将从基础概念入手,逐一解析常见的证书格式,探讨它们的编码方式、文件结构、适用场景,并提供实际操作中的注意事项。闲言少叙,让我们开始吧!


一、SSL/TLS证书基础知识

在深入了解证书格式之前,我们需要先了解SSL/TLS证书的基本概念。

1.1 什么是SSL/TLS证书?

SSL(Secure Sockets Layer)和TLS(Transport Layer Security)是用于加密网络通信的协议。SSL/TLS证书是数字证书,用于验证服务器(或其他实体)的身份,并建立加密连接。它包含以下关键信息:

  • 公钥:用于加密数据。
  • 私钥:用于解密数据,仅由证书持有者保存。
  • 颁发者信息:证书由受信任的证书颁发机构(CA)签发。
  • 有效期:证书的使用期限。
  • 主题信息:证书持有者的身份信息,如域名或组织名称。

1.2 证书的作用

SSL/TLS证书广泛应用于以下场景:

  • HTTPS网站:确保网站与用户之间的通信安全。
  • 电子邮件加密:保护邮件传输过程中的数据。
  • VPN和API:验证通信双方的身份。
  • 代码签名:确保软件来源可信。

1.3 证书格式的意义

证书以不同格式存储和传输,主要是为了适配不同的操作系统、服务器软件和编程语言环境。每种格式可能使用不同的编码方式(如Base64或二进制)、文件扩展名(如.pem、.cer、.pfx)以及内容结构(是否包含私钥或证书链)。理解这些格式的区别,有助于正确配置服务器、调试问题并确保安全。


二、常见证书格式详解

以下是几种常见的SSL/TLS证书格式及其详细介绍。

2.1 PEM格式

2.1.1 定义

PEM(Privacy Enhanced Mail)是最常见的证书格式之一,最初用于电子邮件加密,现广泛用于存储SSL/TLS证书、密钥和证书链。PEM文件是文本格式,使用Base64编码,并以特定的头尾标记包裹内容。

2.1.2 文件结构

PEM文件的典型结构如下:

-----BEGIN CERTIFICATE-----
Base64编码的证书内容
-----END CERTIFICATE-----

或包含私钥:

-----BEGIN PRIVATE KEY-----
Base64编码的私钥内容
-----END PRIVATE KEY-----

一个PEM文件可以包含:

  • 单个证书
  • 证书链(包括中间证书和根证书)
  • 私钥
  • 多个证书和密钥(按顺序拼接)
2.1.3 文件扩展名

PEM文件通常使用以下扩展名:

  • .pem:最常见,通用格式。
  • .crt:通常表示证书。
  • .key:通常表示私钥。
  • .cer:有时也用于PEM编码的证书。
2.1.4 适用场景
  • Web服务器:如Apache、Nginx。
  • 编程环境:如OpenSSL、Python、Java。
  • 证书分发:PEM格式易于阅读和传输。
2.1.5 特点
  • 文本格式:便于手动编辑和查看。
  • 灵活性高:支持多种内容(证书、私钥、证书链)。
  • 跨平台:几乎所有现代系统和软件都支持。
2.1.6 注意事项
  • 确保私钥文件权限受限(如chmod 600),防止未经授权的访问。
  • 证书链的顺序需正确(从服务器证书到中间证书,最后是根证书)。

2.2 CER格式

2.2.1 定义

CER(Certificate)格式通常指存储X.509证书的文件,可以是Base64编码(类似PEM)或二进制编码(DER格式)。CER文件通常仅包含公钥证书,不包含私钥。

2.2.2 文件结构
  • Base64编码:与PEM类似,包含-----BEGIN CERTIFICATE----------END CERTIFICATE-----标记。
  • 二进制编码:不包含文本标记,直接存储DER格式的二进制数据。
2.2.3 文件扩展名
  • .cer:最常见。
  • .crt:有时与CER混用。
  • .pem:如果采用Base64编码。
2.2.4 适用场景
  • Windows系统:如IIS服务器。
  • Java环境:常用于导入到KeyStore。
  • 证书分发:CA颁发的证书常以CER格式提供。
2.2.5 特点
  • 简单性:通常仅包含单个证书。
  • 兼容性:Windows和Java环境广泛支持。
  • 二进制选项:支持DER编码,适合某些特定场景。
2.2.6 注意事项
  • 确认CER文件是Base64还是二进制编码(可用文本编辑器查看)。
  • 如果需要证书链,可能需手动合并多个CER文件。

2.3 JKS格式

2.3.1 定义

JKS(Java KeyStore)是Java专用的密钥存储格式,用于存储证书和私钥。它是一个二进制文件,由Java的keytool工具或代码管理,通常需要密码保护。

2.3.2 文件结构

JKS文件是一个加密的容器,包含:

  • 私钥:与公钥证书配对。
  • 证书:服务器证书或证书链。
  • 别名:每个密钥/证书对有一个唯一标识。
2.3.3 文件扩展名
  • .jks:标准扩展名。
  • .keystore:有时用于JKS或其他KeyStore类型。
2.3.4 适用场景
  • Java应用程序:如Tomcat、Jetty、Spring Boot。
  • Android开发:用于存储签名证书。
  • 企业环境:Java-based系统常用。
2.3.5 特点
  • 安全性:通过密码加密,防止未经授权访问。
  • Java专属:专为Java生态设计。
  • 复杂性:需要使用keytool或第三方工具管理。
2.3.6 注意事项
  • 记录存储密码和密钥密码,避免丢失。
  • 导入证书链时,需确保顺序正确。
  • JKS正在被PKCS12逐渐取代(Java 9+默认支持PKCS12)。

2.4 PKCS12(PFX)格式

2.4.1 定义

PKCS12(Public-Key Cryptography Standards #12,公钥密码学标准#12),也称为PFX(Personal Information Exchange),是一种二进制格式,用于存储证书、私钥和证书链。它通常受密码保护,适合安全传输。

2.4.2 文件结构

PKCS12文件是一个加密容器,包含:

  • 私钥:与证书配对。
  • 公钥证书:服务器证书。
  • 证书链:中间证书和根证书。

这种文件格式能够将X.509数字证书(含公钥及其关联的数字证书链)与私钥进行整合打包,从而实现证书及其对应私钥的便捷导入与导出操作。

2.4.3 文件扩展名
  • .pfx:最常见。
  • .p12:PKCS12的另一种扩展名。
2.4.4 适用场景
  • Windows系统:IIS服务器常使用PFX。
  • Java环境:Java 9+推荐使用PKCS12代替JKS。
  • 跨平台传输:将证书和私钥打包传输。
  • 客户端证书:用于身份验证。
2.4.5 特点
  • 安全性:支持密码加密。
  • 完整性:可包含私钥和完整证书链。
  • 跨平台:Windows、Java、OpenSSL等广泛支持。
2.4.6 注意事项
  • 导入PFX文件时,需提供密码。
  • 确保存储环境安全,防止私钥泄露。
  • 某些旧系统可能不支持PKCS12,需转换为其他格式。

2.5 DER格式

2.5.1 定义

DER(Distinguished Encoding Rules)是X.509证书的二进制编码格式,是ASN.1结构的子集。它与PEM的Base64编码相对,通常用于存储单个证书或密钥。

2.5.2 文件结构
  • 无文本标记,直接存储二进制数据。
  • 通常仅包含单个证书或密钥。
2.5.3 文件扩展名
  • .der:最常见。
  • .cer:有时用于DER格式。
2.5.4 适用场景
  • Java和Windows:某些环境直接支持DER。
  • 嵌入式系统:二进制格式更紧凑。
  • 证书分发:CA可能提供DER格式证书。
2.5.5 特点
  • 紧凑性:二进制格式占用空间小。
  • 单一性:通常不包含证书链或私钥。
  • 兼容性:部分系统支持有限。
2.5.6 注意事项
  • DER文件无法用文本编辑器直接查看。
  • 需使用工具(如OpenSSL)转换为PEM或PKCS12。

2.6 其他相关格式

2.6.1 PKCS7(P7B)
  • 定义:PKCS7是一种证书存储格式,通常仅包含证书和证书链,不包含私钥。
  • 扩展名.p7b.p7c
  • 编码:支持Base64或二进制。
  • 适用场景:Windows、Java,用于导入证书链。
  • 特点:常用于分发中间证书或根证书。
2.6.2 CSR(Certificate Signing Request)
  • 定义:CSR是证书签名请求文件,包含公钥和身份信息,提交给CA以获取证书。
  • 扩展名.csr.req
  • 编码:通常为PEM格式。
  • 适用场景:申请SSL证书时使用。
  • 特点:不包含私钥,仅用于请求。
2.6.3 CRT
  • 定义:CRT通常是PEM或DER格式的证书文件,视上下文而定。
  • 扩展名.crt
  • 适用场景:Apache、Nginx、Windows等。
  • 特点:与PEM/CER高度重叠,需确认具体编码。

三、证书格式的比较

以下是对主要证书格式的对比总结:

格式编码方式包含内容扩展名主要用途兼容性
PEMBase64证书、私钥、证书链.pem, .crt, .keyWeb服务器、编程环境高(跨平台)
CERBase64/二进制证书.cer, .crtWindows、Java
JKS二进制证书、私钥、证书链.jks, .keystoreJava应用程序低(Java专属)
PKCS12/PFX二进制证书、私钥、证书链.pfx, .p12Windows、Java、跨平台传输
DER二进制证书或密钥.der, .cer嵌入式系统、Java、Windows
PKCS7Base64/二进制证书、证书链.p7b, .p7c证书链分发

四、证书格式转换

在实际应用中,经常需要将一种证书格式转换为另一种格式。以下是常见的转换方法,使用OpenSSL或keytool工具。

4.1 PEM转DER

openssl x509 -in certificate.pem -out certificate.der -outform DER

4.2 DER转PEM

openssl x509 -inform DER -in certificate.der -out certificate.pem

4.3 PEM转PKCS12

openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.pem -certfile ca.pem

4.4 PKCS12转PEM

openssl pkcs12 -in certificate.pfx -out certificate.pem -nodes

4.5 PEM转JKS

使用keytool

keytool -importcert -file certificate.pem -keystore keystore.jks -alias mycert

4.6 注意事项

  • 确保私钥和证书匹配(可用openssl验证)。
  • 转换时注意文件权限和密码保护。
  • 备份原始文件以防转换失败。

五、实际应用场景与配置示例

5.1 配置Apache服务器(使用PEM)

  1. 将服务器证书(.pem)、私钥(.key)和证书链(.pem)放置在指定目录。
  2. 编辑Apache配置文件(如httpd.conf):
    SSLCertificateFile /path/to/server.pem
    SSLCertificateKeyFile /path/to/private.key
    SSLCertificateChainFile /path/to/chain.pem
    
  3. 重启Apache服务。

5.2 配置Nginx服务器(使用PEM)

  1. 将证书和私钥合并为一个PEM文件:
    cat server.pem chain.pem > fullchain.pem
    
  2. 编辑Nginx配置文件:
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/private.key;
    
  3. 重启Nginx服务。

5.3 配置Tomcat(使用JKS或PKCS12)

  1. 导入证书到JKS或PKCS12:
    keytool -importkeystore -srckeystore certificate.pfx -destkeystore keystore.jks -srcstoretype PKCS12
    
  2. 编辑Tomcat的server.xml:
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"keystoreFile="/path/to/keystore.jks" keystorePass="password" />
    
  3. 重启Tomcat。

5.4 配置IIS(使用PFX)

  1. 打开IIS管理器,选择服务器证书。
  2. 导入PFX文件并输入密码。
  3. 绑定证书到HTTPS站点。

六、常见问题与解决方案

6.1 证书链不完整

  • 现象:浏览器提示“证书不受信任”。
  • 解决:确保中间证书包含在证书链中,合并到PEM或PKCS12文件中。

6.2 私钥与证书不匹配

  • 现象:服务器启动失败,提示密钥错误。
  • 解决:使用OpenSSL验证:
    openssl x509 -noout -modulus -in certificate.pem | openssl md5
    openssl rsa -noout -modulus -in private.key | openssl md5
    
    确保两者的MD5值一致。

6.3 密码丢失

  • 现象:无法访问JKS或PFX文件。
  • 解决:无密码无法解密,需重新生成或联系CA。

6.4 格式不被支持

  • 现象:某些系统不识别特定格式。
  • 解决:使用OpenSSL或keytool转换为目标格式。

七、总结

SSL/TLS证书格式的多样性反映了不同系统和应用场景的需求。PEM格式因其灵活性和跨平台性最为常见;CER和DER适合Windows和Java环境;JKS是Java专属格式;PKCS12(PFX)则以安全性和完整性见长。通过理解每种格式的编码方式、内容结构和适用场景,用户可以更好地选择和配置证书。

对于初学者,建议从PEM格式入手,熟悉其文本结构和OpenSSL工具的使用。随着经验积累,可逐步掌握JKS、PKCS12等复杂格式的管理。无论在Web服务器配置、API安全还是客户端认证中,正确的证书格式选择和配置都是确保通信安全的关键。

相关文章:

SSL证书格式详解:PEM、CER、DER、JKS、PKCS12等

引言 在网络安全领域&#xff0c;SSL/TLS证书是保障互联网通信安全的核心工具。它们通过加密连接&#xff0c;确保服务器与客户端之间的数据隐私和完整性。然而&#xff0c;对于初学者来说&#xff0c;SSL证书的多种格式——PEM、CER、JKS、PKCS12、PFX等——常常令人困惑。每…...

idea spring boot 打包成可执行的 JAR包

idea 2023 spring boot 2.6.13 打包成可执行的 JAR包 创建一个 简单的 spring boot 程序 idea File — New — Project 11 22 11 package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.b…...

设计模式-迭代器模式

写在前面 Hello&#xff0c;我是易元&#xff0c;这篇文章是我学习设计模式时的笔记和心得体会。如果其中有错误&#xff0c;欢迎大家留言指正&#xff01; 案例 假设有一个Book类和一个管理书籍的BookCollection类&#xff0c;我们需要遍历BookCollection类中所有书籍信息。 一…...

Java 匿名内部类的作用

简化代码&#xff1a;无需专门定义一个具名类来实现接口或继承类&#xff0c;减少类文件数量&#xff0c;在只需简单实现特定功能时&#xff0c;让代码更简洁紧凑 。比如创建线程时&#xff0c;使用匿名内部类实现 Runnable 接口&#xff0c;直接在代码块中编写线程执行逻辑&am…...

MySQL数据库故障排查与解决方案

一、故障排查流程图 #mermaid-svg-hF8hhP2lrqWDbNhV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hF8hhP2lrqWDbNhV .error-icon{fill:#552222;}#mermaid-svg-hF8hhP2lrqWDbNhV .error-text{fill:#552222;stroke:…...

C#学习——继承、封装、多态

一、继承 1&#xff09;什么是继承&#xff1f; 官方话&#xff1a;允许一个类继承另一个类的字段和方法 个人理解&#xff1a;子类可以使用父类已经授权的所有字段和方法&#xff0c;子承父业 2&#xff09;使用方式 方式&#xff1a;子类&#xff1a;父类 class…...

数据库基础:概念、原理与实战示例

在当今信息时代&#xff0c;数据已经成为企业和个人的核心资产。无论是社交媒体、电子商务、金融交易&#xff0c;还是物联网设备&#xff0c;几乎所有的现代应用都依赖于高效的数据存储和管理。数据库&#xff08;Database&#xff09;作为数据管理的核心技术&#xff0c;帮助…...

AI与计算机视觉(CV):目标检测与图像分割的最新进展

AI与计算机视觉&#xff08;CV&#xff09;&#xff1a;目标检测与图像分割的最新进展 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 AI与计算机视觉&#xff08;CV&#xff09;&#xff1a;目标检测与图像分割的…...

嵌入式开发学习日志Day17

第十一章 结构体与共用体 一、结构体 1、结构体 一般形式 【struct 标识符】 结构体中的标识符一般首字母大写&#xff1b; 【.】结构体成员运算符&#xff1b; 优先级 1 级 结合方向&#xff1a;从左至右&#xff1b; 【->】:指向结构体成员运算符&#x…...

awesome-digital-human本地部署及配置:打造高情绪价值互动指南

在数字化交互的浪潮中&#xff0c;awesome-digital-human-live2d项目为我们打开了本地数字人互动的大门。结合 dify 聊天 api&#xff0c;并借鉴 coze 夸夸机器人的设计思路&#xff0c;能为用户带来充满情绪价值的交互体验。本文将详细介绍其本地部署步骤、dify 配置方法及情绪…...

ClickHouse多表join的性能优化:原理与源码详解

本文将从底层原理和源代码的角度详细解释 ClickHouse 多表 JOIN 的处理过程&#xff0c;尽量用通俗移动的语言&#xff0c;让初学者也能理解。本文会分步骤推导&#xff0c;涵盖 JOIN 的原理、实现方式、关键代码逻辑以及优化机制&#xff0c;同时确保逻辑清晰、内容全面。最后…...

国产Excel处理控件Spire.XLS系列教程:C# 将Excel文件转换为Markdown格式

Microsoft Excel 是一款强大的数据管理工具&#xff0c;广泛用于数据处理和分析。然而&#xff0c;其专有格式&#xff08;如 XLS 和 XLSX&#xff09;在不同平台之间共享时&#xff0c;常常面临兼容性问题。相比之下&#xff0c;Markdown 是一种轻量级的标记语言&#xff0c;因…...

C++线程库

1. 基本概念 1.1 线程&#xff08;Thread&#xff09; 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。一个进程可以并发多个线程&#xff0c;每条线程并行执行不同的任务。 1.2 并发与并行 并发&#xff08;Concurren…...

Missashe计网复习笔记(随时更新)

Missashe计算机网络复习笔记 前言&#xff1a;这篇笔记用于博主对计网这门课所学进行记录和总结&#xff0c;也包括一些个人的理解。正在更新当中…… 第一章 计算机网络体系结构 考纲内容 (一) 计算机网络概述 计算机网络的概念、组成与功能;计算机网络的分类; 计算机网络…...

解决osx-arm64平台上conda默认源没有提供 python=3.7 的官方编译版本的问题

CONDA_SUBDIRosx-64 conda create -n py37_env python3.7 是一个用于创建特定架构环境的命令&#xff0c;主要针对 macOS 系统。下面为你详细解析它的功能和作用&#xff1a; 命令功能解析 这个命令的主要功能是创建一个名为 py37_env 的 Conda 环境&#xff0c;并且指定该环…...

Cjson格式解析与接入AI大模型

JSON格式的解析与构造 基本概念 JSON是JavaScript Object Notation的简称&#xff0c;中文含义为“JavaScript 对象表示法”&#xff0c;它是一种数据交换的文本格式&#xff0c;而不是一种编程语言。 JSON 是一种轻量级的数据交换格式&#xff0c;采用完全独立于编程语言的…...

RocketMQ 深度解析:架构设计与最佳实践

在分布式系统架构日益复杂的今天&#xff0c;消息中间件作为系统间通信的桥梁&#xff0c;扮演着至关重要的角色。RocketMQ 作为阿里开源的高性能分布式消息中间件&#xff0c;凭借其卓越的性能、丰富的功能以及高可用性&#xff0c;在电商、金融、互联网等众多领域得到广泛应用…...

【Light】帕多瓦大学超表面技术:开启矢量光束相位偏振定制新时代

01 前言 近年来&#xff0c;完美涡旋光束&#xff08;Perfect Vortex Beams&#xff09;因其独特的环形强度分布和与拓扑电荷无关的特性&#xff0c;成为研究热点。然而&#xff0c;传统方法在生成此类光束时面临相位和偏振控制的挑战&#xff0c;通常需要复杂的光学系统或多重…...

2021-11-15 C++下一个生日天数

缘由c今日日期到生日天数-编程语言-CSDN问答 int isLeap(int year)//判断闰年 {//缘由https://ask.csdn.net/questions/7567048?spm1005.2025.3001.5141return ((!(year % 4) && year % 100) || !(year % 400)); } int daysInMonth(int year, int month)//返回月天数…...

基于nodejs + Koa +Nuxt3的订单系统项目实战

以下是一个基于 Node.js Koa Nuxt3 的订单系统项目实战指南&#xff0c;包含关键实现步骤和代码示例&#xff1a; 一、项目架构设计 project/ ├── backend/ # Koa 后端 │ ├── config/ # 配置文件 │ ├── controllers/ # 控制器 │ ├──…...

# YOLOv2:目标检测的升级之作

YOLOv2&#xff1a;目标检测的升级之作 在目标检测领域&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;系列算法以其高效的速度和创新的检测方式受到了广泛关注。今天&#xff0c;我们就来深入探讨一下 YOLOv2&#xff0c;看看它是如何在继承 YOLOv1 的基础上进行…...

国债收益率、需求与抛售行为的逻辑解析

国债收益率、需求与抛售行为的逻辑解析 1. 国债收益率的定义 国债收益率是衡量国债投资回报的核心指标&#xff0c;分为两种常见计算方式&#xff1a; 当前收益率&#xff08;Current Yield&#xff09;&#xff1a;年利息收入 债券当前市场价格 例如&#xff1a;面值100元、…...

使用Python和TensorFlow实现图像分类的人工智能应用

最近研学过程中发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面开始对正文内容的…...

嵌入式培训之C语言学习完(十七)结构体、共用体、枚举、typedef关键字与位运算

目录 一、结构体&#xff08;struct关键字&#xff09; &#xff08;一&#xff09;声明一个结构体数据类型 &#xff08;二&#xff09;结构体的成员初始化与赋值 a、结构体变量赋值 b、结构体成员初始化 c、结构体的定义形式 &#xff08;三&#xff09;考点&#xff…...

cilium路由模式和aws-eni模式下的IPAM

来看Cilium路由的几种核心模式。 封装模式&#xff08;overlay&#xff09; 首先是最基础的封装模式。这是默认情况下&#xff0c;如果你没有特别配置&#xff0c;Cilium会自动运行的模式。它的最大特点就是对底层网络环境的要求非常低&#xff0c;可以说是开箱即用。具体怎么…...

深入理解 Java 代理模式:从基础到实战​

在软件开发的世界里&#xff0c;设计模式是程序员智慧的结晶&#xff0c;它们为解决常见问题提供了经过验证的最佳实践。代理模式作为一种常用的结构型设计模式&#xff0c;在 Java 开发中有着广泛的应用。本文将深入探讨 Java 代理模式&#xff0c;从基本概念、分类、实现原理…...

Python毕业设计219—基于python+Django+vue的房屋租赁系统(源代码+数据库+万字论文)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于pythonDjangovue的房屋租赁系统(源代码数据库万字论文)219 一、系统介绍 本项目前后端分离&#xff0c;分为租客、房东、管理员三种角色 1、租客&#xff1a; 注册、登录、公…...

Spring Boot 框架概述

1. 简介 Spring Boot 是由 Pivotal 团队开发的一个用于简化 Spring 应用开发的框架。它通过提供默认配置、嵌入式服务器和自动配置等特性&#xff0c;让开发者能够更快速地构建独立的、生产级别的 Spring 应用。 Spring Boot 的主要特点包括&#xff1a; 快速创建独立的 Spri…...

MySQL 8.0(主从复制)

MySQL 8.0 的 主从复制&#xff08;Master-Slave Replication&#xff09; 是一种数据库高可用和数据备份的核心技术&#xff0c;下面用 一、什么是主从复制&#xff1f; 就像公司的「领导-秘书」分工&#xff1a; 主库&#xff08;Master&#xff09;&#xff1a;负责处理所…...

探索大型语言模型的 LLM 安全风险和 OWASP 十大漏洞

大型语言模型 (LLM) 引领着技术进步,推动着包括医疗保健在内的各个领域的自动化进程。在 Halodoc,我们通过 AI 驱动技术的运用直接见证了这一变化。然而,强大的功能伴随着同样重大的责任——保障这些系统的安全对于保护敏感信息和维护信任至关重要。本博客探讨了与 LLM 相关…...

算法与数据结构 - 二叉树结构入门

目录 1. 普通二叉树结构 1.1. 常见术语 1.2. 完全二叉树 (Complete Binary Tree) 1.3. 满二叉树 (Full Binary Tree) 2. 特殊二叉树结构 2.1. 二叉搜索树 (BST) 2.1.1. BST 基本操作 - 查找 2.1.2. BST 基本操作 - 插入 2.1.3. BST 基本操作 - 删除 2.2. 平衡二叉树…...

基于AQS实现Reentrantlcok

好久没有更新了 这次来补充上一次AQS还没有实现的可重入锁部分&#xff01; 我们知道ReentrantLock是可重入的锁&#xff0c;主要的核心是state&#xff0c;他是一个原子性的整数&#xff0c;我们只需要将获取锁的代码boolean由false到true变成0->1即可完成。在完成删除逻辑…...

TiDB预研-分页查询、连接查询、执行计划

目录 分页查询原理连接查询原理查询计划分析 https://docs.pingcap.com/zh/tidb/stable/dev-guide-join-tables/ https://cn.pingcap.com/blog/tidb-query-optimization-and-tuning-1/ https://github.com/pingcap/blog-cn/blob/master/how-to-use-tidb.md 分页查询 深分…...

五、【LLaMA-Factory实战】模型部署与监控:从实验室到生产的全链路实践

【LLaMA-Factory实战】模型部署与监控&#xff1a;从实验室到生产的全链路实践 一、引言 在大模型应用落地过程中&#xff0c;从实验室研究到生产环境部署存在巨大挑战。本文基于LLaMA-Factory框架&#xff0c;详细介绍大模型部署与监控的完整流程&#xff0c;包含推理优化、…...

Unity 点击按钮,打开 Windows 文件选择框,并加载图片

代码如下&#xff1a; using System; using System.Collections; using System.Runtime.InteropServices; using UnityEngine; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.UI;/// <summary> /// 文件日志类 /// </summary> // […...

深入解析磁盘 I/O 与零拷贝技术:从传统读取到高效传输

深入解析磁盘 I/O 与零拷贝技术&#xff1a;从传统读取到高效传输 在现代计算机系统中&#xff0c;磁盘 I/O 操作是数据处理的核心环节之一。无论是读取文件、写入数据&#xff0c;还是进行网络传输&#xff0c;磁盘 I/O 的效率直接影响到系统的整体性能。本文将深入探讨磁盘 I…...

第十六章,网络型攻击防范技术

网络攻击介绍 网络攻击 --- 指的是入侵或破坏网络上的服务器 ( 主机 ) &#xff0c;盗取服务器的敏感数据或占用网络带宽。 网络攻击分类&#xff1a; 流量型攻击 网络层攻击 应用层攻击 单包攻击 畸形报文攻击 --- 向目标主机发送有缺陷的IP报文&#xff0c;使得目标在…...

线程的生命周期·

知识点详细说明 Java线程的生命周期由Thread.State枚举明确定义,包含以下6种状态: 1. 新建状态(NEW) 定义:线程对象被创建后,但未调用start()方法。特点: 未分配系统资源(如CPU时间片)。可通过Thread.getState()获取状态为NEW。示例:Thread t = new Thread(); // 状…...

kafka 面试总结

Kafka的幂等性是一种机制&#xff0c;确保生产者发送的每条消息在Broker端只被持久化一次&#xff0c;即使生产者因网络问题等原因重试发送&#xff0c;也不会导致消息重复。 实现原理 生产者ID&#xff08;PID&#xff09; 每个生产者实例在初始化时&#xff0c;会被分配一个…...

Webpack基本用法学习总结

Webpack 基本使用核心概念处理样式资源步骤&#xff1a; 处理图片资源修改图片输出文件目录 自动清空上次打包的内容EslintBabel处理HTML资源搭建开发服务器生产模式提取css文件为单独文件问题&#xff1a; Css压缩HTML压缩 小结1高级SourceMap开发模式生产模式 HMROneOfInclud…...

5月9日复盘-混合注意力机制

5月9日复盘 四、混合注意力 混合注意力机制&#xff08;Hybrid Attention Mechanism&#xff09;是一种结合空间和通道注意力的策略&#xff0c;旨在提高神经网络的特征提取能力。 1. CBAM Convolution Block Attention Module &#xff0c;卷积块注意力模块 论文地址&…...

YOLOv8 优化:基于 Damo-YOLO 与 DyHead 检测头融合的创新研究

文章目录 YOLOv8 的背景与发展Damo-YOLO 的优势与特点DyHead 检测头的创新之处融合 Damo-YOLO 与 DyHead 检测头的思路融合后的模型架构融合模型的代码实现导入必要的库定义 Damo-YOLO 的主干网络定义特征金字塔网络&#xff08;FPN&#xff09;定义 DyHead 检测头定义融合后的…...

【网安播报】Meta 推出 LlamaFirewall开源框架以阻止 AI 越狱、注入和不安全代码

1、Meta 推出 LlamaFirewall 框架以阻止 AI 越狱、注入和不安全代码 Meta 宣布推出 LlamaFirewall&#xff0c;这是一个开源框架&#xff0c;旨在保护人工智能 &#xff08;AI&#xff09; 系统免受新出现的网络风险&#xff0c;例如提示词注入、越狱和不安全代码等。除了 Llam…...

QT 解决msvc fatal error C1060: 编译器的堆空间不足

一.物理内存太小&#xff0c;代码又比较复杂&#xff0c;递归嵌套之类的。 1.修改虚拟内存的大小&#xff0c;一般设置为物理内存的1.5倍。 二.msvc工程的编译默认开启的是多线程编译&#xff0c;所以电脑内存确实不够&#xff0c;采用如下设置。 QMAKE_CXXFLAGS -j1 三.ms…...

PX4开始之旅(一)自动调参

核心知识点&#xff1a;无人机震动与滤波参数 1. 通俗易懂的解释 想象一下&#xff0c;你的无人机就像一个非常敏感的“听众”&#xff0c;它的“耳朵”就是陀螺仪和加速度计这些传感器&#xff0c;用来感知自己是如何移动和旋转的。理想情况下&#xff0c;它应该只“听”到你…...

C++ 中 lower_bound 与 upper_bound 函数详解

C 中 lower_bound 与 upper_bound 函数详解 文章目录 C 中 lower_bound 与 upper_bound 函数详解**一、核心定义与区别****二、使用条件与时间复杂度****三、实际应用场景****四、注意事项与常见误区****五、代码示例****六、总结** 一、核心定义与区别 lower_bound 作用&#…...

minio数据迁移(两台服务器没法相互通信)

场景描述: A服务器 无法访问 B服务器&#xff0c;B服务器 也无法访问 A&#xff08;即双方都不能通过公网或内网直连对方&#xff09; MinIO 官方提供了 mc&#xff08;MinIO Client&#xff09;命令行工具&#xff0c;可以直接实现 Bucket 之间的数据迁移&#xff1a; 安装 …...

O2OA(翱途)开发平台系统安全-用户登录IP限制

O2OA(翱途)开发平台[下称O2OA开发平台或者O2OA]支持对指定的用户设置可以连接的客户端计算机的IP地址&#xff0c;以避免用户在不安全的环境下访问系统。本篇主要介绍如何开启O2OA用户登录IP限制。 一、先决条件&#xff1a; 以拥有管理员权限的用户账号登录O2OA(翱途)开发平…...

CSS flex:1

在 CSS 中&#xff0c;flex: 1 是一个用于弹性布局&#xff08;Flexbox&#xff09;的简写属性&#xff0c;主要用于控制 flex 项目&#xff08;子元素&#xff09;如何分配父容器的剩余空间。以下是其核心作用和用法&#xff1a; 核心作用 等分剩余空间&#xff1a;让 flex …...

OpenHarmony平台驱动开发(十一),PIN

OpenHarmony平台驱动开发&#xff08;十一&#xff09; PIN 概述 功能简介 PIN即管脚控制器&#xff0c;用于统一管理各SoC的管脚资源&#xff0c;对外提供管脚复用功能。 基本概念 PIN是一个软件层面的概念&#xff0c;目的是为了统一对各SoC的PIN管脚进行管理&#xff0…...