0%

Go 语言内置的程序性能分析工具 pprof 能让开发者清除地看到程序在运行时 CPU,以及内存的使用情况,借此,我们可以优化发现很多待优化的函数,查看性能瓶颈;例如,我们可以在测试的是记录程序 CPU 和 内存的采样,然后通过生成的火焰图查看。

生成 CPU 采样数据和内存采样数据:

go test -cpuprofile cpu.prof -memprofile mem.prof -bench . github.com/bigfile/bigfile/service

查看结果数据,这回自动打开浏览器渲染:

go tool pprof -http=”:8099” cpu.prof

阅读全文 »

看到公司的各种考试,我有点怕,不好好刷题就会被淘汰,为了养家糊口,我要好好学习。

阅读全文 »

Go语言中很多设计思想和工具都是传承自Plan9操作系统,Go汇编语言也是基于Plan9汇编演化而来。根据Rob Pike的介绍,大神Ken Thompson在1986年为Plan9系统编写的C语言编译器输出的汇编伪代码就是Plan9汇编的前身。所谓的Plan9汇编语言只是便于以手工方式书写该C语言编译器输出的汇编伪代码而已。

无论高级语言如何发展,作为最接近CPU的汇编语言的地位依然是无法彻底被替代的。只有通过汇编语言才能彻底挖掘CPU芯片的全部功能,因此操作系统的引导过程必须要依赖汇编语言的帮助。只有通过汇编语言才能彻底榨干CPU芯片的性能,因此很多底层的加密解密等对性能敏感的算法会考虑通过汇编语言进行性能优化。

对于每一个严肃的Gopher,Go汇编语言都是一个不可忽视的技术。因为哪怕只懂一点点汇编,也便于更好地理解计算机原理,也更容易理解Go语言中动态栈/接口等高级特性的实现原理。而且掌握了Go汇编语言之后,你将重新站在编程语言鄙视链的顶端,不用担心再被任何其它所谓的高级编程语言用户鄙视。

阅读全文 »

C/C++ 经过几十年的发展,积累了庞大的软件资产,他们很多已经久经考验而且性能足够优化。Go 语言要是可以站在 C/C++ 这个巨人的肩膀上,借助海量 C/C++ 软件资产,应用场景将会被无限扩展。

阅读全文 »

每个语言里面都有一些隐含的技巧,这些技巧在某些情况下可以极大提高生产力,利用语言的特性,提升代码效率。

阅读全文 »

知其然知其所以然,让我们搞明白 MySQL 背后的一些基础知识,不要再犯迷糊咯,MySQL 官网,在写 SQL,创建数据表的时候,知道自己的每一个数据类型选择,索引选择到底会如何影响性能。文本的配图,一些例子来源于极客时间教程 《MySQL实战45讲》,如有侵权,请联系我删除。

阅读全文 »

随着互联网的快速发展,安全问题日益凸现出来成为焦点,传统 Web 领域 HTTP 协议的透明文本传输容易造成信息泄漏,引发各种不安全问题,HTTPS 的到来,将会极大改善这一现状,全站 HTTPS 也是势在必行。部署 HTTPS 网站必不可少的部分就是 CA 证书,但是大多数证书颁发机构是收费的,自签名证书浏览器又不认,好在有 Let’s Encrypt 这样的机构,为安全的互联网世界贡献了极大的力量。

阅读全文 »

之所以说是坑,是因为不了解其背后的本质,当你站在历史的源头,主动寻求真相的时候,你就会发现一切皆是必然。

阅读全文 »

MySQL 的架构组成以及各层职责?

MySQL 是一个分层设计架构,总提上可以分为 Server 层和存储层两层。如下图所示:

阅读全文 »