程序员的故乡

 

2023年9月10日

“过早优化是万恶之源”这句话的源头

摘要: 来自于一篇大神的论文,而且原意没有一句话那么简单。 Premature optimization is the root of all evil Programmers waste enormous amounts of time thinking about, or worrying about, 阅读全文

posted @ 2023-09-10 21:45 程鑫 阅读(32) 评论(0) 推荐(0) 编辑

ClickHouse的WITH-ALIAS是如何实现的

摘要: ClickHouse的WITH-ALIAS是如何实现的 WITH-ALIAS包含相似但不同的两个特性: WITH <表达式> as <别名> WITH <别名> as <子查询> WITH <表达式> as <别名> 特性 以下SQL展示了 WITH <表达式> as <别名> 特性的用法。 wit 阅读全文

posted @ 2023-09-10 21:41 程鑫 阅读(57) 评论(0) 推荐(0) 编辑

2023年2月22日

如何与chatgpt共存

摘要: 作为程序员,专注于创造性劳动,而把重复性劳动任务交给chatgpt,要成为 需求 和 chatgpt的桥梁。 人工智能比如chatgpt越来越强,提问能力是人类的天赋,提问能力更为重要。 阅读全文

posted @ 2023-02-22 21:11 程鑫 阅读(25) 评论(0) 推荐(0) 编辑

2022年6月14日

多线程与同步

摘要: 多线程与同步 多线程并行执行能够大大提升程序运行效率,但是也要注意随之带来的线程间同步问题,避免竞态条件(“Race Condition”)引起的难以发现的bug。这篇总结一下线程的创建和销毁、等待和恢复、加锁和解锁、锁的类型以及在某些情况下可以替代锁的原子操作。 启动线程 创建std::threa 阅读全文

posted @ 2022-06-14 19:44 程鑫 阅读(69) 评论(0) 推荐(0) 编辑

2022年5月10日

C++编译器选择是否自动生成代码的背后逻辑

摘要: C++编译器选择是否自动生成代码的背后逻辑 编译器会为class和struct(实际上两者在C++中是一回事)自动生成构造函数、赋值操作符函数和析构函数。如果不是这样,那么开发者就必须自己写一些枯燥冗余的代码。然而编译器并不总是生成这些默认代码,当它觉得它无法生成正确的代码时,它就会拒绝生成默认代码 阅读全文

posted @ 2022-05-10 16:46 程鑫 阅读(54) 评论(0) 推荐(0) 编辑

2022年4月30日

用指针低三位存放额外信息的优化方法

摘要: 在8字节对齐的情况下指针的低三位都是0,在某些情况下我们需要维持跟指针对应的额外信息,例如标志位,但是又不想为此创建一个结构体,那就可以利用指针的低三位来存储额外信息。 阅读全文

posted @ 2022-04-30 23:32 程鑫 阅读(244) 评论(0) 推荐(1) 编辑

2022年3月25日

Clickhouse上用Order By保证绝对正确结果但代价是性能

摘要: 一些聚合函数的结果跟流入数据的顺序有关,CH文档明确说明这样的函数的结果是不确定的。这是为什么呢?让我们用explain pipeline来一探究竟。 以一个很简单的查询为例: select any( step ) from events group by request_id; events表的定 阅读全文

posted @ 2022-03-25 16:54 程鑫 阅读(447) 评论(0) 推荐(0) 编辑

2022年2月27日

Clickhouse执行处理查询语句(包括DDL,DML)的过程

摘要: Clickhouse执行处理查询语句(包括DDL,DML)的过程 总体过程 启动线程处理客户端接入的TCP连接; 接收请求数据,交给函数executeQueryImpl()处理; executeQueryImpl()处理查询的SQL语句字符串; 生成QueryPipeline实例,QueryPipe 阅读全文

posted @ 2022-02-27 21:11 程鑫 阅读(1028) 评论(0) 推荐(0) 编辑

2022年1月8日

Clickhouse的MergeTree表引擎存储结构

摘要: MergeTree存储的文件结构 一张数据表被分成几个data part,每个data part对应文件系统中的一个目录。通过以下SQL可以查询data parts的信息。 select table, name, path, active, * from `system`.parts where t 阅读全文

posted @ 2022-01-08 23:41 程鑫 阅读(491) 评论(0) 推荐(0) 编辑

Windows系统上搭建Clickhouse开发环境

摘要: Windows系统上搭建Clickhouse开发环境 总体思路 微软的开发IDE是很棒的,有两种:Visual Studio 和 VS Code,一个重量级,一个轻量级。近年来VS Code越来越受欢迎,因为她的轻量级和丰富的插件,更重要的是VS Code消耗资源更少,打开大项目的时候不会崩溃。因此 阅读全文

posted @ 2022-01-08 23:38 程鑫 阅读(746) 评论(0) 推荐(0) 编辑

导航