当前位置: 首页 > news >正文

Docker与Docker-Compose详解

1、Docker是什么?

在计算机中,虚拟化(英语: Virtualization) 是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。

在实际的生产环境中。虚拟化技术主要用来解决高性能的物理硬件产能过利和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件资源的充分利用。

虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化、桌面虚拟化、服务虚拟化、虚拟机等等。.

Docker和传统虚拟机的区别

特性Docker虚拟机
启动秒级分钟级
硬盘使用一般为 MB一般为 GB
性能接近原生弱于
系统支持量单机支持上千个容器一般几十个

2、Docker的安装

2.1、Windows下的安装

直接在官网下载windows包双击运行即可,对于win10来说需要开启Hype-v,直接百度打开即可。

2.2、Linux下的安装

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun# 安装报错 Problem: problem with installed package buildah
# 执行语句 yum erase podman buildah 
# 再进行安装systemctl status dockersystemctl restart dockerdocker infosystemctl enable docker# 建立docker组
sudo groupadd docker
sudo usermod -aG docker $USER# 重启服务
systemctl restart docker

2.3、核心概念

  1. 仓库
    • 远程仓库:开发者镜像及官方镜像
    • 本地仓库:只保存当前自己使用过的镜像及自定义镜像
    • 作用:用来存放docker镜像位置
  2. 镜像
    • 作用:一个镜像就代表一个软件
  3. 容器
    • 作用:一个幢像运行一次就会生成一个实例就是生成一个容器

2.4、Aliyun服务加速

docker提供了一个远程仓库,主要是用来存放镜像的,而我们所需要的镜像都需要去远程仓库进行拉取,dockerHub 地址:https://registry.hub.docker.com/_/mysql?tab=tags,这里以mysql镜像为例,然后直接在虚拟机当中执行命令

# 获取最新版本的mysql
docker pull mysql# 获取指定版本的mysql 8.0.18版
docker pull mysql:8.0.18

在这里的dockerhub是为全球服务的,速度难免会有点慢,这里可以配置阿里的镜像来进行获取docker远程仓库的镜像。阿里云服务加速配置阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 ,按照官网进行配置即可:

在这里插入图片描述

3、Docker的操作

3.1、Hello World

在安装docker之后,直接使用命令:docker run hello-world 表示直接运行hello-world这个镜像。而他的执行基本步骤如下:

在这里插入图片描述

3.2、Docker 的基本命令

3.2.1、docker引擎及帮助操作:

# 查看docker信息
docker info# 查看docker版本
docker version# 帮助命令
docker --help

3.2.2、镜像相关操作:

# 查看镜像
docker images
docker images -a #展示所有镜像
docker images -q #只展示镜像的ID
docker images mysql #只展示mysql镜像# 下载镜像
docker pull 镜像名称:版本号  # 如 docker pull mysql:8.0.27
docker pull 镜像名称:@DIGEST
#如:docker pull mysql:DIGEST:sha256:975b3b1a6df6bf66221d1702b76c4141a4cd09f93f22f70c32edc99a6c256fe8# 搜索镜像
docker search 镜像
# docker search mysql
# 搜索stars数在3000以上的image
docker search mysql --filter=stars=3000# 删除镜像
docker image rm 镜像名:版本或者id标识 # docker image rm mysql:8.0.27
docker image rm -f 镜像名:版本或者id标识 # 强制删除
# 简化删除
docker rmi 镜像名:版本# 组合运用
# 清空本地仓库所有镜像
docker rmi -f $(docker images -q)

3.2.3、容器相关操作:

# 导入本地镜像
docker load -i 镜像文件# 运行一个容器
docker run 镜像名称:版本号
# 运行容器与宿主机进行映射
docker run -p 8080:8080 镜像名称:版本号
# 启动容器映射端口,后台启动
docker run -p 8080:8080 -d 镜像名称:版本号
# 启动容器映射端口,后台启动,指定名称
docker run -p 8080:8080 --name 容器名称 -d 镜像名称:版本号# 查看正在运行的容器
docker ps
# 查看运行容器的历史记录
docker ps -a
# 查看最近运行的两个容器
docker ps -a -n=2
# 查看正在运行的容器id
docker ps -q
# 查看所有容器的id
docker ps -aq# 容器的启动和停止
docker start 容器名称或者容器id 
docker restart 容器名称或者容器id 
docker stop 容器名称或者容器id 
docker kill 容器名称或者容器id # 容器的删除
docker rm 容器的id或者名称
docker rm -f 容器的id或者名称
docker rm -f $(docker ps -aq)# 查看日志
docker logs 容器id或名称
# 实时展示日志
docker logs -f 容器id或名称
# 加入时间戳展示实时展示日志
docker logs -tf 容器id或名称
# 查看最后n行日志
docker logs --tail 5 容器id或名称# 查看容器的内部进程
docker top 容器id或名称# 与容器内部进行交互
docker exec -it 容器id或名称 bash# 从容器复制文件到操作系统
docker cp 容器id:路径 操作系统下的路径
# 从操作系统复制文件到容器当中
docker cp 操作系统下的路径 容器id:路径

在这里的文件复制主要还是运用到本地项目打包后的部署,比如说这里一个项目开发完成之后,打成一个jar包或者war包,丢给tomcat进行启动部署,而后直接将这个包给到tomcat镜像下的webapps目录下,重新启动tomcat或者重启容器,最后进行访问项目。

# 查看容器中的元数据
docker inspect 容器id# 数据卷(Volume):实现宿主机系统和容器之间的文件共享
# 数据卷的使用:
docker run -d -p 8080:8080 --name 容器名称 -v 操作系统下路径:容器下路径 镜像名称:版本# aa代表一个数据卷的名字,名称可以自定义,docker在不存在时自动创建这个数据卷,并且同时自动映射宿主机当中的某个目录
# 同时在启动容器的时候会将aa对应容器目录中全部内容复制到aa映射目录当中
docker run -d -p 8080:8080 --name 容器名称  -v aa:容器下路径 镜像名称:版本find / -name aa# 将容器打成一个新的镜像
docker commit -m "描述信息" -a "作者信息" 容器id或名称 打包的镜像名称:标签版本# 将镜像备份出来
docker save 镜像名称:版本 -o 文件名
# 重新加载镜像
docker load -i 镜像文件

3.3、Docker 镜像分层原理

镜像是一种轻量级的,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时所需的库、环境变量和配置文件。

Docker当中的镜像为什么这莫大?

Docker的设计:一个软件镜像不仅仅是原来软件包,镜像当中还包含软件包所需的操作系统依赖软件自身依赖以及自身软件包组成。

分层原理

很显然,在这里docker容器的设计简单来说,对于不同的环境都给抽离出来进行分层,就比如说很多的软件服务(比如说:Naocs、ES、Hadoop等等)都需要jdk的环境,那再进行拉取镜像的时候,这些镜像都会先检验jdk的环境,再进行后续的安装,那这里装个Naocs、ES、Hadoop要下载三次JDK,这显然浪费了很多的内存,所以在这里Docker采用了分层的原理,这里每一层的环境依赖都给分开了,再一次安装了jdk环境之后,后续安装的服务也要jdk依赖就不会再去拉取了,回直接使用本地有的jdk环境。

3.4、Docker 网络

在docker当中容器和容器之间也是可以进行通信的。就好比Linux中我们使用 ip addr 可以看到当前虚拟机的ip地址,在这里可以查看一下容器中的IP,docker exec -it 容器名 ip addr 会发现有一个对应的映射另一个映射。说明docker容器网络是通过veth-pair技术实现的。

并且在这里还可以通过docker inspect 容器名称或id 命令查看容器的元数据,这里也有该容器随机分配的ip地址。

而当我们启动多个容器之后,可以查看多个容器的ip地址,可以看到容器的ip地址都在同一个网段上,这就有点似曾相识的感觉了,在linux当中我们配置多台机器进行互相通信,那这里的容器通信那也是一样的不,直接进入到一台容器之内,使用ping命令,ping另外一个容器的ip。

再就是在启动容器之后,默认为分配的ip地址都同一个网桥上,而这里容器当中需要对网桥进行分割开又要如何操作呢?我们需要创建一个网桥,而后在启动容器的时候指定对应的网桥即可。

# 查看网桥
docker network ls# 创建网桥
docker network create 网桥名称# 容器指定网桥挂载
docker run -p -d 8080:8080 --network 网桥名称 --name 容器名称 镜像:版本# 在启动容器,生成的ip地址会和容器名称进行映射,这里除了使用ip进行访问,还可以使用容器名称进行访问# 删除
docker network rm 网桥名称# 网桥细节
docker inspect 网桥名称

3.5、Docker 数据卷

3.5.1、作用

是用来实现容器和宿主机之间的数据共享

3.5.2:特点

  • 数据卷可以在容器之间进行共享和重用
  • 对数据卷的修改会立即影响到对应的容器
  • 对数据卷的修改不会影响镜像
  • 数据卷默认一直存在,即使容器被删除

3.5.3、数据卷操作

# 自定义数据卷目录
docker run -v 绝对路径:容器内路径
# 自动创建数据卷
docker run -v 卷名:容器内路径# 查看数据卷
docker volume ls
# 查看数据卷的细节
docker volume inspect 卷名
# 创建数据卷
docker volume create 卷名
# 删除数据卷(没有使用的数据卷)
docker volume prune
# 删除指定的数据卷
docker volume rm 卷名

3.6、Docker 核心架构

在这里插入图片描述

4、Docker安装服务

4.1、mysql 的安装

首先我们需要确定服务的版本,拉取镜像到本地:dockerHub 拉取镜像描述文件 ,在镜像的描述文件当中,会对服务的启动、查看服务日志、服务配置等等都有进行描述。

# 先获取mysql服务
docker pull mysql:8.0.18

服务的启动:这里需要指定运行的环境

# 基本启动
docker run -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.18# 启动服务 后台运行 指定root用户账号密码(设置root账户的密码为root) 指定容器名称
docker run -d -p 3307:3306 --name mysql8.0 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.18# 启动服务 后台运行 指定root用户账号密码 指定容器名称 使用数据卷将数据持久化
# mysql 容器默认存储位置:/var/lib/mysql
docker run -d -p 3307:3306 --name mysql8.0 -e MYSQL_ROOT_PASSWORD=root -d  -v mysqldata:/var/lib/mysql mysql:8.0.18# 启动服务 后台运行 指定root用户账号密码 指定容器名称 使用数据卷将数据持久化 已修改之后的配置文件启动
docker run -d -p 3307:3306 --name mysql8.0 -e MYSQL_ROOT_PASSWORD=root -d  -v mysqldata:/var/lib/mysql -v mysqlconfig:/etc/mysql mysql:8.0.18

4.2、Tomcat 的安装

# 先获取镜像
docker pull tomcat:9.0-jdk8# 服务启动
docker run -d -p 8080:8080 --name tomcat tomcat:9.0-jdk8# 项目的部署目录 /usr/local/tomcat/webapps
docker run -d -p 8080:8080 -v apps:/usr/local/tomcat/webapps --name tomcat tomcat:9.0-jdk8# 配置文件目录 /usr/local/tomcat/conf
docker run -d -p 8080:8080 -v apps:/usr/local/tomcat/webapps -v confs:/usr/local/tomcat/conf --name tomcat tomcat:9.0-jdk8

4.3、Redis的安装

# 拉取镜像
docker pull redis:6.2.6# 启动服务
docker run -d -p 6379:6379 --name redis6 redis:6.2.6# redis 持久化
docker run -d --name redis6 redis:6.2.6 redis-server --appendonly yes

4.4、ElasticSearch 的安装

docker pull docker.elastic.co/elasticsearch/elasticsearch:8.0.0
docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch docker.elastic.co/elasticsearch/elasticsearch:8.0.0

5、Dockerfile

5.1、Dockerfile 概述

5.1.1、Dockerfile是什么?

Dockerfile是用来帮助自己构建一个自定义镜像

5.1.2、为什么会存在Dockerfile?

日常用户可以将自己应用进行打包成镜像,这样就可以让我们自己的应用在容器当中运行

5.1.3、Dockerfile构建镜像原理

5.2、Dockerfile 语法

保留字作用
FROM当前镜像是基于哪个镜像[第一个指定必须是FROM]
MANITAINER维护者的姓名和邮箱地址[废弃,意义不大]
RUN构建镜像是需要运行的指令
EXPOSE当前容器对外 暴露的端口号
WORKDIR指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
ENV用来在构建镜像的过程中设置环境变量
ADD将宿主机目录下的文件拷贝进容器且ADD命令会自动处理URL和解压tar包
COPY类似于ADD,拷贝文件和目录到镜像中 将从构建上下文目录中<原路径>的文件/目录复制到新的一层镜像内的<目标路径>位置
VALUME容器数据卷,用户数据保存和持久化工作
CMD指定一个容器启动时要运行的命令,Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,都是在指定容器启动过程及其参数

FROM:构建一个自定义的镜像

# 新建一个dockerfile文件
vim Dockerfile
# 写入内容
FROM centos:8
# 进行build
docker build -t mycentos8:01 .# RUN : 对镜像进行扩展
docker run -it centos:7
# 不支持vim,对于vim的扩展,在原本的dockerfile文件当中加入
RUN yum install -y vim
# 或者使用这种语法
RUN ["yum","install","-y","vim"]# EXPORT : 镜像暴露端口
EXPOSE 8888#指定工作目录
WORKDIR /data# 复制文件
COPY aa.txt /data/aa# 添加内容
ADD bb.txt /data/bb
ADD 下载地址 /data/tomcat

5.3、idea对Dockerfile支持

打开idea的settings,在以来当中找到docker的依赖,进行安装该依赖,安装之后重启idea就可以对Dockerfile文件进行编辑了。

在这里插入图片描述
第二个就是,Dockerfile文件都在linux上,在idea当中怎么进行编辑呢,可以选择Tools下的deployment的browse remote host 进行连接远程虚拟机,这里直接连接上去之后在右侧就会有虚拟机上的文件目录信息,并且可以直接在idea当中进行打开了。

在这里插入图片描述

6、Docker compose

6.1、Docker compose 概述

6.1.1、compose的作用

用来负责对Docker容器集群的快速编排

6.1.2、compose的定位

是用来定义和运行多个docker容器的应用 同时可以对多个容器进行编排

6.1.3、compose的核心概念

  • 服务:一个应用的容器,服务可以存在多个
  • 项目:由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件当中进行定义

6.1.4、compose的安装

github下载地址:Releases · docker/compose · GitHub

首先在github上面下载对应的版本包,下载之后将包上传到linux服务器上。将文件进行重命名并且复制到/usr/local/bin目录下,并且给该目录赋予权限。最后直接使用docker-compose -v命令查看版本进行校验是否安装成功

mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v

6.1.5、docker和docker-compose直接的版本对应

docker官网地址:https://docs.docker.com/compose/compose-file/

使用命令 docker -v 查看docker的版本,可以在官网当中看到compose对docker版本的支持

在这里插入图片描述

6.2、Docker compose —— HelloWorld

在前面有说到compose当中的组成部分,分别是服务和项目,这里首先创建一个目录用来表示这第一个helloworld项目,在项目当中添加docker-compose.yml文件用来编写compose。

# 创建目录
mkdir hello
cd hello# 新建docker-compose.yml文件
vim docker-compose.yml# 写入内容(这里在vim当中编辑yml文件挺难受的,可以在idea当中编辑远程主机的文件)
version: "3.0"    # 指定compose的版本
services:         # 指定服务tomcat:         # 单个服务image: tomcat:9.0.27-jdk8     # 服务镜像ports:- 8081:8080                 # 暴露对应的端口# 保持文件内容后进行启动compose
docker-compose up# 服务启动之后,可以直接进行访问8081端口
http://远程主机ip/8081

6.3、Docker compose —— 命令模板

version: "3.0"		# compose版本
services:user:build:context: user					# dockerfile的镜像dockerfile: Dockerfile		# 读取dockerfile文件进行打包获取镜像container_name: userports:- "8888:8888"networks:- hellodepends_on:- tomcattomcat:			# 单个服务标识container_name: tomcat			# 启动后的容器名称 相当于 --name 指定的名称image: tomcat:9.0.27-jdk8		# 镜像ports:- 8081:8080					# 端口映射volumes:- tomcatwebapps:/usr/local/tomcat/webapps		# 指定对应的数据卷networks:- hello										# 指定网桥depends_on:										# 服务启动依赖- tomcat1										# 服务标识- mysqlhealthcheck:									# 健康检查test: ['CMD','curl','-f','http://localhost']interval: 1m30stimeout: 10sretries: 3sysctls:										# 修改内核参数- net.core.somaxconn=1024- net.ipv4.tcp_syncookies=0ulimits:										# 修改最大进程数nproc: 65335nofile:soft: 20000hard: 40000tomcat1:container_name: tomcat2image: tomcat:9.0.27-jdk8ports:- 8082:8080volumes:- tomcatwebapps1:/usr/local/tomcat/webappsnetworks:- hellomysql:container_name: mysql8image: mysql:8.0.18ports:- 3307:3306
#    environment:							# 指定启动的环境
#      - MYSQL_ROOT_PASSWORD=rootenv_file:								# 使用文件进行代替- ./mysql.env							# mysql.evn文件内容就是 MYSQL_ROOT_PASSWORD=rootvolumes:- mysqldata:/var/lib/mysql- mysqlconfig:/etc/mysqlnetworks:- hello# 数据卷都要在这统计管理
volumes:tomcatwebapps:tomcatwebapps1:
#    external:		# 使用自定义数据卷名称 默认命名为 项目名_数据卷名  自定义后为 数据卷名
#      truemysqldata:mysqlconfig:# 统一管理网桥
networks:hello:

6.4、Docker compose 指令

6.4.1、模板指令与指令

  • 模板指令:用来书写在docker-compose.yml文件当中的指令,是用来为服务进行服务的
  • 指令:用来对整个docker-compose.yml对应的这个项目进行操作

6.4.2、常用指令

up  用来启动所有的docker-compose服务
-f :表示指定启动的文件名
-d:表示后台启动

docker-compose up -f yml文件名 -d

down 用来停止服务

docker-compose down

exec 进入容器

docker-compose exec 服务id bash

ps 查看所有运行的服务

docker-compose ps

restart 重启所有服务
加服务id 表示重启单个服务

docker-compose restart 服务id

rm 删除服务
加服务id 删除单个服务
-fv 强制删除(v 包括数据卷)

docker-compose -fv 服务id

start 用来启动服务

docker-compose start 服务id

stop 停止服务

docker-compose stop 服务id

top 查看容器内运行的进程

docker-compose top 服务id

pause 暂停服务

docker-compose pause 服务id

unpuase 开启服务

docker-compose unpause 服务id

logs 查看日志

docker-compose logs 服务id

6.5、Docker 可视化工具 —— portainer

直接在dockerHub上面拉取镜像启动服务

docker pull portainer/portainer:1.24.2docker 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:1.24.2

直接访问远程虚拟机的9000端口,注册一个账号,链接到本地虚拟机的服务,就可以看到所提供的web可视化页面了。

在这里插入图片描述
同样的我们还可以将这个服务的启动加到docker-componse当中进行启动:

# 加入服务portainer:container_name: portainerimage: portainer/portainer:1.24.2ports:- 8000:8000- 9000:9000volumes:- /var/run/docker.sock:/var/run/docker.sock- portainer_data:/data# 数据卷
volumes:portainer_data:


---------------------
作者:m0_54850825
来源:CSDN
原文:https://blog.csdn.net/m0_54850825/article/details/126327361
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

相关文章:

Docker与Docker-Compose详解

1、Docker是什么&#xff1f; 在计算机中&#xff0c;虚拟化(英语: Virtualization) 是一种资源管理技术&#xff0c;是将计算机的各种实体资源&#xff0c;如服务器、网络、内存及存储等&#xff0c;予以抽象、转换后呈现出来&#xff0c;打破实体结构间的不可切割的障碍&…...

微服务之熔断器

1、高并发带来的问题 在微服务架构中&#xff0c;我们将业务拆分成一个个的服务&#xff0c;服务与服务之间可以相互调用&#xff0c;但是由于网络原因 或者自身的原因&#xff0c;服务并不能保证服务的100%可用&#xff0c;如果单个服务出现问题&#xff0c;调用这个服务就会…...

【高校科研前沿】北京大学赵鹏军教授团队在Nature Communications发文:揭示城市人群移动的空间方向性

文章简介 论文名称&#xff1a;Unravelling the spatial directionality of urban mobility 第一作者及单位&#xff1a;赵鹏军&#xff08;教授|第一作者|北京大学&#xff09;&王浩&#xff08;博士生|共同一作|北京大学&#xff09;; 通讯作者及单位&#xff1a;赵鹏军…...

徐州存储服务器会应用在哪些场景?

企业的业务随着不断的发展&#xff0c;数据信息与重要文件也在不断激增&#xff0c;存储服务器也受到了各个领域的广泛运用&#xff0c;那徐州存储服务器会应用在哪些场景当中呢&#xff1f; 存储服务器能够存储大量的数据信息、图片和视频等内容&#xff0c;是专门为数据存储设…...

个人博客搭建

liupengs blogs 环境搭建 版本环境&#xff1a;hexo3.8.0 node12.17.0 https://www.cnblogs.com/fengxiongZz/p/7707219.html 搭建 https://www.cnblogs.com/fengxiongZz/p/7707568.html 进阶 https://www.cnblogs.com/chengxs/p/7496265.html https://www.cnbl…...

服务器数据库三级等保的一些修改步骤

服务器整改项: 1.服务器需要设置强制密码复杂度,要求密码包含3种以上字符,最低8位 [root@localhost ~]# vi /etc/pam.d/system-auth password requisite pam_pwquality.so try_first_pass local_users_only retry=5 minlen=9 lcredit=-1 dcredit=-1 ocrredit=-1 enforrce_fo…...

Python私教张大鹏 Vue3整合AntDesignVue之DatePicker 日期选择框

案例&#xff1a;选择日期 <script setup> import {ref} from "vue";const date ref(null) </script> <template><div class"p-8 bg-indigo-50 text-center"><a-date-picker v-model:value"date"/><a-divide…...

springboot+vue前后端分离项目中使用jwt实现登录认证

文章目录 一、后端代码1.响应工具类2.jwt工具类3.登录用户实体类4.登录接口5.测试接口6.过滤器7.启动类 二、前端代码1.登录页index 页面 三、效果展示 一、后端代码 1.响应工具类 package com.etime.util;import com.etime.vo.ResponseModel; import com.fasterxml.jackson.…...

leetcode hot100 之 编辑距离

给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符删除一个字符替换一个字符 输入&#xff1a;word1 “horse”, word2 “ros” 输出&#xff1a;3 解释&#xff1a…...

杨校老师项目之基于SpringBoot的理发店的预约管理系统

原系统是SSMJSP页面构成&#xff0c;先被修改为SpringBoot JSP页面 自助下载渠道: https://download.csdn.net/download/kese7952/89417001&#xff0c;或 点我下载 理发师信息&#xff1a; 理发师详细信息 公告信息 员工登录&#xff1a; 管理员登录...

SpringAI学习及搭建AI原生应用

文章目录 一、SpringAI是什么二、准备工作1.GPT-API-free2.AiCore3.eylink 三、对话案例实现1.创建项目2.实现简单的对话 四、聊天客户端ChatClient1.角色预设2.流式响应3.call和stream的区别 五、聊天模型提示词提示词模板 六、图像模型(文生图)七、语音模型1.文字转语音(文生…...

CobaltStrike权限传递MSF

一、测试环境 操作系统&#xff1a; 1.VMware17 2.kali 6.1.0-kali5-amd64 3.Win10x64 软件&#xff1a; 1.cs4.0 2.metasploit v6.3.4-dev 二、测试思路 1.cs是一款渗透测试工具&#xff0c;但没有漏洞利用的模块&#xff0c;我们可以在拿到目标主机的权限后&#xff0c;将…...

白嫖 kimi 接口 api

说明:kimi当然是免费使用的人工智能AI,但是要调用api是收费的. 项目&#xff1a; https://github.com/LLM-Red-Team/kimi-free-api 原文地址: https://blog.taoshuge.eu.org/p/272/ railway部署 步骤: 打开Github,新建仓库新建名为Dockerfile文件&#xff08;没有后缀&…...

借助ChatGPT完成课题申报书中框架思路写作指南

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。可以和我&#xff08;yida985&#xff09;交流学术写作或ChatGPT等AI领域相关问题&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步 在课题申报…...

SuntoryProgrammingContest2024(AtCoder Beginner Contest 357)

https://www.cnblogs.com/yxcblogs/p/18239433 题解写到博客园了&#xff0c;懒得复制了&#xff0c;直接放个链接吧~...

重温共射放大电路

1、放大概念 小功率信号变成一个大功率信号&#xff0c;需要一个核心器件做这件事&#xff0c;核心器件的能量由电源提供&#xff0c;通过核心器件用小功率的信号去控制大电源&#xff0c;来实现能量的转换和控制&#xff0c;前提是不能失真&#xff0c;可以用一系列正弦波进行…...

[DDR5 Jedec] 读操作 Read Command 精讲

依公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入理解DDR》 Read 读取命令也可以视为列读取命令。当与正确的bank地址和列地址结合使用时&#xff0c;通过激活命令&#xff08;行访问&#xff09;移动到检测放大器中的数据&#xff0c; 现在被推送到数…...

opencv 通过滑动条调整阈值处理、边缘检测、轮廓检测、模糊、色调调整和对比度增强参数 并实时预览效果

使用PySimpleGUI库创建了一个图形用户界面(GUI),用于实时处理来自OpenCV摄像头的图像。它允许用户应用不同的图像处理效果,如阈值处理、边缘检测、轮廓检测、模糊、色调调整和对比度增强。用户可以通过滑动条调整相关参数。 完整代码在文章最后,可以运行已经测试; 代码的…...

防火墙安全管理

大多数企业通过互联网传输关键数据&#xff0c;因此部署适当的网络安全措施是必要的&#xff0c;拥有足够的网络安全措施可以为网络基础设施提供大量的保护&#xff0c;防止黑客、恶意用户、病毒攻击和数据盗窃。 网络安全结合了多层保护来限制恶意用户&#xff0c;并仅允许授…...

MyQueue(队列)

目录 一、队列的定义 二、队列方法的实现 1、定义队列 2、后端插入 3、前端操作 4、判断队列是否为空 5、队列大小 三、队列方法的使用 一、队列的定义 队列是一种特殊的线性表&#xff0c;特殊之处在于它只允许在表的前端&#xff08;front&#xff09;进行删除操作&am…...

【Pytorch】一文向您详细介绍 torch.nn.DataParallel() 的作用和用法

【Pytorch】一文向您详细介绍 torch.nn.DataParallel() 的作用和用法 下滑查看解决方法 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高…...

Windows本地使用SSH连接VM虚拟机

WIN10 VM17.5 Ubuntu:20.04 1.网路设置 1)选择编辑->更改设置 配置完成 2.修改了服务器文件&#xff0c;修改sshd配置&#xff0c;在此文件下/etc/ssh/sshd_config&#xff0c;以下为比较重要的配置 PasswordAuthentication yes PermitRootLogin yes PubkeyAuthenticat…...

RPC(远程过程调用):技术原理、应用场景与发展趋势

摘要&#xff1a; RPC&#xff08;Remote Procedure Call&#xff09;是一种通信协议&#xff0c;用于实现跨网络的进程间通信。它提供了一种简单高效的方式&#xff0c;使得分布式系统中的不同组件能够像调用本地函数一样调用远程函数。本篇博客将介绍RPC的基本概念&#xff0…...

iSCSI和FC存储

iSCSI存储和FC存储的特点和区别 FC存储和iSCSI存储是两种主要的网络存储解决方案&#xff0c;它们各自在性能、成本和适用场景上有着不同的特点。 FC存储是一种基于光纤通道技术的高性能、低延迟的存储解决方案。它使用专用的光纤通道网络连接存储设备和服务器&#xff0c;确…...

MPT(merkle Patricia trie )及理解solidity里的storage

what&#xff1f; MPT树是一种数据结构&#xff0c;用于在以太坊区块链中高效地存储和检索账户状态、交易历史和其他重要数据。MPT树的设计旨在结合Merkle树和Patricia树的优点&#xff0c;以提供高效的数据存储和验证 MPT树由四种类型的节点组成&#xff1a; **扩展节点&…...

【代码随想录算法训练营第三十五天】 | 1005.K次取反后最大化的数组和 134.加油站 135.分发糖果

贪心章节的题目&#xff0c;做不出来看题解的时候&#xff0c;千万别有 “为什么这都没想到” 的感觉&#xff0c;想不出来是正常的&#xff0c;转变心态 “妙啊&#xff0c;又学到了新的思路” &#xff0c;这样能避免消极的心态对做题效率的影响。 134. 加油站 按卡哥的思路…...

桌面应用开发框架比较:Electron、Flutter、Tauri、React Native 与 Qt

在当今快速发展的技术环境中&#xff0c;对跨平台桌面应用程序的需求正在不断激增。 开发人员面临着选择正确框架之挑战&#xff0c;以便可以高效构建可在 Windows、macOS 和 Linux 上无缝运行的应用程序。 在本文中&#xff0c;我们将比较五种流行的桌面应用程序开发框架&…...

学习笔记丨嵌入式BI分析的12个关键功能

编者注&#xff1a;以下内容节选编译自嵌入式分析厂商Qrvey发表的《What is Embedded Analytics?》&#xff08;什么是嵌入式分析&#xff09;一文&#xff0c;作者为Qrvey产品市场主管Brian Dreyer。 什么是嵌入式分析&#xff1f; 嵌入式分析是指能够将数据分析的特性和功…...

PostgreSQL17优化器改进(3)在使用包含操作符<@和@>时优化范围查询

PostgreSQL17优化器改进&#xff08;3&#xff09;在使用包含操作符<和>时优化范围查询 本文将介绍PostgreSQL 17服务端优化器在使用包含操作符<和>时优化范围查询。其实在在第一眼看到官网网站的对于该优化点的时候&#xff0c;可能是由于缺乏对于范围类型的认知…...

【因果推断python】32_合成控制2

目录 合成控制作为线性回归的一种实现​编辑 合成控制作为线性回归的一种实现 为了估计综合控制的治疗效果&#xff0c;我们将尝试构建一个类似于干预期之前的治疗单元的“假单元”。然后&#xff0c;我们将看到这个“假单位”在干预后的表现。合成控制和它所模仿的单位之间的…...

正确的网线的顺序图/培训推广 seo

https://doc.alidayu.com/doc2/index.htm 一条0.045 元 新注册送10块 转载于:https://www.cnblogs.com/as3lib/p/6804980.html...

自己做同城购物网站/网络营销的现状

{tb;【?】;ct;} bc printf(\12.完成程序填空&#xff0c;实现已知三个数a&#xff0c;b&#xff0c;c&#xff0c;找出最大值放于max中。 if(a>b) 【?】; maxa else maxb;if (【?】) maxc; c>max printf(\【?】); ,max13.完成程序填空&#xff0c;实现求s135??99. …...

网站建设亿码酷适合5/腾讯控股第三季度营收1401亿

论文译文&#xff1a;地址 1、阅读论文 Radford A, Metz L, Chintala S. Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks[J]. Computer Science, 2015. 2、翻译论文 摘要 近年来&#xff0c;使用卷积神经网络的监督学习被…...

快速搭建网站工具/天津百度关键词seo

题意&#xff1a; 给定n个城市的坐标&#xff0c;要在城市中建k个飞机场&#xff0c;使城市距离最近的飞机场的最长距离最小&#xff0c;求这个最小距离。 分析&#xff1a; 最小化最大值&#xff0c;显然二分最大距离。然后我们将距离在范围内的两个城市建边&#xff0c;建一个…...

做网站有前途吗/免费网站分析seo报告是坑吗

pythonopencv车道线检测(简易实现)&#xff0c;供大家参考&#xff0c;具体内容如下技术栈&#xff1a;pythonopencv实现思路&#xff1a;1、canny边缘检测获取图中的边缘信息&#xff1b;2、霍夫变换寻找图中直线&#xff1b;3、绘制梯形感兴趣区域获得车前范围&#xff1b;4、…...

青岛找网站建设公司哪家好/竞价服务托管公司

分享一下我的偶像大神的人工智能教程&#xff01;http://blog.csdn.net/jiangjunshow 也欢迎转载我的文章&#xff0c;转载请注明出处 https://blog.csdn.net/mm2zzyzzp Python进阶(二十四)-Python中函数的参数定义和可变参数 刚学用Python的时候&#xff0c;特别是看一些库的…...