自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

仁扬

骐骥一跃,不能十步;驽马十驾,功在不舍。

  • 博客(52)
  • 收藏
  • 关注

原创 谈谈 Kafka 的幂等性 Producer

使用消息队列,我们肯定希望不丢消息,也就是消息队列组件,需要保证消息的可靠交付。消息交付的可靠性保障,有以下三种承诺:最多一次、至少一次和精确一次。

2023-08-03 23:13:25 1185

原创 根据首尾字符串截取中间字符串

今天分享一个函数:虽然它非常简单,但是真的很好用!也很常用!比如 “我今天真的很高兴” 这句话,要把 `今天` 截取出来,我们可以直接调用函数拿到结果,不需要匹配索引、也不用写正则!

2023-08-03 00:05:44 217

原创 容器化的好处

容器化,是指使用容器技术(Docker/containerd等)运行应用程序(容器),并使用容器编排技术(例如 K8s)来管理这些容器,那么它有什么好处呢?

2023-08-03 00:04:34 444

原创 收集 macwk.com 的替代网站

macwk.com 在 2022-10-05 关站,域名停止解析,已经打不开了。翻了很多资料,收集了几个网站作为替代,大家有需要可以试试,如果有更好的麻烦告诉我哈哈!

2023-08-01 00:17:42 630

原创 PHP 容器化引发线上 502 错误状态码的修复

公司的业务逐步推广容器化,其中 PHP 业务的 Pod,由以下 5 个容器组成:nginx、php-fpm、metric(监控)、jaeger(链路追踪)、log(日志收集)。线上滚动部署的时候报错!

2023-08-01 00:17:00 756

原创 记一次 HTTPS 抓包分析和 SNI 的思考

日常听说 HTTPS 是加密协议,那现实中的 HTTPS 流量,是真的完全加密吗?答案是,不一定。原因嘛,抓个包就知道了。我们用 curl 命令触发一下!

2023-07-31 23:46:04 902

原创 微服务性能分析工具 Pyroscope 初体验

Go 自带接口性能分析工具 pprof,接入方式简单,可以暴露接口后采集服务运行状态分析性能。但是 Pyroscope 更为强大,它有一个非常漂亮的 UI 界面!第一眼看到它我就被迷住了!

2023-07-28 23:49:21 1170

原创 Redis 主从同步原理

主从同步,就是将数据冗余备份,主库(Master)将自己库中的数据,同步给从库(Slave)。主从同步的必要性,在于数据的高可用。它可以保证机器故障时,还有其他的服务器可以进行故障转移。

2023-07-27 23:18:31 426 1

原创 Manjaro Linux 连接公司的 VPN 网络

用 Linux 和用 Windows/macOS 不一样,它真的需要用户操心很多东西。比如怎么连接公司的 VPN 网络……最后我使用 PPTP Client 连上了,遂写个文章做个记录吧。

2023-07-26 23:39:03 431

原创 Manjaro Linux 安装 deb 软件包

“记得上次用 Manjaro Linux 的时候,还是上次:)”。三年前,工作都是在 Linux 下完成的——那时候的我还没买苹果电脑,每天的快乐就是折腾 Linux 发行版……

2023-07-25 23:46:16 2359

原创 Redis 集群偶数节点跨地域部署之高可用测试

你搭建过偶数节点的 Redis 集群吗?有没有想过它是否具备高可用的能力?会不会脑裂呢?实践出真知!现在 docker 太方便了,搭一个集群模拟一下……

2023-07-24 23:47:25 225

原创 快速切换 nodejs 的版本

公司新的后台系统升级了框架版本,旧后台用的是老的 nodejs,也不可能去升级。这个时候,切换 nodejs 版本显然就很重要了!后来我找到一个包,只需全局安装,就可以自由切换版本,非常好用!

2023-07-23 23:41:26 106

原创 获取客户端真实 IP 地址的最佳实践

翻遍整个互联网,几乎没有文章能把 “获取客户的真实 IP 地址” 这个看起来很简单的事情捋清楚、讲明白,更不用说最佳实践。这篇文章也是我在这段时间的研究中总结出来的宝贵经验,希望对读者能有些许帮助。

2023-07-23 10:37:28 1553 1

原创 使用 Dockerfile 构建生产环境镜像

1202 年了,如果你连 Docker 都不知道是什么,我建议买一本书看看——或者谷歌一下,博客已经写烂了。为什么有这篇文章,是因为我在真正做容器化改造的时候,发现公司生产环境存在大量的坑……

2023-07-21 23:49:25 201

原创 大白话讲讲 Go 语言的 sync.Map(二)

上一篇文章《大白话讲讲 Go 语言的 sync.Map(一)》讲到 entry 数据结构,原因是 Go 语言标准库的 map 不是线程安全的,通过加一层抽象回避这个问题……

2023-07-20 23:19:05 82

原创 大白话讲讲 Go 语言的 sync.Map(一)

在讲 sync.Map 之前,我们先说说什么是 map(映射)。我们每个人都有身份证号码,如果我需要从身份证号码查到对应的姓名,用 map 存储是非常合适的……

2023-07-19 23:38:01 49

原创 我是如何组织 Go 代码的(目录结构 依赖注入 wire)

我们在编写 Go 程序可能会直接新建 main.go,xxx.go,yyy.go……对于小型工程来说简洁明了;但对于大型工程而言,或者团队协作中,没有明确的规范,只会使得项目越来越凌乱……

2023-07-18 22:17:41 50

原创 巧用 nc 命令传输文件

今天在业务上云的时候,遇到了些问题。最终发现问题的根源不好排查,于是——把生产环境的全量配置文件,还有日志全量打包下载到开发机器分析!生产和开发机内网不通,都是走公网传输,但是速度特别慢……

2023-07-17 23:49:11 134

原创 快速搭建 phpmyadmin 开发环境

真的很喜欢 phpmyadmin 这个 PHP 程序。虽然工作上基本都用 Navicat,但是很多东西都是习惯了,就很难改变!比如建表,执行 SQL 语句,还是觉得 phpmyadmin 更胜一筹……

2023-07-16 23:41:30 132

原创 gin 接口开发 - 用户输入自动 TrimSpace

大家用过 gin 的就知道,支持指定某个字段为 required 字段必填。然而,我们不能指望用户输入了,这个字段就是可以用的!用户输入了空格,就成功躲避我们的校验,所以我们不得不再校验一次……

2023-07-15 19:26:21 59

原创 说说 Go 语言的坑(二)

上一篇文章说的是 for-range 的,工作中,其实还是遇到蛮多奇奇怪怪的问题,这里也顺便整理了一下,就当作是续集:)

2023-07-14 23:42:09 26

原创 Linux 如何删除乱码的文件

你是否在终端 ls 过,发现很多乱码的文件?我搜索了挺多资料,没有一篇文章能真的解决问题(感觉都是抄来抄去的)。用 SFTP 工具、PHPStorm 全家桶,都删不了……你知道如何删除它们吗?

2023-07-13 23:39:11 709

原创 Go 语言的 nil 能比较自己吗

nil 是一个预先声明的标识符,代表指针、通道、函数、接口、哈希表或切片的零值。OK,回到问题,nil 能比较自己吗?

2023-07-12 23:53:53 22

原创 说说 Linux 的 curl 命令

cURL,熟悉 Linux 的同学,没有人不知道这个命令吧:)我从实用性的角度,说下我比较常用的几个参数。

2023-07-11 23:54:19 98

原创 巧用 bc 命令测试 Linux 主机的 CPU 性能

今天向公司申请了一台 Linux 主机,作为平时的开发环境。由于自己并不依赖远程开发(大多数情况下项目都可以本地开发、调试),于是只申请了 4C/8G 的低配机器。突然好奇的是,这台机器的性能怎么样?

2023-07-10 23:39:28 161

原创 Go 语言 for-range 的两个坑,你踩过吗?

先看看下面的例子,你知道最终输出的结果是什么吗?不知道的同学,大家可以在 https://play.golang.org/ 这里尝试运行一下。

2023-07-09 22:20:18 133

原创 巧用 awk 批量杀进程

我需要批量杀死某台机器的 PHP 进程,该怎么办?如果是一个进程,那就好办了,ps -ef | grep php,找到 PID 然后 kill -9 PID……那批量怎么搞呢?

2023-07-06 22:15:47 210

原创 tcpdump 常用命令

Linux 的命令太多,tcpdump 是一个非常强大的抓包命令。有时候想看线上发生的一些问题:nginx 有没有客户端连接过来……客户端连接过来的时候 Post 上来的数据对不对……

2023-07-05 23:58:50 33

原创 普通用户启动 supervisor 报 HTTP 错误(strace)

今天操作生产环境的时候,报的错误令人懵逼,SRE 同学折腾了好久,配置来配置去,搞不明白为啥 www 就是启动不了 supervisor !

2023-07-04 23:26:18 208

原创 分享我的 Shell 环境,git 操作效率提升 100% !

本文分享我在工作中常用的环境变量 + Shell alias:比如 `git add .` 这样的命令,我只需要敲 `ga` 就好了!

2023-07-03 22:26:53 46

原创 Go 匿名返回值的坑——这道题据说 90% 的同学都答错了!

今天分享 Go 的语言特性——命名、匿名返回值!据说 90% 的同学都答错了,你答对了吗?快进来试试看!

2023-07-03 21:21:05 38

原创 正确处理 CSV 文件的引号和逗号

CSV(Comma-Separated Values,逗号分割值),就是用纯文本的形式存储表格数据,最大的特点就是方便。但是你真的会处理 CSV 文件吗?数据包含引号或逗号,该怎么办?

2023-07-02 16:27:07 1789 2

原创 Golang 中文转拼音

翻遍整个 GitHub , Golang 中文转拼音类库, 怎么就这么难找呢? 于是我造了一个轮子: 中文转拼音类库. 目前来说应该是最好用的了.

2023-07-02 15:15:34 235

原创 最为常用的Laravel操作(3)-模板

整理了 Laravel 框架模板最常用的操作,如模板常用语法、模板继承、流程控制、循环等。本系列共有 3 篇文章。

2023-07-01 21:41:29 67

原创 最为常用的Laravel操作(2)-路由

整理了 Laravel 框架路由最常用的操作,如路由参数、路由群组、中间件等。本系列共有 3 篇文章。

2023-07-01 20:28:46 60

原创 最为常用的Laravel操作(1)-Eloquent模型

整理了 Laravel 框架 Eloquent 模型最常用的操作,包括一些常用的属性、方法,模型关联等。本系列共有 3 篇文章。

2023-06-30 23:45:08 258

原创 浅析布隆过滤器

布隆过滤器 (Bloom Filter) 是 1970 年由布隆提出的。它可以检索一个元素是否存在于集合中。它的优点是空间效率高,查询时间极快,缺点是有一定的误判率,而且删除困难。

2023-06-29 23:27:31 67

原创 Redis的设计与实现-总结

个人真的很喜欢这本书, 从对C语言一窍不通, 到发现C语言竟然如此简洁, 以至于我喜欢上了C! 整体的感悟吧, 觉得 Redis 的作者, 对每一块内存非常吝啬……

2023-06-28 23:28:46 22

原创 Redis的设计与实现(6)-压缩列表

压缩列表 (ziplist) 是列表键和哈希键的底层实现之一. 当一个列表键只包含少量列表项, 并且每个列表项要么是小整数值, 要么是长度比较短的字符串, Redis 会用压缩列表做列表键的底层实现.

2023-06-27 23:40:59 166

原创 Redis的设计与实现(5)-整数集合

整数集合(intset)是集合键的底层实现之一: 当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现.

2023-06-26 21:51:07 25

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除