赞了文章2021-01-12
同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。
发布了文章2021-01-02
而在 Go 语言中这似乎成为了难题,在 stackoverflow 上搜索 [go] Round 会存在大量相关提问,Go 1.10 开始才出现 math.Round 的身影,本以为 Round 的疑问就此结束,但是一看函数注释 Round returns the nearest integer, rounding half away from zero ,这是并不常...
发布了文章2021-01-01
官方描述 Once is an object that will perform exactly one action, 即 Once 是一个对象,它提供了保证某个动作只被执行一次功能,最典型的场景就是单例模式,Once 可用于任何符合 "exactly once" 语义的场景。
赞了回答2019-12-03
stackoverflow上有个几乎相同的问题:[链接] 代码就是这样了: {代码...}
发布了文章2019-10-31
最近我在 Go Forum 中发现了 String size of 20 character 的问题,“hollowaykeanho” 给出了相关的答案,而我从中发现了截取字符串的方案并非最理想的方法,因此做了一系列实验并获得高效截取字符串的方法,这篇文章将逐步讲解我实践的过程。
发布了文章2019-07-21
我们业务每天需要记录大量的日志数据,且这些数据十分重要,它们是公司收入结算的主要依据,也是数据分析部门主要得数据源,针对这么重要的日志,且高频率的日志,我们需要一个高性能且安全的日志组件,能保证每行日志格式完整性,我们设计了一个类 csv 的日志拼接组...
回答了问题2019-07-12
{代码...} 代码输出: {代码...} Number 类型你可以增加任意方法,实现自己的需求,也可以把所有的数据都转成字符串方便访问
回答了问题2019-07-12
for range 循环的时候获取 key 和 value 的指指针是不明智的,这两个变量会在循环开始就初始化了,每次循环之后修改其值,获取指针永远都会是同一个
回答了问题2019-07-12
{代码...} 程序输出: {代码...}
回答了问题2019-07-12
数据库连接是半双工的,就是说只能发送一个指令(sql),然后获得结果,在获得结果之前不能再发送新的指令,如果只有一个连接,连续查询没有等到前面查询结果返回(不知道前面有没有查询)就会出错,如果加锁,并发性能肯定很差,不知道为啥不想用连接池,所有的网络...
回答了问题2019-07-12
方案一:你这个时间是基于当前时间之前多少分钟的数据,从你描述的业务场景来看,写比较少,主要是读比较大,建立一个5分钟缓存的数据,从中获取最大价格的数值,这个会涉及一些数据结构,来缓存数据,便于剔除过期的数据和查找最大价格的数据,在读取的时候完全从缓...
发布了文章2019-07-08
上一篇文章《使用压缩文件优化io (一)》中记录了日志备份 io 优化方案,使用文件流数据压缩方案优化 io 性能,效果十分显著。这篇文章记录数据分析前置清洗、格式化数据的 io 优化方案,我们有一台专用的日志前置处理服务器,所有业务日志通过这台机器从 OSS 拉取回...
发布了文章2019-06-30
最近遇到一个日志备份 io 过高的问题,业务日志每十分钟备份一次,本来是用 Python 写一个根据规则扫描备份日志问题不大,但是随着业务越来越多,单机上的日志文件越来越大,文件数量也越来越多,导致每每备份的瞬间 io 阻塞严重, CPU 和 load 异常的高,好在备份速...
发布了文章2019-03-28
用户请求到达提供服务的服务器中间有很多的环节,导致服务获取用户真实的 ip 非常困难,大多数的框架及工具库都会封装各种获取用户真实 ip 的方法,在 exnet 包中也封装了各种 ip 相关的操作,其中就包含获取客户端 ip 的方法,比较实用的方法如下:
发布了文章2019-03-25
IP 地址库中 IP 地址的保存格式一般有两种,一种是点分十进制形式(192.168.1.1),另一种是数字形式(3232235777),应用中,经常需要在这两种格式之间做转换。
发布了文章2019-03-22
原文链接:[链接] 最近发现技术交流群里很多人在询问 go get 墙外包失败的问题,大家给了很多解决方案: 从 Github 的代码库 clone 设置 GOPROXY 环境变量配置代理, 例如:GOPROXY=[链接] 配置命令行代理,https_proxy 环境变量 使用 go mod replace 使用 Gopm 类似...
关注了问题2019-03-21
赞了回答2019-03-21
可以利用channel关闭goroutine不阻塞特性来实现: 下面的代码可以实现你的需求,只是没有写key被多次写入的判断逻辑。 {代码...}
发布了文章2019-03-19
内置的数值类型有:uint8、 uint16、 uint32、 uint64、 uint、 int8、 int16、 int32、 int64、 int。
回答了问题2019-03-08
m := [...]int{7: 7}[3:] [3:] 这种操作只能作用在变量上, 即已经存在内存地址的数据上, 而 [...]int{7: 7} 在赋值给变量前本身地址是不确定的,需要提前赋值给变量,之后才可以使用 [3:] 这样的操作。