面试
文章平均质量分 91
零点冰.
这个作者很懒,什么都没留下…
展开
-
JVM-垃圾回收
并发标记清除垃圾收集器年轻代:复制算法老年代:并发标记-清除算法。原创 2023-11-06 23:35:46 · 443 阅读 · 0 评论 -
多线程循环打印ABC
1、使用AtomicInteger的原子自增2、Synchronized + wait + notify3、ReentrantLock + Condition4、Semaphore原创 2023-07-14 22:34:28 · 630 阅读 · 0 评论 -
面试汇总-并发编程
中文叫比较交换,一种无锁原子算法。当使用ThreadLocal维护变量的时候 为每一个使用该变量的线程提供一个独立的变量副本,即每个线程内部都会有一个该变量,这样同时多个线程访问该变量并不会彼此相互影响,因此他们使用的都是自己从内存中拷贝过来的变量的副本, 这样就不存在线程安全问题,也不会影响程序的执行性能。上述并发环境下,并发1在修改数据时,虽然还是A,但已经不是初始条件的A了,中间发生了A变B,B又变A的变化,此A已经非彼A,数据却成功修改,可能导致错误,这就是CAS引发的所谓的ABA问题。原创 2023-01-28 17:52:04 · 953 阅读 · 0 评论 -
面试汇总-JVM基础
第二次Eden满了,触发Minor GC,又会把新的对象放到survivor,而此时survivor区已经存在了之前的对象,可能就会导致两次放入survivor的对象内存不连续,从而导致内存碎片化。“空闲列表”(内存不规整):用一个列表保存内存的信息,记录所有内存的可用状态,分配时从列表中找一块足够大小的内存划分给对象,并更新列表。软引用常用于缓存中,创建缓存的时候,将创建的对象放入缓存中,内存不足时,JVM就会回收最先创建的对象。可以理解为,字节码中的常量池,只是文件信息,它想要执行就必须加载要内存中。原创 2023-01-28 00:00:30 · 189 阅读 · 0 评论 -
Redis数据类型简介
字符串、列表、哈希、集合、有序集合、Streams、Geospatial、Bitmaps原创 2023-01-20 22:42:24 · 1615 阅读 · 0 评论 -
Redis底层数据结构简介
SDS、链表、跳表、压缩列表、快表、字典、整数集合原创 2023-01-16 23:37:33 · 489 阅读 · 0 评论 -
Redis缓存一致性问题
缓存读写模式、数据不一致场景、数据不一致解决方案原创 2022-12-12 22:38:38 · 527 阅读 · 1 评论 -
Redis缓存过期和和内存淘汰策略
目录1、MaxMemory2、Expire数据结构3、删除策略3.1、惰性删除3.2、主动删除3.3、缓存淘汰策略3.4、缓存淘汰策略的选择 dict 用来维护一个 Redis 数据库中包含的所有 Key-Value 键值对,expires则用于维护一个 Redis 数据库中设置了失效时间的键(即key与失效时间的映射)。 设置了失效时间的key和具体的失效时间全部都维护在 expires 这个字典表中。 当我们使用 expire命令设原创 2022-12-04 17:17:15 · 1128 阅读 · 0 评论 -
Redis持久化机制
RDB、AOF、混合持久化原创 2022-11-14 22:15:58 · 1553 阅读 · 0 评论 -
面试汇总-Redis-杂项
Redis杂项原创 2023-01-25 23:52:48 · 706 阅读 · 0 评论 -
面试汇总-SpringCloud-杂项
Zuul/GateWay:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务,网关会根据请求中的一些特征,将请求转发给后端的各个服务。当服务出现高并发时,SpringCloud的熔断机制会监控服务间的调用情况,当调用失败的次数达到一定阈值时,就会启动熔断机制(由于新的调用不断的产生,会导致C和D对E服务的调用大量的积压,产生大量的调用等待和重试调用,慢慢会耗尽C和D的资源比如内存或CPU。代码中通过服务名找到对应的IP地址(IP地址会变,但服务名一般不会变)。原创 2022-10-05 16:55:27 · 211 阅读 · 0 评论 -
面试汇总-Mybatis-杂项
Mybatis架构、Mapper原理、Mybatis缓存、核心对象、Mybatis插件原创 2022-08-30 22:49:30 · 300 阅读 · 0 评论 -
Java分布式锁解决方案
Java分布式锁解决方案原创 2022-08-27 14:46:03 · 2773 阅读 · 0 评论 -
面试汇总-Spring-Spring事务
Spring的@Transactional注解使用的是AOP来实现,也就是说被@Transactional注解的方法的事务是由Spring生成的一个代理类来处理的,当一个线程执行完该方法并释放锁后,代理类还没有提交事务前,别的线程是有机会进入到该方法中的,这样一来,就有几率访问到过期的数据,从而导致并发问题。Spring在启动时会去解析生成相关的Bean,在使用事务的时候,会为标注为@Transaction的类和方法生成一个代理,通过代理对这些类进行事务(提交、回滚)处理。事务A的更新被覆盖。原创 2022-08-21 23:02:48 · 501 阅读 · 0 评论 -
面试汇总-Spring基础-杂项
目标类提供一个实例工厂方法(需先定义实例工厂Bean),把创建实例的工厂类userFactory交给Spring管理,创建实例的过程由配置的实例工厂userFactory内部实现,Spring管理调用实例工厂类的方法进行实例创建。由于是单例,所以只要不在控制器中定义成员变量,就是线程安全的。完成Bean的创建-------Bean使用中-----------------------------------------------------------------------------------...原创 2022-08-18 23:51:55 · 232 阅读 · 0 评论 -
面试汇总-Spring-IOC和AOP
Resource对象与对应ApplicationContext类型如下。原创 2022-08-18 23:40:33 · 10285 阅读 · 0 评论 -
面试汇总-Spring-如何解决Spring Bean的循环依赖问题
如果按以上Bean的创建流程,对象A暴露的是普通对象而非代理对象,所以对象B的属性A注入的也是普通对象而非代理对象。三级缓存只能解决单例Bean的循环依赖问题,因为"prototype"作用域中,Spring的对象实例是在被调用的时候才会进行,因此无法提前暴露一个创建中的bean。在调用构造函数的时候不进行成员变量的初始化,而是先将Bean对象实例化(无参构造函数),然后再设置对象属性。Bean的创建流程:实例化->暴露Bean->填充属性->初始化->生成(代理)对象。......原创 2022-08-18 22:55:55 · 2113 阅读 · 0 评论 -
面试汇总-Java基础-集合框架
HashMap结构由桶加链表组成,桶是一个存储hash值的数组,每当添加一个新元素到HashMap中时,首先会根据hash算法计算出一个hash值,然后根据hash值找到对应的桶的位置,将该值存入桶对应的链表中。Jdk1.7在高并发下,HashMap产生死循环,造成CPU100%负载:HashMap在存储时,若size超过当前最大容量*负载因子时,会增加桶的数目,进行HashMap数组扩容(resize()),在resize过程中,会调用transfer()方法将链表转换成新链表,在多线程情况下可能导致。.原创 2022-08-10 22:23:32 · 211 阅读 · 0 评论 -
面试汇总-Java基础-杂项(持续更新)
除了double和long之外,对其他基本数据类型的操作都是原子性的。而对于double和long,两种类型都是8个字节64位,在32位操作系统的环境下,一次操作只能读取32位,无法一次性读取double和long数据,多线程环境下可能导致数据读写错误。...原创 2022-08-02 22:14:03 · 183 阅读 · 0 评论