自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 图数据库的理解

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

2025-06-11 19:27:30 97

原创 rocketmq索引

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

2025-06-05 17:01:25 790

原创 rocketmq的存储

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

2025-06-05 15:25:00 84

原创 事务消息原理

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

2025-06-05 15:15:15 98

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

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

2025-06-05 15:09:52 146

原创 socket是什么

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

2025-06-04 15:24:30 302

原创 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 276

原创 rocketmq并发消费

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

2025-05-16 17:24:57 198

原创 rocketmq 拉取消息

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

2025-05-14 19:42:41 120

原创 HNSW算法

向量数据库

2025-03-10 14:05:06 438

原创 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 798

原创 flink代码执行流程

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

2025-02-18 10:40:24 174

原创 lamda表达式是什么

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

2025-02-14 16:32:41 234

原创 springBoot之环境变量

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

2025-02-14 00:54:54 139

原创 深入理解动态代理

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

2025-02-10 19:20:33 516

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

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

2025-02-08 19:19:29 244

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

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

2025-02-07 19:15:36 305

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

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

2025-02-07 17:52:39 179

原创 全面理解https

2024-12-18 09:19:57 125

原创 jvm工具

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

2024-12-06 16:32:18 264

原创 G1、cms 垃圾回收

G1 的remeberSet 增加可达性的中间统计,避免从gc root开始扫描造成全量扫描及耗时较长,实现部分区域回收, 达到回收时间短的目的。CMS 脏卡最终标记处理,处理老年代。

2024-12-06 11:19:56 162

原创 MAT内存分析

2024-12-06 11:15:58 126

原创 分布式锁比较

前言在某些场景中,多个进程必须以互斥的方式独占共享资源,这时用分布式锁是最直接有效的。随着技术快速发展,数据规模增大,分布式系统越来越普及,一个应用往往会部署在多台机器上(多节点),在有些场景中,为了保证数据不重复,要求在同一时刻,同一任务只在一个节点上运行,即保证某一方法同一时刻只能被一个线程执行。在单机环境中,应用是在同一进程下的,只需要保证单进程多线程环境中的线程安全性,通过 JAVA 提供的 volatile、ReentrantLock、synchronized 以及 concurrent 并发

2022-04-07 14:29:21 195

原创 mybatis一级缓存失效

先整合mybatis和spring因为线程安全,sqlSessionTemplate 是单例的; defaultSqlSession 是线程不安全的;所以每个线程用于一个defaultSqlSession是安全的,及sqlSesstionTemplate拥有多个DefaultSqlSession ; 每个defaultSqlSession执行自己的查询;pom.xml <dependency> <groupId>org.springframewor

2022-04-06 15:12:40 306

原创 G1和CMS

CMS: concurrent Mark Sweep以获取最短回收停顿时间为目标的收集器,基于并发“标记清理”实现有人会好奇为什么标记清理算法会产生内存碎片!但是CMS仍采用这种算法呢?答案是:因为CMS作为第一款实现用户线程和收集线程并发执行的收集器!当时的设计理念是减少停顿时间,最好是能并发执行!但是问题来了,如要用户线程也在执行,那么就不能轻易的改变堆中对象的内存地址!不然会导致用户线程无法定位引用对象,从而无法正常运行!而标记整理算法和复制算法都会移动存活的对象,这就与上面的策略不符!因此CM

2021-05-08 18:18:42 215

原创 Redis集群

Redis集群方案Redis集群方案基于分而治之的思想。Redis中数据都是以Key-Value形式存储的,而不同Key的数据之间是相互独立的。因此可以将Key按照某种规则划分成多个分区,将不同分区的数据存放在不同的节点上。这个方案类似数据结构中哈希表的结构。在Redis集群的实现中,使用哈希算法(公式是CRC16(Key) mod 16383)将Key映射到0~16383范围的整数。这样每个整数对应存储了若干个Key-Value数据,这样一个整数对应的抽象存储称为一个槽(slot)。每个Redis Cl

2021-05-07 18:52:02 174

原创 分布式事务

什么是分布式事务为什么会有分布式事务?分布式理论CAP定理BASE理论分布式事务解决方案两阶段提交(2PC)三阶段提交(3PC)补偿事务(TCC)本地消息表消息事务最大努力通知Sagas 事务模型总结...

2021-05-07 18:31:40 122

原创 七层负载均衡&四层负载均衡

内容安排简介区别Nginx、LVS及HAProxy负载均衡软件的优缺点一、简介** 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;**同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的URL或主机名接收请求,然后再

2021-05-06 17:36:27 389

原创 限流

限流简介现在说到高可用系统,都会说到高可用的保护手段:缓存、降级和限流,本博文就主要说说限流。限流是流量限速(Rate Limit)的简称,是指只允许指定的事件进入系统,超过的部分将被拒绝服务、排队或等待、降级等处理。对于server服务而言,限流为了保证一部分的请求流量可以得到正常的响应,总好过全部的请求都不能得到响应,甚至导致系统雪崩。限流与熔断经常被人弄混,博主认为它们最大的区别在于限流主要在server实现,而熔断主要在client实现,当然了,一个服务既可以充当server也可以充当client

2021-05-06 17:00:46 306

原创 网路结构

内核和应用程序交互应用程序是建立在linux基础上得,传输层tcp/udp; 端口是由内核分配给应用程序,应用程序通过端口,以来内核网路服务(队列,socket)对外通信;三次握手目的是双方都要给对象进行ack (确认) 才可以保证稳定得通信四次分手分层设计网络抓包 观察单次连接得详细内容tcpdump -nn(数字得形式展示ip) -i eth0 (对应得网卡) port 80 监听对应端口得数据socket的申请和使用业务处理和网络连接事件职责单一观察机器整体连接情况

2021-05-06 00:21:53 121

原创 jdk动态代理

一、什么是代理?二、Java 动态代理类三、JDK的动态代理怎么使用?四、动态代理怎么实现的?五、结论一、什么是代理?代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。代理模式UML图:简单结构示意图:为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护

2021-02-22 22:40:44 123

原创 reactor的执行顺序

import io.reactivex.Observable;import org.junit.Test; /** * @description: 测试onNext、onComplete、doOnNext、doFinally、doAfterTerminate执行顺序 * @author: lizz * @date: 2020/11/17 17:56 */public class ExeOrder { @Test public void orderTester() {

2021-01-07 18:35:16 492

原创 责任链模式filter

连接的责任委托给filterChain, filterChain中维护filter的链;上代码

2020-12-08 23:40:25 179

原创 连接风暴

在机器扛不住的情况下,尽量通过限流处理流量洪峰,通过扩容容易造成下游服务打卦,或者数据库等连接池疯狂新增连接,导致所有应用都无连接可用

2020-12-08 23:02:50 374

原创 限流

优先使用集群限流单机限流的弊端:当服务发布时,单机不可用,导致到达单机的流量不可用,限流的总的qps下跌;

2020-10-28 17:01:49 113

原创 Future整理

本文结构1.Runnable的短板总的来说”三无产品“无入参无返回值;主调线程无法获取子线程的结果无异常2. Callable@FunctionalInterfacepublic interface Callable<V> { V call() throws Exception;}3. Callable与Runnable的对比callable “三有产品”runnable z...

2020-10-18 00:40:08 120

原创 代码扩展性设计---钩子

在编排好业务逻辑中,因为某些部分业务是变动的,但这部分的变动属于主流程,将变动的部分设计成钩子(即方法的入参是一个接口对象),在真实执行时,钩进来变动的代码进行执行;

2020-10-15 21:47:45 196

原创 springboot原理知识清单

一、抛砖引玉:探索Spring IoC容器二、夯实基础:JavaConfig与常见Annotation三、削铁如泥:SpringFactoriesLoader详解四、另一件武器:Spring容器的事件监听机制五、出神入化:揭秘自动配置原理六、启动引导:Spring Boot应用启动的秘密在过去两三年的Spring生态圈,最让人兴奋的莫过于Spring Boot框架。或许从命名上就能看出这个框架的设计初衷:快速的启动Spring应用。因而Spring Boot应用本质上就是一个基于Spring框

2020-10-11 22:56:08 340

原创 stack分析工具

https://fastthread.io/ft-thread-report.jsp?dumpId=1&oTxnId_value=d4990599-c893-4037-b5fb-d6823ec81b0e#exceptionMenu

2020-09-30 10:57:05 440

原创 如何拒绝需求

程序员是个好职业,工资高、又体面,唯一的缺点就是费头发。在日常工作当中,产品经理是跟程序员打交道最多的人,据说产品经理的靠谱程度,跟程序员掉头发的速度成反比,也就是说产品经理越不靠谱,程序员越容易早谢。程序员最头痛的事情,莫过于碰到不靠谱的产品经理,吵又吵不赢他们,动手吧,又不是我们这些受过9年义务教育的人应该干的事。那怎么办呢?为了解决这个难题,老K走访了10多位互联网大厂的骨灰级程序员,他们常年跟产品经理打交道,还能活到现在,必定有过人之处,吃过的盐比我们走过的桥还多。关上灯,他们就是房间里最亮的星

2020-09-27 09:39:04 1099

使用的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关注的人

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