
golang
Diamond-Mine
个人公众号《后台开发探索之旅》
展开
-
全排列 & 任意排列 & 任意组合 & 笛卡尔积 算法
排列和组合的区别:排列:要求顺序,比如 [1,2] 和 [2,1] 是两个不同的排列 组合:不要求顺序,比如 [1,2] 和 [2,1] 是两个相同的组合全排列:给定n个数,返回长度为n的所有排列 比如 [1,2,3] 的全排列是[[1 2 3] [1 3 2] [2 1 3] [2 3 1] [3 1 2] [3 2 1]] 可采用回溯法,遍历n叉树,得到所有路径任意长度的排列:给定n个数,返回任意长度的所有排列 比如 [1,2,3] 的任意长度的排列是[[1] [1 2] [..原创 2021-04-06 11:39:38 · 1930 阅读 · 0 评论 -
链表反转 - 链表排序 算法
链表反转:想象有1个新链表,每次从旧链表取出一个元素,然后插入到新链表的头部链表排序:先将链表拆分为2个子链表 使用快慢指针,快指针每次走2步,当快指针走到尾部时,慢指针即在中间位置 对2个子链表递归排序,返回2个有序的子链表 合并2个有序子链表package mainimport ( "fmt")type node struct { next *node value int}func newNode(x int) *node { return &n原创 2021-04-02 15:18:24 · 279 阅读 · 0 评论 -
简单好记的二分查找边界算法
先上代码package mainimport ( "fmt")func binarySearch(nums []int, left, right, target int) (targetPos, leftPos, rightPos int) { for left <= right { mid := left + (right-left)/2 if nums[mid] == target { leftPos, rightPos, targetPos = left, ri原创 2021-03-31 11:26:07 · 586 阅读 · 0 评论 -
github 443超时问题解决
错误描述:fatal: unable to access 'https://github.com/xxx': Failed to connect to github.com port 443: Operation timed out解决方法:(1)准备tizi,确保可以正常访问外网(2)查看tizi工具的https端口号,比如 1234(3)设置git https代理,本机命令行执行:git config --global https.proxy "127.0.0.1:1234"(.原创 2021-03-12 15:57:21 · 7478 阅读 · 0 评论 -
go泛型简单例子
先上代码:package mainimport ( "fmt")type Lesser[T any] interface { Less(y T) bool}func Sort[Elem Lesser[Elem]](list []Elem) []Elem { for i := 0; i < len(list)-1; i++ { for j := 0; j < len(list)-1-i; j++ { if !list[j].Less(list[j+1]) {原创 2021-02-23 15:56:08 · 480 阅读 · 0 评论 -
gofunc - 简单好用的go test工具
gofunc简单好用的go test工具使用场景用于快速测试某个函数或表达式,比如有个函数用于删除slice里的一个元素:func DeleteSliceInt(data []int, i int) []int { return append(data[:i], data[i+1:]...)}正常的单元测试需要新建 xxx_test.go 文件,编写 Testxxx 函数,这...原创 2020-04-15 14:44:31 · 572 阅读 · 0 评论 -
redis cluster集群批量执行命令工具
github地址:https://github.com/throne-developer/redis_cluster_multi_op对redis集群执行批量操作,解决redis集群不能使用pipeline的问题。使用方法: (1)修改config.json,设置redis集群的ip列表和密码,以及要执行的命令文件路径{ "redis_addrs":[ ...原创 2020-03-27 18:21:35 · 539 阅读 · 1 评论 -
golang处理json转义符 \u0026
设置json序列化不转义func JSONMarshal(t interface{}) ([]byte, error) { buffer := &bytes.Buffer{} encoder := json.NewEncoder(buffer) encoder.SetEscapeHTML(false) err := encoder.Encode(t) return buff...原创 2020-02-26 19:16:40 · 24556 阅读 · 0 评论 -
redis跳表之golang实现(1)
欢迎关注公众号《后台开发探索之旅》。有序集合日常开发经常需要对数据进行排序,针对不同的场景,采用特定的排序方法,比如:(1)数组排序:将数值存入数组中,对数组进行冒泡、快排等排序方法,得到一个有序数组(2)二叉搜索:构造二叉平衡树,从根结点开始向左向右搜索,每次查找规模减半,最终找到目标节点(3)最小根堆:同样将数值存入数组中,对数组进行堆排序,保持最小值始终在堆顶,从而得到...原创 2019-05-17 14:15:50 · 630 阅读 · 0 评论