Reading view

There are new articles available, click to refresh the page.

马修|在勇哥的直播间里,你能听到中国社会最真实的底噪

CDT编者按:该文来自知乎网友“马修”对提问“如何评价勇哥说餐饮?”的回复。

勇哥餐饮创业说,真名梁朝勇,四川抖音创作者,专注餐饮创业领域内容创作。他自称在成都建设路有十几家小吃店,日常工作是在抖音直播间与餐饮创业者连麦,帮他们分析项目利弊。

他的直播有一套标志性流程:先让店主360°转一圈"拍门口环境,再快速计算客单价、房租、人工和盈亏。如果判断没有希望,就直接劝对方关店止损。他说话风格极其直接,被称为"餐饮老板们最严厉的导师",也有人叫他"创业劝退师"。他的招牌动作包括眉头紧拧、抄起锣鼓敲打、抱起氧气瓶猛吸等,遇到特别离谱的案例会脱口而出"我滴妈"。

他总结出了一些广为传播的概念,比如"中年破产四件套"——奶茶、汉堡、咖啡和烘焙。他的直播内容大量揭露了"快招公司"(快速招商公司)的诈骗套路——这些公司以短期包装虚构品牌、虚假承诺扶持政策等手段吸引加盟商,收完加盟费后就不管不问,导致无数普通人血本无归。

2024年9月他获评"年度影响力IP",2025年9月再次获此荣誉。2025年12月因连麦点评"哪吒仙饮"品牌爆火出圈,在知乎相关问题的浏览量超过9300万。他的直播间之所以引发如此大的社会关注,是因为它无意中撕开了中国互联网的信息茧房——让主流互联网用户看到了那些被算法过滤掉的底层创业失败者的真实处境。这些人的苦难缺乏"观赏性",平时完全不被算法推送,勇哥的直播间成了让这两个平行世界短暂重叠的窗口。


file

CDT 档案卡
标题:在勇哥的直播间里,你能听到中国社会最真实的底噪(编者所拟)
作者:马修
发表日期:2026.3.23
来源:知乎
主题归类:算法
CDS收藏:公民馆
版权说明:该作品版权归原作者所有。中国数字时代仅对原作进行存档,以对抗中国的网络审查。详细版权说明

中国有超过10亿网民,但其中至少有六七亿人的声音,在主流互联网语境里接近于不存在。当我们谈论中国的互联网时,我们其实只谈论了其中很小的一部分,那个被算法精选、被资本青睐、被广告主追捧的部分。

这是算法逻辑的必然结果。平台要最大化用户时长和广告变现,就必须把人关在最能黏住他们的内容茧房里。而黏住下沉用户最有效的方式,往往是情绪化、低门槛、强代入、即时满足的内容;黏住所谓主流用户则是焦虑驱动、精致生活、知识焦虑、身份认同类内容。

当我妈还在刷奶奶级养生操的同一时间,我在知乎写下第862篇文章。而勇哥的直播间,是第三个世界,是一个由失业、村镇、房贷、加盟陷阱和一夜血亏构成的,很多人正在经历,却从不被我们的互联网承认的世界。

勇哥坐在镜头前,一遍遍问:"你毛利率多少?日营业额多少?房租多少?"

那些回答的人,口音千奇百怪,逻辑乱七八糟,却还是被听见了,哪怕只是作为他人口中的"神人"和案例。

勇哥的脸经常怼在镜头前,他没有什么表情,像个疲惫的急诊室大夫。每天晚上,无数个成年男女排着队连麦。他们把积攒了半辈子的钱扔进一个奇怪的地方。勇哥看一眼韭菜的成色,报出一个数字。那是他们还要继续亏损的数目。

勇哥问他们房租。一万二。勇哥又问人工水电。没仔细算过,每天大概五百块。弹幕开始热闹起来。神人。下一个。勇哥没有表情,吸了一口氧气罐,告诉他,你每天睁开眼,什么都不干,就已经欠了四百块。你卖的那三百块钱,连给服务员的工资都不够。

男人沉默了很久。听筒里只剩下他沉重的呼吸声。关了吧。勇哥说。他们突然拔高了音量,开始语无伦次地讲述他准备搞打折促销活动,他在乞求一个希望。勇哥直接打断了他。算不清楚账是吧?关了,今天就关,听懂了没?

看勇哥的直播,其实吧,就是看一场又一场公开的死刑立即执行。你看着那些小学三年级就能算明白的账,偏偏能困住成千上万个成年人。

在勇哥的直播间里,你能听到中国社会最真实的底噪。不是那些动辄几个亿的融资新闻,不是那些在纳斯达克敲钟的欢呼,是硬币掉在水泥地和劣质瓷砖上的声音。

我经常在深夜看到这些连麦。听多了,我会产生一种严重的撕裂感。白天,我在朋友圈上看到是新开的轻奢餐厅,是朋友圈里的精致下午茶,是各个大厂发布的大模型正在重构人类未来。互联网上飘满了各种高级词汇,这些词汇构建了一个看似无懈可击的现代文明幻象。

那些在烂泥里挣扎的小创业者,他们不懂这些词。他们甚至不知道怎么在网上表达自己的痛苦。他们被招商骗了,被高昂的房租压垮了,只能在下午冷清的店门口360°转一圈。他们无法把自己的经历转化为一条爆款视频。他们不具备在这个数字时代呼救的能力。

文字和话语权是一种极度稀缺的特权。那些网红,哪怕只是得个感冒停割三天,都能收获无数的点赞和同情。而那些真正倾家荡产的人,他们面对镜头,只能结结巴巴报出一串数字。五十万。没了。

他们的苦难缺乏观赏性。主流算法不喜欢这种带着沉重的苦难,算法喜欢轻盈的焦虑。比如大龄单身的烦恼,比如中产阶级的教育军备竞赛。这些话题可以引发无休止的讨论,可以插入各种培训班和消费品的广告。于是,算法把他们从主流的视线中彻底抹除了。

勇哥的直播间是一个收容所。这里没有奇迹。勇哥从来不给任何人打气。他像一台冰冷的机器,把那些虚假的希望一点点碾碎。

我还记得有个四十五万血本无归的例子,连同隔壁华莱士反复吟唱的"只要七元、只要七元",构成了一个中年男人智力与自尊的终点。当他发现自己沦为一个"第四代汉堡拳打麦肯脚踢塔斯汀"的笑话时,那种心理防御机制退化到一种幼态的执拗。他反反复复问勇哥,还有没有办法?总部承诺的督导还能不能来救场?

这才是最深层的绝望。沉没成本不仅吞噬了他的存折,还把他变成了一个认知上的残废。他没办法面对那个被自己亲手葬送的未来,所以他只能死死守着那个店面,在华莱士的广告歌里像个幽灵一样徘徊。承认失败对他来说太重了,重到了他宁愿相信那个杂牌公司还能给他派个督导来翻盘,也不愿相信自己这四十五万只是在两个星期内给骗子买了套房子。

我就隔着屏幕看着他们。我坐在恒温的房间里。杯子里的咖啡还在冒着热气。我偶尔在键盘上敲下几行自以为深刻的句子。我有一种作呕的虚伪感。我用一种近乎解剖学的方法去分析他们的悲剧,试图从中提取出某种社会学的规律。我把他们的痛苦变成我的论据。这和我鄙视的那些割韭菜的招商公司其实也没什么区别。我们都在消费他们。招商公司拿走他们的钱。我拿走他们的故事。

城市的物理空间早就完成了折叠。你走在光鲜亮丽的CBD,你看到的是巨幅的落地玻璃里的精英。你走过两个街区,拐进一条背街小巷,你就能看到那些正在倒闭的哪吒仙饮和黄焖鸡米饭。墙上的油垢结了厚厚一层。老板光着膀子在切肉。肉案上飞着苍蝇。这两个空间在地理上只相隔几百米,但在社会阶层上相隔了几光年。

互联网原本被认为是抹平这种沟壑的工具。早期我们真这么以为。我们觉得信息扁平了,所有人都能在一个广场上说话。结果呢?互联网不仅没有抹平沟壑,反而建起了更高、更坚固的墙。这堵墙是透明的,由几百万行代码写成。它根据你的浏览记录、你的消费能力、你的地理位置,把你死死地钉在一个特定的人群标签里。

你以为你在看世界。其实你只是在看一面照出你自身偏好的镜子。

那些开店失败欠了一屁股债的人,他们退租了商铺,买了一辆二手电动车,穿上黄色的或者蓝色的制服。他们成了这座城市运转的血液。他们把热腾腾的饭菜送到我这种坐在空调房里敲键盘的人手里。我接过外卖,对他们说一声谢谢。这通常是我们之间唯一的交流。我不知道他昨天刚关掉了一家倾注了全部心血的汉堡店。他也不会知道我正在写一篇关于他的文章。门关上。我们各自回到自己的系统里。

一切都被切割得干干净净。

勇哥的直播间之所以火,是因为他意外地在这些频道之间扯开了一道口子。他把那种带着血腥味的真实,生硬地拽到了那些习惯了精致滤镜的人面前。

但这道口子很快就会被缝合。看客们嘘嘘一阵,感慨一下"真是神人""穷人之所以穷是有原因的",然后继续去刷那些能引起身份焦虑的内容。没有人会真正为他人的苦难停下脚步。算法不允许停顿。信息流必须不断刷新。下一条视频永远在等着你。

我经常去翻看那些连麦者的主页。大部分已经空掉了,或者只有几条很久以前发的风景照。他们像水滴融进大海,悄无声息地消失在庞大的失业大军和负债人群中。他们去送外卖,去工地搬砖。他们用漫长的体力劳动去填补那个因为轻信了一个电话而砸出的巨大财务窟窿。他们学会了闭嘴。真正的生活教训从来不需要长篇大论来总结。饥饿和疲惫是最能让人闭嘴的东西。

中国的现实太庞大,太复杂。你在五星级酒店的行政酒廊里听着大模型的迭代速度,出门拐个弯就能撞见一个为了两百块钱运费跟人吵得满脸通红的中年人。这两个人生活在同一个坐标点,但他们之间没有任何一种语言可以沟通。

这种认知上的巨大错位,比任何经济数据都更能说明我们所处的时代。

你无法在一个平台上看到中国。你只能看到被切碎的、被过滤的、被包装过的一小块切片。勇哥让我们看到的,是一块真实的社会切片。那些加盟商、那些被忽悠的宝妈、那些用老人的抚恤金开店的孩子,他们在这个切片里挣扎。数字不带任何感情地宣判了他们的死刑。

他们没有办法。他们什么也做不了。

今年过年,我回到老家,无意间拿到我奶奶的手机。手机上正在播放着抖音的短视频。我奶奶已经100岁整了,我惊奇地发现,她在今日头条和抖音上刷到的东西,我是从来看不到,也刷不到的。

我奶奶刷到的那个世界,和我刷到的,是被算法切割得最彻底的两个中国。

而勇哥,不过是偶尔让它们短暂重叠了一下。

大津算法(OTSU)

在图像处理领域,我们会遇到如下需求:把图像中的目标物体和背景分开。比如背景用白色表示,目标物体用黑色表示。此时我们知道目标物体的灰度值相互接近,背景灰度值相互接近,那么用大津算法能很好把目标从背景当中区分开来。

算法思想

目标

比如对于下面这张灰度图片

origin

目标物体是中间黑色的几何物体,我们想让这些物体和背景区分更明显一些,比如让物体为纯黑,背景全白。那么我们就需要找到一个合适的阈值,使图片上灰度值大于这个阈值的像素点为255(白色),灰度值小于阈值的像素点为0(黑色)。也就是变成下面这幅图:

output

那么大津算法需要处理的就是找到最佳的阈值,让目标和物体尽可能分离开。

灰度直方图

为了找到合适的阈值,我们首先观察原图的灰度直方图📊:

histogram

这是用 Matlab 对原图形成的灰度直方图,灰度直方图的含义是统计图像中不同灰度值的分布情况。由图我们可以看出两个尖峰,在灰度值为0~20的地方存在一个尖峰,代表原图中有大量像素点灰度值为0~20,经观察我们可以认为这部分对应于目标物体。同理我们可以看出背景的灰度值大多集中于100~140之间,为了让目标和背景区分更加明显,我们想让目标物体的灰度值全为0,背景的灰度值全为255,这种处理手法也称为二值化法。

那么阈值取多少合适呢?从图上看似乎取50~100中的任意一点都可以,但是实际情况并不想参考图那样明显,有些图片背景和目标物体较为接近,我们需要一个算法来找到最优阈值才行。

聚类

首先我们思考什么样的东西才能成为一类,而我们又是怎么分类的。对于参考图来说,我们可以认为灰度值接近的为一类,灰度值不接近的不是同一类。那我们又是如何衡量灰度值接近的程度呢?这里面就需要用到方差的概念。
方差相比大家都了解,同一类的物体方差小,不同类的物体方差大。所以对于此图我们希望分类的结果是对于灰度值相近的同一类物体,它的方差最小,称为类内方差最小。灰度值不接近的不同类物体,它的方差大,称为类间方差最大。

步骤

所以步骤总结如下:
首先我们要形成参考图的灰度直方图,这样方便我们找到最佳阈值。
接下来我们通过穷举每一个灰度值,计算以此为阈值的类内和类间方差。
找到能形成类内方差最小的或类间方差最大的阈值,这个就是我们要找的最佳阈值。

算法

下面以两类分割讲解下具体的算法,实际上大津算法可以分割多类出来。

因为 Medium 不支持显示 MathJax 语法的公式,所以对这部分感兴趣的直接移步到《大津算法(OTSU)》查看吧。

代码实现

C语言实现

/* OTSU 算法
* *src 存储灰度图像,width 图像宽,height 图像长
* 返回最佳阈值
*/
int otsu(const int *src, int width, int height)
{
int histogram[256]; //存储灰度直方图,这里为256色灰度
int t,thred;
float wf,wb,ub,uf,curVal,maxVal;
int sumb=0,sumf=0,sumW=0,sumPixel=width*height;
wb=wf=maxVal=0.0f;

//求灰度直方图
memset(histogram,0,sizeof(histogram));
for(i=0;i<width*height;i++)
{
histogram[src[i]]++;
}

for (i=0;i<256;i++)
sumW+=i*histogram[i];

//枚举每个灰度
for(t=0;t<256;t++)
{
//求两类类概率密度
wb+=histogram[t];
wf=sumPixel-wb;
if (wb==0||wf==0)
continue;

//求类均值
sumb+=i*histogram[t];
sumf=sumW-sumb;
ub=sumb/wb;
uf=sumf/wf;

//求当前类间方差
curVal=wb*wf*(ub-uf)*(ub-uf);
if(curVal>maxVal)
{
thred=t;
maxVal=curVal;
}
}
return thred;
}

常见 Hash、对称加密算法时间复杂度对比

最近突然对各种加密算法有点感兴趣,想测试一下各个加密算法在加密同样的一段数据时,消耗的时间各是多少。

于是用 Node.js 写了一个小程序完成了计算,并且将结果生成为一张排行榜,很是有趣,发布到这里,说不定以后会用得上的。

相关说明

测试环境

CPU:i7 4700-MQ @ 2.40GHz

平台:amd64

Node.js v7.4.0

测试数据:8MB 随机二进制文件

对称加密秘钥:8B 随机字符串

源代码

这段小程序的源代码请访问:http://pastebin.com/rEeYHgSy

算法调用简介

我的代码虽然运行于 Node.js,但调用的是其内置模块 crypto,也就是用 C/C++ 编写的加密算法模块,并不是原生 Javascript。并且实际运行时 CPU 占用率为 15%,单核 CPU 满负荷,所以可以反应这些算法的实际运行效率。

输出格式

Hash 算法输出运行时间、结果转换为 hex 后的字符串长度。按算法执行时间升序排列。

对称加密算法输出加密时间、解密时间,以及加密和解密的平均时间。按平均时间升序排列。

测试的算法及特别说明

测试了 Node v7.4.0 中支持的所有 Hash 算法和对称加密算法。比较遗憾没有 chacha20.

其中部分对称加密算法在这个版本的 Node 中是不支持的,已跳过。GCM/CCM 对称加密算法在该版本下只支持加密不支持解密,在结果中标注为了 unknown,并且平均时间直接等于加密时间,但实际上解密时间基本都大于加密时间。

(亏我用的还是 stable 版的 Node,提供了方法一调用却抛出异常,都是坑啊…!)

Hash 摘要算法排行榜

time↓ retLength name
=====================================
12.38 40 ecdsa-with-SHA1
12.39 40 dsaWithSHA
12.39 40 dss1
12.41 40 ssl3-sha1
12.41 40 DSA-SHA1-old
12.42 40 dsaWithSHA1
12.42 40 DSA-SHA1
12.44 40 sha1
12.45 40 DSA-SHA
12.49 40 dsaEncryption
12.51 40 DSA
12.52 40 sha1WithRSAEncryption
12.54 40 RSA-SHA1-2
12.54 40 RSA-SHA1
14.72 32 RSA-MD4
14.72 32 md4
14.74 32 md4WithRSAEncryption
17.31 32 ssl2-md5
17.33 32 ssl3-md5
17.33 32 md5
17.33 32 RSA-MD5
17.34 32 md5WithRSAEncryption
18.52 128 sha512WithRSAEncryption
18.55 96 sha384
18.55 128 sha512
18.55 96 sha384WithRSAEncryption
18.79 128 RSA-SHA512
19.42 96 RSA-SHA384
21.78 40 sha
21.82 40 shaWithRSAEncryption
22.22 40 RSA-SHA
27.05 56 sha224WithRSAEncryption
27.06 64 sha256WithRSAEncryption
27.27 56 RSA-SHA224
27.37 56 sha224
27.57 64 RSA-SHA256
27.60 64 sha256
57.38 40 rmd160
57.39 40 ripemd160WithRSA
57.39 40 ripemd
57.39 40 ripemd160
57.53 40 RSA-RIPEMD160
78.92 128 whirlpool
657.74 32 mdc2WithRSA
658.35 32 mdc2
659.48 32 RSA-MDC2

对称加密算法排行榜

cipherTime decipherTime avgTime↓ name
=====================================
26.33 unknown 26.33 id-aes128-GCM
26.49 unknown 26.49 aes-128-gcm
26.52 unknown 26.52 id-aes192-GCM
27.35 unknown 27.35 id-aes256-GCM
27.48 unknown 27.48 aes-192-gcm
27.94 unknown 27.94 aes-256-gcm
25.12 30.89 28.01 aes-128-xts
25.29 30.87 28.08 aes-192-ctr
26.54 31.42 28.98 aes-256-ctr
27.22 31.28 29.25 aes-128-ctr
26.12 32.41 29.26 aes-256-xts
38.23 unknown 38.23 aes-128-ccm
38.29 unknown 38.29 id-aes128-CCM
37.07 43.09 40.08 rc4
25.70 55.17 40.43 aes-192-ecb
26.24 54.79 40.52 aes-128-ecb
25.91 55.21 40.56 aes-256-ecb
41.40 unknown 41.40 id-aes192-CCM
40.07 45.45 42.76 aes-128-ofb
44.35 unknown 44.35 aes-256-ccm
44.58 unknown 44.58 id-aes256-CCM
39.14 54.62 46.88 aes-128-cbc
39.50 55.86 47.68 aes128
45.21 50.54 47.87 aes-128-cfb
46.30 51.85 49.07 aes-256-ofb
41.94 57.43 49.69 aes-192-cbc
44.25 55.84 50.05 aes256
45.72 55.95 50.83 aes-256-cbc
49.21 53.30 51.26 aes-192-cfb
38.77 66.82 52.79 aes-128-cbc-hmac-sha1
51.51 56.69 54.10 aes-256-cfb
44.75 67.53 56.14 aes-256-cbc-hmac-sha1
54.38 59.59 56.98 rc4-hmac-md5
68.07 55.45 61.76 aes192
73.48 50.08 61.78 aes-192-ofb
53.46 81.27 67.36 aes-128-cbc-hmac-sha256
67.95 unknown 67.95 aes-192-ccm
53.43 85.33 69.38 aes-256-cbc-hmac-sha256
92.37 96.32 94.35 camellia-128-cfb
86.76 118.05 102.41 camellia-128-cbc
89.88 119.94 104.91 camellia-128-ecb
115.26 98.84 107.05 camellia-128-ofb
111.06 118.04 114.55 camellia-256-ofb
113.69 117.35 115.52 camellia-256-cfb
113.71 117.39 115.55 camellia-192-cfb
118.05 117.26 117.66 camellia128
107.79 137.33 122.56 camellia256
107.93 137.41 122.67 camellia-192-cbc
107.63 137.71 122.67 camellia192
107.78 137.58 122.68 camellia-256-cbc
109.79 140.16 124.98 camellia-256-ecb
110.63 143.20 126.91 camellia-192-ecb
140.93 116.48 128.70 camellia-192-ofb
131.18 138.02 134.60 cast5-ofb
123.23 152.91 138.07 cast
123.20 153.14 138.17 cast-cbc
124.30 153.77 139.03 cast5-cbc
123.54 154.71 139.12 bf-ecb
128.97 153.40 141.18 blowfish
139.52 143.40 141.46 bf-cfb
129.20 154.59 141.90 bf
128.50 155.55 142.02 bf-cbc
140.97 151.75 146.36 cast5-cfb
160.98 138.92 149.95 bf-ofb
153.84 153.59 153.71 cast5-ecb
169.80 175.30 172.55 seed-ofb
175.17 171.99 173.58 idea-cbc
179.36 197.25 188.30 seed
180.20 199.18 189.69 seed-cbc
204.93 179.90 192.41 seed-cfb
192.36 197.95 195.16 des-ofb
190.88 212.10 201.49 des-cbc
190.91 212.15 201.53 des
200.83 203.79 202.31 des-cfb
190.93 216.70 203.81 desx-cbc
212.52 215.72 214.12 des-ecb
193.71 247.75 220.73 desx
285.34 208.45 246.90 rc2-ecb
287.99 207.70 247.84 rc2-64-cbc
383.14 407.20 395.17 aes-128-cfb8
428.57 433.04 430.80 aes-192-cfb8
472.68 478.71 475.69 des-ede3-ofb
473.08 478.73 475.90 des-ede-ofb
466.29 495.94 481.12 des-ede
466.96 496.02 481.49 des-ede3
469.45 494.77 482.11 des-ede-cbc
470.11 495.39 482.75 des3
480.87 485.29 483.08 des-ede-cfb
471.00 496.02 483.51 des-ede3-cbc
478.58 508.53 493.55 aes-256-cfb8
510.35 485.85 498.10 des-ede3-cfb
1144.31 1161.45 1152.88 camellia-128-cfb8
1433.53 1452.09 1442.81 des-cfb8
1486.53 1500.01 1493.27 camellia-192-cfb8
1490.02 1501.36 1495.69 camellia-256-cfb8
3486.28 3491.02 3488.65 aes-128-cfb1
3742.25 3749.80 3746.02 des-ede3-cfb8
3875.10 3877.43 3876.26 aes-192-cfb1
3990.26 3974.18 3982.22 des-ede3-cfb1
4271.61 4273.34 4272.48 aes-256-cfb1
9526.06 9744.03 9635.05 camellia-128-cfb1
12183.0 12151.8 12167.4 camellia-256-cfb1
12180.5 12200.0 12190.2 camellia-192-cfb1
12273.5 12334.8 12304.2 des-cfb1
❌