docker从安装到部署项目,一篇文章教会你

这篇具有很好参考价值的文章主要介绍了docker从安装到部署项目,一篇文章教会你。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、什么是Docker

首先看下 Docker 图标:
docker部署项目,docker及linux,docker,容器,运维,持续部署
一条小鲸鱼上面有些集装箱,比较形象的说明了 Docker 的特点,以后见到这个图标等同见到了 Docker

1.1、容器技术

1. Docker 是一个开源的应用容器引擎,它基于 Go 语言开发,并遵从 Apache2.0 开源协议
2. 使用 Docker 可以让开发者封装他们的应用以及依赖包到一个可移植的容器中,然后发布到任意
    Linux机器上,也可以实现虚拟化
3. Docker 容器完全使用沙箱机制,相互之间不会有任何接口,这保证了容器之间的安全性
4. Docker 诞生于 2013 年初,目前有两个版本: Community Edition(CE ,社区版 )
    EnterpriseEdition(EE,企业版 )

1.2、容器与虚拟机比较虚拟机:

docker部署项目,docker及linux,docker,容器,运维,持续部署

虚拟机:

1. 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统
2. 在实体计算机中能够完成的工作在虚拟机中都能够实现
3. 在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量
4. 每个虚拟机都有独立的 CMOS 、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作
区别:
1. 虚拟机是在一台物理机上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离
的。 Docker 是开源的应用容器引擎,依然需要先在电脑上安装操作系统,然后安装 Docker 容器管
理器
2. 虚拟机是在硬件级别进行虚拟化,而 Docker 是在操作系统的层面虚拟化
3. 虚拟机是通过模拟硬件搭建操作系统,而 Docker 则是复用操作系统
4. 虚拟机实现了操作系统之间的隔离, Docker 只是进程之间的隔离,所以虚拟机的隔离级别更高,安全性更强
5. Docker 的运行速度更快
6. Docker 的文件要小的多,虚拟机要大的多

1.3、Docker特点

1、更高效的利用系统资源

Docker 对系统资源的利用率很高,无论是应用执行速度,内存损耗或者文件存储速度,都要比传统虚拟 机技术更高效。因此,对比虚拟化技术,一个相同配置的主机往往可以运行更多数量的应用

2、更快速的启动时间

传统的虚拟化技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级,甚至毫秒级的启动时间,大大节约了开发测试,部署的时间

3、一致的运行环境

开发过程中常见的一个问题是环境一致问题,由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中发现。
Docker 的镜像提供了除内核外完整的运行时环境,确保环境一致性,从而不会在出现这段代码在我机器上没问题这类问题
Docker 是一个采用集装箱思想出现技术,把相关依赖及运行代码打到一起,达到开发环境,测试环境,
部署环境一样,减少由于环境不一致而出现问题

4、持续支付和部署

对开发和运维人员来说,最希望就是一次创建和部署,可以在任意地方运行。而且使用 Docker file 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助 更好的生产环境中部署该镜像

5、更轻松的迁移

由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。
Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本、其运行结果是一致的。
因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况

6、更轻松的维护和扩展

Docker 使用的分层存储以及镜像技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得十分简单。
此外, Docker 团队同各个开源项目团队一起维护了一大批高质量的官网镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大降低了应用服务的镜像制作成本

2、Docker组件学习

docker部署项目,docker及linux,docker,容器,运维,持续部署

2.1、Docker客户端和服务器

1. Docker 是一个客户端 - 服务器( C/S )架构程序。
2. Docker 客户端只需要向 Docker 服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。
3. Docker 提供了一个命令行工具 Docker 以及一整套 RESTful API
4. 你可以在同一台宿主机上运行 Docker 守护进程和客户端,也可以从本地的 Docker 客户端连接到运 行在另一台宿主机上的远程 Docker 守护进程
docker部署项目,docker及linux,docker,容器,运维,持续部署

2.2、Docker镜像

1. 镜像是构建 Docker 的基石。
2. 用户基于镜像来运行自己的容器。
3. 镜像也是 Docker 生命周期中的 构建 部分。
4. 镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。
5. 例如:添加一个文件;执行一个命令;打开一个窗口。也可以将镜像当作容器的 源代码
6. 镜像体积很小,非常 便携 ,易于分享、存储和更新

2.3、Registry(注册中心/镜像仓库)

1. Docker Registry 来保存用户构建的镜像。
2. Registry 分为公共和私有两种。
3. Docker 公司运营公共的 Registry 叫做 Docker Hub
4. 用户可以在 Docker Hub 注册账号,分享并保存自己的镜像
说明:在 Docker Hub 下载镜像巨慢,可以自己构建私有的 Registry

2.4、Docker容器

1. Docker 可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进容器即可。
2. 容器是基于镜像启动起来的,容器中可以运行一个或多个进程。
3. 我们可以认为,镜像是 Docker 生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。
4. 容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务
所以 Docker 容器就是:一个镜像格式;一些列标准操作;一个执行环境
Docker 借鉴了标准集装箱的概念:
标准集装箱将货物运往世界各地, Docker 将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而 Docker 运输软件(所以说 Docker 图标很形象)
        》和集装箱一样,Docker 在执行上述操作时,并不关心容器中到底装了什么,它不管是 web 服务器, 还是数据库,或者是应用程序服务器什么的。所有的容器都按照相同的方式将内容 装载 进去
        》Docker也不关心你要把容器运到何方:我们可以在自己的笔记本中构建容器,上传到 Registry ,然 后下载到一个物理的或者虚拟的服务器来测试,再把容器部署到具体的主机中。像标准集装箱一样, Docker 容器方便替换,可以叠加,易于分发,并且尽量通用
        》使用 Docker ,我们可以快速的构建一个应用程序服务器、一个消息总线、一套实用工具、一个持续 集成( CI )测试环境或者任意一种应用程序、服务或工具。我们可以在本地构建一个完整的测试环 境,也可以为生产或开发快速复制一套复杂的应用程序栈
docker部署项目,docker及linux,docker,容器,运维,持续部署

3、Docker的安装

1. Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜 像中,然后发布到任何流行的 Linux Windows 机器上,也可以实现虚拟化。容器是完全使用沙
箱机制,相互之间不会有任何接口。
2. 这是官网上对 Docker 的介绍。说白了, Docker 就是方便我们环境搭建和开发使用的
今天主要是教大家如何搭建一个 docker ,帮助刚刚接触 docker 的同学快速搭建 docker 。好了,废话不多说,开始

3.1、准备工作

1、准备Linux服务器

Linux 服务器一台,且上面的安装的 Centos 系统内核要不低于 3.10 。你可以通过 uname -r 来查询当前内核版本,我本地的虚拟机:
docker部署项目,docker及linux,docker,容器,运维,持续部署

2、清除系统残余项

如果你的 Llinux 服务器之前没有装过 Docker ,可以直接跳过此步骤
sudo yum remove docker
docker部署项目,docker及linux,docker,容器,运维,持续部署
我这台 Linux 服务器上刚装的虚拟机,是新的,所以没有什么需要删除的

3、安装下载Docker

接下来我就通过 FinalShell 工具来输入命令了
安装下载 Docker 的命令如下:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
输入命令后回车,等一会,等他安装完毕:
docker部署项目,docker及linux,docker,容器,运维,持续部署
安装完毕是这样了:
docker部署项目,docker及linux,docker,容器,运维,持续部署

4、添加阿里云的软件源

输入下面命令:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo

docker部署项目,docker及linux,docker,容器,运维,持续部署

装这个的目的是以后每个软件都优先从阿里云的软件库中下载,如果阿里云仓库没有,才会去
docker.hub 中下载,提高我们的下载速度。(与 maven 仓库同理)

5、更新yum缓存

为了保证能更新和下载需要的服务:如 docker
输入命令并且更新成功命令
sudo yum makecache fast

docker部署项目,docker及linux,docker,容器,运维,持续部署

1. 我们在更新 yum 源或者出现配置 yum 源之后,通常都会使用 yum makecache 生成缓存,这个命令是将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度
2. 如果觉得占用磁盘空间,可以使用 yum clean 指令清除缓存:【 yum clean all

3.2、安装Docker

1、安装Docker

安装 Docker Docker 版本分为: CE (社区免费版)和 EE (企业版,安全 CE
命令如下:
sudo yum -y install docker-ce

docker部署项目,docker及linux,docker,容器,运维,持续部署

 docker部署项目,docker及linux,docker,容器,运维,持续部署

开始下载并安装 Docker ,稍等一会,系统正在下载
看到 complete ,表示下载安装成功了

2、启动Docker

如下命令启动 Docker
sudo systemctl start docker
查看 Docker 是否成功,输入命令:
docker info
我们可以看到 Docker 已经安装成功且容器与镜像数都为 0 ,是一个全新的 docker 服务
至此,我们 Docker 安装成功了
docker部署项目,docker及linux,docker,容器,运维,持续部署

3、开机启动Docker

如下命令启动 Docker
sudo systemctl start docker
查看 Docker 是否成功,输入命令:
docker info 

docker部署项目,docker及linux,docker,容器,运维,持续部署

我们可以看到 Docker 已经安装成功且容器与镜像数都为 0 ,是一个全新的 docker 服务
至此,我们 Docker 安装成功了
3 、开机启动 Docker
如下命令可以设置 Docker 随着 Linux 开机而启动
 
sudo systemctl enable docker

docker部署项目,docker及linux,docker,容器,运维,持续部署

4、移除Docker-ce服务

sudo yum remove docker-ce

5、删除Docker依赖项

sudo rm -rf /var/lib/docker

4、Docker常用命令

docker search 镜像名称 //搜索镜像
docker pull 镜像名称:版本号 //拉取对应版本的镜像
docker pull 镜像名称 //默认拉取最新的镜像
docker images //查看本地已下载的镜像
docker ps //查看正在运行的容器
docker ps -a //查看所有的容器(包括run、stop、exited状态的)
docker container ls //查看正在运行的容器
docker rm 容器ID //只能删除没有在运行的容器
docker rm -f 容器ID //可以删除正在运行的容器
docker run -p 本地主机端口号:容器服务端口号 --name 容器名字 [-e 配置信息修改] -d 镜像名字
docker start 容器ID //启动容器
docker stop 容器ID //终止容器
docker rmi 镜像名称orID //删除镜像
docker rmi 镜像名称orI --force //强制删除镜像

4.1、停止与启动容器

停止正在运行的容器: docker stop 容器名 / 容器 id
启动已运行过的容器: docker start 容器名 / 容器 id

4.2、文件拷贝

如果我们需要将文件拷贝到容器内可以使用 cp 命令
docker cp 需要拷贝的文件或目录容器名称:容器目录
也可以将文件从容器内拷贝出来
docker cp 容器名称:容器目录需要拷贝的文件或目录
docker cp /1.txt redis:/ #把linux中的/1.txt文件,拷贝到redis容器中的 / 根目录 docker
cp redis:/2.txt / #把redis容器中的 /2.txt ,拷贝到 linux的 / 根目录

4.3、目录挂载

        

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。

创建容器 添加 -v 参数 后边为 宿主机目录 : 容器目录
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7
 如果你共享的是多级的目录,可能会出现权限不足的提示:permission denied
这是因为CentOS7 中的安全模块 selinux 把权限禁掉了,我们需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题

4.4、查看容器IP地址

我们可以通过以下命令查看容器运行的各种数据
docker inspect mycentos2
也可以直接执行下面的命令直接输出 IP 地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2

4.5、删除容器

删除指定的容器: docker rm 容器名 / 容器 ID
注意,只能删除停止的容器
删除所有容器:
docker rm docker ps -a -q

4.6、登录容器

我们先查看一下正在运行的容器:
docker部署项目,docker及linux,docker,容器,运维,持续部署
目前有 JDK MySQL 都在运行,接着看

1、使用attach进入容器

docker attach 53
其中的 “53” 指的是什么呢?
我们启动的 Java 镜像的容器 ID “53d4afb331e4” ,所以, docker attach 命令后面,你可以指定容器 ID来进入具体的容器。可以指定 53 53d4 53d4afb 等任意长度的值,都代表了当前的 java 容器
docker部署项目,docker及linux,docker,容器,运维,持续部署

 除了使用容器ID进入容器之外,也可以使用容器的别名进入容器:

docker attach java

2、使用exec命令进入容器

通过容器别名进入容器:
docker exec -it java /bin/bash 
通过容器 ID 进入容器:
docker exec -it 53 /bin/bash 
进入容器后,可以查看 Java 的版本信息,如下图所示:
docker部署项目,docker及linux,docker,容器,运维,持续部署

5、Docker安装常用软件

5.1、安装 MySQL

首先在 Docker 仓库中搜索一下 MySQL ,命令如下:
docker search mysql
结果:
docker部署项目,docker及linux,docker,容器,运维,持续部署

我们这里安装MySQL8.0 的,命令如下:

docker pull mysql:8.0
docker pull mysql //默认拉取最新版本 
下载中,稍等一会
docker部署项目,docker及linux,docker,容器,运维,持续部署
查看本地仓库镜像是否下载成功
docker部署项目,docker及linux,docker,容器,运维,持续部署
docker images mysql:8.0
docker部署项目,docker及linux,docker,容器,运维,持续部署
运行 MySQL8.0 容器:
docker run -p 3307:3306 --name mysql8.0 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0
参数说明:
-p 将本地主机的端口映射到docker容器端口(因为本机的3306端口已被其它版本占用,所以使用3307)
--name 容器名称命名
-e 配置信息,配置root密码
-d 镜像名称

docker部署项目,docker及linux,docker,容器,运维,持续部署

查看 mysql8.0 容器运行情况
docker ps 

docker部署项目,docker及linux,docker,容器,运维,持续部署

docker 登录 mysql
docker exec -it mysql8.0 bash
mysql -uroot -p

docker部署项目,docker及linux,docker,容器,运维,持续部署

然后输入密码root就可以登录成功了

接下来,我们用本地的【 Navicat Premium 15 】工具来连接这个数据库试试:
docker部署项目,docker及linux,docker,容器,运维,持续部署
查询版本号:
select version();
结果:
docker部署项目,docker及linux,docker,容器,运维,持续部署

5.2、安装JDK

命令:
docker pull primetoninc/jdk:1.8

docker部署项目,docker及linux,docker,容器,运维,持续部署

安装完成:
docker部署项目,docker及linux,docker,容器,运维,持续部署
启动 JAVA 镜像容器:
docker run -d -it --name java primetoninc/jdk:1.8
参数说明:
run:启动一个镜像容器
-d:指定容器运行于后台
-it:-i 和 -t 的缩写;
-i:以交互模式运行容器,通常与 -t 同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
--name:第一个“java”是为容器指定了一个别名,而第二个“java”指的是下载镜像时的名称

docker部署项目,docker及linux,docker,容器,运维,持续部署

看下是否安装成功:
java -versrion
docker部署项目,docker及linux,docker,容器,运维,持续部署
搞定,安装成功了

6、Docker中部署jar包运行

6.1、准备一个jar包

我这里顺便写了一个 SpringBoot 项目,里面什么都没有,只有一个定时任务,每隔两秒打印一句话而
已:
pom依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.test</groupId>
<artifactId>DockerDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<!--1、引入SpringBoot-->
<parent>
<groupId> org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
<dependencies>
<!--web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.5.RELEASE</version>
<configuration>
<!--自己手动导入的jar包也需要打包-->
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version><configuration>
<!--测试包下的代码出错不影响项目的编译-->
<testFailureIgnore>true</testFailureIgnore>
<!--跳过测试包代码-->
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
<finalName>dockerDemo</finalName>
</build>
</project> 
启动类:

@SpringBootApplication
@EnableScheduling
public class App {
    public static void main(String[] args){
        SpringApplication.run(App.class, args);
    }
} 
定时任务:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class TestTask {

    @Scheduled(fixedRate = 2000)
    public void test(){
        System.out.println("定时任务:每隔两秒执行一次" + new Date());
    }

} 
没有 yml 配置文件
windows 本地启动时可以出来效果的,如下图所示:

6.2、创建DockerFile文件

Linux opt 目录中新建 dockerTest 文件夹,如下:( opt 目录自己任意选择,我这里以 opt 目录为例)
docker部署项目,docker及linux,docker,容器,运维,持续部署
然后利用工具将我们准备好的 jar 包传到该目录:
docker部署项目,docker及linux,docker,容器,运维,持续部署
OK ,目前 jar 包已经上传完成了,接下来在该目录中,新建 DockerFile 文件,内容如下:(我这里是本地新建 DockerFile 编辑好内容后上传到)
# jdk 是一个已有的包含 jdk 的镜像
FROM java
# 作者签名
MAINTAINER libigtong
# 简化 jar 的名字路径
COPY dockerDemo.jar /app.jar
# 执行 java -jar 命令 (CMD:在启动容器时才执行此行。RUN:构建镜像时就执行此行)
CMD java -jar /app.jar
# 设置对外端口为 8080
EXPOSE 8080
然后将【 DockerFile 】文件上传到【 dockerTest 】目录中,结果如下:
docker部署项目,docker及linux,docker,容器,运维,持续部署

6.3、生成镜像

生成本工程的镜像:
docker build -t docker_test:docker_demo -f /opt/dockerTest/Dockerfile
/opt/dockerTest
生成成功,然后使用【 docker images 】命令查看了所有的镜像,果然有 docker 这个镜像了
docker部署项目,docker及linux,docker,容器,运维,持续部署

6.4、启动镜像

docker run --name dockerApp -p 8080:8080 -d 28dae64bba9d
从上面执行结果可以看出,镜像已经启动了

6.5、启动容器

docker start cc7c3a1582d0
查看正在运行的容器:
docker部署项目,docker及linux,docker,容器,运维,持续部署

6.6、运行效果查看

上面我们将容器已经启动了,那么怎么看我们那个 jar 包的运行结果了?
现在我们只需要进入到容器中就可以了:
docker attach cc7c3a1582d0
docker部署项目,docker及linux,docker,容器,运维,持续部署
说明已经成功的运行 jar 包了
接下来我们关闭容器试试:
docker stop cc7c3a1582d0

docker部署项目,docker及linux,docker,容器,运维,持续部署文章来源地址https://www.toymoban.com/news/detail-712811.html

另外一个一直做打印的窗口就立马停止打印了:
docker部署项目,docker及linux,docker,容器,运维,持续部署
测试成功, jar 包可以正常的启动和停止了
 
觉得有用,点赞收藏支持一下,大家的支持是我写下去的动力呀 QAQ~

到了这里,关于docker从安装到部署项目,一篇文章教会你的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++初阶之一篇文章教会你list(模拟实现)

    成员类型表 这个表中列出了C++标准库中list容器的一些成员类型定义。这些类型定义是为了使list能够与C++标准库的其他组件协同工作,并提供一些通用的标准接口。每个成员类型的用处: value_type : 这个成员类型代表list容器中存储的数据类型,即模板参数T的类型。 allocator_

    2024年02月12日
    浏览(39)
  • C++初阶之一篇文章教会你list(理解和使用)

    在C++标准库中, std::list 是一个双向链表容器,用于存储一系列元素。与 std::vector 和 std::deque 等容器不同, std::list 使用链表的数据结构来组织元素,因此在某些操作上具有独特的优势和性能特点。以下是关于 std::list 的详细介绍: 双向链表结构: std::list 内部使用双向链表来

    2024年02月13日
    浏览(51)
  • Vue中的Pinia状态管理工具 | 一篇文章教会你全部使用细节

    Pinia(发音为/piːnjʌ/,如英语中的“peenya”)是最接近piña(西班牙语中的菠萝)的词 ; Pinia开始于大概2019年,最初是 作为一个实验为Vue重新设计状态管理 ,让它用起来适合组合式API(Composition API)。 从那时到现在,最初的设计原则依然是相同的,并且目前同时兼容Vue2、

    2024年02月11日
    浏览(44)
  • 一篇文章教会你一个优秀的程序员如何维护好自己的电脑

    我认为程序员的笔记本电脑可以根据不同的特点和用途分为几类 这里介绍的都是些笔记本 以下是一些常见的分类和它们的特点: 轻薄便携笔记本(Ultrabooks) 优点: 便携性 :轻薄设计和轻便重量,适合在不同地方工作。 性能 :虽然不如游戏笔记本那样强大,但在性能和续

    2024年02月14日
    浏览(56)
  • 一篇文章教会你写一个贪吃蛇小游戏(纯C语言)

    实现基本的功能 : • 贪吃蛇地图绘制 • 蛇吃⻝物的功能(上、下、左、右⽅向键控制蛇的动作) • 蛇撞墙死亡 • 蛇撞⾃⾝死亡 • 计算得分 • 蛇⾝加速、减速 • 暂停游戏 Win32 API是一套由Microsoft提供的应用程序编程接口,用于开发Windows平台上的应用程序。它包括了丰

    2024年01月22日
    浏览(50)
  • 数据结构入门(C语言版)一篇文章教会你手撕八大排序

    排序 :所谓排序,就是使一串记录,按照其中的某个或某些的大小,递增或递减的排列起来的操作。 稳定性 :假定在待排序的记录序列中,存在多个具有相同的的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而

    2024年02月01日
    浏览(65)
  • 【TDengine】一篇文章带你通过docker安装TDengine数据库

    目录 1、通过docker方式安装 2、相关步骤解释 3、停止运行taos与卸载 虽然并不推荐在生产环境中通过 Docker 来部署 TDengine 服务,但 Docker 工具能够很好地屏蔽底层操作系统的环境差异,很适合在开发测试或初次体验时用于安装运行 TDengine 的工具集。特别是,借助 Docker,能够比

    2024年02月15日
    浏览(51)
  • (python实现)一篇文章教会你k-means聚类算法(包括最优聚类数目k的确定)

    Kmeans算法中,K值所决定的是在该聚类算法中,所要分配聚类的簇的多少。Kmeans算法对初始值是⽐较敏感的,对于同样的k值,选取的点不同,会影响算法的聚类效果和迭代的次数。本文通过计算原始数据中的:手肘法、轮廓系数、CH值和DB值,四种指标来衡量K-means的最佳聚类数

    2024年02月05日
    浏览(64)
  • 一篇文章教你使用Docker本地化部署Chatgpt(非api,速度非常快!!!)及裸连GPT的方式(告别镜像GPT)

    这种方法的好处就是没有登录限制,不用担心封号,没有ip的限制,是一种官方认可的方式 使用普通的科学的上网方式,也可以直接进行连接使用 该项目来源于Github大佬制作的关于GPT的本地化部署 有兴趣了解原理的可以去看看这个项目 潘多拉,一个让你呼吸顺畅的ChatGPT D

    2024年02月12日
    浏览(44)
  • stable diffusion webui界面布局(很多大佬一键安装包的样式,自己部署却没有?那就看这篇文章吧!)

    自己部署stable diffusion界面布局(很多大佬一键安装包的样式,自己部署却没有?那就看这篇文章吧!) 如下图,使用一键部署的项目,有【外挂vae模型】【跳过CLIP部署】,且【采样方法】的部署不是下拉列表,而是所有采样方法都放出来了 如下图:这是不适用一键部署包,

    2024年02月16日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包