自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (3)
  • 收藏
  • 关注

原创 时序数据库promQL

seriesId 就表示的是趋势图中的一条线metricName 会被转化为__name__的lable,或者也叫tag;Prometheus的写入模型由labels,timestamp,value等3个部分组成,其中labels唯一确定一条时间线。

2025-10-10 18:55:21 962

原创 apollo配置中心,实时感知配置

在apollo client 在启动的时候,spring 的beanPostPorcessor会扫描所有beande 方法,判断是不是有每个localRespository对应一个远程拉取,如下图,在远程拉取中有一个立即拉取,及定时“短轮询”&“定时长轮询”同步,重点关注下定时长轮询![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7bc3ed0b20b3434eb72142d61d203f52.png。

2025-09-19 18:26:22 254

原创 分布式事务

我们看看百度上对于分布式事务的定义:分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。额~ 看了反而更懵逼了,简单的画个图好让大家理解一下,拿下单减库存来说举例:当系统的业务量很小时,“一站式”的系统完全可以满足现有业务需求,所有的业务都共用一个数据库,整个下单流程或许只用在一个方法里同一个事务下操作数据库即可。此时所有操作都在一个事务里,要么全部提交,要么全部回滚。图糙理不糙图糙理不糙。

2025-09-05 12:46:54 765

原创 内积、外积、乘法

内积:点对点再求和 → 一个数。外积:点对所有点 → 一张表。

2025-09-02 14:35:03 124

原创 差角函数&差角矩阵&&位置编码

把平面上任意一点 P(x, y) 绕原点逆时针旋转角度 θ,得到新点 P′(x′, y′)。基向量 e₂ = (0,1) → 旋转后 (−sinθ, cosθ),正是矩阵第二列。基向量 e₁ = (1,0) → 旋转后 (cosθ, sinθ),正是矩阵第一列。基向量 e₂ = (0,1) → 旋转后 (−sinθ, cosθ),正是矩阵。基向量 e₁ = (1,0) → 旋转后 (cosθ, sinθ),正是矩阵。旋转 θ 后,极角从 φ → φ+θ,而半径 r 不变。我们要找 2×2 矩阵 R,使得。

2025-09-01 14:12:55 550

原创 大模型跨请求kv cache基数树应用vs哈希前缀

在 KV-Cache 共享的场景里,Trie(前缀树 / 基数树 Radix Tree) 是一种比“滚动哈希 + 全局表”更自然、碰撞风险为零、且能逐 token 复用的数据结构。下面用 3 分钟把“为什么用、怎么用、怎么快”讲透,并给出可落地的代码骨架。

2025-08-26 00:44:53 350

原创 sql技巧

(https://i-blog.csdnimg.cn/direct/262dc3393e0e4b53bc54b4e8e928a7f1.png)

2025-08-19 10:21:14 103

原创 K-means聚类算法

下面给出一个完整的 K-means 迭代示例,把“重新计算每个点到新簇中心的距离,重新分配”这一步补充到可以一步一步照着算的程度。重复“更新中心 → 重新分配”直至簇成员不再改变,就得到了最终的 K-means 聚类结果。所有簇的成员不再变化,中心也不再移动 ⇒ 算法收敛,迭代结束。Cluster-3:{C, E, F} (与上一轮相同)Cluster-1:{A, D, H} (与上一轮相同)Cluster-2:{B, G} (与上一轮相同)计算每个点到 3 个中心的欧氏距离,取最小者。

2025-08-19 10:05:33 405

原创 如果系统崩溃,Redo Log 和 Doublewrite Buffer 如何确保数据不丢失?

• Doublewrite Buffer 解决“物理层面的页损坏”——在脏页真正落盘时若出现部分写,可拿完整镜像修复,保证 Redo Log 有正确的页可重放。• 假设第 2 步在写完前 8 KB 时掉电 → t.ibd 的第 5 号页后半部仍是旧数据,校验和不匹配,InnoDB 判定页损坏。• Redo Log 解决“逻辑层面的修改丢失”——只要事务已提交,即使脏页没来得及落盘,也能靠重放日志恢复。两者组合在一起,既保事务又保页,实现崩溃安全(crash-safe)。– 再随机写真正的表空间文件。

2025-08-19 00:24:11 312

原创 rs纠删码(原理) 数据高可用

miniio

2025-08-14 00:37:41 114

原创 AI-反向传播

x’x’x。

2025-08-08 10:26:39 89

原创 数仓架构 & 数据表建模

主要用来描述 数据加工的实时链路 和 离线链路之间的关系,即 流批 关系;lamda 架构, 是两条路, 实时计算式的, 维护数据的实时性。然后每天经过批计算后, 覆盖实时的计算结果。保证数据准确性。kappa架构, 即流批一体了。

2025-08-04 15:27:01 259

原创 Doris 用流式 MPP换高并发

因为“碎片化 + 并行 + 低内存占用”,Doris 可以把一条大查询拆成几百上千份小活,也可以把几百上千条小查询各自切成更小的活,同时塞进同一个线程池。→ 好处:任何一个 Fragment 处理完自己的一小块数据后就可以立即释放内存,CPU 也能马上转去干别的 Fragment,资源碎片化程度低。Doris 牺牲了“单条查询绝对算力”(流式碎片化带来轻微额外调度开销),换来了对大量并发小查询的承载能力——这就是“用流式 MPP 换高并发”。流式(Streaming)

2025-08-04 15:13:44 422

原创 Doris 用流式 MPP换高并发

因为“碎片化 + 并行 + 低内存占用”,Doris 可以把一条大查询拆成几百上千份小活,也可以把几百上千条小查询各自切成更小的活,同时塞进同一个线程池。→ 好处:任何一个 Fragment 处理完自己的一小块数据后就可以立即释放内存,CPU 也能马上转去干别的 Fragment,资源碎片化程度低。Doris 牺牲了“单条查询绝对算力”(流式碎片化带来轻微额外调度开销),换来了对大量并发小查询的承载能力——这就是“用流式 MPP 换高并发”。流式(Streaming)

2025-08-04 14:12:48 405

原创 leetcode刷题吧

慢指针一次移动一个节点,而快指针一次移动两个节点,如果该链表没有环,则快指针会先遍历完这个表,如果有环,则快指针会在第二次遍历时和慢指针相遇。再看一个例子:给你一个长度为 n 的无序整数数组 arr,并且这些整数的取值范围都在0-20之间,要求你在时间复杂度为 O(n) 的前提下,将这 n 个数按从小到大的顺序打印出来。在遍历链表的时候,慢指针每次走一步,快指针每次走两步,当快指针遍历完成时,慢指针正好位于链表中间。例如判断是否是奇数,我们就可以把n和1相与了,如果结果为1,则是奇数,否则就不会。

2025-07-21 14:49:10 950

原创 redis如何发送命令的redis-cli

其他调试、或者统计等, 直接输入“命令”的模式,现在重点关注下,我们常用的交互模式当进行“交互”模式时, 进入repl()方法, 即reply等待回复的意思。

2025-07-21 09:12:45 196

原创 CompletableFuture 源码解析

那是因为大家想把外层方法拿到的结果值,直接传递给回调函数。但是如果把外城拿到的结果值用一个变量存储起来,例如 Future. future 在外层方法拿不到结果时, 直接阻塞住。等拿到外层方法的结果, 在传递给 回调函数.

2025-07-14 18:44:10 243

原创 reactor代码

首先,我们先看下什么是回调函数, 因为reactor要解决的问题之一是回调地狱。回调函数: 函数被当做参数 传入其他函数的函数, 被成为回调函数。即函数是一个变量,传入了其他函数。

2025-07-11 00:36:07 857

原创 稳定性相关-高可用、多活、单元化

我们在稳定性相关的项目中,总是搞混 高可用、 多活、 单元化的概念。其中区分这些概念最主要的是按日常流量分配来说明。

2025-06-19 16:10:42 379

原创 数据库存储核心技术-零拷贝

所有的上层操作都根植在操作系统上,比如网络、线程、文件操作等, 操作系统的性能决定了中间件的性能, 现在聊下中间件常用的技术-零拷贝。

2025-06-19 14:32:29 941

原创 图数据库的理解

所有的存储体系都是 按 “块”存储, 所谓的块, 即 Byte, 字节码组成的块。通过磁盘字节码的位置构建存储索引, 即把相关的磁盘的位置编号,放在一起,形成链表索引树。把内容顺序存储磁盘的另外一块地方。和rocketmq的 commitlog和consumerQueue类似。点 边 属性 都有自己的上下游链表, 当通过lable, label 是点、边、的一部分, 通过lable可以完成第一步的快速检索。

2025-06-11 19:27:30 258

原创 rocketmq索引

索引是什么, 索引实质是 相同数据的另一种存储结构我们都知道读和写天然是存在矛盾的, 我们希望写的快,当然是顺序写的性能最高, 顺序写造成数据杂乱无章,没法按照一定的规律去找数。如果想要找数的效率高, 必须要有结构组织的存放数据, 这样方便按规律找,业务需求又是多样的, 按照不同的查询诉求, 会对同一份数据异构成多份组织结构, 即多份索引,这样造成写入慢,读取快。

2025-06-05 17:01:25 829

原创 rocketmq的存储

https://cloud.tencent.com/developer/article/2451722

2025-06-05 15:25:00 109

原创 事务消息原理

rocketmq的事务消息,当执行主分支事务前,把消息放入topic为RMQ_SYS_HALF_TOPIC,这种半消息的消息队列中,当主分支事务执行完,把从半队列中取出, 放入真正的队列,进行消费,这样下游可以拿到主事务完成的分支消息, 完成后续 事务分支 操作。两阶段提交,即分两次提交,完成一次业务意义的提交。

2025-06-05 15:15:15 121

原创 rocketmq延迟消息的实现原理

第一次投递到SCHEDULE_TOPIC_XXXX这个topic下,每个延迟Level对应一个queueId.然后不断地异步扫描, 判断storeTime < now 时,证明消息到了执行时间, 放入真正的队列进行消费。消息存出在commitLog时,会生成消息的bornTime, 或者叫消息的存储时间。延迟消息也是消息的两次投递。

2025-06-05 15:09:52 177

原创 socket是什么

linux中的一切皆文件, 即把struct 对象的数据写入文件,用文件来记录每个对象的数据。

2025-06-04 15:24:30 359

原创 epoll

在epoll_ctl时, 添加被监听的fd时, 会给每个fd设置回调函数, 如 socket的回调函数是tcp_poll, 在网卡接收到数据时,tcp_poll会被回调, 这是会把 sock 移动到epoll对象的 rdlist, 就绪队列上;epoll的优势在于epoll_wait方法只遍历epoll对象就绪队列rdlist的fd, 不是遍历所有的fd,然后去找就绪的事件。

2025-06-04 11:09:17 309

原创 rocketmq并发消费

在netty的网络模型中,在想bootstrap设置handler时, 都是在等待 事件 的到来,才会被调用的方法,都是被动的, 服务端等待 request 的到来,进行read, 然后主动调用writeAndFlush写出去。客户端主动connnect, 然后wirterAndFlush发送请求, 被动等read response;

2025-05-16 17:24:57 232

原创 rocketmq 拉取消息

对于都在内存里的回调, 是所有的调用栈持有回调。

2025-05-14 19:42:41 156

原创 HNSW算法

向量数据库

2025-03-10 14:05:06 545

原创 mybatis是如何解析mapper的xml文件的

启动时会进行sessionFactory的构建, 开始解析所有mybatis的xml文件解析xml文件, 提前所有的sql对文件中的所有xml的node进行解析解析后分位两类sqlSource, 分别是DynamicSqlSource (判断sql中存在xml的node节点),如果是text节点,则解析为rawSqlSource, rawSqlSource包含staticSqlSource;以下就是静态sql,对于占位符最终后将 #{id, jdbcType=BIGINT} 解析为?

2025-03-04 19:13:14 917

原创 flink代码执行流程

我们知道flink的环境信息是在flink代码提交时创建的, 当flink反射到我们的main方法执行时, 我们自己的业务逻辑是如何执行的呢?如何和flink框架进行交互的?我们知道我们的业务逻辑主要用到的环境方法有两个另外一个就是excute。

2025-02-18 10:40:24 199

原创 lamda表达式是什么

当代码执行到lamda, lamda就会被new, lamda是引其所在的类为外部类, 自己为内部类,创建的对象, 持有外部类的对象 作为自身的参数 arg$1, 以及其他在调用时传入自己参数arg$2, arg$3 等等,

2025-02-14 16:32:41 289

原创 springBoot之环境变量

springboot 在new SpringBootApplication()时, 会扫描所有的spring.factory;它会给每个接口当做group,所有实现类为List当做value,形成map;

2025-02-14 00:54:54 170

原创 深入理解动态代理

对于代码的增强逻辑我们是清楚具体实现的,一种方式是增强逻辑作为委托类,被其他业务类调用,这样会有很多重复代码,而且,当需要根据动态参数来决定增强逻辑时,重复代码会更多,逻辑会更不清晰二,也是动态代理产生的原始需求,解决类爆照问题, 所以jvm自动加载动态生成的class字节码,形成动态代理对象三 动态代理核心要解决就去取增强其他业务代码, 业务代码是泛化的,不确定的,

2025-02-10 19:20:33 538

原创 flink是如何发现我们自己jar的main方法开始执行的

在执行时, 会把全局配置,放入factory的lamda对象, lamda对象就是new和类定义是一起产生的(孪生的,这是lamda的最大特点) ,然后把对象设置进StreamContextEveiroment。后面用户自定义程序时,才能重StreamContextEnviroment中读取全局的flink配置信息, 调用fatory对象的createxxx方法,实现环境变量的构建,给用户的自定义程序使用。因为main方法是static,所以 反射的obj对象是null,调起用户的程序。

2025-02-08 19:19:29 276

原创 flink的streamGraph逻辑图优化为jobGraph

的上限由节点的并行度是否一致, 及下游算子节点只有一个上游等, 把每个节点的上下游节点是否可合并放入两个集合中,然后再递归遍历两个集合中的节点。streamGraph到jobGraph主要作用是优化某些节点的合并,避免任务网络开销, 将多个节点合并在一个slot内执行。然后把可chain的节点放入 以起始节点为key, value是list的map中,把他们可chain一起的算子保存在一起。如果判断下游节点是可chain的, 则不可chain得递归会被忽略,如下代码。从起点开始遍历递归, 判断。

2025-02-07 19:15:36 329

原创 flink如何形成业务代码一致的逻辑图

在构建图时,会转化每个transfer, 从最后的算子节点开始, 但是转化当前算子时, 会优先转化他的前置节点, 即从后向前遍历算子,这样实现了优先实现了第一个算子的转化;这样从后向前的订阅连,其实是通过递归的方式,算完第一个然后挨个往下遍历 和责任链很相似, 处理自己时,先往上处理自己的上游节点,然后栈在一层层退,处理到自己, 然后给边的两头绑两个顶点vetecix;把边给节点,把节点给边,形成相互绑定关系,形成图。

2025-02-07 17:52:39 204

原创 全面理解https

2024-12-18 09:19:57 145

原创 jvm工具

GCEasy,访问地址:https://gceasy.io/,是一款在线的 GC 日志分析工具,支持各种版本的 GC 日志格式。FastThread,官网地址:https://fastthread.io/,线程分析工具,后面我们专门有一节课程会进行介绍。HeapHero,官网地址:https://heaphero.io/,顾名思义,这是一款 Heap Dump 分析工具。

2024-12-06 16:32:18 302

使用的ognl的chm

使用的ognl,正对是struts2 hibernate 等

2015-04-29

hibernate-distribution-3.3.1.GA

开发jpa必用的jar,很好很实用,我就是不知道怎样收取积分,就这样传了,

2014-08-09

hibernate的chm

不好找的hibernate参考手册,chm的电子书

2015-04-29

空空如也

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

TA关注的人

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