- 博客(247)
- 资源 (1)
- 收藏
- 关注
原创 HoraeDB 2025 年的发展深度分析
HoraeDB 是一款高性能、分布式、云原生的时间序列数据库,于 2023 年底以 Apache 孵化项目形式开源。其核心源自蚂蚁集团开源的 CeresDB,经过团队 5 年深耕时序数据领域的打磨。HoraeDB 针对传统时序数据库存在的技术难题(如高基数标签组合的性能瓶颈、分布式方案不完备等)提出了解决方案,定位为新一代云原生时序数据库,既支持经典的时序工作负载也能胜任分析型负载。下文将从架构设计、技术细节、性能表现以及未来规划等方面,对 HoraeDB 在 2025 年的发展进行深入分析。
2025-02-05 17:23:14
849
原创 InfluxDB 2.0 到 3.0 技术架构演进与性能分析
InfluxDB 3.0 相比 2.0 在架构上进行了重大的技术升级。首先,核心代码由 Go 语言重写为 Rust,以利用 Rust 更高的性能和内存安全特性,从而显著提升数据库的性能、可靠性和安全性。其次,引入列式存储架构和 Apache Arrow 技术栈:InfluxDB 3.0 基于 Apache Arrow 的内存格式和 Apache DataFusion 查询引擎构建,这使其成为一个实时的列式时序数据库,相较于 2.x 基于行式存储和自研引擎的设计,3.0 借助 Arrow/DataFusion
2025-02-04 18:59:02
996
原创 2025年时序数据库发展方向和前景分析
随着物联网设备激增、实时监控需求上升和数据量爆炸式增长,时序数据库(Time Series Database, TSDB)正成为关键的数据基础设施。
2025-02-04 10:26:23
1637
原创 部首礻和衤的区别
视觉上,这两个部首非常相似,都有两个横线和一个垂直的下划线,但它们的上半部分有所不同:在“礻”,上半部分是类似“乍”的形状,而在“衤”,上半部分是类似“亠”的形状。这个小差异是它们的主要区别,它们所属的字和含义也因此不同。
2024-02-27 10:45:59
4309
原创 go.mod与module
在 Go 语言的项目中,go.mod文件是 Go Modules 依赖管理系统的核心文件之一。在go.mod文件中,module声明是用来定义当前项目的模块路径的。模块路径是项目中包的导入路径的前缀。下面是关于go.mod文件中modulemodule。
2024-01-03 16:54:14
984
3
原创 Go代码解密:理解byte和int8的边界行为
在这篇博文中,我们将深入探讨Golang中的二进制补码和类型转换。通过一个具体的代码示例,我们将揭示byte和int8类型在特定条件下的行为,并解释为什么这种行为会发生。我们将详细讨论补码的概念,以及如何应用补码来表示负数。此外,我们还将解释为什么在对byte和int8类型的值取负数时,结果可能会与我们的直觉不符。通过阅读这篇文章,你将更深入地理解Golang中的数值类型和二进制补码,以及它们在实际编程中的应用。
2023-10-25 10:48:38
395
原创 Go构建者模式
构建者模式是一种创建型设计模式,用于构建复杂的对象。它可以确保在一个 struct 有多个构造函数参数时依旧能保持代码的可读性与清晰性。
2023-10-17 17:42:11
495
原创 Go选项模式
选项模式是一种在 Go 语言中很常用的设计模式,特别是当你有一个结构体或函数,并且它有多个可选的配置选项时。该模式允许用户提供一系列的的函数来设置结构体的属性或修改函数的行为。函数类型定义了如何修改目标对象。这是提供自定义逻辑的关键。
2023-10-15 15:53:12
320
原创 mac安装python2
Python 2 于 2020 年 1 月 1 日宣布结束支持,包括 Homebrew 在内的许多项目和包管理器已经停止支持 Python 2。
2023-09-27 17:13:46
1284
原创 strconv使用指南
String Conversion,字符串转换strconv 是 Go 语言标准库中的一个「包」,提供了将字符串与基本数据类型(如整数、浮点数、布尔值)之间相互转换的功能。
2023-09-13 17:40:34
537
原创 Go中带标签的break/continue以及goto的差别
直接跳到标签所标记的最外层循环的下一个迭代,忽略当前迭代剩余的代码。直接跳出标签所标记的最外层循环,继续执行该循环之后的代码。goto可以无条件地跳转到程序中指定的标签处。在这种情况下,可以使用任意标签,不仅限于循环。
2023-08-17 20:53:11
3208
原创 Golang自定义类型与类型别名
类型别名则是给现有类型起一个新的名字,新的名字与原始类型在类型系统中是完全相同的。自定义类型可用于封装或抽象,而类型别名则可以用来确保向后兼容或简化类型名称。通过了解这些区别,可以更灵活地使用Go语言的类型系统来满足各种编程需求。类型别名则只是给现有类型起一个新名字,与原始类型在类型系统中完全相同。自定义类型会创建一个全新的类型,与原始类型在类型系统中是不兼容的。的别名,所以不会产生任何编译错误。,但它们在类型系统中是不同的。通过这种方式定义的类型是一个。有相同的底层结构,但是却与。
2023-08-14 19:45:17
4612
原创 B站播放器播放策略介绍
AV1:适合寻求最新、最高效编码技术的场景,尤其是在不受限于许可费用和复杂性的情况下。HEVC:适合需要高压缩效率但也需要广泛硬件支持的场景,尤其在可以承担许可费用的情况下。AVC:适合需要广泛兼容性和低硬件要求的场景,尤其是在不追求最高压缩效率的情况下。例如,与HEVC相比,AV1提供更高的压缩效率,意味着它能以更小的文件大小来存储同样质量的视频,这样可以节约存储空间和带宽。然而,AV1的编码和解码过程更为复杂,需要更多的计算资源和时间,这可能导致在某些硬件上编码和解码速度较慢。
2023-08-14 18:11:21
28385
原创 理解 Go 中的切片:append 操作的深入分析(篇2)
理解 Go 语言中 slice 的性质对于编程非常有益。下面,我将通过代码示例来解释切片在不同函数之间传递并执行 append 操作时的具体表现。的第一个元素,将其设为 2。本篇为第 2 篇,当切片的容量 cap 不够时。的第一个元素设为 1(这个更改也反映在。当新的底层数组准备好之后,我们再次更改。的容量已满(3/3),所以。操作会触发底层数组的扩容。
2023-08-14 11:57:02
4664
原创 理解 Go 中的切片:append 操作的深入分析(篇1)
理解 Go 语言中 slice 的性质对于编程非常有益。下面,我将通过两个代码示例来解释切片在不同函数之间传递并执行 append 操作时的具体表现。
2023-08-14 11:30:44
5056
3
原创 Golang字符串处理深入解析:探索 strings 标准库的全部方法
标准库提供了许多用于处理字符串的函数。包提供了强大的功能,用于在 Go 中操作和转换字符串。
2023-08-11 14:25:50
947
原创 Go中for循环的遮挡效应
在一个for循环中,如果我们在循环体内部声明了一个与初始化语句中的变量同名的变量,那么这个新变量会“遮挡”外部的同名变量。但这种遮挡只在声明它的那一行代码开始,直到循环体结束的范围内有效。当下一次循环开始时,外部的同名变量会重新显现,并继续使用for声明语句中的值。这一行代码就像是在房间的一角放了一个遮挡灯光的屏风。想象成一个房间里的灯泡,而。
2023-08-10 11:09:11
4133
原创 透明网关与不透明网关
透明网关:透明网关对于客户端和服务器来说是"不可见"的。客户端不需要知道网关的存在,也不需要对其进行特别的配置。所有的请求和响应都会自动地通过网关,而不需要任何人工干预。非透明网关:非透明网关对于客户端来说是"可见"的。客户端需要明确地向网关发送请求,然后网关将请求转发给服务器。透明网关和非透明网关各有优点和缺点。
2023-08-01 14:51:20
2741
原创 概念理解:幂等
在网络和分布式系统中,幂等性尤其重要。如果一个操作是幂等的,那么即使因为网络问题导致这个操作被执行多次,结果也不会受到影响。比如HTTP协议中,GET、PUT、DELETE方法设计为幂等的,但POST方法则不是。如果你可以多次调用一个函数,每次都得到相同的结果,那么我们就可以说这个函数是幂等的。例如,一个删除特定记录的函数通常是幂等的,因为无论你调用它多少次,那个记录最后都是被删除的。"幂等"是一个数学和计算机科学术语,描述的是一种属性,即一个操作可以被多次应用,但结果仍然不变。
2023-07-28 11:10:53
3570
原创 Go基准测试Benchmark
Go语言自带了一个强大的测试框架,其中包括基准测试(Benchmark)功能,基准测试用于测量和评估一段代码的性能。基准测试结果会显示每次操作的平均时间,可以通过这个结果来评估你的代码的性能,或者对比不同版本或不同实现的性能差异。基准测试函数的名字必须以"Benchmark"开头,后面跟着的是想要命名的测试名字,函数的唯一参数是一个指向。我们可以通过在Go的测试文件中编写特殊格式的函数来创建基准测试。标志后面跟着的是一个正则表达式,匹配你想要运行的基准测试函数的名字,是一个非常大的数,Go测试框架。
2023-07-27 14:47:45
3984
原创 Go分析堆/栈内存
在Go语言中,变量是否在栈上还是在堆上分配是由编译器在编译阶段进行"逃逸分析"决定的。如果一个变量只在函数作用域内部使用,它往往会被分配在栈上;如果一个变量被外部引用,或者被返回到函数外部,那么它就可能"逃逸"到堆上。编译器将输出关于变量如何被分配的信息。上述输出表明,在main.go的第14行,变量 x 逃逸到了堆。要查看一个Go程序的逃逸分析结果,你可以在构建程序时使用。
2023-07-26 15:12:59
4522
原创 如何理解闭包函数的特性(golang版)
即 makeAdder 函数接收了一个整数作为参数,并返回一个匿名函数。而返回的匿名函数就是闭包函数,因为它引用了 makeAdder 函数作用域中的变量 base,这就是闭包函数的结构定义。而在闭包函数特性这块,我们可以看到,在闭包函数里,我们首先令变量 base 的值为 10。这说明每一次调用闭包的时候,它里面的值还是初始值。特性:闭包可以在多次调用之间保持原始状态。在这个例子中,我们可以将函数。
2023-07-16 20:48:25
5191
原创 go语言中的string类型简介
在 Go 和 Java 中,字符串在内存中都被当作常量处理。函数:这种方法适用于你已经准备好所有需要拼接的字符串的情况,且允许我们在拼接的字符串中插入分隔符,这在某些情况下是必需的。但是这种方法会消耗大量内存。在 Go 语言中,字符串由 Unicode 字符组成,每个字符都可以用一个或多个字节来表示。来定义字符串,使用反引号定义的字符串不会对其内容进行任何的转义(例如文本中包含。类型:这种方法适用于你没有提前准备好所有需要拼接的字符串的情况。在 Go 中,String 是一种不可变的类型,不能被修改。
2023-07-16 14:58:44
4548
原创 go语言中的Scan函数简介
String scan,从字符串中读取数据。Sscanf 的用法与 Scanf 类似,只是会从字符串中读取数据而不是标准输入。:按照指定格式对输入进行解析。在 Go 语言中,从标准输入(默认是键盘)读取数据可以使用 fmt 包中的 Scan 和 Scanln 函数。:类似于 Scan,但是只能读取一行数据(将换行符视为终止),如果输入的数据格式不正确,将返回错误。:请勿混淆各种输入方式的用法。获取输入,但是却采用了。:注意这里是 &num。
2023-07-16 14:55:46
4932
原创 Go语言中的JSON库简介
Go 标准库中的包提供了 JSON 数据的编码和解码功能。在日常开发中,我们主要使用的函数有解析字符串类型的和,以及处理流式 JSON 数据的和。
2023-07-15 23:58:54
1287
原创 print与fmt.Print的区别
重定向到一个已经关闭或不可写的文件,或者发生了类似的问题,fmt.Println可能就会返回错误。在大多数情况下,fmt.Println不会返回错误。如果没有发生错误,我们将打印出写入的字节数。如果发生错误,我们将错误信息写入到。在这个示例中,我们打印了。
2023-07-15 23:18:15
448
原创 go mod vendor简明介绍
vendor 机制并不是一个完美的解决方案。它需要将所有的依赖都复制到 vendor 目录中,这可能会导致项目的大小变得非常大。另外,这可能会对代码审查和版本控制系统(如 Git)的性能产生负面影响。因此,从Go 1.11版本开始,使用 Go Modules 进行依赖管理已经成为了推荐的做法,而vendor机制逐渐被淡化。不过,vendor目录并没有被完全废弃。
2023-07-15 22:56:08
2214
原创 Go Module简明介绍
Go Modules 模式中,引入了项目级别的依赖管理,使得每个项目都可以独立管理自己的依赖关系。当我们使用 Go Modules 模式后,项目中会自动创建 go.mod 文件,其中记录了项目所依赖的模块及其版本信息,当我们引入一个新的依赖时,go.mod 也会被自动更新。的 GOPATH 模式中,所有 Go 代码都必须位于一个全局的 GOPATH 路径之下,这使得在不同项目中使用不同版本的依赖包非常困难。
2023-07-15 22:52:01
4604
原创 marshal为什么是序列化
这个词在很多情况下被翻译为 “序列化”,这是因为在英语中 “marshal” 一词有时用于表示将数据转换为可传输或存储的格式。这种转换通常涉及将数据结构或对象转换为字节流或类似的格式,以便在不同系统或组件之间进行通信。
2023-07-13 20:19:00
4245
原创 Golang版本控制器:gvm
要在Mac电脑上切换Golang版本,可以使用类似版本管理工具的工具来实现,例如。安装 Golang 版本(这里我安装了 2 个不同的版本)刷新系统配置使 gvm 生效。验证 Golang 版本。
2023-07-11 18:05:42
1096
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人