算法与数据结构
zhuxinquan61
...
展开
-
进程如何主动限制磁盘IO/Reader中数据的读写速度 —— golang 之 io.LimitReader
背景要在agent中实现一个类似于ftp数据源端限速的功能,保证agent在运行过程中长期读取磁盘的时候,不会对磁盘造成压力,影响其它业务。前言说起限流,运维的小伙伴或多或少都知道点,来了20个流量,只能处理15个,则设置限流阈值为15,剩余的5个直接返回错误,这就是最简单理解的限流。然而限速呢?相比限流直接了当的给一个错误的返回值,限速要做的不仅不能返回错误,而且要在一定的时间段内进行响...原创 2019-11-10 15:57:55 · 5033 阅读 · 0 评论 -
Josephus问题分析与实现
Josephus问题:编号为1,2,3,……n的n个人按顺时针方向围坐在一张圆桌周围,每人持有一个密码(正整数)。任选一个正整数作为报数上限值值m,从第一个人开始按顺时针方向自1开始报数,报到m的人出列,并将他的密码作为新的密码,重新从1开始报数,依次出列,直至所有人全部出列为止!问题分析:创建循环链表原始循环链表的打印判空操作约瑟夫环操作原创 2015-09-24 22:29:10 · 5197 阅读 · 1 评论 -
利用堆栈实现表达式求值
栈(stack)又名堆栈,它是一种运算受限的线性表。 栈的限制是仅允许在表的一端进行插入和删除运算。我们正是利用栈的这种特性来实现表达式求值。对于表达式求值的运算需要注意的一大问题就是运算优先级的比较,我们利用两个栈将操作数和运算符分开存放,当第一次遇到数字时我们将其压入栈低然后继续向后获取表达式的值,当遇到第一个符号时我们也将其压入栈低,不过在符号栈的初始化的过程中,我们应当首先向其中存入一个参考原创 2015-09-28 16:53:30 · 10551 阅读 · 1 评论 -
判断字符串中是否包含连续相同的字符串(密码规范)
CVTE的一道笔试题:判断密码设置是否满足要求,要求如下:长度大于等于8位且小于等于16位至少包含大写字母、小写字母、特殊字符和数字中的三种密码中不能包含连续相同的字符串,如cc,cvtecvte等都是不符合规范的C语言实现如下:/************************************************************************* > F原创 2017-02-27 12:16:12 · 8364 阅读 · 1 评论 -
小球在矩形框内45°碰撞问题
问题描述:在一个矩形框内长w, 高h,现在在底边某一点举例左端点x位置处有一弹性小球(可视为质点)向右上方45°发射,碰撞忽略能量损耗,继续45°弹出,输出在前n次碰撞到底边时每次碰撞的位置。首先说一种比较繁琐的思路:碰撞本身是一个过程,我们只需要将所有的可能性考虑到位就好,首先,我们定义如下几个变量用来确定当前的状态:pos 表示当前的位置在哪条边上,我们默认从顶上顺时针分别为1, 2, 3,原创 2017-03-10 12:15:43 · 2492 阅读 · 0 评论 -
跳跃表的原理及Java实现
原理参考:SkipList跳表这里我使用Java实现其原理:首先是SkipListNode的定义:SkipListNode.javapackage skiplist;/** * Created by zhuxinquan on 17-3-11. */public class SkipListNode implements Comparable { private int value;原创 2017-03-12 12:19:55 · 4656 阅读 · 0 评论 -
满二叉排序树中查找三个节点的最小子树的根节点
题目描述:于一棵满二叉排序树深度为k,节点数为2^k-1;节点值为1至(2^k - 1),给出k和任意三个节点的值,输出包含该三个节点的最小子树的根节点。样例输入:4 10 15 13样例输出:12首先,我们来理解一下满二叉排序树,如下就是一个4层的满二叉排序树: * 8 * / \ * 4 12 * / \ / \原创 2017-04-04 14:49:03 · 5446 阅读 · 4 评论