• 什么是中间人攻击?如何防止攻击?

    什么是中间人攻击?A <—-> BA <—-> C <—-> B正常是 A 和 B 通信,这时 C 截获了 A 发给 B 的消息,然后假装成 A 给 B 发送消息。 中间人攻击(英语:Man-in-the-midd...
  • 145. 二叉树的后序遍历 - 中等

    145. 二叉树的后序遍历二叉树遍历 二叉树的后序遍历 左 右 根 当根节点的左右子树均为空的时候 add root.val 递归解法 时间复杂度O(n) n 是二叉树的节点数。每一个节点恰好被遍历一次。 空间复杂度O(n) 为递归过程中栈的开销,平...
  • 144. 二叉树的前序遍历 - 中等

    144. 二叉树的前序遍历二叉树遍历 二叉树的前序遍历 根 左 右 当根节点不为空时,直接把 root.val add list 递归解法 时间复杂度O(n) n 是二叉树的节点数。每一个节点恰好被遍历一次。 空间复杂度O(n) 为递归过程中栈的开销...
  • 94. 二叉树的中序遍历 - 中等

    94. 二叉树的中序遍历二叉树遍历 二叉树中序遍历顺序为 左 根 右当根节点的左子树为空时添加该根节点,即在 root.left = nil, 后 add root.val 递归解法 时间复杂度 O(n)其中 n 为二叉树节点的个数。二叉树的遍历中每...
  • 53. 最大子序和-简单

    53. 最大子序和 动态规划 解法 时间复杂度 O(n)一次遍历,其中 n 为 nums 数组的长度。我们只需要遍历一遍数组即可求得答案。 空间复杂度 O(1)只开辟了两个额外的空间,即只需要常数空间存放若干变量。 1234567891011121...
  • 912. 排序数组

    912. 排序数组 快速排序 递归解法12345678910111213141516171819202122232425262728293031323334353637383940414243class Solution { func...
  • 简述 TCP 的 TIME_WAIT

    为什么 TIME_WAIT主动关闭连接的一方最终进入 TIME_WAIT 状态等待一段才真正的释放内核中的连接记录,在释放记录之前这个连接使用的本地端口将一直被占用。保持一段时间的 TIME_WAIT 的理由是:担心 ack N+1 没有送达,导致被...
  • 简述 http 1.0,1.1,2.0 的主要区别

    区别 http1.0 到 http1.1 的主要区别 从无连接到长连接,可连续发送请求。在一个 TCP 连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟,在 HTTP1.1 中默认开启 Connection: keep-al...
  • 141. 环形链表

    141. 环形链表 快慢指针解法123456789101112131415func hasCycle(_ head: ListNode?) -> Bool { var slowTree = head ...
  • 33. 搜索旋转排序数组

    33. 搜索旋转排序数组 二分法123456789101112131415161718192021222324252627282930313233343536373839class Solution { func search(_ n...