Semaphore工作原理及源码分析

Semaphore

JDK的并发包中提供了几个非常有用的工具类,这些工具类给我们在业务开发过程中提供了一种并发流程控制的手段,本文会基于实际应用场景介绍如何使用Semaphore,以及内部实现机制[……]

继续阅读

另一个树的子树

题目描述

给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。[……]

继续阅读

图的理论基础

图的基本概念

图的定义

定义:图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常被成为”顶点(vertex)”,而点与点之间的连线则被成为”边或弧”[……]

继续阅读

二叉树遍历

如何遍历一棵树

有两种通用的遍历树的策略:

深度优先搜索(DFS)
DFS即Depth First Search,在这个策略中,我们采用深度作为优先级,以便从根开始一直到达某个确定的叶子,然后[……]

继续阅读

双指针技巧总结

我把双指针技巧再分为两类,一类是「快慢指针」,一类是「左右指针」。
前者解决主要解决链表中的问题,比如典型的判定链表中是否包含环;后者主要解决数组(或者字符串)中的问题,比如二分查找。

快慢指针的[……]

继续阅读

两个单链表相交的起始节点

题目描述
找到两个单链表相交的起始节点。
如下面的两个链表:

在节点 c1 开始相交。

注意:
如果两个链表没有交点,返回 null.
在返回结果后,两个链表仍须保持原有的结构。
可[……]

继续阅读

环形链表入口及其相交问题

问题描述
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

判断链表是否存在环

快慢指针

设置两个链表指针(fast, slow),初始值都指向链表头结点,然[……]

继续阅读

反转从位置m到n的链表

题目描述:
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。

说明:
1 ≤ m ≤ n ≤ 链表长度。

示例:

输入: 1->2-&[......]

继续阅读

Dockerfile指令

CMD

CMD指令用于指定一个容器启动时要运行的命令。

注意和RUN指令的区别,RUN是指定镜像被构建时要执行的指令,而CMD是指定容器被指定时要运行的命令。

CMD ["/bin/bash","-[......]

继续阅读

K个一组翻转链表

题目描述
给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。
如果节点总数不是 k 的整[……]

继续阅读