Docker知识点汇总表格总结

2024-05-02 17:20

本文主要是介绍Docker知识点汇总表格总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       Docker容器给我的一个很直观的感受就是将项目以及中间件安装变得比较简单直接,运行维护起来也更方便。之前做的一些微服务项目也是用docker来部署,现在很多开源的项目也流行使用docker来部署,简化了很多手动安装和配置的步骤,将项目部署和使用的难度降低了很多,尤其对于学习开源项目来说,能很快部署成功,并看到项目的效果。

       其实几年前总结过一次docker,当时是初学,总结的东西比较少,比较基础。后来一到周末就泡在广州图书馆7楼,早早占个位置,在7楼科学技术区看计算机相关的图书,有一些docker相关的图书讲的比较全面,当时用手机拍了不少内容。现在不少公司项目也在使用docker,docker几乎也是很多公司面试必问的知识,现在做个汇总总结。

目录

1.Docker简介

 2.Dokcer安装

3.Docker镜像

4.Docker容器生命周期

5. Docker网络

6.Docker数据管理

7. Docker Compose

8. Dockerfile 编写

9. Docker Registry

10. Docker 存储驱动

 11.Docker镜像构建

12.Docker容器运行

13.Docker容器日志

 14.Docker容器监控

15.Docker安全性

16. Docker Swarm

17. Docker Stack

18.Docker插件

19. Docker 命令行工具

20.Docker 实践案例


1.Docker简介

内容描述
定义Docker 是一个开源的容器化平台,用于开发、发布和运行应用程序。
主要组件镜像(Image): 应用程序及其依赖的只读模板。
容器(Container): 镜像的运行实例。
仓库(Repository): 存储镜像的场所。
优势轻量级: 容器共享宿主机的操作系统。
可移植性: 容器可以在任何支持Docker的系统上运行。
隔离性: 容器之间相互隔离。
示例使用Docker运行一个简单的Web服务器:docker run -p 80:80 nginx
 2.Dokcer安装
步骤描述
系统要求- 支持Docker的操作系统,如Linux、macOS或Windows。
获取Docker- Linux: 通过包管理器安装,如APT或YUM。
- macOS: 通过Docker Desktop for Mac。
- Windows: 通过Docker Desktop for Windows。
安装过程Linux: 更新包管理器,安装Docker引擎。
macOS/Windows: 下载Docker Desktop并安装。
验证安装使用命令 docker --version 或 docker info 来验证Docker是否正确安装。
启动Docker服务Linux: 使用 sudo systemctl start docker
macOS/Windows: Docker Desktop安装后自动启动。
示例在Linux上安装Docker: sudo apt-get install docker-ce docker-ce-cli containerd.io
3.Docker镜像
内容描述
定义Docker 镜像是一个轻量级、可执行的独立软件包,包含运行一个应用所需的代码、运行时、系统工具、系统库和设置。
构建过程通过 Dockerfile 来定义镜像内容,然后使用 docker build 命令构建。
存储和分发镜像被存储在仓库中,可以是本地仓库或远程仓库如Docker Hub。
拉取和推送使用 docker pull 命令从仓库拉取镜像,使用 docker push 命令将本地镜像推送到远程仓库。
标签镜像可以通过标签(tag)来区分不同的版本,例如 nginx:latest
分层结构镜像由多个层组成,每一层代表Dockerfile中的一个指令。
最佳实践- 保持镜像尽可能小以优化性能和安全性。
- 使用官方镜像作为基础镜像。
- 清理不必要的文件以减小镜像大小。
示例拉取官方的nginx镜像:docker pull nginx
4.Docker容器生命周期
阶段描述
创建使用 docker create 创建一个新的容器,但不会立即启动它。
运行使用 docker start 启动已创建的容器。
执行命令在运行中的容器内执行命令,如 docker exec
停止使用 docker stop 停止容器的运行。
重启使用 docker restart 重启一个已经停止的容器。
删除使用 docker rm 删除一个已经停止的容器。
暂停和恢复使用 docker pause 和 docker unpause 分别暂停和恢复容器。
查看容器信息使用 docker inspect 查看容器的详细信息。
日志使用 docker logs 查看容器的日志输出。
状态容器可以是运行中、已停止、已暂停等状态。
健康检查使用 HEALTHCHECK 指令在 Dockerfile 中设置,以检测容器是否运行正常。
资源限制可以在创建容器时使用 --memory 或 --cpus 限制资源使用。
示例创建并运行一个容器:docker run -d --name mynginx nginx
5. Docker网络
内容描述
定义Docker 网络是用于连接运行中的容器以实现通信的虚拟网络。
默认网络bridge: 默认网络,为每个容器分配独立的网络接口和IP地址。
host: 容器共享宿主机的网络栈。
none: 容器没有配置网络。
自定义网络使用 docker network create 创建自定义网络。
网络类型bridge: 默认的网络类型,适用于大多数场景。
overlay: 用于跨多个Docker主机的容器通信。
macvlan: 将容器连接到物理网络接口。
连接和断开容器使用 docker network connect 和 docker network disconnect 将容器连接到网络或从网络中断开。
查看网络使用 docker network ls 查看所有网络。
查看网络信息使用 docker network inspect 查看特定网络的详细信息。
网络驱动Docker 提供了多种网络驱动,如 bridge, host, overlay, macvlan 等。
示例创建一个名为 mynetwork 的自定义网络:docker network create mynetwork
6.Docker数据管理
内容描述
卷(Volume)Docker 卷用于持久化和共享容器数据,即使容器被删除,卷中的数据也不会丢失。
绑定挂载将宿主机上的一个目录或文件挂载到容器内部,用于数据共享或持久化。
临时文件系统使用 --tmpfs 选项创建一个临时文件系统,容器重启后数据将丢失。
数据卷容器创建一个专门的容器来作为数据卷,用于在多个容器之间共享数据。
卷的生命周期卷的生命周期独立于容器,即使容器被删除,卷中的数据仍然保留。
管理卷使用 docker volume create 创建卷,使用 docker volume rm 删除卷。
卷的挂载在容器运行时使用 -v 或 --mount 选项挂载卷。
命名卷可以使用名称来标识卷,方便管理和引用。
卷的驱动器Docker 支持多种卷驱动器插件,用于不同的存储后端。
数据卷备份可以使用 docker run 命令结合特定的命令行工具来备份卷中的数据。
示例运行一个带有挂载宿主机目录的容器:docker run -v /宿主机路径:/容器内路径 镜像名
7. Docker Compose
内容描述
定义Docker Compose 是一个用于定义和运行多容器Docker应用程序的工具。
安装可以通过包管理器或直接从Docker Compose的GitHub仓库下载安装。
YAML文件使用YAML文件格式来配置应用程序的各个服务,包括构建参数、网络和存储等。
服务在Compose中,每个容器应用都是一个服务,YAML文件中的services部分定义了它们。
依赖可以定义服务之间的依赖关系,确保按正确的顺序启动和停止服务。
环境变量通过环境变量或.env文件来配置服务的配置参数。
命令提供了updownbuildrun等命令来管理整个应用程序的生命周期。
网络Compose允许定义网络并为服务配置网络连接。
存储可以为服务配置卷挂载,实现数据持久化。
扩展性允许通过简单的扩展语法来指定服务的运行实例数量。
日志可以配置日志记录方式,以及如何将日志输出到主机系统。
示例使用Docker Compose运行一个由前端和后端组成的web应用:docker-compose up
8. Dockerfile 编写
内容描述
Dockerfile是一个包含一系列指令的文本文件,用于自动化构建Docker镜像。
指令如 RUNCOPYADDCMDENTRYPOINTEXPOSEENVVOLUMEUSERWORKDIR 等。
基础镜像通常以 FROM 指令开始,指定基础镜像。
维护者使用 MAINTAINER(已废弃,建议使用 LABEL)指定镜像的作者信息。
环境变量使用 ENV 设置环境变量。
工作目录使用 WORKDIR 设置容器内的工作目录。
复制文件使用 COPY 或 ADD 将文件复制到镜像中。
指令执行使用 RUN 执行命令来构建镜像。
依赖管理通过合理组织 RUN 指令,减少不必要的层,优化镜像大小。
启动命令使用 CMD 指定容器启动时执行的默认命令。
入口点使用 ENTRYPOINT 指定容器的入口点,可以被 CMD 覆盖。
网络设置使用 EXPOSE 指定容器运行时监听的端口。
清理使用 RUN 指令执行清理操作,如删除临时文件,减少镜像大小。
多阶段构建使用多个 FROM 指令实现多阶段构建,优化最终镜像。
最佳实践- 保持Dockerfile简洁,减少层次。
- 使用官方基础镜像。
- 避免在镜像中存储敏感数据。
示例一个简单的Dockerfile示例:
FROM ubuntu:20.04
WORKDIR /app
COPY . /app
RUN make /app
CMD ["./myapp"]
9. Docker Registry
内容描述
定义Docker Registry 是一个存储Docker镜像的服务,允许推送和拉取镜像。
Docker Hub最为流行的公共Docker Registry,由Docker公司维护。
私有仓库可以设置私有的Docker Registry,用于存储内部使用的镜像。
认证私有仓库通常需要认证信息才能推送或拉取镜像。
镜像命名镜像名称由三部分组成:仓库地址、用户名、镜像名和标签。
推送镜像使用 docker push 用户名/镜像名:标签 将本地镜像推送到仓库。
拉取镜像使用 docker pull 用户名/镜像名:标签 从仓库拉取镜像。
搜索镜像使用 docker search 命令在Docker Hub上搜索镜像。
登录/注销使用 docker login 和 docker logout 与仓库进行认证。
镜像删除可以从仓库中删除不需要的镜像。
安全私有仓库应配置安全措施,如TLS和访问控制。
镜像扫描可以使用Docker Hub或第三方服务对镜像进行安全扫描。
镜像标签标签用于区分同一镜像的不同版本,如 myimage:latest
最佳实践- 不要使用 latest 标签作为生产环境的镜像标签。
- 使用特定的标签版本以确保一致性和可重复性。
示例将本地的 myimage 镜像推送到Docker Hub上的 myregistry 仓库:docker push myregistry/myimage:1.0
10. Docker 存储驱动
内容描述
定义Docker 存储驱动是Docker用来在主机上管理文件系统的插件。
默认驱动overlay2: Linux系统的默认驱动。
AUFS: 旧版本的Docker使用AUFS作为默认驱动。
其他驱动Btrfs: 高性能文件系统,支持写时复制。
ZFS: 功能丰富的文件系统,支持快照和压缩。
选择驱动根据存储性能、数据完整性和系统兼容性选择合适的存储驱动。
管理驱动使用 docker info 查看当前使用的存储驱动。
创建卷存储驱动决定了卷的创建和管理方式。
镜像层存储驱动管理镜像层的存储和访问。
性能影响不同的存储驱动对Docker容器的性能有影响。
数据完整性某些存储驱动如ZFS提供了数据完整性校验。
配置驱动可以在Docker守护进程启动时通过 --storage-driver 配置存储驱动。
存储驱动选项某些存储驱动支持额外的配置选项,如 overlay2 的 overlay2.size
最佳实践- 了解不同存储驱动的优缺点。
- 在生产环境中使用稳定的存储驱动。
- 定期检查和维护存储驱动。
示例启动Docker守护进程时指定使用Btrfs存储驱动:dockerd --storage-driver=btrfs
 11.Docker镜像构建
内容描述
Dockerfile构建镜像的核心,包含一系列指令来定义镜像内容。
构建上下文构建过程中Docker会将当前目录(或指定路径)下的所有文件发送给守护进程,称为构建上下文。
缓存Docker在构建过程中会使用缓存以加快后续构建,可以通过 . 来强制缓存失效。
多阶段构建使用多个FROM指令在Dockerfile中实现多阶段构建,减小最终镜像大小。
优化优化Dockerfile指令以减少镜像大小和构建时间。
构建命令使用 docker build 命令来根据Dockerfile构建镜像。
参数在构建时可以传递参数给Dockerfile,如 --build-arg
标签为新构建的镜像指定标签,如 -t myimage:latest
构建日志构建过程中会输出日志,可以查看每一步的执行情况。
网络构建时可以选择使用或不使用网络。
资源限制可以设置CPU和内存限制。
安全避免在Dockerfile中使用不安全的指令,如 RUN rm -rf /
最佳实践- 保持Dockerfile简洁且高效。
- 不要在Dockerfile中硬编码敏感信息。
- 使用官方基础镜像。
示例构建一个名为myimage的镜像:docker build -t myimage .
12.Docker容器运行
内容描述
运行容器使用 docker run 命令来启动一个新的容器实例。
参数包括 -d(后台运行)、--name(指定容器名)、-p(端口映射)等。
网络模式可以指定容器的网络连接方式,如 bridgehostnone 或自定义网络。
环境变量使用 -e 或 --env 设置环境变量。
数据卷使用 -v 或 --volume 映射数据卷,实现数据持久化或共享。
资源限制使用 --memory 和 --cpus 限制容器使用的资源。
容器链接使用 --link 连接其他容器(不推荐,推荐使用自定义网络)。
健康检查使用 --health-cmd--health-interval--health-retries--health-timeout 设置健康检查。
启动命令可以通过 CMD 或 ENTRYPOINT 在Dockerfile中预设,也可以在运行时通过命令行参数覆盖。
信号和停止容器对某些信号(如 SIGTERM)有默认行为,可以通过 --signal 指定其他信号,使用 docker stop 停止容器。
重启策略使用 --restart 指定重启策略,如 alwaysunless-stoppedon-failure
用户和用户组使用 --user 指定运行容器的用户和用户组。
工作目录使用 --workdir 或 -w 设置容器内的工作目录。
容器特权使用 --privileged 给予容器额外的权限(不推荐)。
读-only文件系统使用 --read-only 使容器的文件系统为只读。
示例运行一个后台的nginx容器并映射端口:docker run -d -p 80:80 --name mynginx nginx
13.Docker容器日志
内容描述
日志驱动Docker 容器的日志可以通过不同的日志驱动进行管理。
默认日志驱动默认为 json-file,以JSON格式存储日志。
日志选项使用 --log-driver 和 --log-opt 指定日志驱动及其选项。
查看日志使用 docker logs 命令查看容器的日志输出。
实时日志使用 docker logs -f 实时跟踪日志输出。
日志旋转json-file 驱动支持日志旋转,通过 --log-opt max-size 和 --log-opt max-file 设置。
自定义日志驱动Docker 允许使用第三方日志驱动,如 sysloggelf 等。
日志管理日志管理是容器维护的重要部分,需要定期清理旧日志。
日志级别某些应用允许通过环境变量设置日志级别,如 DEBUGINFOERROR
结构化日志使用结构化日志(如JSON格式)可以方便日志的解析和分析。
日志隐私确保日志中不包含敏感信息,或使用相关选项对敏感信息进行脱敏。
最佳实践- 定期清理和归档日志以节省空间。
- 使用第三方日志管理工具(如ELK Stack)进行日志分析。
示例查看名为 mycontainer 的容器的日志:docker logs mycontainer
 14.Docker容器监控
内容描述
监控目的监控容器的运行状态、性能指标和日志,以确保服务的稳定性和可维护性。
Docker Stats使用 docker stats 命令实时监控容器的资源使用情况,如CPU、内存、网络I/O等。
日志监控通过配置日志驱动,将容器日志发送到外部日志系统进行监控和分析。
第三方工具使用如Prometheus、Grafana、Datadog等工具进行容器和集群的监控。
健康检查Docker容器支持健康检查,可以定期检查容器内服务的健康状态。
资源限制通过Docker运行时配置对容器的CPU和内存使用进行限制,防止单个容器占用过多资源。
系统监控可以使用宿主机的监控系统来间接监控容器,如使用cAdvisor等。
事件监控Docker提供了事件系统,可以使用 docker events 命令来监控容器和镜像的事件。
可视化利用图形界面工具提供直观的监控视图,帮助快速识别问题。
告警系统配置告警系统,在容器出现异常时及时通知管理员。
容器内监控在容器内部运行监控代理,如Telegraf或StatsD,收集应用层面的监控数据。
最佳实践- 定期检查容器状态和性能指标。
- 使用自动化工具进行监控和日志分析。
- 配置详细的健康检查。
示例使用 docker stats 监控所有运行中的容器:docker stats
15.Docker安全性
内容描述
镜像安全使用可信的基础镜像,并定期更新以修复安全漏洞。
最小权限原则容器应该只运行必要的服务,避免使用特权模式。
用户命名空间使用用户命名空间隔离容器的进程空间。
安全扫描使用Docker内置的扫描工具或第三方工具扫描镜像中的安全漏洞。
网络隔离使用Docker的网络特性隔离容器间的通信。
存储安全对敏感数据使用加密卷或绑定挂载,并限制卷的访问权限。
运行时安全监控容器的运行时行为,确保没有异常活动。
资源限制使用资源限制防止单个容器占用过多系统资源。
安全配置遵循Docker官方的安全配置最佳实践。
用户认证对私有仓库使用认证机制,限制未授权访问。
安全更新定期对Docker引擎和运行中的容器应用安全更新。
审计日志启用Docker守护进程的审计日志,记录关键操作。
容器逃逸防护防止攻击者从容器逃逸到宿主机。
安全工具使用如SELinux、AppArmor等安全模块增强安全性。
最佳实践- 不要在容器内运行root用户。
- 定期对Docker守护进程进行安全审计。
- 使用私有仓库存储敏感镜像。
示例运行一个安全的容器,不使用特权模式:docker run -d --name mycontainer --user 1000 myimage
16. Docker Swarm
内容描述
定义Docker Swarm 是 Docker 原生的集群管理工具,用于将多个 Docker 主机组合成一个虚拟主机来管理容器。
集群由多个运行 Docker 引擎的节点组成,这些节点可以是物理机或虚拟机。
节点角色Manager: 管理集群状态,处理集群中的服务更新和任务分配。
Worker: 执行由 Manager 分配的任务,运行容器。
初始化使用 docker swarm init 初始化一个新的 Swarm 集群。
加入集群新节点使用 docker swarm join 命令加入到集群中。
服务在 Swarm 集群中,容器是作为服务运行的,可以指定服务的复制数量。
更新Swarm 支持滚动更新,无需停止整个服务即可更新容器。
负载均衡Swarm 提供内置的负载均衡器,可以跨多个容器分发流量。
网络Swarm 网络允许容器在集群中的节点间通信。
安全性支持使用TLS加密集群节点间的通信。
故障转移支持故障转移,如果一个节点失败,可以自动将任务转移到其他节点。
可扩展性易于扩展,可以通过添加或移除节点来调整集群的大小。
最佳实践- 将日志记录、监控和备份等运维操作自动化。
- 合理规划节点的角色分配,根据资源和需求分配 Manager 和 Worker 节点。
示例初始化一个新的 Swarm 集群:docker swarm init --advertise-addr <MANAGER-IP>
17. Docker Stack
内容描述
定义Docker Stack 是一个用于定义多个服务及其部署关系的集合,通常用于Swarm集群。
部署使用 docker stack deploy 命令部署一个Stack。
服务编排Stack 允许定义服务之间的依赖关系和部署参数。
更新可以更新Stack并实现滚动更新,无需停止整个服务。
删除使用 docker stack rm 删除一个Stack及其所有服务。
服务Stack 中的服务可以跨多个节点运行,实现负载均衡和高可用性。
YAML文件使用YAML文件定义Stack,包括服务、网络和存储等配置。
扩展性可以很容易地扩展服务的实例数量以应对不同的负载需求。
滚动更新Stack 支持无停机时间的滚动更新。
日志和监控可以为Stack配置日志和监控选项。
安全性支持使用TLS加密服务之间的通信。
最佳实践- 使用版本控制管理Stack定义文件。
- 为Stack配置适当的资源限制以避免资源竞争。
- 定期更新和维护Stack以确保安全性和稳定性。
示例使用YAML文件部署名为 myapp 的Stack:docker stack deploy -c stack.yaml myapp
18.Docker插件
内容描述
定义Docker 插件是一种扩展 Docker 功能的机制,可以添加新的特性或增强现有功能。
类型Volume: 提供额外的卷驱动。
Network: 提供额外的网络驱动。
Authorization: 提供授权插件。
Log: 提供日志驱动插件。
安装使用 docker plugin install 命令安装插件。
列表使用 docker plugin ls 查看已安装的插件。
配置插件可以通过选项进行配置,这些选项在安装时指定。
权限插件可能需要特定的权限来执行操作,这些权限在安装时设置。
更新插件可以被更新到新版本,使用 docker plugin upgrade
卸载使用 docker plugin rm 卸载不再需要的插件。
开发开发者可以创建自定义插件来扩展 Docker。
安全性在安装和使用插件时需要考虑安全性,仅安装信任来源的插件。
社区插件Docker 提供了一个官方的插件库,用户可以从中发现和安装插件。
最佳实践- 仅安装和使用经过验证的插件。
- 定期更新插件以修复安全漏洞。
示例安装一个名为 flocker 的卷插件:docker plugin install flocker
19. Docker 命令行工具
内容描述
Docker CLIDocker 提供了一个命令行界面(CLI),用于与 Docker 守护进程交互。
命令分类Docker 命令可以分为容器、镜像、网络、卷、插件等几类。
自动补全Docker CLI 支持命令和参数的自动补全,提高使用效率。
命令帮助使用 --help 选项可以查看命令的使用帮助,例如 docker run --help
脚本可以编写脚本来自动化 Docker 命令的执行。
环境变量Docker CLI 支持通过环境变量进行配置。
配置文件Docker 的配置可以通过配置文件 config.json 进行设置。
调试使用 dockerd 命令行参数启动调试模式的 Docker 守护进程。
版本控制Docker CLI 支持通过版本号来使用特定版本的 Docker 守护进程。
安全性注意保护 Docker CLI 的凭据和配置,避免未授权的访问。
最佳实践- 使用 --rm 选项自动清理容器文件系统。
- 限制容器的资源使用,例如使用 --memory
- 使用 .dockerignore 文件忽略不需要的文件。
示例运行一个交互式的 shell 容器:docker run -it --rm ubuntu bash
20.Docker 实践案例
内容描述
微服务架构Docker 常用于微服务架构,每个服务可以独立容器化部署。
持续集成/持续部署 (CI/CD)Docker 可以集成到 CI/CD 流程中,实现代码的自动构建、测试和部署。
开发与生产环境一致性Docker 确保开发、测试和生产环境的一致性。
本地开发开发者可以使用 Docker 在本地机器上模拟生产环境。
数据科学Docker 用于数据科学项目,封装依赖和运行环境。
机器学习机器学习模型和依赖可以容器化,便于共享和部署。
DevOpsDocker 支持 DevOps 实践,如自动化部署和快速迭代。
多环境部署同一应用可以跨不同环境(开发、测试、生产)部署而无需修改代码。
云原生应用Docker 与 Kubernetes 等编排工具配合,支持云原生应用的部署和管理。
安全性隔离Docker 提供的隔离机制用于安全地运行不受信任的应用程序。
节省资源Docker 容器共享宿主机资源,提高资源利用率。
快速启动容器启动速度快,适合需要快速扩展的场景。
最佳实践- 为不同的环境使用不同的配置和镜像。
- 保持镜像精简,仅包含必要的依赖。
- 使用健康检查确保服务的可用性。
示例在 Kubernetes 集群上部署一个由多个微服务组成的应用:使用 Helm charts 或 Kubernetes manifests 来定义和部署服务。

学起来吧,卷起来吧!学不完根本学不完! 

这篇关于Docker知识点汇总表格总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/954777

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel