培训第三十六天(docker应用,mysql容器应用,容器核对时间,容器之间的依赖 域名,文件联合系统,制作基础镜像,commit制作镜像)

news/2024/9/18 23:09:25/ 标签: docker, mysql, 容器, overlay, commit

上午

容器就是在镜像上添加了一个可写层

 # 从镜像库中下载mysql镜像,mysql镜像是在基础镜像上加很多层制成的[root@docker ~]# docker pull mysqlUsing default tag: latestlatest: Pulling from library/mysql6e839ac3722d: Pull complete ad912193ad5f: Pull complete 25d13d87fd8d: Pull complete 004d383c75ef: Pull complete 6d9bbc82a0b8: Pull complete 81fec07ea550: Pull complete 83357cb2d3a5: Pull complete 8ffe968b82c1: Pull complete 30dfd9a7ed57: Pull complete 35844ae33cbe: Pull complete Digest: sha256:86cdfe832c81e39a89cfb63c3fde1683c41cc00ef91e67653c9c1df0ba80f454Status: Downloaded newer image for mysql:latestdocker.io/library/mysql:latest[root@docker ~]# docker imagesmysql        latest    a82a8f162e18   4 weeks ago   586MBcentos       latest    5d0da3dc9764   2 years ago   231MB

回顾:

创建容器docker run -it --name a1 centos:latest /bin/bash

查看容器docker ps(查看正在up的容器

docker ps -a(查看所有的容器

切回宿主机:ctrl p q

启动容器docker start a1

停止容器docker stop a1

删除容器docker rm a1

docker rm -f a1(强制删除容器

如果容器正在运行,容器是无法删除的,如果容器没有删除,对应的镜像也无法删除

镜像的迁移:

save:docker save -o centos.tar centos:latest

load:docker load -i centos.tar

生成镜像:

export(通过容器生成tar包):docker export -o centos_httpd.tar a1

import(通过tar引入镜像):docker import -m httpd centos_httpd.tar centos:https

获得镜像的ip地址:

1、进入镜像的bash:yum -y install iprouter,net-tools

2、使用exec指令:dockers exec a1 yum -y install iprouter,net-tools

docker exec a1 ip add

3、直接使用inspect命令:docker inspoct a1

端口映射 -p:

docker run -it --name a2 -p80:80 centos:latest /bin/bash

docker run -it --name a2 -p80 centos:latest /bin/bash 宿主会指定一个大于32767的端口给容器

docker ps -a 查看实际给予的端口

docker run -it --name a2 -p10.0.0.101::80 centos:latest /bin/bash

数据持久化:

docker run -it --name a2 -v /zhenji:/rongqi centos:latest /bin/bash

1、使用容器部署一个考试项目

 # 1、将资源上传到服务器[root@docker ~]# yum -y install unzip[root@docker ~]# unzip project_exam_system.zip [root@docker ~]# lsproject_exam_system.sqlapplication.properties Project_ExamSystem-V1.0.0.wardist # 2、创建基础镜像[root@docker ~]# systemctl  start docker.service[root@docker ~]# docker pull centos[root@docker ~]# docker run -it --name a0 centos:latest /bin/bash# 3、在容器中修改yum源[root@d02d68df46ac /]# rm -rf /etc/yum.repos.d/*[root@d02d68df46ac /]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo[root@d02d68df46ac /]# yum clean all && yum makecache# 4、在容器中安装epel[root@d02d68df46ac /]# yum -y install epel-release# 5、在容器中安装nginx[root@d02d68df46ac /]# yum -y install nginx# 6、ctrl p q退出容器[root@d02d68df46ac /]# read escape sequence# 7、导出tar包[root@docker ~]# docker export -o centos_nginx.tar a0# 8、引入tar包,成为镜像[root@docker ~]# docker import -m "nginx" centos_nginx.tar centos:nginx# 9、查看镜像[root@docker ~]# docker images# 10、删除容器[root@docker ~]# docker rm -f a0# 11、创建新的容器,在创建的同时指定端口,以及挂载目录[root@docker ~]# docker run -it --name a0 -p80:80/tcp -v /opt/:/usr/share/nginx/html centos:nginx /bin/bash# 12、在容器内部启动nginx服务[root@4a574dfa9e9a /]# nginx# 13、curl p q退出镜像[root@4a574dfa9e9a /]# [root@docker ~]# [root@docker ~]# ls /optcontainerd# 14、在宿主机上把dist目录中的文件复制到opt目录下[root@docker ~]# cp -r dist/* /opt/[root@docker ~]# ls /opt/assets  containerd  favicon.ico  index.html[root@docker ~]# 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># 15、浏览器查看并登录,查看错误信息

2、查找阿里云的镜像包

repo安装包下载_开源镜像站-阿里云 (aliyun.com)

下午

mysql下载路径:MySQL :: MySQL Community Downloads

1、使用mysql镜像创建并使用mysql容器

 [root@docker ~]# docker imagesmysql        latest    a82a8f162e18   4 weeks ago   586MB[root@docker ~]# docker run -it --name mysql0 mysql:latest /bin/bashbash-5.1# lsafs  boot  docker-entrypoint-initdb.d  home  lib64  mnt  proc  run   srv  tmp  varbin  dev   etc                 lib   media  opt  root  sbin  sys  usrbash-5.1# find / -name "*mysql*"[root@docker ~]# docker rm mysql0mysql0[root@docker ~]# docker run -d --name m0 -e MYSQL_ROOT_PASSWORD=root -p3306:3306 mysql:latest f8e0ec5a3db524e7c357ffdb52298185f312538fc408633191b99b412c41e6de# -e MYSQL_ROOT_PASSWORD=root:设置环境变量,指定 MySQL 的 root 用户密码为 “root”[root@docker ~]# docker psCONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                                                  NAMESf8e0ec5a3db5   mysql:latest   "docker-entrypoint.s…"   23 seconds ago   Up 21 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   m0# “docker-entrypoint.s…” 是容器启动时执行的命令,通常是由镜像定义的入口点脚本[root@docker ~]# docker exec -it m0 mysql -uroot -prootmysql> # 外部环境测试,连接数据库,并将数据导入数据库中

 mysql> show databases;+---------------------+| Database            |+---------------------+| information_schema  || mysql               || performance_schema  || project_exam_system || sys                 |+---------------------+5 rows in set (0.12 sec)mysql> use project_exam_system;Database changedmysql> show tables;+-------------------------------+| Tables_in_project_exam_system |+-------------------------------+| admin                         || category                      || com_city                      || com_nation                    || course                        || dept                          || dept_student                  || exam                          || exam_dept                     || exam_process                  || loginlog                      || major                         || menu                          || paper                         || paper_topic                   || role                          || role_admin                    || role_menu                     || semester                      || student                       || teacher                       || topic                         || user                          |+-------------------------------+23 rows in set (0.00 sec)mysql> select * from user;+-----+--------------+----------+--------+---------------------+----------+---------------------+--------+-------+| id  | userName     | password | status | createTime          | createOr | editTime            | editOr | isDel |+-----+--------------+----------+--------+---------------------+----------+---------------------+--------+-------+|   1 | 21001189     | 111111   |      0 | 2024-08-21 09:45:05 | NULL     | 2024-08-22 22:04:44 | NULL   |     0 ||   2 | 21001190     | 111111   |      0 | 2024-08-21 09:45:05 | NULL     | 2024-08-21 09:45:05 | NULL   |     0 ||   3 | 21001191     | 111111   |      0 | 2024-08-21 09:45:05 | NULL     | 2024-08-21 09:45:05 | NULL   |     0 ||   4 | 21001192     | 111111   |      0 | 2024-08-21 09:45:05 | NULL     | 2024-08-21 09:45:05 | NULL   |     0 |

2、让容器共享宿主的/etc/localtime(核对时间)

 [root@docker ~]# docker run -it --name c0 centos:latest /bin/bash# 发现时间不对[root@2e86b6787031 /]# dateMon Aug 26 06:37:10 UTC 2024[root@2e86b6787031 /]# [root@docker ~]# # 进行卷映射,让容器共享宿主的/etc/localtime目录[root@docker ~]# docker run -it --name c2 -v /etc/localtime:/etc/localtime centos:latest /bin/bash[root@50f5e311f6fd /]# dateMon Aug 26 14:39:59 CST 2024

3、为容器设置域名(容器之间的依赖link)

docker容器的ip地址是不固定的,如果要作为服务器使用,就必须能够直接访问服务,不能直接使用ip。

解决方法一:为容器设置域名

解决方法二:做端口映射也能保证,确定一旦停用之后端口被占用,就无法再次启动了

docker run --link 容器的名称或者是id:自定义域名

被link容器必须处于运行状态,该容器才能运行

 [root@docker ~]# docker rm m0[root@docker ~]# docker psCONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS     NAMES50f5e311f6fd   centos:latest   "/bin/bash"   21 minutes ago   Up 21 minutes             c22e86b6787031   centos:latest   "/bin/bash"   24 minutes ago   Up 24 minutes             c0[root@docker ~]# docker inspect c0"IPAddress": "172.17.0.3",[root@docker ~]# docker inspect c2"IPAddress": "172.17.0.4",[root@docker ~]# docker restart c0 c2[root@docker ~]# docker inspect c0"IPAddress": "172.17.0.2",[root@docker ~]# docker inspect c2"IPAddress": "172.17.0.3",# 由此发现ip地址是不固定的[root@docker ~]# docker rm -f c0 c2c0c2[root@docker ~]# docker run -d --name m0 -e MYSQL_ROOT_PASSWORD=root mysql:latest d31816fbbdffb562a2539899b0ea88935549da898e075b1934a42a3b20269b98[root@docker ~]# docker inspect m0"IPAddress": "172.17.0.2",# 创建容器时直接指定其他容器的域名[root@docker ~]# docker run -it --name c0 --link m0:mysqldb centos:latest /bin/bash[root@b1ba0279b211 /]# ping mysqldbPING mysqldb (172.17.0.2) 56(84) bytes of data.64 bytes from mysqldb (172.17.0.2): icmp_seq=1 ttl=64 time=0.155 ms64 bytes from mysqldb (172.17.0.2): icmp_seq=2 ttl=64 time=0.097 ms[root@b1ba0279b211 /]# cat /etc/hosts127.0.0.1   localhost172.17.0.2  mysqldb d31816fbbdff m0172.17.0.3  b1ba0279b211[root@b1ba0279b211 /]# [root@docker ~]# [root@docker ~]# docker ps -aCONTAINER ID   IMAGE           COMMAND                   CREATED         STATUS         PORTS                 NAMESb1ba0279b211   centos:latest   "/bin/bash"               2 minutes ago   Up 2 minutes                         c0d31816fbbdff   mysql:latest    "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes   3306/tcp, 33060/tcp   m0[root@docker ~]# docker stop m0m0[root@docker ~]# docker run -it --name c1 centos:latest /bin/bash[root@df7e0ae8f85e /]# [root@docker ~]# [root@docker ~]# docker inspect c1"IPAddress": "172.17.0.2",[root@docker ~]# docker start m0m0# m0的ip地址已经变化[root@docker ~]# docker inspect m0"IPAddress": "172.17.0.4",[root@docker ~]# docker attach c0[root@b1ba0279b211 /]# ping m0PING mysqldb (172.17.0.4) 56(84) bytes of data.64 bytes from mysqldb (172.17.0.4): icmp_seq=1 ttl=64 time=0.109 ms64 bytes from mysqldb (172.17.0.4): icmp_seq=2 ttl=64 time=0.091 ms^C--- mysqldb ping statistics ---2 packets transmitted, 2 received, 0% packet loss, time 1001msrtt min/avg/max/mdev = 0.091/0.100/0.109/0.009 ms# 发现容器里m0的对应ip地址也发生了改变[root@b1ba0279b211 /]# cat /etc/hosts172.17.0.4  mysqldb d31816fbbdff m0172.17.0.3  b1ba0279b211[root@b1ba0279b211 /]# read escape sequence[root@docker ~]# docker stop c0 m0c0m0# 没有打开m0前c0不能运行[root@docker ~]# docker start c0Error response from daemon: Cannot link to a non running container: /m0 AS /c0/mysqldbError: failed to start containers: c0[root@docker ~]# docker start m0m0[root@docker ~]# docker start c0c0

4、文件联合系统overlay

1、docker client向dcoker daemon 发送创建容器的请求 docker run

2、docker daemon查找有⽆客户端需要的镜像

3、如果没有,就到容器的镜像仓库下载需要的镜像 pull

4、 拿到容器镜像后,启动容器

 [root@docker ~]# systemctl stop dockerWarning: Stopping docker.service, but it can still be activated by:docker.socket[root@docker ~]# cd /var/lib/docker/[root@docker docker]# lsbuildkit    engine-id  network   plugins   swarm  volumescontainers  image      overlay2  runtimes  tmp[root@docker docker]# cd overlay2/[root@docker overlay2]# ls0002ede20f6fc6eec6c8396ea036e47f52094a32712432b86c53184726c3ad670002ede20f6fc6eec6c8396ea036e47f52094a32712432b86c53184726c3ad67-init008dac4bd68db493d83ddeca57f5c08a614700b6c6edd1dd4d891d8b152b0ed80d0a0cc4ab149c7ef3f5744596ed7c948cde8ca5a6726e61b0fc26c97e510edb......[root@docker overlay2]# cd [root@docker ~]# rm -rf /var/lib/docker/[root@docker ~]# systemctl start docker# 在docker daemon初始状态(没有镜像的时候)/var/lib/docker是不存在的# 当docker daemon服务器启动,会自动创建docker目录[root@docker ~]# ls /var/lib/docker/buildkit    engine-id  network   plugins   swarm  volumescontainers  image      overlay2  runtimes  tmp[root@docker ~]# docker imagesREPOSITORY   TAG       IMAGE ID   CREATED   SIZE[root@docker ~]# docker ps -aCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES# 在没有镜像的情况下,查看overlay2这个目录只有两个文件,管道文件,l目录(管理镜像和容器的软连接的目录)[root@docker ~]# ls /var/lib/docker/overlay2/backingFsBlockDev  l[root@docker ~]# docker pull centos[root@docker ~]# docker imagesREPOSITORY   TAG       IMAGE ID       CREATED       SIZEcentos       latest    5d0da3dc9764   2 years ago   231MB# 当我们pull一个镜像之后/var/lib/docker/overlay2下就有一个新的目录,这个目录就是centos的基础目录,这个新的目录就是镜像,就是不可读的层[root@docker ~]# ls /var/lib/docker/overlay2/b5e4ecb8bf7b53b3e8d2b3a12d61749c09b81acf384269fef6567a8d64eb61aa  backingFsBlockDev  l[root@docker ~]# ls /var/lib/docker/overlay2/b5e4ecb8bf7b53b3e8d2b3a12d61749c09b81acf384269fef6567a8d64eb61aa/diff  link[root@docker ~]# ls /var/lib/docker/overlay2/b5e4ecb8bf7b53b3e8d2b3a12d61749c09b81acf384269fef6567a8d64eb61aa/diff/bin  etc   lib    lost+found  mnt  proc  run   srv  tmp  vardev  home  lib64  media       opt  root  sbin  sys  usr[root@docker ~]# docker run -it --name c0 centos:latest /bin/bash[root@b28ca7fa2976 /]# [root@docker ~]# # 当我们使用镜像创建一个容器,在overlay2会添加两个目录,一个是init目录,另外一个目录就是容器的可写层,用户对系统的修改都在可写层[root@docker ~]# ls /var/lib/docker/overlay2/5669c778f7233fe870de858bf2f0ff78f612acca68cb9d1bd03959418c4e17c6       backingFsBlockDev5669c778f7233fe870de858bf2f0ff78f612acca68cb9d1bd03959418c4e17c6-init  lb5e4ecb8bf7b53b3e8d2b3a12d61749c09b81acf384269fef6567a8d64eb61aa[root@docker ~]# ls /var/lib/docker/overlay2/5669c778f7233fe870de858bf2f0ff78f612acca68cb9d1bd03959418c4e17c6diff  link  lower  merged  work# diff通常存放着容器文件系统与基础镜像相比发生变化的文件内容。当容器对文件进行修改、新增或删除操作时,这些变化会存储在这个目录中# link可能包含一些符号链接相关的信息,用于连接不同的层或文件系统结构# lower一般会列出该层所依赖的底层镜像层的标识符。Docker 的 overlay2 文件系统通过堆叠多个层来构建容器的文件系统,这个目录可以帮助确定当前层的基础层# merged代表容器运行时所呈现的合并后的文件系统视图。这是容器实际看到的文件系统,包含了从基础镜像层到当前容器层的所有文件和目录的合并结果# work可能用于存储一些临时文件或在文件系统操作过程中的中间状态数据。它在容器运行过程中可能会被动态更新[root@docker ~]# docker exec c0 dd if=/dev/zero of=/li.txt bs=10M count=100100+0 records in100+0 records out1048576000 bytes (1.0 GB, 1000 MiB) copied, 1.48925 s, 704 MB/s[root@docker ~]# ls /var/lib/docker/overlay2/5669c778f7233fe870de858bf2f0ff78f612acca68cb9d1bd03959418c4e17c6/merged/bin  etc   lib    li.txt      media  opt   root  sbin  sys  usrdev  home  lib64  lost+found  mnt    proc  run   srv   tmp  var

5、做一个基础镜像

proc目录是进程⽬录,sys⽬录是内核⽂件保存位置,不允许修改

 # 排除以上2个⽬录,并且将⽤户设置为数字[root@localhost ~]# tar --numeric-owner --exclude=/proc --exclude=/sys -cvf li.tar /# 将项⽬移动到dockerserver主机上[root@localhost ~]# scp li.tar 10.0.0.100:~# 加载镜像[root@docker ~]# docker import -m "tar" centos7.tar tar:tar​

6、使用commit命令直接将容器封装为镜像

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB
[root@docker ~]# ls /var/lib/docker/overlay2/
1b35ad7d06fca0875e8b0a3435a388a514f509bd89857786818953cc96b9b319  backingFsBlockDev  l
[root@docker ~]# docker run -it --name c0 centos:latest /bin/bash
[root@7b202e1e4d88 /]# rm -rf /etc/yum.repos.d/*
[root@7b202e1e4d88 /]# ls /etc/yum.repos.d/
[root@7b202e1e4d88 /]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@7b202e1e4d88 /]# yum clean all && yum makecache
[root@7b202e1e4d88 /]# yum -y install nginx
[root@7b202e1e4d88 /]# echo "hh" > /usr/share/nginx/html/index.html 
[root@7b202e1e4d88 /]# [root@docker ~]# 
[root@docker ~]# docker --helpcommit      Create a new image from a container changes
[root@docker ~]# docker commit c0 centos:nginx
sha256:829a639e0772069c9c25e3f2a903599f41512643244b7dcd93a9b367ea2f00e8
[root@docker ~]# docker images
centos         nginx     12fea1b890de   24 hours ago     366MB
[root@docker ~]# ls /var/lib/docker/overlay2/
1b35ad7d06fca0875e8b0a3435a388a514f509bd89857786818953cc96b9b319
454fae2c1202c423b82f053bed8d209704794f33f181afdc1a0ef30e919c0137
a82ba8d9faba825e81f903515607b66436ef823fd9e5fe606ee684784e034f36
a82ba8d9faba825e81f903515607b66436ef823fd9e5fe606ee684784e034f36-init
backingFsBlockDev
l
[root@docker ~]# ls /var/lib/docker/overlay2/a82ba8d9faba825e81f903515607b66436ef823fd9e5fe606ee684784e034f36/diff/
etc  tmp  usr  var
[root@docker ~]# ls /var/lib/docker/overlay2/a82ba8d9faba825e81f903515607b66436ef823fd9e5fe606ee684784e034f36/diff/etc/yum.repos.d/
CentOS-Base.repo                     CentOS-Linux-FastTrack.repo
CentOS-Linux-AppStream.repo          CentOS-Linux-HighAvailability.repo
CentOS-Linux-BaseOS.repo             CentOS-Linux-Media.repo
CentOS-Linux-ContinuousRelease.repo  CentOS-Linux-Plus.repo
CentOS-Linux-Debuginfo.repo          CentOS-Linux-PowerTools.repo
CentOS-Linux-Devel.repo              CentOS-Linux-Sources.repo
CentOS-Linux-Extras.repo
[root@docker ~]# ls /var/lib/docker/overlay2/a82ba8d9faba825e81f903515607b66436ef823fd9e5fe606ee684784e034f36/diff/var/
cache  lib  log  tmp
[root@docker ~]# docker rm -f c0
c0
[root@docker ~]# ls /var/lib/docker/overlay2/
1b35ad7d06fca0875e8b0a3435a388a514f509bd89857786818953cc96b9b319  backingFsBlockDev
454fae2c1202c423b82f053bed8d209704794f33f181afdc1a0ef30e919c0137  l
[root@docker ~]# docker run -it --name c0 centos:nginx /bin/bash
[root@c733fe6612a3 /]# nginx
[root@c733fe6612a3 /]# curl localhost
hh


http://www.ppmy.cn/news/1519213.html

相关文章

网工面试题(安全)

上一篇&#xff1a;网工面试题&#xff08;数通&#xff09; 防火墙 防火墙的应用场景 防火墙&#xff1a;部署在网络出口处/服务器区(数据中心&#xff09;/广域网接入&#xff0c;用于防止外界黑客攻击、保护内网安全硬件。 传统防火墙和下一代防火墙的区别 传统防火墙的功能…

关于vue3.x中最长递增子序列(LIS)

什么是最长递增子序列&#xff1f; 简单来说最长递增子序列就是在一个数组中呈现递增的数据的长度 lettcode原题 示例&#xff1a;我们有一个数组 arr const arr [10, 9, 2, 5, 3, 7, 101, 18]那么他的序列有那些呢&#xff1f; [2][2, 3][2, 5][2, 3, 7][2, 5, 7][2, 3, 1…

常用的加密算法分析

常用的加密算法主要分为对称加密算法&#xff08;DES、3DES、AES&#xff09;、非对称加密算法&#xff08;RSA、DSA、ECC&#xff09;以及散列算法&#xff08;MD5、SHA&#xff09;三大类。 一、对称加密算法 对称加密算法&#xff0c;又称为单密钥加密或共享密钥加密&…

Expected expression after operator

这个错误直译过来就是:运算符号后没有预期的表达式 这个错误通常出现在编程语言中&#xff0c;尤其是在编写C或C等类型语言的时候&#xff0c;它意味着在源代码中遇到了一个操作符&#xff08;比如 , -, *, /, , 等等&#xff09;&#xff0c;但在该操作符后面没有紧跟相应的表…

Spring MVC RESTful API - 修改状态接口示例

前言 在许多应用程序中&#xff0c;更新资源的状态是一项常见的需求。例如&#xff0c;在任务管理系统中&#xff0c;用户可能需要更新任务的状态&#xff0c;如从“待办”变为“完成”。为了实现这一功能&#xff0c;我们可以使用Spring MVC框架结合MyBatis Plus来创建一个简…

《第三十章 性能优化 - 存储优化》

一、引言 在 Android 应用开发中&#xff0c;性能优化是一个持续且重要的工作。存储优化作为性能优化的关键环节之一&#xff0c;对于提高应用的响应速度、节省资源以及提升用户体验具有重要意义。在本章中&#xff0c;我们将重点探讨数据库优化和缓存策略这两个主要知识点。 二…

go+gin+vue入门

后端框架 1、安装go、goland 2、创建空项目 3、下载要用的包&#xff1a;命令行输入go get -u github.com/xxxx 4、安装mysql数据库&#xff0c;使用navicat创建数据库。 5、按照项目框架搭建目录、文件、代码&#xff1a;如router、model… 6、运行测试&#xff0c;go run ma…

JVM面试(一)什么是虚拟机?什么是class文件?

什么是java虚拟机&#xff1f; 如果通俗点来讲&#xff0c;我们在电脑上一行行敲出来的代码&#xff0c;电脑本身是不认识的&#xff0c;最终是要转成电脑可以运行的101001这种字节。 但是这些我们又不可能手动来转换&#xff0c;所以呢&#xff0c;就需要一个工具&#xff0…

学习笔记——后端项目中的相关技术 【随时更新】

文章目录 1. Session 共享1.0 cookie和session的工作流1.1 Cookie范围1.2 为什么要共享&#xff1f;1.3 如何共享存储1.4 session共享实现 2. 缓存的实现2.1 缓存分类2. 2 Redis 缓存实现2.1.1 Redis 的数据结构&#xff08;高频考点&#xff09;2.1.2 redisTemplate 自定义序列…

【Linux】CodeServer:离线插件配置

下载 VS Code 插件 要为 code-server 添加离线插件&#xff0c;首先需要从 Visual Studio Code 插件市场下载所需的插件&#xff1a; 打开浏览器&#xff0c;访问 Visual Studio Code 插件市场。 在搜索栏中输入您需要的插件名称&#xff0c;找到插件后&#xff0c;点击插件页…

“线程池中线程异常后:销毁还是复用?”

目录 一、验证execute提交线程池中 测试 结论 二、验证submit提交线程池中 测试 结论 三、源码解析 查看submit方法的执行逻辑 查看execute方法的执行逻辑 为什么submit方法&#xff0c;没有创建新的线程&#xff0c;而是继续复用原线程&#xff1f; 四、总结 需要说…

经典大语言模型解读(2):生成式预训练的先锋GPT-1

论文地址&#xff1a;Improving Language Understanding by Generative Pre-Training 概述 现实世界中包含了大量的文本语料数据&#xff0c;然而&#xff0c;绝大多数语料都是无标签的。 为了充分利用这些无标签语料库&#xff0c;GPT1.0提出直接利用这些未标记的语料来进行…

VMware Workstation安装及配置CentOS7 Linux操作系统

VMware workstation安装 百度网盘&#xff0c;VMware-workstation-full-17.5.2.exe 安装包&#xff1a; 链接:https://pan.baidu.com/s/1xgbWUlo-hFUbb11MRxIVsw?pwd87bq 提取码: 87bq 检查网络适配器是否正常配置 在VMware Workstation中安装CentOS7 Linux操作系统 下载…

探秘Python字典:解锁数据管理的艺术

引言 字典&#xff08;Dictionary&#xff09;是一种可变容器模型&#xff0c;它可以存储任意类型对象。Python字典使用键-值对&#xff08;key-value pair&#xff09;存储数据&#xff0c;其中键必须是不可变的数据类型如数字、字符串等&#xff0c;而值可以是任何数据类型。…

花店鲜花管理与推荐系统+Python+Django网页界面+管理系统+计算机课设

一、介绍 花店鲜花管理与推荐系统。本系统使用Python作为主要开发语言开发的一个花店鲜花管理与推荐的网站平台。 网站前端界面采用HTML、CSS、BootStrap等技术搭建界面。后端采用Django框架处理用户的逻辑请求&#xff0c;并将用户的相关行为数据保存在数据库中。通过Ajax技…

泰山派的小手机后续(2)

之前 触摸板一直报错的解决&#xff1a; 1 我的触摸板 画错了。 从新画了一个 触摸的转接板&#xff0c;调整过来了。 关于触摸的 线序。 这块屏幕正常 就是横着放的。 关于泰山派接口的线序&#xff1a; 所以我的转接板的画法 是&#xff1a; 开发板与转接板 使用的是 反排线…

AWS 无服务计算服务 Lambda

无服务计算服务 Lambda 引言什么是 AWS Lambda关键特点使用场景 SQS 驱动 Lambda示例场景描述&#xff1a;订单处理系统解决方案&#xff1a;使用 SQS 和 Lambda示例代码&#xff1a;Python Lambda 处理 SQS 消息总结 Lambda ApplicationLambda Application 的主要组成部分创建…

“北京地铁系统中人脸识别技术的安全与效率问题研究”

关于“北京地铁系统中人脸识别技术的安全与效率问题研究”&#xff0c;可以从以下几个方面进行详细分析&#xff1a; 一、人脸识别技术在北京地铁系统中的应用 1. 安检系统 应用背景&#xff1a;为了提升地铁进站安检速度&#xff0c;减少乘客等候时间&#xff0c;北京地铁系…

深度学习速通系列:线性回归vs逻辑回归

线性回归和逻辑回归是两种常用的统计学方法&#xff0c;它们在数据分析和机器学习中扮演着重要的角色。下面是对这两种回归方法的基本介绍&#xff1a; 线性回归&#xff08;Linear Regression&#xff09;&#xff1a; 线性回归是一种预测分析方法&#xff0c;用于建模和分析…

基于单片机的无线空气质量检测系统设计

本设计以STC89C52单片机为核心&#xff0c;其中包含了温湿度检测模块、光照检测模块、PM2.5检测模块、报警电路、LCD显示屏显示电路、按键输入模块和无线传输模块来完成工作。首先&#xff0c;系统可以通过按键输入模块设置当前的时间和报警值&#xff1b;使用检测模块检测当前…