摘要: 最近开始看Redis设计原理,碰到一个从未遇见的数据结构:跳跃表(skiplist)。于是花时间学习了跳表的原理,并用java对其实现。 介绍 跳跃表 是一种有序数据结构,它通过每个结点中维持多个指向其它结点的指针,从而达到快速访问结点的目的。 我们平时熟知的链表,查找效率为O(N)。跳表在链表的基 阅读全文
posted @ 2020-05-06 21:10 数小钱钱的种花兔 阅读(2984) 评论(0) 推荐(0) 编辑
摘要: 问题背景 NIO是面向缓冲区进行通信的,不是面向流的。我们都知道,既然是缓冲区,那它一定存在一个固定大小。这样一来通常会遇到两个问题: 消息粘包 :当缓冲区足够大,由于网络不稳定种种原因,可能会有多条消息从通道读入缓冲区,此时如果无法分清数据包之间的界限,就会导致粘包问题; 消息不完整 :若消息没有 阅读全文
posted @ 2020-04-19 17:00 数小钱钱的种花兔 阅读(1775) 评论(0) 推荐(0) 编辑
摘要: 递归 1. 平衡二叉树 2. 二叉树的直径 3. 路径总和 III 4. 另一棵树的子树 5. 对称二叉树 6. 二叉树的最小深度 7. 最长同值路径 8. 间隔遍历-打家劫舍 III 9. 二叉树中第二小的结点 借助队列与栈 1.二叉树的层平均值 2.找树左下角的值 3.二叉树的前中后序遍历(迭代 阅读全文
posted @ 2020-04-17 10:56 数小钱钱的种花兔 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 问题 今天调试NIO后台发现一个蛋疼的问题。经过调试之后,出现问题的流程描述如下: 客户端向服务端发送消息,服务端使用IO多路复用处理输入,即一个selector监听多个channel。第一条消息正常接收,发送第二条消息时,select()立即返回0,然后开始continue无限循环,导致第二条消息 阅读全文
posted @ 2020-04-16 16:04 数小钱钱的种花兔 阅读(842) 评论(0) 推荐(0) 编辑
摘要: 目录 算法思想 双指针思想 首尾双向遍历 同向遍历 其它 二分查找法 数学 动态规划 贪心思想 数据结构 链表 两数相加Ⅰ&Ⅱ 回文链表 分隔链表 奇偶链表 相交链表 翻转链表(递归理解) 合并两个有序链表(递归理解) 快慢指针两题 两两交换链表中的结点(递归循环两种) 删除排序链表中的重复元素(递 阅读全文
posted @ 2020-04-15 10:45 数小钱钱的种花兔 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 1. 两数相加 2. 两数相加2 3. 回文链表 4. 分隔链表 5. 奇偶链表 6. 相交链表 7. 翻转链表 8. 合并两个有序链表 9. 删除链表的倒数第N个节点 10. 环形链表 11. 两两交换链表中的结点 12. 删除排序链表中的重复元素 两数相加 LeetCode:两数相加 题目描述: 阅读全文
posted @ 2020-04-13 10:03 数小钱钱的种花兔 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 字节跳动在北京有N个工区 题目描述: 第一题. 字节跳动在北京有N个工区,形成一个环状,Bytebus是往返在各个工区的通勤车,按工区的顺序行驶,其中第 i 个工区有汽油 gas[i] 升。你有一辆油箱容量无限的的Bytebus,从第 i 个工区开往第 i+1 个工区需要消耗汽油 cost[i] 升 阅读全文
posted @ 2020-04-10 11:55 数小钱钱的种花兔 阅读(1086) 评论(0) 推荐(0) 编辑
摘要: 1. 最接近的三数之和 2. 通过删除字母匹配到字典里最长单词 最接近的三数之和 LeetCode:最接近的三数之和 题目描述: 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入 阅读全文
posted @ 2020-04-07 10:20 数小钱钱的种花兔 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 1.形成两个异或相等数组的三元组数目 2.制作m束花所需的最小天数 3.最小体力消耗路径 4.将x减到0的最小操作数 5.找出最具竞争力的子序列 形成两个异或相等数组的三元组数目 LeetCode:形成两个异或相等数组的三元组数目 题目描述: 给你一个整数数组 arr 。 现需要从数组中取三个下标 阅读全文
posted @ 2020-04-06 12:31 数小钱钱的种花兔 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 我前段时间的一篇博客 "java网络编程——多线程数据收发并行" 总结了服务端与客户端之间的收发并行实践。原理很简单,就是针对单一客户端,服务端起两个线程分别负责read和write操作,然后线程保持阻塞等待读写执行。 事实上,这样的模式非常糟糕。因为每一个客户端在服务端需要占用两条线程,假如有10 阅读全文
posted @ 2020-04-04 19:39 数小钱钱的种花兔 阅读(569) 评论(0) 推荐(0) 编辑