Go语言中文网 为您找到相关结果 49

ubuntu下最新版golang安装教程

相信打算安装golang的同学们早已看了很多安装教程了,网上的主流方法有两种,一种是 sudo apt-get install golang-go 简单暴力,但是由于现在很多golang的库已经要求 >1.1 ,而 apt-get 安装的是 1.02 ,也建议大家安装最新版的golang,因此推荐手动安装,教程本身没有问题,但是由于某些特殊原因,可能导致安装失败甚至卡在莫名奇妙的地方。在卡了一个中午后,我还是写下这篇文章总结下要注意的地方。 以ubuntu wiki的 安装教程 为例: 安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的 $ sudo apt-get insta...阅读全文

博文 2014-10-06 07:32:32 stonxer

Go 解决"unsupported protocol scheme"问题

【问题】 我写了一段程序,代码如下: package main import ( "io/ioutil" "net/http" "log" ) func main() { resp, err := http.Get("www.baidu.com") if err != nil { log.Fatalln(err) } body, err := ioutil.ReadAll(resp.Body) defer resp.Body.Close() if err != nil { log.Fatalln(err) } log.Println(string(body)) } 执行的时候报了下面的错误: Get www.google.com: unsupported protocol scheme ""...阅读全文

博文 2016-12-21 12:00:02 吃一堑消化不良

[golang] implicit assignment of unexported field

struct结构如下: package models import ( "github.com/robfig/revel" ) type Post struct { id int title string } 我在另一个包里面使用 package controllers import ( "blog/app/models" "fmt" "github.com/coopernurse/gorp" "github.com/robfig/revel" ) type Application struct { *revel.Controller Txn *gorp.Transaction } func (c Application) Index() revel.Result { post := &mo...阅读全文

博文 2014-10-04 19:25:57 davidhhuan

golang的杀手级应用:docker

docker 是 golang 的第一个杀手级应用,发展迅猛, 现在各大云计算平台几乎全都支持 docker 实例,包括 谷歌,亚马逊,阿里云等。 golang 本身已经让我惊喜万分,而 docker 更是极大的激发了我对虚拟化的想象。 关于软件和硬件 IT 业发展至今,软件和硬件始终是无法分割的两个物体。 就拿最近几年红红火火的智能机时代来说, 很久之前的诺基亚智能机, 软件和硬件相辅相成, 连进入主界面都需要按一个特定的按钮才能进入。 软件的操作都严重依赖键盘等按键。 体验非常不好, 对软件设计人员的约束也很大。 而苹果 iPhone 横空出世的时候, 最大限度的让你忘记硬件, 硬件主要只剩下一个 home键 和 可触控玻璃。 就是这样的 home键 和 触摸屏 组合, 大大的释放了软件...阅读全文

博文 2015-02-15 18:27:19 YanyiWu

完全卸载go语言编译器

在mac中完全卸载golang编译器如果你是通过安装包的形式 安装的go语言编译器,那么更新的方式也会非常简单,那就是直接下载新的golang安装包。在安装新的时候,会自动删除掉旧的编译器。手动删除查看路径在哪里:1> which goroot 权限下删除1> rm -rf /usr/local/go删除1> rm -rf /etc/paths.d/go将环境变量,有关 go 的删了即可1> vim ~/.bash_profile本文链接: https://dreamerjonson.com/2018/12/13/uninstall-go-mac/版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处...阅读全文

博文 2018-12-14 23:35:30 jonson_jackson

go语言chan 和 routine活用

这里,我们以游戏中的一个情况为例。比如魔兽世界里的40人团队副本BOSS战,很多玩家同时攻击BOSS,BOSS的血量会进行频繁修改,我们要记录对BOSS的致命一击。常规 对BOSS血量的操作经行加锁,然后修改,每次攻击甚至还会判断怪物是否处于死亡状态以判断客户端是否能施放某个技能,但这样会让一个锁控制40个玩家的攻击操作,会导致攻击,技能等释放的不流畅。所以魔兽世界应该不是采用这种加锁的方式。为什么我这样说,因为做为了一个wower,我们经常会发现,实际BOSS,怪物已经死了,但我的寒冰剑还在半路,结果呢,寒冰剑击中了已经成为尸体的怪物并且显示伤害值。 使用GO语言来实现这样的功能: /** * Created by Administrator on 13-12-20. */ package...阅读全文

博文 2014-10-04 19:25:56 eclipser1987

【golang】切片添加和删除一个元素

前言 在做leetcode熟悉语法的时候,需要对一个切片进行操作。删除操作还好,go圣经有提到,但是增加元素就让我抓了个狂。最后在同事帮助下找到了合适的语法。 正文 -删除元素 l := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} newL := append(l[0:5], l[6:]...) -增加元素 l := []int{0, 1, 2, 3, 4, 6, 7, 8, 9} newL := append(l[0:5], append([]int{5}, l[5:]...)......阅读全文

博文 2019-10-15 20:33:44 aside section ._1OhGeD

Golang实现的红黑树

红黑树是一种基于二叉查找树的数据结构,它具有如下性质: (1) 二叉查找树的性质它都有 (2) 每个节点都有一个颜色属性,每个节点或是红的或是黑的 (3) 根节点必须是黑的 (4) 每个叶子节点(nil节点)为黑 (5) 如果一个节点为红的,那么它的两个孩子都是黑的 (6) 每个节点到它子孙叶子节点的路径上的黑色节点个数是相同的 相比二叉查找树,红黑树在添加或删除元素的同时还需要调整树的深度,所以需要用到对树结构的一些旋转操作,下面的实例代码给的非常详尽了,可以看看LeftRotate()和RightRotate()函数式如何实现旋转的。如果有人发现了BUG请在留言中发表~ 这个代码是在之前的"Golang以OO的方式实现二叉查找树"里的代码加工实现的,因为本人技术不到位。。。出了好几次BU...阅读全文

博文 2015-06-17 20:03:52 u011774512

golang go mod 替换指定版本

之前在项目中遇到过etcd的版本不一致, 导致无法编译. 最终是因为版本不一致的问题. https://segmentfault.com/q/1010000021762281 go mod替换版本 先删除vendor: rm -rf vendor 或手动删除 1.再替版本: go mod edit -require=google.golang.org/grpc@v1.26.0 1.下载指定版本v1.26.0: go get -u -x google.golang.org/grpc@v1.26.0 1.然后再go mod vendo...阅读全文

博文 2020-02-19 15:32:44 百里江山

BookStack V1.2 发布,增加书籍分类和用户主页等功能

BookStack,分享知识,共享智慧!知识,因分享,传承久远! BookStack是基于[Mindoc](https://gitee.com/longfei6671/godoc)开发的,为运营而生,可用于文档项目管理,也可用于开源书籍的整理并提供用户阅读,支持批量创建文档、markdown项目一键导入以及文章采集等强大便捷的功能。 ![首页1.png](http://static.bookstack.cn/projects/help/15234b6d9c2c2a4d.png "首页1.png") ## 升级日志 1\. 增加书籍分类 ![分类1.png](http://static.bookstack.cn/projects/help/15234b715f85...阅读全文

go语言操作mysql数据库问题

hi 我用github.com/Go-SQL-Driver/Mysql操作mysql 例子参照go web 编程教程 增改删按顺序操作没问题,但是只修改就报错,求助大神是什么原因造成的? 报错信息: .\test.go:47: undefined: stmt .\test.go:48: undefined: res .\test.go:48: undefined: stmt .\test.go:49: undefined: res //代码如下: package main import ( "database/sql" "fmt" _ ...阅读全文

在 Cloud 9 中搭建和运行 Go

简介 自从使用了Chromebook,我脑中一直充斥着在云端开发的念头。在我使用过的位数不多的在线开发环境中,唯有 Cloud 9令我比较满意。实际上,Cloud 9还不支持Go的开发,因此本文我将教大家如何让Go在Cloud 9上运行。 创建你的工作区 第一步,创建一个workspace,根据个人喜好命名。 工作区创建完成后,点击开始编辑按钮,你讲看到一个空白的工作区和一个README.md文件(删了也无所谓)。 在工作区的底端,你可以看见控制台,也就是接下来我们要进行操作的地方。如果你希望使用一个更纯粹的控制台,你可以在下面位置启动它: View > Terminals > New Terminal C9最牛逼的地方在于它的虚拟环境,如果你熟悉linux下的命令行,那么上手将轻而易举。既...阅读全文

博文 2014-11-13 12:00:00 zajin

在 Cloud 9 中搭建和运行 Go

简介 自从使用了Chromebook,我脑中一直充斥着在云端开发的念头。在我使用过的位数不多的在线开发环境中,唯有 Cloud 9令我比较满意。实际上,Cloud 9还不支持Go的开发,因此本文我将教大家如何让Go在Cloud 9上运行。 创建你的工作区 第一步,创建一个workspace,根据个人喜好命名。 工作区创建完成后,点击开始编辑按钮,你讲看到一个空白的工作区和一个README.md文件(删了也无所谓)。 在工作区的底端,你可以看见控制台,也就是接下来我们要进行操作的地方。如果你希望使用一个更纯粹的控制台,你可以在下面位置启动它: View > Terminals > New Terminal C9最牛逼的地方在于它的虚拟环境,如果你熟悉linux下的命令行,那么上手将轻而易举。既...阅读全文

博文 2014-11-06 18:00:00 cmy00cmy, 5th_days

阿里云云大使经验分享:老司机9招带你玩转云大使推广

阿里云是国内云服务器市场的龙头,性价比高,速度快又安全,是站长建站首选的云服务器之一。福利吧使用的也是阿里云服务器,是折腾了很多次网站搬家后,才选择了阿里云。身边好几个站长最后都殊途同归,用了阿里云,可见阿里云服务器性能确实好。其实在阿里云没有推广返利的时代,我就已经向身边的站长朋友,推荐阿里云了。自从阿里云推出了云大使返利策略后,就更加积极的推广阿里云了,推广的越多我们收益越高。推广阿里云主要方式就是推广阿里云云大使幸运券,新用户用你的阿里云幸运券购买云服务器等产品,你会有返利,而且是现金哦。作为一个老司机,福利吧(www.fuliba.com)也和大家分享一下我的阿里云推广经验,教大家如何免费推广云大使。 1、站长利用自己的网站推广 站长可以利用你自己的网站进行推广,你的...阅读全文

BookStack v2.0 发布,功能类似 GitBook 和看云的在线文档管理系统

程序介绍 BookStack,分享知识,共享智慧!知识,因分享,传承久远! BookStack 是基于 Mindoc、使用Go语言的Beego框架开发的功能类似GitBook和看云的在线文档管理系统,实现了文档采集、导入、电子书生成以及版本控制等强大的文档功能,并推出了配套的开源微信小程序 BookChat。 升级日志 BookStack 配套微信小程序 BookChat 接口实现,累计 20+ 个API接口 修复删除项目时误删默认封面的bug HTML内容处理,以兼容微信小程序rich-text组件对HTML内容的渲染 增加开源书籍和文档收录提交入口,以及收录管理 内容采集增强和优化 书籍在发布的时候,自动把非站内图片自动采集下来 书籍页增加小程序码,提供小程序阅读入口,打通PC端与移动端...阅读全文

博文 2019-08-13 18:04:19 TruthHun

求职日记(三)

其实,我在年前的一周,已经正式入职公司C了,但当我确定入职日期了以后,一些意外接踵而来,面临更多的选项的我有点乱了套,脑子渐渐的变成一团浆糊了…… 以下是自问自答,全当理理思绪吧。 为什么选择入职公司C? 虽然不是做区块链的,但golang微服务方向是次优选择。一方面,可以加强一下golang的开发经验,另一方面做微服务下的一些高并发高可用场景,也可以分布式开发的经验。这两方面经验,目前的理解是对做区块链也是有帮助的。 虽然固定工资是平薪,但是有绩效奖,加上有一些等价期权的股权,整体上可以兼顾长短期收益,所以也还不错。 公司距离离家近些,公共交通方便。 面试时,接触到公司的人给我的感觉挺好,气场挺和的来的(入职后,接触了更多的同事后,感觉依然不错)。 为什么开始纠结了? 在确认入职时间时,本...阅读全文

博文 2019-02-14 00:34:44 海之方

klog flag redefined 错误解决

# 引用k8s优秀日志包klog时遇到错误: ```go /var/folders/4c/7cs52qx951l7dzrvkk1yzvf40000gn/T/go-build871962607/b001/exe/main flag redefined: log_dir panic: /var/folders/4c/7cs52qx951l7dzrvkk1yzvf40000gn/T/go-build871962607/b001/exe/main flag redefined: log_dir ``` # 错误提示 log_dir 这个flag被重复定义了 # 错误原因1 引用klog时的时候,重复引用了glog,要替换或者删除glog。清除vendor以及依赖包。 # 错误原因2 使用flag.N...阅读全文

博文 2020-03-09 18:16:25 ttbelieve

golang mmo游戏 aoi算法

type( //十字链路 GameNode struct { xPrev *GameNode xNext *GameNode yPrev *GameNode yNext *GameNode mObj IGameBase X int Y int } ) var( m_XNode *GameNode m_YNode *GameNode ) //添加到十字链路 func AddNode(node* GameNode){ //x handle var tail *GameNode bFind := false if m_XNode == nil || m_YNode == nil{ m_XNode, m_YNode = node, node return } for curNode := m_XNo...阅读全文

博文 2019-08-12 18:07:33 bobohume

2018-12-22 晚间日记

天气:小雨 任务清单 习惯养成类:日更800+字 && writingTime >=1h 习惯养成类:单词 30个,复习优先,你的目的是为了记住单词,而不是看到更多的单词。 看TED,或者其他的英文节目1h 周目标·完成进度 golang 1K 众病之王---癌症治疗的认知升级(总结2000字+) 梁宁的产品思维30讲(写总结2000字+) 学有所得 思考快与慢 中有一个例子讲代表性偏误。 史蒂夫是从一个有代表性的样本库中被随机挑选出来的: 邻居如此描述这个孩子:“史蒂夫非常腼腆,少言寡语,很乐于助人,却对他人或者这个现实世界没有兴趣。他谦恭有礼,做事井井有条,中规中矩,关注细节。”请问史蒂夫更可能从事哪种职业,图书管理员还是农民? 很显然,史蒂夫的个性和典型的图书管理员有着惊人的相似,但这...阅读全文

博文 2018-12-22 23:34:48 郭青耀

Golang文件及文件夹

文件夹及文件相关使用方法 // 判断文件、文件夹是否存在 func PathExists(path string) (bool, error) { _, err := os.Stat(path) if err == nil { return true, nil } if os.IsNotExist(err) { return false, nil } return false, err } func Mkdir() { dir := "log" // 创建文件夹 exist, err := PathExists(dir) if err != nil { fmt.Println(err.Error()) } else { if exist { fmt.Println(dir + "文件夹已存在...阅读全文

博文 2020-03-28 15:32:46 是个懒人

使用Golang解析读取Mysql备份文件

前言 前期误操作,导致数据库表删除,虽然数据量不多,但是通过binlog恢复比较麻烦,通过备份文件来恢复,备份文件达36个G打开都是问题; 使用备份文件恢复 大文件编辑器,glogg-latest-x86_64-setup通过该文件打开备份文件,虽然过程稍慢,但是能够打开,且正常读取编辑信息,要恢复的数据量不大时采取是没问题的,但是如果表几十万行,操作起来就比较麻烦了; Golang读取备份文件 采用Golang读取,借助编程语言的优势来读取备份,经过测试读取指定备份文件(约36GB)表,大约需要12min,其实主要就是读取遍历备份文件的过程; ** * @Author: ws * @File: main * @Date: 2019/11/16 0016 14:35 * @Remark: *...阅读全文

Ansible 怎么可以缺少阿里云

摘要: 本文转载自 阿里云CodePipeline客户“小草”的个人博客,Step By Step的呈现了从0配置一个nodejs 静态网站发布到OSS,并通过CDN回源加速的过程。 本文转载自 阿里云CodePipeline客户“小草”的个人博客,原文地址:  http://www.forkjoin.org/2017/08-21-CodePipeline-ossweb/ 现在流行前后端彻底分离,前端生成webpack 打包的静态文件。可以通过 CodePipeline构建后发布到oss 进行发布前端。下面进行详细讲解 第一步 申请开通 CodePipeline   CodePipeline 地址 第二步 创建CodePipeline任务 1....阅读全文

golang错误处理优化

一般条件下golang的错误处理模式如下: err := ... if err != nil { //打印或者退出 } 这种模式可以打印出错误,但是很难查找错误的文件或者位置,可以写一个公用的检查错误函数处理,如下: func CheckError(err error) bool { if err != nil { _, file, line, ok := runtime.Caller(1) if ok { emsg := fmt.Sprintf("file:%s, line:%d, error:%s", file, line, err.Error()) logger.Print(emsg) } else { logger.Print(err) } return true } return ...阅读全文

博文 2020-01-19 23:32:48 hewolf

自己动手用golang实现双向链表

双向链表主要有链表跟节点2个结构体type Dnode struct { data interface{} prev *Dnode next *Dnode } type DList struct { head *Dnode tail *Dnode size int }特点:1、除头部、尾部2个节点外,其他任意节点都通过prev / next 分别指向前置后置节点2、头部节点前置节点为空,同理尾部节点后置节点为空主要实现的API如下:1、查询查询链表长度查询任意节点2、添加从开头插入节点从尾部插入节点从任意位置插入节点3、删除删除任意节点4、其他打印链表初始化链表具体实现如下:package main import "fmt" type Dnode struct { data interfac...阅读全文

博文 2019-12-16 02:33:41 筑梦攻城狮

Golang使用Elasticsearch

创建es.go文件 根据elasticsearch版本拉取对应的go包:github.com/elastic/go-elasticsearch API文档:https://pkg.go.dev/github.com/elastic/go-elasticsearch/v6@v6.8.5/esapi?tab=doc package es import ( "bytes" "context" "encoding/json" "fmt" "github.com/elastic/go-elasticsearch/v6" "log" ) func failOnError(err error, msg string) { if err != nil { log.Fatalf("%s: %s", msg, ...阅读全文

博文 2020-05-26 09:32:43 是个懒人

kubernetes垃圾回收器GarbageCollector Controller源码分析(二)

kubernetes版本:1.13.2 接上一节:kubernetes垃圾回收器GarbageCollector Controller源码分析(一) 主要步骤 GarbageCollector Controller源码主要分为以下几部分: monitors作为生产者将变化的资源放入graphChanges队列;同时restMapper定期检测集群内资源类型,刷新monitors runProcessGraphChanges从graphChanges队列中取出变化的item,根据情况放入attemptToDelete队列; runProcessGraphChanges从graphChanges队列中取出变化的item,根据情况放入attemptToOrphan队列; runAttemptToD...阅读全文

博文 2019-10-12 15:02:42 小碗汤

Go unsafe 包的使用

unsafe包 golang是一种静态的强类型的语言,所有的类型都是不能随意转换的,Go语言是不允许两个指针类型进行转换的。go官方是不推荐使用unsafe的操作因为它是不安全的,它绕过了golang的内存安全原则,容易使你的程序出现莫名其妙的问题,不利于程序的扩展与维护。但是在很多地方却是很实用。在一些go底层的包中unsafe包被很频繁的使用。 unsafe 定义 package unsafe //ArbitraryType仅用于文档目的,实际上并不是unsafe包的一部分,它表示任意Go表达式的类型。 type ArbitraryType int //任意类型的指针,类似于C的*void type Pointer *ArbitraryType //确定结构在内存中占用的确切大小 fun...阅读全文

博文 2020-01-20 00:32:40 大二小的宝

golang list用法笔记

依赖 import ( "container/list" "fmt" ) 遍历 go的list也是用双向循环链表实现的,在尾部追加用PushBack() // 声明链表 l := list.New() // 数据添加到尾部 l.PushBack(4) l.PushBack(5) l.PushBack(6) // 遍历 for e := l.Front(); e != nil; e = e.Next() { fmt.Printf("%v\n", e.Value) } 删除元素 删除使用list.Remove(element) l := list.New() l.PushBack(4) six := l.PushBack(6) l.Remove(six) // 删除6这个节点 合并两个链表(li...阅读全文

博文 2020-06-08 21:32:43 疯狂的小蚂蚁go

Golang学习笔记-map

map是一些键值对的集合,默认值为nil,使用内置函数make创建map: var map_variable map[key_data_type]value_data_type map_variable := make(map[key_data_type]value_data_type) func main() { var numberMap map[string] int numberMap=make(map[string]int) println(len(numberMap)) } map可以使用大括号来初始化: var numberMap =map[string] int{"one":1,"two":2,"three":3} 判断元素是否存在: func main() { var nu...阅读全文

博文 2019-09-27 23:32:44 aside section ._1OhGeD

Golang学习笔记-接口和错误

接口 Go接口定义了方法后,其它类型只要实现了这些方法就是实现了接口。 type Person interface { speak() } type Student struct { } type Worker struct { } func (student Student) speak(){ println("I am student") } func (worker Worker) speak(){ println("I am worker") } func main() { var person Person person=Worker{} person.speak()//I am worker person=Student{} person.speak()//I am studen...阅读全文

博文 2019-09-27 23:32:44 aside section ._1OhGeD

golang xorm postgresql数据库操作

1.连接数据库func Connect()(* xorm.Engine) {str := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", host, port, user, password, dbName)engine,err := xorm.NewEngine("postgres",str)if err != nil {log.Fatal(err)return nil }err = engine.Ping()if err != nil {log.Fatal(err)return nil }engine.Logger().SetLevel(core.LOG_DEBUG)f,err :=...阅读全文

博文 2019-08-13 18:32:46 dullswords

删除倒数第n个节点

func removeNthFromEnd(head *ListNode, n int) *ListNode { p, q := head, head for ;n >= 0 && p!=nil;n--{ p = p.Next } if p == nil && n == 0{ return head.Next } for ;p!= nil;p=p.Next{ q = q.Next } q.Next = q.Next.Next return head } 作者:mu-yu-ting-feng-4 链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/solution/golang-0ms10022m64-by-...阅读全文

博文 2020-06-13 11:32:59 杨杰_18b7

golang执行外部命令超时处理的exec.CommandContext

使用exec.CommandContext来处理外部命令的超时 func main() { timeout := 5 ctx, cancel := context.WithTimeout(context.Background(), time.Duration(timeout+5)*time.Second) defer cancel() cmdarray := []string{"-c", fmt.Sprintf("%s %s", "sleep", "10")} cmd := exec.CommandContext(ctx, "bash", cmdarray...) out, err := cmd.CombinedOutput() //if ctx.Err() == context.Deadl...阅读全文

博文 2020-06-21 06:32:42 CodingCode

golang练习:错误

package main import ( "fmt" ) type ErrNegativeSqrt float64 func (t ErrNegativeSqrt) Error() string { return fmt.Sprintf("cannot Sqrt negative number: %v", float64(t)) } func Sqrt(x float64) (float64, error) { if x < 0 { return x, ErrNegativeSqrt(x) } return 0, nil } func main() { fmt.Println(Sqrt(2)) fmt.Println(Sqrt(-2)) ...阅读全文

博文 2019-12-30 02:32:39 该用户太帅没有设置昵称

go map 学习

什么是map map 是在go 中将值(value) 与 键(key) 关联的内置类型,通过相应的键可以获取到值定义类型为 map[key]value 一、 创建map ``` package mainimport "fmt"func maptest() {// 1、声明方式1 mapmap2 :=map[int] string{1:"hello",2:"world"}fmt.Println(map2) // 输出map2 :=map[int] string{1:"hello",2:"world"}fmt.Println(map2) //2、声明方式2 声明一个空map map2 :=map[int] string{} fmt.Println(map2) // 输出 map[] // 3、 ...阅读全文

博文 2020-01-07 23:33:14 水滴石川1

sync.Map

不知道图解的是否到位 几个核心要点: 首先,read初始化之后,始终会保持不变,这里指的是Key的纬度,不会加也不会减; 其次,read和dirty中共有的元素的是相同的一个地址; 再次,dirty中存储的是read中不存在的元素,以及read中之前被删除又会恢复的元素; 最后,dirty在miss次数达到一定限制会,会替换read,重新上面的流...阅读全文

博文 2019-12-17 14:32:44 渐行渐远

自己动手用golang实现单向链表

单向链表特点:1、Head 节点 上一个节点为空2、Tail 节点下一个节点为空3、除Tail节点外,每个节点连接到下一个节点package main import ( "fmt" ) type LinkNode struct { Data interface{} Next *LinkNode } type SingleLink struct { head *LinkNode tail *LinkNode size int } // 初始化链表 func InitSingleLink()(*SingleLink){ return &SingleLink{ head:nil, tail:nil, size:0, } } // 获取头部节点 func (sl *SingleLink)GetHea...阅读全文

博文 2019-12-28 15:33:41 筑梦攻城狮

垃圾回收之写屏障

资料阅读 有两张不错的gif图(原子wikipedia) https://zhuanlan.zhihu.com/p/74853110 最先看的文章,引用了上面的文章 https://www.jianshu.com/p/4c5a303af470 在讨论 Go 的混合写屏障 https://github.com/changkun/go-under-the-hood/issues/20 解释了为啥有 read barrier https://www.zhihu.com/question/42879518/answer/437304734 这些个文章看完,总觉得其中对golang的混合写屏障没说透,甚至感觉有错误说法。 三色标记的理解 基本的mark-sweep算法 基本算法有个缺点,需要STW(s...阅读全文

博文 2020-07-08 08:32:46 小小青蛙不怕风吹雨打

go map 学习

map 声明的几种方式var a map [sting] int // string 代表key 值的类型 int 代表 value 值的类型var b map [int] string // int key 值的类型 ,string 代表value 值的类型var c map [string] string // string 代表 值的类型 string 代表value 值的类型map 类型的变量需要先声明才能使用,需要使用make 分配map内存 示列package main import "fmt" func map1() { var a map [string] int fmt.Println(a) // a["s1"] = 123 // fmt.Println(a) //pani...阅读全文

博文 2020-03-25 04:33:12 水滴石川1

fixedlist定长数据列表

## 说明 fixedlist 提供定长列表,初始化时定义好长度,add()负责向尾部添加数据,当数据达到指定长度时,fixedlist会自动删除头部数据。 该场景常用于统计最近X时间的数据,比如最近60秒内每秒的请求量,只需把每秒的统计数据顺序add即可。 ## 安装 ``` go get github.com/go-basic/fixedlist ``` ## 使用 ``` package main import ( "fmt" "github.com/go-basic/fixedlist" ) func main() { f := fixedlist.NewFixedList(2) f.Add("a") f.Add("b") fmt.Println(f.Data()) f.Add("c...阅读全文

博文 2020-06-22 17:03:59 rushui

leetcode_1338

Golang: 思路:贪心,首先,我们需要知道每个数字在数组中出现的数目,然后将这些数目做个排序,每次都删去出现最多次数的数目,直到这些删除的数目之和超过了数组长度的一半。 代码如下: func minSetSize(arr []int) int { mp:=make(map[int]int) for _,v:=range arr{ mp[v]++ } var val []int for _,v:=range mp{ val=append(val,v) } sort.Ints(val) temp:=0 for i:=len(val)-1;i>=0;i--{ temp+=val[i] if temp>=len(arr)/2{ return len(val)-i } } return 0 ...阅读全文

博文 2020-03-14 21:32:47 淳属虚构

定长数据列表fixedlist

## 说明 fixedlist 提供定长列表,初始化时定义好长度,add()负责向尾部添加数据,当数据达到指定长度时,fixedlist会自动删除头部数据。 该场景常用于统计最近X时间的数据,比如最近60秒内每秒的请求量,只需把每秒的统计数据顺序add即可。 ## 安装 ``` go get github.com/go-basic/fixedlist ``` ## 使用 ``` package main import ( "fmt" "github.com/go-basic/fixedlist" ) func main() { f := fixedlist.NewFixedList(2) f.Add("a") f.Add("b") ...阅读全文