共 179 篇文章
Laravel 中为何不使用 blpop 取队列?
Redis 的 list 数据结构常用来做消息队列,通常使用的命令有 lpop/rpop ,还有带阻塞版的 blpop/brpop 等。blpop 的优点是避免一直轮询占用资源,而且支持多个列表作为参数并按照顺序弹出数据,如 blpop high low 30,可以更方便实现队列的优先级。
Laravel 中间件原理
Laravel 的中间件机制提供了一种管道的方式,每个 HTTP 请求经过一个又一个中间件进行过滤,Laravel 内置了很多中间件,比如 CSRF 机制,身份认证,Cookie 加密,设置 Cookie 等等。
深入理解 PHP 写时复制机制
一个例子:
<?php
$foo = 1;
$bar = $foo;
echo $foo + $bar;变量 $foo 赋值给变量 $bar,这两个变量具有相同的值,没有必要新申请内存空间,他们可以共享同一块内存。在很多场景下 PHP 的 COW 对内存进行优化。比如:变量的多次赋值、函数参数传递,并在函数体内修改实参等。
深入理解 TCP 三次握手
TCP 三次握手是建立可靠连接的基础。本文从握手过程、序列号机制、安全性等角度,深入分析为什么 TCP 需要三次握手而不是两次,以及围绕这个过程的各种边界情况和攻击手段。
软件设计:先整体后细节
《黑客与画家》(Hackers and Painters)一书作者保罗·格雷厄姆(Paul Graham)提出了一个重要观点:如果一开始就纠结细节而看不到整体,往往花费大量时间却达不到预期效果。正确的做法是先有一个整体的轮廓,再逐步完善各个部分。
Laravel Redis 队列原理分析
使用 Supervisor 开启多个进程处理队列任务时,是否会导致重复消费同一个任务?本文从源码角度分析 Laravel Redis 队列的工作原理。
Laravel 队列实践指南
使用 Laravel 消息队列处理异步任务,Redis 作为队列驱动,Supervisor 监控进程异常中断并自动重启,这是 Laravel 处理队列任务的标准配置。但在生产环境中,为了保证系统可靠性,还需要注意以下几点。
Golang 值传递与引用传递深度解析
在 Golang 中,函数之间传递变量时总是以值的方式传递的。无论是 int、string、bool、array 这样的内置类型,还是 slice、map、channel 这样的引用类型,在函数间传递变量时,都是以值的方式传递。