Docker的安装及使用

news2024/12/29 13:31:45

目录

安装Docker

安装yum工具

更新本地镜像源

安装docker

启动docker

关闭防火墙

docker启动命令

配置镜像加速

docker的使用

拉取nginx

查看本地镜像

把镜像文件nginx导出成tar文件

查看是否导出成功

​编辑

删除本地镜像nginx:latest

导入镜像文件nginx

拉取redis

把镜像文件redis导出成tar文件

删除本地镜像redis:latest

导入镜像文件nginx

创建并运行容器 

nginx容器

创建并运行一个nginx容器

查看容器运行状态

访问容器

查看容器日志

持续更新日志:此时每次访问都会打印日志出现

进入容器修改内容

进入容器nginx

进入容器nginx内的html文件 

修改index文件内容

退出容器

停止容器mn

启动容器mn

删除容器mn

redis容器

创建并运行一个redis容器,并且支持数据持久化

进入容器修改内容

进入容器redis

连接rides

输入数据num

读取数据num

退出容器:需要退出两次

数据卷操作

创建一个数据卷

查看数据卷

查看数据卷的详细信息

删除数据卷

删除未使用的数据卷

删除某个数据卷 

数据卷挂载

创建一个nginx容器,修改里面的内容

创建一个nginx容器

修改该文件的内容

创建mysql容器,将主机目录直接挂载到容器

将mysql.tar文件上传(可以直接从本机拖到虚拟机)到虚拟机,并加载

创建目录/tmp/mval/data

创建目录/tmp/myql/lonf 

进入 /tmp/myql/lonf ,并把文件拖进来

创建并运行MySQL容器 

自定义构建镜像,基于ubuntu,运行java项目

新建一个空文件夹docker-demo

构建docker

运行容器

访问页面

​编辑

自定义构建镜像,基于java:8-alpine镜像,运行java项目

构建docker

访问页面

​编辑

DockerCompose

初始化compose

上传compose文件

修改权限

修改hosts文件 

补全命令

将cloud-demo微服务集群利用DockerCompose部署

下载提供的文件

把自己的cloud-demo文件的yml文件修改

将每个为微服务都打包成app.jar

将打包好的jar拷贝到提供的cloud-demo文件的每个文件夹里 

将加上jar包的cloud-demo文件上传到虚拟机

构建镜像并启动

重新启动

Docker镜像仓库 

配置docker信任地址 

创建一个yml文件

使用DockerCompose部署DockerRegistry

构建镜像并启动 

在私有镜像仓库推送或拉取镜像


Docker是一个快速交付应用、运行应用的技术:
1、可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
2、运行时利用沙箱机制形成隔离容器,各个应用互不干扰
3、启动、移除都可以通过一行命令完成,方便快捷


Docker和虚拟机的差异:
1、docker是一个系统进程;虚拟机是在操作系统中的操作系统.

2、docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般


镜像:
将应用程序及其依赖、环境、配置打包在一起

容器:
镜像运行起来就是容器,一个镜像可以运行多个容器

Docker结构:
1、服务端:接收命令或远程请求,操作镜像或容器

2、客户端:发送命令或者请求到Docker服务端

DockerHub:
一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry


镜像操作有哪些?
1、docker images
2、docker rmi
3、docker pull
4、docker push
5、docker save
6、docker load


docker run命令的常见参数有哪些?
1、--name:指定容器名称
2、-p∶指定端口映射

3、 -d:让容器后台运行
查看容器日志的命令:
1、docker logs
2、添加-f参数可以持续查看日志
查看容器状态:
1、docker ps
2、添加-a参数查看所有状态的容器

删除容器:
1、 docker rm
2、不能删除运行中的容器,除非添加-f参数

进入容器:
1、命令是docker exec -it [容器名][要执行的命令]
2、 exec命令可以进入容器修改文件,但是在容器内修改文件是不推荐的


数据卷的作用:
1、将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
数据卷操作:
1、docker volume create

2、docker volume ls
3、docker volume inspect

4、docker volume rm

5、docker volume prune


数据卷挂载方式:
1、-v volumeName: /targetContainerPath
2、如果容器运行时volume不存在,会自动被创建出来


docker run的命令中通过-v参数挂载文件或目录到容器中:
1、-v volume名称:容器内目录

2、-v宿主机文件:容器内文件

3、-v宿主机目录:容器内目录

数据卷挂载与目录直接挂载的
1、数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
2、目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看


镜像是分层结构,每一层称为一个Layer
1、Baselmage层:包含基本的系统函数库、环境变量、文件系统

2、Entrypoint:入口,是镜像中应用启动的命令
3、其它:在Baselmage基础上添加依赖、安装程序、完成整个应用的安装和配置


1、Dockerfile的本质是一个文件,通过指令描述镜像的构建过程
2、Dockerfile的第一行必须是FROM,从一个基础镜像来构建
3、基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如: java:8-alpine


DockerCompose有什么作用?
帮助我们快速部署分布式应用,无需一个个微服务去构建镜像和部署。


1、推送本地镜像到仓库前都必须重命名(docker tag)镜像,以镜像仓库地址为前缀
2、镜像仓库推送前需要把仓库地址配置到docker服务的daemon.json文件中,被docker信任
3、推送使用docker push命令
4、拉取使用docker pull命令
 

安装Docker

安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

更新本地镜像源

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

安装docker

yum install -y docker-ce

启动docker

关闭防火墙

关闭

systemctl stop firewalld

禁止开机启动防火墙

systemctl disable firewalld

查看防火墙状态:显示dead则说明关闭了

systemctl status firewalld

docker启动命令

启动docker

systemctl start docke

关闭docker

systemctl stop docker 

重启docker:

systemctl restart docker

查看docker状态:running为运行中

systemctl status docker

配置镜像加速

阿里云的镜像加速文档

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

选择自己的系统,然后复制命令到虚拟机中

docker的使用

拉取nginx

docker pull nginx

查看本地镜像

docker images

镜像名字、版本(latest是最新版)、镜像id、官方的创建时间、大小 

把镜像文件nginx导出成tar文件

其中:nginx.tar是要保存成的文件、nginx:latest是要被保存的镜像名称以及版本

docker save -o nginx.tar nginx:latest

查看是否导出成功

删除本地镜像nginx:latest

docker rmi nginx:latest

导入镜像文件nginx

docker load -i nginx.tar

拉取redis

docker pull redis 

把镜像文件redis导出成tar文件

其中:redis.tar是要保存成的文件、redis:latest是要被保存的镜像名称以及版本

docker save -o redis.tar redis:latest 

删除本地镜像redis:latest

docker rmi redis:latest 

导入镜像文件nginx

docker load -i redis.tar

创建并运行容器 

nginx容器

创建并运行一个nginx容器

docker run:创建并运行一个容器

--name:给容器起一个名字,比如叫做mn

-p:宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口

-d:后台运行容器

nginx:镜像名称,例如nginx

docker run --name mn -p 80:80 -d nginx

查看容器运行状态

docker ps 

访问容器

在本机访问虚拟机里的ip加容器端口

查看容器日志

docker logs mn 

持续更新日志:此时每次访问都会打印日志出现

 docker logs -f mn

进入容器修改内容

进入容器nginx

docker exec:进入容器内部,执行一个命令

-it:给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互

mn:要进入的容器的名称

bash:进入容器后执行的命令,bash是一个linux终端交互命令

docker exec -it mn bash 

进入容器nginx内的html文件 

cd /usr/share/nginx/html 

修改index文件内容

sed -i 's#需要修改的内容#要修改成的内容#g' 文件名称.后缀名

sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html
sed -i 's#Welcome to nginx#Hello World#g' index.html

刷新页面:发现成功修改

退出容器

exit 

停止容器mn

docker stop mn 

启动容器mn

docker start mn 

删除容器mn

docker rm -f mn 

redis容器

创建并运行一个redis容器,并且支持数据持久化

docker run:创建并运行一个容器

--name:给容器起一个名字,比如叫做mr

-p:宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口

-d:后台运行容器

redis:镜像名称,例如redis

--appendonly:持久化

docker run --name mr -p 6379:6379 -d redis redis-server --appendonly yes 

进入容器修改内容

进入容器redis

docker exec:进入容器内部,执行一个命令

-it:给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互

mr:要进入的容器的名称

bash:进入容器后执行的命令,bash是一个linux终端交互命令

docker exec -it mn bash 

连接rides

redis-cli 

输入数据num

set num 666 

读取数据num

get num 

退出容器:需要退出两次

exit 

数据卷操作

创建一个数据卷

取名字为html

docker volume create html 

查看数据卷

docker volume ls 

查看数据卷的详细信息

html为要查看的数据卷名称

docker volume inspect html 

删除数据卷

删除未使用的数据卷

docker volume prune

删除某个数据卷 

这里删除html

docker volume rm html

数据卷挂载

创建一个nginx容器,修改里面的内容

创建一个nginx容器

docker run:创建并运行一个容器

--name:给容器起一个名字,比如叫做mr

-p:宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口

-d:后台运行容器

nginx:镜像名称,例如nginx

-v:冒号前面是文件名称,冒号后面是文件目录

docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx 

修改该文件的内容

在文件夹里找到该文件,并修改 

在本机网页中输入虚拟机ip加端口80  

创建mysql容器,将主机目录直接挂载到容器

将mysql.tar文件上传(可以直接从本机拖到虚拟机)到虚拟机,并加载

mysql.tar文件icon-default.png?t=N7T8https://pan.baidu.com/s/19YPQmM9GRKE2LpEG3cNLIg?pwd=lvx0

 docker load -i mysql.tar

创建目录/tmp/mval/data

mkdir -p mysql/data

创建目录/tmp/myql/lonf 

mkdir -p mysql/conf 

进入 /tmp/myql/lonf ,并把文件拖进来

hmy.cnf文件icon-default.png?t=N7T8https://pan.baidu.com/s/1TKN8xzLZ0HP3l2iLMAeoHw?pwd=z9nr

创建并运行MySQL容器 

docker run --name mysql -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf -v /tmp/mysql/data:/var/lib/mysql -d mysql:5.7.25

使用本地的数据库软件访问虚拟机的数据库

可以访问成功

自定义构建镜像,基于ubuntu,运行java项目

新建一个空文件夹docker-demo

cd /tmp/

mkdir docker-demo
cd docker-demo/

把三个文件拖进/tmp/docker-demo

三个文件icon-default.png?t=N7T8https://pan.baidu.com/s/1JtblpFkgVjUf6H_PA8i0eA?pwd=mqvy

Dockerfile文件内容为:

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

构建docker

-t后面是名称,:后面是版本号,后面空格后有个点:这是路径,因为在当前路径了,所以用点

docker build -t javaweb:1.0 .

运行容器

docker run --name web -p 8090:8090 -d javaweb:1.0

访问页面

自定义构建镜像,基于java:8-alpine镜像,运行java项目

与基于Ubuntu不同的是,dockerfile文件的内容不同,其他都相同

dockerfile文件内容为:

# 指定基础镜像
FROM java:8-alpine

# 拷贝java项目的包
COPY ./docker-demo.jar /tmp/app.jar

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

构建docker

-t后面是名称,:后面是版本号,后面空格后有个点:这是路径,因为在当前路径了,所以用点

docker build -t javaweb:2.0 .

访问页面

DockerCompose

初始化compose

上传compose文件

把compose文件拖到/usr/local/bin里

compose文件icon-default.png?t=N7T8https://pan.baidu.com/s/1SL7aJ3AAzK-1NXjHZVkrTA?pwd=mbe6

修改权限

chmod +x /usr/local/bin/docker-compose 

修改hosts文件 

这里的ip不用改

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts 

补全命令

curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose 

将cloud-demo微服务集群利用DockerCompose部署

下载提供的文件

该cloud-demo文件已经编写好了docker-compose的文件夹

cloud-demo文件icon-default.png?t=N7T8https://pan.baidu.com/s/1f72g9cSKBSU3Gs3PYF5Azg?pwd=nq8t

把自己的cloud-demo文件的yml文件修改

user-service的bootstrap.yml文件

spring:
  application:
    name: userservice #服务名称
  profiles:
    active: dev #开发环境,这里是dev
  cloud:
    nacos:
      server-addr: nacos:8848 #nacos地址
      config:
        file-extension: yaml #文件后缀名

user-service的application.yml文件 

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://mysql:3306/cloud_user?useSSL=false
    username: root
    password: 1234
    driver-class-name: com.mysql.jdbc.Driver
#  application:
#    name: userservice #user的微服务名称
#  cloud:
#    nacos:
#      server-addr: localhost:8848 #nacos服务地址
#      discovery:
#        cluster-name: SH #集群名称
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
#eureka:
#  client:
#    service-url: #eureka地址信息
#      defaultZone: http://127.0.0.1:10086/eureka

pattern:
  name: 本地环境local

order-service的application.yml文件

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://mysql:3306/cloud_order?useSSL=false
    username: root
    password: 1234
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice #order的微服务名称
  cloud:
    nacos:
      server-addr: nacos:8848
#      discovery:
#        cluster-name: HZ #集群名称
##        namespace: 8279562b-ce89-420a-b765-f8b2adfdbe49 #命名空间id
#        ephemeral: false #是否为临时实例
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
#eureka:
#  client:
#    service-url: #eureka地址信息1
#      defaultZone: http://127.0.0.1:10086/eureka
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则:随机。范围:userservice服务
ribbon:
  eager-load:
    enabled: true #开启饥饿加载
    clients:  #指定饥饿加载的服务
      - userservice
#feign:
#  client:
#    config:
#      default: #这里用default就是全局配置,如果是写服务名称,则是针对某个微服务的配置
#        loggerLevel: FULL #日志级别
feign:
  httpclient:
    enable: true #支持httpClient的开关
    max-connections: 200 #最大连接数
    max-connections-per-route: 50 #单个路径的最大连接数

gateway的application.yml文件 

server:
  port: 10010 #网关端口
spring:
  application:
    name: gateway #服务名称
  cloud :
    nacos:
      server-addr: nacos:8848 #nacos地址
    gateway:
      routes: #网关路由配置
        - id: user-service #路由id,自定义,只要唯一即可
        # uri: http://127.0.0.1:8081 #路由的目标地址 http就是固定地址
          uri: lb://userservice #路由的目标地址lb就是负载均衡,后面跟服务名称
          predicates: #路由断言,也就是判断请求是否符合路由规则的条件
            - Path=/user/** #这个是按照路径匹配,只要以/user/开头就符合要求
#          filters:
#            - AddRequestHeader=Truth,Itcast is freaking awesome! #添加请求头
        - id: order-service #路由id,自定义,只要唯一即可
          uri: lb://orderservice #路由的目标地址lb就是负载均衡,后面跟服务名称
          predicates: #路由断言,也就是判断请求是否符合路由规则的条件
            - Path=/order/** #这个是按照路径匹配,只要以/user/开头就符合要求
#            - After=2031-04-13T15:14:47.433+08:00[Asia/Shanghai] #要求访问时间在这个之后
            - Before=2031-04-13T15:14:47.433+08:00[Asia/Shanghai] #要求访问时间在这个之后
      default-filters: #默认过滤器,会对所有的路由请求都生效
        - AddRequestHeader=Truth,Itcast is freakina awesome! #添加情求头
      globalcors: # 全局的跨域处理
        add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
        corsConfigurations:
          '[/**]':
            allowedOrigins: # 允许哪些网站的跨域请求
              - "http://localhost:8090"
              - "http://www.leyou.com"
            allowedMethods: # 允许的跨域ajax的请求方式
              - "GET"
              - "POST"
              - "DELETE"
              - "PUT"
              - "OPTIONS"
            allowedHeaders: "*" # 允许在请求中携带的头信息
            allowCredentials: true # 是否允许携带cookie
            maxAge: 360000 # 这次跨域检测的有效期

将每个为微服务都打包成app.jar

将打包好的jar拷贝到提供的cloud-demo文件的每个文件夹里 

我提供的cloud-demo已经把jar包安好了,但是你还是需要重新把自己的jar包覆盖我的,不然可能报错

将加上jar包的cloud-demo文件上传到虚拟机

拖到/tmp中 

构建镜像并启动

cd /tmp/cloud-demo/

docker-compose up -d

输入docker-compose logs -f,查看日志,会发现报错。这是因为nacos还未启动就启动了其他的微服务,所以这里重启启动这三个微服务 

重新启动

docker-compose restart gateway userservice orderservice 

访问网页,发现可以成功

Docker镜像仓库 

配置docker信任地址 

我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置。

这里的xxx要填虚拟机的ip地址

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://xxx.xxx.xxx.xxx:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker 

创建一个yml文件

cd /tmp/

mkdir registry-ui

cd registry-ui/
touch docker-compose.yml

使用DockerCompose部署DockerRegistry

打开刚刚创建的yml文件,把下面的配置粘贴进去

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=传智教育私有仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry 

构建镜像并启动 

docker-compose up -d

访问网页,发现成功

在私有镜像仓库推送或拉取镜像

推送镜像到私有镜像服务必须先tag

1、重新tag本地镜像,名称前缀为私有仓库的ip。

ip前面的是本地镜像名称和版本,ip以及后面是上传的名字和版本。
docker tag nginx:latest xxx.xxx.xxx.xxx:8080/nginx:1.0
2、推送镜像

docker push xxx.xxx.xxx.xxx:8080/nginx:1.0

此时查看私有镜像仓库,发现多了一个

3、拉取镜像仓库的镜像

此时复制了该镜像的地址,只要运行该命令就行

代码文件点击下载icon-default.png?t=N7T8https://pan.baidu.com/s/1v78HH8Xm5tlThBIDVqgzMw?pwd=1vjo

上一篇:Gateway网关 

下一篇:RabbitMQ 

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

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

相关文章

springCould中的Eureka-从小白开始【2】

目录 1.什么是Eureka ❤️❤️❤️ 2. 组件❤️❤️❤️ 3.单机Eureka配置❤️❤️❤️ 4.服务8001服务入住eureka ❤️❤️❤️ 5.消费端80入住到eureka ❤️❤️❤️ 6.集群Eureka配置 ❤️❤️❤️ 7.将Client发布到eureka集群上 ❤️❤️❤️ 8.服务端8002集群搭建…

OpenHarmony 启动流程优化

目前rk3568的开机时间有21s&#xff0c;统计的是关机后从按下 power 按键到显示锁屏的时间&#xff0c;当对openharmony的系统进行了裁剪子系统&#xff0c;系统app&#xff0c;禁用部分服务后发现开机时间仅仅提高到了20.94s 优化微乎其微。在对init进程的log进行分析并解决其…

uniapp 导入ucharts图表插件 H5项目, 使用echarts eopts配置

先下载ucharts H5示例源码&#xff1a; uCharts: 高性能跨平台图表库&#xff0c;支持H5、APP、小程序&#xff08;微信小程序、支付宝小程序、钉钉小程序、百度小程序、头条小程序、QQ小程序、快手小程序、360小程序&#xff09;、Vue、Taro等更多支持canvas的框架平台&#…

MyBatis的运行原理!!!

MyBatis框架在操作数据库时&#xff0c;大体经过了8个步骤&#xff1a; 1.读取 MyBatis 配置文件&#xff1a;mybatis-config.xml 为 MyBatis 的全局配置文件&#xff0c;配置了 MyBatis 的运行环境等信息&#xff0c;例如数据库连接信息。 2.加载映射文件&#xff1a;映射文…

如何快速优化大数据量订单表

场景 本篇分享以前在广州一家互联网公司工作时遇到的状况及解决方案,这家公司有一个项目是SOA的架构,这个架构那几年是很流行的,哪怕是现在依然认为这个理念在当时比较先进。 当时的项目背景大概是这样,这家公司用的是某软提供的方案,项目已经运行3年多,整体稳定。 数据…

Pycharm中将画出的图以弹窗方式显示

Pycharm中将画出的图以弹窗方式显示 操作方法&#xff1a; File→ Setting → Tools → 取消Python Scientific 即可。 如下图所示。 然后就搞定了&#xff0c;结果如下。

Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)

目录 一、ansible概述 1、简介 2、Ansible主要功能&#xff1a; 3、Ansible的另一个特点&#xff1a;所有模块都是幂等性 4、Ansible的优点&#xff1a; 5、Ansible的四大组件&#xff1a; 二、ansible环境部署&#xff1a; 1、环境&#xff1a; 2、安装ansible&#…

智能优化算法应用:基于学校优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于学校优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于学校优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.学校优化算法4.实验参数设定5.算法结果6.…

学习——html基础

什么是HTML Hyper Text Markup Language (超文本标记语言) 标记又俗称标签(tag)&#xff0c;一般格式&#xff1a; 如 <h1></h1>标签里还可以有属性(Attribute)&#xff1a; <tagName Atrribute “value" /> 如 <meta charset"utf-8"…

长短期记忆(LSTM)神经网络-多输入回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分程序&#xff1a; 四、完整代码数据下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编…

使用Httpclient来替代客户端的jsonp跨域解决方案

最近接手一个项目&#xff0c;新项目需要调用老项目的接口&#xff0c;但是老项目和新项目不再同一个域名下&#xff0c;所以必须进行跨域调用了&#xff0c;但是老项目又不能进行任何修改&#xff0c;所以jsonp也无法解决了&#xff0c;于是想到了使用了Httpclient来进行服务端…

测试工具Jmeter:界面介绍、核心选项说明、核心选项用途

本文章主要介绍Jmeter的界面布局&#xff0c;以及各个选项的功能和它们的用途。 JMeter基本原理是建立一个线程池&#xff0c;多线程运行取样器产生大量负载&#xff0c;在运行过程中通过断言来验证结果的正确性&#xff0c;通过监听器来记录测试结果。 1. Jmeter主界面 当我…

Linux 进程通信

文章目录 匿名管道匿名管道使用匿名管道原理匿名管道读写 命名管道命名管道使用命名管道特性 共享内存共享内存原理共享内存使用 补充说明 补充说明部分为相关函数和不太重要的概念介绍 匿名管道 匿名管道使用 使用方法一&#xff1a; 使用函数介绍&#xff1a; #include &…

Ubuntu18.04 上通过 jihu 镜像完成 ESP-IDF 编译环境搭建流程

为了解决国内开发者从 github 克隆 esp 相关仓库慢的问题&#xff0c;已将 esp-idf 和部分重要仓库及其关联的子模块镜像到了 jihu&#xff0c;这些仓库将自动从原始仓库进行同步。此篇博客用来阐述 Ubuntu18.04 上通过 jihu 镜像完成 ESP-IDF 编译环境搭建流程。 注&#xff1…

从零开始制作一个Douban图像下载器:Wt库的基础知识和操作指南

引言 欢迎来到本文&#xff0c;如果你希望从豆瓣下载海量的高清图像、学习使用现代C web应用程序框架Wt库开发web应用程序&#xff0c;或者了解如何利用代理IP和多线程技术提高爬虫效率和稳定性&#xff0c;那么你来对地方了。在接下来的内容中&#xff0c;我们将为你提供一个…

Springboot数据加密篇

一、密码加密 1.1Hash算法(MD5/SHA-512等) 哈希算法&#xff0c;又称摘要算法&#xff08;Digest&#xff09;&#xff0c;是一种将任意长度的输入通过散列函数变换成固定长度的输出的单向密码体制。这种映射的规则就是哈希算法&#xff0c;而通过原始数据映射之后得到的二进制…

2023中国品牌节金谱奖荣誉发布 酷开科技获颁OTT行业科技创新奖

11月17日—19日&#xff0c;以“复苏与腾飞”为主题的2023第十七届中国品牌节&#xff0c;在杭州市云栖小镇国际会展中心成功举行。在18日晚间的荣耀盛典上&#xff0c;“TopBrand 2023中国品牌节金谱奖”荣誉发布&#xff0c;酷开科技斩获OTT行业科技创新奖。 酷开科技作为OTT…

JavaWeb笔记之JavaWeb JDBC

//Author 流云 //Version 1.0 一. 引言 1.1 如何操作数据库 使用客户端工具访问数据库&#xff0c;需要手工建立连接&#xff0c;输入用户名和密码登录&#xff0c;编写 SQL 语句&#xff0c;点击执行&#xff0c;查看操作结果&#xff08;结果集或受影响行数&#xff09;。…

MySQL的增删改查(进阶)--上

1. 数据库约束 1.1 约束类型 NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值。 DEFAULT - 规定没有给列赋值时的默认值。 PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列&#xff08;或两个列多个列的结合&#xff09;有唯一标识&#xf…

3-10岁孩子数学发展里程碑

文章目录 3岁4岁5岁6-7岁&#xff08;1-2年级&#xff09;8-9岁&#xff08;3-4年级&#xff09;10岁&#xff08;5年级&#xff09; 当然&#xff0c;孩子的数学能力发展会因个体差异而有所不同&#xff0c;但以下是一个大致的指导&#xff0c;用来描述从3岁到10岁孩子在数学上…