Yar 源码阅读笔记:开篇 她和她的猫 3 years 1 month ago 前言 本文是 Yar 源码系列的第一篇文章,主要介绍 Yar 以及服务端、客户端的基本使用,详细的源码分析会放在后续的文章中。 为什么要研究 Yar? 我从 8 月初开始阅读 《P
PHP 8 新特性介绍 她和她的猫 3 years 3 months ago 前言 距离 PHP 8 发布已经有一年多了,这个版本是 PHP 语言的主版本更新,包含了很多新功能与优化项,并改进了类型系统、错误处理,目前已经迭代到 PHP 8.0.10 版本。 由于更新的
基于 OpenSSL 实现国密 SM4 加解密 她和她的猫 3 years 3 months ago if (!in_array('sm4-cbc', openssl_get_cipher_methods())) { printf("不支持 sm4\n"); } $key = 'her-cat.com'; $iv = random_bytes(openssl_cipher_iv_length('sm4-cbc')); $plaintext = '她和她的猫'; $ciphertext = openssl_encrypt($plaintext, 'sm4-cbc', $key, OPENSSL_RAW_DATA , $iv); printf("加密结果: %s\n", bin2hex($ciphertext)); $original_plaintext = openssl_decrypt($ciphertext, 'sm4-cbc', $key, OPENSSL_RAW_DATA , $iv); p
PHP 源码阅读笔记:编译与调试 PHP 她和她的猫 3 years 3 months ago 基本信息 PHP 版本:7.1.0 调试环境:Ubuntu(WSL) 调试工具:GDB、Clion 编译 PHP 下载并安装 PHP: $ wget http://cn2.php.net/distributions/php-7.1.0.tar.gz $ tar -xzvf php-7.1.0.tar.gz $ cd php-7.1.0 $ ./configure --prefix=$HOME/php-7.1.0/build --enable-fpm 注意:$HO
什么是惊群问题 她和她的猫 3 years 4 months ago 前言 我们知道,像 Nginx、Workerman 都是单 Master 多 Worker 的进程模型。 Master 进程用于创建监听套接字、创建 Worker 进程及管理 Worker 进程。 Worker 进程是由 Master 进程通过 fork 系统调用
大端模式和小端模式 她和她的猫 3 years 5 months ago 什么是大/小端模式 大端模式 大端模式(Big-Endian)又称大端字节序,由于在网络传输中一般使用的是大端模式,所以也叫网络字节序。 在大端模式中,将高
基于 GitHub Actions 定时推送网址到百度站长平台 她和她的猫 3 years 6 months ago 前言 刚学会 PHP 的时候写了一个笑话类型的网站,网站的数据是定时从另外一个网站上采集的。但是网站部署在虚拟主机上,所以用不了 crontab 执行定时任务。 解决办法是使用监
聊聊五种 I/O 模型 她和她的猫 3 years 6 months ago 什么是 I/O I/O 是 Input/Output 的简写,即输入/输出,是计算机与外部设备(键盘、鼠标、磁盘等)通信的统称,与具体实现无关。 与外部设备的通信其实就是对外部设备进行读取或写
Workerman 源码分析:文件上传 她和她的猫 3 years 6 months ago 前言 在 Nginx 中 HTTP 数据是一边接收一边进行解析的,如果解析过程中发现收到的数据有问题就会停止解析,并且停止接收数据。 而 Workerman 将解析协议这一步进行后置,当程序需要用
浅入浅出 HTTP 协议 她和她的猫 3 years 7 months ago 先粘一段来自 MDN 的解释: HTTP 消息是服务器和客户端之间交换数据的方式。有两种类型的消息︰ 请求(requests)--由客户端发送用来触发一个服务器上的动作;
PHP 网络编程:构建 MySQL 蜜罐获取攻击者微信 ID 她和她的猫 3 years 7 months ago 前言 无意间发现 MySQL蜜罐获取攻击者微信ID 这篇文章,读完后觉得挺有意思的,于是想用 PHP 实现一下。 通过文章了解到,可以启动一个 TCP 服务伪装成 MySQL 服务,当有
使用 Workerman 接入 Bilibili 直播弹幕协议 她和她的猫 3 years 8 months ago 逛 B 站的时候,突然想到可以用 PHP 接入直播弹幕,然后在命令行显示弹幕消息。 经过搜索发现了一篇讲解 Bilibili 直播弹幕协议的文章(链接在文末),通过这篇文章了解到了弹
使用 GitHub Actions 自动部署 Hexo 她和她的猫 3 years 8 months ago 目前部署 Hexo 的操作比较麻烦,先在本地执行 hexo clean && hexo d 生成博客静态文件并发布到 GitHub 上,然后通过 XShell 登录到服务器,切换到博客站点目录下 git pull 拉取最新的代码,最近网络
什么是二进制安全 她和她的猫 3 years 8 months ago 众所周知,C 语言中使用字符数组来表示字符串,并在字符串末尾使用空字符 \0 标识字符串结束。 如果字符串中包含 \0 或者二进制数据,就会导致 strlen 函数获取的长度跟字符
【转载】PHP 程序员进阶之路 她和她的猫 3 years 8 months ago 原文:没有Nginx,你还能做什么? PHP 程序员的未来不是 Java,Java 拯救不了你。 已经 1368 年了,你扪胸自问,没有了 Nginx 的你,还能用 PHP 做什么。有一些高端的
优化 Workerman 检查主进程是否存活的逻辑 她和她的猫 3 years 8 months ago 主要新增了判断进程是否为 Workerman 进程的逻辑,从而优化了确定主进程是否存活的准确性。 发现问题 年前逛 GitHub 的时候,发现 Workerman 有一个 2017 年打开的 Issue:already r
基于 Redis 实现分布式锁 她和她的猫 4 years 8 months ago 前言 之前在写支付回调的时候,因为第三方支付的回调机制有问题,存在并发回调的情况。如果对回调的订单不加锁的话,会造成一笔订单重复处理的情况。 在 Laravel 中使用基
《PHP 实现 Base64 编码/解码》笔记 她和她的猫 4 years 9 months ago 前言 早在去年 11 月底就已经看过《PHP 实现 Base64 编码/解码》这篇文章了,由于当时所掌握的位运算知识过于薄弱,所以就算是看过几遍也是囫囵吞枣一般,不出几日便忘
PHP 多进程下载必应壁纸 她和她的猫 4 years 10 months ago 手里拿着锤子,看什么都像是钉子 在放假的这几天,断断续续的看了老李关于 PHP 多进程的文章。 PHP多进程初探 — 开篇 PHP多进程初探 — 孤儿和僵尸 PHP多进程初探
基于 Redis 实现延迟队列 她和她的猫 4 years 10 months ago 前言 之前在一些博客上看到过讲如何实现延迟队列,但是平时没用上也没有动手实现过。 在上次面试的时候,面试官也问过我有没有用过延迟队列,最后凭借着记忆讲了下