K8s-资源管理(二)

文章目录

      • 2. 资源管理
      • 2.1 资源管理介绍
      • 2.2 YAML语言介绍
      • 2.3 资源管理方式
        • 2.3.1 命令式对象管理
        • 2.3.2 命令式对象配置
        • 2.3.3 声明式对象配置
      • 2.4. 模拟使用普通用户来操作
      • 2.5 kubectl 一些基本命令
      • 2.6 使用个人的 docker 仓库的镜像

2. 资源管理

2.1 资源管理介绍

在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。

kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。

kubernetes的最小管理单元是pod而不是容器,所以只能将容器放在Pod中,而kubernetes一般也不会直接管理Pod,而是通过Pod控制器来管理Pod的。

Pod可以提供服务之后,就要考虑如何访问Pod中服务,kubernetes提供了Service资源实现这个功能。

当然,如果Pod中程序的数据需要持久化,kubernetes还提供了各种存储系统。

在这里插入图片描述

学习kubernetes的核心,就是学习如何对集群上的Pod、Pod控制器、Service、存储等各种资源进行操作

2.2 YAML语言介绍

YAML是一个类似 XML、JSON 的标记性语言。它强调以数据为中心,并不是以标识语言为重点。因而YAML本身的定义比较简单,号称"一种人性化的数据格式语言"。

<agan><age>15</age><address>Wuhan</address>
</agan>
agan:age: 15address: Wuhan

YAML的语法比较简单,主要有下面几个:

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格( 低版本限制 )
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • ‘#’ 表示注释

YAML支持以下几种数据类型:

  • 纯量:单个的、不可再分的值
  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hash) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
# 纯量, 就是指的一个简单的值,字符串、布尔值、整数、浮点数、Null、时间、日期
# 1 布尔类型
c1: true (或者True)
# 2 整型
c2: 234
# 3 浮点型
c3: 3.14
# 4 null类型 
c4: ~  # 使用~表示null
# 5 日期类型
c5: 2018-02-17    # 日期必须使用ISO 8601格式,即yyyy-MM-dd
# 6 时间类型
c6: 2018-02-17T15:02:31+08:00  # 时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区
# 7 字符串类型
c7: agan     # 简单写法,直接写值 , 如果字符串中间有特殊字符,必须使用双引号或者单引号包裹 
c8: line1line2     # 字符串过多的情况可以拆成多行,每一行会被转化成一个空格
# 对象
# 形式一(推荐):
agan:age: 15address: Wuhan# 形式二(了解):
agan: {age: 15,address: Wuhan}
# 数组
# 形式一(推荐):
address:- 武昌- 江夏  # 形式二(了解):
address: [武昌,江夏]

小提示:

1 书写yaml切记: 后面要加一个空格

2 如果需要将多段yaml配置放在一个文件中,中间要使用---分隔

3 下面是一个yaml转json的网站,可以通过它验证yaml是否书写正确

https://www.json2yaml.com/convert-yaml-to-json

2.3 资源管理方式

  • 命令式对象管理:直接使用命令去操作kubernetes资源

    kubectl run nginx-pod --image=nginx:1.17.1 --port=80

  • 命令式对象配置:通过命令配置和配置文件去操作kubernetes资源

    kubectl create/patch -f nginx-pod.yaml

  • 声明式对象配置:通过apply命令和配置文件去操作kubernetes资源

    kubectl apply -f nginx-pod.yaml

类型操作对象适用环境优点缺点
命令式对象管理对象测试简单只能操作活动对象,无法审计、跟踪
命令式对象配置文件开发可以审计、跟踪项目大时,配置文件多,操作麻烦
声明式对象配置目录开发支持目录操作意外情况下难以调试

2.3.1 命令式对象管理

kubectl命令

kubectl是kubernetes集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。kubectl命令的语法如下:

kubectl [command] [type] [name] [flags]

comand:指定要对资源执行的操作,例如creategetdelete

type:指定资源类型,比如 deploymentpodservice

name:指定资源的名称,名称大小写敏感

flags:指定额外的可选参数

# 查看所有pod
kubectl get pod 
[root@k8s-master ~]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
dep-nginx-bdf687f67-tfsnm   1/1     Running   0          42h
pod-apache                  1/1     Running   0          36m# 查看某个pod
kubectl get pod pod_name
[root@k8s-master ~]# kubectl get pod pod-apache -o wide
NAME         READY   STATUS    RESTARTS   AGE   IP           NODE        NOMINATED NODE   READINESS GATES
pod-apache   1/1     Running   0          37m   10.244.2.8   k8s-node2   <none>           <none>
[root@k8s-master ~]# # 查看某个pod,以yaml格式展示结果
kubectl get pod pod_name -o yaml

资源类型

kubernetes中所有的内容都抽象为资源,可以通过下面的命令进行查看:

kubectl api-resources

在这里插入图片描述


经常使用的资源有下面这些:

资源分类资源名称缩写资源作用
集群级别资源nodesno集群组成部分
namespacesns隔离Pod
pod资源podspo装载容器
pod资源控制器replicationcontrollersrc控制pod资源
replicasetsrs控制pod资源
deploymentsdeploy控制pod资源
daemonsetsds控制pod资源
jobs控制pod资源
cronjobscj控制pod资源
horizontalpodautoscalershpa控制pod资源
statefulsetssts控制pod资源
服务发现资源servicessvc统一pod对外接口
ingressing统一pod对外接口
存储资源volumeattachments存储
persistentvolumespv存储
persistentvolumeclaimspvc存储
配置资源configmapscm配置
secrets配置

操作

kubernetes允许对资源进行多种操作,可以通过–help查看详细的操作命令

kubectl --help  或者 kubectl --help | less

经常使用的操作有下面这些:

命令分类命令翻译命令作用
基本命令create创建创建一个资源
edit编辑编辑一个资源
get获取获取一个资源
patch更新(补丁)更新一个资源
delete删除删除一个资源
explain解释展示资源文档
运行和调试run运行在集群中运行一个指定的镜像
expose暴露暴露资源为Service
describe描述显示资源内部信息
logs日志输出容器在 pod 中的日志输出容器在 pod 中的日志
attach缠绕进入运行中的容器进入运行中的容器
exec执行容器中的一个命令执行容器中的一个命令
cp复制在Pod内外复制文件
rollout首次展示管理资源的发布
scale规模扩(缩)容Pod的数量
autoscale自动调整自动调整Pod的数量
高级命令applyrc通过文件对资源进行配置
label标签更新资源上的标签
其他命令cluster-info集群信息显示集群信息
version版本显示当前Server和Client的版本

下面以一个namespace / pod的创建和删除简单演示下命令的使用:

# 查看当前有哪些 namespace 
[root@k8s-master ~]# kubectl get namespace
NAME              STATUS   AGE
default           Active   4d15h  // 如果你不指定使用哪个名称空间就会使用默认的这个
kube-flannel      Active   3d1h
kube-node-lease   Active   4d15h
kube-public       Active   4d15h
kube-system       Active   4d15h
[root@k8s-master ~]# # 创建一个namespace 叫 cloudsino
[root@k8s-master ~]# kubectl create namespace cloudsino
namespace/cloudsino created# 获取namespace
[root@k8s-master ~]# kubectl get namespace
NAME              STATUS   AGE
cloudsino         Active   9s      # 这个是刚才创建的 cloudsino
default           Active   4d16h
kube-flannel      Active   3d1h
kube-node-lease   Active   4d16h
kube-public       Active   4d16h
kube-system       Active   4d16h# 在此namespace下创建并运行一个nginx的Pod、指定运行在 cloudsino 中
[root@k8s-master ~]# kubectl run pod-name --image=nginx -n cloudsino //-n 表示指定使用哪个名称空间
pod/pod-name created
[root@k8s-master ~]# kubectl get pod   // 不指定,表示查看默认的名称空间
NAME                     READY   STATUS    RESTARTS   AGE
httpd                    1/1     Running   0          52m
httpd-7bb6557549-q4kfs   1/1     Running   0          87m
[root@k8s-master ~]# kubectl get pod -n cloudsino  // 需要指定cloudsino
NAME   READY   STATUS    RESTARTS   AGE
pod-name    1/1     Running   0          28s# 删除指定的pod
[root@k8s-master ~]# kubectl delete pod pod -n cloudsino
pod "pod-name" deleted
[root@k8s-master ~]# kubectl get pod -n cloudsino
No resources found in cloudsino namespace.
[root@k8s-master ~]# # 删除指定的namespace
[root@k8s-master ~]# kubectl delete namespace cloudsino
namespace "cloudsino" deleted
[root@k8s-master ~]# kubectl get namespace
NAME              STATUS   AGE
default           Active   4d16h
kube-flannel      Active   3d1h
kube-node-lease   Active   4d16h
kube-public       Active   4d16h
kube-system       Active   4d16h# kubectl run httpd --image=httpd --port=80  // 自主式pod,删除不会有接替的
# kubectl create deployment httpd --image=httpd // 这个是使用deployment类型创建的
# kubectl expose deployment httpd --port=80 --type=NodePort  // 暴露端口号[root@k8s-master ~]# kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
httpd                    1/1     Running   0          58m  # 自主式pod,删除不会有接替的
httpd-7bb6557549-q4kfs   1/1     Running   0          93m  # 这个是使用deployment类型创建的
[root@k8s-master ~]# kubectl get deployment
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
httpd   1/1     1            1           94m

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


2.3.2 命令式对象配置

命令式对象配置就是使用命令配合配置文件一起来操作kubernetes资源。

1) 创建一个nginxpod.yaml,内容如下:

[root@k8s-master ~]# mkdir inventory  // 创建目录 inventory 存放yaml 文件
[root@k8s-master ~]# cd inventory/
[root@k8s-master inventory]# ls
[root@k8s-master inventory]# vi nginxpod.yaml
apiVersion: v1  // 版本是 V1
kind: Namespace  // 类型是名称空间
metadata:name: dev  // 名称空间叫 dev---apiVersion: v1
kind: Pod   // 类型是 Pod 类型
metadata:name: nginxpod  // Pod 名字叫nginxpodnamespace: dev  // 这个pod 跑在dev 名称空间里
spec:containers:- name: nginx-containers  // 这个pod 里面跑的容器叫 nginx-containersimage: nginx:latest  // 用的镜像是  nginx:latest 

下面的这些图片是教怎么写 .yaml 格式文件

创建 Pod 查找方式

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


创建控制器的查找方式

在这里插入图片描述


在这里插入图片描述


2)执行create命令,创建资源:

[root@k8s-master inventory]# pwd
/root/inventory
[root@k8s-master inventory]# kubectl create -f nginxpod.yaml 
namespace/dev created
pod/nginxpod created

此时发现创建了两个资源对象,分别是namespace和pod

3)执行get命令,查看资源:

[root@k8s-master inventory]# pwd
/root/inventory
[root@k8s-master inventory]# kubectl get -f nginxpod.yaml 
NAME            STATUS   AGE
namespace/dev   Active   29sNAME           READY   STATUS    RESTARTS   AGE
pod/nginxpod   1/1     Running   0          29s
[root@k8s-master inventory]# kubectl get namespace
NAME              STATUS   AGE
default           Active   5d14h
dev               Active   48s    // 刚创建的 dev 名称空间
kube-flannel      Active   3d23h
kube-node-lease   Active   5d14h
kube-public       Active   5d14h
kube-system       Active   5d14h
[root@k8s-master inventory]# kubectl get -n dev pods // 查看所有在dev 的pod
NAME       READY   STATUS    RESTARTS   AGE
nginxpod   1/1     Running   0          69s
[root@k8s-master inventory]# kubectl get -n dev pod nginxpod // 指定查看哪个pod
NAME       READY   STATUS    RESTARTS   AGE
nginxpod   1/1     Running   0          76s
[root@k8s-master inventory]# 

这样就显示了两个资源对象的信息

4)执行delete命令,删除资源:

[root@k8s-master inventory]# pwd
/root/inventory
[root@k8s-master inventory]# kubectl  delete -f nginxpod.yaml 
namespace "dev" deleted
pod "nginxpod" deleted

此时发现两个资源对象被删除了


总结:命令式对象配置的方式操作资源,可以简单的认为:命令  +  yaml配置文件(里面是命令需要的各种参数)

2.3.3 声明式对象配置

声明式对象配置跟命令式对象配置很相似,但是它只有一个命令apply。

# 首先执行一次kubectl apply -f yaml文件,发现创建了资源
[root@k8s-master inventory]# pwd
/root/inventory
[root@master ~]#  kubectl apply -f nginxpod.yaml
namespace/dev created
pod/nginxpod created// 指定名称空间查看 Pod
[root@k8s-master inventory]# kubectl get pods -n dev
NAME       READY   STATUS    RESTARTS   AGE
nginxpod   1/1     Running   0          26s
[root@k8s-master inventory]# [root@k8s-master inventory]# cat nginxpod.yaml 
apiVersion: v1
kind: Namespace
metadata:name: dev---apiVersion: v1
kind: Pod
metadata:name: nginxpodnamespace: dev
spec:containers:- name: nginx-containersimage: nginx:latest# 再次执行一次kubectl apply -f yaml文件,发现说资源没有变动
[root@k8s-master inventory]# pwd
/root/inventory
[root@master ~]#  kubectl apply -f nginxpod.yaml
namespace/dev unchanged
pod/nginxpod unchanged[root@k8s-master inventory]# vim  nginxpod.yaml 
apiVersion: v1
kind: Namespace
metadata:name: dev---apiVersion: v1
kind: Pod
metadata:name: nginxpodnamespace: dev
spec:containers:- name: nginx-containersimage: nginx:latest---apiVersion: v1  // 在原先的基础上新加一个 Pod
kind: Pod  // 指定类型:Pod
metadata:name: apache  // Pod 名字叫:apachenamespace:  // 没有指定用那个名称空间,默认使用default
spec:containers:- name: httpd  // 这个 pod 里面跑的容器叫 httpdimage: httpd  // 用的镜像是 httpd
[root@k8s-master inventory]# [root@k8s-master inventory]# kubectl apply -f nginxpod.yaml 
namespace/dev unchanged  // 已存在,所以没有改变
pod/nginxpod unchanged   // 已存在,所以没有改变
pod/apache created    // 还没有存在所以创建
[root@k8s-master inventory]# kubectl get -n default pods
NAME                      READY   STATUS    RESTARTS   AGE
apache                    1/1     Running   0          2m51s
nginxs-64cdf86546-82dcc   1/1     Running   0          19h
[root@k8s-master inventory]# 
[root@k8s-master inventory]# kubectl get -n dev pods
NAME       READY   STATUS    RESTARTS   AGE
nginxpod   1/1     Running   0          10m
[root@k8s-master inventory]# 
总结:其实声明式对象配置就是使用apply描述一个资源最终的状态(在yaml中定义状态)使用apply操作资源:如果资源不存在,就创建,相当于 kubectl create如果资源已存在,就更新,相当于 kubectl patch

扩展:kubectl 可以在 node 节点上运行吗 ?

kubectl的运行是需要进行配置的,它的配置文件是$HOME/.kube,如果想要在node节点运行此命令,需要将master上的.kube文件复制到node节点上,即在master节点上执行下面操作:

scp  -r  HOME/.kube   node1: HOME/  # 哪个普通用户就放到哪个的对应用户里 

2.4. 模拟使用普通用户来操作

使用k8s-node1来模拟

  mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
[tom@k8s-node1 ~]$ kubectl get nodes  // 普通用户使用不了 kubectl 
error: error loading config file "/etc/kubernetes/admin.conf": open /etc/kubernetes/admin.conf: permission denied
# 需要设置下面的操作[root@k8s-node1 ~]# useradd tom  // 创建 tom 用户
[root@k8s-node1 ~]# id tom
uid=1000(tom) gid=1000(tom) groups=1000(tom)[root@k8s-node1 ~]# su - tom  // 登录 tom 用户
[tom@k8s-node1 ~]$ mkdir -p $HOME/.kube
[tom@k8s-node1 ~]$ ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .kube# 使用 root 不然没有权限
[root@k8s-node1 ~]# cp -i /etc/kubernetes/admin.conf ~tom/.kube/config 
[root@k8s-node1 ~]# chown -R tom.tom ~tom/.kube/[tom@k8s-node1 ~]$ ll .kube/ -d
drwxrwxr-x 2 tom tom 20 Jan 10 10:04 .kube/
[tom@k8s-node1 ~]$ ll .kube/ 
total 8
-rw------- 1 tom tom 5637 Jan 10 10:04 config[tom@k8s-node1 ~]$ echo $KUBECONFIG  // 因为之前使用管理员做的,所以需要把管理员做的那一步骤取消掉
/etc/kubernetes/admin.conf
[tom@k8s-node1 ~]$ export KUBECONFIG=
[tom@k8s-node1 ~]$ echo $KUBECONFIG[tom@k8s-node1 ~]$ [tom@k8s-node1 ~]$ kubectl get nodes   // 设置完成之后就可以使用 kubectl 
NAME         STATUS   ROLES           AGE     VERSION
k8s-master   Ready    control-plane   5d16h   v1.26.0
k8s-node1    Ready    <none>          4d      v1.26.0
k8s-node2    Ready    <none>          3d23h   v1.26.0

使用推荐: 三种方式应该怎么用 ?

创建/更新资源 使用声明式对象配置 kubectl apply -f XXX.yaml

删除资源 使用命令式对象配置 kubectl delete -f XXX.yaml

查询资源 使用命令式对象管理 kubectl get(describe) 资源名称


2.5 kubectl 一些基本命令

在这里插入图片描述


在这里插入图片描述


nginx 的镜像是跑在 主机 k8s-node2 上的如果 k8s-node2 主机突然宕机后 k8s-node1 主机就会接替

模拟 k8s-node2 主机宕机后 k8s-node1 主机会不会接替

// 关闭 k8s-node2 主机
[root@k8s-node2 ~]# shutdown -h now 

在这里插入图片描述


2.6 使用个人的 docker 仓库的镜像

在这里插入图片描述


在这里插入图片描述


//  从我的docker 仓库拉取镜像到本地来使用
[root@k8s-master ~]# kubectl create deployment httpd --image=tkl9639/httpd:v0.1
deployment.apps/httpd created
[root@k8s-master ~]# kubectl get deployment
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
httpd   0/1     1            0           22s
[root@k8s-master ~]# kubectl get pods
NAME                     READY   STATUS              RESTARTS   AGE
httpd-7bb6557549-q4kfs   0/1     ContainerCreating   0          28s
[root@k8s-master ~]# kubectl get pods -o wide
NAME                     READY   STATUS              RESTARTS   AGE   IP       NODE        NOMINATED NODE   READINESS GATES
httpd-7bb6557549-q4kfs   0/1     ContainerCreating   0          32s   <none>   k8s-node2   <none>           <none>
[root@k8s-master ~]# kubectl get pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP           NODE        NOMINATED NODE   READINESS GATES
httpd-7bb6557549-q4kfs   1/1     Running   0          82s   10.244.2.5   k8s-node2   <none>           <none>
[root@k8s-master ~]# kubectl get deployment -o wide
NAME   READY UP-TO-DATE  AVAILABLE AGE   CONTAINERS IMAGES               SELECTOR
httpd  1/1   1           1         8m40s httpd      tkl9639/httpd:v0.1   app=httpd// 暴露端口
[root@k8s-master ~]# kubectl expose deployment httpd --port=80 --type=NodePort
service/httpd exposed
[root@k8s-master ~]# kubectl get pod,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/httpd-7bb6557549-q4kfs   1/1     Running   0          14mNAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
service/httpd        NodePort    10.99.154.27   <none>        80:31073/TCP   18s
service/kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        4d14h
service/nginx        NodePort    10.99.77.8     <none>        80:30035/TCP   2d18h
[root@k8s-master ~]# 
[root@k8s-master ~]# curl 10.99.154.27  // 集群IP
<html><body><h1>It works!</h1></body></html>
[root@k8s-master ~]# 

在这里插入图片描述

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

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

相关文章

基于深度学习的高精度狗狗检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度狗狗检测识别系统可用于日常生活中检测与定位120类狗狗目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的狗狗目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练…

web漏洞-java安全(41)

这个重点是讲关于java的代码审计&#xff0c;看这些漏洞是怎么在java代码里面产生的。 #Javaweb 代码分析-目录遍历安全问题 这个漏洞原因前面文章有&#xff0c;这次我们看看这个漏洞如何在代码中产生的&#xff0c;打开靶场 解题思路就是通过文件上传&#xff0c;上传文件…

如何利用tf.keras 实现深度学习?

tf.keras是TensorFlow 2.0的高阶API接口&#xff0c;为TensorFlow的代码提供了新的风格和设计模式&#xff0c;大大提升了TF代码的简洁性和复用性&#xff0c;官方也推荐使用tf.keras来进行模型设计和开发。 常用模块 tf.keras中常用模块如下表所示&#xff1a; 常用方法 深度…

安全学习DAY10_HTTP数据包

HTTP数据包 文章目录 HTTP数据包小节导图Request请求数据包结构Request请求方法&#xff08;方式&#xff09;请求头&#xff08;Header&#xff09;Response响应数据包结构Response响应数据包状态码状态码作用&#xff1a;部分状态码详解判断网站文件是否存在的状态码&#xf…

配置代理——解决跨域问题(详解)

之前写项目的时候总会遇到配置代理的问题&#xff0c;可是配置了之后有时有用&#xff0c;有时就没有用&#xff0c;自己之前学的也是懵懵懂懂&#xff0c;于是专门花了一个小时去了解了如何配置代理跨域&#xff0c;然后在此记录一下&#xff0c;方便自己以后查阅。 一、 常用…

RBF神经网络原理和matlab实现

1.案例背景 1.1 RBF神经网络概述 径向基函数(Radical Basis Function,RBF)是多维空间插值的传统技术,由Powell于1985年提出。1988年, Broomhead和 Lowe根据生物神经元具有局部响应这一特点,将 RBF引入神经网络设计中,产生了RBF神经网络。1989 年&#xff0c;Jackson论证了…

应用层协议——https

文章目录 1. HTTPS 是什么2. 什么是"加密"3. 常见的加密方式4. 数据摘要 && 数字签名5. HTTPS 的工作过程探究5.1 方案1 - 只使用对称加密5.2 方案2 - 只使用非对称加密5.3 方案3 - 双方都使用非对称加密5.4 方案4 - 非对称加密 对称加密5.5 中间人攻击5.6 …

【深度学习】InST,Inversion-Based Style Transfer with Diffusion Models,论文

代码&#xff1a;https://github.com/zyxElsa/InST 论文&#xff1a;https://arxiv.org/abs/2211.13203 文章目录 AbstractIntroductionRelated WorkImage style transferText-to-image synthesisInversion of diffusion models MethodOverview ExperimentsComparison with Sty…

C++ 多进程学习总结

C多进程 进程间通信 消息队列 消息队列&#xff1a;提供一个种进程间发送/接收数据块&#xff08;常为结构体数据&#xff09;的方法。 函数接口 ftok()&#xff1a;获取消息队列键值msgget()&#xff1a;创建和访问消息队列msgsnd()&#xff1a;向消息队列发送数据msgrcv…

VSCode配置之C++ SQLite3极简配置方案

背景 最近在学习《深入应用C11: 代码优化与工程级应用》&#xff0c;其中第13章说到SQLite库&#xff0c;查询网上诸多教程&#xff0c;发现比较容易出现bug且配置较为麻烦&#xff0c;故记录此次简化版方案&#xff0c;以供参考。 软件环境 SQLite 3.42.0 版本&#xff08;仅…

Python 进阶(五):os 模块

❤️ 博客主页&#xff1a;水滴技术 &#x1f338; 订阅专栏&#xff1a;Python 入门核心技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; 文章目录 1. 文件和目录的基本操作1.1 获取当前工作目录1.2 更改当前工作目录1.3 获取目录下所有…

ffmpeg批量分割视频解决视频前几秒黑屏的问题解决

echo 请输入视频地址&#xff1a; set /p fp echo 请输入开始时间&#xff1a; set /p st echo 请输入结束时间&#xff1a; set /p et echo 请输入分片时间&#xff1a; set /p sgt echo 注意&#xff1a;循环范围参数要空格。 for /l %%i in (%st%, %sgt%, %et%) do call :aa…

redis启动失败,oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo

在redis文件夹下&#xff0c;启动redis正常。 但是加入到system后启动redis失败。 一直处于starting状态。 对比正常redis服务的配置之后&#xff0c;把redis.conf里的守护进程关掉就可以了&#xff08;但是没用system管理之前&#xff0c;直接./redis.server启动是可以的&…

35.图片幻灯片

图片幻灯片 html部分 <div class"carousel"><div class"image-container"><img src"./static/20180529205331_yhGyf.jpeg" alt"" srcset""><img src"./static/20190214214253_hsjqw.webp"…

Java 模块化Modularity- 了解与测试

1. java9后JDK后目录的变化 不见了jre,新增了jmods目录。 1&#xff09;为什么不见了jre&#xff1f; 新版JDK提供了 jlink工具&#xff0c;使用它构建一个包含jre镜像的应用程序。 就是可以打包一个引用程序内部已经包含完整或部分jre&#xff0c;可以直接运行。 2&#xf…

MP的开发流程

MP的开发流程 1、添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.ap…

【李宏毅 DLHLP 深度学习人类语言处理 HW1】

李宏毅 DLHLP 深度学习人类语言处理 HW1 相关资料HW1更多尝试1, 加深encoder:4层LSTM2, 加深encoder(4层LSTM)和加深decoder(2层LSTM)3, cnn代替vgg4, 再次加深decoder(4层LSTM) 语音小白在网上没有找到这门课的作业分享&#xff0c;那就记录一下自己的作业吧。 相关资料 课程…

基于SpringBoot+Vue的学习平台设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

tinkerCAD案例:23.Tinkercad 中的自定义字体

tinkerCAD案例&#xff1a;23.Tinkercad 中的自定义字体 原文 Tinkercad Projects Tinkercad has a fun shape in the Shape Generators section that allows you to upload your own font in SVG format and use it in your designs. I’ve used it for a variety of desi…