zhongyuankai
码龄6年
关注
提问 私信
  • 博客:196,374
    社区:1
    动态:17
    196,392
    总访问量
  • 106
    原创
  • 656,029
    排名
  • 105
    粉丝
  • 2
    铁粉

个人简介:done

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2018-09-02
博客简介:

qq_43115606的博客

查看详细资料
个人成就
  • 获得149次点赞
  • 内容获得45次评论
  • 获得313次收藏
  • 代码片获得224次分享
创作历程
  • 1篇
    2022年
  • 4篇
    2021年
  • 35篇
    2020年
  • 68篇
    2019年
成就勋章
TA的专栏
  • clickhouse
    4篇
  • 内功修神
    6篇
  • 数据结构与算法
    10篇
  • 个人经历
    2篇
  • java
    3篇
  • 设计模式
    1篇
  • Kafka引擎
    2篇
  • Spark内核
    2篇
  • 多线程
    1篇
  • 问题总结
    2篇
  • 深度理解Java虚拟机
    6篇
  • LeetCode_bfs
    1篇
  • LeetCode_链表
    3篇
  • LeetCode_递归
    1篇
  • LeetCode_dfs
    3篇
  • LeetCode_位运算
    3篇
  • LeetCode_并查集
    1篇
  • LeetCode_排序
    3篇
  • LeetCode_栈
    4篇
  • lanqiao_数学
    3篇
  • lanqiao_动态规划
    4篇
  • lanqiao_二分查找
    2篇
  • lanqiao_dfs
    8篇
  • lanqiao_查并集
    2篇
  • lanqiao_排列组合+check
    3篇
  • lanqiao_other
    1篇
  • 天梯赛
    16篇
  • linux
    4篇
  • 大数据项目
    5篇
  • 算法
    1篇
  • 错误解决
    3篇
兴趣领域 设置
  • 大数据
    hadoophivesparketl
  • 人工智能
    scikit-learn
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

179人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Clickhouse 分布式表的写入原理

表引擎是一种特殊的表引擎,自身不会存储任何数据,而是通过读取或写入其他远端节点上的表进行数据处理的表引擎,该表引擎需要依赖各个节点的本地表来创建。 表引擎有5个参数,前三个参数是指定本地表所在集群的数据库和表名:这里略过 SQL 的词法解析、语法解析等步骤,直接从输出流的方法开始。在中数据都是由来组织的,调用方法写一批数据。上面可以看到写入的过程中分为同步写和异步写,通过来控制,该参数的值是由配置的,默认为。接下来分别介绍同步写和异步写。同步写主要分为以下四步:下面将详细分析同步写的前三步。在方法初始
原创
发布博客 2022.07.05 ·
3832 阅读 ·
3 点赞 ·
2 评论 ·
13 收藏

Clickhouse ReplicatedMergeTree 后台任务的工作原理

1.BackgroundPool在ReplicatedMergeTree中所有的后台任务都需要在全局的后台线程池中调度执行,后台线程池在ck有两种实现,分别是BackgroundProcessingPool和BackgroundSchedulePool。BackgroundProcessingPool内部会维护一个任务队列,该任务队列会基于下一次执行的时间进行优先级排序,内部线程会根据顺序取任务执行,任务最大的并发数会等于pool_size。BackgroundSchedulePool内部会维护一个
原创
发布博客 2021.07.24 ·
1459 阅读 ·
3 点赞 ·
1 评论 ·
2 收藏

Clickhouse-copier 源码剖析

clickhouse-copier 用于集群间数据的迁移,也可以用于集群内数据的均衡。接下来会针对源码进行深度剖析,如果觉得对你有帮助别忘记点赞关注。工具参数daemon — 后台运行copier工具,进程将在后台启动。 config — zookeeper.xml的存放路径,用来连接zookeeper集群。 task-path — zookeeper上的任务节点路径,该路径中的内容用来存储任务,以及多个copier进程间的协调信息,同一任务的不同copier进程要保持一致的配置路径。 t
原创
发布博客 2021.04.05 ·
1234 阅读 ·
4 点赞 ·
2 评论 ·
5 收藏

clickhouse源码阅读 - server启动

clickhouse源码阅读 - server启动Clickhouse作为Olap的核武器,学习优秀的代码设计,从clickhosue服务如何启动开始。程序启动首先进入progrms/main.cpp,clickhouse_applications会注册启用的application的main函数,其中可以看到mainEntryClickHouseServer,这就是clickhouse服务端的主函数。using MainFunc = int (*)(int, char**);/// Add an
原创
发布博客 2021.01.10 ·
1197 阅读 ·
1 点赞 ·
3 评论 ·
6 收藏

Java 正则表达式使用Bug

冷静,我们是专业的今天想用正则表达式更改 clickhouse 建表语句的表引擎,遇到了坑爹的问题。"ENGINE = ReplicatedMergeTree(
" + " '/clickhouse/tables/{shard}/ihap_stream/ihap_cc_case_v2_local',
" + " '{replica}'
" + ") PARTITION BY toYYYYMMDD(p
原创
发布博客 2021.01.01 ·
1132 阅读 ·
1 点赞 ·
3 评论 ·
0 收藏

[Kafka 引擎]Kafka Producer 内存管理

码字不易,先关/赞在看个人博客地址KafkaProducer内存管理kafka生产者send一条记录(record)后并没有直接发送到broker,而是先将它保存到内存(RecordAccumulator)中,用于压缩之后批量发送,这里内存直接分配在堆上,如果对它不加以限制在消息生产速率足够高时很可能频繁出现fullgc乃至oom,另一方面频繁的内存申请和释放操作也很吃系统资源,因此Kafka自建了内存池BufferPool管理内存。ByteBuffer 介绍内存的创建和释放是比较消耗资源的,为了
原创
发布博客 2020.07.19 ·
930 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

[内功修神]MySQL 索引原理

MySQL 索引原理现在互联网应用中对数据库的使用多数都是读较多,比例可以达到 10:1。并且数据库在做查询时 IO 消耗较大,所以如果能把一次查询的 IO 次数控制在常量级那对数据库的性能提升将是非常明显的,因此基于 B+ Tree 的索引结构出现了。B+ Tree 的索引如图所示是 B+ Tree 的数据结构。是由一个一个的磁盘块组成的树形结构,每个磁盘块由数据项和指针组成。所有的数据都是存放在叶子节点,非叶子节点不存放数据。查找过程以磁盘块1为例,指针 P1 表示小于 17 的磁
原创
发布博客 2020.06.13 ·
224 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[内功修神]设计模式总结

设计模式总结这篇文章主要是在看过设计模式的基础上去理解常见设计模式。码字不易,还请点波关注。文章目录设计模式总结创建类模式工厂方法模式VS建造者模式抽象工厂模式VS建造者模式结构类模式代理模式VS装饰者模式适配器模式桥梁模式门面模式行为类模式命令模式VS策略模式策略模式VS状态模式观察者模式责任链模式中介者模式创建类模式创建类模式包括工厂方法模式、建造者模式、抽象工厂模式、单例模式和原型模式,它们都能够提供对象的创建和管理职责;其中单例模式和原型模式比较容易理解,单例模式是要保持在内存中只有一个对
原创
发布博客 2020.05.30 ·
158 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[Kafka引擎] Producer 端源码分析

Producer 端源码分析总结消息发送的流程图:源码体现:KafkaProduce{send(){ // 对消息进行拦截处理 ProducerRecord<K, V> interceptedRecord = this.interceptors.onSend(record); doSend(){ // 1. 确认数据要发送到的 topic 的 metadata 是可...
原创
发布博客 2020.05.03 ·
228 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Git操作

托管中心维护远程库内网:可以自己搭建一个GitLab服务器外网:可以使用码云、Github版本控制工具集中式:CSV ,SVN,VSS分布式:Git,Darcs,…Git命令行操作1.1本地库初始化进入文件夹git init注意:生成的 .git 目录中存放的是本地库相关文件,不要删除1.2设置签名项目(仓库)级别仅在当前本地库有效git config us...
原创
发布博客 2020.03.29 ·
590 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

本科渣渣已拿一线互联网大厂offer

看着标题有点吓人,实力未必有那么强,但是确实是自己第一次走出校园的一段经历。如果对找工作也还很迷茫的话,那么这篇文章确实值得一看。码字不易,还请点个关注/赞;坚持到最后会有一点小福利哦从此处看页面更加简洁美观二话不说先上图:经过半个多月的面试,拿到了滴滴和蘑菇街的offer,虽然没有拿到bat的offer但是对于我来说这个结果还是可以的。面过啊里和腾讯最后还是失败了,确实能感觉到其...
原创
发布博客 2020.03.29 ·
11670 阅读 ·
40 点赞 ·
9 评论 ·
114 收藏

[Spark内核]通讯架构源码解析

熟悉的套路,先大概的了解spark的通讯架构怎么样工作,然后再去跟踪源码。Spark2.x版本使用Netty通讯框架作为内部通讯组件。Spark通讯框架中各个组件(Client/Master/Worker)可以认为是一个个独立的实体,各个实体之间通过消息来进行通信,如图:Endpoint(Client/Master/Worker)有1个InBox和N个OutBox(N>=1,N取决...
原创
发布博客 2020.03.21 ·
2045 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

[Spark内核]Yarn集群模式部署流程源码分析

在实际工厂环境下使用的绝大多数的集群管理器是Hadoop YARN,因此我们关注的重点是Hadoop YARN模式下的Spark集群部署。先熟悉一下Yarn集群模式下spark部署流程,然后再跟踪源码进行分析。任务提交后会和ResourceManager通讯申请启动ApplicationMaster,随后ResourceManager分配container;在合适的NodeManager...
原创
发布博客 2020.03.20 ·
1545 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Java8 新特性

1. Lambda 表达式一、1.1. Lambda 表达式的基础语法:Java8中引入了一个新的操作符 “->” 该操作符称为箭头操作符或 Lambda 操作符箭头操作符将 Lambda 表达式拆分成两部分:左侧:Lambda 表达式的参数列表;右侧:Lambda 表达式中所需执行的功能, 即 Lambda 体;public void test1(){ int num ...
原创
发布博客 2020.03.17 ·
1747 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

多线程代码实践-大厂面试题

大厂面试手撕题,考察多线程掌握的程度,弄懂这几道,多线程手写的话应该没啥问题,记得点波关注、点波赞1. 手写阻塞队列思路分析:当队列为空的时候,take操作应该阻塞。当队列为满的时候,put操作应该阻塞。synchronized锁代码实现:class MyBlockingQueue<T> { // 队列,存放资源 private Object[]...
原创
发布博客 2020.03.10 ·
2453 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

java.lang.IllegalMonitorStateException的解决方法

java.lang.IllegalMonitorStateException是在调用object的wait和notify,notifyAll方法的时候可能会出现的异常;今天碰到了这个异常就打算弄懂这部分内容。在调用上述三个方法的时候,线程必须获得该对象的对象级别锁,换句话说,出现这个异常的原因是因为,调用wait和notify,notifyAll的对象没有在同步方法(synchronized...
原创
发布博客 2020.03.10 ·
2213 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

ArrayBlockingQueue源码中为什么方法要用局部变量引用类变量

先上图当我看到这代码的时候,很奇怪为什么不直接用 this.items[putIndex] = x; 难道这样做效率更高?并不仅仅是 ArrayBlockingQueue ,还有 很多集合类,只要涉及到 set ,put 方法的 ,基本都是这样类似的 做法;先解释这个问题,可以从底层的字节码入手,看个例子;final Object[] items = new Object[10...
原创
发布博客 2020.03.10 ·
1990 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

[数据结构与算法]第13章 图的遍历

深度优先遍历从初始访问结点出发,初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点, 可以这样理解:每次都在访问完当前结点后首先访问当前结点的第一个邻接结点。广度优先遍历广度优先遍历需要使用一个队列以保持访问过的结点的顺序,以便按这个顺序来访问这些结点的邻接结点;import java.ut...
原创
发布博客 2020.03.09 ·
2198 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

剑指offer题集

文章目录1. 二维数组中的查找 *2. 替换空格3. 从尾到头打印链表4. 重建二叉树 *5. 用两个栈实现队列6. 旋转数组的最小数字 *7. 斐波那契数列8. 跳台阶 *9. 变态跳台阶 *10. 矩形覆盖 *11. 二进制中1的个数12. 数值的整数次方 * (简单快速幂)13. 调整数组顺序使奇数位于偶数前面14. 链表中倒数第k个节点* (快慢指针)15. 反转链表16. 合并两个排序的...
原创
发布博客 2020.03.07 ·
2846 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

[内功修神]Java NIO

文章目录1. 浅析I/O模型1.1. 什么是同步?什么是异步?1.2. 什么是阻塞?什么是非阻塞?1.3. 什么是阻塞IO?什么是非阻塞IO?1.4. 什么是同步IO?什么是异步IO?1.5. 五种IO模型1.5.1. 阻塞IO模型(BIO)1.5.2. 非阻塞IO模型1.5.3. 多路复用IO模型(NIO)1.5.4. 信号驱动IO模型1.5.5. 异步IO模型 (Asynchronous IO...
原创
发布博客 2020.03.07 ·
2286 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏
加载更多