【kubernetes】配置资源管理

目录

Secret

创建 Secret

1、用kubectl create secret命令创建Secret

2、内容用 base64 编码,创建Secret

使用方式 

1、将 Secret 挂载到 Volume 中,以 Volume 的形式挂载到 Pod 的某个目录下

2、将 Secret 导出到环境变量中

ConfigMap

创建 ConfigMap

1、使用目录创建

2、使用文件创建 

3、使用字面值创建 

Pod 中使用 ConfigMap 

1、使用 ConfigMap 来替代环境变量

Pod的创建

2、用 ConfigMap 设置命令行参数 

3、通过数据卷插件使用ConfigMap 

ConfigMap 的热更新 

ConfigMap 更新后滚动更新 Pod


Secret

Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。

Secret 有四种类型: 
●kubernetes.io/service-account-token:由 Kubernetes 自动创建,用来访问 APIServer 的 Secret,Pod 会默认使用这个 Secret 与 APIServer 通信, 并且会自动挂载到 Pod 的 /run/secrets/kubernetes.io/serviceaccount 目录中;
●Opaque :base64 编码格式的 Secret,用来存储用户自定义的密码、密钥等,默认的 Secret 类型;
●kubernetes.io/dockerconfigjson :用来存储私有 docker registry 的认证信息。
●kubernetes.io/tls :用来存储 TLS 证书和私钥信息。

Pod 需要先引用才能使用某个 secret,Pod 有 3 种方式来使用 secret:
●作为挂载到一个或多个容器上的卷 中的文件。
●作为容器的环境变量。
●由 kubelet 在为 Pod 拉取镜像时使用。

应用场景:凭据
https://kubernetes.io/docs/concepts/configuration/secret/

创建 Secret

1、用kubectl create secret命令创建Secret

echo -n 'zhangsan' > username.txt
echo -n 'abc1234' > password.txt
kubectl create secret generic mysecret --from-file=username.txt --from-file=password.txt
kubectl get secret
NAME                                 TYPE                                  DATA   AGE
default-token-xtqxc                  kubernetes.io/service-account-token   3      8d
mysecret                             Opaque                                2      16s
nfs-client-provisioner-token-rcmnm   kubernetes.io/service-account-token   3      3d2h
kubectl describe secret mysecret
Name:         mysecret
Namespace:    default
Labels:       <none>
Annotations:  <none>Type:  OpaqueData
====
password.txt:  6 bytes
username.txt:  3 bytes

get或describe指令都不会展示secret的实际内容,这是出于对数据的保护的考虑

2、内容用 base64 编码,创建Secret

echo -n ggl | base64
Z2dsecho -n abc123 | base64
YWJjMTIz
vim secret.yaml
apiVersion: v1
kind: Secret
metadata:name: mysecret1
type: Opaque
data:username: Z2dspassword: YWJjMTIz
kubectl create -f secret.yaml 
kubectl get secret
NAME                                 TYPE                                  DATA   AGE
default-token-xtqxc                  kubernetes.io/service-account-token   3      8d
mysecret                             Opaque                                2      14m
mysecret1                            Opaque                                2      24s
nfs-client-provisioner-token-rcmnm   kubernetes.io/service-account-token   3      3d2h
 kubectl get secret mysecret1 -o yaml
apiVersion: v1
data:password: YWJjMTIzusername: Z2ds
kind: Secret
metadata:creationTimestamp: "2023-08-17T10:44:46Z"managedFields:- apiVersion: v1fieldsType: FieldsV1fieldsV1:f:data:.: {}f:password: {}f:username: {}f:type: {}manager: kubectl-createoperation: Updatetime: "2023-08-17T10:44:46Z"name: mysecret1namespace: defaultresourceVersion: "170478"selfLink: /api/v1/namespaces/default/secrets/mysecret1uid: ce798087-b395-482b-a907-239f79aadbdb
type: Opaque

使用方式 

1、将 Secret 挂载到 Volume 中,以 Volume 的形式挂载到 Pod 的某个目录下

vim secret-test.yaml
apiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: nginximage: nginxvolumeMounts:- name: secretsmountPath: "/etc/secrets"readOnly: truevolumes:- name: secretssecret:secretName: mysecret1
kubectl create -f secret-test.yaml
kubectl get pods
NAME                                      READY   STATUS              RESTARTS   AGE
busybox-0                                 0/1     ContainerCreating   0          24h
my-nginx-74f49bdcf5-rfmgf                 1/1     Running             1          22h
mypod                                     0/1     ContainerCreating   0          41s
nfs-client-provisioner-5fc8d4f6fd-kx9qv   0/1     ContainerCreating   0          24h
test-pod                                  0/1     Completed           0          23h
test-pod2                                 0/1     Completed           0          23h
test-pod3                                 1/1     Running             0          23h
kubectl exec -it mypod bash# cd /etc/secrets/# ls
password username# vi password# vi username

2、将 Secret 导出到环境变量中

vim secret-test1.yaml
apiVersion: v1
kind: Pod
metadata:name: mypod1
spec:containers:- name: nginximage: nginxenv:- name: TEST_USERvalueFrom:secretKeyRef:name: mysecretkey: username- name: TEST_PASSWORDvalueFrom:secretKeyRef:name: mysecretkey: passwordenvFrom:- secretRef:name: mysecret1
kubectl apply -f secret-test1.yaml 
kubectl get pods
NAME                                      READY   STATUS              RESTARTS   AGE
busybox-0                                 0/1     ContainerCreating   0          24h
my-nginx-74f49bdcf5-rfmgf                 1/1     Running             1          23h
mypod                                     1/1     Running             0          18m
mypod1                                    1/1     Running             0          20s
nfs-client-provisioner-5fc8d4f6fd-kx9qv   0/1     ContainerCreating   0          24h
test-pod                                  0/1     Completed           0          23h
test-pod2                                 0/1     Completed           0          23h    
kubectl exec -it mypod1 bash
echo $TEST_USER
ggl
echo $TEST_PASSWORD
abc123

ConfigMap

与Secret类似,区别在于ConfigMap保存的是不需要加密配置的信息。
ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制大对象。
应用场景:应用配置

创建 ConfigMap

1、使用目录创建

mkdir /opt/configmap/
vim /opt/configmap/game.config
enemy.types=aliens,monsters
player.maximum-lives=5 
vim /opt/configmap/ui.config
color.good=purple
color.bad=yellow
allow.textmode=true
ls /opt/configmap/
game.config
ui.config
kubectl create configmap game-config --from-file=/opt/configmap/

--from-file 指定在目录下的所有文件都会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就是文件的内容

kubectl get cm
NAME               DATA   AGE
game-config        2      108s
kube-root-ca.crt   1      7d2h
kubectl get cm game-config -o yaml
apiVersion: v1
data:game.config: "enemy.types=aliens,monsters\nplayer.maximum-lives=5 \n"ui.config: |color.good=purplecolor.bad=yellowallow.textmode=true
kind: ConfigMap
metadata:creationTimestamp: "2023-08-16T10:03:47Z"managedFields:- apiVersion: v1fieldsType: FieldsV1fieldsV1:f:data:.: {}f:game.config: {}f:ui.config: {}manager: kubectl-createoperation: Updatetime: "2023-08-16T10:03:47Z"name: game-confignamespace: defaultresourceVersion: "158070"selfLink: /api/v1/namespaces/default/configmaps/game-configuid: f4689dd7-1c29-4a3f-9ada-23b07b283a00

2、使用文件创建 

只要指定为一个文件就可以从单个文件中创建 ConfigMap
--from-file 这个参数可以使用多次,即可以使用两次分别指定上个实例中的那两个配置文件,效果就跟指定整个目录是一样的

kubectl create configmap game-config-2 --from-file=/opt/configmap/game.config --from-file=/opt/configmap/ui.config
kubectl get configmaps game-config-2 -o yaml
apiVersion: v1
data:game.config: "enemy.types=aliens,monsters\nplayer.maximum-lives=5 \n"ui.config: |color.good=purplecolor.bad=yellowallow.textmode=true
kind: ConfigMap
metadata:creationTimestamp: "2023-08-16T10:17:24Z"managedFields:- apiVersion: v1fieldsType: FieldsV1fieldsV1:f:data:.: {}f:game.config: {}f:ui.config: {}manager: kubectl-createoperation: Updatetime: "2023-08-16T10:17:24Z"name: game-config-2namespace: defaultresourceVersion: "159117"selfLink: /api/v1/namespaces/default/configmaps/game-config-2uid: c6981168-c4d0-4c00-aec9-3a4e0ae57b86
kubectl describe cm game-config-2
Name:         game-config-2
Namespace:    default
Labels:       <none>
Annotations:  <none>Data
====
game.config:
----
enemy.types=aliens,monsters
player.maximum-lives=5ui.config:
----
color.good=purple
color.bad=yellow
allow.textmode=trueEvents:  <none>

3、使用字面值创建 

使用文字值创建,利用 --from-literal 参数传递配置信息,该参数可以使用多次,格式如下

kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=good
kubectl get configmaps special-config -o yaml
apiVersion: v1
data:special.how: veryspecial.type: good    #键值对
kind: ConfigMap
metadata:creationTimestamp: "2023-08-16T10:19:38Z"managedFields:- apiVersion: v1fieldsType: FieldsV1fieldsV1:f:data:.: {}f:special.how: {}f:special.type: {}manager: kubectl-createoperation: Updatetime: "2023-08-16T10:19:38Z"name: special-confignamespace: defaultresourceVersion: "159235"selfLink: /api/v1/namespaces/default/configmaps/special-configuid: b34351e8-420f-4f76-bec5-8ea1876d556f
kubectl delete cm --all
kubectl delete pod --all

Pod 中使用 ConfigMap 

1、使用 ConfigMap 来替代环境变量

vim env.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: special-confignamespace: default
data:special.how: veryspecial.type: good
---
apiVersion: v1
kind: ConfigMap
metadata:name: env-confignamespace: default
data:log_level: INFO
kubectl create -f env.yaml 
kubectl get cm
NAME               DATA   AGE
env-config         1      2m26s
kube-root-ca.crt   1      31m
special-config     2      2m26s

Pod的创建

vim test-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod
spec:containers:- name: busyboximage: busybox:1.28.4command: [ "/bin/sh", "-c", "env" ]env:- name: SPECIAL_HOW_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.how- name: SPECIAL_TYPE_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.typeenvFrom:- configMapRef:name: env-configrestartPolicy: Never
kubectl create -f test-pod.yaml
kubectl get pods
NAME                                      READY   STATUS              RESTARTS   AGE
busybox-0                                 0/1     ContainerCreating   0          54m
nfs-client-provisioner-5fc8d4f6fd-kx9qv   0/1     ContainerCreating   0          55m
test-pod                                  0/1     Completed           0   
kubectl logs test-pod
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://10.96.0.1:443
HOSTNAME=test-pod
SHLVL=1
SPECIAL_HOW_KEY=very                #赋值变量 SPECIAL_HOW_KEY 的值为 special-config 的
HOME=/root
SPECIAL_TYPE_KEY=good               #赋值变量 SPECIAL_TYPE_KEY 的值为 special-config 的
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
log_level=INFO                     #引入 env-config 的变量 log_level: INFO   
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_SERVICE_HOST=10.96.0.1
PWD=/

2、用 ConfigMap 设置命令行参数 

apiVersion: v1
kind: Pod
metadata:name: test-pod2
spec:containers:- name: busyboximage: busybox:1.28.4command:- /bin/sh- -c- echo "$(SPECIAL_HOW_KEY) $(SPECIAL_TYPE_KEY)"env:- name: SPECIAL_HOW_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.how- name: SPECIAL_TYPE_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.typeenvFrom:- configMapRef:name: env-configrestartPolicy: Never
kubectl create -f test-pod2.yaml
kubectl get pods
NAME                                      READY   STATUS              RESTARTS   AGE
busybox-0                                 0/1     ContainerCreating   0          67m
nfs-client-provisioner-5fc8d4f6fd-kx9qv   0/1     ContainerCreating   0          68m
test-pod                                  0/1     Completed           0          13m
test-pod2                                 0/1     Completed  
kubectl logs test-pod2
very good

3、通过数据卷插件使用ConfigMap 

在数据卷里面使用 ConfigMap,就是将文件填入数据卷,在这个文件中,键就是文件名,键值就是文件内容

vim test-pod3.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod3
spec:containers:- name: busyboximage: busybox:1.28.4command: [ "/bin/sh", "-c", "sleep 36000" ]volumeMounts:- name: config-volumemountPath: /etc/configvolumes:- name: config-volumeconfigMap:name: special-configrestartPolicy: Never
kubectl create -f test-pod3.yaml 
kubectl get pods
NAME                                      READY   STATUS              RESTARTS   AGE
busybox-0                                 0/1     ContainerCreating   0          73m
nfs-client-provisioner-5fc8d4f6fd-kx9qv   0/1     ContainerCreating   0          74m
test-pod                                  0/1     Completed           0          19m
test-pod2                                 0/1     Completed           0          6m8s
test-pod3                                 1/1     Running 
kubectl exec -it test-pod3 sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ # cd /etc/config/
/etc/config # ls
special.how   special.type

ConfigMap 的热更新 

vim test-pod4.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: log-confignamespace: default
data:log_level: INFO
---
apiVersion: apps/v1
kind: Deployment
metadata:name: my-nginx
spec:replicas: 1selector:matchLabels:run: my-nginxtemplate:metadata:labels:run: my-nginxspec:containers:- name: my-nginximage: nginxports:- containerPort: 80volumeMounts:- name: config-volumemountPath: /etc/configvolumes:- name: config-volumeconfigMap:name: log-config
kubectl apply -f test-pod4.yaml
kubectl get pods
NAME                                      READY   STATUS              RESTARTS   AGE
busybox-0                                 0/1     ContainerCreating   0          90m
my-nginx-7b8755d996-275rd                 1/1     Running             0          102s
nfs-client-provisioner-5fc8d4f6fd-kx9qv   0/1     ContainerCreating   0          91m
test-pod                                  0/1     Completed           0          36m
test-pod2                                 0/1     Completed           0          22m
test-pod3 
kubectl exec -it my-nginx-76b6489f44-6dwxh -- cat /etc/config/log_level
INFO
kubectl edit configmap log-config
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:log_level: DEBUG     #INFO 修改成 DEBUG
kind: ConfigMap
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"v1","data":{"log_level":"INFO"},"kind":"ConfigMap","metadata": {"annotations":{},"name":"log-config","namespace":"default"}}    #INFO 修改成 DEBUGcreationTimestamp: "2023-08-16T11:46:54Z"name: log-confignamespace: defaultresourceVersion: "166013"selfLink: /api/v1/namespaces/default/configmaps/log-configuid: d82c89a6-3668-423a-8edc-17d46065c0a6

等大概10秒左右,使用该 ConfigMap 挂载的 Volume 中的数据同步更新 

kubectl exec -it my-nginx-7b8755d996-275rd  -- cat /etc/config/log_level
DEBUG

ConfigMap 更新后滚动更新 Pod

更新 ConfigMap 目前并不会触发相关 Pod 的滚动更新,可以通过在 .spec.template.metadata.annotations 中添加 version/config ,每次通过修改 version/config 来触发滚动更新

kubectl patch deployment my-nginx --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20210525" }}}}}'
kubectl get pods 
NAME                                      READY   STATUS              RESTARTS   AGE
busybox-0                                 0/1     ContainerCreating   0          103m
my-nginx-74f49bdcf5-rfmgf                 1/1     Running             0          22s
my-nginx-7b8755d996-275rd                 0/1     Terminating         0          14m
nfs-client-provisioner-5fc8d4f6fd-kx9qv   0/1     ContainerCreating   0          104m
test-pod                                  0/1     Completed           0          49m
test-pod2                                 0/1     Completed           0          36m
test-pod3                                 1/1     Running             0                            1/1     Running             0  
kubectl get pods
NAME                                      READY   STATUS              RESTARTS   AGE
busybox-0                                 0/1     ContainerCreating   0          104m
my-nginx-74f49bdcf5-rfmgf                 1/1     Running             0          73s
nfs-client-provisioner-5fc8d4f6fd-kx9qv   0/1     ContainerCreating   0          105m
test-pod                                  0/1     Completed           0          50m
test-pod2                                 0/1     Completed           0          37m
test-pod3                                 1/1     Running             0          31m

PS:更新 ConfigMap 后:
●使用该 ConfigMap 挂载的 Env 不会同步更新。
●使用该 ConfigMap 挂载的 Volume 中的数据需要一段时间(实测大概10秒)才能同步更新。

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

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

相关文章

请解释一下CSS中的rem和em单位有什么不同,分别如何使用?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CSS中的rem和em单位的区别和使用⭐ em单位使用示例&#xff1a; ⭐ rem 单位使用示例&#xff1a; ⭐ 区别和适用场景⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何…

Nginx常见的三个漏洞

目录 $uri导致的CRLF注入漏洞 两种常见场景 表示uri的三个变量 案例 目录穿越漏洞 案例 Http Header被覆盖的问题 案例 $uri导致的CRLF注入漏洞 两种常见场景 用户访问http://example.com/aabbcc&#xff0c;自动跳转到https://example.com/aabbcc 用户访问http://exa…

[英语单词] compat; compatibility;compact;entry_SYSENTER_compat

简介 这个词compat&#xff0c;马上就会被简写形式所替代。所以一定不要和compact混淆。第一次看到还以为是个新词来&#xff0c;后来发现是一个缩写形式。就是兼容的意思&#xff0c;就如同兼容以往的就有事物。 syscall: 32bit: 兼容 entry_SYSENTER_compat 这个是32位程序…

MySQL存储过程 、存储函数、以及优缺点

存储过程 VS 存储函数&#xff08;函数&#xff09; | | 关键字 |调用语法 | 返回值 | 应用场景 | |-存储过程-|-procedure-|-call 存储过程()-|-理解为0个或多个-|-一般用于更新-| | 存储函数 | function | select 函数() | 只能是一个 | 一般用于查询结构为一个值并返回时| …

三、python Django ORM postgresql[数据定时备份、数据恢复]

一、数据定时备份 解释&#xff1a;备份指定数据库&#xff0c;能有效在发生错误时&#xff0c;预防错误&#xff0c;进行恢复 1.基本备份 #!/bin/bash sudo -u postgres pg_dump -U postgres -d dbname -Fc > /home/postgres/backup/backup.dump # sudo -u postgres&…

讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?

同时向讯飞星火、文心一言和通义千问三个国产AI模型提个相同的问题&#xff1a; “python 写一个贪吃蛇的游戏代码” 看哪一家AI写的程序直接能用&#xff0c;谁就胜出&#xff01; 讯飞星火 讯飞星火给出的代码&#xff1a; import pygame import sys import random# 初…

Android 13 开启关闭飞行模式

一.背景 由于客户定制的Settings里面需要开启和关闭飞行模式,所以需要实现此功能。 二.前提条件 首先应用肯定要是系统应用,并且导入framework.jar包,具体可以参考: Android 应用自动开启辅助(无障碍)功能并使用辅助(无障碍)功能_android 自动开启无障碍服务_龚礼鹏的博客…

步入React正殿 - React组件设计模式

目录 扩展学习资料 高阶组件 /src/components/hoc/withTooltip.js /src/components/hoc/itemA.jsx /src/components/hoc/itemB.jsx /src/App.js 函数作为子组件【Render pprops】 函数作为子组件 /src/components/rp/itemC.jsx【父组件】 /src/components/rp/withToo…

C#调用C++ DLL传参byte[]数组字节值大于127时会变为0x3f的问题解决

最近做了一个网络编程的DLL给C#调用&#xff0c;DLL中封装了一个TCP Client的函数接口&#xff0c;如下所示 //C TCP报文发送接口 int TcpClient_send(unsigned char* buffSend, unsigned int nLen) {unsigned char buff[1024];int len StringToHex(buffSend, buff);int nRet…

stable diffusion安装包和超火使用文档,数字人制作网址

一&#xff1a;文生图、图生图 1&#xff1a;stable diffusion&#xff1a;对喜欢二次元、美女小姐姐、大眼萌妹的人及其友好哈哈(o^^o) 1&#xff09;&#xff1a;秋叶大神安装包和模型包&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/11_kguofh76gwhTBPUipepw 提…

机器学习 | Python实现GBDT梯度提升树模型设计

机器学习 | Python实现GBDT梯度提升树模型设计 目录 机器学习 | Python实现GBDT梯度提升树模型设计基本介绍模型描述模型使用参考资料基本介绍 机器学习 | Python实现GBDT梯度提升树模型设计。梯度提升树(Grandient Boosting)是提升树(Boosting Tree)的一种改进算法,GBDT也…

Java System.arraycopy() 对比 C++ memcpy()

System.arraycopy() java.lang.System类为标准输入和输出、加载文件和库或访问外部定义的属性提供了有用的方法。 java.lang.System.arraycopy&#xff08;&#xff09;方法将源数组从特定的起始位置复制到上述位置的目标数组。要复制的参数的数量由一个参数决定。 source_Pos…

前端文件下载通用方法

zip文件和xlsx文件 import axios from axios import { getToken } from /utils/authconst mimeMap {xlsx: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,zip: application/zip }const baseUrl process.env.VUE_APP_BASE_API // zip下载 export functi…

214、仿真-基于51单片机温度甲醛一氧化碳(co)电机净化报警Proteus仿真设计(程序+Proteus仿真+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&a…

It‘s likely that neither a Result Type nor a Result Map was specified.

问题&#xff1a; org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were 原因&#xff1a; 由于传递参数给 mapper 映射文件&#xff0c;所以必须要指定参数数据格式 如…

Qt+Pyhton实现麒麟V10系统下word文档读写功能

目录 前言1.C调用python1.1 安装Python开发环境1.2 修改Qt工程配置1.3 初始化Python环境1.4 C 调用Python 函数1.5 常用的Python接口 2.python虚拟环境2.1Python虚拟环境简介2.2 virtualenv 安装及使用2.3 在C程序中配置virtualenv 虚拟环境 3.python-docx库的应用4.总结 前言 …

神经网络基础-神经网络补充概念-23-神经网络的梯度下降法

概念 神经网络的梯度下降法是训练神经网络的核心优化算法之一。它通过调整神经网络的权重和偏差&#xff0c;以最小化损失函数&#xff0c;从而使神经网络能够逐渐逼近目标函数的最优值。 步骤 1损失函数&#xff08;Loss Function&#xff09;&#xff1a; 首先&#xff0c…

Springboot多路数据源

1、多路数据源配置 &#xff08;1&#xff09;SpringBootMyBatis-PlusOracle实现多数据源配置 https://blog.csdn.net/weixin_44812604/article/details/127386828 &#xff08;2&#xff09;SpringBootMybatis搭建Oracle多数据源配置简述 https://blog.csdn.net/HJW_233/arti…

网络安全 Day29-运维安全项目-iptables防火墙

iptables防火墙 1. 防火墙概述2. 防火墙2.1 防火墙种类及使用说明2.2 必须熟悉的名词2.3 iptables 执行过程※※※※※2.4 表与链※※※※※2.4.1 简介2.4.2 每个表说明2.4.2.1 filter表 :star::star::star::star::star:2.4.2.2 nat表 2.5 环境准备及命令2.6 案例01&#xff1a…

神经网络基础-神经网络补充概念-31-参数与超参数

概念 参数&#xff08;Parameters&#xff09;&#xff1a; 参数是模型内部学习的变量&#xff0c;它们通过训练过程自动调整以最小化损失函数。在神经网络中&#xff0c;参数通常是连接权重&#xff08;weights&#xff09;和偏置&#xff08;biases&#xff09;&#xff0c;…