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

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

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

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

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

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

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

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 量子世界的我

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

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

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

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

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

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

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

2019年,又是一个成长年!

大胡子是我特别佩服的一位老师,第一次知道他是17年偶尔一次线上讲座,具体题目忘记了,内容大概是关于"技术人如何赚钱",很real,告诉一些晚辈如何赚钱,以及拥有一些赚钱思维,我觉得这个真的很酷。后来才了解到他的疯人院和星球,所以立马入会,所幸会费不是很高(这要是再高个几百的,当时的我是肯定不会去"割韭菜"社群)。不过,在这两年里,虽然不曾在社群发表自己的观点,但是通过群里各种大牛、前辈们的探讨,在加上自己的思考,也的确让自己再技术之外成长了很多,所以,在这里我向大家极力推荐大胡子老师,他的公众号是姜胡说. 年初了,总该总结总结过去一年的成长和收获,也该去梳理梳理新一年的征程如何走下去,这里有一篇胡子老师的文章,觉得很有意思,感兴趣的可以去仔细读读早知道这个,我至少可以少奋斗3年,虽然有点标题...阅读全文

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

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

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 习惯研究所所长

leetcode --- 三步问题(DP)

三步问题 leetcode-golang 问题 有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。 示例1: 输入:n = 3 输出:4 说明: 有四种走法 示例2: 输入:n = 5 输出:13 提示: n范围在[1, 1000000]之间 解题思路 分析:设跳到i阶的方式有dp[i]种方式,那么跳往dp[i]的所有情况为 第 i-3 阶跳 3 阶,dp[i-3]种方式 第 i-2 阶跳 2 阶,dp[i-2]种方式 第 i-1 阶跳 1 阶,dp[i-1]种方式 dp[i] = dp[i-3] + dp[i-2] + dp[i-3] 疑问:为什么 i-3 阶跳到 i-2 阶不算...阅读全文

博文 2020-03-17 23:32:45 laijh

leetcode_1221

Golang: 思路:这题题意有点问题,输入也不是平衡字符串,对输出也有要求。简单来说,定义一个sum=0,从0开始往下走,找到一个平衡字符串,sum+1。然后从剩下的字符串里继续走,直到找完整个字符串为止。 代码如下: func balancedStringSplit(s string) int { i:=0 count:=0 sum:=0 for i<=len(s)-1{ if s[i]=='L'{ sum++ }else{ sum-- } if sum==0 { count++ } i++ } return count ...阅读全文

博文 2020-02-14 00:32:56 淳属虚构