-
vs2019安装和使用教程(详细)
2019-03-16 20:45:35本篇博客是vs2017安装和使用教程(详细)的姊妹篇 vs2019已经在4月2日正式发布,vs2019发布会请看这个链接: vs2019发布活动 vs2019和vs2017一样强大,项目兼容,不用互相删除,而且C/C++,Python,F#,ios,...本篇博客是vs2017安装和使用教程(详细)的姊妹篇
vs2019已经在4月2日正式发布,vs2019发布会请看这个链接:
vs2019发布活动
vs2019和vs2017一样强大,项目兼容,不用互相删除,而且C/C++,Python,F#,ios,Android,Web,Node.js,Azure,Unity,HTML,JavaScript等开发都可以执行,相关介绍可以看这个官方网址:Visual Studio 2019
如果想编写Java的话,可以使用vscode,博主也提供了相关教程:
vscode安装和使用教程 Java
如果对于算法设计与分析感兴趣的可以订阅我的专栏:算法设计与分析
如果对于深度学习感兴趣的可以订阅我的专栏:Pytorch使用教程和范例
如果对于深度学习行人重识别(Person Re-ID)感兴趣的可以去我的github项目学习:行人重识别github开源库——HJL-re-id
目录
五、RC版更新到正式发布版(4月2号之后下载的用户可忽略本节内容)
*3.博客:MFC实现office界面的画图小项目(超超级详细)内附MFC安装步骤
1.博客:OpenCV 生成水墨质感的图片 黑暗之魂三 只狼:影逝二度
2.博客:利用cv2和PyQt5实现类似视频格式工厂的小项目
1.博客:VGG19处理cifar-10数据集的TensorFlow实现
2.博客:VGG16处理cifar-10数据集的PyTorch实现
3.博客:利用Pytorch和TensorFlow分别实现DCGAN生成动漫头像
关于RC版用户更新到正式发布版可参看第五节,4月2号之后下载的用户可忽略本节内容
一、官网下载
1.下载网址:微软官网
2.官网首页
3.选择菜单栏最右边的更多,在“所有 Microsoft”下拉一栏选择“Visual Studio”进入
4.进入之后是这个界面,选择社区版Community下载
5.如果不想从官网进入也可以直接进入这个网址:VS下载,选择免费的社区版,会开始自动下载
6.进入这个界面可以手动下载(如果不能自动下载的话)
二、安装
1.点击下载程序,会显示这个界面
2.点击“继续”,等待安装程序安装完成
4.安装程序下载安装验证完毕,将会提示进入这个界面
5.为了方便起见,这里仅展示安装C++功能,在之后博主也会相继更新其他语言和工具的安装
6.工作负载这里我们可以勾选使用C++的桌面开发和Visual Studio 扩展开发
7.安装位置可以在下面更改,博主建议不用更改
修改不了缓存和共享组件、工具和SDK的位置可参看博主博客:vs2017安装和使用教程(详细)中的修改方法(软链接)
8.单个组件可以自行勾选,工作负载里勾选了项目相关的组件也会在单个组件中自行勾选上
9. 语言包有很多选项,这里默认是中文(简体)
10.之后点击安装
三、等待安装
1.等待界面
2.完成获取包
安装SDK时间很长,不要认为是卡死哦~
3.安装完成
四、启动
1.选择自己喜欢的样式还是和vs2017的一样,第一次启动会耗时大概10秒
2.进入主界面,可以选择打开最近项,也可以直接点击右下角继续但无需代码
3.来到空界面
五、RC版更新到正式发布版(4月2号之后下载的用户可忽略本节内容)
1.我们点击上方菜单栏的帮助,下拉菜单里我们点击检查更新,会弹出更新到正式发布版
2.我们点击更新
3.开始下载并安装更新
4.正在完成
6.可以看到我们正式更新到vs2019,RC字样以及去掉。接下来就请尽情使用vs2019吧!
承接上面的步骤,在这里博主提供自己的几个样例供大家享用~
六、开始自己的第一个程序
1.博客:开始自己的第一个C++程序
2.博客:开始自己的第一个C#程序——递归求解斐波那契数列
3.博客:开始自己的第一个Python程序——九九乘法表
4.博客:开始自己的第一个F#程序
5.博客:待更新...
七、面向对象
1.博客:构造有理数类实现加减乘(除)四则运算
2.博客:构造复数类实现加减乘除四则运算
*3.博客:MFC实现office界面的画图小项目(超超级详细)内附MFC安装步骤
4.博客:待更新...
八、算法设计与分析
1.博客:分治法解决邮局选址问题 C++
2.博客:动态规划算法实现0-1背包问题 C++
3.博客:回溯法解决作业分配问题 C++
4.博客:待更新...
九、数字图像处理
1.博客:OpenCV 生成水墨质感的图片 黑暗之魂三 只狼:影逝二度
2.博客:利用cv2和PyQt5实现类似视频格式工厂的小项目
3.博客:数字图像处理 染色体计数 Python实现
4.博客:待更新...
十、深度学习
1.博客:VGG19处理cifar-10数据集的TensorFlow实现
2.博客:VGG16处理cifar-10数据集的PyTorch实现
3.博客:利用Pytorch和TensorFlow分别实现DCGAN生成动漫头像
4.博客:各种深度学习框架实现猫狗大战
5.博客:待更新...
可参照博主博客:vs2017安装和使用教程(详细)
-
Eclipse中使用SVN
2014-03-29 20:31:12概述在我们的日常工作中,经常会用到SVN,大多数都是搭配Eclipse/MyEclipse使用。本文主要介绍SVN在Eclipse中的一些最长用的功能,包括SVN插件的下载使用、上传代码到服务器、从服务器下载代码、从服务器更新代码、...推荐阅读
概述
在我们的日常工作中,经常会用到SVN,大多数都是搭配Eclipse/MyEclipse使用。本文主要介绍SVN在Eclipse中的一些最长用的功能,包括SVN插件的下载使用、上传代码到服务器、从服务器下载代码、从服务器更新代码、解决代码冲突。
本文链接:http://blog.csdn.net/v123411739/article/details/22512133
1.在Eclipse里下载Subclipse插件(建议使用方法三)
方法一:从Eclipse Marketplace里面下载
具体操作:打开Eclipse --> Help --> Eclipse Marketplace --> 在Find中输入subclipse搜索 --> 找到subclipse点击install方法二:从Install New Software里下载
具体操作:打开Eclipse --> Help --> Install New Software --> 点击add按钮,输入下载地址:http://subclipse.tigris.org/update_1.10.x,点击OK--> 将Subclipse和SVNKit打勾后,一路next或agree到结束即可(此处由于本人已经安装,因此next是灰色的)方法三:直接下载subclipse的zip文件(建议使用)
具体操作:百度搜索subclipse-site-1.10.x(看自己想安装哪个版本) --> 解压缩后在eclipse目录下找到dropins文件夹,进入dropins文件夹并新建一个文件夹名为svn,将features和plugins文件夹复制到svn目录下-->重启下Eclipse即可2.上传project到SVN服务器
1.在Eclipse中,从Show View里调出SVN资源库视图
2.在SVN资源库窗口的空白位置右键选择新建资源库位置
3.填好服务器的地址
4.资源库导入成功,SVN资源库视图下出现导入的资源库
5.新建project,写好project的初始版本
6.右键Project --> Team --> Share Project
7.选择Repository类型为SVN --> 点击next
8.使用已有资源库位置,或者创建新的资源库位置
9.使用项目名称作为文件夹名 --> 点击Finish --> 输入用户名和密码(此步不一定每个人都有)
10.自由选择是否打开Synchronize视图,建议打开
11.右键project --> Team --> 提交
12.自由选择是否写日志(建议写)
13.点击OK --> 上传到服务器成功,此时刷新对应的资源库,资源库下出现上传的Project
3.从服务器下载project到本地
1.在资源库视图点击资源库左边的小三角形后出现该资源库下的所有Project(如果还没有资源库则参考上面新建一个资源库位,填入资源库地址即可)
2.选择要下载的project右键 --> 检出为
3.自由选择是否更改属性(建议使用默认) --> Finish --> 下载成功
4.从服务器更新代码
1.右键项目Project --> 与资源库同步2.选择打开Synchronize视图3.与本地代码有不同的服务器代码将显示在Synchronize视图下,双击某个代码文件可以查看本地代码和服务器代码的对比,加号的为新增的文件(本地还没有)4.将模式切换到Incoming Mode,这个模式下的代码都是服务器更新的代码,需要下载到本地的,右键要更新的文件 --> Team --> 更新5.如果出现下图这个符号,则代表本地代码和服务器代码有冲突(即:本地代码在未更新到最新版本的情况下,对代码进行了更改;或者在你对a.java写代码的期间,有人往服务器上传了新的a.java代码,使得代码间出现了冲突),有冲突时需要先解决冲突再合并代码
5.冲突情况的解决办法
冲突情况1:服务器代码和自己代码改动的地方相同
这种情况比较复杂,一般只能将自己的代码保存一份到本地,然后直接将服务器代码更新下来,然后在新的代码上修改自己的逻辑。冲突情况2:服务器代码和自己代码改动的地方不同
这种情况比较常见,就是你跟别的开发者都在更改同一个文件,但是由于开发任务是分开的,所以更改的地方是不同的,解决办法如下。1、双击冲突文件进入比较视图2、找到服务器上新增的但本地没有的代码块,选中此代码块,点击右上角的按钮(如下图箭头指向的按钮)将服务器代码复制到本地(其他地方也同此操作),如果点击按钮没用,则关闭比较视图重新打开
下图为成功将服务器代码复制到本地代码,
3.将所有服务器上新增的代码复制到本地文件后,右键冲突文件选择标记为合并即可,此时该文件就会消失在Synchronize视图下,并且该文件的代码已经成功将本地代码和远程代码合并到一起
-
CodeBlocks的安装及使用
2017-10-02 18:42:27CodeBlocks的安装及使用...二、进入下载页面三、一般使用的话选择安装二进制版就可以四、选择合适的版本,这里我下载的是适用于windows的带编译器等工具的版本,也是大家最常用的版本五、这里我选择的是Sourceforge.neCodeBlocks的安装及使用
下载并安装CodeBlocks
一、在百度等搜索引擎搜索codeblocks或直接输入网址http://www.codeblocks.org/进入CodeBlocks官网
二、进入下载页面
三、一般使用的话选择安装二进制版就可以
四、选择合适的版本,这里我下载的是适用于windows的带编译器等工具的版本,也是大家最常用的版本
注:带mingw的为带编译器的版本,建议大家下这个,安装完成就可直接使用(例如codeblocks-20.03mingw-setup.exe)五、这里我选择的是Sourceforge.net
如果速度可以的话直接点击direct link下载即可,或者点击mirror,手动选择更合适的mirror
六、下载完成后启动安装程序
根据需要选择是否立即运行完成安装
CodeBlocks的使用
一、首次使用会有以下界面
使用默认的编译器
根据需要选择关联文件二、创建第一个C/C++程序
1、创建一个工程
方法一:
方法二:
2、选择控制台应用程序
也可按F9快捷键实现编译并运行Hello world!
-
docker-compose教程(安装,使用, 快速入门)
2017-12-03 22:31:45教程基于ubuntu下最新的compose版本3 ... 1.Compose介绍 Docker Compose是一个用来定义和运行复杂应用的Docker工具。...使用Docker Compose不再需要使用shell脚本来启动容器。 Compose 通过一个配...教程基于ubuntu下最新的compose版本3
参考: https://docs.docker.com/compose/overview/1.Compose介绍
Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。2.Compose和Docker兼容性
compose文件格式版本 docker版本 3.4 17.09.0+ 3.3 17.06.0+ 3.2 17.04.0+ 3.1 1.13.1+ 3.0 1.13.0+ 2.3 17.06.0+ 2.2 1.13.0+ 2.1 1.12.0+ 2.0 1.10.0+ 1.0 1.9.1.+ Docker版本变化说明:
Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布,比如17.03就是2017年3月。
Docker的linux发行版的软件仓库从以前的https://apt.dockerproject.org和https://yum.dockerproject.org变更为目前的https://download.docker.com, 软件包名字改为docker-ce和docker-ee。
3.安装docker
Docker的社区版(Docker Community Edition)叫做docker-ce。老版本的Docker包叫做docker或者docker-engine,如果安装了老版本的docker得先卸载然后再安装新版本的docker。docker的发展非常迅速,apt源的更新往往比较滞后。所以docker官网推荐的安装方式都是下载docker安装脚本安装。
卸载老旧的版本(若未安装过可省略此步):$ sudo apt-get remove docker docker-engine docker.io
安装最新的docker:
$ curl -fsSL get.docker.com -o get-docker.sh $ sudo sh get-docker.sh
shell会提示你输入sudo的密码,然后开始执行最新的docker过程
或者$ curl -sSL https://get.docker.com/ | sh
确认Docker成功最新的docker:
$ sudo docker run hello-world
4.安装docker-compose
两种最新的docker安装方式
1.从github上下载docker-compose二进制文件安装
- 下载最新版的docker-compose文件
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
若是github访问太慢,可以用daocloud下载
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
- 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
- 测试安装结果
$ docker-compose --version docker-compose version 1.16.1, build 1719ceb
2.pip安装
sudo pip install docker-compose
5.docker-compose文件结构和示例
docker-compose文件结构
docker-compose.yml:
version: "3" services: redis: image: redis:alpine ports: - "6379" networks: - frontend deploy: replicas: 2 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure db: image: postgres:9.4 volumes: - db-data:/var/lib/postgresql/data networks: - backend deploy: placement: constraints: [node.role == manager] vote: image: dockersamples/examplevotingapp_vote:before ports: - 5000:80 networks: - frontend depends_on: - redis deploy: replicas: 2 update_config: parallelism: 2 restart_policy: condition: on-failure result: image: dockersamples/examplevotingapp_result:before ports: - 5001:80 networks: - backend depends_on: - db deploy: replicas: 1 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure worker: image: dockersamples/examplevotingapp_worker networks: - frontend - backend deploy: mode: replicated replicas: 1 labels: [APP=VOTING] restart_policy: condition: on-failure delay: 10s max_attempts: 3 window: 120s placement: constraints: [node.role == manager] visualizer: image: dockersamples/visualizer:stable ports: - "8080:8080" stop_grace_period: 1m30s volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: placement: constraints: [node.role == manager] networks: frontend: backend: volumes: db-data:
docker-compose使用示例
通过docker-compose构建一个在docker中运行的基于python flask框架的web应用。
注意:确保你已经安装了Docker Engine和Docker Compose。 您不需要安装Python或Redis,因为这两个都是由Docker镜像提供的。
Step 1: 定义python应用
- 1 .创建工程目录
$ mkdir compose_test $ cd compose_test $ mkdir src # 源码文件夹 $ mkdir docker # docker配置文件夹
目录结构如下:
└── compose_test ├── docker │ └── docker-compose.yml ├── Dockerfile └── src ├── app.py └── requirements.txt
- 2 .在compose_test/src/目录下创建python flask应用 compose_test/src/app.py文件。
from flask import Flask from redis import Redis app = Flask(__name__) redis = Redis(host='redis', port=6379) @app.route('/') def hello(): count = redis.incr('hits') return 'Hello World! I have been seen {} times.\n'.format(count) if __name__ == "__main__": app.run(host="0.0.0.0", debug=True)
- 3 .创建python 需求文件 compose_test/src/requirements.txt
flask redis
Step 2: 创建容器的Dockerfile文件
一个容器一个Dockerfile文件,在compose_test/目录中创建Dockerfile文件:
FROM python:3.7 COPY src/ /opt/src WORKDIR /opt/src RUN pip install -r requirements.txt CMD ["python", "app.py"]
Dockerfile文件告诉docker了如下信息:
从Python 3.6镜像开始构建一个容器镜像。
复制src(即compose_test/src)目录到容器的/opt/src目录。
将容器的工作目录设置为/opt/src(通过docker exec -it your_docker_container_id_or_name bash 进入容器后的默认目录)。
安装Python依赖关系。
将容器的默认命令设置为python app.py。Step 3: 定义docker-compose脚本
在compose_test/docker/目录下创建docker-compose.yml文件,并在里面定义服务,内容如下:
version: '3' services: web: build: ../ ports: - "5000:5000" redis: image: "redis:3.0.7"
这个compose文件定义了两个服务,即定义了web和redis两个容器。
web容器:
* 使用当前docker-compose.yml文件所在目录的上级目录(compose_test/Dockerfile)中的Dockerfile构建映像。
* 将容器上的暴露端口5000映射到主机上的端口5000。 我们使用Flask Web服务器的默认端口5000。
redis容器:
* redis服务使用从Docker Hub提取的官方redis镜像3.0.7版本。Step 4: 使用Compose构建并运行您的应用程序
在compose_test/docker/目录下执行docker-compose.yml文件:
$ docker-compose up # 若是要后台运行: $ docker-compose up -d # 若不使用默认的docker-compose.yml 文件名: $ docker-compose -f server.yml up -d
然后在浏览器中输入http://0.0.0.0:5000/查看运行的应用程序。
Step 5: 编辑compose文件以添加文件绑定挂载
上面的代码是在构建时静态复制到容器中的,即通过Dockerfile文件中的COPY src /opt/src命令实现物理主机中的源码复制到容器中,这样在后续物理主机src目录中代码的更改不会反应到容器中。
可以通过volumes 关键字实现物理主机目录挂载到容器中的功能(同时删除Dockerfile中的COPY指令,不需要创建镜像时将代码打包进镜像,而是通过volums动态挂载,容器和物理host共享数据卷):version: '3' services: web: build: ../ ports: - "5000:5000" volumes: - ../src:/opt/src redis: image: "redis:3.0.7"
通过volumes(卷)将主机上的项目目录(compose_test/src)挂载到容器中的/opt/src目录下,允许您即时修改代码,而无需重新构建映像。
Step 6: 重新构建和运行应用程序
使用更新的compose文件构建应用程序,然后运行它。
$ docker-compose up -d
6.compose常用服务配置参考
Compose文件是一个定义服务,网络和卷的YAML文件。 Compose文件的默认文件名为docker-compose.yml。
**提示:您可以对此文件使用.yml或.yaml扩展名。 他们都工作。
与docker运行一样,默认情况下,Dockerfile中指定的选项(例如,CMD,EXPOSE,VOLUME,ENV)都被遵守,你不需要在docker-compose.yml中再次指定它们。
同时你可以使用类似Bash的$ {VARIABLE} 语法在配置值中使用环境变量,有关详细信息,请参阅变量替换。
本节包含版本3中服务定义支持的所有配置选项。
build
build 可以指定包含构建上下文的路径:
version: '2' services: webapp: build: ./dir
或者,作为一个对象,该对象具有上下文路径和指定的Dockerfile文件以及args参数值:
version: '2' services: webapp: build: context: ./dir dockerfile: Dockerfile-alternate args: buildno: 1
webapp服务将会通过./dir目录下的Dockerfile-alternate文件构建容器镜像。
如果你同时指定image和build,则compose会通过build指定的目录构建容器镜像,而构建的镜像名为image中指定的镜像名和标签。build: ./dir image: webapp:tag
这将由./dir构建的名为webapp和标记为tag的镜像。
context
包含Dockerfile文件的目录路径,或者是git仓库的URL。
当提供的值是相对路径时,它被解释为相对于当前compose文件的位置。 该目录也是发送到Docker守护程序构建镜像的上下文。dockerfile
备用Docker文件。Compose将使用备用文件来构建。 还必须指定构建路径。
args
添加构建镜像的参数,环境变量只能在构建过程中访问。
首先,在Dockerfile中指定要使用的参数:ARG buildno ARG password RUN echo "Build number: $buildno" RUN script-requiring-password.sh "$password"
然后在args键下指定参数。 你可以传递映射或列表:
build: context: . args: buildno: 1 password: secret build: context: . args: - buildno=1 - password=secret
** 注意:YAML布尔值(true,false,yes,no,on,off)必须用引号括起来,以便解析器将它们解释为字符串。
image
指定启动容器的镜像,可以是镜像仓库/标签或者镜像id(或者id的前一部分)
image: redis image: ubuntu:14.04 image: tutum/influxdb image: example-registry.com:4000/postgresql image: a4bc65fd
如果镜像不存在,Compose将尝试从官方镜像仓库将其pull下来,如果你还指定了build,在这种情况下,它将使用指定的build选项构建它,并使用image指定的名字和标记对其进行标记。
container_name
指定一个自定义容器名称,而不是生成的默认名称。
container_name: my-web-container
由于Docker容器名称必须是唯一的,因此如果指定了自定义名称,则无法将服务扩展到多个容器。
volumes
卷挂载路径设置。可以设置宿主机路径 (HOST:CONTAINER) 或加上访问模式 (HOST:CONTAINER:ro),挂载数据卷的默认权限是读写(rw),可以通过ro指定为只读。
你可以在主机上挂载相对路径,该路径将相对于当前正在使用的Compose配置文件的目录进行扩展。 相对路径应始终以 . 或者 .. 开始。volumes: # 只需指定一个路径,让引擎创建一个卷 - /var/lib/mysql # 指定绝对路径映射 - /opt/data:/var/lib/mysql # 相对于当前compose文件的相对路径 - ./cache:/tmp/cache # 用户家目录相对路径 - ~/configs:/etc/configs/:ro # 命名卷 - datavolume:/var/lib/mysql
但是,如果要跨多个服务并重用挂载卷,请在顶级volumes关键字中命名挂在卷,但是并不强制,如下的示例亦有重用挂载卷的功能,但是不提倡。
version: "3" services: web1: build: ./web/ volumes: - ../code:/opt/web/code web2: build: ./web/ volumes: - ../code:/opt/web/code
** 注意:通过顶级volumes定义一个挂载卷,并从每个服务的卷列表中引用它, 这会替换早期版本的Compose文件格式中volumes_from。
version: "3" services: db: image: db volumes: - data-volume:/var/lib/db backup: image: backup-service volumes: - data-volume:/var/lib/backup/data volumes: data-volume:
command
覆盖容器启动后默认执行的命令。
command: bundle exec thin -p 3000
该命令也可以是一个类似于dockerfile的列表:
command: ["bundle", "exec", "thin", "-p", "3000"]
links
链接到另一个服务中的容器。 请指定服务名称和链接别名(SERVICE:ALIAS),或者仅指定服务名称。
web: links: - db - db:database - redis
在当前的web服务的容器中可以通过链接的db服务的别名database访问db容器中的数据库应用,如果没有指定别名,则可直接使用服务名访问。
链接不需要启用服务进行通信 - 默认情况下,任何服务都可以以该服务的名称到达任何其他服务。 (实际是通过设置/etc/hosts的域名解析,从而实现容器间的通信。故可以像在应用中使用localhost一样使用服务的别名链接其他容器的服务,前提是多个服务容器在一个网络中可路由联通)
links也可以起到和depends_on相似的功能,即定义服务之间的依赖关系,从而确定服务启动的顺序。
external_links
链接到docker-compose.yml 外部的容器,甚至并非 Compose 管理的容器。参数格式跟 links 类似。
external_links: - redis_1 - project_db_1:mysql - project_db_1:postgresql
expose
暴露端口,但不映射到宿主机,只被连接的服务访问。
仅可以指定内部端口为参数expose: - "3000" - "8000"
ports
暴露端口信息。
常用的简单格式:使用宿主:容器 (HOST:CONTAINER)格式或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。** 注意:当使用 HOST:CONTAINER 格式来映射端口时,如果你使用的容器端口小于 60 你可能会得到错误得结果,因为 YAML 将会解析 xx:yy 这种数字格式为 60 进制。所以建议采用字符串格式。
简单的短格式:
ports: - "3000" - "3000-3005" - "8000:8000" - "9090-9091:8080-8081" - "49100:22" - "127.0.0.1:8001:8001" - "127.0.0.1:5000-5010:5000-5010" - "6060:6060/udp"
在v3.2中ports的长格式的语法允许配置不能用短格式表示的附加字段。
长格式:ports: - target: 80 published: 8080 protocol: tcp mode: host
target:容器内的端口
published:物理主机的端口
protocol:端口协议(tcp或udp)
mode:host 和ingress 两总模式,host用于在每个节点上发布主机端口,ingress 用于被负载平衡的swarm模式端口。restart
no是默认的重启策略,在任何情况下都不会重启容器。 指定为always时,容器总是重新启动。 如果退出代码指示出现故障错误,则on-failure将重新启动容器。
restart: "no" restart: always restart: on-failure restart: unless-stopped
environment
添加环境变量。 你可以使用数组或字典两种形式。 任何布尔值; true,false,yes,no需要用引号括起来,以确保它们不被YML解析器转换为True或False。
只给定名称的变量会自动获取它在 Compose 主机上的值,可以用来防止泄露不必要的数据。environment: RACK_ENV: development SHOW: 'true' SESSION_SECRET: environment: - RACK_ENV=development - SHOW=true - SESSION_SECRET
** 注意:如果你的服务指定了build选项,那么在构建过程中通过environment定义的环境变量将不会起作用。 将使用build的args子选项来定义构建时的环境变量。
pid
将PID模式设置为主机PID模式。 这就打开了容器与主机操作系统之间的共享PID地址空间。 使用此标志启动的容器将能够访问和操作裸机的命名空间中的其他容器,反之亦然。即打开该选项的容器可以相互通过进程 ID 来访问和操作。
pid: "host"
dns
配置 DNS 服务器。可以是一个值,也可以是一个列表。
dns: 8.8.8.8 dns: - 8.8.8.8 - 9.9.9.9
-
【Spring Boot】使用Spring Boot来搭建Java web项目以及开发过程
2019-06-19 18:28:58该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。SpringMVC是非常伟大的框架,... -
npm太慢, 淘宝npm镜像使用方法
2017-03-20 09:48:14如何使用 有很多方法来配置npm的registry地址,下面根据不同情境列出几种比较常用的方法。以淘宝npm镜像举例: 1.临时使用npm --registry https://registry.npm.taobao.org install express2.持久使用npm config ... -
IntelliJ IDEA使用教程 (总目录篇)
2017-08-21 14:12:52IntelliJ IDEA使用教程 (总目录篇) -
TYPORA的使用手册
2018-01-08 11:45:48标题的使用 标题的使用格式 标题Typora显示形式是 文本居中 文本居中使用格式 文本居中在Typora中显示形式是 下划线 下划线使用格式 下划线在Typora显示形式是 删除线 删除线使用格式 删除线在Typora显示形式... -
解决TeamViewer可免费用于个人用途,但所使用的设备数量受限。您已达到设备数量上限
2020-07-19 11:04:24应该是Teamviewer出于安全考虑,强制要求...而可信设备会算在上面设备数量限制内的,因此建议如果不是经常使用的设备请添加信任的时候选择:不,仅使用一次。 如果已经受到限制了怎么解决呢? 解决方案一:方案一如 -
colorUI框架使用教程
2019-03-10 16:43:30最近在帮别人做一个小程序,问起熟悉小程序的同伴们用什么UI框架比较好,在网上也又搜了一遍,感觉这个突然出现的ColorUI很有意思,也很精美,于是乎就试了一下,这里说一下自己初次使用所遇到的坑与感想: ... -
pip和pip3(安装与使用)详细讲解
2018-09-26 21:38:10在使用python的时候,经常使用到pip这个工具,可以很方便的线上安装依赖库, 当然pip还有很多参数都可以帮我们去查询一些库信息, 在安装python的时候,下载带有pip的安装包就可以直接安装pip啦, 当然没有带pip的... -
C/C++ 开发神器 CLion 使用入门
2018-10-23 14:18:19同样支持python哦,相信使用过IntelliJ idea开发过java的盆友都很清楚该IDE的强大,所以做为Jetbrains旗下的c/c++开发工具CLion同样包含了许多智能功能来提高开发人员的生产力,提高开发人员... -
IntelliJ IDEA 超实用使用技巧分享
2019-10-16 13:39:49最近受部门的邀请,给入职新人统一培训IDEA,发现有很多新人虽然日常开发使用的是IDEA,但是还是很多好用的技巧没有用到,只是用到一些基本的功能,蛮浪费IDEA这个优秀的IDE。 同时,在这次分享之后,本人自己也... -
Vue中slot的使用(通俗易懂)
2018-06-01 14:00:35在vue中使用slot插槽个人理解:是对组件的扩展,通过slot插槽向组件内部指定位置传递内容,通过slot可以父子传参;开发背景:正常情况下,<Child><span style=”color:red;”>hello ... -
超级详细的Maven使用教程
2018-08-13 13:05:40如今我们构建一个项目需要用到很多第三方的类库,如写一个使用Spring的Web项目就需要引入大量的jar包。一个项目Jar包的数量之多往往让我们瞠目结舌,并且Jar包之间的关系错综复杂,一个Jar包往往又会引用其他Jar包,... -
pdf.js使用方法
2018-06-08 14:46:32项目中 显示 pdf 的功能,浏览过不少的技术帖,都不太理想,花了点时间研究了下pdf.js正确使用方法,总结下:1.防止自己忘记 2.工作留有痕迹 3.供大家参考借鉴 pdf.js: 将 PDF 文件解析后生成一张 .png 图片,利用 ... -
Nacos做服务注册中心使用案例
2020-09-21 04:27:51关于环境搭建部分请借鉴:nacos做配置中心和服务注册中心 的完整使用案例 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-... -
visual studio新手使用教程
2018-09-18 12:37:39目录 1.下载安装Visual Studio 2.新建工程 ...对于刚刚接触编程的新手来说,最先需要熟练掌握的当然是语言之祖——C语言,而C语言编译器首当其冲的必然是visual studio ,小编入门使用VC6.0,... -
Gradle的使用教程
2018-08-08 19:28:28Gradle是一个好用的构建工具 ,使用它的原因是: 配置相关依赖代码量少,不会像maven一样xml过多 打包编译测试发布都有,而且使用起来方便 利用自定义的任务可以完成自己想要的功能 二、安装 下载地址... -
Mac安装并使用telnet命令操作
2019-06-19 11:26:45自从mac系统升级后,就无法使用telnet,但使用ping有时又不够准确,因此寻找一些可以使用telnet的操作方式。 brew install telnet 在已安装brew的情况下,使用上述命令即可安装telnet,但我操作的时候有报错,... -
使用anaconda安装pytorch
2019-07-09 15:14:33使用anaconda安装pytorch使用anaconda安装pytorch过程中出现的问题使用anaconda直接从网上下载使用anaconda从本地下载torch使用anaconda从本地下载torchvision 使用anaconda安装pytorch过程中出现的问题 在使用... -
为什么越来越多的开发者选择使用Spring Boot?
2016-10-16 15:26:05使用Java做Web应用开发已经有近20年的历史了,从最初的Servlet1.0一步步演化到现在如此多的框架,库以及整个生态系统。经过这么长时间的发展,Java作为一个成熟的语言,也演化出了非常成熟的生态系统,这也是许多... -
MySQL索引的创建与使用
2018-08-06 18:49:59声明:本人主要简单示例MySQL中的单列索引、组合索引的创建与使用。 索引的创建: 建表时创建: CREATE TABLE 表名( 字段名 数据类型 [完整性约束条件], ……, [UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY ... -
使用arpspoof进行ARP欺骗
2019-12-25 11:30:37使用arpspoof进行ARP欺骗 使用虚拟机上的kail进行测试 基本原理 我们将运行实际的ARP中毒攻击,重定向数据包流并使其流经我们的设备 基本命令 arpspooef -i 网卡 -t 目标ip 默认网关 测试 下面是我作为被攻击的... -
vue中使用vuex(超详细)
2019-07-15 14:23:08vuex是使用vue中必不可少的一部分,基于父子、兄弟组件,我们传值可能会很方便,但是如果是没有关联的组件之间要使用同一组数据,就显得很无能为力,那么vuex就很好的解决了我们这种问题,它相当于一个公共仓库,... -
idea(一)使用详解
2018-06-14 19:10:04IDEA的使用总结 idea作为目前java开发最舒服的工具,针对其使用做一些总结,提高开发效率: 安装和激活 初始常用配置 快捷键 常见用法总结 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl + Q 插入链接... -
oracle的 listagg() WITHIN GROUP () 行转列函数的使用
2018-07-11 18:12:251.使用条件查询 查询部门为20的员工列表 -- 查询部门为20的员工列表 SELECT t.DEPTNO,t.ENAME FROM SCOTT.EMP t where t.DEPTNO = '20' ; 效果: 2.使用 listagg() WITHIN GROUP () 将多行合并成一行(比较... -
(图文)最详细的XAMPP的安装及使用教程
2018-05-19 13:14:29XAMPP的安装及使用教程 1、简介 2、安装运行 3、配置数据库 XAMPP的安装及使用教程 1、简介 XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包。这个软件包... -
idea的安装使用快速入门教程
2020-05-04 01:39:26学习Java的时候,一般都会使用到IntelliJ IDEA来开发, 下面介绍idea的安装使用。 IDEA安装使用教程一、 下载安装IDEA1.1 安装IDEA二、 IDEA安装目录的结构介绍三、 IDEA快速入门四、 创建package、class五、 IDEA... -
Java中Math函数的使用
2018-04-08 11:49:40Java中Math函数的使用 说到Java中的Math函数,大家肯定不陌生,但是在真正使用的时候却犯了难,那么多方法,我们到底需要使用哪个呢? 为此,我特地研究了一些Math常用函数的使用,以方便大家使用。 算术计算 ...
-
公园下山
-
springMvc 处理模型数据 ModelAndView Map及Model @SeesionAttributes @ModelAttribute
-
国际专利分类IPC介绍.ppt
-
pcstat查看文件在系统中的缓存情况
-
Redis数据库入门与使用
-
小程序 bindtouchmove 使用拖动按钮 页面跟着滑动并拖动卡顿感 问题
-
three.js入门速成
-
c++ 字符串转换为数值
-
备战2021软考网络规划设计师顺利通关培训套餐
-
05-SpringBoot配置文件
-
【数据分析-随到随学】互联网行业业务指标及行业数
-
MD5生成器.zip
-
西门子PLC实例教程777个(密码1234).zip
-
JAVA面试篇 - 上海 Java 开发工程 视频面试
-
1.环境搭建
-
Unity游戏开发之数字华容道
-
专利挖掘、撰写与转化应用
-
web前端开发规范
-
电声设备的多物理场仿真(COMSOL)
-
彻底学会正则表达式