【实战加详解】二进制部署k8s高可用集群教程系列二 - ssl 证书简介

2023-11-17

[!TIP]
二进制部署 k8s - ssl 证书


转载请注明出处:https://janrs.com

1.ssl 证书简介

[!NOTE]
在这里只做应用的简介,原理不做介绍。自行谷歌查阅。

涉及到安全的,也不整理文档了。自行研究。

1-1.什么是 ssl 证书

其实。。。ssl 证书没啥的,就是加密通讯用的,真正让大家头疼的不是 ssl 证书,而是跟 k8s 放在一块,结合 k8s 产生各种证书绕晕了。


先扫除这个疑虑,不要在有这个心智负担的情况下学习二进制部署k8s。把它认为是一件简单的事。

只要是开启通讯加密并且作为对外提供服务的,让外部访问的,并且开启通讯加密的,就必须要有 server 证书。

  • web 网站服务开启了 https 请求必须要有 server 端的 ssl 证书
  • 对外提供服务注册与发现的 etcd 服务开启通讯加密,也必须要有 server 端的 ssl 证书

对于 server 服务端要认证 client 客户端的,客户端就必须要有 client 证书

  • 金融行业就是典型的例子:我们登录金融网站需要使用 u盾,其实里面就是包含了 client 证书。用来验证客户端身份用的。

不同服务的证书都需要并且都可以用不同的机构才签发证书

  • 个人 web 网站用公用的自签机构。例如工具:openssl , cfssl
  • 商业的,例如各大证书签发机构:DigiCert

1-2.ssl 证书的三个要点

  • 签发机构 ca
  • 单向认证
  • 双向认证

1-3.关键技术名词

  • client 客户端证书
  • server 服务端证书
  • peer 双向对等证书
  • ca 根证书(也叫 ca 签发机构)
  • 单向认证
  • 双向认证

1-4.ssl 签发机构 ca

  • ca 签发机构,也叫 ca 根证书,是用来生成上面提到的 server client
    这两个证书的根证书。也就是要生成这三种证书前,必须先生成 ca 根证书。再用这个根证书来生成其他三个证书。
  • 有了 ca 根证书并且用它来生成了其他三种证书,就必须要用同一个 ca 根证书来校验。
    签发机构有商用的和自签的。商业的一般都是可信任的机构。

不同的、独立的服务可以使用独立的 ca 机构来签发证书。

1-5.ssl 单向认证

从最简单最常用的场景理解 ssl 单向认证:




有一个 web 网站,向世界上所有人提供访问。原来是 http 类型的,现在是 https 类型的,客户端在跟 web
服务端交互的时候,数据已经被加密了。这就是在 web 端,也就是 server 端使用了 ssl 证书。

注意:此时的 web 网站是面向所有人公开访问的,此时的 web 端,也就是 server 提供的通讯加密不指定客户端。




此时,web 端的证书称为 server 证书。没有客户端 client 证书。这时候就叫 单向认证

1-6.ssl 双向认证

接上面的 web 应用场景,在上面的 web 服务中,是向所有用户提供服务的。




如果 web 不向所有人提供访问,只让客户 A 访问,这时候就需要 web 颁发一个客户端证书(client 证书)给客户 A ,让 web
server
端来校验是否是合法的用户。


如果客户端没有 client 证书,是没法访问 server 端的。

典型的应用场景就是金融行业的网站需要认证客户。

此时,web 端的证书还是叫 server 证书,颁发给客户的证书就是 client 证书。客户端要访问服务端,就要使用 client
证书。这时候就叫双向认证

1-7.ssl 对等认证

peer 对等认证。peer 跟以上的区别就在于,server 端不仅只是单纯的 server 端,同时也是 client 端;client
点不仅只是单纯的 client 端,同时也是 server 端。




在集群上的每一个节点,都要提供服务给其他节点访问。在上面已经提到了,只要对外提供服务,就要有服务端的 server
证书,所以每个节点都要有 server 证书。


etcd 集群上,由于每个节点既要作为服务端和客户端,这时候就需要一个叫 peer
双向认证的证书,而不是跟上面一样的叫客户端(client)证书。




此时,集群上每个节点都需要一个 server 证书,并且同时要为每个节点颁发 peer
双向认证证书。每个节点之间互相访问,就要使用 peer 证书。这时候在 etcd 集群上,就叫对等认证

2.cfssl 简介

cfssl 是用来生成 X509 格式的工具,除了该工具,用 openssl 或者其他工具。


无论使用什么工具,只需要能够生成 X.509 格式的加密证书就行。在 etcd 集群和 k8s 中都是使用的 X.509 格式的证书。

[!NOTE]
cfssl 工具中,需要创建一个生成 ca 根证书的配置文件。格式为 json




signing 参数表示可以签发不同的证书

expiry 参数表示过期时间

profile 用于生成证书的时候指定的配置

server auth 参数表示用于 server 端的证书

client auth 参数表示用于 client 端的证书

server auth / client auth 同时指定表示两端都可以使用

示例如下:

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

3.etcd 所需证书

etcd 集群中的证书就比较简单。在上面提到的,每个 etcd 节点对外提供服务,所以需要 server
证书;每个节点对于其他节点来说,也是客户端,所以需要 peer 对等证书。


如果有其他客户端需要访问 etcd 服务,例如 kube-apiserver ,就需要为客户端颁发 client 证书。


同时,每个证书都需要一个 ca 根证书来签发。




所以,在 etcd 集群服务中,有以下三种证书:

  • 自身的 server 证书
  • 集群每个节点的 peer 双向对等证书
  • 颁发给客户端的 client 证书。例如:kube-apiserver

4.k8s 所需证书

k8s 中,让人感到费劲的地方不在于 ssl 证书的概念不好理解。

而是在于在 k8s 中,所有服务必须是要使用 ssl 证书才能正常运行。


又因为 k8s 拥有足够的灵活性,每个组件都可以单独拆分部署,一旦服务单独部署,复杂度就升上去了。




这跟在日常的开发中,一个项目从单体转为微服务架构,管理的复杂度就升上去同个道理。




所以,不需要有心智上的负担。要搞清楚 k8s 中的的 ssl 证书就必须要理清楚整个 k8s
有哪些服务组件,各个组件是怎么工作的。这跟理解微服务是一样的。



所以学习 k8s ,直接撸二进制部署是最好的学习 k8s
,因为每个不同的服务组件谷歌都提供了二进制文件进行部署。

4-1.k8s 中的服务以及组件

k8s 中,涉及到 ssl 的服务或者组件主要有以下

  • etcd 组件
  • master 节点的 kube-apiserver 组件,kube-controller-manager 组件,kube-scheduler 组件
  • node 节点的 kubelet 组件以及 kube-proxy 组件
  • aggregator-proxy 服务(聚合层的应用这里没有部署)
  • k8s 的证书自动申请签发服务
  • calico-cni 网络插件(calico 官方跟 k8s 推荐的都是 pod 部署,可以不涉及证书)
  • coredns 域名解析插件

4-2.k8s 中的证书

[!NOTE]
按照 k8s 中不同的服务来区别需要哪些 ca 签发机构,再按照各个服务为哪些客户端提供服务,就可以搞清楚需要哪些客户端证书。

理解 k8s 中的证书前,需要理解有哪些服务以及组件之间通信的过程。因为 ssl
就是对通信加密的。只要理清楚了有哪些通信过程,也就搞明白了 ssl 证书了。




所有的通信都跟 kube-apiserver 有关,直接看 kube-apiserver 参数就能搞明白需要哪些证书了。因为 kube-apiserver
的参数都有指定证书文件地址的参数。




组件参数查看官方文档,地址:(https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/)


有关 PKI 证书以及要求查看官方文档地址:(https://kubernetes.io/zh-cn/docs/setup/best-practices/certificates/)

4-3.kube-apiserver 服务

kube-apiserver 作为一个单独的服务,所以可以拥有自己的 ca 签发机构。使用 kube-apiserver 这个服务的客户端有哪些,就签发对应的客户端证书就行。

4-3-1.自己的 ca 根证书

kube-apiserver 作为独立的服务,所以可以自建 ca 签发机构。




生成的 ca 证书需要使用以下参数指定:

--client-ca-file string
# 如果已设置,则使用与客户端证书的 CommonName 对应的标识对任何出示由 client-ca 文件中的授权机构之一签名的客户端证书的请求进行身份验证。

4-3-2.自身的 server 证书

kube-apiserver 作为服务,所以本身需要自身的 server 端证书

配置 server 证书的参数如下:

--tls-cert-file string
# 包含用于 HTTPS 的默认 x509 证书的文件。(CA 证书(如果有)在服务器证书之后并置)。
# 如果启用了 HTTPS 服务,并且未提供 --tls-cert-file 和 --tls-private-key-file, 为公共地址生成一个自签名证书和密钥,并将其保存到 --cert-dir 指定的目录中。

--tls-private-key-file string
# 包含匹配 --tls-cert-file 的 x509 证书私钥的文件。

4-3-3.kube-controller-managerclient 证书

kube-controller-manager 作为 kube-apiserver 的客户端调用 kube-apiserver 的服务。所以需要 kube-apiserverca
机构为其颁发 client 证书。




kube-controller-manager 是使用 kubeconfig 的方式访问 kube-apiserver 的服务。


在设置 kubeconfig
的时候需要指定 kube-apiserverca 证书的地址以及 kube-controller-managerclient 证书的地址。




kubeconfig 相关参数如下:


设置集群参数指定 ca 证书地址

--certificate-authority

设置客户端认证参数指定 client 证书地址

--client-certificate
--client-key

4-3-4.kube-schedulerclient 证书

kube-scheduler 作为 kube-apiserver 的客户端调用 kube-apiserver 的服务。所以需要 kube-apiserverca
机构为其颁发 client 证书。




kube-scheduler 也是使用 kubeconfig 的方式访问 kube-apiserver 的服务。


在设置 kubeconfig 的时候同样需要指定 kube-apiserverca 证书的地址以及 kube-schedulerclient 的证书地址。




kubeconfig 相关参数如下:


设置集群参数指定 ca 证书地址

--certificate-authority

设置客户端认证指定 client 证书地址

--client-certificate
--client-key

5.kubelet 服务

kubelet 同样作为一个单独的服务,所以可以拥有自己的 ca 签发机构。对于 kubelet ,只有 kube-apiserver
这个客户端,只需要为其签发客户端 client 证书就行了。


那么在 kubelet 这个服务中,需要以下四种证书:

  • kubelet 自建的 ca 根证书
  • kubelet 自身 server 端证书
  • kubelet 访问 kube-apiserverclient 证书
  • kube-apiserver 访问 kubeletclient 证书

但是在 kubelet 中,存在一个证书管理的问题的。


该问题就是,kubelet 作为 node 节点上的服务。node
节点会随着服务的增加而增加,或者经常变动和删除节点。


如果手动为每个节点颁发 server 端证书以及创建 kubelet 客户端 client 证书,那么当 node
的节点越来越多的时候,证书将变得难以管理。




所以 k8s1.4 版本中,引入了 TLS Bootstrap 自动引导颁发证书的功能。

5-1.手动颁发证书

注意:配置了手动颁发证书的参数后,自签名证书的参数将失效。

手动颁发证书涉及到的参数如下:


kubelet 的配置参数:

tlsCertFile string
# tlsCertFile是包含 HTTPS 所需要的 x509 证书的文件 (如果有 CA 证书,会串接到服务器证书之后)。
# 如果tlsCertFile 和tlsPrivateKeyFile都没有设置,则系统会为节点的公开地址生成自签名的证书和私钥, 并将其保存到 kubelet --cert-dir参数所指定的目录下。

tlsPrivateKeyFile string
# tlsPrivateKeyFile是一个包含与tlsCertFile 证书匹配的 X509 私钥的文件。

authentication #authorization设置发送给 kubelet 服务器的请求是如何进行身份认证的。
  anonymous:
    enabled: false
  webhook:
    enabled: true
  x509:
    clientCAFile: # kubelet 的 ca 根证书的地址
    
authorization #authorization设置发送给 kubelet 服务器的请求是如何进行鉴权的。
  mode: Webhook
  webhook:
    cacheAuthorizedTTL: "5m"
    cacheUnauthorizedTTL: "30s"

kube-apiserver 的配置参数:

--kubelet-certificate-authority string
# 证书颁发机构的证书文件的路径。

--kubelet-client-certificate string
# TLS 的客户端证书文件的路径。

--kubelet-client-key string
# TLS 客户端密钥文件的路径。

5-2.自签名证书

自签名就是手动颁发证书的自动化。跟手动颁发证书的区别在于,不需要指定 ca 机构以及 kubelettls 证书参数。




注释掉 kubelet 的配置

# tlsCertFile string
# tlsPrivateKeyFile string

删除掉 kube-apiserver 的配置


是删除,不是注释

--kubelet-certificate-authority string

5-3.TLS Bootstrap 自动颁发证书

TLS Bootstrap 自动引导颁发证书中,kubelet 的客户端是由 kube-apiserver 颁发的。




TLS Bootsrap 涉及到的地方比较多,后面部署会有详细操作过程。

6.aggregator-proxy 服务

[!NOTE]
即聚合层的服务,这里没部署该服务,后期有用到再补充。

7.service-account 服务

[!NOTE]
该文档部署使用的是 kube-apiserverca 机构作为 sa 服务的 ca 机构。


要把 sa 服务的 ca 独立出来,就跟 kube-apiserver 一样的自己创建一个 ca。然后参数指定证书地址就就行。


这里不再折腾研究了,太特么折腾了。后期有空再研究验证后补充。

8.k8s 的证书申请服务

[!NOTE]
证书申请服务,即 sign/client 服务。创建 casa 一样。这里也不再折腾研究了,后期有空再补上来,太特么折腾了。


涉及到到参数如下,非常多,折腾一遍脑袋瓜直接炸裂。




该文档二进制部署同样使用的是 kube-apiserverca 机构。

--cluster-signing-cert-file string
# 包含 PEM 编码格式的 X509 CA 证书的文件名。该证书用来发放集群范围的证书。 如果设置了此标志,则不能指定更具体的--cluster-signing-* 标志。

--cluster-signing-duration duration     默认值:8760h0m0s
# 所签名证书的有效期限。每个 CSR 可以通过设置 spec.expirationSeconds 来请求更短的证书。

--cluster-signing-key-file string
# 包含 PEM 编码的 RSA 或 ECDSA 私钥的文件名。该私钥用来对集群范围证书签名。 若指定了此选项,则不可再设置 --cluster-signing-* 参数。

--cluster-signing-kube-apiserver-client-cert-file string
# 包含 PEM 编码的 X509 CA 证书的文件名, 该证书用于为 kubernetes.io/kube-apiserver-client 签署者颁发证书。
# 如果指定,则不得设置 --cluster-signing-{cert,key}-file。

--cluster-signing-kube-apiserver-client-key-file string
# 包含 PEM 编码的 RSA 或 ECDSA 私钥的文件名, 该私钥用于为 kubernetes.io/kube-apiserver-client 签署者签名证书。
# 如果指定,则不得设置 --cluster-signing-{cert,key}-file。

--cluster-signing-kubelet-client-cert-file string
# 包含 PEM 编码的 X509 CA 证书的文件名, 该证书用于为 kubernetes.io/kube-apiserver-client-kubelet 签署者颁发证书。
# 如果指定,则不得设置 --cluster-signing-{cert,key}-file。

--cluster-signing-kubelet-client-key-file string
# 包含 PEM 编码的 RSA 或 ECDSA 私钥的文件名, 该私钥用于为 kubernetes.io/kube-apiserver-client-kubelet 签署者签名证书。
# 如果指定,则不得设置 --cluster-signing-{cert,key}-file。

--cluster-signing-kubelet-serving-cert-file string
# 包含 PEM 编码的 X509 CA 证书的文件名, 该证书用于为 kubernetes.io/kubelet-serving 签署者颁发证书。
# 如果指定,则不得设置 --cluster-signing-{cert,key}-file。

--cluster-signing-kubelet-serving-key-file string
# 包含 PEM 编码的 RSA或ECDSA 私钥的文件名, 该私钥用于对 kubernetes.io/kubelet-serving 签署者的证书进行签名。
# 如果指定,则不得设置 --cluster-signing-{cert,key}-file。

--cluster-signing-legacy-unknown-cert-file string
# 包含 PEM 编码的 X509 CA 证书的文件名, 用于为 kubernetes.io/legacy-unknown 签署者颁发证书。 
# 如果指定,则不得设置 --cluster-signing-{cert,key}-file。

--cluster-signing-legacy-unknown-key-file string
# 包含 PEM 编码的 RSA 或 ECDSA 私钥的文件名, 用于为 kubernetes.io/legacy-unknown 签署者签名证书。
# 如果指定,则不得设置 --cluster-signing-{cert,key}-file。

看完之后是不是有一种头皮发麻,原地高潮到赶脚。

9.etcd 服务

etcd 作为一个单独的服务,所以可以拥有自己的 ca 签发机构。


使用 etcd 这个服务的客户端只有 kube-apiserver ,所以除了以上提到的
每个 etcd 节点自身需要的 server 证书以及 peer 对等证书外,


还需要生成一个 client 证书提供给 kube-apiserver 使用。




配置该证书的 kube-apiserver 参数为:

--etcd-cafile
# 用于保护 etcd 通信的 SSL 证书颁发机构文件。

--etcd-certfile
# 用于保护 etcd 通信的 SSL 证书文件。

--etcd-keyfile
# 用于保护 etcd 通信的 SSL 密钥文件。

转载请注明出处:https://janrs.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【实战加详解】二进制部署k8s高可用集群教程系列二 - ssl 证书简介 的相关文章

  • 数值类型转换Number()、parseInt()、parseFloat()

    在开发中踩了一个坑 在进行两个字符串类型的值比较时 忘记转换成数值类型导致错误 所以借此正好整理下数值类型转换的几种方式的比较与区分 Number parseInt parseFloat 的比较区分 Number 1 如果传入的是数值类型
  • 毕业五年,从月薪3K到年薪50W+,需要掌握哪些核心技能?(c/c++研发岗)

    作为一个程序员 随着工作年限的不断增长 感觉自己的技术水平与自己的工作年限严重不符 想跳槽出去换个新环境吧 又感觉自己的能力达不到心仪公司的标准 即使投了简历也没人来通知自己面试 就这样在原来的公司一天天的混日子 时间久了 感觉自己废了 就
  • 微信小程序怎么改变默认的打开页面?

    刚开始接触微信小程序 本来想要打开一个新页面而不是用原来的 这个页面 每次编译之后怎么才能让默认打开的页面不是这个页面而是我指定的页面呢 就去找到app json 把想指定的页面放到第一个 那么默认打开的首页就是你指定的页面了 这是来源于官
  • 两行Python代码调整视频的亮度

    老猿Python博文目录 一 引言 最近看到好几篇类似 n行Python代码 的博文 看起来还挺不错 简洁 实用 传播了知识 带来了阅读量 撩动了老猿的心 决定跟风一把 推一个 n行Python代码系列 文章 对于视频中的画面 有时出于特定
  • 【VPR】 Command-line - vpr的命令行选项(一)

    目录 一 基本用法 二 命令行详解 2 1 阶段选项 Stage Options 2 2 图形选项 Graphics Options 2 3 常规选项 General Options 2 4 文件名选项 Filename Options 2
  • RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is F..

    今天在HPC上跑的方法疯狂报错 RuntimeError Attempting to deserialize object on a CUDA device but torch cuda is available is False If y
  • System.IO.IOException: Sharing violation on pat

    System IO IOException Sharing violation on path E wang downloadmanage Assets download IEM2 apk at System IO FileStream c
  • 浅谈机器学习-回归与分类的区别

    前言 机器学习的主要任务便是聚焦于两个问题 分类和回归 本文将浅谈下两者的区别 区别 回归会给出一个具体的结果 例如房价的数据 根据位置 周边 配套等等这些维度 给出一个房价的预测 分类相信大家都不会陌生 生活中会见到很多的应用 比如垃圾邮
  • Spring Boot 2 全局异常处理

    1 创建 MyRestControllerAdvice 类 并添加 RestControllerAdvice import com tm common dto Rjson import com tm common exception Bus
  • Landsat9卫星简介

    1 landsat 9 先来介绍下2021年9月27日发射的landsat 9 目前已经采集了第一批影像 10月31日 1 携带的传感器 二代陆地成像仪Operational Land Imager 2 OLI 2 二代热红外传感器 TIR
  • C++11中thread_local的使用

    C 11中的thread local是C 存储期的一种 属于线程存储期 存储期定义C 程序中变量 函数的范围 可见性 和生命周期 C 程序中可用的存储期包括auto register static extern mutable和thread
  • 区块链的跨链技术介绍完整版

    如果说共识机制是区块链的灵魂核心 那么对于区块链特别是联盟链及私链来看 跨链技术就是实现价值网络的关键 它是把联盟链从分散单独的孤岛中拯救出来的良药 是区块链向外拓展和连接的桥梁 自比特币七年前诞生以来 数以百计的竞争币被开发出来 有着各种
  • 深入了解Aviator表达式引擎:高性能的轻量级计算引擎

    在软件开发过程中 我们经常需要对数学和逻辑表达式进行求值和计算 传统的方式可能会导致性能瓶颈和复杂的代码逻辑 在这篇博客中 我们将介绍Aviator表达式引擎 一个轻量级且高性能的计算引擎 用于解析和执行数学和逻辑表达式 什么是Aviato
  • 递归算法深入浅出三:递归求Fibonacci斐波那契数列

    递归算法概述及常见算法列表 传送门 http blog csdn net nthack5730 article details 65537530 斐波那契数列 斐波纳契数列 又称黄金分割数列 指的是这样一个数列 1 1 2 3 5 8 13
  • 如何获取Hive库表字段分区信息

    如何获取Hive库表字段分区信息 使用Hive关联的Mysql读取Hive的库表字段分区信息 也可以使用Hive的sys数据库查询相关的信息 但是会比较慢 所以直接使用Mysql去读 Hive在Mysql保存的信息如下图所示 获取Hive的
  • C语言-函数栈帧(每次调用函数,开辟函数的大概流程)

    思路 emm 有点懵 这一块 只知道个大概 如果后期我深挖的话 我再回头来补充 上图 括号的位置 便是每次创建 调用函数的时候 所产生的函数栈帧 也可以理解为每次调用函数 在电脑里开辟的一块空间 这空间实际就是一个栈 ebp栈底指针 esp
  • Ubuntu14.04 安装搜狗输入法

    Ubuntu14 04 安装搜狗输入法 一 安装fcitx 1 点击System Settings 2 选择Software Updates 3 点击Other Software 4 添加软件源 ppa fcitx team nightly
  • wpf 读取网络图片

    wpf读取网络图片 private void ViewImage string fileUri BitmapImage bitImage new BitmapImage bitImage BeginInit bitImage UriSour
  • 域名解析的过程

    互联网的域名解析不是靠一个DNS服务器完成的 而是分到多个DNS服务器上的 那么怎么分 net com edu 根 分别对应自己的服务器 根这个服务器虽然不负责具体的层级域名的解析 但是他知道 net com edu等是由哪些服务器解析的

随机推荐

  • 使用Visual Studio Team Explorer管理项目源代码

    最近参与了WPMind站长张欣发起的一个WP7开源项目 其中用到了Visual Studio Team Explorer进行源代码管理 以下是使用Visual Studio Team Explorer管理Codeplex上源代码的一些说明
  • 使用nginx部署项目

    开发工具 VScode 项目上线 部署项目 1 确保自己的代码是最新的 1 提交代码 git add git commit m 备注 git push git merge 分支名 git pull 2 确认是最新代码 2 VScode 1
  • python中遇见module ‘random‘ has no attribute ‘seed‘原因

    是因为我设置 py文件名为random与这个模块好像冲突 具体啥原因我也解释不清楚 修改文件名就可以了 import random random seed 10 print random random print random random
  • React生命周期

    React生命周期 4个阶段 1 挂载卸载过程 初始化 2 更新过程 3 销毁阶段 4 错误处理阶段 挂载卸载过程 构建并插入真实DOM 1 1 constructor 1 2 componentWillMount 1 3 render 1
  • 悟道·天鹰 Aquila + 天秤 FlagEval,打造大模型能力与评测标准双标杆

    为推动大模型在产业落地和技术创新 智源研究院发布 开源商用许可语言大模型系列 开放评测平台 2 大重磅成果 打造 大模型进化流水线 持续迭代 持续开源开放 01 悟道 天鹰 Aquila 开源商用许可语言大模型系列 悟道 天鹰 Aquila
  • 如祺出行冲刺自动驾驶商业化,人少的地方机会多?

    网约车 正在迎来让人 不明觉厉 的新一轮竞赛 网约车监管信息交互系统的数据显示 截至今年6月30日 全国共有318家网约车平台公司取得网约车平台经营许可 环比增加5家 网约车监管信息交互系统6月份共收到订单信息7 63亿单 环比上升3 7
  • 华为三层交换机 配置

    1 拓扑图 2 汇聚层交换机设置
  • 第十四篇 Inception V3——论文翻译

    文章目录 摘要 1 引言 2 通用设计原则 3 基于大滤波器尺寸分解卷积 3 1 分解到更小的卷积 3 2 空间分解为不对称卷积 4 利用辅助分类器 5 有效的网格尺寸减少 6 Inception v2 7 通过标签平滑进行模型正则化 8
  • 【PAT乙级】旧键盘打字

    题目描述 旧键盘上坏了几个键 于是在敲一段文字的时候 对应的字符就不会出现 现在给出应该输入的一段文字 以及坏掉的那些键 打出的结果文字会是怎样 输入格式 输入在 2 行中分别给出坏掉的那些键 以及应该输入的文字 其中对应英文字母的坏键以大
  • C# System.UnauthorizedAccessException:“对路径“C:\xxx”的访问被拒绝。

    C 程序运行时提示 对路径 C xxx 的访问被拒绝 System UnauthorizedAccessException 对路径 C Excel2007 xlsx 的访问被拒绝 解决办法是 启动visual studio时选择右键 gt
  • System.in.read()问题

    来源 http zhidao baidu com question 74164319 Q System in read 中in是一个字段即静态常量 JAVA帮助文档中 public static final InputStream in 那
  • MAC地址介绍及相关操作

    一 MAC地址介绍 MAC地址简介 MAC Mediun access cntrol 地址 用来表示互联网每一个站点的标识符 采用十六进制数表示 共六个字节 其中 前三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码 也称为 编
  • ArcGIS 10.8打开后显示loading document后闪退

    安装ArcGis完成后 打开ArcMap 卡在Loading Document后 闪退的问题 为何为肖的博客 CSDN博客 arcmap加载文档后闪退b同事新装ArcGis10 5后出现这个情况 联想以前编译Qgis时python环境变量的
  • 由一个例子,介绍linux目录的多用户及其读写可执行权限

    例子 查看文件的读写权限以及所属用户 查看目录的读写权限以及所属用户 目录读写权限默认为755即rwxr xr x 文件读写权限默认为744即rwxrr 目录和子目录的读写权限特点 例子 ls ld home1 drwxrwxrwx 39
  • 模板小程序是什么?怎么选择?

    模板小程序是指第三方服务商基于某个模板开发的小程序 这个模板可以根据开发者的需求进行定制 包括页面设计 功能模块 数据管理等方面 开发者可以在模板基础上进行自主开发 实现自己的需求和功能 模板小程序的优点是开发周期短 价格相对较低 一般是直
  • 白夜追凶 :手 Q 图片的显示和发送逻辑

    欢迎大家前往腾讯云社区 获取更多腾讯海量技术实践干货哦 作者 陈舜尧 导语 这张图片在快捷发图栏背景是黑色的 为啥发到AIO 会话窗口 里背景就变成白的了 通过一个bug单 对黑白背景问题跟进的过程中发现了手q中很多奇怪的表现 一层层看代码
  • SpringBoot支付宝接入实战

    文章目录 支付宝支付后端实战 基于SpringBoot 一 支付宝支付介绍及接入指引 1 支付宝开放能力介绍 1 能力地图 2 电脑网站支付产品 2 接入准备 1 开放平台帐号注册 2 常规接入流程 3 使用沙箱 二 项目的环境准备 1 框
  • js小案例

    一次性定时器 div class dn div
  • C++,命名空间

    命名空间定义 namespace 命名空间名 变量名 函数 结构体 枚举名 全局引入命名空间 using namespace 命名空间名 部分引入命名空间 using namespace 命名空间名 变量名 注意 表示域限定符 在哪个位置使
  • 【实战加详解】二进制部署k8s高可用集群教程系列二 - ssl 证书简介

    TIP 二进制部署 k8s ssl 证书 转载请注明出处 https janrs com 1 ssl 证书简介 NOTE 在这里只做应用的简介 原理不做介绍 自行谷歌查阅 涉及到安全的 也不整理文档了 自行研究 1 1 什么是 ssl 证书