首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏ClickHouse 源码解析

    ClickHouse 源码解析(二):SQL 的一生(中)

    基于 ClickHouse version 22.10.1 学习并写下 ClickHouse 源码解析系列。由于 CK 版本迭代很快,可能导致代码可能有些出入,但是整体流程大差不差吧。 由于源码阅读过于枯燥,并且不太利于后续复习,所以在逻辑梳理时,我会使用思维导图或者流程图的方式来描述类与类之间的调用逻辑,后半部分会挑出核心的源码去分析。 在源码解析部分对 SelectQuery 这类查询语句如何构建 QueryPipeline 进行了分析。 ClickHouse 源码解析(一):SQL 的一生(上) 我们聚焦于执行 Pipeline 这部分,学习 SelectQuery 的调度流程。 源码解析上面内容大致了解了ExecutingGraph调度流程,接下来我们深入源码去学习 Graph 的节点初始化和 Graph 的调度。

    2K41编辑于 2022-11-18
  • 来自专栏ClickHouse 源码解析

    ClickHouse 源码解析(三):SQL 的一生(下)

    基于 ClickHouse version 22.10.1 学习并写下 ClickHouse 源码解析系列。由于 CK 版本迭代很快,可能导致代码可能有些出入,但是整体流程大差不差吧。 由于源码阅读过于枯燥,并且不太利于后续复习,所以在逻辑梳理时,我会使用思维导图或者流程图的方式来描述类与类之间的调用逻辑,后半部分会挑出核心的源码去分析。 ----概述上一篇ClickHouse 源码解析(二):SQL 的一生(中)在源码解析部分分析了 ExecutingGraph 的初始化流程,并且在文末画了调度节点状态轮转图,可以直观的看到一个节点是如何从 那么本篇我们紧接着从源码的角度去学习 ExecutingGraph 是如何被调度的,节点状态是如何在其中轮转的。逻辑梳理为了方便复习,先挂上之前画的思维导图。 ClickHouse 源码解析(一):SQL 的一生(上) 我们聚焦于执行 Pipeline 这部分,学习 SelectQuery 的调度流程。

    1.7K31编辑于 2022-12-19
  • 来自专栏落叶飞翔的蜗牛

    Java8 ConcurrentHashMap源码解析

    DEFAULT_CAPACITY = 16; //数组可能最大值,需要与toArray()相关方法关联 static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; DEFAULT_CONCURRENCY_LEVEL = 16; // 负载因子 private static final float LOAD_FACTOR = 0.75f; // 链表转红黑树阀值 > 8 进行扩容 *当为0时:代表当时的table还没有被初始化 *当为正数时:表示初始化或者下一次进行扩容的大小*/ private transient volatile int sizeCtl; 从源码中可以发现 cas更新baseCount,并判断是否需要扩容 现在我们来对每一步的细节进行源码分析,在第一步中,符合条件会进行初始化操作,我们来看看initTable()方法 /** * Initializes 当key值相等的元素形成的链表中元素个数超过8个的时候。

    52310发布于 2021-02-09
  • 来自专栏信数据得永生

    Yolov8 源码解析(四十)

    \yolov8\ultralytics\utils\benchmarks.py # 从 glob 模块中导入 glob 函数,用于文件路径的模糊匹配 import glob # 导入 os 模块,提供了许多与操作系统交互的函数 ", data=None, imgsz=160, half=False, int8=False, device="cpu", verbose=False ): """ Benchmark Default is Path(SETTINGS['weights_dir']) / 'yolov8n.pt'. int8 (bool, optional): Use int8-precision for the model if True. Default is False. 's' to the logger file with open("benchmarks.log", "a", errors="ignore", encoding="utf-8"

    83610编辑于 2024-09-13
  • 来自专栏clickhouse入门

    ClickHouse(07)ClickHouse数据库引擎解析

    数据类型对应MySQL ClickHouse UNSIGNED TINYINT UInt8 TINYINT Int8 建表语句DDL详细解析ClickHouse(07)ClickHouse数据库引擎解析ClickHouse(08)ClickHouse表引擎概况ClickHouse(09)ClickHouse合并树MergeTree ClickHouse(16)ClickHouse日志表引擎Log详细解析ClickHouse(17)ClickHouse集成JDBC表引擎详细解析ClickHouse(18)ClickHouse集成ODBC 表引擎详细解析ClickHouse(19)ClickHouse集成Hive表引擎详细解析ClickHouse(20)ClickHouse集成PostgreSQL表引擎详细解析ClickHouse(21) ClickHouse集成Kafka表引擎详细解析ClickHouse(22)ClickHouse集成HDFS表引擎详细解析ClickHouse(23)ClickHouse集成Mysql表引擎详细解析

    1K10编辑于 2024-03-10
  • 来自专栏clickhouse入门

    ClickHouse(18)ClickHouse集成ODBC表引擎详细解析

    ODBC集成表引擎使得ClickHouse可以通过ODBC方式连接到外部数据库.为了安全地实现 ODBC 连接,ClickHouse 使用了一个独立程序 clickhouse-odbc-bridge. 如果ODBC驱动程序是直接从 clickhouse-server中加载的,那么驱动问题可能会导致ClickHouse服务崩溃。 当有需要时,ClickHouse会自动启动 clickhouse-odbc-bridge。 ODBC桥梁程序与clickhouse-server来自相同的安装包.该引擎支持Nullable数据类型。 默认情况下(如果从软件包安装),ClickHouse以用户clickhouse的身份启动. 因此,您需要在MySQL服务器中创建并配置此用户。 (18)ClickHouse集成ODBC表引擎详细解析

    50220编辑于 2024-05-31
  • 来自专栏clickhouse入门

    ClickHouse(16)ClickHouse日志表引擎Log详细解析

    在读取数据时,ClickHouse 使用多线程。 每个线程处理不同的数据块。 Log 引擎为表中的每一列使用不同的文件。StripeLog 将所有的数据存储在一个文件中。 对每一次 Insert 请求,ClickHouse 将数据块追加在表文件的末尾,逐列写入。 ClickHouse 为每张表写入以下文件: data.bin — 数据文件。 读数据 {#table_engines-stripelog-reading-the-data} 带标记的文件使得 ClickHouse 可以并行的读取数据。 ClickHouse 在查询数据时使用多线程。每个线程读取单独的数据块并在完成后独立的返回结果行。这样的结果是,大多数情况下,输出中块的顺序和输入时相应块的顺序是不同的。 from_column=20421&from=20421 来源文章:ClickHouse(16)ClickHouse日志表引擎Log详细解析

    64310编辑于 2024-05-30
  • 来自专栏clickhouse入门

    ClickHouse(17)ClickHouse集成JDBC表引擎详细解析

    要实现JDBC连接,CH需要使用以后台进程运行的程序 clickhouse-jdbc-bridge。该引擎支持Nullable数据类型。 jdbc_table(`int_id`, `float`)SELECT toInt32(number), toFloat32(number * 1.0)FROM system.numbersJDBC表函数clickhouse 它与建表集成一样,需要clickhouse-jdbc-bridge程序才能运行。它支持可空类型(基于查询的远程表的DDL)。 datasource_column', 'show databases') b ON a.Database = b.name来源文章:ClickHouse(17)ClickHouse集成JDBC表引擎详细解析

    75420编辑于 2024-05-30
  • 来自专栏clickhouse入门

    ClickHouse(19)ClickHouse集成Hive表引擎详细解析

    OKTime taken: 36.025 secondshive > select * from test.test_orc;OK1 2 3 4 5 6.11 7.22 8 中建表ClickHouse中的表,从上面创建的Hive表中获取数据:CREATE TABLE test.test_orc( `f_tinyint` Int8, `f_smallint` Int16 中建表ClickHouse 中的表, 从上面创建的Hive表中获取数据:CREATE TABLE test.test_parquet( `f_tinyint` Int8, `f_smallint 中建表ClickHouse中的表, 从上面创建的Hive表中获取数据:CREATE TABLE test.test_text( `f_tinyint` Int8, `f_smallint` (19)ClickHouse集成Hive表引擎详细解析

    54520编辑于 2024-06-03
  • 来自专栏用户8771298的专栏

    react源码解析8.render阶段

    react源码解析8.render阶段 视频讲解(高效学习):进入学习 往期文章: 1.开篇介绍和面试题 2.react的设计理念 3.react源码架构 4.源码目录结构和调试 5.jsx&核心api 6.legacy和concurrent模式入口函数 7.Fiber架构 8.render阶段 9.diff算法 10.commit阶段 11.生命周期 12.状态更新流程 13.hooks源码 14. */ 0b0000000000000000000; // 插入dom export const Placement = /* */ 0b00000000000010; 在源码

    40020编辑于 2021-12-13
  • 来自专栏react源码分析

    react源码解析8.render阶段

    */ 0b0000000000000000000;// 插入domexport const Placement = /* */ 0b00000000000010;在源码

    34040编辑于 2022-12-14
  • 来自专栏高级前端工程师学习必备

    react源码解析8.render阶段

    react源码解析8.render阶段 视频课程(高效学习):进入课程 课程目录: 1.开篇介绍和面试题 2.react的设计理念 3.react源码架构 4.源码目录结构和调试 5.jsx&核心api 6.legacy和concurrent模式入口函数 7.Fiber架构 8.render阶段 9.diff算法 10.commit阶段 11.生命周期 12.状态更新流程 13.hooks源码 14. ) } ReactDOM.render(<App />, document.getElementById("root")); 当执行完深度优先遍历之后形成的Fiber树: react源码 */ 0b0000000000000000000; // 插入dom export const Placement = /* */ 0b00000000000010; 在源码的 == null); //... } 最后生成的fiber树如下 react源码8.3 然后commitRoot(root);进入commit阶段

    57920发布于 2021-06-08
  • 来自专栏高级前端工程师必备

    react源码解析8.render阶段

    react源码解析8.render阶段 视频讲解(高效学习):进入学习 render阶段的入口 render阶段的主要工作是构建Fiber树和生成effectList,在第5章中我们知道了react入口的两种模式会进入 </>   ) } ReactDOM.render(<App />, document.getElementById("root")); 当执行完深度优先遍历之后形成的Fiber树: react源码 */ 0b0000000000000000000; // 插入dom export const Placement = /*                */ 0b00000000000010; 在源码的 那么我们的操作effectList指针如下(这张图是操作指针过程中的图,此时遍历到了app Fiber节点,当遍历到rootFiber时,h1,p节点会和rootFiber形成环状链表) react源码 == null);  //... } 最后生成的fiber树如下 react源码8.3 然后commitRoot(root);进入commit阶段

    45030编辑于 2021-12-06
  • 来自专栏用户8771298的专栏

    react源码解析8.render阶段

    react源码解析8.render阶段 视频讲解(高效学习):进入学习 往期文章: 1.开篇介绍和面试题 2.react的设计理念 3.react源码架构 4.源码目录结构和调试 5.jsx&核心api 6.legacy和concurrent模式入口函数 7.Fiber架构 8.render阶段 9.diff算法 10.commit阶段 11.生命周期 12.状态更新流程 13.hooks源码 14. </> ) } ReactDOM.render(<App />, document.getElementById("root")); 当执行完深度优先遍历之后形成的Fiber树: react源码 */ 0b0000000000000000000; // 插入dom export const Placement = /* */ 0b00000000000010; 在源码的 == null); //... } 最后生成的fiber树如下 react源码8.3 然后commitRoot(root);进入commit阶段

    37210编辑于 2021-12-01
  • 来自专栏JavaEdge

    Java8的TreeMap源码解析

    图解完毕,我们来看源码吧!

    45910发布于 2021-02-23
  • 来自专栏clickhouse入门

    ClickHouse(20)ClickHouse集成PostgreSQL表引擎详细解析

    ClickHouse尝试将数值映射到ClickHouse的数据类型。设置 external_table_functions_use_nulls 来定义如何处理 Nullable 列. 所有的连接、聚合、排序、IN [ array ]条件和LIMIT采样约束都是在 PostgreSQL 的查询结束后才在ClickHouse中执行的。 PostgreSQL 的 Array 类型会被转换为 ClickHouse 数组。 ', 'nice.table', 'postgrsql_user', 'password', 'nice.schema');来源文章: ClickHouse(20)ClickHouse集成PostgreSQL 表引擎详细解析

    89820编辑于 2024-06-04
  • 来自专栏clickhouse入门

    ClickHouse(21)ClickHouse集成Kafka表引擎详细解析

    kafka_schema – 如果解析格式需要一个 schema 时,此参数必填。kafka_num_consumers – 单个表的消费者数量。 ClickHouse可以接受和返回各种格式的数据。 以下kafka_format是支持的格式,ClickHouse可以接受和返回各种格式的数据。 配置与 GraphiteMergeTree 类似,Kafka 引擎支持使用ClickHouse配置文件进行扩展配置。可以使用两个配置键:全局 (kafka) 和 主题级别 (kafka_*)。 clickhouse也支持自己使用keyfile的方式来维护kerbros的凭证。

    1K20编辑于 2024-06-07
  • 来自专栏技术杂货店

    java集合【8】-- ArrayList接口源码解析

    下面的分析是基于1.8.0_261源码进行分析的。 1.1 ArrayList特点介绍 动态数组,使用的时候,只需要操作即可,内部已经实现扩容机制。 这个需要我们看源码里面的readOject()和writeOject()两个方法。其实就除了默认的序列化其他字段,这个elementData字段,还需要手动序列化和反序列化。 迭代器 源码中一共定义了三个迭代器: Itr:实现了Iterator接口,是AbstractList.Itr的优化版本。 ArrayListSpliterator:继承于Spliterator,Java 8 新增的迭代器,基于索引,二分的,懒加载器。 8. 小结一下 ArrayList是基于动态数组实现的,增加元素的时候,可能会触发扩容操作。扩容之后会触发数组的拷贝复制。

    56200发布于 2020-11-22
  • 来自专栏云数据仓库 ClickHouse

    ClickHouse源码导读:网络IO

    通过源码,发现ClickHouse的网络模型与 **1 Master线程/N Worker线程+非阻塞IO**模型类似,但有自己的特点。主要区别是,Worker线程并没有事件循环。 对于ClickHouse并未使用的网络模型,不在本文讨论范围内。 3. ClickHouse 网络IO设计 ClickHouse-Server支持多种协议,其中包括TCP、HTTP/HTTPS等。 代码追踪到这来,我们是知道 ClickHouse 网络IO处理的大概了,能够知道业务逻辑入口了。如果只想分析 ClickHouse 自身逻辑, 完全可由此打住,去分析 ClickHouse 代码。 结束 ClickHouse是一款优秀的开源OLAP数据库。分析其源码,有助于在生产环境中,更好地使用它。 本文梳理ClickHouse网络IO的设计与实现,通过关键代码片段,剖析其网络IO的内部原理。 这有助于加深对ClickHouse原理的理解。 更多ClickHouse技术交流问题,请留言,拉您进入ClickHouse技术交流群。

    1.4K43发布于 2020-08-26
  • 来自专栏公有云大数据平台弹性 MapReduce

    ClickHouse源码导读:网络IO

    通过源码,发现ClickHouse的网络模型与 **1 Master线程/N Worker线程+非阻塞IO**模型类似,但有自己的特点。主要区别是,Worker线程并没有事件循环。 对于ClickHouse并未使用的网络模型,不在本文讨论范围内。 3. ClickHouse 网络IO设计 ClickHouse-Server支持多种协议,其中包括TCP、HTTP/HTTPS等。 代码追踪到这来,我们是知道 ClickHouse 网络IO处理的大概了,能够知道业务逻辑入口了。如果只想分析 ClickHouse 自身逻辑, 完全可由此打住,去分析 ClickHouse 代码。 结束 ClickHouse是一款优秀的开源OLAP数据库。分析其源码,有助于在生产环境中,更好地使用它。 本文梳理ClickHouse网络IO的设计与实现,通过关键代码片段,剖析其网络IO的内部原理。 这有助于加深对ClickHouse原理的理解。 更多ClickHouse技术交流问题,请留言,拉您进入ClickHouse技术交流群。

    2.8K157发布于 2020-03-23
领券