![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 92
40岁资深老架构师尼恩
40岁老架构师尼恩,中南大学硕士,资深系统架构师、IT领域资深作家、著名博主,《Java高并发核心编程》三部曲作者,《尼恩Java面试宝典》作者。先后在华为、神州数码从事技术研发、架构工作。长期专注于高性能Web平台、高性能通信、高性能3高架构研究、系统架构、系统分析、核心代码开发工作。负责过多个亿级RMB智项目、大型政务平台的基础中台架构、数据中台架构、技术中台架构工作,发起的Java高并发研究社群《疯狂创客圈》有1100多研究人员
展开
-
怒赞了,阿里P8面试官推荐的Java高并发核心编程文档
学完阿里P8面试官推荐的Java高并发核心编程文档后,终于拿到了蚂蚁p6的offer,这份文档包含的内容有点多。Java高并发核心编程文档《尼恩Java高并发三部曲》获读者怒赞!由浅入深地剖析了高并发IO的底层原理。图文并茂的介绍了TCP、HTTP、WebSocket协议的核心原理。细致深入地揭秘了Reactor高性能模式。全面介绍了Netty框架,并完成单体IM、分布式IM的实战设计。详尽地介绍了ZooKeeper、Redis的使用,以帮助提升高并发、可扩展能力。原创 2023-09-12 18:09:41 · 900 阅读 · 0 评论 -
美团2面:如何保障 MySQL 和 Redis 数据一致性?这样答,让面试官爱到 死去活来
Cache-Aside Pattern(旁路缓存)模式,又叫旁路路由策略,在这种模式中,读取缓存、读取数据库和更新缓存的操作都是在应用程序中完成。此模式是业务系统最常用的缓存策略。旁路缓存又模式分为读缓存和写缓存。旁路缓存模式在读的时候,先读缓存,缓存命中的话,直接返回数据;如果缓存没有命中的话,就去读数据库,从数据库取出数据,放入缓存后,同时返回响应。Cache-Aside Pattern(旁路缓存)模式读操作流程,具体如下:step 1:应用程序接收用户的数据查询的请求;原创 2023-03-02 10:12:27 · 7102 阅读 · 1 评论 -
Linux命令大全:2W多字,一次实现Linux自由
Linux系统内核指的是由负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。Linux发行套件系统是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品。「总结:真正的Linux指的是系统内核,而我们常说的Linux指的是“发行版完整的包含一些基础软件的操作系统”。相信通过本文的学习,你应该会对Linux有一个更加全面的认识。最后,实现Linux 命令自由。原创 2023-02-08 11:18:27 · 63843 阅读 · 25 评论 -
Jedis那么低性能,还在用?赶紧换上 lettuce 吧
Redis 官方推荐的 Java 客户端有Jedis、lettuce 和 Redisson。客户端1:Jedis是老牌的Redis的Java实现客户端,提供了比较全面的Redis命令的支持Jedis 在线网址:客户端2:Redisson实现了分布式和可扩展的Java数据结构。促使使用者对Redis的关注分离,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列redisson 官网地址:redisson git项目地址:客户端3:lettuce。原创 2023-02-07 10:26:22 · 3040 阅读 · 0 评论 -
京东一面:20种异步,你知道几种? 含协程
调用方在调用过程中,持续阻塞,一直到返回结果。同步获取结果的方式是: 主动等待。调用方在调用过程中,不会阻塞, 不直接等待返回结果, 而是执行其他任务。异步获取结果的方式是 : 被动通知或者 被动回调。1、定义发送事件对象2、定义事件监听器可以添加条件condition,限制监听具体的事件try {// 休眠5秒 TimeUnit . SECONDS . sleep(5);} }3、定义发送接口以及实现类entity . setMsg("新用户注册同步调用");} }原创 2023-02-06 11:46:48 · 5796 阅读 · 3 评论 -
索命一问:一个SQL ,怎么分析加了哪些锁?
为大家梳理了 加锁的四大场景、八大规则,把这个 “夺命一问”, 彻底攻克。原创 2023-02-05 10:58:27 · 3287 阅读 · 4 评论 -
美团一面:InndoDB 单表最多 2000W,为什么?小伙伴竟然面挂
尼恩在这里,给大家做一个系统化、起底式、全方位的梳理。首先从 InnoDB 索引数据结构、数据组织方式说起。原创 2023-02-04 14:14:05 · 4109 阅读 · 1 评论 -
阿里二面: BigKey、HotKey 问题严重,该如何 预防和解决
有很多小伙伴在面试阿里、滴滴、京东等大厂的二面、三面中遇到了这个问题。尼恩结合行业生产案例,做一个彻底的、系统的梳理。原创 2023-02-03 15:28:01 · 3635 阅读 · 0 评论 -
阿里二面:千万级、亿级数据,如何性能优化? 教科书级 答案来了
尼恩梳理教科书式答案:千万级数据,亿级数据,如何做性能优化?原创 2023-02-02 14:55:59 · 9151 阅读 · 1 评论 -
字节二面:100Wqps短链系统,如何设计?
高并发、高性能分布式 ID;Redis Bloom Filter 高并发、低内存损耗的 过滤组件知识;分库、分表海量数据存储;多级缓存的知识;HTTP传输知识;二进制、十六进制、六十二进制知识原创 2023-01-31 17:06:11 · 2904 阅读 · 1 评论 -
轻量级 K8S 环境、本地 K8S 环境Minikube,一键使用 (史上最全)
minikube 是本地 Kubernetes,优点是:快速启动,消耗机器资源较少,非常适合新手体验与开发。我们知道,在Intel处理器上,Vitural box使用Intel的vmx(virtul machine eXtensions)来提高虚拟机性能, 即硬件辅助虚拟化技术,现在如果我们需要需要多台具备"vmx"支持的主机, 但是又没有太多物理服务器可使用,如果我们的虚拟机能够和物理机一样支持"vmx",那么问题就解决了,原创 2023-01-30 13:48:17 · 6811 阅读 · 0 评论 -
100w人在线的 弹幕 系统,是怎么架构的?
高效且稳定的支撑了单房间100w用户在线,成功完成了既定的100w用户的目标原创 2023-01-19 14:52:38 · 16501 阅读 · 5 评论 -
峰值21WQps、亿级DAU,小游戏《羊了个羊》是怎么架构的?
通过《羊了个羊》团队在小游戏架构扩容、系统运维以及安全防范领域的实战经验,可以给大家一些参考。原创 2023-01-18 13:52:15 · 5394 阅读 · 0 评论 -
操作系统面试题(史上最全、持续更新)
刨根问底 100 个 操作系统 面试题原创 2023-01-16 20:23:48 · 14503 阅读 · 0 评论 -
2个大厂 100亿级 超大流量 红包 架构方案
用户可以在任意一端参与字节的春节活动获取奖励,以抖音红包雨现金红包入账场景为例,具体的业务流程如下:登录抖音 → 参与活动 → 活动钱包页 → 点击提现按钮 → 进入提现页面 → 进行提现 → 提现结果页,另外从钱包页也可以进入活动钱包页。集卡:集卡抽卡时发放各类卡券,集卡锦鲤还会发放大额现金红包,集卡开奖时发放瓜分奖金和优惠券;红包雨:发红包、卡券以及视频补贴红包,其中红包和卡券最高分别 180w QPS;原创 2023-01-15 19:55:08 · 4859 阅读 · 2 评论 -
Nginx面试题(史上最全 + 持续更新)
Nginx是一个web服务器和反向代理服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议。Nginx—Ngine X,是一款免费的、自由的、开源的、高性能HTTP服务器和反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;Nginx以其高性能、稳定性、丰富的功能、简单的配置和低资源消耗而闻名。也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行Http服务处理,也可以作为反向代理服务器 、负载均衡器和HTTP缓存。原创 2023-01-14 16:15:13 · 15164 阅读 · 3 评论 -
K8S面试题(史上最全 + 持续更新)
K8s是kubernetes的简称,其本质是一个开源的容器编排系统,主要用于管理容器化的应用,其目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。说简单点:k8s就是一个编排容器的系统,一个可以管理容器应用全生命周期的工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且还可以做到故障自愈,所以,k8s是一个非常强大的容器编排系统。原创 2023-01-13 12:10:28 · 22343 阅读 · 10 评论 -
Docker面试题(史上最全 + 持续更新)
Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。原创 2023-01-13 10:21:03 · 57813 阅读 · 7 评论 -
通过事件总线EventBus/AsyncEventBus进行JAVA模块解耦 (史上最全)
EventBus是google的Guava库中的一个处理组件间通信的事件总线,它基于发布/订阅模式,实现了多组件之间通信的解耦合,事件产生方和事件消费方实现解耦分离,提升了通信的简洁性。为什么使用事件总线?当一个事件的发生(事件产生方),需要触发很多事件(事件消费方)的时候,我们通常会在事件产生方中,分别的去调用那些事件消费方,这样往往是很浪费资源。事件的产生方与事件的消费方,产生了极大的耦合,如果我们要改动某一个事件消费方,我们很可能还要改动事件的产生方。原创 2023-01-12 12:09:06 · 4884 阅读 · 0 评论 -
场景题:假设10W人突访,你的系统如何做到不 雪崩?
在某个Key接收到的访问次数、显著高于其它Key时,我们可以将其称之为HotKey,某Redis实例的每秒总访问量为10000,而其中一个Key的每秒访问量达到了7000(访问次数显著高于其它Key)对一个拥有上千个成员且总大小为1MB的HASH Key每秒发送大量的HGETALL(带宽占用显著高于其它Key)对一个拥有数万个成员的ZSET Key每秒发送大量的ZRANGE(CPU时间占用显著高于其它Key)1 、MySQL等数据库会被频繁访问的热数据如爆款商品的skuId。原创 2023-01-03 20:46:03 · 19407 阅读 · 11 评论 -
高可用 Canal集群( 秒懂 + 史上最全)
canal server 仅仅是保姆角色,真正完成 解析 binlog日志、 binlog日志过滤、 binlog日志转储、位点元数据管理等等 核心功能,是由canal instance 角色完成。Canal Instance 的架构图如下图所示:Canal 中数据的同步是由 CanalInstance 组件负责,一个 Canal Server 实例中可以创建多个 CanalInstance 实例。原创 2022-12-23 10:35:02 · 14306 阅读 · 0 评论 -
Java核心实操:内存溢出 实战、内存泄漏实战
实操1:使用JVisualVM分析内存溢出OOM,实操2:使用JVisualVM分析内存泄漏原创 2022-12-18 15:41:55 · 1937 阅读 · 0 评论 -
秒懂:JCTool 的 Mpsc 高性能无锁队列 (史上最全+10W字长文)
MpscQueue由一系列数组构成,数组的最后一个元素指向下一个数组,形成单向链表。MpscQueue全程无锁化,非阻塞,相较于JDK提供的同步阻塞队列,性能有很好的提升,这也是Netty后来的版本将任务队列替换为JCtools的重要原因。在生产过程中,它用到了大量的CAS操作,对于需要做并发控制的地方,确保只有一个线程会执行成功,其他CAS失败的线程会自旋重试,全程都是无锁非阻塞的。不管是扩容,还是等待元素被填充到数组,这些过程都是会极快完成的,因此短暂的自旋会比线程挂起再唤醒效率更高。原创 2022-12-12 20:49:14 · 4851 阅读 · 0 评论 -
时间轮 (史上最全)
缓存之王 Caffeine 中,涉及到100w级、1000W级、甚至亿级元素的过期问题,如何进行高性能的定时调度,是一个难题。原创 2022-12-11 18:06:58 · 2597 阅读 · 0 评论 -
单例模式(史上最全)
保证一个类只有一个实例,并且提供一个访问该全局访问点。原创 2022-12-10 19:06:11 · 4038 阅读 · 0 评论 -
队列之王: Disruptor 原理、架构、源码 一文穿透
《disruptor 红宝书》目的:作为Java领域最高性能的 队列,没有之一, 大家不光要懂,而是 需要深入骨髓的搞懂。 所以,给大家奉上了本书,并且配备了视频进行 详细介绍, 目的:帮助,大家穿透 一个 绝对核心高性能 Java高性能的 队列 的架构和原理,让 面试题 五体投地、顶礼膜拜。原创 2022-12-10 15:07:49 · 4612 阅读 · 0 评论 -
环形队列、 条带环形队列 Striped-RingBuffer (史上最全)
这个是一个超高性能的 无锁队列原创 2022-12-10 14:02:58 · 4132 阅读 · 1 评论 -
吊打面试官,聊聊:Java中String对象的大小?(史上最全)
下面是一个常见的Java 面试题:聊聊:Java中String对象的大小?原创 2022-12-10 13:57:37 · 1317 阅读 · 0 评论 -
吊打面试官,聊聊:强引用、软引用、弱引用、虚引用? 重点是 各自的 使用场景?(史上最全)
为您奉上珍贵的学习资源 :持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备面试必备 + 大厂必备 +涨薪必备 加尼恩免费领面试必备 + 大厂必备 +涨薪必备 加尼恩免费领面试必备 + 大厂必备 +涨薪必备 加尼恩免费领面试必备 + 大厂必备 +涨薪必备 加尼恩免费领免费赠送 资源宝库:>10000元 加尼恩领取四大引用 中的三大,大家平时用的比较少,更多在当中使用。所以,这道题,。原创 2022-12-09 21:34:12 · 1474 阅读 · 0 评论 -
JIT 即时编译 (史上最全)
当JVM发现某个方法或代码块运行特别频繁的时候,就会认为这是“热点代码”(Hot Spot Code)。然后JIT会把部分“热点代码”翻译成本地机器相关的机器码,并进行优化,然后再把翻译后的机器码缓存起来,以备下次使用。把翻译后的机器码缓存在哪里呢?这个 机器码缓存,叫做 Code Cache。当JVM下次遇到相同的热点代码时,跳过解释的中间环节,直接从 Code Cache加载机器码,直接执行,无需 再编译。原创 2022-12-09 12:05:13 · 1175 阅读 · 0 评论 -
JVM 逃逸分析 (史上最全)
对于JVM“逃逸分析” 特性,也是近年来大厂面试、高薪面试的常见面试题。和逃逸分析有关的常见面试题: Java中的对象一定是在堆上分配的吗?原创 2022-12-09 12:00:36 · 1448 阅读 · 0 评论 -
Caffeine 源码、架构、原理(史上最全,10W字 超级长文)
在某段时间内某个key收到的访问次数,显著高于其他key时,我们可以将其称之为热key。例如,某redis的每秒访问总量为10000,而其中某个key的每秒访问量达到了7000,这种情况下,我们称该key为热key。原创 2022-11-30 21:51:37 · 8155 阅读 · 0 评论 -
阅读源码时:idea中如何使用todo标记、活动模板 (史上最全)
在多人开发时,大家都可能编写TODO标签,用于 标记 没有完成的 任务为了快速找到源码中的 核心流程,可以借助TODO标签 来完成然后, 在梳理 一个场景的代码,或者梳理一个流程中的代码时,此时,你就要自定义一个TODO标签, 然后 ,在 导航 同一个流程的代码时, 使用一个和这个TODO标签相关的,一个特定的过滤器来筛选。关于 本文的代码,和技术问题, 请来尼恩 发起的3高架构社群疯狂创客圈社群交流 ,在多人开发时,大家都可能编写TODO标签,原创 2022-11-25 21:42:24 · 3554 阅读 · 0 评论 -
ZooKeeper会话Session (秒懂+图解+史上最全)
那对于ZK的服务端来说,如何维护管理这些会话,就是本文要聊的内容啦~我们在服务器启动Zookeeper的时候能得知,ZK服务端对外默认端口是2181。而客户端连接到服务端上,其本质其实就是一个TCP连接(长连接) ,当连接正式建立起来的时候,就开起来该次会话的生命周期了。有了会话之后,后续的请求发送,回应,心跳检测等机制都是基于会话来实现的。关于 本文的技术问题, 请来尼恩 发起的Java 高并发疯狂创客圈社群交流 ,原创 2021-12-01 13:43:21 · 1511 阅读 · 0 评论 -
Gradle (史上最全): 5W字文
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言C++、Java、Groovy、Kotlin、Scala和Swift,计划未来将支持更多的语言。用一种更简洁的方式来定义上面的 hello 任务。'}原创 2022-11-21 21:28:46 · 3550 阅读 · 2 评论 -
Prometheus+Grafana (史上最全)
可观测性包括 Metrics、Traces、Logs 3 个维度。可观测能力帮助我们在复杂的分布式系统中快速排查、定位问题,是分布式系统中必不可少的运维工具。• Metrics,监控指标系统性能指标,包括请求成功率、系统吞吐量、响应时长资源性能指标,衡量系统软硬件资源使用情况,配合系统性能指标,观察系统资源水位• Logs,日志施压引擎日志,观察施压引擎是否健康,压测脚本执行是否有报错。原创 2022-10-08 12:08:46 · 53271 阅读 · 4 评论 -
disruptor 史上最全之3: 8大使用场景详细图解
本文简绍 disruptor的 8大使用场景原创 2022-10-05 16:33:55 · 4112 阅读 · 0 评论 -
disruptor (史上最全之1):伪共享原理&性能对比实战
提前说明: 翻译 有瑕疵, 伪共享(False Sharing), 应该翻译为 “错共享”, 才更准确CPU的缓存系统是以缓存行(cache line)为单位存储的,一般的大小为64bytes。在多线程程序的执行过程中,存在着一种情况,多个需要频繁修改的变量存在同一个缓存行当中。假设:有两个线程分别访问并修改X和Y这两个变量,X和Y恰好在同一个缓存行上,这两个线程分别在不同的CPU上执行。原创 2022-09-30 14:38:26 · 1304 阅读 · 0 评论 -
5W字穿透 ELK(史上最全):elasticsearch +logstash+kibana
Elasticsearch 是一个分布式的开源搜索和分析引擎,在的基础上开发而成。Lucene 是开源的搜索引擎工具包,Elasticsearch 充分利用Lucene,并对其进行了扩展,使存储、索引、搜索都变得更快、更容易, 而最重要的是, 正如名字中的“ elastic ”所示, 一切都是灵活、有弹性的。而且,应用代码也不是必须用Java 书写才可以和Elasticsearc兼容,完全可以通过JSON 格式的HTTP 请求来进行索引、搜索和管理Elasticsearch 集群。原创 2022-09-26 19:01:16 · 4292 阅读 · 0 评论 -
clickhouse 超底层原理 + 高可用实操 (史上最全)
文章很长,建议收藏起来慢慢读! 总目录 博客园版 为大家准备了更多的好文章!!!!尼恩Java面试宝典,34个最新pdf,含2000多页,不断更新、持续迭代 具体详情,请点击此链接这段时间给大家 做简历指导,发现大家都缺少优质实操项目,所以打算介绍一个《100W级别qps日志平台实操》,基于clickhouse+netty,于是,就写了此文此文设计到大量的底层原理,和高并发的实操知识,建议大家慢慢读,并且强烈建议大,对着此文,实操一下。例如mysql。擅长事务处理,在数据操作中保持着很强的一致性和原子性 ,原创 2022-09-22 15:14:48 · 22986 阅读 · 0 评论