
面试
文章平均质量分 87
小狐憨憨
公众号:小柯贤,尽量每天都更新知识
展开
-
Kafka常见面试题
1.什么是消息中间件? 2.kafka 是什么?有什么作用? 3.kafka 的架构是怎么样的? 4.Kafka Replicas是怎么管理的? 5.如何确定当前能读到哪一条消息? 6.生产者发送消息有哪些模式? 7.发送消息的分区策略有哪些? 8.Kafka 支持读写分离吗?为什么? 9.那 Kafka 是怎么去实现负载均衡的? 10.Kafka 的负责均衡会有什么问题呢? 11.Kafka 的可靠性是怎么保证的? 12.Kafka 的消息消费方式有哪些? 13.分区再分配是做什么转载 2021-08-12 20:47:55 · 22436 阅读 · 3 评论 -
6000 字 | 统一缓存帝国 - 实战 Spring Cache
本篇我来向大家介绍一种兼容所有缓存中间件的方案,不论我们是使用 Redis 还是 Ehcache,都不需要关心如何操作 Redis 或者 Ehcache,这套方案统统帮你搞定。这套方案就是大名鼎鼎的Spring Cache。什么?你没有听过,没关系,本篇带你一起探索。缓存系列文章:《缓存实战(一)》《缓存实战(二)Redis分布式锁》《缓存实战(三)Redisson 分布式锁》一、揭开 Spring Cache 的面纱1.1 现有缓存方案的痛点试想一种场景:1..转载 2021-08-11 20:57:37 · 170 阅读 · 0 评论 -
9个学习编程的学习教程yyds
今天推荐 10 个 GitHub 、码云上 Star 数量最高的开源项目,是 Java、Python、算法等相关技术栈的教程。01. Spring Boot 基础教程第一个开源项目是一套《Spring Boot 基础教程》的程序样例,程序员DD大佬维护,旨在打造全网内容最全,比收费教程更好的 Spring Boot 免费教程,该教程分为 1.x 版本和 2.x 版本。地址:https://gitee.com/didispace/SpringBoot-Learning03. JavaGu转载 2021-08-09 21:22:54 · 214 阅读 · 0 评论 -
消息队列之事务消息,RocketMQ 和 Kafka是如何做的?
今天我们来谈一谈消息队列的事务消息,一说起事务相信大家都不陌生,脑海里蹦出来的就是 ACID。通常我们理解的事务就是为了一些更新操作要么都成功,要么都失败,不会有中间状态的产生,而 ACID 是一个严格的事务实现的定义,不过在单体系统时候一般都不会严格的遵循 ACID 的约束来实现事务,更别说分布式系统了。分布式系统往往只能妥协到最终一致性,保证数据最终的完整性和一致性,主要原因就是实力不允许...因为可用性为王。而且要保证完全版的事务实现代价很大,你想想要维护这么多系统的数据,不允许有中间状态转载 2021-08-07 20:53:40 · 344 阅读 · 0 评论 -
破玩意 | 用 HTTPS 传纸条
我和小宇早恋了,上课的时候老说话。老师把我们的座位分得很远,我在第一排,她在最后一排,我们中间隔了很多人。但我们还是想通过传纸条的方式交流。我们中间的那些同学,虽然坏心思比较多,但好在可以保证将纸条传递到位,于是我们用传纸条的方式,一直秘密交流着感情。但好景不长,我们渐渐发现,中间这些同学特别不靠谱,出现了以下两种恶劣的行为:偷看纸条,把我们的小甜蜜作为他们饭后的谈资。篡改内容,让我们之间产生了好多误会。单钥匙锁单钥匙锁转载 2021-08-05 20:15:27 · 300 阅读 · 1 评论 -
一文聊透限流这件事儿
限流简介现在说到高可用系统,都会说到高可用的保护手段:缓存、降级和限流,本博文就主要说说限流。限流是流量限速(Rate Limit)的简称,是指只允许指定的事件进入系统,超过的部分将被拒绝服务、排队或等待、降级等处理。对于server服务而言,限流为了保证一部分的请求流量可以得到正常的响应,总好过全部的请求都不能得到响应,甚至导致系统雪崩。限流与熔断经常被人弄混,博主认为它们最大的区别在于限流主要在server实现,而熔断主要在client实现,当然了,一个服务既可以充当server也可以充当clien转载 2021-07-23 20:38:13 · 1339 阅读 · 1 评论 -
Java进阶的开源项目
众所周知,Java岗位在国内非常火热。Java 语言的实用性、简易性和向后兼容性都彰显出独特的价值。正因如此,Java 语言才能超越 C 语言占据的主流地位,成为计算机语言中的 “大佬”。我们怎么才能成为别人口中的Java大神,成为企业渴望的人才呢?我们在学习一门技术的时候,应该先对技术的基本脉络有个大概了解,然后对于脉络中的每个知识点不断扩展和延伸,不断查漏补缺,这才是最有效率的学习方式。今天就给大家介绍两种针对新手的 Java 技术学习路线。深入浅出 Java 多线程开源地址:https:/原创 2021-07-22 20:47:05 · 351 阅读 · 0 评论 -
源码探秘:Tomcat 在 SpringBoot 中是如何启动的?
前言[1] 从 Main 方法说起[2] 走进 Tomcat 内部[3] 总结[4]前言我们知道 SpringBoot 给我们带来了一个全新的开发体验,我们可以直接把 web 程序达成 jar 包,直接启动,这就得益于 SpringBoot 内置了容器,可以直接启动,本文将以 Tomcat 为例,来看看 SpringBoot 是如何启动 Tomcat 的,同时也将展开学习下 Tomcat 的源码,了解 Tomcat 的设计。从 Main 方法说起用过 SpringBoot 的人都知道,首转载 2021-07-21 21:19:42 · 103 阅读 · 0 评论 -
全面理解String,StringBuffer,StringBuilder-到面试复盘
前言String类是java1.0版本就有的,在我们日常开发可能会忽视这个类的进阶问题,你对String,StringBuild,StringBuffer这个常见的面试题的理解呢?String创建一个字符串时,首先检查字符串常量池中是否有值相同的字符串对象,如果有则不需要创建直接从池中刚查找到的对象引用;如果没有则新建字符串对象,返回对象引用,并且将新创建的对象放入池中。但是,通过new方法创建的String对象是不检查字符串池的,而是直接在堆区或栈区创建一个新的对象,也不会把对象放入池中。Str原创 2021-04-20 21:26:04 · 130 阅读 · 0 评论 -
动态代理是基于什么原理?
前言这章节说说动态代理是基于什么原理实现的,Java 是静态的强类型语言,但是因为提供了类似反射等机制,也具备了部分动态类型语言的能力,所以Java提供了一个反射机制来实现那什么是静态代理呢?静态代理事先写好代理类,可以手工编写,也可以用工具生成。缺点是每个业务类都要对应一个代理类,非常不灵活动态代理运行时自动生成代理对象。缺点是生成代理代理对象和调用代理方法都要额外花费时间Java中的动态代理的方式在讨论java中的动态代理的时候先讨论一个面试题:你能说说什么是反射机制?动态代理的实现原创 2021-04-20 13:01:54 · 264 阅读 · 0 评论 -
Spring事务传播机制理解
前言Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利。但是人们对他的误解也颇多,你一定也听过“service方法事务最好不要嵌套”的传言。要想正确的使用工具首先需要了解工具。本文对七种事务传播行为做详细介绍,内容主要代码示例的方式呈现。基础概念1. 什么是事务传播行为?事务传播行为用来转载 2021-03-27 18:08:41 · 263 阅读 · 0 评论 -
Redis分布式锁的原理与面试细节
这里就讲了下怎么加锁的,很多原理的问题小伙伴们,可用百度下分布式锁,看图中我特别在加锁与删除锁的时候还有俩个指向就特别说下这俩个问题我们加锁的时候为了防止死锁的问题都在加锁的时候会带上 锁过期时间的问题我们使用Redis提供的设置值的时候跟设置过期时间是原子性的操命令SETNX EX加锁时候的原子性问题我们解决了,我们知道分布式锁就是只有一个线程才能抢到锁位,那其他线程怎么处理呢?有些文章可能都只说了一些流程却忘记了很多坑加锁失败的几个解决办法【这也叫锁冲突的问题】直接抛弃,前端提醒用户该.原创 2021-03-26 11:19:05 · 753 阅读 · 0 评论 -
决战紫禁之巅之Redis面试
Redis单线程为什么那么快?redis的速度非常快,速度快的原因主要有以下几点:完全基于内存操作C语言实现,优化过的数据结构,基于几种基础的数据结构,redis做了大量的优化,性能极高使用单线程,无上下文的切换成本基于非阻塞的IO多路复用机制请说说常用的Redis基本类型类型底层实现场景String (字符串)SDS动态字符串,小于多少的时候是采用压缩存储的1.验证码时间判断 2.分布式锁,3.去重等List(链表结构,双向链表)LinkedLIst双.原创 2021-03-25 21:38:33 · 254 阅读 · 1 评论