Posts by Tag

go

Go 1.18初窥

less than 1 minute read

根据Go Blog: Go 1.18 is released!一文的概要,了解下Go 1.18的新特性。

Go构建产物版本的那些事

less than 1 minute read

本文简单讨论两个问题: (1)对于一个给定的go binary文件,如何获取构建它的go版本? (2)如何将go版本、构建时间、构建环境、git分支和commit id等信息植入到binary文件中?

Go 调度器有关资料

less than 1 minute read

(1)来自调度器作者的演讲视频,应该算是权威: Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency

Go string 循环操作

1 minute read

在Go中,string可以看作是字节切片,即[]byte。 字符串的长度 len(string) 是相应的字节切片的长度 对字符串取索引或者按照索引循环,取的也是其中的字节 对字符串按照索引和值做循环,取的是 rune 记住,type byte = uint8, type rune = int3...

Go内置log库

less than 1 minute read

Go语言内置的log库提供的API很简洁: Default方法返回内置的标准Logger:无prefix,日志写到 os.Stderr New方法用于自定义Logger,该方法的函数签名是 func New(out io.Writer, prefix string, flag int) *Logger。...

map 和 slice 声明初始容量

less than 1 minute read

对于map和slice,如果使用过程中需要做频繁的扩容操作,而这部分代码又是热点代码,那么就有必要对其做性能优化。 一个常见的优化手段是在变量声明时,若事先知道其后续大小,则可指定其容量,避免在扩充过程中频繁的resize或reallocation操作。

[笔记] Go Code Review Comments

less than 1 minute read

阅读了官方的 code review 建议文档,将其中有启发的或是此前未曾听过的观点记录下来。

go benchmark 使用

less than 1 minute read

执行基准测试的命令: go test -run=XXX -bench=. -benchmem -cpuprofile cpu.out -memprofile mem.out

go benchstat 工具

1 minute read

go 官方提供了一个 benchstat 的命令行工具,用于计算和比较 benchmark 的统计结果。

初识 DDD

1 minute read

看了一篇使用 go 语言实践 DDD 的文章,内容比较浅,但也了解了一些基本的概念。

Back to Top ↑

python

Python iterable & iterator

2 minute read

这里来梳理一下 python 中和 for 循环有关的两个概念:iterable 和 iterator。

python dataclass

less than 1 minute read

每个 Python 开发者或多或少都写过类似如下的代码: ```python class Foo: def init(self, attr_a, attr_b): self.attr_a = attr_a self.attr_b = attr_b

python 中的 DAO 模式

less than 1 minute read

在学习 Redis University 的 RU102PY-Week1 课程时,遇到了 DAO 模式。之前一直以为这种都是 Java 领域的概念,看来是误解了。

Flask 中的异常处理

less than 1 minute read

在开发 flask 应用时,一个常见的需求是能够全局捕获异常并根据异常类型返回相应的 response。 flask 框架提供了这种能力,通过注册 errorhandler 函数来实现。它会将某种异常和对应的异常处理函数“绑定”在一起,当异常发生时调用该处理函数。 一般地,可以在 create_app 函数中添加...

Python Exception Log

less than 1 minute read

今天学到的一个 Python 小技巧:如何正确地在日志中记录 exception? 方法就是,捕获到异常后打印异常信息,使用 repr(e) 而不是 str(e),因为前者包含了异常类型和异常的 message,而后者只有 message。

Python Context Manager

less than 1 minute read

如何管理资源是写代码时必须要注意的一个问题。这里的资源常常指的是文件描述符、锁、网络或数据库连接等。在很多语言中,往往通过 try-catch-finally 的范式来处理。但是 Python 提供了 with 语句来做这类事情,更为简便、优雅:

Handle AttributeError of NoneType object

less than 1 minute read

Python 是一种解释型语言,有时在运行的时候会对 None 对象获取属性值,从而抛出异常。例如: >>> foo = None >>> foo.bar Traceback (most recent call last): File "<stdin>", li...

Python boolness method

less than 1 minute read

Python 中有的对象是有 bool 属性的,比如空列表、空字符串、空字典、数字 0 都可以表示为 False。

Back to Top ↑

ClickHouse

【笔记】了解ClickHouse的稀疏主索引

less than 1 minute read

ClickHouse官网最近更新了文档,浏览时发现一篇文章对主索引介绍得非常详细,图文并茂,值得阅读学习:A Practical Introduction to Sparse Primary Indexes in ClickHouse

了解ClickHouse中的LowCardinality数据类型

less than 1 minute read

Low Cardinality 数据类型 用来“包装”其他的数据类型,语法是LowCardinality(data_type),这里的data_type可以是String,FixedString,Date,DateTime,除了Decimal外的其他数字类型。它本质上是对被包装的data_type做了字典编码,使...

了解ClickHouse中的part和partition

less than 1 minute read

part包含了一张表中部分行的数据。一个part在磁盘上就是一个单独的目录。 part 目录的命名规则:{partition_name}_{min_block_number}_{max_number_block}_{level},例如 202202_1_6017_451

了解ClickHouse中的数据压缩

less than 1 minute read

了解ClickHouse中的数据压缩有助于在配置、建表时选择恰当的压缩方法,减少数据占用的磁盘空间,节省资源。

Back to Top ↑

os

[笔记] Linux 命令基础

less than 1 minute read

《趣谈 Linux 操作系统》专栏第4讲笔记,记录下之前不太熟悉的命令。

Back to Top ↑

linux

[笔记] Linux 命令基础

less than 1 minute read

《趣谈 Linux 操作系统》专栏第4讲笔记,记录下之前不太熟悉的命令。

Back to Top ↑

go101

Back to Top ↑

goroutine

Go 调度器有关资料

less than 1 minute read

(1)来自调度器作者的演讲视频,应该算是权威: Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency

Back to Top ↑

system design

Scalability for Dummies 笔记

less than 1 minute read

阅读了一个系列博客 Scalability for Dummies,内容比较浅显易懂,讲述了 scalability 的基本概念和实践,适合我这种小白了。

Back to Top ↑

performance

go benchmark 使用

less than 1 minute read

执行基准测试的命令: go test -run=XXX -bench=. -benchmem -cpuprofile cpu.out -memprofile mem.out

go benchstat 工具

1 minute read

go 官方提供了一个 benchstat 的命令行工具,用于计算和比较 benchmark 的统计结果。

Back to Top ↑

prometheus

Back to Top ↑

tsdb

初识 TICK

less than 1 minute read

TICK 是Influx Data基于InfluxDB这个时序数据库打造的监控技术栈。下面来初步认识下它。

[论文阅读]Facebook Gorilla TSDB

1 minute read

最近看了一篇介绍 Facebook Gorilla 时序数据库的论文:Gorilla: A Fast, Scalable, In-Memory Time Series Database,做一些笔记摘要。

Back to Top ↑

first

开始一段旅程吧

less than 1 minute read

从这里出发,开始一段既平淡也不缺乏激情的旅程。

Welcome to Jekyll!

less than 1 minute read

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...

Back to Top ↑

golangci-lint

Back to Top ↑

sonarqube

Back to Top ↑

profile

go benchmark 使用

less than 1 minute read

执行基准测试的命令: go test -run=XXX -bench=. -benchmem -cpuprofile cpu.out -memprofile mem.out

go benchstat 工具

1 minute read

go 官方提供了一个 benchstat 的命令行工具,用于计算和比较 benchmark 的统计结果。

Back to Top ↑

map

map 和 slice 声明初始容量

less than 1 minute read

对于map和slice,如果使用过程中需要做频繁的扩容操作,而这部分代码又是热点代码,那么就有必要对其做性能优化。 一个常见的优化手段是在变量声明时,若事先知道其后续大小,则可指定其容量,避免在扩充过程中频繁的resize或reallocation操作。

Back to Top ↑

slice

map 和 slice 声明初始容量

less than 1 minute read

对于map和slice,如果使用过程中需要做频繁的扩容操作,而这部分代码又是热点代码,那么就有必要对其做性能优化。 一个常见的优化手段是在变量声明时,若事先知道其后续大小,则可指定其容量,避免在扩充过程中频繁的resize或reallocation操作。

Back to Top ↑

talk

Back to Top ↑

runtime

Back to Top ↑

database

[论文阅读]Facebook Gorilla TSDB

1 minute read

最近看了一篇介绍 Facebook Gorilla 时序数据库的论文:Gorilla: A Fast, Scalable, In-Memory Time Series Database,做一些笔记摘要。

[资料]了解LSM Tree

less than 1 minute read

在学习 VictoriaMetrics时,作者的文章提到其存储类似于ClickHost的MergeTree,而MergeTree又和LSM-Tree(Log Structured Merge Tree)相似,于是借此机会了解了下LSM Tree是什么东西和使用场景,初步整理如下。

Back to Top ↑

zookeeper

Back to Top ↑

jekyll

Welcome to Jekyll!

less than 1 minute read

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...

Back to Top ↑

tech

test blog

less than 1 minute read

一级标题 二级标题 三级标题 四级标题

Back to Top ↑

test

test blog

less than 1 minute read

一级标题 二级标题 三级标题 四级标题

Back to Top ↑

middleware

Back to Top ↑

MQ

Back to Top ↑

JMS

Back to Top ↑

AMQP

Back to Top ↑

vault

Intro to Vault

2 minute read

简介 Vault 是 HashCorp 公司出品的用于管理和存储各种密码、令牌、证书等的软件。

Back to Top ↑

network

Back to Top ↑

exception

Python Exception Log

less than 1 minute read

今天学到的一个 Python 小技巧:如何正确地在日志中记录 exception? 方法就是,捕获到异常后打印异常信息,使用 repr(e) 而不是 str(e),因为前者包含了异常类型和异常的 message,而后者只有 message。

Back to Top ↑

flask

Flask 中的异常处理

less than 1 minute read

在开发 flask 应用时,一个常见的需求是能够全局捕获异常并根据异常类型返回相应的 response。 flask 框架提供了这种能力,通过注册 errorhandler 函数来实现。它会将某种异常和对应的异常处理函数“绑定”在一起,当异常发生时调用该处理函数。 一般地,可以在 create_app 函数中添加...

Back to Top ↑

dao

python 中的 DAO 模式

less than 1 minute read

在学习 Redis University 的 RU102PY-Week1 课程时,遇到了 DAO 模式。之前一直以为这种都是 Java 领域的概念,看来是误解了。

Back to Top ↑

dataclass

python dataclass

less than 1 minute read

每个 Python 开发者或多或少都写过类似如下的代码: ```python class Foo: def init(self, attr_a, attr_b): self.attr_a = attr_a self.attr_b = attr_b

Back to Top ↑

vet

Back to Top ↑

swift

Back to Top ↑

codequality

Back to Top ↑

ascii

大小写字母转换技巧

less than 1 minute read

学到一个英文大小写字母间快速转换的小技巧: (1)大写转换成小写:和 0x20 做或运算,即: 'A' | 0x20 = 'a' (2)小写转换成大写:和 0xdf 做与运算,即: 'a' & 0xdf = 'A'

Back to Top ↑

programming

大小写字母转换技巧

less than 1 minute read

学到一个英文大小写字母间快速转换的小技巧: (1)大写转换成小写:和 0x20 做或运算,即: 'A' | 0x20 = 'a' (2)小写转换成大写:和 0xdf 做与运算,即: 'a' & 0xdf = 'A'

Back to Top ↑

setup

配置工作环境

less than 1 minute read

当拿到一台新的 mbp 时,要做哪些安装和配置来 setup 一个适合自己的舒适的工作环境呢? 我尝试在这里记录一下,并可能不时更新,为了方便之后的自己。

Back to Top ↑

ddd

初识 DDD

1 minute read

看了一篇使用 go 语言实践 DDD 的文章,内容比较浅,但也了解了一些基本的概念。

Back to Top ↑

async

Back to Top ↑

regex

Back to Top ↑

scalability

Scalability for Dummies 笔记

less than 1 minute read

阅读了一个系列博客 Scalability for Dummies,内容比较浅显易懂,讲述了 scalability 的基本概念和实践,适合我这种小白了。

Back to Top ↑

cache

Back to Top ↑

solid

Back to Top ↑

json

Back to Top ↑

memory

Back to Top ↑

javascript

Back to Top ↑

typescript

Back to Top ↑

jenkins

Back to Top ↑

log

Go内置log库

less than 1 minute read

Go语言内置的log库提供的API很简洁: Default方法返回内置的标准Logger:无prefix,日志写到 os.Stderr New方法用于自定义Logger,该方法的函数签名是 func New(out io.Writer, prefix string, flag int) *Logger。...

Back to Top ↑

string

Go string 循环操作

1 minute read

在Go中,string可以看作是字节切片,即[]byte。 字符串的长度 len(string) 是相应的字节切片的长度 对字符串取索引或者按照索引循环,取的也是其中的字节 对字符串按照索引和值做循环,取的是 rune 记住,type byte = uint8, type rune = int3...

Back to Top ↑

leak

Back to Top ↑

concurrency

Back to Top ↑

scheduler

Back to Top ↑

sheduler

Go 调度器有关资料

less than 1 minute read

(1)来自调度器作者的演讲视频,应该算是权威: Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency

Back to Top ↑

monitor

Back to Top ↑

data structure

[资料]了解LSM Tree

less than 1 minute read

在学习 VictoriaMetrics时,作者的文章提到其存储类似于ClickHost的MergeTree,而MergeTree又和LSM-Tree(Log Structured Merge Tree)相似,于是借此机会了解了下LSM Tree是什么东西和使用场景,初步整理如下。

Back to Top ↑

paper

[论文阅读]Facebook Gorilla TSDB

1 minute read

最近看了一篇介绍 Facebook Gorilla 时序数据库的论文:Gorilla: A Fast, Scalable, In-Memory Time Series Database,做一些笔记摘要。

Back to Top ↑

bloom filter

了解 Bloom Filter

less than 1 minute read

最近多次看到Bloom Filter这个数据结构,于是搜集了一些资料加以了解,整理如下。

Back to Top ↑

work

Back to Top ↑

api

Back to Top ↑

terminal

Back to Top ↑

shell

Back to Top ↑

color

Back to Top ↑

OS

fsync的含义

less than 1 minute read

fsync 是一个系统调用,用于强制将缓冲区中的数据写入磁盘。

Back to Top ↑

Linux

fsync的含义

less than 1 minute read

fsync 是一个系统调用,用于强制将缓冲区中的数据写入磁盘。

Back to Top ↑

system call

fsync的含义

less than 1 minute read

fsync 是一个系统调用,用于强制将缓冲区中的数据写入磁盘。

Back to Top ↑

influx

初识 TICK

less than 1 minute read

TICK 是Influx Data基于InfluxDB这个时序数据库打造的监控技术栈。下面来初步认识下它。

Back to Top ↑

telegraf

初识 TICK

less than 1 minute read

TICK 是Influx Data基于InfluxDB这个时序数据库打造的监控技术栈。下面来初步认识下它。

Back to Top ↑

version

Go构建产物版本的那些事

less than 1 minute read

本文简单讨论两个问题: (1)对于一个给定的go binary文件,如何获取构建它的go版本? (2)如何将go版本、构建时间、构建环境、git分支和commit id等信息植入到binary文件中?

Back to Top ↑

git

如何写好git commit messages

less than 1 minute read

How to Write a Git Commit Message Conventional Commits commitlint工具 Gist: Semantic Commit Messages Git commit message

Back to Top ↑

base64

理解Base64和Base32

less than 1 minute read

Base64和Base32是两种常见的编码方式。Base64早已接触过,比如在Basic Auth中对用户名和密码做编码,对图像做编码后将图像内容放在HTTP请求体中(在yitu工作时见过)。而Base32则是最近看ULID资料时看到的。

Back to Top ↑

base32

理解Base64和Base32

less than 1 minute read

Base64和Base32是两种常见的编码方式。Base64早已接触过,比如在Basic Auth中对用户名和密码做编码,对图像做编码后将图像内容放在HTTP请求体中(在yitu工作时见过)。而Base32则是最近看ULID资料时看到的。

Back to Top ↑

graphviz

使用Graphviz绘图

2 minute read

Graphviz是一款著名的图形可视化软件。我初次听闻该软件还是使用go pprof时,第一感觉挺酷的。

Back to Top ↑