获得徽章 0
- 用1MB内存判断10亿数据是否存在,这个数据结构太狠了!
场景:判断用户名是否已注册
- 哈希表:1亿用户 = 1.6GB内存
- 布隆过滤器:1亿用户 = 1MB内存
- 空间节省:99.9%!
核心原理:
用3-7个哈希函数,把数据映射到位数组的几个位置。
查询时,只要有一个位置是0,就一定不存在!
所有位置是1,则"可能存在"(有1%误判率)
为什么接受误判?
- 拦截100万个恶意IP,误拦1万个好用户
- 这个代价,完全值得!
实际应用:Chrome密码泄露检测
Redis缓存穿透防护
垃圾邮件黑名单
爬虫URL去重
比特币SPV节点
文章详情:juejin.cn
#算法 #前端 #JavaScript #Redis #数据结构展开2点赞 - 线段树这个数据结构,我之前一直觉得是"竞赛专用",直到我在做一个实时数据统计功能时,才发现它有多香!
场景:股票软件需要实时显示任意时间段的最高价/最低价/平均价
❌ 朴素做法:每次遍历区间 O(n)线段树:查询和更新都是 O(log n)
最牛的是"懒标记"技术,区间更新不用逐个修改,延迟到查询时才下传,性能直接起飞!
花了3天写的深度解析,1100多行,从原理到实战全都有:juejin.cn
完整代码已开源:github.com
#算法 #数据结构 #前端展开赞过评论1 - 标题:手写A*算法后,我终于理解了魔兽争霸的寻路原理
正文:
花了3天实现A*寻路算法,才发现游戏单位的智能移动这么有意思。
核心就一个公式:f(n) = g(n) + h(n)
- g(n):已经走过的路
- h(n):估计还剩多少路
- f(n):总代价,越小越优先
比Dijkstra快20倍,因为有"方向感"!
完整实现已开源:github.com
#算法 #前端 #JavaScript展开4点赞 - "最近在用 Rust 写 Wasm 优化前端算法,发现一个奇怪的现象:同样的快速排序,在 Chrome 和 Firefox 上性能差了 30%。有人遇到过吗?详细分析和源码我整理成了一篇文章,求大佬指点迷津
"
3点赞 - #每天一个知识点# 【零基础学 AI】PyTorch 的 Tensor 到底是什么?用大白话给你讲明白!
刚学 PyTorch 的小伙伴,看到 Tensor 这个词是不是头都大了?🤯其实,Tensor 说白了就是数组的升级版!
🌰 举个栗子:
假设你去买菜,要记录花销:1 维 Tensor(像一根线):
python
[10, 20, 30] # 周一、周二、周三的花销
2 维 Tensor(像一张表):
python
[[10, 15, 20], # 周一:早、中、晚
[25, 30, 35], # 周二:早、中、晚
[40, 45, 50]] # 周三:早、中、晚
3 维 Tensor(像一摞纸):
python
# 想象你有 3 周的记账本,每本都是一个 2 维表
[
[[10, 15], [20, 25]], # 第 1 周
[[30, 35], [40, 45]], # 第 2 周
[[50, 55], [60, 65]] # 第 3 周
]
💡 核心知识点:
Tensor 就三个关键属性:
shape(形状): 长什么样 - 几行几列几层
dtype(数据类型): 里面装的啥 - 整数还是小数
device(设备): 在哪计算 - CPU 还是 GPU
⚠️ 新手常见坑:
❌ 错误: torch.tensor([1, 2, 3]) - 首字母大写才是从列表创建正确: torch.Tensor(3) - 大写 T 是创建指定大小的 Tensor❌ 错误: 忽略 dtype,结果整数除法变小数时出错
正确: 明确指定 torch.tensor([1, 2, 3], dtype=torch.float32)
🎯 一句话总结:
Tensor = 超级数组,能装任意维度的数据,是深度学习的基本"积木"!
#PyTorch #深度学习 #AI 学习 #编程入门 #技术分享展开评论点赞