Featured image of post SK批评02

SK批评02

–SK 批评小报

‍ 介绍忘记怎么写了, 就当上篇一样吧

记录课业外(摸鱼)或者是日常遇到的一些兴趣使然的搜集内容, 题材不限, 每个文档代表一个内容, 以期长久保存? NONONO. 这个笔记本内不能存储太多东西, 会导致搜索的无效键值命中

# 使用

将对应的粗加工后的信息归类后存放到万卷模板对应序列的下方, 而后在 SK 批评中进行归并处理

# 经济

# 经济学概念综述

# GDP

GDP 本身是个总量概念,分为名义 GDP 和实际 GDP,而名义 GDP 跟实际 GDP 的差别主要在于价格因素。再换句话说,名义 GDP 比实际 GDP 多出一个通胀因素

股票、债券走势的究竟是名义 GDP 还是实际 GDP 呢?严格地讲都不是!我们在分析宏观经济的时候并不看总量,而是看增量,也就是说最终决定资产价格走势的应该是 GDP 的增幅,或者具体一点是名义 GDP 的增幅。

一般来说,名义 GDP 同比增速上升,股票的表现就可能比债券好,如果名义 GDP 同比增速回落,债券的表现就有可能比股票好

首先大家都知道股票是经济的晴雨表,所以二者往往是正相关。此外,经济好的时候,融资需求会比较强劲,资金供小于求,利率上升、债券价格下跌;经济差的阶段,融资需求疲软,资金供大于求,利率下降、债券价格自然也就上涨了。

GDP 一般来说有三种计算方法,分别为支出法、生产法和收入法。

支出法,简单来说就是看生产出的东西都去了哪里,各自卖了多少钱。计算的是大家为购买这些货物与服务而付出的总支出。包括消费支出、资本形成总额、货物和服务净出口,分别对应消费需求、投资需求和净出口需求。如果我们将 GDP 比作一个面包,那么支出法是从消费者购买面包的价值来计算 GDP;

生产法,围绕的则是价值是如何生产出来的。还是面包的例子,生产法是从面包的构成部分如小麦、鸡蛋、服务等的价值来计算 GDP;

收入法,计算的是整个生产过程中大家获得的所有收入,包括劳动者的收入、政府的收入、企业的收入等。换句话说,就是看都有哪些「人」赚到了钱,各自赚了多少。面包的例子中,则是从面包生产者如工人、企业从中获得的收入计算 GDP。

# 社会消费品零售总额

简单说,社会消费品零售总额(下文简称「社零」)就是全社会零售和餐饮收入的加总。它能很好反映国内零售市场的变动情况,让我们偷偷观察到最近大家是钱包「大出血」呢,还是勒紧裤腰带过日子。从大家的消费中我们还能预测未来经济发展的走势。

社零只包括企业销售实物商品和提供餐饮服务这些最终消费的收入,不包括教育、卫生、家政等服务性收入,也不包括居民个人销售的收入,所以上述其它销售收入都不能被记入社零。甚至还有买房——这项可能是你人生中最大的支出都不包括在社零的计算范围中。所以说社会消费品零售总额并不等同于消费,只是我们日常消费的一部分。

那么,统计局又是怎么算出社零的呢?

咱们国家有这么多家企业,每个月都要统计零售总额,工作量之大、之繁琐超出常人的想象。所以统计局会将统计的企业分为两大类,一类是主营业务收入较高的限额以上单位,对于这类大企业要一个个进行统计;另一类是主营业务收入较低的限额以下单位,对于小企业,抽样调查推算的方法就可以了。

那么划分主营业务高低的线又是多少呢?批发业、零售业、住宿和餐饮业企业限额标准分别为年主营业务收入 2000 万元、500 万元、200 万元。这样全面调查和抽样调查相结合得到的数据具有一定的代表性和科学性。

# 固定资产投资

建造和购置固定资产的经济活动,即固定资产再生产活动。

其中,固定资产是指企业为生产产品、提供劳务、出租或者经营管理而持有的、使用时间超过 12 个月的,价值达到一定标准的非货币性资产,包括房屋、建筑物、机器、机械、运输工具以及其他与生产经营活动有关的设备、器具、工具等。

从本质上来说固定资产投资和消费都是花钱,那么它们有什么不同呢?

固定资产的价值在于可以重复利用、创造出更多的产品。做好的美甲掉了就没办法自己再变出来、电影票也只能看一场电影,所以说消费支出就是一次性的。

因为这些固定投资的存在,某国家的工厂至少可以在接下来的十年中持续进行商品生产,可能会生产出产值超过一千万的商品。产品生产、出售又需要工人、销售人员的支持,相应会产生更多的工作岗位和就业机会,更多人提高了收入水平。

通过固定资产投资,可以增加全社会固定资产总量。在经济发展过程中,固定资产投资是社会维持简单再生产和扩大再生产的主要手段,其适度的规模和合理的结构对于实现经济发展战略具有重要意义。

固定资产都由哪些构成呢?

我们最熟悉的应当是每个人都挂在嘴边的买房了,这是房地产投资;工厂建设厂房、机器设备等可以进行生产的固定资产,则属于制造业投资的范围;基础建设投资主要指的是政府出资修路修桥、建设高铁等一系列公共设施的投资。所谓「想要富,先修路」公共设施的建设也为社会再生产贡献巨大力量。

# PMI

制造业 PMI 是制造业采购经理人指数的缩写,因为它在某种程度上能够预示未来经济的发展好坏,因此也是国际通行的宏观经济监测指标之一,对宏观经济有预测预警作用。

因此,通过对采购经理人的问卷调查统计结果,能比较全面反映制造业的现状,并且反映的是环比情况。

不过,PMI 作为环比指标,一定程度上容易受到工作日、季节、基数等因素的影响,与 GDP、工业增加值等同比指标相比,数据波动比较大,因此更适合反映短期经济形势的变化。

一般来说,当 PMI 至少连续 3 个月同向变化时,才能反映经济运行的趋势性变化,如果只是单月数据升至荣枯线上,并不能判断经济已经复苏或者恢复正常水平,出现趋势性好转。

制造业 PMI 按生产环节分成包括生产、新订单、原材料库存、从业人员、出厂价格等 13 个分类指数,每个分类指标都根据重要性等标准设定一个合适的权重,比如,新订单 PMI 指数的权重为 30%。

制造业 PMI 又是怎么预测未来的?它的高低走势有什么含义?

制造业 PMI 有一个重要的比较基准——荣枯线(50%),这通常就是经济强弱的分界线。如果制造业 PMI 超过 50%,就说明本月的采购、生产、销售等情况好于上个月,反映经济总体扩张;如果低于 50%,则反映经济总体收缩,说明经济可能会面临下行压力。

# 净出口

为何 GDP 支出法中使用的是「净出口」而不是「出口」呢?

根据 GDP 支出法的计算公式,GDP 是消费、投资、政府购买和净出口的加总。净出口顾名思义即出口与进口的差值,而「进口」的商品和服务已经被我们消费掉了,如果再用「出口」这个口径就相当于重复计算了我们消费掉的进口商品和进口服务。

净出口主要统计的是出口的商品和服务与进口商品和服务的差值。净出口作为支出法 GDP 的组成部分,在我国经济发展初期,依托海外市场,发挥我国劳动力成本的优势,有巨大的外需需求,而净出口一直被视为我国经济高速增长的关键因素之一。

净出口在 GDP 中的占比并不是越高越好。如果净出口的比例不断提升,也就意味着出口贸易做得好,贸易差额占 GDP 的比重也不断上升,加入世贸组织后的中国,出口贸易飞速发展,对于 GDP 的拉动高达 1.5%,带动贸易差额占 GDP 比重的升高。而这又在一定程度上代表了国家社会的经济结构现状,如果一国过度依赖外需发展经济,相对应的内需和投资的发展就比较弱。

聪明的你可以很清晰的看出,其实净出口占比过高,对经济长期发展并非有利。而且往往出口越多,还会导致通胀增加,继而影响消费。

我们出口创汇所得不能直接消费,而是要拿去换人民币,而这时候人民币就是国家对出口企业开出来的收据。出口创汇越多,国内的通货也就越多,资产价格和物价都会涨,物价上涨必然影响消费,也会压缩内销企业的销售。所以出口增加,必然让消费受损。所以我们国家在过去十几年里,总是以出口导向为主,但与此同时内需却始终无法启动。

所以在 2008 年金融危机之后,全球经济都陷入低迷,我国开始把内需作为稳定经济增长的主要抓手,并开始拉动内需,净出口对于 GDP 的拉动率急剧下降,随后净出口对于 GDP 的拉动绝对值逐渐稳定,只是随着外需的变化,有时对经济增长有利,有时又会拖经济后腿。

对于出口,如果实际汇率上升,则本国货币实际贬值,意味着国外商品相对于国内商品变得更贵了,这使得本国商品的出口变得相对容易。一般来说,出口正向地受实际汇率影响。

# 通货膨胀|通货紧缩

说到通胀可能大家会不理解这个专业术语,可我要说钱不值钱了,你是不是就理解了?

之前一斤猪肉卖 20 元,现在涨到 40 元,物价上涨,同样的 100 元钱,从前能买 5 斤猪肉吃个痛快,现在却只能买到过去的一半,失去了「猪肉自由」,购买力水平下降,人民的生活成本升高,这就是通货膨胀。相反的情况就是通货紧缩。

除了钱不值钱,通胀带来的还有社会财富的转移。

之前当猪肉还是 20 元一斤的时候,老王借给老张 100 块钱,老张拿着钱去买了 5 斤猪肉,谁知道老张后来一直拖着不还钱,期间物价飞涨、通胀严重,到了猪肉 50 元一斤的时候,老张终于还钱了,可这个时候的 100 元只能买 2 斤猪肉,相比于之前的 5 斤猪肉,老张岂不是占了便宜?而老王虽然得到了这 100 元,但是实际上老张应当还给他 250 元,才能让老王现在买上 5 斤猪肉。

这表明,在通货膨胀时,债权人的财富下降,借款人实际还的钱变少了,借款人财富增多。

那么,老王怎样才能保证自己的财富不下降呢?

那就是以 5 斤猪肉为实际借款,让老张还 5 斤猪肉就能避免自己吃亏。所以在通胀发生的时候,人们应当选择投资一些保值的硬通货,比如黄金,美元等,才能防止自己的财富贬值。所以如果你只喜欢在银行进行定期储蓄,而不进行其它的资产配置,通胀严重后银行的利息涨幅追不上通胀的幅度,结果只会是越存越穷。所以我们在生活中要时刻关注通胀情况。

咱们日常生活包括了生产和消费,所以对于通胀水平的观测也可以分为居民生活方面的 CPI 变动和工业生产方面的 PPI 变动。

# CPI

CPI 是居民消费价格指数的英文简称,这个指数可以直接的表明当地的物价上涨情况,如果说所有的物价都出现不同程度的上涨的话,那么说明出现了通货膨胀。它主要是通过计算固定一篮子城乡居民生活所需的商品和服务价格变化的相对数。这一篮子商品和服务包含了居民生活所必需的商品,如食品和非食品,像猪肉、鸡肉、烟酒、衣服等都包含在内。其中食品烟酒、居住、教育文化和娱乐所占权重较大,相加超过 50%。

不过,有些商品受季节供应量影响较大,并不能反映通货膨胀的情况,所以将这些因素,比如食品和石油去除,就会得到核心 CPI 指数。

CPI 涨幅多少才意味着发生了严重的通胀呢?

按照不同的通货膨胀程度,通常分为三种类型:

一是,温和型通货膨胀,一般是指年通货膨胀率为一位数的通货膨胀。通常我们认为 CPI 涨幅在 3% 以下,经济处于温和通胀的状态,此时的物价相对来说还是比较稳定的,大家不必慌张。

二是,急速型通货膨胀,如果 CPI 涨幅过高,比如超过了 3%,此时经济处于急速通胀阶段,我们不再拥有「猪肉自由」和「水果自由」的时候,我们就会开始担心是否发生了严重的通货膨胀,自己的资产是否会缩水。2019 年 12 月国内 CPI 同比高达 4.5%,就是非洲猪瘟导致肉价飙升的结果。

如果这种通货膨胀的局面一旦形成并稳固下来,势必会出现严重的经济扭曲,老百姓的生活也将陷入恐慌。

三是,恶性型通货膨胀,此时货币几乎没有了固定价值,大多数情况下,通胀率可能会快速上涨,以至于商品和服务的价格可能会在一天,甚至几个小时内急速上涨。而正因这种急速的物价上涨,会导致消费者信心降低,从而导致该国货币贬值。最终,恶性通货膨胀就会引起连锁反应,比如公司倒闭、失业率上升、财政税收减少、消费能力下降等。

# PPI

PPI 是生产者价格指数的英文简称,它主要统计的是工业生产者在生产过程中所需的物品价格的变动趋势。

根据工业生产的过程,分为原料、半成品和最终产品三个阶段的指数。而工业生产又分为生产资料如有色金属、天然气、钢材以及生活资料如食品、耐用消费品等两大类。如果生产所需资料价格都有不同程度的上涨,那么厂家一定会提高最终产成品的价格,消费者为增加的成本买单,物价水平逐渐攀升。所以我们一般都认为 PPI 是 CPI 的先行指标。

PPI 能帮助我们了解工业企业生产的最新情况。如果 PPI 呈现通缩状态,说明企业生产不积极,经济有下行风险,发生通缩的可能性比较大;如果 PPI 温和通胀,反映经济正积极增长。如果 PPI 严重通胀,说明大家的生产热情高涨,经济有过热风险,未来可能会发生通货膨胀和生产过剩。

# M2

社会中资金数量是反映流动性的重要指标。按照货币变现的难易程度,可划分为 M0、M1、M2、M3 四个层次,它们的流动性依次降低。

M0 指的是流动中的现金。

M1 是狭义货币供应量。M1=M0+商业银行的活期存款。因为活期存款可以随时提取,流动性仅次于现金,有些国家将它视同现钞货币,是成本最低的交易媒介和支付手段。

M2 就是「广义货币」。M2=M1+商业银行的定期存款+个人储蓄存款(包含活期、定期)+其他存款。货币不仅仅是交易媒介,更是一种资产,它的主要功能不是交易,而是价值储藏。从这个角度来看,商业银行的其他存款,如定期存款和储蓄存款,显然也是货币。因此这些存款也就应包括在货币供应盘的范围之内。

在我们的日常生活中,M0 与消费密切相关,它的数值高则证明老百姓手头宽裕、富足;M1 反映居民和企业资金松紧变化,是经济周期波动的先行指标,流动性仅次于 M0;而 M2 流动性偏弱,反映的是社会总需求的变化和未来通货膨胀的压力状况。

其实还存在 M3,但因为是考虑到金融创新的现状而设立的,暂未测算,所以不被常用。

# 社融

社融,是社会融资规模的简称,是指实体经济(境内非金融企业和住户)从银行、信托等金融体系内获得的资金。可以是金融机构直接给的钱,比如贷款、保险赔偿金等;也可以是金融机构帮着联系搞来的钱,比如非金融企业发行股票、债券等。

虽然是中国特有的经济指标,不过社融基本上可以等价于 IMF(国际货币基金组织)倡导的「信用总量」的概念,反映的是实体经济对货币的需求量。

经济增长,本质上就是企业不断的扩大再生产,而要满足扩大再生产的需求,就必须有足够的钱。从这个理解中,我们可以看出社融在一定程度能够代表经济走势。

社融由那些指标构成呢?

并不是只有银行贷款,还包括了其它一些可以让实体经济获得钱的渠道

如果说,江南皮革厂拿不到银行的贷款、也找不到有钱的信托,但是,养猪厂恰好有 100 万闲钱,于是通过银行把这笔钱借给了皮革厂,这叫委托贷款,即养猪厂委托银行把自己的钱贷给了皮革厂。这 100 万委托贷款也会计入到社融当中。

上面说的这些获得钱的方式,都可称之为间接融资。因为这些钱都不属于金融机构本身。银行贷款,他来自于储户的存款;信托公司的钱是来自客户;委托贷款的钱来自养猪厂,而金融机构就可以看作是一个中介机构。

社融当中,除了上面提到的间接融资之外,还有很重要的一块,就是直接融资,就是我们最为常见的发行企业债券、发行股票等,它的特点是直接接触资金的所有者。

社会融资规模与 M2 是一个硬币的两面。一个表示资产的需求(社会融资规模),一个表示资金的供给(M2)。

社会融资规模可理解为金融体系的资产、实体经济的负债;而 M2 则可理解为金融体系的负债、央行的资产(央行对国家的负债)。货币当局发行货币(以广义货币 M2 来表示),金融机构拿到货币来满足实体经济的融资需求,货币则通过银行金融机构(本外币贷款)、非银行金融机构(委托贷款、信托贷款以及未贴现票据)、资本市场(股票市场和债券市场)以及其它等渠道进入实体经济。

然而,间接融资体系使得社会融资规模与 M2 无法形成有效对应关系。理论上来讲,资产的运用和资金的来源应存在一定的对应关系,但是间接融资中介的存在,使得这一对应变得比较复杂,严格的对应关系不会存在。

随着金融创新的不断发展、金融脱媒(即金融非中介化)的日益深化、利率市场化的深入推进等,M2 与实体经济资金的相关性及有效性不断下降。而社会融资规模指标的重要性也开始日渐加码。

# LPR

LPR(Loan Prime Rate),全称是贷款基础利率,是指金融机构对其最优质客户执行的贷款利率。最优客户是指那些信用度高,违约风险小的贷款客户。

在 2013 年利率市场化以前,贷款基础利率(LPR)是直接根据央行给定的央行基准利率来决定的(也就是央妈给定的官方利率,以前降息就是降这个),金融机构会参照这个利率去上下浮动执行贷款。比如,大型企业因为拥有优质的抵押品和较小的违约风险,总能比小微企业从银行获得更低的贷款利率。

最新改良版 LPR:深化利率市场化

即,贷款市场报价利率(LPR)=中期借贷便利利率(MLF)+18 家银行加点(中间商赚差价)。

所以现在的情况是,银行的贷款利率定价,将分为两步走:

第一步,18 家报价行,根据 MLF 等公开市场操作利率和市场利率的走势,报出 LPR;

第二步,各家银行根据自身的资金成本和客户资质等,在 LPR 基础上加点,确定贷款利率

为什么要改革 LPR?

中小企业的老板们和按揭贷款的购房者们都知道,基准利率是和大家息息相关的。我们向银行贷款的时候,银行会以基准利率为标准,根据情况再上浮 10-30% 左右。

# MLF

MLF 在新的 LPR 定价过程中扮演着关键角色

货币流通量与社会商品流量相符合是货币流通规律的根本要求。我们的 GDP 在蹭蹭的往上涨时,央行也需要释放更多的货币。否则市场上流通的钱就不够,会导致了所谓的「钱荒」。

我国货币创造的基本方式,是根据外汇占款来锚定的。然而这样并不能准确反映社会对钱的需求,比如 2013 年外汇占款下降,但那一年我国 GDP 增速是 7.8%,显然国内市场需要新的货币供应。我们需要一个新的工具来应对这种货币需求。

MLF,常被戏称为「麻辣粉」,2014 年 9 月横空出世,全称中期借贷便利(Medium-term Lending Facility)。MLF 是一个货币调节工具,央行可以根据市场实际情况,临时的增加一笔钱借给商业银行,到时间再收回来。这样短时间市场货币就可以满足需要,也不会长久的影响整个社会的流通货币。MLF 通常的操作表述是:「央行开展 MLF 操作 2000 亿元人民币,1 年期利率 3.30%」。也就是说央行可以通过控制 MLF 的投放量和利率,来影响市场的货币供应和市场利率。

总的来说,MLF 是央行的货币调节工具,是有形的手。当市场货币供应不足或过剩时,可以通过该工具来调节。LPR 是金融机构给出的反应市场真实贷款利率的参考值,每月 20 号调整,这个值是跟随市场这只无形的手而变化。

# 供给侧

「供给侧」是相对传统的「需求侧」来说的

经济增长的三驾马车:消费、投资和出口,这三驾马车就是经济的「需求侧」,驱动了我国 GDP 过去三十年的高速增长。与之对应的就是「供给侧」的四大要素:劳动力、土地、资本和创新

以前提到经济增长,大家的条件反射就是要扩大需求、刺激消费,靠需求拉动经济。现在,经济发展进入「新常态」,我们不能再以 GDP 论英雄了,要换一种推动经济的新思路、新方法,那就是「供给侧改革」。当然,供给侧里的「侧」字,并不是「侧重」的意思,而是「端」、「一端」的意思,供给侧改革也就是从供给这一端来进行改革,从供给、生产端入手,通过提高全要素生产效率,提升产品竞争力,形成与社会需求相匹配的供给,以此来促进产业结构升级和经济发展。

供给侧改革,概括来说包括「三去一降一补」五大任务,具体是:去产能、去库存、去杠杆、降成本和补短板。

任务 1:化解过剩产能

产能过剩就是总供给不正常地超过总需求,这样会造成资源浪费,使经济增长面临更大的下行压力,所以要淘汰僵尸企业,加快产业重组。

任务 2:化解房地产库存

我国现在有严峻的楼市库存压力,空置的住房可供 2.2 亿人口居住,所以化解房地产库存非常重要。

任务 3:金融领域去杠杆

适度加杠杆有利于企业盈利和经济发展,但如果杠杆率过高,债务增速过快,还债的压力就会反过来增大金融风险甚至拖累发展。去杠杆是要防范化解金融风险,促进经济持续健康发展。

任务 4:帮助企业降低成本

比如通过减税等政策性改革,让企业减少没必要的制度性成本,这样企业就有更多资金去创新、提高生产率。

任务 5:补短板

包括补基础设施和民生建设的短板。

总的来说,供给侧改革,意味着在外需不足、内需潜力和空间有限的情况下,今后经济发展的着力点将从原本的重需求逐步转变为与供给需求共同发力。相对于需求侧改革的措施,供给侧改革更侧重于提升经济增长效率,更侧重于增强企业长期发展活力,更注重经济长期持续平衡和可持续发展。说白了,供给侧改革就是针对我国现存的经济问题「对症下药」,是我国经济改革的新方法。

# 杠杆

比如,相对于全款买房,房贷就是一个杠杆。通过较小比例首付,撬动较大比例房产,这样就能在资金有限的情况下买到更大更贵的房子。如果你想买一套 100 万元的房子,首付自己掏了 30 万,剩下的 70 万从银行贷到了款,那么你就用 30 万的资金撬动了 100 万,这就叫做杠杆。

投资者通过借入资金,投入经营,可以实现以少量资金获取更大的总资产。这个过程被形象地成为加杠杆。

银行本身是个杠杆,它们向资金盈余方吸收资金,投放给资金需求方。企业向银行借了钱,用于生产经营,本身也是一个杠杆。于是形成了一个资金链条,其中银行、企业两个环节都形成了杠杆。

居民 → 银行(杠杆)→ 企业(杠杆)→ 生产经营资产,这样的一个金融模式就是我们国家的资金链条环节。

因此,借钱去扩充资产就是加杠杆,还钱减少负债就是去杠杆。而不管是加杠杆还是去杠杆,都是发生在个人、企业和政府的身上。

# 资产

股票与债券

利率债和股票,其价值受政治、宏观经济、货币政策影响较大,流动性高,也就是说易于变现。债券盈利比较稳定,股票盈利波动较大。正如前文所述,一般来说名义 GDP 增长走高,经济形势较好,利好股票,但同时推升利率而导致利率债的价格下跌,反之亦然。

黄金

黄金本身没有生息功能,但流动性好,又能抗通胀,风险也比较低。此外,我们知道黄金原本是一种货币,至今各大央行还有黄金储备,并且黄金储备规模是彰显一国实力的重要指标,因此黄金还有避险功能。当 CPI、PPI 走高时,通货膨胀风险较大或者股票大跌、市场风险偏好较差的时候,黄金就是较为合适的投资标的。

不动产

也就是大家住的房子。房子的价格取决于两点:一是需求,二是政策。需求的核心影响因素是人口结果,但政策在一定程度上也会影响需求。一直有一个说法,叫做「丈母娘经济」,指的就是中国人结婚需要婚房,进而拉动经济增长。但房地产刚需前景并不能只看丈母娘的诉求,最终还是由中青年人口数量和占比决定。中国的刘易斯拐点早已出现,目前又是房住不炒的政策背景,我们估计房价大涨的时代应该已经过去啦。

# 美林时钟

美林时钟依据经济增长率(GDP)和通货膨胀(CPI)这两个宏观指标的变动方向,得出了四种经济状态:

l 当 GDP 同比增速上升、CPI 同比增速回落时,这种经济状态被称为经济复苏;

l 当 GDP 同比增速继续上升、CPI 同比增速也开始上升时,这种经济状态被称为经济过热;

l 当 GDP 同比增速回落、CPI 同比增速继续上升时,这种经济状态被称为经济滞胀;

l 当 GDP 同比增速回落、CPI 同比增速也转为回落时,这种经济状态被称为经济衰退。

试想,在经济刚刚复苏的阶段,有点像一年的春天,乍暖还寒。央妈对待经济就像对待襁褓中的婴儿,仍然百般呵护,一定不舍得收紧货币政策。加上经济已经有回暖迹象,这个阶段对很多资产都非常友好。很多股票可能都会出现所谓的戴维斯双击——业绩回升、估值修复,往往是做股票投资的最佳时机。当然,这个时候工业品价格也将企稳上升,债券也处于牛市的尾声。不过,这个阶段表现最差的往往就是黄金了,试想股市强劲的时候,小伙伴儿怎么会想起投资黄金呢?!

复苏过后,经济进入过热阶段,有点像一年的夏天,酷热难耐。这个时候通胀开始走高,央妈觉得不用再操心了,货币政策开始出现收紧迹象。货币政策转向意味着资金价格上升,这事儿对债券宝宝来说基本是噩耗,所以经济过热阶段首先「阵亡」的就是固定收益类投资产品。由此可见,这会股票估值也没什么向上的空间了,但是不用担心,毕竟经济向好、业绩仍然有保障,所以股票仍然是极好的投资标的。此外,工业品价格会受到显著提振,所以这个阶段风险偏好高的小伙伴可能就去关注期货市场了。不过在这里要提醒各位:期货是保证金交易,有杠杆,大家一定要量力而行哦!!当然,这个时候也有些小伙伴开始默默的关注黄金了,毕竟黄金是传说中的抗通胀资产,如果通胀起来了,黄金上涨指日可待~~

一转眼,经济切换到滞胀阶段。按照四季轮回的比喻,按理说滞胀应该相当于秋天,是个丰收的季节,也就是说这时不适合播种——投资,而是应该「收割」了。

此时,早动手「收割」,别人就是你的韭菜,慢了一拍,你就成了别人的韭菜。

为什么会这样?因此滞胀意味着经济下滑、通胀走高,也就是说此时经济已经倒下,但央妈为了防止通胀进一步走高可能还在收紧货币政策。套用一句老司机的话,滞胀阶段股债双杀,对股票来说特别容易出现戴维斯双杀。

那么滞胀阶段,买什么都会亏钱吗?

当然不是啦,是金子总会发光的,这个阶段的最佳进步奖非黄金莫属。在跑输两个赛季之后,黄金在「滞胀期」迎头赶上并逐渐超越了前面的各类资产,取得了最佳排名。究其原因,是前文提到的黄金的特点导致的,黄金是不生息、但抗通胀的资产,所以经济差、通胀高的时候最受各路投资者欢迎。

至于说衰退期嘛,犹如寒冬,但我们是北方的冬天——有暖气!衰退来临,央妈早早准备了各种货币宽松工具,虽然不能及时推动经济回升、但起码可以帮助大家一起抗寒。所以这个阶段股票表现欠佳,但债券却是很好的投资品。另外,低估值、高股息率的股票也可以逐渐关注起来啦!

说这么多,大家可能觉得太复杂,如果总结为两句话:名义 GDP 回升买股基、卖债基,名义 GDP 回落卖股基、买债基。央妈放水,市场就稳;央妈收水,市场就慌。

# 降准

降低存款准备金率。

那什么是存款准备金率呢?其实我们可以简单理解为发下工资来,先存一笔钱当做应急资金是一个道理。

我们知道,商业银行的主要业务就是吸收储户的存款,然后拿去放贷款吃差价。银行肯定是想多赚钱的,但是又不能把所有存款都拿去放贷,万一都贷出去了,储户要取钱时取不出来,这麻烦可就大了。所以央行为了确保商业银行能有足够的「活钱」可以应对储户的取钱需求,就专门设立了一个名叫「存款准备金」的账户来帮商业银行管理这部分「活钱」。

那么问题又来了,商业银行该往这个账户里缴纳多少钱呢?

央行敲定了一个存款缴纳比率,即存款准备金率。不过,由于商业银行的规模是有大有小的,为了让中小银行的手里能多一些钱放贷,也能分点肉吃,大银行和中小银行的存款准备金率也有些许不同。通常情况,大银行的存款准备金率要比中小银行高出约 2 个百分点。

举个例子:

按照 2020 年 1 月 1 日调整后的比例看,大银行的存款准备金率是 12.5%,中小银行是 10.5%。那么银行每收进 100 元存款,大银行就要上交 12.5 元给央行作为存款准备金,剩下的 87.5 元才能去放贷;而中小银行则要上交 10.5 元给央行,自己留下 89.5 元去放贷赚差价。

那么如果央行降低了存款准备金率呢?

比如咱们按大银行的执行标准,从 12.5% 降低至 12%,意味着上交给央行的钱减少了 0.5 元,至 12 元,自己手里就多了 0.5 元,有 88 元可以拿去放贷。

可不要小看这点降准幅度哦,在各大银行体系的货币流通下,市场上的可投资资金将会增加数千亿,甚至上万亿。

总之:

当经济过热时,央行会提高存款准备金率,让更多的钱回到央行,通过减少市面流通的货币数量,减少贷款达到给经济降温的作用。

反之,当经济遇冷时,央行就会降低准备金率,释放更多的银行资金,银行可以贷款的钱更多了,市场上可以拿到的钱更多。

相信大家也听说过」定向降准「这个词,多了个」定向「又是何意呢?

从最近这几年的降准来看,央行每次向市场放水,其实目标都是想刺激实体经济,可结果呢?银行的资金最后还是流向了楼市,而且每次都会奏效,理由也很简单,实体不赚钱,股市又不景气,楼市却是暴利。这也应了那句话:资金永远是逐利的,哪儿能赚钱,就奔哪儿去,这才是楼市不败的真相。

为了不让放出去的钱都流向楼市,央行就选择「定向」,也就是「指哪儿打哪儿」的降准模式,比如降低后商业银行手里多出来的资金,只能给中小企业贷款用,不能给楼市。

弄清了什么是降准和定向降准,那么降准后又会给我们带来什么影响呢?

从央行的角度来说,大量的资金趴在账户上,市场真正要用钱的地方却没钱用,进行降准,释放一些流动性,那些需要用钱来做生意、发展生产的企业,就可以较为轻松的贷到款了。就拿这次疫情来说,许多小微民营企业都遇到了资金困难,央行降准所释放的流动性,正好可以为其解决资金问题。

而资金多了,市场及经济就容易繁荣起来。

因为从理论上讲,需要钱的企业拿到了钱,缓解资金流的紧张,就可以恢复甚至是扩大生产,而扩大生产后,工作岗位也多了,劳动者拿到工资后就开始消费,股市也会上涨,楼市也会兴旺……经济就向好了。

但这毕竟只是理论上的推导,实际上,降准并非都是有效的。前面也提到,过去咱们国家的降准反倒刺激楼市,导致房价快速上涨,这就违背了初衷。

降准除了让市场上的钱多了一些,对企业和经济发展产生利好外,降准对于我们普通投资者来说,也会有如下影响:

首先,就是降准可能会间接影响股市。

短期内,突然释放的利好可能会调动起大家情绪,而情绪也是影响市场的重要因素。而从长期来看,如果中小企业能更容易贷到钱来用于企业发展,这会有助于提高公司的长期业绩。

其次,银行利率的上浮幅度可能会有下调。

其实降准对银行存款利率并没有直接的影响,不过由于降准之后银行上缴的存款准备金少了,手里可利用的资金变多,等于资金面变宽松,如果银行不缺钱可能将利率上浮幅度下调,比如房贷的利率上浮可能就会降低。

最后,降准对楼市的影响有限。

从历史看,以往出现降准,对地产行业一般都是利好的,毕竟房地产作为高负债行业之一,通过降准能缓解不少资金压力。并且降准对楼市是预期影响,预期货币宽松政策力度会加大。但是当前楼市调控的基调依然是「房住不炒」,在解决行业资金压力较大的难题时,不会再拿房地产作为刺激经济的手段。

# 降息

利率政策是货币政策的重要组成部分,降息则是最常见的利率工具之一。降息主要包括两方面:降低存款利率和降低贷款利率。

l 降低存款利率,意味着咱们去银行存款或者买理财产品时,收益率会降低,这时储户就会倾向于将存款从银行中取出来用于其他投资或者消费,从而增加市场上的货币流动,刺激经济向好;

l 降低贷款利率,则可以减少贷款人的偿债负担,降低贷款人的资金成本,推动企业贷款扩大再生产。

降息本身并不会增加市场的资金量,但却可以改变资金的投向。换句话说,降息就是鼓励消费和投资的。

与降息相反的就是加息。简单说,加息一方面是为了吸收存款,从而减少货币供应量;另一方面就是提高短期高额融资成本,抑制恶意投机的行为。加息会导致人们减少消费转而增加储蓄,当然这有助于缓解通货膨胀,刺激本国货币的升值。不过加息的出现,也会让股市不景气,所以投资要更加谨慎才行。

无论是降准还是降息,都是央行十分重要的利率工具,那么它俩有何区别呢?

相同的是,降准降息都可以营造货币市场一个相对宽松的环境,降低社会融资成本,促进企业贷款扩大再生产,刺增加投资促进就业,进而刺激消费拉动内需,加速经济向好回暖。同时作为央行护航股市的重要的政策工具,也可以为股市带来利好,对经济的增长和发展的稳定,起到重要的作用。

当然,它们之间最大的区别在于,所面对的群体不同。

降准针对的是商业银行,因为提交存款准备金的行为本身是商业银行执行落地的,意在释放商业银行在央行的保证金,增加市场的资金供给。而降息是针对社会企业和我们个人的,意在鼓励储户和企业去消费或者去投资。

在货币宽松之下,我们投资时要注意什么呢?

对于固收类资产来说,在确保一定流动性的情况下,要适当锁定长期收益,也就是说投资周期应适当增加,毕竟这类资产具有相当的「刚性」,以实现资产保值增值的投资目标。对于权益类资产来说,可以逢低持续增配以增强收益。

# 《聪明的投资者》 剖析 阅读笔记

# 投资与投机

作为投资大师,格雷厄姆很早就有对这两种行为进行明确区别的雄心,早在他 1934 年出版的《证券分析》一书中,他就对投资和投机进行了定义,他认为所谓「投资是以深入分析为基础,确保本金安全,并获得适当回报;不满足这些要求的就是投机。」这个定义也出现在《聪明的投资者》的第一章。

我们可以分析一下格雷厄姆对于投资的这个定义,他至少提到了三个要素:

1、以深入分析为基础;2、确保本金安全;3、获得适当回报。

最后,关于投资还是投机,除了之前的三条原则,格雷厄姆还提出了一个更加容易检验的标准,他在一次采访中说:「问一问你自己:如果没有交易这些股票的市场,你还愿意以此种条件投资这家公司吗?」

这一条原则后来也被格雷厄姆的弟子巴菲特继承了,巴菲特对于是否好股票的一个判断标准是,如果你不能卖出这只股票,你是否还会买入。如果答案是「是」才是投资,而投机则是赌自己能把股票以更高的价格卖给其他人。

# 市场先生

市场先生这个概念,巴菲特也在很多场合讲过,是他觉得是他从得到格雷厄姆那里获得的最有价值的思想。格雷厄姆跟他的学生有一些定期的聚会,在一次聚会上,他讲了一个寓言,这个寓言是这么说的:

假设你在某家非上市企业拥有少量股份,比如说一千美元的股份,你的一位合伙人,名字就叫市场先生,他是一位非常热心的人,每天他都会根据自己的判断告诉你的股权价值多少,而且他还要你以这个价格为基础,把股份全部出售给他,或者从他那里买更多的股份。

有时他的估价与你所了解的企业发展状况和前景相吻合,在许多情况下,市场先生的热情或者担心有些过度,这样他估出来的价值,在你看来似乎有些愚蠢。如果你是一个谨慎的投资者或者一个理智的商人,你会根据市场先生每天提供的信息,决定你在企业拥有的一千美元权益的价值吗?

只有当你同意他的看法,或者想和他进行交易时,你才会这么去做。当他给出的价格高到离谱时,你才会乐意卖给他,同样当他给出的价格很低时,你才乐意从他手中购买,但是在其余的时间里,你最好根据企业整个业务经营和财务报告来思考,思考持有股权的价值。

当一个投资者拥有上市公司部分股份的时候,他所处的地位就跟上面那个寓言非常相似了,永远有一个市场先生在给你报价,你既可以从他这里买一些,也可以卖一些给他。

市场先生这则寓言告诉投资者,面对市场波动必须保持良好的判断力和控制力。大多数时候投资者应当与市场保持一定距离,就像格雷厄姆所说的,「从根本上讲,价格波动对真正的投资者只有一个重要含义,它使得投资者有机会在价格大幅下降时做出理智的购买决策,同时有机会在价格大幅上升时做出理智的抛出决策。在除此之外的其他时间,投资者最好忘记股市的存在,更多地关注自己的股息回报和企业的经营结果。」

其实市场先生就是我们大部分普通投资者的写照,大部分人买了股票之后,都会每天关注它的股价变动,股价稍微一上涨就百爪挠心,恨不得马上卖出兑现,股价稍微一下跌就垂头丧气,后悔自己的购买决策,尤其是在现在这个移动互联网的时代,大家只要装一个应用,就能够在手机上随时查看行情和进行交易,这也让大家对于市场行情的关注更加频繁和密切。

市场先生这个寓言告诉我们,成为成功的证券投资者有一个重要的前提,那就是你能够管理好自己的情绪。巴菲特在给《聪明的投资者》的序言里一开始就说,「要想在一生中获得投资的成功,并不需要顶级的智商,超凡的商业头脑或者内幕消息,而是需要一个稳妥的知识体系作为决策的基础,并且有能力控制自己的情绪,使其不会对这种体系造成侵蚀。」

如果你总是不断关注市场短期行情波动,那么要做到这一点实际上是很难的,一旦市场上涨,你看到别人赚了钱,心理很难不会产生嫉妒的情绪,而一旦市场下跌,你持有的股票价格下跌了,你手头的资产在缩水,你也很难不会产生懊悔的情绪。

# 长期思维

格雷厄姆给出了两条建议,第一条是不要过于看重某一年的利润,第二条是如果你确实关注短期利润,请当心每股利润数据中存在的陷阱

那么,怎么来做到不过于看重某年的利润?格雷厄姆在这本书提出了两个具体的方法来指导投资者:首先,在分析企业的时候突格雷厄姆建议用三年的平均利润的增长率,即你分析一家企业过去十年的利润增长率,不是说以十年前那一年的利润和十年后这一年的利润一除;而是说如果计算截止 2017 年的十年盈利增长率,要用 2015 年到 2017 年这三年的平均利润除以由 2006 年到 2008 年三年的平均利润。

其次,格雷厄姆建议投资者用七年平均利润这个数据。比如在估值的时候,投资者应该用七年平均利润,或者用过去七年最低利润来做分析。通过以上两个具体的方法格雷厄姆指导投资者怎么来避免过于看重当期一年的利润数据。

每股利润是一只股票最重要的财务指标之一,很多投资者认为这个指标能够清晰直接的反映出公司是不是在赚钱,有多能赚钱,但是格雷厄姆在这一章中提醒读者,要注意每股利润中存在的陷阱。格雷厄姆用美国铝业公司的例子来说明了他的观点,在投资实践中,格雷厄姆举的例子其实是很有代表性的。

一般上市公司有四种不同的每股利润:即基本每股利润、扣非后的每股利润、完全稀释每股利润以及扣非后完全稀释每股利润。像在美国上市的公司,都会提供 NON-GAAP(非美国通用会计准则)利润给投资者参考,类似于扣非的利润。

所谓的扣非利润是指扣除非经常性损益后的净利润,即扣除掉特殊和不经常发生的收入和费用后的利润。我们都很熟悉在美国上市的京东公司(NASDAQ:JD),它刚上市的时候,是亏损的。上市三年后,基于美国通用会计准则(GAAP),京东在 2017 年第一季度实现首次季度盈利,但基于非美国通用会计准则(NON-GAAP)京东在 2016 年二季度就实现了首次季度盈利。

稀释每股利润是指充分考虑公司股份可能被稀释的因素之后的每股盈利,比如期权、可转债、以股代息等可能新发行股票,使得公司的总股数上升,这样就会使得稀释每股利润比基本每股利润低。

我们现在看到了,格雷厄姆在书里不仅会提供定性的思维,而且还会提出具体的、量化的方法。这也是格雷厄姆的书与其他投资专著相比显著的特点,这个特点在不管是在《聪明的投资者》还是《证券分析》里,都有充分的体现。

当然,如果你非要关心短期利润,格雷厄姆提醒你要当心这个数据中的一些陷阱,其实主要是一些会计上的问题,对于会计不熟悉的听众可能觉得这部分内容有点专业。不过,现在是信息大爆炸时代,实际上我们能获得大量分析短期利润的分析报告。这些分析报告多是由投资银行研究部门出的卖方报告,它们往往特别关注企业短期利润变换和走势。

因此,关于短期利润中的问题或者陷阱,我们并不缺乏相应的资料和分析报告。当然,对于每一位投资者,还是要掌握基本的会计概念。

在帕特·多尔西的《股市真规则》中,他也提到了所谓市盈率,也就是市盈率估值方法,帕特·多尔西对这个估值方法进行了比较详细的介绍。他提出用市盈率评估的时候,你有五个要注意的要点,否则就可能会被表面上的市盈率所蒙蔽,这部分内容跟短期利润比较相关,我们在这里也介绍一下。

第一个要注意的要点是,这个公司是不是最近有出售业务或者是资产的情况,也就是说它是不是有一次性的大笔盈利,或者一次性的收入增长,这样会降低它的市盈率,但这些都是暂时的,你肯定要剔除这几种情况。

第二个要注意的要点是最近是不是有大的一次性成本的产生,降低了当期的利润,这会提高它的市盈率,因为它的利润下降了,所以这也要相应分析,要做平滑。

第三个要注意的要点是这个公司是不是一个周期性的公司,是不是比其他公司更具有周期性。那么什么样的公司会更有周期性?在这里我也可以给大家做一个简单的分享,我认为一个公司如果是重资产的公司,基本上它就必然是具有周期性的公司。原因也很简单,如果是资产非常重,那么它就必须得每年维持一定的产能利用率才行,因为它的本身资产很大的话,折旧就会很高,如果没有维持一定的产能利用率,那它就必然会出现亏损的局面。

第四个要点是,公司把产生现金流的资产是选择资本化,还是费用化?如果把资产当期费用化,其实就会降低当期的吸引力,如果进行资本化,那么就会提高当期的盈利,能够持续产生现金流的资产,按会计的原则来说是应该进行资本化的,如果没有资本化,那么我们可以理解为企业的盈利被低估了。

第五个要注意的要点就是它的盈利是否真实,这家公司在盈利上面是否作假。当然,前面四点其实也是在逼近于它的盈利是不是能够反映真实的盈利状况,财务报表的盈利是不是跟实际盈利能够对应起来,但我们最后还是再问一下,它的盈利是不是真实的。

# 防御型投资者以及建议

如果你是一个积极型的投资者,就必须要付出更大的时间和精力来研究证券投资,这样你才有可能成为一个合格的积极型投资者,否则你就只能作为一个防御型的投资者。显然要作为一个积极型的投资者的要求还是比较高的,首先,你必须掌握足够的专业知识;其次,掌握专业知识之后,你还要在投资这个事情上付出足够多的精力和时间才行。

格雷厄姆认为普通股有两个优点:第一,股票可以对抗通胀,而债券不能对抗通胀;第二,普通股其实长期来说可以给投资者提供更高的回报率,也就是股票投资从长期来看,它回报比债券要高。关于通货膨胀,我们后面会有专门的讨论,此处就不赘述。

格雷厄姆认为防御型的投资者投资的股票的时候,应该保持适当分散化,但不要过分分散化。他也提出的量化要求就是整个投资组合应该包含 10 到 30 只股票。更为重要的是,针对防御型的投资者的证券组合,格雷厄姆提出应该符合以下七个具体的统计要求:

第一、就是适当的企业规模,即你投资的公司必须是大型的、知名的公司,简单说就是蓝筹股。如果拿到 A 股来说,我的具体的建议是,如果你是一个不愿意付出非常大精力和时间成本的投资者,那最好就只投资于沪深 300 指数中包含的 300 家公司,没有进入这个指数的公司不应该在你的考虑投资的范围之内。

第二,要有足够强劲的财务状况,就是你投资的公司财务要非常稳健。具体的量化要求是:公司的流动比率必须大于二——流动比率就是流动资产除以流动负债;而且长期债务不超过流动资产的净额。长期债务是指银行或者金融机构贷款,或者是其他的一些必须支付的债务,比如债券等;流动资产净额的意思就是你的流动资产减去你的流动负债。也就是说,防御型的投资者可投资的公司的流动资产净额是其长期债务的一个上限。

第三,利润的稳定性。具体格雷厄姆要求公司在过去十年里没有出现过亏损。

第四,长期的股息支付记录。格雷厄姆要求保持 20 年连续的支付股息的记录。这个要求非常的高,我们 A 股证券市场的历史还不到 30 年,能保持 20 年连续支付股息的公司凤毛麟角。我觉得我们可以做一些灵活的调整,具体而言,A 股持续七年或者十年以上有股息支付记录的公司,我觉得都是可以考虑的。

第五,利润过去十年必须是保持增长的。这个增长要用我们前面提到的三年平均利润来衡量。格雷厄姆要求十年利润增长至少要超过 1/3。也就是说以 2015 年到 2017 年的平均利润除以 2007 年到 2009 年的平均利润,要大于 1 又 1/3。

第六,适度的市盈率。(所谓市盈率就是股票的市价除以它的每股利润。)具体格雷厄姆要求你投资公司的估值水平不超过它过去三年平均利润的 15 倍,即 15 倍市盈率。

第七,适度的市净率。(所谓市净率就是股票的市价除以它的每股净资产。)格雷厄姆的标准是股价不高于净资产价值的 1.5 倍,也就是估值水平不要超过 1.5 倍的市净率。以上第六条和第七条,可以结合起来,即你投资的公司市盈率乘以市净率要小于 22.5 倍。15 乘以 1.5 刚好等于 22.5,即不超过 15 倍的市盈率和 1.5 倍的市净率。

那从专业投资者的角度来看,这些具体的量化指标,可能在有些时候会让你排除掉一些优质的投资机会;但是,对一个不愿意在投资上付出非常大的精力和时间的人来说,这样一个量化的指标其实还是非常有参考价值的,它会错杀一些公司,但是它至少保证了投资的安全。

# 定额定期投资法

在这本书里,格雷厄姆还对各种各样的投资方法进行了分析和研究,其中我觉得特别值得来分享给大家的,就是格雷厄姆通过对 1929 年到 1952 年证券市场的研究,对定额定期投资的方法得出了一个结论,他说「无论证券价格出现怎样的波动,这种投资法都能使人满怀信心地取得最终的成功」。这个评价可不是一般的高,格雷厄姆如此肯定地推荐一种投资方法,在我印象里只有此一次。

定额定期投资法很简单,就是投资者不考虑市场的情况,比如说每个月投 1 万块钱在一个指数基金或者是某个股票指数所对应的一揽子股票上面,如果市场涨了即股价涨了,那么 1 万块钱买到的股票就少了;如果市场跌了,1 万块钱买到的股票就多了。

这么做实际上会让购买成本平均的分摊,所以这种投资方式又称为成本平均法。很多国内基金也推荐这种投资方法,我个人也认为这是一个很好的投资方法。

当然,格雷厄姆是进行了一个定量的研究,才得出这个结论的。他研究了从 1920 年到 1952 年的 23 个十年期,每个十年期他都拿出来做一项研究,研究不仅给出每个期期末的利润情况,也给出了此后五年的利润情况。他发现每一个十年期,用这种方法都能够获得很好的收益。

因此,当投资者不愿意付出非常大的精力来择时和选股的时候,可以用这种方法,其实获得的回报比绝大部分主动择时择股的投资者要好。但是,如果只是定额定投某一家蓝筹公司或者是你看好的某一家公司,是不是能够得到同样的回报?格雷厄姆认为这不一定,而且很有可能是有问题的。要解释这个问题也很简单,因为关键是你投资的公司在未来能不能持续的繁荣和增长,如果不能的话,你一直投,公司一直在走下坡路,那投资者的回报可能会很差。

定额定期投资法要求投资者具有强大的投资纪律性,它要求投资者摒弃恐惧和贪婪,像一个机器人一样,不用考虑什么时候买入多少这类问题,不需要择时,到时间点就买,牛市也买熊市也买,每次都买一样多,牛市和熊市都一样,从长期来看这样反而会平滑你的买入成本,让你的成本不会太高也不会太低。

但是从长期来看,定额定期投资法往往会带来不错的收益。还有一种投资方法是定期不定额投资法,定期不定额投资法是指,每隔固定期限就阶段性评估投资品的估值高低,如果觉得低估就多买入,如果觉得高估就多卖出,越便宜买入越多,越贵卖出越多。但在实践中,定期不定额投资法需要投资者对于投资价值有着较为准确的估计,否则就会陷入主观的、情绪化的投资决策,最后反而效果还不如定期定额法。

所以不管是格雷厄姆也好,还是他的学生巴菲特也好,也包括我本人,对于不愿意花时间做研究的投资者的建议,最好投资方法就是去定额定投指数基金。值得强调的是,定投的指数必须具备足够的多样性,而不要去投什么概念性的指数,比如中小盘指数或者某个行业指数等等,一般来说,定投一个具有足够多样化的指数会获得比大多数主动投资者好得多的回报。

所以指数基金比较适合作为定投对象,指数基金是按照指数编制的特定原理界定出的一篮子股票,比如沪深 300 指数就是由沪深两市市值最高的 300 只股票构成,一篮子股票的指数就抵消了单只股票的大幅波动,从历史看,指数的市盈率和市净率是在一个相对比较狭小的范围内上下波动。而主动型基金就不太适合作为定投对象,因为主动型基金不一定具有足够的多样性,这跟前面所说的把单只股票作为定投对象的问题本质上是一样的。

当然,采用定期定额投资法的投资者也不要去追求每年 20% 或者 30% 的回报率,长期来说这个年化收益率太高了,可遇而不可求。我们都知道巴菲特是历史上最成功的投资者,但他的长期年化收益率也只有 20% 左右。当然,在早期巴菲特的年化收益率接近 30%,而在晚期,他的收益率有明显的下降。

不过,供大家参考的是,如果一个人年化收益率连续 20 年保持在 15% 以上,就能够跻身全球最顶尖的资金管理人行列。连续 20 年 15% 是什么概念呢?就相当于说一个人 50 岁的时候,他积累了 1 亿财富,然后到 70 岁的时候,他的财富增长到 16 亿——这便是复利的魔力,难怪巴菲特说「复利是世界第八大奇迹」。

# 基金投资

《聪明的投资者》这本书里,还有一块很有价值的内容,就是格雷厄姆对于基金投资的看法,这部分内容主要是在第九章《基金投资》里。在这一章里,格雷厄姆研究了 1961 年到 1970 年的投资基金的人和直接购买股票的人的收益,他得出结论,总体上来说,基金投资人会比直接投资股票的人的收益要高。

怎么来投资基金呢?其实跟我们讲的股票投资有类似的地方:投资者找出历史时间足够长且业绩优秀的基金,假设未来它的投资业绩还会超过平均水平,投资者就投资于这样的基金,这是一个比较现实的基金投资策略。

# 投资者与通货膨胀

在书里,格雷厄姆也试图对通货膨胀进行预测,并且分析了通货膨胀和企业利润的关系,但是并不是那么清晰。格雷厄姆的学生巴菲特 1977 年在《财富》杂志发表了一篇非常长的文章,名为《通货膨胀如何欺诈投资者》。这篇文章对通货膨胀和企业利润的关系进行了非常全面深刻的讨论。

格雷厄姆和巴菲特的这个思想被人们用一句简单的话概括就是「通胀无牛市」。在通货膨胀的情况下,由于物价的持续上涨,所以大多数的投资者都不愿意进行对外投资,因为投资所带来的收益未必能够战胜物价的上涨幅度,所以更多的人都更加愿意持有受益于通胀的原材料和商品。所以,通货膨胀能够创造商品期货的大牛市,而由于获利效应,资金反而会从股市当中流出,而奔向各类商品期货当中,所以对于股市反而会造成更不利的影响。虽然在通胀情况下,加息往往会成为常用的跳空手段,这样看似有利于压制通货膨胀上行,但结果会是一段时间之后将带来更多的货币并冲击实体市场,也是促进了物价上涨。所以阻止通货膨胀的势头,其关键并不在于加息,而是在于在货币的有序升值。

至于其他对抗通胀的一些方法,比如黄金、房地产等,格雷厄姆在书也做了讨论,长期看黄金并不保值。格雷厄姆虽然承认房地产作为一种实物资产,在通胀的情况下当然会好一些,但是他也提出房地产投资的几个缺点:第一,拉长时间看,房地产价格也同样不稳定;第二,买家在地理位置、支付价格等方面经常也会犯下错误,就像买股票买错了公司、买错了价格一样;第三,销售商的误导也会导致投资者失误;最后一点是,对于资金量不太大的投资者,房地产投资很难进行分散化,投资者只能买很少的量,无法分散风险。

房地产投资在中国大陆过去 20 多年的情况比较特殊,我们都知道这是过去 20 多年中国最成功的一个大类投资资产。但是中国的房地产市场的时间还比较短,格雷厄姆的分析都是以十年为一个单位来分析的,而中国房地产市场也只有 20 年的历史,还比较短,虽然确实大趋势一直都是在涨,但是未来会怎么样,谁也不知道。

时代变了

# 总结

《聪明的投资者》是一部关于投资的杰作,也因此这本书在投资史上长盛不衰,始终是投资者无法绕开的经典著作。虽然书名叫「聪明的投资者」,实际上是为「不聪明的人」设计的。通过这本书,格雷厄姆想发明一套每个人都能用的投资理论,这真是个雄心勃勃的目标,但是格雷厄姆的确做到了。

正如我们在第一节的介绍,格雷厄姆是个极其聪明的人,可以用「天才」来形容,他一个人就开创了价值投资这门学问,但是这本书却非常简单明了,绝不故弄玄虚,真正做到了最好的教授用通俗易懂的语言来表达自己的思想。

综观全书,格雷厄姆不仅在帮助普通人建议正确的投资观,同时还给出了具体的、可执行的投资策略和方法,甚至每次更新本书的时候,他还会对当时的市场投资机会进行分析,并给出具体的资产配置建议。

可惜的是,格老已经离世很久,现在很难看到这么有影响力的投资大师无私地分享自己的观点,并给普通人提供具体可行的建议了。

本书还有一些比较专业的内容,我们并没有涉及,如果你希望成为一个掌握专业投资知识的投资者,我相信你还是有必要自己仔细阅读这本书。

最后,我们来总结一下我们在这本书里所学到的一些核心内容。第一,当然就是市场先生的概念,这是也巴菲特认为格老教给他的最重要的一个理念。我们要理解市场先生是情绪很不稳定的,我们应该好好利用他的这个特点,在他情绪低落的时候下注,而不是被他牵着鼻子走。第二,是建立长期投资的理念,这种长期并不仅仅是指你持有时间要长,而投资的时候,要关注企业的长期历史业绩;研究企业时不要太看重它某一年的利润,要看一个过去七年的平均的利润;在考察企业增长的时候,要看三年的平均利润增长率。

在这本书里,格雷厄姆根据愿意付出的努力和精力的不同,把投资者分为两类,一类是防御型的投资者,另一类是积极型的投资者。对于这两类投资者,格雷厄姆分别给了不同的建议。我们学了防御型的投资者的证券投资组合。对于积极型投资者,格雷厄姆扩大了他们可投资的范围。

我们学习了格雷厄姆对成长股投资的看法,包括成长股投资的估值。我们学习了格雷厄姆对基金投资的看法,总体上他认为对大多人来说,投资基金会比直接买股票回报要更好。我们学习了格雷厄姆为什么推崇定额定投的投资方法。我们学习了格雷厄姆和巴菲特对通货膨胀与投资者关系的看法,关于通货膨胀的讨论,很多内容是来自于巴菲特的观点。我们还学习了安全边际的思想,而这方面我们汲取了投资大师赛思·卡拉曼的观点。

格雷厄姆首次出版这本书的时间是在上世纪中期,1949 年,距今已经超过 70 年了,那么格雷厄姆的理论和投资思想过时了吗?

巴菲特说他是 85% 的格雷厄姆加 15% 的费雪。但如果看巴菲特晚年的投资,他似乎越来越趋近于费雪的投资方法。格雷厄姆在《证券分析》第一版中提出以低于净流动资产买股票的方法,虽然管用,但在当今这个时代,证券市场似乎很难找到这种投资机会。这就产生了一个疑问,即格雷厄姆过时了吗?

格雷厄姆是证券分析的奠基人,正是他使证券投资这门学科规范化并且变成一种可以学习的知识。然而,投资这个事情必须与时俱进,如果我们观察最成功的投资大师巴菲特,事实上他一直在进化中,否则不可能取得今天的成就。

反观格雷厄姆,事实上,他也是同样如此,一直在进化。《聪明的投资者》一书经格老亲手更新了四版,其中间隔时间 5 年至 10 年不等,每一版都有变化,这种变化也是将他的理论适应于新的时代的必然要求,我们在一开始也讲到巴菲特对格老修订第四版《聪明的投资者》的建议,事实格老对巴菲特的建议绝大部分都采纳了。

我们现在解读的《聪明的投资者》一书是最后一版,格老在这本书里甚至花了很大的篇幅介绍他的成长股投资方法。尽管具体的投资标准和方法一直在变化,但是格老的核心思想并没有变化:即市场先生、安全边际、长期思维等。

以格老的观点,显然任何时候都不能买静态估值特别贵的标的,甚至成长股投资也是如此。就巴菲特近年来做的重大投资看,事实上仍然没有突破格雷厄姆在第四版《聪明的投资者》所提出的标准,比如投资伯灵顿北方铁路公司,IBM(虽然并不成功),苹果公司等。因此,我们必须对突破格雷厄姆的标准保持足够的警惕。可以肯定地讲,如果我们能构建一个符合格雷厄姆在《聪明的投资者》所提出的标准的投资组合,那么获得投资成功的可能性是非常大的。

问题是,当今证券投资市场的竞争异常激烈,而且与格老所处的时代也有所不同,所以我们应该把重点放在学习格老的思想,同时把他的思想与时代所提供的机会相结合。我们必须保持灵活性,中国有句古话,说「尽信书不如无书」。

举个我自己亲身经历的例子,我曾经投资过好未来(NYSE:TAL),这是一家在美国上市的做课外辅导的中国教育公司,它的另一个名字可能更出名,即学而思。我错误地在 2017 年把它给卖掉了,卖掉时的静态扣非市盈率达到 80 倍,但是两年后我一看,它的市值仍然增长了 80%,静态市盈率接近 60 倍。其中的原因在于公司近三年的扣非后盈利增速分别达到 131%、70% 和 86%。好未来这个例子大概就是新时代投资者所面临的挑战吧,像京东(NASDAQ:JD)、美团点评(3690.HK)这样的公司,上市的时候,甚至都没有盈利,我们如何对之进行估值和判断当然是个挑战。

我甚至和别人一起面试过学而思, 面的是什么东西, 技术岗一点技术不问

最后,回答格雷厄姆的理论过时了吗?我的观点是:格老的投资思想和理念永不会过时;他的投资方法其实如果你能遵守并能找得到相应的标的,仍然会奏效;但作为新时代的投资者,我们也必须与时俱进,迎接新时代的挑战,发展适用于我们这个时代的投资方法。

以上就是周展宏解读投资大师格雷厄姆和《聪明的投资者》这本书的全部内容,希望能够帮助大家更深入的理解格雷厄姆和他的投资哲学。

# 深层认知:洞悉商业本质 阅读笔记

略过了认为失去失效与老生常谈的部分

# 认知突围

利用光的量子性进行阐述 不要迷信与命运的观点

事物永远都在变化,试图描述变化中的事物就像刻舟求剑。

《易经》是什么?是从万变中找不变,只有规律是不变的。但是,这规律一旦被总结出来,又成了固定的,又会因为观察者的介入而发生坍缩。

# 股市与楼市

文化差异必然导致经济差异。由于农耕文明里的契约精神欠缺,人与人之间的信任度比较低,这导致人们只愿意相信那些看得见、摸得着、偷不走、用不坏、不变质、不过时的东西。放眼四望,只有「房子」能同时满足这些条件。

中国农耕民族的习性和文化,决定了中国人将财富大量放在楼市、土地、红木、瓷器、字画、储蓄等实物和文化资产上。

中国的股市呢?就像我们前面分析的那样:股市只有在自由流动性的社会中才能成为真正的股市。所以无论你多么懂投资,你的理论在中国股市里都不适用。我们也千万不能用西方那套思维去解读中国股市。

同样的道理,为什么很多人看不透中国房价趋势呢?因为太多人的经济知识,都是西方的经济理论,用西方经济的逻辑去分析中国楼市,当然错误百出,或者认为这是怪胎。

我们必须从文明发源处去看楼市和股市,才能看透其本质。

对于中国来说,楼市是财富的蓄水池,股市就像开闸放洪的水。随着财富的增加,蓄水池(房市)的水位也会不断增高。当水位即将到达上警戒线时,就要开闸泄洪,放水灌溉一下社会。当水位低于下警戒线时,就需要再继续蓄水。

两害相权取其轻。如果两者同时面临问题,我们宁可给水库增加水,让水溢出,也不会无限放水,变成洪水泛滥。

那么,中国房地产究竟该何去何从?相信大家已经有了自己的答案。

# 利润接近零

在之前,一个人的成功,往往靠三大因素:机遇、胆识和努力。

但这三大要素如今都在被一一化解:当数据信息越来越对称,机会越来越平等,人们的见识越来越接近,各种区隔越来越少,机遇就失去了作用;当分工越来越细致、周密,法律、法规越来越完善,社会告别了野蛮生长期,胆识就失去了作用;当人人都在努力拼命,人人都明白只有靠自己的时候,你的个人努力也不值一提。

另外,随着社会的开放,未来无论做什么,竞争都会越来越激烈,而当竞争绝对充分的时候,所有的利润都会无限接近社会的平均利润率。

每个行业都会有一个利润的红利期,往往发生在一个行业的初期,处于爆发阶段。当从业人员较少,社会需求较大时,这个阶段的利润率就比较高。

由于利润率较大,就会有很多人插足进来,随着从业的人越来越多,市场开始趋向饱和,竞争越来越激烈。于是,利润率就会大幅下降。降到什么时候为止呢?降到接近整个社会的平均利润率为止。

所谓社会的平均利润率,就是在这个社会上,一个人能够维持基本生活所需的收入。比如,对于现在的中国来说,这个收入水平在 6000—10000 元之间,无论你之前是从事什么暴利行业的,都会被拉到这个水平。

未来老板的收入也会无限接近员工的收入,双方一起无限接近社会的平均劳动收入。

未来,我们面对的是一个什么样的世界?

那是一个三无的世界:无生意可做,无工可打,无机可投。

所谓无生意可做,原因是传统社会的信息是不对称的,这导致社会的「供给」和「需求」始终是错位的,这就需要「生意人」去对接,并从中谋利。而在互联网时代,信息变得对称又透明,「供给」和「需求」都被精准连接,已经不需要生意人去对接了,于是「中间环节」和「赚差价」都不存在了。

所谓无工可打,原因是传统社会遵循的是大工业逻辑,很多人作为员工只需要执行公司命令就可以了,他们并不需要承担结果,这就是打工的本质。而在未来的时代,随着个体开始崛起,公司开始平台化,你必须主动思考和去解决问题,并发挥特长为社会创造价值,否则你就没有存在的价值,如果未来你还是抱着打工者的心态,那么一定会被淘汰。

所谓无机可投,原因是传统社会里有很多不完善的地方,导致每个行业都有潜规则,这让很多人可以通过不正当途径获得灰色收入。而在未来,随着中国法律、法规变得越来越完善,投机的空间会越来越小。未来,所有人都要适应在公开、透明的情况下展开活动。

那么,在这种情况之下,人就不能有所作为了吗?恰恰不是。我认为,未来一个人要想改变命运,既不是靠拼命,也不是靠机遇,否则人类会永远陷入竞争和踩挤的陷阱里,在互相对抗和算计的轮回里无法自拔。

未来是价值回归的时代,我们必须调整好自己的心态,不要再奢望一夜暴富,而是要脚踏实地地去创造。

未来我们只有一条出路,那就是把自己定位为价值创造者,你能取得多大的成就,完全取决于你创造的价值。

中国正在告别野蛮生长期,同时正在进入价值重塑期,未来那些一心只想发财的人,可能再也赚不到钱。而那些时刻为社会创造价值的人,一定能获得等同的地位和回报。

# 商业时代

商业 1.0 时代

思维——利润差价

载体:实体产品

市场:卖方市场

这个时代大概是从改革开放开始,一直持续到 2002 年。这是一个「产品」相对短缺的阶段,此时劳动力充沛又廉价,资源的开发效率较低,人们的需求也很粗放。

因为社会需要「产品」去填充各个角落,在这种大背景之下,产品的「生产」和「流通」就很重要。负责「生产」的就是各种工厂,负责「流通」的就是各种经销商、批发商、实体店等。

供不应求的状况决定了整个市场是「卖方市场」。这个阶段财富的核心关键词是:差价。工厂赚取的是从「原材料」到「成品」的差价,商家赚取的是产品从「原产地」到「目的地」的差价。当然,他们都大大地促进了商品的流通,维系了商业繁荣,在支撑起经济发展的同时,也给自己创造了财富。

既然是「差价型」思维,商人比拼的就是消息的灵通性。

商业 2.0 时代

思维——单品海量

载体:传统互联网

市场:第三方市场

从互联网诞生的那一刻起,这个世界的规则就注定要被改写。

从 2003 年开始,中国就在逐渐进入电子商务时代。此时社会的「生产」方式依然没有变,但「消费」方式发生了重大变化。

这时,各种第三方电商平台产品(包括价格、质量)在你面前一览无余,它彻底撕裂了「人为」和「区域」制造的差价信息,再加上交易的信息化和物流快递的发展,商品流通得更快了。

而此时,中国实体店经过 30 年的发展,同质化现象越来越严重,于是,一大批单纯靠「信息不对称」来赚取差价的店家被淘汰了。

然而,一批人倒下,就必然会有另一批人站起来,这是铁律。何况在当时开「网店」是免费的,成本几乎为零。于是,第一批从「实体店」转型到「网店」的人,都是最懂这个时代的人,理所当然地收获了财富。

由于电子商务不受现实空间限制,很容易产生边际效应(即产品销量越大成本越低),所以很适合「单品海量」的产品,商家们最喜欢的就是「爆款」产品。

此时还有一个重大变化就是:由于第三方平台主导着流量和排名,「卖方市场」迅速变成了「第三方市场」。「谁主导市场,谁就在分钱」,这也是个铁律。所以,我们可以看到一个现象:商家并没赚多少钱,却把阿里巴巴、京东等第三方平台养肥了。

但是,电商时代的商品都是大同小异的,消费者比价太容易,导致价格战越来越激烈,「网店」只有不断地促销、刷单才能产生交易量,所以「网店」的成本不断攀升。

最终,电商又把大家带入了价格战、同质化的怪圈。

此时还有一个变化在发生:由于产品一直在加速生产,已经由「短缺」步入了「饱和」阶段。当消费者的选择余地越来越大时,必然开始挑三拣四,这也就意味着一种微妙的变化又将发生了。

商业 3.0 时代

思维——增值服务

载体:产品增值

市场:买方市场

随着市场上的产品越来越多,产品开始出现「过剩」现象了,这就是「产能过剩」。产能过剩是件很可怕的事。在供大于求的情况下,无论是什么产品都急于出手,反正你不卖有人卖,你不做有人做。

所以,这个阶段一定有很多传统工厂要倒闭,很多粗放式的生产方式要被淘汰。

但大家不要忽略了,此时,还有一个很重要的变化:那就是大家的消费水平也在升级,也就是说,传统方式生产的产品,已经越来越无法满足人们日益增长的需求。

以前,人们的需求是如何更加快捷地找到产品,买到性价比更高的产品。如今,产品已经足够丰富、足够多,而且都在打折促销。人们的需求升级成了如何找到「好产品」,或者说是找到属于自己的产品,这就是眼下的状态。

所以,那些能给大家带来「价值」的产品,仍然是短缺的。这就需要我们给产品增值,我认为大概有两个方向。

第一,纵深化。将产品的某种功能做到极致,越来越聚焦,越来越专注,就服务特定人群,引领行业的不断细分。

第二,定制化。给消费者量体裁衣,走个性化生产路线,今后的产品不再是整齐划一的一刀切模式,这也是工业 4.0 时代的生产特征。

以上两个方向会导致市场的分化,所谓市场分化就是说,市场「大一统」的时代正在结束。

今后的产品很难再有统一的标准,这一群消费者喜欢的「产品」跟另一群消费者喜欢的「产品」是完全不同的,多元化是这个时代最大的特征。

大家彼此之间将完全搞不懂对方在搞什么,当然了,我们也不需要懂,你只要生活在属于你的世界里就可以了。

由于商业的细分,商家同质化竞争和价格战的情况将越来越少了,都属于「闷声发大财」型的。

从这里我们可以发现,商业重心已经转移到消费者这一端,「第三方市场」主导的市场正在变成「买方市场」主导。现在最关键的问题是如何圈住自己的消费者。其实,最好的切入点就是需求,一切从消费者的需求出发。

以前是先做产品,再去找消费者;今后是先找消费者,再去定做产品,这完全是倒施逆行的逻辑。

我们终于发现:商业的核心最终从做「产品」切换成了聚「群众」。

而按照「谁主导市场,谁就在分钱」的定律,此时,消费者将大大受益,并且有权分得产品利润的一杯羹。进而言之,谁拥有聚合消费者的能力,谁就掌控了未来商业。

商业 4.0 时代

思维——号召力

载体:社交媒体

市场:信用市场

马云曾说:「如果说中国还有什么红利没有被发掘的话,信任、互信是最大的未开发财富。」

的确,中国未来还有一波最大的红利:社会信用关系的重建。为什么这样说呢?

之前,第三方平台的特点是「强信息、弱关系」,如淘宝、大众点评,都是在强调商品信息的正确性、公开性,但平台上的消费者之间的联动比较小,由于消费者过于分散,只能任由平台发号施令。哪个商品做活动了,哪个商品能上首页,哪个商品必须得下线,都是第三方平台说了算。

而社交媒体已经让大家进入「弱信息,强关系」的时代,我们每一个人都是一个独立的 IP (3) 、一个独立的经济体,而且彼此联动性很强。我们获取信息的方式更多地来自「分享」,而不是「告知」。

正如上面所言,既然商业核心机理从「物以类聚」过度到了「人以群分」,那么,今后的消费者也必将从分散走向联盟。作为一个消费者,今天你不主动把别人团结过来,明天别人也会把你团结过去。请记住,这一点非常关键,因为谁主导了消费者,谁就主导了市场,谁就能来分钱。

看看现在的淘宝吧,排名靠前的店铺都被「网红」把持了,再看看现在的大 V、自媒体、各种小众品牌的崛起等,都是这种特征的直接反映。

什么才是团结别人的最好工具?当然是信用和影响力。

一方面,如今的信用市场还未建立;另一方面,大家彼此之间失去了信任。我们都把大量精力、成本放在了如何互动、提防上了。但在区块链、云计算等新技术的驱使下,信用市场必将一步步建立。今后的市场一定是「信用市场」。

未来最好的营销是内容,最好的内容是产品,最好的产品则是信用。

未来对于每个人来说,信用会变得格外重要。同时,「链接力」将成为未来最重要的一种能力。

未来我们经营的不再是产品,而是一种精神和文化符号,产品只是一种副产品。

有人会问,拼多多算哪一阶段的产物呢?其实拼多多具备了这一阶段的特征,因为它的驱动力是「低价 + 团购」。它具备了社交的属性,但它并不是这一阶段的代表,因为它的产品不具备品牌化、定制化、品质化的特征,拼多多只是特定经济环境下的产物,它并不代表未来。

思维——小众品牌

我们现在面对的一切经济问题,都可以用一种手段来解决,那就是个体化。

顺应个体化这个大浪潮,中国未来将有海量的中小品牌崛起,这才是未来商业的大势所趋。

在过去,十个亿的市场规模是由五十个客户构成的,三年以后,十个亿规模的市场将是由两千个客户构成的。

社会已经在越来越细分,点对点的衔接越来越细致,这是海量小众品牌崛起的基础。

未来,这些中小品牌将非常专注、聚焦于某一品类,具备垂直打通、纵向整合的能力。比如,从原料来源、设计开发,到生产营销,再到客服、后期维护,而且它们的背后可能不是一家工厂,可能是一个工厂群,都能随时被它们整合。

其次,这些小众品牌将非常善于把人聚合起来,它们用内容和用户建立起强关联。当然,它们懂得如何更好地运用群众的力量,每一句话都蕴含了发动群众的艺术。

当众多品牌开始百花齐放、百家争鸣时,平台就可以发挥更宏观的作用了。平台可以通过数据统计把同类的需求放到一起,进行协同生产,如原材料采集、下单时间等。这些看似碎片化的生产环节,又可以具有强大的「计划性」了。而且平台还有一个核心的任务:给平台上的各个环节的企业进行授信,降低大家不必要的磨合损耗的成本。

平台还可以根据零售数据做精准匹配,促成「消费端」向「生产端」的渗透,帮助「生产端」做各种计划准备。这就会让「零售」和「生产」之间的协同效率增加,这解决的是无效产能,使库存最优化。

这就是「市场经济」中的「计划经济」,非常符合辩证的哲学。

总之,只有抓住商业变化的精髓,深刻理解商业变化规律,才能在市场上立于不败之地。

可以发现,公开化、共享化、平台化、定制化,是未来商业的大势所趋。

从大的方面来说,这就好比逆向打通了中国经济的任督二脉,唤醒中国进入下一个春天。

从小的方面来说,这种新型的商业趋势,必将引起一场人们个性和兴趣的解放,包括个人价值的实现。

# 商业版图的改变

中国经济上半场的特点,可以用四个字概括,那就是:跑马圈地

中国经济原始积累的过程有两大红利:第一,人头红利,针对的是制造业和房地产;第二,流量红利,针对的是互联网行业

很客观的事实,就是:中国人口高速增长的时代已经一去不返。

尽管我们已全面实施了二孩政策,但从 2017 年开始,中国人口自然增长率明显回落,只有 5.32‰。

与此同时,北京、上海这两座超级大都市已经在控制人口增长,数据显示北京和上海两地常住人口 40 年以来首次同时出现负增长。

很多事物的拐点,往往从人口的拐点开始。

2018 年之前的房地产,依靠的是大量人口进城的红利,而现在随着人口增长的放缓,这种模式也走到了尽头。

2018 年之前的制造业,依靠的也是大量廉价劳动力的红利,而现在随着劳动力的减少,用工成本就水涨船高,劳动密集型企业彻底没了出路。

既然外部流入人口越来越少,那就只剩一个出路:盘活存量。

房企开始进入「盘活存量」和「生活服务」的时代,从「拿地建房」向「构建生活社区」升级。

未来城市的特点,用一个词可以概括:人以群分。城市一定会出现一个个不同主题的群居社区,并需要有配套的服务,然后更好地服务好这一群人,这才是房企应该思考的问题。

同理,制造型企业也必须看清未来产品的方向,定制化和个性化产品占的比重将越来越大。「按需生产」的时代正一点点接近,必须找到自己服务的精准人群,建立链接。

我们已经明显地感觉到,现在的互联网行业,无论是成熟平台还是创业者,从外部获得流量的成本越来越高。

互联网的上半场,我们抢占的是用户规模,我们通过广告活动及奖励来不断提升下载量。

互联网的下半场,我们抢占的是用户时间,每个用户的停留和使用时间及频率,才是最关键的。

都说互联网的下半场是产业互联网,什么是产业互联网呢?简而言之,就是能够深刻改变实体行业的互联网。

互联网的优势是可以改变生产关系,改变生产关系就是优化资源配置,提升实体的供应效率、运作效率和协作效率。

在下半场,互联网开始进入「深挖用户」和「服务实体」的阶段。未来,那些能够彻底掌控实体供应链的互联网企业,那些能够真正提升实体运作效率的互联网企业,那些能够促进实体之间协作效率的企业,一定能胜出。

互联网的上半场,大家只顾去抢别人的地盘,天天忙着革别人的命,现在地盘抢得差不多了;互联网的下半场,轮到革自己的命了。

数年之前,传统企业就提出了「精细化管理」的概念,现在,互联网企业必须提出「精细化运营」的思路了。

# 商业的流体化

未来所有的东西都是一种流动的状态,包括各种平台、产品、服务,硬件、软件,有形的、无形的,都在从固定不变的,变成可以组装的、可以共享的、可以迭代的。

世界正在回到它最本源的状态——混沌的,流动的——不断地趋向于一种平衡,打破平衡,再形成新的平衡。生生不息,日夜循环。

世界正在从「大工业」时代过渡到「互联网」时代。

大工业时代遵循的逻辑是「占有大于一切」,而互联网时代遵循的逻辑是「连接大于拥有」。

大工业时代关注的是有形产品的生产和流通,有形的空间对它来说既是优势,也是一种阻碍;而互联网时代却可以把人、货物、现金、信息等一切有形和无形的东西「连接」起来,完全突破了物理空间的限制。

大工业时代需要占有大量实体产品和有形的资源,互联网时代最关键的不是你拥有了多少有形资源,而是你能配置和影响多少资源。资源属于谁并不重要,重要的是谁在使用资源,如何更高效地使用资源。

互联网时代注重的是流动和循环的效率,共享、分享才是大势所趋。每个人都只是一个信息节点。

于是,所有固化的、有形的壁垒都会被流动的、无形的力量所摧毁。没有任何东西能阻碍这股洪荒之力。

未来的世界是柔软的、流动的,所有的东西都在不断地流动、不断地迭代,变得不稳定,充满了各种不确定。

在未来整个流动的时代,人最珍贵的东西是什么呢?

第一是注意力,第二是感情。

我们将不再随便消耗我们的注意力,因为世界越来越丰富,注意力就会变得越来越分散,变得越来越稀缺。没有谁的一天是 25 个小时,而且没有哪一种技术可以增加我们的注意力。

未来的注意力就是金钱,金钱就是注意力

在情感方面,我们更不会轻易浪费自己的感情,因为未来很多东西都是被运算出来的,如找对象、找工作、找合伙人等。人发挥主观思想意识的空间将越来越少,我们将越来越少地去动真感情,大部分的时间我们都是在逢场作戏。

流体化的另一个特征是:互相渗透性。没有哪一个人可以无条件地主导他人,没有哪一方可以占据绝对的主动性。一切都是在互动中产生的,一切都是在协作中产生的,一切资源都将变得开放和共享。行业之间的界限越来越模糊,所有边界都被打开,互联互通是大势所趋。

在未来那个流动的世界里,再也没有所谓的经验,没有所谓的权威,没有所谓的标准。所有人都是新手,同时所有人也都是老手,大家永远都是公平的。

未来社会财富的流动性也会越来越快,首先,财富将变得越来越虚拟化。我们的财富经历了四个阶段:第一阶段是粮票时代,第二阶段是现金时代,第三阶段是不动产时代,第四阶段就是市值或估值时代。一旦到了第四阶段,人没有股权就很难富有,然而,股权时代的财富最大特征就是虚拟化、流动化。

未来社会最重要的财富形式就是估值或市值,趋于虚拟和流动,只是一个数字而已。你拥有多少财富,并不代表你就可以随便花这些钱,而是代表你有支配这些钱的权利,财富多少意味着调动资源的大小。究其本质,是整个社会越来越流动化、公开化。

在流动的世界里,未来只有现金流,没有利润率。在流体化的时代,未来会有很多生意,表面上看都是不赚钱的。比如,很多卖课程的把课程变成免费,然后靠运作社群赚钱。如果你还在依靠表面生意赚钱,那么,你必须早一天实现转型,否则总有一天你会被别人颠覆。

在未来那个无常的社会里,你要想有存在价值,必须先能创造价值。让自己永远都有价值,是立于不败之地的根本。

未来我们能做的只有终身学习,不断迭代自己的认知。当你一直处于学习的状态时,你也变成了一个流动的人,永远保持饥渴和虚无的状态,你就能和世界融为一体。

# 未来你靠什么而活?

未来的社会只有三种企业角色:一、负责国计民生的资源型企业,如国企、央企;二、负责商品流通的平台型企业,如阿里巴巴、京东、拼多多;三、在各种细分领域里有独特产品或深度服务的小公司,如价值主体。

除此之外,就是游离在各种平台上的个体,如网店主、自媒体达人、网约车司机、律师、设计师、会计师等。

如果以上这些都没有你的位置,你就应该考虑一下自己的未来定位了。

在社会不断向「平台 + 个体」的结构转变过程中,平台先淘汰掉了一部分人,如各级经销商、中介、经纪人等。

与此同时,平台又成全了很多个体户,如司机、设计师、律师、保姆、快递员、送餐员等。

也就是说,虽然大量中间商不存在了,大量的服务个体却出现了。

比如,由于产品越来越趋向定制化,所以大量产品设计师出现了;又如,由于产品的后期服务越来越重要,所以大量售后人员和客服出现了。

这就是变革时代的特征:一批人倒下,必然有另外一批人站起来。

平台的价值,就是通过运营,能够精准地将生产者和消费者对接起来。于是,定制化、个性化产品越来越多,并且商家努力的方向就是千方百计地提升产品的附加值,这就是点对点的服务。

而在之前,这是不可能实现的,因为生产者和消费者是无法直接对接的,所以只有让大量的中间商去做对接,让大量的企业去做对接,但他们只充当了桥梁的作用,并没有提升产品的附加值。

也就是说,原来的投机倒把、囤积居奇、反经济周期、低买高卖等差价思维,正在被一种与众不同的创造性思维取代。

由于 5G 等新技术的出现,未来所谓的商业会越来越趋向于流体化。线上有两个流体:信息流、货币流;线下也有两个流体:产品流、人群流。线上的两股流体和线下的两股流体互相依托。

世界的本质就是流体的,这个世界在回归它最本质的属性:流动的、变化的、生生不息。

信息、货币、产品、人群,这四种东西会流动得越来越快,中间的阻隔会越来越少。未来商家的最大价值就是促进流体流动,商家必须成为流体的推动力,而不是各种阻碍。

未来,我们唯一要做的,就是要成为一个价值放大者,即要使产品或服务流经你这里时能把它的价值放大,这样流体才有流经你这里的价值。而不是成为一个阻隔,让人家必须从你这里流通,然后去收买路钱。

# 赚钱的六个层次

人赚钱的方式可以划分为六个层级:第一个层级的人,靠力气赚钱,如在工地上搬砖的工人;第二个层级的人,靠技能赚钱,如掌握一定技术的工人、月嫂等;第三个层级的人,靠经验赚钱,如帮很多人打官司的律师、做过很多手术的医生等;第四个层级的人,靠能力赚钱,如老板就是靠管理能力,创业者靠创业能力;第五个层级的人,靠名字赚钱,如作家、画家、艺术家等,越有名气,作品越值钱;第六个层级的人,靠脸面赚钱,这种人不需要力气,只要露脸就可以赚钱,如明星。

# 二十个人性的误区

一、我们总以为,消费者要的是货真价实的产品。实际上,消费者要的是一种幻象,要的是能把他带入一个故事场景里的产品。反复诉说自己的产品质量,不如说一个好故事。

二、我们总以为,观众要的是有思想的好作品。实际上,观众要的是一种心理上的自我安慰,需要的是自我陶醉,大家宁可沉溺在各种虚设里不可自拔,也不愿意面对现实。所以,越有思想的文艺作品,越无人问津,而越肤浅的作品,票房越高。

三、我们总以为,大众最想要的是各种真相,因此,我们努力呈现真相。实际上,我们通过《乌合之众》可以了解到,大众追求的从来不是什么真相,而是各种情绪和欲望,是盲从、偏执和狂热。那些让大家感觉不爽的「真相」,大家一直充耳不闻。相反,那些能给大众带来美好幻想的谎言,却可以让大众狂热。

四、我们总以为,大众都是成年人,应该理性且成熟。实际上,很多大众的心理都还停留在婴儿阶段。他们既不想得到价值,也不想听什么道理,他们只想得到好处。他们就像嗷嗷待哺的孩子,一旦想得到好处了,就会哭闹,而妈妈就得赶紧去哄他们,或者给一口奶吃,他们马上就会喜笑颜开,满足地睡去。

五、我们总以为,在这个信息时代,每个人都能随时随地获取各种信息。实际上,越是在这样一个似乎什么都能看得见的时代,我们越什么都看不见。信息自由传播的时代,并不意味着价值可以自由传播。相反,那些粗俗下流的内容却无孔不入。

六、我们总以为,遇事讲道理是有用的。实际上,只有当别人也讲道理,当大家都遵守规则的时候,讲道理才是有用的。只有对文明人才能讲道理,面对流氓和小人,你讲不清道理。

七、我们总以为,一切关系都是逻辑关系或者情理关系。实际上,很多关系都是利益关系。你伤害了谁的利益就是谁的敌人;你符合了谁的利益,就是谁的朋友。

八、我们总以为,做人最重要的是靠能力,做事最重要的是靠拼搏。实际上,你和谁结成了利益共同体,才决定了你的发展。因此,你不能只埋头做事,你还需要不断地抬头看势,这就是识时务者为俊杰。

九、我们总以为,规则是用来遵守的。实际上,规则是用来打破的,就看你会不会打破。

十、我们总以为,人的自由度越高,社会就越平等。实际上,当人的综合素养还没到一定的阶段,当人还没普遍地学会自律的时候,绝对的自由只能导致绝对的奴役。人都被各种商业利益操控,人性将被约束。

十一、我们总以为,给孩子创造最好的条件,把自己最好的都留给孩子,就是父母最大的责任,心里才能踏实。实际上,世上最大的悲剧是让孩子「蠢而多财」。自古以来,企图给孩子留一笔钱,梦想让孩子也可以富贵逍遥的人,基本上没有实现的。相反,那些留下良好习惯、家风的家族,却可以昌盛多年。

十二、我们总以为,给孩子讲各种大道理,就可以让孩子好好读书,热爱学习。实际上,孩子从来不会听你说,他们只会模仿你。因此,大人教育孩子读书的最好办法,就是以身作则。而多少家长自己从来不读书,时间都花费在酒桌上、牌桌上和各种低级趣味的娱乐上,却指望着孩子的精神趣味在书本上,这太荒谬了。

十三、我们总以为,一个老实人往往是比较靠谱的。实际上,很多老实人都是因为没见过世面或没有机会而老实,他们一旦有了机会,往往立刻变了样。真正的老实人是经历过风风雨雨后依然守得住自己初心的那种人,是见过各种世面和诱惑后依然淡定和坦然的人。

十四、我们总以为,那些对我们恭敬的人,都是真正的朋友,都是应该善待的客人。实际上,那些喜欢用语言来讨好我们的人,往往口蜜腹剑,内心对我们也许已是百般抵触。相反,那些对我们总是直言不讳,让我们感到不爽的人,往往才是成全我们的贵人。「良药苦口利于病,忠言逆耳利于行。」就像唐太宗离不开魏征,我们每个人都需要一面镜子。

十五、我们总以为,一起合谋做了坏事而没被发现,一切就会过去。实际上,只要有不正当利益,就会有分赃,一旦分赃不均,就会引发仇恨和忌恨,从而导致报复,事情总会有败露的那一天。因此,做一个堂堂正正的人,才是最明智的。

十六、我们总以为,谈恋爱就要找个一心一意,并且毫无保留对自己好的人。实际上,这就是悲剧的引子。因为,只要有牺牲,就意味着不公,最后总会失衡,甚至拔刀相见。

十七、我们总以为,那些对天发誓的爱情最值得珍惜。实际上,真正会爱别人的人,一定会先爱自己,会经过百般努力让自己成为对方喜欢的模样,而不是打着爱别人的名义去要挟别人来满足自己。爱情的最高境界,是两个人通过相互激励和影响,最后都变成了彼此喜欢的模样。

十八、我们总以为,当一个人无缘无故地为自己付出时,是因为自己遇到了一个好人,遇到了对的人,然后接受得心安理得。实际上,在当今社会里,如果一个人总是无条件地对你好,往往会以对你好的名义窥探你拥有的东西。世界上没有无缘无故的忠诚,人和人最健康、最长久的关系,就是互相成全,而不是牺牲一方成全另一方。

十九、我们总以为,要尽最大努力地帮助每一个人。实际上,当你给一个人提供了帮助,远远超过了困境对他的限制,他就会对困境麻木,甚至放弃突破困境的意愿,对你形成依赖,由感激变成理所当然。当你不再施舍的时候,他就会和你反目成仇。因此,帮助一个人的最高境界就是帮他实现自力更生,然后离开。

二十、我们总以为,简简单单地做一个好人就够了。实际上,这个世界对好人的要求真的是非常严苛的。如果你被当成一个好人,你必须做到完美无缺,大家会把所有的道德枷锁套在你身上。哪天你要是有一丝一毫没有做到完美,你所有的努力都会前功尽弃。一个人有多大的善良,就必须有多高的智商与之相匹配,更要有保护自己的能力。

# 赛博

# 快速开发框架评价

无利益相关,这几天正好在欣赏若依这个框架,顺手答一下.

不管大家喜不喜欢这种开源的快速开发框架,恐怕都很难否认一点:这种框架中的佼佼者,里面是有着很多最佳实践的.

姑且不谈底层的计算机基础和编程语言基础的学习,在学习框架和库这个层面上(因为题主问的就是学习 SpringBoot),文档和示例是必不可少的,文档告诉你在语法层面可以怎么做,示例告诉你在经验层面最好怎么做.

学习框架和库,核心是上手实践. 这有两种选择,一是看着文档,从无到有地实现功能,这难免要试错犯错,但掌握得更扎实. 二是看着示例,照猫画虎地实现功能,这能少走弯路,但是认知效果较差.

人的学习进步,以理论联系实践效果最佳,理论由文档和书籍提供,实践又分为直接经验和间接经验. 亲自去编码去试错,这是宝贵的直接经验,而优秀的开源项目的源码和文档,则提供了宝贵的间接经验.

我认为最好的学习方法,是先自己闭门造车,把功能做完,然后再开眼看世界,看别人是怎么做的. 两相比较,去思考别人的做法好在哪里,其中包含了哪些面向对象的或者软件工程的理论,自己能从中学到哪些东西,怎样用学到的这些东西改进自己的代码. 这看起来是弯路,但其实是捷径,能把理论和实践、直接经验和间接经验有效地结合在一起.

若依这种优秀的快速开发框架,这十多年来我看过不少,它们的主要组成部分都是技术层面的 CRUD 封装,和业务层面的权限字典等通用功能. 可以说用做管理系统,它们已经接近当下程序员所能做到的极限了. 这不是一个溢美的结论,优秀的快速开发框架太多了,横向比较可知不会有质的突破了. 而学习 SpringBoot,用 SpringBoot 做项目,几乎不可能不做 CRUD. 所以只要目的是学习和使用 SpringBoot,那去阅读和理解这些优秀框架的源码,就一定能从中吸收到营养.

但必须注意,不能停留在使用快速开发框架的舒适窝里. 如果只成为一个若依程序员而不是一个 SpringBoot 程序员,只是一个 SpringBoot 程序员而不是一个 Java 程序员,只是一个 Java 程序员而不是一个通用的程序员,那学习和成长都会遇到瓶颈. 越是傻瓜式的框架,越有把需求实现员隔开于技术的本质的副作用. 从 JSP+Servlet 到 SSH,从 SSH 到 SpringBoot,从 SpringBoot 到若依,我们实现需求越来越快了,同时深入底层和亲手封装的次数也越来越少了,照猫画虎,搭一搭积木,钱就到手了,这是赚钱的愉悦,但不是技术长进的愉悦.

所以不要满足于使用,而要追求于吃透,使用若依简单,吃透若依不简单,它里面包含了很多对编程语言、面向对象、软件工程、业务逻辑的深入理解,体现出了作者深厚的内功. 如果真的想看透它的门道,不止是 SpringBoot,它能倒逼你去读很多书、看很多文档、理解很多业务. 正是因为简单的背后有很多东西,所以它才能让你实现需求起来如此简单.

快速开发框架确实烂大街,也确实无非是 CRUD、代码生成和通用业务,确实容易让有追求的程序员看不起,但不得不承认的是,这种快速开发框架,大部分程序员也是没能力从零开始手动封装一个的. 与此同时,它又没有像真正顶级的开源项目那样深奥莫测、高不可攀,大部分程序员努努力,下下功夫,封装一个低配版出来,还是有希望的. 这个难度,正好适合于作为普通程序员的学习材料,只要避免在学习过程中动眼比动手多,看得比敲得多就可以了.

所以我个人的建议是,对它采用对待好学生的作业的态度,你先自己试着把作业做出来,然后再去看,看了也不要停留于抄,而是琢磨、理解,最后自己再上手把自己的作业改好. 做习题而没有答案,那是不行的,上来就抄答案,那更是不行的. 在管理系统和 CRUD 这个层面,说若依这种优秀的快速开发框架的源码是答案,恐怕大差不差,至少说它是好学生的作业,不会是夸大其词.

至于 SpringBoot 的文档和源码,那是教材正文啊. 正文和习题答案,当然缺一不可. 无论编程,还是其他方面,如果你学习的时候不得要领,就想想教材的组织方式,最重要的一点是,一定要亲手做题.

嗯, 当初学习了若依, 除了拿来对付期末作业之外的用处竟然还有, 那就是对付公司的内部框架, 确实有可以共通的地方.

# 关于要不要刷算法题

几乎所有的计算机专业笔试都会带上算法题.

关于算法题的声音历来呈对立态势. 有人说数据结构很实用,说算法能锻炼思维,锻炼在压力环境下解决问题的能力,但也有人说算法题都是花招之类,说一块奖牌没多大用.

虽然声音不统一,但是可见的是,只要有笔试,不管是申请实验室还是找工作,算法题是常客. 所以,即使不从纯粹的学术角度出发,在刚进入大学的时候,多刷算法题还是对自己的发展还是很有帮助的.

如果是刚刚入坑计软网的小白,首先推荐去洛谷的题单,把官方题单刷一遍. 刚开始刷题时,即使自己完成了,也要看题解中是否有更优秀的方案(一般是没有,leetcode 这种时间卡得松的会有);如果独立完成不了,思考最多 10 分钟,去把题解看懂,不要觉得气馁,因为很多题目都需要特定的数据结构和算法,你只是不知道而已.

鼠鼠我啊, 真的是寄了, 成也算法, 败也算法.

# 本科生算法学习

发现很多吧里老哥对算法有误解。作为二本菜狗我讲一下自己的见解, 大一大二的同学可以参考一下。

首先明确的是本科是进不了算法岗的,算法对于本科的作用是应付笔试和面试。
对于所有同学,如果想打 acm,或者已经入队了,推荐刷取。比赛完后停。

对于二本学院及以下或接近二本的同学,我是不推荐刷算法的。面对现实,招你们的公司都是不看算法的。我至今实习给面试的所有公司中,有笔试且有算法的 hot100 水平随便秒,大部分是没笔试或笔试不考算法。至于面试,没有一家问算法。

至于工作以后跳槽换工作要考算法,可以以后再刷,你本科期间实在要刷,我觉得 hot100 刷两遍绰绰有余
一本重本 91 的同学,你们想冲大厂,毫无疑问算法是要刷的,我做过美团的海笔,还是有难度的。面试没面过,预估 hot100 瞬秒的水平。

我反在大学期间多次接触算法, 就算原本数学天赋不行也借此机会大幅提升了能力, 因此我对于算法这块还是有信心的.

你有信心个屁 ‍

# 设计模式拾遗 - 实战建议

# 基于接口而非实现编程

除此之外,很多人在定义接口的时候,希望通过实现类来反推接口的定义。先把实现类写好,然后看实现类中有哪些方法,照抄到接口定义中。如果按照这种思考方式,就有可能导致接口定义不够抽象,依赖具体的实现。这样的接口设计就没有意义了。不过,如果你觉得这种思考方式更加顺畅,那也没问题,只是将实现类的方法搬移到接口定义中的时候,要有选择性的搬移,不要将跟具体实现相关的方法搬移到接口中,比如 AliyunImageStore 中的 generateAccessToken() 方法。

# 如何给代码“解耦”?

封装与抽象

封装和抽象作为两个非常通用的设计思想,可以应用在很多设计场景中,比如系统、模块、lib、组件、接口、类等等的设计。封装和抽象可以有效地隐藏实现的复杂性,隔离实现的易变性,给依赖的模块提供稳定且易用的抽象接口

中间层

引入中间层能简化模块或类之间的依赖关系。下面这张图是引入中间层前后的依赖关系对比图。在引入数据存储中间层之前,A、B、C 三个模块都要依赖内存一级缓存、Redis 二级缓存、DB 持久化存储三个模块。在引入中间层之后,三个模块只需要依赖数据存储一个模块即可。从图上可以看出,中间层的引入明显地简化了依赖关系,让代码结构更加清晰

除此之外,我们在进行重构的时候,引入中间层可以起到过渡的作用,能够让开发和重构同步进行,不互相干扰。比如,某个接口设计得有问题,我们需要修改它的定义,同时,所有调用这个接口的代码都要做相应的改动。如果新开发的代码也用到这个接口,那开发就跟重构冲突了。为了让重构能小步快跑,我们可以分下面四个阶段来完成接口的修改。

  • 第一阶段:引入一个中间层,包裹老的接口,提供新的接口定义。
  • 第二阶段:新开发的代码依赖中间层提供的新接口。
  • 第三阶段:将依赖老接口的代码改为调用新接口。
  • 第四阶段:确保所有的代码都调用新接口之后,删除掉老的接口。

这样,每个阶段的开发工作量都不会很大,都可以在很短的时间内完成。重构跟开发冲突的概率也变小了。

模块化

模块化是构建复杂系统常用的手段。不仅在软件行业,在建筑、机械制造等行业,这个手段也非常有用。对于一个大型复杂系统来说,没有人能掌控所有的细节。之所以我们能搭建出如此复杂的系统,并且能维护得了,最主要的原因就是将系统划分成各个独立的模块,让不同的人负责不同的模块,这样即便在不了解全部细节的情况下,管理者也能协调各个模块,让整个系统有效运转。

其他设计思想和原则

“高内聚、松耦合”是一个非常重要的设计思想,能够有效提高代码的可读性和可维护性,缩小功能改动导致的代码改动范围。实际上,在前面的章节中,我们已经多次提到过这个设计思想。很多设计原则都以实现代码的“高内聚、松耦合”为目的。我们来一块总结回顾一下都有哪些原则。

# 代码行数越少就越“简单”吗?

我们先一起看一个例子。下面这三段代码可以实现同样一个功能:检查输入的字符串 ipAddress 是否是合法的 IP 地址。一个合法的 IP 地址由四个数字组成,并且通过“.”来进行分割。每组数字的取值范围是 0~255。第一组数字比较特殊,不允许为 0。对比这三段代码,你觉得哪一段代码最符合 KISS 原则呢?如果让你来实现这个功能,你会选择用哪种实现方法呢?你可以先自己思考一下,然后再看我下面的讲解。

// 第一种实现方式: 使用正则表达式
public boolean isValidIpAddressV1(String ipAddress) {
  if (StringUtils.isBlank(ipAddress)) return false;
  String regex = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."
          + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
          + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
          + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$";
  return ipAddress.matches(regex);
}

// 第二种实现方式: 使用现成的工具类
public boolean isValidIpAddressV2(String ipAddress) {
  if (StringUtils.isBlank(ipAddress)) return false;
  String[] ipUnits = StringUtils.split(ipAddress, '.');
  if (ipUnits.length != 4) {
    return false;
  }
  for (int i = 0; i < 4; ++i) {
    int ipUnitIntValue;
    try {
      ipUnitIntValue = Integer.parseInt(ipUnits[i]);
    } catch (NumberFormatException e) {
      return false;
    }
    if (ipUnitIntValue < 0 || ipUnitIntValue > 255) {
      return false;
    }
    if (i == 0 && ipUnitIntValue == 0) {
      return false;
    }
  }
  return true;
}

// 第三种实现方式: 不使用任何工具类
public boolean isValidIpAddressV3(String ipAddress) {
  char[] ipChars = ipAddress.toCharArray();
  int length = ipChars.length;
  int ipUnitIntValue = -1;
  boolean isFirstUnit = true;
  int unitsCount = 0;
  for (int i = 0; i < length; ++i) {
    char c = ipChars[i];
    if (c == '.') {
      if (ipUnitIntValue < 0 || ipUnitIntValue > 255) return false;
      if (isFirstUnit && ipUnitIntValue == 0) return false;
      if (isFirstUnit) isFirstUnit = false;
      ipUnitIntValue = -1;
      unitsCount++;
      continue;
    }
    if (c < '0' || c > '9') {
      return false;
    }
    if (ipUnitIntValue == -1) ipUnitIntValue = 0;
    ipUnitIntValue = ipUnitIntValue * 10 + (c - '0');
  }
  if (ipUnitIntValue < 0 || ipUnitIntValue > 255) return false;
  if (unitsCount != 3) return false;
  return true;
}
  1. 第一种实现方式利用的是正则表达式,只用三行代码就把这个问题搞定了。它的代码行数最少,那是不是就最符合 KISS 原则呢?答案是否定的。虽然代码行数最少,看似最简单,实际上却很复杂。这正是因为它使用了正则表达式。
  2. 一方面,正则表达式本身是比较复杂的,写出完全没有 bug 的正则表达本身就比较有挑战;另一方面,并不是每个程序员都精通正则表达式。对于不怎么懂正则表达式的同事来说,看懂并且维护这段正则表达式是比较困难的。这种实现方式会导致代码的可读性和可维护性变差,所以,从 KISS 原则的设计初衷上来讲,这种实现方式并不符合 KISS 原则。
  3. 讲完了第一种实现方式,我们再来看下其他两种实现方式。
  4. 第二种实现方式使用了 StringUtils 类、Integer 类提供的一些现成的工具函数,来处理 IP 地址字符串。第三种实现方式,不使用任何工具函数,而是通过逐一处理 IP 地址中的字符,来判断是否合法。从代码行数上来说,这两种方式差不多。但是,第三种要比第二种更加有难度,更容易写出 bug。从可读性上来说,第二种实现方式的代码逻辑更清晰、更好理解。所以,在这两种实现方式中,第二种实现方式更加“简单”,更加符合 KISS 原则。
  5. 不过,你可能会说,第三种实现方式虽然实现起来稍微有点复杂,但性能要比第二种实现方式高一些啊。从性能的角度来说,选择第三种实现方式是不是更好些呢?在回答这个问题之前,我先解释一下,为什么说第三种实现方式性能会更高一些。一般来说,工具类的功能都比较通用和全面,所以,在代码实现上,需要考虑和处理更多的细节,执行效率就会有所影响。而第三种实现方式,完全是自己操作底层字符,只针对 IP 地址这一种格式的数据输入来做处理,没有太多多余的函数调用和其他不必要的处理逻辑,所以,在执行效率上,这种类似定制化的处理代码方式肯定比通用的工具类要高些。
  6. 不过,尽管第三种实现方式性能更高些,但我还是更倾向于选择第二种实现方法。那是因为第三种实现方式实际上是一种过度优化。除非 isValidIpAddress() 函数是影响系统性能的瓶颈代码,否则,这样优化的投入产出比并不高,增加了代码实现的难度、牺牲了代码的可读性,性能上的提升却并不明显。

# 如何写出满足 KISS 原则的代码?

实际上,我们前面已经讲到了一些方法。这里我稍微总结一下。

  • 不要使用同事可能不懂的技术来实现代码。比如前面例子中的正则表达式,还有一些编程语言中过于高级的语法等。
  • 不要重复造轮子,要善于使用已经有的工具类库。经验证明,自己去实现这些类库,出 bug 的概率会更高,维护的成本也比较高。
  • 不要过度优化。不要过度使用一些奇技淫巧(比如,位运算代替算术运算、复杂的条件语句代替 if-else、使用一些过于底层的函数等)来优化代码,牺牲代码的可读性。
  • 实际上,代码是否足够简单是一个挺主观的评判。同样的代码,有的人觉得简单,有的人觉得不够简单。而往往自己编写的代码,自己都会觉得够简单。所以,评判代码是否简单,还有一个很有效的间接方法,那就是 code review。如果在 code review 的时候,同事对你的代码有很多疑问,那就说明你的代码有可能不够“简单”,需要优化啦。

我错了我错了, 之后写 Dirty Code

# 如何实现一个简单的 DI 容器?

用 Java 语言来实现一个简单的 DI 容器,核心逻辑只需要包括这样两个部分:配置文件解析、根据配置文件通过“反射”语法来创建对象。

# 最小原型设计

因为我们主要是讲解设计模式,所以,在今天的讲解中,我们只实现一个 DI 容器的最小原型。像 Spring 框架这样的 DI 容器,它支持的配置格式非常灵活和复杂。为了简化代码实现,重点讲解原理,在最小原型中,我们只支持下面配置文件中涉及的配置语法。

配置文件beans.xml
<beans>
   <bean id="rateLimiter" class="com.xzg.RateLimiter">
      <constructor-arg ref="redisCounter"/>
   </bean>

   <bean id="redisCounter" class="com.xzg.redisCounter" scope="singleton" lazy-init="true">
     <constructor-arg type="String" value="127.0.0.1">
     <constructor-arg type="int" value=1234>
   </bean>
</bean

最小原型的使用方式跟 Spring 框架非常类似,示例代码如下所示:

public class Demo {
  public static void main(String[] args) {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
            "beans.xml");
    RateLimiter rateLimiter = (RateLimiter) applicationContext.getBean("rateLimiter");
    rateLimiter.test();
    //...
  }
}

# 提供执行入口

面向对象设计的最后一步是:组装类并提供执行入口。在这里,执行入口就是一组暴露给外部使用的接口和类。通过刚刚的最小原型使用示例代码,我们可以看出,执行入口主要包含两部分:ApplicationContext 和 ClassPathXmlApplicationContext。其中,ApplicationContext 是接口,ClassPathXmlApplicationContext 是接口的实现类。两个类具体实现如下所示:

public interface ApplicationContext {
  Object getBean(String beanId);
}

public class ClassPathXmlApplicationContext implements ApplicationContext {
  private BeansFactory beansFactory;
  private BeanConfigParser beanConfigParser;

  public ClassPathXmlApplicationContext(String configLocation) {
    this.beansFactory = new BeansFactory();
    this.beanConfigParser = new XmlBeanConfigParser();
    loadBeanDefinitions(configLocation);
  }

  private void loadBeanDefinitions(String configLocation) {
    InputStream in = null;
    try {
      in = this.getClass().getResourceAsStream("/" + configLocation);
      if (in == null) {
        throw new RuntimeException("Can not find config file: " + configLocation);
      }
      List<BeanDefinition> beanDefinitions = beanConfigParser.parse(in);
      beansFactory.addBeanDefinitions(beanDefinitions);
    } finally {
      if (in != null) {
        try {
          in.close();
        } catch (IOException e) {
          // TODO: log error
        }
      }
    }
  }

  @Override
  public Object getBean(String beanId) {
    return beansFactory.getBean(beanId);
  }
}

从上面的代码中,我们可以看出,ClassPathXmlApplicationContext 负责组装 BeansFactory 和 BeanConfigParser 两个类,串联执行流程:从 classpath 中加载 XML 格式的配置文件,通过 BeanConfigParser 解析为统一的 BeanDefinition 格式,然后,BeansFactory 根据 BeanDefinition 来创建对象。

# 配置文件解析

配置文件解析主要包含 BeanConfigParser 接口和 XmlBeanConfigParser 实现类,负责将配置文件解析为 BeanDefinition 结构,以便 BeansFactory 根据这个结构来创建对象。配置文件的解析比较繁琐,不涉及我们要讲的理论知识,不是我们讲解的重点,所以这里我只给出两个类的大致设计思路,并未给出具体的实现代码。如果感兴趣的话,你可以自行补充完整。具体的代码框架如下所示:

public interface BeanConfigParser {
  List<BeanDefinition> parse(InputStream inputStream);
  List<BeanDefinition> parse(String configContent);
}

public class XmlBeanConfigParser implements BeanConfigParser {

  @Override
  public List<BeanDefinition> parse(InputStream inputStream) {
    String content = null;
    // TODO:...
    return parse(content);
  }

  @Override
  public List<BeanDefinition> parse(String configContent) {
    List<BeanDefinition> beanDefinitions = new ArrayList<>();
    // TODO:...
    return beanDefinitions;
  }

}

public class BeanDefinition {
  private String id;
  private String className;
  private List<ConstructorArg> constructorArgs = new ArrayList<>();
  private Scope scope = Scope.SINGLETON;
  private boolean lazyInit = false;
  // 省略必要的getter/setter/constructors

  public boolean isSingleton() {
    return scope.equals(Scope.SINGLETON);
  }


  public static enum Scope {
    SINGLETON,
    PROTOTYPE
  }

  public static class ConstructorArg {
    private boolean isRef;
    private Class type;
    private Object arg;
    // 省略必要的getter/setter/constructors
  }
}

# 核心工厂类设计

  1. 最后,我们来看,BeansFactory 是如何设计和实现的。这也是我们这个 DI 容器最核心的一个类了。它负责根据从配置文件解析得到的 BeanDefinition 来创建对象。
  2. 如果对象的 scope 属性是 singleton,那对象创建之后会缓存在 singletonObjects 这样一个 map 中,下次再请求此对象的时候,直接从 map 中取出返回,不需要重新创建。如果对象的 scope 属性是 prototype,那每次请求对象,BeansFactory 都会创建一个新的对象返回。
  3. 实际上,BeansFactory 创建对象用到的主要技术点就是 Java 中的反射语法:一种动态加载类和创建对象的机制。我们知道,JVM 在启动的时候会根据代码自动地加载类、创建对象。至于都要加载哪些类、创建哪些对象,这些都是在代码中写死的,或者说提前写好的。但是,如果某个对象的创建并不是写死在代码中,而是放到配置文件中,我们需要在程序运行期间,动态地根据配置文件来加载类、创建对象,那这部分工作就没法让 JVM 帮我们自动完成了,我们需要利用 Java 提供的反射语法自己去编写代码。
  4. 搞清楚了反射的原理,BeansFactory 的代码就不难看懂了。具体代码实现如下所示:
public class BeansFactory {
  private ConcurrentHashMap<String, Object> singletonObjects = new ConcurrentHashMap<>();
  private ConcurrentHashMap<String, BeanDefinition> beanDefinitions = new ConcurrentHashMap<>();

  public void addBeanDefinitions(List<BeanDefinition> beanDefinitionList) {
    for (BeanDefinition beanDefinition : beanDefinitionList) {
      this.beanDefinitions.putIfAbsent(beanDefinition.getId(), beanDefinition);
    }

    for (BeanDefinition beanDefinition : beanDefinitionList) {
      if (beanDefinition.isLazyInit() == false && beanDefinition.isSingleton()) {
        createBean(beanDefinition);
      }
    }
  }

  public Object getBean(String beanId) {
    BeanDefinition beanDefinition = beanDefinitions.get(beanId);
    if (beanDefinition == null) {
      throw new NoSuchBeanDefinitionException("Bean is not defined: " + beanId);
    }
    return createBean(beanDefinition);
  }

  @VisibleForTesting
  protected Object createBean(BeanDefinition beanDefinition) {
    if (beanDefinition.isSingleton() && singletonObjects.contains(beanDefinition.getId())) {
      return singletonObjects.get(beanDefinition.getId());
    }

    Object bean = null;
    try {
      Class beanClass = Class.forName(beanDefinition.getClassName());
      List<BeanDefinition.ConstructorArg> args = beanDefinition.getConstructorArgs();
      if (args.isEmpty()) {
        bean = beanClass.newInstance();
      } else {
        Class[] argClasses = new Class[args.size()];
        Object[] argObjects = new Object[args.size()];
        for (int i = 0; i < args.size(); ++i) {
          BeanDefinition.ConstructorArg arg = args.get(i);
          if (!arg.getIsRef()) {
            argClasses[i] = arg.getType();
            argObjects[i] = arg.getArg();
          } else {
            BeanDefinition refBeanDefinition = beanDefinitions.get(arg.getArg());
            if (refBeanDefinition == null) {
              throw new NoSuchBeanDefinitionException("Bean is not defined: " + arg.getArg());
            }
            argClasses[i] = Class.forName(refBeanDefinition.getClassName());
            argObjects[i] = createBean(refBeanDefinition);
          }
        }
        bean = beanClass.getConstructor(argClasses).newInstance(argObjects);
      }
    } catch (ClassNotFoundException | IllegalAccessException
            | InstantiationException | NoSuchMethodException | InvocationTargetException e) {
      throw new BeanCreationFailureException("", e);
    }

    if (bean != null && beanDefinition.isSingleton()) {
      singletonObjects.putIfAbsent(beanDefinition.getId(), bean);
      return singletonObjects.get(beanDefinition.getId());
    }
    return bean;
  }
}
  1. 执行入口那里调用addBeanDefinitions
  2. 然后addBeanDefinitions​ 再调用 createBean 利用反射创建对象,如果对象的 scope 属性是 singleton,那对象创建之后会缓存在 singletonObjects 这样一个 map 中
  3. 最后最小原型设计那里再调用 getBean 从 singletonObjects 获取对象。

# MyBatis-Plus 是如何拓展 mybatis 的

首先我们只解释为什么他可以做到不写 SQL . 我们回答这个问题. 其实拓展 Mybatis 是个很麻烦的事 , page-helper 依靠的事 Mybatis 自带的拦截器. 会代理 executor 执行. 可以看看 org.apache.ibatis.plugin.Plugin​ 和 org.apache.ibatis.plugin.InterceptorChain​ 我一直不懂 pluginall 是做啥了, 一个循环迭代, 那么为啥要循环, 但是代理层并没有迭代哇. 我不懂,有小伙伴懂可以点我联系方式.

说完 Mybatis 我们聊聊 Plush 咋做的. 其实由了解过 TKmapper 也和他做法相似.

简单开始 :

public interface OrderMapper extends BaseMapper<Orders> {

}

为啥要实现这个接口呢. 接口一般是代理 , 所以其实他修改了原来 Mybatis 的代理逻辑. 在 com.baomidou.mybatisplus.core.override.PageMapperProxy​ 这个类里. 其实他基本重写了 Mybatis 注册逻辑. 但是流程不变, 比如

他封装了一个 MybatisConfiguration​ 继承了 Configuration​ ,

其次就是MybatisMapperRegistry​ 和 MapperRegistry​ ,

PageMapperProxy​ 和 MapperProxy​ ,

PageMapperMethod​ 和 MapperMethod​ ,

MybatisSqlSessionTemplate​ 和 SqlSessionTemplate​ 代理关系. (这里是 Spring 的)

流程不说了, 就是 Configuration 就是元信息. 给了 SqlSession. 其次我们拿 Mapper 依靠的是 MapperRegister 拿到一个代理对象. 剩余的流程就是 Executor 不断的委托代理执行, 其实也类似于装饰着模式. 就是 a 只做缓存, 查询的交给下一级 . 可以说包装了一层缓存.

其实说到这里也很简单 , 获取一个 SQL 就行了, 所以有一个接口 com.baomidou.mybatisplus.core.conditions.ISqlSegment​ 来获取 SQL . 下层有

他的 Wrapper 类了, 就负责包装 SQL . com.baomidou.mybatisplus.core.conditions.Wrapper​ 来实现的 . (注意版本不一样, 可能也不一样 . 我是 3.0) .

这里负责构建 SQL .

@Test
public void testSelect() {
    LambdaQueryWrapper<Orders> eq1 = new LambdaQueryWrapper<Orders>().eq(Orders::getName, "小李");
    System.out.println(eq1.getSqlSegment());
}

会输出 :

name = #{ew.paramNameValuePairs.MPGENVAL1}

其实如果有人 Debug 不知道 ew 是什么? 其实就是个占位符, ew 的意思是 EntityWrapper​ , 是 2.X 版本的玩意, 但是迁移把他删了.

就是依靠这个玩意来构建 SQL . 最后把他给 SqlStatement. 也就能获取最后的 SQL 了.

反正我就记录一下. 也就是 上层全部有 MybatisPlush 进行封装了. 但是核心部分还是 Mybatis . MybatisPlus 也就是基于原来进行继续来覆盖核心方法 . 或者增强.

# MYSQL远程连接的密码本地连接的密码不一致

部署完 MySQL 后,只修改了云服务器里面的一个账户密码所引起的

查询 mysql 用户

# 登录mysql
mysql -u root -p

# 使用mysql数据库
use mysql

# 查询mysql用户
select user, host from mysql.user;

能够发现有 4 个用户

host% 的表示是远程连接用户,而 localhost127.0.0.1 都是本地用户

Windows 上通过 SQLyog 远程连接我们的云服务器,就只能通过 % 用户进行连接了,现在我们要做的是修改 % 用户(也远程连接用户) 的 密码即可。

# 修改密码,改成 mogu2020
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'mogu2020' WITH GRANT OPTION;

# 刷新
flush privileges;

# Servlet 容器、Http 服务器:Servlet、Tomcat、SpringMVC 的关系

参考文章
https://blog.csdn.net/cristianoxm/article/details/121268913

# 1. Servlet

# 概念

servlet 就是一个接口;接口就是规定了一些规范,使得一些具有某些共性的类都能实现这个接口,从而都遵循某些规范。有的人往往以为就是 servlet 直接处理客户端的 http 请求,其实并不是这样,servlet 并不会去监听 8080 端口;直接与客户端打交道是“容器”,比如常用的 tomcat。客户端的请求直接打到 tomcat,它监听端口,请求过来后,根据 url 等信息,确定要将请求交给哪个 servlet 去处理,然后调用那个 servlet 的 service 方法,service 方法返回一个 response 对象,tomcat 再把这个 response 返回给客户端。

简而言之,就是说 Servlet 是一个小型的 JAVA 程序,运行在 Web 服务器中来处理用户的请求,我们实际上使用的各路 Servlet 都需要通过各种方式实现这个接口。

# 生命周期

  1. 调用 init() 方法初始化
  2. 调用 service() 方法来处理客户端的请求
  3. 调用 destroy() 方法释放资源,标记自身为可回收
  4. 被垃圾回收器回收

# 请求处理

servlet 的 init 方法和 destroy 方法,一般容器调用这两个方法之间的过程,就叫做 servlet 的生命周期。调用的整个过程就如上图所示。当请求来容器第一次调用某个 servlet 时,需要先初始化 init(),但当某个请求再次打到给 servlet 时,容器会起多个线程同时访问一个 servlet 的 service()方法。

由此可以看出,多个客户访问同一 service()方法,会涉及线程安全的问题。

  1. 如果 service()方法没有访问 Servlet 的成员变量也没有访问全局的资源比如静态变量、文件、数据库连接等,而是只使用了当前线程自己的资源,比如非指向全局资源的临时变量、request 和 response 对象等。该方法本身就是线程安全的,不必进行任何的同步控制。
  2. 如果 service()方法访问了 Servlet 的成员变量,但是对该变量的操作是只读操作,该方法本身就是线程安全的,不必进行任何的同步控制。
  3. 如果 service()方法访问了 Servlet 的成员变量,并且对该变量的操作既有读又有写,通常需要加上同步控制语句。
  4. 如果 service()方法访问了全局的静态变量,如果同一时刻系统中也可能有其它线程访问该静态变量,如果既有读也有写的操作,通常需要加上同步控制语句。
  5. 如果 service()方法访问了全局的资源,比如文件、数据库连接等,通常需要加上同步控制语句。

# Servlet 如何同时处理多个请求访问?

单实例多线程: 主要是请求来时,会由线程调度者从线程池李取出来一个线程,来作为响应线程。这个线程可能是已经实例化的,也可能是新创建的。Servlet 容器默认是采用单实例多线程的方式处理多个请求的:

  1. 当 web 服务器启动的时候(或客户端发送请求到服务器时),Servlet 就被加载并实例化(只存在一个 Servlet 实例);
  2. 容器初始化化 Servlet 主要就是读取配置文件(例如 tomcat,可以通过 servlet.xml 的设置线程池中线程数目,初始化线程池通过 web.xml,初始化每个参数值等等。
  3. 当请求到达时,Servlet 容器通过调度线程(Dispatchaer Thread) 调度它管理下线程池中等待执行的线程(Worker Thread)给请求者;
  4. 线程执行 Servlet 的 service 方法;
  5. 请求结束,放回线程池,等待被调用; (注意:避免使用实例变量(成员变量),因为如果存在成员变量,可能发生多线程同时访问该资源时,都来操作它,照成数据的不一致,因此产生线程安全问题)

以上方法主要优点如下

  1. 第一:Servlet 单实例,减少了产生 servlet 的开销;
  2. 第二:通过线程池来响应多个请求,提高了请求的响应时间;
  3. 第三:Servlet 容器并不关心到达的 Servlet 请求访问的是否是同一个 Servlet 还是另一个 Servlet,直接分配给它一个新的线程;如果是同一个 Servlet 的多个请求,那么 Servlet 的 service 方法将在多线程中并发的执行;
  4. 第四:每一个请求由 ServletRequest 对象来接受请求,由 ServletResponse 对象来响应该请求;

# 2. Tomcat

  1. 尽管 tomcat 非常灵活而强大,可以作为 web 应用服务器,启动端口,使用 Socket 进行网络通信实现 Web 服务器,通过多线程的方式提供请求并发处理能力。
  2. 但是 tomcat 首先是一个 Servlet 容器,Servlet 容器可以对 Servlet 进行管理,控制其生命周期。使其可以专注于自己应该做的事情,不需要考虑端口啊多线程啊 socket 之类的东西,也使得 Servlet 在各种环境下具有适应性。一个基本的流程:tomcat 接收请求,找到合适的 Servlet 来处理请求,如果该 Servlet 没加载,就顺便编译加载到 JVM,如果加载了,就调 init 方法初始化,调 Service 方法处理 request 并返回 responser,观测 Servlet 状态变化,在结束时调用 destory 方法。

# 3. SpringMVC

任何 Spring Web 的 entry point,都是 servlet。

spring 的核心就是通过依赖注入、面向切面编程 aop、和模版技术,解耦业务与系统服务,消除重复代码。借助 aop,可以将遍布应用的关注点(如事物和安全)从它们的应用对象中解耦出来。

# 4. 三者关系

  1. Tomcat 和 jettey 类似,都是 HTTP 服务器和 Servlet 容器,负责给类似 Spring 这种 servlet 提供一个运行的环境,其中:Http 服务器与 Servlet 容器的功能界限是:可以把 HTTP 服务器想象成前台的接待,负责网络通信和解析请求,Servlet 容器是业务部门,负责处理业务请求。
  2. Tomcat 和 Servlet 作为 Http 服务器和 Servlet 容器的结合,可以接受网络 http 请求解析为 Servlet 规范的请求对象和响应对象。比如,HttpServletRequest 对象是 Tomcat 提供的,Servlet 是规范,Tomcat 是实现规范的 Servlet 容器,SpringMVC 是处理 Servlet 请求的应用,其中 DispatcherServlet 实现了 Servlet 接口,Tomcat 负责加载和调用 DispatcherServlet。同时,DispatcherServlet 有自己的容器(SpringMVC)容器,这个容器负责管理 SpringMVC 相关的 bean,比如 Controler 和 ViewResolver 等。同时,Spring 中还有其他的 Bean 比如 Service 和 DAO 等,这些由全局的 Spring IOC 容器管理,因此,Spring 有两个 IOC 容器。
  3. JavaEE 中如果只是使用 spring(不包含 springmvc),那么是 tomcat 容器解析 xml 文件,通过反射实例化对应的类,根据这些 servlet 规范实现类,触发对应的代码处理逻辑,这个时候 tomcat 负责 http 报文的解析和 servlet 调度的工作。
  4. 如果使用 spring mvc,那么 tomcat 只是解析 http 报文,然后将其转发给 dispatchsetvlet,然后由 springmvc 根据其配置,实例对应的类,执行对应的逻辑,然后返回结果给 dispatchservlet,最后由它转发给 tomcat,由 tomcat 负责构建 http 报文数据。

# Web 服务器的实现方案

实现 web 服务有很多种方案。为了能够模块化每一个功能,将整个 web 服务器分为一下三个部分。大致分为一下三个步骤:

  1. Http 服务器:监听端口、解析 Http 协议的数据包,将处理后的数据包转换成 Http 格式的数据包返回给操作系统。提供并发处理请求的能力,这种并发能力可以基于多种不同的技术实现(多线程、异步非阻塞),但都必须遵循标准。
  2. 服务路由映射:将解析后的数据包转换为 Java 类型的请求,通过 Url Mapping 到指定的业务处理器上。
  3. 业务逻辑处理:根据请求的具体内容,处理业务需求,返回处理结果。

其中典型的实现方案包括一下几种:

  1. Servlet with JavaEE。基于 Servlet 标准提供 Web 服务,其主要实现包括原生的 Servlet 服务器。Tomcat、Jetty 等 Http 服务器和 Servlet 容器实现,客户实现的 Servlet 中实现了业务逻辑处理。

    1. Tomcat 实现了 Http 服务器
    2. Tomcat 实现了 Servlet 容器,在 Servlet 容器中实现了服务路由映射。
    3. 在不同 Servlet 中实现了业务逻辑处理。
  2. Servlet with SpringMVC 中。和 SpringMVC 通过封装 Servlet 实现的 Web 服务器,+SpringMVC 提供的服务路由映射和业务逻辑处理能力

    1. Tomcat 实现了 Http 服务器
    2. Tomcat 实现了 Servlet 容器,将所有请求/**映射到同一个 Spring 的 DispatcherServlet 上。
    3. SpringMVC 实现了服务路由映射(通过内置的服务路由映射机制路由到具体的业务代码)和 Servlet 处理业务需求。
  3. WebFlux With Netty。底层是 Netty,通过异步非阻塞的方式实现的 web 服务器。异步非阻塞不是指在调用链上的某个节点,而是所有节点都是异步非阻塞的。

    1. Netty 实现了 Http 服务器
    2. SpringMVC 实现了服务路由映射
    3. 用户自己实现了业务逻辑处理
  4. Jax-RS with Resteasy/Jessy。底层也是 Netty,通过多线程阻塞的方式实现 web 服务器。

    1. Netty 实现了 Http 服务器
    2. Jax-RS 实现了服务路由映射和过滤器的标准、Resteasy 提供了具体实现。
    3. 用户自己实现了业务逻辑处理。

# 静态方法和非静态方法评判

  1. 静态方法和非静态方法,他们都是在第一次加载后就常驻内存,所以方法本身在内存里,没有什么区别
  2. 在内存中的区别是,非静态方法在创建实例对象时,因为属性的值对于每个对象都各不相同,因此在 new 一个实例时,会把这个实例属性在 GC Heap 里拷贝一份,同时这个 new 出来的对象放在堆栈上,堆栈指针指向了刚才拷贝的那一份实例的内存地址上。而静态方法则不需要

为什么要有非静态方法?

早期的结构化编程,几乎所有的方法都是“静态方法”,引入实例化方法概念是面向对象概念出现以后的事情了,区分静态方法和实例化方法不能单单从性能上去理解,创建 c++,java,c#这样面向对象语言的大师引入实例化方法一定不是要解决什么性能、内存的问题,而是为了让开发更加模式化、面向对象化。这样说的话,静态方法和实例化方式的区分是为了解决模式的问题。

接下来继续思考,如果我们全部用静态方法,不用非静态方法,不是一样能实现功能吗?是的,没错,但是你的代码是基于对象,而不是面向对象的,因为面向对象的继承和多态,都是非静态方法。

第二个原因是为什么不建议都用静态方法,我们如果多线程的情况下,如果静态方法使用了一个静态字段,这个静态字段可以会被多个线程修改,因此说如果在静态方法里使用了静态变量,这就会有线程安全问题,当然了,就算不是多线程,因为静态字段只有一份,同样会有被其他地方修改的问题。

从这三点我们得出的结论如下:

一、 什么时候用静态方法,什么时候使用非静态方法?

既然静态方法和实例化方式的区分是为了解决模式的问题,如果我们考虑不需要继承和多态的时候,就可以使用静态方法,但就算不考虑继承和多态,就一概使用静态方法也不是好的编程思想。

从另一个角度考虑,如果一个方法和他所在类的实例对象无关,那么它就应该是静态的,否则就应该是非静态。因此像工具类,一般都是静态的。

二、 为什么使用单例模式而不用静态方法?

从面向对象的角度讲:

虽然都能实现目的,但是他们一个是基于对象,一个是面向对象的,就像我们不面相对象也能解决问题一样,面相对象的代码提供一个更好的编程思想。

如果一个方法和他所在类的实例对象无关,那么它就应该是静态的,反之他就应该是非静态的。如果我们确实应该使用非静态的方法,但是在创建类时又确实只需要维护一份实例时,就需要用单例模式了。

比如说我们在系统运行时候,就需要加载一些配置和属性,这些配置和属性是一定存在了,又是公共的,同时需要在整个生命周期中都存在,所以只需要一份就行,这个时候如果需要我再需要的时候 new 一个,再给他分配值,显然是浪费内存并且再赋值没什么意义,所以这个时候我们就需要单例模式或静态方法去维持一份且仅这一份拷贝,但此时这些配置和属性又是通过面向对象的编码方式得到的,我们就应该使用单例模式,或者不是面向对象的,但他本身的属性应该是面对对象的,我们使用静态方法虽然能同样解决问题,但是最好的解决方案也应该是使用单例模式。

从功能上讲:单例模式可以控制单例数量;可以进行有意义的派生;对实例的创建有更自由的控制

我们在工程中有时需要维护一份信息,比如系统运行时加载的一些配置属性,这些配置属性必须在应用整个生命周期中一直存在,而且是公共的,所以只需要一份就可以了。这时候我们就会考虑使用单例或者静态方法去维护这一份数据,但此时这一份数据又是通过面向对象的方式获取的我们就会使用单例。

首先静态方法是基于类的,单例是基于对象的。如果解决模式是基于对象的就是用单例,否则使用静态方法。比如需要继承类,实现接口,需要延迟初始化,需要重写父类等要使用单例,第二,静态方法是面向过程的,单例是面向对象的。第三,静态属性变量不会被 GC 清除,所以单例的对象不会被 GC 清除,静态方法中产生的对象会随着静态方法执行完毕而被释放。

从时空角度分析问题,空间上模块的划分,时间上生命周期的管理。生命周期:进程生命周期(伴随着程序的启动和退出)、请求生命周期(一次请求的开始和返回)、功能生命周期(一个功能的进入和退出)。一个框架最简单的就是实现这个神功周期。(库和框架的区别就在这里,使用库来实现自己的功能逻辑,框架则负责接管自己的功能逻辑。也就是业务功能 决定 类库的生命周期,框架决定了业务功能的生命周期这种。)

  1. 习惯用法是不需要依赖于其它类或资源时,用静态方法,这时就是一个面向过程的函数而已;如果需要依赖其它类的实例,或者需要某些资源时,用单例。
  2. 需要继承、重载、多态、设计模式(面相接口编程)、依赖设计好的框架时,使用单例模式。通过继承框架类和实现框架的接口能够快速接入框架提供的功能。
  3. 需要方法库是,使用静态方法。(库和框架的区别就在这里,使用库来实现自己的功能逻辑,框架则负责接管自己的功能逻辑。也就是业务功能 决定 类库的生命周期,框架决定了业务功能的生命周期这种。)

# Java 协变 & 逆变拾遗, 标记

Java 协变返回类型是指在子类中重写一个方法时,该方法的返回类型可以是父类中该方法返回类型的子类。这意味着子类可以返回更具体的类型,而无需强制转换为父类类型。

例如,假设有一个父类 Animal 和一个子类 Dog,它们都有一个返回类型为 Animal 的方法 getAnimal。在 Dog 类中重写该方法时,可以将返回类型更改为 Dog,因为 Dog 是 Animal 的子类。这样一来,当调用 Dog 的 getAnimal 方法时,会返回一个 Dog 对象而不是 Animal 对象。

导出类(子类)覆盖(即重写)基类(父类)方法时,返回的类型可以是基类方法返回类型的子类。

# 内省

在计算机科学中,内省是指计算机程序在运行时(Run time)检查对象(Object)类型的一种能力,通常也可以称作运行时类型检查

不应该将内省和反射混淆。相对于内省,反射更进一步,是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。

内省(Introspector)是 Java 语言对 Bean 类属性、事件的一种缺省处理方法。例如 A 类中有属性 name,那么我们可以通过 getName 和 setName 来得到当前值或设置新的值。通过 getName/setName 来访问 name 属性,这就是默认规则。

https://blog.csdn.net/weixin_43726137/article/details/122924821

# 代码防腐技巧

博主

如果没有做好业务逻辑拆分,可能在项目晚期造成以下三种问题:

  • 拆了微服务之后做一个需求要拉很多人,代码写进来了就再也删不掉了
  • 要么放任自流,1 个 App 里有 4 种日期选择方式。要么用力过猛,抽象出来的营销接口动辄几百个参数
  • 线上出了问题很难定位到谁引起的,本地做不了任何有意义的测试,反馈周期特别长

为何随机选择了这三种问题并归纳为业务逻辑拆分问题呢? 因为我认为以上三种问题都是由同一个不易变化的本质约束所造成。这个本质约束就是人类的感知与沟通速度是很慢的。 所谓业务架构,其实质就是想尽一切办法减少沟通。只有沟通少,效率才会高,质量才会好。就是这么简单的一件事情。

# 代码腐化

没有哪份代码一开始是不想好好写的。大家在开始落笔之前都知道会出现上述三种症状,并且都自认为做好了设计去避免这些问题。然而往往事情的发展不是如自己所想的那样。我们可能会把代码腐化归咎于自己不够努力,或者需求太多了做得太匆忙。如果当初更用心一点就不会这样。是吗?

如果你带了一个新人,他可能会问你“我这个需求的代码应该写在哪个 Git 仓库里?”。然后你会根据你的直觉做出一个判断。这种高度依赖于某个人“我觉得”的决策模式是长久不了的。只要摆放代码严重依赖于某个人的判断,腐化就是无法阻挡的趋势。那有没有什么办法可以像“防腐剂”那样,在一开始的时候放进去,然后就可以保持很长时间的“新鲜”呢?

实现方案也不复杂,代码分成两部分。可以随便乱写的,和不能随便乱写的,这两部分。不知道“组合代替继承”的小朋友,只能在可以随便乱写的那部分里发挥。如果大部分代码量都在“可以随便乱写”的那部分里,那么只要很少的人就可以看住“不可随便乱写”的那部分。

说简单也不简单,怎么做到呢?

# 你说的东西可以落地吗?

大部分人的日常工作都是维护一个已有的项目,没有几个人能够参与到 Greenfield 项目的初始设计阶段。这也是大部分读者所懊恼的地方,“我读你的东西有什么用,我这项目就已经烂成了这个样子了,我也改不了”。我希望能够出一些可度量的指标。这样对于现有的项目,我们可以拿这些指标去度量这些问题有多严重。 当下次别人问你微服务为什么这么拆,而不是那么拆的时候,你可以给出令人信服的理由,而不是“我觉得”。

我不是销售像 Angular 那样可以直接 git clone 一份的代码框架给你。我想分享的是一套可以适用于任何语言和框架的分解业务逻辑的套路。从《Clean Architecture》和《Domain Driven Design》你应该已经学到了很多了。如果仍然不会拆,那么可以再读读《业务逻辑拆分模式》试试。

# 拆分

拆分是任意的。随意给一个标准,我们都可以把任何东西按照这个标准给拆了。以下是我给的拆分角度:

业务逻辑可以被拆分成:

  • 编辑时:拆分成文件、文件夹、Git 仓库
  • 运行时:拆分成进程

# 文件、文件夹、Git 仓库

这种拆分标准屏蔽了不同编程语言和编程框架的影响,我们不用争论什么是 Class,什么是 Module,什么是 Package。

  • 文件:大部分编程语言都使用了文本文件。只有非常少量的编程语言有自己的 Projectional Editor,这些语言的开发者面对的编辑界面和文件上存储的内容需要通过 IDE 进行映射。
  • 文件夹:绝大部分开发者使用的操作系统,对于每一个文件都有所存放的文件夹的概念。一个文件从属于唯一的一个文件夹。部分操作系统在从属关系之外,还有链接,把两个文件建立关联。文件夹与文件夹呈树状组织。
  • Git 仓库:绝大部分公司会把代码拆分成多个 Git 仓库。Google 等公司没有采用多 Git 仓库,而是全公司所有人在一个巨型的 monorepo 上工作。大部分公司切分 Git 仓库的主要目的是控制访问和版本。不同的开发者控制不同的 Git 仓库,从这个仓库下的代码产出整个仓库意义下的版本。

业务逻辑在编辑时需要拆分成文件、文件夹、以及 Git 仓库。那么从 Autonomy,Consistency,Feedback 这三个角度,如何评价拆分出来的结果,又有哪些拆分模式呢?

# 进程

这种拆分标准屏蔽了不同运行环境的影响,无论是 iOS 设备上的 App,还是 apple.com 这个域名背后的服务器,软件总是运行在进程里的。

  • 手机桌面上的 App 图标:从用户的角度来说,两个图标就是两个 App,是两个不同的东西。
  • 网站的域名:对于用户的角度来说,两个域名就是两个网站。
  • 网络游戏:对于用户的角度来说,我们一起刷的副本,那就是同一个游戏。

运行时的表面现象太多了。我们可以随意给一个标准,比如两个界面有什么本质不同呢? 我们可以说不同 URL 的界面是两个“页面”。但是也完全可以 URL 不变,使得界面处于完全不同的两个状态。这样的情况下,这算两个页面还是同一个页面呢? 所以避免拆分出来的东西见仁见智,我们只能选择不那么用户可见,但是又相对稳定的东西。想来想去,也就是进程是歧义比较少的东西。

# 业务逻辑拆分模式是关于什么的

相比堆砌 MicroService,Domain Layer 这样的辞藻,更能穿透表面现象,看到事物的本质。到头来,总归是文件,文件夹,Git 仓库和进程这些东西。

余下见仓库

# 文化

# 平台 自媒体时代用影响力赢取惊人财富 - 迈克尔哈耶特

记录了一些内容

# 创作电梯演讲

电梯演讲一词产生于一种理念,就是你能够在搭乘电梯上几层楼的时间里,进行一场简短而又令人印象深刻的演说以描述自己的产品,而这一切需要在大约 30 秒到 2 分钟内完成。
随着网络的发达,过去数年颇为重要的电梯演讲从有形的电梯转入无形的网上空间,更显示出其独特效果,因为网上你要抓住一位潜在客户的注意力,所需时间比电梯更短。大多数人能够集中注意力——短期刺激反应——的时间段非常短暂,完全不走神的时间最多不超过 8 秒

# 演讲的艺术 (美)史迪芬·E·卢卡斯 小阅读笔记

形象化的力量: 演讲人主动地去想象一次成功演讲的生动画面

大多数紧张都是看不出来的: 等待上场演讲时,悄悄地绷紧和放松大腿肌肉,或者两手用力握紧再放松。这有助于舒缓紧张情绪

讲解了许多演讲中用到的要素, 将演讲的各个组成部分拆解开了, 信息 - 反馈 - 渠道 - 干扰 - 主体个体等, 提供了思考的框架

例如可以这么分析

场合指的是演讲的时间和地点。对话总是在某种场合当中发生的。有时候,说话的场合很有利,比如在烛光晚宴的餐桌上求婚;有时候,场合可能不利于你说话,比如你想盖过吼叫的立体声音乐说一番求爱的话。记住,当你要向某人说一番动情的话时,必须要等到合适的场合才说。
公共演讲同样对场合很敏感。有些时候——葬礼、教堂举行的仪式、毕业典礼——都要求有某种形式的正式演讲。演讲的环境也很重要。一次演讲在户外还是在室内进行,是在小房间里还是在体育馆里进行,是对一群人还是对少数几位人士讲,这些都有很大区别。可以这样理解,当你调整方案,使一次演讲更适应当时的场合时,你不过是在较大的规模上进行日常对话罢了。

十分生动的例子, 让我想到了理科生测量求爱时候的适合指数的情境(55 分贝 - 昏暗光线 - 30cm 距离…)

之前小学时候看到的一个科学证明, 现在再抄一下

注意力不集中 - 空余的“大脑时间", 大脑的处理速度远快于对面输入的速度, 这部分冗余带宽并不意味着倾听会变得更容易

它产生的效果恰恰相反。因为我们可以注意到演讲者的话,但同时还有很多空余的“大脑时间”,我们很想中断倾听的过程而去思考别的一些事情。思考别的一些事情而放弃倾听

有时候我们听得又太费力了。我们变成了人造海绵,把演讲人所说的每一个字都当作同等重要似的一股脑吸收进去。我们努力记住所有的人名、所有的日期和所有的地点。在这个过程当中,我们会错失演讲中的要点,因为我们将这个要点淹没在汪洋大海一般的细节里面去了。更糟糕的是,我们最后甚至还有可能把事实弄错。

有效率的倾听者通常都是集中精力于观点和证据,而不是试图记住演讲者所说的所有东西。

做个积极的倾听者

现代生活的诸多方面其实是在鼓励我们消极地倾听。我们一边学习一边听 CD,我们一边从这个房间晃到另一个房间一边听电视节目。父母在敲定晚餐吃什么的时候听他们的孩子的意见;学生们一边做着填字游戏一边听课;电视记者一边在听众席到处乱转寻找下一个采访目标,一边听着政客们的发言。

搁置判断

除非只听和我们的思想一模一样的人讲话,否则,我们就一定会听到与自己意见相左的内容。如果出现这样的情形,我们自然的倾向就是在心里与演讲人发生争论,或者根本不再听他把话说完。但是,这两种反应都是不公平的,对于演讲人和自己都是不公平的。在这两种情况下,我们都失去了一个机会,不能掌握别人的观点,也不能被别人说服。

你应该听人们说下去,最后才能作出你自己的判断

三条专心听讲建议

听要点

听论据

关于一个演讲人的论据,有四个问题必须问:
准确吗?
是从客观来源得到的资料吗?
跟演讲人所说的话有关联吗?
足够支持演讲人的观点吗?

听技巧

■ 分析介绍部分:演讲人用什么方法引起别人的注意,如何使演讲和
听众发生关系,如何建立可信度与善意?
■ 评估演讲的组织方法:是不是很清晰,很容易跟上?你能挑出演讲
人的要点吗?演讲人从一个要点转向另一个要点的时候,你能跟上他
吗?
■ 研究演讲人所用的语言:是否准确、清晰、鲜明、合适?演讲人是
否针对听众和当时的具体情况做了合适的调整?
■ 诊断演讲人的演讲方式:是否流畅、有强烈的影响力、有说服力?

即兴演讲

大多数专家都建议采用临场发挥的即兴演讲,因为即兴演讲把谈话的自发性和热情综合在仔细的演讲准备中。临场发挥的演讲的目的,是计划好要点和论证材料,但不是把演讲稿逐字逐句背诵下来。

可以用一些特殊的小物品来当提示物

总体来说,不要让手势或身体动作使听众分心。应该尽一切努力避免紧张的动作

说话期间,应该尽量多看同学,即兴演讲最重要的表现之一,是要与听众保持视线接触

演讲准备:起始部分

总体目标确定

中心思想确定

没人指望你仓促发表一次“完美”演讲。如果你正在参加会议或讨论,应该注意其他演讲人都说了些什么,最好做一个简要的记录,你就能自然而然地整理出自己要说的话。这样,轮到你的时候就不至于无话可说。

针对前面的演讲发表自己的意见时,可以采用这样四个简单的步骤:首先,表明你是否接受上述的观点;其次,说明你想表达的观点;第三,用合适的统计数据、案例或证词来支持你的观点;第四,总结自己的观点。这个“四步法”可以帮助你迅速而清晰地组织好自己的思想

听众

切莉的经验表明,你需要掌握听众已经知道、相信和关心的东西。索尔·阿林斯基是著名的社区工作者,他说:“人们只能够以自己的经验来理解事物。”这
说明,要和别人交流,“你必须深入了解他们的经验”。
也许,你不能完全掌握他们的经验,但是,你可以掌握听众尽可能多的情况,以便确定自己应该做些什么,使自己的思想更明确和有意义。

听众情境分析

规模

不管你演讲的听众规模有多大,心中一定要记住一个基本的原则:听众规模越大,你演讲的方式就要越正规。听众规模会对你演讲方式产生极大的影响,但是,它也有可能会影响到你的语言、诉求的选择,以及可视辅助物的使用。

环境

对演讲话题的态度, 例如兴趣, 知识储备

适应听众 - 前中后

如果听众的身体前倾,带着很大的兴趣望着你,边听边点头,说明演讲进展不错。假如你发现他们在皱眉头,做出困惑的表情,那你可能需要再次说明自己的观点

下面有许多内容是高中语文知识, 不记录

乐子

下面这个故事很有名,说明了不能清晰地表达思想会惹出多大的麻烦。

一位管道工写信给当地的政府机构,问用盐酸冲洗下水道会不会有任何危险。

这个机构回函说:盐酸的功效无可争议,但其腐蚀效果与金属耐久性不可兼容。
管道工谢谢政府同意使用盐酸。

这家机构马上去函说:我们无法承担因为盐酸产生的有毒及有害残余物而造成的责任,建议您采用替换程序。
管道工再次感谢这个部门同意使用盐酸。

最后,这个部门意识到会有数百根下水管道被毁掉而惊慌失措,不得不请教一位科学家。

这位科学家写道:不能用盐酸。它会在管道上咬出洞来!

请记住,人和人差别很大。对某人来说意义重大的东西,对另外一个人来说可能就是一堆废话。你无法假设你了解清楚的东西,对你的听众也就一定是清楚的。演讲中尤其如此。听众和读者不一样,他们无法查字典或再读前面的内容来发现一些词的确切含义。演讲中的用词必须非常清楚,不能有产生误解的可能。
选择通俗的词汇、选择具体而不是抽象的词汇可以帮助你做到这一点。

为答听众问做好准备

不同演讲类型的不同处理, 告知型, 劝说型, 不细细展开

# 演讲之禅:一位技术演讲家的自白-斯科特博克顿 小阅读笔记

“演讲结束后,演讲大师常常会发现自己的演讲有 4 个版本:一个是他们所发表的,一个是他们准备要讲的,一个是报纸报道的,一个是讲完之后反思的。”

我们的大脑认为以下 4 点会危及生命:

·独自站立
·在没有地方躲避的空旷地域
·手无寸铁
·在一群人的注视下

对于所有的生物而言,当以上 4 种情况并存时,的确会造成威胁,因为这意味着你被袭击或被吃掉的可能性极大。许多猎手都是结对打猎的,他们最早的猎物都是独自处于一块毫无遮蔽物的地方(如舞台),并且手无寸铁。我们的祖先在历经这些威胁后生存下来,同时也将这种恐惧遗传给我们。尽管我在过去的 15 年中教过书,开过工厂,做过演讲,但当我站在讲台上时,无论我表现得如何自然,其实我的身心都会在开讲之前,有时还会在演讲的过程中感到恐惧。大脑的这种固定思维模式早就已经有了,比演讲甚至比说话的历史都要早上千百万年。当人们遇到这些险境时,大脑的固定模式会让我们想起最坏的情况下的应对方法,这会使我们难以消除恐惧感。我们对此毫无办法,至少不能完全避免恐惧。这种思维模式根深蒂固地存在于我们的大脑中,并且和许多其他的重要功能一样,几乎完全无法控制。

演讲前努力保持镇定

·提前到达演讲现场,以防匆忙上阵。
·在开始之前测试技术和音响效果。
·绕讲台走一圈,这样你的身体会在室内感觉安全。
·在观众席上亲身感受一下,了解从观众的角度能看到什么。
·早早吃点东西以防饥饿,但不要在即将开讲之前吃东西。
在开始之前和听众聊聊天(如果方便的话),这样你就不会感觉是在给陌生人演讲(朋友会让你感到安全)。

其实,我们已经很擅长演讲了——常人平均每天说 1.5 万个字。除非你是在单独的禁闭室里读书,否则你的大多数话都是对别人说的。如果你交际广泛,还在星期五的晚上出去应酬,那你可能会同时和两三个甚至五个人说话。祝贺你,你已经是一个有经验的成功的演讲家了。你同自己的同事、家人和朋友说话。使用邮件和网络时,你所写的东西每天可能会被成千上万人阅读。上面列出的那些令人害怕的事情也有可能出现在这些情况下。

我一天说几句话?

吃饭的时候: “在这吃. 这个, 还有这个, 没了”, 一天 2 次, 除此之外没有说过其他话, 连续 5 天, 总共不超过 60 个字.

因此我通过在家人群里吹逼保证一天的演讲量

坐在听众席上时,你能轻而易举地看到讲台上的我,但我却什么都看不到。屋子里所有的灯光都聚集在我脸上。无论演讲场地的条件恶劣与否,观众都能清清楚楚地看到演讲者,而演讲者却处于孤身奋战的境地。杰出演讲家的著名演讲图片都像是在观众席的最佳座位上拍摄到的。舞台上除了演讲者之外,没有其他人,即使有,他们也不会到场上移动,以免影响观众。如果在奥巴马总统演讲时,他身后有一群人在吃三明治或者玩猜字游戏,那么台下的观众一定会很生气。然而,当我看向观众席时,很多人都让我心烦意乱。我能看到和听到那些迟到早退的人开门关门的声音,看到那些一心二用者在摆弄笔记本电脑,还能看到观众席后排的摄影师及舞台工作人员在移动器械、拍照、互相打趣。当然,除了我之外,也没有人能看到。最糟糕的是,有时我简直倒霉透顶了,我的正前方唯一能看到的只有会议厅的吊灯,它的光芒让人晕眩。这种吊灯往往是由灰色金属制成的,表面上还涂有一层零碎的金色图案。它们挂在观众席的上方,很少有观众会注意到,但是台上的演讲者的目光总是很自然地停在那里。一个高级演讲场所的天花板上不会有这些让人分神的东西,而在条件较差的场所里就会挂有这种难看的摆设。

是的, 这种感觉我经常体会过, 台下时候很轻松, 台上时候很疲惫

无论你做何种演讲,人们之所以来听的原因只有几个。当你准备演讲内容的时候,应该以满足听众以下这些需求为出发点:

1.希望能学到知识。
2.希望受到激励。
3.希望获得快乐。
4.希望你能满足他们的某种需要。
5.希望结识同样对某个主题感兴趣的人。
6.希望能与他人有共同的积极经历。
7.被他人所迫,如老板、父母、老师或者配偶。
8.被铐在座位上,好几天都没有离开过演讲厅。

只有蠢人才会讲了 1 个小时还满足不了任何需求

在每场电影、音乐会和演讲开始之前,观众都会有一段时间很安静。这时,所有的谈话声和杂音都会停止,所有的人几乎同时在期待节目的开始。这段时间称为观众寂静期,这也是观众自发的行为。200 位有着不同想法和观点的人在这一刻成为了一个整体,他们的注意力都集中到了大厅的前方。观众将控制权交给了一个他们尚不知道的人,这未免有点奇怪。在这之前,他们从未听过这场演讲或演出。这是一种尊敬和期待,也是一件令人惊叹的事情。世界上能让一屋子人自己安静下来的事情不多,而演出开始之前的期待便是其中之一。

我经常在大学和企业做演讲,听众都是比我聪明得多的人,他们比我更有创意,更幽默,但是我依然能讲得很成功,因为我给了他们一个清晰明快的节奏。
演讲前,我会说:“我演讲的时间是 30 分钟,要讲的内容一共有 5 条,每一条我将花 5 分钟来讲解,剩下的时间欢迎你们提问。”说这些话花费了我大概 10 秒钟的时间,但是我却能因此吸引他们的注意力,告诉了他们我的计划,这样他们就能知晓演讲的节奏。无论在何时,当他们开了小差,如幻想夏威夷海滩上的性感美女或帅哥,然后突然回到现实中时,他们还能依据我之前说的节奏来跟上步伐,他们也许会想:“哦,我完全没听讲,他现在讲到哪里了?哦,讲到第三条了,我知道了。”即使是最专心的听众也会有走神的时候,我要做的就是当他回到现实后,让他很容易就能重新跟上节奏。

一旦所有的听众都在关注你时,你就要把握住机会,简单介绍本次演讲的程序,这也能为你加分。如果过程清晰,而你解释的用时又不多,那么听众根本就不在乎其余的细节。

一些演讲者真正需要的反馈信息:

·和其他人的演讲比起来,我的演讲如何?
·为了提高演讲水平,我需要做出哪些改进?
·除了我回答的那些问题以外,你还希望我回答哪些问题?
·我在演讲中给你带来了哪些烦恼?

# Stand by LGBT

我支持所谓的 LGBT 人群合理, 正当而合理的表达自己的权利. 当然我不提倡不鼓励.

Purple - 知乎 (zhihu.com) 这个是今天看到的清华社团, 里面有许多这样的帖子.

原因不解释了

作者:五道口 purple
链接:https://zhuanlan.zhihu.com/p/69486720
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

主流规范所规定的行为方式和交往方式有明确的指向:婚姻、生育和抚养后代。与之相关的制度同规范之间存在着千丝万缕的联系。对于初识规范的儿童来说,他们或许只是亦步亦趋地模仿成人世界的暴力模式。而如果探究施加这类暴力的成年人的逻辑,那么多半会到达这样一个根源:这样的人不会结婚生子,即便是结婚生子也做不了好丈夫/好妻子/好家长,那当然就是反常的,他们过得不如意也是事出有因/咎由自取,别人施加暴力也理所应当。 当然,他们过得不如意的确是事出有因,但却决不是咎由自取;恰恰相反,他们过得不如意的原因,乃是制度不会给予他们以相应的生存空间。例如,独自一人生活从来都相当艰难,但是同性伴侣之间的结合(这首先是一种社会契约!)却游荡在合法化的边缘,这种矛盾对于大部分同性恋者来说都是难以承受的。为什么社会不能为不结婚的人提供足够的福利保障呢?为什么不生育的结合会是一种活该被施加暴力的罪过呢?再例如,生养后代被视为女性的天职,但是在生存压力越来越大的时代里,有越来越多的女性会选择放弃这一「天职」。为什么社会不接过这一「天职」呢?固然只有女性才能生育和哺乳,但是有任何证据显示抚养也是只有女人才能做的事情吗?退一步说,为什么抚养和教育的责任都推到小家庭身上呢(尤其是在这个义务教育日益退化的时代)?

我们可以概括一下这些现象:与婚姻、生育和抚养有关的制度,正是基于性别规范的各种暴力的「沉默的背景音」。 规范不仅仅是规定,它更加涉及到规范背后的制度,以及制度所依附的诸多权力关系。如果想要研究规范的运作,就必须要透视其背后的所有这些东西。反规范的行为和针对此类行为的暴力,便给了我们一个透视规范及其背景的窗口。

SO, 这里强调的是, 正是当下父权家长制独裁政体的背景会发生这样的事? 确实, 例如那些神圣的保守国家, 塔利班那群家伙. 我们的开放程度算是高多了, 但我认为确实在这方面着实是洼地. 就我看到的封建愚昧的落后世界来看.

这就是酷儿理论的基本思维方式。它是一种批判理论(critical theory)。我们之所以要研究规范的产生和运作机制,正是因为我们注意到了现实中存在的这诸多的暴力,并力图改变这种现状,而理清暴力如何运作正是其第一步。 这就要求我们首先要批判地检视那些习以为常的性别规范,分析与之相关的话语,形成另外一套能够与之抗衡的话语,并以此来动员那些受到压迫的性别。

当然可以将此称为情欲的解放,但这种解放并不彻底。仅有自由恋爱不能触动问题的根基。现存的资本主义制度不会采用社会化的方式来保证人类的繁衍和教育,于是都将这个责任推给了家庭,包括生育、抚养、教育(学校当然执行教育职能,但是但凡上过学的人都能感觉到:原生家庭对一个人的塑造作用决不是学校教育可以抵消的),因为社会化的抚养没有短期利益可图。即便政府愿意为生育者派发津贴,在大部分情况下,这种津贴也远不足以补偿生育者的付出。如此一来,需要生养才能保证劳动力供给,但社会不承担养育的职能;既然接纳了这个制度,那么人们就要么不得不选择走入婚姻、繁衍后代,并承担繁重的养育责任;要么选择不生育,而接受社会的指责。特别地, “女性=具有女性外生殖器的人=具有生育能力的人”的本质主义界定必须被强化,才能迫使女性走入婚姻。对性少数群体的歧视,就根植于于这种本质主义界定之上。这种意识形态根据生殖器的形态来划分人的职能(而这正是利用女性生育能力完成再生产的关键),从而迫使一定的人执行一定的表演仪式,来完成那名为“性别”的社会身份建构,最终都要指向婚姻与繁衍;突破表演仪式的行为不利于维护体系的稳定,所以很容易被污名化

《同》一文信誓旦旦地宣称,同性恋解放运动将导致生育率下降,长此以往将会出现严重的劳动力供给危机。然而,这种归因却是倒果为因。这种逻辑以为,“自由主义”这种意识形态的泛滥就足以解释生育率的下降——然而这不过是某些假共产党一贯的宣传伎俩,仿佛问题全然在于某种舶来的意识形态,而不在于官僚资本主义自身。生育率的下降不是性少数群体解放运动乃至性解放运动的责任,它的根本原因是社会对生育和抚养的补偿已远远不足以补贴生育者的付出。用更笼统的话来概括,它是资本主义剥削的一种体现。这恰恰体现了这种经济制度的难以为继:为了追逐短期利益,这制度迫使大部分人不得不在“被婚姻家庭绑架”或“不生育”两者中作出艰难的抉择,而社会化养育职能的缺失,又导致大部分新出生的孩子无法得到良好的教育,加重本已十分严重的阶级固化现象;长此以往,这将使得劳动力数量和质量严重下降。 至于《同》文中提出的什么“共产主义者要捍卫伦理”,则根本是无稽之谈。这个伦理体系最终服务于哪种制度、哪个阶级?如果不搞清楚,那共产主义者为什么要捍卫这名为道德实为压迫的伦理?

总结起来,对待女权和性少数群体解放运动的态度,是试探真假马克思主义的一个标志。持反对态度而自称马克思主义者/共产党的,或者是分析能力不精,或者是心怀叵测(或两者兼有)。 马克思主义为被压迫者说话,但却又不简单停留在“说话”上。它要剖析压迫的原因,并且改造这种现实。被压迫者能否赢得整个世界?谁也没法断言。但有一点是确凿无疑的:在斗争中,他们将失去的只是锁链。

怕文章爆炸, cite 了部分内容

# 猪突一词

在谈到当下的形势的时候, 用到了猪突这一词.

这个词最早来源于中国汉朝。

据《汉书》记载,王莽曾率领一支由囚犯组成的队伍,名为“猪突豨勇”。日本人翻译成“猪突き勇”。

是时,关东饥早数年,力子都等党众浸多,更始将军廉丹击益州不能克,征还。更遣复位后大司马护军郭兴、庸部牧李晔击蛮夷若豆等,太傅牺叔士孙喜清洁江湖之益贼。而匈奴寇边甚。莽乃大募天下丁男及死罪囚、吏民奴,名日“猪突豨勇”,以为锐卒。——《汉书·王莽传》

大概是因为那个“豨”在日语中没有汉字对应,比较尴尬吧,于是就改成了“猛进”

「猛進」就是“勇猛前进”的意思,并没有什么特别的出处。

合起来就是「不怕死向前进攻」的意思。

然后“突”这个字吧,大家会发现日语中的“突”字其实下面是个“大”而非“犬”字,这是后来才变成这样的。

其实“突”字也源于汉语,原本它就是上“穴”下“犬”拼起来形成的一个汉字,意思是狗突然从洞里冲出来的样子。

现在, 若宿舍猪突, 这里的意思就是王莽里面说的"不怕死的队伍, 对我们的大本营进行突进", 意味着我们的危机.

# 学习

# 厕所里面找屎吃

百度搜不出啥有用信息,现在要根据需要的信息种类去不同的平台搜. 公众号,小红书,微博,购物平台. . .

百度和知乎都是自己作死,商业化吃相难看导致原有的基本盘也没守住.

小红书一些攻略是真的细
比如换乘,有的攻略他能把你从进站到站台多少分钟,等车多少分,下车出站多少分,事无巨细地写出来

对于坐飞机高铁这类时间卡死需要精细规划的人来说,简直是神. 没有哪个地方的攻略会写得这么详细

抖音、B 乎、X 、weibo->看乐子看仍子
微信公众号->看新闻
小红书、下厨房->生活、美食、旅游
google 、gpt->搜正经东西
baidu->搜中文内容甚至都不如 google

# 提问的智慧阅读笔记

Link

完整版存档本地, 时时当勉励

# 目录

# 简介

黑客的世界里,你所提技术问题的解答的好坏, 很大程度上取决于你提问的方式与此问题的难度。本指南将教你如何正确地提问以获得你满意的答案。

黑客们有着蔑视或傲慢面对简单问题的坏名声,这有时让我们看起来对新手、无知者似乎较有敌意,但其实不是那样的。

我们不讳言我们对那些不愿思考、或者在发问前不做他们该做的事的人的蔑视。那些人是时间杀手 —— 他们只想索取,从不付出,消耗我们可用在更有趣的问题或更值得回答的人身上的时间。我们称这样的人为 失败者(loser)​ (由于历史原因,我们有时把它拼作 lusers​)

我们(在很大程度上)是自愿的,从繁忙的生活中抽出时间来解答疑惑,而且时常被提问淹没。所以我们无情地滤掉一些话题,特别是拋弃那些看起来像失败者的家伙,以便更高效地利用时间来回答赢家(winner)​ 的问题。

# 在提问之前

在你准备要通过电子邮件、新闻群组或者聊天室提出技术问题前,请先做到以下事情:

  1. 尝试在你准备提问的论坛的旧文章中搜索答案。
  2. 尝试上网搜索以找到答案。
  3. 尝试阅读手册以找到答案。
  4. 尝试阅读常见问题文件(FAQ)以找到答案。
  5. 尝试自己检查或试验以找到答案。
  6. 向你身边的强者朋友打听以找到答案。
  7. 如果你是程序开发者,请尝试阅读源代码以找到答案。

寻求帮助时加上一句 我在 Google 中搜过下列句子但没有找到什么有用的东西​ 也是件好事,即使它只是表明了搜索引擎不能提供哪些帮助

绝不要自以为够格得到答案,你没有;你并没有。毕竟你没有为这种服务支付任何报酬。你将会是自己去挣到一个答案,靠提出有内涵的、有趣的、有思维激励作用的问题 —— 一个有潜力能贡献社区经验的问题,而不仅仅是被动地从他人处索取知识。

另一方面,表明你愿意在找答案的过程中做点什么是一个非常好的开端。谁能给点提示?​、我的这个例子里缺了什么?​ 以及我应该检查什么地方​ 比请把我需要的确切的过程贴出来​ 更容易得到答复。因为你表现出只要有人能指个正确方向,你就有完成它的能力和决心。

# 当你提问时

慎选提问的论坛

小心选择你要提问的场合。如果你做了下述的事情,你很可能被忽略掉或者被看作失败者:

  • 在与主题不合的论坛上贴出你的问题。
  • 在探讨进阶技术问题的论坛张贴非常初级的问题;反之亦然。
  • 在太多的不同新闻群组上重复转贴同样的问题(cross-post)。
  • 向既非熟人也没有义务解决你问题的人发送私人电邮。

别像机关枪似的一次“扫射”所有的帮助渠道,这就像大喊大叫一样会使人不快。要一个一个地来。

一个好标题范例是目标 —— 差异​ 式的描述,许多技术支持组织就是这样做的。在目标​ 部分指出是哪一个或哪一组东西有问题,在差异​ 部分则描述与期望的行为不一致的地方。

蠢问题:救命啊!我的笔记本电脑不能正常显示了!

聪明问题:X.org 6.8.1 的鼠标指针会变形,某牌显卡 MV1005 芯片组。

更聪明问题:X.org 6.8.1 的鼠标指针,在某牌显卡 MV1005 芯片组环境下 - 会变形。

# 使用易于读取且标准的文件格式发送问题

如果你人为地将问题搞得难以阅读,它多半会被忽略,人们更愿读易懂的问题,所以:

  • 使用纯文字而不是 HTML (关闭 HTML 并不难)。
  • 使用 MIME 附件通常是可以的,前提是真正有内容(譬如附带的源代码或 patch),而不仅仅是邮件程序生成的模板(譬如只是信件内容的拷贝)。
  • 不要发送一段文字只是一行句子但自动换行后会变成多行的邮件(这使得回复部分内容非常困难)。设想你的读者是在 80 个字符宽的终端机上阅读邮件,最好设置你的换行分割点小于 80 字。
  • 但是,对一些特殊的文件不要设置固定宽度(譬如日志文件拷贝或会话记录)。数据应该原样包含,让回复者有信心他们看到的是和你看到的一样的东西。
  • 在英语论坛中,不要使用Quoted-Printable​ MIME 编码发送消息。这种编码对于张贴非 ASCII 语言可能是必须的,但很多邮件程序并不支持这种编码。当它们处理换行时,那些文本中四处散布的=20​ 符号既难看也分散注意力,甚至有可能破坏内容的语意。
  • 绝对,永远不要指望黑客们阅读使用封闭格式编写的文档,像微软公司的 Word 或 Excel 文件等。大多数黑客对此的反应就像有人将还在冒热气的猪粪倒在你家门口时你的反应一样。即便他们能够处理,他们也很厌恶这么做。
  • 如果你从使用 Windows 的电脑发送电子邮件,关闭微软愚蠢的智能引号​ 功能 (从[选项] > [校订] > [自动校正选项],勾选掉智能引号​ 单选框),以免在你的邮件中到处散布垃圾字符。
  • 在论坛,勿滥用表情符号​ 和HTML​ 功能(当它们提供时)。一两个表情符号通常没有问题,但花哨的彩色文本倾向于使人认为你是个无能之辈。过滥地使用表情符号、色彩和字体会使你看来像个傻笑的小姑娘。这通常不是个好主意,除非你只是对性而不是对答案感兴趣。

如果你使用图形用户界面的邮件程序(如微软公司的 Outlook 或者其它类似的),注意它们的默认设置不一定满足这些要求。大多数这类程序有基于选单的查看源代码​ 命令,用它来检查发送文件夹中的邮件,以确保发送的是纯文本文件同时没有一些奇怪的字符。

# 精确地描述问题并言之有物

  • 仔细、清楚地描述你的问题或 Bug 的症状。
  • 描述问题发生的环境(机器配置、操作系统、应用程序、以及相关的信息),提供经销商的发行版和版本号(如:Fedora Core 4​、Slackware 9.1​ 等)。
  • 描述在提问前你是怎样去研究和理解这个问题的。
  • 描述在提问前为确定问题而采取的诊断步骤。
  • 描述最近做过什么可能相关的硬件或软件变更。
  • 尽可能地提供一个可以重现这个问题的可控环境​ 的方法。

# 别动辄声称找到 Bug

当你在使用软件中遇到问题,除非你非常、非常的有根据,不要动辄声称找到了 Bug。提示:除非你能提供解决问题的源代码补丁,或者提供回归测试来表明前一版本中行为不正确,否则你都多半不够完全确信。这同样适用在网页和文件,如果你(声称)发现了文件的Bug​,你应该能提供相应位置的修正或替代文件。

编写软件的人总是非常辛苦地使它尽可能完美。如果你声称找到了 Bug,也就是在质疑他们的能力,即使你是对的,也有可能会冒犯到其中某部分人。当你在标题中嚷嚷着有Bug​ 时,这尤其严重。

# 描述问题症状而非你的猜测

告诉黑客们你认为问题是怎样造成的并没什么帮助。(如果你的推断如此有效,还用向别人求助吗?),因此要确信你原原本本告诉了他们问题的症状,而不是你的解释和理论;让黑客们来推测和诊断。

# 按发生时间先后列出问题症状

问题发生前的一系列操作,往往就是对找出问题最有帮助的线索。因此,你的说明里应该包含你的操作步骤,以及机器和软件的反应,直到问题发生。在命令行处理的情况下,提供一段操作记录(例如运行脚本工具所生成的),并引用相关的若干行(如 20 行)记录会非常有帮助。

如果挂掉的程序有诊断选项(如 -v 的详述开关),试着选择这些能在记录中增加调试信息的选项。记住,​ 不等于​。试着选取适当的调试级别以便提供有用的信息而不是让读者淹没在垃圾中。

如果你的说明很长(如超过四个段落),在开头简述问题,接下来再按时间顺序详述会有所帮助。这样黑客们在读你的记录时就知道该注意哪些内容了。

# 描述目标而不是过程

如果你想弄清楚如何做某事(而不是报告一个 Bug),在开头就描述你的目标,然后才陈述重现你所卡住的特定步骤。

经常寻求技术帮助的人在心中有个更高层次的目标,而他们在自以为能达到目标的特定道路上被卡住了,然后跑来问该怎么走,但没有意识到这条路本身就有问题。结果要费很大的劲才能搞定。

# 别要求使用私人电邮回复

黑客们认为问题的解决过程应该公开、透明,此过程中如果更有经验的人注意到不完整或者不当之处,最初的回复才能够、也应该被纠正。同时,作为提供帮助者可以得到一些奖励,奖励就是他的能力和学识被其他同行看到。

当你要求私下回复时,这个过程和奖励都被中止。别这样做,让回复者来决定是否私下回答 —— 如果他真这么做了,通常是因为他认为问题编写太差或者太肤浅,以至于不可能使其他人产生兴趣。

这条规则存在一条有限的例外,如果你确信提问可能会引来大量雷同的回复时,那么这个神奇的提问句会是向我发电邮,我将为论坛归纳这些回复​。试着将邮件列表或新闻群组从洪水般的雷同回复中解救出来是非常有礼貌的 —— 但你必须信守诺言。

# 询问有关代码的问题时

如果没有提示别人应该从何入手,别要求他人帮你调试有问题的代码。张贴几百行的代码,然后说一声:它不能工作​ 会让你完全被忽略。只贴几十行代码,然后说一句:在第七行以后,我期待它显示 <x>,但实际出现的是 <y>​ 比较有可能让你得到回应。

# 问题解决后,加个简短的补充说明

问题解决后,向所有帮助过你的人发个说明,让他们知道问题是怎样解决的,并再一次向他们表示感谢。如果问题在新闻组或者邮件列表中引起了广泛关注,应该在那里贴一个说明比较恰当。

# 如何解读答案

# RTFM 和 STFW:如何知道你已完全搞砸了

有一个古老而神圣的传统:如果你收到RTFM(Read The Fucking Manual)​ 的回应,回答者认为你应该去读他妈的手册。当然,基本上他是对的,你应该去读一读。

RTFM 有一个年轻的亲戚。如果你收到STFW(Search The Fucking Web)​ 的回应,回答者认为你应该到他妈的网上搜索。那人多半也是对的,去搜索一下吧。(更温和一点的说法是 Google 是你的朋友!)

在论坛,你也可能被要求去爬爬论坛的旧文。事实上,有人甚至可能热心地为你提供以前解决此问题的讨论串。但不要依赖这种关照,提问前应该先搜索一下旧文。

通常,用这两句之一回答你的人会给你一份包含你需要内容的手册或者一个网址,而且他们打这些字的时候也正在读着。这些答复意味着回答者认为:

  • 你需要的信息非常容易获得
  • 你自己去搜索这些信息比灌给你,能让你学到更多

你不应该因此不爽;依照黑客的标准,他已经表示了对你一定程度的关注,而没有对你的要求视而不见。你应该对他祖母般的慈祥表示感谢。

# 如果还是搞不懂

如果你看不懂回应,别立刻要求对方解释。像你以前试着自己解决问题时那样(利用手册,FAQ,网络,身边的高手),先试着去搞懂他的回应。如果你真的需要对方解释,记得表现出你已经从中学到了点什么。

# 如果得不到回答

如果仍得不到回答,请不要以为我们觉得无法帮助你。有时只是看到你问题的人不知道答案罢了。没有回应不代表你被忽视,虽然不可否认这种差别很难区分。

总的来说,简单地重复张贴问题是个很糟的点子。这将被视为无意义的喧闹。有点耐心,知道你问题答案的人可能生活在不同的时区,可能正在睡觉,也有可能你的问题一开始就没有组织好。

你可以通过其他渠道获得帮助,这些渠道通常更适合初学者的需要。

有许多网上的以及本地的用户群组,由热情的软件爱好者(即使他们可能从没亲自写过任何软件)组成。通常人们组建这样的团体来互相帮助并帮助新手。

另外,你可以向很多商业公司寻求帮助,不论公司大还是小。别为要付费才能获得帮助而感到沮丧!毕竟,假使你的汽车发动机汽缸密封圈爆掉了 —— 完全可能如此 —— 你还得把它送到修车铺,并且为维修付费。就算软件没花费你一分钱,你也不能强求技术支持总是免费的。

# 如何更好地回答问题

态度和善一点。 问题带来的压力常使人显得无礼或愚蠢,其实并不是这样。

对初犯者私下回复。 对那些坦诚犯错之人没有必要当众羞辱,一个真正的新手也许连怎么搜索或在哪找常见问题都不知道。

如果你不确定,一定要说出来! 一个听起来权威的错误回复比没有还要糟,别因为听起来像个专家很好玩,就给别人乱指路。要谦虚和诚实,给提问者与同行都树个好榜样。

如果帮不了忙,也别妨碍他。 不要在实际步骤上开玩笑,那样也许会毁了提问者的设置 —— 有些可怜的呆瓜会把它当成真的指令。

试探性的反问以引出更多的细节。 如果你做得好,提问者可以学到点东西 —— 你也可以。试试将蠢问题转变成好问题,别忘了我们都曾是新手。

尽管对那些懒虫抱怨一声 RTFM 是正当的,但能给出文档的链接(即使只是建议个 Google 搜索关键词)会更好。

如果你决定回答,就请给出好的答案。 当别人正在用错误的工具或方法时别建议笨拙的权宜之计(workaround),应推荐更好的工具,重新界定问题。

正面地回答问题! 如果这个提问者已经很深入的研究而且也表明已经试过 X 、 Y 、 Z 、 A 、 B 、 C 但没得到结果,回答 试试看 A 或是 B​ 或者 试试 X 、 Y 、 Z 、 A 、 B 、 C​ 并附上一个链接一点用都没有。

帮助你的社区从问题中学习。 当回复一个好问题时,问问自己如何修改相关文件或常见问题文件以免再次解答同样的问题?​,接着再向文件维护者发一份补丁。

如果你在研究一番后才作出了回答,展现你的技巧而不是直接端出结果

妙哉, 建议办公室的大伙人手一套 ‍

# 大佬提升生产力工具建议合集

⚙️【方法论】我的效率提升方法论 - 工具使用篇 ⑥ (imageslr.com)

# 浏览器整理妙招

📥 收件箱 🔖 工作区 思维管理标签页和窗口:

  1. 打开一个 Inbox 窗口。Inbox 窗口是一个收件箱,放在这里的标签页全是待处理的,例如“待阅读”“待填写”“待评审”等。处理完后关闭。
  2. 控制工作区窗口的数量。人的注意力是有限的,最多同时处理 2~3 件事。因此,最多同时打开三个工作区,当前不用的工作区通通关闭,减少分神。
  3. 每个打开的标签页,都需要定期整理:要么移动到 Inbox 窗口,表示待处理;要么分配到特定的工作区窗口,持久保存;要么关闭。
  4. 不需要每打开一个标签页就立刻整理。可以先进行手头的工作,等闲下来之后再整理。

# 书签管理

书签管理也是浏览器一个很重要的话题。我们会把任何可能有用的、或者感兴趣的网页存成书签,但往往是收藏的时候很顺手,想用的时候却找不到。下面是我解决这个问题的方法。

# 为书签设置一个有意义的名称

Chrome 的地址栏支持搜索书签和历史记录。输入标题url 中的关键字

因此,可以为每个书签设置一个有意义的名称。当需要查找一个书签时,直接在地址栏输入几个关键字,比先思考它属于哪个类别、再去查找对应的文件夹要更方便。

我采用[平台]名称​ 的命名方式,比如 [Gitlab]imageslr/blog​、[TCC]ad.engine.api​。这里可以配合 TabModifier 插件,使标签页的标题和书签名称一致。

书签名还可以添加一些辅助搜索的 SEO 短语,比如 性能平台-云服务​ 可以修改为 性能平台-云服务|golang pprof|profile|服务性能优化|内存泄露排查

# 使用文件夹管理书签

不要把书签直接保存在书签栏上,而是要放在文件夹里。书签的标题会占用书签栏的空间。

不需要创建层层嵌套的文件夹。一般来说,在书签命名良好的情况下,我们可以很快搜索到想要的内容。因此,书签的文件夹只需要简单的划分,粒度可以粗一些,层级可以扁平一些。附录是我的书签分类方式。

# 将参考资料移动到别处

许多书签实际上是”参考资料“ —— 或者是对某项工作有用的参考文档,或者是一些学习资料,又或者是一些感兴趣的文章。我们需要定期整理书签栏,将这些”参考资料“移动到别处:

  • 某项工作的参考文档:移动到这项工作的项目文档。
  • 学习资料:移动到学习笔记,或者移动到任务清单,作为一个 TODO。
  • 感兴趣的文章:移动到稍后读工具。

总之,”参考资料“应当移动到特定的上下文 中,而不是放在书签栏里石沉大海。书签栏只保留那些需要经常打开的、真正有用的页面,减少干扰,易于维护。

我也有在做, 将大量临时文件存放到所谓"堆叠文件夹"中

# 全局快捷键唤醒

此外,还可以为常用的 App 配置全局快捷键,便捷切换可见状态。配置方法见 Preferences - Workflows - 右下角加号 - Getting Started - Hotkeys。比如我把 Alt+Q​、Alt+E​、Alt+F​ 分配给了提醒事项、飞书和微信。

我打算等工作区固定后进行

# Workflow

Workflow 是 Alfred 的核心功能。Workflow 类似于 iOS / Mac 的「快捷指令」,通过可视化的方式串联一系列操作,之后用一个命令直接执行整个流程。很多工作中的重复性操作都可以配置为 Workflow,节省时间,提高效率。

网络上有许多 Alfred Workflow 资源:

我常用的是这几个:

Don’t Repeat Yourself。多观察自己有哪些重复的操作,尝试把它配置成 workflow。举个例子,我经常需要执行一个命令,里面包含了 1.0.1​ 这样的版本号,版本号每次执行都不一样。一开始,我是手动填充版本号。后来配置了一个 Workflow,只需要输入版本号,就能自动拼接完整命令,并复制到剪贴板,非常方便。

# 理念

# 如非必要,勿增实体

  • 使用一组简单的工具,完成不同的需求;而不是使用一个复杂的工具,完成全部的需求。
  • 使用一个复杂的工具时,前期只使用必要的功能。不要强行迎合软件,而是要根据实际需求,渐进式地选用新功能。

# Don’t Repeat Yourself

  • 经常需要复制粘贴的内容 (如地址、邮箱、发票抬头、工号等),存成 Snippet。电脑上可以使用 Alfred Snippet;手机上可以使用备忘录,或者在输入法中配置快捷短语。
  • 重复性操作,配置成 快捷指令Alfred Workflow

# 善用 SEO 关键词

SEO 关键词可以增加信息量,提升检索效率。下面这些位置可以添加 SEO 关键词:

  • Chrome 书签标题
  • 笔记标题、笔记内容
  • 文件名
  • … (所有要查找的位置)

# 多用键盘,少用鼠标

不同的软件快捷键可以配置成一样的,便于记忆

# Mac

从零开始配置高效 Mac 开发环境

暂时没用

# 娱乐

# 优势在我演讲完整版

链接

电影《大决战·淮海战役》中常公那段经典念白

徐州地方,历代 大规模征战五十余次,是非曲折 难以论说,但 史家无不注意到,正是在这个古战场,决定了多少代王朝的盛衰兴亡、此兴彼落,所以 古来就有 问鼎中原之说.

当年 先总理 令革命军 分三路 会合徐州,兴师北上,光复徐州的第二天,清帝见大势已去,宣告退位. 民国十六年四月,也正是在徐州城郊,我有幸亲率数十万健儿 征讨北洋军阀孙传芳、张宗昌,大获全胜!

我不明白,为什么大家都在谈论着 项羽被困垓下,仿佛这中原古战场 对于我们注定了凶多吉少. 二十年前,我从徐州踏上征途,开始了第二次北伐,中华秋海棠叶 遂归于一统. 本党本军所到之处,民众竭诚欢迎,真可谓占尽天时,那种勃勃生机、万物竟发的境界,犹在眼前. 短短二十年之后,这里竟至于一变 而成为我们的葬身之地了么?

无论怎么讲,会战兵力,是八十万对六十万,优势在我

转译

许邹底芳,李代,打龟摸增錾五色于此,死飞取泽,楠衣论缩,胆,私架五部组衣倒,怎斯在泽个古錾仓丧,撅钉辽多扫呆往糙的森帅信汪,呲新逼罗,蓑衣,古来揪有,稳定总冤资缩

当念,仙总利,林葛皿菌,粉三芦,毁喝许邹,新斯播桑,关父许邹的底儿舔,亲笛减打斯姨渠,宣高颓维,皿锅色洛年四月,耶怎斯栽许邹岑交,我油信亲帅苏色碗捡二,怎套波样军发,孙蹿放,赃总仓,打货犬森

窝不皿败,维森摸打加都栽毯轮则,想鱼背昆该侠,仿佛泽总冤古錾仓,堆于我们租钉辽胸多技嫂,饵丝年前,我葱许邹塌桑怎图,开司辽底儿次波罚,宗花秋海棠爷,虽龟鱼椅痛,奔裆本俊缩刀资粗,皿宗姐岑换阴,怎可畏攒劲甜四,那宗伯伯森鸡,晚雾锦发的晋借,有在眼前,断断饵丝黏吼,泽哩井资雨衣贬,而为我的脏森资敌了妈?

五抡怎么姜,灰錾兵哩,四拔四湾对洛四湾,油四栽我

八十万! 六十万! 思政课上吾人的惊天一吼 ‍

# 超强的 P 社战犯

大学时迷上了 p 社游戏,虽然读的工科专业,但是对历史产生了浓厚的兴趣,于是本科毕业后打算跨考历史. 大家可以翻翻我 20 年写的帖子,那个时候是第一次考研前一天写的,说实话那一年其实也是 p 社游戏入脑了,人家叫我回答“近代欧洲历史进程”,但是我写了一堆这样那样的战争,从瓦尔纳十字军,写到什么哈布斯堡-瓦卢瓦战争,还有西班牙王位继承战争……
但最后竟然分数还可以,其实就这一道题如果答好,可能那年也上岸了. 后来又考了三次,这次是第四次了,进了面试,也看到了以前视频讲座才能看到的导师,有种说不出来的感觉.

本科的时候打算以后考研历史,还有一个原因. 其实我想以后再回到高中和历史老师当同事. 高一文理不分科的时候,我历史从不复习,也考了第一名,那个时候是真的很喜欢高中历史老师(当然还有化学). 高二分了文理科之后,他依然带我们理科班,那个时候很多人上历史课其实就是写理科作业,很多时候只有我在和老师互动(当然也是因为我上课时话比较多……). 有次讲到苏联,他还让我和他一同梳理苏联领导人的顺序,“列宁,斯大林……”我从勃列日涅夫直接就跳到了戈尔巴乔夫,他告诉我中间还有安德罗波夫和契尔年科……

当时只道是寻常. 我很想跟他说我最近看了什么新书,我还有好多观点都想讲给你……但是,我再也没有机会和他分享我对历史的喜爱,他已在 2020 年去世了,去世时可能还不到四十岁……

什么时候喜欢上历史的呢?我记得是小时候翻的什么青少年百科吧?我为我记住了两河流域的两河是“幼发拉底河与底格里斯河”而雀跃,“秦朝是公元前 221 年建立的”“金朝竟然灭亡于 1234 年,这年代真有意思”,还拿去考考爸妈,获得他们的认可.

一路走来,选了理科,不过我化学确实挺不错的,如果高考可以选的话,我可能回选“历史+化学+生物”.

“历史有什么用呢?”我常常听到一些人会这样问. 马克布洛赫早已作了回答,但我觉得抛开“历史是否有用”,他所说的“历史有独特的美学愉悦”“难道所有的男女不都应该成为历史爱好者,乃至历史迷么?”,才是真正击中我内心的观点.

复试结束,离开学校,碧空如洗. 我想起了苏轼在离开儋州时写下了“兹游奇绝冠平生”的诗句. 是啊,这趟旅途是我人生最奇绝的经历,我想不管结果如何,我都给这些年的经历画上了一个句号. 历史很有用,历史很有趣.

要是我这次复活赛真没打赢然后死了, 我也去跨考历史(艹, 搞笑罢了, 肯定还是搞软工啊)

# 政治

# 观马克龙讲话

Link 疫情之前的演讲了, 很远之前的了

他有一句话,非常文艺.

我反问美国人,把俄罗斯与加拿大的位置互换一下怎么样呢?

这个修辞,是能让欧洲人振聋发聩吧.

小马是中学时期上台的 30 多岁的年轻领导人, 2018 好像, 但是一直到现在还在.

# 战争

# 著名战争演讲

Link

列宁在伯尔尼国际群众大会上的演说:
同志们!欧战逞狂肆虐已经一年零六个多月了,战争每拖长一月,每拖长一天,工人群众就更加清楚地知道齐美尔瓦尔得宣言说的是真理:“保卫祖国”之类的词句不过是资本家骗人的话,现在人们一天比一天看得更清楚,这是资本家、大强盗的战争,他们所争夺的不过是谁能分到更多的赃物,掠夺更多的国家,蹂躏和奴役更多的民族。

二战期间的话就多了,丘吉尔,罗斯福,蒋介石,希特勒,以及各国将领的阵前讲话,都是经典之作。

先从希特勒二战前的一篇演讲说起吧,希特勒这人不管后世评价如何,行为又如何,至少在煽动群众情绪上是一把好手,这是不能否认的。

如果有那么一天,我,阿道夫.希特勒,也会像本杰明.马丁那样,举着属于我们德意志的大旗冲在最前方!哪怕是战死,我也会微笑着进入天堂!我会见到那些德意志的荣耀的祖先们,我可以昂着头颅走到伟大的腓特烈大帝跟前,我可以骄傲地对他说:我,你的子孙,没有给你丢脸,我为伟大的德意志流尽了最后一滴血!

丘吉尔的话,最经典的就是那篇广播演讲了。热血,辛劳,眼泪和汗水。

我向国会表明,一如我向入阁的大臣们所表明的,我所能奉献的唯有热血、辛劳、眼泪和汗水我们所面临的将是一场极其严酷的考验,将是旷日持久的斗争和苦难。
若问我们的政策是什么?我的回答是:在陆上、海上、空中作战。尽我们的全力,尽上帝赋予我们的全部力量去作战,对人类黑暗、可悲的罪恶史上空前凶残的暴政作战。这就是我们的政策。
若问我们的目标是什么?我可以用一个词来回答,那就是胜利。不惜一切代价,去夺取胜利–不惧一切恐怖,去夺取胜利–不论前路如何漫长、如何艰苦,去夺取胜利。因为没有胜利就不能生存。

再比如,罗斯福在珍珠港事变后的国会演讲。

昨天,日本政府已发动了对马来亚的进攻。
昨夜,日本军队进攻了香港。
昨夜,日本军队进攻了关岛。
昨夜,日本军队进攻了菲律宾群岛。
昨夜,日本人进攻了威克岛。
今晨,日本人进攻了中途岛。
因此,日本在整个太平洋区域采取了突然的攻势。昨天和今天的事实不言自明。美国的人民已经形成了自己的见解,并且十分清楚这关系到我们国家的安全和生存的本身。
作为陆海军,总司令,我已指示,为了我们的防务采取一切措施。
但是,我们整个国家都将永远记住这次对我们进攻的性质。不论要用多长时间才能战胜这次预谋的入侵,美国人民以自己的正义力量一定要赢得绝对的胜利。
我们现在预言,我们不仅要做出最大的努力来保卫我们自己,我们还将确保这种形式的背信弃义永远不会再危及我们。我这样说,相信是表达了国会和人民的意志。

再其次,要谈谈中国,抛开国军作战水平如何不谈,单说演讲稿的水平,蒋总统在庐山的抗战声明,的确可以称得上中国一流的文章了。

我们希望和平,而不求苟安;准备应战,而决不求战。我们知道全国应战以后之局势,就只有牺牲到底,无丝毫侥幸求免之理。如果战端一开,那就是地无分南北,年无分老幼,无论何人,皆有守土抗战之责任,皆应抱定牺牲一切之决心

最后上一篇巴顿第三集团军演讲稿,大家感受一下,这狗娘养的巴顿,是多么有他妈的才华。

弟兄们,你们所听到的那些有关美国人不想打仗,只想置身事外的说法,那都是一堆臭屎。美国人爱打仗。所有真正的美国人都爱战场上的刺激和交锋。当你们还是孩子的时候,你们都会崇拜弹子球冠军、跑得最快的人、大联盟球员和最强悍的拳击手。美国人爱戴赢家而且不能容忍输家。美国人每一次都会赢。这也是为什么美国人从来都没有输过而且永远也不会输掉一场战争。美国人对输的念头都感到可恨。战斗是一个人能够参加的最重要的比赛。它会让所有最好的脱颖而出,让底层的彻底淘汰。
你们不会全部都死。今天在这儿的人只有 2%会在一场重大战役中牺牲。每一个人第一次上战场都会害怕。如果他说他不怕,他就是个天杀的骗子,但真正的英雄是那些即使害怕仍然坚持战斗的人。有些人到了火线下只要一分钟就能克服他们的恐惧,有些要一个钟头,还有些要花上好几天。但一个真正的男人从不会让他对死亡的恐惧胜过自己的荣誉感,他对自己祖国的责任感和他天生的男子气概。
所有经过军旅生涯的人都曾抱怨过“鸡屎演练”。那都只是为了一个目的——确保对命令的即时服从并时刻保持警惕。每一个士兵都必须做到这一点。我才他妈不在乎什么一个人不能永远都忙个不停。这些演练已经把你们所有人都训练成了老将。你准备好了!一个男人要想活命就必须随时保持警惕。西西里岛有 400 个整整齐齐的坟墓,都是因为一个人值班的时候打瞌睡——不过那都是德国人的坟墓,因为我们比那个长官先发现他在睡觉。
所有真正的英雄不是像故事书上描述的那样。军队里的每一个人都扮演着至关重要的角色。所以永远都别松劲。连想都不要去想什么你的任务不重要。要是每一个卡车司机都决定他不喜欢炮弹的轰鸣然后给吓坏了接着一头扎进一条沟里的话怎么办?那个没胆的混蛋可以对自己说,‘见鬼,他们不会想我的,只是几千人中有一个。’要是每个人都这么说呢?那这个世界会变成什么鬼样?不,感谢上帝,美国人不会这么说。每个人都会尽责。每个人都很重要。我们需要有人来提供枪支弹药,需要军需官来给我们准备食物和衣服,因为我们要去的地方可没有大把的东西可以偷。食堂里的每一个天杀的人,哪怕只是个烧水的,都有他的职责。
每个人都应该想到身边一起出生入死的战友,而不是只想到自己。我们的军队里容不下胆小鬼。他们应该像苍蝇一样被清理掉。不然,他们就会在战争结束后回到家,天杀的胆小鬼,然后养出更多的胆小鬼。勇士会养出更多的勇士。杀光这些天杀的胆小鬼,我们就会成为一个勇士的国家。
我在非洲战场上见过最勇敢的人之一,是我们正朝突尼斯前进时一个在强大火力下爬到电线杆上的人。我停下来问他爬到那上面干什么鸟。他回答,“修复线路,长官。”“这个时候在那上面不是有点不健康么?”我问。“是的长官,但这天杀的线路还是必须得修好啊。”我又问,“这些飞机低空扫射不打扰你吗?”他回答,“不长官,不过你倒肯定是打扰了。”你看,这就是个真正的战士。一个真正的男人。一个把一切都投入到自己的职责,不管赔率有多大,不管他的职责当时看起来有多么无关紧要。
你们应该都看到了那些前往加贝斯路上的卡车。那些司机真是气壮山河。他们整日整夜地沿着那些狗娘养的路前进,从不停车,从不因为周围的炮弹爆炸而偏离路线。很多人已经连续开了超过 40 个小时。我们能够通过,都是靠这些有胆量的美国好汉。他们不用上战场。但他们是有任务在身的战士。他们是团体的一部分。没有他们这一战就会输掉。
是,我们都想回家,我们希望结束这场战争,但你不能靠躺着来赢得战争。最快的方法就是干掉这些发动战争的王八蛋。我们要冲过去把这些天杀的都清理掉,然后再干掉那些日本鬼子。我们越快把他们消灭干净,就能够越早回家。回家最近的路是通过柏林和东京,所以保持前进。
当一个人躺进个猫耳洞里,如果他在那儿呆一整天,德国兵总会抓到他。见鬼去吧。我的人不挖猫耳洞。猫耳洞只会拖延进攻。继续前进,我们就会赢得这场战争。但我们只有通过战斗,并且给那些德国人看看,我们比他们更有胆量才能赢得战争。可能会有一些抱怨说我们把自己人逼得太紧了。我还他妈不在乎这些什么抱怨呢。我相信一杯汗水可以挽救一桶鲜血。我们逼得越紧,就能杀越多德国人。我们杀的德国人越多,我们自己人被杀的就越少。逼得紧意味着更少的伤亡。我要你们都记住这一点。我的人不投降。我不想听到我手下任何一个军人被俘虏,除非他受了伤。即使你受了伤,你还是能够战斗。这也不是说什么胡话。我想要像利比亚那位中尉那样的男子汉,有支鲁格对着他的胸口,他用手扫开那支枪,猛地用另一支手取下头盔把那个德国佬打得晕头转向。然后捡起枪打死了另一个德国人。而在这一切发生前,已经有一颗子弹打穿了他的肺。这就是你们的真汉子!
别忘了,你们完全不知道我来过这里。一个字都不能泄露出去。全世界都不应该知道你们跟着我在干嘛。我没有在指挥这支军队。我甚至不应该出现在英格兰。让那些天杀的德国佬们第一个发现吧。总有一天,我要让他们吓得屁滚尿流地爬起来号叫。
等战争结束你们这些男子汉回到家以后,你们就有资格说一件事。三十年后,当你坐在壁炉边,你膝盖上的孙子问你:“你在那场伟大的第二次世界大战期间都干了什么?”你不用咳嗽一声说:“这个,你爷爷在路易斯安那州铲粪。”不,先生们,你可以直视他的眼睛说:“孩子,你爷爷当时正和伟大的第三集团军,还有乔治·巴顿并肩作战!”
好了,你们这些兔崽子们。你们知道我的想法。我会为能够在任何时间、任何地点领导你们这些了不起的家伙感到骄傲。就这些。

# 职场

# 关于实习我想说的一切_牛客网

Link

我感觉目前牛客的言论趋势似乎走到了另一个极端,那就是认为实习大于一切,所有反对实习的贴子都会遭到群嘲. 这种言论风气并不是一个好的现象. 回想起来,我也有很长一段时间认为应该不顾一切去实习. 但在后来秋招的时候认识了很多人,有很多 0 实习也拿到了很好的 offer,而一两段大厂实习但 offer 一般甚至至今失业的也不在少数. 再加上我本身属于实习比较早比较多的那一类,这让我现在可以相对客观地来看待实习这件事. 这篇帖子主要想讲一下我对实习的看法和实习这件事带给我的收获,至于要不要去实习,什么时候去,去多久,那就由各位按照自己的情况决定了. 另外,本人学历情况是末 2 本科,求职和实习方向都是前端,其他方向和学历的情况可能有很大不同,各位仅作参考即可.

先说一些本人的实习路线:

  • 大二暑假:初创公司(日常实习)
  • 大三寒假:美团(日常实习,无转正)
  • 大三下学期:百度(日常实习,有转正机会)
  • 大三暑假:美团(暑期实习,有转正机会)
  • 现在:快手(拿 offer 后提前实习)

跟连着去 BAT 实习的大佬差距很大,但在整体应该还算是实习比较多的了. 下面是我在这一年半实习的时间中的一些感受,可能对大家有所帮助

# 打破大厂实习的幻想

首先我要对很多没有去过大厂实习的同学说,大厂实习,尤其是大厂的日常实习,跟你去之前想的其实是有很大差距的. 如果说公司的福利情况和硬件设施还可能跟你在牛客或小红书之类的平台看到的差不多. 但如果从从事的工作来看,可能跟你的想象有很大出入.

在去大厂实习之前,我也总会觉得,在大厂写代码一定需要更强的能力,有更高的要求,但去了之后会发现,更多的其实还是写业务,甚至很多内部项目的代码质量还不如你自己的项目. 不仅是我,周围很多去大厂实习的同学也有这种感受,感觉能学到的东西其实有限,每天写业务学不到东西.

这其实就要说到大厂招日常实习的本质逻辑,对于绝大部分公司来说,日常实习只是招一个能完成一些非核心工作的人. 这些工作正职员工没时间去做,但专门招个外包干又太亏,这时招个日常实习生就是个很好的选择(当然这只是原因之一). 比如一个大厂的算法组或大数据组的内部平台需要增加 CRUD 功能,但组里没有人会写前后端或没时间写,这时就会招个日常实习生来干这些事,或者你们组的主要负责业务是 TOC,但还有一些不重要的 B 端项目,这时也会招实习生来负责这个项目. 这时你会发现,组里的技术水平似乎很高,但这些技术你一点都接触不到,有难度的项目根本不会给你做,你能接触到的全是增删改查 当然,这里不排除一些大厂会将一部分日常实习生作为正式员工的预备役进行培养(比如宇宙厂),或者让实习生去干一些难度很高的工作. 但根据我了解的情况来看,我说的这种情况一定是占大多数的. 至于在这种日常实习中如何提升自己,后面的部分会说到.

相对而言,暑期实习的含金量就要高很多了,由于暑期实习本质上就是去招秋招的储备人才,因此组里基本都会对暑期实习生进行培养的. 这时就很可能会分给你一些有技术难度的项目或者让你独立完成一个技术需求,能学到的东西会多很多,会相对更接近你对大厂实习的幻想. 再不济,即使你依然在做 CRUD 和切图,你做的工作也大概率是组里的主要业务之一,整个开发流程会跟正式员工对齐,一般不会出现很多日常实习那种组里全是写 toC,然后把不重要的 B 端扔给你,让你自生自灭的情况. 这也是暑期实习为什么重要的原因,即使不考虑转正因素. 相比于日常实习来讲,也能成长得更快.

# 理智看待实习

我觉得上面分享的那篇贴子一个非常好的观点就是,基础不牢,实习救不了你. 如果你把大量的时间花在边缘的日常实习,每天都干着重复且没有技术含量的工作,每天没有任何成长,其实是对时间的浪费,而且每天下班,在工作一天后,你大概率是没有精力在晚上学习了,也就会导致所谓的的“基础不牢”. 这种实习干一段三四个月刷个经历是个非常好的事情,但如果开始得过早,把大把的时间花在这上面,其实我认为是不太妥当的. 除非你实习的组技术强,能让你有很多的收获,或者跳了很多大厂,带来很漂亮的简历和隐性资源,再或者你毅力过人,能上了一天班晚上回去还能坚持学习. 否则我并不认为过早地将时间 all in 在实习上是一件好事(注意是 all in).

之前在初创公司实习的时候,我帮公司面试了很多前端实习生(这里如果大家有兴趣,之后可以再写个帖子细聊),有非常多简历上有好几段实习的,看着非常漂亮,但一问一点深度没有,基础问题还答的磕磕绊绊. 这种情况我真的觉得,把其中一段实习的时间拿出来巩固基础,或许他们的发挥会好很多. 包括就我自己的情况来看,在那家初创公司实习到后两个月的时候,明显感觉对自己的提升有限,且因为忙于实习,每天能学习的时间也少了很多. 而且因为每天做的东西都太简单了. 甚至一度让我对前端这个岗位对技术上限感到了迷茫. 回过头来看,如果我当时早点辞掉这个实习,开始全天学习,可能基础的扎实程度和八股能力都能再提高很多.

总而言之,当你选择实习时,一定要考虑清楚这份实习能给你带来什么,能力提升,视野提升,大厂背书,转正机会等等,都是理由. 但也要清晰地认识到一点,实习本质上一个交换的过程,用大把的学习时间交换你想要的东西. 因此,神化实习的作用是不可取的,如果你发现当你实习到某一天,发现这份实习没发带给你更多的提升,或者带给你的提升已经不如你去自学了,就应该考虑这种交换是否值得继续下去了. 尤其是我见过很多技术相对一般的同学,因为暂时去不了大厂实习,就开始疯狂地去中小厂刷实习. 这种行为我个人是不太认可的. 因为中小厂的实习培养机制普遍不完善,实习带给你的能力提升有限,更多的还是刷经历,但当你有两段实习后,后面的中小厂实习带给你的背书能力已经很弱了. 这时你出去实习其实就远不如在学校沉淀技术,夯实基础了

# 实习没有提升怎么办

很多人其实都会有这样的困惑,那就是自己的实习每天干的活都是基本的业务,技术含量有限. 感觉每天技术没有提升,开始质疑实习的意义. 其实根据我和很多 25 届的学弟聊发现,这是一个正常现象,甚至可以说,绝大部分的 25 届日常实习生可能都会面临着这种情况. 包括我自己也有过这种情况,第一次实习稀里糊涂,混了好多日子. 结果就是后面的面试问起这段实习经历时,答的磕磕绊绊. 而且简历上也没什么能写上去的东西. 后面从第二次实习开始,逐渐开始认识到了问题的所在,在实习期间就开始进行规划,在后来的面试中讲实习经历就会流畅很多. 这里浅浅跟大家分享一下经验

  1. 入职第一周就开始思考:我的这份实习经历如何写简历,如何讲清楚我的这份实习,面试官可能会问我这份实习那些问题. 这点我认为非常重要,这并非是让你面向面试实习,而是如果你带着这种思维去开始你的实习的话,你就会去刻意关注很多你平时可能不会关注的问题. 比如,我们组的业务是什么,有哪些技术积累,上下游和哪些部门对接,能带来怎样的价值. 我在实习中负责的项目是什么,这个项目在整个小组的业务中的定位是什么,我做的这件事有怎样的收益,项目的技术栈是什么,如果项目框架是开源框架,那为什么要用这个框架,如果是自研框架,那为什么要自研,自研框架是为了解决项目的哪些痛点. 这个技术方案是怎么做的,为什么不用现成方案和库,前期调研了哪些方案 ….诸如此类的问题,当你带着面试官的视角来看你实习的组时,就会对自己的实习有更加深入的了解,而不是只关注于自己负责的一亩三分地. 后面讲起这段实习时,也有更多的谈资
  2. 主动要活. 这并非工贼行为,这里的主动要活,并不是要一些业务需求,而是要一些技术需求. 大厂基本都会每个季度的技术需求排期,你可以留意一下组里这个 Q 的技术排期是什么. 然后问你的导师能不能把他的技术需求里一些简单的事情交给你来做,或者把一些技术调研的事情分给你. 如果技术需求较难且重要的话,代码部分可能不会给你,但要技术调研的话,导师基本不会拒绝. 不要小看技术调研,做技术调研是一个很好的学习过程,一方面,它能让你有机会深入了解一个特定的方向,这个方向可能是你之前根本不曾关注或没有听说过的. 同时,它也能让你了解这个技术项目的前因后果,为什么要做这个需求,痛点是什么,目前的数据情况如何. 如果可能的话,一些技术调研还可以借此机会看到组里较为核心的代码. 另外,在之后讲这段实习时,直接说自己做的是有难度的部分是技术调研也是没有任何问题的(我讲自己实习中的一个难点就会说高性能 web 调研,没碰到过面试官不认可这个难点的情况),前提是你把这个调研做好,做全. 当然,这里还有一个问题就是一些人实习的公司没有技术需求,甚至自己的导师和主管都不是跟自己一个岗位的. 那么这种情况就要看下面这点了
  3. 积极发现项目中存在的问题,设计解决方案. 这点更多的是针对在中小厂实习和在大厂做边缘 B 端的同学. 因为核心一点的大厂 C 端基本都会非常关注代码规范和性能,能给你一个实习生做的东西非常少了. 但很多边缘的 B 端项目,或者很多中小厂的 C 端项目,其实都有很大的优化空间,就看你有没有能力发现并抓住这些机会了. 比如如果是 C 端项目,作为前端你就可以去开发者工具去分析整个项目的性能指标,从火焰图去看整个项目的执行情况,有没有执行时间过长的函数可以考虑优化. 或者直接去代码里理逻辑,看看有没有哪些地方可以优化,即使你的优化方案都是八股文里烂大街的,如果能在项目中落地也是一件很了不起的事情. 如果是 B 端项目,那么除非性能优化可以提升非常多,否则性能优化价值不大,更多的可以从构建流程的角度来考虑,比如升级构建的一些配置来加速构建时间或产物大小等. 或者就是一些项目开发中的痛点,能不能写一些小工具来解决. 比如你们的测试环境要带上特定的请求头才能访问,之前都是改配置代码,那能不能写一个浏览器插件来完成这件事,这样就可以更快得切换开发和测试环境,不用走改配置+构建的过程了. 或者你们的图片需要去特定的网站处理后才能使用,那能不能写个 node 脚本并接入构建流程,让这个流程自动化进行?总之公司的项目并不想你想的那么完美,会有一大堆正式员工没来急的处理或不太重视的小问题,发现这些问题并解决,就能让你的实习更加具有含金量.
  4. 看文档,看组里其他人在干什么. 看文档是非常重要的,大厂基本都会有自己的文档和知识库. 这是一个非常好的提升技术视野的途径. 我在美团实习的时候因为疫情过年没回家,那年的大年初一到初六,我每天做的事情就是睡到自然醒,然后去公司看一天的学城文档. 那段时间是我技术视野和认知提升最快的时候. 从那时我才逐渐发现,切图,框架,请求,构建工具这些都只是前端世界非常非常小的一部分. 一个真正牛逼的前端工程师能做的事情还很多. 当时看到的很多技术方案是我从未想过可以去做的,在这个过程中我逐渐明白如何发现项目中存在的问题,如何制定一个技术方案,如何画架构图和设计图,如何做前期调研,如何量化收益等等. 那段时间是我觉得自己成长最快速的时间,看文档带给我的思考方式提升,我觉得也对我之后的实习和秋招有很大帮助. 当然,很多小公司是没文档的. 这个我也清楚,那么这种时候就只能 all in 第 3 点了. 要是第三点也没机会搞,或者主管不支持,那就刷两三个月经历趁早跑路吧

‍ 很好, 自己基本是运用上了

# 不去实习该如何学习

前面讲到一点,就是去一堆中小厂刷含金量不高的实习经历是没有意义的. 另外,在第二部分也讲到,实习的本质是用大把的学习时间换取你想要的东西,这也就意味着,如果你能利用好大把的学习时间,也是可以得到比实习更多的收获的. 这里主要讲一下如果不去实习的话,应该如何提升自己的技术水平.

首先要注明一下,虽然不想搞学历对立,但根据我周围去年的秋招情况来看,学历 92 或双一流以上即是没有实习也有机会拿到大厂面试和 offer,相对而言,双非的同学如果没有实习拿到面试的机会就会少很多(前端岗,其他方向不了解). 这是客观存在的情况. 因此建议各位如果学历在双一流以下,至少得在秋招前拿到一段实习. 这部分的内容针对的人群大概是:

  • 学历较好,但受限于各种原因(导师不放人,学校的课没法请假)无法去实习的同学
  • 学历一般,已经有过实习但感觉含金量不高,陷入实习焦虑的同学
  • 26 届及以下的同学

个人认为大三以前沉淀技术>实习,最快也应该到升大三时再考虑实习,虽然我个人是大二暑假开始的,但现在让我重新选择的话,我会更倾向于大三中期或大三寒假再去实习,大二继续沉淀技术和基础. 之前我也觉得开发岗怎么可能碰到复杂的算法,结果就是,后面工作中真的碰到需要自己设计和优化算法以及较为复杂的场景时,明显感觉自己基本功不够. 因此还是建议大家大三以前一定要打好基础. 把计算机基础知识,设计模式和算法学好. 这里提一嘴,在前端方面个人认为重要性的排名是(设计模式>计网>编译原理>算法>OS/计组),设计模式绝对是被很多人忽略的东西,写业务还好,一但你需要看源码或者写轮子,编辑器这种较为复杂的项目,不懂设计模式真的会一头雾水.

至于 25 届,学历一般,还是 0 实习的同学,这部分也可以抽时间搞一下提升自己,但更关键的还是尽快拿到实习机会,不然秋招难度真的会指数级增加

首先,大厂实习带给你最多的,其实是技术视野的开阔和接触到复杂工程的机会,协作能力和所谓的沟通交流能力其实没有那么重要,至少重要性远没有很多人想的那么高(对于技术同学而言),其次,就是背书的能力,但要认识到的一点是,如果你本身能力不够,再多的面试机会也没有意义. 因此,能力够硬是最根本的前提.

另外一点就是,大厂实习是一个能够提升你的技术视野和思维,让你突破技术瓶颈的地方,如果你在学校自学,把框架,构建工具,工程化,Node 服务端都学完后,很容易陷入到技术瓶颈当中. 也就是在一直寻求学习更多的框架技术,去学 rust,webGL,甚至 redis 和 MQ,但是对所有技术的掌握又很浅,能明显感觉到框架只是工具,学再多也没有用,但又不知道如何提升自己,我自己也在这种阶段滞留了相当长的时间. 说白了就是技术认知不足,不知道如何将技术真正运用到项目中去解决真实问题,不知道技术落地过程中可能出现哪些问题. 比如你在学校做的项目都是 QPS 只有几十的,是很难想想到 QPS100 万的项目会出现哪些问题的. 这时就需要去开阔技术视野,了解到一些技术在业内的实践方式,在实际开发过程中有哪些问题需要解决,如何解决等等. 这本质上就是一个认知迭代的过程. 大厂中的实际项目是接触这些东西很好的方式,但并不是唯一的方式

那么也就是说,如果不去实习,其实在学校里要做的就是三件事:

  • 打基础,至于怎么打基础,那就不是我要讲的了,这么多年了,先问问自己八股背完了没有,hot100 刷了几遍(bushi)

严肃地说,这个打基础就是要把基础搞明白,弄清楚,而不是为了面试而背一大串的烂八股. 这也是我觉得把实习看太重的一个弊端,那就是在明明时间还很充裕的情况下,为了尽早拿到实习机会而把大量时间花在烂八股上,而不是去研究更有深度的东西. 这实际上是相当浪费时间的. 经历过大厂秋招大厂面试的同学一定清楚,面试官会问你垃圾回收或事件循环这种跟工程能力有关的八股, 但绝不可能问你!DOCTYPE 的作用这种纯靠背且对开发基本没什么帮助的烂八股. 而很多离秋招和暑期还很远的同学,因为太早地去准备实习而花了大把时间去背这种东西,其实完全是本末倒置的行为.

正确的打基础应该是,如果你时间充裕,那么就应该根据八股去研究更底层的东西,比如今天你看到了 Vue 的 diff 算法的八股,那你要做的就应该是直接去 github 上把 Vue 的源码拉下来,看看内部这个 diff 算法到底是怎么写的,key 是如何生成的,为什么要设置四个指针,而不是直接跟 React 那样建立映射关系?而不是查一大堆二手资料然后背一堆概念. 诚然,这个过程是相当耗费时间的,可能你做他的这个时间可以背四五页八股了,但是这个过程是能给你的提升是远比你能把死的概念背下来要强很多的. 同理,JS 如果你想去研究得更加深入,可以看看 V8 官方的一些博客https://v8.dev/blog

  • 扩宽技术视野,这点我吃亏真的很多,在初创公司实习完冲大厂的时候,背了很多八股文,但实际上在面试很多大厂时,都会因为技术视野和解决方案设计相关的问题而吃大亏.

因此,我希望之后的 25 届一定要抽时间去扩展自己的技术视野. 去多看看一些大厂的技术实践. 不要把视野局限在框架上. 比如美团技术团队的博客字节终端团队的一些博客,很大程度上可以替代实习中看知识库和文档,增加技术视野. 看看很多技术在企业级项目中是如何落地的,又可能会出现哪些问题. 或者去多跟一些上岸大厂的学长或前辈聊聊他们最近在做的事情,都能很大程度上提升自己的技术视野. 这本质是一个潜移默化的过程. 虽然你不可能看完 rust 在构建工具上的落地,就马上学会如何在你的项目中使用 rust,但文章中记录落地过程中出现的问题,前期调研的过程,解决思路和方式,其实都有很多的借鉴作用. 会让你逐渐学会这种思考方式.

  • 接触复杂项目,这个很多人可能很难理解,不去实习如何接触复杂项目呢?答案很简单,那就是去 GitHub

没错,我可以负责任得说,绝大部分中小厂的项目和大厂的非核心项目,跟 GitHub 上的千星项目比,代码质量差的可不是一星半点,如果你想见识高质量的项目,没有比 GitHub 更好的渠道了.

很多人可能会说,自己水平有限,给大项目提 PR 根本没人叼,那些 issue 自己又不会修,怎么办?

答案是不需要,提 PR 参与开源这件事,能做当然是最好的,但实际上,就算你只是看很多开源项目的代码,也能有很多收获,而且很可能比在大厂实习能学到的技术还要多,而且基本上包罗万象,各种领域的都有.

但是看也是要有方法的,不是你随便找个几万行的大项目从 index.js 看起,这么搞的话,估计你看一小时就会被劝退了,正确的方法是在学完某个方面的知识后,带着问题专项研究

比如你看完了 Vite 的课程,感觉学了不少东西,但又没法检验自己的水平,那么这时一个很好的方式就是,去 GitHub 把 Vue 团队下,所有用 vite 构建的项目都看一遍,看的过程中其他的代码不用管,只看 vite 的配置文件和相关的脚本是怎么写的就够了,然后想一想为什么要这这样写配置,为什么要写这些脚本. 这样很大程度上,你就明白了 vite 配置的最佳实践. 同理,如果你学完 redux,也可以找很多使用了 redux 的高星项目,看看他们是如何使用 redux 的,通过这样的方式,你对这些技术的掌握程度和最佳实践的理解程度,绝对不会比在大厂实习的同龄人低,甚至更高.

再重申一遍,上面这些学习方法是推荐给学习时间充裕的大二及以下,或者学历或其他经历能够让你不去实习也能拿到面试机会的同学. 25 届学历一般又没有实习的同学一定要抓紧找第一份实习!!!!

# 实习带给我什么

说起来实习给我带来了什么,我也想了很久,可能最直接的就是,让我秋招拿到了一份还算不错的 offer,但我觉得,或许不止于此. 我觉得这些实习真正给我带来的是,一种不一样的大学生活,让我看到了更广阔的世界.

在那个初创公司实习的时候,我直接就是跟创业的老板汇报工作的(毕竟团队太小了,就二十几人),看着他是如何带着一群人,在没什么资源的情况下一步一步往前走. 当时从项目研发,拉资源,招聘,谈客户,他基本在全程负责. 有时我都感觉,我高三都没有他那么累,后来我辞职去了美团,还跟他一起吃了几次饭. 当时我肉眼可见地能看出他的疲惫. 但他却总是斗志昂扬地跟我说,咱们的公司已经越来越好了,以后咱们做大了我就把你们都请回来. 那是我第一次见到的纯粹的互联网创业者,虽然我之前吐槽过那段实习带给我的技术成长有限,但我一直觉得,在那里的经历是我不可磨灭的记忆,之后我在美团,百度和快手见到了很多技术大佬或职级很高的主管,但再也没见过和他一样眼里有光的人.

后来去了上海美团和北京百度,认识了很多跟我一样出来实习的人,现在和其中很多人都成了很好的朋友,也见到了很多真正的大佬. 在这个过程中,对自己的预期也变得更高. 刚上大三的时候,感觉年包 25W 已经是很高的 offer 了,但认识了很多 23 届 40W,50W 的大佬,对自己的要求和预期才变得越来越高. 很多时候限制自己人生高度的是自己的想象,这句话一点没错. 甚至回顾我过去的一年,我常常感觉,相比于所谓的努力,我觉得认知才是我拿到一个还算满意的 offer 的主要原因,我见过很多比我卷的多的多的人,跟他们相比我简直是个废物,但最后他们最后的结果却并不如人意. 或许这就是成年人社会的不公平,也正因如此,我才花掉了清明假期的一天写下这篇帖子,希望帮助更多的 25 届找到满意的工作,不让自己的努力因为认知问题而白费掉

过年的时候跟很多老同学一起聚了聚,他们说看我的朋友圈,这一年去了好多地方,说我的生活才是他们想要的大学生活. 举杯谈笑间,我自己也有点恍惚. 记得我小时候总是对旅行和奔波有一种莫名的痴迷,有一天突然在想,自己未来做什么工作比较好,于是拿着平板电脑查了一下午什么工作可以经常全国各地跑,因为当我我还是一个百分之百的 i 人,在排除了记者,销售,演员等自己明显不能胜任的职位后,我极度悲哀地发现除了通缉犯之外,再没有什么职位符合我的要求了,为此狠狠地 Emo 了一天. 回过头看,我有时候也觉得去年一年,我似乎确实是在过着自己曾梦想过的生活,这一年我跳了三家大厂,从上海去了北京再回到上海,去了武汉,长沙,杭州,苏州,南京,济南,秦皇岛,郑州…好像一年都在奔波的路上. 那个阳光并不明媚的下午拿着平板的小孩,或许不会想到自己未来会过着这样的生活.

但当时我真的开心吗,或许并没有,去年我总是在焦虑,焦虑如果被学校抓回去怎么办,焦虑大四没法代课了,学校不放实习怎么办,焦虑转不了正怎么办,焦虑需求排期太紧怎么办,焦虑拿的 offer 开的太少怎么办….我就这样一直在焦虑着,在曾经觉得应该岁月静好的时光里焦虑着.

高三那年,年级主任站在台上对我们振臂高喊着,翻过这座山,后面就是你们梦想的地方. 时至今日,我才发现,山的那边依然是山,翻过那座山,不过是重新仰望另一座山罢了. 那年我花了无数个日夜考上了现在的大学,我清楚地记得我入学第一天,看着曾经只在照片中见过的学校大门和图书馆,感到莫名的激动与自豪. 三年后,却又因为学校一系列让人寒心的行为而对它失望透顶. 我们总是竭尽全力追求自己梦想中的东西,再带着对他渐冷的失望离开. 普通人的一生,或许就是带着希望翻过一座山,在品尝到片刻的快感后,发现山的那头依旧是山,只好再苦笑着整理心情,开始新的攀登,直至终了. 所谓上岸,所谓进大厂,并不如很多人想象地那么光鲜,不过是跨过了就业这座大山,来到了名为社会的这座山脚下罢了. 我们终其一生,拼尽全力向上攀爬的意义,或许只是为了在某个平凡的日子,在吐槽完一大堆生活的狗血和不如意后,猛然发现,自己正过着曾经梦想过的生活,虽然这生活太过无奈和辛酸,却也是曾经的自己无数次憧憬过的.

普通人和生活的战斗,大抵如此

# 程序员个人影响力

在这个注重个人品牌的时代,每个人都是一个超级 IP(intellectual property),任何人都有可能成为明星,我们应该把自己当成一家公司来经营。已经有无数的人通过微信公众号、知乎、直播平台、抖音等内容平台收获大量粉丝,形成自己的个人品牌和影响力。

对于程序员来说,自然也要跟上时代的浪潮,积极的去打造个人影响力。影响力对于工作求职来说都是有促进作用的,当你在技术领域有一定影响力,说明大家认可你的能力,也有利于个人成长和事业发展。

明确定位
提升技术
乐于分享

写技术文章是一个比较常见的方式,我认为写博客有几个关键点需要考虑:

  • 文章要有质量
  • 记录解决问题的过程及思考
  • 系列化输出
  • 考虑受众的层次:初级入门者?进阶?高级?
  • 坚持输出

很多人会说,写博客不知道写什么内容,其实写博客不一定要写很高深的内容,但是一定要有质量,要有自己的思考,寻找自己与别人的不同之处。例如,你现在搜一下 ES6,网上的入门教程已经有很多了,所以你再去写入门教程就没有什么意义了。你可以写一写自己在学习 ES6 过程中遇到的问题,或者分享自己在学习过程中写的 Demo,这样的分享内容就具有一定的价值。

我们在学习的过程中肯定会遇到各种各样的问题,我们可以把遇到问题和解决问题的过程和别人分享。分享自己遇到了哪些问题,怎么解决这些问题的,在解决问题的过程中收获了什么。

对于一个技术领域,可以尝试进行系列化输出,这样即可以整理自己的知识体系,也能给受众一个系统化的学习资料。例如前端开发的学习,可以分初级、进阶、高级等阶段进行系列化整理输出。

写文章的过程中,最重要的就是要坚持。一开始可能粉丝很少,阅读量很少,但你的文章质量都不错,在达到一定的数量后,自然会有一定的影响力。所以最重要的是要坚持去写,不能放弃。当然也不能自嗨,要注意去营销自己、推广自己。

当然,我们分享的方式也不局限于写文章,还有制作培训视频,在技术交流会上分享等方式。

最后可能还有一个问题:我们可以在哪里去分享自己的文章? 实际上现在有很多的垂直内容平台,我们可以针对与自己的领域,在很多平台上进行分享。

可以帮助打造影响力的平台的梳理

文章类型 文章内容 平台
技术文章 技术以及技术职场相关 Github、cnblogs、CSDN、博客园、掘金、简书、知乎专栏、segmentfault
生活感悟 生活中的遇到的问题 微信公众号、个人博客、知乎、豆瓣、简书
读书笔记 书中内容引发的思考 微信公众号、知乎、豆瓣、简书

# 程序员职业规划

程序员的职业路线总体来说并不复杂,主要可以分为技术、管理、转行和创业四条路线,不同职业路线的能力模型不同,所需要眼光和思维模式也不一样。不同路线的共通点是对程序员技术能力以及沟通协调能力等软技能的要求。技术能力作为大厦的根基,是程序员一定要打好的基石,程序员作为公司的一部分,工作中必然要和其他人打交道,所以沟通协调能力和表达能力等软技能应该是作为必须具备的通用技能。

# 技术型

技术型路线可以细分为技术专家架构师两类,两者在能力模型上都要求对技术充满热情,能够持续不断的去学习新技术。 区别点在于技术专家要精通某一技术领域,偏向理论知识研究;架构师要具备技术视野、系统性的思维以及领导力等软能力,偏向工程实践。

# 管理型

程序员工作时间长是众所皆知,很多人说在一线技术岗位不适合做太久,做几年就转成管理岗。管理岗也是有对应的能力模型的,能力达到了要求,带团队是顺其自然的事情。一个团队的负责人对整个团队的影响非常大,决定了整个团队整体的工作氛围和发展方向,“兵熊熊一个,将熊熊一窝”,这话一点不假。

程序员的管理路线可以分为技术管理和项目管理(Project Manager),两条路线都要求具备管理能力,也有着不同的侧重点。技术管理者要带领团队保质保量完成业务需求,首先是要对业务有一定的了解,同时要能够具备团队管理能力,进行工作量的评估,分配任务,提升团队成员实力。技术管理侧重于以事情为中心,项目经理侧重于以人为中心。 项目经理要协调多方资源保证项目的交付,这就需要组织协调能力,同时要能够具备项目管理能力,能够理清项目干系人,分解项目职责,考虑项目风险,使各个团队资源达到一个平衡点。

# 转型

一般在互联网公司的一个业务部门,有销售、技术、产品、设计、运营等岗位。技术岗可以转型做销售、产品、运营、设计,甚至成立工作室去做一些个人项目。拿产品岗举例来说,程序员转型做产品的优势就是具有技术思维,懂得如何通过技术去实现产品需求,但是也有许多劣势。

商业思维: 技术开发只需要完成产品经理的需求,很少去考虑实现需求的目的,不用思考产品背后的业务逻辑,公司是如何通过这个产品去盈利的。这是技术转产品需要锻炼的一个能力:培养自己的商业思维,对所在行业有清晰的认识,理解产品的商业目标,站在用户的角度去思考用户需求。

沟通表达能力: 程序员给人的印象都是木纳的,因为程序员主要和机器打交道,机器比人简单多了,按照逻辑流程执行代码,不会出现千变万化的结果,就像一个纯函数一样。但是产品岗位需要和技术、运营、设计去打交道,让各个岗位的同学理解你的产品需求,产品上线之后要给运营或者客服进行培训,这都需要良好的语言组织能力和表达能力。

写作能力: 技术开发的主要工作是写代码,也就在写注释和产品说明书的时候需要写一些文档。如果让技术人员去针对产品去写商业需求文档、市场需求文档、产品需求文档,可能还有一定难度,所以文档写作能力也是很重要的一个点。

# 创业

创业对于程序员来说,也是一条可选择的职业规划路线,毕竟人人都有出任 CEO 的理想。程序员创业不一定要做 CEO,可以做技术合伙人(CTO)

……

# 25 届福建三本科班找实习

问问大佬们,准备今年大三下找实习,啥时候开始投简历开始找,现在在做第二个项目,估计二月中旬差不多做完项目,准备做完回头复习 mysql,Java 基础之类的东西,不知道来不来得及

当时看到帖子的时候是 2.1, 于是就在想像他一样这样搞了. 但是 3 月份就遇到了逃不掉事件加上自己的基础有许多地方有问题, 不能忍, 于是回头修理.

到 5 月份自己项目还是破破烂烂只有框架, 基础倒是复习挺好了.

基础好一个星期可以做一个项目,一个星期刷面试题,半个月再回炉一下,三月够了

这个确实中肯, 这样就是还要一个月了


2024-06-16 我做出的评价: 项目设计到完工花了 12 天的产能, 面试题只需要 1 周重点刷(之前 1-2 个月整理知识体系), 还要回炉和设计简历等流程, 没有专业团队的话就只能自己凎了(因此花费了 2 周的时间)

# 职场鼠鼠历险纪

# 步入职场, 寻找机遇

永远不要停止「寻找机遇」。小米总裁雷军有一句著名的话:「站在风口上,猪都能飞起来。」但问题的关键,是如何能够提前站在风口上?答案是,不断寻找。同时,你需要拥有「寻找发展机遇」的能力,根据你现有的能力和时下的热门职业做出规划,利用业余时间搜索资源,拓宽视野,然后放手去干。

普通人如何实现呢?就是从你步入职场的那一刻起,就要抱着「持续学习,提升敏锐度」的心态开展各项工作,并且每天预留出「阅读热门资讯」「丰富圈层社交」「学习、兼职、成长」三个部分的时间

# 不宜工作的碎片时间怎么利用?

在这个时代,我们经常被打断,时刻被打扰,手机已经成了工作和生活不可缺少的部分,我们的心流时间越来越短。经常工作五分钟,拍照半小时;刚看五分钟的书,却玩一天手机。感觉一看信息,就陷入了回复微信的黑洞里,感觉自己的时间不够用,没有时间学习。

在时间管理上,秋叶在《时间管理 7 堂课》中介绍了「加减乘除」四步走的方法,我觉得很好用。我们可以有意识地规划好时间,就会让自己有越来越多的时间做自己想做的事情。

加:增加碎片时间的价值。

很多时候,我们之所以浪费碎片时间,不是我们不知道时间的价值,而是因为我们不知道碎片时间有哪些价值。那么我们怎样赋予碎片时间更多的价值呢?这时我们可以想一想,如果拥有 1 分钟,可以做什么?1 分钟可以想一个文章标题;1 分钟可以发会儿呆;1 分钟可以休息一下……以 1 分钟类推,还可以为 3 分钟、5 分钟、10 分钟找到不同的用途,并将不同分钟数的用途结构化,放入自己的脑子里。

减:将事务分类,合并同类项。

当我们专注学习和工作时,突然被人打扰或者被杂念打断,会大大干扰我们的专注力。这时我们可以将事务分类,类型相同的事情合并放在同一个时间段做,例如:把需要电话处理的事情、需要外出处理的事情、需要找老板沟通处理的事情分别集中到一起,然后分别在不同的时间段来做,这样就可以有效提升效率,降低成本,避免时间碎片化。

乘:用场景化思维实现多任务叠加。

当两种任务类型差别很大的时候,我们很难做到快速切换,更别说提高时间效率了。比如,等公交车的 3 分钟掏出一本书看,肯定是没有什么效率的。但我们换种方式,在吃饭的碎片化时间里,可以跟同事聊天互通信息;开会前的碎片化时间,提前熟悉会议材料,想一想待会儿自己要发言的内容……我们可以用场景化思维来实现多任务的叠加,让你的碎片时间价值最大化。

除:主动把重要任务碎片化。

如果这周五前需要完成一个项目方案,你会怎么做?很多人会想要找到一个大块的或整块的时间去做,但是可能很难找到。这个时候如果把完成一个项目方案分解为「构思 + 列提纲 + 高效率写方案 + 修改 + 二次修改 + 定稿」。这样一来,一个大任务就可以被分解为不同的小任务,匹配到我们长短不一的时间段中。

为了保证花费的精力能产生最大价值,我们需要怎么做呢?

要事第一。根据 80/20 原理,80% 的效益都是由 20% 的工作创造的。也就是说,在最关键的 20% 之外投入的精力都属于过度消耗。工作不是做得越多、越完美就越好,而是要精准地使用 20% 的精力投入,撬动 80% 的价值产出。所以我们要秉持一个原则:要事第一,把时间投入在最重要的工作上,不必把每件事都做到极致。

那么怎么判断哪些工作更有价值呢?我有一套自己的原则:

■ 以管理者的思想决定自己的时间分配。即把老板当成客户,以满足客户的需求和利益为最大价值。能解决这些问题的工作就是核心工作。

■ 了解任务的性质,如果这个任务是经常性的,那么先建立起一套模板或者能运转起来的流程,才是当下最有效益的事情;当需要做报告、回复邮件时,马上去执行通常不是当下最重要的事,而总结好能反复使用的模板应该排在任务优先级的前面。

■ 与团队进行手脑协作。和组员们充分沟通、协调,各司其职,形成一个高效运转的整体。其他人做过的,就不要重复做了。

■ 勇于忘记过去。从前遗留的不再有成效的事情,要果断抛弃;如果利益远大于成本及风险,就立刻行动。比如,之前花了很长时间做到一半的策划案,因为某些情况与公司走向不符了,就要果断放弃,不要心疼之前付出的努力。

在我们面对大量烦琐的工作时,判断力会被干扰。在即时反应下,我们很容易选择优先完成那些虽然紧急但是不甚重要的任务。所以,为了避免这种情况,我一定会留出复盘一天工作的时间,反思我这一天有没有违反「要事第一」的地方,并总结出来以示警惕,顺便优化一下工作流程。复盘的依据,就是自己建立的一套时间监控体系。

■ 记录时间。记录和了解每天都做了什么事,花在各项工作和休息的时间各有多少,从而判断时间是否被浪费。

■ 分析、管理时间。找出非生产性的浪费时间的活动,从以后的日程中剔除。一些使时间碎片化的动作,也会引起我的注意,接下来就是进一步系统性地优化这些碎片化动作。

■ 统一安排时间。把时间和工作内容化零为整。

# 主题式学习

我之前在写论文时常用到的一个方法,其实就是围绕一个问题或话题寻找大量资料阅读,然后在每篇资料下面深度挖掘参考文献并再次阅读,就这样层层展开学习,直到构建起比较深刻的认知体系。整个阅读过程可以分为三层,最中间的是我要解决的问题,圆心向外第一层和第二层分别是我要找的资料和要看的书(见图 3-1)。

图 3-1 主题式学习

第一步,确定要了解的问题,然后去看通识读本、手册,了解这个领域大概在研究什么,搭建出比较完整的基本框架。比如,我想了解社会心理学,就会选择先读戴维·迈尔斯的《社会心理学》,而不是直接看《乌合之众》这类畅销书。通识类书籍会对问题的各个方面有全面的描述,但是不会涉及太多的细节,避免刚上手的人在过于追求细节的信息中迷失方向。

第二步,对整体有了认知后,再顺着线索深入阅读,不断填充认知细节。比如书籍后面通常会有很多参考文献,我一般会由此顺着层层阅读下去,从而建立对新领域的深刻认知。

刚开始上手的时候,我们要怎么选择靠谱的入门读物呢?这里建议大家看看名校的推荐书单,比如英国牛津大学会给各个学科推荐书单,方便即将入学的学生在开学前读一读,让他们为将要学习的学科做一些准备。

# 三种思维方式

这一节我讲了三种思维方式,希望能帮助大家更透彻地看待问题以及更高效地解决问题。

第一种是主题式阅读。你要勇于走出舒适圈,不断探索新领域,那么如何以最快的速度掌握一门新知识呢?你可以用主题式学习法,在解决问题中逐渐推进学习进程。

第二种是数据思维。凡是做出的判断和得出的结论,都要以事实为证,而不是单凭感觉。

第三种是行业报告思维,也就是我们常说的格局和眼界要够大、够开阔。这一点可以通过阅读行业报告实现。

# 外包

每天需要做的三类事情

第一类是纯内耗型:消耗时间过多、薪资固定且上升空间很小。比方说,一些高学历的应届生,刚踏入职场的时候会被要求从最底层的整理材料、统计文档等工作做起。对于应届生来说是熟悉环境和业务模式的好时机,不过这段时间不宜过长,因为后期都是不断重复的体力劳动。

第二类是潜力型:这件事可能在当下不会带来什么财富收益,但是我们可以看到这件事是有前途的,未来是可以持续增值的。比如,投入时间和金钱学习理财,一定需要一个学习的过程,未来才会为你带来固定收益;比如在各种平台上练习写影评和书评,久而久之在未来会为我们带来稿费收益。

第三类是综合型:这件事既可以训练我们的能力,又可以立刻为我们带来收益。比如创业,我们能够边学边获得收益。

我们要做的,就是外包纯内耗型的工作,保证综合型工作的量,增加对潜力型工作的探索。

外包进阶:了解自身需求,匹配高效外包团队

对外的工作,我们需要外包;对内,我们也需要管理自我。身份成长是更高级的外包术,能让你知己知彼,把精力投在成长最快的事业上。

我把外包目标分为两类,一类是人,一类是工具。对于人来说,我们需要做到以下方面:

(1)寻找价值观相同或是认同你价值、能力的人。我在寻找外包团队的时候,首先会向成员输出我的价值观和做事的原则、标准、内容,观察团队成员是否理解并认同。比如需要将项目中搜集资料的工作交给团队,我会首先介绍整个项目的核心理念,包括项目的内容、用户群体,需要达到什么样的效果;然后介绍一些时间节点,规定好任务完成的日期,介绍我的安排和规划;最后,我会倾听团队成员的意见,看他们是否认同项目的理念,是否理解整个流程和任务分配。我还会提供给外包团队相关案例或是我想要的文案素材。

保持交流和沟通是了解彼此想法的最佳途径,我们也可以从中让整个外包流程更清楚、更高效。

(2)在同学、后辈、朋友圈中寻找外包团队。找外包太贵怎么办?有一个很好的办法是从你的同学、学生、后辈、朋友圈中寻找。这类群体求知欲相对较强,不仅可塑性高,成本也可控。

我一般会在自己的微信群、微信公众号「学霸星球」里发「兼职招聘启事」,标明自己的需求、标准和薪酬,让合适的人找上门来,这是第一种方法。

我还会和我的学生、后辈群体沟通。这一类群体主要有两大需求:一是前辈的指导和提点,二是兼职、项目经历需求。大多数刚出校门或还在学校的年轻人都希望刷经验、找实习,丰富自己的简历,以及挣点零花钱。我们不妨向他们介绍自己的项目、工作,看彼此的需求能否匹配。这一类人干劲大、可塑性高,和他们一起工作的时候会更像是一个团队,效能也会更高。

所以此时,平时积累的人脉就可以动用起来了。我在找我做咨询的「在行」学员、参加过我课程的学员、微信公众号读者中找到了许多可以合作的人。我们对彼此都有所了解,一起工作可以很快进入状态,合作非常愉快。

(3)从兼职网站寻找专业人士。你如果资金充足,那么可以直接找专业人士,比如一些独立的摄影工作室、视频剪辑工作室,专业团队最大的好处是可以完美匹配你的需求,具备较高的专业素养。

# 睡后收入

「睡后收入」,指一个人即使不工作也能持续增加的被动的收入。平时上班赚的钱,都叫作「主动收入」,一旦你不上班了,收入也就停止了。相对而言,「睡后收入」属于「被动收入」,即便不干活也不会影响你的收入状况。

在创业的过程中,我们通常会做的事情是看市场、看时机、看竞争。在自己感兴趣的事情上,我们要做三个步骤的分析。

(1)看市场:深入调研国内外市场,判断市场是否饱和。

市场调研是一种识别目标市场中的机会、问题,并进行改进和评价的工具。无论是线上还是线下的生意,我们都可以借助这个工具发现当下市场中存在的机会。比如,想做线上生意的时候,我们可以在淘宝、天猫上搜索当下自己想要进入领域的市场占比情况是怎么样的,是否具有稀缺性。线下的生意,我们可以调查想要进入区域的商圈状况,以及是否有竞争者、人流状况、租金等信息。

(2)看时机:根据行业所处的阶段,判断未来趋势。

行业的选择也是影响机会的重要判断因素。在一个发展势头较猛的行业里,哪怕是猪都会跟着飞起来,若是前几年选择互联网工作,那么个人的增长起点就比较高。例如,近几年社交电商是个比较热门的趋势,我们可以了解一下什么叫作社交电商,它和我们有什么关系,从而发现一些机会。

提到行业的选择,我想起几年前我还是一个上班族的时候,我在网上搜索了非常多关于线上教育的资料,我推测线上教育将是未来发展的必然趋势,因此我所有的职业选择都与线上业务有关,而互联网让我实现了人生的逆袭。

(3)看竞争:看对手和看自己,分析有无入场机会。

通过上面探索的方式,我发现市场上目前存在五种普遍的赚钱方式,它们分别是技能劳动付出型赚钱模式、关系赚钱模式、资源优势赚钱模式、信息差优势赚钱模式、机会趋势赚钱模式。

(1)技能劳动付出型赚钱模式。这是一种最普遍的赚钱模式,即付出自己的时间和劳动赚钱,比如线上兼职、网上翻译、PPT 定制、文案写作。

(2)关系赚钱模式。在工作中积累了一定人脉后,就会产生一些关系。当你发现这些人脉中需要某些资源的时候,你就可以通过推荐的方式赚钱,比如通过人脉销售自己的产品,或者撮合其他人的合作。大家都可以看到的微商、微店,便属于关系赚钱模式。

(3)资源优势赚钱模式。指的是通过盘点自己已有的资源,在此基础上开启赚钱模式,比如售卖家乡特产、售卖自家的产品。

(4)信息差优势赚钱模式。指的是通过提前知道一些信息,或者知道少数人才知道的信息的赚钱模式,比如知道哪些地方因为规划建设将带动房地产的价格上涨。在深圳证券交易所刚开的时候,就有人利用信息差优势,挖掘了人生第一桶金。这需要平时多观察、多思考,保持敏感,你会发现,机会并没有想象中那么难找。

(5)机会趋势赚钱模式。指的是通过观察掌握社会的发展趋势,看到一些发展的好机会,比如投资牛市时的股市或投资一些发展好的行业。

我们既可以选择单一模式,也可以进行多重组合。

如何打造和运转未来赚钱工具?

如何在未来打造可以产生被动收入的赚钱机器?我主要从三个方面给大家提供不一样的思路,并深度挖掘如何赚钱的秘诀。

(1)从消费升级中把握机会。消费升级带来新的消费场景,带来市场的洗牌,从而带来新的商机。比如,洗发水这个人人熟悉的东西,也存在很多升级空间。

(2)抓住新兴行业的发展趋势。

(3)养老行业是潜力巨大的行业。

# 什么是大厂?

看网友七嘴八舌, 真是众说纷纭, 看来这是薛定谔的大厂了

一个简单的标准:你爸妈知道名字的一定是大厂

500 以上中厂,1000 以上算大点的厂吧,外包除外

人数只是衡量的指标,重点还是看用户量,公司的项目规模

可按发的工资大概估算,1.8w 基本是大厂,1.2w-1.8w 中厂

公众熟知度高的是大厂,500+员工但是公众不认识的是中厂,否则是小厂

给的多就是大厂,给的少啥也不是

看待遇,看在行业的影响力

也得看研发占比。

看有没有测开以及测开的工作内容 (这个我认为中肯)

看人数是没用的,而且不同领域不同。这个大厂定义主要看在他这个领域,他是啥咖位的。

像我们实施这一行,深圳本科生 8k 以下就是小厂,8k-12k 就是中厂,能拿到 12-20k 这一块的就是中大型厂了。金蝶除外,金蝶开的是真低

# 程序员找工作黑名单爆料

我也只是围观群众,背后的真相大家自己判断,我只是单纯的收藏一些链接,不喜勿喷,欢迎大家关注我微博和提 issues 来参与维护这个名单

最近的事情 让我意识到 有些同行也是劣迹斑斑,需要记录一下 以后大家招聘注意

# 写在前面

首先,每一个程序猿,每一个公司都有黑点,但是如果把黑点放大了,黑名单就没存在的意义了。就拿这几个例子来吧

# 普通程序员

# 技术合伙人

# 选公司

# 最后

  • 最后说一下心得,竟然还有希望 GitHub 处理这个 repo,原因是想维护 github 这份纯净,还把 GitHub 被墙和我挂钩,我真是醉了,就像一群待宰的羔羊,心想着只要老实一点,宰的就是别人不是我一样
  • 我只是记录一下自己看到过的事件,我自己下次换工作的时候防止踩坑,仅此而已
  • 我也没有那么愤世嫉俗,比如我以后换工作,还是会考虑百度阿里的,但是会避免上面出现的坑,比如百度无人车我就不去啦,阿里的其他很多部门还是很棒的,希望到时候不会因为这个名单把我 pass 吧

求 star,支持我继续把这个名单维护下去,谢谢支持

结果, 当初我搜集的时候还在的, 24 年还没 2 年就没了

# 各城市互联网状态大摸底记录

Issues · csguide-dabai/Programmer-look-at-China (github.com)

包括点评, 访谈, 记录等, 都是 2022 年开始的, 到目前的选择还是很有说服力.


目前有重点记录我的水平层次 - 非大厂, 非国企部分, 其余部分有用的留档

2024-06-16 现在看来, 很多时候是选择权在他们那里, 照这样来根本没有厂子…微服务没有太伤了, 各种被刷不回复(我认为很大原因)


仅仅列出的部分

环境高分: 北京, 广州, 上海, 成都, 杭州, 苏州

低分: 大连

城市 互联网环境评分(10)
北京 9.0
长沙 6.5
广州 8.5
天津 6.5
西安 7.0
郑州 6.0
青岛 5.0
武汉 7.5
上海 9.0
成都 8.0
杭州 8.5
大连 5.5
苏州 8.0
南京 7.0
重庆 6.0
合肥 6.5

有些还没毕业的同学问我应该怎么选择幸福感高的城市。其实我的感觉是你在一座城市的幸福感很大程度取决于你工资和房价的比值,其它因素都是次要的。平均下来你每月的工资接近你所在城市还可以的区域的房价,那么你生活的就很舒服。就比如你工资每月到手一万二三,你所在城市房价也一万二三或者稍多点,那你买房压力并不大。但是如果你所在城市房价很高,就比如北京。你每月到手两三万的工资已经很厉害了,然而像昌平差不多的地段房价都四万以上了,那你买房压力肯定很大,换而言之你生活的幸福感肯定不高。天天租房还和人合租,能有啥生活幸福感?当然对于那些想待几年学点东西就撤的同学另当别论哈,我说的是定居的考虑。

# 北京篇

我一般是不考虑大北方和西南地区的, 只考虑东南沿海城市, 但是还是记录下, 作为头牌

大厂集合

百度
腾讯
阿里巴巴
字节跳动
美团
京东
网易

虽然北京依然在资源和机会上是领先其它准一线和二线城市一大截的。但是由于现在杭州苏州成都西安等等城市发展的都不错,像长沙大连天津青岛等地也比较安逸。再加上由于现在网络越来越发达,不像前些年一样许多事情只能在北京、上海广州这些地方才能体验到。所以大家根据自身情况选择合适自己的城市就好了,硬往北京卷也没必要

谈到互联网公司,免不了说薪资。很多应届生校招时由于没有工作经验,容易被哄。首先要知道,校招给你开出的薪资是可以 argue 的,也就是说可以和 hr 商量。然后我主要想说的是,要谈你去和 HR 谈 base(每月基础工资), 可不敢去和 hr argue 每年多少薪哈。一个哥们给我讲了个真事,他们公司一个应届生嫌 25k x 15 少,HR 跟他说那给你 25k X 16 吧,然后那个应届生就开心的答应了。HR 给你承诺的每月 base 是没问题的,但是说每年发多少个月的月薪只是一个期望,最终给你发几个月的年终奖要根据你到年底的评分以及你所在团队年底的评分共同决定。

介绍百度时说的百度是以技术为导向的是说给腾讯听的,因为腾讯是以产品为导向的。产品的话语权比程序员大。

美团的办公环境和福利就太差劲了,首先美团的办公大楼都是租的,工位也都很简陋,也没食堂。别的公司过节发礼品,好家伙,你团发个贺卡,要么发个微信的红包专属封皮

来了北京后大概率事要和人合租了,像上面说的在腾讯百度等西二旗这片区域上班的,大多数选择在回龙观这块和人合租,相对便宜且有地铁站上班比较方便。在回龙观这块租一个 10 来平的卧室大约 2500 左右吧。 在五道口那片上班和望京那片上班的在附近租房要更贵点,租一个 10 来平的卧室大概每月要花 3000+。当然在望京上班可以沿着 14 号线租的远点,租金会便宜点,上班直接坐着地铁过来也还挺方便。在亦庄那边上班的租房会相对便宜点,2000 多点基本可以。想要一个住且在上述公司上班方便,租一个 30 平左右的一居室基本最低每月都要 5000 以上了。

另外大家还可以瞅着点公租房,租金会比较便宜,单租一间 40 平的房子也就不到 3000,只是限制会比较多。部分公司会有公租房名额,我记得度小满就能协助职工申请公租房。申请一居室的会容易点,两居室的难申请。

->太可怕了, 看着我手里 650 的河北某二线末尾市区核心区 40 平蜗居房租感叹. 一个月 1200 的换我这样的单间我觉得才可以接受, 如果是 3000 到 5000 就连我这样的家伙也受不了了. 家里 80 平的屋子出租, 东南某省会下辖县城核心区房价 2 万, 租金 3000 左右. 这些都是难以接受的啊.

抛开美食说一个现实的问题,就是吃饭的花销。你在学校时一顿饭也就是十块左右。来到北京后吃饭的花销基本上要比你学校的花销贵一倍左右(因为老板的房租也会摊到饭的价格中)。如果你公司有食堂还好,要是公司没食堂只能吃外卖的话,自己的腰包和胃都受不了。说到这我觉得我以后晚饭还是自己做吧。


国企&央企

这篇文章中说的都是国企和央企的直属软件开发中心,子公司是不包含在里面的。子公司的工作风格差别很大。总体来说,国企和央企在软件技术上都是差互联网公司一大截的,待遇好不好真的看具体公司。是有些好的国企,我一个朋友在某国企虽然工资不太高,但是上了两年没加过班。也有一些国企,加班比拼多多都重,但是工资低且福利差。

研究所

北京有着数量庞大的研究所,比如航天科技系列、航空工业系列、中船舶系列、中科院系列、中电科系列、军事科学院下属系列、工信部下属研究院、中国兵器等等。不得不说计算机相关专业真的是万金油,因为上述研究所,不管他们主营业务是啥,他们全都招计算机相关专业的毕业生,并且招的还不少。

近几年想成为这些研究所的正式职工都需要是硕士以上了,签的本科生基本都是劳务派遣。户口的事放在生活里统一说。

可能家里的长辈听到你去了研究所会觉得很有面子。但是单论软件技术来说,目前研究所是落后于互联网公司的,并且差距还不算小。研究所和互联网公司的办事风格不太一样,互联网公司会把岗位划分的很细致甚至有的互联网公司会无限的细分一个岗位(这点是我觉得不太好的地方,因为划分的太细了,以后跳槽会存在问题),但是研究所的岗位又划分的太粗糙了(从订需求、写开发文档、代码开发、测试、到和客户扯皮这些流程全的你来搞)。另外因为研究所的大部分领导软件方面技术没有互联网那么专,所以对工作量的评估不是太准,有时候安排起活来就比较离谱。是否来研究所要想想明白以下几个问题:(1)你家庭的经济情况,至少北京买房首付家里能掏出来。(2)你的兴趣(如果只想安安静静的写代码,研究所不太合适)。(3)面试通过后你要充分的了解你所在的团队情况,同一个研究所,不同的团队的差别那可大了去了。

总体来说,个人感觉如果你在一个二线城市的研究所工作会比在一线城市研究所工作舒服。在一线城市去互联网公司干几年攒点钱撤一个二线城市压力没那么大。在北京的研究所工作北京户口是拿了,但是干几年根本攒不下多少钱,一线城市研究所分房这事就不用做梦了,充其量会给你提供一个宿舍,这种宿舍也就是毕业三到五年内可以住,以后就不能住了。相比于二线城市的研究所,一线城市研究所的工资每月多个两三千,但是房价是二线城市的三到五倍,生活幸福感会大打折扣。


# 长沙篇

总体来说,长沙的互联网环境还是太差了!不过,相比于几年前也是在慢慢改进中!近几年许多知名互联网企业纷纷落户长沙,比如深信服、华为。不过,这些公司在长沙的研发岗位一般都很少,相当于一个办事处的感觉。

其他还有像 福米信息万兴科技亚信 等公司,这里就不多介绍了。

其实程序员在长沙,目光不要只着眼于互联网软件公司,长沙有许多军工芯片类型的公司待遇也很好。另外许多大型制造业公司,比如三一重工、中联重科、山河智能等公司也在招程序员,待遇也很好。

房价

长沙的房价真的就太香太香太香了!!!作为一个省会城市,房价竟然还要比很多普通的地级市都要低。

以下房价数据来源于安居客,可以作为参考。

可以看到长沙新房的均价在 9500 附近。即使是互联网公司比较多的岳麓区,新房均在也才在 12000 附近。什么, 比我家名不见经传东南沿海小渔村还低一半?

教育

长沙有 3 所 985 高校,分别是国防科大、中南大学、湖南大学。放眼全国,一所城市能够 3 所 985 的少之又少!

其他的比较好的学校还有 湖南师范大学(211)、湖南农业大学(一本)、长沙理工大学(一本)、湖南科技大学(一本)…..

交通&气候&娱乐&美食

气候讲真不太友好,多雨,炎热,夏天的时候没有空调真活不下去。

基本没有说错,这是个基本只有夏季和冬季,但是夏季冬季随机播放,没有空调基本没法生活的城市。

家里不也是一样, 只有冬夏, 反复无常, 天无二日晴, 夏天 40 度体感

# 成都篇

介绍城市前先为成都定一个基调吧,那就是 享受生活

我的评价是, 享受生活就不要来互联网啊, 互联网拿个不是脑袋别裤腰带上面的贫民三郎?

便宜房租, 还不错的环境, 属于是守门员了

# 广州篇

广州的互联网环境相对来说还不错。

广州的繁华以及它的魅力不用我多说,无论从人文还是从经济来说都是不虚其它城市的。不过我在面试时发现,广州除了几个头部大厂是统一薪资标准外,相较于其它一线城市,广州的互联网行业给我的感觉是整体薪资水平偏低。

大家注意呀,其实学计算机相关专业的想在广州挣钱,不止可以通过互联网公司,也可以通过当公务员,教师等方式去挣钱呀。应届生考进体制内当公务员,年薪也 20 多万呢,并且各方面福利待遇绝对到位,相当不错了。下面我们还是分互联网公司以及国企央企研究所介绍吧。

# 互联网

广州互联网这边除了几个头部大厂,做开发的应届生薪资差不多就是 16k 呀,感觉有点低。其它的在广州设点的互联网公司我直接列到下面啦,实在写不过来了,大家有兴趣的详细了解呀。

# 运营商

感觉待遇一般,就是比较轻松,追求轻松和稳定的可以看下

# 杭州篇

房价高, 机会多, 阿里系多, 卷.

# 南京篇

房价还是比较高的

# 上海篇

类似北京

# 天津篇

因为临时准备去那里实习(虽然是基本找不到好的公司了于是只能另请高明, 但是还是记录一下耶路撒冷的地方)

天津的互联网环境是真的不怎么好, 天津的互联网公司是真的没几个像样的

房价太高

天津因为沿海,夏天比较潮湿,到了冬天风非常的大,我在天津的那年冬天还把我脸吹伤了。春天的气候比较舒服。

天津的交通最值得称道的地方就是他半个小时到北京的高铁了,车次基本平均每 5 分钟就有一趟,所以好多人在北京上班在天津住 ~ 感觉天津的房价就是这样起来的… 最近一段时间天津修地铁修的很猛,一直在传来新线路开通的消息。堵车嘛,目前还没哪个二线城市不堵车的,我知道的也就太原堵车相对没那么严重。

# 武汉篇

很可能要去实习, 毕竟在中转节点上, 来回一趟算可行(家里到学校全程 10h 的高铁, 在这里去学校 5h, 回家 5h 刚好均匀分配)

武汉的房价相对全国来说还是比较有性价比的,泡沫相对也小一些。
不过,武汉的工资收入相对一线城市来说也要低很多。

武汉的教育资源那是相当可以!不然,大学生也不会全球数量第一。

不过,武汉人也多,路上的车也多,上下班堵车是常有的事。
武汉算的上是“交通枢纽”的存在,你从武汉出发坐高铁,你去国内大部分地方都非常方便 (九省通衢假的诺)

# 福州篇

# 厦门篇

# 结语 SK

还是有一些参考价值, 但是 21 年的情况到我毕业的 25 年肯定是大变了, 疫情 结束后的一些情况也是不好考虑, 我建议去即时的论坛和分享网站看看具体老哥的看法, 也许能提升更多方面的认知.

另外, 不在上面出现的, 也要进行判断.

# 自己专业是不是进坑了?

打开 boss 直聘

先定位你要去的城市

再定位你的专业

然后依次进行以下的筛选条件

1.学历(大专,本科,硕博)

2.工作经验(应届生,1-3 年经验,3-5 年经验)

然后你就看给的工资吧,记住所有标工资下限—工资上限的,默认该公司只给你开工资下限

比如 3k—6k,默认 3k

然后进去看招聘要求

之后看统一的公司话术多不多,比如:

弹性工作时间:下班时间不固定,通常加班,单休或大小周

公司年轻有活力:刚成立

同事都是同龄人,氛围良好:淘汰了 35+的人,每年补充年轻牛马

诸如此类

当你发现你的专业,只能定位一些垃圾公司,给的薪酬低到离谱的时候

说明路子错了

补救办法也有

找你专业的延伸专业,看看能不能蹭到一些高薪行业的圈子

不耗时间在本专业,本专业学习只求及格,找能找到工作的专业自学

看看本专业考公有没有专业壁垒,比如图书情报与档案管理,古籍整理,一般人不学这个报不了图书馆的事业编

最后,你实在不知道怎么办,建议去拉一下各招聘网站薪资高的行业,或当地历年公职人员招聘,点进去,看招聘条件,需要什么能力、需要掌握什么技能工具、限定什么专业,一览无遗,然后对标去学.

这个办法真实有效

希望能帮助你

任何事情都是相对的,当越来越多的人都去考研,等你毕业,就业市场卷的就是研究生,中小企业老板宁愿招聘一个便宜本科生,也不愿意招一个相对高价的研究生,届时你将更难找工作,原因有三:1.适合研究生的工作本来就少 2.大量的研究生增加了竞争难度 3.研究生的长衫更长了

Link

一,尽可能别拖.

“今年太难了”

二,盯紧人口流入与投资流入.

这两个是黄金指标. 人口流入主要看城市,投资流入主要看行业. 现在没有普惠式的增长,一定要看好资源的流动方向.

人口流入是好理解的:这个城市很多人去,那交易总量一定相对繁荣,机会多.

例如有些重工业行业,产值非常大,但有新增投资进入么?如果没有的话,这些行业很可能已经进入严重的产能过剩.

有些行业看似和投资不沾边,但五年规划里有它名字,新闻里报道了政府的专项投资基金和产业基地,这些也是投资.

第一步看有没有投资流入,第二步看该行业的分配公平性. 这波大基建流入了大量国家投资,但土木人是涨不了几个钱的.

总体而言,在投资流入的前提下,消费端的业务分配公平性优于企业端,而企业端又优于政府端;单个市场里,民企、外企参与高的一般优于高国企参与.

投资是衡量行业兴衰的重要指标,如果你发现你的意向行业三资不爱(国民外),那除非你能摇人,否则开溜.

Licensed under CC BY-NC-SA 4.0
本博客已稳定运行
发表了31篇文章 · 总计298.68k字
Powered by Blood, Sweat, and Tears
使用 Hugo 构建 主题 StackJimmy 设计