- 博客(9)
- 收藏
- 关注
原创 Java的集合详解:从接口到实现,深入底层原理
Java集合框架是Java SE的核心组件,包含两大分支:Collection(List/Set/Queue)和Map(键值对)。List接口中,ArrayList基于动态数组,1.5倍扩容;LinkedList基于双向链表,适合频繁插入删除;Vector是线程安全的遗留实现。Set接口中,HashSet基于HashMap实现去重;LinkedHashSet维护插入顺序;TreeSet基于红黑树实现排序。Queue接口的PriorityQueue基于堆实现优先级队列。集合选择需考虑场景需求,如随机访问、插入
2025-09-08 15:42:13
988
原创 MySql中的mvcc到底是什么?
MySQL中的MVCC(多版本并发控制)是一种实现高并发的核心技术,通过维护数据多个版本实现读写不互斥。MVCC的核心组件包括隐藏字段(DB_TRX_ID、DB_ROLL_PTR)、Undo Log和Read View,利用版本链和可见性判断算法确保事务读取一致性。不同于锁机制的阻塞读写,MVCC在READ COMMITTED级别每次查询创建新Read View(可能不可重复读),而在REPEATABLE READ级别首次查询创建Read View并复用(保证可重复读)。MVCC解决了传统锁机制在高并发读场
2025-08-12 16:30:40
991
原创 JVM的内存详解和常见面试题
JVM内存模型经历了从永久代到元空间的重大演变。Java 7及之前使用永久代(PermGen)存储类元数据,但存在内存溢出和GC效率问题。Java 8引入元空间(Metaspace),改由本地内存管理类元数据,解决了永久代的限制,支持动态扩展。Java 9及后续版本进一步优化,增强类数据共享、改进GC算法,提升内存管理效率。这些改进使JVM能更好地支持现代应用场景,如动态类加载和大规模应用。
2025-08-12 15:53:26
1205
原创 Spring框架中RabbitMq如何保证信息不会丢失?
注意:在默认情况下,mq是没有开启这两种确认机制的,开启需要在配置文件里进行配置,通常在高并发的情况下,不推荐开启这种机制,因为会对每一条消息进行确认,会浪费额外的时间与资源。在Spring中,mq实现了AMQP的规范,消费者在接受消息后会通过发送ACK/NACK/REJECT三种回执向broker发送反馈。在生产者向mq Broker(客户端)发送消息后,Broker会通过发送ACK/NACK,向生产者做出响应。以上对消息失败的处理是重新入队,但为了避免无限入队,可通过配置文件配置文本重试。
2025-07-16 10:43:32
441
原创 Java中类的生命周期?
既然方法区的klass对象和堆的class对象都是由JVM依靠字节码文件转换而来那么Java为什么要这么设计呢?根据这张图我们就能大概明白Java这么设计的目的了。
2025-05-21 15:15:51
933
原创 JavaWeb中Serlvet的生命周期?
Servlet的生命周期包括加载、初始化、服务和销毁四个阶段。默认情况下,Servlet在第一次被调用时加载并实例化,但可以通过<load-on-startup>标签在服务器启动时加载。Servlet是单例的,初始化时调用init()方法,该方法在整个生命周期中只执行一次,用于资源分配和一次性设置。服务阶段通过service()方法处理客户端请求,根据请求类型调用相应的方法如doGet()或doPost()。销毁阶段调用destroy()方法释放资源,之后Servlet实例被标记为不可用并由垃圾
2025-05-20 11:09:47
377
原创 Spring的AOP(面向切面编程)所使用的动态代理技术有哪些?
动态代理技术通过反射机制自动创建代理类,拦截目标对象的方法调用,并在执行前后插入额外逻辑,实现代码增强。代理类与目标类的关联方式区分了不同的代理技术。Spring框架中主要使用两种动态代理技术:JDK动态代理和CGLIB动态代理。JDK动态代理要求代理类和目标类实现同一接口,通过InvocationHandler处理器实现方法增强。CGLIB动态代理则通过继承目标类,使用MethodInterceptor拦截器实现方法增强,且在代理类加载时预生成目标类的方法,避免了运行时反射调用的开销。两者的主要区别在于J
2025-05-17 15:27:33
978
1
原创 BIO/NIO的区别是什么?
BIO(Blocking I/O)是一种同步阻塞的I/O模型,每个连接由一个独立的线程处理,线程在读写数据时会被阻塞,直到操作完成。BIO适用于连接数较低的场景,但在高并发情况下,线程数量急剧增加,导致性能下降。NIO(Non-blocking I/O)则是一种同步非阻塞的I/O模型,单个线程可以管理多个网络连接,通过事件驱动机制高效处理I/O操作。NIO的核心组件包括Channel、Selector和Buffer,通过Selector监听多个通道的事件,实现高并发处理。NIO的线程模型包括单线程模型和多线
2025-05-16 09:39:28
770
2
空空如也
关于javasort方法的问题
2024-03-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅