HappenLee的技术杂谈

56 篇文章
26 人订阅

全部文章

HappenLee

ClickHouse源码笔记2:聚合流程的实现

这是一个很重要的类,实现的也并不复杂。Block类作为ClickHouse的核心,后续的工作都是基于Block类展开的。

5710
HappenLee

ClickHouse源码笔记2:聚合流程的实现

前文我们**聊到ClickHouse是一个列式存储数据库,在内存之中用IColumn接口来作为数据结构表示数据。** **而Block则是这些列的集合,也就是说...

11440
HappenLee

C++雾中风景14:CRTP, 模板的黑魔法

C++11 引入了一个典型的CRTP的类:std::enable_shared_from_this 当我们有类需要被智能指针share_ptr管理,且需要通过...

3820
HappenLee

C++雾中风景14:CRTP, 模板的黑魔法

它通过继承和模板的联合应用,实现了一种"看似"继承自己的语法。这种编程的技法,无论是在STL还是Boost之中都被大量使用。像它的名字一样,看起来很Curiou...

9730
HappenLee

ClickHouse源码笔记1:聚合函数的实现

聚合函数: 顾名思义就是对一组数据执行聚合计算并返回结果的函数。 这类函数在数据库之中很常见,如:count, max, min, sum等等。

15330
HappenLee

C++雾中风景番外篇4:GCC升级二三事

这个我感觉是历史的遗留问题了,从C++11开始就不支持字符串字面量后面直接连接变量名,GCC 4.8.2应该是没有支持该编译检查,所以后续升级8.2的时候报了类...

7720
HappenLee

C++雾中风景13:volatile解惑

volatile这个单词在英文之中的意思是:易变的,不稳定的的含义。所以顾名思义,一旦变量通过了volatile关键词修饰之后,说明变量是易变的和不稳定的。而C...

18830
HappenLee

Linux 程序设计1:深入浅出 Linux 共享内存

说到共享内存,有过操作系统学习的童靴应该十分熟悉,往往聊到进程之间通信的4种方式时就能脱口而出(面试最常见的问题之一啊,哈哈哈~~):

50221
HappenLee

AeroSpike踩坑手记1:Architecture of a Real Time Operational DBMS论文导读

从论文的题目出发,这篇文章的核心在于实时操作数据库的架构,在论文引言之中对Aerospike的定位是一个高性能分布式数据库,用于处理实时的交互式在线服务。所以说...

29920
HappenLee

C++雾中风景番外篇3:GDB与Valgrind ,调试代码内存的工具

CoreDump时一个二进制的文件,进程发生错误崩溃时,内核会产生一个瞬时的快照,记录该进程的内存、运行堆栈状态等信息保存在core文件之中。做个简单的类比,c...

19020
HappenLee

C++雾中风景番外篇3:GDB与Valgrind ,调试代码内存的工具

>写 C++的同学想必有太多和内存打交道的血泪经验了,常常被 C++的内存问题搅的焦头烂额。(**写 core 的经验了**)有很多同学一见到 core 就两眼...

20230
HappenLee

C++雾中风景番外篇2:Gtest 与 Gmock,聊聊C++的单元测试

笔者目前使用的系统是Deepin 15.6,是基于 Debian jessie的一款国内发行版。安装 Gtest 和 GMock 十分简单:

46540
HappenLee

C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost

C++从11开始在标准库之中引入了线程库来进行多线程编程,在之前的版本需要依托操作系统本身提供的线程库来进行多线程的编程。(其实本身就是在标准库之上对底层的操作...

32210
HappenLee

C++雾中风景11:厘清C++类型转换(static_cast,dynamic_cast,reinterpret_cast,const_cast)

开门见山,先聊聊笔者对类型转换的看法吧。从设计上看,一门面向对象的语言是不一样提供类型转换的,这种方式破坏了类型系统。C++为了兼容C也不得不吞下这个苦果,在实...

13110
HappenLee

C++雾中风景番外篇:理解C++的复杂声明与声明解析

在编写C/C++代码时偶尔能看到如下的复杂声明:float(*(*e[10])(int*))[5]。我想你的第一反应一定是:MMP。虽然我们在实际工作之中是很少...

11920
HappenLee

大数据小视角5:探究SSD写放大的成因与解决思路

首先我们来看看什么是写放大,写放大(Write amplification)是2008年,由英特尔和SiliconSystems在论文之中首次提出:它表现为在S...

14930
HappenLee

C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost

C++从11开始在标准库之中引入了线程库来进行多线程编程,在之前的版本需要依托操作系统本身提供的线程库来进行多线程的编程。(其实本身就是在标准库之上对底层的操作...

15630
HappenLee

C++雾中风景11:厘清C++之中的类型转换

开门见山,先聊聊笔者对类型转换的看法吧。从设计上看,一门面向对象的语言是不一样提供类型转换的,这种方式破坏了类型系统。C++为了兼容C也不得不吞下这个苦果,在实...

15130
HappenLee

大数据小视角5:探究SSD写放大的成因与解决思路

首先我们来看看什么是写放大,写放大(Write amplification)是2008年,由英特尔和SiliconSystems在论文之中首次提出:它表现为在S...

36750
HappenLee

数据模型与查询语言 ------《Designing Data-Intensive Applications》读书笔记2

作为一个开发者来说,在一个复杂的应用程序中,是存在很多分层模型的,但基本思想还是一样的:每一层都提供了一个干净的数据模型,从而隐藏了底层的复杂性。通过这样的抽象...

20920

扫码关注云+社区

领取腾讯云代金券