《Linux运维实战:Docker基础总结》
一、简介
1、docker的基本结构是什么,包含哪些组件?
docker的基本机构是c/s模式,即客户端/服务端模式。 由docker客户端和docker守护进程组成。docker客户端通过命令行或其它工具使用docker sdk与docker守护进程通信,发送容器管理请求。docker守护进程接收并处理请求,调用docker引擎执行容器的创建、运行、停止等操作。docker守护进程接收并处理请求,调用docker引擎执行容器的创建、运行、停止等操作。docker引擎还负责与docker仓库交互、搜索、上传镜像。docker仓库是一个存储镜像的服务,可以是公有的或私有的。
2、docker为什么需要存储以及是如何工作的?
docker需要存储是因为容器本身是无状态的,也就是说,容器中的数据在容器停止或删除时会丢失,对于一些需要持久化或共享数据的应用来说是不可接收的。例如数据库、配置文件、日志等等。因此容器提供了存储驱动( overlay2、fuse-overlayfs、btrfs、zfs、vfs、devicemapper)和挂载方式( volumes、bind mounts、tmpfs mounts)来实现容器产生的数据持久化和共享。
3、docker和虚拟机的区别?
- | Docker容器 | 虚拟机 |
---|---|---|
技术原理 | 共享操作系统内核,隔离用户空间 | 模拟硬件和操作系统,隔离整个操作系统 |
资源占用 | 较少的内存和存储空间 | 较多的内存和存储空间 |
启动速度 | 快速启动 | 较慢的启动 |
硬件资源访问 | 直接访问宿主机的硬件资源 | 通过Hypervisor模拟硬件资源 |
运行环境 | 特定的应用程序或服务 | 可以运行不同的操作系统和应用程序 |
灵活性 | 容易部署和迁移 | 较难部署和迁移 |
安全性 | 低一些 | 较高一些 |
二、网络
2.1、网络模式
1、host模式
简单的说,就是使用宿主机的网络配置。
2、bridge模式
bridge是docker中默认的网络模式,此模式会为每一个容器分配Network Namespace、设置ip等,并将主机上的容器连接到一个虚拟网桥上。
3、container模式
指定新创建的容器与一个已经存在的容器共享一个Network Namespace,而不是与宿主机共享。
4、none模式
在这个模式下,docker容器拥有自己的Network Namespace,但是并不会为docker容器进行任何网络配置,也就是说,这个docker容器没有网卡、ip、路由等信息,需要手动为docker容器添加网卡、配置ip等。
2.2、网络原理
Docker网络原理,主要包括: 容器之间通信和容器访问外网。
1、容器之间通信
Docker服务启动后,会生成一个docker0网桥,每起一个容器,docker0网桥会为容器一个可用的ip地址。网桥docker0采用桥接模式,并使用veth-pair技术 (veth-pair就是一对虚拟网络设备接口,成对出现,一端连接着协议,一端彼此相连,正因为这个特性,veth-pair充当一个桥梁,连接各种虚拟网络设备)。这样就使得容器和容器之间是可以相互ping通的。
2、容器访问外网
docker0是虚拟出来的网桥,因此是无法被外部网络访问,所以需要在运行容器时通过-p参数将容器的端口映射到宿主机的端口上。 实际上docker采用NAT的方式,将容器的内部服务端口与宿主机上的某一个端口进行绑定,使得宿主机外部可以将网络报文发送到容器。
这里的关键是NAT,查看宿主机上的iptables规则
iptables -t nat -S
如下图所示:
在NAT表中,有这么一条规则:-A POSTROUTING -s 172.17.0.0/24 ! -o docker0 -j MASQUERAD,其含义就是: 如果docker0网桥收到来自172.17.0.0/24网段外出包,把它交给MASQUERAD处理,而MASQUERAD的处理方式就是将包的源地址替换成宿主机上的ip地址发送出去,做为一次源地址转换(SNAT)。
2.3、容器互联
1、同主机不同网段之间的容器互联
正常情况下,两个不同网段之间的容器是不能相互ping通的,如上图所示,网段为172.17的容器与网段为172.29网段的容器不能互相ping通。
# 使用以下命令连通不在同一个网段下的Docker容器,将容器加入到需要互通的网络中
docker network connect 网络名称 容器名称
使用如下图中所示的命令,就可以
2、跨主机之间的容器互联
在 Docker 中,每个容器都有自己的网络命名空间,这意味着每个容器都拥有自己的IP地址和网络接口。默认情况下,Docker使用桥接网络模式,将容器连接到一个共享网桥。这种方式适用于在单个主机上运行多个容器的情况。然而,在分布式环境中,可能需要将容器连接到不同的主机上,并进行跨主机通信。 为实现跨主机通信,Docker 提供了多种网络连接方式,包括 Overlay 网络、MacVLAN 网络和第三方网络插件。这些网络连接方式可以扩展 Docker 的网络功能,使容器能够在跨主机环境中相互通信。
1、 docker提供了overlay网络驱动,它可以在不同的docker主机之间创建虚拟网络,使得容器可以通过ip和端口进行通信。使用overlay网络,可以将多个docker主机上的容器连接到一个虚拟网络中,并且它们可以像在同一个主机上一样进行通信。使用overlay网络可以在不同主机上创建跨主机的容器连接,便于构建分布式引用或跨多个主机进行负载均衡。要使用overlay网络,需要在每个docker主机上启用swarm模式,并创建一个swarm集群,然后创建一个overlay网络,并将容器加入到该网络中。
2、通过 直接路由的方式的方式实现跨主机的docker容器通信。
3、除了Docker内置的Overlay网络和 MacVLAN 网络,还有许多第三方网络插件可用于实现跨主机通信。这些插件提供了更丰富的网络功能和配置选项。 常见的第三方网络插件包括Calico、Weave、Flannel 、openvswitch等。安装和配置这些网络插件可以参考它们的官方文档。
三、存储
3.1、存储驱动
docker容器使用存储驱动程序来管理容器文件系统和镜像。Docker提供了6种不同的存储驱动程序:overlay2、fuse-overlayfs、btrfs、vfs、vfs、devicemapper。
1、overlay2
overlay2驱动是所有当前指的Linux发行版的首选存储驱动程序,不需要额外的配置。
2、fuse-overlayfs
fuse-overlayfs驱动仅使用于在不支持rootless overlay2的主机上运行rootles docker。在Ubuntu和Debian 10上,是支持rootless overlay2的,因此不需要使用fuse-overlayfs驱动。在这些系统中,overlay2可以直接在rootlesss模式下使用。
3、btrfs and zfs
btrfs and vfs存储驱动程序允许高级选项,例如创建快照,但需要更多的维护和设置。
4、vfs
vfs存储驱动程序用于测试目的,以及不能使用写时复制文件系统的情况,此存储驱动程序性能比较差,通常不建议用于生产环境。
5、devicemapper
devicemapper驱动使用Linux内核体统的设备映射功能,它可以创建逻辑卷来作为容器的文件系统。devicemapper驱动可以提供较高的性能和较强的数据隔离性。
您的操作系统和内核可能不支持每个驱动程序,例如aufs仅在ubuntu和debian上受支持,并且可能需要安装额外的软件包。而btrfs仅在您的操作系统使用btrfs作为存储才受到支持。
Linux发行版 | 推荐存储驱动程序 | 可选择存储驱动程序 |
---|---|---|
Ubuntu | overlay2 | devicemapper、zfs、vfs |
Debian | overlay2 | devicemapper、vfs |
Centos | overlay2 | devicemapper、zfs、vfs |
Fedora | overlay2 | devicemapper、zfs、vfs |
SLES 15 | overlay2 | devicemapper、vfs |
RHEL | overlay2 | devicemapper、vfs |
总结:
1、devicemapper存储驱动程序已弃用,并将在以后的版本中删除,建议devicemapper存储驱动用户迁移到overlay2。
2、vfs存储驱动仅适用于测试目的,生产环境不建议使用。
3、根据您的发行版本,你可能有其它存储驱动程序,例如btrfs,对于这个特定用例可能具有优势,但需要额外的设置和人工维护,因此不推荐用于常见场景。
对于docker来说,后备文件系统是/var/lib/docker所在的文件系统,一些存储驱动程序只用于特定的后备文件系统
Storege driver | Supported backing filesystems |
---|---|
Overlay2 | xfs with ftype=1,ext4 |
fuse-overlayfs | any filesystem |
devicemapper | direct-lvm |
btrfs | btrfs |
zfs | zfs |
vfs | any filesystem |
3.2、挂载方式
docker提供了三种方式将数据从宿主机挂载到docker容器中,分别为:volumes、bind mounts、tmpfs
1、volumes是在宿主机文件系统的一个路径,默认情况下统一的父路径是 /var/lib/docker/volumes/,非Docker进程不能修改这个路径下面的文件,所以说volumes是容器数据持久存储数据最安全的一种方式。
2、bind mounts可以将文件存储在宿主机文件系统的任何路径
3、tmpfs 只存储在宿主机的内存中,不会写入到宿主机文件系统中,不会持久化存储。
四、Dockerfile
这里使用二进制mongodb文件来实现如何构建镜像及创建容器?这里已经提前下载好了mongodb二进制文件。
[root@localhost dockerfile]# ll
total 204564
-rw-r--r--. 1 root root 1123 Aug 7 09:49 Dockerfile
-rw-r--r--. 1 root root 147 Jul 27 2021 mongodb.conf
drwxr-xr-x. 3 root root 91 Jul 27 2021 mongodb-linux-x86_64-rhel70-3.2.22
1、mongodb.conf文件内容如下所示:
vim mongodb.conf
dbpath = /data/usr/mongodb/data
logpath = /data/usr/mongodb/logs/mongodb.log
port = 27017
fork = false
bind_ip=0.0.0.0
auth = true
maxConns=20000
2、Dockerfile文件内容如下所示:
vim Dockerfile
FROM centos:7.6.1810
MAINTAINER dongchengjueshen@lvm.com
RUN yum install nc -y && \yum install vim -y && \yum install net-tools -y && \yum install curl -y
RUN mkdir -p /data/usr
ADD mongodb-linux-x86_64-rhel70-3.2.22 /data/usr/mongodb
RUN mkdir /data/usr/mongodb/{data,logs}
ENV PATH /data/usr/mongodb/bin:$PATH
EXPOSE 27017
WORKDIR /data/usr/mongodb/bin/
COPY mongodb.conf .
CMD /data/usr/mongodb/bin/mongod -f mongodb.conf
3、使用docker build构建镜像
docker build -t mongodb:3.2.22 .
4、docker-compose文件如下所示:
version: '2'
services:mongodb:image: mongodb:3.2.22hostname: mongo-singlecontainer_name: mongo-singleports:- 0.0.0.0:17000:27017healthcheck:test: ["CMD","nc","-z","localhost","27017"]interval: 30stimeout: 10sretries: 3volumes:- "/data/basic-data/mongo-single/data/backup:/data/backup"- "/data/basic-data/mongo-single/data/restore:/data/restore"- "/data/basic-data/mongo-single/data/config:/data/config"- "/data/basic-data/mongo-single/data/db:/data/usr/mongodb/data"- "/data/basic-data/mongo-single/data/logs:/data/usr/mongodb/logs"tty: truerestart: alwaysnetworks:- default_bridge
networks:default_bridge:external: true
如下图所示::
五、常用命令
1、仓库相关
docker search $KEY_WORD # 查找镜像
docker pull $REGISTRY:$TAG # 获取镜像
docker push $IMAGE_NAME:$IMAGE_TAG # 推送镜像到仓库,需要先登录
docker login $REGISTRY_URL # 登录仓库
docker logout $REGISTRY_URL # 退出仓库
docker info # 显示Docker详细的系统信息,可查看仓库地址
docker --help # 显示Docker的帮助信息
2、容器相关
docker attach $CONTAINER_ID # 启动一个已存在的docker容器
docker stop $CONTAINER_ID # 停止docker容器
docker start $CONTAINER_ID # 启动docker容器
docker restart $CONTAINER_ID # 重启docker容器
docker kill $CONTAINER_ID # 强制关闭docker容器
docker pause $CONTAINER_ID # 暂停容器
docker unpause $CONTAINER_ID # 恢复暂停的容器
docker rename $CONTAINER_ID # 重新命名docker容器
docker rm $CONTAINER_ID # 删除容器
docker logs $CONTAINER_ID # 查看docker容器运行日志,确保正常运行
docker inspect $CONTAINER_ID # 查看container的容器属性,比如ip等等
docker port $CONTAINER_ID # 查看container的端口映射
docker top $CONTAINER_ID # 查看容器中正在运行的进程
docker commit $CONTAINER_ID $NEW_IMAGE_NAME:$NEW_IMAGE_TAG # 将容器保存为镜像
docker ps -a # 查看所有容器
docker stats # 查看容器的资源使用情况
3、镜像相关
docker images # 查看本地镜像
docker rmi $IMAGE_ID # 删除本地镜像
docker inspect $IMAGE_ID # 查看镜像详情
docker save $IMAGE_ID > 文件路径 # 保存镜像为离线文件
docker save -o 文件路径 $IMAGE_ID # 保存镜像为离线文件
docker load < 文件路径 # 加载文件为docker镜像
docker load -i 文件路径 # 加载文件为docker镜像
docker tag $IMAGE_ID $NEW_IMAGE_NAME:$NEW_IMAGE_TAG # 修改镜像TAG
docker run 参数 $IMAGE_ID $CMD # 运行一个镜像
docker history $IMAGE_ID # 显示镜像每层的变更内容
六、防火墙
《Linux运维总结:基于Centos系统使用iptables为docker容器配置防火墙策略》
《Linux运维总结:基于Centos系统使用firewalld为docker容器配置防火墙策略》
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》
相关文章:
![](https://img-blog.csdnimg.cn/10dcb3b909b04f4093f471d52c73f925.png)
《Linux运维实战:Docker基础总结》
一、简介 1、docker的基本结构是什么,包含哪些组件? docker的基本机构是c/s模式,即客户端/服务端模式。 由docker客户端和docker守护进程组成。docker客户端通过命令行或其它工具使用docker sdk与docker守护进程通信,发送容器管理…...
![](https://img-blog.csdnimg.cn/666580a5cd6041d29cee9edfcb351a76.png)
Clash 意外退出后 chrome / google 谷歌 浏览器无法连接互联网
解决方案: 以管理员模式打开命令行,输入:netsh winsock reset ,然后重启电脑 如果还不行的话, 在 chromevs中选中 设置>隐私和安全>安全>使用安全 dns> 使用您当前的服务提供商 即可...
![](https://www.ngui.cc/images/no-images.jpg)
89 | Python人工智能篇 —— 深度学习算法 Keras 实现 MNIST分类
本教程将带您深入探索Keras,一个开源的深度学习框架,用于构建人工神经网络模型。我们将一步步引导您掌握Keras的核心概念和基本用法,学习如何构建和训练深度学习模型,以及如何将其应用于实际问题中。 文章目录 Keras 构建实际mnist图像分类案例.1. 介绍2. 环境搭建3. 数据准…...
![](https://img-blog.csdnimg.cn/880bd47666854dbbaebaff538f95962d.png)
每天一道leetcode:剑指 Offer 32 - III. 从上到下打印二叉树 III(中等广度优先遍历)
今日份题目: 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 示例 给定二叉树: [3,9,20,null,null,15,7…...
![](https://img-blog.csdnimg.cn/bae5067273b94bf381cf1d31449bffde.png)
day10 快速排序 方法重载 和 方法递推
方法重载 斐波拉契数列问题 使用重载思想解决 public static int method(int n){if (n 2 ){return 1 ;}return (n-1)*2method(n-1);}public static int f(int n){if (n 1){return 1;}if (n 2){return 2;}return f(n-1)f(n-2);} 快速排序 思维很简单,类似二…...
![](https://img-blog.csdnimg.cn/2d9aa43161434eb1bb16bdf6e533f702.png)
Qt 6. 其他类调用Ui中的控件
1. 把主类指针this传给其他类,tcpClientSocket new TcpClient(this); //ex2.cpp #include "ex2.h" #include "ui_ex2.h"Ex2::Ex2(QWidget *parent): QDialog(parent), ui(new Ui::Ex2) {ui->setupUi(this);tcpClientSocket new TcpClient…...
![](https://www.ngui.cc/images/no-images.jpg)
PHP 的不同版本(src 版、nts 版和 win 版)之间的区别和共同点。
在下载php时会有很多版本供我们选择,PHP 的不同版本(src 版、nts 版和 win 版)之间的区别又是什么呢。 src 版本:src 版本指的是 PHP 的源代码版本,您需要自行编译并安装它。这个版本通常用于自定义编译、开发环境和高…...
![](https://img-blog.csdnimg.cn/4fd6f611291f44028746e8cc67d6f90c.png)
3 vue的if语法
vue的if语法是相当于一个标签的属性来写进去的,比如说<h1 v-if“”>。要注意的是if语句里可以自动从数据层取值的,比如<h1 v-if"message">,这里就会自动把key为message的值取过来,而如果要传一个字符串&…...
![](https://img-blog.csdnimg.cn/8154eb286ea94107a393bc18c7538ac4.png)
python基础3——流程控制
文章目录 一、操作符1.1 比较操作符1.2 逻辑操作符1.3 成员操作符1.4 身份操作符 二、流程控制2.1 条件判断2.2 循环语句2.2.1 for循环2.2.2 while循环 2.3 continue与break语句2.4 文件操作函数 三、函数3.1 定义函数3.2 作用域3.3 闭包3.4 函数装饰器3.5 内建函数 一、操作符…...
![](https://img-blog.csdnimg.cn/4ab9a5d24a8b4baba313a0a5aaa48f5c.png)
kubernetes中最小组件——Pod
目录 一、Pod简介 二、Pod的使用方式 三、Pause——Pod中底层基础容器 四、为什么kubernetes这样设计Pod 五、Pod的分类 1.自主式Pod 2.控制器管理的Pod 3.静态Pod 六、Pod容器的分类 1. 基础容器(infrastructure container) 2. 初始化容器&am…...
![](https://img-blog.csdnimg.cn/968e8a6e29bd4980816d45153cea3d70.png)
C++ 友元
文章目录 前言一、什么是友元二、友元的特性三、示例代码总结 前言 在C编程中,友元(friend)是一种特殊的关系,允许一个类或函数访问另一个类中的私有成员。 一、什么是友元 1.友元 的定义: 友元在C中可以被用于类和…...
![](https://img-blog.csdnimg.cn/img_convert/551e3a0e53ba619f21aa7761ed2a8e42.png)
Vulkan 绘制显示设计
背景 众所周知,Vulkan是个跨平台的图形渲染API,为了友好地支持跨平台,Vulkan自然也抽象出了很多接口层去对接各个操作系统,抹平系统间的差异,Swap Chains即为WSI。 其本质上是一种图像队列,此队列会按顺序…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux性能分析工具介绍(一)--cpu及功耗相关工具介绍
目录 一、引言 二、CPU及功耗分析工具介绍 ------>2.1、cpuinfo ------------>2.1.1、cpuid指令 ------>2.2、lscpu ------>2.3、turbostat ------>2.4、rdmsr ------>2.5、mpstat ------>2.6、/proc/stat ------>2.7、powertop ----------…...
![](https://img-blog.csdnimg.cn/31f1d89cd16e40c39199064c07b7155c.png#pic_center)
智能财务分析的无冕之王-奥威BI数据可视化工具
利用智能数据可视化分析工具,可极大提升财务分析效率和报表可读性,缩短从分析到决策的耗时。但财务分析的难度往往比其他分析更高,因为它的分析指标计算组合变化太多也太快。哪些数据可视化工具能胜任智能财务数据分析? 奥威BI数…...
![](https://img-blog.csdnimg.cn/d1ec3cf324f4461386d31bf0ac591ea1.png)
.NET 应用程序 部署
**硬件支持型号 点击 查看 硬件支持 详情** DTU701 产品详情 DTU702 产品详情 DTU801 产品详情 DTU802 产品详情 DTU902 产品详情 G5501 产品详情 本文内容 在设备上部署 dotnet应用,与任何其他平台的部署相同,可以2种方式: 依赖于框…...
![](https://img-blog.csdnimg.cn/ce32d16d865a44fb81284dbc99378a91.png)
Linux CentOS安装NVIDIA GPU驱动程序和NVIDIA CUDA工具包
要在CentOS上安装NVIDIA驱动程序和NVIDIA CUDA工具包,您可以按照以下步骤进行操作: 1. 准备工作: 确保您的系统具有兼容的NVIDIA GPU。您可以在NVIDIA官方网站上查找支持CUDA的GPU型号列表。如果您之前已经安装了Nouveau驱动程序并禁用了它…...
![](https://www.ngui.cc/images/no-images.jpg)
剑指Offer13.机器人的运动范围 C++
1、题目描述 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的…...
![](https://www.ngui.cc/images/no-images.jpg)
List、Map、Set打印
List List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。 普通[1,2] 1.循环 2.System.out.println(list); int数组[1,2,3,4,5,6,1,2,3] 1.for (int[] array : list)…...
![](https://www.ngui.cc/images/no-images.jpg)
软件机器人在渔业船员证书核发中自动化二次审批制证,提高效率和准确性
近年来,随着科技的不断进步,自动化软件机器人在各个领域得到了广泛应用。在渔业船员证书核发事项中,传统的审批和制证流程相对繁琐。博为小帮软件机器人可以让这一流程变得更加高效和准确。 在过去,渔业船员证书核发事项需要在省级…...
![](https://img-blog.csdnimg.cn/4a96a514205b4a8abb0bbc0fa30db429.png)
Godot4 C# vscode开发环境搭建
用vscode搭建Godot4 C# 开发环境搭建 软件Godot配置vscode配置结果参考 软件 Godot .Net版本: 下载链接vscode :自行下载.netcore7:.netcore6可能也行vscode插件: Godot配置 1.配置文件用VSCode打开 2.生成C#项目 项目–>工具–>C#->Creat…...
![](https://img-blog.csdnimg.cn/8986a14f2f354d3cae4ddf204150afbb.png)
nginx简介与安装配置,目录结构和配置文件介绍
一.nginx简介 1.简介 2.特性 二.nginx安装 1.rpm包方式 (1)下载扩展源 (2)安装扩展rpm包,nginx -V查看配置参数,后面源码安装时要用到 2.源码方式 (1)建议提前下好所需要的部…...
![](https://img-blog.csdnimg.cn/31964037611c4dd193561e4d4f4012ac.png)
CTF流量题解http4.pcapng
流量分析 导出http 打开报错 验证文件头,发现是zip。 图常片见里文可件能的包16含进:压制缩头包部,word,pdf JPG FF D8 FF E0/FF D8 FF E1 PNG 89 50 4E 47 GIF 47 49 46 38 ZIP 50 4B 03 04 RAR 52 61 72 21 MP3 49 44 33 0 改后缀 使用工具爆破。 git clone git…...
![](https://img-blog.csdnimg.cn/859967d4ed484a68924420497ece2911.png)
旷视科技AIoT软硬一体化走向深处,生态和大模型成为“两翼”?
齐奏AI交响曲的当下,赛道玩家各自精彩。其中,被称作AI四小龙的商汤科技、云从科技、依图科技、旷视科技已成长为业内标杆,并积极追赶新浪潮。无论是涌向二级市场还是布局最新风口大模型,AI四小龙谁都不甘其后。 以深耕AIoT软硬一…...
![](https://img-blog.csdnimg.cn/f67696fb63ff4486a2105957ca757b79.gif)
STM32 F103C8T6学习笔记2:GPIO的认识—GPIO的基本输入输出—点亮一个LED
今日继续学习使用 STM32 F103C8T6开发板 点亮一个LED灯,文章提供源码,测试工程,实验效果图,希望我的归纳总结会对大家有帮助~ 目录 GPIO的认识与分类 : 引脚安排整理: 定时器的引脚例举: …...
![](https://img-blog.csdnimg.cn/7c06c2137b8b480393a0f7a1e795c923.png)
数组相关练习
数组练习 将数组转化成字符串数组拷贝求数组元素的平均值查找数组中指定元素(顺序查找)二分查找冒泡排序数组逆序 将数组转化成字符串 import java.util.Arrays;public class Text1 {public static void main(String[] args) {int[] arr {5, 6, 4, 2};System.out.println(Arr…...
![](https://img-blog.csdnimg.cn/7213eaa228a347ad8af84bb7737635df.png)
Leetcode-每日一题【剑指 Offer 11. 旋转数组的最小数字】
题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4…...
![](https://img-blog.csdnimg.cn/68b925d20c1d4d18aa7b1a5455066a14.png)
git教程(第一次使用)
一、gitee和github区别 二、git使用 下载地址 windows:https://gitforwindows.org/ mac:http://sourceforge.net/projects/git-osx-installer/ 1.git初次运行前的配置 (1)配置用户信息 git config --global user.name "…...
![](https://img-blog.csdnimg.cn/e9263793afbd4f58b1e33ae763b0f649.png)
Autoware.ai1.14.0自动驾驶-Demo运行
Autoware.ai1.14.0自动驾驶-Demo运行 数据准备 下载数据: wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_data.tar.gz wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_150324.tar.gz一定要注意解压文件是在.auto…...
![](https://www.ngui.cc/images/no-images.jpg)
AttributeConverter
AttributeConverter 是 JPA 中的一个接口,,用于实体属性和 数据库字段,,之间的转换,,,类似mybatis中的typeHandler AttributeConverter使用 定义一个类实现AttributeConverter接口,…...
![](https://img-blog.csdnimg.cn/34cec3521f1e481fab5498e8a5b92610.png)
【逗老师的PMP学习笔记】8、项目质量管理
目录 一、规划质量管理1、质量管理的发展历史2、戴明环,PDCA理论3、【关键输入】事业环境因素4、【关键输入】成本效益分析5、【关键工具】质量成本6、【关键输出】质量管理计划7、插一嘴,项目的三个标准8、【关键工具】质量测量指标 二、管理质量1、【关…...
![](/images/no-images.jpg)
php网站开发实例pdf/中国百强县市榜单
作者介绍 经海路薄荷点点 京东物流数据PM一枚,“一个数据人的自留地” 创作者联盟成员。 专注“BI”,带你发现数据产品的更多可能性。 今天我们来谈谈 BI 系统里很有亮点的一个场景应用——决策建议。 01 什么是决策建议? 有决策建议的 B…...
深圳网络做网站/营销是什么意思
上一篇中总结了iOS中音效和音频播放的最基本使用方法,其中音频的播放控制是使用AVFoundation.framework框架中的AVAudioPlayer播放器对象来实现的,而这里音频的录制则是使用了同样框架下的一个叫AVAudioRecorder的录音机对象来实现,这两个类的…...
![](https://img-blog.csdnimg.cn/img_convert/729d63cd4c8b48558afe7c8a960eefdc.png)
工程建设官方网站/百度应用
Solr介绍Solr 是基于Lucene的面向企业搜索的web应用Solr 采用Java开发,是一个独立的高性能的企业级搜索应用服务器,它对外提供类似于Web-service的API接口,用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件࿰…...
![](/images/no-images.jpg)
wordpress本地安装/aso优化技巧大aso技巧
1.查看 Job 信息hadoop job -list 2.杀掉 Jobhadoop job –kill job_id3.指定路径下查看历史日志汇总hadoop job -history output-dir 4.作业的更多细节hadoop job -history all output-dir 5.打印map和reduce完成百分比和所有计数器hadoop job –st…...
![](https://images0.cnblogs.com/blog/331622/201305/19122340-83a7d761f263483e84cfd8d8b0b360e1.gif)
潍坊专业网站制作公司营销/企业网站推广模式
转载于:https://www.cnblogs.com/zhouwenwu/archive/2013/05/19/3086688.html...
![](https://img-blog.csdnimg.cn/img_convert/2ad7fadb056ed177f0af0ecc6a524d21.png)
做网站建设哪家好/怎么申请网站
This和super都是Java中的关键字,this表示当前对象,可以调用方法、属性、指向对象本身。super表示父类,可以调用父类的方法、属性、对象。This在Java中使用有三种: 第一,指向当前对象 1 package day03;2 3 4 5 publi…...