cfssl自签证书

什么是cfssl?

CloudFlare SSL,是由美国的一个叫CloudFlare的公司开发的一款开源的工具包。与OpenSSL类似,但是相比OpenSSL而言,cfssl是一个更轻量化、易于使用和理解的 PKI/TLS 解决方案,但是功能丰富性方面不如OpenSSL

安装cfssl

从https://github.com/cloudflare/cfssl/releases 下载二进制包,主要是如下三个:

  • cfssl_1.6.4_linux_amd64:用于签发证书
  • cfssljson_1.6.4_linux_amd64:将cfssl签发生成的证书(json格式)变成文件
  • cfssl-certinfo_1.6.4_linux_amd64:验证查看证书信息

由于下载的是可执行文件,直接重命名放到系统到的执行文件目录并加上执行权限即可,比如:/usr/local/bin

[root@k8s-master packages]# cp cfssl_1.6.4_linux_amd64 /usr/local/bin/cfssl
[root@k8s-master packages]# cp cfssljson_1.6.4_linux_amd64 /usr/local/bin/cfssljson
[root@k8s-master packages]# cp cfssl-certinfo_1.6.4_linux_amd64 /usr/local/bin/cfssl-certinfo
[root@k8s-master packages]# chmod +x /usr/local/bin/cfssl
[root@k8s-master packages]# chmod +x /usr/local/bin/cfssljson
[root@k8s-master packages]# chmod +x /usr/local/bin/cfssl-certinfo
[root@k8s-master packages]# which cfssl
/usr/local/bin/cfssl
[root@k8s-master packages]# which cfssljson
/usr/local/bin/cfssljson
[root@k8s-master packages]# which cfssl-certinfo
/usr/local/bin/cfssl-certinfo

使用cfssl创建证书

创建CA根证书及其私钥

根证书及其私钥,也就是CA证书和CA证书的私钥,后续创建的所有证书都由它签名。CA根证书创建后一般命名为ca.pem,CA跟证书的私钥创建后一般命名为ca-key.pem。

相当于定一个小范围的"权威机构", 小范围内大家都认为这个权威机构是可信的。类似于CA

创建CA根证书及其私钥有如下两个步骤:

创建CA根证书签名请求文件ca-csr.json

CSR,即Certificate Sinature Requests,“证书签名请求”。CSR是提交给CA(证书颁发机构)的东西,CA会返回一个证书。

cfssl官网的样例:

{"hosts": ["example.com","www.example.com"],"CN": "www.example.com","key": {"algo": "rsa","size": 2048},"names": [{"C": "US","L": "San Francisco","O": "Example Company, LLC","OU": "Operations","ST": "California"}]
}

释义

“host”:证书应该对其有效的域名列表

“CN”:“Common Name”,“CN” 值被某些 CA 用来确定证书应该为哪个域生成

“names”:每个name对象应该至少包含一个“C”、“L”、“O”、“OU”或“ST”值(或这些值的任何组合)。

  • “C”: country
  • “L”: locality or municipality (such as city or town name)
  • “O”: organisation
  • “OU”: organisational unit, such as the department responsible for owning the key; it can also be used for a “Doing Business As” (DBS) name
  • “ST”: the state or province

综上所述,生成ca根证书的csr文件:ca-csr.json

{"hosts": [],"CN": "kubernetes","key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "ShenZhen","ST": "ShenZhen/GuangDong"}]
}

使用cfssl、cfssljson命令生成ca根证书及其私钥文件

命令如下:

[root@k8s-master conf_file]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca

如上命令会生产三个文件:

  • ca.pem:ca根证书文件
  • ca-key.pem:ca根证书的私钥文件
  • ca.csr:

注意:

  1. cfssl的输出为cfssljson的输入,直接生成ca根证书及其私钥
  2. "ca"是自定义文件命名
  3. "ca.pem"是ca根证书,"ca-key.pem"是ca根证书的私钥。使用这两个文件就可以用来签发其他证书文件了。

根据CA根证书及其私钥签名生成其它证书及其私钥

利用CA根证书及其私钥文件签发生成其它证书及其私钥,分为以下3个步骤执行操作:

创建CA根证书配置文件

CA根证书配置文件,一般命名为ca-config.json,它用于配置根证书的使用场景 (profile) 和具体参数 (usage,过期时间、服务端认证、客户端认证、加密等),后续在签名其它证书时需要指定特定场景 (profile)。

ca-config.json的配置如下

{"signing":{"default":{"expiry":"175200h"},"profiles":{"kubernetes":{"expiry":"175200h","usages":["signing","key encipherment","server auth","client auth"]}}}
}

释义

“expiry”: 175200h表示生成的证书20年有效期
“profiles”: 指定证书使用场景,下面的kubernetes是一个场景名称,后续签名生成证书及其私钥时需要指定该场景(profile)名称
“signing”:表示该证书可用于签名其它证书,生成的 ca.pem 证书中 CA=TRUE
“server auth”:表示client可以用该证书对server提供的证书进行验证
“client auth”:表示server可以用该证书对client提供的证书进行验证

创建目标证书签名请求文件

想要为www.zptest.com域名生成一个证书,需要先创建一个证书签名请求文件,由ca根证书及其私钥来签名生成。

证书签名请求文件:www.zptest.com-csr.json

{"hosts": [],"CN": "www.zptest.com","key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "ShenZhen","ST": "ShenZhen/GuangDong"}]
}

注意:

“CN”: 不能错,如果要为某域名创建证书,则必须为某域名

根据CA根证书及其私钥签名生成目标证书和私钥

[root@k8s-master conf_file]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes www.zptest.com-csr.json | cfssljson -bare www.zptest.com
2023/10/10 17:57:56 [INFO] generate received request
2023/10/10 17:57:56 [INFO] received CSR
2023/10/10 17:57:56 [INFO] generating key: rsa-2048
2023/10/10 17:57:56 [INFO] encoded CSR
2023/10/10 17:57:56 [INFO] signed certificate with serial number 586881673865669754505692346946839988455819800365
2023/10/10 17:57:56 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
websites. For more information see the Baseline Requirements for the Issuance and Management
of Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);
specifically, section 10.2.3 ("Information Requirements").  #告警可忽略

注意:
“www.zptest.com-csr.json” 是证书的名称,可以自定义

校验证书

校验证书有多种方式,如下介绍2种:

使用openssl校验证书

[root@k8s-master conf_file]# openssl x509 -noout -text -in  www.zptest.com.pem
Certificate:Data:Version: 3 (0x2)Serial Number:66:cc:af:36:93:57:b9:54:64:c0:13:e0:43:a7:8d:7b:a4:59:6f:2dSignature Algorithm: sha256WithRSAEncryptionIssuer: C=CN, ST=ShenZhen/GuangDong, L=ShenZhen, CN=kubernetesValidityNot Before: Oct 10 09:53:00 2023 GMTNot After : Oct  5 09:53:00 2043 GMTSubject: C=CN, ST=ShenZhen/GuangDong, L=ShenZhen, CN=www.zptest.comSubject Public Key Info:Public Key Algorithm: rsaEncryptionPublic-Key: (2048 bit)Modulus:00:c0:44:b6:f5:b1:60:89:2f:31:d3:6c:7e:9f:dd:3f:f7:b8:8f:d1:62:70:5d:4a:e8:66:c6:70:1f:9a:54:c8:f5:d3:3c:f3:6c:ba:b1:10:97:72:36:91:88:e3:77:f1:78:ab:3a:73:59:83:3f:ff:20:92:7a:3a:1c:44:f9:c1:0a:07:e8:ee:96:9f:6d:70:27:03:c4:71:b3:32:1f:16:90:3b:90:0d:b6:24:f9:82:e1:62:0a:32:ed:2f:68:28:3c:72:a5:31:2c:b1:7d:f1:94:a7:77:f8:10:b1:b5:83:3e:d8:c2:c7:1d:e5:fb:d6:00:14:56:e6:e5:21:31:20:d1:99:5a:fc:63:54:8d:fc:7d:af:cc:79:08:b8:fb:2a:14:0b:15:4d:df:e4:c3:31:ce:9b:75:65:55:d6:a1:04:e4:31:98:2f:de:ea:84:1e:09:11:54:36:eb:5a:40:f5:e4:ea:74:45:e2:2e:8a:d9:c1:ac:49:a6:11:ca:01:c3:56:8c:b2:a6:5c:3b:93:06:03:7b:d4:3f:0d:8c:b7:9e:46:b6:93:04:2a:e1:24:63:e9:c3:84:c4:2f:14:25:f5:f9:ce:2b:57:21:c5:c7:7f:f9:5b:cb:81:c2:ef:f2:33:da:98:b4:63:9a:92:c7:a5:25:57:e9:54:bb:6c:49:5a:d3Exponent: 65537 (0x10001)X509v3 extensions:X509v3 Key Usage: criticalDigital Signature, Key EnciphermentX509v3 Extended Key Usage:TLS Web Server Authentication, TLS Web Client AuthenticationX509v3 Basic Constraints: criticalCA:FALSEX509v3 Subject Key Identifier:D7:D3:73:39:62:BF:B5:60:6E:8E:56:3B:67:76:15:C9:45:89:83:DDX509v3 Authority Key Identifier:keyid:41:21:49:3C:16:56:2A:E1:F8:9D:20:D6:32:B1:98:E0:C9:FD:5C:DDSignature Algorithm: sha256WithRSAEncryption0e:6a:a3:1f:cf:6f:c5:5e:49:29:06:89:8d:06:10:ab:bd:d2:ee:e2:e5:67:47:75:1b:d5:85:51:1a:fb:0e:6c:1b:4d:bf:3e:af:83:4f:3b:f0:3e:bd:ef:89:4b:a5:64:e6:9e:fd:b4:89:0a:ff:3e:ed:4f:99:0e:40:3c:8f:ee:ea:0e:07:23:d7:31:31:a9:10:99:da:b7:5d:ba:3f:9a:00:3c:01:53:15:60:bc:95:0c:cc:58:fe:b6:d8:a9:c7:99:88:ec:7e:d1:d9:a3:27:f5:f6:0d:28:96:b6:7e:6c:6a:ed:13:e9:45:ff:2f:c5:4d:f5:0c:6a:c4:c4:03:a3:bf:79:79:ec:21:70:82:66:d3:6b:88:18:3b:4d:be:f2:56:65:e0:b2:a7:01:ec:62:87:83:d4:98:4f:4f:f9:12:c8:f2:fd:6b:1b:cb:55:1e:e8:5e:ff:5f:2e:89:1c:2c:16:4d:fa:4e:8c:c5:90:b5:db:aa:f2:9c:58:fd:2c:82:56:3e:78:b8:2d:cd:75:d3:a6:bc:2b:cb:a0:84:40:65:ed:93:e4:da:9a:cb:38:3d:7c:53:04:68:e5:3a:f6:de:16:4c:56:81:be:12:2a:6d:67:e5:e6:91:49:cb:a5:06:b9:44:ae:5c:ea:66:d6:e6:8c:a8:98:d5:63:a7:00:af

输出释义

Issuer:是证书签发机构(即CA)相关的信息,应该和ca-csr.json的"names"字段和"CN"字段匹配

Validity:该证书的有效期

Subject:是本证书相关的信息,应该和www.zptest.com-csr.json中"names"字段和"CN"字段匹配

使用cfssl-centinfo校验证书

[root@k8s-master conf_file]# cfssl-certinfo -cert www.zptest.com.pem
{"subject": {"common_name": "www.zptest.com","country": "CN","locality": "ShenZhen","province": "ShenZhen/GuangDong","names": ["CN","ShenZhen/GuangDong","ShenZhen","www.zptest.com"]},"issuer": {"common_name": "kubernetes","country": "CN","locality": "ShenZhen","province": "ShenZhen/GuangDong","names": ["CN","ShenZhen/GuangDong","ShenZhen","kubernetes"]},"serial_number": "586881673865669754505692346946839988455819800365","not_before": "2023-10-10T09:53:00Z","not_after": "2043-10-05T09:53:00Z","sigalg": "SHA256WithRSA","authority_key_id": "41:21:49:3C:16:56:2A:E1:F8:9D:20:D6:32:B1:98:E0:C9:FD:5C:DD","subject_key_id": "D7:D3:73:39:62:BF:B5:60:6E:8E:56:3B:67:76:15:C9:45:89:83:DD","pem": "-----BEGIN CERTIFICATE-----\nMIIDtTCCAp2gAwIBAgIUZsyvNpNXuVRkwBPgQ6eNe6RZby0wDQYJKoZIhvcNAQEL\nBQAwUjELMAkGA1UEBhMCQ04xGzAZBgNVBAgTElNoZW5aaGVuL0d1YW5nRG9uZzER\nMA8GA1UEBxMIU2hlblpoZW4xEzARBgNVBAMTCmt1YmVybmV0ZXMwHhcNMjMxMDEw\nMDk1MzAwWhcNNDMxMDA1MDk1MzAwWjBWMQswCQYDVQQGEwJDTjEbMBkGA1UECBMS\nU2hlblpoZW4vR3VhbmdEb25nMREwDwYDVQQHEwhTaGVuWmhlbjEXMBUGA1UEAxMO\nd3d3LnpwdGVzdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA\nRLb1sWCJLzHTbH6f3T/3uI/RYnBdSuhmxnAfmlTI9dM882y6sRCXcjaRiON38Xir\nOnNZgz//IJJ6OhxE+cEKB+julp9tcCcDxHGzMh8WkDuQDbYk+YLhYgoy7S9oKDxy\npTEssX3xlKd3+BCxtYM+2MLHHeX71gAUVublITEg0Zla/GNUjfx9r8x5CLj7KhQL\nFU3f5MMxzpt1ZVXWoQTkMZgv3uqEHgkRVDbrWkD15Op0ReIuitnBrEmmEcoBw1aM\nsqZcO5MGA3vUPw2Mt55GtpMEKuEkY+nDhMQvFCX1+c4rVyHFx3/5W8uBwu/yM9qY\ntGOakselJVfpVLtsSVrTAgMBAAGjfzB9MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUE\nFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU\n19NzOWK/tWBujlY7Z3YVyUWJg90wHwYDVR0jBBgwFoAUQSFJPBZWKuH4nSDWMrGY\n4Mn9XN0wDQYJKoZIhvcNAQELBQADggEBAA5qox/Pb8VeSSkGiY0GEKu90u7i5WdH\ndRvVhVEa+w5sG02/Pq+DTzvwPr3viUulZOae/bSJCv8+7U+ZDkA8j+7qDgcj1zEx\nqRCZ2rdduj+aADwBUxVgvJUMzFj+ttipx5mI7H7R2aMn9fYNKJa2fmxq7RPpRf8v\nxU31DGrExAOjv3l57CFwgmbTa4gYO02+8lZl4LKnAexih4PUmE9P+RLI8v1rG8tV\nHuhe/18uiRwsFk36TozFkLXbqvKcWP0sglY+eLgtzXXTprwry6CEQGXtk+Tamss4\nPXxTBGjlOvbeFkxWgb4SKm1n5eaRSculBrlErlzqZtbmjKiY1WOnAK8=\n-----END CERTIFICATE-----\n"
}

输出释义

Issuer:是证书签发机构(即CA)相关的信息,应该和ca-csr.json的"names"字段和"CN"字段匹配

Subject:是本证书相关的信息,应该和www.zptest.com-csr.json中"names"字段和"CN"字段匹配

知识补充

两个通识

  1. 公钥加密的数据,私钥可以解密;私钥加密的数据,公钥无法解密。
  2. 公钥谁都可以拿,是公开的,私钥要server端安全保管,是私密的。

“CA”,(Certificate Authority,证书颁发机构)是一个负责签署并颁发数字证书的实体。数字证书(也称为 SSL/TLS 证书)用于验证网站或服务的身份,确保网络传输的数据加密和安全。

“证书”,certificate,是CA(证书颁发机构)经过认证证书申请者身份的合法性,利用其机构的权威性和公众信服力向第三方颁发的一种有效证,使一方凭借对CA的信任,进而对持有证书的另一方也持有信任 。

浏览器访问server的认证过程

当用户通过浏览器访问网站时,网站的server会先将证书发送给用户的浏览器,浏览器会解析证书获取证书的颁发机构、是否有效等信息,浏览器或操作系统会内置一些公信力强的CA,浏览器会认为只要是这些CA颁发的证书,则会认为网站是经过合法认证的。相当于经过了第三方的权威认证。

加密和解密过程:

  1. 服务器具有一对公钥和私钥,公钥包含在证书中,私钥则妥善存储在服务器上。

  2. 当客户端(通常是浏览器)访问服务器时,服务器会将证书(包含公钥)发送给客户端。

  3. 客户端验证证书的有效性和 CA 的可信度,在确认证书安全之后进行下一步操作。

  4. 客户端使用证书中的公钥创建一个会话密钥(Session Key),这是一个临时用于对称加密的密钥。

  5. 客户端使用证书的公钥加密会话密钥并将其发送回服务器。

  6. 服务器使用证书的私钥对接收到的会话密钥进行解密,得到会话秘钥。

  7. 现在,客户端和服务器都具有相同的会话密钥。他们可以使用这个对称的会话密钥加密和解密之后发送的所有数据。

    特别注意,客户端和服务端对数据进行加密和解密使用的协商后的会话秘钥而不是公钥或者私钥。

附录

参考:

  1. https://segmentfault.com/a/1190000038276488#item-3-4
  2. https://github.com/cloudflare/cfssl/wiki/Creating-a-new-CSR

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机视觉处理的开源框架

计算机视觉是一门涉及图像和视频分析的领域,有许多开源的框架和库可用于构建计算机视觉应用程序。以下是一些常见的计算机视觉开源框架及其特点,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合…

地级市HVV | 未授权访问合集

在网站前后端分离盛行下,将大部分权限控制交给前端,导致js中隐藏未授权或者可绕过的前端鉴权。前后端分离的好处是提高开发效率,同时防止黑客更直接的对服务器造成危害,但权限控制的工作量全部交给前端会导致大量页面未授权或者后…

Flink---12、状态后端(HashMapStateBackend/RocksDB)、如何选择正确的状态后端

星光下的赶路人star的个人主页 大鹏一日同风起,扶摇直上九万里 文章目录 1、状态后端(State Backends)1.1 状态后端的分类(HashMapStateBackend/RocksDB)1.2 如何选择正确的状态后端1.3 状态后端的配置 1、状态后端&am…

香港专用服务器拥有良好的国际网络连接

香港服务器在多个领域有着广泛的应用。无论是电子商务、金融交易、游戏娱乐还是社交媒体等,香港服务器都能够提供高效稳定的服务。对于跨境电商来说,搭建香港服务器可以更好地满足亚洲用户的购物需求;对于金融机构来说,香港服务器…

力扣第98题 验证二叉搜索树 c++ 与上一篇文章相似

题目 98. 验证二叉搜索树 中等 相关标签 树 深度优先搜索 二叉搜索树 二叉树 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当…

如何在小程序中设置导航栏文字颜色和背景颜色

不同商家有不同的颜色风格,例如有些做设计的公司,主要是黑色风格;有些卖珠宝的商家,主要是金色风格;他们的小程序,也需要进行同样的风格设定。下面具体介绍怎么在小程序中进行整个风格设定。 1. 在小程序管…

Gooxi国鑫搭载第四代英特尔至强可扩展处理器系列服务器焕新登场

由算力驱动的数字经济渗透到了百行千业,在驱动传统经济转型升级和效能优化的同时,也大幅度增加了各行业数据处理能力的需求 。 面对千行百业加速创新应用和AIGC时代像潮水一样奔涌算力需求,得益于第四代英特尔至强可扩展处理器以及基于Gooxi最…

cmake 多线程编译 指定 Visual Studio 编译器 命令行

当使用CMake来配置和构建一个Visual Studio 项目时,以下命令是关键的。 第一行是用于配置项目,而第二行用于构建项目。 Visual Studio 15 2017 Visual Studio 16 2019 Visual Studio 17 2022 在CMake中,DCMAKE_BUILD_TYPE是用于指定项目的构建…

MySQL之MHA高可用配置及故障切换实例

MySQL之MHA高可用配置及故障切换实例 1、MHA概述1.1MHA 是什么1.2、MHA 的组成1.3MHA 的特点 2、MHA搭建准备2.1实验思路2.2实验准备 3、MHA搭建的步骤3.1配置主从复制3.2安装 MHA 软件3.3故障模拟 1、MHA概述 1.1MHA 是什么 MHA(MasterHigh Availability&#xf…

大端字节序存储 | 小端字节序存储介绍

为什么存储的顺序有些变动呢? 大小端的介绍 我们在创建变量时,操作系统就会给你分配空间,比如你创建了【short/int/double/float】的变量,这些变量的类型都是大于1个字节的,操作系统会根据你这个变量的类型&#xff…

虹科分享 | 想买车无忧?AR为您带来全新体验!

新能源汽车的蓬勃发展,推动着汽车行业加速进行数字化变革。据数据显示,全球新能源汽车销售额持续上升,预计到2025年,新能源汽车市场规模将达到约 4200亿美元,年复合增长率超过 30%。这表明消费者对清洁能源出行的需求不…

AIGC AI绘画 Midjourney 参数大全详细列表

AIGC ChatGPT 职场案例 AI 绘画 与 短视频制作, Power BI 商业智能 68集, 数据库Mysql8.0 54集 数据库Oracle21C 142集, Office 2021实战, Python 数据分析, ETL Informatica 案例实战 Excel 2021实操,函数大全,图表大全,大屏可视化制作 加技巧500集 数据分析可视化T…

Android 13 骁龙相机点击拍照流程分析(一)——点击拍照到更新到左下角缩略图

一.背景 由于最近客户定制需要将文件挂载类型修改为sdcardfs,由于修改了文件挂载类型,导致了骁龙相机拍照后不能点击进入相册,故对骁龙相机从点击事件开始进行问题的排查,此处不介绍最终的sdcardfs挂载后的问题解决方案 二.流程介绍 拍照的流程大概分为几个阶段:打开相机…

【MySql】mysql之进阶查询语句

目录 一、常用查询 1、order by按关键字排序❤ 1.1 升序排序 1.2 降序排序 1.3 结合where进项条件过滤再排序 1.4 多字段排序 2、and和or判断 2.1 and和or的使用 2.2 嵌套、多条件使用 3、distinct 查询不重复记录 4、group by 对结果进行分组 5、limit限制结果…

深度学习笔记之优化算法(五)AdaGrad算法的简单认识

深度学习笔记之优化算法——AdaGrad算法的简单认识 引言回顾:动量法与Nesterov动量法优化学习率的合理性AdaGrad算法的简单认识AdaGrad的算法过程描述(2023/10/10)补充:AdaGrad示例代码 引言 上一节对 Nesterov \text{Nesterov} Nesterov动量法进行了简…

算法题:买卖股票的最佳时机 II (贪心算法解决股票问题)

这道题是贪心算法的中级难度练习题,由于题目设定,整个价格都是透明的,这里并不涉及需要预测股票涨势的问题。解决思路不难,就是一旦股票价格开始下降了就买入,一旦上升了,就赶紧卖出。(完整题目…

SpringBoot 如何使用 Grafana 进行可视化监控

使用Spring Boot Sleuth进行分布式跟踪 在现代分布式应用程序中,跟踪请求和了解应用程序的性能是至关重要的。Spring Boot Sleuth是一个分布式跟踪解决方案,它可以帮助您在分布式系统中跟踪请求并分析性能问题。本文将介绍如何在Spring Boot应用程序中使…

YOLOV5标签中修改同一个位置的 ,修改第一行的第一个值

import os# 需要查找的行 lines_to_find ["1 0.428500 0.266667 0.100000 0.196000","1 0.227625 0.284667 0.081250 0.092667","1 0.251125 0.791000 0.106250 0.151333" ]# 文件夹路径 folder_path rE:\data_seg\data_detect\216_813# 遍历文…

DC2DC电源设计注意事项--1,Feedback

电源采集图如下图 Feedback 采集电压点应该在靠近负载侧。这样可以减少大电流导线导致的电压差,真实反应输出电压值 FB_1P21采集电路靠近芯片侧, 2.1,采集分压电路上侧为Vout Vnoise, 那么一分压就噪声就小了。假如采集电路远离芯片侧&…

CSS学习基础知识

CSS学习笔记 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width,…