随笔分类 - Golang
摘要:数组、切片(包括字符串):“append” 方法的机制 原文 介绍 数组是编程语言中最常见的一个概念。数组看起来很简单但却有许多问题需要在加入编程语言中解答,比如: 固定大小还是可变大小? 大小作为类型的一部分吗? 多维数组应该是什么样子? 空数组有意义吗? 这些问题的答案会影响数组是否只是语言的一
阅读全文
摘要:RPC RPC(Remote Procedure Call: 远程过程调用)是一个计算机通信协议,该协议允许运行于一台计算机的程序调用另一个地址空间(通常为一个开放网络的一台计算机)的子程序,而程序员就像调用本地程序一样,无需额外地为这个交互作用编程(无需关注细节)。 gRPC gRPC 一开始由
阅读全文
摘要:1. 安装cron go get -u github.com/robfig/cron 2. 先看一个例子 这个例子将会每秒钟打印 一次hello world package main import ( "fmt" "github.com/robfig/cron" "time" ) func main
阅读全文
摘要:1. 为什么使用zap 因为它很快,而且我写不出比他更快的日志库😭 当然他还有其他优点,比如:它同时提供了结构化日志记录和printf风格的日志记录 2. 安装zap go get -u go.uber.org/zap 3. 配置zap zap提供两种日志记录器,如下表 名称 优点 缺点 Suga
阅读全文
摘要:项目地址:https://github.com/spf13/viper 安装方式:go get github.com/spf13/viper 简介 viper是一个十分强大的配置文件解析工具,具有以下特点 设置默认值 支持的文件包括JSON, TOML, YAML, HCL, envfile 和 J
阅读全文
摘要:对比其他语言 其他语言比如Python用的是try Except finally的方式来进行异常处理,执行逻辑是:尝试执行一段代码,如果发生异常则执行...无论是否发生异常都执行...;相比起来go语言的异常处理就简单许多,因为程序中的异常基本上都是可预期的,所以GO语言处理异常的方式是返回这个异常
阅读全文
摘要:堆排序算法流程 将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了 大顶堆:arr[i] >= arr[2i+1] && arr[i
阅读全文
摘要:归并排序算法流程 并归排序采用的是分治的思想,先将乱序的数组逐级拆分成一个个小部分,最底层每个部分长度为一(各个部分视为有序),然后在将有序的部分按照完全二叉树两两合并逐级往上,直到排序结束 参考如下图片(来源:https://www.cnblogs.com/chengxiao/p/6194356.
阅读全文
摘要:在golang中channel用于goroutine之间的通信,在阅读这篇文章之前,我已经默认你已经熟悉了(至少了解了)goroutine 1. channel的定义 channel是引用类型,需要实用make来创建channel,如下 make(chan Type, [buffer]) make对
阅读全文
摘要:快速排序算法流程 选定一个基准值(任意选,以第一个为例) 定义左右指针指向左右两端 左指针往右移动,如果遇到大于基准值的数就把它和右指针的值调换位置,然后左指针不动,右指针开始向左移动,如果遇到小于基准值的数就把他和左指针的值调换位置,然后开始移动左指针,以此类推,知道左右指针相遇 递归上述过程知道
阅读全文
摘要:谈谈golang中的引用类型与地址分配 go语言中的 (我更愿意称其为 )其实就是 ,比如 ,`map channel int`...) 要实用这些(存放地址的)类型之前就必须要为其分配 .下面我一一举例说明一下(以下操作均在函数内部操作,意味着可以使用 来声明定义变量) 1. 值类型的指针形式 以
阅读全文
摘要:1. 下载go 下载后系统会将 安装在 目录下 2. 配置一些环境变量 一共需要三个环境变量,分别为: 1. GOROOT go语言安装目录 2. GOPATH go语言工作区 3. GOBIN 存放go语言可执行文件目录 先创建一个目录用作go语言的工作区 然后创建一个目录存放可执行文件 为了随地
阅读全文

浙公网安备 33010602011771号