LeetCode - 链表中的使用指针的技巧
思路 使用一个指针(java引用)表示当前遍历的链表中的present节点,移动节点的的操作为 p = p.next 注意在链表的拼接操作中,由于链表维护的特性,在拼接了一个节点后,该操作其实是将以该节点为起点的整个链表拼接了过来,在多数情况下可以不对此做额外处理,但有时候需要对尾部节点进行显式地进行 node.next = null操作以防止一些错误出现。(即有时候需要额外处理node...
思路 使用一个指针(java引用)表示当前遍历的链表中的present节点,移动节点的的操作为 p = p.next 注意在链表的拼接操作中,由于链表维护的特性,在拼接了一个节点后,该操作其实是将以该节点为起点的整个链表拼接了过来,在多数情况下可以不对此做额外处理,但有时候需要对尾部节点进行显式地进行 node.next = null操作以防止一些错误出现。(即有时候需要额外处理node...
credit: CompletableFuture入门 介绍 CompletableFuture 同时实现了 Future 和 CompletionStage 接口。 这意味着CompletableFuture 除了提供 Future 特性之外,还提供了函数式编程的能力,可以方便地管理与进一步处理任务。 创建 使用new关键字 注意使用这种方法创建的CompletableFutu...
本篇博客中的一些内容(图片)并非原创,更严格的说本篇内容就是对于参考博文的自我消化。 credit: 一枝花算不算浪漫的博文 ❤️ 数据结构 每一个Thread都有自己的ThreadLocalMap, 逻辑上Map的key为ThreadLocal,value为存储在ThreadLocal中的值。 形式上Map是一个Entry数组,Entry继承自ThreadLocal的**弱引用*...
仅说明思路 code in my GitHub repository: click here 整篇博客中我忘记了需要维护内部的size变量,在此进行补充说明 基本实现 队列和栈就是操作受限的数据结构,其底层可以用 LinkedList 也可以用 ArrayList。 如果用 LinkedList 的话很简单,因为LinkedList本身就已经是Deque的实现了,所以直接调...
仅说明思路, code in my GitHub repository: click here 双链表 数据结构定义 首先是Node了, val 以及前后node引用, 构造用来赋值value,前后node由链表维护 然后是size,主要用于指定位置add的时候检查index的合法性 接着是能帮上很多忙的哨兵节点(虚拟头尾检点) 链表本身的构造中初始化头尾节点,互相指向对方,将...
在前一篇博文中讲的是CLH队列与AQS对其的优化,其用于维护线程的等待状态。但我发现把CLH作为第一篇其实有点不合适,原本将其作为第一篇是因为其本身作为了整个锁机制在实现上的开端,但我现在发现其不适合作为学习这一整个概念的开端,但我也懒得改了。其实本篇才适合作为开端,而CLH那篇可以仅作为拓展博文观看。 更严格地讲,本篇的术语表中的同步概念才是整个锁系列的开篇,希望未来的我 或者新读者(有...
本篇博客中的大部分内容并非原创,仅做整理作为学习资料使用 credit: Java AQS 核心数据结构-CLH 锁 在进行java并发学习的时候发现关于锁这一涵盖性术语有太多的子概念,所以本篇博文的目的是做一个简单易懂的锁相关概念总结,以帮助更好地理解和应用锁。 术语表 独占锁: 确保同一时间只有一个线程可以访问共享资源,比如synchronized关键字和Reentran...
windows SSH踩坑记录 心血来潮想用ssh连接windows,结果就是连不上,一直报错,最终还是找到了解决办法,记录一下。 无法连接,没有任何提示,只有timeout 饶了一点弯路 ,最后从防火墙方向入手,其实就是server不理这个请求,被防火墙ban了,加了个入站22端口的规则就行。 无法连接,请求直接被reset 这一步是个大坑,我也没搞明白是什么原因 最终的解决方式...
基本的八股文概念就不赘述了,本文主要讲解自己踩的坑 其实直接用逻辑推断也能得出答案:不会 ,否则设计这么个常量池的意义何在。 但是我因为学艺不精,很多概念没有理解透彻,然后多饶了很久去验证想法。本篇博文就是分享我的思路历程。 写在最前 本篇博文主要记录我自己的心路历程,所以一开始我也记录了我的一些错误的想法,其直到后面的部分才被矫正,所以推荐先看完这部分 运行时创建的任何St...
仅说明思路 code in my GitHub repository: click here 底层数据容器 数组 T[] data 额外数据结构: size: 表示目前已存储的元素个数 工具函数: System.arraycopy() jdk提供的高效数组移动方法 参数 : 1源 2位置 3目标 4目标位置 5长度 // 做add时的搬移,移出来一个空位 Syste...