Fork me on GitHub
上一页 1 2 3 4 5 6 7 ··· 30 下一页
摘要: 这几天面试哈啰,本来以为小小哈啰可以轻松拿捏,但没成想,问的还挺深,差点要了狗命,一起来看看吧~ 创建一个线程时底层发生了什么? 在 Java 中,创建一个线程时,底层发生了以下几个主要步骤: 分配线程栈:线程对象被创建后,Java 虚拟机会为该线程分配一个独立的线程栈(Thread Stack), 阅读全文
posted @ 2024-06-26 08:44 磊哥|www.javacn.site 阅读(89) 评论(0) 推荐(0) 编辑
摘要: JWT(JSON Web Token)一种开放的标准规范(RFC 7519),用于在网络上安全的传输信息,通常被用于身份验证。 简单来说,你可以把 JWT 想象成一张小巧的、自包含的电子通行证。这张通行证里面包含了用户的身份信息,就像你在某个俱乐部的会员卡,上面有你的名字、会员等级等信息,拿着这张卡 阅读全文
posted @ 2024-06-21 14:50 磊哥|www.javacn.site 阅读(167) 评论(0) 推荐(0) 编辑
摘要: Dubbo 是一款高性能、轻量级的开源 RPC(远程过程调用)框架,主要用于构建分布式服务和微服务架构。那 Dubbo 又是如何运行的呢?让我们一起来看。 1.核心组件 要说 Dubbo 运行流程就不得不先来了解一下 Dubbo 的核心组件了,因为 Dubbo 的交互流程是和核心组件息息相关的。 D 阅读全文
posted @ 2024-06-20 14:56 磊哥|www.javacn.site 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 前几天刚面完百度,这不,没两天就收到二面邀请了,还有点小激动呢!来看看这次都问了哪些面试题吧,附答案仅供参考。 ConsurrentHashMap如何计算下标? ConsurrentHashMap 计算下标和 HashMap 类似,它的主要执行流程有以下两步: 计算 key 哈希值: JDK 1.7 阅读全文
posted @ 2024-06-19 14:30 磊哥|www.javacn.site 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 上周刚刚面了百度,问的问题不算很难,但却很细,我把这些面试题和答案都整理出来了,一起来看吧。 重点介绍一个你觉得有意义的项目? 回答技巧和思路: 介绍的项目业务难度和技术难点要高一些,最好是微服务项目。 简明扼要的讲清楚项目核心板块的业务场景即可,切忌不要讲的太细和太久,这只是面试官要考察你技术问题 阅读全文
posted @ 2024-06-17 15:41 磊哥|www.javacn.site 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 在一些中小型项目开发中,我们通常会使用自增 ID 来作为主键的生成策略,但随着时间的推移,数据库的信息也会越来越多,尤其是使用自增 ID 作为日志表的主键生成策略时,可能很快就会遇到 ID 被用完的情况,那么如果发生了这种情况,MySQL 又会怎样执行呢? PS:当然,在分库分表的场景中,我们通常会 阅读全文
posted @ 2024-06-14 15:41 磊哥|www.javacn.site 阅读(210) 评论(0) 推荐(0) 编辑
摘要: Spring AI 已经发布了好长时间了,目前已经更新到 1.0 版本了,所以身为 Java 程序员的你,如果还对 Spring AI 一点都不了解的话,那就有点太落伍了。 言归正传,那什么是 Spring AI?如何快速进行 Spring AI 开发呢? 1.什么是Spring AI? Sprin 阅读全文
posted @ 2024-06-13 14:41 磊哥|www.javacn.site 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 虚拟线程(Virtual Thread)也称协程或纤程,是一种轻量级的线程实现,与传统的线程以及操作系统级别的线程(也称为平台线程)相比,它的创建开销更小、资源利用率更高,是 Java 并发编程领域的一项重要创新。 PS:虚拟线程正式发布于 Java 长期支持版(Long Term Suort,LT 阅读全文
posted @ 2024-06-12 14:26 磊哥|www.javacn.site 阅读(522) 评论(0) 推荐(0) 编辑
摘要: 高并发系统有三大特征:限流、缓存和熔断,所以限流已经成为当下系统开发中必备的功能了。那么,什么是限流?如何实现限流?使用 Redis 能不能实现限流?接下来我们一起来看。 1.什么是限流? 限流是指在各种应用场景中,通过技术和策略手段对数据流量、请求频率或资源消耗进行有计划的限制,以避免系统负载过高 阅读全文
posted @ 2024-06-11 15:17 磊哥|www.javacn.site 阅读(363) 评论(0) 推荐(1) 编辑
摘要: 零拷贝技术(Zero-Copy)是一个大家耳熟能详的技术名词了,它主要用于提升 IO(Input & Output)的传输性能。 那么问题来了,为什么零拷贝技术能提升 IO 性能? 1.零拷贝技术和性能 在传统的 IO 操作中,当我们需要读取并传输数据时,我们需要在用户态(用户空间)和内核态(内核空 阅读全文
posted @ 2024-06-07 14:20 磊哥|www.javacn.site 阅读(729) 评论(0) 推荐(1) 编辑
摘要: 在 Java 中,Map 是属于 java.util 包下的一个接口(interface),所以说“为什么 Map 不能插入 null?”这个问题本身问的不严谨。Map 部分类关系图如下: 所以,这里面试官其实想问的是:为什么 ConcurrentHashMap 不能插入 null? 1.HashM 阅读全文
posted @ 2024-06-06 14:53 磊哥|www.javacn.site 阅读(802) 评论(0) 推荐(0) 编辑
摘要: Netty 框架是以性能著称的框架,因此在它的框架中使用了大量提升性能的机制,例如 Netty 用于实现延迟队列的时间轮调度算法就是一个典型的例子。使用时间轮调度算法可以实现海量任务新增和取消任务的时间度为 O(1),那么什么是时间轮调度算法呢?接下来我们一起来看。 1.延迟任务实现 在 Netty 阅读全文
posted @ 2024-06-05 15:06 磊哥|www.javacn.site 阅读(129) 评论(0) 推荐(0) 编辑
摘要: Netty 作为一个高性能的网络通讯框架,它内置了很多恰夺天工的设计,目的都是为了将网络通讯的性能做到极致,其中「对象池技术」也是实现这一目标的重要技术。 1.什么是对象池技术? 对象池技术是一种重用对象以减少对象创建和销毁带来的开销的方法。在对象池中,只有第一次访问时会创建对象,并将其维护在内存中 阅读全文
posted @ 2024-06-04 15:03 磊哥|www.javacn.site 阅读(101) 评论(0) 推荐(1) 编辑
摘要: 粘包和拆包问题也叫做粘包和半包问题,它是指在数据传输时,接收方未能正常读取到一条完整数据的情况(只读取了部分数据,或多读取到了另一条数据的情况)就叫做粘包或拆包问题。 从严格意义上来说,粘包问题和拆包问题属于两个不同的问题,接下来我们分别来看。 1.粘包问题 粘包问题是指在网络通信中,发送方连续发送 阅读全文
posted @ 2024-06-03 15:05 磊哥|www.javacn.site 阅读(105) 评论(0) 推荐(0) 编辑
摘要: Netty 线程模型是指 Netty 框架为了提供高性能、高并发的网络通信,而设计的管理和利用线程的策略和机制。 Netty 线程模型被称为 Reactor(响应式)模型/模式,它是基于 NIO 多路复用模型的一种升级,它的核心思想是将 IO 事件和业务处理进行分离,使用一个或多个线程来执行任务的一 阅读全文
posted @ 2024-05-31 14:52 磊哥|www.javacn.site 阅读(129) 评论(1) 推荐(2) 编辑
摘要: Netty 核心组件是指 Netty 在执行过程中所涉及到的重要概念,这些核心组件共同组成了 Netty 框架,使 Netty 框架能够正常的运行。 Netty 核心组件包含以下内容: 启动器 Bootstrap/ServerBootstrap 事件循环器 EventLoopGroup/EventL 阅读全文
posted @ 2024-05-30 14:54 磊哥|www.javacn.site 阅读(342) 评论(0) 推荐(1) 编辑
摘要: FastThreadLocal 从字面意义上来看,它是“Fast”+“ThreadLocal”的结合体,寓意为快速的 ThreadLocal。那么,问题来了,Netty 为什么要再造一个 FastThreadLocal?FastThreadLocal 运行快的原因是啥?除了快之外,它还有其他优势吗? 阅读全文
posted @ 2024-05-28 14:16 磊哥|www.javacn.site 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 在 Java 中总共有三种 IO 类型:BIO(Blocking I/O,阻塞I/O)、NIO(Non-blocking I/O,非阻塞I/O)和 AIO(Asynchronous I/O,异步I/O),它们的区别如下: 在 JDK 1.4 之前,只有 BIO 一种模式,其开发过程相对简单,新来一个 阅读全文
posted @ 2024-05-27 14:52 磊哥|www.javacn.site 阅读(158) 评论(0) 推荐(1) 编辑
摘要: Spring Boot 作为 Java 开发中必备的框架,它为开发者提供了高效且易用的开发工具,所以和它相关的面试题自然也很重要,咱们今天就来看这道经典的面试题:SpringBoot同时可以处理多少个请求 ? 准确的来说,Spring Boot 同时可以处理多少个请求,并不取决于 Spring Bo 阅读全文
posted @ 2024-05-24 14:53 磊哥|www.javacn.site 阅读(107) 评论(0) 推荐(1) 编辑
摘要: Kafka 是一个分布式流处理平台和消息系统,用于构建实时数据管道和流应用。它最初由 LinkedIn 开发,后来成为 Apache 软件基金会的顶级项目。 Kafka 特点是高吞吐量、分布式架构、支持持久化、集群水平扩展和消费组消息消费,具体来说: 高吞吐量:Kafka 具有高性能和低延迟的特性, 阅读全文
posted @ 2024-05-23 16:42 磊哥|www.javacn.site 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 限流想必大家都不陌生,它是一种控制资源访问速率的策略,用于保护系统免受过载和崩溃的风险。限流可以控制某个服务、接口或系统在一段时间内能够处理的请求或数据量,以防止系统资源耗尽、性能下降或服务不可用。 常见的限流策略有以下几种: 令牌桶算法:基于令牌桶的方式,限制每个单位时间内允许通过的请求量,请求量 阅读全文
posted @ 2024-05-22 09:29 磊哥|www.javacn.site 阅读(327) 评论(0) 推荐(0) 编辑
摘要: JVM 调优是一个很大的话题,在回答“如何进行 JVM 调优?”之前,首先我们要回答一个更为关键的问题,那就是,我们为什么要进行 JVM 调优? 只有知道了为什么要进行 JVM 调优之后,你才能准确的回答出来如何进行 JVM 调优? 要进行 JVM 调优无非就是以下两种情况: 目标驱动型的 JVM 阅读全文
posted @ 2024-05-21 14:22 磊哥|www.javacn.site 阅读(444) 评论(4) 推荐(0) 编辑
摘要: 我们知道,线程池中的所有线程都是由统一的线程工厂来创建的,当我们指定线程工厂时,线程池中的所有线程会使用我们指定的线程工厂来创建线程;但如果没有指定线程工厂,则会使用默认的线程工厂 DefaultThreadFactory 来创建线程,核心源码如下: DefaultThreadFactory() { 阅读全文
posted @ 2024-05-20 16:19 磊哥|www.javacn.site 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 线程任务编排指的是对多个线程任务按照一定的逻辑顺序或条件进行组织和安排,以实现协同工作、顺序执行或并行执行的一种机制。 1.线程任务编排 VS 线程通讯 有同学可能会想:那线程的任务编排是不是问的就是线程间通讯啊? 线程间通讯我知道了,它的实现方式总共有以下几种方式: Object 类下的 wait 阅读全文
posted @ 2024-05-16 18:03 磊哥|www.javacn.site 阅读(596) 评论(1) 推荐(1) 编辑
摘要: 在并发编程中,读写锁 ReentrantReadWriteLock 的性能已经算是比较高的了,因为它将悲观锁的粒度分的更细,在它里面有读锁和写锁,当所有操作为读操作时,并发线程是可以共享读锁同时运行的,这样就无需排队执行了,所以执行效率也就更高。 那么问题来了,有没有比读写锁 ReentrantRe 阅读全文
posted @ 2024-05-15 09:38 磊哥|www.javacn.site 阅读(87) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 30 下一页