云计算41——部署project_exam_system项目(续)

news2024/9/22 23:29:14

# 创建脚本,可以在java环境中运行任何的jar包或者war包
 
#!/bin/bash
 
/usr/local/jdk/bin/java -jar /java/src/*.?ar

一、思路分析
(1)nginx

1、下载镜像,将本地的dist项目的目录挂载在容器的/usr/share/nginx/html/ 2、启动容器

3、该项目是一个前后端分离的项目,并非所有的请求都是来自同一个位置,设置请求的时候还是需 要在hosts文件中挟持域名

4、域名是固定的,但是,域名可以绑定不同的ip 5、所以我们设置前端请求发送给一个bu.yuanyu.zhangmin的域名,然后在本机中将域名劫持给我 们的docker服务器,当我们发送请求给该域名时,docker服务器将给我们作出回应

(2)mysql

1、各个版本都有官方的镜像,直接下载docker pull mysql:5.7.44 2、启动容器的时候,挂载data目录

3、制作data的时候,顺⼿删除auto.cnf

(3)tomcat

1、被war包集成,所以我们直接启动war 2、springboot可以直接集成tomcat,build一个jar包或者是war包

3、我们没有安装tomcat 4、application.properties(将tomcat连接数据库)

1、可以配置端口

2、配置数据库的访问

5、使用/usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war启动,但是在启动这个任务时 一定要跳转到application.properties文件所在目录,因为在启动的同时,还需要加载applicaiton.properties

二、制作docker-compose.yml文件,实现一键部署
1、基础准备(保证基础镜像无问题)
1)下载基础镜像

[root@docker ~]# docker images
 
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx       latest   5ef79149e0ec   2 weeks ago   188MB
mysql        5.7.44   5107333e08a8   8 months ago   501MB
centos       latest   5d0da3dc9764   2 years ago   231MB
2)创建nginx:v0镜像

[root@docker project_exam_system]# tree web/
 
web/
├── dist
│?? ├── assets
│?? │?? ├── AdminView-yX0Ltz_1.js
│?? │?? ├── CategoryView-Ca4t3JNT.js
│?? │?? ├── CityView-0ESlUfo8.css
│?? │?? ├── CityView-BJTl06GN.js
......
│   ├── TeacherView-Cogr4CCq.js
│   │   ├── TopicView-DFXgxSyC.js
│   │   └── TopicView-Is6fJS__.css
│   ├── favicon.ico
│   └── index.html
└── Dockerfile
[root@docker web]# docker build -t nginx:v0 .
 
[+] Building 0.2s (7/7) FINISHED                                             
  docker:default
[root@docker ~]# docker images
 
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx       v0       13ccc573fe05   9 seconds ago   189MB

2)创建nginx:v0镜像

[root@docker project_exam_system]# tree web/
 
web/
├── dist
│?? ├── assets
│?? │?? ├── AdminView-yX0Ltz_1.js
│?? │?? ├── CategoryView-Ca4t3JNT.js
│?? │?? ├── CityView-0ESlUfo8.css
│?? │?? ├── CityView-BJTl06GN.js
......
│   ├── TeacherView-Cogr4CCq.js
│   │   ├── TopicView-DFXgxSyC.js
│   │   └── TopicView-Is6fJS__.css
│   ├── favicon.ico
│   └── index.html
└── Dockerfile
[root@docker web]# docker build -t nginx:v0 .
 
[+] Building 0.2s (7/7) FINISHED                                             
  docker:default
[root@docker ~]# docker images
 
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx       v0       13ccc573fe05   9 seconds ago   189MB

3)创建java:v0镜像

[root@docker project_exam_system]# tree java
 
java
├── application.properties
├── Dockerfile
├── java.sh
├── jdk
│   ├── bin
│   │   ├── jar
│   │   ├── jarsigner
│   │   ├── java
│   │   ├── javac
......
│   │       ├── rmiregistry.1
│   │       └── serialver.1
│   ├── README
│   └── release
├── jdk-17_linux-x64_bin.tar.gz
└── Project_ExamSystem-V1.0.0.war
[root@docker java]# docker build -t java:v0 .
 
[+] Building 7.2s (9/9) FINISHED                                             
  docker:default
[root@docker java]# docker images
 
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
java         v0       7fae85c42cbe   36 seconds ago   591MB

4)创建mysql:v0镜像

[root@docker project_exam_system]# tree mysql/
 
mysql/
├── Dockerfile
└── project_exam_system.sql
 
0 directories, 2 files
[root@docker mysql]# docker build -t mysql:v0 .
 
[+] Building 0.3s (7/7) FINISHED                                             
  docker:default
[root@docker mysql]# docker images
 
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mysql       v0       258d8ed442ac   16 seconds ago   512MB

5)启动nginx容器

[root@docker ~]# docker run -itd -p80:80 nginx:v0
6)启动java容器

[root@docker ~]# docker run -itd --name java -p8080:8080 java:v0
7)启动mysql容器

[root@docker ~]# docker run -itd --name mysql -p3306:3306 mysql:v0
8)查看容器状态

[root@docker ~]# docker ps
 
CONTAINER ID   IMAGE           COMMAND                   CREATED             
STATUS             PORTS                                                 
NAMES
79cc8614e967   mysql:v0         "docker-entrypoint.s…"   9 seconds ago       
Up 6 seconds       0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   
mysql
29d3ce68ceca   java:v0          "/usr/local/jdk/bin/…"   36 seconds ago     
Up 34 seconds      0.0.0.0:8080->8080/tcp, :::8080->8080/tcp             java
fed2633b259b   haproxy:latest   "docker-entrypoint.s…"   12 minutes ago     
Up 11 minutes      0.0.0.0:5000->5000/tcp, :::5000->5000/tcp             
wizardly_edison
 
# 之后这些容器可以全部直接删除
 
[root@docker ~]# docker rm -f 79(容器编号) 29(容器编号) fe(容器编号)

2、配置高可用的项目(使用haproxy调用web和java容器)
1)先创建三个前端项目(nginx容器)

容器在不映射端口时,在远程是无法访问nginx服务,而且现在也不希望外部直接访问nginx,希望 创建nginx服务的集群,这个集群被haproxy代理,创建3个nginx容器,创建一个haproxy服务器,而且

nginx容器还需要指定名称,web0、web1、web2。因为如果没有名称,那么容器就无法被haproxy link到。

# 端口不能映射80,并指定名称
 
[root@docker ~]# docker run -itd --name web0 nginx:v0 
 
45d83cda5bef619b937d25e581db31401841b955f9367dbffbc79a236e632612
[root@docker ~]# docker run -itd --name web1 nginx:v0 
 
b9c80deb9f08a4c2327c1784c8fdb3ab8044c48160ee29102f27e2b52495b9f4
[root@docker ~]# docker run -itd --name web2 nginx:v0 
 
5fbd082f529cdab21b3a2eb74ae6d9560c694fe2a5368e1ad63affe1ad1c93e8
 
# 查看容器状态
 
[root@docker ~]# docker ps 
 
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS   
      PORTS     NAMES
5fbd082f529c   nginx:v0   "/docker-entrypoint.…"   4 seconds ago   Up 3 
seconds    80/tcp   web2
b9c80deb9f08   nginx:v0   "/docker-entrypoint.…"   8 seconds ago   Up 6 
seconds    80/tcp   web1
45d83cda5bef   nginx:v0   "/docker-entrypoint.…"   12 seconds ago   Up 11 
seconds   80/tcp   web0
2)haproxy容器外部测试

在宿主机上安装了haproxy,编辑配置文件,代理三个nginx容器中的web服务,是直接添加容器的

ip地址

# 安装haproxy
 
[root@docker ~]# yum -y install haproxy
# 查看三个nginx容器的IP地址
 
[root@docker ~]# docker inspect 45 | grep IPA
 
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAMConfig": null,
                    "IPAddress": "172.17.0.2",
[root@docker ~]# docker inspect b9 | grep IPA
 
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAMConfig": null,
                    "IPAddress": "172.17.0.3",
[root@docker ~]# docker inspect 5f | grep IPA
 
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.4",
                    "IPAMConfig": null,
                    "IPAddress": "172.17.0.4",
 
# 修改配置文件
 
[root@docker ~]# vim /etc/haproxy/haproxy.cfg
# 注释静态资源
 
   # use_backend static         if url_static
# 修改轮询模块
 
backend app
   balance     roundrobin
   server app1 172.17.0.2:80 check
   server app2 172.17.0.3:80 check
   server app3 172.17.0.4:80 check
 
# 启动服务
 
[root@docker ~]# haproxy -f /etc/haproxy/haproxy.cfg 
 
[root@docker ~]# netstat -lntup | grep 5000
 
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN   
   1985/haproxy 
 
# 测试访问过后可以直接删除进程来停止服务
 
[root@docker ~]# kill -9 1985(进程号)
 
[root@docker ~]# netstat -lntup | grep 5000

3)创建haproxy容器

创建一个haproxy容器,将配置文件导入到容器,在容器中启动haproxy,也是可以的

# 拉取haprxy镜像
 
[root@docker ~]# docker pull haproxy
 
[root@docker ~]# docker images
 
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
haproxy     latest   4e5bebb0fd91   7 weeks ago   103MB
 
# 该haproxy.cfg文件是在官方网站里下载下来的
 
[root@docker ~]# vim haproxy.cfg 
# 只修改web的轮询模块即可,默认是5000端口,也可修改
 
listen proxy-web
       bind 0.0.0.0:5000
......
       server web0 172.17.0.2:80 check weight 1 maxconn 2000
 server web1 172.17.0.3:80 check weight 1 maxconn 2000
 
       server web2 172.17.0.4:80 check weight 1 maxconn 2000
 
[root@docker ~]# docker run -itd -p5000:5000 haproxy:latest /bin/bash
 
fed2633b259b96d3c0ed5e9ca51c031c36b1e21361cb3cf9d57b9d49a9ea1710
[root@docker ~]# docker cp haproxy.cfg fed:/usr/local/etc/haproxy
 
Successfully copied 5.12kB to fed:/usr/local/etc/haproxy
[root@docker ~]# docker attach fed
 
haproxy@fed2633b259b:~$ ls /usr/local/etc/haproxy/haproxy.cfg 
/usr/local/etc/haproxy/haproxy.cfg
 
# 启动服务
 
haproxy@fed2633b259b:~$ haproxy -f /usr/local/etc/haproxy/haproxy.cfg 

4)使用haproxy容器调用web容器

# -itd 交互 终端 后台
 
# link 锚定web容器
 
# v 将配置文件挂载到容器中
 
[root@docker ~]# docker run -itd --link web0 --link web1 --link web2 -
p5000:5000 -v /root/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg 
haproxy:latest
 
65466d3aef2566512b63690c02e4497ddb7594b8268a26136ec040e2cb858b3b
[root@docker ~]# docker ps
 
CONTAINER ID   IMAGE           COMMAND                   CREATED         
STATUS         PORTS                                                 NAMES
65466d3aef25   haproxy:latest   "docker-entrypoint.s…"   6 seconds ago   Up 4 
seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp             
romantic_curie
79cc8614e967   mysql:v0         "docker-entrypoint.s…"   2 hours ago     Up 2 
hours     0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
29d3ce68ceca   java:v0          "/usr/local/jdk/bin/…"   3 hours ago     Up 3 
hours     0.0.0.0:8080->8080/tcp, :::8080->8080/tcp             java
5fbd082f529c   nginx:v0         "/docker-entrypoint.…"   4 hours ago     Up 4 
hours     80/tcp                                                 web2
b9c80deb9f08   nginx:v0         "/docker-entrypoint.…"   4 hours ago     Up 4 
hours     80/tcp                                                 web1
45d83cda5bef   nginx:v0         "/docker-entrypoint.…"   4 hours ago     Up 4 
hours     80/tcp                                                 web0
 
# 删除该haproxy容器(使用的是ip地址,要改为使用域名才可以进行link)
 
[root@docker ~]# docker rm -f 65

 

5)调用haproxy的监控界面(并改ip轮询为域名轮询)

# 只查看即可,创建haproxy服务器容器时将相应端口映射出去就行,记得初始的账户和密码
 
[root@docker ~]# vim haproxy.cfg 
######## 监控界面配置 #################
 
listen admin_status
        # 监控界面访问信息
 
       bind 0.0.0.0:8888
       mode http
        # URI相对地址
 
       stats uri /dbs
        # 统计报告格式
 
       stats realm Global\ statistics
        # 登录账户信息
 
       stats auth admin:123456
[root@docker ~]# vim haproxy.cfg
 
       server web0 web0:80 check weight 1 maxconn 2000
 
       server web1 web1:80 check weight 1 maxconn 2000
 
       server web2 web2:80 check weight 1 maxconn 2000
 
[root@docker ~]# docker run -itd --link web0 --link web1 --link web2 -
p5000:5000 -p8888:8888 -v 
/root/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy:latest
# 删除该haproxy容器
 
[root@docker ~]# docker rm -f 8af

  

6)使用haproxy容器调用java容器

[root@docker ~]# docker run -itd --name java0 java:v0
 
283c87bcaea166b017160aa84ce5424dd9baf3ec8fd168a1406f7dc11be3e694
[root@docker ~]# docker run -itd --name java1 java:v0
 
e851f31c87f39c2d028e42b36bd77bcf818a8eb97c9a6cc002656fd1501c0ea6
[root@docker ~]# docker run -itd --name java2 java:v0
 
fb94c87c4fa87d08b0d621157aa33ed74ca459beb32a3c950a7703227ab2f031
[root@docker ~]# vim haproxy.cfg 
# 复制一份proxy-web的模块,修改为java模块
 
listen proxy-java
 
# 修改端口为8080
 
       bind 0.0.0.0:8080
       mode http
        # 负载均衡算法
 
        # static-rr 权重, leastconn 最少连接, source 请求IP, 轮询 roundrobin
 
       balance roundrobin
        # 日志格式
 
       option tcplog
        # 在 mysql 创建一个没有权限的haproxy用户,密码为空。 haproxy用户
 
        # create user 'haproxy'@'%' identified by ''; FLUSH PRIVILEGES;
 
        #option mysql-check user haproxy
 
         # 这里是容器中的IP地址,由于配置的是轮询roundrobin,weight 权重其实没有生效
 
# 修改域名为java域名,端口为java端口
 
       server java0 java0:8080 check weight 1 maxconn 2000
 
       server java1 java1:8080 check weight 1 maxconn 2000
 
       server java2 java2:8080 check weight 1 maxconn 2000
 
        #server MYSQL_3 192.168.130.102:3306 check weight 1 maxconn 2000
 
        # 使用keepalive检测死链
 
        # option tcpka
 
[root@docker ~]# docker run -itd --link web0 --link web1 --link web2 --link 
java0 --link java1 --link java2 -p8080:8080 -p5000:5000 -p8888:8888 -v 
/root/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy:latest
 
e5ea894c0f30988604cfd6fe5a48b9a69f14c2c3f2e373fe775c0554f37f19db

 # 下载http-tools,使用ab测试承载量
 
[root@docker ~]# yum -y install http-tools
 
[root@docker ~]# ab -n 100 -c 10 http://10.0.0.7:5000/

  

3、编辑docker-compose.yml文件,一键部署完整项目
新机子:

1)docker-compose环境准备

# 配置docker环境
 
source docker.sh
scp 10.0.0.7:/etc/docker/daemon.json /etc/docker/daemon.json
 
vim /etc/docker/daemon.json 
{       
        "registry-mirrors" : [
                "https://do.nark.eu.org",
                "https://dc.j8.work",
                "https://docker.m.daocloud.io",
                "https://dockerproxy.com",
                "https://docker.mirrors.ustc.edu.cn",
                "https://docker.nju.edu.cn"
 
       ]
}  
systemctl start docker
 
# 安装pip(python包管理器)
 
yum -y install python2-pip
 
# 升级pip
 
pip install --upgrade pip==20.3  -i https://mirrors.aliyun.com/pypi/simple
 
# 安装docker-compose
 
[root@compose ~]# pip install docker-compose --ignore-installed requests -i 
https://mirrors.aliyun.com/pypi/simple
2)使用compose构建自动化部署文件

# 创建项目目录
 
[root@compose ~]# mkdir -p pes/{java,mysql,web}
 
[root@compose ~]# tree pes/
 
pes/
├── java
├── mysql
└── web
 
3 directories, 0 files
[root@compose ~]# cd pes
# 在项目目录中创建docker-compoce.yml文件
 
[root@compose pes]# vim docker-compose.yml
 
version: "3"
 
services:
web:
               container_name: web0
               image: nginx:latest
               ports:
                - "80:80"
 
               volumes:
                - ./web/src/dist/:/usr/share/nginx/html/
               expose:
                - 80
 
                restart: "always"
 
#       mysql:
#               container_name: mysql0
#               image: mysql:5.7.44
#       java:
#               container_name: java0
#               image: java:v0
 
[root@compose pes]# mkdir -p web/src/
 
[root@compose pes]# scp -r 10.0.0.7:/root/project_exam_system/web/dist 
web/src/
 
[root@compose pes]# ls web/src/
 
dist
 
# 拉取nginx镜像
 
[root@compose pes]# docker pull nginx
 
Using default tag: latest
 
# 执行docker compose命令创建指定容器
 
[root@compose pes]# docker compose up -d
 
WARN[0000] /root/pes/docker-compose.yml: `version` is obsolete 
[+] Running 1/1
 ✔ Container web0 Started                                                   
             0.9s 
 # 查看容器是否正常创建启动
 
[root@compose pes]# docker ps
 
CONTAINER ID   IMAGE         COMMAND                   CREATED             
STATUS             PORTS                               NAMES
5a007ca2fdbe   nginx:latest   "/docker-entrypoint.…"   About a minute ago   
Up About a minute   0.0.0.0:80->80/tcp, :::80->80/tcp   web0

 

3)使用docker compose一次性创建多台完全一样的容器

# 查看docker-compose的帮助文档
 
[root@compose ~]# docker-compose --help
 
scale             Set number of containers for a service
 
# 查看docker-compose scale的帮助文档
 
[root@compose ~]# docker-compose scale --help
 
Usage: scale [options] [SERVICE=NUM...]
 
# 一次性创建多台相同容器时,不能为容器启相同的名称,映射相同的端口,所以需要在yml文件中将这
两行注释掉
 
[root@compose pes]# vim docker-compose.yml 
 
version: "3"
 
services:
       web:
                #container_name: web0
 
               image: nginx:latest
                #ports:
 
                #- "80:80"
 
               volumes:
                - ./web/src/dist/:/usr/share/nginx/html/
               expose:
                - 80
 
                restart: "always"
 
# 使用scale选项创建3台相同的web容器
 
[root@compose pes]# docker compose up --scale web=3 -d
 
WARN[0000] /root/pes/docker-compose.yml: `version` is obsolete 
[+] Running 3/3
 ✔ Container pes-web-3 Started                                             
              0.8s 
 ✔ Container pes-web-1 Started                                             
              0.5s 
 ✔ Container pes-web-2 Started                                             
              1.1s
 
# 查看容器列表
 
[root@compose ~]# docker ps
 
CONTAINER ID   IMAGE         COMMAND                   CREATED         
STATUS         PORTS     NAMES
dd63d63e1ced   nginx:latest   "/docker-entrypoint.…"   29 minutes ago   Up 29 
minutes   80/tcp   pes_web_2
12edb14dfae7   nginx:latest   "/docker-entrypoint.…"   29 minutes ago   Up 29 
minutes   80/tcp   pes_web_1
89fa62180f85   nginx:latest   "/docker-entrypoint.…"   29 minutes ago   Up 29 
minutes   80/tcp   pes_web_3
 
# docker-compose暂停集群
 
[root@compose ~]# cd pes/
 
[root@compose pes]# docker-compose stop
 
/usr/lib/python2.7/site-packages/paramiko/transport.py:33: 
CryptographyDeprecationWarning: Python 2 is no longer supported by the Python 
core team. Support for it is now deprecated in cryptography, and will be 
removed in the next release.
 from cryptography.hazmat.backends import default_backend
Stopping pes-web-1 ... done
 
Stopping pes-web-3 ... done
 
Stopping pes-web-2 ... done
 
[root@compose pes]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES
 
# docker-compose移除集群
 
[root@compose pes]# docker-compose down
 
/usr/lib/python2.7/site-packages/paramiko/transport.py:33: 
CryptographyDeprecationWarning: Python 2 is no longer supported by the Python 
core team. Support for it is now deprecated in cryptography, and will be 
removed in the next release.
 from cryptography.hazmat.backends import default_backend
Removing pes-web-1 ... done
 
Removing pes-web-3 ... done
 
Removing pes-web-2 ... done
 
Removing network pes_default
[root@compose pes]# docker ps -a
 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES

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

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

相关文章

关于电力系统的几个疑问

非电力专业人员对于电力中的某些知识不能够形成系统的认识,接下有空也有补充下这方面知识,吹水时候才有水可以吹,嘻嘻!这里舍不得删掉下边chatgpt这几张图片,暂时先保留着。因为一直有个因为在电网里边用发电端和用电端…

【笔试强训】—— BM1 反转链表

🌏博客主页:PH_modest的博客主页 🚩当前专栏:笔试强训 💌其他专栏: 🔴每日一题 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮,缓称…

【从头写CAD】3 长度类

文章目录 一、说明二、源码三、运行和调试结果 一、说明 长度的国际单位是“米”(符号“m”),常用单位有毫米(mm)、厘米(cm)、分米(dm)、千米(km&#xff09…

装WebVideoCreator记录

背景,需要在docker容器内配置WebVideoCreator环境,配置npm、node.js https://github.com/Vinlic/WebVideoCreatorWebVideoCreator地址:https://github.com/Vinlic/WebVideoCreator 配置环境,使用这个教程: linux下安…

非负矩阵分解

非负矩阵分解 简单来说,就是一个数据矩阵X,也可以理解为特征矩阵,将这个矩阵分解为两个非负矩阵W和H的乘积。 公式可以写成下面: 这里的m和n就是特征的维度,r表示代码中n_components参数 来看个例子: 看看…

office套件打开时 提示操作系统当前的配置不能运行此应用程序

起因使用了腾讯电脑管家的软件搬家功能。 许久后发现打开word提示。 随后使用软件搬家功能中的搬移历史中还原office套件。 依然不可用(未尝试重启 大概率重启之后就可以用了 使用的电脑不方便重启) 安装office简易修复工具 地址:https://a…

C++相关概念和易错语法(31)(特殊类的设计、new和delete底层调用分析)

特殊类的设计 在实践过程中,我们难免会接触到一些需要实现特定功能的类。像之前提过的unique_ptr就是直接delete拷贝构造和赋值函数。下面会分享一些常见的特殊类的实现 1、防拷贝和防赋值 通过封死拷贝构造和赋值函数来保护对象里面内容不被复制。如果对象里面的…

JS 对象深浅拷贝

1. 浅拷贝的原理和实现 自己创建一个新的对象,来接受你要重新复制或引用的对象值。如果对象属性是基本的数据类型,复制的就是基本类型的值给新对象;但如果属性是引用数据类型,复制的就是内存中的地址,如果其中一个对象…

从0开始学杂项 第八期:流量分析(2) 数据提取

Misc 学习(八) - 流量分析:数据提取 这一期,我们主要写一下如何进行比较繁多的数据的提取。 使用 Tshark 批量提取数据 有时候,我们会需要从多个包中提取数据,然后再进行截取和组合,比如分析…

千云物流 -低代码平台MySQL备份数据

windows备份 全量备份 创建备份目录 需要在安装数据库的服务器上创建备份目录,所有如果要做备份至少需要两倍的硬盘空间, mkdir D:\mysql_backup\full_backup准备备份脚本 创建一个windows批处理文件(例如 full_backup.bat),用来执行全量备份并使用 robocopy 将备份文件…

HTTP 一、基础知识

一、概述 1、概述 HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP 是一种应用层协议,是基于 …

VUE3 使用 <transition> 实现组件切换的过渡效果

由于我想在项目中实现路由组件切换时的平滑过渡效果&#xff0c;以避免页面加载时的突兀感&#xff0c;大致效果如下&#xff1a; 上面的代码是使用的若依的代码&#xff0c;代码具体如下所示&#xff1a; <section class"app-main"><transition name&quo…

HarmonyOS开发移动应用:调用百度翻译开放平台的App Id和密钥

介绍 通过http请求和HarmonyOS自带的加密框架&#xff0c;可以为移动应用实现调用百度翻译API的功能。 开发环境要求 • DevEco Studio版本&#xff1a;DevEco Studio 3.1 Release • HarmonyOS SDK版本&#xff1a;API version 9 工程要求 • API9 • Stage模型 正文 ▍代码…

QT+OSG+osg-earth显示一个球

目录 1、环境配置 2、在QT Creator导入相关的库 3、代码部分 4、运行过程中的问题 5、相关参考 重要衔接&#xff1a;QTOSG显示一个三维模型-CSDN博客 1、环境配置 系统&#xff1a;windows10系统 QT:版本5.15.2 编译器&#xff1a;MSVC2019_64bit 编辑器…

Conda在线/离线迁移虚拟环境

conda简单使用 1.创建环境&#xff1a; conda create -n myenv python3.82.激活环境 conda activate myenv3.退出环境 conda deactivate4.安装包 pip install xxx5.列出所有环境 conda env list conda info --envs6.删除环境 conda remove -n myenv --all离线迁移conda …

GD32F103单片机-概述和工程建立

GD32F103单片机-概述和工程建立 一、GD32F103单片机介绍1.1 GD32F103C8T6引脚1.2 GD32F103C8T6系统架构和启动配置1.3 GD32F103C8T6时钟树 二、GD32F103工程建立 一、GD32F103单片机介绍 GD32F103系列由是由国内公司兆易创新生产的基于Arm Cortex-M3处理器的单片机位数&#x…

陪诊志愿服务正在开展,喜鹊医疗打造国内首家陪诊聚合平台

2024年8月&#xff0c;为了培养一支专业、合格的陪诊志愿服务队伍&#xff0c;为志愿者提供就业帮扶&#xff0c;也满足社会日益增长的健康需求。由喜鹊医疗捐赠专项资金&#xff0c;中国民族卫生协会联合中国志愿基金会共同开展“健康中国行&#xff0c;陪诊惠民工程——陪诊志…

django学习入门系列之第十点《django中数据库操作--创建与删除表》

文章目录 django创建与删除表开始创建表创建指令新增表删除表删除列新增列修改报错提示语言总结 往期回顾 django创建与删除表 删除表 创建表 修改表 操作目录 开始创建表 class text_into(models.Model):name models.CharField(max_length32)password models.CharField…

二手手机回收小程序搭建,小程序功能特点

随着社会生活水平的提高&#xff0c;对手机的更新换代的速度也在逐渐加快&#xff0c;出现了大量的闲置手机&#xff0c;而这也给手机回收市场带来了巨大的发展空间&#xff01; 目前&#xff0c;手机回收市场进入到了发展快速期&#xff0c;吸引了越来越多的企业加入大市场中…

java重点学习-spring

三 spring 3.1 Spring框架中的单例bean是线程安全的吗? 不是线程安全的 Spring框架中有一个Scope注解&#xff0c;默认的值就是singleton&#xff0c;单例的。 因为一般在spring的bean的中都是注入无状态的对象&#xff0c;没有线程安全问题&#xff0c;如果在bean中定义了…