Docker极速入门一文通
文章目录
- Docker极速入门一文通
- Docker命令
- 搜索镜像docker search
- 拉取镜像|下载镜像docker pull
- 查看镜像docker images
- 删除镜像docker rmi
- 运行容器docker run
- 查看容器 docker ps
- 删除容器 docker rm
- 后台启动容器 docker run -d
- 进入容器 docker exec
- 拷贝文件到容器 docker cp
- 拷贝容器的文件到宿主机 docker cp
- 查看容器日志docker logs
- 启动、停止、重起容器 docker start|stop|restart
- 查看容器详细信息docker inspect
- Docker 部署一个mysql服务
- 下载mysql镜像
- 挂载
- 在宿主机创建目录
- 运行容器
- Dockerfile自定义docker镜像
- Dockerfile常见命令
- Dockerfile实践
- 构建使用Dockerfile镜像docker build
- 发布镜像到镜像仓库docker login|tag|push
- docker-compose集群容器
- 下载安装docker-compose
Docker极速入门一文通
Copyright ©github:Byron4j | CSDN: https://blog.csdn.net/zixiao217. All Rights Reserved
Docker命令
搜索镜像docker search
[] 表示可选项
#命令:docker search [镜像名]# 示例: 搜索 nginx
docker search nginx
拉取镜像|下载镜像docker pull
# 命令:docker pull [镜像名]:[镜像tag版本号]# 示例: 拉取 nginx,默认会使用latest最新,也可以指定tag
docker pull nginx# 示例:指定tag
docker pull tomcat:9.0
查看镜像docker images
# 命令:docker images # 示例:使用pull命令拉取镜像后,可以查看本地的镜像;可以查看到镜像id
docker images
删除镜像docker rmi
# 命令:docker rmi -f [镜像id]
# -f 表示强制删除# 示例:强制删除本地镜像id为ca546a17a287的镜像
docker rmi -f ca546a17a287
运行容器docker run
# 命令:docker run --name 容器名称 镜像id:tag# 运行容器,-it 进入交互式命令终端 最后可以指定命令 bash、sh 等
# 命令:docker run -it --name 容器名称 镜像id:tag /bin/bash# 示例:
docker run -it --name centos792009 centos:7.9.2009 /bin/bash
[root@9456272d7386 /]# # 交互式进入容器内部后可以使用linux命令; 退出时可以使用 ctrl+p+q 三键退出
查看容器 docker ps
# 命令:docker ps# 示例:查看正在运行的容器 可以使用 -a 查看所有容器包括已经停止的容器
docker ps
docker ps -a
删除容器 docker rm
# 命令:docker rm -f [容器id]
# -f 表示强制# 示例:删除容器 9456272d7386, 前提是容器已经停止了。不然只能强制删除了
docker rm 9456272d7386
后台启动容器 docker run -d
# -d 后台启动,但是对于未提供服务的容器而言,启动后回立即停止。
# 所以可以增加手动改脚本循环执行,来使得容器一直存活
# 容器删除后数据没了,所以这里可以使用过 -v 挂载数据卷: -v 宿主机目录:容器目录, 这样二者会同步数据
docker run -d --name centos7 -v /docker/centos7/opt:/opt centos:7.9.2009 /bin/bash -c "while true; do echo hello docker; sleep 1; done"
进入容器 docker exec
# 命令:docker exec -it [容器id] bash命令# 示例:-it交互式 进入容器
docker exec -it 081efec13d71 bash# 进入容器后,查看 opt 目录是空的
[root@081efec13d71 /]# ls opt
[root@081efec13d71 /]# # 也可以看到虚拟机宿主机的 /docker/centos7/opt 也是空的; 这里crf是我的虚拟机的用户名
cd /docker/centos7/opt
crf@crf:/docker/centos7/opt$ ls
crf@crf:/docker/centos7/opt$ # 切换到容器的 /opt 目录创建一个文件,输入内容
[root@081efec13d71 opt]# echo "hello, docker">demo.txt
[root@081efec13d71 opt]# cat demo.txt
hello, docker#切换到虚拟机主机可以看到 /docker/centos7/opt 目录也同步多了一个demo.txt 文件,这就是-v命令:数据卷挂载
crf@crf:/docker/centos7/opt$ ls
demo.txt
crf@crf:/docker/centos7/opt$ cat demo.txt
hello, docker
拷贝文件到容器 docker cp
# 命令:docker cp [主机文件路径目录] [容器id]:[容器内部存放文件的路径]# 示例:
crf@crf:/docker/centos7/opt$ docker cp /etc/passwd 081efec13d71:/opt
Successfully copied 4.61kB to 081efec13d71:/opt#容器中可以看到该文件
[root@081efec13d71 opt]# ls
demo.txt passwd
拷贝容器的文件到宿主机 docker cp
# 命令:docker cp [容器id]:[容器内部存放文件的路径] [主机文件路径目录] # 示例:略
查看容器日志docker logs
# 命令:docker logs [容器id]
crf@crf:~$ docker logs cf937b17d
hello docker
hello docker
hello docker
hello docker
hello docker
hello docker
hello docker
hello docker
hello docker
hello docker
hello docker# 示例:查看10行日志 -n 数字
crf@crf:~$ docker logs cf937b17d -n 10
hello docker
hello docker
hello docker
hello docker
hello docker
hello docker
hello docker
hello docker
hello docker
hello docker# 示例:查-f 实时日志
docker logs cf937b17d -f# 示例:-t 显示时间戳
crf@crf:~$ docker logs cf937b17d -n 10 -t
2024-10-10T05:39:20.068083119Z hello docker
2024-10-10T05:39:21.069233666Z hello docker
2024-10-10T05:39:22.071136333Z hello docker
2024-10-10T05:39:23.072402137Z hello docker
2024-10-10T05:39:24.073867140Z hello docker
2024-10-10T05:39:25.075356512Z hello docker
2024-10-10T05:39:26.076942077Z hello docker
2024-10-10T05:39:27.078471687Z hello docker
2024-10-10T05:39:28.079989730Z hello docker
2024-10-10T05:39:29.081181485Z hello docker
启动、停止、重起容器 docker start|stop|restart
# 命令:docker start|stop|restart 容器id
# 启动、停止、重启容器# 示例:
crf@crf:~$ docker stop cf937b17d1cc
cf937b17d1cc
crf@crf:~$ docker start cf937b17d1cc
cf937b17d1cc
crf@crf:~$ docker restart cf937b17d1cc
cf937b17d1cc
查看容器详细信息docker inspect
# 命令:docker inspect 容器id# 示例:crf@crf:~$ docker inspect cf937b17d1cc
[{"Id": "cf937b17d1ccee28858564a05ac79d429e1b3aaf53722e8a9c0136365b68df72","Created": "2024-10-10T05:38:25.649793517Z","Path": "/bin/bash","Args": ["-c","while true; do echo hello docker; sleep 1; done"],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 1998395,"ExitCode": 0,"Error": "","StartedAt": "2024-10-10T05:42:51.70213046Z","FinishedAt": "2024-10-10T05:42:51.593823572Z"},"Image": "sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9","ResolvConfPath": "/var/lib/docker/containers/cf937b17d1ccee28858564a05ac79d429e1b3aaf53722e8a9c0136365b68df72/resolv.conf","HostnamePath": "/var/lib/docker/containers/cf937b17d1ccee28858564a05ac79d429e1b3aaf53722e8a9c0136365b68df72/hostname","HostsPath": "/var/lib/docker/containers/cf937b17d1ccee28858564a05ac79d429e1b3aaf53722e8a9c0136365b68df72/hosts","LogPath": "/var/lib/docker/containers/cf937b17d1ccee28858564a05ac79d429e1b3aaf53722e8a9c0136365b68df72/cf937b17d1ccee28858564a05ac79d429e1b3aaf53722e8a9c0136365b68df72-json.log","Name": "/centos7","RestartCount": 0,"Driver": "overlay2","Platform": "linux","MountLabel": "","ProcessLabel": "","AppArmorProfile": "docker-default","ExecIDs": null,"HostConfig": {"Binds": ["/docker/centos7/opt:/opt"],"ContainerIDFile": "","LogConfig": {"Type": "json-file","Config": {}},"NetworkMode": "bridge","PortBindings": {},"RestartPolicy": {"Name": "no","MaximumRetryCount": 0},"AutoRemove": false,"VolumeDriver": "","VolumesFrom": null,"ConsoleSize": [58,213],"CapAdd": null,"CapDrop": null,"CgroupnsMode": "private","Dns": [],"DnsOptions": [],"DnsSearch": [],"ExtraHosts": null,"GroupAdd": null,"IpcMode": "private","Cgroup": "","Links": null,"OomScoreAdj": 0,"PidMode": "","Privileged": false,"PublishAllPorts": false,"ReadonlyRootfs": false,"SecurityOpt": null,"UTSMode": "","UsernsMode": "","ShmSize": 67108864,"Runtime": "runc","Isolation": "","CpuShares": 0,"Memory": 0,"NanoCpus": 0,"CgroupParent": "","BlkioWeight": 0,"BlkioWeightDevice": [],"BlkioDeviceReadBps": [],"BlkioDeviceWriteBps": [],"BlkioDeviceReadIOps": [],"BlkioDeviceWriteIOps": [],"CpuPeriod": 0,"CpuQuota": 0,"CpuRealtimePeriod": 0,"CpuRealtimeRuntime": 0,"CpusetCpus": "","CpusetMems": "","Devices": [],"DeviceCgroupRules": null,"DeviceRequests": null,"MemoryReservation": 0,"MemorySwap": 0,"MemorySwappiness": null,"OomKillDisable": null,"PidsLimit": null,"Ulimits": [],"CpuCount": 0,"CpuPercent": 0,"IOMaximumIOps": 0,"IOMaximumBandwidth": 0,"MaskedPaths": ["/proc/asound","/proc/acpi","/proc/kcore","/proc/keys","/proc/latency_stats","/proc/timer_list","/proc/timer_stats","/proc/sched_debug","/proc/scsi","/sys/firmware","/sys/devices/virtual/powercap"],"ReadonlyPaths": ["/proc/bus","/proc/fs","/proc/irq","/proc/sys","/proc/sysrq-trigger"]},"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/85e908740ba25dd112b8d9c9ab7928c8f18f6c28cdfcff779d8c104f246cc38a-init/diff:/var/lib/docker/overlay2/81fd88686851eb75f26f2f05319de87870cd9a1985fb41bafdd0f78d3c63dd4c/diff","MergedDir": "/var/lib/docker/overlay2/85e908740ba25dd112b8d9c9ab7928c8f18f6c28cdfcff779d8c104f246cc38a/merged","UpperDir": "/var/lib/docker/overlay2/85e908740ba25dd112b8d9c9ab7928c8f18f6c28cdfcff779d8c104f246cc38a/diff","WorkDir": "/var/lib/docker/overlay2/85e908740ba25dd112b8d9c9ab7928c8f18f6c28cdfcff779d8c104f246cc38a/work"},"Name": "overlay2"},"Mounts": [{"Type": "bind","Source": "/docker/centos7/opt","Destination": "/opt","Mode": "","RW": true,"Propagation": "rprivate"}],"Config": {"Hostname": "cf937b17d1cc","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["/bin/bash","-c","while true; do echo hello docker; sleep 1; done"],"Image": "centos:7.9.2009","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": {"org.label-schema.build-date": "20201113","org.label-schema.license": "GPLv2","org.label-schema.name": "CentOS Base Image","org.label-schema.schema-version": "1.0","org.label-schema.vendor": "CentOS","org.opencontainers.image.created": "2020-11-13 00:00:00+00:00","org.opencontainers.image.licenses": "GPL-2.0-only","org.opencontainers.image.title": "CentOS Base Image","org.opencontainers.image.vendor": "CentOS"}},"NetworkSettings": {"Bridge": "","SandboxID": "e20cd3c6fa174bf7ac6915b928e416559f78f024f45b018f24727168e8799b75","SandboxKey": "/var/run/docker/netns/e20cd3c6fa17","Ports": {},"HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "b9367bb1f2cd5698649bb338497bddc5f429270bdcd0d8ce2d05e3f46500772f","Gateway": "172.17.0.1","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"IPAddress": "172.17.0.4","IPPrefixLen": 16,"IPv6Gateway": "","MacAddress": "02:42:ac:11:00:04","Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"MacAddress": "02:42:ac:11:00:04","DriverOpts": null,"NetworkID": "6064601b3cc3be8ca73ed7244437498f11dcb08b50df5959b2f5f7df94d040de","EndpointID": "b9367bb1f2cd5698649bb338497bddc5f429270bdcd0d8ce2d05e3f46500772f","Gateway": "172.17.0.1","IPAddress": "172.17.0.4","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"DNSNames": null}}}}
]
crf@crf:~$
可以看到我们在运行容器时指定的命令:"Args": ["-c","while true; do echo hello docker; sleep 1; done"]
还可以看到挂载的数据卷目录 /docker/centos7/opt:
"Mounts": [{"Type": "bind","Source": "/docker/centos7/opt","Destination": "/opt","Mode": "","RW": true,"Propagation": "rprivate"}],
Docker 部署一个mysql服务
下载mysql镜像
docker pull mysql:5.7.41# 查看镜像
crf@crf:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat 1.0 ca546a17a28c 21 hours ago 470MB
mywebsocket 1.0 764b19b707a1 26 hours ago 131MB
tomcat 9.0 1b746e2e0bd8 40 hours ago 464MB
mysql 5.7 5107333e08a8 10 months ago 501MB
centos 7.9.2009 eeb6ee3f44bd 3 years ago 204MB
centos latest 5d0da3dc9764 3 years ago 231MB
mongo 4.1 d93e3cc722d8 5 years ago 360MB# 下载 mysql:5.7.41
crf@crf:~$ docker pull mysql:5.7.41
5.7.41: Pulling from library/mysql
e83e8f2e82cc: Pull complete
0f23deb01b84: Pull complete
f5bda3b184ea: Pull complete
ed17edbc6604: Pull complete
33a94a6acfa7: Pull complete
3686cf92b89d: Pull complete
f81535a6a8bf: Pull complete
4bffb03ea5e2: Pull complete
49348ef8dcaa: Pull complete
509d665d0cf5: Pull complete
adc919b937fd: Pull complete
Digest: sha256:bf18020f32cc5d8f5e2add516d52fbf3afc3de431457076340e938596c528171
Status: Downloaded newer image for mysql:5.7.41
docker.io/library/mysql:5.7.41
crf@crf:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat 1.0 ca546a17a28c 21 hours ago 470MB
mywebsocket 1.0 764b19b707a1 26 hours ago 131MB
tomcat 9.0 1b746e2e0bd8 40 hours ago 464MB
mysql 5.7 5107333e08a8 10 months ago 501MB
mysql 5.7.41 3f3447deacaa 18 months ago 455MB
centos 7.9.2009 eeb6ee3f44bd 3 years ago 204MB
centos latest 5d0da3dc9764 3 years ago 231MB
mongo 4.1 d93e3cc722d8 5 years ago 360MB
挂载
因为是存储型对象,需要持久化,所以进行一些数据卷挂载。
在宿主机创建目录
mkdir -p /docker/mysql/var/lib/mysql
运行容器
docker run -d -p 3306:3306 \
--priviledged=true \
-v /docker/mysql/var/lib/mysql:/var/lib/myql \
-e MYSQL_ROOT_PASSWORD=111111 \
--name mysql mysql:5.7.41# 解释说明:
# -p 3306:3306。 -p 宿主机ip:容器ip,端口映射
# --priviledged=true 服务容器root权限
# -v 宿主机目录:容器目录。 挂载数据卷
# -e 环境变量=value
# --name 容器名
Dockerfile自定义docker镜像
Dockerfile常见命令
Docker自定义文件默认名为 Dockerfile, 也可以使用 docker build -f 命令指定目标文件。
| 关键字(大写) | 描述 | 示例 |
|---|---|---|
| FROM | 一般是第一条指令。用于指定使用的基础镜像。 | FROM python:3.9 |
| MAINNTAINER | 指定镜像的维护者信息。 | MAINNTAINER zszs@qq.com |
| RUN | 镜像构建过程中需要执行的指令。比如在构建过程中需要安装net-tools包: | RUN apt-get install net-tools -y |
| WORKDIR | 指定镜像的工作目录,默认交互式进入容器时会进入到该命令指定的目录。 | WORKDIR /opt/ |
| COPY | 拷贝文件到镜像中。可以使用容器绝对路径,也可以使用相对于WORKDIR的相对路径 | CP /target/spring-demo.jar /opt/app.jar |
| ADD | 拷贝文件到镜像中。压缩文件则会自动解压。 | ADD proj.tar.gz /opt |
| VOLUME | 用于将镜像中的目录挂载出来。可以同时挂载多个目录。但是不像-v命令一样可以指定宿主机中的目录,在Dockfile中使用VOLUME命令,只能将镜像目录挂载出来,在启动容器时挂载到宿主机时默认是一个随机字符串的目录。 | VOLUME [“/data”, “/docker”] |
| EXPOSE | 暴露端口。这并不是真正暴露端口,只是一个提示作用。真正使用-p来暴露端口。 | EXPOSE 8080 |
| ENV | 定义构建过程中的环境变量。定义后,后面的命令可以使用过${变量名}来获取值 | ENV JAVA_HOME /opt/local/jdk1.8 |
| USER | 用于指定容器的用户。指定用户前最好创建用户。 | RUN useradd -ms /bin/bash test USER test |
| ARG | 用于定义构建参数变量。可以实现在执行docker build时动态向Dockfile文件传递变量。比如构建时使用-build-arg传入一个VERSION变量,默认值为latest。 | ARG VERSION=latest 实际构建时:docker build -build-arg VERSION=1.0 |
| CMD | 指定容器启动时默认执行的命令。**注意,镜像中若存在多个CMD命令,则只有最后一个CMD会执行。**另外,在运行容器时又指定了要执行的命令,则只会执行运行时的命令,也就是Dockerfile中的CMD会被替换掉。 | CMD [“cd”, “/opt”] CMD echo “hello word” docker run -it 镜像id /bin/bash ls(这里仅仅会执行ls命令) |
| ENTRYPOINT | 作用同CMD,也是在容器启动时执行的命令。只不过ENTRYPOINT的命令都会执行,且最后的命令会被追加执行。 | ENTRYPOINT cd /opt ENTRYPOINT ls docker run -it 镜像id /bin/bash -l(这里相当于最后执行了ls -l) |
Dockerfile实践
将当前的一个springboot项目构建为一个docker镜像。
FROM openjdk:8-jdk-alpine
WORKDIR /app
EXPOSE 8080
COPY springboot-websocket-0.0.1-SNAPSHOT.jar app.jar
CMD ["java", "-jar", "app.jar"]
解释:
# 基于 openjdk:8-jdk-alpine 的基础镜像
# 工作目录设置为 /app
# 提示暴露端口 8080
# 拷贝当前jar包到
# 运行容器时,执行jar,运行程序
构建使用Dockerfile镜像docker build
docker build -f Dockerfile -t websocket:1.0 .
发布镜像到镜像仓库docker login|tag|push
这里使用腾讯云的容器镜像服务。
# 登录
docker login ccr.ccs.tencentyun.com --username=你的用户名或者id# 打 tag
sudo docker tag websocket:1.0 ccr.ccs.tencentyun.com/组织名/websocket:1.0docker push ccr.ccs.tencentyun.com/组织名/websocket:1.0
docker-compose集群容器
企业开发中,可能多个服务,每个服务都是容器化,所以管理多个容器就比较重要了。可以使用docker-compose来管理一组容器。
下载安装docker-compose
docker-compose -version curl -L "https://github.com/docker/compose/release/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composesudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-composedocker-compose -version------------------------------------------------------------------------
# 或者 ubuntu中使用:
crf@crf:~$ sudo apt install docker-compose
# 查看版本
crf@crf:~$ docker-compose -version
docker-compose version 1.29.2, build unknown相关文章:
Docker极速入门一文通
文章目录 Docker极速入门一文通Docker命令搜索镜像docker search拉取镜像|下载镜像docker pull查看镜像docker images删除镜像docker rmi运行容器docker run查看容器 docker ps删除容器 docker rm后台启动容器 docker run -d进入容器 docker exec拷贝文件到容器 docker cp拷贝容…...
Unity网络开发基础 —— 实践小项目
概述 接Unity网络开发基础 导入基础知识中的代码 需求分析 手动写Handler类 手动书写消息池 using GamePlayer; using System; using System.Collections; using System.Collections.Generic; using UnityEngine;/// <summary> /// 消息池中 主要是用于 注册 ID和消息类…...
四、Spring Boot集成Spring Security之认证流程
Spring Boot集成Spring Security之认证流程 一、概要说明二、基于内存的用户名密码1、默认用户名密码2、自定义用户名密码3、为方便测试添加测试接口TestController 三、登录登出重要概念介绍四、登录业务逻辑1、登录业务相关过滤器2、访问业务请求处理流程①、访问业务请求地址…...
Chromium 中chrome.bookmarks扩展接口c++实现
一、扩展接口定义 chrome.bookmarks 使用 chrome.bookmarks API 创建、整理以及以其他方式操纵书签。另请参阅覆盖网页(可用于创建自定义“书签管理器”页面)。 更多参考chrome.bookmarks | API | Chrome for Developers (google.cn) 扩展可以请从…...
编程思想:编程范式:响应式编程
文章目录 概述实现的设计模式举例总结概述 响应 响应一般指对于事件的响应,事件包括数据变化或其他事件 响应流程包括事件的发生,事件的传递,和事件的最终处理 事件在起点处发生,开始传递过程 传递过程,包括对事件的一系列处理,如事件封装的数据的类型转化,数据集合…...
Leetcode 颜色分类
这个算法采用了荷兰国旗问题(Dutch National Flag Problem)的解法思想,用三个指针将数组中的元素分为三个区域,并且对这些区域进行动态调整,达到排序的目的。 算法思想: 三个指针: low 指针表示…...
ssh连接阿里云长连接
如何让ssh保持连接? 有时候用ssh连接阿里云莫名奇妙断开了。怎么样才能保持连接呢? 修改系统的链接参数: (1)修改/etc/ssh/sshd_config文件,找到 ClientAliveInterval 0和ClientAliveCountMax 3并将注释符号&#x…...
栈的C实现
栈的C实现 栈简介栈的C实现1.栈结构体2.初始化栈3.栈的基本操作 栈简介 栈(Stack)是一种后进先出的数据结构,类似于一个垂直的容器。 栈的特点是后进先出,即最后入栈的元素最先出栈。栈可以用来解决递归问题、实现函数调用、以及…...
【MySQL】入门篇—数据库基础:关系数据库概念
一、背景与重要性 在当今数字化时代,数据的管理和存储变得尤为重要。无论是企业的客户信息、产品数据,还是社交媒体上的用户互动,数据都是推动业务和决策的核心。 关系数据库管理系统(RDBMS)是一种广泛使用的数据管理…...
不到千元的自动猫砂盆是智商税吗?这四大选购技巧不看就亏大了
虽然现在的人都说,猫砂盆等上班一天回来再清理也没有任何关系,但实际上在这一天里,猫咪的粪便已经在猫砂盆里滋生了很多无法察觉的细菌,久而久之就会影响猫咪的健康,导致尿闭,放了一天的便便臭味也让人无法…...
【图论】(二)图论基础与路径问题
图论基础与路径问题 图的构造邻接矩阵邻接表 所有可达路径邻接矩阵存储邻接表存储 字符串接龙有向图的完全可达性 图的构造 这里仅对图论路径问题中图的构造做整理总结归纳,具体详细相关概念请参考代码随想录上的整理总结: 图论理论基础深度优先搜索理…...
Git常用命令(持续更新中)
mkdir one 在当前目录下创建一个名为one的文件夹 cd one 进入one 文件夹 git init 初始化git 仓库 touch README.md 创建一个后缀为.md的新文件README.md git add README.md 将README.md添加到git暂存区 git add * . * 将所有文件添加到暂存区 git add "E:/t…...
什么是PLM系统?PLM系统对制造业起到哪些作用?三品PLM系统对汽车制造业意义
在当今竞争激烈的制造业环境中,企业面临着来自市场、技术、客户需求等多方面的挑战。为了应对这些挑战,许多制造企业纷纷引入产品生命周期管理PLM系统,以实现更高效、更灵活的产品全生命周期管理。PLM系统以其独特的优势,在优化产…...
Pr 视频效果:元数据和时间码刻录
视频效果/视频/元数据和时间码刻录 Video/Metadata & Timecode Burn-in 元数据和时间码刻录 Metadata & Timecode Burn-in效果是一种在视频画面上叠加显示剪辑元数据或时间码的工具。它允许在导出视频时,将需用的元数据信息直接刻录在画面上,方便…...
前端MD5加密
1.导入包 npm install --save ts-md5 2.使用方式 import { Md5 } from ts-md5;//md5加密后的密码 const md5PwdMd5.hashStr("123456").toUpperCase(); 3. Vue解析token中携带的数据 3.1 安装插件 npm install jwt-decode --save 3.2 引入 import {jwtDecode} fro…...
仿IOS桌面悬浮球(支持拖拽、自动吸附、自动改变透明度与点击、兼容PC端与移动端)
使用 pointerdown/pointermove/pointerup 实现仿IOS桌面悬浮球效果,支持拖拽、指定拖拽选对容器,指定拖拽安全区、自动吸附、自动改变透明度与点击,兼容PC端与移动端。 效果展示 https://code.juejin.cn/pen/7423757568268304421 代码实现 …...
智谱开放平台API调用解析
一、什么是智谱AI 智谱AI成立于2019年,由清华大学计算机系知识工程实验室的技术成果转化而来,是一家致力于人工智能技术研发和应用的公司。智谱致力于打造新一代认知智能大模型,专注于做大模型的中国创新。 二、智谱开放平台API调用 官方文…...
Linux中定时删除10天前的日志文件
例如:删除/data/log/目录下所有10天前的.log文件 find /data/log/ -type f -name "*.log" -mtime 10 -exec rm -f {} \;只查看要删除的文件有哪些,不真正删除文件 logfiles$(find /data/log/ -type f -name "*.log" -mtime 10) ec…...
贝壳Android面试题及参考答案
详细说Final关键字 在编程语言中,final关键字具有重要的作用。以下为你详细介绍final关键字: 一、final关键字的主要作用 修饰变量 当final修饰基本数据类型变量时,该变量的值一旦被初始化就不能再被改变。例如:final int num = 10;num = 20; // 这会导致编译错误当final修…...
基于vue的酒店预订管理系统(源码+定制+开发)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
M9A智能助手:为《重返未来:1999》玩家解放时间的自动化解决方案
M9A智能助手:为《重返未来:1999》玩家解放时间的自动化解决方案 【免费下载链接】M9A 1999 小助手 项目地址: https://gitcode.com/gh_mirrors/m9/M9A 在当今快节奏的游戏环境中,玩家常常需要在重复性日常任务上投入大量时间ÿ…...
新手入门:跟快马学做项目,从零实现简易版z-library书库网站
作为一个刚入门编程的新手,最近想尝试做一个简单的在线书库网站。这个想法源于我经常使用的z-library,虽然它功能很强大,但作为学习项目,我决定先从最基础的功能开始模仿。下面记录下我的学习过程,希望能帮到同样想入门…...
从51单片机到STM32:我的裸机架构升级踩坑实录(附代码片段)
从51单片机到STM32:我的裸机架构升级踩坑实录 第一次用STM32F103替换掉手头的STC89C52时,我对着闪烁的LED灯陷入了沉思——这个32位的"怪兽"显然不应该继续沿用51那套超级循环的编程方式。三年前那个在延时函数里死等按键响应的菜鸟程序员&…...
FastAPI流式响应性能断崖式下跌?3个隐藏内存泄漏点,资深工程师连夜修复的5行关键代码
第一章:FastAPI 2.0 异步 AI 流式响应 面试题汇总FastAPI 2.0 原生强化了对异步流式响应(StreamingResponse)的支持,尤其在大语言模型(LLM)推理、实时 token 生成、语音转文字等 AI 场景中成为高频考点。面…...
AutoDock Vina特殊金属元素对接技术指南:从问题诊断到方案落地
AutoDock Vina特殊金属元素对接技术指南:从问题诊断到方案落地 【免费下载链接】AutoDock-Vina AutoDock Vina 项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina 问题溯源:金属元素对接的技术瓶颈 在分子对接实践中,科研人…...
Qwen3-0.6B-FP8快速上手:无需CUDA环境的CPU友好型大模型对话工具指南
Qwen3-0.6B-FP8快速上手:无需CUDA环境的CPU友好型大模型对话工具指南 想体验大模型对话,但被动辄几十GB的模型和昂贵的显卡劝退?今天给大家介绍一个“小钢炮”——Qwen3-0.6B-FP8对话工具。它只有6亿参数,经过FP8量化后体积小巧&…...
2026年小学英语学习小程序排行榜
对于小学生而言,英语学习早已打破“只背单词、只刷习题”的单一模式,听、说、读、写全方位同步训练,才是提升英语能力的关键。2026年,市面上涌现出多款优质小学英语学习小程序,覆盖单词记忆、听力训练、阅读提升、语法…...
C#频谱图振动传感器温度传感器数据采集绘制频谱图和时域图,并存储数据库存储时间200ms左右
C#频谱图振动传感器温度传感器数据采集绘制频谱图和时域图,并存储数据库存储时间200ms左右,可以进行历史频谱图和时域图回放,可以求的最大值并设置阈值报警可以导出报警最近在搞工业设备监控系统的时候,需要实时采集振动和温度数据…...
OpenClaw+GLM-4.7-Flash:个人博客内容自动生成与发布
OpenClawGLM-4.7-Flash:个人博客内容自动生成与发布 1. 为什么选择这个技术组合 去年夏天,我发现自己陷入了写作瓶颈——每周要产出3篇技术博客,但80%的时间都消耗在资料收集和格式调整上。直到发现OpenClawGLM-4.7-Flash这个组合ÿ…...
HBuilderX + 极光推送踩坑实录:免费版为啥息屏收不到通知?手把手教你配置与避坑
HBuilderX与极光推送免费版避坑指南:破解息屏通知失效难题 早上八点,你的咖啡还没喝完,测试组的消息就炸开了锅——"昨晚推送的版本在息屏状态下根本收不到通知!"作为使用HBuilderX开发跨平台应用的团队,这个…...
