TheLudlows
码龄9年
关注
提问 私信
  • 博客:164,250
    164,250
    总访问量
  • 92
    原创
  • 1,656,362
    排名
  • 7,045
    粉丝
  • 25
    铁粉

个人简介:这个世界上还有什么比自己写的代码运行在一亿的电脑上更酷的事情吗,如果有那就是让这个数字再扩大十倍。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:陕西省
  • 加入CSDN时间: 2016-03-05
博客简介:

TheLudlows的博客

博客描述:
会当凌绝顶
查看详细资料
个人成就
  • 获得106次点赞
  • 内容获得43次评论
  • 获得239次收藏
创作历程
  • 1篇
    2021年
  • 6篇
    2020年
  • 25篇
    2019年
  • 39篇
    2018年
  • 22篇
    2017年
成就勋章
TA的专栏
  • Algorithm
    9篇
  • Rust
    1篇
  • Netty系列
    24篇
  • TSDB
    4篇
  • 限流降级
    8篇
  • Java杂货铺
    39篇
  • DSS
    4篇
  • 其他
    1篇
创作活动更多

如何做好一份技术文档?

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

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

Talent Plan Rust课程总结

首先非常感谢PingCAP能组织一个非常专业的Rust课程,这对于Rust爱好者来说是一次非常好学习的机会,感谢PingCAP为Rust做出的贡献。该课程持续的做了一个月左右,感谢Brian Anderson大神提供优秀的实现供学员参考。课程的目标是用Rust逐步实现一个BitCask数据库,详细请看https://github.com/pingcap/talent-plan/tree/master/courses/rustProject-1通过内存的KVStore学习了如下内容Rust项目工具c
原创
发布博客 2021.02.25 ·
832 阅读 ·
0 点赞 ·
2 评论 ·
2 收藏

第二届华为云数据库挑战赛参赛总结

文章目录1. 赛题分析2. 程序结构及存储结构设计2.1 分区策略2.2 存储结构&索引结构3. 读写实现4. 细节优化5. Java的不足6. 总结继上次参加第五届中间件性能挑战赛之后,又一次参加类似的工程类性能比赛,和上次的TSDB题目类似,本次是实现多版本的KV数据库,由于上次的遗憾出局(复赛第七),这次抱着破釜成舟一定要拿奖的的心态,最终结果也算比较满意(复赛第五,Java语言最高分)。1. 赛题分析本次比赛需实现一个多版本的KV数据库引擎,写入为随机写,查询功能为MinV~NV De
原创
发布博客 2020.09.22 ·
589 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

Decoding billions of integers per second through vectorization

在许多重要的应用程序例如搜索引擎和关系数据库系统中,数据以整数数组的形式存储。对这些数组进行编码,最重要的是解码会消耗大量的CPU时间。因此研究人员已经做出了巨大的努力来减少与压缩和减压相关的成本,特别的是已经开发出超标量的现代处理器和单指令多数据(SIMD)指令集。我们引入了一种新的向量化方案SIMD-BP128*,这比以前提出的向量化方法有所改进。它的速度几乎是varint-G8IU和PFOR在台式机处理器上最快的方案的两倍,同时SIMD- BP128*每个整数最多节省2位。为了获得更好的压缩效果,我们
翻译
发布博客 2020.03.12 ·
1113 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

InfluxDB中数据的压缩

Timestamp 压缩在InfluxDB中数据的压缩主要体现在两个方面,分别是时间戳和Field Value,通过TSM文件的存储我们知道相同的Series Key对应的时间戳和Field value是聚集放在一起的,格式如下:CRCFieldValueTypeTimeStamp SizeTimeStampsvalues4 bytes1 bytesN byte...
原创
发布博客 2020.03.05 ·
3433 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

InfluxDB的索引存储

TSI默认配置下索引信息存放于内存中,index-version="tsi1"配置作用是将索引信息持久化至硬盘,TSI索引主要包含logFile文件(.tsl结尾)、tsi文件,其实上篇提到的Series 文件也算。tsl、tsi文件位于在每个shard中index目录下。LogFileIndex File当TSL文件大小达到配置的compaction阈值时(由配置文件中的max-inde...
原创
发布博客 2020.02.22 ·
3292 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

谈谈Roaring Bitmap

BitMap/BitSet被广泛的应用于数据查询中,但其由于数据稀疏造成的内存浪费也不可忽视,因此对压缩BitMap的探索一直在进行,比较知名的有WAH、EWAH、Roaring Bitmap等。其中性能最好并且应用最为广泛的当属Roaring Bitmap,比如Spark、Lucene、Redis、Influxdb等著名项目中都可以看到Roaring Bitmap身影,下面就谈谈Roaring ...
原创
发布博客 2020.01.19 ·
2184 阅读 ·
1 点赞 ·
1 评论 ·
2 收藏

谈谈Bloom Filter

海量数据的过滤及去重,老生常谈的话题了。Bitmap和Bloom Filter是常见的结决办法。Bitmap的思路很单纯,一条数据是否存在只需要一个Bit就可以表示,因此一个Byte可以表示8条数据的布尔值,为每一个可能出现的值分配一个bit,一般Bitmap用来解决某个数字是否存在,这个数字就是Index。在JDK中的实现为BitSet,底层实现为long数组。Bitmap不做过多介绍,原理实...
原创
发布博客 2020.01.16 ·
292 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

InfluxDB数据的存储

文章目录LSM TreeInfluxDB 存储架构名词解释文件目录介绍WALSeries FileTSI FileTSM FileInfluxDB存储总结LSM TreeLSM Tree (Log-Structured Merge Tree) 即日志合并树,被用于大量的数据库引擎中,如Hbase、LevelDB等。适用于海量数据的写入,而查询少的情况。主要思想是随机写转化为顺序写。基本流程为,...
原创
发布博客 2019.12.31 ·
4575 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

时序数据库之初识InfluxDB

文章目录1. 快速使用2. 基本概念3. InfluxDB操作4. 保留策略(Retention Policies)5. 连续查询(Continuous Query)6. 补充概念7. ShardGroup & Shard & Sharding附1. 函数聚合函数选择函数、变换函数附2. Go Client的使用1. 快速使用docker pull influxdbdocker...
原创
发布博客 2019.12.18 ·
398 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

图基础总结

图定义及概念图是由若干给定的顶点及连接两顶点的边所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系。顶点用于代表事物,连接两顶点的边则用于表示两个事物间具有这种关系。图中只包含两种类型的元素:顶点(Vertex)和边(Edge),所以图可以由顶点集合和边集合进行表示,即:G=(V,E)G=(V,E)G=(V,E)。根据边是否具有方向,可以将图分为有向图和无向图两种。可以给边设置...
原创
发布博客 2019.11.30 ·
412 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

B-树和B+树总结

B-树与二叉查找树、红黑树等不同,B树适用于读写相对大的数据块的存储系统,B-tree算法减少定位记录时所经历的中间过程,从而加快存取速度。这种数据结构常被应用在数据库和文件系统的实作上。在红黑树中提到的2-3树、2-3-4树都属于B-tree,往往实际中使用的是阶数更高的B-tree。 阶 定义为最大数量的子节点树。一个 mmm阶的B树是一个有以下属性的树:每一个节点最多有 m 个子节...
原创
发布博客 2019.11.27 ·
305 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

红黑树

之前提到的自平衡二叉查找树,属于一种高度平衡的二叉查找树,对每个结点的平衡因子进行严苛的限制,所以 AVL 树能够提供 (log N) 的结点查询复杂度。也因为对每个结点的平衡因子限制较大,插入和删除结点时,需要进行很频繁的平衡调节操作。接下来谈到了2-3树,2-3树属于自平衡的树,查找复杂度最差(全部是2-结点)是logN,但由于其实现复杂度较高,并且额外对多种结点的维护带来的消耗可能导致这里...
原创
发布博客 2019.11.05 ·
252 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

2-3树

2-3树二叉搜索树的高度不确定,可能导致低查询效率,AVL尽管树相对平衡但是插入删除带来的较高的调整复杂度。2-3树尝试通过绝对平衡来寻找突破口,实际上是它具有较高的插入复杂度和实现复杂度,实际应用并不广泛。但2-3树衍生的红黑树在很多底层源码中都有应用。2-3树的定义及概念一颗2-3查找树或一颗空树由以下结点组成:2-结点,包含一个键,以及左右两个链接,分别指向的2-3树的键都小于/...
原创
发布博客 2019.10.31 ·
455 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

AVL树

二叉搜索树中查找和插入、删除的操作取决于树的高度,而树的高度又有不确定性,因此需要尽量让树平衡一些,即避免出现线性结构,因此出现了平衡二叉树。定义平衡二叉树也叫自平衡二叉搜索树(Self-Balancing Binary Search Tree)或者AVL树(提出者名字),其本质也是一颗二叉搜索树,不过为了限制左右子树的高度差,避免出现倾斜树等偏向于线性结构演化的情况,所以对二叉搜索树中每个结...
原创
发布博客 2019.10.31 ·
204 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

二叉搜索树

当用线性表作为表的组织形式时,可以有三种查找法。其中以二分查找效率最高。但由于二分查找要求表中结点按关键字有序,且不能用链表作存储结构,因此,当表的插入或删除操作频繁时,为维护表的有序性,势必要移动表中很多结点。这种由移动结点引起的额外时间开销,因此需要一种有一种较高的插入和删除效率,并且具备较高的查找效率的数据结构,二叉排序因此产生。定义二叉排序树,也称二叉搜索树(Binary Searc...
原创
发布博客 2019.10.31 ·
589 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

谈谈JDK堆外内存的创建和回收

堆外内存的优势在于IO操作,相比堆内存可以减少一次copy和gc的次数。下面通过源码去了解堆外内存的分配和回收。一般分配堆外内存通过ByteBuffer allocateDirect(int capacity)方法,其内部是通过如下构造函数来实现。DirectByteBuffer(int cap) { super(-1, 0, cap, cap);// ma...
原创
发布博客 2019.09.20 ·
593 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏

谈谈Java Reference的原理

ReferenceReference是所有引用类型的父类,它与垃圾回收器合作来来进行GC,Reference类定义了子类的主要逻辑,所以在SoftReference、WeakReference和PhantomReference中几乎完全复用了Reference的逻辑。下面进入Reference类中进行分析它的原理。构造函数和属性其中一个构造函数可以传入一个队列,如果不传入那么使用默认的队...
原创
发布博客 2019.09.19 ·
466 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

深入分析CMS垃圾收集器原理

文章目录CMS相关参数触发条件周期性GC主动触发收集过程注意事项前文已经讲过,CMS是老年代垃圾收集器,在收集过程中可以与用户线程并发操作。它可以与Serial收集器和Parallel New收集器搭配使用。CMS牺牲了系统的吞吐量来追求收集速度,适合追求垃圾收集速度的服务器上。CMS相关参数触发条件周期性GC主动触发由后台线程ConcurrentMarkSweepThread循环判断...
原创
发布博客 2019.06.20 ·
2778 阅读 ·
1 点赞 ·
2 评论 ·
9 收藏

Netty解读:高性能无锁队列Jctools源码分析

文章目录JDK BlockingQueue队列概述MpscArrayQueueofferpollMpscCompoundQueueofferpollMpscChunkedArrayQueueofferpoll优化总结lazy set大量的位运算伪共享无锁测试代码地址扩展阅读JDK BlockingQueue队列概述在Java中用的最多的也就是BlockingQueue,所谓的Blocking就...
原创
发布博客 2019.05.28 ·
4482 阅读 ·
6 点赞 ·
0 评论 ·
5 收藏

分布式一致性:Raft

概述与Paxos不同,Raft相对来说易于理解,在Raft中把复杂的问题分解,分为三个子问题:选举(Leader election)、日志复制(Log replication)、安全性(Safety)。Raft的流程:Raft开始时在集群中选举出Leader负责日志复制的管理,Leader接受来自客户端的事务请求(日志),并将它们复制给集群的其他节点,然后负责通知集群中其他节点提交日志,Lead...
原创
发布博客 2019.04.16 ·
639 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏
加载更多