为什么费曼学习法是终极的学习方法?

今年我开始写作公众号,一方面是认识到了个人IP的长期价值,如果有自己的个人IP,那么不上班也可以获得一份不错的被动收入,另外一方面是认识到了费曼学习法的价值,通过输出内容来倒逼自己深度学习。

 

首先,不管是投资还是创业,这两者都是高风险的活动。

看看欧美那些股神,风光的时候很风光,惨的时候裤子都能输掉。

 

例如我之前写过文章,提到西班牙股神弗朗西斯科·加西亚·帕拉梅斯(Francisco García Paramés),管理的资金资产规模最高达到65亿欧元,从1989年到2014年25年的投资业绩是30倍。但是这个股神这几年却赔惨了,旗下基金净值都是0.5上下,也就是净亏损接近一半。

 

美国股神之一,投资回报曾经超越巴菲特的比尔米勒Bill Miller,在2008年金融危机抄底金融股,结果抄的公司都倒闭了,业绩暴跌,股神跌下神坛。

 

创业的例子就更不用多说了,那么多牛逼的大公司,都是“风流总被雨打风吹去。”。

中小公司更是朝不保夕,没有几个能活很久的。

 

相比较而言,自媒体不需要投入太多资本,投入最多的只是时间,但是生命周期却可以维持很长,总体来看还是不错的商业模式。

 

世界上最聪明的一群人,早就已经实现全球创猎的商业模式,哪里有机会,哪里适合生活,就去哪里生活,成为数字时代的游牧民族(Digital Nomad)。

 

很多人去泰国享受生活,但是依靠网站,博客blog,youtube频道等,服务全世界的客户,照样一年收入几十万,上百万美金。

 

肉身可以脱离任何国家的束缚,这是最终极的自由。

 

 

其次,不管是投资和创业,最关键的是掌握正确思维方式。

如果思维方式有太多的漏洞,那么迟早“凭运气赚的钱,凭实力赔光”。

看看国民老公这几年的投资。

 

自媒体是帮助我们学习任何领域的知识和思维模式的最好方法。

为什么?

 

我们来看看爱因斯坦之后最睿智的理论物理学家,理查德·费曼(1918-1988年)提出的学习方法。

费曼于1965年获得诺贝尔物理学奖,是第一位提出纳米概念的人。

费曼是曼哈顿计划天才小组成员之一。二战扔到日本的原子弹,就是他们研发出来的。

 

为什么费曼学习法是终极的学习方法?

 

「费曼技巧」包括四个核心步骤。

1、选择一个概念

2、讲授这个概念

面对这个领域的菜鸟,试图解释清楚这个概念。

3、查漏补缺

当无法解释的时候,回头找答案,最终把这个概念解释出来。

4、简化语言和尝试类比

尝试用简洁词语来解释,或者用别的东西来类比它。

 

爱因斯坦曾经说过:如果你不能把一件事情简单的说清楚,那就说明你还没有完全弄明白。

这也正是费曼学习法的精髓所在。

 

通过输出内容来学习,才能更好的学会任何东西。

学着学着,发现水平变高了,而写的文章竟然也收获了很多粉丝,一箭双雕。

为什么费曼学习法是终极的学习方法?

就拿我自己举例,在写公众号文章的过程当中,逼得自己去查资料,去深入学习。否则,写出来的文章没有原创性,没有深度。

 

譬如,这几天我在研究快递行业的资料,就很有收获。

我一直试图搞明白顺丰快递和中通快递未来究竟谁更有前途。

虽然现在看起来顺丰更风光,但是未来一定是如此吗?

我自信已经发现了一个关键点,这个点似乎很多人没有注意到。

当然,这个关键点也不是我自己单独发现的,是学习中通董事长的演讲内容时才想明白的。

行业龙头的创始人或者操盘者基本都是行业里最精英的人物,他们有时候一句话透露的信息,我们要是不具备足够的行业知识,是根本理解不透的。

 

如果我不写公众号,也许我就不会这么深入研究快递行业了。

因为我之前研究过快递行业,感觉很复杂,变数很多,看不清楚。

那就把它排除在能力圈之外,不去投资算了。

但这其实是偷懒的做法,不利于自己的成长。

 

再回头来谈谈我的公众号定位。

为什么我要同时写作投资和创业的内容?

很多人可能会觉得我的定位不够专注。

炒股的人没兴趣看创业的案例,他们只想看到一个股票涨还是跌的结论。

创业的人又觉得炒股的人很无聊,都是外行在瞎想,商业实操才是有价值的。

为什么费曼学习法是终极的学习方法?

首先,我已经说过我写作有帮助自己学习的目的,而投资和实业都是我关注的内容。

其次,我认为很多炒股的人太急功近利,只想知道股票涨还是跌,不想学习背后的商业本质,这是走不远的。

 

就像我已经写了两篇“点石成金”案例,都是我认为非常有价值的商业案例,只可惜看的人寥寥无几。

 

第一个点石成金案例,主要介绍二八法则。

二八法则谁都知道,可是又有几个人懂得在日常生活和商业运作里去实践?

就像案例里那个美国潮牌电商的创始人,辛辛苦苦把公司做成美国最大潮牌电商,到头来还是欠一屁股债破产倒闭。

如果他真正懂得应用二八法则,那么他就不会一味的烧钱拉新客,他会懂得维护老顾客的价值,自然也就不会倒闭了。

 

看了这个案例,创业的人可以懂得二八法则的真正商业价值。

那么投资的人难道看这个案例就浪费时间吗?

 

下次如果碰到两个某个消费品行业的上市公司,规模都很小,财务指标都不够好,达不到价值投资的标准。

但是如果你深入调研,发现其中一个公司的部分客户忠诚度特别高,而公司也懂得客户关系管理CRM的套路,那么你就可以推断,很可能这个公司会成长壮大。

如果另外一个公司只是盲目烧钱拉新顾客,那么你就可以推断,也许公司以后会碰到麻烦了。

 

财务指标总是滞后的,而商业本质才是一个行业或者公司变化的根源。

如果通过学习各种商业案例,能够比别人提前一步看清公司管理水平,那么投资业绩会不会比只懂得看财务报表的呆会计好呢?

 

再比如,第二个“点石成金”案例,介绍的是美国啤酒历史上最有价值的商业案例之一。

如果是创业者,看了这篇文章,就更应懂得如何去挖掘消费者需求

因为没有抓住真正的消费需求痛点,即使是发明了一个很有前途的产品却没有能力把它发扬光大,多么可惜?

对于投资者,下次看到一个消费品牌在推新品类的时候,会更懂得判断这个品类是否有商业前景。

可能这个新品类骂声一片,很多人都不看好。

那你自己去调研,发现某些城市这个产品反而挺受欢迎。

也许你自己和消费者聊天,获取到真正的痛点需求,从而比任何行业分析师,甚至比公司管理层更加清楚这个产品的商业前景。

 

最牛逼的投资就是要比公司管理层还要看得远,看得深。

就像腾讯的大股东MIH,如果没有实业经验,它能有那个眼光入股腾讯并且长期持股到现在吗?

正是因为MIH自己在非洲已经把互联网业务都实践过一遍,只是因为非洲国情没有成功。

通过实业MIH深深懂得了互联网的商业价值,甚至可能比马化腾更懂。

 

我相信,房地产在中国已经基本到头了。

中国经济随着老龄化,加上内循环,未来两极分化会更加迅速。

很多行业会步入完全的存量博弈,只有龙头公司才可能踏着别人的尸骸前进。

股票市场已经是中国最有投资价值的资产。

当然,中国股票市场因为没有注册制,高估的公司太多了,可以说地雷数不胜数。

想靠投资股票赚钱,难度也是越来越大了。

投资A股赔钱的概率会远远超过赚钱的概率,除非你已经具备了深刻的商业洞察能力。

如果想改变命运,学习再学习,是我们唯一的出路。

为什么费曼学习法是终极的学习方法?

引用我最敬佩的人之一,美国著名影星、加利福尼亚州前州长阿诺德·施瓦辛格的一段话,与大家共勉:

“我一直把世界看成自己的课堂,我可以从中汲取经验、聆听故事,
为我的前行之路添加燃料。我希望你也能够这样做。
你所做的最糟糕的事情就是认为自己知道的已经足够多了。
永远不要停止学习——永远!“

转自:https://zhuanlan.zhihu.com/p/262466870

别等了!我算出20年后的中国人口数据,吓着了

◎作者 | 财主家没有余粮啦

◎来源 | 财主家的余粮(ID:CaizhuFinance) 已获授权

先请大家猜一个问题:
按照目前中国的生育水平,到2050年,中国将会有多少人口?
14亿?13亿?12亿?
我之前估算过中国的人口峰值,将会在2022年出现。通过线性外推出生人口数据和死亡人口数据,我乐观认为,到2050年的时候,中国将有12.6亿人口。
但后来我发现自己对于2028年之后的人口数据估算,真的是太太太乐观了。
一个国家的人口年龄结构变化,是一种缓慢而又巨大的力量,而且人口问题与其他社会问题有着根本的不同:我们可能变富,也可能变穷,但我们注定都会变老,而且老到一定年龄之后,最终都会死去!
关于未来的新生儿人口数量估算,因为2000年-2017年中国新出生人口数量基本保持稳定,这些人口在25岁之后,基本都形成了育龄人口,由此,从2025年到2042年育龄妇女的数量也基本稳定,所以简单采用线性外推,并没有太大问题。
但2018年之后,因为新生儿数量相比2017年之前的数据遽降,这将造成2042年之后的育龄人口数量也大幅度下降。也就是说,2042年之前的新生儿数量估算应该还算靠谱,但2042年之后的新生儿数据一定是偏高的。
为修正之前的误判,我应该将2042年之后的新生儿数量,与2018-2025的新生人口给对应起来。
根据数据,2000年-2017年每年新生人口数量大约1650万人,而从2018年开始,新生儿数量开始迅速下降,2024年之后,到2025年之后,新生儿数量更是降至不足700万人——这将造成25年之后,育龄人口同样会出现下图的陡坡下跌。
别等了!我算出20年后的中国人口数据,吓着了
至于每年死亡人口的估算,直接采用过去数据线性外推,就有更大的问题了。
如果不发生毁灭性的战争、瘟疫或者饥荒,进而造成个别年份人口数量锐减的话,每年的人口死亡数量,一定与几十年前的出生人口及存活人数息息相关,所以,每年的死亡人口数量,并不能简单采用线性外推的方式,而是必须考虑人口的年龄结构。
2020年10月28日,国务院新闻办公室宣布,从2015年到2019年底,中国居民人均预期寿命从76.3岁提高到77.3岁,为了简化,我们将2020年-2050年中国人均预期寿命,均设置为78岁。
如果第七次人口普查数据出来,结合人均预期寿命,想要估算2020-2050年中国人口死亡数据,并且估算未来中国的人口数量,并不是一件非常复杂的事情——我们可以统计48-78岁之间每个年龄段人口,将其作为2020年之后每年死亡人口的基准即可。
这些人口中,可能有相当一部分在到达78岁之前,已经因为各种意外而去世,但另一方面,1972年之后出生的人口,也很有可能在到达平均预期寿命之前去世,两者相抵消。我们可以简单认为,“七普”中48-78岁的人口数量,约等于2020年-2050年每年的死亡人口数。
可惜的是,第七次人口普查的数据还没有出来,我们只能引用第六次人口普查的数据,来说明2020年之后每年的死亡人口数据情况。
因为2010年的“六普”比现在早了10年,所以如果在“七普”中统计48-78岁之间每个年龄段人口数量的话,对应于“六普”中,应该是统计38-68岁之间每个年龄段的人口数量。
别等了!我算出20年后的中国人口数据,吓着了
根据国际社会通行标准,如果一个国家60岁以上人口占到总人口的10%,这就意味着进入老龄化社会,按照这一标准,中国在1999年就已经进入老龄化社会。不过2000年以来,随着中国经济发展水平的逐渐提高,人均预期寿命也在稳步提高,这熨平了2000年-2020年的年度人口死亡数据。
1980年,中国人均预期寿命为67.8岁;
1990年,中国人均预期寿命为68.6岁;
2000年,中国人均预期寿命为71.4岁;
2010年,中国人均预期寿命为74.8岁;
2020年,中国人均预期寿命为77.3岁。
根据国家统计局人口数据,自2000年以来,虽然每年新生儿出生人口数量有比较大的波动,但死亡人口却一直都是在平稳上升,从2000年的811万到2019年的998万,每年的死亡人口数量增加都在5-10万之间。
别等了!我算出20年后的中国人口数据,吓着了
正因为看到了这个数据的平稳变化,所以我之前才简单采用了线性外推的方式,来计算中国2020年以后的死亡人口数据。
然而,因为人的寿命本身存在着极限,在社会人均预期寿命达到78岁以后,后面人均预期寿命的提高会变得越来越小,甚至不再提高,这最终会反映在人口死亡数据上——年度死亡人口数据,与5年前、10年前相应年龄段人口数量的关系,将越来越趋于一致。
所以,我对于近期的死亡人口数据,采用线性外推的方法也未尝不可。但从1950年开始,内战结束,中国开始出现第一波婴儿潮,当这一波婴儿潮的人,开始触及平均预期寿命的时候(78岁),继续采用线性外推方式估算死亡人口,就会出现极大的偏差。
有鉴于此,关于中国未来30年人口估算,我做出2点修正:
1)2043年之后的新生儿人口,按照25年前(2018年-2025年)的人口出生比例推算;
2)2028年以后的每年死亡人口数据,采用2010年“六普”数据中38-68岁人口数量代替。
这样一来,2050年中国将有12.6亿人的判断就会被推翻,根据我修正后的估算,2020年之后,如果中国不能够有效刺激居民的生育热情,中国的人口规模将出现两次断崖式的下跌:
一次是2028年第一波婴儿潮人口触及平均预期寿命之后;
另一次是2041年第二波婴儿潮人口触及平均预期寿命之后。
具体见下图。
 
别等了!我算出20年后的中国人口数据,吓着了
到2050年,中国的人口总量将下降至10.7亿人左右,回到20世纪80年代的水平。
比人口总数量下降更恐怖的,是年度新生儿人口和死亡人口数据的对比:
从2025年开始,因为全面放开二胎的计划生育政策松动红利耗尽,中国每年将出现约400万的人口净减少;
从2028年开始,因为建国后第一波婴儿潮人口触及平均预期寿命,中国每年将出现约700万的人口净减少;
从2041年开始,因为建国后第二波婴儿潮人口触及平均预期寿命,同时叠加2018-2025年的新生儿人口遽降所造成的育龄人口数量遽降,中国每年将出现约2000万的人口净减少。
简单说,如果中国的生育率在未来几年不能够有效提高的话,从2041年开始,中国人口的下降将会非常可怕,以每年消失1个现在北京或上海城区人口的速度缩减——到2050年底,中国的人口规模相比今天,将会减少近30%。
修正后的数据估算表明,中国的人口问题,可能比很多人设想的悲观情况要更加悲观。
若中国的生育水平不能在未来很快提高,到2050年的时候,中国每年的新出生人口将不到300万人,而死亡人口将高达2500万人,而且这种状况还会持续很久。
每年因为自然更替而消失2000万以上的人口,这是整个人类历史上,除了战争和瘟疫之外,和平时期最迅猛而暴烈的人口下降,从2041年开始,中国的人口下降速度,将远远的超越现在的日本、韩国,成为全世界人口下降最严重国家,没有之一。
想想看,如果中国不能够在未来迅速提高生育水平,2050年之后的中国,每年的死亡人数将接近新出生人口的10倍,这个数据,真的是把我自己都给吓着了!
到那个时候的中国,不仅仅是所谓的“未富先老”的问题,而是比现在日本与韩国的老龄化更可怕的一种深度老龄化,人口快速缩减、全社会衰老不堪,整个社会的将处于持续的衰败状态。
一个年度死亡人口是新生儿人口10倍的国家,衰老和死亡将笼罩整个社会,这样的中国,别说什么大国崛起了,整个国家有没有希望和未来,都很存疑了……
算完后,我终于明白了,这大概就是国家统计局迟迟没有公布“七普”数据的原因!
 
——因为,这个数据太具有爆炸性了。
别等了!我算出20年后的中国人口数据,吓着了

 

转自:https://mp.weixin.qq.com/s/mOXmipaek1MC9ZZWbqQlUg

整理了十个Python自动化操作,拿走就用!

01

OS模块相关

一、遍历文件夹

批量操作的前提就是对文件夹进行遍历,使用os模块可以轻松的遍历文件夹,os.walk 遍历后产生三个参数:

  1. 当前文件夹路径
  2. 包含文件夹名称[列表形式]
  3. 包含文件名称[列表形式]

代码如下,大家可以根据自己的路径进行修改

import os
    
for dirpath, dirnames, filenames in os.walk(r'C:\Program Files (x86)'):
    print(f'打开文件夹{dirpath}'# 当前文件夹路径 
    if dirnames:
        print(dirnames) # 包含文件夹名称[列表形式] 
    if filenames:
        print(filenames) # 包含文件名称[列表形式]
    print('-' * 10)

当手上的需求明确有获取给定路径各级文件夹下所有符合条件的文件,并进行相应的批处理操作时,即可使用 os.walk

二、 目标路径是否是文件

有时我们需要判断一个目录下是否存在文件也可以使用os模块。

给定一个目标路径 path ,通过一行代码就能够判断这是文件还是文件夹路径

import os

path = 'xxx'
print(os.path.isfile(path))

三、获取路径中的文件名

os.path.basename 可以直接从绝对路径中获取最后的文件名,当然如果用传统的字符串切割方式也可以,即 path.split('\')[-1]

import os

path = 'xxx'
print(os.path.basename)

四、创建文件夹

创建文件夹的代码非常常用,因为往往生成的新文件都希望有个新的文件夹存储,代码如下:

import os

dirpath = 'xxx'
os.mkdir(dirpath)

但是,如果希望创建的文件夹已经存在,再运行 os.mkdir() 则会报错而终止代码。为了避免这一情况的发生,可以在创建文件夹之前先判断文件夹是否存在。

用到的代码是 os.path.exists,只有当路径不存在(即  os.path.exists 返回的结果是 False 时),才会创建:

import os

dirpath = 'xxx'
if not os.path.exists(dirpath):
    os.mkdir(dirpath)

五、获取桌面路径

获取桌面路径也是非常常用的操作,可以使用os.path.join(os.path.expanduser("~"), 'Desktop') 获取桌面的绝对路径。

这样做的好处是可以把数据放在桌面上,在不同的电脑上都能调用代码对数据进行处理。如果是在一条电脑上把桌面路径固定在字符串中,则换一台电脑就必须修改桌面路径。代码如下:

import os

desktop_path = os.path.join(os.path.expanduser("~"), 'Desktop')
print(desktop_path)

当然把上面的代码包装成一个函数 GetDesktopPath() 需要时调用它会更加方便

import os

def GetDesktopPath():
    return os.path.join(os.path.expanduser("~"), 'Desktop')

六、重命名文件/文件夹

需要用到 os.rename() 方法,下面的代码示例中分别演示如何重命名文件和文件夹

import os

os.rename('practice.txt''practice_rename.txt')  # 重命名文件
os.rename('文件夹1''文件夹2'# 重命名文件夹

七、批处理文件 – 1

除了前面的 os.walk 之外,有其他的 os 模块下方法可完成获取指定路径的全部或符合条件的文件(非遍历各级文件夹的需求),还可以使用下面两个代码第一种用到的方法是os.scandir(),使用如下:

import os

path = 'xxx'
for file in os.scandir(path): 
    print(file.name, file.path)

八、批处理文件 – 2

上面代码最后输出的是 给定路径下各内容的名字、绝对路径第二种方法使用 os.listdir(),它比 os.scandir() 简单一些,可直接调用输出名称而非路径:

import os 

path = 'xxx'
for file in os.listdir(path):
    print(file)

02

shutil模块相关

九、移动文件/文件夹

shutil也是经常出现在办公自动化场景中的模块,我常用的就是移动文件/文件夹

需要用到shutil.move 方法,下面的代码示例中分别演示如何移动文件和文件夹:

import shutil 

shutil.move(r'.practice.txt'r'.文件夹1/') 
shutil.move(r'.practice.txt'r'.文件夹1/new.txt')

注意到上面后两行代码的区别吗?前一行是将目标文件移动到目标文件夹里,而后一行,在将目标文件移动到目标文件夹里的同时,能够对其进行重命名

也就是说,如果我们需要移动某个或某些文件到新的文件夹,并且需重命名文件,则我们并不需要用 os.rename 先命名文件再用 shutil.move 将其移动的指定文件夹,而是可以用 shutil.move 一步到位

03

glob模块相关

十、批处理文件 – 3

最后要介绍的是glob模块,也是办公自动化必须要掌握的一个模块,同样可以用于批处理文件。

glob 最重要的功能就是搜索获取同一级或者各子级下符合条件的文件(绝对路径),非常适合写批处理的代码。

有时候我们需要对大量文件进行相同操作,在写完针对一份文件的操作后,只需要加上几行代码,就可以完成批处理全部文件的工作。大致代码框架如下:

import glob
    
for file in glob.glob('**/*', recursive=True): 
    print(file)

glob.glob() 是一个非常重要的方法,能够获取给定路径下文件的绝对路径,并且接受「通配符」搜索,大大拓宽了灵活程度,* 表示任意字符长度,**/* 的使用表示用通配符指代给定路径下的任何一层,recursive 参数允许遍历搜索。

— EOF —

转自:https://mp.weixin.qq.com/s/SQVhU7i7CUvP6iCvILjmcQ

Python 里最强的Web框架,早就不是Django和Flask了

来自:掘金,作者:ConnorZhang
链接:https://juejin.cn/post/6944598601674784775

如果说要用 Python 进行 web 开发,我想你一定会告诉我 使用 Flask 或者 Django 再或者 tornado, 用来用去无非就这三种框架。可能逛 github 多的朋友还会说一个 fastapi。但是,皇上,时代变了,大清… 亡了!!!

速度为先

当下,python都已经更新到了 Python3.9.3 了,如果你还没有使用过 asyncio、和 Python3.5 新增的 async/await 语法,那说明你可能真的是桃花源人,问今是何世,不知有汉,无论魏晋了

在当下,基于 async/await 语法的异步 Web 框架也有很多,在 github 上找一找比比皆是是,那究竟应该选哪一款呢?在 github 上有一个专门测试各种语言各种 Web 框架速度的项目,我们来看一看简单的数这是所有的 Python Web 框架速度测试,有人可能会问为什么不是从 1 开始排序的,因为这个项目的测试还包含 golang、java、php 等众多语言的 Web 框架,共有 226 款。这里我们只用 Python 来做对比。

可以明显的看到,flask、django、tornado 等老牌的 Python Web 框架已经快要垫底了。

wow, 这个速度绝了。可能你们还在怀疑这个速度如何测试的,给你们看一下测试源码:

# Disable all logging features
import logging

logging.disable()


from flask import Flask
from meinheld import patch

patch.patch_all()

app = Flask(__name__)


@app.route("/")
def index():
    return ""


@app.route("/user/<int:id>", methods=["GET"])
def user_info(id):
    return str(id)


@app.route("/user", methods=["POST"])
def user():
    return ""
复制代码
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt


def index(request):
    return HttpResponse(status=200)


def get_user(request, id):
    return HttpResponse(id)


@csrf_exempt
def create_user(request):
    return HttpResponse(status=200)
复制代码
# Disable all logging features
import logging

logging.disable()


import tornado.httpserver
import tornado.ioloop
import tornado.web


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        pass


class UserHandler(tornado.web.RequestHandler):
    def post(self):
        pass


class UserInfoHandler(tornado.web.RequestHandler):
    def get(self, id):
        self.write(id)


app = tornado.web.Application(
    handlers=[
        (r"/", MainHandler),
        (r"/user", UserHandler),
        (r"/user/(d+)", UserInfoHandler),
    ]
)
复制代码
# Disable all logging features
import logging

logging.disable()

import multiprocessing

from sanic import Sanic
from sanic.response import text


app = Sanic("benchmark")


@app.route("/")
async def index(request):
    return text("")


@app.route("/user/<id:int>", methods=["GET"])
async def user_info(request, id):
    return text(str(id))


@app.route("/user", methods=["POST"])
async def user(request):
    return text("")


if __name__ == "__main__":
    workers = multiprocessing.cpu_count()
    app.run(host="0.0.0.0", port=3000, workers=workers, debug=False, access_log=False)
复制代码

就是简单的不做任何操作,只返回响应,虽然这样测试没有任何实际意义,在正常的生产环境中不可能什么都不做,但是如果所有的框架都如此测试,也算是从一定程度上在同一起跑线上了吧。

OK,就这么多,说到这里你也应该知道我想要说的这个异步框架是谁了,没错,我们今天的主角就是 Sanic

Python 里最强的Web框架,早就不是Django和Flask了

为什么要用异步 Web 框架?

这可能是众多小伙伴最先想到的问题了吧?我用 Django、Flask 用的好好的,能够完成正常的任务,为什么还要用异步 Web 框架呢?

Python 里最强的Web框架,早就不是Django和Flask了

说到这里,首先我要反问你你一个问题,你认为在 Web 开发过程中我们最大的敌人是谁?思考 5 秒钟,然后看看我的回答:

在 Web 开发的过程中,我们最大的敌人不是用户,而是阻塞!

是的,而异步可以有效的解决 网络 I/O 阻塞,文件 I/O 阻塞。具体的阻塞相关的文章推荐查看深入理解 Python 异步编程。由于异步可以提升效率,所以对于 Python 来说,异步是最好的提升性能的方式之一。这也是为什么要选择 异步 Web 框架的原因。

生态环境

可能有的小伙伴还是会说,你为什么不推荐 falcon 而是推荐 Sanic ?明明它的速度非常快,要比 Sanic 快了那么多,那您看一下下面的代码:

from wsgiref.simple_server import make_server
import falcon


class ThingsResource:
    def on_get(self, req, resp):
        """Handles GET requests"""
        resp.status = falcon.HTTP_200  # This is the default status
        resp.content_type = falcon.MEDIA_TEXT  # Default is JSON, so override
        resp.text = ('nTwo things awe me most, the starry sky '
                     'above me and the moral law within me.n'
                     'n'
                     '    ~ Immanuel Kantnn')

app = falcon.App()

things = ThingsResource()

app.add_route('/things', things)

if __name__ == '__main__':
    with make_server(''8000, app) as httpd:
        print('Serving on port 8000...')

        httpd.serve_forever()

一个状态码都要自己定义和填写的框架,我想它的速度快是值得肯定的,但是对于开发者来说,又有多少的实用价值呢?所以我们选择框架并不是要选最快的,而是要又快又好用的。

而大多数框架并不具备这样的生态环境,这应该也是为什么大多数 Python 的 Web 开发者愿意选择 Django 、 Flask 、 tornado 的原因。就是因为它们的生态相对于其他框架要丰富太多太多。

可是,如今不一样了。Sanic 框架, 从 2016 年 5 月开始 发布了第一版异步 Web 框架雏形,至今已经走过了 5 个年头,这 5 年,经过不断地技术积累,Sanic 已经由一个步履蹒跚的小框架变成了一个健步如飞的稳重框架。

在 awesome-sanic 项目中,记录了大量的第三方库,你可以找到任何常用的工具:从 API 到 Authentication,从 Development 到 Frontend,从 Monitoring 到 ORM,从 Caching 到 Queue… 只有你想不到的,没有它没有的第三方拓展。

生产环境

以前我在国内的社区中看到过一些小伙伴在问 2020 年了,Sanic 可以用于生产环境了吗?

Python 里最强的Web框架,早就不是Django和Flask了

答案是肯定的,笔者以亲身经历来作证,从19年底,我们就已经将 Sanic 用于生产环境了。彼时的 Sanic 还是 19.9,笔者经历了 Sanic 19.9 — 21.3 所有的 Sanic 的版本,眼看着 Sanic 的生态环境变得越来越棒。

还有一个问题可能你们不知道,Sanic 在创建之初目标就是创建一个可以用于生产环境的 Web 框架。可能有些框架会明确的说明框架中自带的 Run 方法仅用于测试环境,不要使用自带的 Run 方法用于部署环境。但是 Sanic 所创建的不止是一个用于测试环境的应用,更是可以直接用在生产环境中的应用。省去了使用 unicorn 等部署的烦恼!

文档完善

想必大多数 Python 的 Web 开发者 学的第一个框架就是 Flask 或者 Django 吧,尤其是 Django 的文档,我想大多数小伙伴看了都会心塞。因为旧的版本有中文,但是新的版本,尤其是新特性,完全没有任何中文文档了!!!!这对于关注 Django 发展但英文又不是强项的同学来说,简直苦不堪言。

但 Sanic 拥有完善的 中文用户指南 和 API 文档,这些都是由贡献者自主发起的,官方承认的文档,由翻译者进行翻译贡献,由 Sanic 官方团队进行发布。或许有的小伙伴会说 Flask 也有完善的中文文档,但是那是在不同的站点上的,Sanic 的所有文档都有 Sanic 官方进行发布支持。且目前 Sanic 还在持续支持 韩语、葡萄牙语等更多的语种。

Python 里最强的Web框架,早就不是Django和Flask了

社区指导

和其他框架不同,您或许能够在百度上找到论坛、频道等,但这些都是经过本地汉化的,运营者往往并不是官方,且其中夹杂了很多广告。很显然,如果是官方运营的不可能允许这种情况出现。

Sanic 不同于其他的社区,所有的论坛、频道完全由官方运营,在这里,你可以向核心开发者提问问题,Sanic 的官方发布经理也非常乐意回答各种问题。你也可以和志同道合的使用者分享自己的使用经验。这是一个完全开放的环境….

Sanic 目前常用的有 论坛、Discord、github issues、twitter、Stackoverflow

Python 里最强的Web框架,早就不是Django和Flask了

大家可以在以上的方式中关注 Sanic 的发展以及寻求社区帮助。

Python 里最强的Web框架,早就不是Django和Flask了

你还在等什么?还不赶紧去试一下?最后,以 Sanic 的愿景结尾:Build Faster, Run Faster !

— EOF —

 

转自:

我去了趟义乌,然后凌乱了…

我去了趟义乌,然后凌乱了...

 

今年的义乌可谓是火出圈,原本只在小商品界全球称王。没想到,网红直播的兴起,让义乌一下全民皆知,并成为了不少人打卡的新地标。

 

我去了趟义乌,然后凌乱了...

 

到底义乌的小商品种类有多少?道听途说不一定准,干脆我也赶个时髦,趁着快过年了,走一趟义乌,看看能否添置一些年货。

01

 

坐在高铁上,一直对自己止不住地怀疑,义乌的这个小商品市场规模到底多大,值不值得自己花3个小时的来回特意跑一趟?火车站的规模和刚下火车站看到的那条横幅都让我心中慌得一笔。

 

我去了趟义乌,然后凌乱了...

该不会,我这次白跑了吧?

 

直到坐车到达义乌的国际商贸城,我这才终于把心放到了肚子里,或者说直接让我从惴惴不安变成了震惊。

 

我对义乌国际商贸城的第一印象是:“这地方看上去好大啊!”

  

我去了趟义乌,然后凌乱了...

过街天桥往下看,国际商贸城前的广场上停着密密麻麻的车子,一眼都望不到头。

 

我去了趟义乌,然后凌乱了...

靠近后,商贸城给人的感觉,倒不像是小商品市场,而是比较像大型的会展中心,有些上海新国际展览中心的味道。

 

我去了趟义乌,然后凌乱了...

 义乌国际商贸城鸟瞰图 吴贵明摄

整个义乌国际商贸城分成了五个区,内有通道相互连接。而这五个区加起来,建筑面积超过了400万平米,有将近20个北京鸟巢体育馆那么大。

这个国际商贸城还仅仅是义乌市小商品市场的一部分而已。

进入其中更是由衷地感觉到了大:一眼望不到头的走廊,两侧的商店密密麻麻,更不要说在上面悬挂的商品了,那真的是看得人眼花缭乱。如果不带目的瞎逛,一天逛下来必然是脚疼腿软的;更可怕的是,还逛不完。

 

除了规模大以外,义乌国际商贸城的小商品的种类也非常的全。

在义乌国际商贸城中,小商品的种类,有着上百万那么多。所有你想得到的,想不到的,只要这件商品有市场,那么义乌的国际商贸城里都能找到。像是比如常规的钥匙扣、橡皮泥、水壶、镜子等等。

 

我去了趟义乌,然后凌乱了...

刚开始看到普通的小商品时我还只是保持着“就这?”的心态来表示我的见多识广,后来发现长长的一条街或者两条街全是不同类型的同一类产品时,就已渐渐麻木了。

我去了趟义乌,然后凌乱了...

一家扣子上万种样式,一条街上全是密密麻麻的扣子时,那该是多少种样式?这种感觉,真的是太魔幻了。

我去了趟义乌,然后凌乱了...

化妆品店直接看到我眼晕,密密麻麻的指甲贴,颜色都有些分不清楚了。

我去了趟义乌,然后凌乱了...

各种类型的锅具密密麻麻,从中式到西式全部都有。

再看看那些让人眼花缭乱的或是假花或是亮灯,真的是有一种浓浓的过节气氛。只要你想得到的,义乌全都有卖!

我去了趟义乌,然后凌乱了...

这些普普通通的一件小商品,在同一家店铺就有上万件不同的类型,一条街全部都是的话,难以想象它的种类有多么的巨大,身处其中,只让我感觉到了魔幻。

“我是谁,我在哪儿?我现在在干什么?”

从每一个小商品的海洋中出来,都拼尽了全力。从一个换到另一个类别时,就仿佛像是误入了童话王国,在一个个王国中冒险。今天是纽扣王国,下一个又是皮带王国……

全还不算什么,更为奇特的则是那些义乌国际商贸城里卖的比较“特别”的东西。

我对义乌小商品印象城的第三印象:怪奇!

 

我在义乌国际商贸城里看到一位僧人,大为惊讶。难道僧人也有购买小商品的需求?好奇之下,我暗搓搓地尾随上了他,直到他进入一家店铺。我连呼三声“好家伙”。没想到义乌连这个都卖?!

 

我去了趟义乌,然后凌乱了...

再看周围,不仅这一家,卖佛教、道教用品的店铺真的很多,不只有常穿的衣服,还有香、木鱼、葫芦等等。怪不得那位僧人会来这里,简直是一站式购物。

 

我去了趟义乌,然后凌乱了...

我问了问店主,也想着购买点香火试试,听到我说的数量后,店主没搭理我,只好灰溜溜的走了,看来非大客户不得入义乌啊,也不知道那位师傅替庙里采购了多少,按批发价来看,真的是个节俭的大师啊。

 

最为难得的是,我在义乌看到了真正的和平,无论什么用具,它们统一被安放在旅游工艺品区,无一例外,没有区别对待。

 

如果你觉得这还不算魔幻,那么再来看看隐藏在那些比较小的角落里的奇怪东西。

魔幻的义乌,当然缺不了流行。这是义乌网红产品展示台,据说,这里放的都是最近比较火的。

 

我去了趟义乌,然后凌乱了...

神奇的义乌,不仅贩卖着传统的各色小商品,也紧追着流行,网红商品层出不穷。或者可以说,什么是网红商品,义乌说了算!

 

我去了趟义乌,然后凌乱了...

国内外的奖章,直接搞个背景图到朋友圈,就可以伪装成到国外旅游了。

 

我们总是看新闻里说国内各大旅游景点卖的东西是义乌来的,实在是太天真了。就连国外旅游景点的东西,也通通是从义乌来的!

这就是义乌的小商品市场,规模大、东西全、多奇怪的商品都有!

02

为什么全世界各地的人纷纷到义乌来购买小商品?

俩字——便宜!

像是图上这种小饰品,如果是在景区或者大学城周边的饰品店里,要卖到10-15元,而在义乌,它们的批发价才2毛钱,最好的也就一块钱左右。

我去了趟义乌,然后凌乱了...

清仓的行李箱,不管大小,50一个就能带走。

我去了趟义乌,然后凌乱了...

其他例子就更多了。

便宜的打底裤卖多少钱?拼多多上大概要二三十才能入手,在义乌,只需要三块钱。

文具店里一两块的圆珠笔,在这里,20元能买100支,还送70支笔芯,价格约为之前的十分之一。

 

就连常见的两三百的皮衣,如果你拿一万件,那么按20一件来算钱。

为什么义乌的小商品会如此的便宜?我询问了一下。

这主要是因为在义乌的小商品市场上,商家是直接和厂商对接的,更有大部分完全就是厂家直接开店。

而这些厂家,就位于义乌。一整套的产业链很成熟,比如没有中间一条条供应商链条,走的就是薄利多销的路子。

不像我们平时购买商品,可能转手了好几次。因此,在义乌批发,都是上万件的量,不单卖不少卖。这种批发上万件货物走的人,就是我们常见的下一级供应商了。

再加上义乌在过去,因为比较穷的原因,人们很能吃苦,互相压价的时候总是压到最便宜,这才是义乌最开始因为小商品便宜起来的原因。

即使在现在,义乌小商品市场也有义乌购这个网站,在上面可以进行比价,再去店面砍价。为了让自己的货物卖出,义乌现在的商户们依旧在互相压着价。

当然,义乌最为难得的一点是,它的快递费用出人意料的便宜,最低每单可能还不到一块钱。毕竟再便宜的东西加上运费也就贵了。

低廉的价格加低廉的运费,让义乌的小商品在世界上都具有非常大的竞争力!

义乌只有这些价格便宜的走批发的小商品?那你也太瞧不起义乌了。现在的国际商贸城,不只有小商品,高端的也不少见。

 

这些高端的,就不是批发了,可以单件购买,不过那价格不是普通人可以承担的。摆设也和普通店面不同,在玻璃窗单独展示,有种满满的高级感。但同样的,义乌贩卖的高端商品,也比外面商场里要便宜一些。

 

我去了趟义乌,然后凌乱了...

关公像和一些价格昂贵的摆设,也是一件一个价,不同于玉石这种每一件都有区别,也可以大批量订购。

 

我去了趟义乌,然后凌乱了...

便宜的价格吸引了不少外地乃至外国商人前来交易。

我身边偶尔路过肤色或黑或白的外国人,在这里完全不会引起任何人的好奇。就和普通人一样,非常融入这个环境。让我更加羞愧的是,他们逛街都比我有目的性,至少做好了功课,还有代步工具。

我去了趟义乌,然后凌乱了...

03

在义乌商贸城逛的时候,身边有些空旷,人没有想象中那么多。带着疑问,我选择了一家店走进去询问。

 

这位店主是所在网格的网格长,非常好说话,得知我的疑惑后笑了几声,指着电脑说,“别看我店里没什么人,我的生意都在线上。”

 

据他所说,在义乌商贸城,大约90%的商家都在做线上,商品弄成了目录发给客户,客户再下单,有45%左右商家一半以上的销售额来自于线上。

 

今年,义乌的营销模式发生了变化:从线下为主,变成了线上为主。

 

他指着门口路过的一个女店主跟我说,“你别看那个人每天下午才来,她楼上楼下两家店呢。她出货都在仓库,这边到底怎样你是看不到的。别人还以为她生意不好,嗨,谁能知道人家的生意。”

  

第二个营销策略是:出口转内销。

 

大部分人可能不知道,义乌小商品市场九成左右的收入来自于出口。因此,国外的疫情对于义乌的小商品市场影响很大。

其中最为严重的当属一区的饰品、工艺品类,这类产品需要紧跟时髦,紧跟大牌的潮流风向来设计。如果进出口这里时间比较长,那么到国外时可能已经不流行。

举几个例子,原本的工艺品,从外国人喜欢的样式,变成了中国人喜欢的样式。

外国人最喜欢的那些都放到了下面的位置,C位都是做旧的兵马俑和春秋战国时期的高脚杯样式。而外国人喜欢的金光闪闪的烛台,则是放在了比较靠下的位置。据店主说,也就是刚好圣诞应景才会放出来,平时只会摆中式的商品。

 

我去了趟义乌,然后凌乱了...

就连瓷器,也从欧式的带着翅膀的小天使,变成了富贵牡丹图等等,整体构造也是中式。外国人喜欢的金银样式的放到了最底层。

中式花瓶确实在国内很有市场,在我和店主谈话的过程中,有两位客人前来订货,虽然最后被价格劝退了,但也可以看出策略是成功的。

 

我去了趟义乌,然后凌乱了...

据店主说,现在大部分外国人也进不来,干脆就先不做外国人喜欢的样式了,等下订单再做也来得及。

大量的中式工艺品已经占据了市场。据店主所说,之前主要做出口生意时,样式都是欧式为主。

 

我去了趟义乌,然后凌乱了...

其他类别也是如此,都各有对策开始针对国内市场进行业务的调整。

生活用品上,国内喜欢的茶杯样式,富贵牡丹和青花瓷为代表,英文图案的已经放在了下方。

我去了趟义乌,然后凌乱了...

 

卖给外国人的炫酷小包?没关系,印上自己家孩子头像或者几句中文吉祥话,更加开心。

我去了趟义乌,然后凌乱了...

原本大量出售给兄弟国家的暖壶,也继续给国内用吧,看着样式还挺喜庆的。

我去了趟义乌,然后凌乱了...

 

从工艺品到家居,各式各样的都往内销上走了。

无论是开始大量做以线上为主的生意,还是使用出口转内销的策略,这些,都是从眼前的义乌市场看不到的。

 

如果不和商家详聊,只会觉得义乌是一个贩卖着小商品的王国,拥有大量的货物,是永远不会知道这些商家们如何在小商品这个赛道上不断变道的,这就是义乌不为人知的另一面。

 

 

04

那位店主告诉我,他来到义乌已经二十年了,是新义乌人。当初来义乌只有一个目的——努力赚钱。而义乌这座城市,确实也没有辜负他。

远的不说了,就说今年的行情,日子不太好过。国际商贸城对他们进行了租金减免,义乌也对他们进行了减免税收。我问了下他具体的减免情况,说根据店面不同,有的可以减免一半的租金。

在业务上,也不是任由店家野蛮生长。他在这里干得比较久了,算是业务骨干。每年上海的进博会,他们这些骨干都会被带着过去看一下,看看外国又有什么新东西,研究新的潮流动向。

当然,不仅仅是进博会,义乌自己也举办过多个各方面的国际展会,一方面为了推销自己的商品,另一方面就是为了交流学习现在的新趋势。

这对商家们来说意义很大,也通过一个个展会来更好地根据市场调整自己的业务目标。

而对于年轻人来说,义乌最吸引人的,还是电视剧里的那句话:“鸡毛飞上天!”

不管是怎样的年轻人,有没有学历,在义乌只要肯干,就能出头。据采访得知,有公司的业务员最多一年能拿200多万,最低的搬运工也有7、8万,这比普通打工要赚得多,在很多地方都算是高工资了。

而且对于年轻人来说,义乌的房租也比较友好,房租很便宜,租房的公积金提取额度也上升了。怀揣一万多块钱来创业的年轻人,大有人在。

当然,做外贸行业的机遇与风险并存,别看在义乌赚的多,如果遇到形势不好,货物积压,那有可能赔掉底裤。举个例子,之前下订单的外国人的国家开始打仗了,那这些商品怎么办?就和现在这种出口困难一样,需要及时调整了。

虽然义乌仅仅是一个县级市,在发展初始基本面并没有那么好。但是它从来都以市场为主,每次外界挑战时都能马上调整战略,及时让自己跟上市场。

 

都说义乌魔幻,无论什么都能在义乌买到,什么肤色的人都能在义乌看到,来义乌的外国人是中国所有城市最多的,非常的赛博朋克。

 

然而义乌的另一面,就隐藏在这看似热闹的繁华之下。

 

我突然想到在回程的路上,出租车司机告诉我的一件事:在义乌,上下高速的路口有十几个,只要是从义乌上下,是不收高速费的。

 

义乌的魔幻在于,永远身处套路中,却总不按套路出牌。

以上为正文,来自初晓。

转自:https://mp.weixin.qq.com/s/jjcLW6QdqQBmcg_wsXt_6A