Swoole 进程模型
收藏一下 总是忘记这张图 . Swoole 进程模型从上图中可以看出,Swoole 在启动后会创建 Master 进程和 Manager 进程。Master 进程会创建 Master 线程、Reactor 线程、心跳检测线程等,Manager 进程会创建 Worker 进程和 Task 进程。 Swoole 的线程和进程之间分别有什么作用呢? Master 进程这个进程是 swoole 的核心进程,也是一个多线程的进程,一个 Master 线程和多个 Reactor 进程,Reactor 线程的数量可以配置。 Master 线程 Master 线程用于 accept 新的连接,然后会评估每个 Reactor 线程维护的连接数,最后将这个新的连接分配给连接数量最少的那个 Reactor 线程,从而保证每个 Reactor 线程的负载量是均衡的。Master 线程还负责对所有信号的接管(包括请求处理、重启进程、重载配置等),避免 Reactor 线程收到信号的打扰中断。 Reactor 线程当一个 socket 可读或可写的时候,就由 Reactor 线程将事件转发给 work...
The MySQL server is running with the --read-only option so it cannot execute this statement
MySQL 只读模式导致的脚本执行失败问题在使用 MySQL 数据库进行开发和运维时,可能会遇到一些配置导致的意外问题。最近,我在执行数据库脚本时遇到了一个常见错误:“The MySQL server is running with the –read-only option so it cannot execute this statement”。本文将分享这个问题的原因以及如何解决它。 问题背景在一次服务升级过程中,由于运维同事设置了 MySQL 的只读模式,导致我无法执行写入操作。只读模式是 MySQL 的一个配置选项,它限制了数据库的写入操作,确保数据在特定时间内不会被修改。这种模式通常用于以下场景: 数据库备份期间,防止数据被更改。 主从复制架构中,从数据库需要保持只读状态,以确保数据一致性。 错误信息当我尝试执行一个更新操作时,收到以下错误信息: ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this state...
Nginx 中 proxy_pass 末尾带斜杠 `/` 和不带的区别
假如要将8080端口上的请求转发至3000端口。以3000端口为例,编写proxy_pass有两种形式。 无斜杆:http://localhost:3000 有斜杆:http://localhost:3000/ 假设前端请求为 http://localhost:8080/get/test。我们暂且把 /get/test称为请求部分。 不带 “/“server { listen 8080; server_name localhost; location /get { proxy_pass http://localhost:3000; } #或者 location /get/ { proxy_pass http://localhost:3000; } #结果都是 将http://localhost:8080/get/test转发去http://localhost:3000/get/t...
设置Git别名实现在提交前先拉取最新更改
在日常的代码开发工作中,经常需要在提交代码前先拉取最新的更改,以避免冲突和保持团队代码同步。通过设置Git指令别名,我们可以简化这一操作,同时避免一些无用的merge操作,使代码管理变得更加高效。 问题背景在使用Git进行代码管理时,经常会遇到需要先执行git pull再执行git commit -m的情况。这样做可以确保本地代码库是最新的,避免提交代码时出现冲突。然而,频繁地手动执行这两个命令可能会增加开发人员的工作量,特别是在团队协作中。 解决方案为了简化这一操作,我们可以通过设置Git别名来实现在提交前先拉取最新更改的功能,同时避免一些无用的merge操作。下面是如何实现的步骤: 打开终端,并输入以下命令来编辑Git配置文件: git config --global --edit 在打开的配置文件中,添加如下内容: [alias] commitpull = !git pull --rebase && git commit 保存并关闭配置文件。现在您可以使用git commitpull -m "Your commit mes...
解决 Cloudflare 导致的 CORS 跨域问题
在现代 Web 开发中,跨源资源共享(CORS)是一个常见的问题,尤其是当使用 Cloudflare 作为 CDN 时。本文将分享如何通过 Nginx 配置和 Cloudflare 策略解决 CORS 跨域问题的经验。 CORS 问题的背景CORS 是一种安全特性,防止恶意网站访问用户在其他网站上的数据。在某些情况下,使用 Cloudflare 会导致 CORS 策略的冲突,即使服务器已经正确配置了相关响应头。 Nginx 配置在 Nginx 中,我们可以通过设置响应头来解决 CORS 问题。以下是我在 Nginx 配置中使用的示例: location / { proxy_pass http://xxxxxx; # 处理预检请求 add_header 'Access-Control-Allow-Origin' "http_origin"; add_header 'Access-Control-Allow-Credentials' 'true'; add_he...
web目录扫描工具汇总
01 GobusterGobuster 是一个开源工具,主要用于网站目录扫描和子域名收集。安装也很简单,只需执行下面命令即可! apt-get install gobuster 使用参数: -u : –url 网站的域名或者IP -w : 用户自定义字典 -x : 自定义文件类型如php jsp gobuster dir -u http://192.168.0.106/bolt/ -w /usr/share/wordlists/dirb/big.txt -x php 02 DIRBDIRB 是一个 Web 内容扫描器。它是 kali linux 内置的工具,通过对 Web 服务器发起基于字典的攻击并分析响应来工作,但请记住它是内容扫描器而不是漏洞扫描器。 使用也很简单,在DIRB后面直接加目标域名即可。 dirb https://bbskali.cn 03 dirsearchDirsearch 是一个用 Python 编写的暴力扫描工具,用于查找隐藏的 Web 目录和文件。它可以在 Windows、Linux 和 macOS 上运行,而且终端界面配色也比较漂亮...
Ai 写代码工具
AI 编程助手的推荐工具在现代编程中,AI 编程助手已经成为开发者的重要伙伴。这些工具不仅能提高代码编写的效率,还能帮助开发者更好地理解和应用各种编程语言。本文将对一些流行的 AI 编程助手进行介绍,并分享推荐意见。 1. KiteKite 是一个强大的编程助手,提供了智能代码补全功能。它支持多种编程语言,并通过分析代码上下文来提供实时建议。Kite 提供了免费版本,同时也有更高级的付费功能,适合不同需求的开发者。 2. TabNineTabNine 是一个基于深度学习的代码补全工具,能够显著提高编码速度。它支持多种开发环境,并且性能表现良好。TabNine 也有免费版本,适合追求高效编码的开发者。 3. GitHub CopilotGitHub Copilot 是由 GitHub 和 OpenAI 合作开发的编程助手,虽然目前是付费工具,但它为学生和开源项目维护者提供了免费使用的机会。Copilot 能生成上下文相关的代码片段,极大地提升了开发效率。 4. CodeSuggesterCodeSuggester 是一个基于 AI 的代码建议工具,专注于提供实时的代码建议。目...
Arch Linux 为何如此迷人?
Arch Linux 是众多 Linux 操作系统中的一种,面向有 Linux 指令操作经验的「进阶用户」,旨在打造更适合自己的环境,例如不同的桌面、窗口环境等,体验最新的软件包。 1. 纯文本界面,完全自定义Arch Linux 只有文本界面,不包含图形界面。这意味着,当你安装完 Arch Linux 后,屏幕上将一片黑暗,电脑期待着你用键盘输入命令。Arch Linux 只提供最基本的功能,其他软件包都需要自己安装。 2. 成为掌握一切的设计师Arch Linux 不会自动安装你用不到的东西,你将亲自打造完全属于自己的电脑。不会有程序自动启动,也不会强迫你进行更新。你可以将你的电脑改造成任何样子,同时你也为电脑的易用性和安全性负责。 3. 集全天下知识的维基既然要自己打造电脑,当然需要大量知识。Arch Linux 培养了活跃的社区,撰写了几乎全世界最完整的 Linux 知识。想要安装什么软件,可以去 Arch Linux Wiki 查找详细的安装说明与疑难解答。Arch Linux Forums 更是活跃,各种琐碎问题都有近期的回应。在搜索引擎中搜索 “arch” 加上...
frp内网穿透工具
frp内网穿透工具是一款三方开源工具,具体使用方式请参考frp Github。本文档提供基础的frp使用步骤仅供参考,可网络搜索frp内网穿透工具配置教程。 准备工作 需要准备一台公网服务器。 需要有域名并已经正常解析到公网服务器。 什么是frpfrp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 步骤一:服务端安装1. 执行以下命令,下载frp工具压缩包。wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz 2. 执行以下命令,解压frp工具包。tar -xvf frp_0.38.0_linux_amd64.tar.gz 3.执行以下命令,移动至/usr/local。mkdir /usr/local/frpmv frp_0.38.0_linux_amd64/* /usr/local/...
rz 上传文件乱码问题
在Linux环境中,文件传输是常见的需求之一。rz 命令是一个方便的工具,通常与 sz 命令配合使用,支持在终端之间快速传输文件。本文将介绍 rz -by 命令的用法及其应用场景。 什么是 rz 命令?rz 是一个用于接收文件的命令,通常用于通过 ZMODEM 协议从其他主机或终端接收文件。rz 命令通常与 sz(send ZMODEM)命令配合使用,sz 用于发送文件。 安装 rz 和 sz在大多数 Linux 发行版中,rz 和 sz 命令包含在 lrzsz 包中。可以通过以下命令安装: # 对于 Debian/Ubuntu 系统sudo apt-get install lrzsz# 对于 Red Hat/CentOS 系统sudo yum install lrzsz 使用 rz -by 命令命令格式rz -by 参数解析 -b:以二进制模式传输文件,确保文件内容不被修改,适用于任何类型的文件,包括文本文件和二进制文件(如图片、压缩包等)。 -y:自动确认覆盖文件。如果传输的文件已经存在,使用 -y 参数后,rz 将自动覆盖,不提示用户确认。 使用示例 打开终端:确...













