我宣布,这是我2022年吃的最有意思的瓜!

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

今天吃了一个瓜,真的是太好吃了。

虽然 2022 年都还没过半,但是我个人已经把这个瓜评选为年度前三了。很久没有吃过这么有质量、又让我酣畅淋漓的瓜了。

事情这样的,我在知乎上刷到了这样的问题:

c4ee015b06c88ca35a47a90fbf8f3500.png

按理来说,我是一个数学渣的,这种关于数学的问题我一般都不是很感兴趣。我甚至都不记得我高考的时候数学考了多少分了。

但是,我还是鬼使神差地点了进去。

没想到,这一点进去,我就陷进去了。

题目大概是说 B 站上有个 up 主说自己高考数学的时候差不多 35 分钟就把题做完了,最后考了 149 分。

这个 up 主其实挺好的,我还专门去看了一下他之前的视频,他今年一月份发的视频里面说自己是在美国攻读博士学位,学的是纯数学专业。

b575f64d8cc9c4020861dfe3c7c22f8d.png

然后他的高考数学分数没有问题,因为他后面晒了自己的成绩单,但是由于没有可以佐证的证据, 35 分钟这个时间就特别有争议了。

大家围绕着这个时间就开始吵起来了。

一拨人说应该问题不大,一拨人说绝无可能。

于是就出现了下面这样的一个回答:

https://www.zhihu.com/question/522084520/answer/2394053852

f9ce32c5e3a7411b8faf4051eeaa0630.png

总体意思就是有个不愿意透露姓名的、参加过数学奥林匹克大赛的数学大佬,他说他觉得没有人可以在 35 分钟之内高考数学拿到 149 分。

他还立下了奖金 100w 的战书:

在 2022 年 6 月 7 日中午 12 点集合,等当天试卷出来之后全网直播,40 分钟之内 145 分以上即可,参赛费 1 万,挑战成功奖金 100 万。

他也知道知乎上能人辈出,所以特别欢迎大家来打他的脸。希望大家帮他扩散这个消息,让更多的人看到,如果能凑够十个人就开搞。

此消息一出,各路吃瓜豪杰闻风赶到。我给你看看这个回答的数据:

804bff51d0d06e50b3c17bf30655a0a1.png

3.3w 人点赞,6805 条评论,5736 人追更,1.7w 人收藏,很恐怖的数据了。

因为答主最后一次更新在 3 月 20 号。至今已经过去了 2 个多月了,我当然第一时间是想知道截止现在有多少人报名了。

所以我想在评论区里面找到答主关于这方面问题的回复。

但是 6800 多条评论,这么多评论直接影响到我吃瓜的速度了。知乎网页版上分页就分了 121 页,而且里面还夹杂着特别多的“查看回复”:

75376594921f5edcf036144badd30f9b.png

“查看回复”,就是下面这种楼中楼的情况:

12f0621112314bffe83e0cbabff214c3.png

我翻了几页,就发现事情不对,这瓜虽然好吃,但是一页页地翻的话,吃起来也太费劲了。

你知道,我是程序员嘛。

所以...

5ed1a7364c4b5bcf05a5e3d9a4ca1360.png

扒评论

知乎的评论我看了一下,特别的好扒,结构也不算复杂。

从开发者工具中看到的接口和响应是这样的:

b877127ff0c44424122c15136037477b.png

看它这个接口,里面有个 limit=20&offset=0,猜也能猜出来,limit=20 的意思是一页显示 20 条,然后 offset=0 说明它是基于偏移量来做的分页。

然后返回的数据中有一个 paging 的属性。很重要,所以我把这个属性单独拿出来说:

9bcc966f15a6d1ea5290cde47776a130.png

前两个属性不多说了,分别用来标识当前是否第一页和最后一页。

接着有个 next 和 previous,表示上一页和下一页。注意看这两个属性唯一的差别就在 offset 上,一个是 0,一个是 20,也就是说一页显示 20 个。

totals 代表有 2417 条数据。一页 20 个,所以一共 121 页。

那么问题就来了,明明前面说了 6805 条评论,这里怎么只有 2417 条呢?

这个差距也太大了吧?

是的,我开始也有这个疑问,于是我随便找了一个"查看回复"点了一下:

cd706e2899feaec7128732ea3e2f2f5f.png

在开发者工具里面看到了这样的请求和响应:

ab7072bf1665db9e3ea09066d7301080.png

看到接口名称的时候,我一瞬间都懂了。

前面的 2417 条,是 root_comments。每个 root_comments 下面会挂很多 child_comments。

拿个实际的数据来说,就是这个意思:

93c1ef681b0de3037cca1eaf9170bfbf.png

所以我的策略是先把 root_comments 都拿下来。

我想要拿到的数据应该是谁评论了什么内容,这个内容有多少人点赞,对应的数据是这样的:

57fb0493a6d5f8be75e63e0024b1f7f9.png

所以这个程序写起来很简单,就这么几行代码:

4326c4ae752fa85dc40855f7c75b28af.png

从输出的结果来看,是没有毛病的:

9259bd68c87bec0e99c2e87cad655c9a.png

但是我发现一个神奇的事情是这样的:

b6b3b3c50b15bb40e7f86a8a17c208ad.png

当我获取到 offset=420 的时候,只给我返回了两条数据再然后就全是空了:

一直到 offset=2420 ,也就是最后一页,都是空的:

9dce3d96aa900fc6ef2cb09e8815af85.png

我不理解,但是我也找不到为什么,猜测应该是触发到了他们的某个限制策略了吧。

前面说了知乎是根据偏移量分页的,很有可能的一个逻辑就是当 offset 大于某个值的时候,系统认为这个值不合理,觉得你有可能是在刷数据,那么我就不给你数据了。

我想找找其他的帖子来论证我的观点,但是一时间竟然没有找到一个回答下面有超过 5000 个评论的帖子,所以这条路没有走通。但是也侧面证明了,这确实是一个神贴,在整个知乎都属于少部分的情况,出点奇奇怪怪的异常也是很正常的嘛。

1bac25e3ce9256b6c77dd1435ec69ca3.png

但是我发现了另外一个问题,其他评论不多的帖子,比如之前一篇关于成都的,只有 722 个评论。

当我点击评论的时候是这样的:

f6ed264073ea1947e0c62b08421fd69d.gif

弹窗加上下拉瀑布流的形式进行的展示,和手机上的展示类似。根本就看不到什么分页信息,这才是偏移量分页的正确打开方式。

因为可以带着上一次返回的数据的最大 id 去做 limit 查询,这也是大数据量的情况下,一个非常好的分页手段。

具体好处就不展开了,老八股文了。这只是一个应用场景而已。

回到我们的神贴中,前面我说了它下面是有分页的,但是通过接口访问到 offset=440 的时候,只展示了两条数据之后,就没有数据了。

也就是说接口最多只返回 442 条 root_comments 类型的数据。442,一页 20 条,一共 23 页。

所以我只需要在评论页上点击到 23 页,就能证明我的观点。

首先我直接点击最后一页的时候,是一片空白,和我们程序表现一致:

5249650bce56322b8dc5ccaa83e3dcd9.png

然后,我就从第一页开始,一页页地点,点到 23 页的时候,果然是符合我的猜测的:

5df89cc6e16ab83e7bfa4fd98dcc68df.png

虽然后面还有接近 100 页,但是全是空白页,这应该是知乎的一个 BUG 吧?

算了,不深究。

370a5a2d61e95105b411feed84804c9d.png

先能拿多少数据就拿多少数据,牢记使命,吃瓜的时候要跟着主线走,先把主线剧情打通关。千万不要因为走得太远,而忘记自己吃瓜的初衷。

现在的主线就是 root_comments。

而我已经把 root_comments 的数据拿到了,还要获取对应的 child_comments 怎么搞呢?

还是得找到对应的接口才行。

当点击评论下面的“查看回复”时,接口是这样的:

59839cab930b3348e81f3bbb96e4a3e9.png

其中有一串神秘的数字,10093095452,这是什么玩意?

我也不知道,但是我知道这是一种 restful 风格的请求,所以这个数字,是一个入参。

既然是获取 root_comments 下的 child_comments,这个入参一定和 root_comments 有关。

于是我拿着这串数字直接去搜索了获取 root_comments 时的第一页返回数据:

5c1f477236443a51fa25c3cf7b4760dd.png

看我标注了五角星的地方,原来这串神秘数字,就是每个 root_comments 的 id 呀。

而且还有一个意外收获,我发现返回的数据结构里面有个 child_comment_count 属性,这个数据就是代表这个 root_comments 下面有多少个评论。

所以,我在解析 root_comments 的时候,只需要判断一下对应的 child_comment_count 属性是否为 0。不为 0,则说明是有回复的,按照前面说的 restful 的方式获取数据即可。

也就是在程序中加入这样的逻辑:

50d450964c07c6326c5d2385398a4d14.png

而 handleChildComment 的关键其实就是拿到这个 url,后面的代码就和解析 root_comments 基本一致:

e97ba39b9c78dd331c46590fcb079efc.png

把代码跑起来,控制台日志打印得哗哗的:

b50898df1ee3b96d1d78970aefa5101c.png

检查了一下,看起来没有毛病。

接下来就更简单了,把数据搞到数据库里面去就完事了。

最后一共拉取到了 4267 条数据:

15cfad99efc0f704a796ee7c6511eac4.png

距离 6800 条评论还差一点,原因前面说了,当 offset 大于某个值的时候,接口就没有返回数据了。

这不重要,反正大部分数据都拿到了。

接下来就是安心吃瓜了。

7b3f85464f1520bb2189ab7e7b0590a6.png

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。

项目地址:https://github.com/YunaiV/ruoyi-vue-pro

开始吃瓜

因为我最关心的是答主说了些什么事情。

所以我首先过滤了一下 cna777 这个答主的所有回复:

83559250a6a8e5e91befad7a315b243d.png

这个吃瓜的姿势就很舒服了。

从答主的回答来看,好像截至 5 月 26 号,只有三个人报名,如果到 6.1 还没有 10 个人的话,可能今年就不会组织了。

果然是吃瓜的人很多,但是都真的只是吃瓜而已。

其中我还看到答主有这样的一个评论,有点意思,我当然要看看上下文是什么了。

e6ce811833bf8e74790d9f2300cb0a28.png

前面扒评论的时候我说了,我把 root_comments 的 id 存下来了,所以只需要过滤指定的 id,就能找到上下文:

f5f3aea8227562e9c94d4e8685e62550.png

原来是有人质疑答主是否有这么多钱。这个没啥意思,但是我惊讶地发现这个 root_comments 的 id 下面居然有 197 条评论。

是一个非常有争议性的评论,所以我看了一下评论的内容:

f9e4369a774bc4c1c05195e8d086d043.png

然后找到了对应的页面上的评论,把这 197 条评论全部看完了:

030156f161f7262f6048417f16260803.png

总结起来就是说这个叫做 kiki 的同学,说他是高中数学老师,他觉得这个挑战可以完成,但是不知道为什么,即使非常多的吃瓜群众叫他展现一波实力,他也一直顾左右而言它,并不正面应战。

主要是质疑答主是否能拿出这 100w,这个质疑也在其他的评论中出现过。

但是我就奇怪了,要是真的有实力就直接去报名啊。主要是现在报名的人都没有 10 个,大家就开始怀疑答主能否拿出 100w。然后借题发挥,输出自己的各种观点。

这个逻辑的先后顺序也不对的嘛,答主不是多次说了嘛,等报名人够 10 人了,他会去公证处进行公证的嘛。

7f30fb95eb63ab5e770ff69ab8d8c705.png

接着我想看看哪个评论的话题性是最大的,也就是 root_comments 的 child_comment_count 数是最大的。

我截取了排名前十的数据:

2064580c66278e2d3e324528c5cd1acb.png

第一位是一名叫做“无亡”的用户,他说:

我要挑战 天津考生 天津卷常年 40 分钟以内写完 很多次 150

然后下面有 610 个回复:

b75f864f562c1f2683b69765c15a9419.png

从评论上看这个哥们好像确实报名了,也是第二个报名的。

瞬间觉得这真的是个人才啊,于是想去他的主页看看这是何方神圣。

结果...

c6021829517a250c06ce7ebf286aaf05.png

这是牛逼吹得太大,兜不住了,自己就销号了?

5d9194b6e657c5fbc8287dcae3d6c30f.png

这里答主说的“退乎”的人,应该就是这个“无亡”同学吧:

1b12c22a62c7c189f1311a9e2fe836b2.png

所以,这个故事告诉我们什么?

口嗨一时爽,装逼要谨慎。

664151219b0dae6f700092ee3b737372.png

回复第二多的是这个:

d50d84d6749dc4340b63f1b082246b5b.png

很多吃瓜群众都愿意对这个比赛进行众筹,我粗略地算了一下,好像大家的钱加起来,距离 100w 也不算特别远了。

ce87d3e49d491c75a80df7582104a889.png

说真的,要是这个活动办起来,我也愿意花钱买个门票,看看应战的人到底是何方神圣。

翻了很多评论,反正就是有几个人装逼说问题不大,但是一叫报名就各种各样的借口。

然后我换了一个视角,按照评论点赞数最高进行排序:

95fdb1b4b35b65149d5d2d50d49c7665.png

前 10 里面,我最喜欢的是这个评论:

f6b7dae027dcb47cb280a865b88af6fc.png

真的是这样的,只要在任何的社交平台里面讨论到跑步相关的话题,总是有人冒出几个特别离谱的成绩,吹得是有板有眼的。

但是真的要说在线下来对线,真刀真枪地干一场,马上各种各样的理由就来了,反正就是不承认自己在吹牛逼。

包括这个评论下面也是,大家又开始关于跑步成绩吵起来了。

bcf130340052fe19921261e928863197.png

用我们程序员的话说就是:no bb,show me code.

还在评论里面发现了一个角度刁钻的哥们:

2c48231be66f8b4ea657409c19729d3d.png

他居然想组局对赌,真的是处处是人才啊。

22e9b62d20971c592c66bf599bad3b01.png

我还发现了特别多的评论是"cy",我也不懂是啥意思。就搜了一下,原来是“插眼”的意思。

要说插眼,我就懂了。我盲僧插眼贼溜。

有 10 分之一的评论都是 cy:

dc0ad35ae2756cc6870b6b74affd9932.png

评论区还有特别多的瓜可以吃,但是我就不一一列举了。

我接着就去了 B 站,看到了两个相关的视频。

第一个是这个:

https://www.bilibili.com/video/BV1Va411t7CV/?spm_id_from=333.788.recommend_more_video.2

118effee4bdfb31254bcdda81779315f.png

这个 up 主的自我介绍是这样的:

我高考数学 148 分,考入清华基课班竞赛业余选手,教了 12 年数学。但是做题巅峰事情的我应该也做不到,但是我联系报名了大众组,重在参与。

这哥们,一看就是实在人,实力在线,但是不轻易装逼,报个大众组,赚个噱头,稳得一笔。

这个视频下面有个评论是把我看笑了:

715fc1d50c391809066fe7c268457725.png

我也来装一个,本人高考728分,现在在麻省理工数学系读博,本科期间总共发表了接近500篇sci,研一的时候读到过哥德巴赫猜想,花了我两天才解决掉,也因此获得过菲尔兹奖,我想说,高考我50分钟做完数学满分,但这也算我的极限了,因为我是看到题目就想到答案,再加上写的时间,如果写的再快点最少也要40几分钟吧,40分钟以内根本不可能。

装完了,爽!

很好地讽刺了这个话题下面的一些“装逼犯”。

而我想说的是:兄弟,别光喝酒,吃几颗花生米啊,边吃边说。

d9e0db5a809bcd5dc4ab1226f2f411b6.png

第二个视频是这个:

https://www.bilibili.com/video/BV1sP4y1M7K4/?spm_id_from=333.788.recommend_more_video.-1

dd2c8dd2b4a69794df529ce884814d95.png

这个大佬给出的结论是有可能。因为考试之前是可以提前十分钟拿到试卷,但是不能动笔的。

我依稀记得好像确实是先拿到了试卷,但是不能动笔。至于是提前多久那就不记得了。

大佬说,有这十分钟,完全可以通过口算,把选择题和填空题做完。

是的,没听错,可以通过口算,秒杀高考数学绝大部分的选择题和填空题:

69c97babd10badffc551ad5a69c8fcc4.png

听得我一愣一愣的:这还是人吗?

这瓜越往后面吃,我越觉得人和人之间的参差是巨大的。在这些学神面前,我都不好意思说自己是学渣。

在我吃完瓜之后,我发现答主更新了:

f3db3748e99bf88936f110269d0df77e.png

太遗憾了,居然没有把局组起来。到最后,还是只有三个人报名了。

但是答主表示明年还能再来,只要凑够十人我们随时可以开始。

那么,这个叫做“李笑”的、不在国内无法参赛的、看起来很厉害的用户,不知道到时候会不会迎战:

15ed7a01044ae3b79b9c9bd3d34c10a2.png

我相信你是个大佬,只不过这一副拿学历说事儿的样子,实在不敢恭维。

另外,我是真的想这个活动举办起来,有主办方,有赞助商的那种,然后全平台直播。

对了一定要有解说,不然我是真的看不懂。

虽然这些题我是不会了,但是吃瓜,我一定站在最前线。

32af9bbd2ad903b8ad2bca5eab74d8e4.png

欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

e20c4c4fbc846fb239d0aa005f2145ba.png

已在知识星球更新源码解析如下:

b1d9bcd827b82a6eea65b7d48b29bfaf.png

3cb40266f75ea78284e932ac8308daec.png

e97ad6e8f3997715462db2f35f1d723d.png

7dd4407a994866f6af2d76915ca4fcfb.png

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值