算法
Liberal-man
计算机科班出身。毕业后进入腾讯,有4年后台开发经验,从参与到设计内部使用的游戏消息分发平台,支撑200多款业务,日消息量级过亿。目前在北京创业中,负责带领技术团队。
展开
-
程序实现黎曼和(定积分)
想象一下,如果你手里有一块形状不规则的土地(实际上我没有,穷…),要测量它的面积,怎么办呢?拿尺子量,不知如何下手,突然感觉高中几何解决不了,得祭出本科的高等数学才行。所以,惯例我们应该发扬拿来主义,比如 “国际上,如何如何…”:一个叫黎曼的德国数学家(Bernhard Riemann, 1826-1866),他想了个办法:将这不规则图形切成一条条的小长条儿,然后将这个长条近似的看成一个矩形,...原创 2019-11-02 15:27:56 · 5344 阅读 · 2 评论 -
使用golang实现令牌桶限流和时间窗口控制
这篇文章不是讲令牌桶算法原理,关于原理,请参考 https://blog.csdn.net/lzw_2006/article/details/51768935我这里只是使用golang语言来实现令牌桶算法,以及时间窗口限流。#### 针对接口进行并发控制如果担心接口某个时刻并发量过大了,可以细粒度地限制每个接口的 总并发/请求数以下代码golang实现```gopackage...原创 2019-05-23 15:54:55 · 2202 阅读 · 0 评论 -
面试圣经(一)
小桔科技 四面面试官是个部门经理,比较和蔼,说话爱笑,比别的公司的总监层面的人严肃的面孔好多了,也让面试者轻松很多。总结下他问的诸多问题以及我的解法,先上几个问题 1有数字1、2、3….直到n+2的递增数列,每个数都是唯一不重复的,以1的步长增长的。去掉其中两个数,然后打乱次序,找出被去掉的数到底是哪两个?(n假设是10w,空间复杂度要求O(1))答:方法1: 这是我的回答 设这些数保存在数组A原创 2017-05-20 15:40:24 · 980 阅读 · 1 评论 -
抛弃mysql模糊查询,使用sphinx做专业索引
Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,提供比数据库本身更专业的搜索功能特别为MySQL也设计了一个存储引擎插件,从此抛弃模糊查询吧。Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建100万条记录的索引只要 3、4分钟,创建1000万条记录的索引可以在50分钟内完成,而重建一次只包原创 2016-08-19 15:16:26 · 7804 阅读 · 0 评论 -
用Golang实现基于时间轮算法的定时器
package timingwheelimport ( //"container/list" //"fmt" "sync" "time" "timer_server/util")const wheel_cnt uint8 = 5原创 2016-06-12 17:13:57 · 4845 阅读 · 1 评论 -
二分查找、折半查找
#include <stdio.h>#define N 10void printA(int A[], char n){ int i = 0; for (i = 0; i < n; i++) { printf("%d ", A[i]); } printf("\n");}void printSearch(int A[], char n, i原创 2016-06-15 18:28:31 · 729 阅读 · 0 评论 -
快速排序
C语言实现#include <stdio.h>#define N 9int A[N] = { 10, -3 , 28, 76, 37, 55, -1, 99, 11};void printArr(int arr[], int length){ int i; for (i = 0; i < N; i++) { printf("%d ", A[i]);原创 2016-06-05 20:43:18 · 483 阅读 · 0 评论 -
排列组合 C语言实现
#include <stdio.h>#include <stdlib.h>int array[] = {1,2,3,4};#define N 4#define M 3int queue[N] = {0}; //保存已经找到的结果,前缀int top = 0; //队列顶部下标int flag[N] = {0}; //是否已经排列过了的标志/** * 排列 * @param s 递归原创 2016-06-04 23:15:11 · 9664 阅读 · 0 评论 -
索引查找
索引查找是在索引表和主表上进行的查找,主表是线性表。先按照给定的哈希算法(比如value%100)对每一个value做哈希运算,将value映射到不同的数据段中(以模100为单位),这样每隔100个数段的区间就被一个哈希值做的索引映射到,以这种方式创建主表,同时创建一个索引表,记录每个100个数区间的索引编号、起始位置、有效数据长度。在查找数据的时候,只要以同样的哈希算法先计算哈希值,直接按该值跳到原创 2016-06-04 18:23:36 · 2140 阅读 · 0 评论 -
冒泡排序
冒泡排序(Bubble Sort)。 [1] C语言实现#include <stdio.h>#define SIZE 9void printArr(int arr[], int n){ int i; for (i = 0; i < n; i++) { printf("%d ", arr[i]); }}/* * 交换 */void swa原创 2016-06-04 14:19:49 · 578 阅读 · 0 评论