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

Docker基本操作【一篇学会项目部署】

文章目录

  • 一、Docker简介
  • 二、Docker安装
  • 三、配置镜像加速
  • 四、Docker部署
  • 五、Docker基础操作
    • 1. 常见命令
    • 2. 操作演示
    • 3. 数据卷
      • ①nginx的html目录挂载
      • ②分析匿名数据卷
      • ③MySQL的本地目录挂载
    • 4. 自定义镜像
      • ①Dockerfile
      • ②构建镜像
    • 5. 网络
      • ①常见命令
      • ②自定义网络
  • 六、DockerCompose
    • 1. 基础语法
    • 2. 基础命令
    • 3. docker-compose示例


本文均学于“黑马程序员”
本文所用环境:CentOS7 、HeidiSQL 、MobaXterm、MySQL

一、Docker简介

Docker是一个虚拟环境容器,可以将你的开发环境、代码、配置文件等一并打包到这个容器中,并发布和应用到任意平台中。比如,你在本地用Python开发网站后台,开发测试完成后,就可以将Python3及其依赖包、Flask及其各种插件、Mysql、Nginx等打包到一个容器中,然后部署到任意你想部署到的环境。

Docker分为如下三个概念:

  • 镜像(Image): 类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。
  • 容器(Container): 类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。Docker引擎利用容器来运行、隔离各个应用。容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。注意:镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变。
  • 仓库(Repository): 类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。

二、Docker安装

  • 1. 安装yum工具
yum install -y yum-utils
  • 2. 配置Docker的yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 3. 安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 4. 启动Docker
systemctl enable docker   //设置开机自启
systemctl start docker    //开启Docker
  • 5. 校验Docker
docker ps

三、配置镜像加速

这里使用阿里云镜像加速

- 1. 产品 —> 容器 —> 容器镜像服务ACR
在这里插入图片描述

  • 2. 管理控制台
    在这里插入图片描述
  • 3. 镜像工具 —> 镜像加速器
    在这里插入图片描述
  • 4. 回到Linux,根据自己的加速器地址 执行如下命令
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

四、Docker部署

这里以MySQL为例进行部署

在CentOS下执行如下命令:

docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123456 \mysql

其中:

  • docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行

  • --name mysql : 给容器起名字叫mysql

  • -p 3306:3306 : 设置端口映射

    • 容器是隔离环境,外界不可访问。但是可以将宿主机端口映射容器内到端口,当访问宿主机指定端口时,就是在访问容器内的端口了。
    • 容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内端口一定是3306;而宿主机端口则可以任意指定,一般与容器内保持一致。
    • 格式: -p 宿主机端口:容器内端口,示例中就是将宿主机的3306映射到容器内的3306端口
  • -e TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数

    • 格式:-e KEY=VALUE,KEY和VALUE都由容器内进程决定
    • TZ=Asia/Shanghai是设置时区;
  • MYSQL_ROOT_PASSWORD=123456:是设置MySQL默认密码

  • mysql : 设置镜像名称,Docker会根据这个名字搜索并下载镜像

    • 格式:REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是版本号
    • 在未指定TAG的情况下,默认是最新版本,也就是mysql:latest
      在这里插入图片描述
      如上 该一条指令MySQL安装完成,可通过任意客户端工具即可连接到MySQL
      这里我采用HeidiSQL进行连接
  • 填入相关信息即可
    在这里插入图片描述

  • 连接成功!
    在这里插入图片描述

五、Docker基础操作

1. 常见命令

在这里插入图片描述

2. 操作演示

以下以nginx为例,使用MobaXterm对CentOS进行远程操控

  • 1. 拉取nginx镜像
docker pull nginx
  • 2. 查看镜像
docker images
  • 3. 打包保存镜像
docker save -o nginx.tar nginx
  • 4. 删除镜像
docker rmi nginx:latest    //:latest表示为最新的
  • 5. 重新从包中获取镜像,无需重新拉取
docker load -i nginx.tar

在这里插入图片描述

  • 6. 创建并运行Nginx容器
docker run -d --name nginx -p 80:80 nginx   //第一个nginx为容器名 第二个为依赖的镜像
  • 7. 查看运行中的容器
docker ps     //正常查看
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"   //格式化查看
  • 8. 访问网页,地址:http://虚拟机地址
// 浏览器输入
http://192.168.80.130:80

在这里插入图片描述

  • 9. 停止容器
docker stop nginx
  • 10. 查看所有容器
docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
  • 11. 再次启动nginx容器
docker start nginx
  • 12. 再次查看容器
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"

在这里插入图片描述

  • 13. 查看容器详细信息
docker inspect nginx

在这里插入图片描述

  • 14. 进入容器,查看容器内目录
docker exec -it nginx bash
  • 15. 退出容器
exit

在这里插入图片描述

  • 16. 删除容器
docker rm nginx
docker rm -f nginx   //强制删除
  • 17. 给命令起别名
vi /root/.bashrc   //修改/root/.bashrc文件//例如:
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'

在这里插入图片描述

source /root/.bashrc    //使别名生效

在这里插入图片描述

3. 数据卷

数据卷(volume) 是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。

常见命令:
在这里插入图片描述
Tips:

  • 容器与数据卷的挂载要在创建容器时配置,对于创建好的容器,是不能设置数据卷的。而且创建容器的过程中,数据卷会自动创建。
  • /var/lib/docker/volumes这个目录就是默认的存放所有容器数据卷的目录,其下再根据数据卷名称创建新目录,格式为/数据卷名/_data
  • 让容器直接与宿主机目录挂载而不使用数据卷

操作演示

①nginx的html目录挂载

  • 1. 删除nginx容器
docker rm -f nginx
  • 2. 创建容器并指定数据卷,注意通过 -v 参数来指定数据卷
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx
  • 3. 查看数据卷
docker volume ls
  • 4. 查看指定数据卷详情
docker volume inspect html
  • 5. 查看/var/lib/docker/volumes/html/_data目录
ll /var/lib/docker/volumes/html/_data
  • 6. 进入该目录,修改index.html内容
cd /var/lib/docker/volumes/html/_data
vi index.html
// 例如:将第十二行改为" <h1>Welcome to 比特冬哥!</h1> "
  • 7. 重新打开页面,查看效果
// 浏览器输入
http://192.168.80.130:80

在这里插入图片描述

  • 8. 上传一张图片放置 /var/lib/docker/volumes/html/_data目录下
    在这里插入图片描述

  • 9. 进入容器内部,查看/usr/share/nginx/html目录内的文件是否变化

docker exec -it nginx bash
cd /usr/share/nginx/html
ls

在这里插入图片描述

②分析匿名数据卷

  • 查看数据卷详情信息
    可知,上面我们是没有对MySQL容器进行挂载操作的
docker inspect mysql

在这里插入图片描述
可以发现这个容器声明了一个本地目录,需要挂载数据卷,但是数据卷未定义。这就是匿名卷。
在这里插入图片描述
可以发现,其中有几个关键属性:

  • Name:数据卷名称。由于定义容器未设置容器名,这里的就是匿名卷自动生成的名字,一串hash值。
  • Source:宿主机目录
  • Destination : 容器内的目录
    上述配置是将容器内的/var/lib/mysql这个目录,与数据卷3756e6eda3cf6fa74dadc79840c6b5ab6063a5fb7b95ca1e48fd659a6e9c5830
    挂载。于是在宿主机中就有了/var/lib/docker/volumes/3756e6eda3cf6fa74dadc79840c6b5ab6063a5fb7b95ca1e48fd659a6e9c5830/_data这个目录。这就是匿名数据卷对应的目录,其使用方式与普通数据卷没有差别。

③MySQL的本地目录挂载

  • 1. 删除原来的MySQL容器
docker rm -f mysql
  • 2. 进入root目录
cd ~
  • 3. 创建文件夹用于本地目录挂载
mkdir mysql
cd mysql
mkdir data
mkdir conf
mkdir init
  • 4. 将事先准备好的文件拉入文件中
    该两文件主要是用于配置MySQL的默认编码(改为utf8mb4) 和 初始化SQL脚本
    在这里插入图片描述

  • 5. 创建并运行新mysql容器,挂载本地目录

docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123456 \-v ./mysql/data:/var/lib/mysql \-v ./mysql/conf:/etc/mysql/conf.d \-v ./mysql/init:/docker-entrypoint-initdb.d \mysql
  • 6. 查看容器信息
dps
  • 7. 查看data目录,会发现里面有大量数据库数据,说明数据库完成了初始化
ls -l data
  • 8. 进入MySQL容器
docker exec -it mysql mysql -uroot -p   //mysql -uroot -p为进入容器后执行的指令
  • 9. 查看编码表
show variables like "%char%";  //发现编码是utf8mb4没有问题

在这里插入图片描述

4. 自定义镜像

自定义镜像本质就是依次准备好程序运行的基础环境、依赖、应用本身、运行配置等文件,并且打包

①Dockerfile

由于制作镜像的过程中,需要逐层处理和打包,比较复杂,所以Docker就提供了自动打包镜像的功能。我们只需要将打包的过程,每一层要做的事情用固定的语法写下来,交给Docker去执行即可。而这种记录镜像结构的文件就称为Dockerfile

常用语法:
在这里插入图片描述

②构建镜像

这里已提前获取构建镜像需要的基础镜像包

Dockerfile文件内容如下:

# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
  • 1. 加载jdk镜像
docker load -i jdk.tar
  • 2. 查看jdk镜像是否加载成功
dis
  • 3. 在demo目录下构建自定义镜像
cd demo/
docker build -t docker-demo .

命令说明:
docker build : 就是构建一个docker镜像
-t docker-demo :-t参数是指定镜像的名称(repository和tag)
. : 最后的点是指构建时Dockerfile所在路径,由于我们进入了demo目录,所以指定的是.代表当前目录,也可以直接指定Dockerfile目录

  • 4. 查看自定义镜像(docker-demo)是否加载成功
dis
  • 5. 在docker-demo镜像中创建一个容器并运行
docker run -d --name dd -p 8090:8090 docker-demo    //dd为容器名  docker-demo为镜像
  • 6. 查看容器的运行情况
dps

在这里插入图片描述

5. 网络

用于解决不同容器之间的通信

①常见命令

在这里插入图片描述

②自定义网络

  • 1. 创建一个网络
docker network create bit_dong  //bit_dong为网络名
  • 2. 然后查看网络
docker network ls
  • 3. 查看容器
dps
  • 4. 让dd和mysql都加入该网络,网络内各容器可以用容器名互相访问!
docker network connect bit_dong mysql    //mysql和dd为容器名
docker network connect bit_dong dd
  • 5. 进入dd容器,尝试利用容器名访问mysql
docker exec -it dd bash
ping mysql
  • 6. 也可以通过在创建容器的时候就绑定自定义网络
docker run -d --name dd -p 80:80 --network bit_dong mysql  

在这里插入图片描述

六、DockerCompose

Docker Compose可以帮助实现多个相互关联的Docker容器的快速部署。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器。

docker-compose文件中可以定义多个相互关联的应用容器,每一个应用容器被称为一个服务(service)。由于service就是在定义某个应用的运行时参数,因此与docker run参数非常相似。

1. 基础语法

例如,用docker run部署MySQL的命令如下:

docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \-v ./mysql/data:/var/lib/mysql \-v ./mysql/conf:/etc/mysql/conf.d \-v ./mysql/init:/docker-entrypoint-initdb.d \--network hmallmysql

如果用docker-compose.yml文件来定义,则为:

version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3306:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123volumes:- "./mysql/conf:/etc/mysql/conf.d"- "./mysql/data:/var/lib/mysql"networks:- new
networks:new:name: hmall

对比如下:
在这里插入图片描述

2. 基础命令

docker compose [OPTIONS] [COMMAND]

其中,OPTIONS和COMMAND都是可选参数,比较常见的有:
在这里插入图片描述

3. docker-compose示例

以下是“黑马程序员”提供的docker-compose.yml文件

version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3306:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123volumes:- "./mysql/conf:/etc/mysql/conf.d"- "./mysql/data:/var/lib/mysql"- "./mysql/init:/docker-entrypoint-initdb.d"networks:- hm-nethmall:build: context: .dockerfile: Dockerfilecontainer_name: hmallports:- "8080:8080"networks:- hm-netdepends_on:- mysqlnginx:image: nginxcontainer_name: nginxports:- "18080:18080"- "18081:18081"volumes:- "./nginx/nginx.conf:/etc/nginx/nginx.conf"- "./nginx/html:/usr/share/nginx/html"depends_on:- hmallnetworks:- hm-net
networks:hm-net:name: hmall

相关文章:

Docker基本操作【一篇学会项目部署】

文章目录 一、Docker简介二、Docker安装三、配置镜像加速四、Docker部署五、Docker基础操作1. 常见命令2. 操作演示3. 数据卷①nginx的html目录挂载②分析匿名数据卷③MySQL的本地目录挂载 4. 自定义镜像①Dockerfile②构建镜像 5. 网络①常见命令②自定义网络 六、DockerCompo…...

目标识别项目实战:基于Yolov7-LPRNet的动态车牌目标识别算法模型(二)

前言 目标识别如今以及迭代了这么多年&#xff0c;普遍受大家认可和欢迎的目标识别框架就是YOLO了。按照官方描述&#xff0c;YOLOv8 是一个 SOTA 模型&#xff0c;它建立在以前 YOLO 版本的成功基础上&#xff0c;并引入了新的功能和改进&#xff0c;以进一步提升性能和灵活性…...

Ceph入门到精通-sysctl.conf 配置

sysctl.conf Ubuntu server out of box is not optimized to make full use of available hardware. This means “out-of-box” setup might fail under high load. So we need to tweak system configuration for maximum concurrancy. Sysctl Tweaks Open vim /etc/sys…...

Cesium 展示——实体点击的相关属性,进行增删改

文章目录 需求分析1. 实体创建2. 相关属性需求 点击已加载的实体,获取该实体的所有属性,从而对实体进行增删改 分析 1. 实体创建 var viewer = new Cesium.Viewer(cesiumContainer, {terrainProvider: Cesium....

【算法小课堂】二分查找算法

简单思路&#xff1a; 当我们要从一个序列中查找一个元素的时候&#xff0c;最快想到的方法就是顺序查找法&#xff08;即&#xff1a;从前到后依次查找&#xff09;。但这种方法过于无脑&#xff0c;就是暴力的把每个元素都排查一遍。元素个数少的时候还行&#xff0c;一旦元…...

git修改提交历史中的author信息

全局设置 git config --global user.name "作者名" 局部设置(本项目) git config user.name "作者名" git修改提交作者和邮箱-CSDN博客 git修改提交作者和邮箱-CSDN博客...

【gitlab】本地项目上传gitlab

需求描述 解决方法 下面的截图是gitlab空项目的描述 上传一个本地项目按其中“Push an existing folder”命令即可。 以renren-fast项目为例 # 用git bash 下载renren-fast项目 git clone https://gitee.com/renrenio/renren-fast.git# 在renren-fast的所属目录 打开git ba…...

freertos信号量之计数信号量

freertos信号量之计数信号量 简介例程 简介 计数信号量&#xff08;Counting Semaphore&#xff09;用于管理共享资源的访问。以下是计数信号量的常用函数及其说明&#xff1a; 1&#xff09;xSemaphoreCreateCounting(unsignedportBASE_TYPE uxMaxCount, unsignedportBASE_T…...

wc命令使用指南 | 教你如何高效统计文件字数、行数和字符数

文章目录 wc命令使用指南1. 引言1.1 什么是wc命令&#xff1f;1.2 wc命令的作用和用途1.3 wc命令的常用参数 2. 基本使用2.1 安装和启动wc命令2.2 统计文件的行数2.3 统计文件的字数2.4 统计文件的字符数2.5 统计文件的词数2.6 统计文件的最长行长度 3. 高级使用3.1 统计多个文…...

网络安全:发起一次CSRF攻击!

一、如何发起一次CSRF攻击 原理&#xff1a;CSRF 的本质实际上是利用了 Cookie 会自动在请求中携带的特性&#xff0c;通过伪造请求来执行恶意操作。 1、目标网站信息&#xff1a; 接口地址&#xff1a;https://victim.com/change-password 请求类型&#xff1a;get/post 接…...

java上传文件到指定服务器

首先要知道服务器的用户名和密码。 注意&#xff1a;一般情况&#xff0c;如果不是强制要求&#xff0c;尽量不要将文件上传到服务器 步骤&#xff1a; 1.导入依赖 <!--图片上传到服务器需要的依赖--> <dependency> <groupId>com.jcr…...

揭秘 Go 中的 new() 和 make() 函数

Go&#xff08;或 Golang&#xff09;是一种现代、静态类型、编译型的编程语言&#xff0c;专为构建可扩展、并发和高效的软件而设计。它提供了各种内置的函数和特性&#xff0c;帮助开发人员编写简洁高效的代码。其中包括 new() 和 make() 函数&#xff0c;这两个函数乍看起来…...

【Spring Cloud】深入探索统一网关 Gateway 的搭建,断言工厂,过滤器工厂,全局过滤器以及跨域问题

文章目录 前言为什么需要网关以及网关的作用网关的技术实现 一、Gateway 网关的搭建1.1 创建 Gateway 模块1.2 引入依赖1.3 配置网关1.4 验证网关是否搭建成功1.5 微服务结构分析 二、Gateway 断言工厂2.1 Spring 提供的断言工厂2.2 示例&#xff1a;设置断言工厂 三、Gateway …...

计算机竞赛 题目:基于卷积神经网络的手写字符识别 - 深度学习

文章目录 0 前言1 简介2 LeNet-5 模型的介绍2.1 结构解析2.2 C1层2.3 S2层S2层和C3层连接 2.4 F6与C5层 3 写数字识别算法模型的构建3.1 输入层设计3.2 激活函数的选取3.3 卷积层设计3.4 降采样层3.5 输出层设计 4 网络模型的总体结构5 部分实现代码6 在线手写识别7 最后 0 前言…...

关于flink重新提交任务,重复消费kafka的坑

异常现象1 按照以下方式设置backend目录和checkpoint目录&#xff0c;fsbackend目录有数据&#xff0c;checkpoint目录没数据 env.getCheckpointConfig().setCheckpointStorage(PropUtils.getValueStr(Constant.ENV_FLINK_CHECKPOINT_PATH)); env.setStateBackend(new FsStat…...

Win11右键恢复Win10老版本

Win11右键恢复Win10老版本 最近自己更新了windows11的OS,整体感觉都是不错的,但是就是每次右键菜单我都要再次点击下展开更多选项,这对追求极简主义的我,就是不爽, 手动恢复win10操作吧! 第一种:创建文件(简单快速) 1.新建一个resoreRightKey.reg文件,并在里面填入如下代码 W…...

ur机械臂30003端口socket通信踩坑(double类型数据怎么解析)

坑的由来 都知道在网络通信时要把网络字节序转化为主机字节序才行&#xff0c;但是c里的标准库函数ntohl默认是转换32位字节序的数据&#xff0c;也就是说默认是转换float类型的数据&#xff1b;而ur机械臂30003端口发送的是double类型的数据&#xff0c;没法直接用ntohl进行转…...

代理IP与Socks5代理的技术奇妙之旅

随着数字化时代的崛起&#xff0c;网络工程师们日益承担着维护网络稳定性和保护数据安全的重任。在这个充满挑战的世界里&#xff0c;代理IP与Socks5代理技术成为了他们的秘密武器&#xff0c;本文将带您踏上一段技术奇妙之旅&#xff0c;深入了解这两项技术在不同领域中的应用…...

自动化测试定位不到元素?可能是 frame 在搞鬼

很多人在用Splinter或Selenium定位页面元素的时候会遇到定位不到的问题&#xff0c;明明元素就在那儿&#xff0c;就是定位不到&#xff0c;这种情况很有可能是frame在搞鬼。 说白了就是网站上的网页A&#xff0c;又嵌入了其他网页B。你访问了网页A&#xff0c;在里面可以看到…...

uni-app 开发中,监听 input 键盘事件获取不到按下按键值怎么办?

uniapp 开发 H5 时&#xff0c;无法监听按钮键盘事件的原因以及解决方法。 问题描述&#xff1a; 不少 uni-app 开发者在使用 input 组件时&#xff0c;监听 keyup 事件时&#xff0c;获取不到键盘的 keyCode。编写的代码如下&#xff1a; <template><input keyup&…...

【juc】countdownlatch实现并发网络请求

目录 一、截图示例二、代码示例2.1 测试代码2.2 接口代码 一、截图示例 二、代码示例 2.1 测试代码 package com.learning.countdownlatch;import lombok.extern.slf4j.Slf4j; import org.springframework.web.client.RestTemplate;import java.util.Arrays; import java.uti…...

在供应链管理中,如何做好库存分析?库存分析有哪些监控指标?

在供应链管理中&#xff0c;库存分析是其重要的一环。库存分析的方法繁杂且广泛&#xff0c;选择正确的方法才能更好的进行库存分析&#xff0c;下面就为大家盘点一些常用的库存分析方法和监控指标&#xff0c;全程干货&#xff0c;建议收藏&#xff01; 01 如何进行库存分析&…...

黑豹程序员-架构师学习路线图-百科:Database数据库

文章目录 1、什么是Database2、发展历史3、数据库排行网4、总结 1、什么是Database 当今世界是一个充满着数据的互联网世界&#xff0c;各处都充斥着大量的数据。即这个互联网世界就是数据世界。 支撑这个数据世界的基石就是数据库&#xff0c;数据库也可以称为数据的仓库。 …...

你相信光吗?黑灯工厂重新相信“光”

你知道“黑灯工厂”吗&#xff1f;望文生义&#xff0c;所谓黑灯工厂&#xff0c;就是可以不需要照明的工厂。全程流水线自动化生产&#xff0c;无人干预、无人值守&#xff0c;工厂变成黑匣子&#xff0c;原材料进去&#xff0c;成品出来&#xff0c;流水线上百分百自动化。 完…...

Ubuntu 20.04使用源码安装nginx 1.14.0

nginx安装及使用&#xff08;详细版&#xff09;是一篇参考博文。 http://nginx.org/download/可以选择下载源码的版本。 sudo wget http://nginx.org/download/nginx-1.14.0.tar.gz下载源代码。 sudo tar xzf nginx-1.14.0.tar.gz进行解压。 cd nginx-1.14.0进入到源代码…...

springboot框架拦截器中HttpServletRequest 请求如何区分是图片上传流还是普通的字符流?

在Spring Boot框架中的拦截器&#xff08;Interceptor&#xff09;中&#xff0c;可以通过检查Content-Type请求头来区分图片上传流和普通的字符流。 当客户端发送POST请求并携带文件时&#xff0c;Content-Type请求头通常会包含multipart/form-data或者类似的值。这表明该请求…...

简单聊聊 TCP 协议

简单聊聊 TCP 协议 如何实现可靠传输 ?完全可靠存在比特差错存在丢包流水线可靠数据传输协议回退N步 (GBN)选择重传 (ARQ) 小结 TCPTCP 连接报文段结构序号和确认号 可靠数据传输避免重传超时时间加倍快速重传回退N步还是选择重传 流量控制连接管理拥塞控制拥塞原因拥塞控制方…...

钡铼BL124PN:简单快速转换Profinet到Ethernet/IP

钡铼技术BL124PN是一款高性能的Profinet转Ethernet/IP网关设备。该网关专为工业自动化领域设计&#xff0c;用于实现不同协议之间的互连和通信。BL124PN采用可靠稳定的硬件和先进的通信技术&#xff0c;具有以下主要特点&#xff1a; 协议转换能力&#xff1a;BL124PN能够将Pr…...

【golang】go 空结构体 详解 空结构体内容占用及大小

一、空结构体基础 空结构实例 和 空结构体变量 本质是一样的 1、所有空结构体地址都是一样的2、大小都为0&#xff08;最独特的&#xff09; package mainimport ("fmt""time""unsafe" )type EST struct { }func main() {// 一、基础// 空结构…...

身为产品经理该如何向客户推广API商品数据接口

在当今数字化的时代&#xff0c;API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;已成为各种软件应用程序之间交互数据的主要方式。API商品数据接口作为一种特殊类型的API&#xff0c;能够让不同的系统之间共享商品数据&#xff0c;…...

什么是营销型的网站推广/网站制作公司网站

数据科学项目中使用Python编程语言的每个人的重要文章在Medium上&#xff0c;这个主题没有很好地介绍&#xff0c;因此我决定以一种易于理解的方式概述Python数据结构的时间复杂性。为什么我们需要知道时间复杂性&#xff1f;对于数据科学家程序员而言&#xff0c;为工作选择正…...

个人短信接口wordpress/搜索引擎营销经典案例

因为近几年工信部对电话的打击和通讯规则的变化&#xff0c;传统的外呼模式已经不能满足企业电销业务的开展&#xff0c;光靠手机号卡没办法支撑得了频繁的经常外呼&#xff0c;而传统坐席因前期部署和后期维护的成本极高&#xff0c;也逐渐被市场淘汰。 基于目前的市场情况&am…...

国外的外贸网站/百度竞价排名又叫

动态库的概念和优势在这就不多说了&#xff0c;这里只说编译和调用。下面会一步步演示如何用编译使用动态库及如何解决问题。当然如何还会具体的演示调用技巧。1.直接用编译方式使用动态库。动态地将程序和动态库链接&#xff0c;并让其在执行时加载库(如果它已在内存中则不会重…...

营销型的物流网站模板/百度分公司

一、.net篇 1 .netApi查看器&#xff0c;里面包含了C#几乎所有的库函数&#xff0c;遇到不懂的库&#xff0c;直接搜索查看就行了。 2 .netC#源函数和库的源码查看器&#xff0c;只需要把元函数或者库在网站中搜索&#xff0c;就可以看到封装的源码了 3 .net portability anal…...

wordpress配置首页/资源最全的网盘搜索引擎

发一下牢骚和主题无关&#xff1a; 从现在开始&#xff0c;我将通过一系列的文章&#xff0c;来解讲一下游戏脚本的计设和开辟&#xff0c;这是一个比较大的话题&#xff0c;并非一两篇能就讲完的&#xff0c;所以这是能可一个大坑&#xff0c;如果你不小心掉了进来&#xff0c…...

做网站钱/seo外包公司兴田德润官方地址

https://segmentfault.com/a/1190000008767607 一、下载 1、下载地址&#xff1a; http://httpd.apache.org/download.cgi 2、找到Files for Micsoft Windows 3、选择ApacheHaus 4、根据系统选择对应的版本&#xff08;我选择64位的&#xff09;&#xff0c;开始下载&#xf…...