令人困惑的 Go time.AddDate

2022-09-16
阅读 3 分钟
2.8k
我们经常会使用 Go time 包 AddDate(),对日期进行计算。而它得到的结果,可能会往往超出我们的“预期”。(为什么预期要打引号,因为我们的预期可能是模糊、偏差的)。

gorm是如何保证协程安全的

2022-04-01
阅读 3 分钟
4k
Gorm 官方文档提供了如何正确使用链式调用的例子以及会引起协程不安全的反例,知道了如何正确使用,也要知道原理才能用的更安心。下面以文档示例和源码切入,浅析 Gorm 在链式调用时时如何保证协程安全的?

Golang 实现 RabbitMQ 的延迟队列

2022-02-08
阅读 4 分钟
3.6k
读本文之前,你应该已经了解 RabbitMQ 的一些概念,如队列、交换机之类。延迟队列简介一个队列中的消息在延迟一段时间后才被消费者消费,这样的队列可以称之为延迟队列。延迟队列的应用场景十分广泛,如:下单后30分钟内未付款则取消订单;在某个时间下发一条通知等。通过死信实现延迟队列通过Golang 实现 RabbitMQ 的死...

Golang 实现 RabbitMQ 的死信队列

2022-01-30
阅读 6 分钟
5.9k
消息被拒绝,不重新放回队列(使用 basic.reject / basic.nack 方法拒绝消息,并且这两个方法的参数 requeue = false)

整明白 Golang struct 实例化和赋值

2021-11-19
阅读 5 分钟
8.6k
Golang 中 struct 各种实例化和赋值方式,一会儿是值传递,一会儿又是指针,让人一头雾水,于是我决定梳理一下,整个明白。先定义一个结构体,下面结合代码进行讲解。 {代码...} 实例一p 以最常规的方式实例化一个 struct,变量 p 得到一个 Person 结构体。 {代码...} 实例二变量 p1 由 p 赋值而来,由于 Golang 语言是...
封面图

ORM:被忽略的 group by 后的 count 统计

2021-09-23
阅读 2 分钟
3.4k
对于,下面这个 sql 查询器,page() 方法会执行两条 sql ,一条是查数据集,一条是查符合条件的数据集总数,对应的返回 [list, total]。

Redis 实现限流

2021-08-29
阅读 2 分钟
6.5k
思路:假设 $period 秒内,一个用户只能访问 $maxCount 次。用户ID作为 key,毫秒时间戳作为 score 和 value。一个请求进入,

装饰器模式在Laravel中的应用

2021-08-28
阅读 4 分钟
3.4k
一个请求可以视为现有对象,在请求到达控制器之前,需要经过 Laravel 框架的各种中间件,每个中间件都对请求进行不同的“装饰”,当请求到达控制器执行完毕进行响应客户端,一个响应返回途中要经过刚刚来时的经过的中间件,每个中间件都可以对响应进行不同的“装饰”,最后响应到达客户端。这个流程是一个典型的“洋葱模型”。

Laravel Seeder 生成百万模拟数据

2021-03-24
阅读 2 分钟
2.7k
Laravel 集成了 Faker 库,并提供了 Seeder 可以帮助我们轻松地生成模拟数据。先书写数据仓库和数据填充代码数据仓库代码 {代码...} 数据填充代码 {代码...} 我们通过是 times() 设置了填充的次数,执行数据填充命令,可以将 1000 条数据填充至 topics 表中,这很方便。 {代码...} 如果我们想要插入 100w 条数据,是不是...

在非Laravel项目中使用Validator验证器

2021-02-03
阅读 6 分钟
3.2k
安装 {代码...} 引入提示消息项目根目录创建 lang/zh_cn/validation.php 文件 {代码...} 来自:[链接]封装 handler封装 handler$translation_path 定位到刚刚创建的 lang 目录$translation_locale 为多语言目录名,即 zh_cn {代码...} 参考:[链接]使用直接使用 {代码...} 自定义消息提示和定义属性名称 {代码...} 打印...
封面图

PHP数组函数的时间复杂度清单

2021-01-27
阅读 1 分钟
2.2k
PHP 给开发者提供了强大的数组函数,帮助开发者提高了开发效率。正是 PHP 数组函数太易用、太方便,让开发者常常忽略数组函数的时间复杂度。这里有一份很实用的问答,高赞回答列举了关于数组函数的时间复杂度。List of Big-O for PHP functions希望看完上面的问答能帮助到大家!

Nginx代理同域名前后端分离项目

2020-10-14
阅读 2 分钟
5.9k
前后端分离项目,前后端共用一个域名。通过域名后的 url 前缀来区别前后端项目。以 vue + php 项目为例。直接上 server 模块的 nginx 配置。 {代码...} 简单解释当域名后存在 /api/ 前缀时,将转给后端处理;当域名后存在 /uploads/ 前缀时,访问后端的静态资源。由于 location 精准匹配的原则,除以上之外的访问都会被...

UI Avatars 拿来即用的头像生成Api

2020-10-07
阅读 1 分钟
4.3k
UI Avatars 是一个根据名字首字母生成头像的网站,对外提供Api。没有限制或登录,没有使用情况跟踪,也不存储任何信息,访问速度也很快。拿来即用的特点,让我非常喜欢。

Eloquent ORM 自定义 builder——实现 find_in_set 查询

2020-08-20
阅读 2 分钟
2.2k
上篇文章其实已经介绍了自定义 builder,可是举得了 page 例子不够恰当,这次用自定义 builder 实现一下 MySQL 的 find_in_set() 查询。

Eloquent ORM 自定义 builder

2020-08-18
阅读 1 分钟
1.7k
Eloquent ORM 无疑是非常强大的,为开发者提供了许多好用的查询构造器。有时候,现有的查询构造器不能满足我们的要求时,我们也可以自定义。

Git Webhook自动部署项目

2020-07-28
阅读 2 分钟
3.2k
搜了网上的 Webhook 代码,有的既用到了php,又用到了shell,感觉太复杂,自己才疏学浅看不懂,于是就想自己写一个简单的,能用就行。

Laravel框架中 getClientIps() 原理和用法

2020-07-20
阅读 2 分钟
3.4k
起因是用 $request->ip() 来获取 ip 限流,突然遭到大面积误杀。排查 access.log 日志,几乎所有请求的 $remote_addr ,都为某几个固定 ip。咨询运维后发现是他悄悄给前端加了 cdn。那为何会产生这种问题呢?

Laravel 打造适合Api的异常处理响应格式

2020-06-12
阅读 6 分钟
3.4k
ModelNotFoundException 一般在模型查找不到抛出,prepareException() 中它被转为 Symfony 包中NotFoundHttpException,默认状态码404;AuthorizationException 在 Policy 权限未通过时抛出,prepareException() 中它被转为 Symfony 包中 AccessDeniedHttpException,默认状态码403;TokenMismatchException 在 CSRF 验...

Laravel 修改验证异常的响应格式

2020-05-25
阅读 2 分钟
1.9k
当 Request 验证失败时会抛出 ValidationException异常,最终交由全局异常Handler类处理。Handler继承自Illuminate\Foundation\Exceptions\Handler,框架中的Handler类调用render处理异常并进行响应,针对于ValidationException异常又调用了convertValidationExceptionToResponse方法来处理。代码

利用PHP反射实现内置函数文档

2020-04-24
阅读 2 分钟
1.4k
反射 Reflection 反射可以简单理解为扫描类的属性、方法和注释的能力。 用法 PHP 为我们提供了丰富的方法,使我们可以方便的使用。 {代码...} 应用 有时系统需要向用户提供内置方法文档说明来使用,那么我们则可以通过PHP反射实现。 创建内置函数类 {代码...} 扫描内置函数类,生成文档 {代码...} 结果 {代码...} 参考 [...

域名解析变更导致websocket终端“假掉线”现象

2020-03-31
阅读 1 分钟
2.6k
系统升级,将域名解析的ip从主机变更为备机。终端通过域名连接websocket服务,原本以为域名不变,终端会自动过渡到备机wbsocket服务。事实并没有这样,新建立的终端是能与备机 websocket 服务正常通信的,原本在域名解析变更前已经建立连接的终端并不能正常通信。

解决guzzle6.x请求过慢的问题

2020-03-27
阅读 1 分钟
1.9k
经排查发现当不存在 query 参数时,若将其设置为空数组,将会导致请求变慢,如不存在query时,应该不在选项中设置query。 起初发现问题是6.3.3版本,升级6.5.2后,仍然存在此问题。 修复前 修复后

给PHP框架全副武装——数据迁移

2020-02-26
阅读 2 分钟
2.2k
有时由于公司需要或接收别人的项目,只能用公司的框架。有些公司自己开发的框架功能并不是那么齐全。可能熟悉了Laravel、TP的你,用起来感觉很难受。下面几篇文章,我会介绍一下为简单PHP框架集成好用的功能,帮你更顺畅的开发。

追踪解决FFmpeg无法操作https资源的问题

2020-02-06
阅读 1 分钟
15.5k
对于这个问题,需要卸载重新编译安装。配置时需要附带 --enable openssl。如果使用 ubuntu 系统,需要在编译安装前执行 sudo apt-get install libssl-dev ,确保 libssl-dev 存在

这是一份儿PHPer需要的远程开发环境(不依赖Windows,拥抱Linux)!

2019-07-14
阅读 3 分钟
6k
一般情况,开发者多使用Windows系统,PHPStorm、VSCode等软件让我们离不开Windows,但是,但是多数开发者更倾向于在Linux上部署环境。那么这一份教程就诞生了。(MacOS用户可以绕行)

apidoc利用代码注释书写文档

2018-07-08
阅读 4 分钟
6.3k
apidoc是一款利用源代码中注释来创建RESTful Web API文档的工具。apidoc可用于C#,Go,Dart,Java,JavaScript,PHP,TypeScript和所有其他支持Javadoc的语言。

PHP与Python进行数据交互

2018-05-14
阅读 1 分钟
10.3k
个人博客同步文章 [链接] 最近,决定在一个项目用tp5进行APP接口开发,用Python做数据分析,然后这就面临一个问题:PHP和Python如何进行数据交互? 思路 我解决此问题的方法是利用了PHP的passthru函数来调用命令运行Python脚本。 实现 在PHP中调用命令运行Python脚本 {代码...} 若存在多个参数,则参数之间以空格分开 在...

解决bash: mysql: command not found的问题

2018-03-08
阅读 1 分钟
6k
个人博客同步文章 [链接] 问题 今天用了集成镜像配了一下服务器,使用mysql出现如下问题: {代码...} 原因 出现此问题是/usr/local/bin目录下缺失mysql导致,只需要一下方法建立软链接。 解决方法 把mysql安装目录,比如MYSQLPATH/bin/mysql,映射到/usr/local/bin目录下: {代码...} mysqld、mysqld_safe出现问题时同理...