摘要: 1. 为什么使用zap 因为它很快,而且我写不出比他更快的日志库😭 当然他还有其他优点,比如:它同时提供了结构化日志记录和printf风格的日志记录 2. 安装zap go get -u go.uber.org/zap 3. 配置zap zap提供两种日志记录器,如下表 名称 优点 缺点 Suga 阅读全文
posted @ 2020-07-17 21:57 KainHuck 阅读(2586) 评论(0) 推荐(1) 编辑
摘要: 项目地址:https://github.com/spf13/viper 安装方式:go get github.com/spf13/viper 简介 viper是一个十分强大的配置文件解析工具,具有以下特点 设置默认值 支持的文件包括JSON, TOML, YAML, HCL, envfile 和 J 阅读全文
posted @ 2020-07-12 15:19 KainHuck 阅读(3471) 评论(0) 推荐(1) 编辑
摘要: 对比其他语言 其他语言比如Python用的是try Except finally的方式来进行异常处理,执行逻辑是:尝试执行一段代码,如果发生异常则执行...无论是否发生异常都执行...;相比起来go语言的异常处理就简单许多,因为程序中的异常基本上都是可预期的,所以GO语言处理异常的方式是返回这个异常 阅读全文
posted @ 2020-06-18 09:11 KainHuck 阅读(858) 评论(0) 推荐(0) 编辑
摘要: 获取文件信息 FileInfo接口 在os包中有一个FileInfo接口它包含了一个文件的基本信息,如下 // A FileInfo describes a file and is returned by Stat and Lstat. type FileInfo interface { Name( 阅读全文
posted @ 2020-06-16 22:10 KainHuck 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 堆排序算法流程 将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了 大顶堆:arr[i] >= arr[2i+1] && arr[i 阅读全文
posted @ 2020-05-27 14:06 KainHuck 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 堆排序算法流程 将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了 大顶堆:arr[i] >= arr[2i+1] && arr[i 阅读全文
posted @ 2020-05-27 13:38 KainHuck 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 快速排序算法流程 选定一个基准值(任意选,以第一个为例) 定义左右指针指向左右两端 左指针往右移动,如果遇到大于基准值的数就把它和右指针的值调换位置,然后左指针不动,右指针开始向左移动,如果遇到小于基准值的数就把他和左指针的值调换位置,然后开始移动左指针,以此类推,知道左右指针相遇 递归上述过程知道 阅读全文
posted @ 2020-05-26 16:01 KainHuck 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 归并排序算法流程 并归排序采用的是分治的思想,先将乱序的数组逐级拆分成一个个小部分,最底层每个部分长度为一(各个部分视为有序),然后在将有序的部分按照完全二叉树两两合并逐级往上,直到排序结束 参考如下图片(来源:https://www.cnblogs.com/chengxiao/p/6194356. 阅读全文
posted @ 2020-05-26 15:27 KainHuck 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 归并排序算法流程 并归排序采用的是分治的思想,先将乱序的数组逐级拆分成一个个小部分,最底层每个部分长度为一(各个部分视为有序),然后在将有序的部分按照完全二叉树两两合并逐级往上,直到排序结束 参考如下图片(来源:https://www.cnblogs.com/chengxiao/p/6194356. 阅读全文
posted @ 2020-05-26 15:08 KainHuck 阅读(491) 评论(0) 推荐(0) 编辑
摘要: 在golang中channel用于goroutine之间的通信,在阅读这篇文章之前,我已经默认你已经熟悉了(至少了解了)goroutine 1. channel的定义 channel是引用类型,需要实用make来创建channel,如下 make(chan Type, [buffer]) make对 阅读全文
posted @ 2020-05-26 14:12 KainHuck 阅读(2844) 评论(0) 推荐(0) 编辑