SF
猴子星球(Mr-houzi' Blog)
猴子星球(Mr-houzi' Blog)
注册登录
关注博客
注册登录
主页
关于
RSS
令人困惑的 Go time.AddDate
Mr_houzi
2022-09-16
阅读 3 分钟
2.8k
我们经常会使用 Go time 包 AddDate(),对日期进行计算。而它得到的结果,可能会往往超出我们的“预期”。(为什么预期要打引号,因为我们的预期可能是模糊、偏差的)。
gorm是如何保证协程安全的
Mr_houzi
2022-04-01
阅读 3 分钟
4k
Gorm 官方文档提供了如何正确使用链式调用的例子以及会引起协程不安全的反例,知道了如何正确使用,也要知道原理才能用的更安心。下面以文档示例和源码切入,浅析 Gorm 在链式调用时时如何保证协程安全的?
RabbitMQ中三个TTL的探讨
Mr_houzi
2022-02-09
阅读 1 分钟
2.2k
TTL各自含义在实现延迟队列的生产者代码中,一共出现了三个TTL,这三个TTL值得探讨一下,这或许对你实现一个高可用的消息队列有帮助。x-message-ttl 在创建队列时设置的消息TTL,表示消息在队列中最多能存活多久(ms);Expiration 发布消息时设置的消息TTL,消息自产生后的存活时间(ms);x-delay 由rabbitmq_delayed_...
Golang 实现 RabbitMQ 的延迟队列
Mr_houzi
2022-02-08
阅读 4 分钟
3.6k
读本文之前,你应该已经了解 RabbitMQ 的一些概念,如队列、交换机之类。延迟队列简介一个队列中的消息在延迟一段时间后才被消费者消费,这样的队列可以称之为延迟队列。延迟队列的应用场景十分广泛,如:下单后30分钟内未付款则取消订单;在某个时间下发一条通知等。通过死信实现延迟队列通过Golang 实现 RabbitMQ 的死...
Golang 实现 RabbitMQ 的死信队列
Mr_houzi
2022-01-30
阅读 6 分钟
5.9k
消息被拒绝,不重新放回队列(使用 basic.reject / basic.nack 方法拒绝消息,并且这两个方法的参数 requeue = false)
利用 go-kit 实现支持 http 和 grpc 的微服务
Mr_houzi
2022-01-24
阅读 15 分钟
6.7k
go-kit 是一套开源的 golang 微服务工具集合。go-kit 自上而下提供了三层模型,分别是 Transport 层、Endpoint 层、Service 层。
整明白 Golang slice 声明方式、浅复制现象、深复制、append操作
Mr_houzi
2021-11-30
阅读 10 分钟
3.8k
什么是切片切片(slice)是对数组一个连续片段的引用。切片是一个引用类型,它实际并不存储元素,它只是标识了数组上的某一个连续片段。数组在内存中是一连串的内存空间,每个元素占据一块内存。切片的数据结构是一个结构体,结构体内由三个参数。Pointer 指向数组中它要表示的片段的起始元素;len 长度cap 最大容量 {代...
整明白 Golang struct 实例化和赋值
Mr_houzi
2021-11-19
阅读 5 分钟
8.5k
Golang 中 struct 各种实例化和赋值方式,一会儿是值传递,一会儿又是指针,让人一头雾水,于是我决定梳理一下,整个明白。先定义一个结构体,下面结合代码进行讲解。 {代码...} 实例一p 以最常规的方式实例化一个 struct,变量 p 得到一个 Person 结构体。 {代码...} 实例二变量 p1 由 p 赋值而来,由于 Golang 语言是...
ORM:被忽略的 group by 后的 count 统计
Mr_houzi
2021-09-23
阅读 2 分钟
3.4k
对于,下面这个 sql 查询器,page() 方法会执行两条 sql ,一条是查数据集,一条是查符合条件的数据集总数,对应的返回 [list, total]。
Redis 实现限流
Mr_houzi
2021-08-29
阅读 2 分钟
6.5k
思路:假设 $period 秒内,一个用户只能访问 $maxCount 次。用户ID作为 key,毫秒时间戳作为 score 和 value。一个请求进入,
装饰器模式在Laravel中的应用
Mr_houzi
2021-08-28
阅读 4 分钟
3.4k
一个请求可以视为现有对象,在请求到达控制器之前,需要经过 Laravel 框架的各种中间件,每个中间件都对请求进行不同的“装饰”,当请求到达控制器执行完毕进行响应客户端,一个响应返回途中要经过刚刚来时的经过的中间件,每个中间件都可以对响应进行不同的“装饰”,最后响应到达客户端。这个流程是一个典型的“洋葱模型”。
利用GoAccess图形化分析Nginx访问日志
Mr_houzi
2021-08-27
阅读 2 分钟
2.1k
Q1: configure: error: * Missing development files for the GeoIP library
在非Laravel项目中使用Validator验证器
Mr_houzi
2021-02-03
阅读 6 分钟
3.2k
安装 {代码...} 引入提示消息项目根目录创建 lang/zh_cn/validation.php 文件 {代码...} 来自:[链接]封装 handler封装 handler$translation_path 定位到刚刚创建的 lang 目录$translation_locale 为多语言目录名,即 zh_cn {代码...} 参考:[链接]使用直接使用 {代码...} 自定义消息提示和定义属性名称 {代码...} 打印...
PHP数组函数的时间复杂度清单
Mr_houzi
2021-01-27
阅读 1 分钟
2.2k
PHP 给开发者提供了强大的数组函数,帮助开发者提高了开发效率。正是 PHP 数组函数太易用、太方便,让开发者常常忽略数组函数的时间复杂度。这里有一份很实用的问答,高赞回答列举了关于数组函数的时间复杂度。List of Big-O for PHP functions希望看完上面的问答能帮助到大家!
Nginx代理同域名前后端分离项目
Mr_houzi
2020-10-14
阅读 2 分钟
5.9k
前后端分离项目,前后端共用一个域名。通过域名后的 url 前缀来区别前后端项目。以 vue + php 项目为例。直接上 server 模块的 nginx 配置。 {代码...} 简单解释当域名后存在 /api/ 前缀时,将转给后端处理;当域名后存在 /uploads/ 前缀时,访问后端的静态资源。由于 location 精准匹配的原则,除以上之外的访问都会被...
UI Avatars 拿来即用的头像生成Api
Mr_houzi
2020-10-07
阅读 1 分钟
4.3k
UI Avatars 是一个根据名字首字母生成头像的网站,对外提供Api。没有限制或登录,没有使用情况跟踪,也不存储任何信息,访问速度也很快。拿来即用的特点,让我非常喜欢。
Eloquent ORM 自定义 builder——实现 find_in_set 查询
Mr_houzi
2020-08-20
阅读 2 分钟
2.2k
上篇文章其实已经介绍了自定义 builder,可是举得了 page 例子不够恰当,这次用自定义 builder 实现一下 MySQL 的 find_in_set() 查询。
Eloquent ORM 自定义 builder
Mr_houzi
2020-08-18
阅读 1 分钟
1.6k
Eloquent ORM 无疑是非常强大的,为开发者提供了许多好用的查询构造器。有时候,现有的查询构造器不能满足我们的要求时,我们也可以自定义。
Git Webhook自动部署项目
Mr_houzi
2020-07-28
阅读 2 分钟
3.2k
搜了网上的 Webhook 代码,有的既用到了php,又用到了shell,感觉太复杂,自己才疏学浅看不懂,于是就想自己写一个简单的,能用就行。
Laravel 打造适合Api的异常处理响应格式
Mr_houzi
2020-06-12
阅读 6 分钟
3.4k
ModelNotFoundException 一般在模型查找不到抛出,prepareException() 中它被转为 Symfony 包中NotFoundHttpException,默认状态码404;AuthorizationException 在 Policy 权限未通过时抛出,prepareException() 中它被转为 Symfony 包中 AccessDeniedHttpException,默认状态码403;TokenMismatchException 在 CSRF 验...
Laravel 修改验证异常的响应格式
Mr_houzi
2020-05-25
阅读 2 分钟
1.8k
当 Request 验证失败时会抛出 ValidationException异常,最终交由全局异常Handler类处理。Handler继承自Illuminate\Foundation\Exceptions\Handler,框架中的Handler类调用render处理异常并进行响应,针对于ValidationException异常又调用了convertValidationExceptionToResponse方法来处理。代码
利用PHP反射实现内置函数文档
Mr_houzi
2020-04-24
阅读 2 分钟
1.4k
反射 Reflection 反射可以简单理解为扫描类的属性、方法和注释的能力。 用法 PHP 为我们提供了丰富的方法,使我们可以方便的使用。 {代码...} 应用 有时系统需要向用户提供内置方法文档说明来使用,那么我们则可以通过PHP反射实现。 创建内置函数类 {代码...} 扫描内置函数类,生成文档 {代码...} 结果 {代码...} 参考 [...
追踪解决FFmpeg无法操作https资源的问题
Mr_houzi
2020-02-06
阅读 1 分钟
15.5k
对于这个问题,需要卸载重新编译安装。配置时需要附带 --enable openssl。如果使用 ubuntu 系统,需要在编译安装前执行 sudo apt-get install libssl-dev ,确保 libssl-dev 存在