数据结构
文章平均质量分 71
数据结构
锦还之路
敢于想象,多去经历,把学习时间花在难的地方,跳出舒适圈;
反思总结,多写文字,提高自己的表达能力,同样的内容写的更好。
展开
-
volatile关键字
1、volatile保证变量对所有线程的可见性:当volatile变量被修改,新值对所有线程会立即更新。或者理解为多线程环境下使用volatile修饰的变量的值一定是最新的。2、jdk1.5以后volatile完全避免了指令重排优化,实现了有序性。原创 2023-04-09 10:29:11 · 49 阅读 · 0 评论 -
JAVA 锁
乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。java 中的乐观锁基本都是通过 CAS 操作实现的,CAS 是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。原创 2023-04-09 10:14:58 · 49 阅读 · 0 评论 -
CopyOnWriteArrayList
首先我讲一下什么是Copy-On-Write,顾名思义,在计算机中就是当你想要对一块内存进行修改时,我们不在原有内存块中进行写操作,而是将内存拷贝一份,在新的内存中进行写操作,写完之后呢,就将指向原来内存指针指向新的内存,原来的内存就可以被回收掉嘛!这是一种用于程序设计中的优化策略,是一种延时懒惰策略。原创 2023-04-09 00:01:56 · 74 阅读 · 0 评论 -
ConcurrentHashMap
ConcurrentHashMap使用分段锁技术,将整个数据结构分段(默认为16段)进行存储,然后给每一段数据配一把锁(继承ReentrantLock),当一个线程占用锁访问其中一个段的数据的时候,其他段的数据仍然能被其他线程访问,能够实现真正的并发访问。。数据结构:取消了Segment分段锁的数据结构,取而代之的是Node数组+链表+红黑树的结构,从而实现了对每一行数据进行加锁,进一步减少并发冲突的概率。原创 2023-04-08 21:03:12 · 297 阅读 · 0 评论 -
HashMap
JDK 7 中,HashMap 由“数组+链表”组成,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的。在 JDK 8 中,HashMap 由“数组+链表+红黑树”组成。链表过长,会严重影响 HashMap 的性能,而红黑树搜索的时间复杂度是 O(logn),而链表是糟糕的 O(n)。原创 2023-04-08 20:18:32 · 95 阅读 · 0 评论 -
负载均衡算法
每一次来自网络的请求轮流分配给内部中的服务器,从 1 至 N 然后重新开始。此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。原创 2023-04-05 14:28:05 · 116 阅读 · 0 评论 -
一致性 Hash
一致性哈希(Consistent Hashing)是一种分布式哈希算法,主要用于。它具有以下几个特性:均衡性:一致性哈希能够将数据均匀地分布在各个节点上,避免了节点之间的负载不均衡问题。单调性:当系统中的节点增加或者减少时,一致性哈希算法能够最大程度地保持数据分布的不变性。分散性:一致性哈希能够将数据分散到不同的节点上,从而降低单个节点的负载,提高系统的可用性。负载均衡:一致性哈希能够实现负载均衡,从而保证系统的高可用性和高性能。原创 2023-04-05 08:14:17 · 67 阅读 · 0 评论 -
布隆过滤器之 Counting Bloom Filter
结论:适用于大数据量下的集合过滤。优点:空间效率和查询时间都远远超过一般的算法。缺点:有一定的误识别率和无法删除。网页爬虫对URL的去重,避免爬取相同的URL地址;反垃圾邮件,从数十亿个垃圾邮件列表中判断某邮箱是否垃圾邮箱(同理,垃圾短信);缓存击穿,将已存在的缓存放到布隆中,当黑客访问不存在的缓存时迅速返回避免缓存及DB挂掉。结论:Bloom Filter的变种,支持了计数及删除。优点:保证了空间和时间的同时,支持了计数及删除。原创 2023-04-05 08:10:07 · 995 阅读 · 0 评论 -
三种树形结构存储方案的对比
方案储存数据导出查询父子关系查询子树查询根路径插入删除修改并发说明连接表&迭代查询较少 EasyEasy迭代查询Easy迭代查询EasyEasy先查询子节点再批量删除Easy 容易控制依赖高版本数据库路径树path 可能很长EasyEasyEasyEasyEasyEasyEsay路径上锁路径不能过长,深度不能过深闭包表较多HardEasyEasyEasyHardEasyHardHard支持多父节点。原创 2023-03-26 13:34:43 · 418 阅读 · 0 评论