文章
全部技术笔记,按发布时间排序。
容器资源可见性问题与 GOMAXPROCS 配置
Go 程序启动时候会根据 CPU 数量设置 GOMAXPROCS,比如下面的程序中在 8 核处理下输出为 8。 当我们使用 Docker 的时候也是如此,不过当我们使用 docker run 的时候同时限制了 CPU 数量,那么程序中会正常显示吗? 不会,比如 docker run --cpus=2 IMAGE,输出还
Go: 显式声明某个类型实现了一个接口
Go 中没有面向对象的 implements 关键字,一个类型实现了一个接口是隐式的。 其实显式声明主要为了让编译器提前判断接口是否被实现而已。 所以在 Go 中还是有很多方式的。 如下所示 \UserCacher 实现了 Cacher 接口 为了让编译器提前判断的话,可这样做: 或者在一个“构造函数”内实现:
分享:你可能不知道的Go
本文是根据我在公司分享的《你可能不知道的 Go(上)》而整理的文章 本次分享的主题是《你不知道的 Go》,其实这个名称来源自《你不知道的 JavaScript》这本书,当然起这个名字有些“妄自尊大”,再者这次分享确实没有什么“高大上”的内容,只是一些大部分初学者不会注意到的盲点,所以之后我就改名为《你可能不知道的 Go
Win10 Chrome播放视频非常卡顿?
最近我发现用 WindowsChrome 的时候,播放视频非常卡顿,视频就像一帧一帧的播放一样,但是 Mac 下没有这样的问题。 找了好久的解决方案,重装 Chrome,禁用所有 Chrome 插件,安装新显卡驱动都试过,都没解决。 最后我尝试禁用了 Chrome 的硬件加速功能,没想到解决了。 最后给出具体解决方式:
MySQL upsert操作
upsert 操作是说如果这条记录存在(含有 unique key 或 primary key 的字段存在)那么就更新,否则就插入一条新的记录。 首先创建一张新表,包含一个主键约束 id 然后插入多条数据: 如果现在要插入 id 为 2 的记录,那么就会报错: 如果简单改一下,就不会报错了: 或者将 update 设置
如果你忘了你的云服务器登录密码
如果你忘了云服务器的密码,有没有简单的方式找回? 有,前提是你设置了公钥登录以及可以使用 docker。 以 ubuntu 为例,只需要两步: 然后输入你的密码就可以了。 这是为啥?因为 Docker 守护进程需要 root 权限,所以操作 docker 就可以直接使用 root 来操控系统。只要这里对系统配置相关的内
最简单的方式使用最新开发分支的Golang编译器
使用如下的命令: 比如这里我就使用了 go1.13 的未发布的最新编译器,那么就可以使用一些 go1.13 才有的功能。 比如下面的数字分隔符: 然后使用 gotip run main.go 就可以了。
Go: 使用 build tag 来自定义构建配置
通常我们会给每个产品环境设置不同的配置,比如 redis 要在开发环境就连接 localhost:6379,测试环境可能连接某一个主机的 redis。 配置文件通常会使用 env 或者 yml。这样每次构建包放在不同的环境就需要手写一套配置,开发也需要向运维提供配置文档。 最近在一直在用 python,项目通常都是使用
Python模块和包管理
模块和包 在 Python 中每一个 .py 都可以视作一个模块(module),而每一个包含 init.py 的目录则可以视作包(packge)。 如下所示,packs 因为包含 init.py 而可以看做是一个包,而 packs/one.py 则是一个模块。 在 one.py 中简单定义了一个函数 One: 如果我
减少 Go 构建文件大小的简单策略
由于 go 编译程序自带运行时,所以一个简单的 hello,world 程序也会超过 1M 的大小 构建并查看编译后文件大小 最近我发现一个技巧,通过加入 ldflags 指令就可以减少构建大小。 减少了 400K 左右。 在 go link 文档中有 ldflags 的指令详细说明,这里就是说把 debug 信息全部