Dart的基础语法
Dart的基础语法总结:变量/常量、数据类型、集合、函数、运算符、流程控制、类、枚举、泛型、库的使用
+
相关代码存放于:https://github.com/LinXunFeng/DartStudy
一、变量/常量明确声明12345// 明确声明String name = 'lxf';int age = 18;double height = 1.8;print('$name, $age, $height'); // lxf, 18, 1.8
类型推导varruntimeType : 用于获取变量当前的类型
123var count = 1; // count的类型为intprint(count.runtimeType); // int// count = "abc"; // 报错,无法为int类型赋值一个字符串
dynamic
dynamic 声明的变量可以赋值为任意类型
在开发中一般不这种做,因为会带来潜在的危险
1234567dynamic type = 'lxf';print(type.runtimeType); // Stringtype = 18;pri ...
Swift - PropertyWrapper
一、知识点
Property Wrapper,即属性包装器,其作用是将属性的 定义代码 与属性的存储方式代码 进行分离,抽取的管理的存储代码只需要编写一次,即可将功能应用于其它属性上。
1、基础用法功能需求:确保值始终小于或等于12
这里我们直接使用 property wrapper 进行封装演示
12345678910111213141516171819202122232425262728@propertyWrapperstruct TwelveOrLess { private var number: Int // wrappedValue变量的名字是固定的 var wrappedValue: Int { get { return number } set { number = min(newValue, 12) } } init() { self.number = 0 }}struct S ...
Docker - Compose的使用
一、服务编排
服务编排:按照一定的业务规则批量管理容器
微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启动和停止,那么维护的工作量就会很大。
比如这些工作:
要从 Dockerfile build image 或者去 dockerhub 拉取 image
要创建多个 container
要管理这些 container (启动停止删除)
这时候需要使用官方推出的服务编排
二、Docker Compose
Docker Compose 是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止
使用步骤:
利用 Dockerfile 定义运行环境镜像
使用 docker-compose.yml 定义组成应用的各服务(启动顺序、关联关系等)
运行 docker-compose up 启动应用
1、安装如果使用的是 Docker Desktop,那就不需要再额外安装 Compose 了,因为它已经包含了 Docker Compose 。
下面是 Linux 系统下安装 Compose 的 ...
Docker - Dockerfile的使用
Dockerfile: 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
应用: 将部署过程中涉及到的所有步骤全部写入到 Dockerfile 中,到时只需要执行 Dockerfile 就可以自动完成相应的操作
快速入门编辑Dockerfile在当前目录下创建 Dockerfile 并进行编辑1vim Dockerfile操作:启动 ubuntu 镜像,在启动起来后去更新 ubuntu 容器下的软件资源内容如下1234# From: 启动运行一个镜像资源From ubuntu# Run: 在启动起来的容器中执行指令RUN apt-get update
运行Dockerfile构建镜像命令1docker build -t [镜像名]:[版本号] [Dockerfile所在目录]指定在当前目录下去查找 Dockerfile 文件,并将 Dockerfile 自动化处理后的(更新了软件资源)容器打成名为 lxf 的镜像资源
1docker build -t lxf .
执行效果:待执行完成后,当前拥有的镜像资源就多出了 lxf 这一个,可以看到 lxf 这个镜 ...
Docker - 网络管理
默认情况下,容器和宿主机之间网络是隔离的
现在启动了一个 nginx 容器如图所示 nginx 使用了 80 端口,但是我们去浏览器里访问 localhost:80 是无法访问到 nginx 服务的这个时候可以通过端口映射的方式,将容器中的端口,映射到宿主机的某个端口上,从而使我们能够通过宿主机的 ip+端口 的方式来访问容器里的内容
随机端口映射
-P :自动绑定所有对外提供服务的容器端口,映射的端口会从没有使用的端口池中自动随机选择,如果连续启动多个容器的话,则下一个容器的端口默认是当前容器的端口号+1
命令1docker run -d -P [镜像名称]在刚才的命令基本上加 -P1docker run -dit -P --name lxfnginx nginx这样宿主机的 55000 端口就映射到了窗口的 80 端口,访问也是成功的。
指定端口映射命令1docker run -d -p [宿主机ip]:[宿主机端口]:[容器端口] --name [容器名称] [镜像名称]将宿主机上的 8000 端口映射到 nginx 容器的 80 端口1docker run -dit ...
Docker - 数据管理
拷贝数据宿主机文件 -> 容器内1docker cp 需要拷贝的文件或目录 容器名:容器内的目录路径
如:把宿主机当前目录下的 lxf.sh 文件,拷贝到 lxfubuntu1 容器下的 /data 目录中1docker cp lxf.sh lxfubuntu1:/data
容器内 -> 宿主机文件1docker cp 容器名:容器内需要拷贝的文件或目录 宿主机目录
如:把 lxfubuntu1 容器中 /data 目录下的 lxf.sh 文件,拷贝到宿主机 ~/lxf/ 目录下1docker cp lxfubuntu1:/data/lxf.sh ~/lxf/
数据卷管理
数据卷管理就是将容器的某个目录,映射到宿主机,作为数据存储同步的目录
命令:1docker run -itd --name [容器名字] -v [宿主机目录]:[容器目录] [镜像名称] [命令(可选)]下面进行操作示范:
在宿主机创建一个名为 data 的目录,这个名字可任意1mkdir data将宿主机的 data 目录映射到容器中的 /home 目录1docker run -it -v ~/l ...
Docker - 私有仓库Registry
私有仓库: 在本地(局域网)搭建的一个类似公共仓库的东西,我们可以将镜像提交到私有仓库中,供局域网内的其它人拉取使用。本文以 Registry 为例,并在提供私有仓库的主机上操作
拉取私有仓库镜像请先确保你当前拥有的镜像有 registry如果没有,可以先拉取下来
1docker image pull registry
设置私有仓库地址1vim /etc/docker/daemon.json
修改 insecure-registries 的值,提供私有仓库的主机的ip地址和端口1234567{ ... "insecure-registries":[ "192.168.1.234:5000" ], ...}Mac软件版修改后重新启动 docker 服务
运行私有仓库镜像资源将 registry 镜像生成一个容器并运行起来123# -p 5000:5000 # 第一个是容器使用的端口,第二个是本地端口,这里是本地端口映射到把容器的端口docker run -d -p 5000:5000 registry1234~/lxf ❯ docker ps❯ d ...
Docker - 操作容器
运行容器这里我使用 ubuntu 镜像,创建一个名为 lxfubuntu 的容器,并运行进入容器123# docker run -it --name [容器名] [镜像名] /bin/bashdocker run -it --name lxfubuntu ubuntu /bin/bash命令参数详解:
--name : 定义容器名称,如果不使用,则会随机产生一个名字
-i : 让容器的标准输入保持打开
-t : 让 docker 分配一个伪终端,并绑定到窗口的标准输入上
-d : 以守护进程的方式运行容器,不占用终端
/bin/bash : 执行一个命令
如图,执行后即可进入容器中
如果想创建并以守护进程的方式运行容器,可以使用 -d1docker run -dit --name lxfubuntu1 ubuntu /bin/bash
123# docker start [container_id]docker start c97abc3f151a
进入容器如果我们想进入上述提及的以守护进程方式运行的容器中,可以使用 docker exec1docker exec -it lx ...
Docker - 操作镜像资源
搜索镜像资源1docker search nginx
一般选择 STARS 数最大的
拉取镜像比如拉取上提及的 nginx 镜像1docker image pull nginx命令执行后就开始对镜像进行拉取了
查看当前拥有的镜像
镜像ID: 镜像的唯一标识,如果镜像ID相同,则说明是同一个镜像
TAG: 用来区分不同的发行版本,如果不指定具体标记,则默认使用latest来标记信息
123docker image ls# 或docker images
查看镜像的详情信息12# docker image inspect 镜像名docker image inspect ubuntu
删除镜像完整写法1docker image rm ubuntu简洁写法1docker rmi ubuntu除了可以根据镜像名来删除外,也可以使用镜像ID,如使用上述的 ubuntu 镜像ID1docker rmi f643c72bc252如果我们对同一个镜像打了多个 tag ,导致同一个镜像ID存在多个镜像名称,那此时可以使用 name:tag 的格式来删除镜像,如:123docker rmi ubun ...
Docker - 安装、加速和基本使用
Docker 容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上
本文主要以 Mac 平台为例
安装方式一: Homebrew1brew cask install docker
方式二: 桌面程序
我使用该方式
访问 https://www.docker.com/get-started,在 Docker Desktop 下选择你当前系统对应的软件进行下载安装
镜像加速镜像Daocloud
实测,速度不咋地
打开 daocloud.io 网站,注册并登录,点击加速器按钮,或者直接打开 https://www.daocloud.io/mirror,打开的页面上会显示与你账号相关的加速地址
其它
实测,速度杠杠的,推荐使用
镜像
地址
Docker中国区官方镜像
https://registry.docker-cn.com
网易
http://hub-mirror.c.163.com
ustc
https://docker.mirrors.ustc.edu.cn ...