Python虚拟环境(pipenv、venv、conda一网打尽)[通俗易懂]
一、什么是虚拟环境
1. 什么是Python环境
要搞清楚什么是虚拟环境,首先要清楚Python的环境指的是什么。当我们在执行python test.py时,思考如下问题:
- python哪里来?这个主要归功于配置的系统环境变量
PATH
,当我们在命令行中运行程序时,系统会根据PATH
配置的路径列表依次查寻是否有可执行文件python(在windows中,省略了后缀.exe
),当查寻到该文件时,执行该文件; 如果在所有路径列表中都查找不到,就会报报错:'python' 不是内部或外部命令,也不是可运行的程序或批处理文件。
- test.py代码中import的模块在哪里找?import的模块包含两类,一类称为标准库,随着python的安装而安装;另一类称为第三方库,使用
pip
工具或者自己手动安装的包。模块的搜索路径可通过sys.path
查看,主要由可执行文件python所在的位置所决定。
Python环境主要包括以下内容:
- 解释器
python.exe
- Lib目录
- 标准库
- site-pakages目录,默认安装第三方库所在的目录
- Scripts目录,包含一些执行文件
- 包安装管理工具pip.exe
- 打包工具pyinstaller.exe(需要自己安装)
- …
- 其他
- 主要包括python解释器运行时需要的相关依赖文件,文档说明等
Python环境主要由运行python解释器的位置所决定
2. 什么是虚拟环境
理解了什么是python环境,思考下为什么有虚拟环境的说法。思考以下问题:
- 有两个项目A和B,如果A和B都要用到某一模块,但版本不相同怎么办?
- 在使用pip安装包时,会发现在安装的时候会安装其它的依赖包,但当我们用pip移除一个包时,却只移除了指定的包
为了解决上面的问题,python使用了虚拟环境这个概念,你可以认为是python环境的多个副本,只是在不同的副本中安装了不同的包。既然叫虚拟环境,总得有点不一样:虚拟环境中一般不包含标准库;不包含python解释器运行时所需的依赖文件;可执行文件全部放于Scripts目录等。
3. 常用工具
知道了什么是虚拟环境,就应该清楚如何去管理虚拟环境,这就离不开虚拟环境管理工具,下面列出了一些常用的工具,并在稍后的内容中对部分工具的使用作简单的介绍。
-
Virtualenv
virtualenv 是非常流行的 python 虚拟环境配置工具。它不仅同时支持 python2 和 python3,而且可以为每个虚拟环境指定 python 解释器,并选择不继承基础版本的包。 -
venv
考虑到虚拟环境的重要性,Python 从3.3 版本开始,自带了一个虚拟环境模块 venv,关于该模块的详细介绍,可参考 PEP-405 。它的很多操作都和 virtualenv 类似。如果你使用的是python3.3之前版本或者是python2,则不能使用该功能,依赖需要利用virtualenv进行虚拟环境管理。 -
pipenv
pipenv 是Kenneth Reitz(requests的作者)大神的作品。它结合了 Pipfile,pip,和virtualenv,能够有效管理Python多个环境,各种包。并且windows视为一等公民。-
Pipfile是社区拟定的依赖管理文件,用于替代过于简陋的 requirements.txt 文件。Pipfile 文件是 TOML 格式而不是 requirements.txt 这样的纯文本。
-
virtualenv能够很好的完成虚拟环境的搭建和python版本的管理,但是跨平台的使用不太一致,且有时候处理包之间的依赖总存在问题
-
pip能够很好的完成包的管理,但是仍然推荐pipenv,相当于virtualenv和pip的合体,且更加强大。
-
-
conda
支持Python、R、Java、JavaScript、C等多种开发语言的包、依赖和环境管理工具,能运行在Windows、MacOS、Linux多个平台,可以在本地轻松创建、保存、切换环境。当安装anaconda时,会自动安装conda工具。 -
Python Launcher for Windows
Python 从3.3版本开始,在 Windows 系统中自带了一个py.exe
启动工具。如果你是使用 Python.org 官网下载的安装包安装的 Python 3.3(或更新版本)环境,那么可以直接在命令提示符中使用这个工具(在windows中,py.exe
会安装在C:\Windows
目录)。
py 可以打开默认的 python 提示符;py -2.7
和py -3
打开对应的 Python 版本,py -0
将列出系统中安装了哪些版本的python
二、pipenv
pipenv创建虚拟环境后,会在工程目录生成如下两个文件:
- Pipfile:用于保存项目的python版本、依赖包等相关信息。该文件可以单独移放到其他项目内,用于项目虚拟环境的建立和依赖包的安装
- Pipfile.lock:用于对Pipfile的锁定
1. 安装pipenv
pip install pipenv -i https://pypi.tuna.tsinghua.edu.cn/simple
-i选项指定库的安装源,安装源要满足PEP 503的描述,国内常用的源:
- 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
- 中国科学技术大学 : https://pypi.mirrors.ustc.edu.cn/simple
- 豆瓣:http://pypi.douban.com/simple/
- 阿里:https://mirrors.aliyun.com/pypi/simple/
2. 命令概览
学习使用工具/命令的万能大法 – 查看帮助信息。
pipenv -h
Usage: pipenv [OPTIONS] COMMAND [ARGS]...Options:--where Output project home information.--venv Output virtualenv information.--py Output Python interpreter information.--envs Output Environment Variable options.--rm Remove the virtualenv.--bare Minimal output.--man Display manpage.--support Output diagnostic information for use inGitHub issues.--site-packages / --no-site-packagesEnable site-packages for the virtualenv.[env var: PIPENV_SITE_PACKAGES]--python TEXT Specify which version of Python virtualenvshould use.--three / --two Use Python 3/2 when creating virtualenv.--clear Clears caches (pipenv, pip). [env var:PIPENV_CLEAR]-v, --verbose Verbose mode.--pypi-mirror TEXT Specify a PyPI mirror.--version Show the version and exit.-h, --help Show this message and exit.Usage Examples:Create a new project using Python 3.7, specifically:$ pipenv --python 3.7Remove project virtualenv (inferred from current directory):$ pipenv --rmInstall all dependencies for a project (including dev):$ pipenv install --devCreate a lockfile containing pre-releases:$ pipenv lock --preShow a graph of your installed dependencies:$ pipenv graphCheck your installed dependencies for security vulnerabilities:$ pipenv checkInstall a local setup.py into your virtual environment/Pipfile:$ pipenv install -e .Use a lower-level pip command:$ pipenv run pip freezeCommands:check Checks for PyUp Safety security vulnerabilities and against PEP508 markers provided in Pipfile.clean Uninstalls all packages not specified in Pipfile.lock.graph Displays currently-installed dependency graph information.install Installs provided packages and adds them to Pipfile, or (if nopackages are given), installs all packages from Pipfile.lock Generates Pipfile.lock.open View a given module in your editor.run Spawns a command installed into the virtualenv.scripts Lists scripts in current environment config.shell Spawns a shell within the virtualenv.sync Installs all packages specified in Pipfile.lock.uninstall Uninstalls a provided package and removes it from Pipfile.update Runs lock, then sync.
3. pipenv基本使用
1)创建虚拟环境
创建工程目录,并进入工程目录
mkdir test
cd test
创建虚拟环境
pipenv install `--python 3.8`
如果在该工程不录中没有Pipfile文件,则会自动创建Pipfile和Pipfile.lock两个文件;如果该工程目录中有Pipfile,将安装Pipfile列出的相应依赖包,安装完成后生成Pipfile.lock
可以使用如下参数来定义环境:
- –python 3.8 将指定该虚拟环境的python使用3.8的最新版本,有以下两种情况
- 如果系统已经安装了python3.8,则使用系统已经安装的python3.8版本
- 如果系统中没有python3.8版本
- 如果已经安装pyenv或者asdf,会提示是否需要使用pyenv或者asdf安装对应版本的python
- 如果没有安装pyenv和asdf,则创建环境失败
- 此外,–python后面跟的参数可以不是版本号,而是安装的python解释器的路径
--three
/--two
使用 Python 3或者2创建虚拟环境
--pypi-mirror
指定安装源--site-packages
/--no-site-packages
是否使用python基础环境中的site-packages路径
查看虚拟环境相关信息
#查看工程根目录信息pipenv --where #查看当前虚拟环境的信息pipenv --venv#查看python解释器的信息pipenv --py #查看环境变量选项pipenv --envs
观察虚拟环境目录的文件
pyvenv.cfg
home = d:\programdata\anaconda3 implementation = CPython version_info = 3.8.5.final.0 virtualenv = 20.10.0 include-system-site-packages = false base-prefix = d:\programdata\anaconda3 base-exec-prefix = d:\programdata\anaconda3 base-executable = d:\programdata\anaconda3\python.exe prompt = (test)
这是虚拟环境的配置文件,包含了python环境的相关信息。
.project
E:\Projects\test
指定了该虚拟环境对应的工程目录
2)激活虚拟环境
pipenv shell
注意:
在激活虚拟环境时,如果在windows上使用powershell,可能在命令行的前面不能显示虚拟环境的名称,比如显示如下信息,但不影响正常使用
进入工程目录后,如果直接使用上面的命令激活虚拟环境,而不是使用pipenv install 创建虚拟环境,这时pipenv会自动创建相应的虚拟环境。
3)虚拟环境包的管理
包的安装
pipenv install -h
Usage: pipenv install [OPTIONS] [PACKAGES]...Installs provided packages and adds them to Pipfile, or (if no packages aregiven), installs all packages from Pipfile.Options:--system System pip management. [env var:PIPENV_SYSTEM]-c, --code TEXT Install packages automatically discoveredfrom import statements.--deploy Abort if the Pipfile.lock is out-of-date, orPython version is wrong.--site-packages / --no-site-packagesEnable site-packages for the virtualenv.[env var: PIPENV_SITE_PACKAGES]--skip-lock Skip locking mechanisms and use the Pipfileinstead during operation. [env var:PIPENV_SKIP_LOCK]-e, --editable TEXT An editable Python package URL or path,often to a VCS repository.--ignore-pipfile Ignore Pipfile when installing, using thePipfile.lock. [env var:PIPENV_IGNORE_PIPFILE]--selective-upgrade Update specified packages.-r, --requirements TEXT Import a requirements.txt file.--extra-index-url TEXT URLs to the extra PyPI compatible indexes toquery for package look-ups.-i, --index TEXT Target PyPI-compatible package index url.--sequential Install dependencies one-at-a-time, insteadof concurrently. [env var:PIPENV_SEQUENTIAL]-d, --dev Install both develop and default packages[env var: PIPENV_DEV]--keep-outdated Keep out-dated dependencies from beingupdated in Pipfile.lock. [env var:PIPENV_KEEP_OUTDATED]--pre Allow pre-releases.--python TEXT Specify which version of Python virtualenvshould use.--three / --two Use Python 3/2 when creating virtualenv.--clear Clears caches (pipenv, pip). [env var:PIPENV_CLEAR]-v, --verbose Verbose mode.--pypi-mirror TEXT Specify a PyPI mirror.-h, --help Show this message and exit.
常用参数示例:
#使用清华源安装numpy包
pipenv install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple#如果有requirements.txt文件,可以使用下面命令安装requirements.txt列出的包
pipenv install -r path/to/requirements.txt#安装指定版本的numpy
pipenv install numpy~=1.22.3 #等价于 numpy==1.22.3
#注意,包的版本号可以使用~=、==、>=、 <=、 >、 <、 != 等方式来限制
#在pipenv中,提倡使用 ~= 标识符而不是 == 标识符,因为后者会阻止 pipenv 更新包
思考:在虚拟环境中,使用pip和pipenv都可以安装包,区别在哪里?
使用pipenv安装的包会将相关信息写入Pipfile和Pipfile.lock,而使用pip安装包后,只在虚拟环境的site-packages目录安装了相应包,而不会将信息写入Pipfile和Pipfile.lock
查看虚拟环境中安装的包信息
pipenv graph
包的删除
pipenv uninstall numpy
注意,如果没有激活虚拟环境,即没有运行pipenv shell,若想使用pip list查看虚拟环境中所安装的包时,可以使用pipenv run pip list
4)退出虚拟环境
exit
5)删除虚拟环境
pipenv --rm
当退出虚拟环境,删除虚拟环境后,对应的虚拟环境目录会删除掉,但工程目录下的Pipfile.lock和Pipfile两个文件依然存在。
6)其他
如果已经删除了虚拟环境,可以使用pipenv --python 3.8 install
重新创建虚拟环境以完成下面的示例。
需要共享项目环境时,共享Pipfile文件即可
想要在虚拟环境中执行脚本,比如执行main.py文件,可以使用命令pipenv run python main.py
可以在Pipfile文件中自定义命令,比如在Pipfile末尾添加如下内容,则添加了两个自定义命令print
和list
,分别打印Hello World!
和列出虚拟环境中所装的包:
[scripts]
print = "python -c \"print('Hello World!')\""
list = "pip list"
则可以使用如下方式运行代码
其他
pipenv lock #生成Pipfile.lock.
pipenv sync #安装Pipfile.lock文件中指定的所有包
pipenv update #等价于先lock, 后 sync.
4. 虚拟环境的本质
虚拟环境的本质就是修改了sys.path的值,下面分别查看在虚拟环境和不在虚拟环境中的sys.path值
在主要的区别在于第三方包的路径时,一个用的是虚拟环境的site-packages,而另一个是使用的python环境中的site-packages。
三、venv
Python 从3.3 版本开始,自带了一个虚拟环境模块 venv
,关于该模块的详细介绍,可参考PEP-405
和。
1. 命令概览
查看venv帮助信息:
python -m venv -h
usage: v
env [-h] [--system-site-packages] [--symlinks | --copies] [--clear] [--upgrade] [--without-pip] [--prompt PROMPT] ENV_DIR [ENV_DIR ...]Creates virtual Python environments in one or more target directories.positional arguments:ENV_DIR A directory to create the environment in.optional arguments:-h, --help show this help message and exit--system-site-packagesGive the virtual environment access to the system site-packages dir.--symlinks Try to use symlinks rather than copies, when symlinks are not the default for the platform.--copies Try to use copies rather than symlinks, even when symlinks are the default for the platform.--clear Delete the contents of the environment directory if it already exists, before environment creation.--upgrade Upgrade the environment directory to use this version of Python, assuming Python has been upgraded in-place.--without-pip Skips installing or upgrading pip in the virtual environment (pip is bootstrapped by default)--prompt PROMPT Provides an alternative prompt prefix for this environment.Once an environment has been created, you may wish to activate it, e.g. by sourcing an activate script in its bin directory.
2. 创建虚拟环境
python -m venv venv_demo
这里使用得最多的两个选项为:
--system-site-packages
:是否包含Python系统的site-packages,添加这个选项后,会在sys.path
的末尾添加上系统的site-packages相关目录。不添加这个选项时,将不会包含系统的site-packages*--without-pip
:虚拟环境中是否包含pip.exe
3. 虚拟环境的激活
在虚拟环境的Scripts目录中有两个脚本文本activate.bat
和deactivate.bat
,分别用于激活虚拟环境和退出虚拟环境。
注意:
-
在pipenv创建的虚拟环境中同样有这两个脚本文件
-
activate文件有多个版本,当在windows系统时,如果用CMD时,使用activate.bat;如果用PowerShell时使用activate.psl
当我们激活虚拟环境后,系统的PATH路径的最前面添加了虚拟环境的Scripts目录,该目录下包含了pip.exe和python.exe。可以得到如下结论: -
如果不激活虚拟环境,直接运行虚拟环境的Scripts目录下的python.exe,则此时的交互环境也将是在此虚拟环境下
-
如果不激活虚拟环境,直接运行虚拟环境的Scripts目录下的pip.exe进行包的安装,则安装的包同样安装在虚拟环境中
注意,这里使用的PowerShell,所以查看path环境变量时使用的$env:path,如果是CMD,查看环境变量可以使用echo %PATH%
4. 虚拟环境包的管理
使用pip工具进行虚拟环境中包的管理,有两种方式
- 第一种方式,使用虚拟环境中的activate激活虚拟环境
- 第二种方式,不激活虚拟环境,但是运行的Pip指定为虚拟环境中Scripts目录下的pip.exe
pip命令的基本使用将在文末介绍。
四、conda
conda支持Python、R、Java、JavaScript、C等多种开发语言的包、依赖和环境管理工具,能运行在Windows、MacOS、Linux多个平台,可以在本地轻松创建、保存、切换环境。当安装anaconda时,会自动安装conda工具。
conda与pipenv,venv等虚拟环境管理工具的最大的不同在于:conda虚拟环境是独立于操作系统解释器环境的,即无论操作系统解释器什么版本(哪怕2.7),我也可以指定虚拟环境python版本为3.6,而venv是依赖主环境的。
1. 创建虚拟环境
conda create --name py3.6 python=3.6
创建好虚拟环境后,你会发现虚拟环境py3.6的内容与一个实体python环境是一样的。所以,conda的环境管理更像是实体环境的一个拷贝,而不像是一个虚拟环境
2. 环境的激活和退出
conda activate py3.6
conda deactivate
3. 包的管理
#安装numpy模块
conda install numpy#查看已安装的模块
conda list#搜索模块信息
conda search numpy#删除模块
conda remove numpy#更新模块
conda update numpy#更新全部模块:
conda update --all#更新conda
conda update conda#更新python
conda update python
使用conda安装包往往很慢,需要设置conda的国内源,具体做法如下:
生成.condarc配置文件
conda config --set show_channel_urls yes
修改.condarc
channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/simpleitk - defaults show_channel_urls: true ssl_verify: true
也可以使用如下命令添加源
conda config --add channels ‘https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/’
查看设置的源
conda --show channels
也可以使用conda info查看基本信息
4. 环境的删除
conda remove --name py3.6 --all
5. 查看所有环境
conda env list
ps1:pip基本使用
查看帮助:
pip -h
Usage:pip <command> [options]Commands:install Install packages.download Download packages.uninstall Uninstall packages.freeze Output installed packages in requirements format.list List installed packages.show Show information about installed packages.check Verify installed packages have compatible dependencies.config Manage local and global configuration.search Search PyPI for packages.cache Inspect and manage pip's wheel cache.wheel Build wheels from your requirements.hash Compute hashes of package archives.completion A helper command used for command completion.debug Show information useful for debugging.help Show help for commands.General Options:-h, --help Show help.--isolated Run pip in an isolated mode, ignoring environment variables and user configuration.-v, --verbose Give more output. Option is additive, and can be used up to 3 times.-V, --version Show version and exit.-q, --quiet Give less output. Option is additive, and can be used up to 3 times (corresponding toWARNING, ERROR, and CRITICAL logging levels).--log <path> Path to a verbose appending log.--no-input Disable prompting for input.--proxy <proxy> Specify a proxy in the form [user:passwd@]proxy.server:port.--retries <retries> Maximum number of retries each connection should attempt (default 5 times).--timeout <sec> Set the socket timeout (default 15 seconds).--exists-action <action> Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup,(a)bort.--trusted-host <hostname> Mark this host or host:port pair as trusted, even though it does not have valid or anyHTTPS.--cert <path> Path to alternate CA bundle.--client-cert <path> Path to SSL client certificate, a single file containing the private key and thecertificate in PEM format.--cache-dir <dir> Store the cache data in <dir>.--no-cache-dir Disable the cache.--disable-pip-version-checkDon't periodically check PyPI to determine whether a new version of pip is available fordownload. Implied with --no-index.--no-color Suppress colored output--no-python-version-warningSilence deprecation warnings for upcoming unsupported Pythons.--use-feature <feature> Enable new functionality, that may be backward incompatible.--use-deprecated <feature> Enable deprecated functionality, that will be removed in the future.
1. 安装
1)安装requirements.txt文件列出的包
pip install -r requriements.txt
2)安装指定包
pip install numpy
3)安装whl文件
pip install wheel
pip install xxxx.whl
常用参数主要包括:
-i <url> 或者 --index-url <url>:指定安装源,通常设为国内源会更快
2. 更新
pip install --upgrade 包名称
如果要指定升级到某个版本,可以使用pip install --upgrade 包名称==版本号
注意:不要使用pip install --upgrade pip更新pip自身,否则会在更新pip的时候删除掉pip,然后出现No module named ‘pip’的情况 ,可运行如下命令安装pip:
python -m ensurepip
如果要更新pip自身,可以使用如下命令:
python -m pip install --upgrade pip
3. 删除
删除指定的包
pip uninstall 包名
删除requriements.txt文件中列出的包
pip uninstall -r requriements.txt
4. 查看
列出安装的所有包:
pip list
查看某一个包的具体信息
pip show 包名
5. 导出安装包列表
pip freeze > requirements.txt
导出pip所在环境中所安装的所有包,将其输出到requirements.txt文件中
ps2:如何在pycharm使用虚拟环境
在创建pycharm工程时,记得指定python解释器为虚拟环境中Scripts目录下的python.exe即可
转载:https://javaforall.cn/175522.html原文链接:https://javaforall.cn
相关文章:
Python虚拟环境(pipenv、venv、conda一网打尽)[通俗易懂]
一、什么是虚拟环境 1. 什么是Python环境 要搞清楚什么是虚拟环境,首先要清楚Python的环境指的是什么。当我们在执行python test.py时,思考如下问题: python哪里来?这个主要归功于配置的系统环境变量PATH,当我们在命…...
Android Kotlin实战之高阶使用泛型扩展协程懒加载详解
前言: 通过前面几篇文章,我们已基本掌握kotlin的基本写法与使用,但是在开发过程中,以及一些开源的API还是会出现大家模式的高阶玩法以及问题,如何避免,接下来讲解针对原来的文章进行一些扩展,解…...
数字映射:数字孪生技术的应用场景及作用
对于许多行业来说,数字孪生技术是未来。数字孪生定义数字孪生不仅仅是某物的副本或克隆,它是对象或系统的动态实时表示。数字孪生是一种虚拟模型,旨在准确反映物理对象。是物理对象、流程、服务或环境的数字表示,其行为和外观与现…...
配置二层远程端口镜像案例
实验拓扑: 实验需求: 如图1所示,某公司行政部通过SwitchA与外部Internet通信,监控设备Server通过SwitchB与SwitchA相连。 现在希望Server能够远程对行政部访问Internet的流量进行监控。 操作步骤: 配置观察端口 # 在…...
Linux-0.11 kernel目录fork.c详解
Linux-0.11 kernel目录fork.c详解 fork.c中主要实现内核对于创建新的进程的行为。其中copy_process是其最核心的函数。 copy_process int copy_process(int nr,long ebp,long edi,long esi,long gs,long none,long ebx,long ecx,long edx,long fs,long es,long ds,long eip,…...
如何或者无插件Web页面监控播放软件LiveNVR的固定视频流地址,实现大屏上墙、播放、视频分析等目的
1、LiveNVR介绍 LiveNVR的安防监控的视频直播,可以按标准的Onvif/RTSP协议接入监控设备,也可以通过海康、大华、天地伟业等厂家私有SDK接入监控,实现web页面的播放和录像回放。 可以分发HTTP-FLV、WS-FLV、WebRTC、RTMP、HLS(M3U8)、RTSP等多…...
postman断言脚本(2)
https://learning.postman.com/docs/writing-scripts/script-references/test-examples/#parsing-response-body-data状态码pm.test("Status code is 200",function(){pm.response.to.have.status(200);});pm.test("Status code is 200",()>{pm.expect(…...
js中?.、??的具体用法
1、?. (可选链运算符) 在javascript中如果一个值为null、undefined,直接访问下面的属性, 会报 Uncaught TypeError: Cannot read properties of undefined 异常错误。 而在真实的项目中是会出现这种情况,有这个值就…...
刷题笔记1 | 704. 二分查找,27. 移除元素
704. 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 …...
柔性电路板的优点、分类和发展方向
柔性电路板是pcb电路板的一种,又称为软板、柔性印刷电路板,主要是由柔性基材制作而成的一种具有高可靠性、高可挠性的印刷电路板,具有厚度薄、可弯曲、配线密度高、重量轻、灵活度高等特点,主要用在手机、电脑、数码相机、家用电器…...
OpenCV入门(二)快速学会OpenCV1图像基本操作
OpenCV入门(一)快速学会OpenCV1图像基本操作 不讲大道理,直接上干货。操作起来。 众所周知,OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大。今天就从读取图片,显示图片,输出图片信息和简单的…...
Redis源码---有序集合为何能同时支持点查询和范围查询
目录 前言 Sorted Set 基本结构 跳表的设计与实现 跳表数据结构 跳表结点查询 跳表结点层数设置 哈希表和跳表的组合使用 前言 有序集合(Sorted Set)是 Redis 中一种重要的数据类型,它本身是集合类型,同时也可以支持集合中…...
从计费出账加速的设计谈周期性业务的优化思考
1号恐惧症 你有没有这样的做IT的朋友?年纪轻轻,就头发花白或者秃顶,然后每个月周期性的精神不振,一到月底,就有明显的焦虑。如果有,他可能就是运营商行业做计费运营的,请对他好点,特…...
垃圾回收的概念与算法(第四章)
《实战Java虚拟机:JVM故障诊断与性能优化 (第2版)》 第4章 垃圾回收的概念与算法 目标: 了解什么是垃圾回收学习几种常用的垃圾回收算法掌握可触及性的概念理解 Stop-The-World(STW) 4.1. 认识垃圾回收 - 内存管理清洁工 垃圾…...
让您的客户了解您的制造过程“VR云看厂实时数字化展示”
一、工厂云考察,成为市场热点虚拟现实(VR)全景技术问世已久,但由于应用范围较为狭窄,一直未得到广泛应用。国外客户无法亲自到访,从而导致考察难、产品取样难等问题,特别是对于大型制造企业来说…...
CV——day80 读论文:DLT-Net:可行驶区域、车道线和交通对象的联合检测
DLT-Net:可行驶区域、车道线和交通对象的联合检测I. INTRODUCTIONII. ANALYSIS OF PERCEPTIONIV. DLT-NETA. EncoderB. Decoder1) Drivable Area Branch(可行驶区域分支)2) Context Tensor(上下文张量)3) Lane Line Branch(车道线分支)4) Traffic Object Branch(目标检测对象分…...
工具篇4.5数据可视化工具大全
1.1 Flourish 数据可视化不仅是一项技术,也是一门艺术。当然,数据可视化的工具也非常多,仅 Python 就有 matplotlib、plotly、seaborn、bokeh 等多种可视化库,我们可以根据自己的需要进行选择。但不是所有的人都擅长写代码完成数…...
京东前端二面常考手写面试题(必备)
实现发布-订阅模式 class EventCenter{// 1. 定义事件容器,用来装事件数组let handlers {}// 2. 添加事件方法,参数:事件名 事件方法addEventListener(type, handler) {// 创建新数组容器if (!this.handlers[type]) {this.handlers[type] …...
如何用AST还原某音的JSVMP
1. 什么是JSVMP vmp简单来说就是将一些高级语言的代码通过自己实现的编译器进行编译得到字节码,这样就可以更有效的保护原有代码,而jsvmp自然就是对JS代码的编译保护,具体的可以看看H5应用加固防破解-JS虚拟机保护方案。 如何区分是不是jsv…...
【蓝桥杯试题】 递归实现指数型枚举例题
💃🏼 本人简介:男 👶🏼 年龄:18 🤞 作者:那就叫我亮亮叭 📕 专栏:蓝桥杯试题 文章目录1. 题目描述2. 思路解释2.1 时间复杂度2.2 递归3. 代码展示最后&#x…...
【用Group整理目录结构 Objective-C语言】
一、接下来,我们看另外一个知识点,怎么用Group把这一堆乱七八糟的文件给它整理一下,也算是封装一下吧, 1.这一堆杂乱无章的文件: 那么,哪些类是属于模型呢,哪些类是属于视图呢,哪些类是属于控制器呢, 我们接下来通过Group的方式,来给它们分一下类, 这样看起来就好…...
JavaScript高级程序设计读书分享之8章——8.1理解对象
JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 创建自定义对象的通常方式是创建 Object 的一个新实例,然后再给它添加属性和方法。 let person new Object() person.name Tom person.age 18 person.sayName function(){//示 this.name…...
代码随想录算法训练营第四十天 | 343. 整数拆分,96.不同的二叉搜索树
一、参考资料整数拆分https://programmercarl.com/0343.%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.html 视频讲解:https://www.bilibili.com/video/BV1Mg411q7YJ不同的二叉搜索树https://programmercarl.com/0096.%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90…...
数据结构与算法系列之顺序表的实现
这里写目录标题顺序表的优缺点:注意事项test.c(动态顺序表)SeqList.hSeqList.c各接口函数功能详解void SLInit(SL* ps);//定义void SLDestory(SL* ps);void SLPrint(SL* ps);void SLPushBack(SL* ps ,SLDataType * x );void SLPopBack(SL* ps…...
基于Linux_ARM板的驱动烧写及连接、挂载详细过程(附带驱动程序)
文章目录前言一、搭建nfs服务二、ARM板的硬件连接三、putty连接四、挂载共享文件夹五、烧写驱动程序六、驱动程序示例前言 本文操作环境:Ubuntu14.04、GEC6818 这里为似懂非懂的朋友简单叙述该文章的具体操作由来,我们的主要目的是将写好的驱动程序烧进…...
python-爬虫-字体加密
直接点 某8网 https://*****.b*b.h*****y*8*.com/ 具体网址格式就是这样的但是为了安全起见,我就这样打码了. 抛出问题 我们看到这个号码是在页面上正常显示的 F12 又是这样就比较麻烦,不能直接获取.用requests库也是获取不到正常想要的 源码的,因为字体加密了. 查看页面源代码…...
计算机组成原理4小时速成5:输入输出系统,io设备与cpu的链接方式,控制方式,io设备,io接口,并行串行总线
计算机组成原理4小时速成5:输入输出系统,io设备与cpu的链接方式,控制方式,io设备,io接口,并行串行总线 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,…...
安全狗受聘成为福州网信办网络安全技术支撑单位
近日,福州市委网信办召开了2022年度网络安全技术支撑单位总结表彰大会。 作为国内云原生安全领导厂商,安全狗也出席了此次活动。 据悉,会议主要对2022年度优秀支撑单位进行表彰,并为2023年度支撑单位举行授牌仪式。 本次遴选工…...
RV1126 在Ubuntu18.04开发环境搭建
1:安装软件终端下输入安装命名:sudo apt install openssh-serversudo apt install android-tools-adbsudo apt install vim net-tools gitsudo apt install cmakesudo apt install treesudo apt install minicomsudo apt install gawksudo apt install bisonsudo ap…...
如何在 C++ 中调用 python 解析器来执行 python 代码(一)?
实现 Python UDF 中的一步就是学习如何在 C 语言中调用 python 解析器。本文根据 Python 官方文档做了一次实验,记录如下: 1. 安装依赖包 $sudo yum install python3-devel.x86_642. 使用 python-config 来生成编译选项 $python3.6-config --cflags -…...
简单免费自建网站/百度快照投诉
系统版本centos7.2_x641.安装ntp时间服务程序yum -y install ntp2.配置ntp服务vi /etc/ntp.conf设置时间源,这里可以使用centos提供的默认时间源,其他都为默认server 0.centos.pool.ntp.org iburstserver 1.centos.pool.ntp.org iburstserver 2.centos.p…...
东营有网站/企业宣传推广方案
...
政府网站建设与管理/深圳谷歌网络推广公司
刚好像学习下数据结构,所以就找了些资料写了个简单单链表,有错误的地方还望大神指正。 链表是物理上存储不连续的数据结构,通过链表节点关联下一个链表节点,它与数组不同,数组存储在物理上是连续的。 链表节点包含&…...
wordpress搜索小工具/lol今日赛事直播
需求:点击某个标签,紧随其后的ul列表展开或者关闭并有transition效果。 难点:ul 里面的 li 数量未知,ul 高度不定,需要获取 li 数量乘以 li 高度然后计算出 ul 高度。 直接上代码: // 属性型指令࿰…...
怎样做网站手机和电脑通用/广州百度搜索排名优化
星期日星期一星期二星期三星期四星期五星期六 所花时间 (包括上课) 8:00~9:50 9:30~10:30代码量(行) 206(不包括复制例子)博客量(篇) 1…...
百度右侧相关网站/全球最牛的搜索引擎
2019独角兽企业重金招聘Python工程师标准>>> 一、jQuery fadeIn() 用于淡入已隐藏的元素。 <!DOCTYPE html> <html> <head> <script src"/jquery/jquery-1.11.1.min.js"></script> <script> $(document).ready(func…...