![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试准备
文章平均质量分 76
一些面试准备的总结和学习
今日不断电
这个作者很懒,什么都没留下…
展开
-
几种单例模式
饿汉式单例类在类被加载时就将自己实例化,它的优点在于无须考虑多线程访问问题,可以确保实例的唯一性;懒汉式单例类在第一次使用时创建,无须一直占用系统资源,实现了延迟加载,但是必须处理好多个线程同时访问的问题, 特别是当单例类作为资源控制器,在实例化时必然涉及资源初始化,而资源初始化很有可能耗费大量时间,这意味着出现多线程同时首次引用此类的机率变得较大,需要通过双重检查锁定等机制进行控制,这将导致系统性能受到一定影响。单例模式指的是一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。原创 2023-10-20 17:54:51 · 494 阅读 · 0 评论 -
关于多线程的异常处理
我们首先说一说在线程池中的异常处理。像Runable()没有返回值自然就无法捕获和处理异常,如果时Callable()这类有返回值的线程我们就可以对它进行处理。在多线程中我们对任务的提交方式决定了我们对线程中异常处理的不同。execute会直接抛出任务执行时的异常,可以用try、catch来捕获,和普通线程的处理方式完全一致。execute和submit都属于线程池的方法,execute只能提交Runnable类型的任务、submit会吃掉异常,可通过Future的get方法将任务执行时的异常重新抛出。原创 2023-10-19 16:17:06 · 226 阅读 · 0 评论 -
阿里面试(持续更新)
HashMap和ConcurrentHashMap都是存储键值对的数据结构,不同的是HashMap是线程不安全的,ConcurrentHashMap是线程安全的,HashMap在高并发情况下会出现数据不一致问题。1.7 基于数组和链表 ,将数据封装成一个Entry节点 ,通过哈希算法找到节点插入的位置,通过头插法进行插入。当hashMap元素数量到达16*0.75时会将容量翻倍进行扩容操作,会重新计算节点的位置并进行插入。但是使用头插法插入在并发扩容时会出现死链问题。原创 2023-10-19 16:28:08 · 369 阅读 · 0 评论 -
说说mybatis中的#{} 和 ${}
MyBatis是一种Java持久层框架,为了方便操作数据库,MyBatis提供了动态SQL的功能。在MyBatis中,我们可以使用${}和#{}两种方式来引用变量。${}#{}为什么要使用#{}${}#{}${}#{}总之,为了提高安全性和可靠性,推荐使用#{}的方式来引用变量。原创 2023-10-18 17:17:23 · 300 阅读 · 0 评论 -
简单说说ConcurrentHashMap的结构和实现
通过树化分割的方式,JDK 1.8中的ConcurrentHashMap在进行扩容时可以更高效地转移数据,并提供更好的并发性能。扩容阈值:JDK 1.8中的ConcurrentHashMap的扩容阈值相较于JDK 1.7有所不同。每个数组中的元素称为Node节点。ConcurrentHashMap是线程安全的HashMap,并非通过锁住整个方法,而是在方法内进行一些原子的操作和局部加锁保证多线程的安全。扩容过程:当哈希表需要扩容时,JDK 1.8中的ConcurrentHashMap采用了树化分割的方式。原创 2023-10-18 16:40:52 · 130 阅读 · 0 评论 -
一些负载均衡算法
为每个服务器分配一个权重,根据服务器当前的连接数和权重来决定请求的分发。权重高的服务器可以处理更多的请求,但同时也要考虑当前的连接数。每个请求将按照服务器的权重进行分发,权重高的服务器将处理更多的请求。将请求分发到当前连接数最少的服务器上,以保持服务器的负载均衡。:在负载均衡设备和服务器之间建立一对一的映射关系,所有来自同一客户端的请求都发送到相同的服务器。:根据服务器的实际负载动态调整服务器的权重,以确保负载分布均衡。:根据请求的源IP地址进行散列计算,将相同IP的请求分发到同一个服务器上。原创 2023-10-18 16:06:35 · 112 阅读 · 0 评论 -
浅谈Spring事务
spring事务机制是spring提供的一种事务管理机制,他是基于Aop和mysql的事务机制来实现的。在spring中管理事务主要是通过AOP和事务拦截器来实现,当Spring应用程序被事务注解标记后,事务拦截器会拦截该方法的调用,并在方法执行前后进行事务管理相关操作。原创 2023-10-18 15:40:23 · 94 阅读 · 0 评论 -
mysql.mongoDb,neo4j数据库对比
如果你的数据是结构化的,并且需要进行复杂的关系查询,那么MySQL可能是更好的选择。如果你有结构化数据并需要复杂的查询和过滤,MySQL的各种索引类型可能是一个不错的选择。如果你有非结构化数据或图形数据,并需要灵活的查询和关系分析,MongoDB和Neo4j的索引类型可能更适合。WiredTiger:默认的存储引擎,支持复杂的查询和高吞吐量的写入操作,提供了数据压缩和多版本并发控制等功能。InnoDB:默认的存储引擎,支持事务和行级锁定,适用于高并发的读写操作和数据完整性要求较高的场景。原创 2023-10-09 15:17:08 · 887 阅读 · 0 评论