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

# 创建脚本,可以在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 imagesREPOSITORY   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 imagesREPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx       v0       13ccc573fe05   9 seconds ago   189MB

3)创建java:v0镜像

[root@docker project_exam_system]# tree javajava
├── 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 imagesREPOSITORY   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.sql0 directories, 2 files
[root@docker mysql]# docker build -t mysql:v0 .[+] Building 0.3s (7/7) FINISHED                                             docker:default
[root@docker mysql]# docker imagesREPOSITORY   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 psCONTAINER 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 appbalance     roundrobinserver app1 172.17.0.2:80 checkserver app2 172.17.0.3:80 checkserver app3 172.17.0.4:80 check# 启动服务[root@docker ~]# haproxy -f /etc/haproxy/haproxy.cfg [root@docker ~]# netstat -lntup | grep 5000tcp        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 imagesREPOSITORY   TAG       IMAGE ID       CREATED       SIZE
haproxy     latest   4e5bebb0fd91   7 weeks ago   103MB# 该haproxy.cfg文件是在官方网站里下载下来的[root@docker ~]# vim haproxy.cfg 
# 只修改web的轮询模块即可,默认是5000端口,也可修改listen proxy-webbind 0.0.0.0:5000
......server web0 172.17.0.2:80 check weight 1 maxconn 2000server web1 172.17.0.3:80 check weight 1 maxconn 2000server web2 172.17.0.4:80 check weight 1 maxconn 2000[root@docker ~]# docker run -itd -p5000:5000 haproxy:latest /bin/bashfed2633b259b96d3c0ed5e9ca51c031c36b1e21361cb3cf9d57b9d49a9ea1710
[root@docker ~]# docker cp haproxy.cfg fed:/usr/local/etc/haproxySuccessfully copied 5.12kB to fed:/usr/local/etc/haproxy
[root@docker ~]# docker attach fedhaproxy@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:latest65466d3aef2566512b63690c02e4497ddb7594b8268a26136ec040e2cb858b3b
[root@docker ~]# docker psCONTAINER 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:8888mode http# URI相对地址stats uri /dbs# 统计报告格式stats realm Global\ statistics# 登录账户信息stats auth admin:123456
[root@docker ~]# vim haproxy.cfgserver web0 web0:80 check weight 1 maxconn 2000server web1 web1:80 check weight 1 maxconn 2000server 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:v0283c87bcaea166b017160aa84ce5424dd9baf3ec8fd168a1406f7dc11be3e694
[root@docker ~]# docker run -itd --name java1 java:v0e851f31c87f39c2d028e42b36bd77bcf818a8eb97c9a6cc002656fd1501c0ea6
[root@docker ~]# docker run -itd --name java2 java:v0fb94c87c4fa87d08b0d621157aa33ed74ca459beb32a3c950a7703227ab2f031
[root@docker ~]# vim haproxy.cfg 
# 复制一份proxy-web的模块,修改为java模块listen proxy-java# 修改端口为8080bind 0.0.0.0:8080mode http# 负载均衡算法# static-rr 权重, leastconn 最少连接, source 请求IP, 轮询 roundrobinbalance 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 2000server java1 java1:8080 check weight 1 maxconn 2000server 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:lateste5ea894c0f30988604cfd6fe5a48b9a69f14c2c3f2e373fe775c0554f37f19db

# 下载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.jsonvim /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# 升级pippip 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
└── web3 directories, 0 files
[root@compose ~]# cd pes
# 在项目目录中创建docker-compoce.yml文件[root@compose pes]# vim docker-compose.ymlversion: "3"services:
web:container_name: web0image: nginx:latestports:- "80:80"volumes:- ./web/src/dist/:/usr/share/nginx/html/expose:- 80restart: "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 nginxUsing default tag: latest# 执行docker compose命令创建指定容器[root@compose pes]# docker compose up -dWARN[0000] /root/pes/docker-compose.yml: `version` is obsolete 
[+] Running 1/1✔ Container web0 Started                                                   0.9s # 查看容器是否正常创建启动[root@compose pes]# docker psCONTAINER 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 --helpscale             Set number of containers for a service# 查看docker-compose scale的帮助文档[root@compose ~]# docker-compose scale --helpUsage: scale [options] [SERVICE=NUM...]# 一次性创建多台相同容器时,不能为容器启相同的名称,映射相同的端口,所以需要在yml文件中将这
两行注释掉[root@compose pes]# vim docker-compose.yml version: "3"services:web:#container_name: web0image: nginx:latest#ports:#- "80:80"volumes:- ./web/src/dist/:/usr/share/nginx/html/expose:- 80restart: "always"# 使用scale选项创建3台相同的web容器[root@compose pes]# docker compose up --scale web=3 -dWARN[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 psCONTAINER 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 ... doneStopping pes-web-3 ... doneStopping 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 ... doneRemoving pes-web-3 ... doneRemoving pes-web-2 ... doneRemoving network pes_default
[root@compose pes]# docker ps -aCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES

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

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

相关文章

HTTPS理论(SSL/TLS)

SSL安全套接层协议 为互联网通信提供加密和身份认证SSL3.0有漏洞,被TLS取代基于TCP的协议工作原理 握手:客户端hello;服务器hello(发送数字证书)(协商ssl版本,加密算法)数据传输连接…

gcc编译与Linux下的库

gcc与g编译 GCC:GCC是一个由GNU项目开发的多平台编译器,最初是为C语言设计的编译器,但随着时间的发展,它已经扩展到支持多种编程语言。它支持多种编程语言,包括C、C、Objective-C、Fortran、Ada和Go等。GCC是自由软件&…

【路径规划】在MATLAB中使用粒子群优化(PSO)进行最优移动机器人路径规划

摘要 本文介绍了使用粒子群优化(Particle Swarm Optimization, PSO)算法实现移动机器人的路径规划。PSO是一种基于群体智能的优化算法,通过模拟粒子群体在搜索空间中的迭代更新,找到全局最优路径。本文通过MATLAB仿真展示了PSO在…

惠中科技RDS自清洁膜层:光伏领域的绿色革命

惠中科技RDS自清洁膜层:光伏领域的绿色革命 在全球能源转型和光伏产业蓬勃发展的背景下,光伏电站的运营维护面临着诸多挑战,其中灰尘污染问题尤为突出。灰尘的堆积不仅降低了光伏板的透光率,还直接影响了电站的发电效率和经济效益…

【深度学习与NLP】——词嵌入Embedding技术

目录 1.词嵌入的作用 2.嵌入矩阵的计算 3.Embedding层的代码实验 词嵌入(Embedding)技术是一种将词汇映射到低维连续向量空间的方法。将离散的单词数据处理成连续且固定长度的向量,使模型可以学习和处理语义信息。 假设需要将["Are&…

数组和指针 笔试题(3)

目录 11.笔试题11 12.笔试题12 13.笔试题13 14.笔试题14 11.笔试题11 //笔试题11(难)int a[5][5];//创建25个int类//p[]1[]2[]3[]4[]5 []6[]7[]8[]9[]10 []11[]12[]13[]14[]15 []16(p[4])[][](p[4][2])[][] [][]&a…

小型防爆气象站是什么

在易燃易爆、危险系数高的工业环境中,小型防爆气象站犹如一位忠诚的安全守护者,默默守护着生产现场和人员的安全。它以其独特的防爆特性、精准的监测能力以及智能化的管理手段,成为了这些环境中不可或缺的安全屏障。 小型防爆气象站的核心优势…

量化交易面试:什么是Black-Scholes方程?

Black-Scholes方程是金融数学中的一个重要方程,用于计算欧式期权的理论价格。它由Fischer Black、Myron Scholes和Robert Merton在1970年代提出,并为他们赢得了诺贝尔经济学奖。以下是对Black-Scholes方程的详细解释: 基本概念: …

[数据集][目标检测]鲜花检测数据集VOC+YOLO格式25215张106类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):25215 标注数量(xml文件个数):25215 标注数量(txt文件个数):25215 标…

初试构建工具Webpack

文章目录 一、Webpack概述二、安装Webpack三、Webpack打包实战1、创建index.js2、创建index.html3、运行webpack4、浏览index.html5、添加第二个脚本(1)创建index2.js(2)修改index.js(3)重新运行 webpack&a…

AtomicIntegerArray使用、核心源码解析

1、API方法使用 构造方法 AtomicIntegerArray atomicIntegerArray1 new AtomicIntegerArray(100); 源码: private final int[] array; public AtomicIntegerArray(int var1) {this.array new int[var1]; }int[] array {10, 20, 30, 0, 0}; AtomicIntegerArray arr new At…

伦理学(Ethics)

讯飞星火 伦理学哲学是一门关于道德问题的科学,旨在系统化和理论化道德思想观点。作为一门独立的哲学分支学科,伦理学的本质是对道德现象进行研究,包括道德意识、道德行为以及道德规范现象等。 伦理学的研究对象广泛,涉及个人的…

驱动(RK3588S)第六课时:linux2.6的使用与GPIO子系统的使用

目录 一、Linux2.6 字符设备驱动编写框架1、合成一个完整的设备号函数2、从完整的设备号里提取主设备号3、动态申请设备号4、静态申请设备号5、释放申请的设备号6、Linux2.6 字符设备驱动的核心结构体7、初始化核心结构体8、向内核去申请 linux2.6 字符设备9、释放申请的设备10…

哈希 详解

目录 1. “哈希”是什么? 2. 哈希冲突 3. 哈希函数 3.1 设计原则 3.2 常见哈希函数 4. 解决哈希冲突的两种常见方法 4.1 闭散列 4.2 开散列 4.3 散列表的扩容问题 5. 哈希表的实现 并 封装模拟实现unordered系列容器 6. 哈希的应用 6.1 位图 -- bitset …

【js逆向专题】2.浏览器调试技巧

小节目标: 熟悉 开发者工具的使用熟悉 代码断点的方式熟悉 网页debugger实现方式 一. 浏览器开发者工具 1. element元素面板 展示浏览器渲染之后的页面 2. network网络面板 浏览器请求的数据都会加载在网络面板 3. console控制台面板 可以在控制台调试你对应的代码 4.…

3000字带你了解SD提示词用法,一点就通,小白轻松上手(附提示词生成器)(1.4 SD提示词运用)

提示词是什么 提示词是我们向AI模型发出的指令。正确的提示词能让AI准确反馈所需的输出,而优质的提示词则能使AI生成的内容更优质、更符合你的期望。这与编写程序代码颇为相似,准确的代码逻辑是程序正常运行的前提,而优秀的代码则能减少运行…

Vue基础概述

Vue框架概述 什么是Vue框架 Vue是一种流行的渐进式JavaScript框架,用于构建Web用户界面。它具有易学、轻量级、灵活性强、高效率等特点,并且可以与其他库和项目集成。是目前最流行的前端框架之一.框架的两种用法: 多页面应用: 在html页面中引入vue.js框…

全倒装共阴节能COB超微小间距LED显示屏主导新型显示技术

COB(Chip on Board)技术最早发源于上世纪60年代,是将LED芯片直接封装在PCB电路板上,并用特种树脂做整体覆盖。COB实现“点” 光源到“面” 光源的转换。点间距有P0.3、P0.4、P0.5、P0.6、P0.7、P0.9、P1.25、P1.538、P1.5625、P1.…

NanoPC-T6安装redriod笔记

这里主要用于自己对安装过程的记录,中间可能记录比较粗糙。 重新编译内核 参考链接:【环境搭建】基于linux的NanoPC-T6_LTS系统固件编译环境搭建 基于docker构建编译环境 docker run -it \ --privilegedtrue --cap-addALL \ --name nanopc_t6_lts_en…

ESP32!Thonny+MicroPython+ESP32开发环境搭建!!

准备工具: ThonnyMicroPythonESP32 一.Thonny安装 下载地址:Thonny, Python IDE for beginnershttps://thonny.org/ 二.下载esp32环境——根据型号下载 下载地址:MicroPython - Python for microcontrollershttps://micropython.org/dow…