【面试题67】List如何一边遍历,一边删除?

这是最近面试时被问到的1道面试题,本篇博客对此问题进行总结分享。 1. 新手常犯的错误 可能很多新手(包括当年的我,哈哈)第一时间想到的写法是下面这样的: public static void main(String[] args) { List<String> platformList =

【面试题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总共有

天翼网关4.0超管密码抓包(ios版)

前言 首先说一句,能看到这个文章的“彦祖”或者“柏芝”,我相信一定是特别的缘分,让我们相识,烦请大伙动动发财的小手,点个关注或者分享给身边的小伙伴,以便后续第一时间获取我们的动态。 本文暂不赘述获取到超管密码后,可以用于哪些场景,我相信懂得都懂!!! 大家想要获取网关的密码,可能在搜索引擎中一通检索

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

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

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

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

【开源分享】轻量级动态可监控线程池解决方案:dynamic-tp

前言 使用线程池 ThreadPoolExecutor 过程中你是否有以下痛点呢? 代码中创建了一个 ThreadPoolExecutor,但是不知道那几个核心参数设置多少比较合适 凭经验设置参数值,上线后发现需要调整,改代码重新发布服务,非常麻烦 线程池相对开发人员来说是个黑盒,运行情况不能及时感

【开源分享】基于 Springboot 的多类型文件在线预览平台-kkFileView

项目介绍 kkFileView为文件文档在线预览解决方案,该项目使用流行的 Spring Boot 搭建,易上手和部署,部署好后可以独立提供预览服务,使用 http 接口访问,不需要和应用集成,具有跨系统跨语言使用的特性。 提供 Windows / Linux 版本发行包、自定义配置文件、和一键启动

【开源分享】Java 短信服务聚合框架-SMS4J

项目介绍 在日常的开发流程中,短信发送功能经常被使用,特别是在中小型的外包公司中。毕竟,并非每个公司都具备像阿里巴巴或腾讯那样的雄厚实力,也并非每个公司都像银行或联通那样拥有内部的短信发送规范。因此,第三方短信服务商成为了最常见的解决方案。然而,市场上的第三方短信服务商众多,每家都有各自的操作方式和

2024过年返乡记

前言 春节的烟花在夜空中绽放,绚丽多彩,如同家人团聚的温馨与欢乐。然而,当烟花渐渐散去,年初八的早晨,我再次踏上了离家的列车。明天,我将正式开工,开始新一年的工作。趁着假期的尾巴,我决定将这次过年返乡的所见所闻简单记录下。 村里充电桩 回到村里,眼前的景象让我眼前一亮。记忆中那条狭窄且杂乱的村路已经

“事不过三”在编程中的启示

前言 “事不过三”这一古老的谚语,原意是指同样的事情不宜连续做三次。它蕴含了智慧与经验,提醒我们在生活中遇到问题时,要审时度势,避免盲目重复。在编程领域,这一原则同样具有深远的启示意义。 勇于尝试,但也要懂得适时收手 在解决问题的过程中,程序员们经常需要尝试多种不同的方法和策略。这是必要的,因为编程

【开源分享】Star 14.4k,人人可用的开源数据可视化分析工具-DataEase

前言 数据的采集、提取和理解是人类感知和认识世界的基本途径之一。相对于数宇、文本等非图像化信息,人类对图像化信息有着更好的感知能力。基于这个原因,数据可视化逐渐成为了人们更深入分析理解数据、获取知识并转化为智慧的一种主要途径。数据可视化分析的发展史已逾数百年。自个人计算机问世以来,可视化基础平台和架