golang
(156)golang 实现蓝牙体征监测设备数据上报及存储的频率控制
## 需求背景
蓝牙体征检测设备的初始上报频率非常高,单台每秒 370 个数据包。
需要通过通过服务器向蓝牙网关下发禁止波形数据的指令,禁用掉无用数据的上报。
有两个禁用策略:
- 定时下发禁用指令。例如每十秒
- 收到波
调用百度翻译接口自动为文章标题生成网址 slug
## TODO
- [X] 中文: 调用翻译接口
- [X] 英文: 无需处理,参考 php 里的处理,拼接,去掉指定词
- [X] 权限控制:仅限 admin 后台调用
- [X] 翻译 api
- [X] slug api:
升级 gopls 到最新版本
写了一段单元测试的代码,在 vim 中提示错误
```
func TestGenSlug(t *testing.T) {
assert.Equal(t, "hello-world", genSlug("Hello World")
golang 解析 byte slice 类型的 MQTT 消息 payload
## MQTT Message payload 的类型
可以看到 payload 函数返回 byte slice 类型。
```
var f mqtt.MessageHandler = func(client mqtt.Clien
订阅 MQTT 主题后,防止 go 程序退出 main
for 循环会彪 CPU,不好。找了一个 channel 的实现有效解决了这一问题。
## 实现代码
```
import (
"os"
"os/signal"
"syscall"
)
f
MQTT go 客户端发布消息
为了方便客户端测试,搭建好 [EMQX 服务](/mqtt-broker-open-source-implementation-emqx)之后,需要用 golang 写一个发布消息的测试程序。
用于向指定主题推送消息,这样客户端可以提前测
gin 服务线上没有 systemd 日志的问题
## 原配置
```
StandardOutput=append:/some_path/log/access.log
StandardError=append:/some_path/log/err.log
```
我确认了目录
gofmt, golint, gopls, govet 的区别
ALEInfo 显示,目前用 NeoVim 打开 go 代码文件时,默认启用了 4 个 linter:
> Enabled Linters: ['gofmt', 'golint', 'gopls', 'govet']
其引起的不
go warnning: composite literal uses unkeyed fields
在启用了 NeoVim ALE 语法检测插件之后,我发现自己的代码到处都是各种警告,无论是 JS 还是 Go。
而 Go 代码中经常出现的警告信息就是 composite literal uses unkeyed fields。
例
go build tag 实现开发环境与生产环境采用不同的 embed.FS 策略
[通过 go embed.FS 将 gin 模板及静态资源文件打包进二进制程序](/gin-embed-fs-compile-static-template-files-into-binaries)
确实非常方便在服务器上部署、更新程序,