当前位置: 首页 > news >正文

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资源&#xff0c;简称CM资源&#xff0c;它生成的键值对数据&#xff0c;存储在ETCD数据库中 应用场景&#xff1a;主要是对应用程序的配置 pod通过env变量引入ConfigMap&#xff0c;或者通过数据卷挂载volume的方式引入ConfigMap资源 官方解释…...

SQL Error: 1406, SQLState: 22001

SQL错误代码1406和SQLState 22001通常表示“列数据过长”错误。这意味着尝试插入或更新列中的值&#xff0c;但该值的长度超过了该列允许的最大长度。 解决此问题的几个步骤&#xff1a; 检查列长度&#xff1a; 确定引起错误的列。检查数据库架构中该列允许的最大长度。 验证…...

【密码学基础】基于LWE(Learning with Errors)的全同态加密方案

学习资源&#xff1a; 全同态加密I&#xff1a;理论与基础&#xff08;上海交通大学 郁昱老师&#xff09; 全同态加密II&#xff1a;全同态加密的理论与构造&#xff08;Xiang Xie老师&#xff09; 现在第二代&#xff08;如BGV和BFV&#xff09;和第三代全同态加密方案都是基…...

Linux - 基础开发工具(yum、vim、gcc、g++、make/Makefile、git)

目录 Linux软件包管理器 - yum Linux下安装软件的方式 认识yum 查找软件包 安装软件 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 vim命令模式各命令汇总 vim底行模式各命令汇总 vim的简单配置 Linux编译器 - gc…...

网络安全法律框架更新:最新合规要求与企业应对策略

网络安全法律框架的最新更新 近期&#xff0c;中国的网络安全法律框架经历了重要的更新。2022年&#xff0c;《网络安全法》迎来了首次修改&#xff0c;这一修订主要是为了与《数据安全法》和《个人信息保护法》等新实施的法律进行衔接协调&#xff0c;完善法律责任制度&#x…...

数仓工具—Hive语法之正则表达式函数

正则表达式函数 之前我们介绍过like rlike regexp 这些关键字,都是和匹配有关的,今天我们介绍一下hive 的REGEXP_REPLACE 和REGEXP_EXTRACT 函数,背景是使用Hive正则表达式函数提取数字 在我的其他文章中,我们已经看到了如何使用Hive正则表达式从字符串中提取日期值。正则…...

WKCTF 2024 easy_heap

很经典的house of orange unsortedbin attack FSOP 变量覆盖 不能 free&#xff0c;那首先想到就是 house of orange泄露Libc基址&#xff0c;然后unsortedbin attack。 但是只能show(8)&#xff0c;就不能用largebin的套路来泄露堆地址了&#xff0c;那怎么办呢&#xff1f; …...

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接口中&#xff1a; <?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

目录 大型语言模型在教育领域的应用&#xff1a;一项综述摘要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实训日志

上午 学习网络安全的过程中&#xff0c;我们深入了解了网络的不同层面和技术&#xff0c;从表层网络到深网再到暗网&#xff0c;以及涉及的产业分类和技术工具。这些知识不仅帮助我们理解网络的复杂性&#xff0c;还揭示了如何应对和防范各种网络威胁。 首先&#xff0c;我们…...

【力扣】每日一题—第70题,爬楼梯

题目&#xff1a; 假设你正在爬楼梯。需要n阶你才能到达楼顶。 每次你可以爬1或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 思路&#xff1a; 我开始是写了一个函数计算爬一层和爬二层的个数&#xff0c;之后排列求和&#xff0c;但是超范围了&#xff0c…...

Docker修改国内镜像源

如果docker已将安装好 参考&#xff1a;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视频融合共享平台智慧消防实现远程集中视频监控方案

近年来&#xff0c;电力系统内变电站着火事件频发&#xff0c;这对消防安全管理提出了严峻挑战。我国消防安全基础设施不完善、管理机制不健全、应急处置能力不足及公众消防安全意识淡薄等问题&#xff0c;严重制约了消防安全的提升。因此&#xff0c;加强变电站的消防安全管理…...

【大模型LLM面试合集】大语言模型架构_layer_normalization

2.layer_normalization 1.Normalization 1.1 Batch Norm 为什么要进行BN呢&#xff1f; 在深度神经网络训练的过程中&#xff0c;通常以输入网络的每一个mini-batch进行训练&#xff0c;这样每个batch具有不同的分布&#xff0c;使模型训练起来特别困难。Internal Covariat…...

OpenGL笔记八之EBO和EBO绘制流程

OpenGL笔记八之EBO和EBO绘制流程 —— 2024-07-07 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记八之EBO和EBO绘制流程1.EBO2.glDrawElements&#xff1a;如果使用了ebo&#xff0c;最后一个参数可以写03.glDrawElements&#xff1a;如果使用了e…...

maven——(重要)手动创建,构建项目

创建项目 手动按照maven层级建好文件夹&#xff0c;并写上java&#xff0c;测试代码和pom文件 构建项目 在dos窗口中执行如下命令 compile编译 当前maven仓库中什么都没有。 在pom所在层级下&#xff0c;执行&#xff1a; mvn compile 就开始显示下面这些&#xff0c;…...

数学建模·非线性规划

整型规划 适用于一个变量或多个变量的值只能是整型的情况 整形规划的分类 0-1背包问题 对于一个物品来说&#xff0c;只有选和不选两种情况 表现为单下标&#xff0c;单变量问题 例&#xff1a;建设学校问题 对于每个学校来说只有选和不选两种情况&#xff0c;在数学上我们用…...

SpringCloud第三篇(服务中心与OpenFeign)

p 文章目录 一、服务中心二、Nacos注册中心 一、服务中心 在上一章我们实现了微服务拆分&#xff0c;并且通过Http请求实现了跨微服务的远程调用。不过这种手动发送Http请求的方式存在一些问题。 试想一下&#xff0c;假如商品微服务被调用较多&#xff0c;为了应对更高的并发…...

Linux重要知识点

1. 命令行操作 Linux大多数操作都是通过命令行进行的。熟悉常用命令和脚本是使用Linux的基础。 基本命令&#xff1a;如 ls, cd, cp, mv, rm&#xff0c;这些命令用于文件和目录的管理。文件权限和管理&#xff1a;了解如何使用 chmod, chown, chgrp 等命令来管理文件权限和所…...

Unity宏和编辑器

宏&#xff1a;UNITY_EDITOR 等等 编辑器&#xff1a;Unity未运行时的状态 如何使用&#xff1a;#if UNITY_EDITOR 代码 #endif 什么情况下使用&#xff1a;包裹那些想要在编辑器模式下使用的代码 而在Unity运行时不会去调用的代码 AssetDatabase.LoadAssetAtPath&#xff08;路…...

计算机网络——网络层(概念及IP地址划分)

目录 网络层概念 网络层向上层提供的两种服务 虚电路 网络提供数据报服务 虚电路服务与数据报服务的对比 网络层的两个层面 分组传送到路由器的运作 对网络层进行分层 网际协议IP 虚拟互联网络 IP地址 IP地址及其表示方法 IP地址的计算方式 IP地址的结构 …...

【JVM实战篇】内存调优:内存泄露危害+内存监控工具介绍+内存泄露原因介绍

文章目录 内存调优内存溢出和内存泄漏内存泄露带来什么问题内存泄露案例演示内存泄漏的常见场景场景一场景二 解决内存溢出的方法常用内存监控工具Top命令优缺点 VisualVM软件、插件优缺点监控本地Java进程监控服务器的Java进程&#xff08;生产环境不推荐使用&#xff09; Art…...

CVE漏洞爬虫脚本

前言&#xff1a;前阵子公司非要把CVE漏洞信息拉倒本地&#xff0c;说方便安全员们查看&#xff0c;其实在莫慌看来&#xff0c;大可不必&#xff0c;90%的CVE漏洞其实不具备现实利用的可能性的&#xff08;不代表不能被利用&#xff09;&#xff0c;但是你说它没有意义也是不对…...

如何搭建互联网医院系统源码?医疗陪诊APP开发实战详解

今天&#xff0c;小编将为大家讲解如何搭建一个完整的互联网医院系统源码&#xff0c;并介绍医疗陪诊APP的开发实战。 一、互联网医院系统的架构设计 搭建一个完整的互联网医院系统&#xff0c;需要从架构设计开始。一个典型的互联网医院系统通常包含以下几个核心模块&#xf…...

高通平台android的Framework开发遇到的一些问题总结

涉及到framwork的修改一般都在QSSI文件夹下。 1、Android设备&#xff0c;发现耳机插入了设备&#xff0c;但是设备statusbar并没有显示耳机插入的状态。 frameworks/base/packages/SystemUI/res/values/config.xml 下修改&#xff1a; <string-array name"config_s…...

基于modbus tcp通讯的雷赛导轨控制器调试软件

0.前言 之前工作遇到了雷赛电机驱动器设备&#xff0c;主要是用来控制光学导轨移动。雷赛的调试软件用的时串口通讯&#xff0c;还要他们定制的串口线&#xff0c;在现场都是485转网络的接口&#xff0c;调试起来也很不方便。所以我就照着他们的说明书&#xff0c;写了一个简易…...

阿里云产品流转

本文主要记述如何使用阿里云对数据进行流转&#xff0c;这里只是以topic流转&#xff08;再发布&#xff09;为例进行说明&#xff0c;可能还会有其他类型的流转&#xff0c;不同服务器的流转也可能会不一样&#xff0c;但应该大致相同。 1 创建设备 具体细节可看&#xff1a;…...

GO语言中的接口(interface)

go 接口 interface 1、什么是接口&#xff08;interface&#xff09;&#xff1f;2、注意事项3、interface底层实现4、侵入式与非侵入式5、接口的应用场景空接口的应用场景 6、其他使用 1、什么是接口&#xff08;interface&#xff09;&#xff1f; 在Go语言中&#xff0c;接口…...

模拟电路再理解系列(2)-电源滤波电路

前言 今天梳理一下电源滤波电路&#xff0c;在大部分电路设计中&#xff0c;都有滤波电路这一块儿&#xff0c;严格地说的话除了电源滤波还有信号滤波&#xff0c;经常会看到电路里面有一些电容&#xff0c;电感等串并联在一起的模块&#xff0c;大概率就是起到滤波作用&#…...