引言 在当今的编程世界中,并发处理能力变得越来越重要。C++20 在并发方面带来了一些进步,使开发者能够更高效、更安全地编写多线程应用程序。这些进步主要包括: 作用域线程(S...
引言 在当今的编程世界中,并发处理能力变得越来越重要。C++20 在并发方面带来了一些进步,使开发者能够更高效、更安全地编写多线程应用程序。这些进步主要包括: 作用域线程(S...
ClickHouse性能调优 - 当磁盘IO是瓶颈的时候 引言 ClickHouse的性能调优问题是一个大的话题。虽然ClickHouse以其高速的数据处理能力而闻名,但在实...
手撸一个C++迭代器 先撸一个简单版本 C++语言的特点就是少了一个符号都会造成非常不同的结果。以下代码有个很致命的错误,不知道能否一眼看出来。 再撸一个可以跟ranges配...
引言 在过去,非结构化数据(如文本、图片、音频、视频)通常被认为难以在数据库中直接使用,因为这些数据类型的多样性和复杂性。然而,随着技术的发展,嵌入技术可以将非结构化数据(如...
STL库的ranges C++20的<ranges>库通过引入范围和视图的概念,不仅丰富了STL的功能,也引领了更现代、高效、表现力强的编程实践。它鼓励开发者采用更函数式和声...
ClickHouse中的各种设置 ClickHouse中的设置有几百个,下面对这些设置做了一个简单的分类。
static_cast caution It is likely to lead unexpected behavior and maybe dangerous to inv...
ClickHouse中“大列”造成的JOIN的内存超限问题 “大列”是指单行数据量非常大的列,通常是100KiB以上。这样的列会导致JOIN(通常LEFT JOIN 和 IN...
ClickHouse的JOIN算法选择逻辑以及auto选项 ClickHouse中的JOIN的算法有6种: Direct; Partial merge; Hash; Grac...
Linux性能调优技术概览 概述 这里的Linux性能调优主要是关于Linux系统上程序的性能跟踪,因为只有收集到足够的准确的性能数据才能找到程序和系统的性能瓶颈。Linux...
MergeTree表的三种格式 MergeTree表引擎有三种格式:Compact、Wide和In-memory,前两个为主要格式。具体区别是: Compact - 所有的列...
concept 这套语法优化了模板编程,替代了原来的SFINAE编程模式,通过给模板类参数加入限制条件,使得代码可读性更强、编译更快、错误提示更容易理解。 SFINAE编程模...
深入使用noexcept 简介 noexcept是C++11引入的,表明函数是否会抛出异常。正确使用它可以优化性能。 noexcept使用语法有两种: noexcpet no...
如何提高程序性能 本文主要探讨提高程序性能的途径、方法和最佳实践。 总体方向 尽可能利用缓存 尽可能利用多核 还有一个小方向是尽可能减少内存复制,这个产生出右值引用、移动构造...
多线程与同步 多线程并行执行能够大大提升程序运行效率,但是也要注意随之带来的线程间同步问题,避免竞态条件(“Race Condition”)引起的难以发现的bug。这篇总结一...
__restrict 是 C 语言中的关键字,它的作用是为编译器带来附加信息。当对指针增加 __restrict 修饰之后,表示当前指针在存活期间是独占内存的,不会有其他指针...
编译器会为class和struct(实际上两者在C++中是一回事)自动生成构造函数、赋值操作符函数和析构函数。如果不是这样,那么开发者就必须自己写一些枯燥冗余的代码。然而编译...
在8字节对齐的情况下指针的低三位都是0,在某些情况下我们需要维持跟指针对应的额外信息,例如标志位,但是又不想为此创建一个结构体,那就可以利用指针的低三位来存储额外信息。 比如...
一致性哈希算法在1997年由麻省理工学院[https://baike.baidu.com/item/%E9%BA%BB%E7%9C%81%E7%90%86%E5%B7%A5%...