Node.js服务管理工具PM2
PM2是一个Node.js服务管理工具,可以在服务崩溃时自动重启
中文文档:
https://pm2.fenxianglu.cn/docs/general/configuration-file/
PM2是一个Node.js服务管理工具,可以在服务崩溃时自动重启
中文文档:
https://pm2.fenxianglu.cn/docs/general/configuration-file/
1.在终端修改:
npm config get registry //查看当前源地址修改指令:
npm config set registry <要修改的原地址>如下:
npm config set registry https://registry.npm.taobao.org //换位淘宝
npm config set registry https://mirrors.huaweicloud.com/repository/npm //换位华为2.粗暴的方法,在源文件编辑【一般文件地址在电脑的用户下的叫.npmrc里面】
3.使用nrm管理registry地址npm install -g nrm //安装nrm
nrm ls //查看镜像列表
nrm use taobao//切换
在 Python 的项目中,如何管理所用的全部依赖库呢?最主流的做法是维护一份“requirements.txt”,记录下依赖库的名字及其版本号。
pip freeze > requirements.txt这种方法用起来方便,但有几点不足:
可用于项目依赖管理的工具有很多,本文主要围绕与 requirements.txt 文件相关的、比较相似却又各具特色的 4 个三方库,简要介绍它们的使用方法,罗列一些显著的功能点。至于哪个是最好的管理方案呢?卖个关子,请往下看……
pipreqs
这是个很受欢迎的用于管理项目中依赖库的工具,可以用“pip install pipreqs”命令来安装。它的主要特点有:
基本的命令选项如下:
Usage:
pipreqs [options] <path>
Options:
--use-local Use ONLY local package info instead of querying PyPI
--pypi-server <url> Use custom PyPi server
--proxy <url> Use Proxy, parameter will be passed to requests library. You can also just set the
environments parameter in your terminal:
$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="https://10.10.1.10:1080"
--debug Print debug information
--ignore <dirs>... Ignore extra directories
--encoding <charset> Use encoding parameter for file open
--savepath <file> Save the list of requirements in the given file
--print Output the list of requirements in the standard output
--force Overwrite existing requirements.txt
--diff <file> Compare modules in requirements.txt to project imports.
--clean <file> Clean up requirements.txt by removing modules that are not imported in project.其中需注意,很可能遇到编码错误:UnicodeDecodeError:'gbk'codec can't decode byte 0xae in。需要指定编码格式“--encoding=utf8”。
在已生成依赖文件“requirements.txt”的情况下,它可以强行覆盖、比对差异以及清除不再使用的依赖项。
pigar
pigar 同样可以根据项目路径来生成依赖文件,而且会列出依赖库在文件中哪些位置使用到了。这个功能充分利用了 requirements.txt 文件中的注释,可以提供很丰富的信息。
pigar 对于查询真实的导入源很有帮助,例如 bs4 模块来自 beautifulsoup4 库, MySQLdb 则来自于 MySQL_Python 库。可以通过“-s”参数,查找真实的依赖库。
$ pigar -s bs4 MySQLdb它使用解析 AST 的方式,而非正则表达式的方式,可以很方便地从 exec/eval 的参数、文档字符串的文档测试中提取出依赖库。
另外,它对于不同 Python 版本的差异可以很好地支持。例如, concurrent.futures 是 Python 3.2+ 的标准库,而在之前早期版本中,需要安装三方库 futures ,才能使用它。pigar 做到了有效地识别区分。(PS:pipreqs 也支持这个识别,详见这个合入:https://github.com/bndr/pipreqs/pull/80)
pip-tools
pip-tools 包含一组管理项目依赖的工具:pip-compile 与 pip-sync,可以使用命令“pip install pip-tools”统一安装。它最大的优势是可以精准地控制项目的依赖库。
两个工具的用途及关系图如下:
pip-compile 命令主要用于生成依赖文件和升级依赖库,另外它可以支持 pip 的“Hash-Checking Mode ”,并支持在一个依赖文件中嵌套其它的依赖文件(例如,在 requirements.in 文件内,可以用“-c requirements.txt”方式,引入一个依赖文件)。
它可以根据 setup.py 文件来生成 requirements.txt,假如一个 Flask 项目的 setup.py 文件中写了“install_requires=['Flask']”,那么可以用命令来生成它的所有依赖:
$ pip-compile
#
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile --output-file requirements.txt setup.py
#
click==6.7 # via flask
flask==0.12.2
itsdangerous==0.24 # via flask
jinja2==2.9.6 # via flask
markupsafe==1.0 # via jinja2
werkzeug==0.12.2 # via flask在不使用 setup.py 文件的情况下,可以创建“requirements.in”,在里面写入“Flask”,再执行“pip-compile requirements.in”,可以达到跟前面一样的效果。
pip-sync 命令可以根据 requirements.txt 文件,来对虚拟环境中进行安装、升级或卸载依赖库(注意:除了 setuptools、pip 和 pip-tools 之外)。这样可以有针对性且按需精简地管理虚拟环境中的依赖库。
另外,该命令可以将多个“*.txt”依赖文件归并成一个:
$ pip-sync dev-requirements.txt requirements.txtpipdeptree
它的主要用途是展示 Python 项目的依赖树,通过有层次的缩进格式,显示它们的依赖关系,不像前面那些工具只会生成扁平的并列关系。
除此之外,它还可以:
它也有缺点,比如无法穿透虚拟环境。如果要在虚拟环境中工作,必须在该虚拟环境中安装 pipdeptree。因为跨虚拟环境会出现重复或冲突等情况,因此需要限定虚拟环境。但是每个虚拟环境都安装一个 pipdeptree,还是挺让人难受的。
好啦,4 种库介绍完毕,它们的核心功能都是分析依赖库,生成 requirements.txt 文件,同时,它们又具有一些差异,补齐了传统的 pip 的某些不足。
本文不对它们作全面的测评,只是选取了一些主要特性进行介绍,好在它们安装方便(pip install xxx),使用也简单,感兴趣的同学不妨一试。
更多丰富的细节,请查阅官方文档:
https://github.com/bndr/pipreqs
https://github.com/damnever/pigar
https://github.com/jazzband/pip-tools
https://github.com/naiquevin/pipdeptree
CPU是一台电脑核心硬件,相当于人体的大脑,它决定了一台电脑的运算速度,CPU的性能好坏会直接影响电脑的速度快慢。无论是台式机还是笔记本,CPU型号后缀都有不同,那么CPU型号后缀带K、KF、F、KS、X、G、H、U、P的含义与区别是什么?下面装机之家晓龙来科普一下台式机和笔记本CPU型号后缀含义和区别。
CPU型号后缀含义
先来说说台式机CPU型号后缀的含义与区别。
F:intel CPU后缀,F代表无内置核显的CPU型号,举例型号:i5 13400F、i5 14400F;当然AMD CPU型号也有F后缀,也是代表无内置核显的CPU型号,举例型号:R5 7500F。
K:intel CPU后缀,K代表支持超频且内置核显的CPU型号,通常支持搭配Z系列主板,可以支持CPU超频。举例型号:i7-14700K、i5-14600K;
KF:intel CPU后缀,KF代表支持超频且无内置核显的CPU型号,搭配Z系列主板可支持CPU超频,举例型号:i7-14700KF、i5-14600KF。
KS:intel CPU后缀,一般是K的高频版,并且内置核显,例如i9-13900KS。i9-13900KS其实就是i9 13900K官方特挑CPU体质,出厂提高CPU频率成为一款单独的产品。
X/XE:intel CPU后缀,至尊旗舰级,举例型号:i9 10900X、i9-10980XE,十代CPU之后X/XE就终结了。
T:intel CPU后缀,属于低功耗版的CPU,相同型号下功耗更低,由于功耗的降低,性能也大大折扣,一般运用在一体机电脑上,为了降低发热量,举例型号:i5 13400T。
X:目前AMD常见的后缀,带X结尾的处理器是指支持XFR技术的处理器,XFR是一种超频技术,是在Boost加速频率的基础上允许再次超频运行的一种技术,这个技术能让频率随不同散热解决方案(风冷/水冷/液氮)而升降。
G:AMD CPU后缀,属于APU,G后缀的CPU通常内置性能较强的核心显卡,举例型号:R5 5600G、R7 5700G,这两个型号的CPU所内置的核显性能基本相当于GTX750Ti独显。
GE:AMD CPU后缀,一般属于低功耗带核显的CPU,例如R5 3400GE。
XT:AMD CPU后缀,相当于不带T的加强版,也可以说是特挑体质版,相同型号下XT比X性能略有提升,举例型号R9 3900XT、R7 3800XT、R5 3600XT;
X3D:配备3D V-Cache技术(3D垂直缓存)的CPU,X3D版本其实就是在原版的基础上扩展了三级缓存容量,是AMD专门为游戏玩家打造的一款CPU产品,侧重游戏性能,例如R7 7800X3D。
再来说说笔记本移动版CPU型号后缀的含义和区别。
H:标压CPU,性能强,通常出现在游戏本和设计师电脑中,举例型号:i5-13500HX 、i7-13700H;
U:低电压CPU,性能弱些但功耗低,通常出现在轻薄本中,举例型号:i5-1334U;
Y:超低电压CPU,性能很弱功耗非常低,通常出现在轻薄本中,举例型号:i3-10110Y,目前少见。
P:可以理解为H的降频版CPU,相比H型号在频率、三级缓存进行了缩水,“P”性能介于H和U之间,一般出现在有一定的性能且续航强的高性能轻薄笔记本中。
HK:一般使用在高端发烧级CPU上,标压可超频CPU,举例型号:i9-13900HK;
HX:一般使用在高端发烧级CPU上,至尊版CPU,可以理解是HK的特挑版,属于顶级CPU行列,性能强悍,主要在高端游戏本中使用。举例型号:i9-13900HX。
G:G1、G4以及G7等,G后面的数字表示核显性能强弱,数字越大代表核显性能越强,通常数字小于4的是集成的普通超高清(UHD)核显,大于等于4的是集成的高性能锐炬(Iris)核显。intel移动版CPU后缀,举例型号:i5-1155G7、i3-1115G4、i3-1005G1;
HS:相当于H功耗略低,通常出现在轻薄全能本,性能较强,举例型号:R7 5800HS、R5 5600HS;
HQ:标准电压,Q板载四核,早期的老后缀,举例型号:i7-7700HQ,现被淘汰;
MQ:标准电压,Q插拔四核,早期的老后缀,举例型号:i7-4810MQ,现被淘汰;
M:早期后缀M就是移动端CPU,只是为了与台式机区别开,举例型号:i7-2620M,现被淘汰。
当你的代码库较比大时,新建任务首次拉取代码时会非常慢,更有可能超时(默认拉取时间10分钟)而失败。
可以使用jenkins的GIT插件自带的高级选项
点开 Git - Repositories 的高级按钮

添加 Additional Behaviours 高级选项(git fetch 时会自动添加对应参数):
