随笔分类 -  golang

摘要:go如何实现深拷贝? 序列化和反序列化 import ( "bytes" "encoding/gob" "fmt" ) func deepCopy(dst, src interface{}) error { var buf bytes.Buffer if err := gob.NewEncoder( 阅读全文
posted @ 2022-06-11 23:00 海拉尔 阅读(388) 评论(0) 推荐(0)
摘要:有序数组每个数平方后,不同数字的个数,时间O(n) 空间O(1) (byte) 给你一个有序整数数组,数组中的数可以是正数、负数、零,请实现一个函数,这个函数返回一个整数:返回这个数组所有数的平方值中有多少种不同的取值。举例: nums = {-1,1,1,1}, 那么你应该返回的是:1。因为这个数 阅读全文
posted @ 2022-06-07 14:58 海拉尔 阅读(138) 评论(0) 推荐(0)
摘要:随便写个获取二叉树后续遍历的值,结果让我很疑惑 初始方式 ``` func postorderTraversal(root *TreeNode) []int { res:=make([]int,0) if root==nil{ return res } dfs(root,res) return r 阅读全文
posted @ 2021-09-04 12:04 海拉尔 阅读(443) 评论(0) 推荐(0)
摘要:随机value 防止释放其他服务的锁 不可重入分布式锁 import ( "crypto/rand" "encoding/base64" "errors" "fmt" "github.com/go-redis/redis/v7" "time" ) //分布式锁实现(不可重入) type RedisL 阅读全文
posted @ 2021-06-02 23:37 海拉尔 阅读(252) 评论(0) 推荐(0)
摘要:/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func detectCycle(head *ListNode) *ListNode { if he 阅读全文
posted @ 2021-01-07 13:52 海拉尔 阅读(65) 评论(0) 推荐(0)
摘要:package main import ( "fmt" "reflect" ) type Reflect struct { Name string `json:"name" test:"tag"` PassWord string Three int } func (m Reflect)Hello(v 阅读全文
posted @ 2021-01-05 18:27 海拉尔 阅读(1905) 评论(0) 推荐(0)
摘要:golang LRU package main type Node struct { Key,Value int //双链表 Pre,Next *Node } type LruCache struct { //现有元素数量 Size int //lru容量 Capacity int //map存储链 阅读全文
posted @ 2021-01-05 11:26 海拉尔 阅读(492) 评论(0) 推荐(0)
摘要:func main() { require:=make(chan int,5) for i:=0;i<5;i++{ require<-i } close(require) //设置定时器控制读取速率 ti:=time.Tick(time.Duration(1)*time.Second) //直接ra 阅读全文
posted @ 2021-01-05 09:59 海拉尔 阅读(1140) 评论(0) 推荐(0)
摘要:package main import ( "fmt" ) //可以在初始化时自定义 const Size =10 type Node struct { Val int Next *Node } //结构体指针数组 type Table struct { Array []*Node //value个 阅读全文
posted @ 2021-01-02 14:27 海拉尔 阅读(567) 评论(0) 推荐(0)
摘要://leetcode submit region begin(Prohibit modification and deletion) /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next 阅读全文
posted @ 2020-12-30 16:44 海拉尔 阅读(273) 评论(0) 推荐(0)
摘要:记录些可能没什么用的问题 func main() { var k = 1 var s = []int{1, 2} k, s[k] = 0, 3//先计算左边 k = 1,s[k]中k为1,再把右边赋值,k=0,s[1]=3 fmt.Println(s[0] + s[1]) } 结果为4 2.可能笔试 阅读全文
posted @ 2020-12-30 14:38 海拉尔 阅读(73) 评论(0) 推荐(0)
摘要:package main import "fmt" const Size = 10 //循环队列 type queue struct { Array []int Front int Rear int } //初始化 func QueueInit()queue { return queue{ Arra 阅读全文
posted @ 2020-12-30 14:16 海拉尔 阅读(437) 评论(0) 推荐(0)
摘要:这些细节实际项目中未必会用到,可能可读性较差 defer函数用到变量时,变量已经定义,这个分两种情况,是否闭包, 闭包使用引用,最后到defer执行时,可能变量已经被改变。 return发生分为两步,第一步给返回值赋值,例如 return res 先给res赋值,再执行defer函数,最后返回。 以 阅读全文
posted @ 2020-09-27 18:38 海拉尔 阅读(1076) 评论(0) 推荐(0)
摘要:上半部分参考 https://www.jianshu.com/p/63404461e520 golang 在栈或者堆中分配内存,更倾向在栈中分配因为代价低, 内存逃逸上指,编译器编译时检查变量,发现整个生命周期是否在运行时完全可知。 如果可知,它就可以在栈上分配。否则就说它 逃逸 了,必须在堆上分配 阅读全文
posted @ 2020-09-17 14:52 海拉尔 阅读(600) 评论(0) 推荐(0)
摘要:堆排序可以很好解决TopK问题 时间复杂度 N(logN),不稳定排序,相同大小数据仍可能交换位置 寻找海量数据中最大的100个数据,可以建立容量100的小顶堆,然后将后面的数据与堆顶最小值比较, 如果比它大,进行交换重新将堆进行调整,后面数据以此类推,可以得到top 100的数据 package 阅读全文
posted @ 2020-09-15 11:30 海拉尔 阅读(1443) 评论(4) 推荐(0)
摘要:使用切片的方式实现简单的栈 package main import "fmt" type Element interface{}//可存入任何类型 type Stack struct { list []Element } //初始化栈 func NewStack()*Stack { return & 阅读全文
posted @ 2020-08-29 16:14 海拉尔 阅读(753) 评论(0) 推荐(0)
摘要:实现简单的线程池,任务放在entry中,线程池开启后会创建相应数目的线程,不断从entry中拿取任务放在work管道中,并且不断从work中取出任务运行 package main import "fmt" var count int type Task struct { myfun func()er 阅读全文
posted @ 2020-08-27 23:11 海拉尔 阅读(849) 评论(0) 推荐(0)
摘要://存放的数据为Link type Link struct { //内部数据 } //map key放置数据 type Set struct { m map[Link]bool } //获取Set func GetSet() *Set { return &Set{ m: map[Link]bool{ 阅读全文
posted @ 2020-08-19 15:43 海拉尔 阅读(393) 评论(0) 推荐(0)
摘要:一个文件可以包含多个init函数,此函数无输入和返回值 init函数在main函数之前自动调用 init函数不能被显式调用 init函数只会执行一次,即使被import导入多次 同一个 package 中, 文件名排序靠前的文件中的 init 函数更早运行 程序在main包开始,先进行import其 阅读全文
posted @ 2020-08-19 14:50 海拉尔 阅读(434) 评论(0) 推荐(0)
摘要:使用go get下载很慢,打开gomodule 更改proxy 秒下载 # 启用 Go Modules 功能 export GO111MODULE=on # 配置 GOPROXY 环境变量 export GOPROXY= 链接 参考链接https://goproxy.io/zh/ https://m 阅读全文
posted @ 2020-07-23 10:28 海拉尔 阅读(432) 评论(0) 推荐(0)