- 博客(153)
- 收藏
- 关注
原创 全网最全!2025年BATJ一线名企java面试题总结,助你备战金三银四!
排序JDK6 对自旋锁进行了优化,自旋时间不再固定,而是由前一次的自旋时间及锁拥有者的状态决定。如果在同一个锁上,自旋刚刚成功获得过锁且持有锁的线程正在运行,虚拟机会认为这次自旋也很可能成功,进而允许自旋持续更久。如果自旋很少成功,以后获取锁时将可能直接省略掉自旋,避免浪费处理器资源。有了自适应自旋,随着程序运行时间的增长,虚拟机对程序锁的状况预测就会越来越精准。ReentrantLock 是排他锁,同一时刻只允许一个线程访问,读写锁在同一时刻允许多个读线程访问,在写线程访问时,所有的读写线程均阻塞。
2025-01-16 20:17:38
707
原创 从PAXOS到ZOOKEEPER分布式一致性原理与实践:zookeeper典型应用场景
发布者将数据发布到ZooKeeper的一个或一系列节点上,供订阅者进行数据订阅,从而实现配置信息的集中式管理和数据的动态更新。发布/订阅系统一般有两种模式,推(Push)模式和拉(Pull)模式。ZooKeeper是推拉相结合的模式,客户端向服务端注册自己需要关注的节点,一旦该节点的数据发生变更,服务端就会向对应的客户端发送Water事件通知,客户端收到这个消息通知后,需要主动到服务端获取最新的数据。全局配置信息有以下几个特征:数据量小,数据内容在运行时会动态变化,集群中各机器共享,配置一致。
2025-01-16 20:11:40
1152
原创 【zookeeper】zookeeper事务日志(log)文件和快照(snapshot)文件清理
结果呢,也是不负众望,中大厂、大厂的offer那是一波接一波,薪资嘛,基本都是原来的两倍、三倍往上走,最高的一个有赞,直接给他开了30K的价码。log4j用于记录zookeeper集群服务器运行日志,该日志的配置地址在conf/目录下的log4j.properties文件中,该文件中有一个配置项为“zookeeper.log.dir=.”,表示log4j日志文件在与执行程序(zkServer.sh)在同一目录下,当执行zkServer.sh 时,在该文件夹下会产生zookeeper.out日志文件。
2025-01-16 20:09:59
1197
原创 一文解析ZooKeeper —ZooKeeper特性及ZooKeeper到底解决了什么问题
术语解释分布式系统跨多个物理主机,由多个独立运行的节点组成的系统原语业务上不可分割的元素/过程,举例:分布式锁原语,可以暴露创建、查询、释放几个方法我这里准备了一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为大家精心准备的多套简历模板(不断更新中),希望大家都能找到心仪的工作建议阅读:2025金三银四进大厂必刷的Java面试题 (全彩版)结果呢,也是不负众望,中大厂、大厂的offer那是一波接一波,薪资嘛,基本都是原来的两倍、三倍往上走,最高的一个有赞,直接给他开了30K的价码。
2025-01-16 20:00:38
587
原创 2025金三银四进大厂必刷的Java面试题 (全彩版)
结果呢,也是不负众望,中大厂、大厂的offer那是一波接一波,薪资嘛,基本都是原来的两倍、三倍往上走,最高的一个有赞,直接给他开了30K的价码。于是,跳槽这事儿就提上了日程,一开始吧,他还挺保守,想着去货拉拉、唯品会这些中大厂混混,要是能冲进阿里、网易这些大佬的阵营,那就更赚了。上半年,我给他们整了个“Java面试题库”,里面的题啊,都是从各大厂面试真题里挑出来的,分了技术点,上千道题呢,还有答案详解。说白了,就是得:面试前准备充分,复习得高效,还得有个强大的心脏,别一紧张就啥都不会了。
2025-01-16 19:54:59
524
原创 java面试速成版,背这份八股文(含答案)就对了! 2025最新总结版本
内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈,希望对找工作的同学有所帮助。69、为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在Object 类里?31、简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)
2025-01-15 21:53:45
1523
原创 java面试官:2025我真不考八股了,就考场景题。。。
人无语的时候是真的无语,好不容易准备了这么久的八股,说不考就不考了,气晕了,但是你还能咋办呢?只能是面试官说考啥就考啥咯。足足一千多页,各大厂的真题基本都收录了,有需要的可以直接si我”666“,不收米,无常分享。人无语的时候是真的无语,好不容易准备了这么久的八股,说不考就不考了,气晕了,但是你还能咋办呢?足足一千多页,各大厂的真题基本都收录了,有需要的可以直接si我”666“,不收米,无常分享。人无语的时候是真的无语,好不容易准备了这么久的八股,说不考就不考了,气晕了,但是你还能咋办呢?
2025-01-04 21:21:45
289
原创 Java面试题(八股文+场景题)及答案最全总结(2025版)
还有最新涉及的内容非常全面,包含:Redis、多线程、JVM、Spring、MySQL、Dubbo…Dao 接口里的方法,参数不同时,方法能重载吗?37、假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?69、为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在Object 类里?20、为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?
2025-01-03 21:55:49
2906
原创 JAVA开发|不能不会的 45 个Spring Boot 注解
包含@Configuration、@EnableAutoConfiguration、@ComponentScan通常用在主类上;
2025-01-03 21:52:16
872
原创 SpringBoot2.x基础篇:配置文件的加载顺序以及优先级覆盖
了解配置文件的加载顺序,才能得心应手的进行配置覆盖,完全控制在不同环境下使用不同的配置内容,要记住优先级最低,优先级最高。建议阅读:Java高频面试题(2025最新含答案)因为线程竞争,会导致线程阻塞或者挂起,但是如果同步资源的锁定时间很短,那么阻塞和挂起的花费的资源就得不偿失。自旋锁:当竞争的同步资源锁定时间短,就让线程自旋,如果自旋完成后,资源释放了锁,那线程就不用阻塞,直接获取资源,减少了切换线程的开销。实现原理是CAS。
2024-12-30 21:59:28
1114
原创 SpringBoot2.x基础篇:使用YAML代替Properties的对应配置
YAML 是一种简洁的格式,用于表示层次结构的配置数据。SpringBoot 通过集成 SnakeYAML 来解析该格式。若要使用 YAML 格式替代 Properties 格式,我们需要熟悉 Properties 中每种配置在 YAML 中的对应表示方法。
2024-12-30 21:51:14
341
原创 阿里面试:说说springboot自动装配是怎么回事?
在这个类上有一个注解:@ConfigurationProperties,它的作用就是从配置文件中绑定属性到对应的bean上(也就是把我们application.properties对应的server.port映射到ServerProperties 类中的port属性)而@EnableConfigurationProperties这个注解就是把已经绑定了属性的bean(ServerProperties)注入到spring容器中(相当于@Component注解一样)。其他的都是因为不满足条件注解而被过滤了。
2024-12-27 22:07:45
557
原创 使用 Sa-Token 实现 [记住我] 模式登录、七天免登录
建议阅读:Java高频面试题(2025最新含答案)因为线程竞争,会导致线程阻塞或者挂起,但是如果同步资源的锁定时间很短,那么阻塞和挂起的花费的资源就得不偿失。自旋锁:当竞争的同步资源锁定时间短,就让线程自旋,如果自旋完成后,资源释放了锁,那线程就不用阻塞,直接获取资源,减少了切换线程的开销。实现原理是CAS。缺点:占用了处理器的时间,如果锁被占用的时间短还好,如果长那就白白浪费了处理器的时间。
2024-12-26 21:53:38
1206
原创 对敏感操作的二次认证 —— 详解 Sa-Token 二级认证
建议阅读:Java高频面试题(2025最新含答案)因为线程竞争,会导致线程阻塞或者挂起,但是如果同步资源的锁定时间很短,那么阻塞和挂起的花费的资源就得不偿失。自旋锁:当竞争的同步资源锁定时间短,就让线程自旋,如果自旋完成后,资源释放了锁,那线程就不用阻塞,直接获取资源,减少了切换线程的开销。实现原理是CAS。缺点:占用了处理器的时间,如果锁被占用的时间短还好,如果长那就白白浪费了处理器的时间。
2024-12-26 21:52:31
1286
原创 使用 Sa-Token 实现不同的登录模式:单地登录、多地登录、同端互斥登录
建议阅读:Java高频面试题(2025最新含答案)因为线程竞争,会导致线程阻塞或者挂起,但是如果同步资源的锁定时间很短,那么阻塞和挂起的花费的资源就得不偿失。自旋锁:当竞争的同步资源锁定时间短,就让线程自旋,如果自旋完成后,资源释放了锁,那线程就不用阻塞,直接获取资源,减少了切换线程的开销。实现原理是CAS。缺点:占用了处理器的时间,如果锁被占用的时间短还好,如果长那就白白浪费了处理器的时间。
2024-12-26 21:51:39
1086
原创 Sa-Token 多账号认证:同时为系统的 Admin 账号和 User 账号提供鉴权操作
前面几篇介绍的api调用,都是经过 StpUtil 类的各种静态方法进行授权认证,而如果我们深入它的源码,点此阅览就会发现,此类并没有任何代码逻辑,唯一做的事就是对成员变量stpLogic的各个API包装一下进行转发。StpLogic 类的所有函数都可以被重写,按需扩展。在构造方法时随意传入一个不同的loginType,就可以再造一套账号登录体系。/*** 登录认证(User版):只有登录之后才能进入该方法* <p> 可标注在函数、类上(效果等同于标注在此类的所有方法上)*/
2024-12-26 21:50:43
982
原创 SpringBoot 使用 Sa-Token 实现账号封禁、分类封禁、阶梯封禁
旧版本在 StpUtil.login() 时会自动校验账号是否被封禁,v1.31.0 之后将 校验封禁 和 登录 两个动作分离成两个方法,不再自动校验,请注意其中的逻辑更改。基于处罚时间的阶梯,我们只需在封禁时 StpUtil.disable(10001, 86400) 传入不同的封禁时间即可,下面我们着重探讨一下基于处罚力度的阶梯形式。解决这种需求的关键在于,我们需要把不同处罚力度,量化成不同的处罚等级,比如上述的 轻度、中度、重度 3 个力度,在部分场景下,我们还需要将其。
2024-12-26 21:45:59
1199
原创 SpringBoot多环境配置|超细版,新手必看!
properties文件.yml文件我们可以再SpringBoot配置文件中添加一些自定义配置,然后通过@Value读取配置的属性值。## 设置端口号## 设置服务名称## 设置上下文,设置后访问服务时需要在url前面拼上设置的内容,这里一般设置为服务名称#指定激活的配置文件#自定义配置使用@Value在Dao中读取自定义配置的属性值。
2024-12-25 21:58:52
452
原创 Java高频面试题(2025最新含答案)
因为线程竞争,会导致线程阻塞或者挂起,但是如果同步资源的锁定时间很短,那么阻塞和挂起的花费的资源就得不偿失。自旋锁:当竞争的同步资源锁定时间短,就让线程自旋,如果自旋完成后,资源释放了锁,那线程就不用阻塞,直接获取资源,减少了切换线程的开销。实现原理是CAS。缺点:占用了处理器的时间,如果锁被占用的时间短还好,如果长那就白白浪费了处理器的时间。所以要限定自旋次数(默认是10次,可以使用-XX:PreBlockSpin来更改)没有成功获得锁,就应当挂起线程。
2024-12-25 21:50:27
1634
原创 Redis | 第5章 Redis 中的持久化技术《Redis设计与实现》
建议阅读:2025最新收集!java面试题、场景题、大厂真题!这份面试题,包含的内容了十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM。
2024-12-24 22:01:34
611
原创 Redis安装、Redis基本数据类型、Jedis、Redis集群搭建
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。添加一个 string 元素到 key 对应的 set 集合中,成功返回1,如果元素已经在集合中返回 0,如果 key 对应的 set 不存在则返回错误。
2024-12-24 21:50:58
479
原创 深入Redis客户端(redis客户端属性、redis缓冲区、关闭redis客户端
建议阅读:2025最新收集!java面试题、场景题、大厂真题!这份面试题,包含的内容了十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM。
2024-12-23 22:01:28
629
原创 Redis Shell使用(redis-cli,redis-server,redis-benchmark)
-stat选项可以实时获取Redis的重要统计信息,虽然info命令中的统计信息更全,但是能实时看到一些增量的数据(例如requests)对于Redis的运维还是有一定帮助的,如下所示。latency有三个选项,分别是--latency、--latency-history、--latency-dist。-i(interval)选项代表每隔几秒执行一次命令,但是-i选项必须和-r选项一起使用,下面的操作会每隔1秒执行一次ping命令,一共执行5次。--scan和--pattern。
2024-12-23 21:58:12
962
原创 2025最新收集!java面试题、场景题、大厂真题!
这份面试题,包含的内容了十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM。以下是网上整理的非常全面的面试题,当然,绝大多数人不可能全部用到,但是都罗列在此,大家可根据自己的情况,选择对应的模块进行阅读。下面一起来看 208 道面试题,具体的内容。
2024-12-22 21:54:08
2829
3
原创 【Java技术专题】「攻破技术盲区」带你攻破你很可能存在的Java技术盲点之动态性技术原理指南(反射技术专题)
在Servlet中,利用反射API可以遍历HTTP请求中的所有参数,然后用invokeSetter方法填充领域对象的属性值。在数据库操作中,也通过反射API实现从查询结果集中创建并填充领域对象的场景。这些对应关系都可以通过反射API来建立。Java反射技术允许程序在运行时动态地获取类的信息、调用类的方法、访问类的属性等,从而提高程序的灵活性和可扩展性。它可以获取类的名称、包名、父类、接口、构造方法、方法、属性等信息,创建对象,调用方法,访问属性,实现动态代理等功能。
2024-12-22 21:49:00
641
原创 2024最新版Java面试题及答案整理
我在 xx 公司做的 xx 系统,客户主要是 xx,项目的功能主要是提供代理雨伞,代理快递,代理订餐,图书借阅等服务,后台用的是主体架构是使用 Spring Cloud,微服务模块划分为 xxx,我主要负责其中 xxx 几个模块的开发, orm 用的是 mybatis,数据库是用的 mysql,缓存是用的 redis,前台用到了 vue 技术。需要注意的地方就是不要只讲一些业务相关的,面试官不需要知道这些,他只关心你的技术能力是否足够,通过你的描述知道你使用了什么技术,再根据相关的技术进行提问。
2024-12-22 21:37:47
728
原创 Java Servlet 详解,新手小白向
Java Servlet是一个响应HTTP请求的Java对象。它运行在一个Servlet容器内。Servlet是Java Web应用程序的一部分。一个Servlet容器可以同时运行多个Web应用程序,每个应用程序内部都有多个Servlet。Java Web应用程序可以包含除servlet之外的其他组件。它也可以包含Java Server Pages(JSP),Java Server Faces(JSF)和Web Services。
2024-12-22 21:28:11
928
原创 JVM研习之一:Java虚拟机的内存结构
JVM定义了几种程序运行期间会使用到的运行时数据区,分别对应JVM或线程的生命周期。PC寄存器:每一条线程都有自己的PC寄存器。正在被线程执行的current method,如其不是native的,PC寄存器就保存JVM正在执行的字节码指令的地址,如其是native的,则值为undefined。JVM Stack:每一条线程都有自己私有的JVM Stack。其与线程同时创建,用于存储Frame。与传统语言(C)中的栈类似,JVM Stack用于存储局部变量与一些过程结果。
2024-12-20 21:51:19
988
原创 性能优化之抛弃Calendar
为解决此问题,我们在UUID的基础上融入了当天日期,从而有效避免了对同一批用户的持续限制。Calendar之所以不适用,是因为每次请求都需要创建一个新的Calendar实例,这个创建过程虽然在QPS较低时可以忽略不计,但作为基础组件的开发者,我们必须考虑各种极端场景。这里只是测试了Calendar和Joda对象的创建耗时,可以发现Joda的性能比Calendar整整高了10倍,真的不可忽略。通过当前毫秒级时间戳除以一天的毫秒数,我们可以轻松计算出从1970年至今的天数,这一方法恰好契合了当前需求。
2024-12-20 21:39:05
330
原创 优化代码中大量的if/else,你有什么方案?
建议阅读:Java 面试常见问题总结(2025 最新版)文章浏览阅读518次。涵盖了 Java 基础、集合框架、并发编程、JVM 、操作系统、MySQL、Redis、ES、系统设计、分布式、高并发等知识点的面试题,全部都是面试常问的高频面试题。并且,会给出相应的参考答案(文章链接)。准备技术面试的过程中,可以对照着这份 PDF 来进行自测,这是一种非常不错的学习和复习方式。分析了几百份大中小厂的面经,整理了 Java 面试中最最最常问的一些问题!
2024-12-19 21:59:43
1173
原创 关于技术面试,面试官会怎么考察?我列了这几点
跳槽这件事情,每时每刻都在身边发生,送走了老伙计,迎来了新伙伴。在新老交替中,面试环节必不可少,这也是最让人头疼的,能遇到一个让人满意的候选人,犹如炭中取栗,很难!!!面试结果是双方决定的,你看上候选人,觉得他和当前职位特别合适,可惜他只是来练手的。作为面试官这一方,经过这么久的面试经历,我总结了以下几条,如果都能满足,那就可以十拿九稳拿到高offer。
2024-12-19 21:55:55
445
原创 Java使用Jetty实现嵌入式Web服务器及Servlet容器
文章浏览阅读494次。涵盖了 Java 基础、集合框架、并发编程、JVM 、操作系统、MySQL、Redis、ES、系统设计、分布式、高并发等知识点的面试题,全部都是面试常问的高频面试题。Jetty 是一个 Java 实现的开源的 servlet 容器,它既可以像 Tomcat 一样作为一个完整的 Web 服务器和 Servlet 容器,同时也可以嵌入在 Java 应用程序中,在 Java 程序中调用 Jetty。因为它的“轻量级”,在不是很复杂的小项目中是个不错的选择,启动(加载)也非常的快速。
2024-12-18 21:53:04
707
原创 Java用于嵌入式的优势和局限
建议阅读:Java 面试常见问题总结(2025 最新版)文章浏览阅读494次。涵盖了 Java 基础、集合框架、并发编程、JVM 、操作系统、MySQL、Redis、ES、系统设计、分布式、高并发等知识点的面试题,全部都是面试常问的高频面试题。并且,会给出相应的参考答案(文章链接)。准备技术面试的过程中,可以对照着这份 PDF 来进行自测,这是一种非常不错的学习和复习方式。分析了几百份大中小厂的面经,整理了 Java 面试中最最最常问的一些问题!目前已经是 2025年最新版,针对今年的面试情况
2024-12-18 21:51:29
1402
原创 MapDB,Java的嵌入式数据库!
涵盖了 Java 基础、集合框架、并发编程、JVM 、操作系统、MySQL、Redis、ES、系统设计、分布式、高并发等知识点的面试题,全部都是面试常问的高频面试题。准备技术面试的过程中,可以对照着这份 PDF 来进行自测,这是一种非常不错的学习和复习方式。分析了几百份大中小厂的面经,整理了 Java 面试中最最最常问的一些问题!涵盖了 Java 基础、集合框架、并发编程、JVM 、操作系统、MySQL、Redis、ES、系统设计、分布式、高并发等知识点的面试题,全部都是面试常问的高频面试题。
2024-12-18 21:50:27
980
原创 一个轻量级Java嵌入式数据库 —— QuickIO
本文到此结束,作者的阅历尚浅,还希望与大家一起交流、学习和探讨。建议阅读:Java 面试常见问题总结(2025 最新版)文章浏览阅读494次。涵盖了 Java 基础、集合框架、并发编程、JVM 、操作系统、MySQL、Redis、ES、系统设计、分布式、高并发等知识点的面试题,全部都是面试常问的高频面试题。并且,会给出相应的参考答案(文章链接)。准备技术面试的过程中,可以对照着这份 PDF 来进行自测,这是一种非常不错的学习和复习方式。
2024-12-18 21:49:06
857
原创 java新手必修课:java排序(快速排序)
当执行加减操作之后,再次判断的时候,就会从交换数据之后的索引开始判断,就不会再次判断了,右边查询,查询到6的时候停止,然后交换,6和6交换,然后再次开启循环,就会死循环,执行加减操作 h=2,e=5;然后开启第二轮的执行。继续执行的话,左边继续判断,当查询到6的时候停止,输出:[1 2 3 5 6 6 9 ]输入数组[2,6,3,6,5,9,1]数组变成[2,1,3,6,5,9,6]数组:[2,6,3,6,5,9,1]为什么会有h++,e--呢。中间位置是3,值是6。假如不进行加减操作,
2024-12-18 21:38:57
169
原创 使用Spring Mobile实现网站移动端适配及更换主题
在/resources/templates目录下,新建theme-mobile-blue目录,用于存放移动端蓝色主题的视图。在/resources/templates目录下,新建theme-blue目录,用于存放PC端蓝色主题的视图。在/resources/templates目录下,新建default目录,用于存放PC端默认主题的视图。在/resources/templates目录下,新建mobile目录,用于存放移动端默认主题的视图。// true表示如果找不到移动端视图,则使用PC端默认视图。
2024-12-17 21:47:29
626
原创 简单总结一下SpringBoot使用Jsp的Demo
在早期做项目的时候,JSP是我们经常使用的java服务器页面,其实就是一个简化servlet的设计,在本文开始之前,回顾一下jsp的几大对象,如图。image而在现在SpringBoot框架流行的时代,SpringBoot推荐的模版引擎也转变为了thymeleaf,本文来介绍一下SpringBoot使用Jsp页面。
2024-12-17 21:41:16
1033
原创 基于Spring Boot、Spring Cloud、Docker的微服务系统架构实践
这是一款概念性的应用程序,基于Spring Boot,Spring Cloud和Docker 简单演示了微服务的架构模式,顺便说一句,它还有一个非常漂亮整洁的用户界面.
2024-12-16 21:36:20
1230
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人