ConfigMap-secrets-静态pod
一.ConfigMap
1.概述
ConfigMap资源,简称CM资源,它生成的键值对数据,存储在ETCD数据库中
应用场景:主要是对应用程序的配置
pod通过env变量引入ConfigMap,或者通过数据卷挂载volume的方式引入ConfigMap资源
官方解释:
configMap 卷提供了向 Pod 注入配置数据的方法。 ConfigMap 对象中存储的数据可以被 configMap 类型的卷引用,然后被 Pod 中运行的容器化应用使用。
引用 configMap 对象时,你可以在卷中通过它的名称来引用。 你可以自定义 ConfigMap 中特定条目所要使用的路径。 下面的配置显示了如何将名为 log-config 的 ConfigMap 挂载到名为 configmap-pod 的 Pod 中
2.查看k8s集群系统中都有哪些资源类型
[root@master demo]# kubectl api-resources

3.ConfigMap资源管理
· 创建工作目录
[root@master demo]# mkdir configmap
[root@master demo]# cd configmap
· 创建ConfigMap资源
1.声明式创建ConfigMap资源
· 编辑ConfigMap资源清单
[root@master a]# cat 01-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: cm01#声明cm资源的数据
data:#第一种写法【key:value】demo: demo-cmk8s: kubernets#第二种写法【key:| value value value...】test: |a=ab=bc=c
· 创建查看configMap资源
[root@master a]# kubectl apply -f 01-cm.yaml
configmap/cm01 created
[root@master a]# kubectl get cm cm01
NAME DATA AGE
cm01 3 15s
2.响应式创建ConfigMap资源
· 命令行创建ConfigMap资源
[root@master a]# kubectl create cm cm02 --from-literal=test=111 --from-literal=d=ddd
configmap/cm02 created
· 查看cm资源
[root@master a]# kubectl get cm cm02
NAME DATA AGE
cm02 2 14s
3.指定文件方式创建cm资源
· 编辑一个文件
[root@master a]# cat > 1.txt <<EOF
> aaaa
> bbbb
> cccc
> dddd
> 1111
> 2222
> 3333
> 4444
> EOF
·创建查看ConfigMap资源
[root@master a]# kubectl create cm cm03 --from-file=1.txt=1.txt
configmap/cm03 created
[root@master a]# kubectl get cm cm03
NAME DATA AGE
cm03 1 8s
4.查看cm资源的详细信息
[root@master a]# kubectl describe cm cm03
Name: cm03
Namespace: default
Labels: <none>
Annotations: <none>Data
====
1.txt:
----
aaaa
bbbb
cccc
dddd
1111
2222
3333
4444BinaryData
====Events: <none>
5.删除cm资源
[root@master a]# kubectl delete cm --all
configmap "cm01" deleted
configmap "cm02" deleted
configmap "cm03" deleted
configmap "kube-root-ca.crt" deleted
4.pod引入CM资源
pod引入cm资源的方式,有两种,env变量引入和volume挂载卷引入
·env变量引入
1.编辑并创建cm资源
[root@master a]# cat 01-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: cm01#声明cm资源的数据
data:#第一种写法【key:value】demo: demo-cmk8s: kubernets#第二种写法【key:| value value value。。。】test: |a=ab=bc=c
[root@master a]# kubectl apply -f 01-cm.yaml
configmap/cm01 created
2.创建pod资源,env变量引入cm
[root@master a]# cat pod-env.yaml
apiVersion: v1
kind: Pod
metadata:name: demo111
spec:containers:- name: demo-eimage: nginx:1.20.1-alpineenv:#引入一个变量- name: env-cm01#从其他位置引入变量valueFrom:#声明从ConfigMap中引入变量configMapKeyRef:#引入变量ConfigMap的名称name: cm01key: demo#引入第二个变量- name: env-cm02valueFrom:configMapKeyRef:name: cm01#引用ConfigMap中的哪个keykey: test
[root@master a]# kubectl apply -f pod-env.yaml
pod/demo111 created
[root@master a]# kubectl get pods
NAME READY STATUS RESTARTS AGE
demo 1/1 Running 1 (48m ago) 52m
demo111 1/1 Running 0 9s
3.进入容器查看变量是否引入成功
[root@master a]# kubectl exec demo111 -it -- sh
/ # env

· volume挂载卷引入cm
1.编辑pod资源清单
[root@master a]# cat pod-env.yaml
apiVersion: v1
kind: Pod
metadata:name: demo111
spec:#声明pod存储卷volumes:- name: vol-cm#声明挂载cm资源configMap:#指定cm组员名称name: cm01#如果不写items,则引用cm资源中全部的key:value作为文件挂载items:#cm资源的key是什么- key: demo#key的value值挂载到容器中变成文件内容,文件名叫什么path: demo.txt- key: testpath: test.txtcontainers:- name: demo-dimage: nginx:1.20.1-alpinevolumeMounts:- name: vol-cmmountPath: /demo
2.创建查看资源
[root@master a]# kubectl apply -f pod-env.yaml
pod/demo111 created
[root@master a]# kubectl get pods
NAME READY STATUS RESTARTS AGE
demo111 1/1 Running 0 35s
3. 进入pod容器查看是否挂载成功,变成文件
[root@master a]# kubectl exec demo111 -it -- sh
/ # ls
bin docker-entrypoint.sh media root sys
demo etc mnt run tmp
dev home opt sbin usr
docker-entrypoint.d lib proc srv var
/ # cd demo
/demo # ls
demo.txt test.txt
/demo # cat demo.txt
demo-cm
/demo # cat test.txt
a=a
b=b
c=c
注:当pod挂载cm资源到容器的目录后,若容器的原目录中有文件,则会被清空,那么如何做到,及把cm资源挂载成为文件到容器的指定目录,又能保证容器原目录中的文件不清空呐?
subPath
[root@master a]# cat pod-env.yaml
apiVersion: v1
kind: Pod
metadata:name: demo111
spec:volumes:- name: vol-cmconfigMap:name: cm01items:- key: demopath: demo.txt- key: testpath: test.txtcontainers:- name: demo-dimage: nginx:1.20.1-alpinevolumeMounts:- name: vol-cmmountPath: /demo#如果subPath不指定任何值(默认),则默认容器挂载路径为空,表示清空挂载点;#如果subPath指定名称和cm的Path相同,表示仅仅挂载这个文件,不清空挂在的目录保留原本容器路径的文件;#也就是说volumes>>configMap>items>path只有与subPath的值相等时,才是挂载文件;否则就是挂载目录;会清空目录; subPath: test#resdOnly: true #只读设置;表示不允许容器内编辑或删除这个文件;
二.secrets
secrets资源,类似于configmap资源,只是secrets资源是用来传递重要的信息的;
secret資源就是將value的值使用base64编译后传输,当pod引用secret后,k8s会自动将其base64的编码,反编译回正常的字符串;
官方解释:
Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 这样的信息可能会被放在 Pod 规约中或者镜像中。 使用 Secret 意味着你不需要在应用程序代码中包含机密数据。
由于创建 Secret 可以独立于使用它们的 Pod, 因此在创建、查看和编辑 Pod 的工作流程中暴露 Secret(及其数据)的风险较小。 Kubernetes 和在集群中运行的应用程序也可以对 Secret 采取额外的预防措施, 例如避免将敏感数据写入非易失性存储。
1.创建secrets资源
·准备将“想要的数据”使用base64进行编码
#正向编码
[root@worker2 ~]# echo demotest | base64
ZGVtb3Rlc3QK
[root@worker2 ~]# echo kubernets | base64
a3ViZXJuZXRzCg==#反向编码
[root@worker2 ~]# echo ZGVtb3Rlc3QK | base64 -d
demotest
·声明式创建secrets资源
1.编辑secrets资源清单
[root@master secrets]# cat 01-secret.yaml
apiVersion: v1
kind: Secret
metadata:name: demo1#用户自定义的类型(Opaque为自定义类型)
type: Opaque
data:demotest: ZGVtb3Rlc3QKkubernets: a3ViZXJuZXRzCg==
2.创建查看secret资源
[root@master secrets]# kubectl apply -f .
secret/demo1 created
[root@master secrets]# kubectl get secrets
NAME TYPE DATA AGE
default-token-rnwqs kubernetes.io/service-account-token 3 9d
demo1 Opaque 2 2m40s
·响应式创建secret
[root@master secrets]# kubectl create secret generic demo2 --from-literal=testa=dGVzdGEK --from-literal=testb=dGVzdGIK
查看secrets资源
[root@master secrets]# kubectl get secrets
NAME TYPE DATA AGE
default-token-rnwqs kubernetes.io/service-account-token 3 9d
demo1 Opaque 2 2m40s
demo2 Opaque 2 15s
Opaque为自定义类型
generic: 从本地file, directory或者literal value创建一个 secret(这是大多数情况使用的)
也就是资源清单中的type:Opaque是一个意思
docker-registry:创建一个给Docker registry容器镜像仓库使用的secret
tls: 创建一个TLS secret
原文链接:https://blog.csdn.net/flq18210105507/article/details/120749275
2.pod引用secret资源
· pod资源env环境变量引用secret资源
1.编辑pod资源
[root@master secrets]# cat 01-pod.yaml
apiVersion: v1
kind: Pod
metadata: name: demo323
spec:containers:- name: nginx-dimage: nginx:1.20.1-alpineenv:- name: secret-env01valueFrom:#声明引用sercetsecretKeyRef:#声明secret名称name: demo1#声明secret的keykey: demotest- name: secret-env02valueFrom:secretKeyRef:name: demo1key: kubernets
2.创建查看pod
[root@master secrets]# kubectl apply -f 01-pod.yaml
pod/demo323 created
[root@master secrets]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
demo323 1/1 Running 0 13s 10.100.1.35 worker1 <none> <none>
3.登录pod资源查看env变量
[root@master secrets]# kubectl exec demo323 -it -- sh
/ # env

· pod资源volume存储卷引用secret资源
1.编辑pod资源
[root@master secrets]# cat 01-pod.yaml
apiVersion: v1
kind: Pod
metadata: name: demo333
spec:volumes:- name: vol-secretsecret:secretName: demo1containers:- name: nginx-dimage: nginx:1.20.1-alpinevolumeMounts:- name: vol-secretmountPath: /demos
2.创建查看pod
[root@master secrets]# kubectl apply -f 01-pod.yaml
pod/demo333 created
[root@master secrets]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
demo333 1/1 Running 0 11s 10.100.1.36 worker1 <none> <none>
3.进入容器内查看是否挂在为文件
[root@master secrets]# kubectl exec demo333 -it -- sh
/ # ls
bin docker-entrypoint.sh media root sys
demos etc mnt run tmp
dev home opt sbin usr
docker-entrypoint.d lib proc srv var
/ # cd demos
/demos # ls
demotest kubernets
/demos # cat demotest
demotest
/demos # cat kubernets
kubernets
3.secret类型之-私有镜像仓库使用
创建Docker harbor的secret信息:
因为,k8s拉取镜像与Docker拉取镜像是不同的方式,所以k8s需要创建一个属于自己的拉取镜像的方式

generic: 从本地file, directory或者literal value创建一个 secret(这是大多数情况使用的)
也就是资源清单中的type:Opaque是一个意思
docker-registry:创建一个给Docker registry容器镜像仓库使用的secret
tls: 创建一个TLS secret
·harbor创建私有仓库
harbor创建私有仓库

· 推送镜像到私有仓库
[root@worker2 ~]# docker login -uadmin -p111aaa.. harbor.test.com[root@worker2 ~]# docker tag nginx:1.20.1-alpine harbor.test.com/demo/nginx:1.20.1-alpine
[root@worker2 ~]# docker push harbor.test.com/demo/nginx:1.20.1-alpine
The push refers to repository [harbor.test.com/demo/nginx]
9d5b000ce7c7: Pushed
b8dbe22b95f7: Pushed
c39c1c35e3e8: Pushed
5f66747c8a72: Pushed
15d7cdc64789: Pushed
7fcb75871b21: Pushed
1.20.1-alpine: digest: sha256:34c4a6f3b4d5e5f886bfa6a32642ecf023282c82c03d37901bc1f30823abbd5d size: 1568
· 创建拉取镜像的secret资源
1.响应式创建secret资源
[root@master secrets]# kubectl create secret docker-registry demo-harbor --docker-username=admin --docker-password=111aaa.. --docker-email=123@qq.com --docker-server=harbor.test.com
[root@master secrets]# kubectl get secret
NAME TYPE DATA AGE
default-token-rnwqs kubernetes.io/service-account-token 3 9d
demo-harbor kubernetes.io/dockerconfigjson 1 11s
· 创建pod引用拉取镜像的secret资源
[root@master secrets]# cat 01-pod.yaml
apiVersion: v1
kind: Pod
metadata: name: demo-harbor00
spec:imagePullSecrets:- name: demo-harborcontainers:- name: harbortestimage: harbor.test.com/demo/nginx:1.20.1-alpine
[root@master secrets]# kubectl apply -f 01-pod.yaml
pod/demo-harbor00 created
[root@master secrets]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
demo-harbor00 1/1 Running 0 14s 10.100.1.37 worker1 <none> <none>
三.静态pod
pod创建流程
用户通过 kubectl create 命令(或其他等效方式)向 Kubernetes API Server 发起一个创建 Pod 的请求。这个请求包含了 Pod 的定义,通常是一个 YAML 或 JSON 格式的文件。 API Server 接收请求并处理:
Kubernetes API Server 接收到创建 Pod 的请求后,会对请求进行验证和授权检查。 API Server 不会直接创建 Pod,而是将这个请求转化为一个内部表示(如一个含有 Pod 创建信息的 YAML 格式的对象)。 写入 Etcd 数据库:
API Server 将这个 Pod 对象的信息写入到 Etcd 数据库。Etcd 作为 Kubernetes 的数据存储,保存了集群的状态和配置。 Scheduler 进行调度:
Kubernetes Scheduler 持续监视 API Server,检查新的或未被调度的 Pod。 当 Scheduler 发现一个新的 Pod(pod.spec.Node == null 表示这个 Pod 还没有被调度到任何节点),它将根据资源需求、亲和性规则、污点和容忍度等因素选择一个合适的节点。 一旦选择了节点,Scheduler 将更新该 Pod 的信息,指定其运行在选择的节点上,并将这个更新写回到 Etcd。 Kubelet 监听并创建 Pod:
每个节点上的 Kubelet 进程持续监视 Etcd,查找分配给自己节点的新任务。 当 Kubelet 发现有新的 Pod 分配到它所在的节点,它会根据 Pod 定义开始创建和启动 Pod 中的容器。 Kubelet 调用容器运行时(如 Docker)来实际启动容器,并设置必要的网络和存储配置。 Pod 状态更新和汇报:
在 Pod 创建过程中,Kubelet 将 Pod 的状态更新回 API Server。这些状态信息包括 Pod 是否成功启动,运行中的容器等。 API Server 更新 Etcd 中的状态信息,确保集群状态的一致性。
原文链接:https://blog.csdn.net/weixin_48126010/article/details/136690275
1.查看静态pod的路径
[root@master ~]# vim /var/lib/kubelet/config.yaml ......
staticPodPath: /etc/kubernetes/manifests
2.静态pod的查看与含义
这里面的名称都是我们的k8s集群中master节点的组成组件
[root@master secrets]# ll /etc/kubernetes/manifests/
总用量 16
-rw------- 1 root root 2274 7月 5 14:44 etcd.yaml
-rw------- 1 root root 3403 7月 10 20:26 kube-apiserver.yaml
-rw------- 1 root root 2880 7月 5 14:44 kube-controller-manager.yaml
-rw------- 1 root root 1465 7月 5 14:44 kube-scheduler.yaml
静态pod就是kubelet自己监视的目录,如果这个目录有pod资源清单,则会在当前节点自动创建pod;不需要手动kubectl apply -f xxx.yaml
静态pod的创建,只在当前节点上创建,pod的名称会自动给你加一个当前节点名称后缀;
静态pod,只要有yaml文件在这个目录,就无法删除;
· 示例
[root@master pod]# mv 01-pod-nginx.yaml /etc/kubernetes/manifests/
[root@master pod]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
m-nginx-master 0/1 ContainerCreating 0 9s <none> master <none> <none>

相关文章:
ConfigMap-secrets-静态pod
一.ConfigMap 1.概述 ConfigMap资源,简称CM资源,它生成的键值对数据,存储在ETCD数据库中 应用场景:主要是对应用程序的配置 pod通过env变量引入ConfigMap,或者通过数据卷挂载volume的方式引入ConfigMap资源 官方解释…...
SQL Error: 1406, SQLState: 22001
SQL错误代码1406和SQLState 22001通常表示“列数据过长”错误。这意味着尝试插入或更新列中的值,但该值的长度超过了该列允许的最大长度。 解决此问题的几个步骤: 检查列长度: 确定引起错误的列。检查数据库架构中该列允许的最大长度。 验证…...
【密码学基础】基于LWE(Learning with Errors)的全同态加密方案
学习资源: 全同态加密I:理论与基础(上海交通大学 郁昱老师) 全同态加密II:全同态加密的理论与构造(Xiang Xie老师) 现在第二代(如BGV和BFV)和第三代全同态加密方案都是基…...
Linux - 基础开发工具(yum、vim、gcc、g++、make/Makefile、git)
目录 Linux软件包管理器 - yum Linux下安装软件的方式 认识yum 查找软件包 安装软件 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 vim命令模式各命令汇总 vim底行模式各命令汇总 vim的简单配置 Linux编译器 - gc…...
网络安全法律框架更新:最新合规要求与企业应对策略
网络安全法律框架的最新更新 近期,中国的网络安全法律框架经历了重要的更新。2022年,《网络安全法》迎来了首次修改,这一修订主要是为了与《数据安全法》和《个人信息保护法》等新实施的法律进行衔接协调,完善法律责任制度&#x…...
数仓工具—Hive语法之正则表达式函数
正则表达式函数 之前我们介绍过like rlike regexp 这些关键字,都是和匹配有关的,今天我们介绍一下hive 的REGEXP_REPLACE 和REGEXP_EXTRACT 函数,背景是使用Hive正则表达式函数提取数字 在我的其他文章中,我们已经看到了如何使用Hive正则表达式从字符串中提取日期值。正则…...
WKCTF 2024 easy_heap
很经典的house of orange unsortedbin attack FSOP 变量覆盖 不能 free,那首先想到就是 house of orange泄露Libc基址,然后unsortedbin attack。 但是只能show(8),就不能用largebin的套路来泄露堆地址了,那怎么办呢? …...
SQL 多变关联使用子查询去重
不去重状态 select a.*,b.recon_amt from free_settlement_first aleft join free_settlement_second b on a.settlement_first_id b.settlement_first_id 有2条数据出现了重复 使用子查询去重 select a.*,b.recon_amt from free_settlement_first aleft join free_settlem…...
php表单提交并自动发送邮件给某个邮箱(示例源码下载)
只需要将以下代码内容进行复制即可用到自己的程序/API接口中: <?php if(!empty($_POST[is_post]) && $_POST[is_post]1){$url "https://www.aoksend.com/index/api/send_email";$name $_POST[name];$email $_POST[email];$subject $_POS…...
论文翻译:Large Language Models for Education: A Survey
目录 大型语言模型在教育领域的应用:一项综述摘要1 引言2. 教育中的LLM特征2.1. LLMs的特征2.2 教育的特征2.2.1 教育发展过程 低进入门槛。2.2.2. 对教师的影响2.2.3 教育挑战 2.3 LLMEdu的特征2.3.1 "LLMs 教育"的具体体现2.3.2 "LLMs 教育"…...
7.13实训日志
上午 学习网络安全的过程中,我们深入了解了网络的不同层面和技术,从表层网络到深网再到暗网,以及涉及的产业分类和技术工具。这些知识不仅帮助我们理解网络的复杂性,还揭示了如何应对和防范各种网络威胁。 首先,我们…...
【力扣】每日一题—第70题,爬楼梯
题目: 假设你正在爬楼梯。需要n阶你才能到达楼顶。 每次你可以爬1或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 思路: 我开始是写了一个函数计算爬一层和爬二层的个数,之后排列求和,但是超范围了,…...
Docker修改国内镜像源
如果docker已将安装好 参考:https://github.com/cmliu/CF-Workers-docker.io sudo mkdir -p /etc/dockercd /etc/dockersudo vim daemon.json #输入以下内容 { "registry-mirrors": ["https://docker.fxxk.dedyn.io"] } #重启docker服务 su…...
安防监控视频平台LntonCVS视频融合共享平台智慧消防实现远程集中视频监控方案
近年来,电力系统内变电站着火事件频发,这对消防安全管理提出了严峻挑战。我国消防安全基础设施不完善、管理机制不健全、应急处置能力不足及公众消防安全意识淡薄等问题,严重制约了消防安全的提升。因此,加强变电站的消防安全管理…...
【大模型LLM面试合集】大语言模型架构_layer_normalization
2.layer_normalization 1.Normalization 1.1 Batch Norm 为什么要进行BN呢? 在深度神经网络训练的过程中,通常以输入网络的每一个mini-batch进行训练,这样每个batch具有不同的分布,使模型训练起来特别困难。Internal Covariat…...
OpenGL笔记八之EBO和EBO绘制流程
OpenGL笔记八之EBO和EBO绘制流程 —— 2024-07-07 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记八之EBO和EBO绘制流程1.EBO2.glDrawElements:如果使用了ebo,最后一个参数可以写03.glDrawElements:如果使用了e…...
maven——(重要)手动创建,构建项目
创建项目 手动按照maven层级建好文件夹,并写上java,测试代码和pom文件 构建项目 在dos窗口中执行如下命令 compile编译 当前maven仓库中什么都没有。 在pom所在层级下,执行: mvn compile 就开始显示下面这些,…...
数学建模·非线性规划
整型规划 适用于一个变量或多个变量的值只能是整型的情况 整形规划的分类 0-1背包问题 对于一个物品来说,只有选和不选两种情况 表现为单下标,单变量问题 例:建设学校问题 对于每个学校来说只有选和不选两种情况,在数学上我们用…...
SpringCloud第三篇(服务中心与OpenFeign)
p 文章目录 一、服务中心二、Nacos注册中心 一、服务中心 在上一章我们实现了微服务拆分,并且通过Http请求实现了跨微服务的远程调用。不过这种手动发送Http请求的方式存在一些问题。 试想一下,假如商品微服务被调用较多,为了应对更高的并发…...
Linux重要知识点
1. 命令行操作 Linux大多数操作都是通过命令行进行的。熟悉常用命令和脚本是使用Linux的基础。 基本命令:如 ls, cd, cp, mv, rm,这些命令用于文件和目录的管理。文件权限和管理:了解如何使用 chmod, chown, chgrp 等命令来管理文件权限和所…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
