- 博客(222)
- 收藏
- 关注
原创 Postman - 设置变量
场景:比如你接口都有权限,访问需要每调一个接口都手动放token的值,这个时候就可以搞个全局的变量,只设置一次就可以了。
2024-04-25 16:06:37
538
原创 Postman - Error: Invalid character in header content [“gwm-ctx-user-ext“] 解决
Error: Invalid character in header content ["gwm-ctx-user-ext"]
2024-04-25 15:57:29
1857
原创 Kafka 入门到起飞 - 什么是 HW 和 LEO?何时更新HW和LEO呢?
高水位可以理解为一个`横切面`,存储的也是`Offset`(位移)值,木水桶原理
2023-08-16 22:46:05
2306
1
原创 Kafka 入门到起飞 - Kafka是怎么保证消息可靠性的呢
在这里插入图片描述我们已经了解到,复习一下创建topic时,可以指定副本因子轮询Leader 副本只有一个,负责读写,其他节点都是Follower副本,Producer 只把消息发送到Leader分区,Follower副本负责从Leader同步数据ISR 同步副本列表 (包含Leader)当前时间为了保证可靠性,可以设置确认机制ack= all。
2023-08-15 22:15:54
463
原创 Kafka 入门到起飞系列 - 怎么从ISR中选出的Leader呢? Leader选举机制
上文我们讲了分区分成Leader 和 Follower两种角色,当Leader宕机后,会从ISR同步副本中选出一个分区作为leader分区继续工作,那么leader是怎么选出来的呢?
2023-07-27 18:59:04
400
2
原创 Kafka入门到起飞系列 - 副本机制,什么是副本因子呢?
我们一直在讲一个主题会有多个分区,这多个分区可以分布在一台服务器上,也可以分布在多台服务器上,还可以增加分区(Kafka目前只支持分区),这是Kafka提供的一种横向扩展的手段比如我们创建了一个主题,给主题分配50个分区(这个数不大,_consumer_offset主题默认就50个分区),每个分区放在不同的broker上,那么我们要保证这50台服务器都不能宕机,一旦服务器宕机,分区数据就丢失了,保障服务不宕机这是很难的,所以Kafka给我们提供了副本机制。
2023-07-27 18:23:29
1369
原创 Kafka 入门到起飞系列 - 到底什么是再平衡?谁来执行再平衡呢?什么是组协调器呢?
每个消费组分配一个组协调器,用于组管理和位移管理消费组的第一个消费者启动后,会和Kafka broker确认,谁是组协调器(是一个broker)之后启动的所有消费者需要和该组协调器保持通信,发送心跳由组协调器来检测消费者的增加和减少,确认何时出发再平衡。
2023-07-27 15:42:11
285
原创 Kafka 入门到起飞系列
Kafka 入门到起飞系列[Kakfa 为什么牛? 为什么这么火?有什么优势呢?](https://blog.csdn.net/FightingITPanda/article/details/131941293)[工欲善其事,必先利其器 - 核心概念(术语解释)](https://blog.csdn.net/FightingITPanda/article/details/131710912)Kakfa 为什么牛? 为什么这么火?有什么优势呢?工欲善其事,必先利其器 - 核心概念(术语解释)
2023-07-26 20:07:17
1173
原创 Kakfa 入门到起飞 - 什么是再平衡?什么时候会触发再平衡呢?Kafka为什么遭大家诟病了呢?
那么为什么大家会诟病再平衡这个事呢,因为在再平衡过程中,消费者组下的所有消费者需要暂停,无法从Kafka消费消息,这样Kafka的消费能力突然就下来了,如果Kafka集群比较大,几百个节点,那么再平衡会消耗非常多的时间,几分钟到几小时都有可能,这个时间内Kafka基本处于不可用状态。消费主题数变更的情况就是,当消费者组订阅主题通过正则或者通配符的方式,比如topic.*这样,当新增一个主题topic.A,那么相当于这个新增主题下的消息自动被当前消费者组订阅了,需要将分区进行分配,那么就会触发一次再平衡。
2023-07-26 19:50:43
432
原创 Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?
如果上面结构还不够,两个消费者消费速度依然跟不上,那么我们还可以继续添加消费者,添加到4个消费者,此时主题分区与消费者的关系再次发生变化,需要再平衡,此时一个消费者消费一个分区消息,达到并行消费的效果。如上图,当前只有一个消费者组订阅这个Topic,消费者组里只有一个消费者,那么当前Topic中所有分区的消息都由这个消费者消费。消费者也不是越多越好,消费者数受限于分区数, 过多消费者会导致有的消费者没有分配分区导致空闲,如下图。如上图,消费者组扩展一个消费者后,消费者1、2分别消费两个分区的消息。
2023-07-26 17:52:14
2492
原创 Kafka 入门到起飞 - 生产者参数详解 ,什么是生产者确认机制? 什么是ISR? 什么是 OSR?
我们在生产者发送消息时可以指定acks参数值,来决定收到消息发送后什么样的确认即可继续发送后面的消息acks : 生产者发送消息确认机制acks = 0: 生产者不等broker确认,不断发送消息,发送消息快,允许丢消息,只要将消息放到了socket的缓冲区,就认为消息已发送成功acks = 1:默认值,允许少量消息丢失,broker上leader分区写入消息即返回生产者消息确认,不等待follower副本分区的确认,这种情况下,存在消息丢失的风险acks = all。
2023-07-26 17:03:31
883
原创 Kafka 入门到起飞系列 - Kafka 为什么牛? 为什么这么火?有什么优势呢?
在zk上记录这个数据就很不合适,zk每个节点能放的数据最大也就1M,zk主要是用来做服务注册与发现的一个协调服务,对高并发的一个偏移量的读写就不是它的强项, 所以后面的高版本里不在zk保存消息的偏移量了,直接在客户端保存 ,我们通常使用的DB都是关系型数据库,都是将数据持久化到磁盘中,数据的访问在对磁盘进行读写,我们都知道对磁盘进行IO比较慢,那么如何让读写速度加快呢,就产生了redis等产品,redis访问数据快是因为将数据都存储到内存去了;,来保证零数据丢失,除非连副本机器也偷走了,那没办法了哈哈,
2023-07-26 16:09:32
190
原创 Kafka 入门到起飞系列 - 磁盘存储 -零拷贝
Redis 是 在内存存储数据的,数据读取时不要经过磁盘的IO,只需要内存的操作,这也是redis访问速度快的原因Kafka背道而驰,,发送过来的数据交给Kafka后会落盘,消费者读取数据时,也是通过磁盘读取,发送给消费者减少不必要的拷贝次数。
2023-07-17 00:08:57
713
原创 Kafka 入门到起飞系列 - 生产者发送消息流程解析
批次的概念很好理解,缓冲区就像一辆公交车,有两种发车方式,一是人满了就发车,一是等5分钟就发车,不管是人满了还是到5分钟了,发车,go~Producer 创建时,会创建一个Sender线程设置为守护线程。Producer 生产消息,内部是一个异步流程。Producer 创建时,会创建缓冲区。
2023-07-16 17:29:31
2243
2
原创 Kafka 入门到起飞 - 核心概念(术语解释)
通常一个topic下的分区分散在kafka集群的不同实例(broker)上,producer向一个topic发送消息会发送给不同分区中,这样消息就可以实现并行发送与处理,增加吞吐量。当一台机器能力不足时,可以通过添加机器横向扩展broker,在新的机器上创建分区,这样就可以实现无限水平扩展。压缩带来的磁盘空间和带宽的节省,远大于CPU开销的代价,这样的压缩是值得的。消息顺序写入分区,每个分区时一个有序队列,kafka不保证跨分区消息有序。批次越大,单位时间内处理的消息越多,单个消息传输时间越长。
2023-07-14 15:57:52
1854
原创 idea一顿切换分之后编译项目提示找不到其他分支类的解决办法~
idea 一顿切换分支,编译项目失败,,提示找不到其他分支的类,提示找不到本分支不存在得类,,,
2022-09-24 13:12:56
2262
3
原创 spring boot 整合 swagger自动生成接口文档,搬砖都快乐了~
spring boot 整合 swagger 自动生成接口文档,搬砖都快乐了~
2022-08-12 14:01:34
1280
1
原创 Eureka 流程 +原理
Register 服务注册Renew 服务续约Cancel 服务注销/下线Fetch Registries 获取注册列表信息Eviction 服务剔除⚠️开启自我保护时,client请求数15分钟内低于85%,Serber不会将剔除任何实例eureka 仪表盘中:renew threshold :为eureka server计算的60s应该收到心跳请求数量renew(last min): 为eureka server 上一分钟收到的心跳请求数量当 renew(last min)/ renew thre
2022-06-12 23:36:01
673
原创 panda白话 - Spring AOP 入门+实战
Spring 两大🐮特性:IOC 、AOP面试必问😄基本上大家都是对IOC理解比较深刻,Spring通过IOC容器帮我们管理bean嘛AOP其实使用也很广泛,只是你没咋关注过因为基本属于框架级的,基本配置一次就不用管了,那起码要看懂呀,let`s go~~AOP定义: Oriented Object Progamming (面向切面编程)概念:连接点 - joint point切入点 - point cut通知 - advice织入 - weaving切面.
2022-05-21 00:45:45
225
原创 Panda白话 - 再认识JAVA反射
最近学习路线:AOP原理 -> JDK 动态代理 -> java 反射真是人生无常,大肠包小肠呀~~反射定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。这个定义看了n遍,每次都是???(小朋友你是否有很多问号?)最近又看了书、文章、视频,有了新的理解,码下来。。万一对你有用知识储备(面试高频):类加载机制j.
2022-05-19 00:29:26
287
原创 Panda 白话 - MySQL 事务 - ACID、隔离级别、MVCC
先奉上大佬的肩膀:MySQL专题: 脏读、不可重复读、幻读区别MySQL事务隔离级别和实现原理轻松理解MYSQL MVCC 实现机制看一遍: 哦! -> 看两遍:嗯~ -> 看三遍:哦~~ -> 写一遍 :just so soACID - 衡量事务的4个特性A - Automacity : 原子性 - 事务不可分割,要么全部提交成功,要么全部失败回滚C - Consistency - 一致性 - 事务开始前和结束后,数据库完整性约束没有被破坏I - Isol
2021-12-30 17:31:29
715
原创 Mybatis代码自动生成 - generatorConfig.xml -so so so so ..easy
二话不说,开炸~准备工作数据库,表新建个spring boot项目pom.xml 中引入 mybatis-generator 插件准备生成器配置文件 generatorConfig.xml昨天下班突然。。。今天继续。。。以上准备够用,开始吧 1、准备库-panda_local、表-panda ,介么简单,不说了~ 新建个spring boot项目 pom.xml 中引入 mybatis-generator 插件 准备生成器配置文件 generatorConfig.xml.
2021-12-30 10:18:10
590
原创 panda 白话 - 磁盘结构
磁盘结构硬盘大小 = 磁头数 × 柱面数 × 扇区数 × 每个扇区大小磁头数 - Heads - 硬盘的盘面数 × 2 (正反面)柱面数 - Cylinders - 硬盘的每个盘面有几个磁道扇区数 - Sectors - 每个磁道上面有几个扇区扇区大小 - 一般512byte盘片盘片是一个扁平的圆盘,类似于唱片,每个盘片有两个面,正面为 0面,反面为 1面盘面上有很多圆圈,称为 磁道数据记录在磁道上磁道:每个盘片上一圈一圈的同心圆- 就是 磁道最外圈磁道是0
2021-12-28 13:50:00
848
原创 panda白话 - G1垃圾收集器 - Mixed GC - 并发标记阶段 - 源码分析
G1垃圾收集 - Mixed GC:初始标记阶段 - Initial Mark并发标记阶段 - Concurrent Mark最终标记阶段 - Remark清理阶段 - Clean Up并发标记阶段 - Concurrent Mark特性:与Mutator并发进行以初始标记的根出发进行深度扫描根分区扫描步骤:scanRootRegions扫描所有survivor分区scanRootRegion 逐个region进行扫描处理[bootom, top]区间内所有的对象gra.
2021-12-15 15:15:29
1187
原创 Python - 读Excel数据落库 - 手把手教学
背景:有一批数据业务只能线excel的方式给excel与数据表结构不一致当然可以直接通过navicat导入excel数据,but、、python也得用起来呀let us go ~准备:编辑器 - 写代码得有开发工具啊,pyCharm也行、本文idea 2020.3python 解释器 - 直接通过idea插件方式安装即可导包 - 需要啥导啥步骤:1 idea 安装python 插件File -> Settings -> plugins -> Market
2021-12-15 10:46:38
3125
原创 panda白话 - G1垃圾收集器 - Mixed GC - 初始标记(根分区扫描)源码分析
G1垃圾收集 - Mixed GC:初始标记阶段 - Initial Mark并发标记阶段 - Concurrent Mark最终标记阶段 - Remark清理阶段 - Clean Up初始标记阶段 - Initial Mark - 根标记特性:STW以Young GC后的survivor分区作为根进行扫描扫描的是survivor 分区到老年代Region对象的引用所以Mixed GC 一定发生在Young GC 之后根分区扫描步骤:scanRootRegions扫描所.
2021-12-10 17:36:23
1237
原创 Panda白话 - G1垃圾收集器 - SATB、写屏障
Panda白话 - G1垃圾收集器 - 三色标记法、漏标、增量更新、SATB上文讲到G1在并发标记过程中,通过三色标记法来标记存活对象, 三色标记法存在漏标问题,会影响程序正确性, G1采用SATB方案解决漏标问题,本文我们就来重点分析一下SATBSATB - Snapshot At The Beginning 初始快照由Taiichi Yuasa开发的一个算法 - 首先它是一种思想主要用于GC的并发标记阶段记录并发标记是mutator修改的引用记录,remark阶段(STW)无需全量重新扫.
2021-12-10 15:10:43
2169
原创 Panda白话 - G1垃圾收集器 - 三色标记法、漏标、增量更新、SATB
三色标记法:GC HandBook把对象分成三种颜色:黑色(Black) - 根对象,自身及可达对象都已经被标记灰色 (Grey) - 自身已经被标记,可达对象还未被标记白色 (White) - 还未被标记、垃圾对象举个栗子吧:A.b = new B();B.c = new C();C.d = new D();如上图、有这么个引用关系:A对象有个field(成员变量)b,引用了B对象(存储B对象的物理地址),field c没有引用B对象有个field(成员变量)c,引用了C
2021-12-09 17:42:26
1587
原创 Panda白话 - G1垃圾收集器 之 Refine线程
Refine线程:G1引入的并发线程池线程数 = G1ConcRefinementThreads+1 (默认)Refine线程的功能:处理新生代分区的抽样 - 更新YHR(Young Heap Region)的数目管理RSet处理新生代分区的抽样:功能: 设置YHR - 新生代分区的个数,使G1满足GC的预测停顿时间-XX:MaxGCPauseMillis抽样方法 - 关键源码:concurrentG1RefineThread.cppvoid ConcurrentG1Refi.
2021-11-23 18:58:34
1347
1
原创 Panda 白话 - G1垃圾收集器 之 RSet(Remembed Set)源码解读
G1的知识点越看越多,这个RSet和卡表老也整不明白,单拎出来白话一下吧~我们已经知道G1将堆内存划分为2048个(默认、可调整)大小相等的Region,新创建的对象都是放在新生代Eden区。Region分为5中类型:YHR - Yound Heap Reagion :年轻代分区ERH - Eden Heap Region : eden区,伊甸园,放新创建对象SRH - Survivor Heap Region : Survivor 区,存货去,放每次GC后存活对象OHR - Old.
2021-11-19 18:12:30
2329
6
原创 Panda白话 - G1垃圾收集器
are you ready~~知识点太多,肝一篇长文~,let us go ~~G1 - Garbage First 垃圾收集器What is G1:见名思议,garbage first,垃圾优先,先回收垃圾多的region,region你还不知道是啥,往下看
2021-11-15 21:28:44
1736
1
原创 Panda白话 - Synchronized底层同步机制
Synchronized 都用过,那么它是怎么做到简单修饰一下就能做到并发场景下资源同步的呢?让我们来揭开它神秘的面纱~JDK6以前它是重量级锁,很笨重,就是当一个线程t1访问同步资源时,立马上锁,其它线程过来竞争锁的话直接阻塞,然后等待t1释放锁,线程唤醒再去上重量级锁,线程的阻塞和唤醒需要OS切换CPU(内核态与用户态)的状态来完成,这个状态转换消耗处理器时间,开销大,影响性能,so~ 在JDK 6 引入了偏向锁(默认开启偏向锁) 和 轻量级锁所以现在有四种锁状态,无锁 -> 偏向锁 -&
2021-10-26 16:49:17
265
原创 Panda白话 - volatile
之前看的抓心挠肝,多看几遍混熟了一点~ 赶紧码下来~volatile 是什么volatile 是一个类型修饰符,只能修饰共享变量volatile 什么用看这个单词的意思,不稳定的,易变的,可以看出,专治这些易变易产生问题数据,嘎嘎1、程序并发执行过程中,对共享变量的修改其他线程可见,即数据可见性、一致性2、防止指令重排导致程序异常先来做个知识储备和普及~共享变量共享变量指的是并发中,不同线程访问主存中同一数据的变量,主存是给所有CPU共享的,大家伙都要用这个变量,那它就是共享变量,我
2021-10-19 19:48:54
225
原创 Panda白话 Reactor -背压策略
上回书我们讲了元素采样和延迟响应操作符 - 传送门五、背压策略背压:下游消费速度跟不上上游发送数据速度,导致阻塞或异常,进而影响上游。reactor提供了集中背压策略onBackPressureBuffer - 顾名思义,来不及消费的数据先缓存在队列里onBackPressureDrop - drop,丢掉,来不及消费的数据直接扔掉onBackPressureLatest - 保留最新数据,一旦下游请求出现,立即推向下游onBackPressureError - 下游消费速度跟不上,直接抛异
2021-07-29 15:06:58
1561
原创 Panda白话 Reactor -操作符-系列四
上回书我们讲了扁平处理操作符 - 传送门四、元素采样操作符-sample、sampleTimeout采样,就是抽取的意思,取样、抽查,这么个意思sample - 隔一个时间段取样一个元素,其它不要public final Flux<T> sample(@NotNull java.time.Duration timespan)弹珠图:可以看到,原始响应式流序列为:先订阅了一个元素然后隔一段时间取下一个元素,没取到,再隔一个时间段取到元素,然后原序列发送了一个黄球,但是还
2021-07-29 10:49:46
529
2
原创 Panda白话 Reactor -操作符-系列三
上回书我们讲了订阅流操作符 - 传送门三、数据扁平处理操作符-flatMap VS concatMap VS flatMapSequential扁平处理就是一个拍扁的动作,元素都放同一个层级扁平处理前 - 流 - 3个元素【1、2、3】 、 【“hello”,“panda”】、【33,44,55】扁平处理后 - 流 - 8个元素【1、2、3、“hello”、“panda”、33、44、55】flatMap VS concatMap VS flatMapSequential* flatMap =
2021-07-28 14:51:04
520
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人