自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

枫火的博客

好记性不如烂笔头

  • 博客(55)
  • 问答 (1)
  • 收藏
  • 关注

原创 RocketMQ之一----概念基础

Producer发送消息时,默认会轮询目标Topic下的所有MessageQueue,并采用递增取模的方式往不同的MessageQueue上发送消息,以达到让消息平均落在不同的queue上的目的,这些 queue 散落在不同的 broker 节点中,即使某个 broker 节点异常,其他订阅了这个 Topic 的 message queue 的 broker 依然能继续消费消息。RocketMQ 在默认情况下不保证顺序。消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。

2024-07-02 16:04:34 1009

原创 RocketMQ之三----事务消息

根据半事务消息Topic RMQ_SYS_TRANS_HALF_TOPIC 和处理半事务消息Topic RMQ_SYS_TRANS_OP_HALF_TOPIC 差值判断需要回查的半事务消息,发CHECK_TRANSACTION_STATE回查指令到业务方查询本地事务执行结果。RMQ_SYS_TRANS_OP_HALF_TOPIC 已处理的半事务消息topic,body存的是半事务消息Topic 的消息位移,同一个queue下,用逗号分隔(另有线程处理)然后保存并返回结果(到此完成发送半事务消息)。

2024-07-02 15:22:27 648

原创 ehcache3多级缓存应用

项目中如果有使用大量的本地缓存场景,可以使用redis+ehcache组合缓存,优先使用ehcache本地缓存,本地缓存没有查询到再使用redis缓存可看前文中如何集成。

2024-05-30 15:43:25 401

原创 ehcache3的使用

当达到缓存配置上限后,需要释放内存,条目因频繁被访问从而避免了因TTI过期而被移除,会一直占用缓存空间,这中情况下会超出配置的条目上限或者内存上限。如果一个条目在TTL期间被频繁访问,即使超过了LRU限制,它也会被保留在缓存中,直到TTL到期或被新的条目替换,这种情况下会超出配置的条目上限或者内存上限。2、若缓存条目数或者缓存总量达到配置上限后,则按照默认的缓存淘汰策略LRU(移除最近最少使用)5、若过期策略不配置,表示不过期,当达到缓存配置上限后,默认使用LRU删除过多的缓存条目。

2024-05-29 18:03:37 418

原创 SpringBootTest测试框架五

4、对结果result.json进行比对,数据校验。2、按调用类名+方法名生成mock文件,可防重名。3、生成结果result.json。1、按测试方法名生成文件目录。

2024-05-27 19:58:40 341

原创 SpringBootTest测试框架四

Overridetry {= null) {// fastjson 麻烦,还是建议用GsonClass<?>) type;} else {}else {try {= null) {}else {try {// 设置访问权限,因为"name"是私有属性// 通过反射获得"employee"的"name"属性的值。

2024-05-27 18:34:44 390

原创 SpringBootTest测试框架三

注入feign调用的拦截器,自定义InvocationHandlerFactory,重写代理类的实现。

2024-05-27 18:20:09 230

原创 SpringBootTest测试框架二

注入sql的拦截器,对查询语句拦截,按规则访问本地路径的文件,实现mock功能。

2024-05-27 18:12:53 337

原创 SpringBootTest测试框架一

*** 读取本地数据,若无则抛异常*/LOCAL,REMOTE,/*** 本地优先,若本地无mock数据则调用远端并保存到本地*/

2024-05-27 18:06:41 291

原创 产线问题排查

即每5秒一次显示进程号为4383的java进程的GC情况, -XX:+PrintGCDetails 用来打印详细的GC信息。如果是线上环境,注意dump之前必须先将流量切走,否则大内存dump是直接卡死服务。拿到线程dump文件之后,搜索自己的worker名字。3.找到最有可能导致内存泄露的元凶,通常也就是消耗内存最多的对象;2.如果是堆溢出,导出堆dump,并对堆内存使用有个整体了解;1.分析OOM异常的原因,堆溢出?就可以查看某个pid的java服务占用内存排名前20的类。

2024-05-27 15:11:56 129

原创 代码扫描接口调用关系

将项目统一放在一个目录下,进行关联扫描dubbo接口在controller中被哪些接口调用了

2024-04-08 11:08:19 198

原创 python打包部署脚本

linux可使用expect来实现自动交互,windows想要写出同样的功能脚本,只能使用python或者安装ActiveTcl。

2023-11-13 17:12:17 268

原创 debug插件

官网:https://plugins.jetbrains.com/docs/intellij/welcome.html。

2023-05-15 16:10:32 277

原创 EasyExcel导出导入

【代码】EasyExcel导出导入。

2023-05-06 14:16:14 176

原创 kafka之一----概念结构

在.index文件中,存储的是 key-value格式的,key代表在.log中按顺序开始第n条消息,value代表该消息的位置偏移。即使消息不在index记录中,在已有的记录中进行二分查找,范围也大大缩小了。当一条消息被发送到 broker 之前,都会根据分区规则选择存储到哪个具体的分区,最为合理的规则是让消息可以均匀的分配到不同的分区中,这样,多个机器共同承担一个 Topic 的读写,同一个机器上,多个分区 log 文件同时承担他们所对应的 Topic 的读写,就可以让整个集群的 IO 性能大幅提升。

2023-04-07 09:14:40 348

原创 Class加载过程

加载阶段结束后,Java 虚拟机外部的二进制字节流就按照虚拟机所设定的格式存储在方法区之中,在 Java 堆内存中实例化一个 java.lang.Class 类的对象,这个对象将作为程序访问方法区中的类型数据的外部接口。直接引用是和虚拟机实现的内存布局直接相关的,同一个符号引用在不同虚拟机实例上翻译出来的直接引用一般不会相同。各种虚拟机实现的内存布局可以各不相同,但是它们能接受的符号引用必须都是一致的,因为符号引用的字面量形式明确定义在《Java 虚拟机规范》的 Class 文件格式中。

2022-11-22 16:12:37 490

原创 双亲委派模型机制

双亲委派机制是当类加载器需要加载某一个.class字节码文件时,则首先会把这个任务委托给他的上级类加载器,递归这个操作,如果上级没有加载该.class文件,自己才会去加载这个.class。主要目的是为了安全,保证一个Java类在JVM的唯一性。

2022-11-22 13:49:00 495

原创 JVM-GC

指的是java虚拟机栈,是一块线程私有的内存空间,每个线程包含一个栈区,栈中只保存基本数据类型的数据和自定义对象的引用,

2022-11-11 16:54:29 731

原创 java并发-JUC

Compare and Swap,是基于硬件级别的指令实现的同步原语,Java并发包java.utile.concurrent许多同步类基于CAS构建cas中的value 为volatile,最终执行lock cmpxchgq 2个汇编指定lock :硬件指令集,保证多次内存操作的原子性。通过lock去对要操作的内存的缓存行加一把锁,缓存行超过64字节就上一把总线锁。硬件级别加锁只能针对一个缓存行加锁,如果跨多个缓存行就在总线上帮你加一把锁,总线锁的粒度就很大了。

2022-11-10 16:58:36 803

原创 tomcat10.1.0源码分析

server.xmlserver代表一个tomcat实例,可包含多个service,管理所有的service生命周期包含多个connector和一个container容器:负责处理请求只有一个,可包含多个host虚拟主机,虚拟主机允许Tomcat引擎在将配置在一台机器上的多个域名每个虚拟主机又可以支持多个web应用部署在它下边,这就是我们所熟知的上下文对象在上下文中又可以部署多个servlet,并且每个servlet都会被一个包装组件(Wrapper)所包含(一个wrapper对应一个servlet)

2022-11-01 17:54:27 545

原创 Multi-Paxos算法

Multi-Paxos通过改变Promised(b)的生效范围至全局的Instance,从而使得一些唯一节点的连续提交获得去Prepare的效果。很多人认为Multi-Paxos是由leader驱动去掉Prepare的,更有说在有Leader的情况下才能完成Multi-Paxos算法,这都是理解有误。大家看到这里也应该明白这里的因果关系,Basic-Paxos提出了leader概念并未进行优化。Multi-Paxos是适应某种请求特征情况下的优化,而不是要求请求满足这种特征。

2022-10-31 17:27:19 576

转载 leader选举常用算法

是最常见的选举算法,其要求每个节点对应一个序号,序号最高的节点为leader。leader宕机后次高序号的节点被重选为leader。但是由于消息传递的不确定性,可能有多个节点自认为自己已经成为leader。Bully算法中有2PC的身影,都具有提议(propose)和收集反馈(vote)的过程。

2022-10-31 17:01:02 532

原创 Paxos算法

Paxos是一致性协议的基础,侧重理论。处理实际问题的侧重点不同,衍生出其它各种改进版本协议。

2022-10-31 16:58:37 484

原创 ZAB协议

ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持 崩溃恢复 和 原子广播 协议,基于该协议,Zookeeper 实现了一种 主备模式 的系统架构来保持集群中各个副本之间数据一致性。

2022-10-31 15:49:18 5835 2

原创 hash碰撞处理方法

为减少冲突,要求装填因子d较小,故当结点规模较大时会浪费很多空间,其次不能真正的删除,不能简单的将删除节点位置置空,会影响到其他同义词节点的查找路劲,只能在被删节点上做删除标记。将具有相同哈希地址的记录链成一个单链表,m个哈希地址就设m个单链表,然后用一个数组将m个单链表的表头指针存储起来,形成一个动态的结构(hashMap就是这个方法)举个栗子:集合{47,7,29,11,16,92,22,8,3,50,37,89},m = 11,举个栗子:0, 8, 11,伪随机位数列为3,7,11...

2022-10-24 10:55:38 1302

原创 kafka之二----Controllr控制器组件

每个和控制器交互的请求都会携带上controller_epoch这个字段,如果请求的controller_epoch值小于内存中的controller_epoch值,那么这个请求会被认定为无效的请求。于是新leader开始接收clients端请求,而同时老leader所在的broker由于出现了数据类请求的积压使得它一直忙于处理这些请求而无法处理controller发来的LeaderAndIsrRequest请求,集群中就会出现两个Controller。

2022-10-21 16:00:05 584

原创 kafka之五----副本同步

副本同步

2022-10-21 15:58:35 2875

原创 二维码生成

二维码生成。

2022-10-17 10:33:48 86

原创 kafka之四----状态机与分区leader选举

每个Broker启动时,都会创建对应分区状态机和副本状态机实例,但只有Controller所在的Broker才会调用startup方法启动它们,若Controller变更了,老的Controller需要调用状态机shutdown方法进行关闭。

2022-09-16 13:20:34 822

原创 kafka之三----Controller职责之主题删除

Controller 注册TopicDeletionListener监听器,监听ZK的/admin/delete_topics节点,定义了 TopicDeletionHandler,用它来实现对删除主题的监听,用来实际执行删除Topic的动作。

2022-09-08 17:50:05 255

原创 RabbitMQ之一----概念基础

基于Erlang编写(Erlang语言天生具备分布式特性,通过同步Erlang集群各节点的magic cookie来实现),因此天然支持Clustering。这使得RabbitMQ本身不需要像ActiveMQ、Kafka那样通过ZooKeeper分别来实现HA(High Availability高可用)方案和保存集群的元数据,是属于AMQP( 高级消息队列协议 ) 标准的一个实现。是应用层协议的一个开放标准。

2022-09-05 09:26:52 971

原创 RabbitMQ之四----问题与应用

rabbitMQ 问题

2022-09-05 09:25:38 364

原创 RabbitMQ之三----工作模式

rabbitmq 工作模式

2022-09-01 10:12:19 722

原创 RabbitMQ之二----集群模式

队列创建时,只会在宿主节点(队列所在的节点)创建队列的进程,宿主节点包含完整的队列信息,包括元数据、状态、内容等等。消息实体只存在宿主节点。群只会同步队列和交换器的元数据到集群中的其他节点,其它节点存储的是指向该队列的指针,并不同步队列本身举个例子来说,当消息进入A节点的Queue中后,consumer从B节点拉取时,RabbitMQ会临时在A、B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。所以consumer应尽量平均连接每一个节点。.........

2022-08-30 16:02:11 2368

原创 分布式理论&事务实现方案

一致性。写操作后的读操作,必须返回最新写入的值。对于单个节点的系统来说,这点很容易满足。但对于多节点的集群环境来说,如果写操作往节点1写入,而读操作去节点2读取,就无法满足这个要求。可用性。所有的用户请求都能得到响应。分区容错性。即使在某些节点无法响应的情况下,用户操作能让能正确执行。

2022-08-24 11:37:07 277

原创 mysql结构及执行

MySQL 大体可以分为 客户端、Server层、存储引擎层、系统文件层客户端连接器提供与MySQL服务器建立的支持Server层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六个部分存储引擎层存储引擎负责MySQL中数据的存储与提取,与底层系统文件进行交互。MySQL存储引擎是插件式的,现在有很多种存储引擎,各有各的特点,最常见的是MyISAM和InnoDB。系统文件。

2022-08-22 18:28:36 216

原创 mongodb安装配置启动

mongodb

2022-08-19 10:45:48 399

原创 File-String互转

File-String互转。

2022-08-08 18:10:55 2277

原创 分布式一致性Raft算法

Raft是一个分布式的一致性协议算法

2022-08-08 11:30:00 318

原创 spring-aop

spring aop

2022-07-21 17:20:18 235

空空如也

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

TA关注的人

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