韩国做hh网站/seo软件工具
你好你好!
以下内容仅为当前认识,可能有不足之处,欢迎讨论!
文章目录
- 文档内容
- docker相关术语
- docker常用命令
- 容器常用命令
- 根据dockerfile创建容器
- dokerfile文件内容
- docker问题:
- 可能的原因和解决方法
- 示例修改
- 修改后的Dockerfile示例:
- start.sh脚本示例:
- 可能的原因和解决方法
- 原因1:预安装的Python不存在
- 原因2:安装Python 3.7后不需要手动更新pip
- 修改后的Dockerfile示例
- ④默认启动为Ubuntu
- 在开始学习时自己的问题
- 相关资料
文档内容
分为docker是什么,docker有哪些常用命令,docker制作过程,docker制作过程中出现的问题。
资料路线推荐:①黑马程序员;②相关知乎介绍;③该文档。
①黑马程序员:大致看几节课,了解是什么东西。以及对应文字笔记。
②相关知乎介绍:别人的安装过程。参考1结合参考2,参考3选看。看几篇了解过程后再构建就行。
其他相关链接:
- 基于docker的深度学习-入门
- 基于docker的深度学习环境-Windows
- 从硬件到软件起步搭建深度学习环境-Docker+conda+pytorch+ssh+vscode
- 2023完整版-深度学习环境在docker上搭建
③该文档:调整合适的python版本,基础镜像版本,requirements文件中的pip包。
docker相关术语
docker这项技术,包括专业术语(目前我遇到的用到的)有:镜像,容器,SSH,ubuntu,cudatoolkit,/devel,
镜像可以看作类,容器看作实例 | 对象。这两个概念与python/java/c++中的类对象一致。
SSH—这个没理解,百度的话自己看吧……
Ubuntu系统——简单理解,运行起来快。
cudatoolkit——能够跑深度学习的环境。
devel——通过添加编译器工具链、调试工具、头文件和静态库来扩展运行时映像。
runtime——通过添加cuda工具包中的所有共享库扩展基本映像。
base——从cuda9.0开始,包含部署预构建cuda应用程序的最低限度。
docker的英文翻译为码头工人。我理解为一种技术。这个工人包括运行深度学习模型的所有技能(环境),所以,现在如果自己是女娲,自己要根据不同的深度学习环境来造出不同的"人"——docker镜像。
docker常用命令
-
查看镜像有多少
docker images
-
对镜像进行更名
docker tag 原镜像:原tag 目标仓库/目标镜像:目标-tag
-
通过dockerfile新建一个镜像:
dockerbuild -t 仓库名/镜像名:tag名
-
保存镜像:
docker save -o 保存文件名称.后缀(一般用tar) 仓库名/镜像名:tag
-
加载他人的镜像:
docker load -i 导入的文件
容器常用命令
根据已有镜像创建对应容器:docker run --it --gpus all --name 容器名 仓库名/镜像名:tag名
参数说明:
--it
,交互式地启动容器。
--gpus
,gpu数量为多少,我只用过all。
--name
,指定容器名称。
根据dockerfile创建容器
我的是Windows系统,安装了wsl虚拟子系统——Ubuntu18.04LTS。
使用设置默认命令后,在wsl中输出即可进入Ubuntu子系统。由于我之前就进入了mnt文件夹,所以直接显示如此。另外,mnt文件夹是Windows系统的文件目录,所以要创建docker镜像,直接进入dockerfile文件夹中即可。
注意,如果Windows系统可以在命令行中运行
nvidia-smi
,那子系统就不需要安装cudatoolkit,否则徒增空间。
dokerfile文件内容
内容包括cudatoolkit,Ubuntu系统,jupyter,ssh相关服务,requirements.txt包,senteval
from nvidia/cuda:11.0.3-cudnn8-devel-ubuntu18.04# 安装ssh相关组件RUN apt-get clean && apt-get update && \apt-get install -y openssh-client openssh-server && \ssh-keygen -A && \cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new && \echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new && \mv -f /etc/ssh/ssh_config.new /etc/ssh/ssh_config && \cat /etc/ssh/sshd_config | grep -v PermitRootLogin > /etc/ssh/sshd_config.new && \echo "PermitRootLogin yes" >> /etc/ssh/sshd_config.new && \mv -f /etc/ssh/sshd_config.new /etc/ssh/sshd_configCOPY start.sh /start.sh
RUN chmod +x /start.sh
CMD ["/start.sh"]# 升级apt-get
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils# 下载依赖并安装所有依赖
RUN apt-get install -y build-essential libncurses5-dev libgdbm-dev libnss3-dev \libssl-dev libreadline-dev libffi-dev zlib1g-dev libsqlite3-dev# 下载并安装Python3.7
WORKDIR /home/inspur/image_components/pythonRUN if [ -e /usr/bin/python ]; then rm /usr/bin/python; fi && \ln -s /usr/local/bin/python3.7 /usr/bin/pythonRUN apt-get update && \apt-get install -y wget build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev libffi-dev && \wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz && \tar -zxvf Python-3.7.12.tgz && \cd Python-3.7.12 && \./configure --enable-optimizations && \make -j $(nproc) && \make altinstall && \ln -sf /usr/local/bin/python3.7 /usr/bin/python && \/usr/local/bin/python3.7 -m pip install --upgrade pip# 将SentEval文件夹复制到镜像中
COPY SentEval /app/SentEval# 切换到SentEval目录并安装
WORKDIR /app/SentEval
RUN python setup.py install# 安装Jupyter
RUN pip install jupyterlab==3.2.5# 配置Jupyter
WORKDIR /home/inspur/image_components/jupyter_configure
RUN wget https://raw.githubusercontent.com/Winowang/jupyter_gpu/master/jupyter_notebook_config.py && \wget https://raw.githubusercontent.com/Winowang/jupyter_gpu/master/custom.js && \mkdir /etc/jupyter && \cp -rf /home/inspur/image_components/jupyter_configure/* /etc/jupyter# 设置工作目录
WORKDIR /app# 复制 requirements.txt 到容器内
COPY requirements.txt .# 安装 Python 包
RUN pip install --no-cache-dir -r requirements.txt# 可以在此执行更多的配置或安装步骤
解析下这个dockerfile做了什么。
第1行,需要看清楚自己的cuda&torch版本,这个GitHub较为详细。可以参考。找好后,在docker官网找到对应tag下载Ubuntu+cudatoolkit基础环境。
第3-17行,安装ssh及其服务。
第19-42行,就是下载安装python。
第45-50行,因为这个包没办法通过requirements.txt下载,只能离线下载,所以这是我额外的操作,如果没有这个要求可以忽略。
第53-61行,安装jupyter,看服务器环境,我的平台上没有,所以需要安装jupyter及其服务。
第65-71行,安装特定深度学习环境下的python包。也可以离线安装——把torch-wheel包放在dockerfile目录下,用离线安装命令就可以。
dockerfile编写好后,直接进入wls的Linux窗口,有个mnt的文件夹,是本地电脑的目录。就能够通过build命令本地文件安装镜像了。
执行docker build -t {images-name} . 就可以了,如下:
docker问题:
遇到问题:
①ssh配置问题
原来的dockerfile文件内容是:
# 安装ssh相关组件
RUN apt-clean && apt-get update && \apt-get install -y openssh-client openssh-server && \ssh-keygen -A && \cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new && \echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new && \mv -f /etc/ssh/ssh_config.new /etc/ssh/ssh_config && \cat /etc/ssh/sshd_config | grep -v PermitRootLogin > /etc/ssh/sshd_config.new && \echo "PermitRootLogin yes" >> /etc/ssh/sshd_config.new && \mv -f /etc/ssh/sshd_config.new /etc/ssh/sshd_config && \/usr/sbin/sshd
报错为:
dockerfile:4
--------------------3 | # 安装ssh相关组件4 | >>> RUN apt-get clean && apt-get update && \5 | >>> apt-get install -y openssh-client openssh-server && \6 | >>> ssh-keygen -A && \7 | >>> cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new && \8 | >>> echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new && \9 | >>> mv -f /etc/ssh/ssh_config.new /etc/ssh/ssh_config && \10 | >>> cat /etc/ssh/sshd_config | grep -v PermitRootLogin > /etc/ssh/sshd_config.new && \11 | >>> echo "PermitRootLogin yes" >> /etc/ssh/sshd_config.new && \12 | >>> mv -f /etc/ssh/sshd_config.new /etc/ssh/sshd_config && \13 | >>> /usr/sbin/sshd14 |
--------------------
ERROR: failed to solve:
process "/bin/sh -c apt-get clean && apt-get update && apt-get install -y openssh-client openssh-server && ssh-keygen -A && cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new && echo \" StrictHostKeyChecking no\" >> /etc/ssh/ssh_config.new && mv -f /etc/ssh/ssh_config.new /etc/ssh/ssh_config && cat /etc/ssh/sshd_config | grep -v PermitRootLogin > /etc/ssh/sshd_config.new && echo \"PermitRootLogin yes\" >> /etc/ssh/sshd_config.new && mv -f /etc/ssh/sshd_config.new /etc/ssh/sshd_config && /usr/sbin/sshd"
did not complete successfully: exit code: 255
这个问题我是真看不懂,所以直接问GPT了……给出的问题以及解决方法如下:
出现此错误表明在执行
RUN
指令时遇到了问题,导致整个命令未能成功完成。这个错误可能由多种原因引起,但考虑到错误消息中提及的内容,我们可以针对性地分析几个可能的原因和解决方法:可能的原因和解决方法
SSH服务不能在Docker构建过程中启动: 在Dockerfile的构建过程中直接启动
sshd
服务(使用/usr/sbin/sshd
命令)可能会失败,因为Docker构建过程不支持后台服务运行。构建过程主要用于设置环境和安装依赖,而不是运行服务。解决方法:不要在构建过程中启动
sshd
服务。相反,配置一个入口脚本,该脚本在容器启动时执行必要的初始化操作(如生成SSH密钥和启动sshd
服务)。然后,使用CMD
或ENTRYPOINT
指令在Dockerfile的末尾调用这个脚本。引用错误: 错误提示中显示的双引号被转义(
\"
),这可能是由于在Dockerfile或者某些编辑器中不正确地处理引号所导致的。解决方法:确保使用正确的引号,不需要在Dockerfile中额外转义双引号。
权限问题: 直接执行
/usr/sbin/sshd
可能由于权限不足而失败。解决方法:确保容器具有执行所需操作的权限。一种常见做法是使用
USER
指令切换到合适的用户,或者确保容器以足够权限运行相关命令。示例修改
为了解决这个问题,您可以将启动SSH服务的部分移除出构建过程,改为在容器启动时执行。以下是修改后的一部分Dockerfile示例和一个入口脚本示例:
修改后的Dockerfile示例:
DockerfileCopy code... RUN apt-get clean && apt-get update && \apt-get install -y openssh-client openssh-server && \ssh-keygen -A && \cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new && \echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new && \mv -f /etc/ssh/ssh_config.new /etc/ssh/ssh_config && \cat /etc/ssh/sshd_config | grep -v PermitRootLogin > /etc/ssh/sshd_config.new && \echo "PermitRootLogin yes" >> /etc/ssh/sshd_config.new && \mv -f /etc/ssh/sshd_config.new /etc/ssh/sshd_configCOPY start.sh /start.sh RUN chmod +x /start.sh CMD ["/start.sh"]
start.sh脚本示例:
bashCopy code#!/bin/bash# 启动SSH服务 /usr/sbin/sshd -D
确保
start.sh
脚本在Docker容器的文件系统中的适当位置,且具有执行权限(如示例中所示)。这样,当容器启动时,它将执行start.sh
脚本,该脚本负责启动SSH服务。通过这种方式,您可以避免在构建过程中直接启动服务的问题,同时确保容器启动后服务正常运行。
②python安装包问题
报错为:
1517.0 Looking in links: /tmp/tmpfu9f5ef7
1517.0 Processing /tmp/tmpfu9f5ef7/setuptools-47.1.0-py3-none-any.whl
1517.0 Processing /tmp/tmpfu9f5ef7/pip-20.1.1-py2.py3-none-any.whl
1517.1 Installing collected packages: setuptools, pip
1517.9 Successfully installed pip-20.1.1 setuptools-47.1.0
1517.9 rm: cannot remove '/usr/bin/python': No such file or directory
------
dockerfile:30
--------------------29 | WORKDIR /home/inspur/image_components/python30 | >>> RUN apt-get update && \31 | >>> apt-get install -y wget build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev libffi-dev && \32 | >>> wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz && \33 | >>> tar -zxvf Python-3.7.12.tgz && \34 | >>> cd Python-3.7.12 && \35 | >>> ./configure --enable-optimizations && \36 | >>> make -j $(nproc) && \37 | >>> make altinstall && \38 | >>> rm /usr/bin/python && \39 | >>> ln -s /usr/local/bin/python3.7 /usr/bin/python && \40 | >>> ln -s /usr/local/bin/pip3 /usr/bin/pip && \41 | >>> wget https://bootstrap.pypa.io/get-pip.py && \42 | >>> python3.7 get-pip.py43 |
--------------------
ERROR: failed to solve: process "/bin/sh -c apt-get update && apt-get install -y wget build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev libffi-dev && wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz && tar -zxvf Python-3.7.12.tgz && cd Python-3.7.12 && ./configure --enable-optimizations && make -j $(nproc) && make altinstall && rm /usr/bin/python && ln -s /usr/local/bin/python3.7 /usr/bin/python && ln -s /usr/local/bin/pip3 /usr/bin/pip && wget https://bootstrap.pypa.io/get-pip.py && python3.7 get-pip.py" did not complete successfully: exit code: 1
可以看到在第6行,显示没有该文件或文件夹,对应到dockerfile中为第38行rm /usr/bin/python
,询问GPT,给的原因分析为:
错误提示显示,在尝试删除
/usr/bin/python
时遇到问题,因为没有找到这个文件。这个问题发生在您尝试安装Python 3.7、移除现有的Python链接并创建新链接到安装的Python 3.7版本的过程中。这个错误可能意味着在尝试删除/usr/bin/python
之前,该文件并不存在。可能的原因和解决方法
原因1:预安装的Python不存在
在某些基于Ubuntu的镜像中,
/usr/bin/python
可能默认不存在,尤其是在一些更新的Ubuntu版本中(如18.04及以上),它们可能不包含Python 2,而是包含Python 3,且命名为python3
。解决方法:在尝试删除
/usr/bin/python
之前,先检查该文件是否存在。如果目的是确保python
命令指向Python 3.7,可以改用更安全的方法来创建链接,只在文件存在时才删除它。例如:DockerfileCopy codeRUN if [ -e /usr/bin/python ]; then rm /usr/bin/python; fi && \ln -s /usr/local/bin/python3.7 /usr/bin/python
或者,简化这个过程,直接创建一个新链接,如果旧的链接不存在,这个命令也不会出错:
DockerfileCopy code RUN ln -sf /usr/local/bin/python3.7 /usr/bin/python
原因2:安装Python 3.7后不需要手动更新pip
安装Python 3.7时使用
make altinstall
避免覆盖默认的python
命令,这是推荐的做法。但之后的步骤尝试手动更新pip可能是不必要的,因为altinstall
安装的Python版本已包含了pip(假设是较新的Python版本)。解决方法:可以省略手动安装pip的步骤,因为每个Python安装通常都会包含pip。如果确实需要更新pip,可以考虑使用Python自带的pip来更新:
DockerfileCopy code RUN /usr/local/bin/python3.7 -m pip install --upgrade pip
修改后的Dockerfile示例
结合以上建议,修改相关部分如下:
DockerfileCopy codeRUN apt-get update && \apt-get install -y wget build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev libffi-dev && \wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz && \tar -zxvf Python-3.7.12.tgz && \cd Python-3.7.12 && \./configure --enable-optimizations && \make -j $(nproc) && \make altinstall && \ln -sf /usr/local/bin/python3.7 /usr/bin/python && \/usr/local/bin/python3.7 -m pip install --upgrade pip
这样修改后,应该能够解决构建过程中遇到的错误,并确保Python 3.7成功安装且
python
命令链接到正确的Python版本。
可以看到,第9-10行替换为原来的38-41行。原先命令的意思是:
修改后命令的意思是:
③nvidia-smi
无法识别。导致torch无法使用。
启动命令不正确,需要加上--gpus all
的参数创建容器。启动容器后,就可以正常执行nvidia-smi
的命令,打开python后,torch.cuda.is_available()
的命令也能显示true。
④默认启动为Ubuntu
使用wsl -d Ubuntu
可以进入虚拟环境中。通过管理员权限在powershell中可以设置将wsl2的默认系统设置为Ubuntu:wslconfig /setdefault Ubuntu
。
在开始学习时自己的问题
Windows下的Ubuntu和docker是什么关系?因为在Ubuntu中没法使用docker命令。
😵问题:如何下载指定版本的包?下载指定版本的包下载错了怎么办?目录是哪里的目录?入口需要写什么?
可以通过深度学习环境先导出requirements.txt,再加入到dockerfile同一目录中,在dockerfile中pip安装。
😵如何下载指定的包?
①在创建镜像时,就声明需要下载哪些包及其对应版本。本文档中的dockefile就是该操作。
②在原有镜像基础上,生成容器后,在容器中下载包,下载完成后将其打包成新的镜像。需要额外操作。
😵下载指定版本的包错了怎么办?
用本地文件导入试试。以及pypi.org找到指定包。
😵目录是哪里的目录?
Ubuntu可以直接在mnt目录下进入本地目录。
😵入口需要写什么?
这个没找到……答案
相关资料
-
cudnn+torch对应版本
-
Ubuntu+cudatoolkit基础镜像
-
wsl镜像迁移
-
Ubuntu查看系统版本
-
查看Windows安装了哪些wsl子系统
-
将docker上传至hub
以上是我的学习笔记,希望对你有所帮助!
如有不当之处欢迎指出!谢谢!
相关文章:

dockerfile制作-pytoch+深度学习环境版
你好你好! 以下内容仅为当前认识,可能有不足之处,欢迎讨论! 文章目录 文档内容docker相关术语docker常用命令容器常用命令根据dockerfile创建容器dokerfile文件内容 docker问题:可能的原因和解决方法示例修改修改后的D…...

YOLOv8结合SCI低光照图像增强算法!让夜晚目标无处遁形!【含端到端推理脚本】
这里的"SCI"代表的并不是论文等级,而是论文采用的方法 — “自校准光照学习” ~ 左侧为SCI模型增强后图片的检测效果,右侧为原始v8n检测效果 这篇文章的主要内容是通过使用SCI模型和YOLOv8进行算法联调,最终实现了如上所示的效果:在增强图像可见度的同时,对图像…...

视频监控/云存储/AI智能分析平台EasyCVR集成时调用接口报跨域错误的原因
EasyCVR视频融合平台基于云边端架构,可支持海量视频汇聚管理,能提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、智能分析等视频服务。平台兼容性强,支持多协议、多类型设备接入,包括:国标G…...

VuePress基于 Vite 和 Vue 构建优秀框架
VitePress 是一个静态站点生成器 (SSG),专为构建快速、以内容为中心的站点而设计。简而言之,VitePress 获取用 Markdown 编写的内容,对其应用主题,并生成可以轻松部署到任何地方的静态 HTML 页面。 VitePress 附带一个用于技术文档…...

冒泡排序,选择排序,插入排序,希尔排序,基数排序,堆排序代码分析(归并排序和快速排序后续更新)
所有的算法都是这样,算法思想最重要,其次是实现过程,最后才是实现的代码 上战伐谋,我们只要明确了其算法思想和实现过程,所有算法都是纸老虎,所有算法题都是纸老虎 笔者才疏学浅,也算是刚刚接…...

从入门到精通:NTP卫星时钟服务器技术指南
从入门到精通:NTP卫星时钟服务器技术指南 从入门到精通:NTP卫星时钟服务器技术指南 一、 产品功能 卫星时钟服务器是一款采用GPS或北斗卫星提供高精度网络时间服务的产品。卫星天线安装简便(根据天线所放位置提示实时卫星颗数)&a…...

OpenResty基于来源IP和QPS来限流
Nginx 经典限流法 ngx_http_limit_req_module 和 ngx_http_limit_conn_module,可以在代理层面对服务进行限流和熔断。 http {# 请求限流定义1:# - $binary_remote_addr:限制对象(客户端)# - zone:定义限制(策略)名称# - 10m:用十…...

面对AI技术创业的挑战以及提供给潜在创业者的一些建议
面对AI创业的挑战 AI技术创业虽然机遇众多,但也面临不少挑战,理解这些挑战并寻找应对策略是创业成功的关键。 技术挑战 AI技术的快速发展意味着创业者需要持续学习和更新知识库,以保持技术竞争力。同时,AI项目往往需要处理大量数…...

`require`与`import`的区别
require与import的区别主要体现在以下几个方面: 1.加载时间不同。require是在运行时加载模块,这意味着模块的加载和执行可以在代码的任何地方进行,也可以在运行时根据条件动态地加载不同的模块;import是在编译时加载模块…...

中介者模式:优雅解耦的利器
在软件设计中,随着系统功能的不断扩展,对象之间的依赖关系往往会变得错综复杂,导致系统难以维护和扩展。为了降低对象之间的耦合度,提高系统的可维护性和可扩展性,设计模式应运而生。中介者模式(Mediator P…...

Ubuntu20.04安装MatlabR2018a
一、安装包 安装包下载链接 提取码:kve2 网上相关教程很多,此处仅作为安装软件记录,方便后续软件重装,大家按需取用。 二、安装 1. 相关文件一览 下载并解压文件后,如下图所示: 2. 挂载镜像并安装 2…...

基于SpringBoot的图书馆管理系统设计与实现
介绍 基于:java8 SpringBoot thymeleaf MySQL8.0.17 mybatis-plus maven Xadmin 实现图书馆管理系统 系统要实现如下的基本管理功能: (1)用户分为两类:管理员,一般用户。 (2)…...

网易云首页单页面html+css
网页设计与网站建设作业htmlcss 预览 源码查看https://hpc.baicaitang.cn/2083.html...

acwing算法提高之图论--最小生成树的典型应用
目录 1 介绍2 训练 1 介绍 本专题用来记录使用prim算法或kruskal算法求解的题目。 2 训练 题目1:1140最短网络 C代码如下, #include <iostream> #include <cstring>using namespace std;const int N 110, INF 0x3f3f3f3f; int g[N][N…...

springcloud基本使用二(远程调用)
创建两个springboot maven子项目 子项目名称分别为order-server和user-server 配置user-server子项目: 所需依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependenc…...

代码随想录刷题day42| 01背包理论基础分割等和子集
文章目录 day41学习内容一、 01背包之二维数组解法1.1、什么是01背包1.2、动态规划五部曲1.2.1、 确定dp数组(dp table)以及下标的含义1.2.2、确定递推公式1.2.3、 dp数组如何初始化1.2.4、确定遍历顺序1.2.5、计算并返回最终结果 二、 01背包之一维数组…...

Python文件操作命令
文件操作 我知道你最近很累,是那种看不见的、身体上和精神上的疲惫感,但是请你一定要坚持下去。就算无人问津也好,技不如人也好,千万别让烦躁和焦虑毁了你的热情和定力。别贪心,我们不可能什么都有,也别灰心…...

CSS面试题---基础
1、css选择器及优先级 选择器优先级:内联样式>id选择器>类选择器、属性选择器、伪类选择器>标签选择器、微元素选择器 注意: !important优先级最高; 如果优先级相同,则最后出现的样式生效; 继承得到的样式优先…...

OpenHarmony实战开发-分布式数据管理
介绍 本示例展示了在eTS中分布式数据管理的使用,包括KVManager对象实例的创建和KVStore数据流转的使用。 通过设备管理接口ohos.distributedDeviceManager ,实现设备之间的kvStore对象的数据传输交互,该对象拥有以下能力详见 ;1、注册和解…...

微服务(基础篇-007-RabbitMQ部署指南)
目录 05-RabbitMQ快速入门--介绍和安装_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p65&vd_source60a35a11f813c6dff0b76089e5e138cc 1.单机部署 1.1.下载镜像 1.2.安装MQ 2.集群部署 2.1.集群分类 2.2.设置网络 视频地址: 05-Rab…...

C语言一维数组及二维数组详解
引言: 小伙伴们,我发现我正文更新的有些慢,但相信我,每一篇文章真的都很用心在写的,哈哈,在本篇博客当中我们将详细讲解一下C语言中的数组知识,方便大家后续的使用,有不会的也可以当…...

11.图像边缘检测的原理与实现
数字图像处理(19): 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子) 数字图像处理(20): 边缘检测算子(Canny算子) 1.边缘检测介绍 1.1 边缘检测的基本原理 边缘是图像的基本特征,所谓的边缘就是指的图像的局部不连续性。灰度或者结构等信息的…...

RVM安装ruby笔记
环境 硬件:Macbook Pro 系统:macOS 14.1 安装公钥 通过gpg安装公钥失败,报错如下: 换了几个公钥地址(hkp://subkeys.pgp.net,hkp://keys.gnupg.net,hkp://pgp.mit.edu),…...

电力系统负荷预测方法
电力系统负荷是什么? 所谓的电力负荷预测是指以电力负荷变化以及外界因素变化为基础,以特定的数学方法或者建立数学模型的方式为手段,通过对电力负荷历史数据进行分析,对电力系统的需求做出估计以及研究相关因素对电力负荷的影响…...

electron打包桌面版.exe之vue项目踩坑(vue3+electron 解决打包后首页打开空白,打包后路由不跳转及请求不到后端数据等问题)
vue项目https://www.qingplus.cn/components-web/index打包桌面版问题集合 一、静态资源加载问题 npm run electron_dev桌面版运行后页面空白,内容未加载。 填坑: 打包配置要用相对路径 vite.config.ts文件中的base要改成./,之前加了项目…...

MySQL学习笔记(持续更行ing)
级别: 1. 了解,面试概率10% 2. 掌握,面试概率50% 3. 重点,面试概率80% 目录 1. 数据库**** 1.1. 概念**** 1.2. 分类**** 1.2.1. 关系型数据库**** 1.2.1.1. SQL**** 1.2.2. 安装**** 1.2.2.1. Navicat**** 1.2.3. 非…...

服务器配置Huggingface并git clone模型和文件
服务器配置Huggingface并git clone模型和文件 参考:https://huggingface.co/welcome 1 注册hugging face 官网注册,并获取token【https://huggingface.co/settings/tokens】,用于登录 2 安装 2.1 安装lfs https://stackoverflow.com/qu…...

Rust 开发的高性能 HTTP 请求工具
一、简述 在现在的软件开发领域,HTTP请求的快速验证变得越来越重要。特别是对于后端开发人员和测试工程师来说,能够快速创建、执行并验证HTTP请求对于提升开发效率至关重要。近期有一个名为Hurl的开源项目,它被设计来高效执行HTTP请求&#…...

Android Studio 通过 WIFI 调试手机 app
操作流程 首先第一步,PC 和手机都需要连在同一个局域网 WIFI。 第二步,手机 USB 连上 PC,确保能查看到通过 USB 连上的设备: >>adb devices List of devices attached CSXasjdhwjqwjhqdh device (最好只看到一个连上的设置…...

RabbitMQ高级笔记
视频链接:【黑马程序员RabbitMQ入门到实战教程】 文章目录 1.发送者的可靠性1.1.生产者重试机制1.2.生产者确认机制1.3.实现生产者确认1.3.1.开启生产者确认1.3.2.定义ReturnCallback1.3.3.定义ConfirmCallback 2.MQ的可靠性2.1.数据持久化2.1.1.交换机持久化2.1.2.…...