[Docker学习笔记]Docker的原理Docker常见命令
文章目录
- 什么是Docker
- Docker的优势
- Docker的原理
- Docker 的安装
- Docker 的 `namespaces`
- Docker的常见命令
- `docker version`:查看版本信息
- `docker info `查看docker详细信息
- 我们关注的信息
- `docker search`:镜像搜索
- `docker pull`:镜像拉取到本地
- `docker push`:推送本地镜像到镜像仓库
- `docker tag`:为镜像加(改)标签
- `docker login`:登录镜像仓库
- `docker run`:启动一个镜像(容器)
- 前台启动
- 后台启动
- 【补】为什么我们上面两个容器,最后都会退出?
- 【补】那我们怎么解决这个问题呢?
- 1.既然我们直接不管他不行,那就先这个bash终端放到后台瞧瞧
- 2.我们再来瞧瞧,是不是哪里理解错了
- 我们再启动一个nginx容器试试
- 问题来了,我们启用nginx容器的目的不是要做个网站吗,我们只知道容器内部用的是80端口,那我们在宿主机怎么访问呢?
- 总结一下
- `docker ps`:查看容器信息
- `docker logs`:查看容器日志
- 【补】除了用docker logs命令,我们还可以直接进入容器的上下文目录查看日志
- `docker exec`:进入(正在运行的)指定容器
- `docker cp`:文件的拷贝
- 将本地文件(宿主机文件)拷入容器中
- 将容器中的文件拷贝到宿主机中
- `docker rmi`:删除镜像
- `docker rm`:删除容器
- `docker stop`:停止容器
- `docker start`:重启容器
- `docker history`:查看镜像更改记录
- `docker commit`:提交容器状态为镜像到本地仓库
- 我们再看看这个镜像的细节
- 用这个镜像起一个容器
- 在另一个窗口看看
- 我们回到这个终端,退出容器试试
- `docker build`:通过Dockerfile 构建镜像
什么是Docker
百度百科
Docker的优势
-
跨平台部署:Docker 可以在不同的操作系统和硬件平台上运行,可以轻松地将应用程序在开发、测试和生产环境中进行一致性的部署。
-
资源利用率和扩展性:Docker 可以通过容器的方式将应用程序与其依赖的运行时环境和依赖项隔离,从而提高资源的利用率并减少资源的消耗。此外,Docker 还支持快速水平扩展,使应用程序能够更好地适应变化的负载。
-
快速交付和部署:通过 Docker 容器化,可以实现快速的应用程序交付和部署。将应用程序和其依赖项打包到容器中,可以确保运行环境的一致性,并且在不同的环境中轻松地部署和迁移应用程序。
-
简化开发环境配置:Docker 可以帮助开发人员更轻松地配置开发环境。通过使用容器,可以将应用程序及其依赖项打包到一个镜像中,并在开发环境中进行部署,从而减少了由于开发环境配置不一致导致的问题。
-
提高应用程序的安全性:Docker 的容器隔离技术可以将应用程序与底层主机隔离开来,从而提高应用程序的安全性。每个容器都有自己的文件系统、进程空间和网络接口,使得应用程序之间互不干扰。
Docker的原理
我们现在可以知道Docker实际上就是一个应用程序,只不过自己带上了所需要的依赖。在考虑Docker的原理之前,我们先来看看在部署应用的方式是怎样一步步升级的
以部署一个Mysql程序为例
-
物理机
-
首先,我们要拥有一个操作系统(通常是Linux操作系统)
-
安装依赖环境(gcc、make、libncurses5-dev等编译工具)
-
安装应用程序
此时如果我们要增加一台新的物理机来处理Mysql并发请求,就需要再进行一次环境的重复配置
-
-
虚拟化(KVM或其他技术)
- 将一个物理机虚拟成多个机器
- 可以将依赖环境打包成一个模板(VMware Workstation的克隆功能就是这样实现的)
-
容器化
-
以镜像为基础
- 依赖环境的镜像
- Java程序——Java的基础镜像
- Php程序——Php的基础镜像
- Nginx程序——Linux操作系统基础镜像
- 根据基础镜像——放入自己的代码(或包)——>生成程序镜像
- 依赖环境的镜像
-
镜像按层存储
这样的方式可以让我们使用同于基础层来实现不同的功能,如上图,下面两层我们就可以直接套用模板了
-
启动时间快(秒级启动)
由于与主机共享内核,不需要做操作系统的引导
-
可移植性好
将运行某个应用所需要的环境全部打包到同一个容器中,不需要考虑兼容问题
如上图
- Docker将用户程序与所需要调用的系统函数库一起打包
- Docker运行到不同操作系统时,直接基于打包的函数库,借助于操作系统的Linux内核来运行
-
Docker 的安装
参考官方文档
Docker 的 namespaces
Docker 使用 Linux 内核的 namespaces
功能来实现容器的隔离。namespaces
是 Linux 内核提供的一种机制,用于隔离系统资源,使得运行在不同 namespaces
中的进程拥有独立的视图和环境,而不会相互干扰。Docker 利用这一机制来创建轻量级的虚拟化环境,即容器。
-
进程命名空间(PID Namespace)
进程命名空间允许容器中的进程拥有独立的进程树。这意味着容器内的进程ID(PID)与宿主机或其他容器中的进程ID是隔离的。每个容器都有自己的 PID 1,即容器内的第一个进程。
-
网络命名空间(NET Namespace)
网络命名空间为每个容器提供独立的网络堆栈。容器拥有自己的网络接口、IP地址、路由表、防火墙规则等。这允许容器之间以及容器与宿主机之间进行隔离的网络通信。
-
挂载命名空间(MNT Namespace)
挂载命名空间为每个容器提供独立的文件系统视图。容器可以有自己的
/
根目录,以及独立的挂载点,使得容器可以有自己独特的文件系统结构,而不会影响到宿主机或其他容器。 -
用户命名空间(USER Namespace)
用户命名空间允许容器内的用户和组ID与宿主机上的用户和组ID不同。这意味着容器内的用户可以映射到宿主机上的不同用户,从而提供额外的安全隔离。
-
UTS命名空间
UTS命名空间允许容器拥有独立的主机名和NIS域名。这使得容器可以拥有自己的标识,而不需要与宿主机或其他容器共享。
-
IPC命名空间
IPC命名空间(Inter-process communication namespace)为容器提供独立的进程间通信资源,如消息队列、信号量和共享内存。这确保了容器之间的进程通信是隔离的。
通过这些 namespaces
,Docker 实现了容器的隔离,使得每个容器都像是在独立的环境中运行,而实际上它们共享宿主机的内核。这种隔离机制是容器轻量级和高效的关键
Docker的常见命令
docker version
:查看版本信息
- Docker版本
Version: 24.0.7
- 宿主机架构
OS/Arch:linux/amd64
- 其他一些关键组件的版本
docker info
查看docker详细信息
我们关注的信息
-
Client Debug Mode
:false #客户端的debug模式,按需开启 -
Server:Containers: 1 # 已构建1个容器Running: 0 # 正在运行的容器数量Paused: 0 Stopped: 1Images: 3 # 服务器保存的镜像数量
docker ps -a
docker images
-
Storage Driver: overlay2
存储驱动为overlay2(官方默认、性能好)常见驱动 aufs、overlay、brtfs
-
Logging Driver: json-file
:Docker 日志存储类型#json-file存储在本地的Docker根目录
-
Docker Root Dir: /var/lib/docker
:Docker根目录(可以更改)#最好使用一个单独的磁盘挂载该目录
-
Runtimes: runc io.containerd.runc.v2
:容器创建、销毁以及运行都是调用Runtime来执行 -
Live Restore Enabled: false
:开启后自动重启容器
docker search
:镜像搜索
带officials为官方镜像
docker pull
:镜像拉取到本地
-
本地有同一镜像,则不会重复拉取
-
docker pull xxx.com/nginx:latest
#从xxx.com的镜像仓库拉取标签为latest的nginx镜像;不加URL则表示从官网拉取
-
不加标签默认拉取最新版本
docker push
:推送本地镜像到镜像仓库
docker push xxx.com/my-namespace/my-nginx:latest
docker tag
:为镜像加(改)标签
dockertag my-nginx:latest xx.com/my-namespace/my-nginx:latest
docker login
:登录镜像仓库
-
不加仓库地址默认登陆官方镜像仓库
docker login registry.cn-hangzhou.aliyuncs.com
#登陆阿里云镜像站
docker run
:启动一个镜像(容器)
前台启动
docker run -ti centos:7 bash
# -ti:生成一个终端
# bash:指定终端为bash
后台启动
docker run -d centos:7 bash
【补】为什么我们上面两个容器,最后都会退出?
docker ps -a
我们先来看看他们创建的命令都是docker run xxx bash
,最后都会生成一个终端
我们再到百度上搜搜看什么叫终端
咦,这一切不都说得通了,我们在前台启动的centos7容器是因为退出了容器bash前台终端,这个容器存在的意义也就没了,而后台启动的第二个容器,压根就没前台终端生成。
【补】那我们怎么解决这个问题呢?
1.既然我们直接不管他不行,那就先这个bash终端放到后台瞧瞧
docker run -d centos:7 bash&
表面上看是行了,我们再打开一个窗口看看现在这个容器在不在运行
结果还是不行,out
2.我们再来瞧瞧,是不是哪里理解错了
哦,那我们把这个bash换成其他的不需要前台输入的的命令试试
docker run -d centos:7 tail -f /dev/null
# 这里我们把这个容器当成生产队的驴来用了,持续读取一个空文件的尾部
看看结果,up!!!
docker run -d centos:7 sleep infinity
# 这里用sleep infinity 命令让容器宝宝独自等待~
嗨呀,小case啦,轻轻松松^_*
我们再启动一个nginx容器试试
docker run -d --name nginx_test nginx:test
# --name 指定容器名 后面跟依赖的镜像
问题来了,我们启用nginx容器的目的不是要做个网站吗,我们只知道容器内部用的是80端口,那我们在宿主机怎么访问呢?
-
我们先把他关了
docker stop nginx_test
-
重新启动容器并添加端口映射
docker run -d --name nginx_test -p 8080:80 nginx:test
这是肿么肥四,重名了?我们来看看
docker ps -a
不还是你吗?你小子不听话就把你删了
docker rm nginx_test
接下来把所有的爱给他同父同母的同名兄弟
docker run -d --name nginx_test -p 8080:80 nginx:test # -p [宿主机端口:容器端口] 添加端口映射
-
再用宿主机的8080端口访问一下
这不又好了吗,easy啊~_-
总结一下
bash可以换成任意命令
- 如果是需要前台输入的命令,你得提供一个前台伪终端,提供内容给他
- 后台可以直接运行的命令就无所谓了
docker ps
:查看容器信息
-
docker ps
:查看当前正在运行的容器docker ps
-
docker ps -a
:查看所有已经创建的容器(包括退出)docker ps -a
-
docker ps -q
:查看所有正在运行的容器ID(个人认为用处不大,不如docker ps) -
docker ps -aq
:查看容器的ID(同理用处不大,不如docker ps -a)
docker logs
:查看容器日志
docker logs [容器名/容器ID]
docker logs -f [容器名] # 跟随模式,持续输出,动态查看,用户手动停止
我们来查看刚刚创建的nginx容器日志
docker logs nginx_test
【补】除了用docker logs命令,我们还可以直接进入容器的上下文目录查看日志
sudo su # 进入容器日志目录需要管理员权限
cd /var/lib/docker/containers/
这几个就是目前存在的容器
我们要看nginx容器的日志
cd 969d3c0012a74aa61284fe89be08fcfc17c83ac83674bed422e7b2fc086eb782/
# 不用敲全,用tab补全就行了
ls
tail 969d3c0012a74aa61284fe89be08fcfc17c83ac83674bed422e7b2fc086eb782-json.log# 结果跟docker logs nginx_test 结果一样一样的
docker exec
:进入(正在运行的)指定容器
docker exec -it nginx_test bash
ls #查看容器内的文件
uname -a #查看容器内部运行的操作系统
exit #退出容器
#进入容器后注意主机名和用户的变化
docker cp
:文件的拷贝
docker cp [宿主机文件] [容器名(或者id):容器内部文件夹(或文件)]
docker cp [容器名(或者id):容器内部文件夹(或文件)]
将本地文件(宿主机文件)拷入容器中
在执行操作前我们先看看nginx的网页存放的位置
find . -name "html"
#莫名其妙的权限报错这会儿咱们就不管了
echo "hello nginx" > index.html&&cat inidex.html
docker cp index.html nginx_test:/usr/share/nginx/html/
这时我们再来看看nginx的主页什么样了
将容器中的文件拷贝到宿主机中
#先在根目录下执行ls命令并将结果重定向到test.txt中
ls >>test.txt
#在宿主机执行cp命令,并显示文件内容
docker cp nginx_test:./test.txt ls_test.txt&&cat ls_test.txt
docker rmi
:删除镜像
我们先看看机子上现有哪些镜像
docker images
居然有两个不知道什么内容的镜像,那把他俩都删了吧,红尘作伴,潇潇洒洒,说干就干
docker rmi 2a36393edaf1 605c77e624dd
再看看,已经不在了
docker rm
:删除容器
我们先来看看有哪些容器不乖了
好嘞,就决定是你了,你都退出了,那我就对你不客气咯
docker rm [容器名(或容器ID)]
docker rm inspiring_shannon
害群之马没啦,一片祥和
docker stop
:停止容器
docker stop [容器名/容器ID]
docker ps
docker stop nginx_test
docker ps
docker start
:重启容器
docker stop [容器名/容器ID]
docker ps
docker start nginx_test
docker ps
docker history
:查看镜像更改记录
我们先看看有哪些镜像
docker images
docker history centos:latest
# 我们选择占用空间最大的centos:latest来看
docker commit
:提交容器状态为镜像到本地仓库
docker commit <参数> <容器id> <仓库>[:标签]>
# -a, --author:指定作者信息,格式为 name <email>。
# -c, --change:应用 Dockerfile 指令到创建的镜像。
# -m, --message:提交信息,描述这次提交的更改。
# --pause:是否在提交时暂停容器,默认为 true
docker commit -a "yy" -m "my_nginx_test_images1" nginx_test my_nginx:v1.0
# -a 参数一般是告诉别人作者的信息,我在这只是本地使用提交,其实加不加无所谓
我们再看看这个镜像的细节
docker history my_nginx
显示了提交时的信息
用这个镜像起一个容器
docker run -it --rm --name nginx_test1 mynginx:v1.0 bash
在另一个窗口看看
docker ps
成功了
我们回到这个终端,退出容器试试
exit
docker ps
咦,nginx_test1怎么没了,是不是退出啦?
我们再看看
docker ps -a
还是没有啊,燕子,没有你我怎么活呀
这时候一旁看戏的nginx_test就要说了:你这家伙,创建人家的时候是不是干了什么事情
我们往上看看命令
哦,原来罪魁祸首是这个--rm
参数,他让容器运行结束后自动删除了(这样做的好处是,减少exit状态容器的出现)
docker build
:通过Dockerfile 构建镜像
docker build -t <镜像名称[:标签]> <上下文目录(dockerfile所在目录)>
# 标签缺省则默认为latest
我们现在已经有一个dockerfile文件了,存放在./Dockerfile目录下
docker build -t nginx_test_dockerfile ./Dockerfile_task/
看看有咩有多一个叫nginx_test_dockerfile的镜像
docker images
相关文章:
[Docker学习笔记]Docker的原理Docker常见命令
文章目录 什么是DockerDocker的优势Docker的原理Docker 的安装Docker 的 namespaces Docker的常见命令docker version:查看版本信息docker info 查看docker详细信息我们关注的信息 docker search:镜像搜索docker pull:镜像拉取到本地docker push:推送本地镜像到镜像仓库docker …...
【ESP 保姆级教程】小课设篇 —— 案例:20240507_esp01s+UNO的智能浇水系统
忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2024-09-30 ❤️❤️ 本篇更新记录 2023-09-30 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...
如何设置MySQL分布式架构主键ID,为什么不能使用自增ID或者UUID做主键?
MySQL分布式架构主键ID的设置方法 雪花算法(Snowflake) 原理:雪花算法是一种生成分布式唯一ID的算法。它由64位二进制数组成,结构如下:1位符号位(固定为0) 41位时间戳(表示从一个固…...
服务器虚拟化详解
服务器虚拟化详解 服务器虚拟化是一种将物理服务器资源转化为虚拟服务器资源的技术,它允许在一台物理服务器上运行多个虚拟服务器,每个虚拟服务器都拥有独立的操作系统、应用程序和资源配置。这种技术极大地提高了服务器的利用率、灵活性和可扩展性&…...
医疗陪诊APP开发实战:从互联网医院系统源码开始
本文将从互联网医院系统源码出发,深入探讨医疗陪诊APP的开发实战。 一、从互联网医院系统源码入手 开发医疗陪诊APP的基础在于互联网医院系统的源码。互联网医院系统通常包括以下几个模块: 1.用户管理:用户注册、登录、信息管理等功能。 …...
jenkins 构建报错ERROR: Error fetching remote repo ‘origin‘
问题描述 修改项目的仓库地址后,使用jenkins构建报错 Running as SYSTEM Building in workspace /var/jenkins_home/workspace/【测试】客户端/client-fonchain-main The recommended git tool is: NONE using credential 680a5841-cfa5-4d8a-bb38-977f796c26dd&g…...
初识C#(三)- 数组
我有17栋楼,在不同地域,都是不同价格租出去给不同的人~ 文章目录 前言一、数组1.1 我有17栋楼 - 数组的声明1.2 包租公&包租婆 - 数组赋值1.3 每个月都要交租的苦逼租客 - 数组的使用 二、字符串2.1 字符串的使用方法 总结 前言 本篇笔记重点描述C#…...
黑马智数Day3
渲染基础Table列表 封装接口: export function getCardListAPI(params) {return request({url: /parking/card/list,params}) } 具体实现: import { getCardListAPI } from /apis/cardexport default {data() {return {// 请求参数params: {page: 1,pa…...
【Java】再一次踩了整数溢出的坑
【Java】再一次踩了整数溢出的坑 一、起因原题示例 1示例 2提示 我的代码提交结果 二、思考修改后的代码如下 三、知识点1. int m l ((r - l) / 2)解释 2. if (m < x / m)解释 四、结尾 一、起因 我在做【力扣】69.x 的平方根 一题的时候,明明觉得逻辑没问题&…...
Windows开发工具使用技巧大揭秘:让编码效率翻倍的秘籍!
【ACM出版|厦大主办|EI稳定检索】第五届计算机科学与管理科技国际学术会议(ICCSMT 2024)_艾思科蓝_学术一站式服务平台 更多学术会议请看:学术会议-学术交流征稿-学术会议在线-艾思科蓝 目录 引言 1. 快捷键大全:加速你的编码…...
CSS外边距
元素的外边距(margin)是围绕在元素边框以外(不包括边框)的空白区域,这片区域不受 background 属性的影响,始终是透明的。 为元素设置外边距 默认情况下如果不设置外边距属性,HTML 元素就是不会…...
C++ set,multiset与map,multimap的基本使用
1. 序列式容器和关联式容器 string、vector、list、deque、array、forward_list等STL容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间一般没有紧密的关联关系,比如交换一下,他依旧是序列式容器。顺…...
评估潜力无限:解读自闭症患者的工作能力评估
在星贝育园这片充满爱与希望的土地上,我们不仅见证了无数自闭症儿童在康复训练中的点滴进步,更深刻理解了他们内在潜力的无限可能。自闭症,这一复杂的神经发育障碍,常常让外界对其患者的工作能力产生误解和偏见。然而,…...
js 实现视频封面截图
今天给大家分享一下,如何实现视频封面截取功能,这里主要用到了 HTML5 的 canvas 相关的 api 和 js 相关的一些知识,话不多说,直接上代码: <template><div><div class"margin-tb-sm"><…...
Hadoop FileSystem Shell 常用操作命令
提示:本文章只总结一下常用的哈,详细的命令大家可以移步官方的文档(链接贴在下面了哈🤣)— HDFS官方命令手册链接。 目录 1. cat 命令:查看 HDFS 文件内容2. put 命令:将本地文件上传到 HDFS3.…...
uniapp EChars图表
1. uniapp EChars图表 (1)Apache ECharts 一个基于 JavaScript 的开源可视化图表库 https://echarts.apache.org/examples/zh/index.html (1)官网图例 (2)个人实现图例 1.1. 下载echart 1.1.1. 下…...
最新版ingress-nginx-controller安装 使用host主机模式
最新版ingress-nginx-controller安装 使用host主机模式 文章目录 最新版ingress-nginx-controller安装 使用host主机模式单节点安装方式多节点高可用安装方式 官方参考链接: https://github.com/kubernetes/ingress-nginx/ https://kubernetes.github.io/ingress-ng…...
实习问题(配置文件获取参数)
Java中用SpringBoot框架,当我们要获取配置文件yml里的参数时,用Value注解获取 如果配置文件中没有srvSealUploadPath这个参数的话,可以用Value("${srvSealUploadPath:data/idoc/temp}"),这个的意思是,如果配…...
C#测试调用Ghostscript.NET浏览PDF文件
Ghostscript.NET是针对Ghostscript的C#封装库,支持解析PostScript语言、操作PDF文件等。使用Ghostscript.NET的GhostscriptViewer 模块可以以图片形式查看PDF文档。本文学习并测试调用Ghostscript.NET模块打开及浏览PDF文件的基本用法。 Ghostscript.NET目前主要…...
MySQL本地安装步骤
下载MySQL ZIP压缩包 访问MySQL官网(https://www.mysql.com/)或下载页面(https://dev.mysql.com/downloads/mysql/)。 在下载页面选择“MySQL Community Server”作为下载目标。 根据你的操作系统(Windows)…...
redisson使用笔记
文章目录 spring集成redisson maven配置yml配置使用redisTemplate和redisson的区别 其他项目中看到redisson,看样子像是redis相关类库,实际也确实是。 还是老规矩,见到的要了解,需要的必须掌握,了解一下吧。 spring集成…...
设计模式之享元(Flyweight)模式
前言 面向对象很好地解决了 “抽象” 的问题,但是不可避免的要付出一定的代价。对于通常情况来讲,面向对象的成本大都可以忽略不计。但是某些情况,面向对象所带来的成本必须谨慎处理 具体需要自己根据需求去评估 定义 “对象性能” 模式。运用…...
桥接(桥梁)模式
简介 桥接模式(Bridge Pattern)又叫作桥梁模式、接口(Interface)模式或柄体(Handle and Body)模式,指将抽象部分与具体实现部分分离,使它们都可以独立地变化,属于结构型…...
语言模型发展史
四个阶段 第一阶段:基于规则和统计的语言模型 由人工设计特征并使用统计方法对固定长度的文本窗口序列进行建模分析,这种建模方式也被称为N-gram语言模型。 优点: 1)采用极大似然估计, 参数易训练 2)完全包含了前n-…...
【Linux】模拟实现一个shell
接受每一个人的批评,可是保留你自己的判断。 ——莎士比亚 一段时间的没有更新是由于最近开学期间比较的忙,同时也是由于刚开学的几门课才学习的时候有点迷糊,需要在学校课堂上花的时间更多了,所以才没有更新的,求放过…...
云原生数据库 PolarDB
简介:云原生数据库 PolarDB 是阿里云自研产品,在存储计算分离架构下,利用了软硬件结合的优势,为用户提供秒级弹性、高性能、海量存储、安全可靠的数据库服务。100%兼容MySQL和PostgreSQL生态,支持分布式扩展࿰…...
MobaXterm基本使用 -- 服务器状态、批量操作、显示/切换中文字体、修复zsh按键失灵
监控服务器资源 参考网址:https://www.cnblogs.com/144823836yj/p/12126314.html 显示效果 MobaXterm提供有这项功能,在会话窗口底部,显示服务器资源使用情况 如内存、CPU、网速、磁盘使用等: (完整窗口࿰…...
elastic Search 初步之向量检索的数据写入及检索查询
### Elasticsearch 向量检索实现方法方案 Elasticsearch 从 7.3 版本开始引入了向量检索功能,支持通过向量字段进行相似度搜索。以下是实现向量检索的步骤和方案,包括 Python 和 Java 版本的代码示例。 #### 1. 最低实现向量检索的 ES 版本 - **最低版本**: Elasticsearch …...
Tdesign TreeSelect 树形选择 多选
这里写自定义目录标题 小程序原生开发 Tdesign TreeSelect 树形选择 多选可以选择不同一级分类下的数据 小程序原生开发 Tdesign TreeSelect 树形选择 多选可以选择不同一级分类下的数据 TreeSelect 树形选择 在原demo基础上修改 const chineseNumber 一二三四五六七八九十.…...
Pygame中Sprite实现逃亡游戏5
在《Pygame中Sprite实现逃亡游戏4》中通过碰撞检测实现了玩家、飞龙与飞火之间的碰撞处理,基本上实现了逃亡功能。最后,实现这个逃亡游戏中文字提示的功能。 1 操作提示 当进入游戏后,会在玩家下方的位置给出操作提示,如图1所示…...
wordpress更换语言包/企业培训的目的和意义
NEW关注Tech逆向思维视频号最新视频→【网红饭店接连翻车 过期食品的危害有多大?】出品|智能车参考文|贾浩楠 褚万博比亚迪大利空?刚刚发布的半年报显示,这家市值8104.76亿的中国新能源汽车龙头,今…...
唐山网站建设拓/宁德市
1、您认为做好测试用例设计工作的关键是什么? 白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果 黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题…...
内部网站建设党委/熊猫关键词工具
近期,一直在研究MySQL数据库,经常修改配置文件,导致MySQL数据库无法使用,不得不反复重装MySQL数据库。以下是在Windows7 64位操作系统下安装MySQL数据库的详细步骤,以供学习和参考:1、双击点击“mysql-inst…...
酒店做爰视频网站/推广软文范例100字
关于set_new_handler(转载)2010-09-05 16:59:37| 分类:学习心得| 标签:|字号大中小订阅当运算符new找不到足够大的连续内存块来为对象分配内存时将会发生什么?一个称为 new-handler的函数被调用。对于new-handler的缺省动作是抛出一个异常。…...
wordpress图片pin按钮/赵阳竞价培训
网络安全的定义: 网络安全(Cyber Security)是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,[网络服务](https://baike.bai…...
西安小程序开发公司/举例说明什么是seo
一、NSDate转NSString //获取系统当前时间 NSDate *currentDate [NSDate date]; //用于格式化NSDate对象 NSDateFormatter *dateFormatter [[NSDateFormatter alloc] init]; //设置格式:zzz表示时区 [dateFormatter setDateFormat:"yyyy-MM-dd HH:mm:ss zzz&…...