
Java-大厂面试
文章平均质量分 72
Chaney不会代码
生活原本郁闷,但跑起来就会有风。
展开
-
java中支持协程吗
Java 本身并没有原生的协程支持,但你可以通过一些方式实现类似协程的效果。协程本质上是轻量级的线程,它允许在单个线程中执行多个任务并进行上下文切换,这可以减少线程切换的开销。是一个值得关注的方向,未来可能会在 Java 中内置原生的协程支持。如果你使用的是 Kotlin,那直接使用 Kotlin 的协程功能会是一个不错的选择。如果你想要更轻量的并发处理,原创 2025-02-05 10:07:48 · 313 阅读 · 0 评论 -
MQ消息队列
多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量交换机的作用是什么?接收publisher发送的消息将消息按照规则路由到与之绑定的队列不能缓存消息,路由失败,消息丢失FanoutExchange的会将消息路由到每个绑定的队列描述下Direct交换机与Fanout交换机的差异?Fanout交换机将消息路由给每一个与之绑定的队列Direct交换机根据RoutingKey判断路由给哪个队列。原创 2025-02-04 20:01:57 · 1251 阅读 · 0 评论 -
微服务保护
Sentinel是阿里巴巴开源的一款服务保护框架,目前已经加入SpringCloudAlibaba中。官方网站:核心库(Jar包):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。在项目中引入依赖即可实现服务限流、隔离、熔断等功能。控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。为了方便监控微服务,我们先把Sentinel的控制台搭建出来。1)下载jar包。原创 2025-02-04 20:01:10 · 436 阅读 · 0 评论 -
Java微服务
无论是GatewayFilter还是GlobalFilter都支持自定义,只不过编码方式、使用方式略有差别。自定义GatewayFilter不是直接实现GatewayFilter,而是实现AbstractGatewayFilterFactory。@Component@Override@Override// 获取请求// 编写过滤器逻辑System.out.println("过滤器执行了");// 放行注意:该类的名称一定要以GatewayFilterFactory为后缀!原创 2025-02-04 20:00:15 · 1083 阅读 · 0 评论 -
maven高级,一篇即懂
1. A项目依赖了junit2. B项目依赖了A项目3. 根据依赖传递特性,默认情况下B项目会依赖junit4. 我们可以在A项目通过可选依赖,让B项目不能依赖junit。原创 2025-02-03 16:05:05 · 1150 阅读 · 0 评论 -
MybatisPlus一篇即懂
由于Service中经常需要定义与业务有关的自定义方法,因此我们不能直接使用IService,而是自定义Service接口,然后继承IService以拓展方法。MybatisPlus不仅提供了BaseMapper,还提供了通用的Service接口及默认实现,封装了一些常用的service模板方法。= null 这样的参数,意思就是当条件成立时才会添加这个查询条件,类似Mybatis的mapper.xml文件中的<if>标签。但是我们数据库采用的是int类型,对应的PO也是Integer。原创 2025-02-03 16:03:57 · 1182 阅读 · 0 评论 -
大家可以根据文档学习Java
推荐给正在学习 Java 或者是想依靠 Java 进去 Java 后端开发工作的同学。可以看一下这篇语雀知识库 输入密码 · 语雀?# 《Java知识库》 密码:nkqy。欢迎大家积极提出问题,共同讨论!免费提供给大家,文档内容已经分类。11 篇文章0 订阅。原创 2025-01-24 10:52:01 · 96 阅读 · 0 评论 -
Java 知识库
推荐给正在学习 Java 或者是想依靠 Java 进去 Java 后端开发工作的同学。# 《Java知识库》 密码:nkqy。欢迎大家积极提出问题,共同讨论!免费提供给大家,文档内容已经分类。可以看一下这篇语雀知识库。原创 2025-01-22 20:24:23 · 256 阅读 · 0 评论 -
Java Spring
1. 前置通知: 目标方法执行前执行,如果通知中抛出异常,阻止目标方法运行 2. 后置通知: 目标方法正常执行完毕并返回结果后执行,如果目标方法中抛出异常,无法执行 3. 最终通知: 目标方法执行后执行,无论目标方法中是否出现异常,都将执行通知 4. 异常通知: 目标方法抛出异常后执行,如果目标方法没有抛出异常,无法执行 5. 环绕通知: 在目标方法执行前后均有对应执行,还可以阻止目标方法的执行。spring事务的传播行为说的是,当多个事务同时存在的时候,spring如何处理这些事务的行为。原创 2025-01-16 10:25:11 · 565 阅读 · 0 评论 -
Java Spring
BeanFactory是IoC容器的顶层接口,初始化BeanFactory对象时,加载的bean延迟加载 ⚫ ApplicationContext接口是Spring容器的核心接口, 初始化时bean立即加载 ⚫ ApplicationContext接口提供基础的bean操作相关方法,通过其他接口扩展其功能 ⚫ ApplicationContext接口常用初始化类 ClassPathXmlApplicationContext: 在类路径下加载XML配置文件。相关的属性在使用EL表达式进行赋值。原创 2025-01-16 10:24:28 · 88 阅读 · 0 评论 -
java Spring
⚫ 适合交给容器进行管理的bean ◼ 控制器对象 (以前用的Servlet做为控制器) ◼ 业务层对象 (如: BookService) ◼ 数据层对象 (如: BookDao或BookMapper) ◼ 工具对象 (如: CartUtils对象) 以上对象都只需要创建一个就够了 ⚫ 不适合交给容器进行管理的bean ◼ 封装实体的域对象(实体类对象 Book 包名: pojo, entity, domain)a创建注入对象(一个类中要调用的引用对象):<Bean> 实现类中的私有属性要创建set方法。原创 2025-01-16 10:23:30 · 368 阅读 · 0 评论 -
waitnotifynotifyAll 方法的使用注意事项?
我们来看第二个问题,为什么 wait/notify/notifyAll 方法被定义在 Object 类中?而 sleep 方法定义在 Thread 类中?因为 Java 中每个对象都有一把称之为 monitor 监视器的锁,由于每个对象都可以上锁,这就要求在对象头中有一个用来保存锁信息的位置。这个锁是对象级别的,而非线程级别的,wait/notify/notifyAll 也都是锁级别的操作,它们的锁属于对象,所以把它们定义在 Object 类中是最合适,因为 Object 类是所有对象的父类。原创 2024-12-30 08:49:14 · 760 阅读 · 0 评论 -
线程是如何在 6 种状态之间转换的?
因为唤醒 Waiting 线程的线程如果调用 notify() 或 notifyAll(),要求必须首先持有该 monitor 锁,所以处于 Waiting 状态的线程被唤醒时拿不到该锁,就会进入 Blocked 状态,直到执行了 notify()/notifyAll() 的唤醒它的线程执行完毕并释放 monitor 锁,才可能轮到它去抢夺这把锁,如果它能抢到,就会从 Blocked 状态回到 Runnable 状态。下面我们逐个介绍线程的 6 种状态,如图所示,首先来看下左上角的 New 状态。原创 2024-12-30 08:47:28 · 920 阅读 · 0 评论 -
如何正确停止线程?为什么 volatile 标记位的停止方法是错误的?
通常情况下,我们不会手动停止一个线程,而是允许线程运行到结束,然后让它自然停止。但是依然会有许多特殊的情况需要我们提前停止线程,比如:用户突然关闭程序,或程序运行出错重启等。在这种情况下,即将停止的线程在很多业务场景下仍然很有价值。尤其是我们想写一个健壮性很好,能够安全应对各种场景的程序时,正确停止线程就显得格外重要。但是Java 并没有提供简单易用,能够直接安全停止线程的能力。原创 2024-12-29 14:49:47 · 969 阅读 · 0 评论 -
为何说只有 1 种实现线程的方法?
运行内容主要来自于两个地方,要么来自于 target,要么来自于重写的 run() 方法,在此基础上我们进行拓展,可以这样描述:本质上,实现线程只有一种方式,而要想实现线程执行的内容,却有两种方式,也就是可以通过 实现 Runnable 接口的方式,或是继承 Thread 类重写 run() 方法的方式,把我们想要执行的代码传入,让线程去执行,在此基础上,如果我们还想有更多实现线程的方式,比如线程池和 Timer 定时器,只需要在此基础上进行封装即可。讲到这里你可能会说,我还知道一些其他的实现线程的方式。原创 2024-12-29 14:41:11 · 1010 阅读 · 0 评论 -
定义类和创建对象
类是定义了相同类型对象的构造在Java类中可以去使用变量去定义数据区域和方法去定义行为此外,类提供了一种特殊的方法也就是构造方法,成为构造函数,调用这些方法可以从类中构造对象/***//***//***/Circle() {// no args// args/*** method*/定义类和创建对象的过程/***//***/原创 2024-12-25 07:38:45 · 873 阅读 · 0 评论 -
哪些集合类是线程安全的
哪些集合类是线程安全的分析通过学习推荐资料之后,记忆几个典型的并发安全集合,面试官问这个问题一般是期望把话题引到Java并发的考察上面,例如Hashtable,HashMap,ConcurrentHashMap之间的比较,尤其重要。这个问题就先整体回答下,其他等面试官细问再说。参考回答Vector、 Hashtable、 Stack 都是线程安全的,而像 HashMap 则是非线程安全的,不过在JDK 1.5 之后随着 Java. util. concurrent 并发包的出现,它们也有了自己原创 2024-12-24 09:24:23 · 239 阅读 · 0 评论 -
你最常用的集合实现类有哪些
你最常用的集合实现类有哪些参考回答1. ArrayList: 动态数组,实现了List接口,支持动态增长。 2. LinkedList:双向链表,也实现了List接口,支持快速的插入和删除操作。 3. HashMap:基于哈希表的Map实现,存储键值对,通过键快速查找值。 4. HashSet:基于HashMap实现的Set集合,用于存储唯一元素。 5. TreeMap: 基于红黑树实现的有序Map集合,可以按照键的顺序进行排序。 6. LinkedHashMap:基于哈希表和双向链表实现原创 2024-12-24 09:23:52 · 189 阅读 · 0 评论 -
常用的集合分类以及他们的区别
Java容器里只能放对象,对于基本类型(int, long, float, double等),需要将其包装成对象类型后(Integer, Long, Float, Double等)才能放到容器里。,就是可以容纳其他Java对象的对象。但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。其中x代表着key,y代表着value,key是无序的,不可重复的,value是无序的,可以重复的,每个 键最多映射到一个值。可以用它来实现双向队列。原创 2024-12-24 09:23:15 · 685 阅读 · 0 评论 -
常用的集合分类以及他们的区别
Java容器里只能放对象,对于基本类型(int, long, float, double等),需要将其包装成对象类型后(Integer, Long, Float, Double等)才能放到容器里。,就是可以容纳其他Java对象的对象。但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。其中x代表着key,y代表着value,key是无序的,不可重复的,value是无序的,可以重复的,每个 键最多映射到一个值。可以用它来实现双向队列。原创 2024-12-23 10:02:39 · 931 阅读 · 0 评论 -
SPI秒懂
SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。有一个接口,有多个实现,通过配置来获取接口的实现(服务发现)原创 2024-12-22 20:15:14 · 277 阅读 · 0 评论 -
什么是重写和重载
方法重写(overriding)使用了在子类存在的方法和父类的方法名字相同,而且参数的个数与类型一样,返回值也一样的方法,就叫做重写重写(Override)是指子类定义了一个与其父类中具有相同名称、参数列表和返回类型的方法,并且子类方法的实现覆盖了父类方法的实现。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。这样,在使用子类对象调用该方法时,将执行子类中的方法而不是父类中的方法。原创 2024-12-22 09:55:39 · 407 阅读 · 0 评论 -
Java支持多继承吗
接口的作用就是为了拓展对象的功能的,当一个字接口继承了多个父接口的时候,说明了子接口拓展了多个功能。当一个类实现了这个接口的时候,就拓展了多个功能。原创 2024-12-22 09:54:58 · 228 阅读 · 0 评论 -
接口和抽象类有什么共同点和区别
从这里可以看出, Door的open() 、close()和alarm()根本就属于两个不同范畴内的行为,open()和close()属于门本身固有的行为特性,而alarm()属于延伸的附加行为。比较两者语法细节区别的条理是:先从一个类中的构造方法、普通成员变量和方法(包括抽象方法),静态变量和方法,继承性等6个方面逐一去比较回答,接着从第三者继承的角度的回答,特别是最后用了一个典型的例子来展现自己深厚的技术功底。况且抽象类中的抽象方法只有声明,是未实现的方法,如果实例化了,又如何去实现方法调用呢?原创 2024-12-22 09:53:16 · 1247 阅读 · 0 评论 -
mysql行锁优化到分布式锁
如果你的系统从单机扩展到分布式,可以根据实际需求从数据库行锁逐步优化为基于 Redis 或 ZooKeeper 的分布式锁。原创 2024-12-16 14:33:00 · 585 阅读 · 0 评论 -
面试-SQL语法
如果当表中只有主键索引的时候,没有二级索引的时候,那么InnoDB的循环遍历聚簇索引,将读取到的记录返回给到server层,然后去记录id的值,就会id值判断是否为NULL,如果不为NULL的时候,就将count变量加1。InnoDB是通过这个B+树来进行保存记录的,根据索引的类型的又分为聚簇索引和二级索引,他们的区别在于,聚簇索引的叶子结点放置的是实际的数据,二级索引叶子结点放置的是主键的值,而不是实际的数据。主键是不可以去存储这个NULL的值的啊,所以count主键表示统计表中所有的行的数量。原创 2024-12-16 10:47:07 · 837 阅读 · 0 评论 -
Java-大厂面试专栏
备战Java大厂面试是一项系统性的工程,需要既掌握扎实的理论基础,又具备良好的实践能力。同时,通过刷题、阅读源码、搭建项目,可以让自己对Java技术体系有更深的理解。希望本专栏能成为你的求职路上一盏指路明灯,助你在面试中脱颖而出!原创 2024-12-16 10:46:26 · 355 阅读 · 0 评论