聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

  • 191 views阅读

    Golang代码修改后自动重启

    写 Golang 项目有两件很烦的事情:一件是错误处理时连绵不绝的「if err != nil」,另一件是作为编译型语言,代码修改后不能实时看到效果, 借助一些工具可以实现文件修改后自动编译重启,比如: Linux 环境:inotify-tools(G...

    分类:技术文章 时间:2020-07-31 19:56 我要评论(0个)

  • 391 views阅读

    白话布隆过滤器

    日常开发中,一个常见需求是判断一个元素是否在一个集合中。比如当你在浏览器中输入一个网址的时候,浏览器会判断网址是否在黑名单里。通常的解决方案是直接查询数据库,看看是否存在相关的记录,不过这往往会比较慢,于是我们又会引入缓存来提升速度,可是当数据比较多的时候...

    分类:技术文章 时间:2020-06-22 14:17 我要评论(0个)

  • 854 views阅读

    记一次有惊无险的丢包调试经历

    某个项目把服务器从 CentOS 操作系统从 5 升级到了 7(3.10.0-693),一切都很顺利,直到我在服务器上闲逛的时候,无意间发现了一个「大问题」:网卡 eth0 在 RX 上存在丢包(dropped)现象,丢得还很有规律,每一两秒丢一个包! w...

    分类:技术文章 时间:2020-05-04 01:37 我要评论(0个)

  • 669 views阅读

    记一次Redis连接池问题引发的RST

    某个项目,因为监控尚不完善,所以我时常会人肉查查状态,终于有一天发现了异常: watch -d -n1 ‘netstat -s | grep reset’ 如图所示,服务器发送了大量的 reset,在我 watch 的时候还在发,多...

    分类:技术文章 时间:2020-05-04 01:37 我要评论(0个)

  • 1093 views阅读

    关于OpenResty里的ngx.on_abort

    关于 OpenResty 里的 ngx.on_abort,官方文档里是这样说明的: Registers a user Lua function as the callback which gets called automatically when the...

    分类:技术文章 时间:2020-04-13 14:35 我要评论(0个)

  • 886 views阅读

    如何在OpenResty里实现代码热更新

    所谓「代码热更新」,是指代码发生变化后,不用 reload 进程就能生效。当然,通过关闭 lua_code_cache 可以实现此目标,但那样的话性能无疑将大打折扣!实际上因为所有的 require 操作都是通过 package.loaded 来加载模块的...

    分类:技术文章 时间:2020-03-25 16:37 我要评论(0个)

  • 1108 views阅读

    手把手教你用OpenResty里的FFI

    了解 OpenResty 的人应该知道,OpenResty 原本的 API 都是基于 C 实现的,不过在新版里都已经改成了基于 FFI 实现的,为什么这么做?因为 FFI 在效率上更有优势,除此以外,FFI 还有一个优点是可以很便利的和 C 交互,我们不妨...

    分类:技术文章 时间:2020-03-08 22:50 我要评论(0个)

  • 1426 views阅读

    一个尾调用相关的诡异报错信息

    一个 OpenResty 的接口报错了,我查了一下日志,发现如下报错信息: bad argument #1 to ‘test’ (string expected, got userdata) 看上去这就是一道送分题啊:无非就是 te...

    分类:技术文章 时间:2020-03-04 00:17 我要评论(0个)

  • 1598 views阅读

    如何扩展一个OpenResty模块

    因为 Lua 本身并没有继承之类的语法,所以我们不能通过 OOP 的套路来扩展模块,不过实际上对于 Lua 来说,扩展一个模块有更简单的方法,下面我们以 lua-resty-string 模块中的 aes 加解密功能为例子来说明一下。 在 aes 加解密...

    分类:技术文章 时间:2020-02-19 15:05 我要评论(0个)

  • 796 views阅读

    OpenResty与模块

    Lua 中没有常见面向对象语言中所谓类的概念,取而代之使用模块来组织管理代码。关于模块的基础知识大家可以参考「OpenResty 最佳实战」,本文聊点别的。 如何实现一个模块呢?假设我们要实现一个不太安全的房奴模块(houseslave.lua): lo...

    分类:技术文章 时间:2020-02-09 22:00 我要评论(0个)

  • 885 views阅读

    使用Fiddler把请求从HTTPS改成HTTP

    为什么我要把请求从 HTTPS 改成 HTTP?这是因为生产环境是 HTTPS 的,而测试环境却是 HTTP 的,我要在测试环境测试应用,所以需要把请求从 HTTPS 改成 HTTP。为什么我不在测试环境部署一套 HTTPS 证书?这是因为 HTTPS 证...

    分类:技术文章 时间:2020-02-09 22:00 我要评论(0个)

  • 843 views阅读

    被忽视的time命令

    如果要选 Linux 下最容易被忽视的命令,time 应该算一个。简单来说,它是一个用来计算命令运行时间的工具,之所以说它容易被忽视,一方面很多人根本不知道 time 的存在,而是习惯在命令启动前后记录两个时间戳,然后手动计算命令运行时间;另一方面很多人虽...

    分类:技术文章 时间:2020-02-09 22:00 我要评论(0个)