
算法
文章平均质量分 91
TravelSir
被嘲笑的梦想,才更有被实现的价值。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
BloomFilter算法
如何判断一个元素是否存在于集合里?常见的一些解决办法有:但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢。遍历集合的时间成本高,时间复杂度再O(n)到O(logn)不等而哈希表也存在问题,当元素越来越多,哈希冲突也会越严重,从而影响查询效率。而布隆过滤则是一种时间空间都有巨大优化的算法布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量(位图)和一系列随机映射函数(哈希函数)。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率原创 2022-06-09 10:10:14 · 373 阅读 · 0 评论 -
令牌桶算法
Python的collections模块包含了许多实用的集合类。namedtuple可以定义一个简单的类,比直接定义一个类更简单,且减少了初始化类的很多初始化方法,所以速度更快。namedtuple继承于tuple,所以也拥有tuple的性质namedtuple还可以使用类方法_make方法来传入可迭代的对象创建类namedtuple还可以使用_asdict方法将namedtutple对象转化成字典tuple与list相比,tuple会作为常量在编译时确定,所以速度会比list快很多;tup原创 2022-06-09 10:09:14 · 3881 阅读 · 0 评论 -
GeoHash算法
附近的职位(POI: 兴趣点)最近有个需求,要求实现附近的职位的功能那么首先我们需要定位当前的点,用经纬度表示,是一个二维的坐标。那么如果要筛选附近一公里以内的职位,我们不可能把数据库所有的职位坐标取出来计算,所以我们需要增加筛除条件减小结果集。这个时候我想到的方法是,计算出以当前点为中心,取得相同纬度,距离1公里的左右经度临界线,再以相同经度取得上下维度临界线,这样就可以得到一个正方形范围的矩形和经纬度的最大最小临界值。在数据库进行查询的时候就可以用临界值去排除(经纬度要用B+索引)。对于查出来原创 2021-06-23 18:31:55 · 1887 阅读 · 0 评论