自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 hash热点转移-HotRing的简单Java实现

但发现active、rehash、occupied都占用1bit,total counter占用15bit,counter占用14bit,加起来刚好32bit,既然原来的方式无法实现,那就新增一个int来存储,int刚好32bit,占用也是降到了最低,而第一个active就占用int的第一个bit,rehash第二个,occupied第3个,total counter占用3-18个,counter占用19-32个。因此,我们得出结论,由于HotRing具有热点感知设计,因此它具有更好的性能和可伸缩性。

2023-11-05 17:45:48 66 1

原创 从零实现一个TSDB(六)

QuerySeries 方法实现本篇就讲QuerySeries方法的实现,这儿会用到一些额外知识~Roaring Bitmap来自 Prometheus优化的正则匹配器tsdb.gofunc (db *TSDB) QuerySeries(matcherList LabelMatcherList, start, end int64) ([]map[string]string, error) {&nbs

2022-10-01 14:35:08 303 1

原创 从零实现一个TSDB(五)

上篇我们实现了将整个冷数据进行刷盘的过程,其实刷盘时将meta数据进行编解码还没实现 注意:这儿说的meta并不是meta文件的数据,而是 data中的索引信息meta编码metadata.go的Marshal()方法分为这么几步将label对应的seriesIDList进行保存,同时保存其长度保存该series的seriesID和对应的startTimestamp和endTimestamp保存每个series中的labelList(有序存储)保存minTs和maxTs最后保存一个sig

2022-09-26 21:18:26 139

原创 从零实现一个TSDB(四)

实现刷盘操作之前我们实现了将chan中的rows封装成segment然后存储进入内存List结构,现在来学习下如何进行异步刷盘操作。方法 writeCodeSegment()判断是否是冷数据创建一个dirname,然后将当前segment刷入磁盘刷盘后打开该写入磁盘文件的fd句柄,通过mmap的方式打开构造出一个diskSegment存储进入内存有序List,方便查询tsdb.gofunc (db *TSDB) writeColdSegment() (Se

2022-09-24 22:30:00 149

原创 从零实现一个TSDB(二)

二、实现启动函数和压缩算法和内存有序list数据压缩算法,目前是两个算法,ZSTD和Snappy两种,也是直接调用的库函数,实现比较简单package tsdbimport ( "github.com/golang/snappy" "github.com/klauspost/compress/zstd")type BytesCompressorType int8const ( // NoopBytesCompres

2022-09-24 22:29:21 276

原创 从零实现一个TSDB(一)

TSDB基于lsm的实现,memtable存储热数据(2h),磁盘存储冷数据考虑wisckey kv分离,ssd并行写代替顺序iolock-free基于aep这类的Persistent Memory 代替wal读写分离实现高效的内存查询数据结构(avltree、skiplist、红黑树)基于可插拔式的压缩算法(ZSTD压缩、Snappy压缩)mmap内存拷贝类似es的倒排索引垂直写,水平查,序列分流,冷热读写自定义Marshal编解码RoaingBitMap 优化优化的正则查询(fastRegexM

2022-09-24 22:28:11 316

原创 what is Domain-Driven Design

目前为复杂问题域创建软件的挑战有这些未使用通用语言创建的代码对于公共语言和问题域知识的缺乏会导致代码库可用但无法揭示业务目的。这会使得代码库难以阅读和维护,因为分析模型和代码模型之间的转译会代价高昂且容易出错。什么是分析模型:分析模型用于描述一个软件应用程序的逻辑设计与结构。它可以由示意图或使用UML这样的建模语言表示。它是软件的一种表现形式,让非技术人员可以概念化以便理解软件是如何构造的。组织结构的缺乏目前用的多的商业应用程序最流行的软件架构设计模式是大泥球(Big Ball of M

2021-10-27 18:56:22 89

原创 Redis面试必会

Redis提高什么是缓存缓存原指CPU上的一种告诉存储器,它先于内存与CPU交换数据,访问速度很快Cache Aside Pattern(旁路缓存),也是最常用的缓存读写模式读的时候,先读缓存,如果没有缓存,就读数据库,然后取出数据后放入缓存,同时返回响应更新缓存:更新的时候,先更新数据库,在删除缓存 为什么是删除缓存,而不是更新呢? 因为缓存的值是一个结构:hash、list,更新数据需要遍历,效率低Redis底层数据结构Redis中存在“数据库”的概念,该结构

2021-03-07 16:51:53 104

原创 MySQL语言组成

mysql的语言组成大致分为六个部分一、数据查询语言(DQL) 其语句也称“数据检索语句”,select是DQL,其他DQL的保留字有: where、order by 、 having等等。二、数据库操作语言(DML) 其语句包括动词 insert、update、delete。它们分别用于添加、修改 和删除,也称为 动作查询语言三、事务处理语言(TPL) 其语句能确保被DML语句影响的表的所有行及时得到更新。TPL语句包括 begin transaction、commit、

2020-12-16 12:41:13 901

原创 MySQL索引

mysql索引什么是索引 在数据表中,对字段建立索引可以大大的提高查询速度,通过善用 这些索引,可以让mysql的查询和运行更加高效。常见索引分类索引名称说明主键索引(primary key)主键是一种唯一性索引,每个表只能有一个主键,用于标识数据表中的每一条记录唯一索引(unique)唯一索引指的是索引列中的所有值都只能出现一次,必须唯一普通索引(index)最常见的索引,作用就是加快对数据的访问速度主键索引 alter tab

2020-12-08 13:24:08 70

原创 MySQL多表关联

多表关联查询外键约束外键指的是在从表中与主表的主键对应的那个字段。使用外键约束可以让两张表之间产生一个对应关系,从而保证主从表的完整性多表关系中的主表和从表主表: 主键id所在的表,约束别人的表(一的一方)。从表: 外键所在的表,被约束的表(多的一方)。设置外键约束的语句 /* * 在创建表时创建外键 * 下面的emp_dept_fk为外键约束的名字 ***/ create table emp( eid int(4) primary key auto_increm

2020-11-27 18:05:16 697

原创 mysql 查询+事务

DQL排序查询 /* 默认升序排序 desc -- 降序排序 asc -- 升序排序 */ select * from emp order by sal;DQL聚合函数作用:将一列数据作为一个整体,进行纵向的计算语法格式: select 聚合函数(字段名) from 表名 [where 条件] /* - count() 统计个数 - sum() 求和 - max() 求最大值 - min() 求最小值 - avg() 求平均数 */ s

2020-11-25 16:55:05 3401 4

原创 Mysql的三范式设计和反范式设计

范式利用规范化理论,是关系模式的函数依赖集满足特定的要求,满足特定要求的关系模式成为范式第一范式第一范式(1NF)要求数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值。若某一列有多个值,可以将该列单独拆分成一个实体,新实体和原实体间是一对多的关系。在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。第一范

2020-11-19 14:27:09 141 1

原创 Javascript的call/apply方法

对于原型链call/apply 的理解 JavaScript中有一个call和apply方法,两者的作用基本相同, 不过也有略微区别,用C语言的话来讲就是更改对象的内部指针,即是改变 this所指向的内容,通俗点说就是减少代码重复,提高代码的可读性和程 序的运行效率,就这么一个方法,但是几乎所有企业的面试题都不会少 了这俩哥儿...

2020-04-19 17:44:25 144

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除