9.2-考试项目前端容器的高可用+java容器的高可用+使用docker-compose部署考试前端容器+使用docker-compose一次性创建多台容器

news2024/9/21 12:46:56

配置高可用的项目

基于部署考试系统的项目进行高可用

一、前端的高可用

1.先创建三个前端nginx容器,端口不能映射80

# 删除通用的前端容器
[root@haproxy ~]# docker ps --all
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                                                  NAMES
0f3ed10aa6fc   java:v0        "/bin/bash"               7 minutes ago    Up 7 minutes    0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              gracious_tharp
c9abaa798fcf   mysql:5.7.44   "docker-entrypoint.s…"   12 minutes ago   Up 12 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   focused_aryabhata

# 创建web01容器
[root@haproxy ~]# docker run -itd --name web01 -v /root/project_exam_system/web/dist/:/usr/share/nginx/html nginx:latest
9c40a2df1d7bc58f73737e8c84d0603e531f3e13173e6e25981f03fa5d9dda91

# 进到web01容器
[root@haproxy ~]# docker exec -it web01 /bin/bash

# 进行访问测试
root@9c40a2df1d7b:/# curl localhost
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
    <script type="module" crossorigin src="/assets/index-C4kAShR5.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-CSz7ARPP.css">
  </head>
  <body>
    <div id="app"></div>
  </body>
</html>

# ctrl + p + q 退出不中断
root@9c40a2df1d7b:/# read escape sequence

# 创建web02容器
[root@haproxy ~]# docker run -itd --name web02 -v /root/project_exam_system/web/dist/:/usr/share/nginx/html nginx:latest
1dc4276bdfcf974b1f1467e0c7225dcf880ee2da8e1b44caee06fce986f76e99

# 进到web02容器
[root@haproxy ~]# docker exec -it web02 /bin/bash

# 进行访问测试
root@1dc4276bdfcf:/# curl localhost
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
    <script type="module" crossorigin src="/assets/index-C4kAShR5.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-CSz7ARPP.css">
  </head>
  <body>
    <div id="app"></div>
  </body>
</html>

# ctrl + p + q 退出不中断
root@1dc4276bdfcf:/# read escape sequence

# 创建web03容器
[root@haproxy ~]# docker run -itd --name web03 -v /root/project_exam_system/web/dist/:/usr/share/nginx/html nginx:latest
cea53a5ef797bf2df312454cfb4344b6f21beb42125c20583ba686538a2be858

# 进到web03容器
[root@haproxy ~]# docker exec -it web03 /bin/bash

# 进行访问测试
root@cea53a5ef797:/# curl localhost
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
    <script type="module" crossorigin src="/assets/index-C4kAShR5.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-CSz7ARPP.css">
  </head>
  <body>
    <div id="app"></div>
  </body>
</html>

# ctrl + p + q 退出不中断
root@cea53a5ef797:/# read escape sequence

# 拉取haproxy镜像
[root@haproxy ~]# docker pull haproxy
Using default tag: latest
latest: Pulling from library/haproxy
Digest: sha256:3ab695ae94fb960da08947bb6d9ccb12e8237d7813c711beaf93a5310d150474
Status: Image is up to date for haproxy:latest
docker.io/library/haproxy:latest

# 使用haproxy镜像创建容器
[root@haproxy ~]# docker run -itd -p5000:5000 haproxy:latest /bin/bash
29e4a9f777f0fc6048e4f15b837b593732a96e1db2f6d428d4e732fea2158bbf

# 编辑haproxy.cfg文件
[root@haproxy ~]# vim haproxy.cfg 
# 这里是容器中的IP地址,由于配置的是轮询roundrobin,weight 权重其实没有生效
server web0 web01:80 check weight 1 maxconn 2000
server web1 web02:80 check weight 1 maxconn 2000
server web2 web03:80 check weight 1 maxconn 2000

# 将修改后的haproxy.cfg传到用haproxy创建的容器中
[root@haproxy ~]# docker cp /root/haproxy.cfg 29:/usr/local/etc/haproxy
Successfully copied 5.12kB to 29:/usr/local/etc/haproxy

# 挂载这个容器的终端
[root@haproxy ~]# docker attach 29

# 查看文件
haproxy@29e4a9f777f0:~$ ls /usr/local/etc/haproxy/haproxy.cfg 
/usr/local/etc/haproxy/haproxy.cfg

# 在容器中运行这个文件
haproxy@29e4a9f777f0:~$ haproxy -f /usr/local/etc/haproxy/haproxy.cfg 
[NOTICE]   (8) : haproxy version is 3.0.3-95a607c
[NOTICE]   (8) : path to executable is /usr/local/sbin/haproxy
[ALERT]    (8) : config : [/usr/local/etc/haproxy/haproxy.cfg:67] : 'server proxy-web/web0' : could not resolve address 'web01'.
[ALERT]    (8) : config : [/usr/local/etc/haproxy/haproxy.cfg:68] : 'server proxy-web/web1' : could not resolve address 'web02'.
[ALERT]    (8) : config : [/usr/local/etc/haproxy/haproxy.cfg:69] : 'server proxy-web/web2' : could not resolve address 'web03'.
[ALERT]    (8) : config : Failed to initialize server(s) addr.

2.使用浏览器访问:192.168.2.20

出现前端页面

3.使用haproxy对web容器进行高可用

# 删除之前使用haproxy创建的容器
[root@haproxy ~]# docker stop 29
29
[root@haproxy ~]# docker rm 29
29

# 创建使用haproxy高可用三个web前端的容器
[root@haproxy ~]# docker run -itd --link=web01 --link=web02 --link=web03 -p5000:5000 -v /root/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy:latest 
7848bd08f685cf69deb5cd01467ad7c4123b191617001eab100732e4368f0746
# -itd 交互 终端 后台
# link 锚定web容器
# v 将配置文件挂载到容器中 

# 查看创建的容器
[root@haproxy ~]# docker ps --all
CONTAINER ID   IMAGE            COMMAND                   CREATED              STATUS              PORTS                                                  NAMES
7848bd08f685   haproxy:latest   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp              suspicious_villani
7a0f856ed053   nginx:latest     "/docker-entrypoint.…"   8 minutes ago        Up 8 minutes        80/tcp                                                 web03
db4c5ce94e76   nginx:latest     "/docker-entrypoint.…"   8 minutes ago        Up 8 minutes        80/tcp                                                 web02
1d99e2005bd9   nginx:latest     "/docker-entrypoint.…"   8 minutes ago        Up 8 minutes        80/tcp                                                 web01
0f3ed10aa6fc   java:v0          "/bin/bash"               48 minutes ago       Up 48 minutes       0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              gracious_tharp
c9abaa798fcf   mysql:5.7.44     "docker-entrypoint.s…"   53 minutes ago       Up 53 minutes       0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   focused_aryabhata

4.浏览访问:192.168.2.20:5000

5.调用haproxy的监控界面

# 删除之前创建的容器
[root@haproxy ~]# docker stop 78
78
[root@haproxy ~]# docker rm 78
78

# 查看监控界面配置
[root@haproxy ~]# 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@haproxy ~]# docker run -itd --link=web01 --link=web02 --link=web03 -p5000:5000 -p8888:8888 -v /root/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy:latest 
cb32ed855f59a3bfd9770f93f3dce5c12b2fceff30e6b4b09bb8e39ae9cba735

# 查看创建的容器
[root@haproxy ~]# docker ps --all
CONTAINER ID   IMAGE            COMMAND                   CREATED              STATUS              PORTS                                                                                  NAMES
cb32ed855f59   haproxy:latest   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp, 0.0.0.0:8888->8888/tcp, :::8888->8888/tcp   happy_chatelet
7a0f856ed053   nginx:latest     "/docker-entrypoint.…"   20 minutes ago       Up 20 minutes       80/tcp                                                                                 web03
db4c5ce94e76   nginx:latest     "/docker-entrypoint.…"   20 minutes ago       Up 20 minutes       80/tcp                                                                                 web02
1d99e2005bd9   nginx:latest     "/docker-entrypoint.…"   21 minutes ago       Up 21 minutes       80/tcp                                                                                 web01
0f3ed10aa6fc   java:v0          "/bin/bash"               About an hour ago    Up About an hour    0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                              gracious_tharp
c9abaa798fcf   mysql:5.7.44     "docker-entrypoint.s…"   About an hour ago    Up About an hour    0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                                   focused_aryabhata

6.浏览器访问测试

(1)高可用后的前端页面

192.168.2.20:5000

(2)监控页面

192.168.2.20:8888/dbs

二、java容器的高可用

1.java容器的高可用

# 删除通用的java容器
[root@haproxy ~]# docker stop 0f
0f
[root@haproxy ~]# docker rm 0f
0f

# 查看目前的容器
[root@haproxy ~]# docker ps --all
CONTAINER ID   IMAGE            COMMAND                   CREATED             STATUS             PORTS                                                                                  NAMES
cb32ed855f59   haproxy:latest   "docker-entrypoint.s…"   5 minutes ago       Up 5 minutes       0.0.0.0:5000->5000/tcp, :::5000->5000/tcp, 0.0.0.0:8888->8888/tcp, :::8888->8888/tcp   happy_chatelet
7a0f856ed053   nginx:latest     "/docker-entrypoint.…"   24 minutes ago      Up 24 minutes      80/tcp                                                                                 web03
db4c5ce94e76   nginx:latest     "/docker-entrypoint.…"   24 minutes ago      Up 24 minutes      80/tcp                                                                                 web02
1d99e2005bd9   nginx:latest     "/docker-entrypoint.…"   24 minutes ago      Up 24 minutes      80/tcp                                                                                 web01
c9abaa798fcf   mysql:5.7.44     "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                                   focused_aryabhata

# 创建三个java容器
[root@haproxy ~]# docker run -itd --name java0 java:v0
beb08466361480064fac9e66426b679e0cb4b9dc00d624c5d90f689b75002b98
[root@haproxy ~]# docker run -itd --name java1 java:v0
7574e7d3756f5d2e5b06a718433b84027559d8c9b82d10c1be2639542541c819
[root@haproxy ~]# docker run -itd --name java2 java:v0
658ef09ab2fb35a0184a3d5f2f3548bf0fc29834a8db15184d7cf6f98a005a59

# 查看创建的容器
[root@haproxy ~]# docker ps --all
CONTAINER ID   IMAGE            COMMAND                   CREATED             STATUS             PORTS                                                                                  NAMES
658ef09ab2fb   java:v0          "/bin/bash"               37 seconds ago      Up 36 seconds                                                                                             java2
7574e7d3756f   java:v0          "/bin/bash"               40 seconds ago      Up 40 seconds                                                                                             java1
beb084663614   java:v0          "/bin/bash"               2 minutes ago       Up 2 minutes                                                                                              java0
cb32ed855f59   haproxy:latest   "docker-entrypoint.s…"   8 minutes ago       Up 8 minutes       0.0.0.0:5000->5000/tcp, :::5000->5000/tcp, 0.0.0.0:8888->8888/tcp, :::8888->8888/tcp   happy_chatelet
7a0f856ed053   nginx:latest     "/docker-entrypoint.…"   27 minutes ago      Up 27 minutes      80/tcp                                                                                 web03
db4c5ce94e76   nginx:latest     "/docker-entrypoint.…"   27 minutes ago      Up 27 minutes      80/tcp                                                                                 web02
1d99e2005bd9   nginx:latest     "/docker-entrypoint.…"   28 minutes ago      Up 28 minutes      80/tcp                                                                                 web01
c9abaa798fcf   mysql:5.7.44     "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                                   focused_aryabhata

# 修改haproxy.cfg配置文件
[root@haproxy ~]# vim haproxy.cfg 

# 在最后一行添加内容
listen proxy-java
        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 权重其实没有生效
        server web0 java0:8080 check weight 1 maxconn 2000
        server web1 java1:8080 check weight 1 maxconn 2000
        server web2 java2:8080 check weight 1 maxconn 2000
        #server MYSQL_3 192.168.130.102:3306 check weight 1 maxconn 2000
        # 使用keepalive检测死链
        # option tcpka
#########################################

# 查看5000端口有没有被占用
[root@haproxy ~]# netstat -lntup|grep 8888
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      22318/docker-proxy  
tcp6       0      0 :::8888                 :::*                    LISTEN      22323/docker-proxy

# 删除之前的web容器的高可用容器
[root@haproxy ~]# docker stop cb
cb
[root@haproxy ~]# docker rm cb
cb

# 5000端口没有被占用了
[root@haproxy ~]# netstat -lntup|grep 8888

# 创建web容器和java容器的高可用容器
[root@haproxy ~]# docker run -itd --link=web01 --link=web02 --link=web03 --link=java0 --link=java1 --link=java2 -p5000:5000 -p8080:8080 -p8888:8888 -v /root/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy:latest 
289cefc3caaf0154e54f75cc15d175d1b7d322b64fa0425f1a828e213397a478

2.监控界面显示java容器是红色的

是因为没有启动服务

3.将三个容器的服务全部启动

[root@haproxy ~]# docker attach java0
[root@beb084663614 /]# /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war 
read escape sequence
[root@haproxy ~]# docker attach java1
[root@7574e7d3756f /]# /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war 
read escape sequence
[root@haproxy ~]# docker attach java2
[root@658ef09ab2fb /]# /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war 
read escape sequence
[root@haproxy ~]#

4.浏览器访问测试

(1)进到考试页面:192.168.2.20:5000

(2)进入管理者页面:192.168.2.20:5000/#/admin

(3)haproxy的监控界面:192.168.2.20:8888

5.ab压力测试

# ab压力测试
[root@haproxy ~]# yum -y install httpd-tools

[root@haproxy ~]# ab -n 100 -c 10 http://192.168.2.20:5000/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.2.20 (be patient).....done


Server Software:        
Server Hostname:        192.168.2.20
Server Port:            5000

Document Path:          /
Document Length:        430 bytes

Concurrency Level:      10
Time taken for tests:   0.066 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      66300 bytes
HTML transferred:       43000 bytes
Requests per second:    1504.48 [#/sec] (mean)
Time per request:       6.647 [ms] (mean)
Time per request:       0.665 [ms] (mean, across all concurrent requests)
Transfer rate:          974.09 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       1
Processing:     1    5   3.0      4      16
Waiting:        1    5   3.0      3      16
Total:          1    5   3.0      4      16

Percentage of the requests served within a certain time (ms)
  50%      4
  66%      5
  75%      6
  80%      8
  90%     10
  95%     10
  98%     15
  99%     16
 100%     16 (longest request)

三、docker-compose 自动化部署

新机器:192.168.2.30

1.部署docker

# 编辑docker脚本
[root@docker ~]# vim docker.sh
cat << EOF | tee /etc/modules-load.d/k8s.conf 
overlay
br_netfilter
EOF

modprobe overlay

modprobe br_netfilter

cat << EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF

sysctl --system

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



yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# 运行docker脚本
[root@docker ~]# source docker.sh

# 编辑daemon.json文件
[root@docker ~]# 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"
    ]
}

# 修改docker.service文件
[root@docker ~]# vim /usr/lib/systemd/system/docker.service 
13	ExecStart=/usr/bin/dockerd

# 加载文件
[root@docker ~]# systemctl daemon-reload

# 重启docker服务
[root@docker ~]# systemctl start docker

2.安装pip

[root@docker ~]# yum -y install python2-pip

3.升级pip

[root@docker ~]# pip install --upgrade pip==20.3 -i https://mirrors.aliyun.com/pypi/simpl

4.安装docker-compose

[root@docker ~]# pip install docker-compose -i https://mirrors.aliyun.com/pypi/simple

5.创建pes目录以及子目录

[root@docker ~]# mkdir -p pes/{msyql,java,web}
[root@docker ~]# tree pes
pes
├── java
├── msyql
└── web

3 directories, 0 files

6.在pes目录下创建并且编辑docker-compose.yml文件

[root@docker ~]# cd pes
[root@docker pes]# vim docker-compose.yml 
version: "3"
services:
      web:
        container_name: web0
        image: nginx:latest
        ports:
        - "80:80"
        expose:
        - 80
        volumes:
        - ./web/src/dist/:/usr/share/nginx/html/
        restart: "always"

7.把之前部署的考试系统的web目录传过来

# 进到pes目录下
[root@docker ~]# cd pes

# 创建web/src目录
[root@docker pes]# mkdir -p web/src/

# 把之前部署的考试系统的web目录传到web/src/下
[root@docker pes]# scp -r 192.168.2.20:/root/project_exam_system/web/dist/ web/src
[root@docker pes]# ls
java  msyql  web
[root@docker pes]# cd web
[root@docker web]# ls
src

# 查看传过来的dist文件
[root@docker web]# ls src/dist/
assets  favicon.ico  index.html

8.docker-compose启动集群

# 拉取nginx镜像
[root@docker ~]# docker pull nginx:latest

# 查看镜像
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    5ef79149e0ec   2 weeks ago   188MB

# docker-compose启动集群
[root@docker pes]# docker-compose up -d
/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
Creating network "pes_default" with the default driver
Creating web0 ... done

# 查看用docker-compose创建的容器
[root@docker pes]# docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED              STATUS              PORTS                               NAMES
648da7c000f9   nginx:latest   "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, :::80->80/tcp   web0

9.浏览器访问:192.168.2.30(本机IP)

10.使用docker-compose一次性创建多台一样的容器

# 创建多台容器的语法
[root@docker pes]# docker-compose scale --help
Usage: scale [options] [SERVICE=NUM...]

# 编辑yml文件
# 创建相同的容器,不能同名,不可以映射相同的端口,所以注释掉这两行
[root@docker 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/
        restart: "always"
        
# 使用scale选项创建3台相同的web容器
[root@docker pes]# docker-compose up --scale web=3 -d
/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
Recreating web0 ... done
Creating pes_web_2 ... done
Creating pes_web_3 ... done

# 查看创建的容器
[root@docker pes]# docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS     NAMES
a84d833c496c   nginx:latest   "/docker-entrypoint.…"   32 seconds ago   Up 31 seconds   80/tcp    pes_web_3
5b59fb581bcb   nginx:latest   "/docker-entrypoint.…"   32 seconds ago   Up 31 seconds   80/tcp    pes_web_2
69b05e3cf0b4   nginx:latest   "/docker-entrypoint.…"   32 seconds ago   Up 32 seconds   80/tcp    pes_web_1

#docker-compose暂停集群
[root@docker 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_3 ... done
Stopping pes_web_2 ... done
Stopping pes_web_1 ... done

# 查看容器(空)
[root@docker pes]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

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

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

相关文章

数论——拓展欧几里德算法复习

最近也是在备战比赛&#xff0c;所以也是来小小的复习了一下以前学的东西 最重要的是第一道题&#xff01; 最重要的是第一道题&#xff01; 最重要的是第一道题&#xff01; 先放拓欧板子&#xff08;不懂怎么推出了就发在评论区或者私聊&#xff09; int exgcd(int a,i…

s3fs的使用

s3fs是一个将s3服务器上的桶映射为本地目录的程序。 项目源码位于&#xff1a; https://github.com/s3fs-fuse/s3fs-fuse 这是一个比较长期的项目了&#xff0c;现在在大数据领域S3协议基本上已经成为最通用的协议。 各大云平台&#xff0c;什么阿里云&#xff0c;某为云&am…

初识Linux · 有关makefile

目录 前言&#xff1a; 1 makefile的简单使用 2 makefile介绍 前言&#xff1a; 我们上文介绍了gcc和g的基本使用&#xff0c;带了许多的子指令&#xff0c;但是有的时候啊&#xff0c;一个一个敲指令确实有点麻烦了&#xff0c;此时&#xff0c;一个工具就能派上用场&…

DDD设计方法-3-仓储,封装持久化数据

前情提要&#xff1a;一共包含 如下六篇文章&#xff08;篇幅精简&#xff0c;快速入门&#xff09; 1、初识DDD 2、聚合、实体、值对象 3、仓储&#xff0c;封装持久化数据 4、端口和适配器 5、领域事件 6、领域服务&#xff0c;实现约定 DDD设计方法-3-仓储&#xff0c;封装…

计算机网络 第2章 物理层

文章目录 通信基础基本概念信道的极限容量编码与调制常用的编码方法常用的调制方法 传输介质双绞线同轴电缆光纤以太网对有限传输介质的命名规则无线传输介质物理层接口的特性 物理层设备中继器集线器一些特性 物理层任务&#xff1a;实现相邻节点之间比特&#xff08;0或1&…

后端MVC三层架构,Mybatis ,雪花算法生成唯一id

一.MVC MVC(Model View Controller)&#xff0c;它是一种思想&#xff0c;他把软件系统分为 以下三部分&#xff1a; Model(模型)&#xff1a;用来处理程序中数据逻辑的部分&#xff08;service&#xff0c;dao层&#xff09; View(视图)&#xff1a;在应用程序中&#xff0…

如何把逆地理编码结果表格的不同字段都作为点标注的属性

0.序 很多行业都需要获取一些地点的信息作为gis基础数据。 如消防行业的重点建筑 交通行业的道路 智慧城市的商业楼栋等等。 这些表格信息如何叠加到地图之上&#xff0c;并能够很好的查看各个字段的信息&#xff1f; 本文的重点是把经纬度坐标的Excel表格内容转成kml&…

【Python】数据分析分类图可视化

目录 条形图 箱形图 散点图 分簇散点图 小提琴 分簇小提琴 条形图 条形图是一种直观的图表形式&#xff0c;它通过不同长度的矩形条&#xff08;即“条形”&#xff09;来展示数值变量的中心趋势估计值&#xff0c;其中每个矩形的高度直接对应于该组数据的某个中心量度&…

保存json时,保存成自己喜欢的格式的方法(而不是直接保存成格式化的json文档)

保存json时&#xff0c;不是直接保存成格式化的json文档的格式的方法 前言&#xff0c;博主是如何把格式话的json格式保存成自己喜欢的json格式的保存成格式化的json文档的格式&#xff1a;带缩进格式全部保存成一行每条数据保存成一行&#xff1a; 保存成自己喜欢的格式碎碎念…

《Rust避坑入门记》第1章:挖数据竞争大坑的滥用可变性

赵可菲是一名Java程序员&#xff0c;一直在维护一个有十多年历史的老旧系统。这个系统即将被淘汰&#xff0c;代码质量也很差&#xff0c;每次上线都会出现很多bug&#xff0c;她不得不加班修复。公司给了她3个月的内部转岗期&#xff0c;如果转不出去就会被裁员。她得知公司可…

奇安信天眼--探针/分析平台部署及联动

奇安信天眼–探针/分析平台部署及联动 一 概述二 探针/分析平台部署及联动 1.网络拓扑2.配置流量传感器&#xff08;探针&#xff09; (1)登录控制台(2)配置接口(3)配置默认路由及DNS(4)配置SNMP(5)在探针联动分析平台 3.配置分析平台 (1)登录控制台(2)配置接口(3)配置默认路由…

2024年全国各省路网矢量数据介绍

一、2024年全国路网矢量数据介绍 数据更新时间&#xff1a;2024年5月 数据范围&#xff1a;全国&#xff08;不包含台湾省&#xff09; 数据格式&#xff1a;shp&#xff08;线&#xff09; 数据包含类型&#xff1a;城市主干道、城市次干道、城市快速路、城市支路、高速公…

Python编码系列—Python代码审查的艺术:提升代码质量的黄金法则

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

苹果录屏功能究竟何在?深入探寻苹果设备上的录屏功能:简便、高效、一键达成

在当下这一数字化的时代&#xff0c;不论是教学演示&#xff0c;还是游戏分享&#xff0c;抑或是工作汇报&#xff0c;录屏软件皆已成为我们日常生活中不可或缺之工具。苹果设备以其出类拔萃的用户体验而声名远播&#xff0c;而其内置的录屏功能更是将便捷性与功能性精妙融合。…

TensorFlow介绍二-线性回归案例

一.案例步骤 1.准备数据集&#xff1a;y0.8x0.7 100个样本 2.建立线性模型&#xff0c;初始化w和b变量 3.确定损失函数&#xff08;预测值与真实值之间的误差&#xff09;&#xff0c;均方误差 4.梯度下降优化损失 二.完整功能代码&#xff1a; import os os.environ[TF…

前端脚手架,自动创建远程仓库并推送

包含命令行选择和输入配置&#xff0c;远程仓库拉取模板&#xff0c;根据配置将代码注入模板框架的代码中&#xff0c;自动创建远程仓库&#xff0c;初始化git并提交至远程仓库&#xff0c;方便项目开发&#xff0c;简化流程。 目录结构 创建一个bin文件夹&#xff0c;添加ind…

KAN 学习 Day2 —— utils.py及spline.py 代码解读及测试

在KAN学习Day1——模型框架解析及HelloKAN中&#xff0c;我对KAN模型的基本原理进行了简单说明&#xff0c;并将作者团队给出的入门教程hellokan跑了一遍&#xff0c;今天我们直接开始进行源码解读。 目录 一、kan目录 二、utils.py 2.1 导入库和模块 2.2 逆函数定义 2.3 …

CentOS 7安装Docker详细步骤-无坑-丝滑-顺畅

一&#xff0c;安装软件包 yum install -y yum-utils device-mapper-persistent-data lvm2二&#xff0c;更换yum源为阿里源&#xff1a; yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 三&#xff0c;查看docker版本&…

标准库标头 <optional> (C++17)学习之optional

类模板 std::optional 管理一个可选 &#xfeff;的所含值&#xff0c;即既可以存在也可以不存在的值。 一种常见的 optional 使用情况是作为可能失败的函数的返回值。与如 std::pair<T, bool> 等其他手段相比&#xff0c;optional 可以很好地处理构造开销高昂的对象&a…

【科普】双轴测径仪是根据哪个测量值控制外径尺寸?

单轴测径仪与双轴测径仪都是自带闭环控制功能的在线外径测量设备&#xff0c;单轴测径仪只有一个测头&#xff0c;是根据该测头的检测数据进行控制&#xff0c;这点毋庸置疑&#xff0c;那双轴测径仪这种具备两组测头的设备又是如何控制的&#xff0c;本文就来简单的介绍一下。…