博客园 - polarisxu
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=168817
2021-04-25T02:52:41Z
polarisxu
https://www.cnblogs.com/polaris1119/
feed.cnblogs.com
https://www.cnblogs.com/polaris1119/p/13539330.html
Go 切片的一种有趣内存泄漏方式 - polarisxu
今天我在看 Prashant Varanasi 的 Go 发布会演讲:使用火焰图进行生产分析(Analyzing production using Flamegraphs),在演讲开始的第 28 分钟他提到了一种涉及切片的有趣且棘手的内存泄漏。为了自我提升,我将在这里写一下该内存泄漏的一种形式,并说
2020-08-21T01:33:00Z
2020-08-21T01:33:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】今天我在看 Prashant Varanasi 的 Go 发布会演讲:使用火焰图进行生产分析(Analyzing production using Flamegraphs),在演讲开始的第 28 分钟他提到了一种涉及切片的有趣且棘手的内存泄漏。为了自我提升,我将在这里写一下该内存泄漏的一种形式,并说 <a href="https://www.cnblogs.com/polaris1119/p/13539330.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/p/13533089.html
Go 中的内联优化 - polarisxu
文讨论 Go 编译器是如何实现内联的以及这种优化方法如何影响你的 Go 代码。 *请注意:*本文重点讨论 gc,实际上是 golang.org 的 Go 编译器。讨论到的概念可以广泛用于其他 Go 编译器,如 gccgo 和 llgo,但它们在实现方式和功能上可能有所差异。 内联是什么? 内联就是把
2020-08-20T00:59:00Z
2020-08-20T00:59:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】文讨论 Go 编译器是如何实现内联的以及这种优化方法如何影响你的 Go 代码。 *请注意:*本文重点讨论 gc,实际上是 golang.org 的 Go 编译器。讨论到的概念可以广泛用于其他 Go 编译器,如 gccgo 和 llgo,但它们在实现方式和功能上可能有所差异。 内联是什么? 内联就是把 <a href="https://www.cnblogs.com/polaris1119/p/13533089.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/p/13527266.html
优化 Golang 服务来减少 40% 以上的 CPU - polarisxu
十年前,谷歌正在面临一个由 C++ 编译时间过长所造成的严重瓶颈,并且需要一个全新的方式来解决这个问题。谷歌的工程师们通过创造了一种新的被称作 Go (又名 Golang)的语言来应对挑战。这个新语言 Go 带来了 C++ 最好的部分(最主要的是它的性能和稳定性),又与 Python 的速度相结合,
2020-08-19T00:58:00Z
2020-08-19T00:58:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】十年前,谷歌正在面临一个由 C++ 编译时间过长所造成的严重瓶颈,并且需要一个全新的方式来解决这个问题。谷歌的工程师们通过创造了一种新的被称作 Go (又名 Golang)的语言来应对挑战。这个新语言 Go 带来了 C++ 最好的部分(最主要的是它的性能和稳定性),又与 Python 的速度相结合, <a href="https://www.cnblogs.com/polaris1119/p/13527266.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/p/13507589.html
Go 编译器内部知识:向 Go 添加新语句-第 2 部分 - polarisxu
这是探讨 Go 编译器两篇文章的最后一篇。在第 1 部分中,我们通过构建自定义的编译器,向 Go 语言添加了一条新语句。为此,我们按照此图介绍了编译器的前五个阶段: 在"rewrite AST"阶段前,我们实现了 until 到 for 的转换;具体来说,在gc/walk.go文件中,在编译器进行
2020-08-18T00:55:00Z
2020-08-18T00:55:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】这是探讨 Go 编译器两篇文章的最后一篇。在第 1 部分中,我们通过构建自定义的编译器,向 Go 语言添加了一条新语句。为此,我们按照此图介绍了编译器的前五个阶段: 在"rewrite AST"阶段前,我们实现了 until 到 for 的转换;具体来说,在gc/walk.go文件中,在编译器进行 <a href="https://www.cnblogs.com/polaris1119/p/13507589.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/p/13507583.html
在 Go 语言中,我为什么使用接口 - polarisxu
强调一下是我个人的见解以及接口在 Go 语言中的意义。 如果您写代码已经有了一段时间,我可能不需要过多解释接口所带来的好处,但是在深入探讨 Go 语言中的接口前,我想花一两分钟先来简单介绍一下接口。 如果您对接口很熟悉,请先跳过下面这段。 接口的简单介绍 在任一编程语言中,接口——方法或行为的集合,
2020-08-15T01:34:00Z
2020-08-15T01:34:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】强调一下是我个人的见解以及接口在 Go 语言中的意义。 如果您写代码已经有了一段时间,我可能不需要过多解释接口所带来的好处,但是在深入探讨 Go 语言中的接口前,我想花一两分钟先来简单介绍一下接口。 如果您对接口很熟悉,请先跳过下面这段。 接口的简单介绍 在任一编程语言中,接口——方法或行为的集合, <a href="https://www.cnblogs.com/polaris1119/p/13507583.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/p/13498828.html
使用 JSON 协议的 gRPC - polarisxu
JSON payload 实现简易的请求和响应的内省。 介绍 大家经常说 gRPC 是基于 Google Protocol Buffers payload 格式的,然而这不完全正确。gRPC payload 的默认格式是 Protobuf,但是 gRPC-Go 的实现中也对外暴露了 Codec in
2020-08-13T13:11:00Z
2020-08-13T13:11:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】JSON payload 实现简易的请求和响应的内省。 介绍 大家经常说 gRPC 是基于 Google Protocol Buffers payload 格式的,然而这不完全正确。gRPC payload 的默认格式是 Protobuf,但是 gRPC-Go 的实现中也对外暴露了 Codec in <a href="https://www.cnblogs.com/polaris1119/p/13498828.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/p/13479572.html
为什么你的 64-bit 程序可能占用巨大的虚拟空间 - polarisxu
出于很多目的,我从最新的 Go 系统内核开发源码复制了一份代码,在一个正常的运行环境中构建(和重新构建)它,在构建版本基础上周期性地重新构建 Go 程序。近期我在用 ps 查看我的一个程序的内存使用情况时,发现它占用了约 138 GB 的巨大虚拟空间(Linux ps 命令结果的 VSZ 字段),尽
2020-08-11T11:42:00Z
2020-08-11T11:42:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】出于很多目的,我从最新的 Go 系统内核开发源码复制了一份代码,在一个正常的运行环境中构建(和重新构建)它,在构建版本基础上周期性地重新构建 Go 程序。近期我在用 ps 查看我的一个程序的内存使用情况时,发现它占用了约 138 GB 的巨大虚拟空间(Linux ps 命令结果的 VSZ 字段),尽 <a href="https://www.cnblogs.com/polaris1119/p/13479572.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/p/13471589.html
Go 语言中,有时 nil 并不是一个 nil - polarisxu
今天,我遇到了一个 Go FAQ。首先,作为一个小小的 Go 语言测验,看看您是否在 Go playground 中运行该程序之前就能推断出它应该打印出的内容(我已经将程序放在侧边栏中,以防它在 Go playground 上消失)。该程序的关键代码是: type fake struct { io.
2020-08-10T10:57:00Z
2020-08-10T10:57:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】今天,我遇到了一个 Go FAQ。首先,作为一个小小的 Go 语言测验,看看您是否在 Go playground 中运行该程序之前就能推断出它应该打印出的内容(我已经将程序放在侧边栏中,以防它在 Go playground 上消失)。该程序的关键代码是: type fake struct { io. <a href="https://www.cnblogs.com/polaris1119/p/13471589.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/p/13462454.html
用 cgo 生成用于 cgo 的 C 兼容的结构体 - polarisxu
假设(并非完全假设,这里有 demo)你正在编写一个程序包,用于连接 Go 和其它一些提供大量 C 结构体内存的程序。这些结构可能是系统调用的结果,也可能是一个库给你提供的纯粹信息性内容。无论哪种情况,你都希望将这些结构传递给你的程序包的用户,以便他们可以使用这些结构执行操作。在你的包中,你可以直接
2020-08-09T05:41:00Z
2020-08-09T05:41:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】假设(并非完全假设,这里有 demo)你正在编写一个程序包,用于连接 Go 和其它一些提供大量 C 结构体内存的程序。这些结构可能是系统调用的结果,也可能是一个库给你提供的纯粹信息性内容。无论哪种情况,你都希望将这些结构传递给你的程序包的用户,以便他们可以使用这些结构执行操作。在你的包中,你可以直接 <a href="https://www.cnblogs.com/polaris1119/p/13462454.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/p/13460034.html
Go 中的动态作用域变量 - polarisxu
这是一个 API 设计的思想实验,它从典型的 Go 单元测试惯用形式开始: func TestOpenFile(t *testing.T) { f, err := os.Open("notfound") if err != nil { t.Fatal(err) } // ... } 这段代码有什么问
2020-08-08T11:38:00Z
2020-08-08T11:38:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】这是一个 API 设计的思想实验,它从典型的 Go 单元测试惯用形式开始: func TestOpenFile(t *testing.T) { f, err := os.Open("notfound") if err != nil { t.Fatal(err) } // ... } 这段代码有什么问 <a href="https://www.cnblogs.com/polaris1119/p/13460034.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/p/13440941.html
编写友好的命令行应用程序 - polarisxu
我来给你讲一个故事... 1986 年,Knuth 编写了一个程序来演示文学式编程 。 这段程序目的是读取一个文本文件,找到 n 个最常使用的单词,然后有序输出这些单词以及它们的频率。 Knuth 写了一个完美的 10 页程序。 Doug Mcllory 看到这里然后写了 tr -cs A-Za-z
2020-08-05T08:46:00Z
2020-08-05T08:46:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】我来给你讲一个故事... 1986 年,Knuth 编写了一个程序来演示文学式编程 。 这段程序目的是读取一个文本文件,找到 n 个最常使用的单词,然后有序输出这些单词以及它们的频率。 Knuth 写了一个完美的 10 页程序。 Doug Mcllory 看到这里然后写了 tr -cs A-Za-z <a href="https://www.cnblogs.com/polaris1119/p/13440941.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/p/13435836.html
Go:内存管理与内存清理 - polarisxu
Illustration created for “A Journey With Go”, made from the original Go Gopher, created by Renee French. 这篇文章基于 Go 1.13 版本。有关内存管理的讨论在我的文章 ”Go:内存管理与分配
2020-08-04T12:50:00Z
2020-08-04T12:50:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】Illustration created for “A Journey With Go”, made from the original Go Gopher, created by Renee French. 这篇文章基于 Go 1.13 版本。有关内存管理的讨论在我的文章 ”Go:内存管理与分配 <a href="https://www.cnblogs.com/polaris1119/p/13435836.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/archive/2010/10/20/1856727.html
深入理解String——之前六个题目答案解析 - polarisxu
此前polaris给出了六道关于String的题目,本来没有打算给出答案,应网友要求,今天抽时间把答案给出并做出了详细地分析。可以点击查看《深入理解String——之前六个题目答案解析》
2010-10-20T07:02:00Z
2010-10-20T07:02:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】此前polaris给出了六道关于String的题目,本来没有打算给出答案,应网友要求,今天抽时间把答案给出并做出了详细地分析。可以点击查看《深入理解String——之前六个题目答案解析》 <a href="https://www.cnblogs.com/polaris1119/archive/2010/10/20/1856727.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/archive/2010/10/12/1848388.html
全民IT时代到来了?学计算机很有前途?——淘宝2011校园招聘笔试感想 - polarisxu
悲剧!一上来就说悲剧,原因有二:悲剧之一,打车去笔试,结果题目都没见着;悲剧之二,由悲剧之一产生或想到的——难道全民IT时代到来了?学计算机就那么有前途?亦或很多人在IT行业成为悲剧……本文纯属个人想法,您也可以发表自己的感想……话说前天晚上就听同学说淘宝校园招聘要笔试了,时间是10月10号(星期日上午),地点清华大学...
2010-10-11T17:26:00Z
2010-10-11T17:26:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】悲剧!一上来就说悲剧,原因有二:悲剧之一,打车去笔试,结果题目都没见着;悲剧之二,由悲剧之一产生或想到的——难道全民IT时代到来了?学计算机就那么有前途?亦或很多人在IT行业成为悲剧……本文纯属个人想法,您也可以发表自己的感想……话说前天晚上就听同学说淘宝校园招聘要笔试了,时间是10月10号(星期日上午),地点清华大学... <a href="https://www.cnblogs.com/polaris1119/archive/2010/10/12/1848388.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/archive/2010/10/03/1841748.html
收集各种诡异的笔试面试题(不断更新) - polarisxu
要想找到一份好工作,笔试面试这关必须得通过。且先不说您的能力怎么样,有时觉得笔试面试就如同英语考试。一个“英语很好”的人,比如可以很流利的说英语,跟老外交流,然而,让他参加考研之类的英语考试,未必能够得到很高的分数,因为这类题本身就很诡异,考试需要有一定的技巧才行。当然,考试还是能够反映一个人的水平的。类似的,如果您很牛,但要找到一份好工作,好好复习一下笔试面试的知识还是很...
2010-10-03T14:11:00Z
2010-10-03T14:11:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】要想找到一份好工作,笔试面试这关必须得通过。且先不说您的能力怎么样,有时觉得笔试面试就如同英语考试。一个“英语很好”的人,比如可以很流利的说英语,跟老外交流,然而,让他参加考研之类的英语考试,未必能够得到很高的分数,因为这类题本身就很诡异,考试需要有一定的技巧才行。当然,考试还是能够反映一个人的水平的。类似的,如果您很牛,但要找到一份好工作,好好复习一下笔试面试的知识还是很... <a href="https://www.cnblogs.com/polaris1119/archive/2010/10/03/1841748.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/archive/2010/10/01/1839888.html
面试题:农夫养牛问题 - polarisxu
今天在群中,有人说到这个一个面试题:一头母牛在3—10岁的时候每年可以生一头小牛,生公牛和母牛的比率是50%,在牛12岁的时候就送入屠宰场买了。现在有一个农夫有1头1岁大的母牛,在母牛3岁的时候就送到附近的农场去配种,请问40年后这个农夫可能会有多少头牛,写出相关的代码或答题思路,最好用面向对象。polaris将代码(Java实现)写了一下,如有不对的地方欢迎指出。同时也欢迎您给出自己...
2010-10-01T06:23:00Z
2010-10-01T06:23:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】今天在群中,有人说到这个一个面试题:一头母牛在3—10岁的时候每年可以生一头小牛,生公牛和母牛的比率是50%,在牛12岁的时候就送入屠宰场买了。现在有一个农夫有1头1岁大的母牛,在母牛3岁的时候就送到附近的农场去配种,请问40年后这个农夫可能会有多少头牛,写出相关的代码或答题思路,最好用面向对象。polaris将代码(Java实现)写了一下,如有不对的地方欢迎指出。同时也欢迎您给出自己... <a href="https://www.cnblogs.com/polaris1119/archive/2010/10/01/1839888.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/polaris1119/archive/2010/09/28/1837493.html
谷歌笔试题(Google十二岁生日晚) - polarisxu
2010-9-27日是Google十二岁生日,就在生日当天,Google进行了一场宣讲会加笔试。Google果然不一般,宣讲会门外都站满了人,也可见竞争之激烈,据说只需要40个人参加面试,而笔试的人有1000之多,汗……polaris也赶去凑凑热闹,完全是打酱油的,就是想见见Google的题目。下面polaris给大家分享一个题目吧。这次笔试一共10道选择题,3道问答题...
2010-09-28T05:30:00Z
2010-09-28T05:30:00Z
polarisxu
https://www.cnblogs.com/polaris1119/
【摘要】2010-9-27日是Google十二岁生日,就在生日当天,Google进行了一场宣讲会加笔试。Google果然不一般,宣讲会门外都站满了人,也可见竞争之激烈,据说只需要40个人参加面试,而笔试的人有1000之多,汗……polaris也赶去凑凑热闹,完全是打酱油的,就是想见见Google的题目。下面polaris给大家分享一个题目吧。这次笔试一共10道选择题,3道问答题... <a href="https://www.cnblogs.com/polaris1119/archive/2010/09/28/1837493.html" target="_blank">阅读全文</a>