K8s(九)—volume.md
目录
- volume
- configMap
- 介绍
- 官网
- 例子
- 基于文件生成 ConfigMap
- 使用 ConfigMap 数据定义容器环境变量
- 使用单个 ConfigMap 中的数据定义容器环境变量
- EmptyDir
- hostPath
- hostPath 配置示例
- nfs
- persistentVolumeClaim
volume
https://kubernetes.io/zh-cn/docs/concepts/storage/volumes/
在Kubernetes中,Volume是一种抽象的概念,用于将持久化存储附加到Pod中,以便容器可以读取和写入数据。Volumes提供了一种在Pod之间共享数据、将数据持久化存储以及将数据从主机挂载到容器中的方法。以下是关于Kubernetes中Volume的详细解释:
Volume的基本概念:
-
•
容器存储抽象: Volume是Kubernetes的容器存储抽象,它使容器能够在不同的Pod之间共享数据,或者将数据持久化存储到底层存储设备上。
-
•
生命周期绑定: Volume的生命周期与Pod紧密绑定,当Pod被删除时,与之关联的Volume也会被删除(除非它被配置为保留)。
-
•
挂载点: Volume在Pod中通过一个或多个挂载点(mount points)进行访问。容器可以将这些挂载点用作文件或目录的存储位置。
内置Volume类型:
Kubernetes支持多种内置Volume类型,每种类型都有不同的用途和特性,包括但不限于:
-
•
EmptyDir: 空目录,生命周期与Pod相同,适合临时存储。
-
•
HostPath: 主机文件系统的目录,适合与主机共享文件。
-
•
PersistentVolumeClaim (PVC): PVC允许动态分配持久卷,并且可以用于数据持久性存储。
-
•
ConfigMap和Secret: 将ConfigMap和Secret数据作为文件或环境变量挂载到容器中。
持久卷(Persistent Volumes)和持久卷声明(Persistent Volume Claims):
-
•
持久卷(PV)是集群级别的存储资源,它们独立于Pod的生命周期。
-
•
持久卷声明(PVC)是Pod对PV的请求。PVC允许开发人员声明他们需要多少存储以及存储的属性(例如访问模式和存储类)。
-
•
PVC与PV进行绑定,Pod再引用PVC,使得数据持久化存储可以动态地分配给Pod。
存储类(Storage Class):
-
•
存储类是一种用于动态分配PV的资源管理策略。它允许管理员定义不同类型的存储(如本地存储、网络存储等)以及各种参数。
-
•
当PVC没有指定存储卷时,存储类可以根据要求动态创建PV。
Volume的使用场景:
-
•
共享配置文件: 使用ConfigMap Volume或Secret Volume将配置文件共享给多个容器。
-
•
数据持久化: 使用PersistentVolume和PersistentVolumeClaim来实现数据的持久性存储,例如数据库数据。
-
•
临时存储: 使用EmptyDir Volume来创建在Pod之间共享的临时目录。
-
•
日志和监控数据: 使用HostPath Volume将日志文件或监控数据存储到宿主主机上以供分析。
Volume的声明:
-
•
在Pod的定义中,可以通过
volumes
字段声明要使用的Volume。 -
•
在容器的定义中,可以通过
volumeMounts
字段将Volume挂载到容器的指定路径。
示例:
以下是一个使用PersistentVolumeClaim和Volume的示例:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: my-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 1Gi
---
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:volumes:- name: my-storagepersistentVolumeClaim:claimName: my-pvccontainers:- name: my-containerimage: my-imagevolumeMounts:- mountPath: /dataname: my-storage
在此示例中,我们创建了一个PersistentVolumeClaim(my-pvc),然后在Pod中使用该PVC来创建一个Volume,并将它挂载到容器的/data
路径上。
总之,Kubernetes的Volume是一种强大的机制,用于处理容器存储需求,它提供了多种选项,使得在容器化应用程序中管理数据变得更加灵活和可靠。不同类型的Volume适用于不同的用例,根据应用程序的需求来选择适当的Volume类型是非常重要的。
configMap
介绍
在Kubernetes中,ConfigMap(配置映射)是一种用于将配置数据以键值对的形式存储并注入到容器中的资源。ConfigMap允许将配置信息从容器镜像中分离出来,从而使配置更易于管理和修改。以下是关于Kubernetes中ConfigMap的详细解释:
ConfigMap的基本概念:
**配置数据存储**: ConfigMap用于存储配置数据,这些数据通常以**键值对**的形式存在。键值对中的键(key)是配置的名称,而值(value)是配置的内容。
**解耦配置**: ConfigMap将配置数据从应用程序容器中分离出来,从而使得应用程序可以更容易地配置和修改,而不需要重新构建镜像。
**不敏感数据**: ConfigMap通常用于存储非敏感数据,如应用程序配置、环境变量、命令行参数等。
创建和管理ConfigMap:
**命令行创建**:可以使用`kubectl create configmap`命令或从YAML文件创建ConfigMap。例如:```kubectl create configmap my-config --from-literal=KEY1=VALUE1 --from-literal=KEY2=VALUE2```
**YAML定义**:以下是一个ConfigMap的YAML示例:```apiVersion: v1kind: ConfigMapmetadata:name: my-configdata:KEY1: VALUE1KEY2: VALUE2```
**从文件创建**:还可以从文件创建ConfigMap,例如从配置文件中读取键值对列表。
将ConfigMap注入到Pod中:
ConfigMap可以通过以下方式注入到Pod中:- **作为环境变量**: 使用`env`字段将ConfigMap的数据注入为容器的环境变量。- **作为卷(Volume)**: 将ConfigMap数据作为文件挂载到容器中的某个路径上,容器可以读取这些文件作为配置文件。
示例:以下是一个将ConfigMap作为环境变量注入到Pod中的示例:```apiVersion: v1kind: Podmetadata:name: my-podspec:containers:- name: my-containerimage: my-imageenv:- name: KEY1valueFrom:configMapKeyRef:name: my-configkey: KEY1```
使用场景:
**应用程序配置**: 将应用程序的配置信息(如数据库连接字符串、端口号、日志级别等)存储在ConfigMap中,使应用程序更易于配置和管理。
**环境变量注入**: 使用ConfigMap将环境变量注入到容器中,以自定义容器的行为。
**配置文件挂载**: 将配置文件存储在ConfigMap中,并将其作为卷挂载到容器中,以供应用程序读取。
更新和维护:
ConfigMap的数据可以随时更新,Kubernetes会自动将更新后的数据应用到Pod中。
当ConfigMap更新时,使用该ConfigMap的Pod可以实时感知到这些变化。
总之,ConfigMap是Kubernetes中一种重要的资源,用于存储和注入配置数据,以实现应用程序的可配置性和可维护性。通过将配置数据与容器镜像分离,ConfigMap使得应用程序的配置更加灵活,允许在不重新构建容器镜像的情况下进行配置更改。这在微服务和容器化应用程序中非常有用,因为它使配置管理变得更加简单且易于维护。
官网
configMap
卷提供了向 Pod 注入配置数据的方法。 ConfigMap 对象中存储的数据可以被 configMap
类型的卷引用,然后被 Pod 中运行的容器化应用使用。
引用 configMap 对象时,你可以在卷中通过它的名称来引用。 你可以自定义 ConfigMap 中特定条目所要使用的路径。 下面的配置显示了如何将名为 log-config
的 ConfigMap 挂载到名为 configmap-pod
的 Pod 中:
apiVersion: v1
kind: Pod
metadata:name: configmap-pod
spec:containers:- name: testimage: busybox:1.28volumeMounts:- name: config-volmountPath: /etc/configvolumes:- name: config-volconfigMap:name: log-configitems:- key: log_levelpath: log_level
log-config
ConfigMap 以卷的形式挂载,并且存储在 log_level
条目中的所有内容都被挂载到 Pod 的 /etc/config/log_level
路径下。 请注意,这个路径来源于卷的 mountPath
和 log_level
键对应的 path
。
说明:
在使用 ConfigMap 之前你首先要创建它。
ConfigMap 总是以 readOnly
的模式挂载。
容器以 subPath
卷挂载方式使用 ConfigMap 时,将无法接收 ConfigMap 的更新。
文本数据挂载成文件时采用 UTF-8 字符编码。如果使用其他字符编码形式,可使用 binaryData
字段。
例子
https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/
# 将示例文件下载到 `/root/configmap/` 目录
wget https://kubernetes.io/examples/configmap/game.properties wget https://kubernetes.io/examples/configmap/ui.properties# 创建 ConfigMap
kubectl create configmap game-config --from-file=/root/configmap/
[root@k8smaster configmap]# kubectl get cm
NAME DATA AGE
game-config 2 39s
kube-root-ca.crt 1 2d23h
[root@k8smaster configmap]# kubectl create configmap game-config --from-file=/root/configmap/
configmap/game-config created
[root@k8smaster configmap]# kubectl get gf
error: the server doesn't have a resource type "gf"
[root@k8smaster configmap]# kubectl get cm
NAME DATA AGE
game-config 2 39s
kube-root-ca.crt 1 2d23h
[root@k8smaster configmap]# kubectl describe configmaps game-config
Name: game-config
Namespace: default
Labels: <none>
Annotations: <none>Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
ui.properties:
----
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNiceEvents: <none>
[root@k8smaster configmap]# kubectl get configmaps game-config -o yaml >/root/configmap/game.yaml
[root@k8smaster configmap]# ls
game.properties game.yaml ui.properties
基于文件生成 ConfigMap
cat <<EOF >./kustomization.yaml
configMapGenerator:
- name: game-config-4files:- configmap/game.properties
EOF
应用(Apply)kustomization 目录创建 ConfigMap 对象:
kubectl apply -k .
[root@k8smaster ~]# kubectl get cm
NAME DATA AGE
game-config 2 8m9s
game-config-4-m9dm2f92bt 1 59s
kube-root-ca.crt 1 2d23h
[root@k8smaster ~]# kubectl describe configmaps/game-config-4-m9dm2f92bt
Name: game-config-4-m9dm2f92bt
Namespace: default
Labels: <none>
Annotations: <none>Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
Events: <none>
使用 ConfigMap 数据定义容器环境变量
使用单个 ConfigMap 中的数据定义容器环境变量
-
•
在 ConfigMap 中将环境变量定义为键值对:
kubectl create configmap special-config --from-literal=special.how=very
这是一个
kubectl
命令,用于在Kubernetes集群中创建一个名为special-config
的ConfigMap,并将一个键值对添加到该ConfigMap中。具体来说,这个命令的含义如下:
•
kubectl create configmap special-config
:这部分命令告诉Kubernetes创建一个名为special-config
的ConfigMap。•
--from-literal=special.how=very
:这部分是kubectl
命令的选项,用于指定要添加到ConfigMap中的数据。具体来说,它包含了一个键值对,键是special.how
,值是very
。这意味着创建的ConfigMap中将包含一个键为special.how
,值为very
的项。运行这个命令后,将在Kubernetes集群中创建一个名为
special-config
的ConfigMap,该ConfigMap包含一个键为special.how
,值为very
的配置项。这个ConfigMap可以被Pod引用,以便在容器中使用这个配置项的值作为环境变量、命令参数或其他配置选项。例如,可以在上一个回答中提到的Pod配置中引用这个ConfigMap,将special.how
的值分配给SPECIAL_LEVEL_KEY
环境变量。
[root@k8smaster ~]# kubectl get cm
NAME DATA AGE
game-config 2 12m
game-config-4-m9dm2f92bt 1 5m7s
kube-root-ca.crt 1 2d23h
special-config 1 16s
[root@k8smaster ~]# kubectl describe configmaps/special-config
Name: special-config
Namespace: default
Labels: <none>
Annotations: <none>Data
====
special.how:
----
very
Events: <none>
-
•
将 ConfigMap 中定义的
special.how
赋值给 Pod 规约中的SPECIAL_LEVEL_KEY
环境变量。创建
pods/pod-single-configmap-env-variable.yaml
[root@k8smaster configmap]# ls game.properties game.yaml pod-single-configmap-env-variable.yaml ui.properties[root@k8smaster configmap]# wget https://kubernetes.io/examples/pods/pod-single-configmap-env-variable.yaml --no-check-certificate
apiVersion: v1 kind: Pod metadata:name: dapi-test-pod spec:containers:- name: test-containerimage: busyboximagePullPolicy: IfNotPresentcommand: [ "/bin/sh"]args: ["-c","env ;while true; do echo hello; sleep 100;done"]env:# Define the environment variable- name: SPECIAL_LEVEL_KEYvalueFrom:configMapKeyRef:# The ConfigMap containing the value you want to assign to SPECIAL_LEVEL_KEYname: special-config# Specify the key associated with the valuekey: special.howrestartPolicy: Never
这是一个Kubernetes Pod的配置文件,用于创建一个名为 “dapi-test-pod” 的Pod。以下是配置文件中各部分的详细解释:
-
apiVersion 和 kind:
-
•
apiVersion: v1
表示使用Kubernetes的v1版本API。 -
•
kind: Pod
指定创建的资源类型为Pod。
-
metadata:
-
•
name: dapi-test-pod
定义了Pod的名称为 “dapi-test-pod”。
-
spec:
-
•
containers
:这是一个容器列表,用于定义Pod中的容器。-
•
name: test-container
:定义了容器的名称为 “test-container”。 -
•
image: busybox
:指定了容器要使用的镜像,这里是一个名为 “busybox” 的轻量级Linux发行版。 -
•
imagePullPolicy: IfNotPresent
:这表示如果本地已经存在相同的镜像,就使用它,否则不拉取新的镜像。 -
•
command
和args
:这两个字段定义了容器的启动命令和参数。-
•
command: [ "/bin/sh"]
:指定容器要执行的命令为 “/bin/sh”。 -
•
args: ["-c","env ;while true; do echo hello; sleep 100;done"]
:这些参数将传递给命令,容器将在启动后运行/bin/sh -c "env ;while true; do echo hello; sleep 100;done"
这个Shell命令。
-
-
•
env
:这里定义了容器的环境变量。-
•
name: SPECIAL_LEVEL_KEY
:指定环境变量的名称为 “SPECIAL_LEVEL_KEY”。 -
•
valueFrom
:这里使用了valueFrom
来从ConfigMap引用值。-
•
configMapKeyRef
:这是引用ConfigMap的方式。-
•
name: special-config
:指定了ConfigMap的名称为 “special-config”。 -
•
key: special.how
:指定了要引用的ConfigMap中的键为 “special.how”。
-
-
-
-
-
•
restartPolicy: Never
:定义了Pod的重启策略为 “Never”,这意味着一旦容器退出,Pod将不会自动重启。
这个配置文件创建了一个Pod,其中包含一个名为 “test-container” 的容器,该容器使用BusyBox镜像,运行一个无限循环的Shell命令,每隔100秒输出 “hello”。此容器还引用了一个名为 “special-config” 的ConfigMap,并将其中的 “special.how” 键的值分配给环境变量 “SPECIAL_LEVEL_KEY”。这个配置演示了如何在Pod中使用ConfigMap来配置容器的环境变量。
[root@k8smaster configmap]# kubectl get pod NAME READY STATUS RESTARTS AGE dapi-test-pod 1/1 Running 0 21s test-pd 1/1 Running 0 55m
[root@k8smaster configmap]# kubectl logs dapi-test-pod *** SPECIAL_LEVEL_KEY=very ***
现在,Pod 的输出包含环境变量
SPECIAL_LEVEL_KEY=very
。 -
EmptyDir
apiVersion: v1
kind: Pod
metadata:name: test-pd
spec:containers:- image: registry.k8s.io/test-webservername: test-containervolumeMounts:- mountPath: /cachename: cache-volumevolumes:- name: cache-volumeemptyDir:sizeLimit: 500Mi
启用pod
[root@k8smaster volume]# kubectl apply -f nginx.yaml
pod/test-pd created
[root@k8smaster volume]# kubectl get pod
NAME READY STATUS RESTARTS AGE
test-pd 1/1 Running 0 6s
进入容器里面,进入卷里面创建文件
[root@k8smaster volume]# kubectl exec -it test-pd -- bash
root@test-pd:/# ls
bin cache docker-entrypoint.d etc lib media opt root sbin sys usr
boot dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var
root@test-pd:/# cd cache/
root@test-pd:/cache# ls
root@test-pd:/cache# mkdir test
查找pod调度到那个node上
[root@k8smaster volume]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test-pd 1/1 Running 0 85s 10.244.185.201 k8snode2 <none> <none>
在k8snode2查找卷
[root@k8snode2 ~]# find / -name "test"
***
/var/lib/kubelet/pods/bfe54579-84e1-4ef2-b85e-722b84d848d1/volumes/kubernetes.io~empty-dir/cache-volume/test
***
[root@k8snode2 ~]# cd /var/lib/kubelet/pods/bfe54579-84e1-4ef2-b85e-722b84d848d1/volumes/kubernetes.io~empty-dir/cache-volume/test
[root@k8snode2 test]# ls
[root@k8snode2 test]# cd ..
[root@k8snode2 cache-volume]# ls
test
hostPath
警告:
HostPath 卷存在许多安全风险,最佳做法是尽可能避免使用 HostPath。 当必须使用 HostPath 卷时,它的范围应仅限于所需的文件或目录,并以只读方式挂载。
如果通过 AdmissionPolicy 限制 HostPath 对特定目录的访问,则必须要求 volumeMounts
使用 readOnly
挂载以使策略生效。
hostPath
卷能将主机节点文件系统上的文件或目录挂载到你的 Pod 中。 虽然这不是大多数 Pod 需要的,但是它为一些应用程序提供了强大的逃生舱。
例如,hostPath
的一些用法有:
-
•
运行一个需要访问 Docker 内部机制的容器;可使用
hostPath
挂载/var/lib/docker
路径。 -
•
在容器中运行 cAdvisor 时,以
hostPath
方式挂载/sys
。 -
•
允许 Pod 指定给定的
hostPath
在运行 Pod 之前是否应该存在,是否应该创建以及应该以什么方式存在。
除了必需的 path
属性之外,你可以选择性地为 hostPath
卷指定 type
。
支持的 type
值如下:
取值 | 行为 |
---|---|
空字符串(默认)用于向后兼容,这意味着在安装 hostPath 卷之前不会执行任何检查。 | |
DirectoryOrCreate | 如果在给定路径上什么都不存在,那么将根据需要创建空目录,权限设置为 0755,具有与 kubelet 相同的组和属主信息。 |
Directory | 在给定路径上必须存在的目录。 |
FileOrCreate | 如果在给定路径上什么都不存在,那么将在那里根据需要创建空文件,权限设置为 0644,具有与 kubelet 相同的组和所有权。 |
File | 在给定路径上必须存在的文件。 |
Socket | 在给定路径上必须存在的 UNIX 套接字。 |
CharDevice | 在给定路径上必须存在的字符设备。 |
BlockDevice | 在给定路径上必须存在的块设备。 |
当使用这种类型的卷时要小心,因为:
-
•
HostPath 卷可能会暴露特权系统凭据(例如 Kubelet)或特权 API(例如容器运行时套接字),可用于容器逃逸或攻击集群的其他部分。
-
•
具有相同配置(例如基于同一 PodTemplate 创建)的多个 Pod 会由于节点上文件的不同而在不同节点上有不同的行为。
-
•
下层主机上创建的文件或目录只能由 root 用户写入。 你需要在特权容器中以 root 身份运行进程,或者修改主机上的文件权限以便容器能够写入
hostPath
卷。
hostPath 配置示例
apiVersion: v1
kind: Pod
metadata:name: test-pd-2
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: ydhnginx-2volumeMounts:- mountPath: /ydhdataname: cache-volume-2volumes:- name: cache-volume-2hostPath:# 宿主上目录位置path: /data# 此字段为可选type: DirectoryOrCreate
进入容器创建文件
[root@k8smaster volume]# kubectl exec -it test-pd-2 -- bash
root@test-pd-2:/# ls
bin docker-entrypoint.d home media proc sbin tmp ydhdata
boot docker-entrypoint.sh lib mnt root srv usr
dev etc lib64 opt run sys var
root@test-pd-2:/# cd ydhdata/
root@test-pd-2:/ydhdata# mkdir ydhtest
[root@k8snode2 /]# cd data/
[root@k8snode2 data]# ls
ydhtest
nfs
nfs
卷能将 NFS (网络文件系统) 挂载到你的 Pod 中。 不像 emptyDir
那样会在删除 Pod 的同时也会被删除,nfs
卷的内容在删除 Pod 时会被保存,卷只是被卸载。 这意味着 nfs
卷可以被预先填充数据,并且这些数据可以在 Pod 之间共享。
apiVersion: v1
kind: Pod
metadata:name: test-pd
spec:containers:- image: registry.k8s.io/test-webservername: test-containervolumeMounts:- mountPath: /my-nfs-dataname: test-volumevolumes:- name: test-volumenfs:server: my-nfs-server.example.compath: /my-nfs-volumereadOnly: true
说明:
在使用 NFS 卷之前,你必须运行自己的 NFS 服务器并将目标 share 导出备用。
还需要注意,不能在 Pod spec 中指定 NFS 挂载可选项。 可以选择设置服务端的挂载可选项,或者使用 /etc/nfsmount.conf。 此外,还可以通过允许设置挂载可选项的持久卷挂载 NFS 卷。
如需了解用持久卷挂载 NFS 卷的示例,请参考 NFS 示例。
persistentVolumeClaim
persistentVolumeClaim
卷用来将持久卷(PersistentVolume)挂载到 Pod 中。 持久卷申领(PersistentVolumeClaim)是用户在不知道特定云环境细节的情况下“申领”持久存储(例如 GCE PersistentDisk 或者 iSCSI 卷)的一种方法。
更多详情请参考持久卷。
相关文章:
K8s(九)—volume.md
目录 volumeconfigMap介绍官网例子基于文件生成 ConfigMap使用 ConfigMap 数据定义容器环境变量使用单个 ConfigMap 中的数据定义容器环境变量 EmptyDirhostPathhostPath 配置示例 nfspersistentVolumeClaim volume https://kubernetes.io/zh-cn/docs/concepts/storage/volume…...
python N个人围成一圈报数 报到3出列 直到只剩下最后一人
公司聚会上,N名员工围成一圈,按1—N顺序编号(要求N<40)。 然后从队头开始1,2,3报数,数3的出列,剩下的员工再从头开始1,2,3报数……直到剩下最后一名员工时, 这员工就是…...
RFC4861 中文版下
10. 协议常量 路由器常量: MAX_INITIAL_RTR_ADVERT_INTERVAL 16 秒MAX_INITIAL_RTR_ADVERTISEMENTS 3 次发送MAX_FINAL_RTR_ADVERTISEMENTS 3 次发送MIN_DELAY_BETWEEN_RAS 3 秒MAX_RA_DELAY_TIME .5 秒主机常量: MAX_RTR_SOLICITATION_…...

用友时空 KSOA 多处SQL注入漏洞复现
0x01 产品简介 用友时空 KSOA 是建立在 SOA 理念指导下研发的新一代产品,是根据流通企业前沿的 IT 需求推出的统一的IT基础架构,它可以让流通企业各个时期建立的 IT 系统之间彼此轻松对话。 0x02 漏洞概述 用友时空 KSOA 系统 PayBill、QueryService、linkadd.jsp等接口处…...

[AutoSar]基础部分 RTE 介绍
目录 关键词平台说明一、什么是RTE二、RTE的主要功能 关键词 嵌入式、C语言、autosar、EcuM、wakeup、flex 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C,C编译器HighTec (GCC) 一、什么是RTE RTE(Run-Time Environment&…...

Logstash访问安全访问Elasticsearch集群
生成logstash证书: opensal pkcs12 -in elastic-stack-ca.p12 -clcerts -nokeys > logafash.cer openssl x509 -in logstash.cer -out logstash.pem 编排配置文件...

加密的艺术:对称加密的奇妙之处(下)
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...

异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测
异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测 目录 异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测效果一览基本介绍模型准备模型设计参考资料效果一览 基本介绍 训练一个双向 LSTM 自动编码器来检测机器是否正常工作。 自动编码器接受…...
2023“楚怡杯”湖南省赛“信息安全管理与评估“--数字取证调查(高职组)
2023“楚怡杯”湖南省“信息安全管理与评估”(高职组)任务书 2023“楚怡杯”湖南省“信息安全管理与评估”(高职组)任务书第一阶段竞赛项目试题第二阶段竞赛项目试题第二部分 数字取证调查:需要环境私聊博主:2023“楚怡杯”湖南省“信息安全管理与评估”(高职组)任务书…...

C++ list常用操作
目录 一、介绍 二、list的常用操作 1、构造 2、迭代器 3、元素访问 4、容量操作 一、介绍 std::list文档链接 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个…...
MILP加速运算技巧——模型对称性的预处理
文章目录 整数规划的对称性什么是对称性对称性的影响 对称性的预处理方法 整数规划的对称性 什么是对称性 许多整数规划问题存在对称性,这种对称性是指问题解空间的对称,即在对称的解空间当中解的优化目标值上是相同的。这种对称性并不会改变问题的最优…...
JavaScript中的生成器与迭代器详解
一、迭代器与可迭代对象 1.什么是迭代器 迭代器(iterator),使用户在容器对象(container,例如链表或数组)上遍访的对象,使用该接口无需关心对象的内部实现细节。 其行为像数据库中的光标&…...

WebLangChain_ChatGLM:结合 WebLangChain 和 ChatGLM3 的中文 RAG 系统
WebLangChain_ChatGLM 介绍 本文将详细介绍基于网络检索信息的检索增强生成系统,即 WebLangChain。通过整合 LangChain,成功将大型语言模型与最受欢迎的外部知识库之一——互联网紧密结合。鉴于中文社区中大型语言模型的蓬勃发展,有许多可供利…...

hive常用SQL函数及案例
1 函数简介 Hive会将常用的逻辑封装成函数给用户进行使用,类似于Java中的函数。 好处:避免用户反复写逻辑,可以直接拿来使用。 重点:用户需要知道函数叫什么,能做什么。 Hive提供了大量的内置函数,按照其特…...
分页操作中使用LIMIT和OFFSET后出现慢查询的原因分析
事情经过 最近在做批量数据处理的相关业务,在和下游对接时,发现拉取他们的业务数据刚开始很快,后面会越来越慢,40万数据一个小时都拉不完。经过排查后,发现对方用了很坑的分页查询方式 —— LIMIT OFFSET,…...
Java八股文面试全套真题【含答案】- Redis篇
请看下面列举的50个关于Redis的经典面试问题和简短答案: Redis是什么?简要介绍一下Redis的特点。 Redis是一个开源的高性能键值存储数据库,支持多种数据结构,如字符串、列表、集合、哈希和有序集合等。 特点包括快速、可持久化、支…...

【C++11特性篇】一文助小白轻松理解 C++中的【左值&左值引用】【右值&右值引用】
前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一.【左值&左值引用】&…...

动态规划——OJ题(一)
📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、第N个泰波那契数1、题目讲解2、思路讲解3、代码实现 二、三步问题1、题目讲解2、思路讲解…...

六:爬虫-数据解析之BeautifulSoup4
六:bs4简介 基本概念: 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据官方解释如下: Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。 它是一个工具箱…...
音频筑基:总谐波失真THD+N指标
音频筑基:总谐波失真THDN指标 THDN含义深入理解 在分析音频信号中,THDN指标是我们经常遇到的概念,这里谈谈自己的理解。 THDN含义 首先,理解THD的定义: THD,Total Harmonic Distortion,总谐波…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...