随笔分类 - Golang
1
golang language
摘要:新做的 Gateway 程序打算使用一个 maxmind 第三方库来解析地理信息,想了一下比较简单找了一个库直接使用。 项目跑了一天得到了一堆 panic,程序崩溃超过 1s 丢了不少数据。 从 stack 信息可以看到调用 amxminddb-golang 这个库的 readLeft 出现了错误,
阅读全文
摘要:最近多线操作同时在弄好几个项目,正好几个项目的 golang 版本又不太一样,于是在寻找类似 python vitualenv 或者 conda 的环境管理工具。 最开始找到的就是官方的解决方案 golang/dl, golang/dl 维护了自1.5 以来到当前最新版本 1.19 beta 的所有
阅读全文
摘要:背景 目前在做一个消息中台,提供给业务方各种消息通道能力。我们在系统设计过程中,除了有对业务方在使用时做 Quota 限制;也有对请求做流量控制(几w+ QPS),防止并发流量上来时打垮服务。下面是个人在调研流量控制方案的一些梳理和总结。 高并发解决方案概述 并发通常是指并发访问,也就是在某个时间点
阅读全文
摘要:虽然现在我们使用的大多数软件都是可视化的,很容易上手,但是这并不代表 CLI(命令行)应用就没有用武之地了,特别是对于开发人员来说,还是会经常和 CLI 应用打交道。而 Golang 就非常适合用来构建 CLI 应用,下面我们就将来介绍如何在 Golang 中构建一个 CLI 应用。 对于开发人员来
阅读全文
摘要:Golang提供了官方的http包,对于http操作非常的方便和简洁。但是不同于PHP,使用Golang的包来做http操作,还是没有那么”直接“,需要实例化一下这个,实例化一下那个,有点像Java,因此,为了以后书写方便,就把基本的请求写在此。下次用的时候,直接copy就好了。 get 请求 ge
阅读全文
摘要:package toolkit import ( "context" "gopkg.in/vansante/go-ffprobe.v2" "time" ) func GetMediaDurationByUrl(url string) float64 { ctx, cancelFn := contex
阅读全文
摘要:简介 这个实验要求我们使用 golang 自行实现一个支持并发和简单容错的 分布式 MR ,支持一个 master 多个 wokrer 的工作模式。 我做完实验之后去看了一下之前网上发布的一些 lab1 的作业。感觉今年是不是改版了?后来我去看了一下 2018 年的 lab1 作业,果然改版了。。。
阅读全文
摘要:接前文,除了广泛使用在快速排序中。Partition算法还可以很容易的实现在无序序列中使用O(n)的时间复杂度查找kth(第k大(小)的数)。 同样根据二分的思想,每完成一次Partition我们可以轻松的知道该位置前面有几个比自己小的数,后面有几个比自己大的数(或逆序相反)。所以也能知道自己是第几
阅读全文
摘要:最近像在看闲书一样在看一本《啊哈!算法》 当时在amazon上面闲逛挑书,看到巨多人推荐这本算法书,说深入浅出简单易懂便买来阅读。实际上作者描述算法的能力的确令人佩服。就当复习常用算法吧。 后面会依次纪录一下我觉得有意思的常用算法使用,这次就是快排。 快速排序简介: 快排的中心思想还是二分法,通过p
阅读全文
摘要:Golang计算md5值的方法都是接收byte型slice([]byte)。而且使用习惯上也觉得略奇怪。 看了好几个例子才看懂。 感觉Golang标准库在设计这些模块的时候,都会考虑使用带New关键字工厂生成一个该类型的结构体对象。然后再使用改对象的方法进行操作。 md5包就是这样,来看例子: 第一
阅读全文
摘要:使用了太长时间的python,对于强类型的Golang适应起来稍微有点费力,不过操作一次之后发现,只有这么严格的类型规定,才能让数据尽量减少在传输和解析过程中的错误。我尝试使用Golang创建了一个公司的OpenAPI的demo,记录一下中间遇到的问题。 编码(Encode)Json: 首先来看下如
阅读全文
摘要:整个看了一圈下来,感觉Golang的日志包在管理多线程安全的情况下,提供了最小粒度的工具。并没有提供什么复杂的过滤器之类的生成。 实现了一个demo来记录一下日志分类日志打印等实现: 其实给我感觉跟python没差,还简单很多。 首先还是申明一个logger对象,用他来调用各种logger的方法,一
阅读全文
摘要:其实最近看了不少Golang接口以及方法的阐述都有一个地方没说得特别明白。就是在Golang编译隐式转换传递给方法使用的时候,和调用函数时的区别。 我们都知道,在我们为一个类型变量申明了一个方法的时候,我们可以使用类似于self.method来调用这个方法,而且无论你申明的方法的接收器是指针接收器还
阅读全文
摘要:其实从上学开始就一直想写一个im。 最近深入go,真是学会了太多,感觉人森虽然苦短,但是也不能只用python。很多知识是不用编译型语言无法了解的。 该来的还是会来,现在会一步一步用go把这个服务器完善起来 先从这个demo开始。 这个demo 我们要求所有连上服务器的用户都会知道有用户的离开,有用
阅读全文
摘要:在学习《The Go Programming Language》第八章并发单元的时候还是遭遇了不少问题,和值得总结思考和记录的地方。 做一个类似于unix du命令的工具。但是阉割了一些功能,这里应该只实现-c(统计total大小) 和-h(以human比较容易辨识的显示出来)的功能。 首先我们需要
阅读全文
摘要:最近都在通过完成一些列功能强化自己对常用api的熟悉。 然而关于时间的api几乎是最常用的api类型,所以总结一些常用的。 以YY-mm-dd HH:MM:SS.9位 输出当前时间: 获取时间戳: 给定一个时间戳,返回一个标准datetime时间: 指定一个时间: 这里注意,Date初始化的时候最后
阅读全文
摘要:看到有个例子实现了一个类似于核弹发射装置,在发射之前还是需要随时能输入终止发射。 这里就可以用到cahnnel 配合select 实现多路复用。 select的写法用法有点像switch。但是和switch不同的是,select的一个case代表一个通信操作(在某个channel上进行发送或者接收)
阅读全文
摘要:Reference: https://gobyexample.com/string-formatting Go by Example: String Formatting https://play.golang.org/p/1-9cY_Q5eM
阅读全文
摘要:最近在系统的学习go的语法,一切都弄好了之后准备弄个im项目出来玩。在这个过程中会把看到有趣的写法和语法啥的拿出来分析一下。 我一直以为go语言对面向对象没有支持,但是后面看到了类似类的概念,method特性以及其接受参数的reciver。 使用method就可以将不同的函数和结构体联系起来。 其实
阅读全文
摘要:感觉位运算操作符虽然在平时用得并不多,但是在涉及到底层性能优化或者使用某些trick的时候还是比较有意思。 &(AND) |(OR) 就不提了最常用的东西 会编程就会。 &操作的话是当 两个数需要同时为1的时候才会保留。 例如 0000 0100 & 0000 1111 => 0000 0100 =
阅读全文
1