// ==UserScript==
// @name ipfs link redirctor
// @namespace http://tampermonkey.net/
// @version 0.2
// @description Replaces ipfs links with user configured host
// @author TheDailySpank
// @match *://*/ipfs/*
// @match *://*/ipns/*
// @match *://*/*
// @grant none
// @run-at document-end
// ==/UserScript==
(function() {
'use strict';
var ipfsHost = "http://127.0.0.1:8080" // default settings if running ipfs daemon on local machine
// ipfs.io gateway
// var ipfsHost = "https://ipfs.io"
// Cloudflare gateway
// var ipfsHost = "https://cloudflare-ipfs.com"
var anchors = document.querySelectorAll('a');
for (var i = 0; i < anchors.length; i++) {
var regex = /.*(\/ipfs\/Qm\w.*)/g;
anchors[i].href = anchors[i].href.replace(regex, ipfsHost + '$1');
}
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; i++) {
var regex = /.*(\/ipfs\/Qm\w.*)/g;
imgs[i].src = imgs[i].src.replace(regex, ipfsHost + '$1');
}
})();// ==UserScript==
// @name New script kkgithub.com
// @namespace Violentmonkey Scripts
// @match https://raw.kkgithub.com/TheDailySpank/ipfs-redirector/master/ipfs-redirector.js*
// @grant none
// @version 1.0
// @author -
// @description 2024/6/7 13:07:26
// ==/UserScript==
标签: 软件
-
【油猴脚本】将网页中的IPFS链接自动转到本地的IPFS节点,以便加速加载
-
使用 pm2 管理 Node.js 进程并配置定时重启
pm2 是一个强大的 Node.js 进程管理器,可以帮助你轻松管理 Node.js 应用,包括启动、停止、重启、监控等。下面介绍如何使用 pm2 管理 Node.js 进程并配置定时重启:
1. 安装 pm2
npm install -g pm2
2. 启动 Node.js 应用
使用
pm2 start
命令启动你的 Node.js 应用,例如:pm2 start app.js
3. 配置定时重启
使用
pm2 restart
命令配置定时重启,例如:pm2 restart app.js --cron "*/30 * * * *"
解释:
pm2 restart app.js
:重启名为app.js
的进程。--cron "*/30 * * * *"
:使用 cron 表达式配置重启时间。
cron 表达式:
*/30
:每 30 分钟执行一次。*
:表示所有时间单位都匹配。
4. 查看 pm2 进程状态
使用
pm2 list
命令查看所有 pm2 管理的进程状态。5. 停止 pm2 进程
使用
pm2 stop
命令停止 pm2 管理的进程,例如:pm2 stop app.js
6. 删除 pm2 进程
使用
pm2 delete
命令删除 pm2 管理的进程,例如:pm2 delete app.js
7. 其他 pm2 命令
pm2 提供了丰富的命令来管理 Node.js 进程,例如:
pm2 logs
: 查看进程日志。pm2 monit
: 监控进程状态。pm2 reload
: 重新加载进程配置。pm2 restart
: 重启进程。pm2 stop
: 停止进程。pm2 delete
: 删除进程。
注意:
- 定时重启可能会导致应用短暂中断服务,请根据实际情况选择合适的重启时间。
- 使用
pm2 ecosystem.config.js
文件可以更方便地管理多个进程和配置。
示例:
// ecosystem.config.js module.exports = { apps: [ { name: 'my-app', script: 'app.js', watch: ['src'], env: { NODE_ENV: 'development' }, env_production: { NODE_ENV: 'production' }, restart_delay: 1000, cron_restart: '*/30 * * * *' } ] };
使用
pm2 start ecosystem.config.js
命令启动应用,并根据配置进行定时重启。
-
配置 crontab 定时重启 Node.js 进程
您可以使用以下方法配置 crontab 定时重启 Node.js 进程:
1. 编写重启脚本
首先,您需要编写一个脚本,用于重启 Node.js 进程。以下是一个示例脚本:
#!/bin/bash # 进程名称 PROCESS_NAME="your_process_name" # 查找进程并重启 for i in $(seq 1 10); do PID=$(pgrep -f "$PROCESS_NAME$i") if [ $? -eq 0 ]; then echo "Restarting process $PROCESS_NAME$i with PID $PID..." kill -9 $PID # 重新启动进程 # 使用您实际的启动命令替换以下命令 nohup node your_app.js $i & echo "Process $PROCESS_NAME$i restarted." else echo "Process $PROCESS_NAME$i not found." fi sleep 1800 # 等待 30 分钟 done
解释:
#!/bin/bash
: 指定脚本解释器为 bash。PROCESS_NAME
: 替换为您的 Node.js 进程名称。pgrep -f "$PROCESS_NAME$i"
: 查找名为PROCESS_NAME$i
的进程,并获取其 PID。kill -9 $PID
: 强制杀死进程。nohup node your_app.js $i &
: 重新启动 Node.js 进程,使用您的实际启动命令替换node your_app.js $i
。sleep 1800
: 等待 30 分钟,然后重启下一个进程。
2. 配置 crontab
将脚本保存为
restart_process.sh
并赋予执行权限:chmod +x restart_process.sh
然后使用
crontab -e
命令编辑 crontab 文件,添加以下内容:0,30 * * * * /path/to/restart_process.sh
解释:
0,30 * * * *
: 表示每小时的 0 分和 30 分执行一次。/path/to/restart_process.sh
: 替换为restart_process.sh
脚本的路径。
3. 测试
保存 crontab 文件并测试脚本是否正常工作。您可以使用
crontab -l
命令查看 crontab 文件内容,并使用tail -f /var/log/cron
命令查看 cron 日志。注意:
- 确保
restart_process.sh
脚本中的启动命令正确,并根据您的实际情况进行修改。 - 您可以根据需要调整脚本中的
sleep
时间,以控制重启间隔。 - 为了确保重启进程的正常运行,建议您在脚本中添加日志记录功能,方便排查问题。
希望以上信息对您有所帮助。
-
【ffmpeg】libfdk_aac 优化编译参数支持 AVX512
为了让 ffmpeg 编译时支持 AVX512 并优化 libfdk_aac 的性能,你需要修改编译配置参数。以下步骤将指导你完成操作:
1. 确认你的 CPU 支持 AVX512
首先,你需要确认你的 CPU 是否支持 AVX512 指令集。可以使用以下命令检查:
grep -q avx512 /proc/cpuinfo && echo "AVX512 supported" || echo "AVX512 not supported"
如果输出 “AVX512 supported”,则你的 CPU 支持 AVX512。
2. 修改 ffmpeg 编译配置
在编译 ffmpeg 时,需要添加以下参数:
./configure --enable-libfdk-aac --enable-neon --enable-avx2 --enable-avx512 --enable-runtime-cpudetect
--enable-libfdk-aac
: 启用 libfdk_aac 库。--enable-neon
: 启用 ARM NEON 指令集 (可选,如果你的 CPU 支持)。--enable-avx2
: 启用 AVX2 指令集。--enable-avx512
: 启用 AVX512 指令集。--enable-runtime-cpudetect
: 启用运行时 CPU 检测,允许 ffmpeg 在运行时选择最佳指令集。
3. 编译 ffmpeg
完成配置后,使用以下命令编译 ffmpeg:
make -j$(nproc)
4. 测试
编译完成后,你可以使用以下命令测试 ffmpeg 是否支持 AVX512:
ffmpeg -version | grep avx512
如果输出包含 “avx512″,则表示 ffmpeg 已经成功支持 AVX512 指令集。
注意:
- 启用 AVX512 指令集可能会导致某些旧硬件出现兼容性问题。
- 编译 ffmpeg 需要一定的系统资源,建议使用较快的 CPU 和充足的内存。
其他优化参数:
除了上述参数,你还可以尝试以下其他参数进一步优化 ffmpeg 的性能:
--enable-libx264
: 启用 x264 编解码器。--enable-libx265
: 启用 x265 编解码器。--enable-libvpx
: 启用 libvpx 编解码器。--enable-libopenh264
: 启用 OpenH264 编解码器。
总结:
通过修改编译配置参数,你可以让 ffmpeg 支持 AVX512 指令集,并优化 libfdk_aac 的性能。在编译时,请根据你的 CPU 和系统资源选择合适的参数。
-
如何增强互联网的记忆力?
IPFS(InterPlanetary File System)是一个点对点的媒体传输协议,旨在建立一个持久的、分布式的文件系统。它通过内容寻址的方式来定位和获取文件,使得文件在网络中具有高可用性的特性[2]。而dreamlink.cloud是一个基于IPFS的静态网站,提供了一系列在去中心化P2P网络上运行的工具[1]。
以下是对IPFS和dreamlink.cloud的介绍:
IPFS的特点:
- 去中心化:IPFS没有特权节点,所有节点都是平等的,任何用户都可以存储和分享文件内容[2]。
- 内容寻址:IPFS使用内容的哈希值作为文件的唯一标识,通过请求哈希值来获取文件内容,而不是通过地址寻址[2]。
- 高可用性:IPFS中的文件可以被存储在成千上万的节点中,即使某个节点宕机或下线,其他节点仍然可以获取到文件内容[2]。
- 安全性:IPFS使用哈希值来校验文件内容的完整性,如果文件在传输过程中被篡改,哈希值将与请求的哈希值不一致,从而保证了数据的安全性[2]。
dreamlink.cloud的特点:
- 无需安装IPFS节点:dreamlink.cloud提供了一个在Web浏览器中运行的IPFS节点,用户无需自行安装节点即可使用IPFS功能[1]。
- 无限制的文件分享:用户可以上传文件和文件夹,没有账户、大小或带宽限制,实现自己的文件提供者角色[1]。
- 分布式搜索:通过ipfs-search.com进行文件和文件夹的搜索[1]。
- 文本粘贴板:用户可以创建和分享任何文本格式的内容[1]。
- 加密P2P聊天室:用户可以创建加密的P2P聊天室,与信任的人进行自由通信[1]。
IPFS和dreamlink.cloud的优势:
- 高可用性和抗审查:IPFS的去中心化特性使得文件具有高可用性和抗审查的能力,而dreamlink.cloud作为基于IPFS的静态网站,进一步增强了这些特性[2]。
- 无需中心化服务器:与传统的互联网不同,IPFS和dreamlink.cloud不依赖于中心化的服务器托管商,任何人都可以注册一个节点,成为一个高效的文件提供者[2]。
IPFS是一个点对点的媒体传输协议,通过内容寻址的方式实现高可用性的分布式文件系统。而dreamlink.cloud则是一个基于IPFS的静态网站,提供了无需安装IPFS节点的文件分享、搜索、文本粘贴板和加密P2P聊天室等功能。
Learn more:
-
深入理解 PHP-FPM:全面指南
引言
PHP 作为 Web 开发中最流行的服务端脚本语言,在网站和 Web 应用日益复杂和需求量不断增长的今天,开发者们一直在寻求优化 PHP 性能和效率的方法。PHP-FPM (FastCGI 进程管理器) 作为一种高效的 PHP FastCGI 实现方案应运而生。本文将深入探讨 PHP-FPM 的世界,了解其功能、优势以及如何显著提升基于 PHP 应用的性能。
1. 什么是 PHP-FPM?
PHP-FPM 是一种替代性的 PHP FastCGI 实现,旨在克服传统 PHP-CGI (通用网关接口) 的局限性。它作为进程管理器,独立于 Web 服务器管理 PHP 进程并处理 PHP 请求。通过这种方式,它可以高效地并发处理多个 PHP 请求,从而显著减少延迟并提高整体性能。
2. PHP-FPM 的优势
2.1 提升性能
PHP-FPM 的主要目标是提高基于 PHP 应用的性能。通过维护独立的 PHP 工作进程,它可以更高效地处理大量并发请求。这种方法显著减少了响应时间,使 Web 应用更加灵敏,提升用户体验。
2.2 资源效率
PHP-FPM 可以更有效地管理资源。由于它作为进程管理器运行,因此可以根据服务器资源和传入请求负载控制活动 PHP 进程的数量。这可以防止资源浪费并优化服务器性能,从而使用更少的资源服务更多用户。
2.3 稳定性和隔离性
PHP-FPM 为运行 PHP 应用提供了一个稳定、安全的环境。如果一个 PHP 进程遇到错误或变得无响应,它不会影响其他活动进程。这种隔离性确保了单个请求的隔离,不会影响整体系统稳定性。
2.4 可定制的池配置
开发者可以微调 PHP-FPM 的池配置,以满足其应用的特定需求。配置参数包括子进程数量、每个子进程可以处理的最大请求数以及其他设置,可以根据不同的场景进行调整,以获得最佳性能。
3. PHP-FPM 工作原理
PHP-FPM 与 Web 服务器(例如 Nginx 或 Apache)协同工作。当收到 PHP 请求时,Web 服务器将其转发给 PHP-FPM 进程管理器,然后 PHP-FPM 通过子进程池处理该请求。这些子进程是 PHP 的独立实例,每个实例都能够独立处理单个请求。
4. 配置 PHP-FPM
配置 PHP-FPM 会显著影响 Web 应用的性能。根据服务器硬件和预期流量优化设置至关重要。常见的配置参数包括:
4.1. pm_max_children
此设置确定允许同时运行的最大子进程数。设置适当的值可确保有效利用资源,而不会导致内存问题。
4.2. pm_max_requests
pm_max_requests 参数控制每个子进程在回收之前可以处理的请求数。定期回收进程有助于缓解长时间运行的 PHP 应用中的内存泄漏。
4.3. pm_process_idle_timeout
此设置指定子进程在终止之前可以保持空闲状态的时间。当资源未积极服务请求时,它有助于释放资源。
5. PHP-FPM 与虚拟主机
在单个服务器上托管多个网站或 Web 应用时,虚拟主机是一种常见做法。PHP-FPM 在虚拟主机环境中起着至关重要的作用,因为它允许不同的网站运行独立的 PHP-FPM 池,确保站点之间的隔离和安全性。
6. 结论
毫无疑问,PHP-FPM 是基于 PHP 的 Web 开发领域的游戏规则改变者。它能够高效地管理 PHP 进程,加上其资源优化、稳定性和定制选项,使其成为希望提高 Web 应用性能的开发人员的首选。通过选择 PHP-FPM,开发人员可以为用户提供更快、响应更迅速的 Web 体验。
常见问题解答 (FAQ)
1. PHP-FPM 是否兼容 Nginx 和 Apache Web 服务器?
是的,PHP-FPM 兼容 Nginx 和 Apache Web 服务器。它可以与这些服务器无缝集成,以提高 PHP 的性能。
2. PHP-FPM 是否适用于 PHP 7 以外的 PHP 版本?
是的,PHP-FPM 兼容 PHP 5.3 及更高版本。但是,建议使用最新的稳定 PHP 8版本以获得更好的性能和安全性。
3. PHP-FPM 是否可以在共享主机环境中使用?
是的,PHP-FPM 可以在共享主机环境中使用,在共享主机环境中,多个用户共享相同的服务器资源。它可以改进资源管理并提高 PHP 应用的整体性能。
4. PHP-FPM 和 PHP-CGI 之间的主要区别是什么?
主要区别在于它们处理 PHP 请求的方式。PHP-FPM 作为进程管理器运行,而 PHP-CGI 独立执行每个 PHP 请求。PHP-FPM 中的这种进程管理方法提供了更好的性能和资源利用率。
5. 如何检查我的服务器上是否正在运行 PHP-FPM?
要检查您的服务器上是否正在运行 PHP-FPM,可以使用以下命令:ps aux | grep php-fpm。如果已正确安装并运行,这将显示正在运行的 PHP-FPM 进程。
-
【Excel】把金额的阿拉伯数字转换成中文大写
在Excel中,你可以使用以下方法将金额的阿拉伯数字转换成中文大写:
方法一:使用内置格式
- 将阿拉伯数字输入到一个单元格中。
- 选中该单元格,右键点击并选择”设置单元格格式”,或者使用快捷键CTRL+1来打开”设置单元格格式”对话框。
- 在”设置单元格格式”对话框中,选择”数字”选项卡。
- 在”分类”列表中选择”中文大写数字”。
- 确认并关闭对话框,你会发现该单元格中的阿拉伯数字已经被转换成了中文大写数字[2]。
方法二:使用公式
- 在一个单元格中输入以下公式:
=IF(MOD(A1,1)=0,TEXT(INT(A1),"[DBNUM2]")&"元整",TEXT(INT(A1),"[DBNUM2]")&"元"&TEXT(MID(A1,LEN(INT(A1))+2,1),"[DBNUM2]D角")&TEXT(MID(A1,LEN(INT(A1))+3,1),"[DBNUM2]D分"))
其中,A1是包含阿拉伯数字的单元格,你可以根据实际情况进行调整。
- 按下Enter键,该单元格将显示转换后的中文大写金额[2]。
方法三:使用VBA宏
如果你需要在多个单元格中进行批量转换,你可以使用VBA宏来实现。以下是一个示例的VBA代码:Sub ConvertToChinese() Dim rng As Range Dim cell As Range Set rng = Selection ' 选择要转换的单元格范围 For Each cell In rng cell.Value = Application.WorksheetFunction.Text(cell.Value, "[DBNUM2]") Next cell End Sub
- 打开Excel,按下ALT+F11打开VBA编辑器。
- 在VBA编辑器中,插入一个新的模块。
- 将上述VBA代码复制粘贴到新的模块中。
- 关闭VBA编辑器。
- 选中要转换的单元格范围。
- 按下ALT+F8打开宏对话框。
- 选择”ConvertToChinese”宏,并点击”运行”按钮。
- 选中的单元格将被转换成中文大写金额[2]。
请注意,以上方法适用于Excel的大多数版本。如果你使用的是其他版本或者有特定的需求,请参考相关文档或搜索更多资源。
参考文献:
[1] Excel表格中数字转中文大写怎么做?这里总有需要的那一种方法 – 腾讯云开发者社区-腾讯云
[2] 百度知道 – 信息提示
Learn more:
-
调整 PHP-FPM 以获得超高的服务器性能
这篇文章提供了一个关于如何通过调整 PHP-FPM 设置来优化服务器内存使用并提高性能的逐步指南。
步骤 1:确定 PHP-FPM 进程的内存使用情况
- 运行以下命令以显示按 RSS(常驻集大小,即进程实际使用的物理内存量)排序的 php-fpm 进程:
ps -ylC php-fpm7.3 --sort:rss
- 注意每个 php-fpm 进程使用的内存量(以 KB 或 GB 为单位)。
步骤 2:估算其他进程的内存消耗
- 运行
top
命令。 - 按三次
<
键以按 RES(常驻内存大小)排序。 - 确定 MySQL 和 Apache 等其他进程使用的内存量。
步骤 3:为 PHP-FPM 分配内存
- 根据服务器上的可用内存和步骤 1 和 2 中确定的内存使用情况,为 PHP-FPM 分配一定数量的内存。
- 例如,如果您可以为 PHP-FPM 分配 2GB 内存,并且每个进程使用 0.15GB,则可以运行大约 13 个子进程 (2 / 0.15 = 13.33)。
步骤 4:配置 PHP-FPM
- 打开 PHP-FPM 配置文件:
sudo nano /etc/php/7.x/fpm/pool.d/www.conf
- 找到以下设置并根据您的计算结果进行调整:
pm = dynamic
:将此设置为dynamic
以允许 PHP-FPM 根据需要动态调整子进程的数量。pm.max_children = 12
:设置 PHP-FPM 可以创建的最大子进程数。pm.min_spare_servers = 2
:设置空闲状态下保持的最小服务器进程数。pm.max_spare_servers = 4
:设置空闲状态下保持的最大服务器进程数。pm.start_servers = 12
:设置 PHP-FPM 启动时启动的服务器进程数。pm.max_requests = 500
:设置每个子进程在重启之前可以处理的最大请求数,以防止内存泄漏。
步骤 5:保存并重新启动 PHP-FPM
- 保存配置文件。
- 重新启动 PHP-FPM 以使更改生效:
sudo service php7.3-fpm restart
步骤 6:监控内存使用情况
- 在进行更改后,请持续监控服务器的内存使用情况,以确保 PHP-FPM 性能最佳,并且不会导致内存不足的问题。
在 PHP 8 中,您无法完全关闭垃圾回收(GC)机制。
PHP 的垃圾回收器是其内存管理的核心部分,对于确保脚本运行时的稳定性和防止内存泄漏至关重要。
尽管您无法禁用 GC,但您可以通过以下方式影响其行为:
- gc_disable() 函数: 这个函数可以暂时禁用垃圾回收器的运行。 然而,这并不会阻止 PHP 引擎跟踪引用计数。 一旦
gc_enable()
被调用或者脚本结束,垃圾回收器会重新启动并清理不再需要的变量。 - 修改 php.ini 配置文件: 您可以调整
zend.enable_gc
=Off 来禁用循环引用收集器。 将其设置为 Off 会阻止 PHP 引擎检测和清理循环引用,但这可能会导致潜在的内存泄漏,尤其是在处理大量对象和复杂数据结构时。
重要提示:
- 强烈建议不要尝试完全禁用 PHP 的垃圾回收机制。 这样做可能会导致不可预测的行为,包括内存泄漏、性能下降,甚至导致 PHP 进程崩溃。
- 如果您在脚本运行期间遇到与 GC 相关的性能问题,请先尝试优化代码以减少对象创建和循环引用的数量,而不是尝试禁用 GC。
-
放宽IPFS的CORS(跨域资源共享)限制
要放宽IPFS的CORS(跨域资源共享)限制,你可以按照以下步骤进行操作:
- 使用IPFS命令行工具配置CORS头信息:
- 打开终端或命令提示符窗口。
- 运行以下命令来设置CORS头信息:
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]' ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["GET", "POST"]' ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers '["Authorization"]' ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers '["Location"]' ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'
这些命令将设置允许所有来源(*
)的跨域请求,并指定允许的HTTP方法、请求头、暴露的响应头和是否允许携带凭证(如Cookie)。
- 重新启动IPFS守护进程(daemon):
- 运行以下命令来重新启动IPFS守护进程:
ipfs daemon
这将使新的CORS配置生效。
现在,IPFS将允许来自任何来源的跨域请求。
请注意,这些配置将应用于IPFS守护进程,而不是IPFS网关。如果你使用的是IPFS网关,你可能需要查看网关的文档以了解如何配置CORS。
Learn more:
-
SSE (Server-Sent Events) 概念和工作原理
一、什么是 SSE?
Server-Sent Events (SSE) 是一种服务器推送技术,允许服务器单向地将数据推送给客户端。与传统的客户端请求-服务器响应模式不同,SSE 允许服务器在任何时候主动向客户端发送数据,而无需客户端明确请求。
二、SSE 的工作原理
- 建立连接: 客户端使用 EventSource API 建立到服务器的持久 HTTP 连接。
- 订阅事件流: 服务器端会生成一个事件流,并将数据以文本流的形式发送给客户端。
- 接收和处理数据: 客户端监听
message
事件,并在接收到数据时进行处理。 - 保持连接: 连接会一直保持,直到客户端或服务器断开连接。
三、SSE 的特点
- 单向推送: 数据传输方向是从服务器到客户端,客户端不能向服务器发送数据。
- 基于 HTTP 协议: SSE 使用 HTTP 协议进行通信,无需额外的协议支持。
- 轻量级: SSE 相比 WebSocket 更轻量级,更易于实现和维护。
- 实时性: SSE 可以实现实时数据推送,但相较于 WebSocket 会有一定的延迟。
四、SSE 的应用场景
- 实时数据更新: 例如股票报价、新闻推送、社交媒体通知等。
- 进度条显示: 例如文件上传、下载进度等。
- 聊天应用: 例如简单的聊天室、客服系统等。
五、SSE 与 WebSocket 的比较
特性 SSE WebSocket 数据传输方向 单向 双向 协议 HTTP WebSocket 复杂度 低 高 实时性 较低 高 应用场景 单向数据推送 双向实时通信 六、总结
SSE 是一种简单高效的服务器推送技术,适用于单向实时数据推送的场景。它易于实现和维护,并且可以与现有 HTTP 基础设施良好兼容。