kubernetes配置资源管理

news2024/11/17 3:52:28

目录

  • 一、Secret
    • 1.1 Secret 四种类型
    • 1.2 Secret 使用条件
  • 二、Secret 使用方式
    • 2.1 基于Opaque创建 Secret
    • 2.2 内容用 base64 编码,创建Secret
    • 2.3 将 Secret 挂载到 Volume 中,以 Volume 的形式挂载到 Pod 的某个目录下
    • 2.4 将 Secret 导出到环境变量中
    • 2.5 使用secret配置免密交互拉取habor私有仓库镜像
  • 三、ConfigMap
    • 3.1 使用目录创建
    • 3.2 通过键值对创建
    • 3.3 通过挂载的方式使用
    • 3.4 通过环境变量的方式使用
    • 3.5 在容器启动时直接引用变量值
    • 3.6 将现有nginx配置文件替换掉容器里默认nginx配置文件
    • 3.7 ConfigMap 热更新
    • 3.8 ConfigMap 动态更新
    • 3.9 滚动更新


一、Secret

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

1.1 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 证书和私钥信息。

1.2 Secret 使用条件

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

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

二、Secret 使用方式

2.1 基于Opaque创建 Secret

kubectl create secret generic -h 
#用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 secrets

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

在这里插入图片描述

2.2 内容用 base64 编码,创建Secret

echo -n zhangsan | base64
emhhbmdzYW4=
echo -n abc1234 | base64
YWJjMTIzNA==

vim secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: mysecret1
type: Opaque
data:
  username: emhhbmdzYW4=
  password: YWJjMTIzNA==

在这里插入图片描述
在这里插入图片描述

kubectl create -f secret.yaml 
kubectl get secrets
kubectl get secret mysecret1 -o yaml

在这里插入图片描述

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

//master01节点
//创建一个自主式Pod
cd /opt/secret
kubectl run myapp --image=soscscs/myapp:v1 --port=80 --dry-run=client -oyaml > myapp.yaml
cp myapp.yaml myapp-demo1.yaml
vim myapp-demo1.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: myapp-demo1
  name: myapp-demo1
spec:
  volumes:
  - name: vol-harbor
    secret:
      secretName: mysecret1   
  containers:
  - image: soscscs/myapp:v1
    name: myapp-demo1
    ports:
    - containerPort: 80
    volumeMounts:
    - name: vol-harbor
      mountPath: /opt/secret
      readOnly: true

kubectl apply -f myapp-demo1.yaml
kubectl get pods -owide
kubectl exec -it myapp-demo1 sh

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3d47b3b131164ae4baa4d3a68dc987d1.png

在这里插入图片描述
在这里插入图片描述

2.4 将 Secret 导出到环境变量中

//再用 base64 编码,创建一个Secret mysecret2.yaml
vim mysecret-demo2.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: myapp-demo2
  name: myapp-demo2
spec:
  containers:
  - image: soscscs/myapp:v1
    name: myapp-demo2
    ports:
    - containerPort: 80
    env:
    - name: mysecret1_USER
      valueFrom:
        secretKeyRef:
          name: mysecret1
          key: username
    - name: mysecret2_PASSWORD
      valueFrom:
        secretKeyRef:
          name: mysecret2
          key: password
    envFrom:
    - secretRef:
        name: mysecret1

在这里插入图片描述
在这里插入图片描述

2.5 使用secret配置免密交互拉取habor私有仓库镜像

使用secret配置免密交互拉取habor私有仓库镜像 , 在搭建好docker的私有仓库后,在使用私有仓库时需要通过docker login指令来登录到私有仓库中。但同时在使用的过程中也会把habor仓库的用户名和密码暴露在命令行中,存在一定的安全隐患。k8s中的secret配置的运用能够实现并且规避这一问题的存在

//另外准备两台安装docker引擎和docker-compose的服务器
//部署 docker引擎 
yum install -y yum-utils device-mapper-persistent-data lvm2 
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum install -y docker-ce docker-ce-cli containerd.io

cd /etc/docker/
cat  > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://6iuzoxz4.mirror.aliyuncs.com",
                "https://dockerhub.icu",
                "https://docker.chenby.cn",
                "https://docker.1panel.live",
                "https://docker.awsl9527.cn",
                "https://docker.anyhub.us.kg",
                "https://dhub.kubesre.xyz"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
      "max-size": "500m","max-file": "3"
   }
}
EOF

systemctl start docker.service
systemctl enable docker.service 

上传docker-compose
mv docker-compose /usr/local/bin/
chmod +x !$/docker-compose
docker-compose -version

在这里插入图片描述

//在其中一台装docker引擎和docker-compose的服务器安装harbor
//上传harbor-offline-installer-v1.10.18.tgz 
//下载运行registry镜像 
docker pull registry
vim /etc/docker/daemon.json
......
"insecure-registries": ["http://192.168.154.13"],
......

cd /opt
tar xf harbor-offline-installer-v1.10.18.tgz
cd harbor/
vim harbor.yml 

在这里插入图片描述

在这里插入图片描述

//master01节点
kubectl create secret docker-registry myharbor --docker-server=192.168.154.13 --docker-username=admin --docker-password=Harbor12345 --docker-email=admin@harbor.com

docker-registry   —— secret资源类型
myharbor          —— secret资源名称
--docker-server=192.168.154.13   —— 私有仓库IP地址
--docker-username=admin          —— 私有仓库登录账号
--docker-password=Harbor12345    —— 私有仓库登录密码
--docker-email=admin@harbor.com  —— 私有仓库登录邮箱

kubectl get secrets

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/fcbc06bdd1324494ade51546f9d35c2f.png

//harbor服务器加载镜像和启动 Harbor
./prepare
./install.sh 

docker-compose ps

docker pull nginx:1.20

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

打开浏览器输入账户密码即可登录
在这里插入图片描述

新建一个项目
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

//上传nginx镜像到私有仓库
docker login -u admin -p Harbor12345 http://192.168.154.13
docker images

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

nginx镜像就推送上去了
在这里插入图片描述

从私有仓库拉取镜像

先删除集群所有节点的nginx镜像
docker rmi -f nginx:latest

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

//master01
cd /opt/secret
vim myapp-demo3.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: 192.168.154.13/k8s/nginx:1.20
    name: nginx
    ports:
    - containerPort: 80

在这里插入图片描述

在这里插入图片描述
这时执行pod是报错的
在这里插入图片描述
在这里插入图片描述

//先在所有node节点上把私有仓库ip加上
vim /etc/docker/daemon.json
"insecure-registries": ["http://192.168.154.13"],
//再保存重启docker服务
systemctl restart docker.service

在这里插入图片描述

//master01 
cd /opt/secret
vim myapp-demo3.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: 192.168.154.13/k8s/nginx:1.20
    name: nginx
    ports:
    - containerPort: 80
  imagePullSecrets:
  - name: myharbor

在这里插入图片描述

在这里插入图片描述

通过私有仓库拉取镜像成功

在这里插入图片描述

日志上也看到拉取镜像了

在这里插入图片描述

三、ConfigMap

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

3.1 使用目录创建

//创建 ConfigMap

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

在这里插入图片描述
在这里插入图片描述

mkdir /opt/configmap/cm
cd  /opt/configmap/cm
cp -r /etc/passwd /etc/shadow /etc/yum.repos.d/ /etc/yum.conf /etc/fstab /etc/hosts ./
kubectl create cm cm-demo1 --from-file=/opt/configmap/cm
kubectl describe cm cm-demo1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ConfigMap 只加载第一层目录的第一层文件,子目录和其下文件都不会加载出来
而且 ConfigMap 的键值是以明文的方式展示出来,这也是和 secret 的区别之一

3.2 通过键值对创建

使用文字值创建,利用 --from-literal 参数传递配置信息,该参数可以使用多次,格式如下
kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=good

kubectl create cm mycm-demo1 --from-literal=class=demo1 --from-literal=name=test
kubectl get cm
kubectl describe cm mycm-demo1

在这里插入图片描述
在这里插入图片描述

3.3 通过挂载的方式使用

cd /opt/secret/
vim myapp-demo4.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: myapp-demo4
  name: myapp-demo4
spec:
  volumes:
  - name: vol-cm
    configMap:
      name: cm-demo1
  containers:
  - image: soscscs/myapp:v1
    name: myapp-demo4
    ports:
    - containerPort: 80
    volumeMounts:
    - name: vol-cm
      mountPath: /opt/ConfigMap
      readOnly: true

在这里插入图片描述

在这里插入图片描述

3.4 通过环境变量的方式使用

cd /opt/secret
cp myapp-demo2.yaml myapp-demo5.yaml
vim myapp-demo5.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: myapp-demo5
  name: myapp-demo5
spec:
  containers:
  - image: soscscs/myapp:v1
    name: myapp-demo5
    ports:
    - containerPort: 80
    env:
    - name: ConfigMap_USER
      valueFrom:
        configMapKeyRef:
          name: mycm-demo1
          key: name
    - name: MYCLASS
      valueFrom:
        configMapKeyRef:
          name: mycm-demo1
          key: class
    envFrom:
    - configMapRef:
        name: mycm-demo1

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.5 在容器启动时直接引用变量值

vim myapp-demo5.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: myapp-demo6
  name: myapp-demo6
spec:
  containers:
  - image: busybox:1.28
    name: myapp-demo6
    command:
    - /bin/sh
    - -c
    - echo "${ConfigMap_USER} is in ${MYCLASS}" > /var/env.txt ;sleep 3600
    ports:
    - containerPort: 80
    env:
    - name: ConfigMap_USER
      valueFrom:
        configMapKeyRef:
          name: mycm-demo1
          key: name
    - name: MYCLASS
      valueFrom:
        configMapKeyRef:
          name: mycm-demo1
          key: class
    envFrom:
    - configMapRef:
        name: mycm-demo1

在这里插入图片描述

在这里插入图片描述

3.6 将现有nginx配置文件替换掉容器里默认nginx配置文件

cd /opt/secret
vim myapp-demo6.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: cm-demo6
  name: cm-demo6
spec:
  containers:
  - image: soscscs/myapp:v1
    name: cm-demo6
    ports:
    - containerPort: 80
  dnsPolicy: ClusterFirst
  restartPolicy: Always

在这里插入图片描述

在这里插入图片描述

//准备开始替换
//上传nginx.conf
cd /opt/secret
kubectl create configmap mycm-nginx --from-file=./nginx.conf
vim nginx.conf
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
     #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        charset utf-8;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.php;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
         #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   172.18.0.30:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
    
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

在这里插入图片描述
在这里插入图片描述

错误示例:
vim cm-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: cm-demo6
  name: cm-demo6
spec:
  volumes:
  - name: nginx-conf
    configMap:
      name: mycm-nginx
  containers:
  - image: soscscs/myapp:v1
    name: cm-demo6
    ports:
    - containerPort: 80
    volumeMounts:
    - name: nginx-conf
      mountPath: /etc/nginx/nginx.conf
      readOnly: true

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

vim cm-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: cm-demo6
  name: cm-demo6
spec:
  volumes:
  - name: nginx-conf
    configMap:
      name: mycm-nginx
  containers:
  - image: soscscs/myapp:v1
    name: cm-demo6
    ports:
    - containerPort: 80
    volumeMounts:
    - name: nginx-conf
      mountPath: /etc/nginx/nginx.conf
      subPath: nginx.conf
      readOnly: true

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.7 ConfigMap 热更新

想修改 nginx.conf 里的某个参数值,不要在容器里的 nginx.conf 里修改,不然需要重启服务,容器也会宕掉。

  • 只支持以目录的方式挂载的cm卷进行热更新
  • 不支持以文件的方式挂载的cm卷进行热更新
//以目录的方式更新
cd /opt/secret
cp nginx.conf nginx2.conf
vim nginx2.conf

 server {
        location / {
          root /var/www/html;
          index index.html;
        }

        location ~ \.php$ {
            root           html;
            fastcgi_pass   172.18.0.30:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        }
}

kubectl create cm mycm-nginx2 --from-file=./nginx2.conf

在这里插入图片描述

vim cm-demo.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: cm-demo
  name: cm-demo
spec:
  volumes:
  - name: nginx-conf
    configMap:
      name: mycm-nginx2
  containers:
  - image: soscscs/myapp:v1
    name: cm-demo
    ports:
    - containerPort: 80
    volumeMounts:
    - name: nginx-conf
      mountPath: /etc/nginx/conf.d
      readOnly: true

 kubectl apply -f cm-demo.yaml
 kubectl exec -it cm-demo sh

在这里插入图片描述

3.8 ConfigMap 动态更新

kubectl edit cm mycm-nginx2

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.9 滚动更新

陈述式管理资源配置的方式 修改或添加 资源对象的配置

kubectl patch 资源类型 资源名 --patch '{"第一层字段": {"第一层字段": ...}}'

kubectl create deployment myapp-deploy --image=soscscs/myapp:v1 --port=80 --replicas=2

在这里插入图片描述

//修改副本集并使用打补丁的方式修改
kubectl edit deployments.apps myapp-deploy
kubectl patch deployments.apps myapp-deploy --patch '{"spec":{"replicas":4}}'

在这里插入图片描述

在这里插入图片描述

//打补丁的方式添加字段
kubectl patch deployments.apps myapp-deploy --patch '{"spec":{"template":{"metadata":{"annotations":{"version/config":"2024v1"}}}}}'

在这里插入图片描述

//打补丁的方式修改镜像
kubectl patch deployments.apps myapp-deploy --patch '{"spec":{"template":{"spec":{"containers":[{"name":"myapp","image":"soscscs/myapp:v3"}]}}}}'

在这里插入图片描述

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

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

相关文章

【Python】Pythonic Data Structures and Algorithms:深入浅出数据结构与算法的 Python 实现

Pythonic Data Structures and Algorithms 是一个开源项目&#xff0c;汇集了各种经典数据结构和算法的 Python 实现。该项目旨在为开发者提供丰富的学习资源&#xff0c;帮助他们通过 Python 代码理解和掌握数据结构与算法的核心原理和应用。项目中的算法涵盖了排序、搜索、图…

南平自闭症寄宿制学校:让孩子自信绽放

在繁华与喧嚣交织的都市之中&#xff0c;有一片静谧而充满希望的土地——广州星贝育园自闭症儿童寄宿制学校&#xff0c;这里不仅是知识的殿堂&#xff0c;更是自闭症儿童心灵成长的温馨家园。星贝育园&#xff0c;以其独特的教育理念与细致入微的关怀&#xff0c;为这些特殊的…

初始爬虫9

1.元素定位后的操作 “find_element“仅仅能够获取元素&#xff0c;不能够直接获取其中的数据&#xff0c;如果需要获取数据需要使用以下方法”。下面列出了两个方法&#xff1a; 获取文本 element.text 通过定位获取的标签对象的 text 属性&#xff0c;获取文本内容 获取属性…

opencv实战项目二十九:GrabCut分割人像

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、GrabCut介绍&#xff1a;二、opencv实现&#xff1a;三、效果&#xff1a; 前言 在数字图像处理领域&#xff0c;人像分割是一项极具挑战性的任务&#xf…

二维数组的使用

本章我将用自己的语言给大家翻译二维数组的使用&#xff0c;要是因为我阐述的不清晰&#xff0c;大家不懂的的可以直接在评论里问。 1.下标 二维数组的下标和一维数组没有多大的区别&#xff0c;唯一的区别就是&#xff0c;一维数组只有列&#xff0c;而二维数组还有行 一维数…

C高级(Day22)

一、学习内容 shell指令 文件相关的指令 重定向 > >> echo :打印字符串 cat: 在终端打印文件的内容 链接文件 硬链接文件&#xff1a;文件的inode号是一样的。 查看文件inode号&#xff1a; ls -i 格式&#xff1a;ln 被链接的文件 创建硬链接文件 1 硬链接的文件…

maven-web项目配置打包插件

maven-web项目配置打包 配置maven 打包插件 <!-- 打包 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.4</version><!-- <configuration><webRes…

c#使用winscp库实现FTP/SFTP/SCP的获取列表、上传和下载功能

网上写c#调用winscp实现的资料很少,且写的不够详细。本人查了下winscp的libraries说明,写了个小工具,供大家参考。 winscp的接口说明地址如下: WinSCP .NET Assembly and COM Library :: WinSCP 一、先展示一下小工具的界面 1、支持SFTP/FTP/SCP 2、支持文件夹、文件的…

UE4_Niagara基础实例—4、静态网格体表面生成粒子

效果图&#xff1a; 分析&#xff1a;在物体面上生成粒子&#xff0c;改变粒子的不透明度&#xff0c;让粒子收到力&#xff0c;并添加紊乱&#xff0c;类似于水蒸气。 操作步骤&#xff1a; 1、创建个niagara 系统&#xff0c;使用模版 simple sprite burst。简单调节参数。…

2024年【金属非金属矿山(地下矿山)安全管理人员】考试总结及金属非金属矿山(地下矿山)安全管理人员考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员考试总结根据新金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员考试大纲要求&#xff0c;安全生产模拟考试一点通将金属非金属矿山&#xf…

第五届计算机科学与管理科技国际学术会议(ICCSMT 2024)

梁哲&#xff0c;同济大学长聘特聘教授&#xff0c;国家杰青、首届国家杰青延续项目获得者、上海市曙光学者、上海市优秀学术带头人。本科毕业于新加坡国立大计算机工程系、硕士毕业于新加坡国立大学工业与系统工程系、博士毕业于美国新泽西州立大学工业工程系。理论研究主要集…

农牧场可视化管理:精准监测与优化运营

利用图扑可视化技术实现农牧场的实时数据监测和分析&#xff0c;优化资源配置&#xff0c;提高生产效率和可持续发展能力。

文件flac怎么转成mp3?这几种方法每个人都能学会!

文件flac怎么转成mp3&#xff1f;FLAC以其无损音频的卓越音质和精湛的压缩技术&#xff0c;在音乐发烧友与音频专业人士中赢得了无可撼动的地位&#xff0c;然而&#xff0c;任何技术的辉煌背后都伴随着其特有的挑战与考量&#xff0c;FLAC的显著特点就是无损压缩&#xff0c;虽…

360周鸿祎为什么说大模型已成茶叶蛋?

大模型炒了一年&#xff0c;为什么没有特别火的应用&#xff1f; 最近几天360创始人周鸿祎称&#xff0c;去年感觉大模型是原子弹&#xff0c;今年感觉是茶叶蛋。 什么意思&#xff1f;我想大概就是说大模型谁都能玩了&#xff0c;现在国内的大模型没有一千&#xff0c;也有几…

JAVA的版本

Java的版本开始还正常&#xff1a;1.0 ->1.1 顺序增加&#xff0c;到了2004年&#xff0c;不知什么原因1.5又有了新的平行名字5&#xff0c;这样Java 1.6对应Java6&#xff0c;一直到Java1.8 对应 Java8&#xff0c;然后到在2017年彻底没了Java1.9,只有Java9了。好吧这可以忍…

椭圆距离计算的简单方法

分析发现找到点到椭圆的最近距离等价于求解一元四次方程。想象一下一个圆和一个椭圆最多相交四次。从这个观点出发,问题转化为找到与椭圆仅相交一次的圆。如果用四次方程表示,其中两个根将在交点处共享,而另外两个根将会是复数。 尽管四次方程的封闭解确实存在,但迭代方法更…

言语理解(2)

B B出现在文章中的第一句话&#xff0c;属于转折前的内容非重点 在这一过程中&#xff0c;属于对前面的指代&#xff0c;后面可以引出文章中的中心内容 A D没有提及到农村&#xff0c;C选项和文段中的最后一句话是相契合的 B 色彩是文章中的主题词&#xff0c;不过属于转折&…

代码随想录算法训练营第59天|卡码网 47. 参加科学大会、94. 城市间货物运输 I

1. 卡码网 47. 参加科学大会 题目链接&#xff1a;https://kamacoder.com/problempage.php?pid1047 文章链接&#xff1a;https://www.programmercarl.com/kamacoder/0047.参会dijkstra堆.html#总结 思路依然是 dijkstra 三部曲&#xff1a; 1.第一步&#xff0c;选源点到哪个…

Hadoop HDFS命令操作实例

一.创建与查看HDFS目录 每次重启后&#xff0c;Jps和java -version执行出来的结果不符合就使用 source ~/.bash_profile 是在 Unix/Linux 系统上用来重新加载用户的 Bash 配置文件 ~/.bash_profile 的命令。这条命令的作用是使得当前的 Bash 环境重新读取并应用 ~/.bash_pro…

Android studio安装问题及解决方案

Android studio安装问题及解决方案 gradle已经安装好了&#xff0c;但是每次就是找不到gradle的位置&#xff0c;每次要重新下载&#xff0c;很慢&#xff0c;每次都不成功 我尝试用安装android studio时自带的卸载程序&#xff0c;卸载android studio&#xff0c;然后重新下…