当前位置: 首页 > wzjs >正文

免费php mysql网站hexo wordpress 主题制作

免费php mysql网站,hexo wordpress 主题制作,栖霞建设网站,空包自己可以做物流信息的网站HeavyKeeper 算法介绍与原理 原代码go语言实现出自Topk HeavyKeeper是一种高效的流式TopK检测算法,专为识别大规模数据流中的频繁项(热点Key)而生,它基于Count-Min Sketch算法改进,主要通过以下组件实现: …

HeavyKeeper 算法介绍与原理

原代码go语言实现出自Topk
HeavyKeeper是一种高效的流式TopK检测算法,专为识别大规模数据流中的频繁项(热点Key)而生,它基于Count-Min Sketch算法改进,主要通过以下组件实现:

  1. 二维数组:算法维护一个二维数组,里面有 d 个数组,每个数组里有 w 个桶,桶里记录哈希指纹和计数值。

  2. 计数衰减机制:核心创新点,当发生哈希冲突时,不是简单的覆盖,而是通过概率衰减原有计数。

  3. 堆结构:维护一个大小为 k 的最小堆,用于记录当前观测到的TopK项。

当一个Key到达时:

  1. 对Key应用d个哈希函数,映射到d个数组中的对应桶

  2. 对每个桶:

  • 如果桶为空或已存储的哈希指纹与当前哈希指纹相同,增加计数器

  • 如果发生冲突,以概率P(decay) = 1/(b^C)衰减已有计数,b为衰减因子,C 为计数值

维护最小堆,保留最大的k个计数项

public class HeavyKeeper implements TopK {// 查找表大小,用于存放衰减概率private static final int LOOKUP_TABLE_SIZE = 256;private final int k;  // Top-K 的数量private final int width;  // 每层桶的宽度private final int depth;  // 总共的哈希层数private final double[] lookupTable;  // 衰减概率查找表private final Bucket[][] buckets;  // 哈希桶二维数组private final PriorityQueue<Node> minHeap;  // 最小堆用于维护前K个高频项private final BlockingQueue<Item> expelledQueue;  // 被移出 Top-K 的队列private final Random random;  // 用于概率衰减private long total;  // 总加入项的个数private final int minCount;  // 进入 Top-K 的最小频率门槛// 构造函数public HeavyKeeper(int k, int width, int depth, double decay, int minCount) {this.k = k;this.width = width;this.depth = depth;this.minCount = minCount;// 初始化查找表,存储每个 count 下的衰减概率this.lookupTable = new double[LOOKUP_TABLE_SIZE];for (int i = 0; i < LOOKUP_TABLE_SIZE; i++) {lookupTable[i] = Math.pow(decay, i);}// 初始化桶this.buckets = new Bucket[depth][width];for (int i = 0; i < depth; i++) {for (int j = 0; j < width; j++) {buckets[i][j] = new Bucket();}}// 初始化最小堆和其他结构this.minHeap = new PriorityQueue<>(Comparator.comparingInt(n -> n.count));this.expelledQueue = new LinkedBlockingQueue<>();this.random = new Random();this.total = 0;}// 返回当前 Top-K 列表@Overridepublic List<Item> list() {synchronized (minHeap) {List<Item> result = new ArrayList<>(minHeap.size());for (Node node : minHeap) {result.add(new Item(node.key, node.count));}// 按频率降序排序result.sort((a, b) -> Integer.compare(b.count(), a.count()));return result;}}// 返回被移出 Top-K 的项@Overridepublic BlockingQueue<Item> expelled() {return expelledQueue;}// 数据衰减操作(定期调用)@Overridepublic void fading() {// 所有桶的计数都右移一位(除以2)for (Bucket[] row : buckets) {for (Bucket bucket : row) {synchronized (bucket) {bucket.count = bucket.count >> 1;}}}// Top-K 小堆的值也同步衰减synchronized (minHeap) {PriorityQueue<Node> newHeap = new PriorityQueue<>(Comparator.comparingInt(n -> n.count));for (Node node : minHeap) {newHeap.add(new Node(node.key, node.count >> 1));}minHeap.clear();minHeap.addAll(newHeap);}total = total >> 1;}// 返回总项数@Overridepublic long total() {return total;}// 桶结构:记录指纹和频率private static class Bucket {long fingerprint;int count;}// 小堆节点private static class Node {final String key;final int count;Node(String key, int count) {this.key = key;this.count = count;}}// MurmurHash32 哈希函数private static int hash(byte[] data) {return HashUtil.murmur32(data);}// 添加元素逻辑@Overridepublic AddResult add(String key, int increment) {byte[] keyBytes = key.getBytes();long itemFingerprint = hash(keyBytes);int maxCount = 0;// 遍历每层哈希表for (int i = 0; i < depth; i++) {int bucketNumber = Math.abs(hash(keyBytes)) % width;Bucket bucket = buckets[i][bucketNumber];synchronized (bucket) {if (bucket.count == 0) {// 桶是空的,直接填入bucket.fingerprint = itemFingerprint;bucket.count = increment;maxCount = Math.max(maxCount, increment);} else if (bucket.fingerprint == itemFingerprint) {// 命中同一个元素,累加计数bucket.count += increment;maxCount = Math.max(maxCount, bucket.count);} else {// 不同元素,进行概率衰减for (int j = 0; j < increment; j++) {double decay = bucket.count < LOOKUP_TABLE_SIZE ?lookupTable[bucket.count] :lookupTable[LOOKUP_TABLE_SIZE - 1];// 随机衰减if (random.nextDouble() < decay) {bucket.count--;if (bucket.count == 0) {// 替换为当前项bucket.fingerprint = itemFingerprint;bucket.count = increment - j;maxCount = Math.max(maxCount, bucket.count);break;}}}}}}// 总计数累加total += increment;// 如果未达到最小门槛,不加入 Top-Kif (maxCount < minCount) {return new AddResult(null, false, null);}// 尝试加入 Top-K 小堆synchronized (minHeap) {boolean isHot = false;String expelled = null;// 如果已存在,更新它Optional<Node> existing = minHeap.stream().filter(n -> n.key.equals(key)).findFirst();if (existing.isPresent()) {minHeap.remove(existing.get());minHeap.add(new Node(key, maxCount));isHot = true;} else {// 不存在,则判断是否可以进入 Top-Kif (minHeap.size() < k || maxCount >= Objects.requireNonNull(minHeap.peek()).count) {Node newNode = new Node(key, maxCount);if (minHeap.size() >= k) {expelled = minHeap.poll().key;expelledQueue.offer(new Item(expelled, maxCount));}minHeap.add(newNode);isHot = true;}}return new AddResult(expelled, isHot, key);}}
}

文章转载自:

http://WIxyqYVj.jyzqn.cn
http://Mx60u8e0.jyzqn.cn
http://PXbaITz1.jyzqn.cn
http://4YDZMMnY.jyzqn.cn
http://sM7kuGV2.jyzqn.cn
http://16o7GJiC.jyzqn.cn
http://iKoLmg6y.jyzqn.cn
http://dR0yHQIi.jyzqn.cn
http://84ZZcR0U.jyzqn.cn
http://NOsRSR6S.jyzqn.cn
http://0oJSOaEM.jyzqn.cn
http://FudFbCgq.jyzqn.cn
http://VBECQg1x.jyzqn.cn
http://NTm5vZcy.jyzqn.cn
http://2C6TIz6i.jyzqn.cn
http://JjJZfr96.jyzqn.cn
http://Ci3asopX.jyzqn.cn
http://PB7dhDwK.jyzqn.cn
http://5b2l0wkf.jyzqn.cn
http://liiJwQ59.jyzqn.cn
http://q2JCoCgd.jyzqn.cn
http://iqRWkNXp.jyzqn.cn
http://SyvwtZYj.jyzqn.cn
http://ONKPfHnd.jyzqn.cn
http://2eeLjsZI.jyzqn.cn
http://3Y3KsUlL.jyzqn.cn
http://AJcLoy2f.jyzqn.cn
http://eH2yg40h.jyzqn.cn
http://UtfUkytF.jyzqn.cn
http://TzvwviFF.jyzqn.cn
http://www.dtcms.com/wzjs/752995.html

相关文章:

  • 个人网站介绍模板下载phpmysql网站开发技术
  • 比较有名的diy制作网站页游排行
  • 查询网站备案时间查询网站开发人员的水平
  • 网站建设使用的什么语言wordpress备份 ftp
  • 四川网站建设培训班章丘营销型网站设计公司
  • 大连大连建设工程信息网站怎么建立一个网站能够与讯飞云对话
  • 商城类网站怎么优化青岛网站域名备案
  • 北京网站建设技术托管公司网站建设怎么规划比较好
  • 网站流量指标网页设计师介绍
  • 广东建设执业网站开发h5网站开发
  • 怎么创建网站自己创建汕头网站设计怎么做
  • 白色网站源码建筑网官网登录入口
  • 建站备案做网站有免费的服务器吗
  • 网站宽度980 在ipad上 左对齐了搭建wordpress脚本
  • 电影网站虚拟主机和vps装饰设计资质等级标准
  • 9e做网站国内f型网页布局的网站
  • 茂名网站制作推广做网站设计工作的报告
  • 泉州住房与城乡建设网站内江移动网站建设
  • 重庆网站建设 夹夹虫怎么访问wordpress
  • 搭建网站的工具网站备案后可以改名吗
  • 河南省罗山县做网站的公司互联网推广策略
  • 怎样用网站做单笔外贸电子贺卡在线制作网站
  • 做国外网站什么定位临夏金属装饰网站建设
  • 屏蔽 wordpress 插件深圳网络优化公司
  • 0基础网站建设教程视频php怎么做网页
  • 专业的网站制作专业公司广告设计服务
  • 房地产怎么做网站推广名字设计签名免费
  • 浙江智能建站系统价格网站怎么做seo优化
  • dw做电影网站wordpress主题添加设置
  • 安康微网站建设学做网站制作