文章
全部技术笔记,按发布时间排序。
Go: 一个 JSON 切分成两个对象
MySQL 默认忽略内联外键定义的坑
创建一个省份表 然后 User 表中的 province 字段关联省份表的 pid 字段 这一步没有报错。 但是查看 users 表中的所有索引时 只有 uid 主键的索引定义! 这十分奇怪啊,然后我又查找了标准 SQL 语法,我这里的定义并没有错误。 之后我尝试了不使用内联的方式,然后就成功了! 然后找了 MySQL
[翻译] Go switch 关键字
Switch 规范: https://golang.org/ref/specSwitchstatements Spec: https://golang.org/ref/specSwitchstatements Golang 的 switch 关键字十分灵活,比如说,你不需要像 C++、Java 等需要明确 break
给 localhost 签发 https 证书
本文介绍一个可以给 localhost 签发 https 证书的工具 mkcert,而且使用特别简单。 工具下载地址: https://github.com/FiloSottile/mkcert/releases/latest 或者工具包管理工具: 然后两步就可以生成 localhost 证书 这样就可以给 local
solidity v0.5.0 主要破坏性更新示例
强制显式声明函数可见性 默认可见性声明被废弃,所有的函数和构造函数不再隐式声明 public,必须手动加上 public。而 fallback 和接口函数需要强制加上 external。 强制显式指定复合型数据类型位置 结构体、数组、映射等复合型数据需要指定数据位置,包括函数参数和返回值。另外 external 函数中
Go: 判断空字符串的性能比较
字符串在 Go 内部中是一个结构体,一个字段记录长度,一个字段记录指针位置。 判断字符串为空最常见的是 data == "" 这样,之前我认为这里分配了一个空字符串会占用分配的时间,所以我把一些判断都改成了 len(data) == 0 这样就不用分配一个空字符串的空间了,效率应该会提升。 但最近我在 Go 源码中看到
await 技巧
不要在同步函数使用 await async/await 可以接受同步函数,相当于 await Promise.resolve ,今天在个异步流程中发现一个同步函数使用了 await ,结果上没什么区别,但是会有性能损失。 性能对比: 不要使用 return await fn() 最近评审代码发现 return awai
Go: 声明即初始化
因为分离编译的原因,在 C++ 中声明和定义是不同的概念。在其它语言中,定义和声明几乎没有区别。 C++ 默认初始化的规则是在函数外定义的变量拥有初始值,而在函数内部没有。c++ 就是这么多规矩。如果不注意的话就会运行时错误。 在 JavaScript 因为动态类型的原因并不能默认初始化,所有变量未赋值则为 undef
go generate 预处理器教程
通常编译 protobuf 会使用 protoc 手动编译,更好一点可以写一个 Makefile 指令来做。 不过在 Go 中提供一种在源文件定义类似 Makefile 指令 generate。当运行 go generate 后,编译器会找到所有包含 //go:generate command argument...
redis 安装清单
redis 推荐使用在 linux 下安装。 下载编译 打开 https://redis.io/download 选择稳定版本下载,按照下列方式进行编译安装。 最后使用 which 命令就可以看到 redis-cli 被安装到 /usr/local/bin/redis-cli 使用配置文件启动 创建一个 redis/6