Java的集合类分为两大类。一个是Collection接口另一个是Map接口。 前者主要是List,Set,Queue。用于存储对象。 后者则是存储的键值对。 List接口: LinkedList 基于双向链表的List,插入,删除速度快,但是查询数据慢。 ArrayList 基于动态数组的List
JDK1.7 ConcurrentHashMap使用的是分段锁,即每个Segment是独立的,可以并发访问不同的的Segment,默认是16个Segment,即最多有16个线程可以并发访问。 JDK1.8移除了分段锁,锁的粒度变得更加细化,改用CAS进行插入操作。只有在更新或删除的时候使用synch
HashMap是基于哈希表的数据结构,用于存储键值对。其核心是将键的哈希值映射到数组的索引位置。在JDK1.7以前,通过数组,链表来解决哈希冲突。JDK1.8以后通过数组,链表,红黑树来处理哈希冲突。 HashMap的初始容量是16,负载因子是0.75。如果数组容量超过16*0.75=12后,则开始
实现秒杀下单 我们点击限时抢购,然后查看发送的请求 请求网址: http://localhost:8080/api/voucher-order/seckill/13 请求方法: POST 看样子是VoucherOrderController
volatile和synchronized有什么区别? Synchronized解决了多线程访问共享资源时可能出现访问数据不一致的问题,保证了线程安全性。 Volatile解决了变量在多线程环境下的可见性和有序性问题,确保了变量的修改对其他线程是可见的。 Synchronized: Synchron