事情是这样的。

最近不是疫情嘛,小区的快递驿站关了几天,得给这些快递们做核酸检测。

那些快递小哥把快递也放不进驿站,也进不来小区,就只能在小区门口摆摊,然后打电话通知大家来取快递。

于是我收到小哥打给我的电话:

然后我就起身出门了。

嗖的一下,很快啊,就到小区门口了。

就看到一个快递小哥站在一堆快递前,不停的分类。

然后我给他说:老哥,我来取快递。

他问我:手机尾号多少呀?

我答:尾号是 8。

然后他走向了一地包裹里面最长的那一溜,说:在这一堆里面,有点多,你稍等一下,我给你找一找。

然后他就从第一个开始翻。

聪明如我,一下就搞懂了他的快递分堆原理。

这不就是根据手机尾号进行 Hash 计算嘛。尾号相同的放在同一列里面,方便客户来取。

这就是个长度为 10 的数组加链表,这玩意不就是一个简陋的 HashMap 吗?

HashMap<手机尾号,快递包裹>

好巧不巧的,我这尾号为 8 的快递明显比别的快递多的多,简直都堆成山了。

我问他:这一堆快递怎么这么多呀?我们小区手机尾号是 8 的人这么多吗?

小哥边找边说:不止你们这个小区哦,这附近小区的快递都在这里,所以看起来很多。

当时我心里就在想:那这个 HashMap 定义的不合理啊。应该先按照小区的维度划分一下。

HashMap<小区,HashMap<手机尾号,快递包裹>>

于是我问小哥:为啥子不(怎么不)先根据小区的维度 Hash 一把(次)呢?

很明显,小哥一愣,没听懂我在说什么。

于是我改了一下说法:为啥不先分小区,再把小区里面的快递按照手机尾号进行划分呢?

小哥想也没想的用标准的四川话回复我:哎呀,人手不够的嘛,我分堆堆的时候还要看小区,恼火的很。哦,你莫急,我很快就找到你的了,莫 ~ 急 ~

就在我们聊天的空档,我后面已经排了三个等着取快递的人了:

又过了半分钟,小哥一看尾号为 8 的快递还得找一会,就对我说:老弟,这样嘛,你稍等一下下,我先把后面的人找一下,他们的应该很快。不耽误时间哈,莫 ~ 急 ~

我当然说没问题了,虽然我很赶时间,这个快递属于拿到马上就要用的那种,但是我还是非常理解这些小哥哥们的,等一会嘛,问题不大。

于是在小哥给其他人取快递的空档,我还在思考:他这个数据结构不够优秀啊。漏洞很多嘛,比如,处理不了我的请求。系统抗击打能力很拉胯啊。

就在我思考的时候,其他三个人的快递,果然很快就找到了,毕竟他们的尾号对应的快递一共也没几个。

小哥接着找我的快递,没想到我的快递居然在这个队列的最后几个。相当于是把一个长链表从头遍历到尾了。时间复杂度,不容乐观。

很明显,小哥找到我的快递的时候,露出了一丝不易察觉的微笑,仿佛在宣告着他的胜利。

在回家的路上,我就在思考。

如果我是这个小哥的竞争对手,基于他现在这么简单的分类方法,我完全可以对他进行攻击啊。

比如,我去找一堆尾号为 8 的电话卡,然后某宝上下单非常便宜的东西,并指定快递运营商。那他岂不是直接就处理不了尾号为 8 的客户的快递了,至少处理的时候得花一阵时间。

这样,来取快递的用户等的时间长了,心里就不爽了,然后点个投诉啥的...

额,等等...

这玩意,不就是我之前写过的...

这篇《悄悄的给你说几个HashCode的破事。》里面提到的 hash 冲突攻击大法?

这真是,处处留心皆学问啊。

想到这,我不经为自己的聪明才智所拍掌叫好,想着快点回去向我的老婆汇报我的发现,一定会得到她崇拜的目光。

于是还不由的加快了步伐。

回到家后,我推门就汇报了这次惊人的发现,老婆反问一句:那岂不是菜鸟驿站也有同样的问题?

一时间,竟然把我问兴奋了:是啊,如果菜鸟驿站也有这样的问题,那我反馈一下,岂不是提升了他们的工作效率。再这么也得在全小区通报表扬一下吧?

但是,等我冷静下来后,我发现是我想的太简单了,菜鸟驿站的包裹放置逻辑肯定不是按照手机尾号 Hash 这么简单的算法来的呀?

比如我看了一下我之前的取件码,它是这样的:

我知道它的含义是 2 号货架第 1 层 5006 号包裹。

但是 2-1-5006 这个号是由它们系统生成的,具体是怎么生成的,我也不知道。

由于不知道他们的生成规则,那部分攻击这条路肯定是走不通的。

注意,为什么我这里要强调“部分攻击”呢?

因为我可以直接发起暴力的 DDos 攻击啊,疯狂的下单,让驿站处理不了这么大的订单量。比如你想想每年的双 11 不就是一次 DDos 攻击吗。

就像是在斯大林格勒战场上,李云龙带动晋西北,攻打整个平安县城一样,怒气值上来之后,直接就是火力全面覆盖。

而 Hash 攻击,应该是像水门桥战役一样,就猛攻水门桥这一个点,单点打爆,也能影响到整个战斗局势的走向。

好了,就写到这吧。

我已经迫不及待的打开这个包裹了,我前面说了,这个快递属于拿到马上就要用的那种,可以两个人一起用,然后让人很兴奋的那种。

因为里面是这个玩意:

买来玩个《双人成行》,她用手柄,我用键盘:

这个游戏的设计非常巧妙,两个人一起玩的时候,经常是玩的很兴奋。

聪明如我,一眼就看穿了快递小哥的分堆算法相关推荐

  1. 你的每个哈欠老板都知道!被AI摄像头全天盯紧,亚马逊快递小哥不干了

    来源:大数据文摘本文约1900字,建议阅读8分钟此举引起了政府关注,五位美国参议员写信给亚马逊寻求解释. 一名亚马逊快递小哥的辞职刚刚在reddit引发热议. 辞职原因很简单,这位已经在亚马逊送了三年 ...

  2. 快递小哥5年赚260万:哪有什么天生​牛逼,不过是笨笨地熬

    优秀的人,愿意笨笨地熬. 所有的体力活 最终都是脑力活 中国300多万快递员,谁是当中最牛的哪个? 窦立国应该被提名. 窦立国是一名快递小哥,2014年,阿里巴巴在纽约上市,马云带了8位敲钟人,他就是 ...

  3. 互联网晚报 | 9月7日 星期二 | 徐雷升任京东集团总裁;顺丰宣布再投5亿扶持快递小哥;vivo自研芯片V1正式亮相...

    今日看点 ✦ 京东零售CEO徐雷升任京东集团总裁,辛利军任京东零售CEO ✦ 顺丰宣布再投5亿扶持快递小哥,用于技能学历提升等 ✦ vivo首款自研专业影像芯片V1正式亮相,将由vivo X70系列首 ...

  4. 双11过后张勇感谢快递小哥:再大的纪录都是靠大协作来完成的

    11月13日消息,双11过后,阿里巴巴集团董事局主席兼CEO张勇在12日夜晚赶往中通.圆通.韵达.申通等快递公司,专程向快递小哥致谢,"感谢全国300多万物流人,大家创造了新的世界物流高峰. ...

  5. 菜鸟裹裹宣布:让数十万快递小哥月入过万成为常态

    [TechWeb]4月9日,菜鸟裹裹今天宣布一项快递员增收计划:未来三年将在线接入数十万名快递员,通过提升寄件服务,帮助快递员人均增收20%以上. 菜鸟裹裹是菜鸟网络旗下一个在线寄件平台,联合快递公司 ...

  6. 苹果回应:iPhone 11用北斗导航作为位置数据系统一部分;马云回应年轻人去做快递小哥;Linux Lab发布v0.5 rc3| 极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 开发者专区 Linux Lab 发布 v0.5 rc3,新增 ...

  7. 新“开门七件事”出炉 快递小哥见证社会巨变

    28日,南方都市报发起的"新开门七件事"调查结果出炉,"刷朋友圈"."手机地图"."扫一扫"支付."视频聊天& ...

  8. 月入万元快递小哥仅占1.3%,多半月收入不超过5000元

    随着电子商务产业的兴起,物流也一度成为了高薪职业的范畴,早在多年前江湖中便流传着快递小哥月入三万元的传说.然鹅,现实总是骨感的.据报道称,超五成快递小哥月收入不超过 5000 元,"月入万元 ...

  9. mysql5.7应该导什么包_限定盲盒!只有快递小哥可以拆的“战马空投箱”…到底什么来头?...

    618,买完啦! 不用说 昨晚的你 又没少剁手吧! 剁了,你又可以了 但你知道吗?在每只剁掉的手背后 没有哪个快递小哥是不苦的 看看厦门最近的天气 路上差不多能煎荷包蛋了 出门还得被口罩紧紧捂住这跟汗 ...

最新文章

  1. Scala字符串输出、键盘输入和文件操作
  2. IT兄弟连 JavaWeb教程 JSON和JSON字符串
  3. Java 判断字符串是否为空的四种方法、优缺点与注意事项
  4. mapper中 <include refid=“XXX“></include>标签 <sql id=“XXX“>标签
  5. PHPstorm文件默认后缀
  6. 放开那三国3服务器维护,放开那三国3新服铤而走险开服时间表_放开那三国3新区开服预告_第一手游网手游开服表...
  7. 使用HTML5实现刮刮卡效果
  8. SpringBoot整合MyBatis并实现简单的查询功能
  9. 简单易懂的snmpd.conf配置文件说明
  10. 纯文字游戏编辑器_重新认识CocosCreator系列之三:立Flag啦,文字游戏编辑器!...
  11. java反编译 编译_5个最佳Java反编译器
  12. 三菱GXWorks2 绘制梯形图
  13. 决策树的实现及可视化方法总结
  14. Linux定时任务-Cron表达式详解
  15. 个性化的CRM具备的功能有哪些
  16. 为何浙江天搜科技这些互联网企业对杭州情有独钟?
  17. EKF扩展卡尔曼滤波算法做电池SOC估计,在Simulink环境下对电池进行建模
  18. css 实现心形加载动画
  19. 004.前端面试排雷之唱、跳、rap三步曲(一)唱篇
  20. pc控制android源码,pc 通过vnc控制android

热门文章

  1. 测试工作中发现一个bug,而开发人员说不是一个bug,你该怎么处理?
  2. 畅享原汁+气泡的双倍快乐 摩飞气泡原汁机全面评测
  3. 腾讯云增值税发票识别
  4. 谷歌chrome浏览器ERR_SPDY_PROTOCOL_ERROR错误
  5. .NET笔记系列:LAMBDA表达式常用写法
  6. 重要!Google Play评分规则更新,提升近期评论权重
  7. 学python买什么电脑好用又实惠_用不到1000美元攒一台深度学习用的电脑:一次深度学习和便宜硬件的探奇!...
  8. matlab 画qpsk眼图,qpsk调制星座图:通信里 星座图 到底是什么意思
  9. 普乐蛙VR大型游乐场设备儿童vr游乐园VR主题公园项目解决方案
  10. 正则表达式 同时验证手机号码和固定电话号码