猿来如此

猿来如此

【面试题66】说说Redis的过期键删除策略吧!(高频)

划重点:Redis的过期键删除策略也是面试中经常会被问的,我最近面试,被问到了好几次。 对于Redis服务器来说,内存资源非常宝贵,如果一些过期键一直不被删除,就会造成资源浪费,因此我们需要考虑一个问题:如果一个键过期了,它什么时候会被删除呢? 1. 常见的删除策略 常见的删除策略有以下3种: 定时

【面试题65】对多线程熟悉吗,来谈谈线程池的好处?

前几天公司面试,问了很多线程池的问题,由于也是菜鸟一只本来对线程池就不太熟悉,再加上一紧张脑袋一紧,就GG了,之后可谓是深恶痛极,决定把线程池这边好好的整理一番。 一、线程池的好处 线程池是啥子,干啥使它呀,老子线程使得好好的,非得多次一举,哈哈,想必来这里看这篇文章的都对线程池有点了解。那么我来整

【面试题63】对并发熟悉吗?说一下synchronized与Lock的区别与使用

引言: 昨天在学习别人分享的面试经验时,看到Lock的使用。想起自己在上次面试也遇到了synchronized与Lock的区别与使用。 于是,我整理了两者的区别和使用情况,同时,对synchronized的使用过程一些常见问题的总结,最后是参照源码和说明文档,对Lock的使用写了几个简单的Demo。

【面试题62】对并发熟悉吗?谈谈你对Java中常用的几种线程池的理解

1. 为什么使用线程池 为每个请求对应一个线程方法的不足是:为每个请求创建一个新线程的开销很大;为每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源要比花在处理实际的用户请求的时间和资源更多。容易引起资源不足,造成浪费。为解决单个任务处理时间很短而请求的数目巨大的问题,引出线程池

【面试题61】对并发熟悉吗?谈谈对volatile的使用及其原理

一、volatile的作用 我们已经知道可见性、有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果对Synchronized原理有了解的话,应该知道Synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,我

【面试题60】对并发熟悉吗?谈谈线程间的协作(wait/notify/sleep/yield/join)

一、线程的状态 Java中线程中状态可分为五种:New(新建状态),Runnable(就绪状态),Running(运行状态),Blocked(阻塞状态),Dead(死亡状态)。 New:新建状态,当线程创建完成时为新建状态,即new Thread(…),还没有调用start方法时,线程处于新建状态。

【面试题59】对并发熟悉吗?说说Synchronized及实现原理

一、Synchronized的基本使用 Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。 Synchronized的作用主要有三个: 确保线程互斥的访问同步代码 保证共享变量的修改能够及时可见 有效解决重排序问题。 从语法上讲,Synchronized总共有

Java Z 垃圾收集器 (ZGC):彻底改变内存管理

Z 垃圾收集器 (ZGC) 是 Oracle 在 JDK 11 中引入的一种创新垃圾收集算法。其主要目的是最大限度地减少Java 虚拟机(JVM) 上的应用程序暂停时间,使其特别适合需要低延迟和高延迟的现代应用程序。 -吞吐量性能。 ZGC 采用分代方式进行垃圾收集,将堆分为两代:年轻代和老一代(也

MyBatis-Flex 一个优雅的 MyBatis 增强框架

简介 MyBatis-Flex 是一个优雅的 MyBatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库,其内置的 QueryWrapper帮助我们极大的减少了 SQL 编写的工作的同时,减少出错的可能性。 总而言之,MyBatis

ChatGPT集成Spring Boot

要将ChatGPT集成到您的Spring Boot应用程序中,可以按照以下步骤进行操作: 1.在OpenAI网站上注册并获取您的API密钥。这将允许您使用ChatGPT API进行与模型的交互。

大厂面试题:Java中interrupt、interrupted和isInterrupted的区别?

简介 在Java中,interrupt、interrupted和isInterrupted都是与线程中断相关的术语,但它们之间有一些重要的区别。 interrupt:这是一个方法,用

int 类型的数字在不转型的前提下怎么放入List<String>?

前言 今天面试问到的int类型的数字,在不转型的前提下怎么放入List其实,这道题考验的面试者对于java泛型的理解,java泛型的实现采取了“伪泛型”的策略。 类型擦除(Type Erasure) Java在语法上支持泛型,但是编译阶段会进行“类型擦除(Type Erasure),将所有泛型标识(

left join 如何优化?

最近在写代码的时候,遇到了需要多表连接的一个问题,初始sql类似于: select * from a left join b on a.id = b.aid left join c on c.bid = b.id left join d on d.cid = c.id 这样的多个left j

【面试题58】MySQL 服务占用cpu 100%,如何排查问题? (MySQL面试第七弹)

一、引子 对于互联网公司,线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升时),按照本文的步骤排查,基本1分钟即可搞定!特此整理排查方法一篇,供大家参考讨论提高。 二、问题复现 线上系统突然运行缓慢,CPU飙升,甚至到100%,以及Full GC次数过多,接着就是各种报警:例如接口超时报警

【面试题57】谈谈MySQL 索引,B+树原理,以及建索引的几大原则(MySQL面试第六弹)

MYSQL一直了解得都不多,之前写sql准备提交生产环境之前的时候,老员工帮我检查了下sql,让修改了一下存储引擎,当时我使用的是Myisam,后面改成InnoDB了。为什么要改成这样,之前都没有听过存储引擎,于是网上查了一下。 事实上使用不同的存储引擎也是有很大区别的,下面猿友们可以了解一下。 一

【面试题56】解释一下MySQL中内连接,外连接等的区别(MySQL面试第五弹)

下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。 具体分解如下: 1.INNER JOIN(内连接) SELECT <s

【面试题55】MySQL行锁和表锁的含义及区别(MySQL面试第四弹)

一、前言 对于行锁和表锁的含义区别,在面试中应该是高频出现的,我们应该对MySQL中的锁有一个系统的认识,更详细的需要自行查阅资料,本篇为概括性的总结回答。 MySQL常用引擎有MyISAM和InnoDB,而InnoDB是mysql默认的引擎。MyISAM不支持行锁,而InnoDB支持行锁和表锁。