Go
76
1755. 最接近目标值的子序列和
由于量级在40,所以单纯的dfs会出问题,所以需要把数组一分为2。然后对得到的数组排序,然后问题就转变为求 2个数组的加和问题。数组排序
一个从大到小,一个从小到大。求最接近目标的值即可。func minAbsDifference(nums []int, goal int) int {ans := math.MaxInt32n := len(nums)m := map[int]bool{}dfs(nums[:n/2], 0, m)A := make([]int, 0,
46
归并排序的时间复杂度为:O(nlogn)
func HeapSort(data []int) []int {len := len(data)if len <=1 {return data}//将待排序的数组划分为左右2部分,递归的进行mid :=len/2left :=data[:mid]right :=data[mid:]left= HeapSort(left)right= HeapSort(r
43
手撸golang etcd raft协议之6
缘起
最近阅读 [云原生分布式存储基石:etcd深入解析] (杜军 , 2019.1)
本系列笔记拟采用golang练习之
gitee: https://gitee.com/ioly/learning.gooop
raft分布式一致性算法
分布式存储系统通常会通过维护多个副本来进行容错,
以提高系统的可用性。
这就引出了分布式存储系统的核心问题——如何保证多个副本的一致性?Raft算法把问题分解成了四个子问题:
1. 领袖选举(leader election)
128
title: "Go各时间字符串的解析"
date: 2021-02-28T09:08:19+08:00
draft: true
tags: ['go']
author: "dadigang"
author_cn: "大地缸"
personal: "http://www.real007.cn"关于作者
http://www.real007.cn/about
Go各时间字符串的解析Go 中时间格式化的模板
const (ANSIC = "Mon Jan _2 15:04:05 2006"Unix
66
关于我
我的博客|文章首发
顾名思义,go-homedir用来获取用户的主目录。实际上,通过使用标准库os/user我们也可以得到内容,使用以下方式
标准库使用
package mainimport ("fmt""log""os/user"
)func main() {u, err := user.Current()if err != nil {log.Fatal(err)}fmt.Println("Home dir:", u.HomeDir)
}控制台输出
Home dir: C:\Users\Adm
157
3. Go语言数据类型
上篇我们介绍了Go语言的切片类型,本篇我们了解一下Go语言的字典类型。主要如下:
3.4 字典
在Go语言中,字典类型的官方称谓是Map, 它是哈希表(Hash Table)的一个实现。
3.4.1 类型表示法
如果一个字典类型的键的类型为K,且元素的类型为T,那么用于表示这个字典类型的类型字面量:
map[K]T
字典类型声明中的元素类型可以是任意一个有效的Go语言数据类型(除了函数类型、字典类型或切片类型)。键的类型必须是可比较的。如果字典类型的键类型是接口类型,那么就要求在程
416
背景
写一个接口认证的时候,密码需要通过SHA1+HMAC加密以后转base64,发现加密的结果不符合预期
问题
shell里面通过命令生成的字符串 golang生产的结果有差别
具体的说,shell 生产的base64传里面有'/',对应golang生产的是'_',例如下面案例
shell输出: NaY6swRy/2BgUPuVUAWEDlaWZ3s=
golang输出:NaY6swRy_2BgUPuVUAWEDlaWZ3s=原因golang base64 有不同方法进行encode/decode,可以
42
手撸golang etcd raft协议之5
缘起
最近阅读 [云原生分布式存储基石:etcd深入解析] (杜军 , 2019.1)
本系列笔记拟采用golang练习之
gitee: https://gitee.com/ioly/learning.gooop
raft分布式一致性算法
分布式存储系统通常会通过维护多个副本来进行容错,
以提高系统的可用性。
这就引出了分布式存储系统的核心问题——如何保证多个副本的一致性?Raft算法把问题分解成了领袖选举(leader election)、
日志复制(log