我们已经知道,标准库中的 atomic 针对 int32/uint32、int64/uint64 提供了原子操作的方法和函数,但是如果针对 128 bit 的整数呢?
Go 朝着错误的方向发展
这是 Aliaksandr Valialkin 昨天刚写的一篇文章, 心有戚戚焉,所以特意翻译成中文,个人感觉,自从Rob Pike退休后,Go在大方向迷失了,正如老貘(Go101)所说,目前Go的开发就像完成KPI一样,也许, 大师不会再回来了。
Aliaksandr Valialkin是fasthttp的作者,也是VictoriaMetrics开发者,一位资深的Go程序员。
以下是译文。
Rob Pike 语录
1. 计算机领域里,没有什么问题是加一层间接寻址解决不了的。
There's nothing in computing that can't be broken by another level of indirection.
这是 Rob Pike 的修改版。
经常 level of insriection
误引用为 abstraction layer
。
原始版本出自 Butler Lampson
All problems in computer science can be solved by another level of indirection但是 David Wheeler 完成了下半句:
All problems in computer science can be solved by another level of indirection, except for the problem of too many layers of indirection.还有 Kevlin Henney 的下半句:
ll problems in computer science can be solved by another level of indirection, except for the problem of too many layers of indirection."
这句话幽默地指出,在计算机编程中,通过引入额外的抽象层或中间层,几乎可以解决任何复杂的问题。这种思路在软件设计和架构中很常见。
Rust tips #41 ~ #60
Tip #41
类似于 Go 语言中的通道(Go 的 channel
),Rust 中的 std::sync::mpsc
提供了一种线程间安全地读写数据的机制:
|
|
在这个例子中,我们创建了一个通道,然后在一个线程中发送了一个字符串。在主线程中,我们等待接收这个字符串并打印它。
Rust tips #21 ~ #40
Tip #21
在 Rust 中,我们经常使用 Clone()
或 Copy()
。这两者之间的区别是什么?
Copy
:支持Copy
的类型可以安全地通过字节复制的方式进行复制,可以类比 C 语言中的memcpy
函数。Clone
:支持Clone
的类型也可以被复制,但它通常需要执行一些逻辑操作来完成深拷贝。
如何将图片编码成base64?
图片的 base64 编码在多种上下文中都很有用。当需要通过旨在处理文本数据的媒体存储或传输图片时,它通常会被使用,比如嵌入到网页或者通过 API 上传图片。这篇文章将介绍如何使用 Go 标准库得到任何图片的 base64 编码的值。
Rust tips #1 ~ #20
Tip #001
Rust 不支持静态 vec(static vec
),但是最接近的是静态数组。例如,如果你想存储三个字符串的数组,可以尝试这样: static STRINGS : [&str;3] = ["a", "b", "c"]
Redka - 父亲是Redis,母亲是SQLite
Redka旨在使用SQLite重新实现Redis的优秀部分,同时保持与Redis API的兼容性。
有意思的特性:
- 数据不必完全装载在内存中。
- 支持ACID事务。
- 使用SQL视图以便于内省和报告。
- 同时提供进程内(Go API)和独立(RESP)服务器。
- 兼容Redis的命令和线路协议。
Redia 并不期望完全达到 Redis 那么高的性能,但是性能上也并不会落后很多。它的主要功能还是 SQL + Redis 的功能,集成了两种优秀产品 SQLite 和 Redis 的盛世美颜。