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

golang 程序的异常退出

同事反馈了一个问题,一个微服务异常退出。查了许久没有发现一个是一个协程异常导致的整个进程退出了。程序的异常情况其实基本上是可控的,找到异常原因,修复问题上线是可以的。但是这里体现了两个知识点:1、golang的一个协程异常,如果没有捕获,回导致整个进程退出。这里就不举例子说明了,自己可以写个很简单的demo,通过go func() {}里面使用panic产生恐慌试验下。2、关于defer、panic、recover的使用理解golang不支持java语言中的try...catch...finally这种异常,因为...此处忽略了一千字😄defer的原意是推迟、延期。它的思想类似与C++的析构函数,不过go语言中的析构的不是对象,而是函数,defer就是用来添加函数结束时执行的语句。注意这里强...阅读全文

博文 2018-09-13 14:35:03 GoSnail

golang 部分理解:关于channel 和 goroutine 例子

部分理解:关于channel 和 goroutine 例子package main import "strconv" import "fmt" func main() { //在主goroutine中要先有读取chan的请求,之后才可以赋值,即有需求才会有chan赋值的举动,否则先别碰chan,不然会死锁 //1 taskChan := make(chan string, 3) doneChan := make(chan int, 1) for i := 0; i < 3; i++ { taskChan <- strconv.Itoa(i) fmt.Println("send: ", i) } go func() { for i := 0; i < 3; i++ { task := <-ta...阅读全文

博文 2015-04-08 11:00:00 rojas

为何这个叫艾派的程序员会是13亿人心中的暖男?

艾派是谁? 艾派是一个非典型的中国小伙子,长着一张鹅蛋脸型,皮肤白皙,透着一点象征着健康的粉色,嫩得感觉可以掐出水来。在冬日暖阳里,仔细瞧着艾派的侧脸,还能瞥见那些安静地生长着的浅色柔软的汗毛。这样的面孔让艾派多了点阴柔,少了点阳刚之气。可是他一旦打开话夹子或者扯着嗓门吼上一首电影《红高粱》的曲子——妹妹你大胆地往前走...往前走...莫回呀头通天的大路...九千九百...九千九百九呀...那骨子里流淌的中国男子气概的血脉就彰显无疑了。艾派喜欢浏览网页上的段子,也爱说一些荤段子,憨笑起来,还有点程序员似的耿直痴傻,是的,艾派的工作就是拿着每月一万多工资的程序员,但是他的情商不低,是属于承蒙中国13亿人口厚爱的暖男,还是男女通吃,不分老弱病残的那种...... 暖男的标准 ...阅读全文

golang json 包简单分析

首先上代码: func main() { b := true a1, _ := json.Marshal(b) a2, _ := Marshal(b) fmt.Println(string(a1)) fmt.Println(string(a2)) } 输出: true true 以最简单的单个bool 类型的序列化为例,我们来搞清楚json 包里面的调用栈如下: 从入口出发,第一个方法是: func Marshal(v interface{}) ([]byte, error) { e := &encodeState{} err := e.marshal(v) if err != nil { return nil, err } return e.Bytes(), nil } 这里没有什么特殊,...阅读全文

博文 2015-09-25 03:00:00 bnbqian

Alpha Go、Master为什么会下围棋

简单的说Alpha Go、Master就是一个函数y = f(x),x是当前棋子位置,y是x的应对棋子落位,也就是说下一步棋的位置,由于棋类的对抗性,显然y是对x最不利的一步走法。 假定有N个棋谱,每个棋谱有K步棋( 1<= k <361),当输入第1个棋谱的第一步棋时,使用y=f(x)计算,y就是Alpha Go、Master计算出来的第2步棋的落子位置,由于函数f没有学习好全部棋谱,所以y不是正确的走法,与棋谱中第2步棋比较有偏差,学习的目的就是让这个偏差最小趋近于零。Alpha Go、Master使用了深度学习算法不断训练这个函数f,当训练完成后对于每步棋都能得到较好的下法...阅读全文

博文 2017-01-06 02:00:01 量子世界的我

用Golang写一个搜索引擎 (0x04) --- B+树

本篇较长较枯燥,请保持耐心看完。 前面两章介绍了一下倒排索引以及倒排索引字典的两种存储结构,分别是跳跃表和哈希表,本篇我们介绍另一种数据结构,他也被大量使用在信息检索领域,我在github上实现的搜索引擎的词典也是用的这个数据结构,它就是B+树。 首先,我们看看什么是树,树是程序设计中一个非常基础的数据结构,记得大学时候的数据结构课,链表,栈,队列,然后就是树了,虽然那时候想必大家都被前序遍历,中序遍历,后序遍历折腾过,不过树确实是一种非常有用的数据结构。 上一篇我们说过,表2的第一列首要解决的问题就是能快速找到对应的词,然后找到对应词的倒排列表,除了跳跃表和哈希表,B+树也能满足条件,B+树是B树的变种,我们B树我们就不看了,感兴趣的大家可以直接去google一下,我们主要讲的是B+树,下...阅读全文

博文 2017-02-09 08:18:01 吴yh坚

Floyd's Tortoise and Hare & 环检测算法

算法推导 image 当hare的移动速度是tortoise的 2 倍, 设起始点到环的入口的距离是T,环的长度是C, 当tortoise第一次走到环的入口entry point时,我们假设这是tortoise与hare之间的在环上的距离是r, 从start point开始出发到tortoise第一次走到环的入口时,hare移动的距离是 T + r + k*C,k >= 0, 又因为,hare移动的速度是tortoise的两倍,且这时tortoise移动的距离是T,所以hare移动的距离是 2T。 得到等式 A T + r + k*C = 2T,k >= 0 简化得到等式 B r + k*C = T,k >= 0 [图片上传失败...(image-1940ba-1559799507418)]...阅读全文

博文 2019-06-06 14:32:42 polar9527

go 通道的阻塞测试

go版本 go version go1.11.2 linux/amd64 无缓冲通道 测试样例 package main import "fmt" func main(){ naturals:=make(chan int,0)//无缓存通道 squares:=make(chan int) go func(){ for x:=0;x<10;x++{ fmt.Println("naturals start ",x) naturals<-x fmt.Println("naturals end ",x) } fmt.Println("naturals close ") close(naturals) }() go func(){ for x:=range naturals{ fmt.Println(...阅读全文

博文 2019-01-15 10:34:40 flamefatex

DockOne技术分享(二十三):暴走漫画的Docker实践

【编者的话】本次主要分享Docker在暴漫中的应用主要包括:开发环境的Service搭建,代码托管、持续集成、Docker镜像等若干Support服务、部分微服务以及整个数据服务系统。 暴走漫画是一家文化传媒公司。公司除了有若干视频娱乐节目,还有相应的社区网站及移动APP。流量UV是200万/天左右,PV大概是千万级别。为了更加有效地运营以及推荐用户个性化,2015年成立了数据部,负责暴漫的数据分析和数据挖掘相关服务。 暴漫没有自己的服务器,是使用的国内某云服务。暴漫的后端主要是基于Ruby开发。也有基于Go、Python的一些微服务。 Docker在暴漫中的应用主要包括: 开发环境的Service搭建 代码托管,持续集成,Docker镜像,等若干Support服务部分微服务以及整个数据服务...阅读全文

博文 2017-06-25 15:01:16 李颖杰

leetcode 回溯题目 golang语言

回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就 “回溯” 返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为 “回溯点”。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。 链接:https://leetcode-cn.com/tag/backtracking/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 本文主要总...阅读全文

博文 2019-09-19 00:33:15 努力的C

19年第33周:Go语言排序算法的实现-Golang语言

一、8款Go排序算法的实现 参考资料:https://visualgo.net/zh/sorting?slide=1 资料使用方式:看动图和右下角的文字 package mySortMethod import ( "math" "math/rand" "time" ) // 1, 冒泡排序 func Bubble(numbers []int) (result []int) { // 核心:每一次遍历, 老大往前 // 2, 遍历N次 从第一个数作为当前的焦点一直到N-i // 3, 如果左边》右边,那么交换,交换过就设置标志sortedBool = False(默认为True) var sortedBool bool // 如果一次都不交换,那说明提前排好了 N := len(numbers...阅读全文

博文 2019-08-19 02:32:45 习惯研究所所长

【他山之石】大话密码学·默克尔树·章三 扬前帆

前帆(Jib):主桅杆前面使用的帆 基本定义 Merkle Tree 是由计算机科学家 Ralph Merkle 在很多年前提出的,并以他本人的名字来命名,中文翻译过来叫默克尔树,也叫哈希树。 哈希树 主要用途 Merkle Tree 常用来做完整性校验的,所谓的完整性校验,就是检查一下数据有没有损坏或者被恶意篡改。 Merkle Tree 的最大的应用场合就是在点对点网络上,早期的 BT ,电驴,快播等各种下载器,以及目前普遍使用的 Git 版本控制系统,NMP包管理,GoLang 包管理,IPFS 协议以及比特币以太坊等等项目都用到了它。例子太多了……欢迎补充…… Merkle Tree Merkle Tree 如果直接去看定义,会看到一张比较复杂的图,可能会把你一下子吓到,然后就不想学...阅读全文