golang
2022-01-05
271
需求概述go.uber.org/zap 日志包性能很好,但是用起来很不方便,虽然新版本添加了 global 方法,但仍然别扭:zap.S().Info()。现在我们的需求就是将 zap 的 sugaredLogger 封装成一个包,让它像 logrus 一样易用,直接调用包内函数:log.Info()。我们只需要找到`SugaredLogger这个 type 拥有的 Exported 方法,将其改为函数,函数体调用其同名方法:func Info(args ...interface{}) {_globalS
2022-01-05
97
golang 读写锁 sync.RWMutex
之前的博客讲了使用互斥锁 sync.Mutex 来保证同一个时刻只有一个goroutine可以访问临界区(内部有共享变量)。当时更多时候,goroutine不是要修改共享变量,只是要读取就行,而互斥锁是完全互斥的。针对这种情况,golang中提供了读写锁 **sync.RWMutex ** ——它 不限制资源的并发读,但是读写、写写操作无法并行执行,这种锁叫作“多读单写”锁(multiple readers, single writer lock)。写操作使
2022-01-05
182
下载golang安装包,解压后在安装包目录下输入命令sudo cp -r ./go usr/local在home目录创建 gowork文件夹cd /home
mkdir gowork
cd gowork
mkdir bin src pkg配置 ~/.bashrc 和 /etc/profile 在最后一行加入以下内容(发现只配置/etc/profile只在当前窗口有效,配置完成后source一下,重启确认一下):# golang setting
export GOROOT=/usr/local/go
exp
2022-01-05
41
title: "Golang学习笔记for循环语句"
date: 2021-02-09T23:33:13+08:00
draft: true
tags: ['go']
author: "dadigang"
author_cn: "大地缸"
personal: "http://www.real007.cn"关于作者
http://www.real007.cn/about
Golang学习笔记(九)for循环语句
Golang的for相较于java,并不需要使用()括起来,基础for循环格式为for 变量赋值
2022-01-05
35
手撸golang 基本数据结构与算法 栈
缘起
最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一)
本系列笔记拟采用golang练习之
栈
栈(也叫堆栈)也是一种数据呈线性排列的数据结构,
不过在这种结构中,
我们只能访问最新添加的数据。栈就像是一摞书,
拿到新书时我们会把它放在书堆的最上面,
取书时也只能从最上面的新书开始取。像栈这种最后添加的数据最先被取出,
即“后进先出
2022-01-05
39
序本文主要研究一下dubbo-go-proxy的ZookeeperRegistryLoadLoaderdubbo-go-proxy/pkg/registry/load.go// Loader this interface defined for load services from different kinds registry, such as nacos,consul,zookeeper.
type Loader interface {// LoadAllServices load all serv
2022-01-05
36
手撸golang 基本数据结构与算法 栈缘起最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一)本系列笔记拟采用golang练习之栈栈(也叫堆栈)也是一种数据呈线性排列的数据结构,
不过在这种结构中,
我们只能访问最新添加的数据。栈就像是一摞书,
拿到新书时我们会把它放在书堆的最上面,
取书时也只能从最上面的新书开始取。像栈这种最后添加的数据最先被取出,
即“后进先出”的结构,
2022-01-05
40
手撸golang 基本数据结构与算法 链表
缘起
最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一)
本系列笔记拟采用golang练习之
链表
链表是数据结构之一,其中的数据呈线性排列。
每个数据节点都有1个“指针”,它指向下一个数据的内存地址。访问数据时,我们需要从链表头部开始查找(线性查找),
如果目标数据在链表最后的话,需要的时间就是O(n)。另外,添加数据只需要更改