kafka生产者的缓存机制介绍
前言今天我们来看下kafka生产者客户端缓存架构的设计是怎样的?我们先整体看下发送消息到java资料分服务端的完整过程和架构:消息累加器其实,整个生产者客户端是由两个线程协调运行的,一个是主线程Producer线程,一个是Sender线程。由主线程生产消息,然后缓存到消息累加器(RecordAccumulator);而Sender线程则负责从消息累加器中不断获取消息,然后发送到kakf
深入理解JVM - 分代的基本概念
前言 本次讲述jvm分代模型的基础概念,这个专栏会由浅入深的不断构建起来,循序渐进,是非常基础的内容概述: 讲述JVM的基础分代模型以及版本升级的处理。 对象分配的基础概念和知识。 长期存活的对象是如何躲过垃圾回收进入到老年代 jvm内存的核心参数解释以及基础配置JVM的分代模型JVM的基础分代模型:年轻代,老年代,永久代。这里需要注意内存模型通常是和垃圾回收
面试拼多多 Java 岗被刷了三次,在家闭关刷题66天,卷土重来,终获offer
引言这是群里一个朋友分享的博客,讲述了他进入大厂的故事。(为数不多的,让我真心佩服的人)他之前就一直就想进拼多多工作,没别的,就冲着优渥的薪资待遇去的。故事开始我是2021届毕业生,大专学历,没啥背景,当初选择“计算机软件工程”这个专业就是冲着程序员的高薪去的,穷学IT富学商。感觉这是见效最快的一个行业了吧。找工作那点事简单介绍一下自己的背景:农村家庭,我是长子,下面还有一对双胞胎妹妹
Redisson 分布式锁源码——公平锁加锁
前言默认的加锁逻辑是非公平的。在加锁失败时,线程会进入 while 循环,一直尝试获得锁,这时候是多线程进行竞争。就是说谁抢到就是谁的。Redisson 提供了 公平锁 机制,使用方式如下:RLock fairLock = redisson.getFairLock("anyLock"); // 最常见的使用方法
在小厂做Java开发五年,离职后成功入职字节,给大家做个复盘和总结,还有几点建议
决定换工作最近换了份工作,当时和群里的朋友也聊过换工作的话题,他们都觉得这是一次非常冒险的行为,说我这是一次豪赌——成了会有更好的职业发展,没成可能就会出现两三年的发展断层,甚至影响职业生涯路径。一步错,步步错。我当时也仔细的考虑过了,的确有很大的风险,毕竟现在的环境下,要找到一份合心意的工作是非常不容易的,一个失误,说不好就什么都没有了。但是我还是决定去试一下,因为,在小厂里,我真的
『深入学习 Spring Boot』——Bean 实例化流程
Bean 实例化finishBeanFactoryInitialization(beanFactory)protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory) { &nb
[避坑] 太卷了!太卷了!一个技术总监出来求职,竟然找不到工作!
太卷了,太卷了,太卷了!前段时间,我一个朋友,身为一个技术总监离职后出来求职,竟然找不到工作!属实是震惊我一整年。之后,我也就这个事件本身进行了一些思考,下面说说我的看法吧。事件缘由前段时间,一个在北京进行技术交流时认识的一个朋友问我有没有工作岗位介绍,他说他这段时间在找工作,但是一直找不到。我就觉得很奇怪,上次见到这位朋友时他不是还在一个公司任技术总监吗?怎么就突然就失业了?再说一个
RabbitMQ进阶——RabbitMQ 重试机制,看这篇就够了
前言消费者在处理消息的过程中可能会发生异常,那么此时此刻该如何处理这个异常的消息呢?RabbitMQ有两个方法channel.basicNack 或 channel.basicReject能够让消息重新回到原队列中,这样子可以实现重试。但是如果第二次消费又发生了异常,一直消费一直异常。由于没有明确重试次数,会造就无限重试,这是一个致命的问题。本文就来使用spring-rabbit中自带
怒了!!!专科怎么了?搞学历歧视?专科这样做,照样牛掰!
前段时间某招聘软件上的一张聊天记录截图火了,同样出名的还有一位名叫“吴先生”的HR。在这张聊天记录截图中,我们可以看到这位HR的观点:“考不上本科的都是智商有问题的。”随后这张聊天截图被曝光到网上,引起了一阵议论的热潮:考不上本科的都是智商有问题的?这是哪门子的道理?对于这个HR的说法,很多网友纷纷表达了自己的想法学历并不能起到一锤定音的作用。网友甲:说出这样话的人,书也是白念了不管是
SpringCloud服务治理——服务熔断
sentinal:除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调
Java并发——多线程并发编程中的同步器
1. CyclicBarrier和 CountDownLatch 类似线程会等待,直到足够多线程达到了事先规定的数据。一旦触发条件,就可以进行下一步的操作适用于线程之间相互等待处理结果就绪的场景CyclicBarrier 可以构造一个集结点,当某一个线程执行完毕,它就会到集结点等待,直到所有线程都到了集结点,那么该栅栏就会被撤销,所有线程再统一出发,继续执行剩下的任务用法一:等待所有人到达指定地点
Docker成神之路——浅谈DockerOverlay网络
DockerOverlay网络Overlay是一种覆盖在主机上的虚拟网络,我理解的overlay他需要借助插件或工具完成对数据的保存和转发。我们这里使用etcd来完成overlay的跨主机容器通信 1. 安装etcd(这里我只启动两个节点的etcd,也可单机模式)我这里选择用安装包方式,你也可以选择yum wget https://github.com/etcd-io/etcd/release