【翻译】Go 程序诊断
原文地址:https://tip.golang.org/doc/diagnostics
原文地址:https://tip.golang.org/doc/diagnostics
在 for 循环的 select case 中使用 break 和 continue
根据Go Blog: Go 1.18 is released!一文的概要,了解下Go 1.18的新特性。
本文简单讨论两个问题: (1)对于一个给定的go binary文件,如何获取构建它的go版本? (2)如何将go版本、构建时间、构建环境、git分支和commit id等信息植入到binary文件中?
(1)来自调度器作者的演讲视频,应该算是权威: Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency
原文:Go’s work-stealing scheduler
原文:A complete journey with Goroutines
Dave Cheney 的演讲总结:
记录下今天排查一个goroutine泄露问题的过程:
在Go中,string可以看作是字节切片,即[]byte。 字符串的长度 len(string) 是相应的字节切片的长度 对字符串取索引或者按照索引循环,取的也是其中的字节 对字符串按照索引和值做循环,取的是 rune 记住,type byte = uint8, type rune = int3...
Go语言内置的log库提供的API很简洁: Default方法返回内置的标准Logger:无prefix,日志写到 os.Stderr New方法用于自定义Logger,该方法的函数签名是 func New(out io.Writer, prefix string, flag int) *Logger。...
对于map和slice,如果使用过程中需要做频繁的扩容操作,而这部分代码又是热点代码,那么就有必要对其做性能优化。 一个常见的优化手段是在变量声明时,若事先知道其后续大小,则可指定其容量,避免在扩充过程中频繁的resize或reallocation操作。
看下面这段程序: ```go func main() { a := []int{1, 2, 3} fmt.Println(len(a), cap(a))
看下面这段程序: ```go package main
翻译、整理自:The Go Memory Model。
阅读了官方的 code review 建议文档,将其中有启发的或是此前未曾听过的观点记录下来。
视频地址:Go Anti-Patterns
序列化
使用 map 的注意事项
原文链接和视频
执行基准测试的命令: go test -run=XXX -bench=. -benchmem -cpuprofile cpu.out -memprofile mem.out
go 官方提供了一个 benchstat 的命令行工具,用于计算和比较 benchmark 的统计结果。
go vet check
记录工作中遇到的一个小问题。
这是阅读博客 Sync vs. Async Python: What is the Difference? 时记录下的笔记。
这里来梳理一下 python 中和 for 循环有关的两个概念:iterable 和 iterator。
每个 Python 开发者或多或少都写过类似如下的代码: ```python class Foo: def init(self, attr_a, attr_b): self.attr_a = attr_a self.attr_b = attr_b
在学习 Redis University 的 RU102PY-Week1 课程时,遇到了 DAO 模式。之前一直以为这种都是 Java 领域的概念,看来是误解了。
在开发 flask 应用时,一个常见的需求是能够全局捕获异常并根据异常类型返回相应的 response。 flask 框架提供了这种能力,通过注册 errorhandler 函数来实现。它会将某种异常和对应的异常处理函数“绑定”在一起,当异常发生时调用该处理函数。 一般地,可以在 create_app 函数中添加...
今天学到的一个 Python 小技巧:如何正确地在日志中记录 exception? 方法就是,捕获到异常后打印异常信息,使用 repr(e) 而不是 str(e),因为前者包含了异常类型和异常的 message,而后者只有 message。
如何管理资源是写代码时必须要注意的一个问题。这里的资源常常指的是文件描述符、锁、网络或数据库连接等。在很多语言中,往往通过 try-catch-finally 的范式来处理。但是 Python 提供了 with 语句来做这类事情,更为简便、优雅:
Python 是一种解释型语言,有时在运行的时候会对 None 对象获取属性值,从而抛出异常。例如: >>> foo = None >>> foo.bar Traceback (most recent call last): File "<stdin>", li...
Python 中有的对象是有 bool 属性的,比如空列表、空字符串、空字典、数字 0 都可以表示为 False。
学到一个英文大小写字母间快速转换的小技巧: (1)大写转换成小写:和 0x20 做或运算,即: 'A' | 0x20 = 'a' (2)小写转换成大写:和 0xdf 做与运算,即: 'a' & 0xdf = 'A'
原文地址:Understanding ClickHouse Data Skipping Indexes
ClickHouse官网最近更新了文档,浏览时发现一篇文章对主索引介绍得非常详细,图文并茂,值得阅读学习:A Practical Introduction to Sparse Primary Indexes in ClickHouse
Low Cardinality 数据类型 用来“包装”其他的数据类型,语法是LowCardinality(data_type),这里的data_type可以是String,FixedString,Date,DateTime,除了Decimal外的其他数字类型。它本质上是对被包装的data_type做了字典编码,使...
part包含了一张表中部分行的数据。一个part在磁盘上就是一个单独的目录。 part 目录的命名规则:{partition_name}_{min_block_number}_{max_number_block}_{level},例如 202202_1_6017_451
了解ClickHouse中的数据压缩有助于在配置、建表时选择恰当的压缩方法,减少数据占用的磁盘空间,节省资源。
在学习 VictoriaMetrics时,作者的文章提到其存储类似于ClickHost的MergeTree,而MergeTree又和LSM-Tree(Log Structured Merge Tree)相似,于是借此机会了解了下LSM Tree是什么东西和使用场景,初步整理如下。
在这里记录下学习system-design-primer的过程,希望不要放弃得太快。
缓存失效 Cache Invalidation
以下记录阅读教材 The Twitter Problem 的笔记。
阅读了一个系列博客 Scalability for Dummies,内容比较浅显易懂,讲述了 scalability 的基本概念和实践,适合我这种小白了。
看了一篇使用 go 语言实践 DDD 的文章,内容比较浅,但也了解了一些基本的概念。
《趣谈 Linux 操作系统》专栏第5讲笔记
这里记录一些学习过程中浏览到的工具和资料。
《趣谈 Linux 操作系统》专栏第4讲笔记,记录下之前不太熟悉的命令。
通过专栏开篇的题目知道自己对操作系统的了解到什么程度,有哪些知识点是盲区。
SonarQube 社区版不支持对 Swift 和 Objective-C 的扫描,需要借助于开源插件 sonar-swift 来实现。
记录一次接口耗时调优过程和体会。
当拿到一台新的 mbp 时,要做哪些安装和配置来 setup 一个适合自己的舒适的工作环境呢? 我尝试在这里记录一下,并可能不时更新,为了方便之后的自己。
TICK 是Influx Data基于InfluxDB这个时序数据库打造的监控技术栈。下面来初步认识下它。
阅读Prometheus storage: technical terms for humans记录笔记。
ZooKeeper Overview 内容
You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different wa...
You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different wa...
从这里出发,开始一段既平淡也不缺乏激情的旅程。
一级标题 二级标题 三级标题 四级标题
JMS vs AMQP
简介 Vault 是 HashCorp 公司出品的用于管理和存储各种密码、令牌、证书等的软件。
看了演讲PromCon 2017: Best Practices and Beastly Pitfalls - Julius Volz,记录一些有用的知识点:
最近看了一篇介绍 Facebook Gorilla 时序数据库的论文:Gorilla: A Fast, Scalable, In-Memory Time Series Database,做一些笔记摘要。
最近多次看到Bloom Filter这个数据结构,于是搜集了一些资料加以了解,整理如下。
本文简单总结下怎样在终端打印带颜色的字符串。
fsync 是一个系统调用,用于强制将缓冲区中的数据写入磁盘。
观看学习了Björn Rabenstein在PromCon 2016上的演讲The Prometheus Time Series Database。
How to Write a Git Commit Message Conventional Commits commitlint工具 Gist: Semantic Commit Messages Git commit message
Base64和Base32是两种常见的编码方式。Base64早已接触过,比如在Basic Auth中对用户名和密码做编码,对图像做编码后将图像内容放在HTTP请求体中(在yitu工作时见过)。而Base32则是最近看ULID资料时看到的。
Graphviz是一款著名的图形可视化软件。我初次听闻该软件还是使用go pprof时,第一感觉挺酷的。