面经
文章平均质量分 93
海绵宝宝丶哈
程序猿
展开
-
并发编程多线程
全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架,它是构建锁或者其他同步组件的基础框架AQS与Synchronized的区别AQS关键字,c++ 语言实现java 语言实现悲观锁,自动释放锁悲观锁,手动开启和关闭锁竞争激烈都是重量级锁,性能差锁竞争激烈的情况下,提供了多种解决方案AQS常见的实现类ReentrantLock 阻塞式锁Semaphore 信号量CountDownLatch 倒计时锁。原创 2024-09-22 15:33:34 · 1264 阅读 · 0 评论 -
Java集合相关面试题
Arrays.asList转换list之后,如果修改了数组的内容,list会受影响,因为它的底层使用的Arrays类中的一个内部类ArrayList来构造的集合,在这个集合的构造器中,把我们传入的这个集合进行了包装而已,最终指向的都是同一个内存地址,list用了toArray转数组后,如果修改了list内容,数组不会影响,当调用了toArray以后,在底层是它是进行了数组的拷贝,跟原来的元素就没啥关系了,所以即使list修改了以后,数组也不受影响。比如原来的顺序是AB,扩容后的顺序是BA,线程二执行结束。原创 2024-09-14 14:11:43 · 911 阅读 · 0 评论 -
消息队列RabbitMQ
我记得RabbitMQ还有一种方式可以实现延迟队列,在RabbitMQ中安装一个死信插件,这样更方便一些,我们只需要在声明交互机的时候,指定这个就是死信交换机,然后在发送消息的时候直接指定超时时间就行了,相对于死信交换机+TTL要省略了一些步骤。如果消息超时未消费就会变成死信,在RabbitMQ中如果消息成为死信,队列可以绑定一个死信交换机,在死信交换机上可以绑定其他队列,在我们发消息的时候可以按照需求指定TTL的时间,这样就实现了延迟队列的功能了。可以使用RabbitMQ惰性队列,惰性队列的好处主要是。原创 2024-09-02 22:26:02 · 572 阅读 · 0 评论 -
微服务SpringCloud
提供了两种方式:1,创建类实现IRule接口,可以指定负载均衡策略,这个是全局的,对所有的远程调用都起作用2,在客户端的配置文件中,可以配置某一个服务调用的负载均衡策略,只是对配置的这个服务生效远程调用怎么解决这个问题首先一个前提,对于分布式系统而言,分区容错性是一个最基本的要求,因此基本上我们在设计分布式系统的时候只能从一致性(C)和可用性(A)之间进行取舍。原创 2024-09-02 17:01:34 · 1048 阅读 · 0 评论 -
Spring框架
aop是面向切面编程,在spring中用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取公共模块复用,降低耦合,一般比如可以做为公共日志保存,事务处理等。原创 2024-09-01 22:58:02 · 1167 阅读 · 0 评论 -
MySQL数据库
索引在项目中还是比较常见的,它是帮助MySQL高效获取数据的数据结构,主要是用来提高数据检索的效率,降低数据库的IO成本,同时通过索引列对数据进行排序,降低数据排序的成本,也能降低了CPU的消耗其实跟刚才介绍的聚簇索引和非聚簇索引是有关系的,回表的意思就是通过二级索引找到对应的主键值,然后再通过主键值找到聚集索引中所对应的整行数据,这个过程就是回表备注:如果面试官直接问回表,则需要先介绍聚簇索引和非聚簇索引】原创 2024-08-30 22:05:00 · 1152 阅读 · 0 评论 -
Redis缓存
缓存穿透是指查询一个一定的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。这种情况大概率是遭到了攻击。布隆过滤器主要是用于检索一个元素是否在一个集合中。我们当时使用的是redisson实现的布隆过滤器。它的底层主要是先去初始化一个比较大数组,里面存放的二进制0或1。在一开始都是0,当一个key来了之后经过3次hash计算,模于数组长度找到数据的下标然后把数组中原来的0改为1,这样的话,三个数组的位置就能标明一个key的存在。原创 2024-08-28 22:54:53 · 754 阅读 · 0 评论