Linux——K8s pod调度

news2024/9/28 18:04:08
  1. rc/rs
  2. deployment  
  3. statefulset  
  4. daemonset
  5. job   |  cronjob     

访问pod中的应用:在pod已经处于running状态之下,客户端的请求如何到达pod中的应用?

  1. K8S 平台本身的网络架构设计:
    1. coredns 属于K8S核心组件,提供K8S集群内的名称解析,集群内所有有命名的资源都可以通过名称访问,实际名称和资源直接的对应关系由COREDNS解决。每一个pod在创建的时候,都会进行命名和划分IP地址,名称和IP地址都会在coredns进行注册。因为在K8S集群内部的访问,基本上都会使用名称来进行访问。
    2. CNI(容器网络插件):不同网络插件,提供不同的网络功能,部分插件的功能的重叠,不同插件彼此之间只要配置不冲突的话,就可以同时部署多个网络插件。在目前的实验环境下,使用的网络插件为flannel的插件。
    3. 前两点都是关于集群内部的pod如何通信,而真实客户端的请求不会直接从集群内发起,因此K8S还需要解决如何让集群外的客户访问到集群内的应用

为了符合K8S的网络架构,一般会出现三种不同的IP地址:

  1. nodeIP  节点的IP地址
  2. podIP pod对应的IP地址
  3. ClusterIP 集群IP地址。这个IP地址配合必要的路由策略,就可以让客户端的请求给到K8S集群内的pod中。

简单的K8S服务访问模型

service 暴露pod 相关实验过程:
[root@control ~]# docker pull quay.io/rnoushi/busyboxplus:curl
curl: Pulling from rnoushi/busyboxplus
a3ed95caeb02: Pull complete
72d86f26813c: Pull complete
f45cff1e8e73: Pull complete
Digest: sha256:4cd8ccdc346a1ccf22228f18e3a6bc2d21f81cfa6600023b3a3669ab3f432e88
Status: Downloaded newer image for quay.io/rnoushi/busyboxplus:curl
quay.io/rnoushi/busyboxplus:curl
[root@control ~]# kubectl run curl --image=radial/busyboxplus:curl --image-pull-policy=IfNotPresent -i --tty --rm
[root@control ~]docker save -o bsp.tar quay.io/rnoushi/busyboxplus
[root@control ~]# scp bsp.tar root@node1:/root
root@node1's password:
bsp.tar                                                                                                                                   100% 4645KB  50.6MB/s   00:00
[root@control ~]# scp bsp.tar root@node2:/root
root@node2's password:
bsp.tar                                                                    


[root@node1 ~]# ctr -n k8s.io   image import bsp.tar
unpacking quay.io/rnoushi/busyboxplus:curl (sha256:5ecd23315d7624d62020e3d3478127692446599944702b2be4e1f4                                                                                                              b5584af3a8)...done
[root@node1 ~]# ctr -n k8s.io   image tag quay.io/rnoushi/busyboxplus:curl docker.io/radial/busyboxplus:curl
docker.io/radial/busyboxplus:curl


[root@node2 ~]# ctr -n k8s.io   image import bsp.tar
unpacking quay.io/rnoushi/busyboxplus:curl (sha256:5ecd23315d7624d62020e3d3478127692446599944702b2be4e1f4                                                                                                              b5584af3a8)...done
[root@node2 ~]# ctr -n k8s.io   image tag quay.io/rnoushi/busyboxplus:curl docker.io/radial/busyboxplus:curl
docker.io/radial/busyboxplus:curl


[root@control ~]# kubectl delete deployments.apps my-nginx nginx-deployment
deployment.apps "my-nginx" deleted
deployment.apps "nginx-deployment" deleted
[root@control ~]# kubectl delete statefulsets.apps web
statefulset.apps "web" deleted
[root@control ~]# kubectl delete service
serviceaccounts  services
[root@control ~]# kubectl delete service nginx 
service "nginx" deleted
[root@control ~]#
[root@control ~]# kubectl get pods
NAME                   READY   STATUS      RESTARTS   AGE
hello-28790283-zvqdh   0/1     Completed   0          2m54s
hello-28790284-b7c9r   0/1     Completed   0          114s
hello-28790285-thfbv   0/1     Completed   0          54s
[root@control ~]# kubectl delete cronjobs.batch hello
cronjob.batch "hello" deleted

[root@control ~]# vim app1.yml
[root@control ~]# cat app1.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx:1.19.1
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80

[root@control ~]# kubectl apply -f app1.yml
deployment.apps/my-nginx created
[root@control ~]# kubectl get deployments.apps my-nginx
NAME       READY   UP-TO-DATE   AVAILABLE   AGE
my-nginx   2/2     2            2           17s
[root@control ~]# kubectl get pods -l run=my-nginx -o wide
NAME                        READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
my-nginx-74485854c4-4rt28   1/1     Running   0          85s   10.244.1.44   node1   <none>           <none>
my-nginx-74485854c4-7jx8t   1/1     Running   0          85s   10.244.2.55   node2   <none>           <none>
[root@control ~]# kubectl get pods -l run=my-nginx -o custom-columns=POD_IP:.status.podIPs
POD_IP
[map[ip:10.244.1.44]]
[map[ip:10.244.2.55]]
[root@control ~]# curl 10.244.1.44
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@control ~]# curl 10.244.2.55
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@control ~]# kubectl logs my-nginx-74485854c4-4rt28
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
10.244.0.0 - - [27/Sep/2024:06:12:05 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.76.1" "-"
[root@control ~]# kubectl logs my-nginx-74485854c4-7jx8t
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
10.244.0.0 - - [27/Sep/2024:06:12:10 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.76.1" "-"
[root@control ~]#
[root@control ~]# kubectl expose deployment/my-nginx
service/my-nginx exposed
[root@control ~]# kubectl get service
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP   10m
my-nginx     ClusterIP   10.101.191.194   <none>        80/TCP    8s
[root@control ~]# kubectl describe service my-nginx
Name:                     my-nginx
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 run=my-nginx
Type:                     ClusterIP
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.101.191.194
IPs:                      10.101.191.194
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
Endpoints:                10.244.2.55:80,10.244.1.44:80
Session Affinity:         None
Internal Traffic Policy:  Cluster
Events:                   <none>
[root@control ~]# curl 10.101.191.194
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@control ~]# curl 10.101.191.194
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@control ~]# kubectl logs my-nginx-74485854c4-7jx8t
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
10.244.0.0 - - [27/Sep/2024:06:12:10 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.76.1" "-"
10.244.0.0 - - [27/Sep/2024:06:18:43 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.76.1" "-"
[root@control ~]#
[root@control ~]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
my-nginx-74485854c4-4rt28   1/1     Running   0          13m
my-nginx-74485854c4-7jx8t   1/1     Running   0          13m
[root@control ~]# kubectl exec my-nginx-74485854c4-4rt28 -- printenv | grep SERVICE
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT=443
[root@control ~]# kubectl scale deployment my-nginx --replicas=0
deployment.apps/my-nginx scaled
[root@control ~]# kubectl scale deployment my-nginx --replicas=2
deployment.apps/my-nginx scaled
[root@control ~]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
my-nginx-74485854c4-87vhn   1/1     Running   0          7s
my-nginx-74485854c4-c7pgb   1/1     Running   0          7s
[root@control ~]# kubectl exec my-nginx-74485854c4-4rt28 -- printenv | grep SERVICE
Error from server (NotFound): pods "my-nginx-74485854c4-4rt28" not found
[root@control ~]# kubectl exec my-nginx-74485854c4-87vhn -- printenv | grep SERVICE
MY_NGINX_SERVICE_PORT=80
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT_HTTPS=443
MY_NGINX_SERVICE_HOST=10.101.191.194
[root@control ~]# kubectl run curl --image=radial/busyboxplus:curl -i --tty --rm
If you don't see a command prompt, try pressing enter.
[ root@curl:/ ]$ nslookup my-nginx
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      my-nginx
Address 1: 10.101.191.194 my-nginx.default.svc.cluster.local
[ root@curl:/ ]$ nslookup my-nginx.my-nginx
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

nslookup: can't resolve 'my-nginx.my-nginx'
[ root@curl:/ ]$ nslookup my-nginx
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      my-nginx
Address 1: 10.101.191.194 my-nginx.default.svc.cluster.local
[ root@curl:/ ]$ curl my-nginx
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[ root@curl:/ ]$ curl my-nginx
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[ root@curl:/ ]$ exit
Session ended, resume using 'kubectl attach curl -c curl -i -t' command when the pod is running
pod "curl" deleted

设置节点externalIP

此时为空

[root@control ~]# kubectl edit node node1

node/node1 edited

[root@control ~]# kubectl edit svc my-nginx

service/my-nginx edited
[root@control ~]# kubectl describe svc my-nginx
Name:                     my-nginx
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 run=my-nginx
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.101.191.194
IPs:                      10.101.191.194
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  32394/TCP   // 自动定义port
Endpoints:                10.244.2.56:80,10.244.1.45:80
Session Affinity:         None
External Traffic Policy:  Cluster
Internal Traffic Policy:  Cluster
Events:                   <none>

就可以从指定的32394端口访问到服务了

需要注意受限于实验环境,此时使用的IP依旧是内部IP而给外部IP ,尽管设置了。同事内部IP和外部IP一致也有可能导致网络错误,请避免这样配置。

[root@control ~]# curl 192.168.110.11:32394
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

日志记录:

[root@control ~]# kubectl logs deployments/my-nginx -f

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

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

相关文章

甄选范文“论软件的可靠性设计”,软考高级论文,系统架构设计师论文

论文真题 现代军事和商用系统中,随着系统中软件成分的不断增加,系统对软件的依赖性越来越强。软件可靠性已成为软件设计过程中不可或缺的重要组成部分。实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制,由此提出了可靠性设计…

05-成神之路_ambari_Ambari实战-013-代码生命周期-metainfo-configFiles详解

1.Redis 集群 metainfo.xml 示例 <?xml version"1.0"?> <metainfo><schemaVersion>2.0</schemaVersion><services><service><!-- Redis 集群服务的基本信息 --><name>REDIS</name><displayName>Redi…

告别选择困难症,这些AI高效工具正改变着500万创作者的工作方式

本文背景 有个小伙子叫李光头&#xff0c;最近他为了紧跟 AI 的潮流&#xff0c;下载了不少新玩意&#xff1a;用 GPT 来写文案&#xff0c;用 Midjourney 来画图。 可当他准备开始这周的工作时&#xff0c;却发现自己陷入了一种奇怪的困境&#xff1a;虽然有了很多 AI 工具&am…

解决在vue项目中index.html中直接引入Cesium.js时候报错:Cesium is not defined

在vue项目直接引入Cesium&#xff1a; 报错&#xff1a;Cesium is not defined 原因&#xff1a;eslint报错&#xff0c;找不到Cesium 这个全局变量。 解决&#xff1a;向ESLint规则中添加全局变量&#xff1a; 找到package.json文件&#xff0c;在eslintConfig里加入 "…

【JavaEE】——单例模式引起的多线程安全问题:“饿汉/懒汉”模式,及解决思路和方法(面试高频)

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯&#xff0c;你们的点赞收藏是我前进最大的动力&#xff01;&#xff01;希望本文内容能够帮助到你&#xff01; 目录 一&#xff1a;单例模式&#xff08;singleton&#xff09; 1&#xff1a;概念 二&#xff1a;“饿汉模…

CentOS 修改服务器登录密码的完整指南

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

众数问题,

在本实验中&#xff0c;需要编写一个程序来处理一组输入数据&#xff0c;找出其中的众数&#xff0c;即出现次数最多的数字。程序会读取文件中的数据进行处理&#xff0c;并将结果与标准答案进行比对&#xff0c;判断程序输出是否正确。 #include <bits/stdc.h> #define …

Spring-bean实例化的方式

前言 什么是bean的实例化&#xff1f; 通常我们使用spring管理java的对象&#xff0c;一般称这个java对象为一个实例化的bean。bean的实例化方式&#xff0c;实际上就是spring创建并管理java对象实例的方式 bean的实例化方式 在Java和Spring框架的上下文中&#xff0c;Bean的实…

测试用例的举例

1. 基于测试公式设计测试用例 通过功能&#xff0c;性能&#xff0c;安全性&#xff0c;界面&#xff0c;安全性&#xff0c;易用&#xff0c;兼容对于一个水杯进行测试用例的设计&#xff1b; 对于一个软件的测试用例设计&#xff1a; 功能&#xff1a;软件本质上能够用来干什…

京东健康高级项目经理段一凡受邀为第四届中国项目经理大会演讲嘉宾

全国项目经理专业人士年度盛会 京东健康技术产品部高级项目经理段一凡先生受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾&#xff0c;演讲议题为“项目经理如何做好资源管理——货币化资源管理实践”。大会将于10月26-27日在北京举办…

C++ | 定长内存池 | 对象池

文章目录 C | 定长内存池 | 对象池一、内存池的引入二、代码中的内存池实现 - ObjectPool类&#xff08;一&#xff09;整体结构&#xff08;二&#xff09;内存分配 - New函数&#xff08;三&#xff09;内存回收 - Delete函数 三、内存池在TreeNode示例中的性能测试演示四、脱…

文件和目录

文件和目录 获取文件属性 通过 ls 命令可以查看到文件的很多属性内容&#xff0c;这些文件属性的内容可以通过以下几个函数获取: #include <sys/types.h> #include <sys/stat.h> #include <unistd.h>int stat(const char *pathname, struct stat *statbuf…

第一节- C++入门

1. &#x1f680;&#x1f680;C关键字(C98) &#x1f33c;&#x1f33c;C总计63个关键字&#xff0c;C语言32个关键字 ps&#xff1a;下面我们只是看一下C有多少关键字&#xff0c;不对关键字进行具体的讲解。后面我们学到以后再细讲。 2. 命名空间 在C/C中&#xff0c;变量…

基于深度学习的学情智能监测系统设计与实现(PYQT+YOLOv8+训练数据集+论文+部署文档)

摘要 本文设计并实现了一个基于深度学习的学情智能监测系统&#xff0c;该系统通过对学生学习状态的自动监测与分析&#xff0c;旨在辅助教师更精准地把握学生学习情况&#xff0c;进而优化教学策略和提升教学质量。在论文中&#xff0c;详细描述了系统的设计与实现过程&#…

【web开发】Spring Boot 快速搭建Web项目(三)

Date: 2024.08.31 18:01:20 author: lijianzhan 简述&#xff1a;根据上篇原文Spring Boot 快速搭建Web项目&#xff08;二&#xff09;&#xff0c;由于已经搭建好项目初始的框架&#xff0c;以及自动创建了一个启动类文件&#xff08;TestWebApplication.java&#xff09; …

一种路径敏感的数据依赖分析算法

Falcon 1.方法1.1.Basic Rule1.2.改进算法1.3.跨函数分析 2.Evaluation2.1.设置2.2.value-flow分析2.3.Thin Slicing2.4.Bug Detection 参考文献 这篇工作发表于PLDI 24&#xff0c;提出了一种context- 以semi-path-sensitive的数据依赖分析算法&#xff0c;解决path-sensitive…

如何使用ssm实现基于web的山东红色旅游信息管理系统的设计与实现

TOC ssm716基于web的山东红色旅游信息管理系统的设计与实现jsp 绪论 1.1研究背景 从古到今&#xff0c;信息的录入&#xff0c;存储&#xff0c;检索都受制于社会生产力的发展&#xff0c;不仅仅浪费大量的人力资源还需要浪费大量的社会物资&#xff0c;并且不能长时间的保…

信息安全工程师(24)网络安全体系建设原则与安全策略

一、网络安全体系建设原则 网络空间主权原则&#xff1a;维护网络空间主权是网络安全的首要原则。这要求国家在网络空间的管理、运营、建设和使用等方面具有完全自主的权利和地位&#xff0c;不受任何外部势力的干涉和侵犯。网络安全与信息化发展并重原则&#xff1a;网络安全与…

Midjourney 使用教程——入门篇

目录标题 一、前提二、Midjourney 使用文档三、如何注册使用Midjourney四、结合GPT快速生成Midjourney 构图指令五、其他 一、前提 先连接国外代理服务器。没有的可以退下了。 二、Midjourney 使用文档 Discord 快速入门 注意&#xff1a;如图所示&#xff0c;需要10美刀一…

【HTML5】html5开篇基础(4)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…