Docker从零到掌握(详解)

news2024/11/16 15:32:54

目录

1.初识Docker

1.1 为什么使用docker

1.2 Docker技术

1.3.安装Docker

1.4.Docker架构

1.5.配置Docker镜像加速器

2.Docker常用命令

2.1.Docker服务相关的命令

2.2.Docker镜像相关的命令

2.3.Docker容器相关的命令

3. 容器的数据卷

3.1.数据卷的概念和作用

3.2.配置数据卷

4.Docker应用部署

4.1.Docker部署mysql

4.2.Docker部署Redis

4.3.Docker部署tomcat

4.4.Docker部署nginx

4.5.Docker部署RabbitMQ

5.自定义镜像

5.1.Docker镜像的原理

5.2. 镜像制作

5.3.dockerfile的概念[重]

5.4.Dockerfile关键字

5.5.Dockerfile案例

案例1

案例2

案例3

5.6.把本地镜像上传阿里远程镜像仓库

6.Idea关联Docker 

6.1.Docker开启远程访问

6.2.Idea安装docker插件

7.Docker服务编排

7.1.概述

7.2.Docker Compose 安装使用

8.需要图形化界面



1.初识Docker

1.1 为什么使用docker

我就可以把项目以及项目依赖的配置和软件一起打包---【镜像】---直接在测试环境下运行该镜像。无需担心环境的不同导致无法运行的问题。  

1.2 Docker技术

Docker是基于Go语言实现的云开源项目。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。

Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

Docker的应用

1.3.安装Docker

Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作系统上,

演示:CentOS7安装Docker

官网: Docker: Accelerated, Containerized Application Development

虚拟机中执行步骤:

# 1、yum包更新到最新
yum update
#2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、设置yum源--指定你下载docker软件的网址
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#4、安装docker ,出现输入的界面都按y---下载并安装docker-ce[社区版] docker-ee[企业版]
yum install -y docker-ce
# 5、查看docker版本,验证是否验证成功
docker -v

1.4.Docker架构

  • Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。

  • 容器(Container) :Docker 利用容器(Container)独立运行的一个或一组应用。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台

  • 仓库(Repository)是集中存放镜像文件的场所。

    类似于

    Maven仓库,存放各种jar包的地方;

    github仓库,存放各种git项目的地方;

    Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。

    仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

    最大的公开仓库是 Docker Hub(https://hub.docker.com/),

    存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等

1.5.配置Docker镜像加速器

默认情况下,将来从docker hub (https://hub.docker.com/)上下载docker镜像,太慢。一般都会配置镜像加速器:

USTC:中科大镜像加速器(https://docker.mirrors.ustc.edu.cn)

阿里云--网易云--腾讯云

演示:阿里云中配置镜像加速器

进入阿里云官网

搜索

 

 

2.Docker常用命令

2.1.Docker服务相关的命令

  • 停止docker服务: systemctl stop docker
  • 启动docker服务: systemctl start docker
  • 重启docker服务: systemctl restart docker
  • 开机启动docker服务: systemctl enable docker

2.2.Docker镜像相关的命令

1.从仓库中搜索相关的镜像

docker search 镜像名
例如: docker search mysql

2. 拉取镜像到本地

docker pull 镜像名:版本号 ===如果没有跟版本号,那么它会拉取最新的latest

3.查看本地有哪些镜像

docker images

4.删除本地指定的镜像

docker rmi 镜像名:版本号 或镜像编号

5.删除所有的镜像

docker rmi $(docker images -q)    [慎用]

6.帮助命令

docker --help  [找到所有的docker命令]

docker 命令 --help  [命令的语法]

2.3.Docker容器相关的命令

运行centos容器:并进入到容器内

docker run -it --name=c1 centos:7 /bin/bash
  •  -i:进入容器内部
  • -t:交互平台 ===它几乎和-i一起使用。
  • --name: 为容器起个名称--如果没有使用--name那么docker为自动分配一个名字
  • centos:7===镜像名:版本号
  • /bin/bash===提供一个shell命令窗口

退出容器

exit: ---会关闭容器
ctrl+q+p:--退出不会关闭容器

查看当前的容器

docker ps:  查看所有正在运行的容器
docker ps -a:查看所有的容器。
docker ps -aq: 查看所有容器的id

创建一个容器不进入到该容器内部

docker run -id --name=容器的名称  centos:7 /bin/bash

进入指定的容器内部:---使用exit不会关闭容器

docker exec 容器的id或者容器的名称  /bin/bash

关闭|启动|删除容器

docker stop 容器名|容器id
docker start 容器名|容器id
docker rm 容器名|容器id  [只能删除停止的容器]
docker rm -f 容器名|容器id [强制删除容器]
docker rm -f $(docker ps -aq): 删除所有容器

查看容器的日志

docker logs 容器id

3. 容器的数据卷

3.1.数据卷的概念和作用

思考: dockers容器删除后,容器中的产生的数据还在吗?

思考: Docker容器和外部机器可以直接交换文件吗?

 思考: 容器之间想要进行数据交互

为了保证容器数据的可靠性,----需要把容器内部的某个目录--挂载到宿主机中的某个目录中。

宿主机中的这个目录就是数据卷

 概念:

  • 数据卷是宿主机中的一个目录或文件
  • 当容器目录和数据卷目录绑定后对方的修改会立即同步
  • 一个数据卷可以被多个容器同时挂载
  • 一个容器也可以被挂载多个数据卷

作用:

  • 解决数据持久化问题
  • 解决外部机器和容器的间接通讯问题
  • 解决容器之间的数据交换

3.2.配置数据卷

  • 创建启动容器时,使用-v参数设置数据卷
  • docker run ... -v 宿主机目录(文件):容器内目录(文件) ...

注意事项:

  • 目录必须是绝对路径
  • 如果目录不存在,会自动创建
  • 可以挂载多个数据卷

例子:

 docker run -id --name=c2 -v /usr/app:/usr/ykq -v /usr/app2:/usr/ykq2 centos:7 /bin/bash

4.Docker应用部署

4.1.Docker部署mysql

 

搜索mysql镜像

docker search mysql

 拉取mysql镜像

docker pull mysql:5.7

 创建容器,设置端口映射、目录映射

# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql

mysql完整版容器

docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

参数说明

  • -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
  •  -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录

  • -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录

  • -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录

  • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

4.2.Docker部署Redis

(1)拉取redis镜像

docker pull redis:6.0.20 

(2)运行redis镜像

docker run -id --name=redis6 -p 6380:6379 redis:6.0.20 
-p: 端口映射  容器内部的端口和宿主机之间的映射。

(3)使用外部机器连接redis

如果把redis容器删除了---里面的数据还有吗?---如果我想修改redis的配置内容。


持久化

1.启动redis容器时指定配置文件

  • 创建一个目录/app/redis,并把redis.conf放入该目录
  • 创建一个目录/app/redis/data---存放redis持久化数据
  • mkdir -p /app/redis/data
  • 运行redis容器
  • docker run -id --name=redis6 -v /app/redis/redis.conf:/usr/redis/redis.conf -v /app/redis/data:/usr/redis/data -p 6379:6379 redis:6.0.20 redis-server /usr/redis/redis.conf
    

  • 每个容器相当于一个虚拟机

4.3.Docker部署tomcat

搜索tomcat镜像

docker search tomcat

 拉取tomcat镜像

docker pull tomcat

创建容器,设置端口映射、目录映射

# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat

运行tomcat容器

docker run -id --name=tomcat -p 8080:8080 镜像名

 进入tomcat 并修改

访问端口--成功

4.4.Docker部署nginx

 

搜索nginx镜像

docker search nginx

拉取nginx镜像

docker pull nginx

创建容器,设置端口映射、目录映射

# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
 worker_connections  1024;
}


http {
 include       /etc/nginx/mime.types;
 default_type  application/octet-stream;

 log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                   '$status $body_bytes_sent "$http_referer" '
                   '"$http_user_agent" "$http_x_forwarded_for"';

 access_log  /var/log/nginx/access.log  main;

 sendfile        on;
 #tcp_nopush     on;

 keepalive_timeout  65;

 #gzip  on;

 include /etc/nginx/conf.d/*.conf;
}
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
  • 参数说明:

    • -p 80:80:将容器的 80端口映射到宿主机的 80 端口。

    • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录

    • -v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录

4.5.Docker部署RabbitMQ

搜素rabbitmq的镜像

docker search rabbitmq

拉取rabbitmq镜像

docker pull rabbitmq

运行rabbitmq:

docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5673:5672 rabbitmq

 通过docker ps -a查看部署的mq容器id,在通过 docker exec -it 容器id /bin/bash 进入容器内部在
运行:rabbitmq-plugins enable rabbitmq_management

现在可以通过访问http://linuxip:15672,访问web界面,这里的用户名和密码默认都是guest
输入命令:exit退出容器目录.

5.自定义镜像

上面讲解的内容需要的镜像 都是从远程仓库拉取,我们能否把自己写的工程也变成一个镜像。可以的。 需要自定义镜像

5.1.Docker镜像的原理

思考:

  • Docker镜像本质是什么?---它就是一个文件Dockerfile[ 写着一条一条得到命令]

  • Docker中一个centos镜像为什么只有200MB,而一个centos操作系统的iso文件要几个G?

  • Docker中一个tomcat镜像为什么有500MB,而一个tomcat安装包只有10多MB?

linux文件系统由bootfs和rootfs两部分组成。

  • bootfs:包含bootloader (引导加载程序)和kernel(内核)

  • rootfs: root文件系统,包含的就是典型Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件

  • ·不同的linux发行版,bootfs基本一样,而rootfs不同,如ubuntu,centos等

  • Docker镜像是由特殊的文件系统叠加而成

  • 最底端是bootfs,并使用宿主机的bootfs;

  • 第二层是root文件系统rootfs,称为base image: 基础镜像

  • 然后再往上可以叠加其他的镜像文件

  • 统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。

  • 一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像成为基础镜像。

  • 当从一个镜像启动容器时,Docker会在最顶层加载一个读写文件系统作为容器

总结:

 5.2 镜像制作

自定义镜像:提供了两种方式:

  • 第一种:基于容器来制作
  • 第二种: 通过dockerfile文件来制作

第一种 容器转为镜像:只能在已有的镜像的容器上进行制作新镜像-----了解 

步骤: 把现有的镜像--运行成一个容器---修改容器中的内容--->变成镜像---把镜像压缩文件--->交给其他人---变成本地镜像

演示:

 

  • docker commit 容器id 镜像名:版本号 [把指定的容器变成镜像]
  • docker save -o 压缩文件名 镜像名:版本号 [把指定的镜像压缩为一个压缩文件]
  • docker load -i 压缩文件名 【把压缩文件变成本地镜像】

5.3 dockerfile的概念[重]

  • Dockerfile是一个文本---任意一个镜像都是通过dockerfile来制作

  • 文件包含了一条条的指令

  • 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像

  • 对于开发人员:可以为开发团队提供一个完全一致的开发环境

  • 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了

  • 对于运维人员:在部署时,可以实现应用的无缝跨平台移植

5.4 Dockerfile关键字

5.5 Dockerfile案例

案例1

创建编辑dockerfile文件  

 

构件镜像

 docker build -f centos_dockerfile -t aaa_centos:v1.0 
  •  -f:表示dockerfile文件
  • -t: 镜像名称版本号 
  • .: 必须加上
  •  

 创建容器

docker run -it --name=c1 aaa_centos:v1.0 /bin/bash

 


案例2

 准备好springboot jar包并传至宿主机的根目录

 

创建springboot_dockerfile文件并编辑

FROM openjdk:8
MAINTAINER wqg
ADD springboot-docker01-0.0.1-SNAPSHOT.jar docker01.jar
EXPOSE 8080
CMD java -jar docker01.jar

根据springboot_dockerfile制作镜像

docker build -f ./springboot_dockerfile -t springboot:v1.0 .

 

启动并做端口映射

 docker run -id --name=s2 -p 8080:8080 springboot:v1.0

成功访问

 


镜像变成压缩文件

 docker save -o springboot.tar springboot:v1.0

 


案例3

需求: Centos7镜像具备vim+ifconfig+jdk8

 

jdk_centos编辑 

FROM centos:7
MAINTAINER wqg
WORKDIR /usr/local
#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#创建目录
RUN mkdir -p /usr/local/java
#ADD 把宿主机中的压缩文件放入到/usr/local/java 并会自动解压 
ADD jdk-8u161-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_161
ENV PATH $JAVA_HOME/bin:$PATH
CMD echo "success--------------ok"
CMD /bin/bash

5.6.把本地镜像上传阿里远程镜像仓库

阿里云:

  • 作为开发: 我们需要把自己的项目----通过dockerfile 变成一个镜像----上传到远程仓库【hub.docker或者阿里云镜像仓库】
  • 作为运维: 从远程仓库下载镜像---通过镜像运行容器。部署项目。
  • 采用:阿里云镜像仓库

 


 


从Registry中拉取镜像

 拉取后运行

docker run -id --name=ccc -p 8089:8080 [镜像版本id]

6.Idea关联Docker 

6.1.Docker开启远程访问

#修改该Docker服务文件
vi /lib/systemd/system/docker.service 
#修改ExecStart这行
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

 

6.2.Idea安装docker插件

7.Docker服务编排

7.1.概述

  • docker建议我们每一个容器中只运行一个服务,因为docker容器本身占用资源极少,所以最好是将每个服务单独的分割开来但是这样我们又面临了一个问题?
  • 如果我需要同时部署好多个服务,难道要每个服务单独写Dockerfile然后在构建镜像,构建容器,这样累都累死了,所以docker官方给我们提供了docker-compose多服务部署的工具.
  • Compose允许用户通过一个单独的docker-compose.yml模板文件[你写](YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
  • 可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题。

7.2.Docker Compose 安装使用


一、安装Docker Compose

# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose
# 查看版本信息 
docker-compose -version

二、卸载Docker Compose 【根据需要选择】

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

三、 使用docker compose编排springboot+redis+mysql项目

docker compose步骤

  • 编写Dockerfile定义各个微服务应用并构建出对应的镜像文件
  • 使用 docker-compose.yml 定义一个完整业务单元,安排好整体应用中的各个容器服务。
  • 最后,执行docker-compose up命令 来启动并运行整个应用程序,完成一键部署上线

1.创建docker-compose目录(本文这里没有创建依然放在/root/dockerfile目录)

mkdir ~/docker-compose
cd ~/docker-compose

2.打包springboot工程

 

3.编写dockerfile文件

# 基础镜像使用java
FROM openjdk:8
# 作者
MAINTAINER qy165
# 将jar包添加到容器中并更名为zzyy_docker.jar
ADD springboot-redis-cache-0.0.1-SNAPSHOT.jar qy165.jar
EXPOSE 8080
CMD java -jar qy165.jar

4.构建镜像

docker build -f Dockerfile -t qy165:v1.0

 

服务编排:

编写 docker-compose.yml 文件

version: "3"
services:
  microService:
    image: qy165:v1.0      #镜像名
    container_name: qy165  #容器名
    ports:  #端口映射
      - "8080:8080"
    volumes:  #数据卷
      - /app/microService:/data
    networks: #网络(network=aaa_net)
      - aaa_net
    depends_on: #依赖服务名
      - redis
      - mysql
  redis:
    image: redis:6.0.20
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks:
      - aaa_net
    command: redis-server /etc/redis/redis.conf
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 'root'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'qy165'
    ports:
      - "3306:3306"
    volumes:
      - /app/mysql/db:/var/lib/mysql
      - /app/mysql/conf/my.cnf:/etc/my.cnf
      - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - aaa_net
    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
networks: #等价于 docker network create aaa_net
  aaa_net:

docker rm -f $(docker ps -aq)

 在~/docker-compose 目录下 使用docker-compose 启动容器

docker-compose up

 

8.需要图形化界面

执行

docker run -d -p 8000:8000 -p 9000:9000 --name portainer     --restart=always     -v /var/run/docker.sock:/var/run/docker.sock     -v portainer_data:/data     portainer/portainer

访问

http://192.168.223.147:9000/

 

 

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

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

相关文章

Django架构图

1. Django 简介 基本介绍 Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架 使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身…

【Shell】基础语法(一)

文章目录 一、shell的介绍二、执行脚本三、shell的基本语法1. 变量的使用2. 变量的分类 一、shell的介绍 Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive)&a…

刷了3个月的华为OD算法题,总结了270多道,谈谈自己的感悟

目录 一、考研二战,入职华为,反向调剂电子科大深圳二、题目描述三、输入描述四、输出描述五、解题思路六、Java算法源码七、效果展示1、输入2、输出3、说明 大家好,我是哪吒。 最近一直在刷华为OD机试的算法题,坚持一天三道题的节…

计算机网络(6) --- https协议

计算机网络(5) --- http协议_哈里沃克的博客-CSDN博客http协议https://blog.csdn.net/m0_63488627/article/details/132089130?spm1001.2014.3001.5501 目录 1.HTTPS的出现 1.HTTPS协议介绍 2.补充概念 1.加密 1.解释 2.原因 3.加密方式 对称加…

黑客技术(网络安全)自学

一、黑客是什么 原是指热心于计算机技术,水平高超的电脑专家,尤其是程序设计人员。但后来,黑客一词已被用于泛指那些专门利用电脑网络搞破坏或者恶作剧的家伙。 二、学习黑客技术的原因 其实,网络信息空间安全已经成为海陆空之…

Java事件监听机制

这里写目录标题 先进行专栏介绍再插一句 开始喽事件监听机制分析观察者模式观察者模式由以下几个角色组成:观察者模式的工作流程如下:观察者模式的优点包括:观察者模式适用于以下场景:总结 事件监听机制的工作流程如下&#xff1a…

智能卡通用安全检测指南 思度文库

范围 本标准规定了智能卡类产品进行安全性检测的一般性过程和方法。 本标准适用于智能卡安全性检测评估和认证。 规范性引用文件 下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,…

微信小程序如何引入Iconfont

在小程序中引入 Iconfont 可以通过以下步骤进行操作: 打开 Iconfont 网站(https://www.iconfont.cn/)并登录账号,创建一个项目并添加所需的图标到项目中。 在项目中选中需要使用的图标,点击右上角的 “下载代码” 按钮…

Spring集成Seata

Seata的集成方式有: 1. Seata-All 2. Seata-Spring-Boot-Starter 3. Spring-Cloud-Starter-Seata 本案例使用Seata-All演示: 第一步:下载Seata 第二步:为了更好看到效果,我们将Seata的数据存储改为db 将seata\sc…

剑指Offer 20.表示数值的字符串

20.表示数值的字符串 题目 官方地址 代码(正则表达式) public boolean isNumeric (String str) {if (str null || str.length() 0)return false;return new String(str).matches("[-]?\\d*(\\.\\d)?([eE][-]?\\d)?"); }在给定的代码…

聊聊混合动力汽车和纯电骑车的优势和劣势

混合动力汽车和纯电动骑车是两种不同的交通工具,它们都有各自的优势和劣势。本文将分别探讨混合动力汽车和纯电动骑车的优势和劣势,并为文章提供三个备选的好听的标题。 混合动力汽车是一种结合了内燃机和电动机的汽车,它可以同时利用燃油和电…

硬核!10分钟教你搭建一个本地版GPT4.0!

今天10分钟手把手教会你在自己电脑上搭建一个官方原版的GPT4.0。 不用ChatGPT账号,不用API,直接免费使用上官方原版的GPT4.0! 对!你没看错!不仅是正版GPT4.0,还完全免费! 而且整个部署流程极其…

微信开发之自动同意入群邀请的技术实现

简要描述: 自动通过群(url) 请求URL: http://域名地址/acceptUrl 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:Authorization值(…

EdgeBox_tx1_A200 PyTorch v1.9.0 环境部署

大家好,我是虎哥,今天远程帮助几个小伙伴在A200 控制器上安装PyTorch v1.9.0 torchvision v0.10.0,中间也是经历了很多波折,当然,大部分是网络问题和版本适配问题,所以完事后,将自己完整可用的过…

38.利用matlab解 有约束无约束的参数估计对比(matlab程序)

1.简述 1.离散型随机变量的极大似然估计法: (1) 似然函数 若X为离散型, 似然函数为 (2) 求似然函数L(θ)的最大值点 θ, 则θ就是未知参数的极大似然估计值. 2.连续型随机变量的极大似然估计法: (1) 似然函数 若 X 为连续型, 似然函数为 (2) 求似然函数L(θ)的最大值点θ, 则…

webpack基础知识四:说说webpack中常见的Plugin?解决了什么问题?

一、是什么 Plugin(Plug-in)是一种计算机应用程序,它和主应用程序互相交互,以提供特定的功能 是一种遵循一定规范的应用程序接口编写出来的程序,只能运行在程序规定的系统下,因为其需要调用原纯净系统提供…

如果网站用了CDN,我怎么找到它的真实IP?

0x01 验证是否存在CDN 方法1: 很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有: http://ping.chinaz.com/ http://ping.aizhan.com/ http://ce.…

Darshan的安装与使用

下载Darshan源码 官网下载地址&#xff1a;https://www.mcs.anl.gov/research/projects/darshan/download/ 解压源码压缩包 #解压安装包 tar -xvzf darshan-<version-number>.tar.gz #生成配置文件 cd darshan-<version-number> ./prepareDarshan的源文件结构主…

Qt开发,编译报错:error: C2001: 常量中有换行符

一、问题描述 Qt开发&#xff0c;编译报错&#xff1a;error: C2001: 常量中有换行符 E:\work\xxx.cpp:1: warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 E:\work\xxx.cpp:66: error: C2001: 常量中有换行符 E…

聊聊 Docker 和 Dockerfile

目录 一、前言 二、了解Dockerfile 三、Dockerfile 指令 四、多阶段构建 五、Dockerfile 高级用法 六、小结 一、前言 对于开发人员来说&#xff0c;会Docker而不知道Dockerfile等于不会Docker&#xff0c;上一篇文章带大家学习了Docker的基本使用方法&#xff1a;《一文…