# About

形而上者为之道，形而下者为之器 - 易经

## CN

大家好, 这是我(张刚)的个人空间. 我会在这里记录分享我的想法.

微信/QQ: 9439168

个人邮箱: <9439168@qq.com>

企业邮箱: <jason@ifreeq.com>

## EN

This is Jason Zhang personal space, I will record my ideas here.

WeChat/QQ ID: 9439168

Personal Email: <9439168@qq.com>

Business Email: <jason@ifreeq.com>

## 晚熟的人

本性善良的人都晚熟，并且是被“劣人”催熟的，后来虽然开窍了，但也仍然善良与赤诚。 当别人聪明伶俐时，他们又傻又呆；当别人心机用尽渐入颓境时，他们恰好灵魂开窍。后来虽然开窍了，但也仍然善良与赤诚，不断的寻找同类，最后却成了最孤独的一个。 ——莫言《晚熟的人》


# keywords - 2021/01

## 2021/01/26

Google Cloud SQL

和光同尘


# Keywords - 2020/08

## 20200808

### [Connected Home over IP](https://www.connectedhomeip.com/)

### mini-LED和micro-LED

//操作系统、芯片、数据库、云服务、IoT的标准生态

## 20200806

### Ajax:&#x20;

Ajax 即“Asynchronous Javascript And XML”（异步 JavaScript 和 XML），是指一种创建交互式、快速动态网页应用的网页开发技术，无需重新加载整个网页的情况下，能够更新部分网页的技术。

{% embed url="<https://baike.baidu.com/item/AJAX/8425>" %}

### Intelligent Business Academy

## 20200805

Newsroom, Video Channel


# Keywords - 2020/07

## 2020/07/29

### nofollow

使用“nofollow”应对垃圾评论 如果将一个链接的“rel”属性的值设置为“nofollow”，就等于告诉 Google 不要跟踪您网站上的该链接，该链接指向的网页也不能沾您网页的声誉的光。要想让搜索引擎不跟踪一个链接，需要在该链接的定位文字中添加 rel="nofollow"，如下所示： < a href="<http://www.example.com>" rel="nofollow">此处为定位文字\</ a>

## 2020/07/24

Cache hit ratio, curl&#x20;

## 2020/07/22

News channel, Dark Mode, smart home automation system

## 2020/07/21

Apple design, 半泽直树2, Google patents

## 2020/07/16

Cloud SQL, nginx, google cdn


# 2021


# 2020


# 伊拉克域名.IQ被美国删除的背后以及早期的根域名管理

本文原载于2014年7月1日，清华大学网络与信息安全实验室段海新博士的文章。转载本文不代表ICANN同意文中全部观点。

导读

2014年6月24日的《人民日报》上说：“目前美国掌握着全球互联网13台域名根服务器中的10台。理论上，只要在根服务器上屏蔽该国家域名，就能让这个国家的国家顶级域名网站在网络上瞬间“消失”。在这个意义上，美国具有全球独一无二的制网权，有能力威慑他国的网络边疆和网络主权。譬如，伊拉克战争期间，在美国政府授意下，伊拉克顶级域名“.iq”的申请和解析工作被终止，所有网址以“.iq”为后缀的网站从互联网蒸发。 ” \[1] 类似的说法也出现在一些严肃的学术文章中 \[8]。

对于美国停止伊拉克域名解析的问题，我出于好奇搜了一下这一事件的背景。以下内容来自IANA的报告［2］（IANA一直负责根域名管理，现在是ICANN的一个部门）：

1997年，Jon Postel教授代表南加州大学信息科学研究所（ISI）的IANA把.IQ授权给了InfoCom公司所属的子公司Alani（InfoCom位于美国Texas州从事主机托管业务），该公司Bayan Elashi是IQ域名的技术联系人。

2000年，IQ域名信息更新，InfoCom成了资助IQ域名的公司。

2002年12月，Bayan Elashi被捕。

2004年7月，Bayan Elashi和他的四个兄弟以及InfoCom被判有罪，罪名包括违反了利比亚制裁法令、为恐怖组织洗钱等。

另外，IQ ccTLD从来没有活跃过，在绝大多数时间里，IQ这个ccTLD是由Alani/InfoCom公司操纵，似乎只有两个域名而且指向注册者本身。

2004年7月，伊拉克过渡政府正式联系ICANN讨论IQ域名重新授权的问题，

2004年12月，总理Allawi发信给ICANN，指定了代表伊拉克代理IQ域名的部门——国家通信和传媒委员会（NCMC）。

2005年6月，IANA收到了申请NCMC的重新授权申请表。

之后经过一系列的评估，IANA认为应该把IQ这个域名重新授权给NCMC。其中他们考虑的一个因素是新旧代理双方对新的授权一致认可。然而，旧的代理被关在监狱里，而且在他们代理期间（1997年－2002年），Alani和InfoCom都没有为IQ域名做过任何推广活动。

可见，所谓“伊拉克顶级域名.iq的申请和解析工作”，因为没有开始过，所以“被终止”也就无从谈起。也许有人说，这是美国政府精心策划的阴谋。然而，至少从逻辑上，这种阴谋论不成立：既然美国政府玩阴谋或阳谋这么高明， 当初为什么同意把IQ域名授权给Bayan Elashi这个替恐怖分子洗钱的人呢？

这的确是个问题：IANA为什么会把一个国家的顶级域名IQ授权给个人呢？而且这个人不是住在伊拉克，反倒住在入侵伊拉克的布什的老家——德克萨斯？

如果不了解互联网的历史、互联网的Open Process、Consensus 的文化，如果不了解Jon Postel这个人，是很难理解第一次的IQ授权。

说来话长。

1998年前，与其说是美国政府控制ccTLD的域名分配，还不如说是南加州大学的Jon Postel教授本人控制的。简单回顾一下DNS的历史：80年代中期，Jon Postel等人设计了DNS协议，DAPAR也就把顶级域名的管理权交给了Jon Postel所在的南加州大学信息科学研究所（ISI）。在DAPAR和ISI的长期合同中，Jon Postel的职责包括顶级域名政策的制定、地址分配、RFC的编辑、协议端口的制定等等。

但是，域名注册的实际操作是由另外一个机构——斯坦福研究院（SRI）来执行的（rfc1032， \[4]），因为DNS产生之前，SRI一直维护那个HOSTS.TXT文件。SRI算是为人民服务，所有域名注册都是免费的，基本的原则就是谁先申请谁就得到该域名。Jon Postel一定意义上也沿用了这一原则——把域名分配给需要它的人。

1991年，美国DOD决定出钱找个公司来干这事。一个小公司Network Solutions Inc.（NSI）把这个项目接过来（见RFC 1261 \[3])，这些今天看来是重要资源的顶级域名注册（.com, .org, .mil, .gov, .edu and .net）都是免费的，NSI靠政府的钱过日子。

1992年，美国自然科学基金会NSF（NSFNET的网络后来取代DAPARNET成为Internet的主干）也出于NSI在域名管理中的经验把域名注册合同（五百万美元）包给了NSI，NSI把其中的TCP端口号的管理外包给了Jon Postel。

所以无论是早期的DAPARNET还是后来成为Internet主干的NSFNET，ccTLD的管理权都在Jon Postel手里，一直到1998年他去世之前。那么，他又是如何管理ccTLD的呢？ RFC 1591\[5] 描述了他是如何管理顶级域名的，其中包括：1）必须指定一个管理员来管理那个域名空间（有技术能力）；2）被指定的管理员对所授权的域是可信的，同时对整个互联网共同体（community)也是可信的；3）该管理员对所授权的域内所有的申请者必须是公平的……。究竟什么是可信呢，很模糊，Postel教授自己也很难把握。

Postel教授一直把域名注册和地址分配看作是公益事业，由于他对互联网的无私奉献赢得了当时互联网技术圈极高的尊重。所以对于他的操作，业界都非常信任。本来要在IETF成立一个委员会来审核他的工作，后来这个委员会也没有成立。

Postel教授对ccTLD的授权操作有时是比较随意的，把伊拉克的域名iq授权给Bayan Elashi就是典型的例子。根据当时的新闻 \[6]，Bayan Elashi本是巴勒斯坦人，1977年去美国，在名校普渡大学获得计算机硕士学位，发明了第一台阿拉伯语的个人电脑，作为技术负责人创办了一系列IT公司，其中包括1992年在Texas的创办的主机托管公司InfoCom，主要托管的网站是阿拉伯语或穆斯林的。就凭这么强的技术背景，肯定可以胜任域名管理的技术工作。而且，那时候伊拉克的电信基础设施非常差，估计本土没有网络要域名也没啥用，把它分配给一个美国的公司、提供阿拉伯语服务，估计比在伊拉克本土更能发挥作用。另外，那一年只剩下最后剩四个ccTLD没有投入使用，Jon Postel估计有点干累了或者好大喜功：赶紧都分出去，让Internet遍布每个国家，我们就大功告成了。

Internet早期的ccTLD域名就是这么自我管理的，也没有太大麻烦（虽然出现了把IQ域名分给了一个恐怖组织的支持者，但也这个域名也没有被用来干坏事）。总的来说，政府部门（DARPA和NSF)相信技术专家的圈子（community)，技术专家们相信Jon Postel，你办事，我放心。

后来的一切烦恼都是钱惹的祸。

1995年NSF决定把域名注册私有化了，NSI公司每个域名收100美元，其中30归NSF作为基础设施发展基金（类似我们的机场建设费）。于是，麻烦开始了。先是有人状告NSI涉嫌垄断经营，NSF自然也牵扯在其中，法庭判定自然科学基金委员会非法增税，30美元没了。 NSF自感无力应对各种法律的纠纷，要提前终止和NSI的合同（后来被白宫制止），而这将导致NSI公司可以顺理成章的把域名注册变成自己的独家业务。

而Postel和Cerf等技术精英认为，域名和地址空间是公共资源，域名注册应该是公益事业不应该被私有化，在他以后组织的各种活动、起草各种文件时，统统把NSI这个掌控实际运行的公司排斥在外。其他的组织，包括商标和版权保护组织、企业、国际标准组织（如ITU)、各种民间团体纷纷加入了这场混战，再加上来自其他国家和地区的加盟，使得这场混战非常热闹。

有人出于不满，把Network Solution公司的服务器给黑了，声称你（NSI）敢声称域名空间属于你，现在我告诉你，现在它是我的。Jon Postel建立一个邮件列表讨论建立新的根域名服务器，BIND 的作者Paul Vixie说，如果被NSI私有化，我会从把BIND的缺省的配置文件（Root.hint， 其中包括13个跟域名服务器的IP）给改了。1998年1月，Postel 号称做一次测试 \[7]，发邮件给12个根域名管理员（NSI的控制的A除外），8个管理员把他们控制的Root服务器指向了Jon Postel自己管理的服务器（它们本来应该从NSI控制的A根那里同步Zone文件）。虽然网络运行没有受到任何影响，Postel还是很快收到了政府官员的警告：如果不改回来，你就不要再做DAPAR的项目了。Postel和其他管理员恢复了服务器的配置， 美国商务部的国家电信和信息管理局 (NTIA)很快发布了新的规定，增强了对根域名的管理和控制。但是，争议并没有因此而平息。

无论怎么闹腾，在NSF与NSI的合同到期之前（1998年底），必须有一个新的机构作为域名管理政策制定者，同时又能摆平各种不同利益诉求的个人、组织和团体——不是靠暴力，而是靠法律。美国政府从白宫到商务部也先后发表了几个文件，都不能摆平这些你争我夺的所谓利益攸关方（Stakeholder），直到1998年ICANN成立——又是一场新的战争的开始。

如果一个人把政府等同于国家，完全无视公民个人、私营企业或民间团体的不同利益诉求，他会很难理解ICANN所谓的Multistakeholder，同样也不会理解IETF的Rough Consensus和Open Process，也就难以理解当时美国社会的决策过程。可能同样无法理解所谓的互联网治理（ Internet Governance）当中的这个Governance究竟是什么意思，Governance和Government究竟是什么关系。

*参考文献：*

\_［1］ 人民日报：从网络大国走向网络强国(5) ， 2014. <http://kepu.chinadaily.com.cn/keji/zixun/2014/0624/246333\\_5.html_\\>
\_［2］ IANA Report on Redelegation of the .IQ Top-Level Domain， 2005. <http://www.iana.org/reports/2005/iq-report-05aug2005.pdf_\\>
\_［3］RFC 1216: TRANSITION OF NIC SERVICES , 1991. <http://tools.ietf.org/html/rfc1261_\\>
\_［4］DOMAIN ADMINISTRATORS GUIDE， 1987， <http://tools.ietf.org/html/rfc1032_\\>
\_［5］ <http://www.ietf.org/rfc/rfc1591.txt_\\>
\_［6］ Iraq, its domain and the ‘terrorist-funding’ owner， 2003. <http://www.theregister.co.uk/2003/04/09/iraq\\_its\\_domain/_\\>
\_［7］ Jon Postel : <http://en.wikipedia.org/wiki/Jon\\_Postel_\\>
*［8］ 鲁传颖, “试析当前网络空间全球治理困境” 《现代国际关系》2013年第11期.*&#x20;

*\[Online] Available: <http://www.1think.com.cn/ViewArticle/Article\\_4ffa4a807c07bcf4b4ef9bfbd2a90c8b\\_20140129\\_15239.html>*

点击左下角“阅读原文”

关注

微信ID：ICANN\_CN

微信名：ICANN北京

新浪微博：@ICANNORG

官方网站：[www.icann.org](http://www.icann.org)


# 美国如果把根域名服务器封了，中国会从网络上消失？

作者：卫剑钒

自从美国宣布“清洁网络”行动后，很多懂点网络的人，第一反应是，美国人会下手根域名服务器吗？

这种忧虑可不是一年两年了。

2014年6月24日的《人民日报》上引用专家发言：“目前美国掌握着全球互联网13台域名根服务器中的10台。理论上，只要在根服务器上屏蔽该国家域名，就能让这个国家的国家顶级域名网站在网络上瞬间“消失”。在这个意义上，美国具有全球独一无二的制网权，有能力威慑他国的网络边疆和网络主权。譬如，伊拉克战争期间，在美国政府授意下，伊拉克顶级域名“.iq”的申请和解析工作被终止，所有网址以“.iq”为后缀的网站从互联网蒸发。”1

《信息安全与通信保密》杂志2014年第10期的一篇文章写道：“2004年，由于与利比亚在顶级域名管理权问题上发生争执，美国终止了利比亚的顶级域名.LY的解析服务，导致利比亚从网络中消失3天。”2

对此，我们需要害怕吗？我们需要什么样的反制措施？

不是专家，还真回答不了这个问题。

因为这需要了解DNS的工作原理，了解根域名的管理机制。

这里先给出简要回答：不排除这种可能性，但并不是没有办法。

一句话原因：虽然根不在我们手里，但我们有镜像。

## DNS傻瓜书

先了解点基本概念，懂DNS的可以直接跳过本节。

1、DNS是什么？

DNS就是将域名转换为IP的，因为我们人类的记忆力太差，根本记不住IP，而电脑通信又必须用IP，所以人类发明了域名，让我们可以记住baidu.com、taobao.com这种还算能记得住的域名。然后通过DNS，将这些域名转换为电脑需要的IP。

2、DNS是怎么工作的？

每个电脑里面都设置了本地DNS服务器（简称LDNS），需要的时候，就向LDNS发出请求，LDNS在网上问权威域名服务器（简称权威DNS），有时候问一家是不够的，要问一大圈下来，最后才能得到答案。

3、权威DNS是干什么的？

问我一个域名，我告诉你IP，如果我不知道，我告诉你谁可能知道，你再去问它。

4、什么是根域名服务器（简称根DNS）？

当LDNS啥都不知道的时候（也即没有任何缓存），就去问根DNS，根能告诉LDNS下一步该问谁。

5、全世界有多少根DNS？

13个，其中10个在美国，英国和瑞典各1个，日本1个。

6、根DNS的名字和IP都是什么？

在这个网址：

<https://www.internic.net/domain/named.root>

打开可以看到，里面有13个根的名字和IP，其名字从A.root-servers.net到M.root-servers.net。

A开头那个简称A根，是主根，其他12个（B、C、D、E、F、G、H、I、J、K、L、M）是辅根。

### 为什么根DNS只有13台？

本节看不懂没关系（一般人都看不懂），你只需要知道，由于历史原因和技术原因，对于IPv4而言，根DNS只能有13个IP。

正宗答案是：DNS主要使用UDP数据报传送报文，不含前面的各种头部，DNS报文要求被控制在512字节之内（ RFC1035 ），主要考虑是这个大小几乎可以在互联网上畅通无阻，不会因为路径中某个MTU太小（ MTU 通常总会 >= 576，见 RFC791 ）而导致IP分片，从而预防了各种不可预期的后果3。

而每一个根DNS在DNS报文中都要占用一定的字节数，比如根的名称、TTL、IP地址等。这样，13个根域名服务器基本上就把空间占差不多了，剩余的字节还要用于包装DNS报头以及其它协议参数，所以根域名服务器不易太多，13个算是比较合适的数目。具体可以看一下“Why 13 DNS root servers?”这篇文章。4

### 真的只有13台服务器吗？

和很多人想象的完全不一样，这13个根域名服务器，并不是只有13台物理的服务器。

这13个根，只是一个逻辑上的概念，每个根DNS，背后都有多台真正的物理服务器在工作！

截至2020年8月12日，全球一共有1097个根服务器。每一个根都有若干个镜像，分布在全球不同的地方。

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MBmx5NOgM_evj54n8iq%2Fuploads%2Fj8OuneyanTTwuBvS2Me2%2Ffile.gif?alt=media)

> 这个数目在不断上涨，去年10月1日新中国成立70周年阅兵的时候，我看了一下，是1015个服务器。
>
> 这13个根由12个独立的机构管理，比如A根和J根都是由Verisign公司管理，截至2020年8月12日，A根在全球各地有53个站点，J根有185个站点。L根由ICANN管理，全球有167个站点，其中北京2个，上海1个。

在root-servers网站上5，可以查到所有这些根服务器的分布，从网站展示的根镜像服务器地图上看（2020年8月12日），北京有 5 个根镜像服务器，上海 1 个，杭州 2 个，武汉1个、郑州1个、西宁1个、贵阳1个、广州1个、香港 9 个，台北 6 个。

包含港澳台部分，我国一共有28个根镜像。

我国境内发出的对根DNS的请求，其实都由镜像完成了。这一点后面会解释。

现在，为了增长知识，你该硬着头皮看一些DNS细节了。

### DNS到底是怎么工作的？

对于IT从业者，希望你能理解并牢牢记住本节的内容。

因为你迟早会遇到有关DNS的困惑。

先介绍一下域名的级别：

.代表根域名， .com这种是顶级域名，也叫一级域名，baidu.com这种叫二级域名， [www.baidu.com这种叫三级域名，依次类推。](http://www.baidu.com这种叫三级域名，依次类推。)

注：也有其他叫法的，反正你知道这个意思就可以了。

再介绍一下最常见的两种域名服务器：

权威DNS：负责对请求作出权威的回答。权威DNS中存储着记录，最常见的3种：A记录（记录某域名和其IP的对应），NS记录（记录某域名和负责解析该域的权威DNS），CNAME记录（负责记录某域名及其别名）。权威能直接回答的，就回A记录；需要其他权威DNS回答的，就回NS记录，然后LDNS再去找其他权威DNS问；如果该记录是别名类型的，就回CNAME，LDNS就会再去解析别名。

递归DNS：通常就是LDNS，它接受终端的域名查询请求，负责在网上问一圈后，将答案返回终端。

现在举一个具体的例子：比如终端请求www\.baidu.com这个域名的IP。

在没有缓存时，LDNS会从根DNS问起：

1、LDNS问根DNS说：“[www.baidu.com的IP是多少啊？”。](https://blog.jasonzhang.cc/note/2020/http:/www.baidu.com的IP是多少啊？”。)

2、根DNS说：“我哪有时间管你这么细的问题，你去问com顶级域的DNS吧，我只管到顶级域，喏，这些是com顶级域DNS的名字和IP，你去问它们吧”。（以NS记录回应）

3、LDNS又忙问com的权威DNS，com权威DNS说：“你问的这是三级域名，我不管这么多，你去问baidu.com的权威DNS吧，它的名字是ns.baidu.com，他的IP是XXX（这里可能给出多个权威DNS）”。

4、LDNS继续问baidu.com的权威DNS，这次痛快，因为www\.baidu.com正是它管的，它可能直接给出A记录，也可能给出CNAME记录，如果是前者，就直接得到IP，如果是后者，就需要对别名再做查询。

5、最终，LDNS得到www\.baidu.com的IP，并将其返回给终端。

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MBmx5NOgM_evj54n8iq%2Fuploads%2FMm5N1PW5WULtj8nircXq%2Ffile.gif?alt=media)

细心的人会问，在第1步中，LDNS问根DNS的时候，他是怎么知道根DNS的IP的？

这13个IP通常是预先配置在LDNS里面的。在LDNS初始化DNS缓存或者缓存失效的时候，LDNS向自己被预先配置的这些IP中的一个，发起对根的查询（也即询问.的NS记录），获得最新的根DNS的信息6。

> 对于DNS服务器软件而言，这13个IP，配置在根提示文件（root hints file）中，可能是named.cache或root.ca或root.hints等等之类的文件。

上面就是各种教科书中都会讲到的DNS查询过程，但实际上，没有这么麻烦，因为各个层面都是有缓存的。

实际DNS查询的过程，是这样的：

举个例子，比如用户在浏览器中输入这个域名：123.abc.qq.com.cn

1、浏览器会先看自身有没有对这个域名的缓存，如果有，就直接返回，如果没有，就去问操作系统，操作系统也会去看自己的缓存，如果有，就直接返回，如果没有，再去hosts文件看，也没有，才会去问LDNS。

2、LDNS会去先看看自己有没有123.abc.qq.com.cn的A记录，要有就直接返回，要没有，就去看有没有abc.qq.com.cn的NS记录，如果有，就去问它要答案，如果没有，就去看有无qq.com.cn的NS的记录，如果有，就去问它，没有就去看有无com.cn的DNS，还没有就去看有无cn的DNS，如果连cn的NS记录都没有，才去问根。

所以，有了缓存以后，教科书上那种从根问起的情况，实际上很少发生。

只有在各处都没有缓存的时候，我们才会问根。

### 根镜像起什么作用？

根镜像承担起和根一样的功能。

根DNS中，最重要的文件就是根区文件（Root Zone file）。所有顶级域名记录都存在根区文件中。

辅根从主根同步数据，根镜像从根同步数据。最终，所有根和镜像都有着同样的根区文件。

而且最有意思的是，根镜像和根有着同样的IP。

我们知道，全球有一千多个根镜像，但是大多数人不知道，它们一起共享13个IP！  对的。因为只有13个根。

这是如何做到的？答案是任播（Anycast，又译泛播）技术。

不关心技术细节的，请直接看本节的最后一句。

任播最初由RFC1546提出，主要用在DNS根服务器上。

> 任播是指在IP网络上通过一个IP地址标识一组提供特定服务的主机，服务访问方并不关心提供服务具体是哪一台主机提供的，访问该地址的报文可以被IP网络路由到“最近”的一个（最好也只是一个，别送到多个）服务器上。这里“最近”可以是指路由器跳数、服务器负载、服务器吞吐量、客户和服务器之间的往返时间（ RTT，round trip time ）、链路的可用带宽等特征值。

这样，一方面，用户可以就近访问；另一方面，即便部分根出现故障也没事。

有些同学可能联想到负载均衡，没错，大致上就是这个意思。

**对于中国用户来说，对根的请求，一般不会跑到美国去，而是通过任播技术路由到中国境内的根镜像上。**

### 根DNS是怎么管理的？

根DNS目前由12家机构管理。A根是主根，由美国公司Verisign管理。

根DNS中最重要的文件，根区文件，由ICANN管理。

ICANN（The Internet Corporation for Assigned Names and Numbers，互联网名称与数字地址分配机构）是成立于1998年的一家注册在美国的非营利性组织。

根DNS管理的历史变迁过程还是比较复杂的。这里简要说一下。

DNS最初的技术开发者与管理者是美国南加州大学的Jon Postel博士，他掌管互联网初期根DNS的管理和分配。

1988年，美国政府要求Jon Postel采取更安全和更合理的措施来保证互联网核心资源的分配和管理7。于是，大名鼎鼎的IANA（The Internet Assigned Numbers Authority，互联网数字分配机构）被组建，并在DARPA和南加州大学信息科学研究所（ISI）的合同下管理。

> IANA负责互联网全局编号和编码的管理与协调，之所以需要这么个机构，是因为互联网协议的值或参数，必须是全球唯一的，否则无法互联互通，比如HTTP协议默认都在80端口等待用户请求，而404编码则一致代表"未找到页面”。IANA主要职责包括IP地址段的分配、协议代码和编号的分配（如协议号、端口号）、自治系统编号 (ASN) 分配、DNS根区管理（包括通用顶级域名gTLD以及国家和地区顶级域名ccTLD管理）等。8

1998年ICANN成立之后，美国商务部以合同形式，委托ICANN承担IANA日常运行，IANA从ISI转移到ICANN之下。

对于顶级域名的管理，ICANN的政策是，每个顶级域名（像com、cn、org这种顶级域名，目前有1000多个）都找一个托管商，该域名的所有事项都由托管商负责。

.cn域名的托管商是中国互联网络信息中心（CNNIC），它决定.cn域名的各种政策。

.com、.net 、.name、.gov这四个顶级域名都由Verisign公司托管。

Verisign和ICANN还是闹过几次不愉快的。9

> 2003年，Verisign 推出了一项新业务 Site Finder，用户访问没有注册过的.com或.net域名，都会被导向 Verisign 的网站。这意味着，它事实上拥有了所有没有注册过的.com和.net域名。几天之内，Verisign 就挤入了全世界的前10大网站。
>
> ICANN 要求 Verisign 立刻停止该业务，否则将终止域名托管合同。Verisign 屈服了，停止了这项业务，但是接着就把 ICANN 告上了法庭，要求法庭厘请两者之间的合同，ICANN 到底有没有权力干涉它的业务。
>
> 2006年底，他们达成了庭外和解。ICANN 同意延长 Verisign 的顶级域名托管合同，并且同意 Verisign 向消费者收取的单个域名注册费的上限，从6美元提高到了7.85美元。这个费用标准，一直沿用到了今天，你去注册一个.com或.net域名，所交的钱有0.18美元是 ICANN 收取的管理费，7.85美元是 Verisign 收取的托管费，其余的钱就是域名零售商的费用。

虽然是ICANN运营着IANA，但毕竟是在美国政府的合同管理之下，全球各国以及民间人士颇有微词，一致认为美国政府应该彻底退出。

2014年3月14日，美国商务部国家通讯与信息管理局（NTIA）宣布愿意将IANA的管理权完全移交给ICANN，并要求ICANN制定移交计划。NTIA尤其强调，移交计划要强化多利益相关方模式，不能以政府间组织或政府领导的组织取代当前NTIA扮演的角色。

2016年3月17日，ICANN向NTIA提交了移交计划。2016年6月9日，NTIA公布审核意见，表示ICANN提交的移交计划满足了此前设定的条件。

2016年8月16日，NTIA宣布不再延期现有合同。

虽然遇到一些阻挠10，最终，2016年10月1日，ICANN和美国商务部之间关于IANA职能的合同到期且不再续约，ICANN彻底成为独立的非营利机构。IANA部门的员工和其他的相关资源都被转移到ICANN新设立的附属机构PTI（Public Technical Identifiers，公共技术标识符）中。

ICANN使用全球多利益相关方治理模型（global multistakeholder governance model）进行管理。PTI董事会共5席，3席由ICANN委派，2席由全球互联网社群代表组成提名委员会产生。2017年2月，ICANN发布PTI董事竞选公告，经半年多轮面试及背景调查，提名委员会于2017年10月26日宣布我国北龙中网的王伟与另一欧洲代表中选。又经一个半月的利益冲突审查，2017年12月13日ICANN董事会正式确认王伟当选。11

### 我国的根镜像由谁管理？

从目前我所找到的资料看，自2003年以来，我国在不断引进根镜像，尤其是去年，根镜像个数增速很快。

2003年，中国电信引入了国内第一个根镜像节点（F根）。

2005年，I根服务器运行机构在 CNNIC 设立了中国第二个根镜像（I根）。

2006年，中国联通(原中国网通)与美国 VeriSign 公司合作， 在国内正式开通J根镜像服务器，同时引入了全球最大的两个顶级域名 “.COM”和“.NET”镜像节点；引进这些镜像的主要目的是提高根域名和顶级域名的解析性能。

2014年，世纪互联与ICANN合作在中国增设L根域名服务器镜像。

2019年6月24日，工信部批准CNNIC设立六台域名根镜像服务器（F、I、K、L）。这六台域名根服务器编号为 JX0001F、JX0002F、JX0003I、JX0004K、JX0005L 和 JX0006L12，并批准互联网域名系统北京市工程研究中心（ZDNS）设立L根镜像服务器JX0007L13。

2019年11月6日，工信部批复同意中国信息通信研究院设立L根镜像服务器，编号分别为JX0008L、JX0009L。

2019年12月5日，工信部批复同意中国信息通信研究院设立域名根服务器（K根镜像服务器），编号为JX0010K。

2019年12月9日，工信部批复同意CNNIC设立域名根服务器（J、K根镜像服务器），编号分别为JX0011J、JX0012K。

从工信部的批文中可以了解到，相关单位负责根镜像的运行、维护和管理工作，维护国家利益和用户权益，并接受工信部的管理和监督检查。

> 工信部在给CNNIC的批文中写道：“你中心应严格遵守《互联网域名管理办法》《通信网络安全防护管理办法》及相关法律法规、行政规章及行业管理规定，接受我部的管理和监督检查，建立符合我部要求的信息管理系统并与我部指定的管理系统对接，保证域名根服务器安全、可靠运行，为用户提供安全、方便的域名服务，保障服务质量，保护用户个人信息安全，维护国家利益和用户权益。”

### 美国能对根DNS做什么手脚？

虽然ICANN是一个独立的非营利性机构，但如果美国政府动用强制力量，A根（主根）的内容仍然存在被篡改的可能。

也就是根区文件可以被篡改。

会怎么篡改？

我们先看看根区文件长什么样。

从ICANN官网上可以下载根区文件：

<https://www.iana.org/domains/root/files>

> 该文件保存所有顶级域名的信息，目前大小为2.2M，2万余行。
>
> 每当有顶级域名的变动时，该文件就会更新。

我们可以看到，和cn域名解析相关的记录也就那么几十行。

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MBmx5NOgM_evj54n8iq%2Fuploads%2FgU5elzgvWDmzjsB8B4pD%2Ffile.gif?alt=media)

如果删除和cn相关的那些行，很快，就会同步到所有的根中。

然后，在所有的缓存都过期之后，全球所有人都访问不了.cn后缀的网站。

### 如何应对？

因为我们维护着根镜像，所以我们控制着镜像中的内容。

而中国境内的对根的访问，通过我们的运营商，都会落到对我国根镜像的访问上。

我们可以不同步关于cn的修改。

就这么简单。

可以简单写个程序，每次同步完立刻加上cn记录。

也可以自己搭个主根，完全不和美国的根同步。（相当于另立中央了）

当然，世界各地不在我们管理之下的根和根镜像，如果不加行动，仍然会同步这些删除。

那么，除了中国自己，其他国家的人都无法访问.cn网站。

但是，这些国家很快就会有响应，凡是想访问.cn网站的国家，都会把cn记录加回去，并拒绝同步美国删去的这几行。

最终，只有美国人，访问不了.cn网站。

综上分析，我认为美国这么做的可能性不大，因为这一招过于低劣，将会让美国政府完全颜面扫地，并失去今后在互联网领域的任何话语权。而ICANN也将失去公信力，整个互联网世界，会推选使用新的机构和新的主根。

因为互联网世界的一贯准则就是：如有封禁，就绕过它。

### 后记

最后，我们看看本文开头所提的两个断网事件是怎么回事：

关于伊拉克域名事件，可以看看清华大学段海新教授的文章：[“伊拉克域名.IQ被美国删除的背后以及早期的根域名管理”](https://mp.weixin.qq.com/s?__biz=MzUzMDA1MTEzMg==\&mid=2247483726\&idx=1\&sn=cb268f1ac87b5a564637f2c74c28e37f\&scene=21#wechat_redirect)，里面把整个事件的来龙去脉说的很清楚。主要原因是.iq域名的前任管理者于2002年被关进监狱，新任管理者（NCMC）于2005年才提出申请，而IANA当时还考虑征求新旧代理双方对新授权的一致认可，所以才出现了所谓的“申请和解析工作被终止”。

关于利比亚域名事件，可以看看此文：[“利比亚国家顶级域名（.LY）中止服务始末”](https://mp.weixin.qq.com/s?__biz=MzUzMDA1MTEzMg==\&mid=2247483728\&idx=1\&sn=729702e672b8cfc4d1f53c91b8d8eae4\&scene=21#wechat_redirect)，事实情况是参与运营.LY的两家机构因争夺归属权而内斗的结果（其中一方关闭了.LY域名服务器的解析）。经过这番变乱，2004年10月，ICANN批准将.LY授予利比亚邮电总公司，.LY事件算是尘埃落定。

本文中提到的风险和应对，主要是我个人的分析，下面看看业内专家的说法。

中国工程院院士、清华大学计算机系主任吴建平在2019年的一次访谈14中表示，DNS根域名服务器不是互联网的“核按钮”。全球互联网根域名服务器运行者，不可能同时关闭所有的根服务器，包括影子服务器。

互联网域名系统北京市工程研究中心（ZDNS）主任毛伟表示15：互联网专家一直都在不断完善域名根系统安全保障机制，就算真的断“根”了，也有应急方法来解决。在境内，可以采用根区数据备份并搭建应急根服务器来解决；在全球层面，可以用根镜像、IPv6环境下的根服务器数量扩展、根服务器运行机构备选机制等方法来解决。

现在，了解了这么多，关于根域名服务器，你是不是放心了很多。

参考文献：

1. 从网络大国走向网络强国(<http://opinion.people.com.cn/n/2014/0624/c1003-25189448.html)&#x20>;
2. 美国网络霸权浅析(<http://www.wanfangdata.com.cn/details/detail.do?\\_type=perio\\&id=xxaqytxbm201410030)&#x20>;
3. 为什么域名根服务器只能有13台呢？(<https://www.zhihu.com/question/22587247)&#x20>;
4. Why 13 DNS root servers?(<https://miek.nl/2013/november/10/why-13-dns-root-servers/)&#x20>;
5. <https://root-servers.org&#x20>;
6. Initializing a DNS Resolver with Priming Queries(<https://tools.ietf.org/html/draft-ietf-dnsop-resolver-priming-11)&#x20>;
7. 薛虹：互联网全球治理的新篇章(<https://zhuanlan.zhihu.com/p/23042167)&#x20>;
8. ICANN: IANA职能(<https://www.icann.org/zh/system/files/files/iana-functions-18dec15-zh.pdf)&#x20>;
9. 阮一峰：根域名的知识&#x20;
10. [徐培喜：IANA职能管理权移交谁是赢家](https://mp.weixin.qq.com/s?__biz=MjM5Mzg0NTU0NQ==\&mid=2649564853\&idx=2\&sn=6b9e6efc2a96600456a71836dcead62b\&scene=21#wechat_redirect)&#x20;
11. 北龙中网王伟任职PTI董事 我国专家就任国际互联网治理关键岗位(<http://news.sina.com.cn/c/2017-12-25/doc-ifypwzxq6350205.shtml)&#x20>;
12. 工业和信息化部关于同意中国互联网络信息中心设立域名根服务器（F、I、K、L根镜像服务器）及域名根服务器运行机构的批复(<http://www.miit.gov.cn/n1146285/n1146352/n3054355/n3057709/n4704651/c7015545/content.html)&#x20>;
13. 工业和信息化部关于同意互联网域名系统北京市工程研究中心有限公司设立域名根服务器（L根镜像服务器）及域名根服务器运行机构的批复(<http://www.miit.gov.cn/n1146285/n1146352/n3054355/n3057709/n4704651/c7015527/content.html)&#x20>;
14. [中国工程院院士吴建平：DNS根服务器不是互联网的核按钮！](https://mp.weixin.qq.com/s?__biz=MjM5MTgzNDk4Mw==\&mid=2652359881\&idx=1\&sn=ed8710ae67a57c7dc064c8cff659febf\&scene=21#wechat_redirect)&#x20;
15. [ZDNS毛伟：互联网根并不能让中国断网，更应重视企业域名服务风险](https://mp.weixin.qq.com/s?__biz=MjM5NzAxNjk2OQ==\&mid=2649539902\&idx=1\&sn=3282d2d6dfab2ef6d01e0a01ffcf8933\&scene=21#wechat_redirect)


# The Technical Data Guidance

个人第三代网页设计中所涉及到的部分关键词

## EN

The  following key words about network are the technologies that I had study and used. And now I'm studying the fourth generation of web application technologies and the Firebase dynamic database, after I  fully understand  and can use these technologies, I will sort out them again

### The keywords for third generation web platform

#### **Compute Engine:** Google Cloud based on United States(us-west2-a)

> Supplement: GCP is for formal plan. After I test Alicloud, Tencent Cloud, Amazon Cloud, I found GCP is the best choice.

#### **IP:** Google Anycast IP + Premium Host IP

| Category         | **Premium**                                                                                            | Standard                                                                                                    |
| ---------------- | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------- |
| Network          | High performance routing                                                                               | Lower performance network                                                                                   |
| Network Services | Network services such as Cloud Load Balancing are global (single VIP for backends in multiple regions) | Network services such as Cloud Load Balancing are regional (one VIP per region)                             |
| Service Level    | High performance and reliability, Low latency, Global SLA                                              | Performance and availability comparable to other public cloud providers (lower than premium), no Global SLA |
| Use Case         | Performance, reliability, global footprint and user experience are your main considerations            | Cost is your main consideration, and you’re willing to trade-off some network performance                   |

#### **DNS, CDN, Network Load Balancer**

**DNS**

![Google Cloud DNS](https://2918567161-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBmx5NOgM_evj54n8iq%2F-MFsfPpgwq2rR2syG5iJ%2F-MFskgVw6mcrbmpW9cHr%2Fimage.png?alt=media\&token=c534e70c-b0cb-4c31-8eda-bfc47ec0613a)

**CDN & Network Load Balancer**

![Traffic Data](https://2918567161-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBmx5NOgM_evj54n8iq%2F-MFsfPpgwq2rR2syG5iJ%2F-MFslk9YjQafkIX-d7cZ%2Fimage.png?alt=media\&token=05573ee6-3975-4292-8b7f-c6ac0fc5c34b)

![The Load Balancer](https://2918567161-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBmx5NOgM_evj54n8iq%2F-MFsfPpgwq2rR2syG5iJ%2F-MFsm-VE9vUmb8kaiR0r%2Fimage.png?alt=media\&token=eab4ce50-d0f5-4bcc-b4ab-e1f270aec47e)

#### **Picture Bed**

The Picture Bed is based on Google Storage(US area) and also use Google CDN with custom domain.

#### SSL

GTS CA 1D2

![Google Trust Service](https://2918567161-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBmx5NOgM_evj54n8iq%2F-MFsmCeolbwx8a3Z2rw4%2F-MFsnOWkUay3uORPXJKG%2Fimage.png?alt=media\&token=19cc2779-5bed-4450-a847-7d48117448a8)

#### Web Serve

Ngingx & Tengine

### The Color Guidance For  Design

#### Theme Color

* 蓝色#4285F4
* 绿色#0F9D58
* 黄色#F4B400
* 红色#DB4437

#### The Font Color

* 4d4d4d
* 1d1d1f
* 424242

#### The Background Color

* f5f5f7
* F7F9FA

#### The Divider Color

* D2D2D7


# 缓慢收藏, 小心整理

1, 世界上美好的东西不太多, 立秋傍晚从河对岸吹来的峰, 和二十来岁笑起来要人命的你.

2, 夜晚潮湿, 地面潮湿, 空气寂静, 树林沉默, 今夜我爱你.

3, 世事如书, 我偏爱你这一句, 愿做个逗号, 待在你脚边.

4, 你来人间一趟, 你要看着太阳, 和你的心上人一起走在街上, 了解她, 也要了解太阳.

5, 我不喜欢山, 我喜欢广阔的田野, 树林和河, 咱们一起去吧.

6, "为何不敢看观音?" "不敢看我心上人." "因何不敢?" "我问心有愧. 做文章不专心, 一心想那女钗裙. 可惜前程纵似锦, 心事不敢见光明. 英台啊, 我不爱前程爱观音."

7, 我不看月亮, 也不说想你, 这样月亮和你都蒙在鼓里.

8, "月遇从云, 花遇和风, 今晚上的夜空很美, "我又想你."

9, 村上春树说: 如果我爱你, 而你也正巧爱我, 你头发乱了的时候, 我会笑笑地替你拨一拨, 然后, 手还留恋地在你发上多待几秒, 但是, 如果我爱你, 而你不巧地不爱我, 你头发乱了, 我只会轻轻地告诉你, 你头发乱了喔.

10, 人们从诗人的字句里, 选取自己心爱的意义. 单诗句的最终意义是指向你.

11, 龙应该藏在云里, 你应该藏在心里.

12, 玫瑰带了花期, 我很想你.

13, 在清晨, 在燕山上, 在万丈阳光里, 树叶里躲藏着锦鸡和百灵, 一阵风带走了闪烁的流水, 此刻, 我愿意做一个, 没有理想的人, 我愿意一直陪你坐到衰老, 像草木一样安静.

14, 见到日出我便不能自已, 而你就是好日出, 于是, 所以, 我爱你.

15, 明月高悬夜空, 眼下是春天. 我想起了你, 内心是完整的.

16, 花盛开就是一句, 夜漫过就是一篇. 黄昏开始书写, 黎明是无数的扉页. 全世界拼成首诗. 我爱你当作最后一行.

17, 后海有树的院子, 夏代有工的玉, 此时此刻的云, 二十来岁的你.

18, 所有的晦暗都留给过往, 从遇见你开始, 凛冬散尽星河长明.

19, 汽笛声的确微弱, 听见没听见都分不清. 而我就像爱那汽笛一样爱你.

20, 我爱你, 从这里一直到月亮, 再绕回来.

21, 星河璀璨, 阳光干净, 再人间所有美好的存在里, 不论是活着或者死去, 我总是最爱你.

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

春水初生, 春林初盛, 春风十里, 不如里.

今夜我不关心人类, 我只想你.

死生契阔, 与子成说. 执子之手, 与子偕老.

用我三生烟火, 换你一世迷离.

我想在你的青春里写下我的名字.

三月桃花, 明日天涯, 两人一马.

去见你的路上, 阳光温热, 云朵可爱, 想必晚风吹来, 也是甜的.

我偷偷碰了你一下, 却不料你如蒲公英散开, 此后到处都是你的模样.

月色与雪色之间, 你是第三种绝色.

不要问我心里有没有你, 我余光中都是你.

你的信太过官方, 都不说想我. -- 周恩来

我这一生都是坚定不移的唯物主义者, 唯有你我希望有来生. -- 周恩来

在青山绿水之间, 我想牵着你的手, 走过这座桥, 桥上是绿叶红花, 桥下是流水人家, 桥的那头是青丝, 桥的这头是白发.

对待自己温柔一点, 你只不过是宇宙的孩子, 与植物, 星辰没什么两样.

我与春风皆过客, 你携秋水揽星河.

幸得识卿桃花面, 自此阡陌多暖冬.

我要的不多, 想要和你看遍四季, 看所有景色.

鲸落于海, 星辰于洼, 风隐于林, 我归于你.

你是近处的灯火, 也是遥远的星河.

南风未起, 念你成疾. 喜你为疾, 药石无医.

夏天有着迟暮的霞光, 正如晚来的你皆是笑意.

我曾在人山人海的星光里为你嘶声呐喊, 最美好的岁月都与你有关.

我能饮下烈酒, 也能熬过没有你的深秋. 希望你一生没有软肋, 不像我, 别人一提到你, 我就输了.


# 泰戈尔诗句节选

## 生如夏花

我听见回声, 来自山谷和心间; 以寂寞的镰刀收割空旷的灵魂; 不断地重复决绝, 又重复幸福;终有绿洲摇曳在沙漠; 我相信自己, 生来如同摧残的夏日之花, 不凋不败, 妖冶如火, 承受心跳的负荷和呼吸的累赘, 乐此不疲!

我听见音乐, 来自月光和胴体; 辅极端的诱饵捕获飘渺的唯美; 一生充盈着激烈, 又充盈着纯然; 总有回忆贯穿于世间; 我相信自己, 死时如同静美的秋日落叶, 不盛不乱, 姿态如烟, 即便枯萎也保留丰肌清骨的傲然, 玄之又玄!

## 飞鸟集

你微微地笑着, 不同我说什么话. 而我觉得, 为了这个, 我已灯带很久了.

人是一个初生的孩子, 他的力量, 就是生长的力量.

只有经历过地狱般的磨砺, 才能练就创造天堂的力量; 只有流过血的手指, 才能弹出世间的绝响.

纵然伤心, 也不要愁眉不展, 因为里不知谁会爱上你的笑容.

寂静在喧嚣里低头不语, 沉默在黑夜里与目光结交, 于是, 我们看错了世界, 却说世界欺骗了我们.

世界以痛吻我, 我要报之以歌.

鸟以为把鱼举在空中是一种慈善的举动.

真理之川从它的错误之沟渠中流过.

天空没有留下鸟的痕迹, 但我已飞过.

当你为错过太样而哭泣的时候, 你也要在错过群星了.

## 流萤集

让我的爱, 像阳光一样, 包围着你, 而又给你光辉灿烂的自由.

他们自己把墨水泼翻了, 为了百般辩护, 竟把白天说成黑夜.

我最后的敬礼, 献给那些知道我不完美却依然爱我的人.

人生的意义不在于留下什么, 只要你经历过, 就是最大的美好, 这不是无能, 而是一种超然.

## 园丁集

当她用急步走过我的身旁, 她的裙沿触到了我. 从一颗心的无名小岛上忽然吹来了春天的温馨.

我的心是旷野额鸟, 在你的眼睛里找到了天空.

诗人用比喻的金线替你织网, 画家们给你的身形以永新的不朽. 海献上珍珠, 矿献上金子, 夏日的花献上花朵来装扮你, 覆盖你, 使你更加美妙. 人类心中的愿望, 在你的青春上洒上光荣. 你一半是女人, 一半是梦.

## 吉檀迦利

离你最近的地方, 路途最远. 最简单的音调, 需要最艰苦的练习.

旅客在每一个生人门口敲叩, 才能敲到自己的家门;人要在外面到处漂泊, 最后才能走到最深的内殿.

眼睛为她下着雨, 心却为她打着伞, 这就是爱情.


# 金刚经 原文 | 抄经

2020/11/23

## 第一品 法会因由

如是我闻, 一时, 佛在舍卫国x树给孤独园, 与大比丘众, 千二百五十人俱. 尔时, 世尊食时, 著衣持钵, 入舍卫大城祈食. 于其城中, 次第乞已, 还至本处. 饭食讫, 收衣钵, 洗足已, 敷座而坐.

## 第二品 善现启请

时, 长老须菩提菩提, 在大众中, 即从座骑, 偏袒右肩, 右膝驻地, 合掌恭敬而白佛言: '希有, 世尊, 如来散护念诸菩萨, 善付嘱诸菩萨. 世尊, 善男子, 善女人, 发阿x多罗三藐三菩提心. 云和应住? 云何降伏其心?'

佛言: '善哉, 善哉!' 须菩提, 如汝所说, 如来善护念诸菩萨, 善付嘱诸菩萨. 汝今谛听, 当为汝说. 善男子, 善女人, 发阿x 多罗三藐三菩提心, 应如是往, 如是降伏其心.'

"唯然, 世尊, 愿乐欲闻"

## 第三品 大乘正宗

佛告须菩提: '诸菩萨摩诃萨应如是降伏其心: 所有一切众生之类, 若卵生, 若胎生, 若湿生, 若化生, 若有色, 若无色, 若有想, 若非有想非无想, 我皆令人无余涅槃而灭度之. 如是灭度无量无数无边众生, 实无众生得灭度者. 何以故? 须答菩提, 若菩萨有我相, 人相, 众生相, 寿者相, 即非菩萨'

## 第四品 妙行无住

"复次, 须菩提, 菩萨于法, 应无所住行于布施. 所谓不住色布施, 不住声, 香, 味, 触, 法布施. 须菩提, 菩萨应如是布施, 不住于相. 何以故? 若菩萨不住相布施, 其福德不可思量. 须菩提, 于意云何? 东方虚空, 可思量不?"

"不也, 世尊."

"须菩提, 朗西北方, 四维上下虚空, 可思量不?"

"不也, 世尊."

"须菩提, 菩萨无住相布施, 德福亦复如是不可思量. 须菩提, 菩萨但应如所教住."

## 第五品 如理实见

"须菩提, 于意云何? 可以身相见如来不?"

"不也, 世尊, 不可以身相得见如来. 何以故? 如来所说身相, 即非身相."

佛告须菩提: "凡所有相, 皆是虚妄, 若见诸相非相, 则见如来."

## 第六品 正信希有

须菩提白佛言: "世尊, 颇有众生, 得闻如是言说章句, 生实信不?"

佛告须菩提: "莫作是说. 如来灭后, 后五百岁, 有持戒修福者,  于此章句能生信心, 以此为实. 当知是人, 不于一佛,  二佛, 三四五佛而种善根, 已于无量千万佛所神诸善根. 闻是章句, 乃至一念生净信者, 须菩提, 如来悉知悉见, 是诸众生得如是无量福德. 何以故? 是诸众生无复我相, 人相, 众生相, 寿者相, 无法相, 亦无非法相. 何以故? 是诸众生, 若心取相, 则为著我, 人, 众生, 寿者. 若取法相, 即著我, 人, 众生, 寿者. 何以故? 若取非法相, 即著我, 人, 众生, 寿者. 是故不应取法, 不应去非法. 以是义故, 如来常说: 汝等比丘, 知我说法, 如筏喻者, 法尚应舍, 何况非法?"

## 第七品 无得无说

"须菩提, 于意云何? 如来得阿 x 多罗三藐三菩提耶? 如来有所说法耶? "

须菩提言: "如我解佛所说义, 无有定法名阿 x 多罗三藐三菩提, 亦无有定法如来可说. 何以故? 如来所说法, 皆不可取, 不可说, 非法, 非非法. 所以者何? 一切贤圣, 皆以无为法而有差别."

## 第八品 依法出生

"须菩提, 于意云何? 若人满三千大千世界七宝, 以用布施, 是人所得福德, 宁为多不?"

须菩提言: "甚多, 世尊. 何以故? 是福德, 即非福德性. 是故如来所福德多."

"若复有人, 于吃经中, 受持乃至四句 x 等, 为他人所, 其福胜彼. 何以故? 须菩提, 一切诸佛, 及诸佛阿 x 多罗三藐三菩提法, 皆从此经出. 须菩提, 所谓佛法者, 即非佛法. "


# 符号


# 段永平投资问答录

2020/11/05

内容概要

段永平：著名企业家，小霸王品牌缔造者， 步步高创始人，vivo 和 OPPO 联 合创始人，网易丁磊生命中的贵人，拼多多黄峥的人生导师。

段永平同时也是著名投资人，早期投资网易获 100 倍以上回报，目前重仓 茅台、苹果等优质公司。

不管是作为管理者，还是作为投资人，段永平都是非常成功的，本期雪球 精选出段永平关于商业逻辑的问答录，阅读本文能领略段永平对于商业的深刻理 解，希望各位通过这本书能读懂段永平的商业智慧，对各位的工作学习投资能有 所帮助。<br>

**目录**<br>

前言：买股票就是买公司.............................................................................. 6

第 1 节：伟大企业............................................................................................ 7

一、什么样的企业是伟大的企业................................................................... 9

二、伟大公司管理层(CEO)：造钟人........................................................... 14

三、长长的坡，厚厚的雪---滚雪球............................................................. 17

第 2 节：商业模式.......................................................................................... 22

一、商业模式最重要..................................................................................... 22

二、差异化是好商业模式的前提................................................................. 27

三、护城河是商业模式最重要的部分......................................................... 33

四、要有好的企业文化做支撑..................................................................... 37

五、30 个商业案例点评.............................................................................. 40

第 3 节：企业文化.......................................................................................... 77

一、企业文化................................................................................................. 78

二、核心价值观............................................................................................. 95

三、本分和平常心......................................................................................... 96

四、团队合作............................................................................................... 119

五、消费者导向........................................................................................... 152

六、基业长青............................................................................................... 166

七、26 个企业文化案例点评.................................................................... 171

第 4 节：产品、差异化与创新................................................................... 223

一、好产品................................................................................................... 223

二、产品差异化........................................................................................... 243

三、创新....................................................................................................... 255

第 5 节：品牌、营销与广告..................................................................... 273

一、品牌....................................................................................................... 273

二、营销....................................................................................................... 290

三、广告....................................................................................................... 301

第 6 节：收购和多元化............................................................................... 311

一、收购....................................................................................................... 311

二、多元化................................................................................................... 313

第 7 节：Stop doing list（不为清单）................................................... 318

感谢............................................................................................................... 353<br>

## 前言：买股票就是买公司

网友：投资大师的一句话也许就改变了我们小散户的一生，希望段总不吝赐教， 感激不尽。

&#x20;**段永平**：如果有这么一句话，可能就是“买股票就是买公司”。我曾对老巴讲我 从他那里学到的最重要的一句话，然后他说，这正是他从格拉汉姆哪儿学到的最                重要的一句话。（2010-05-23）

**段永平**：对投资而言，很重要的一点是你能把上市公司看成非上市公司，然后理 性地去想应该怎么做。（2012-11-11）

网友：您在经历上与巴菲特有相似之处，有条件将公司的管理经验运用到实际的 投资当中去。那么，您在完成这种跨越的时候有什么经验吗？

**段永平：**&#x6CA1;觉得有什么本质区别。（2010-10-26）

网友：这里有个问题想请教下段大哥：从根本上来说，我是喜欢投资的，但也积 累点企业运营经验，对于企业的发展还是可以贡献点微薄力量的，我从一个小投 资者转变为所投企业的管理者，这二者应该不矛盾吧？毕竟，现今我对于该企业 的发展及经营情况，了解得更透彻、更深入了。我这样做对于投资来说，有问题 吗？

**段永平：**&#x4F60;去看看老巴是怎么说的就明白了。（2011-08-20）

网友：请教大道，巴菲特说过：我是个好投资家，因为我是一个企业家。我是个 好企业家，因为我是投资家。我也问过方丈，企业家与投资家的区别，他说：“企 业家成功一次就够了，而投资家需要成功多次。请教大道，您认为投资跟经营在 具体方法论层面有啥区别没有？&#x20;

**段永平：**&#x6CA1;觉得投资和自己经营企业有什么大区别。不同的地方是投资时是你认 同的人在经营。（2019-04-06）

## 第 1 节：伟大企业

**伟大企业的其中一项特质是“利润之上的追求”**，乔布斯和他的苹果给予了这项 特质以最完美的诠释。

**段永平：**&#x8FD9;是《乔布斯传》最后一章“遗产：无比辉煌的创新天堂”中的一段自 述，我反复读了很多遍，字里行间跃然纸上的是一个虽有阴暗面却始终闪亮的灵 魂。 吉姆.柯林斯在《基业长青》中曾经总结过**伟大企业的其中一项特质是“利润之 上的追求”**，乔布斯和他的苹果给予了这项特质以最完美的诠释。（2014-02-01）&#x20;

&#x20; 原文：

我的激情所在是打造一家可以传世的公司，这家公司里的人动力十足地创造伟大 的产品。其他一切都是第二位的。当然，能赚钱很棒，因为那样你才能够制造伟 大的产品。但是动力来自产品，而不是利润。斯卡利本末倒置，把赚钱当成了目 标。这种差别很微妙，但它却会影响每一件事：你聘用谁，提拔谁，会议上讨论 什么事情。

&#x20;有些人说：“消费者想要什么就给他们什么。”但那不是我的方式。我们的责任 是提前一步搞清楚他们将来想要什么。我记得亨利·福特曾说过，“如果我最初 问消费者他们想要什么，他们应该是会告诉我，‘要一匹更快的马！’”人们不 知道想要什么，直到你把它摆在他们面前。正因如此，我从不依靠市场研究。我 们的任务是读懂还没落到纸面上的东西。

宝丽来的埃德温· 兰德曾谈过人文与科学的交集。我喜欢那个交集。那里有种 魔力。有很多人在创新，但创新并不是我事业最主要的与众不同之处。苹果之所 以能与人们产生共鸣，是因为在我们的创新中深藏着一种人文精神。我认为伟大 的艺术家和伟大的工程师是相似的，他们都有自我表达的欲望。事实上最早做 Mac 的最优秀的人里，有些人同时也是诗人和音乐家。在 20 世纪 70 年代，计 算机成为人们表现创造力的一种方式。一些伟大的艺术家，像列奥纳

多· 达· 芬奇和米开朗基罗，同时也是精通科学的人。米开朗基罗懂很多关于 采石的知识，他不是只知道如何雕塑。

人们付钱让我们为他们整合东西，因为他们不能 7 天 24 小时地去想这些。如果 你对生产伟大的产品有极大的激情，它会推着你去追求一体化，去把你的硬件、 软件以及内容管理都整合在一起。你想开辟新的领域，就必须自己来做。如果你 想让产品对其他硬件或软件开放，你就只能放弃一些愿景。

&#x20; 过去，不同阶段有不同的公司成为了硅谷的典范。很长一段时间里，是惠普。后 来，在半导体时代，是仙童和英特尔。我觉得，有一段时间是苹果，后来没落了。 而今天，我认为是苹果和谷歌——苹果更多一些。我想苹果已经经受住了时间的 检验。它曾有过起起伏伏，但如今仍然走在时代的前沿。

要指出微软的不足很容易。他们显然已经丧失了统治地位，已经变得基本上无关 紧要。但是我欣赏他们所做的，也了解那有多么困难。他们很擅长商业方面的事 务。他们在产品方面从未有过应有的野心。比尔喜欢把自己说成是做产品的人， 但他真的不是。他是个商人。赢得业务比做出伟大的产品更重要。他最后成了最 富有的人，如果这就是他的目标，那么他实现了。但那从来都不是我的目标，而 且我怀疑，那最终是否是他的目标。我欣赏他，欣赏他创建的公司，很出色，我 也喜欢跟他合作。他很聪明，实际上也很有幽默感。但是微软的基因里从来都没 有人文精神和艺术气质。即使在看到 Mac 以后，他们都模仿不好。他们完全没搞 懂它是怎么回事儿。

像 IBM 或微软这样的公司为什么会衰落，我有我自己的见解。这样的公司干得很 好，它们进行创新，成为或接近成为某个领域的垄断者，然后产品的质量就变得 不那么重要了。这些公司开始重视优秀的销售人员，因为是他们在推动销售、改 写了收入数字，而不是产品的工程师和设计师。因此销售人员最后成为公司的经 营者。IBM 的约翰·埃克斯是聪明、善辩、非常棒的销售人员，但是对产品一无 所知。同样的事情也发生在施乐。做销售的人经营公司，做产品的人就不再那么 重要，其中很多人就失去了创造的激情。斯卡利加入后，苹果就发生了这样的事 情，那是我的失误；鲍尔默接管微软后也是这样。苹果很幸运，能够东山再起， 但我认为只要鲍尔默还在掌舵，微软就不会有什么起色。

&#x20;我讨厌一种人，他们把自己称为“企业家”，实际上真正想做的却是创建一家企 业，然后把它卖掉或上市，他们就可以变现，一走了之。他们不愿意费力气打造 一家真正的公司，而这正是商业领域里最艰难的工作。只有做到这一点你才能真 正有所贡献，为前人留下的遗产添砖加瓦。你要打造一家再过一两代人仍然屹立 不倒的公司。那就是沃尔特· 迪士尼，还有休利特和帕卡德，还有创建英特尔 的人所做的。他们创造了传世的公司，而不仅仅是赚了钱。这正是我对苹果的期                                                              望。

&#x20;我不认为我对别人很苛刻，但如果谁把什么事搞砸了，我会当面跟他说。诚实是 我的责任。我知道我在说什么，而且事实证明通常我是对的。那是我试图创建的 文化。我们相互间诚实到残酷的地步，任何人都可以跟我说，他们认为我就是一 堆狗屎，我也可以这样说他们。我们有过一些激烈的争吵，互相吼叫，那可以说 是我最美好的一段时光。我在别人面前说“罗恩，那个商店看起来像坨屎”的时 候没什么不良感觉。或者我会说“天啊，我们把这个工艺搞砸了”，就当着负责 人的面。这就是我们的规矩：你就得超级诚实。也许有更好的方式，像个绅士俱 乐部一样，大家都戴着领带，说着上等人的敬语，满嘴华丽委婉的词汇，但是我 对此不太在行，因为我是来自加利福尼亚的中产阶级。

我有时候对别人很严厉，可能没有必要那么严厉。我还记得里德 6 岁时，他回到 家，而我那天刚解雇了一个人，我当时就在想，一个人要怎样告诉他的家人和幼 子他失业了。很不好受。但是必须有人去做这样的事。我认为确保团队的优秀始 终是我的责任，如果我不去做这件事，没有人会去做。

&#x20;你必须不断地去推动创新。迪伦本来可以一直唱抗议歌曲，可能会赚很多钱，但<br>

是他没有那么做。他必须向前走，1965 年在民谣中融入电子音乐元素时，他疏 远了很多人。1966 年的欧洲巡演是他的巅峰。他会先上台演奏原声吉他，观众 非常喜欢。然后他会带出 The Band 乐队，他们都演奏电子乐器，观众有时候就 会喝倒彩。有一次他正要唱《像一块滚石》，观众中有人高喊“叛徒！”迪伦说： “搞他个震耳欲聋！”他们真那样做了。披头士乐队也一样。他们一直演变、前 行、改进他们的艺术。那就是我一直试图做的事情——不断前进。否则，就如迪 伦所说，如果你不忙着求生，你就在忙着求死。

&#x20; 我的动力是什么？我觉得，大多数创造者都想为我们能够得益于前人取得的成就 而表达感激。我并没有发明我用的语言或数学。我的食物基本都不是我自己做的， 衣服更是一件都没做过。我所做的每一件事都有赖于我们人类的其他成员，以及 他们的贡献和成就。我们很多人都想回馈社会，在历史的长河中再添上一笔。我 们只能用这种大多数人都掌握的方式去表达——因为我们不会写鲍勃· 迪伦的 歌或汤姆· 斯托帕德(Tom Stoppard)的戏剧。我们试图用我们仅有的天分去表 达我们深层的感受，去表达我们对前人所有贡献的感激，去为历史长河加上一点 儿什么。那就是推动我的力量。2014-02-01

## 一、什么样的企业是伟大的企业

01.引用：巴菲特语录 &#x20;

**伟大企业的定义如下：在 25 年或 30 年仍然能够保持其伟大企业地位的企业。**

**段永平：**&#x8FD9;个定义好！（2012-07-28）

&#x20;02.网友：伟大的公司应该是具有“消费者导向”的文化并且能做出“伟大产 品”的公司，比如苹果公司。优秀公司有哪些特征？

**段永平：**&#x6709;本书叫\<Good To Great>，翻译好像叫《从优秀到卓越》，同一个作 者还有一本书：\<Built To Last>--《基业长青》 我觉得这两本书写得非常好，至少没见过写得更好的。这两本书唯一的缺陷（在 我眼里），就是用了股价去衡量公司的好坏。我觉得还有更好的办法去衡量一个 好公司。（2010-05-05）

&#x20; **段永平：**&#x8BF4;来惭愧，这两本书我也没看完过，但翻过，觉得确实是好书。不喜欢 的地方是这书也是用市值来衡量一个公司的价值的。用市值衡量的缺陷是具有时

点性，在某些时点对某些时点不对。如果用未来现金流折现的概念来衡量就好了， 但从来没见过谁这么做，毕竟教授们都不是真做投资的。忽略这点，这书就是我 看过的最好的关于企业的书（我没看过别的）。（2012-07-24）

&#x20;03.网友：（乔布斯自述）这段话的意思可不可以理解成，再好的公司如果没有 优秀的管理人，迟早会衰落的，就像苹果。可是优秀的管理人员迟早会离开公司，<br>

那这个公司是不是就不值得投资了？您是否也有过因为管理人员变更，而抛售之 前买的股票？

**段永平：**&#x82F9;果衰落了吗？苹果其实从没有像现在这么强大过！这段话的意思是， **没有强大的文化，就不会有伟大的公司。乔布斯就是想建立强大的企业文化并 且确实做到了！只有强大的企业文化才能不断吸引到好的人才并留住他们。不 能理解这点的人们大概就只能炒一辈子股票了**。（2014-02-02）

04\. 网友：我有一个博友问您两个问题:

问题 1：《好公司为什么会失败》中列了几条加以论述：1、错误数字 2、遗忘股 东 3、人才代价 4、滥用激励 5、广告崇拜 6、抄捷径 7、错误预测的风险 8、迷 信大型 IT 工程 9、大做表现文章 10、萧条恐惧症不知段总对其中的哪几条认同？ 2、《基业长青》、《从优秀到卓越》（吉姆•柯林斯）与《追求卓越》（汤姆• 彼得斯）相比，段总更倾向于谁的理念？ **段永平：**&#x31;“好公司”的定义是什么？“失败”的定义是什么？没定义怎么讨论？ 如果“好公司”的定义是那些做事“成功率”远高于一般公司的公司的话，那么 “失败”的定义就该是那些高“成功率”外“失败”的那些个案。 **所谓的“好公司”我觉得应该是有原则的公司，不是单纯利润导向的公司；是 那些知道要做对的事情（或者说，知道什么样的事情不该做），然后去追求高 效率把事情做对的公司。 事情做对的过程是个学习的过程，谁都会犯错误，好公司也不例外。**&#x6709;时候这 些错误也是会致命的，如果你把这些叫失败的话。

你说的那本书里论述的那 10 条大部分都不应该是“好公司”会犯的错，倒像是 一般甚至烂公司会犯的错。但错误预测的风险对谁都会存在，有时候也会要命， 但“好公司”犯这种错误的概率比一般公司要低。 知道“概率”的意思吗？真的知道吗？巴菲特买错过很多只股票，每一只错误的 股票都可以被称为“失败”，巴菲特“失败”吗？ 2：他们一个讲的是要做对的事情，一个讲的是如何高效率把事情做对，你更倾 向于谁的理念？ （2011-09-27）

**段永平：** 说一点我特别喜欢苹果的地方：苹果是非常难见到的能够长期 focus 在“做对的事情”的企业。<br>

**多数人在投资时很习惯去看有没有“把事情做对”这点，从而会很容易掉进短 期表现当中。即使是伟大的企业在“做对的事情”的过程当中也是可能会犯错 的，因为“把事情做对”往往需要一个过程。所谓“长期投资”从某种角度上 说，就是要能够相信坚持“做对的事情”的有能力的公司最后会“把事情做 对”。（2013-02-13）**

**05.引用：失去乔布斯后的苹果，库克都做了什么？……**

**段永平：他说：“当我们付出努力，为了让盲人也可以使用我们的设备时，我** **是不会考虑该死的 ROI（投资回报率）的。”苹果在发起环保倡议、保护员工安** **全和其他政策时也是如此。———这就叫利润之上的追求！**(2019-06-27)

网友：我知道一般来讲，好的公司都有“利润之外”的追求。 在<<基业长青>> 里面说"visionary company was guided more by a core ideology—core values and a sense of purpose beyond just making money"。（有远见卓识的公司更 受核心意识形态、核心价值观和目标意识的引导，而不仅仅是赚钱。）

1）有“利润之外“追求的公司一般来说更“长青”，我目前的理解是因为这样 的公司更容易避开诱惑，更专注，更倾向做对的事情，员工更加团结。你怎么看 我的理解？你能简单说说 “利润之外”追求对公司的好处在哪里么？

2）如果我不是一个 CEO，只是公司的一个 manager，对于“利润之外”追求这样 的 idea（想法），能用在我自己的团队/组织里面吗？

**段永平：**&#x31;.有“利润之上”的追求则更容易看到事物的本质，就会更容易坚持做 对的事情或者说更不容易做错的事情，就不大会受到短期的诱惑而偏离大方向。

2.如果你是一个有“利润之上”追求的 manager ，你就会找到很多 ideas，但如 果不是，别人怎么说你都会用功利的角度看的。

补充一点：有“利润之上”追求并不是好企业的充分条件，但有“利润之上”追 求的企业成为好企业的概率要比一般企业大很多，时间越长差别越大。

（2013-03-03） &#x20;

&#x20;**不明真相的群众：**&#x4EC0;么是利润之上的追求？比如，超越股东利益的社会价值、适 用不特定主体的方法论、超越实际功效的审美趣味。 对于大多数企业来说，利润之上的追求是奢侈的，不切实际的。但对于顶级公司  来说，利润之上的追求是必不可少的。

因为： 1，利润之上的追求有一定的虚幻性，对于企业来说，就可以作为方向上 看得见却不容易触及的战略目标，作为激励有持久性。而利润，太实，容易在触 及后让企业进入懈怠的“贤者时间”。

2，利润之上的追求可以增加品牌的美誉度，从而增加用户的锁定能力，和企业的经营寿命。

3，利润之上的追求可以增加员工的认同感，提升团队的人员质量和工作质量。

&#x20;有些商业模式很好的企业，很可能是因为没有利润之上的追求，没能成为顶级企                                                              业。

&#x20;**段永平：利润之上的追求指的是把消费者需求放在公司短期利益前面。多数公司碰到问题时讨论的都是有没有钱赚的问题，而有利润之上追求的公司 碰到问题时可能会先问一句，这是对的事情吗？这是应该赚的钱吗……？其实差别很小，但 20 年后差别很大  (2020-07-10)**

06.网友：我要怎样才能够提高自己把事情做对的能力呢？有什么方法更好的学 习吗，比如您是怎么学习在投资上把事情做对的，研究很多公司吗？

**段永平：**&#x66F4;好的学习方法是啥意思？每个人都应该去找自己合适的学习方法。也 许开个公司并做得很好是学习投资的一个好办法，知道买股票就是买公司但不知 道什么是好公司也是没有用的。**好的商业模式加好的企业文化一般是好公司的特** **征。**（2015-04-17）

&#x20;07.网友：看段总这么明白地谈论价值投资，真有一种豁然开朗的感觉。

第一，价值投资者所投资的公司无所谓伟大的，平庸的。你眼中伟大的公司并非 就是伟大的公司，现在伟大的公司未来未必会继续伟大，还要看公司未来现金流 情况。

第二，价值投资者关注的是公司未来现金流的折现。用四毛钱买入一元钱的公司 股票着眼的是公司低估现状，未来公司是不是继续低估抑或价值回归，投资者并 未给予相当的认知。具有经济城堡和护城河的公司并非一定具有未来现金流，也 并非一定会成为价值投资的获取目标，也要看公司现金流情况。

第三，价值投资者的水平高低体现在对该公司未来现金流折现的理解范围上，换 句话说，体现了对标的公司的认知水平上。

**段永平：**&#x31;. 没有未来现金流的公司不可能是伟大的公司；

2\. 并非具有未来现金流的“护城河”是干什么用的？（2011-01-09）

&#x20;08.网友：段总，一般来说，企业在哪些方面出现问题呢？请列举一些，

**段永平：**&#x4EFB;何方面都会出问题。你查查所有倒闭的公司，看看他们都出的啥问题 就行了。

网友：其实我最想问的问题是选企业的“漏斗”，就是哪些原则是企业不能违背 的。这个问题好像很难说清，简单说说您的看法就行<br>

**段永平：正直和诚信--integrity。这是所有 great 企业的共性，也是出问题的 企业的最大“漏斗”**。 （2010-10-22）

09.网友：感觉投资伟大公司与投资普通公司相比一个巨大的优势是省心，不太 需要另外寻找投资目标，也不太需要时时关注市场给的价格是不是太贵。

**段永平：**&#x662F;的，享受公司成长远好过心随股动。（2017-03-16）

&#x20;10.网友：穷查理宝典中，查理说：一家价格公平的伟大企业好于价格高高在上 的好企业。这句话中伟大企业和好企业分别指什么？有什么区别？能不能这样理 解，一家价格公平的稳定增长型企业好于价格高高在上的快速增长型企业？

**段永平：基业长青里对伟大企业和好企业有定义**。（2010-08-20）

11.网友：我觉得马云和王石对“成为一个什么样的企业”思考的挺多的，而不 仅仅着眼于赚钱。这有点像教育孩子，国内太多的家长总教育孩子如何活得更好， 而不是为什么活和活成一个什么样的人。在这学习一段时间后，越来越发现看企 业越像看人，许多东西都是相同的。

**段永平：其实真正好的能持续经营的企业大多都不是着眼于利润的，利润不过 是水到渠成的结果而已，就是所谓让利润追着自己跑的那种。（2011-01-28）**

网友：利润导向从表面看是没什么错的，好像作为一个家庭的男人，你要拼命给 家里搞钱养活老婆孩子，如果不以利润为导向，男主人拼命把自己所从事的工作 搞到最棒，其实钱的问题会自然解决掉。

&#x20;**段永平：**&#x5982;果没有“取之有道”的约束，利润导向很容易不择手段。国内现在这 个问题实际上非常严重。（2010-06-09）

12\. 网友：如何理解一个好企业（符合价值投资理念）的老板或 CEO 的价值？人 的因素与产品的因素哪个更大？&#x20;

**段永平：**&#x4ECE; 5 年 10 年的角度看，CEO 至关重要。从 10-50 年的角度看董事会很 重要，因为董事会能找出好的 CEO。从更长的角度看企业文化更重要，因为一个 好的企业文化可以维持有一个好的董事会。GE 就是一个好例子。**好的公司之所 以是好的公司，必然会有些好的产品。但所谓好的产品的寿命是非常有限的。 所谓好的生意模式可以让好的产品的寿命大幅度提高**。（2010-04-03）

13\. 网友：这几天看了乔布斯传，终于明白苹果公司为什么伟大了。无论从战略 到细节，乔布斯都 100%全力掌控，战略+执行都到位。

**段永平：**&#x5C0F;说的东西不可全信。对多数人来讲，看这本书只是看了个热闹，很多 人会得出很片面的结论，比如没有乔布斯的苹果会不行等等。有趣的是微软得出 的结论和我一样，就是没有乔布斯的苹果更厉害。（2012-01-25）<br>

## 二、伟大公司管理层(CEO)：造钟人

**造钟人与报时人**

01\. 网友：看了吉姆·柯林斯的《基业长青》、《从优秀到卓越》等几本书。对 报时人和造钟人的区分还是懵懵懂懂，主要是企业文化的建设是吗？请教段总： 报时人和造钟人最显著的区别是什么？主要是从企业的哪些地方可以区分出 来？谢谢。

**段永平：**&#x518D;看一遍，不然我说你也不明白。（2011-08-24） 02. 【引用】巴菲特 31 年股东信精华（2012-02-17）

如果一个生意要依靠一位超级明星才能产生好成效，那这个生意本身不会被认为 是好生意。一家在你们地区首席脑外科医生领导下的医疗合伙公司，可能有着令 人高兴的可观的、不断增长的利润，但这对于它的将来并不意味着任何东西。随 着外科医生的离去，合伙公司的“壁垒”也一起消失。然而，你却可以肯定梅奥 诊所（Mayo Clinic）（美国最好的医院之一）的成功将会一直持续下去，虽然 你根本不知道它的 CEO 叫什么名字。（2007）

03\. 网友：这几天在读《基业长青》，（惭愧，现在才读），读到一个造钟人报 时人的概念，商鞅与秦孝公就像两个造钟人，将秦国打造成了一个自己会报时的 钟。

**段永平：**《基业长青》是本好书啊，不过这本书让我失去了早期投资苹果的机会， 因为看完这本书后我就把乔布斯划到报时人里去了（现在绝大多数人还这么认 为）。还好后来突然悟到其实他还是一个很好的造钟人。（2012-03-25）

04\. 网友：请问段总，看好苹果的公司文化，还是看好其 CEO？我个人感觉你看 好的是前者。

**段永平：**&#x6211;曾经一直认为 Jobs 是个报时人，最近突然觉得只有 Jobs 的苹果是不 可能成为今天这个样子的。今天的苹果，Jobs 的作用已经不是那么大了。就算 Jobs 不打算再回来，今天的苹果也会靠惯性向前的。还有就是，当年的苹果董 事会为什么会在赶走 Jobs 后又能请他回来呢？这可不是容易做到的事。

（2011-01-22）

网友：我很认同你的观点，苹果董事会能在赶走 Jobs 后请回他，正体现了以企 业利益为上的思维模式，从这点上，董事会是称职的，理性的！

另再请教一个问题：如何判断一个企业有好的人才计划，尤其是培养、选拔优秀 后备人才的计划，企业内部有简单、实效的工作机制？毕竟我们一般只能看到企 业的工作计划，战略计划等？<br>

如果，我们投资者真能掌握到企业有一群“对”的人，那么我们投资成功率将会 大很多！&#x20;

**段永平：**&#x6211;自己好像没有一个简单的判断办法，至少自己没总结过。**总觉得很难** **判断领导层是否“对”，但相对容易判断他们是否“不对”。不对的就不碰， 错误的概率就大幅度降低了**。（2011-01-22）

05\. 网友：段总一定是用了苹果的产品才对苹果的未来这么有信心吧。还有没有 去苹果公司做实地调研？我想这么大的市值的公司成大空间相对总是不如当年 小市值的网易的。原来大家一致担心的乔布斯的健康算不算是一个很大的威胁？ 苹果的产品离开乔布斯一定做不到这么好吧？在一个公司风头最劲的时候买他 的股票，我总觉得有点趋势投资的感觉，呵呵。当然段总用平常心看苹果价钱还 很便宜那一定是笔好买卖了，呵呵。段总对苹果的理解程度我是一定望尘莫及的， 见笑了。

**段永平：**&#x82F9;果的上升空间当然远不如当年的网易，可当年的网易是可遇不可求的， 而且现在就算碰上了，对我的帮助也不大。

苹果这样的公司难道还要去公司看？那能看到什么？

我只是 somehow 突然想起来要认真看看苹果，以前老觉得 Jobs 个人太厉害了， 是个报时人，后来突然想明白其实现在他已经没有那么重要了，至少在未来几年 里。毕竟我们是同行，虽然差距还比较大，但有些东西容易搞懂一些。

（2011-02-15）

06\. 网友：是什么事情让您突然悟到乔布斯还是一个很好的造钟人的呀？

**段永平：**&#x56E0;为我看见那个钟了。（2012-03-29）

&#x20;网友：库克：乔布斯最大的贡献、留给世界最好的礼物在于苹果及其文化。他非 常关注这些。他花费了许多时间设计我们的新园区，这将是留给下一代的礼物。 苹果大学是另一个例子。他希望通过苹果大学去培养苹果的下一代领导者，并确                      保过往的教训不会被忘记。

**段永平：**&#x52A0;一个：发现并任命库克为 CEO。（2015-03-20）

**段永平：**&#x5E93;克是个比乔布斯更好的 CEO。库克更理性，同时骨子里对乔布斯的追 求非常理解。前段时间我见到一个投资界的老前辈时，我说我认为库克其实是个 更好的 CEO 时，他老人家说其实我也这么认为。基业长青里说乔布斯是个“报时 人”，其实乔布斯同时还是个非常好的“造钟人”，库克其实就是乔布斯最伟大 的发明（发现）之一。（2018-08-07）

07\. 网友：受博友委托，他向你提问以下的问题，你可有时间解惑一下吗？<br>

1、这段时间我看了科林斯的《基业长青》、《从优秀到卓越》、《再造卓越》， 又看了韦尔奇的相关书籍，感觉科林斯与韦尔奇很多观点相通共融，我想段总当 年拜访 SONY（索尼）后，认为 SONY 所存在的问题是不是：企业内部的官僚化作 风？

2、韦尔奇自身受德鲁克的影响比较大，是不是可以说德鲁克是管理学的理论大 师，而韦尔奇是最优秀的实践者？

3、段总谈苹果与乔布斯比较多一些，而对 GE（通用电气）与韦尔奇谈得比较少 一些，我个人认为 GE 的韦尔奇在造钟方面要远强于苹果的乔布斯，如果用足球 来类比的话，韦尔奇就是巴西的贝利，而乔布斯就是阿根廷的马拉多纳。肥沃土 壤所生长出的优良的果实和概率远大于土壤稍差的，GE 就是巴西，苹果就是阿 根廷。

4、不知段总有空的话能否写篇博文谈谈 GE 和韦尔奇，谢谢！ **段永平：**&#x31;. 我从来没去过 SONY;

2\. 我知道德鲁克，但从来没看过他的东西;

3\. 我今年一月才突然悟出来其实乔布斯也是一个很好的造钟人。他的问题是他 同时还是一个极为罕见的报时人，我和科林斯都上当了，不然几年前我就该买苹 果的;

4\. 没空！你可以去看韦尔奇的东西。

补充一点，从书名上看，德鲁克的东西主要是教大家如何把事情做对的。如果我 现在 20 来岁，我觉得我会好好看看他的东西。（2011-11-04）

08.网友：您觉得苹果公司沦为普通公司的可能性有多大？如果会沦为普通公司， 第一个判断的标致是什么？

**段永平：**&#x8FD9;届 CEO 任内似乎不太可能。苹果董事会似乎不错，所以以后应该也会 不错。如果苹果产品对多数现有用户不再有黏性的时候，苹果就是普通公司了， 那时的苹果可能就像 sony，松下等等。（2012-03-29）

09\. 网友 z：马云算不算？他说：没有理想就没有明天，没有现实活不过现在。 也是二元的。

**段永平：**&#x597D;的企业和企业家都是理想主义和现实主义的结合。没有理想主义做不 大，不理解现实走不远。

**段永平：**&#x7A81;然想到一个例子，也许可以解释。投资其实就是个最好的例子。<br>

我们也许永远都无法找到一个既完美又便宜的公司（股票），我们总是对自己的 目标持有两种相反的观点（positive 和 negative），但这并不应该妨碍我们“该

出手时就出手” ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)。（2011-03-08）

网友：又一回检验了您的一流智力。您推荐的《基业常青》的确值得反复研读， 能提升对好的企业的理解。希望自己能先知道如何识别好企业，然后再学会毛估 估。虽然很难，但要坚持。

**段永平：**&#x6211;觉得《Good to Great》和《Built to Last》确实是经营企业者该读 的书，我第一次看这两本书的时候有很兴奋的感觉，很多年的体会和心得都被人 写出来了。（2010-03-16）

## 三、长长的坡，厚厚的雪---滚雪球

虽然打雪仗也需要厚厚的雪，但大概没办法形成大大的雪球。 什么公司是在长长的坡上滚着厚厚的雪呢？我举几个我看着像的，博友们也可以 举例子。

苹果是吧？苹果是在一个长长的坡上，似乎雪也是厚厚的。三星 OPPO 和 vivo 以及华为这类公司？似乎也都在长长的坡上，但雪没那么厚。不过这些公司还是 要感谢苹果的，因为苹果，所以长长的坡上有时候雪也不薄。当然，那些追求“性 价比”的公司恐怕是既没有长长的坡也更没有厚厚的雪的。 茅台当然是吧？！长长的坡，厚厚的雪，虽然偶尔会损失一点点雪。

网易也应该算吧？游戏做成这个样子？！有谁不玩游戏呢？大家玩不同游戏而 已。

腾讯应该也算吧？ 有疑问吗？

Google 应该也算吧？绝对是长长的坡厚厚的雪。 amazon？当然是长长的坡，但上面的雪不太厚啊，不然人家怎么能坚持亏 20 年？ 京东不会比 amazon 好的。

阿胶片仔黄之类有点像？ 阿里应该也算吧？虽然我很钦佩马云，也觉得他们怎么看都有些在长长的坡上， 但有些业务已经超出我这种早已退出江湖的人的理解范围了。 Facebook？微博？yy？陌陌？我看这些公司时偶尔会觉得自己已经不再年轻了

（就是因为自己不用，所以看不懂的意思） 短短的坡，雪也是少少的例子其实也很多的，那时啥反应都是没用的哈。有意思

的是这种公司有兴趣的人也不少，因为大家觉得坡比较陡吗？滚起来快？没雪的 时候滚的是啥呢？

……大家自己举例吧。（2017-03-17）

#### 问答:

01.网友：海康威视、大华股份这种也算，坡很长（城市化就是陌生人化，就会 出现各种安全问题，而且产品会和手机一样不断升级，需求永远存在，而且强劲）、 雪很厚（随着视频监控行业越来越注重软件，粘性越来越大，外在进入者越来越 难），也就是说，这两大巨头会在一家需求强劲而持续的市场中拥有越来越大的 垄断力。作为一个在一家号称最国际化央企工作过超十年的人，我对海康威视的 长跑能力有点担心……

**段永平：这里长长的坡其实不光指的是行业，而是包括企业本身能否长跑，所 以企业文化很重要。**（2017-03-18）

02.网友：那些追求“性价比”的公司恐怕是既没有长长的坡也更没有厚厚的雪 的。段大哥，追求“性价比”的公司为什么会没有好的结果呢？我以前买过“性 价比高”的手机，发现手机质量不够好，经常出一些小毛病。（2017-03-18）

**段永平：**&#x8BF4;追求“性价比”的公司大多是在为自己的低价找借口。长寿公司大概 是不太强调“性价比”这个概念的，老百姓心里有杆秤。好货不便宜啊。

（2017-03-25）

03.网友：关于阿胶的疑问：

1.价格越来越高了，消费人群应该会相对少点吧。还是吃阿胶的人本来就不会在 乎这样的价格？

2\. 公司近些年推出了不少新产品，加价，库存也有积压，公司的策略是否有些 短视？

3\. 对于养生而言，坚持锻炼、注意休息、良好的生活习惯等可以代替阿胶吧。

4\. 如果要买入，多大的价位合适啊。 请段总帮忙释疑。

**段永平：**&#x6211;没仔细看过这家公司，只是看到这么多年他们都能一直提价且产品并 没有不好卖。（2017-03-20）

**段永平：**&#x963F;胶我搞不懂，不知道人们为什么用。（2018-05） 网友：大道您好！您在长长的坡，厚厚的雪中提到片仔癀之类有点像？现在以 5

年或者以 10 年来看，片仔癀是否有长长的坡，厚厚的雪？&#x20;

**段永平：**&#x4E0D;了解片仔癀，只是听人说过其药用效果。(2019-10-19)

04.网友：段大哥的 Google 我实在是看不懂，我菜鸟吧。YAHOO 百度、，Google 都难以估值。我找遍了《评估原理》也找不到一种标尺.<br>

我谈谈我的看法（错了别骂）:搜琐引擎是核心之一，网民的偏好、CEO 的水平 决定了它们的价值的大部。这 3 点变化太快了。

谁敢说自己的引擎领先 100 年，网民要的是便利快捷，其他无所谓（看看 360 的例子）。CEO 的年龄会不断的和年轻人有代沟。给网站估值太难了，能估出来 的可能还没出生。个人观点，乱说的（别骂）。

**段永平：**&#x4F60;讲的很有道理。我喜欢阿里巴巴和 Google 主要是觉得他们的文化很 好。好的文化在变化快的世界里往往会有优势。另外，我 Google 很少，试试水。

（2010-05-16）

05.网友：您觉得 GE（通用电气）的投资和苹果的投资有什么不同吗？我觉得 GE 的投资更像是一次性的利润，而苹果看上去是那种长坡厚雪型的公司，是不需要 卖的。我曾经在 A 股买过烟蒂，但是发现需要时常关注一些短期的东西，虽然也 赚钱了，但投资过程并不省心。现在学乖了，知道生意模式最重要，所以只买好 公司了。

**段永平：**&#x5982;果放到今天来看，我大概不会买 GE，而是应该那个时候就买苹果。 因为回过头来想，我对 GE 的理解并不是很透，但苹果却是我能真的理解的公司。 不过，当时我认为 GE 的文化很好，公司应该可以转危为安的。（2017-05-22）

06.网友：大道方便说一下腾讯么，特别是护城河、企业文化等，每次看你分析 公司总能直达本质、一针见血。

网友 D：估摸着大道要出手腾讯了。

**段永平：**&#x957F;长的坡，厚厚的雪！最近确实已经投了一些了，但比例还很小。用苹 果换似乎有点不舍得，我似乎更懂苹果些。要再仔细想想。（2018-10-15）

网友：段总好，假如有一天 FB（脸书）进入中国后会对腾讯有很大的影响吗， 特别是现在的年轻人基于好奇和好玩的心理。

**段永平：**&#x90A3;时候现在的年轻人可能都已经很老了。（2018-10-17）

网友：我的问题是：从现在到后面第 10 年或者第 15 年的时间，腾讯这家公司， 您认为能到的市值是多少？

&#x20;**段永平：**&#x5E02;值是别人愿意出多少钱买这家公司的意思。我不知道别人愿意出多少 钱买这家公司，所以我不知道腾讯能到多少市值。不过，我认为腾讯这家公司大

概率 10-15 年内一年可以赚 2000-3000 亿人民币，愿意出多少钱买这家公司完全 取决于你自己的机会成本。（2019-03-14）

网友：大道您好，关于腾讯您在 2018 年 10 月份说过“最近确实已经投了一些了， 但比例还很小。用苹果换似乎有点不舍得，我似乎更懂苹果些。要再仔细想想。”， 能从您自己的机会成本讲讲卖了些苹果买腾讯的原因么。您也讲过不要为了调仓 而调仓，两家都是好公司， 腾讯的 PE（市盈率）要比苹果高不少. 另外您是在<br>

中国香港买的腾讯么，在美国用美元买腾讯 ADR（美国存托凭证）和在中国香港 买腾讯股票有啥区别么？我人在美国

**段永平：**&#x6211;们没有卖苹果买腾讯，所以 ADR 买的不多。用人民币买了不少港股。 ADR 每年要交管理费，不如在中国香港买。（2019-03-15）&#x20;

网友：向你请教一下，你买腾讯的逻辑。

**段永平：**&#x6211;觉得 10 年后回过头来看，腾讯赚的钱（我买的份额占的比例）应该 比我存银行的利息要多。（2019-03-16）

网友：另外一个问题关于企业文化，前些年有些网友跟您提问你敢买入苹果是不 是因为您是行业内的人，知道很多行业潜规则，直接和 cook 打过交道，您的回 答是您当年做功课的时候也会去搜集 cook 网上的视频来看，敢重仓投资苹果不 需要直接认识 cook。想问一下，您去年建仓腾讯和 fb（脸书）肯定也是基于多 年的观察，但这俩公司所在行业应该不属于您从事过的行业，您投资他们前有做 过些什么功课吗？您会利用身边的资源去找这些企业高管出来聊天吗？您是根 据什么来判断这些企业的企业文化是否符合自己的投资价值观呢？

**段永平**：我投腾讯和 FB 没找过任何内部高管聊，虽然我其实也认识腾讯的高管

（球友）。我投资的标准很简单：商业模式，企业文化，合理价钱。所以当商业 模式和企业文化不错的公司价钱也不错时，我就会有兴趣。（2019-03-16）

网友：您之前说买腾讯是因为您看到未来十年他可能会创造 2000-3000 亿的年利 润，请问这个数字是怎么样的出来的呢？看了您以前的文章您几乎都能提前五六 年预测苹果和茅台的收入和利润而且他们俩还真做到了！请问您是根据什么来做 出这些神预测？

**段永平：**&#x5176;实都是瞎猜的。生意模式好，企业文化好，基本上你就可以简单地希 望他们会正常增长，所以给个五年十年的，有增长不奇怪啊。关键是要看懂生意 和商业模式。（2019-03-17）

网友：大道您好，请问您最认可腾讯这家企业哪些方面，什么本质层面竞争优势， 能让您下决心持有 10 年以上？&#x20;

&#x20;**段永平：**&#x9A6C;化腾人不错，而且年轻，微信及微信支付的影响非常大且深远。我们 确实买了一点腾讯，但比例很小。(2019-10-15)

07.网友：您怎么看 FB（脸书），高管的不断离职会不会对公司产生致命打击？ 现价可以买入做长期投资吗？

&#x20;[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6211;不推荐人买股票，我觉得如果你需要问人该不该买的时候那就还没到 你能买的时候。我个人觉得 FB 也是家不错的公司，生意模式和文化都不错，扎 克伯格年轻有为，还能好好干很多年。公司有人离职很正常。（2019-03-20）<br>

网友：您投资 FB，应该是大概率觉得它未来 5-10 年净利润达到 500 亿美金左右， 请问能分享下这其中的逻辑吗？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x5927;概就是觉得生意模式很好，企业文化也很好，扎克伯克还那么年轻， 所以这个公司还会有不错的成长空间。（2019-[03-23](https://xueqiu.com/1247347556/123418921)）

【**备注：段永平：**&#x46;acebook(FB)准备卖掉了，有些不舒服的东西。(2020-07-31)

今天清空了 FB，算是赚了不少。由于自己不用 FB 的任何产品，所以对 FB 的理 解一直没达到很透彻的地步。最近一段时间，抖音就把他吓成这个样子，说明他 可能还是有弱点的。我的卖出也符合“对自己不够了解的公司，涨了也想卖跌了 也想卖”的情况。(2020-08-04) 】

08.网友：大道您好！塑化剂时全部买入了茅台但继续下跌，无法再买内心不平 静，知道您投资茅台后仿佛看到曙光，非常高兴。后来又跟您学习了社交属性的 公司，受益匪浅。但是亚马逊、阿里巴巴的合理价格一直非常困惑，请问有办法 大概估算吗？按未来电商占整个零售业的可能的比例考虑合理吗？另外，向您请 教：如果投资的伟大企业中有一家非常便宜了，另外几家价格合理，卖出价格合 理的买入特别便宜的算是做对的事情吗？谢谢！

**段永平：**&#x6211;知道 amazon 是家伟大的公司，但也不知道应该值多少钱，不过未来 他们一年赚 500 亿或更多似乎不是件太困难的事情。换来换去这种事情难度比较 高，少作为佳。（2019-06-01）

&#x20;网友：以前您谈起亚马逊时，曾说：“amazon？当然是长长的坡，但上面的雪不 太厚啊，不然人家怎么能坚持亏 20 年？”最近您又评论说“我知道  amazon 是

家伟大的公司，但也不知道应该值多少钱，不过未来他们一年赚 500 亿或更多似 乎不是件太困难的事情。”请问您比从前更看好亚马逊了吗？

**段永平**：是的，我对 amazon 的认识有些改变，确实觉得这个公司企业文化和生 意模式都很厉害。以前对 amazon 的生意模式不太有概念。(2019-06-11)

网友：大道，请问您怎么看 amazon？估值 900b，去年的运营现金流大致有 30b， 看起来也不贵？但是折旧 15b（CapEx 也大致 15b），stock comp 有 5b，导致利 润只有 10b，如果看未来现金流，看 30b 还是 10b 比较合理？谢谢。

**段永平：**&#x770B;未来能赚多少钱，看不懂就不碰了。我现在对 amazon 的看法：这是 一家企业文化很强大，生意模式也日渐强大的公司，未来一年赚 500 亿以上是大 概率事件。(2019-09-21)

## 第 2 节：商业模式

**生意模式越好，投资的确定性越高或者叫风险越低**

**---段永平**

**（价值）投资最重要的是什么？**

**段永平：right business，right people，right price.（对的生意，对的人， 对的价钱。）这是老巴说的。对的生意说的就是生意模式，对的人指的就是企 业文化。Price 没有那么重要，business 和 people 最重要。Culture 跟 founder**

**（创始人）有很大关系。**&#x62;usiness model，就是赚钱的方式，这个是你必须自己 去悟的，我没法儿告诉你。就像如果你不打高尔夫，我是无法告诉你它的乐趣的。

（2018-9-30）

&#x20; **段永平：**&#x8001;巴童鞋说生意模式最重要。我自己大概对这句话想了好几年了，还在 继续想，但确实越来越感觉到老巴这个说法有道理。和老巴吃顿饭没白吃，这句 话就已经值个 100 顿饭了吧（其实远远不止哈）？

什么是生意模式？我也说不清楚，也许大学里的教授能给个文点的定义吧。但是， 我觉得我大致知道那到底是什么意思。

如果你还不明白什么叫生意模式的话，那就看看老巴的那几篇在几个大学的演 讲。

还没懂？那看看喜诗糖果，看看可口可乐、看看比亚迪、看看苹果、看看航空公 司、看看那些做太阳能晶片的“光伏企业”……

还没懂？那重头来，接着再看。10-20 年之内看不懂都可以用这个办法，就是“重 头来，接着再看”。

20 年以后还是看不懂怎么办？那 20 年以后再说了。（2012-06-24）

**问答：**

## 一、商业模式最重要

01.网友：首先看生意模式！最亮的指路明灯。<br>

**段永平：看到这句话说明你有悟性哈。这句话可能值一辈子的午餐。**

（2012-04-06）

02\. 网友：段大哥很多次谈到生意模式的重要性。那么生意模式和投资的确定性 是怎么样一个关系呢？大哥怎么理解价值投资中有风险，风险投资中有价值？价 值投资和风险投资都要考量生意模式，那么价值投资和风险投资的本质区别是什 么？投资的确定性是什么？

**段永平：**&#x31;. **生意模式越好，投资的确定性越高或者叫风险越低；** 2. 见第一条；

3\. 见第一条；

4\. 见第一条。（2013-04-03）

03.网友：你说过巴菲特告诉你看公司首先要看生意模式，能否说一下你对"生意 模式"的定义（好像你从来没详细说过），或者说重点关注生意模式的哪几方面。 谢谢！

&#x20; **段永平：**&#x600E;么会有这么多人问什么叫“生意模式”的？生意模式就是生意的模 式，就是产生净现金流的模式。**好的生意模式就是能长期产生很多净现金流的模                                      式**。（2012-04-08）

网友 B：网友都是学院派，凡事都要定义一下。

**段永平：** 凡事要知道定义没什么错，老巴也没告诉我什么叫生意模式，我也确 实一下找不到特别好的词来说明，想来想去，生意模式最好的定义就是---生意 模式。（2012-04-08）

网友 J：顺便说一下，您说的"净现金流"换作＂自由现金流"可能对大多数人来 说更好理解一些。自由现金流=经营现金流-资本支出。

**段永平：**&#x5176;实不明白的人你换哪个说法都是一样的。（2012-04-09） 网友：商业模式好的企业为什么会有好的投资回报，因为可持续发展吗？

**段永平：**&#x4F60;需要先理解**商业模式的定义。简单讲商业模式好的意思就是企业能 够持续赚很多钱**。（2019-05-05）

02\. 网友：一开始做投资，比较注重 right price，做投资的时间越长，越能体 会到 right people 的重要性，right price 经常是可以等到的，right people 却是可遇不可求的。如果开一家餐厅，我是不会和不诚信、把收银台的钱放自己 口袋的人合伙做生意的。买了股票就是公司的股东，也是和别人合伙做生意，选 择管理层也要像选择合伙人一样。（2013-04-21）<br>

**段永平：right business 最重要，因为 right people 在 right business 里能 充分体现出来。right price 则没那么重要，因为时间可以降低其重要性。**

网友 S：right business 是指好的商业模式，不能等同于企业未来的获利能力。 好的商业模式有可能长期获利平平，right business 既非企业获利能力的必要 条件，也不是充分条件。

**段永平：好的商业模式不应该长期获利平平，但短期有可能。我认为“好的商 业模式”的定义就包含未来获利能力强，不然就不是“好的商业模式”（不然 那是什么意思？）。未来指的是企业的整个生命周期。**

【引用】巴菲特 31 年股东信精华---1（2012-02-17）

**除非是经历销售量的巨幅成长，否则一家好的企业定义上应该是指那些可以产 生大量现金的公司，（1984）**

![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif)

04.网友：怎么理解好的管理层在好的生意里面也体现出来？从哪些好生意角度 可以体现出来好的管理层，一直困惑其中。

**段永平：**&#x518D;好的车手也很难开好一辆烂车。（2013-04-22）

网友 F：反过来可不可以这样理解：好的管理层应该在有必要时有能力能改善、 改变甚至是创立新的好的商业模式。格力董明珠当年上任不久就对格力原来不好 的商业模式进行了脱胎换骨式的改变，她觉得原来的那辆烂车没法开下去了。

**段永平：**&#x90A3;个有点可遇不可求，投资一般应该在看到好的商业模式后再出手比较 安全。（2013-04-23）

05.网友：＂好的生意模式＂的建立过程，是否也有点可遇不可求？因为有太多 好产品由于没有好经营模式而消失了。

**段永平：**&#x7279;别好的生意模式非常少见。（2013-04-23）

06.网友：段大哥，因为看财报的知识不够，所以管理者的品行我会更在意，我 曾看到一句话说"投资，如果你不识货，那就要识人。"我想问您，给人定性除了 听其言观其行之外，还有什么是必须注意的呢？

**段永平：**&#x5982;果你连货都不识，还需要识人吗？老巴讲得很清楚了！（2013-11-15）

网友：巴菲特说，选公司一定要看它管理层。巴菲特说，选公司一定要看它的本 质，因为它迟早会轮到庸才管理。是不是有点矛盾？

**段永平：**&#x4ED6;后面讲的是商业模式。前面讲的是管理水平。巴菲特的意思是，如果 生意模式好的话，庸才都不怕。（2010-04-01）<br>

07 .网友：照大道的说法，应该是如果商业模式一般，企业会活得不易，吃力不 讨好，那企业文化一定要好，否则很难持久，出问题容易做好难，久之必死无疑。 商业模式好，企业活的相对轻松点，但是如果企业文化不好或出了问题，容易把 好生意做坏了。作为企业家，有时候商业模式不容易选择，但是企业文化可以自 己建造；而作为投资者，当然要尽量选择鱼与熊掌兼得的了。

&#x20;**段永平：**&#x4E5F;许可以给个未必合适的比喻，商业模式像马，管理层加企业文化像骑 师，经营结果就是比赛结果。不过企业经营不像赛马那么短时间而已。

（2011-12-31）

【引用】巴菲特：我投资生涯前 25 年所犯的错误 2018-01-20

我可以给大家举出更多我自己买便宜货的愚蠢行为，但我相信你早已明白：以一 般的价格买下一家非同一般的好公司要比用非同一般的好价格买下一家一般的 公司要好得多。查理老早就明白这个道理，我的反应则比较慢，不过现在当我们 投资公司或股票时，我们不但会坚持寻找一流的公司，同时这些公司还要有一流 的管理层。

从这里我们又学到了一课，好的马还要搭配好骑师才能有好成绩，像伯克希尔纺 织与 Hochschild ，Kohn（孔恩百货公司）也都有德才兼具的人在管理，很不幸 的他们所面临的是流沙般的困境，若能将这些人摆在体质更好的公司相信他们应 该会有更好的成绩。

我曾说过好几次，当一个绩效卓著的经理人遇到一家恶名昭彰的企业，通常会是 后者占上风，而管理层却已名声尽毁。我多希望我没有那么费尽心机地制造坏的 典型，我以前的行为就像是 Mae West（梅·韦斯特）曾说的：“曾经我是个白 雪公主，不过如今我已不再清白。”

网友：是否可以请教段总一个问题，巴老说马比骑师重要，但我看你的选择里， 对骑师似乎非常看重，对于阿里，对于 GE、对于万科无一不体现你对管理层的 要求，我理解你是真正做过大企业的，那么您认为管理层的素质和公司行业的本 身哪一个更重要一些呢，或者怎么来平衡为好呢？请教了。

&#x20;**段永平：巴菲特说过生意模式最重要，但也要合适的人才能管好。当我强调人 时，表示生意模式已经看过了，不是表示生意模式不重要。我不知道那个更重 要，但知道哪个不行时哪个就重要。（2010-05-12）**

08.网友：有一个关于 Good business（好的生意）的问题想请教，比如房地产 行业，房地产行业的企业普遍负债率高，不是很让人喜欢，不算是好的生意模式， 可是房地产行业应该还是一个有差异化的行业，比如段总买过的万科，应该算是 一个房地产行业的好企业，从是否有好的生意模式的角度来看，似乎就把万科这 样的企业排除掉了，万科这样一个处在房地产行业的企业能不能拥有一个好的生 意模式，怎样来判断一个企业是否有好的生意模式？对于判断是否是好的生意模 式有没有充要条件？<br>

**段永平：**&#x8D1F;债率高并不一定就是商业模式不好吧？银行的负债率就很高啊，但有 的银行就不错。房地产行业这个说法太泛了，就像说电子消费品这个行业生意模 式好不好一样，没办法得出结论的。电子消费品行业竞争非常激烈，但苹果就做 出了一个非常好的商业模式，而其他的企业就非常不容易。投资很难找到充要条 件的，不然就有公式可用了？**好的商业模式，好的企业文化是我喜欢的投资目标，** **如果再有好的价钱就完美了。**&#x5E02;场有时候可以非常疯狂（很贵或很便宜），有机 会（很便宜）时，对商业模式不是那么好的公司的投资在一定时期内是有可能有 不错的回报的。但是，**长期而言（10 年 20 年或以上）坚持只投好的商业模式， 好的企业文化的公司大概率上是会有比较好的回报的，而且这种投资方法让人 很愉快，不需要整天瞎操心。简言之，投资人每次做投资决定时如果想的是 10**

**年 20 年的事情，最后的结果很难不好，不然就难说了。要找到自己能想清楚 10**

**年 20 年的公司是非常不容易的，一生有那么 10 个 8 个机会就非常非常好了。**

（2015-04-11）

09.网友：请问大道"看懂生意模式"是不是可以这样理解：用自己的一套方式把 它解化，理解（抓住）其本质，明白其核心竞争力（差异性），然后看懂其十年

（更远）的趋势或变化。也就能看懂未来现金流了？

**段永平：**&#x5DEE;不多吧。没想到一个简单描述的方式。（2012-06-26）

10\. 网友：是不是企业文化是相对长久的，生意模式会随着社会技术的变化而变 化，要站在未来，发现培养建立生意模式。

**段永平：**&#x597D;的生意模式就是不太容易被变化影响的生意模式。（2013-04-17） 11. 15 周年（博文时间：2010-09-18）

**段永平：**&#x4ECA;天是我们公司成立 15 周年。当年选这个日子好像和纪念 9.18 还有点 关系，毕竟日本人的电器厉害啊。现在平常心，知道做企业最大的对手是自己。

网友：恭喜恭喜！对 bbk（步步高）无限崇敬，想不做百年老店都难。还是期待 bbk 在某个年龄的时候搞个 ipo，让俺们有机会多多少少收藏一点，升华俺们心 中的 bbk 情结。

**段永平：**&#x4E89;取做 103 年。不过，我们这种公司的生意模式还不好，不是很好的投 资目标。

网友 Y：为什么是 103 年呢？不明白.还有想问问什么样的生意模式是比较好的 投资目标，段总能谈谈吗？

**段永平：**&#x5475;呵，因为有人 102 年。**所谓好的生意模式大概就是有很宽的护城河的 那种**。我们的生意竞争太激烈，但也许有一天我们也找到一个类似像苹果或谷歌 那种生意模式的话，我们会有点厉害的。（2010-09-19）<br>

网友：您的 BBK（步步高）取名是否受了 BRK（伯克希尔·哈撒韦公司）的启发？ 其实您的 BBK 就是一个最好的有护城河的公司，可惜您没上市的计划，真希望有 机会买您的公司，&#x20;

**段永平：**&#x6B65;步高的拼音是 BBG，读起来像 BB 机。我们起名字的时候还不知道巴 菲特是谁。我们的生意模式不好，不是好的投资标的。（2012-04-06）

网友：看到您对自己公司的评论“不是好的商业模式，不是好的标的”。我还是 很触动。步步高从 1994 年至今，快 20 年了。一直很健康，所在行业基本是第一， 盈利也很好，消费者的美誉度也很高，您都认为不够好，我在想国内的企业只怕 绝大多数只怕更差。包括格力，美的，安踏，联想等等应该也不是好的商业模式， 不是好的投资标的吧。另外，一个好的商业模式，应该一定是效率最高的模式。 希望能得到您的解答（2012-04-10）

**段永平：**&#x597D;坏是相对而言的。我们的生意模式和苹果比确实不是好的生意模式。 但是，我们的企业文化还不错，所以生存能力应该还比较强。顺便说下，步步高 是 1995 年 9 月中成立的，还有 3 年到 20 年。（2012-04-06）

**段永平：**&#x6211;们公司的商业模式过去确实没那么好，直到做了智能手机。

（2019-05-05）

网友：听你说过“OPPO，vivo 以前生意模式不好，现在挺好”，我想问你的观 点是什么？

**段永平**：现在是互联网入口，是个平台。（2019-08-01)

12\. 博文：《巴菲特自述:我的城堡和我投资的 5+12+8+2 法则》（2010-05-28） 我怎么选股: 重心是“什么”上面，而不是“何时”

可口可乐公司于 1919 年上市，那时的价格是 40 美元左右。一年后，股价降了

50%，只有 19 美元。看起来那是一场灾难。瓶装问题，糖料涨价，你总能发现这 样那样的原因让你觉得那不是一个合适的买入时机。一些年之后，又发生了大萧 条，第二次世界大战，核武器竞赛等。总是有原因(让你不买)。如果你在一开始 40 块钱买了一股，然后你把派发的红利进行再投资(买入可口可乐的股票)，一

直到现在，那股可乐股票的价值是 500 万。**这个事实压倒了一切**。**如果你看对了** **生意模式，你就会赚很多钱**。

## 二、差异化是好商业模式的前提

01.网友：据说方丈很睿智，请教一下:手机和电脑都是竞争很激烈的产品，为啥 苹果靠的是手机赚很多钱而不是其他电子产品？空调和电视机同样也是很竞争 激烈的领域，为啥格力靠空调赚了那么多钱，却没有企业靠卖电视赚很多钱？美<br>

的可以干掉老板电器却干不掉苏泊尔？这些都是竞争很激烈。为啥有的可以胜出 有的不行？难道生意特性不一样还是人不一样？

&#x20;不明真相的群众:这问题太多了，回答完这些问题都能出一本书了。请大家来回 答吧。@大道无形我有型 对这里面的好几个行业都比较熟？

**段永平：**&#x7B80;单讲，没有差异化的产品是很难长期赚到大钱的。苹果之所以赚到大 钱，是因为苹果是卖 iphone 的，其他同理哈。**简单讲一下差异化：就是用户需 要但其他竞争对手满足不了的某些东西**。（2018-11-05）

02\. 网友：在芒格的穷查理宝典书“普世的智慧”里讲到一个商业模型：就是一 些竞争激烈的行业，比如麦片，经常做一些促销打折活动，但是大家都活得很好， 而有一些行业最后都只剩下几个寡头，但是谁都不赚钱，芒格说品牌是麦片行业 大家都活得不错的主要因素。但是我总体还是没有想通，为什么在竞争十分激烈 的行业中会存在这两种截然不同的现象。这对于我理解商业模式感觉还是挺重要 的，请段大哥指点。

**段永平：**&#x6211;觉得决定因素是差异化。比如航空公司，由于产品几乎没办法差异化， 最后只能靠价钱。你可以查查从北京到广州的各航空公司的票价，我猜一定几乎 是一样的。而麦片毕竟是吃的东西，不同牌子的东西口味不一样，买的人不会因 为 5%的折扣就换口味。

Iphone 也是类似的情况，习惯用 iphone 的人是不大可能因为别的手机便宜一点 而换的。以前人们常换手机的原因是因为各手机之间的差异化其实非常小，所以 新的功能和外观会吸引人们去换。iphone 有可能会是实际上最便宜的手机，你 只要看看你抽屉里那些已经不用了的手机就明白了。

网络游戏其实也是一个有相当差异化的产品，虽然不玩的人看起来都差不多，但 对在游戏里面的中坚玩家而言，社区和感觉的差异实际上是巨大的，不那么容易 换。**能够持续有用户喜欢的差异化产品的公司往往就有了很好的生意模式**。

（2012-05-02）

03\. 网友：您是怎么看行业竞争那个问题的（第 75 条）？您在一线做企业的时 候，涉足的行业都是竞争很激烈的。我想您可能比芒格更有资格解释这个问题。

【引用】芒格主义 2012-06-26

75，这里有个模式一直让我们很困惑。也许你们能够更好地解决它。许多市场最 终会变成两三个——或者五六个——大型竞争对手的天下。在一些那样的市场里 面，没有哪家公司能赚到钱。但在其他市场中，每家公司都做得很好。

这些年来，我们总是试图弄清楚一个问题，为什么某些市场的竞争在投资者看来 比较理性，能给股东带来很多收益，而有些市场的竞争却是破坏性的，摧毁了股 东的财富。<br>

如果是像机票这样的纯粹商品，你们能够理解为什么没人能赚钱。我们坐在这里 也能想像得到航空公司给世界带来的好处——安全的旅游、更丰富的体验、和爱 人共度的美好时光，等等。然而，自从雏鹰号首航（注：世界上第一次成功载人 飞行）以来，这些航空公司的股东净收益却是负数——非常可观的负数。航空业 的竞争太过激烈，一旦政府管制放松，就会严重损害股东的财富。

然而，在其他领域，比如说麦片行业，几乎所有大公司都赚钱。如果你是一家中 等规模的麦片制造商，你也许能够赚到 15%的利润；如果你非常厉害，也许就能 够赚到 40%。在我看来，麦片厂商之间的竞争非常激烈，它们有很多促销活动， 派发优惠券什么的，但为什么还能赚那么多钱呢？我无法完全理解。

很明显，麦片行业里存在着品牌认同的因素，这是航空业所缺乏的。这肯定是（麦 片行业如此赚钱的）主要原因。

也有可能是大多数麦片制造商已经学到了教训，不会那么疯狂地去争夺市场份额

——因为如果有某个厂家拼命想要抢占更多市场份额的话……例如，假使我是家 乐氏，我觉得我必须占有 60%的市场，我认为我能够拿走麦片制造业的大多数利 润。那么我会在扩张过程中毁了家乐氏。但我认为我能抢到那么多市场份额。

在某些行业里，商家的行为像发神经的家乐氏，而其他行业则不会出现那种情况。 可惜我并没有一个完美的模型来预测那种情况怎样就会发生。

**段永平：**&#x6211;认为和产品的差异化程度有关。产品差异化程度越低，行业内的企业 越难赚到钱。航空公司是极致，就是因为产品差异化小。还有一个极致的例子就 是现在很多做太阳能硅片的，下场会比航空公司还惨。芒格说他不懂不知道是什 么意思，或许是调侃的吧？（2012-07-11）

网友：惭愧，刚接触股票的时候还真买过硅片股票，那时候还不知道巴菲特是谁， 造纸、纺织是不是和硅片一样？在我看来产品貌似也没有太大差异化。另外饮用 水您觉得算不算没有差异化的产品？我对于依云矿泉水能卖这么贵一直感到很 神奇。从科学的角度看它不可能有什么差异，但是被赋予故事之后又俨然很有护 城河。那么同理的话有没有可能航空公司也可以有朝一日被赋予故事拥有护城 河？

&#x20;另外，提问的博友想请教您医药算不算没有差异化的行业，我个人感觉很不能算，                                                   您认为呢？

**段永平：**&#x611F;觉上最没有差异化的产品就是硅片，因为用户最后只会关心每度电的 成本，所以这个行业实际上是效率的竞争。长期而言，只有某些能真的做出高效 率光电转换的产品的企业才能生存下来，而且他们的产品以后很可能就是发电 厂。

航空公司实际上的差异化也非常小，除非某航空公司的安全性被怀疑，否则消费 者的关心点会主要集中在从 a 点到 b 点的成本。当然，服务态度会有一点点差异<br>

（如果服务态度很不好则会有很大差异）。所以以上两个行业会是价格竞争异常 激烈的行业。

你说的其他几个行业的差异化程度都比这两个行业或多或少要高一些。有些行业 看起来差异化很小，其实有些“小东西”会造成很大的差异化，比如零售的地理 位置往往会让人们会觉得方便比价钱重要等等，尤其是价钱不贵的东西。

吃喝的东西心理上的差异化其实很大的，当然渠道的差异化也很厉害，比如可口 可乐的护城河中在哪里都能买到这点是非常厉害的。（2012-07-13）

**04.引用：Warren Buffett Quotes（巴菲特引述）**    &#x20;

In a business selling a commodity type product it’s impossible to b e a lot smarter than your dumbest competitor. &#x20;

&#x20;**段永平：**&#x6240;以说国内的晶硅光伏产业很惨啊，更惨的是，这情况啥时候到头呢？

（2012-11-17）

05.网友：汽车、手机、电脑、电视机这些行业中的公司绝大部分最后都会失败 的，幸存下来的几个进化成了最有效率的拼装工，拼装工是赚不了几个钱的。手 机行业的下场不会比电脑和电视机行业好多少。

**段永平：**&#x6C7D;车有丰田，电脑有 Mac。我见过真正没什么差异化的产品很少，比如 航空业，光伏，纺织等。（2013-04-06）

网友 F：段总经常提到差异化。

1\. 差异化是否是好的生意模式的必要条件？

2\. 任何一个行业内的公司，如果能找到差异化竞争的模式，就有了一定宽度的 护城河？

3\. 如果大家都找不到差异化的竞争模式，估计就只剩下价格战了。

4\. 任何一个行业，都有可能发展出好的生意模式，比如格力，苹果。 **段永平：**&#x31;. 很难说必要条件，比如某些垄断企业，如中石油；

2\. 高质量的差异化确实可起到防护的作用；

3\. 找不到差异化好像只能价格战，比如航空公司；

4\. 有些行业是很难有差异化的，或者说用户不太在乎差异化，比如航空公司。

（2013-03-31）<br>

06\. 网友:好的生意模式是否是有差异化的生意模式或者说是可以做出差异化的 生意模式？另生意模式和企业文化是否像赛马里面的好马和好的选手的关系？

&#x20;**段永平：**&#x5012;过来讲可能好点：**没有差异化产品的商业模式基本不是好的商业模式**

**--所以投资要尽量避开产品很难长期做出差异化的公司，**&#x6BD4;如航空公司，比如太 阳能组件公司。我不太会骑马。（2015-04-20）

07\. 网友:  以 30 年的长度看，您觉得行业类别对于选择好公司是否重要？

&#x20;**段永平：**&#x6709;些行业里很难出好的投资标的，比如航空业。简而言之，产品差异化 很小的行业难找到好的投资目标。（2015-09-16）

&#x20;网友：太阳能转化效率越来越高，尤其是薄膜领域，最近深受追捧，未来太阳能

发电看上去潜力很大，太阳能能源股可否作为重点研究领域？

**段永平：**&#x4EA7;品没有差异化，最后看到的就是价格战。（2015-03-03）

**段永平：突然想到老巴说过的那句话：如果你在坑里，至少别再往下挖了。产 品完全没有差异化的公司，将来早晚都会出问题的。航空公司是非常好的例子，**

**其他类似的 50 步和 100 步差别的就不细说了。**（2015-12-02）

08.网友：我从 2014 年看你的网易博客，一路跟你到雪球，收获很多。买股票就 是买企业，我懂。但怎么辨别好企业似懂非懂，巴菲特说过，喜诗是好生意，飞 行安全公司是一般生意，航空公司是糟糕的生意。我理解的是资本支出大的行业 不容易出现好企业。不知道对不对，请大道指点一下。

**段永平:**“**资本支出大的行业不容易出现好企业”，我同意这个观点。**（2019-03-16）

【引用】巴菲特 31 年股东信精华-（2012-02-17）

真正**伟大的生意**，不但能从有形资产中获得巨大收益，而且**在任何持续期内，都** **不用把收益中很大的一部分进行内部再投资以维持其原有的高回报率**。成长中 的业务，既会因销售额的上升需要更多的营运资金，也会需要更多对固定资产的 投资。**一个公司为满足它的成长，对资本的需求是否有大幅增长，正好证明它 是否能成为一项满意的投资。**&#x62E5;有一项不需要大量资金投入，就能带来滚滚财源 的业务，这真是太棒了！不信的话，你去问问微软或谷歌。**所以，从利润产出的 大小，我们仅仅可以衡量一个公司是否优秀，而不能判断其是否卓越。**&#x9AD8;投入 高产出，是大多数公司所面临的情况。例如，我们对公共事业公司的大量投资都 是如此。未来十年，我们会从这些业务中赢得不小的回报，但同时也要投入大量 资本才能做到这点。**最差的**一种公司是那种发展很快，并需要大量资本投入来维 持其发展，但利润却少得可怜甚至根本赚不到钱的公司。

总结一下，考虑这三类“储蓄账户”，**伟大的账户支付非常可观的利息，而且会** **随着时间不断地增长；优秀的账户如果你不断增加存款的话，利息也会很具吸**<br>

**引力；最后，糟糕的账户不但利息令人失望，你还要不断的掏钱来维持这种少 得可怜的回报。（2007）**

09.网友:你以前说的敢为天下后是否是可以做出差异化而且客户需要的产品或 服务？

**段永平:**&#x6240;谓差异化指的就是客户需要但别人未能满足的东西。没有差异化的 “敢为天下后”是无法生存的。（2015-04-21）

**段永平:我个人理解，好的公司一般来讲就是能够持续找到用户“差异化”需求** **的那些公司吧。**&#x5982;果找不到“差异化”的东西，那“敢为天下后”的产品就会成 为悲剧。所以“敢为天下后”的前提一定是你能够提供出你的用户群需要而别人 没有或不能提供的“差异化”的产品。

“差异化”的东西是在不断地变化的，当大家（很多公司）都有了的“差异化” 就会变成基本需求。有时候好的产品的“差异化”东西不一定需要很多，有时候 哪怕有一个也会让公司（或产品）很成功。

比如，如果你能想清楚麦当劳的“差异化”是什么，也许你就会明白些。至于如 何找到“差异化”的问题，那是“如何把事情做对”的范畴的事情，那可不是一 朝一夕之“功夫”啊。苹果能有现在这些个好东西，那也是十几二十年的积累的 “厚积薄发”而已。（2011-01-11）

10.【引用】巴菲特 31 年股东信精华---1

**64、在一个没有管制的商品标准化产业（没有差异化），一家公司不是降低成 本增加竞争力，就是被迫倒闭关门。（1994）**

11.网友：不同白酒口感不一样，有用户粘性。喜欢喝茅台的，不会因为茅台涨 价而买五粮液。 另外高端白酒的跟风涨价，也许因为他是高端消费品，价格越高，请客送礼时越 显气派。

家电是大众消费品，而且以功能取胜，用户粘性要差一下，谁价格便宜，就买谁 的。 同时，我想也与行业生态有关系。同样是家电行业，彩电行业就比冰箱更喜欢打 价格战。90 年代彩电行业老大长虹就率先进行价格战，挑起恶性竞争，而空调 老大格力却没有这么做。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x4EF7;格战一般在产品差异化很小时容易发生。酒是有很大差异化的东西， 至少感觉如此。See’s candy 也是有很大差异化的产品。

电子消费品，尤其是成熟的电子消费品的趋势往往是差异化越来越小，尤其在专 利保护比较弱的国家里会更明显。（2011-01-14）&#x20;

**段永平**：**差异化指的是产品能满足用户的某个或某些别人满足不了的需求。能 够长期维持的差异化就是护城河**。(2019-08-02)

## 三、护城河是商业模式最重要的部分

01.【引用】巴菲特 31 年股东信精华（2012-02-17）

**一家真正伟大的公司必须有一条坚固持久的“护城河”来保护它的高投资回 报**。但资本主义的“动力学”决定了竞争对手会不断进攻那些高回报的商业“城 堡”。因此，一道难以逾越的屏障，例如成为低成本提供者，像汽车保险公司盖 可（GEICO），好事多超市（COSTCO）或持拥有像可口可乐、吉列、美国运通这 样享誉世界的强大品牌，才是企业获得持续成功来的根&#x672C;**。**&#x5546;业史充斥着“罗马 烟火筒”般光彩炫目的公司，它们所谓的“长沟深堑”最终被证明只是幻觉，很 快就被对手跨越。（2007）

**我们对“持续性”的评判标准，使我们排除了许多处在发展迅速且变化不断行 业里的公司。**&#x867D;然资本主义的“创造性破坏”对于社会发展很有利，但它排除了 投资的确定性。**一道需要不断重复开挖的护城河，最后根本就等于没有护城河。**

（2007）

02\. 网友：“护城河”是一种隐喻，指的是公司拥有的，会让它的竞争对手日子 难过的竞争优势。(2007)

**段永平：**&#x60F3;想苹果的产品。（2012-02-17） 03. 引用转载：笑评李剑投资语录

首先考虑公司有没有独一无二的竞争优势。这个“独一无二”极其重要，你会一 下子就把优势公司和一般公司筛选出来。

**段永平：**&#x62A4;城河理论很重要。（2011-12-13）

04\. 网友：您认为一个公司有护城河重要吗？您认为卓越的管理层重要还是护城 河重要。

**段永平：**&#x8FD9;就像打仗一样，是能打仗的军队重要还是好的战壕重要一样。没有好 的防护，再好的军队也不经打。光有战壕显然也是不行的。（2010-04-14）

05\. 网友：巴老说的生意模式最重要让您想了好几年那肯定很难的吧。是不是可 以简单地说，就是巴老上次和赵丹阳吃饭时说的：买股票就是买垄断？

**段永平：**&#x6211;没听到老巴讲这句话，但听起来觉得还是护城河的说法好点。

（2012-06-26）<br>

06\. 网友：我看到林园的一个访谈中说到:"巴菲特走的时候特别和赵丹阳说，投 资没有什么，就是垄断。"您当年也在场，巴老当年有这样说吗？&#x20;

**段永平：**&#x6CA1;注意。但**投资确实就是买的未来的现金流（折现），未来现金流（折** **现）最大的保障就是“商业模式”，商业模式里最强的就是垄断，或者叫“护 城河”。** （2012-03-30）

网友：段总:生意模式是不是可以理解成垄断 **段永平：**&#x5784;断可以理解为好的生意模式。（2013-10-08）

网友 X：如何理解垄断性优势呢？或者讲，如何能形成强大的垄断优势！有人讲 选行业很重要！反过来看，几乎每个行业都有强者！那最核心最关键的因素是什 么呢？&#x20;

**段永平：**&#x5230;目前为止还没学会如何形成强大的垄断优势。我觉得能形成长期垄断 优势的企业是非常罕见的，国家垄断不算在内。老巴讲的护城河实际上指的是某 种形式的垄断，往往是由生意模式决定的。当然，拥有一个好的生意模式需要有 好的企业文化等等，不然很快就会搞得像雅虎一样。（2011-12-17）

07\. 网友：生意模式就是护城河。

**段永平：护城河应该是生意模式的一部分。没有护城河的生意模式不是好的生 意模式，但有护城河的生意未必就一定是好的生意模式。（2012-06-24）**

08\. 网友：请教，巴菲特讲的“一生追求消费垄断企业。”和“必须是消费垄断 企业。”该如何理解？ “垄断”企业指的是有垄断潜力的还是指已经垄断了 的？段大哥是如何理解这句话的？

**段永平：**&#x5784;断指的是“护城河”，不是“海关”。（2010-05-28）

09\. 网友：我对意识形态的理解是，腾讯对用户群的把握能力，或者说现有用户 群的忠诚程度，不知道是否贴切。

**段永平：**&#x6240;谓**客户忠诚度实际上是客户信任度（了解度），这个是护城河里很 重要的一部分**。（2010-05-28）

10\. 网友：昨天 youku 上看了林园的讲座，觉得他真的是一个很有价值投资精髓 的人，他的一个关点多少解释了我的疑惑。他说他买的公司都是不降价的，茅台、 五粮液、高速公路，不会因为市道不好就要参与竞争降价，不存在，所以能赚多 少一调研就出来了。

**段永平：能涨价的东西就表示他有“护城河”，能体会出这点来还是很有天赋** **的。**（2010-05-28）

网友 A：有同感，他特别强调定价权，现金流，盈利能力。<br>

**段永平：**&#x5B9A;价权就是“护城河”吧？（2010-05-18）

11\. 网友：“股神”巴菲特在评估一家公司时最看重哪个因素？答案是企业的定 价能力。

根据美国金融危机调查委员会上周五发布的谈话录影带，巴菲特指出，其在评估 一家企业时主要看重企业提高产品价格的能力，有些时候他根本不关心这家公司 到底由什么人管理。

巴菲特表示，如果一家企业有能力提价而业务又不会流向竞争对手，这一定是很 好的企业。据悉，巴菲特曾收购过铁路、燃气、电网等诸多公用类企业，这些企 业的定价能力源自其客户几乎找不到其他选择。 巴菲特还增持了可口可乐和卡 夫食品等公司的股份，这些公司依靠良好的品牌形象和口碑来吸引并留住客户。

引用：Notes from meeting with Warren Buffett（2010-04-13）

\- 我对具体业务完全不懂。在工厂车间里我找个男厕都费劲。**我只要知道两样：** **在竞争中的护城河有多宽？还能涨价吗？**

**段永平：定价能力和护城河其实是一回事**。老巴说相对于管理能力他更看重定价 能力，其实建立强的定价能力需要的时间非常长，没有好的管理能力根本做不到。 所以他说的不矛盾。（2011-02-22 ）

网友：“没有定价权的企业很难成为伟大的企业”，完全赞同！不过，1.定价权 不等于降价还是不降价的形式；2.光会提价是没有用的，（不说“光有定价权是 没用的”吧。）还要看市场的情况（定价权也可以理解为包含了市场情况吧）， 不能滥用所谓的定价权（提价）。

&#x20; **段永平：**&#x5475;呵，那你觉得劳力士生产多一点会多赚钱？赶紧看看芒格的书。

（2010-05-30 ）

【引用】芒格主义（2012-06-26）

**(111)”There are actually businesses，that you will find a few times in a lifetime，where any manager could raise the return enormously just by raising prices—and yet they haven’t done it. So they have huge untapped pricing power that they’re not using. That is the ultimate no-brainer. … Disney found that it could raise those prices a lot and the attendance stayed right up.？ So a lot of the great record of Eisner and Wells … came from just raising prices at Disneyland and Disney World and through video cassette sales of classic animated movies… At Berkshire Hathaway， Warren and I raised the prices of See’s Candy a little faster than others might have. And，of course，we invested in Coca-Cola—which had some untapped pricing power. And it also had brilliant management. So a Goizueta and Keough could do much more than raise prices. It was perfect.”**

（在成长股票模式中，有这样一个子模式：**在你们的一生当中，你们能够找到少** **数几家企业，它们的管理者仅通过提高价格就能极大地提升利润——然而他们 还没有这么做。所以他们拥有尚未利用的提价能力。人们不用动脑筋也知道这 是好股票。**&#x8FEA;士尼就是这样的。带你们的孙子去迪士尼乐园玩是非常独特的体验。 你们不会经常去。全国有许许多多的人口。迪士尼发现它可以把门票的价格提高 很多，而游客的人数依然会稳定增长。

所以迪士尼公司的伟大业绩固然是因为艾斯纳和威尔斯极其出色，但也应该归功 于迪士尼乐园和迪士尼世界的提价能力，以及其经典动画电影的录像带销售。

在伯克希尔·哈撒韦，沃伦和我很早就提高了喜诗糖果的价格。当然，我们投资 了可口可乐——它也有一些尚未利用的提价能力。可口可乐也有出色的管理人 员。除了提高价格之外，可口可乐的高层郭思达（Goizueta）和柯欧孚（Keough） 还做了其他许多事情。那是很完美的（投资）。）

12.网友：老段，BYD（比亚迪）的成本优势应属于护城河，而且是比较重要的护 城河，你认为呢？&#x20;

**段永平：呵呵，还没见过成本优势可以成“护城河”的，很少有企业能长期维 持低成本的，制造业好像没见过。而且靠自己产品卖低价的企业就很难有长久 的，至少我没见过。这是我的观点，和 BYD 无关。（2010-05-18）**

网友 X：不是说低成本长久看靠不住么？ 怎么可以成为 GEICO（汽车保险公司盖 可）的护城河呢.

**段永平：**&#x4E00;般而言，我觉得长期靠低价抢市场靠不住。GEICO 的低成本是相对传 统保险业而言的。传统保险业需要很多人去卖保险，所以需要很高的费用。CEICO 利用了很多网上的资源，客户自己上网上买就行，所以确实可以大幅度降低 GEICO 的成本。对销量比较大的车尤其方便。GEICO 的未来的竞争对手可能会来 自于同样网上销售的保险公司，但 GEICO 的品牌力量会非常大，因为买保险的客 户大概不太愿意去一家没怎么听说过的公司买保险。（2012-02-17）

13.网友：一个上市公司的护城河很深，但它的管理层不是很好或很差，股价合 理，请问这样的股票能不能碰。

**段永平：**&#x7BA1;理层不好的公司怎么会有很深的护城河呢？费解。（2013-04-02） **段永平：“护城河”是用来判断公司内在价值的一个重要手段（不是唯一的）。**

**企业文化是“护城河”的重要部分。很难想象一个没有很强企业文化的企业可** **以有个很宽的“护城河”。**（2010-05-25）

&#x20;**段永平：**&#x62A4;城河就是竞争优势，好的商业模式一般都有很强大的护城河。护城河 不是一成不变的，看懂护城河对投资很重要。企业文化对建立和维护护城河有不                  可或缺的作用。(2019-10-13)<br>

## 四、要有好的企业文化做支撑

01.网友：请教大道：什么是商业模式和企业文化？&#x20;

&#x20;**段永平：**&#x5546;业模式简单讲就是公司赚钱的模式。好的商业模式是有护城河的，举 个极端的例子就是海关（虽然这不是通常意义的商业模式）。企业文化就是企业 里这帮人的使命，愿景和核心价值观的东西。（2019-3-14）

02\. 网友：对于投资者来讲，“商业模式”与“经营者的品德”哪个更重要？

**段永平：**&#x72;ight business，right people 这两者都很重要。如果不是 right people， 多数情况下没办法维持 right business。（2013-04-24）

网友：我过去没有想得这么长远，又学到宝贵的知识了。请问维持 right business 主要是靠 right people 建立的“好的企业文化”吗？

&#x20; **段永平：**&#x6CA1;有好的企业文化很难维持，但有好的企业文化也未必就一定能维持住 的，因为也可能会有战略错误导致企业完蛋的，尤其是小企业。（2013-04-20）

03\. 网友：一直以为护城河是确定未来现金流的唯一办法，现在看来似乎并不是 唯一，或者说只是确定未来现金流的一部分而已，企业文化是另外一部分。我想 问一个问题，如果企业现在不错但原来的 CEO（首席执行官）退休了，换了新的 最高决策层，您是否会卖出或者随时准备卖出来谨慎的观察一下新的决策层的表 现呢？有或者认为企业文化跟这个新的 CEO 关系不大呢？

**段永平：企业文化可以看着是护城河的一部分。**&#x6362; CEO 对任何公司都是会有影响 的，但企业文化强大的公司往往能选出好的 CEO，从而能让公司继续好下去。

04\. 网友：认识步步高是从“步步高”那首歌开始的，现在都还记得，15 年了， 步步高在家电这个几乎没有护城河的行业里生存并一步步走的更高，真的很不 错。恭喜了！祝福步步高早日找到一个好的盈利产品，成为“有能力且走运”的 公司.

**段永平:**&#x5176;实我们是有条看不见的“护城河”的  ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)。（2010-09-21）

网友：步步高广告中的视听享受、对产品高品质的执着追求、对消费者需求的不 断满足，本分专注，在别人不屑一顾中坚持不懈。所有这些是构成“护城河”的 要素吗？

**段永平：**&#x6700;重要的是正直和诚信。广告应该不算吧？（2010-09-22） 05. one apple a day keeps the doctor away<br>

**段永平:**&#x4E2A;人观点，巴菲特说的 the right kind of business，with right people， at right price 这三点在苹果上体现的非常充分，拿着能睡好觉。

**the right kind of business 指的就是好的生意模式，好的生意模式建立在强 大的企业文化上。**

本人喜欢苹果生意模式的很重要的一点来自于自己在消费电子 20 多年的体验， 苹果是我一直梦寐以求但似乎难以达到的生意模式，现在居然可以就这么实现 了，why not？&#x20;

有一个小小的发现：我发现多数关心苹果的投资者（无论多空）都有点太在意苹 果眼前的东西了，其实一两个季度的表现没那么重要。（2011-01-22）

06\. 网友：请教：“好的生意模式是建立在强大的企业文化上。”这句话是不是 一个关键，不管是企业还是个人，只要能有强大的“文化”好的“生意模式”迟 早会到来。是这个意思吗？&#x20;

**段永平：所谓好的企业文化大概指的就是“利润之上的追求”，但“利润至上” 绝不可能成为好的企业文化。好的企业文化未必能形成好的生意模式。个人觉 得好的生意模式是一定要有好的企业文化做支撑的，所以是“必要条件”。但 好的企业文化不是拥有好的“生意模式”的充分条件。（2013-02-12）**

07.网友：好的生意模式需要有好的企业文化，不过只有好的企业文化不一定有 好的生意模式，是这样的吗？

**段永平：**&#x5BF9;，特别好的生意模式也是可遇不可求的，而且机会一旦错过就没了。 不过，没有好的生意模式也是有可能成为一家不错的企业的。（2011-12-17）

08.网友：请教一下。东莞步步高从电话机，到家教机，再到手机，都挺成功的。 虽然步步高的电子产品经常要持续更新换代，商业模式没有茅台酒好，但是步步 高企业一直发展得很好。步步高应该是得益于你构建的特别优秀的企业文化。从 这个角度，如果碰见一个拥有优秀企业文化的公司，即使是商业模式一般（比如 电子行业，竞争都挺激烈，绝大部分护城河没有白酒高），也是挺值得投资的？ 或者说企业文化甚至比商业模式一样重要，甚至更重要？

&#x20; **段永平：企业文化也非常重要，不然很难维持好的商业模式**。我们公司的商业模 式过去确实没那么好，直到做了智能手机。（2019-05-05）

09.网友：技术可以 Copy（复制），生意模式可以 Copy，唯独企业文化不能 Copy。

**段永平：**&#x751F;意模式可以 copy 吗？copy 一下 google 或者苹果试试？**好的生意模 式是包括企业文化在里面的，非常非常难 copy**。

10\. 网友：您对那些生意模式和企业文化能力二缺一的企业怎么看呢。一是比如 茅台这样的，生意模式让人叫好，企业文化和能力实在是太蹩脚了；二是像步步<br>

高这样的，文化和能力一流，生存的行业竞争激烈。从长期来看，缺失文化和能 力的生意模式护城河会逐渐变窄。企业文化和能力应该是最核心最坚固的护城河 吧。（2011-05-08）

**段永平：**&#x867D;然我不是很了解茅台，但不是很同意你说的茅台企业文化和能力很蹩 脚的说法，但可能不是你想象的那种文化或完美吧。

**很难想象一个没能力和没企业文化的公司能够建立一个好的生意模式。**&#x5982;果茅 台没有企业文化，茅台的产量早就上去了，用不了等这么多年。（2011-05-09）

11\. 网友：乔布斯辞去苹果 CEO 职务转任公司董事长 ，阿段怎么看这条新闻？ 对苹果的影响？&#x20;

**段永平：**&#x82F9;果的文化和生意模式已建立，其中短期的影响可以忽略。10 年以后 的事就不知道了，但由于其文化在，应该还是比平均要强。（2011-08-25）

网友：乔布斯之后，您觉得苹果还能继续有良好的战略吗？有人认为乔布斯之后 会导致公司要么聚焦力度减弱、要么离心离德。您怎么看？像您离开步步高一线 之后，公司的战略制定有没有让您生气过？

**段永平：**&#x4E54;布斯不可替代，但没有乔布斯的苹果依然是强大的苹果。苹果的企业 文化和产品文化以及生意模式已经建立，除非苹果内部有人跳出来破坏这种文 化，我认为相当长的时间里不会发生。至于我们公司，我不当 CEO 已经有 10 年 了，我觉得比我当 CEO 时已经有了很大的进步，我没啥不满意的。（2011-09-01）

12\. 网友：可口可乐的护城河核心是不是企业文化？因为百事可乐也不错，口味 都不一样。对它们来说产品的配方应该不是很重要的护城河。

**段永平：**&#x914D;方如果是的话也只能是一小部分。企业文化肯定是重要组成部分，还 应该有很多东西。肯定不是一个单一指标。（2010-06-14）

13\. 网友：我想寻找值得超长期 10 年、20 年、30 年投资跟随的公司。您认为一 个企业值得这样投资最核心的点是什么？一家公司的企业文化，价值观、企业使 命在投资决策中占比权重有多大

&#x20; **段永平：好的企业文化可以为好的商业模式保驾护航，甚至可以帮助发现好的商** **业模式，但我没想过权重的问题。这是个过滤器，没有权重的概念**。（2019-05-23）

14.引用：Warren  Buffett  Quotes（巴菲特引述）

We want managers who tell the truth，and tell themselves the truth – which is more important.

**段永平：这条讲的就是对的人。投资最重要的 3 点：right kind of business，right people，right price.前面两点尤其重要，从长期的眼光看（或者叫未来现金流折 现的角度看），价钱合适就可以了。（2012-11-17）**

## 五、30 个商业案例点评

01\. 网友：段大哥很多次谈到生意模式的重要性。那么生意模式和投资的确定性 是怎么样一个关系呢？（2013-04-03）

**段永平：**&#x31;. **生意模式越好，投资的确定性越高或者叫风险越低；** 2. 见第一条；

3\. 见第一条；

4\. 见第一条。（2013-03-31）

02.网友：首先看生意模式！最亮的指路明灯。

**段永平：**&#x770B;到这句话说明你有悟性哈。这句话可能值一辈子的午餐。（2012-04-06）

03.网友：请教一下段哥，于小资金的投资者而言，对生意模式的挑选是不是可 以不那么严苛？

**段永平：**&#x4F60;的想法其实也是维持小资金的比较有效的办法。（2017-08-27）&#x20;

04.网友：希望老段多教教我们研判企业的知识.

**段永平：**&#x6211;教不了，每个人都只能靠自己悟。我只能偶尔说点自己的体会，相对 于说说盲人摸象自己摸到的那部分，未必就一定对。或者说只在一定的范围内有 道理。（2011-01-23）&#x20;

\-----------------------------------------------------------------

#### 点评的行业和公司：1.贵州茅台 2.苹果 3.苏宁、携程 4.阿里巴 巴 5.汽车行业 6.沃尔玛与阿里 7.微软 8.公用行业 9.银行 10.啤酒企业、红酒  11.百货行业  12.新零售  13.脸书 14.诺基

**亚与三星 15.塑胶、五金、电子零件公司 16.高端，低端商业模式  17.联想 18.航海业、航空业 19.富士康、OEM（代工） 20.黑电， 白电，厨电  21.淘宝模式和京东模式  22.(ebay 和亚马逊) 淘宝模**

**式 23.高负债商业模式  24.重资产行业  25.对冲基金 26.拼多 多  27.视频  28.分众传媒  29.宁德时代 30.晨光文具**

\---------------------------------------------------------------------<br>

1.**贵州茅台**

01.网友：段总：酒这个东西对人体好像只有诸多坏的影响甚至造成损害，没多 少有益因素，不像可口可乐能补充人体所需要的水分。造酒是否是在做正确的 事？ **段永平：**&#x5475;呵，难道你觉得所有人都应该出家？酒给人们带来快乐，如果你的字 典里有“快乐”，你会明白的。（2013-03-19）

网友：快乐！一直在思考，为啥酒在人类几千年的历史中经久不衰，喝酒是为了 什么？现在突然有了答案。

&#x20;02.网友：不同白酒口感不一样，有用户粘性。喜欢喝茅台的，不会因为茅台涨

价而买五粮液。另外高端白酒的跟风涨价，也许因为他是高端消费品，价格越高， 请客送礼时越显气派。

家电是大众消费品，而且以功能取胜，用户粘性要差一些，谁价格便宜，就买谁 的。同时，我想也与行业生态有关系。同样是家电行业，彩电行业就比冰箱更喜 欢打价格战。90 年代彩电行业老大长虹就率先进行价格战，挑起恶性竞争，而 空调老大格力却没有这么做。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x4EF7;格战一般在产品差异化很小时容易发生。酒是有很大差异化的东西， 至少感觉如此。See‘s candy 也是有很大差异化的产品。

电子消费品，尤其是成熟的电子消费品的趋势往往是差异化越来越小，尤其在专 利保护比较弱的国家里会更明显。（2011-01-14）&#x20;

03.网友：【贵州茅台：2013 年第一季度净利润同比增 21.01%】

网友：利润是算出来的，净利润是增长了只是预收款从 50.9 亿同比下降到 28.6 亿。

**段永平：投资最重要的还是要看生意模式，不然的话大家就很容易只见树木不 见森林，全部盯着眼前这一个月一个季度的波动来决定买卖的行为，这样是很 难做投资的。（2013-04-18）**

04.网友，由于我也重仓茅台，特别是昨天跌停的过程中毫不犹豫的冲进去了。 反三公把年份酒给反没了，我很认同。很多调研的人把自己的调研结果写出来， 与你判断一致（你是不是也看了这些信息并认可？）， 市场上还有一个大疑问： 茅台的预收款下降很厉害！ 我认为，预收是之前就确认完的收入，虽然下降厉 害，（也就是现在经销商打款不强烈），但销售依然能实现稳定，尤其是在年份 酒滞销的情况下完成的。销售稳定才是基础。其次，公司开放经销权，有利于经 销的竞争，更有利于消费者买到实惠，货真的好酒！所以，从今后 10 年开，基 本上还是可以安心睡觉的！至于收益能到多少，那是天知道的事情！

**段永平：**&#x5982;果人们明白大部分生意实际上是没啥预收款的时候，人们会很喜欢茅<br>

台的。下降表示还有，只是过去太难拿到货，所以很多人愿意付预收款，现在不 太需要了。

网友：茅台 2012 年有 1787 万应收账款，这对茅台应该没有影响吧！不都说茅台 是先付款在发货，而且去了要排队。

&#x20; **段永平：**&#x4E00;千多万的应收可能是某种特殊情况，但相对总的营业额而言可以忽略。

（2013-04-02 ）

05\. 网友 2013-12-12 日茅台召开了媒体见面会，会上茅台董事长袁仁国透露了 一个数据，说“茅台酒应该说前几年一直非常紧张，但是茅台的库房现在有 120

多栋，每栋库存有 6 层楼，我们储存了接近 14 万吨基酒。” 14 吨酒按 500 算

就是 1400 亿，现在的价怎么算也不亏。

**段永平：**&#x8305;台这个生意和我们的消费电子比较起来，最大的差别可能就在库存上。 我们这个行业的库存几乎就是垃圾，茅台几乎就是个宝。（2013-12-12）

网友：茅台的存货每年都增值（13 万吨呀），没有长期负债，而预收账款却不 少，这样的生意模式确实少有。

06.网友：高度酒没有保质期，可以长期存放，茅台这个生意模式还有个极大的 好处是不需要售后服务

**段永平：**&#x9152;都如此。

07\. 网友：您曾经说过如果认真反腐，茅台会怎么样？现今从各种方面看这次反 腐应该是动真格的。您怎么看？

**段永平：**&#x96BE;道你认为我们以前的都不是动真格的？茅台和腐败没有直接关系，但 减少公款消费确实会减少很多浪费，短期内应该也会影响到茅台以及很多东西的 销量。但公款消费应该不是茅台的大头。茅台之被很多人喜欢是因为茅台是很特 别的好酒，喜欢喝的人依然会喜欢喝的，只是以后用公款喝的机会少了而已。茅 台如果短期销量下降些，那年份酒的产量就可以提高了？还真是很少见不怕有库 存的生意模式。（2013-02-13）

08.网友：有关于白酒想请教下，就是大概 5 年前也看过茅台，当时感觉就是单 价上涨有限制，只能从销量上看，但销量又受制于产量，看了几篇文章都说是很 难复制生产环境，这样就把它放入低增长的类别了。现在往前看，16 年之前产 量和销量都还平稳，不知怎么到了 16 年产量大幅增长，看组成估计是其他系列 酒的大幅增长（没有 15 年对比），17 年上半年产量增长更为迅猛，想请教段总 的就是飞天茅台每年产量现在能大幅增长呢？如果是的话，飞天茅台可以复制环 境呢？如果不是，那茅台销售额的增长中，除了其他系列酒销售额增长外，那飞 天茅台的销量增长主要是多销售了五年前的存货呢？因为只喝过一次茅台，也没 去过茅台镇，确实感觉看不懂。<br>

**段永平：**&#x8305;台的生意模式好，别的你自己慢慢看吧。（2017-11-24）

网友：是的，就凭存货还能越久越值钱来说，这世上就没几个产品比得了，况且 还有非自身原因的限价、飞天产量有可能因为技术进步或者其他方面原因增加， 而飞天销量只要产量能配合的话翻个几倍很容易，这样的公司确属凤毛麟角。个 人体验是虽然平均几年才喝一次白酒，而唯一喝过的一次茅台前面还喝了二锅 头，那反差就是天上地下。还有就是白酒品牌值钱很重要的原因就是白酒的消费 群体忠诚度很高，在自身能长期消费的价位内，对某品牌的忠诚度超过了很多行 业，这个很大程度应该是口味、口感甚至是酒文化等一系列差异化造成的，

&#x20;网友：茅台的优点太多了：不怕库存、追加固定资产较少、好产品、国内的面子 送礼文化，当我们普通人有能力消费时，肯定会首选茅台，如同现在的中华烟。

（2013-02-18）

09.网友：请教段总现在方便评价茅台吗？&#x20;

**段永平：**&#x8305;台还是茅台，生意模式刚刚的，10 年后人们还是会说 10 年前那个价 格真不贵。（2017-12-14）

10.网友：**段总，怎样才能改变茅台在中国人心中的地位啊？**

**段永平：多推一些便宜的非 53 度酒，包括茅台啤酒和红酒，甚至茅台米酒啥的， 以及茅台矿泉水，茅台酒店，茅台手机，茅台空调，加快推出的速度，五年出 厂的规矩也不要了，假酒也不管……十年后， 茅台的地位就应该彻底不一样了。**

（**2015-02-16**）

**2.苹果**

网友：你说你在 2011 年一月想明白了苹果，最重要的是想通了没有乔布斯的苹 果到底是什么。能分享一下吗？因为我想了很长时间都没想通。苹果难道不是 “冲浪型”企业吗？他们如何能保证时刻停留在浪尖上？

**段永平：**&#x82F9;果已经有了很好的生意模式！为什么是很好的生意模式这行里的人都 知道。（2012-01-20）

01.博文：one apple a day keeps the doctor away（2011-01-22）

**段永平：**&#x8BF4;说我喜欢苹果的一些理由。这不是论文，想到就说，没有重点和先后 秩序。 1.苹果的产品确实把用户体验或消费者导向做到极致了，对手在相当长的时间里 难以超越甚至接近（对喜欢苹果的用户而言）。 2.苹果的平台建立起来了，或者说生意模式或者说护城河已经形成了（光软件一 年都几十亿的收入了）。 3.苹果单一产品的模式实际上是我们这个行业里的最高境界，以前我大概只见到 任天堂做到过（sony 的游戏产品类似）。<br>

单一产品的模式有非常多的好处： a.可以集中人力物力将产品做得更好。比较一下 iphone 系列和诺基亚系列（今 年要推出 40 个品种）。苹果产品的单位开发成本是非常低的，但单个产品的开 发费却是最高的。 b.材料成本低且质量好，大规模带来的效益。苹果的成本控制也是做到极致的， 同样功能的硬件恐怕没人能达到苹果的成本。 c.渠道成本低。呵呵，不是同行的不一定能明白这话到底有什么分量（同行也未 必明白)，我是 20 年前从任天堂那里学会的。那时很多做游戏机的都喜欢做很多 品种，最后下场都不太好。 4.苹果的营销也是做到极致了，连广告费都比同行低很多，卖的价钱却往往很好。

5.苹果的产品处在一个巨大并还有巨大成长的市场里。 a. 智能手机市场有多大？你懂的！

b. pad 市场有多大？你也会懂的。

总而言之，我认为苹果现在其实还处在其成长的早期，应该还有很大的空间。 扣掉现金的话，苹果的今年的未来 pe 只有 12-13 倍啊，明年可能要到 10 以下了。 当然，以上我说的这些点中的任何一点的改变都可能或多或少地改变苹果，如果 有苹果的股票的话，就要留心这些变化了。

我认为 Jobs 如果真请长假的话，在相当长的时间里对苹果的业务不会有大影响。

（2011-01-22）

网友：段总对苹果的顿悟，说明了经历在对公司理解上会变成财富，哈哈。段总 无论是早年的小霸王时期，还是步步高时期，或者最近的 OPPO 手机时期，其实 从事的工作和苹果公司没有本质的区别，都是消费类电子，都是了解消费者需求 做精品，对产品的追求和理解是一致的，所以段总很快就能看到苹果的“厉害” 之处，这个和大部分投资人通过财报、预测所理解的公司前景是不太一样的。所 以段总说的买股票就是买公司，对于公司理解的“度”上，把自己放到经营者的 位置去思考，有些时候不得不说是需要一些“机缘”的。看段总苹果的仓位貌似 提高不少，是因为最近一段时间看苹果看得更加明白的原因？看《乔布斯传》最 大的体会，乔布斯是一个非常厉害的产品经理，除了做出优秀的产品，还搭建了 优秀的平台，失去乔布斯的苹果，在单品的设计能力和惊艳程度上是否会衰退， 我不是很能理解？段总对于苹果的判断，是因为乔布斯所搭建产品平台优异的巨 大惯性延续，还是其他？

**段永平：**&#x7EDD;大多数是去年初和中间有个时期买的，一月 21 号 option 到期后出来 不少钱（主要是 put 卖出过期了），本来想买 bac 的，结果近期 bac 涨了很多， 就都放 aapl 了。在没有其他目标的前提下，今天的苹果依然便宜，但没以前便 宜了。

有些东西进步到一定程度后其实后面的变化就不大了，比如汽车发动机 30-40 年代和现在其实没本质差别。有些国家（虽然我们很多人很看不上）40 年代就 能造航空母舰，我们现在依然不行，说明由于某些原因，时间有时候帮不上大忙。

苹果最厉害的是现在这个平台以及生意模式，以我的水平我看不出谁能打破他。 当然有很多以为水平比我高的人非说别人可以，当然也有自己说自己可以打败苹 果的，你看看他们像吗？<br>

也许，能打败苹果的人快出生了，也许正在某个地方徘徊，但怎么看都不是现在 大家知道的这些，这是个大家可以看很多年的故事。（2012-01-29）

02.网友：android（安卓）手机会是苹果的一个比较大的威胁，现在的 android 的手机已经不比苹果的差多少了。苹果的强大在于有一个统一的平台，这是 android 所没有的。

**段永平：**&#x8BF4;明你还是不明白谁是谁的威胁。（2012-01-25）

网友 A：这一点不太明白，我对于苹果最担心的就是安卓的竞争。虽然进入 IOS

（苹果系统）系统的用户不太关心安卓的变化。但是安卓的进步对于新进入 IOS 的用户数量有很大影响，并且安卓进步很快，那么口碑会好，而口碑对于新用户 甚至老用户，影响会很大，是这样吗？

**段永平：**&#x518D;过几年你就明白了。

网友 H：谷歌的安卓和苹果 IPHONE 的竞争关系就像大众和宝马奔驰的竞争一样， 虽然都是做手机，用户群不一样。用了苹果的东西，再用安卓的，感觉就是糙， 细节很粗糙。GOOGLE（谷歌）发布了 Chrome 浏览器的移动版本，竟然率先在苹 果的平板 IPAD 和手机 IPHONE 上发布，安卓平台上竟然没有。这事挺有意思的， 难道 GOOGLE 的人也知道哪个平台的用户价值更大？

**段永平：**&#x82F9;果倒是像卖车的，一年出一款。3 星像诺基亚，结局可能也像，不信 过 10-15 年再看。

网友 X：1、三星、HTC 一直搞机海战术，其实大部分厂商都是这招，苹果出来后， 这招不灵了。htc 今年出 one 系列，说不玩换壳了，真能转性么？

2、苹果真是独步江湖了。安卓阵营跟苹果的差距，不是简单的机子外表问题， 是整个商业模式和生态系统的问题。如果专注研发 rom，把消费者体验提升的有 戏么？魅族小米都是刷 rom 起家，oppo 的 rom 和 ui 也有独到之处，一些细节让 人觉得很贴心，还有老罗也说要专注研究 rom，当然 rom 毕竟要受制于 google

（谷歌）的进展。无解？

3、我发现国内很多用 iphone 的只是觉得很漂亮很炫或者纯粹是炫耀性消费， iphone 的威力他们恐怕一小半都没用到。特别是女孩子，没几个用同步功能、 装备好的应用，好多只是玩玩别人帮忙装上的游戏。这类“傻瓜式”很多人在抢 吧，像当年网络爆发增长时的装机系统导航网页等。

**段永平：**&#x31;. 人大概是不会变的。

2\. 苹果以外的市场依然很大，而且上升空间也很大。专注于用户体验的企业总 是会走得远一些的。<br>

3\. 我也发现很多人还没有发现 iphone 的很多好处就已经很喜欢 iphone 了，所 以觉得 iphone 的潜力还很大。

网友 C：这么久了看了你的评论才有一点明白苹果； “即使其他公司生产出了 在技术上比苹果产品还要先进一些的产品，在惯性思维上人们也未必认可，再说 了，苹果产品目前达到的技术高度也使其他公司很难造出比苹果产品有显著性先 进差异的产品了，”

是否像微软当初的 286、386、奔一、奔二；，如今的双核等？今天没有乔布斯 的苹果依然在“小步快跑”？

&#x20;**段永平：**&#x82F9;果厉害的不仅仅是硬件，这是所有其他竞争对手没辙的地方。三星顶 多不过是新的诺基亚而已，对苹果没有威胁。苹果的 business model 实在是强 大，其他的“对手”已经难以撼动苹果了。（2012-02-05）

03.网友：段总怎么看 GOOGLE（谷歌）呢？你说看不懂那个自动驾驶汽车。呵呵， 确实有点偏的感觉。google 这两天发布好多新东东。1、那个眼镜也有点怪怪的， 有点偏。2、google Nexus Q 有点意思哦，挺喜欢的，如果便宜点真想弄一个玩 玩。3、 Nexus 7 不错，可惜没有后置摄像头，kindle fire 麻烦了。4、安卓 4.1 也在进步，系统一直在完善啊，假以时日，能逼近 IOS（苹果系统）么

**段永平：**&#x6211;一直喜欢 google，觉得 google 是好公司，但只是明白其部分的生意 模式而已。所以前段时间把手里的一部分 google 换成苹果了，当时差 90 几块哈。 也许哪天我还会换回来，看谁涨（或掉哈）得快了。至于会不会逼近 IOS 的问题， 作为苹果的用户，我其实根本就不知道也不关心，除非哪天我自己觉得苹果的用 户体验不好了。一旦进入苹果的生态系统的用户实际上不太关心安卓的变化，所 以我其实一直不认为安卓是在和苹果竞争。（2012-06-28）

04.网友:请教一下为什么安卓的体验总是差强人意，苹果都出来这么久了还是差 距蛮大的，这是为什么？按道理来说有个样板在那里学应该很快能学到的，而且 那么多人去研究。

**段永平：**&#x5B89;卓本身占用资源大，比如如果都是两核或 4 核的表现就要差不少，加 上大家看到的苹果的东西是几十年积累下来的，安卓要全面达到恐怕不太可能。 但是，安卓的表现其实已经很不错了，已经比当年用诺基亚的智能机的感觉强了 许多倍，某些使用方面和苹果各有特色也是一定会有的，而且价钱还可以便宜很 多。未来安卓手机之间的差异化会越来越小，三星的价钱要挺住不容易。苹果的 生态系统会保住特别喜欢或习惯的用户，所以受安卓的影响不会像想象那么大。 不过，有苹果和三星在上面顶着价格，其他卖安卓智能机的企业应该还有一段不 错的小日子。（2013-01-23）

05.网友：段总在 10 年初的时候提到过会谈一谈如何错过腾讯的，现在怎么看？ 我觉得他的模式比苹果还牛，只是估值似乎永远也下不来。

**段永平：**&#x8BA9;腾讯上 6000 亿美金试试？腾讯确实是不错的公司，但要成为苹果还 需要很多东西，包括大环境的变化。<br>

顺便说一下什么叫生意模式：生意模式就是赚钱的模式，最后赚得越多的模式就 应该越好。苹果现在一年的利润比中国所有互联网公司（包括腾讯）从开办以来 赚得利润的总和都要多，你说腾讯的模式更好的逻辑是啥？（2013-03-04）

06\. 网友：我倒是没想过您看不看得到这些（若您觉得我表达有误我这边先道个 歉），这只是我自己想到的问题，提出来讨论而已，并无冒犯或挑战的意思。您 的意思是不是说这些问题的确存在，但不构成影响

**段永平：**&#x5176;实我不知道你想问什么。你的问题是为什么 iphone 的用户忠诚度不 是 100%么？或者因为 iphone 的忠诚度只有不到 90%，所以 iphone 就不行了么？ 或者身边有人把原来的 iphone 换成了三星或别的大屏，所以以后还有没有人会 再买 iphone 么？如果你不在乎我对苹果的看法，为什么要问我关于苹果的问题 呢？顺便说一下，这个回答其实不是只给你的。**另外提醒一下，我们是卖安卓（大 屏）手机的，我知道这个市场有多大。建议有些人想一下苹果的生意模式，如 果觉得三星的模式更好的话，这个博客其实不适合你们。**（2013-02-16）

07.网友：在雪球网看到您说过“顺便说下，我们公司是卖 andriod 手机的，我 想我真的能理解 andriod 的生命力在哪里。” 可否详细说说您对安卓生命力的 理解？

**段永平：**&#x79FB;动市场这么大，没买苹果的怎么着先的买个安卓吧？长期来讲，苹果 产品很难超过 30%的，余下 70%基本上就是安卓。未来 10 年移动设备至少能卖个 50 亿（我觉得能到 100 亿以上）以上吧。(2013-03-03)&#x20;

网友 M：用习惯 iphone 的人，一般改用安卓系统会不习惯的，因为苹果只要 ID 一输，程序，音乐，通讯录等等都会回来，通过 apple tv，把其他设备上的图 像、视频、音乐随时就可以在电视上显示出来。通过查找 iphone 随时可以知道 在外地的亲人在哪，然后通过 face time 不花钱视频。当 imac 电脑的图像一键 显示到投影上，当随时在中国用 iphone 打开在美国家的电脑操作并打开摄像头 看自己的宠物捣乱了没，你就会感觉科技的力量，苹果是世界第一大公司是理所 当然的。还有苹果绝对是消费者导向，你想要的功能它基本都已经实现了。安卓 系统这些功能可能借助其他应用也可以实现，但感觉一切都乱，设备互联性太差。 苹果是个大系统，音乐、视频、游戏、软件、相机、电脑……的钱它全赚了，关 键你买的音乐，视频，程序等一辈子都是你的，但必须在他的设备上才可以用， 谁还会轻易换设备。比如我都买了一万多的软件和音乐了，换其他的设备还须再 买，谁还换设备，除了它太差了。apple tv 一定要买，它可以把所有苹果的设 备都联起来。

**段永平：**&#x5475;呵，**你说得很清楚，这个就叫生态系统**。安卓的问题是现在卖得越多， 将来可能就越乱，慢慢跑到苹果生态系统里的人就会越多。 还有一个重要的东西，就是苹果的安全性。那么多企业要用 iphone 和 ipad 是有 道理的。美国 500 强里 95%开始用 iphone 和 ipad 系统，国际 500 强 85%开始用

\----库克在股东大会上讲的。<br>

听说目前好像只有 iphone 不能被装窃听器，其他的手机绝大部分好像都可以， 怕被人窃听的要小心了。（2013-03-04）

08.网友：最近一直在想苹果这个生意，如果某次发布的新产品失败了（市场反 响不好），这对苹果的影响应该很大，这种生意还是好生意吗？虽然苹果现在的 客户粘性很大，但是我想也经不起连续 2 年的新产品失败吧，而且谷歌这个对手 也不是吃素的。

**段永平：**&#x4E0D;知道你一直在想什么。你见过在别的同行不停推新品的同时能够按兵 不动一年营业额依然不掉的公司么？而且这还是在上个产品不那么轰动的前提 下。如果这还不叫模式好，那什么叫模式好？现在轮到苹果出招了。顺便补充一 下，凡是认为 iphone5 是失败产品的人都应该问一下在人类历史上有过几个单一 产品比 iphone5 成功的？（2013-09-04）

09.网友：苹果能够做到垃圾中的不是那么垃圾，还有人要，真的是个奇迹。

**段永平：**&#x82F9;果产品的残值高也说明苹果的东西确实好。（2013-12-13）

网友：今天看到苹果官方出售二手 iphone 的消息，包括各型号的回收价与售价 对比……，段总怎么看？

**段永平**：我的看法是，只有苹果能够做这件事情，别人其实做不了。(2015-04- 14 )

10\. 网友：苹果的威力——“十年生死两茫茫，安卓兴，联发亡。低端市场，处 处话凄凉。纵使相逢应不识，诺记死，苹果王。摩托三星忽还乡，拼低端，实在 忙。中兴亲，华为新，魅族创新强。HTC 出机皇，日日换大梁。手机业，已无常， 全都忙转行，山寨泪千行…… ”将来会怎样呢？&#x20;

**段永平：**&#x5475;呵，受到苹果影响的远远不止你提到的这些手机公司。比如所有卖电 脑尤其是手提电脑的公司受到的影响巨大。甚至连网游公司都间接受到很大影 响。仔细想想会觉得很有趣的。（2012-02-25）

&#x20;网友：苹果表现为一个摇滚巨星，在外在光环的背后，其实有一个强大的实力， 这是容易被人忽视的地方。 1）它在专业领域中关于价格、物料成本控制具有强 有力的优势，在产品上足可以发动一个价格战争。貌似高端的形象之上，IPAD 3 的产品价格其实是相当便宜的，与对手的产品价格相当，苹果有能力真正打一个 价格战。 2）苹果产品除外表时尚，而且功能吸引人，品牌卓越这些优势下，容

易被人忽视的是设计、制造和供应链管理。举例说，一般让山寨厂商把 iphone 零 件全买下来，它的成本就和 iphone 成品价格相当，iPad 成本比这低得多，仍 然能保证获得巨额利润。iphone 一代到四代价格不变，却能越来越大规模的零 件升级这一点极具优势，那么相信 iPad3 有一个光明的前景。 只要 iPad 3 不 出现重大纰漏，类似当年的 iphone4 死亡易握，它的销售前景极好。苹果公司 继续保持领先优势。 <br>

**段永平 ：**&#x5176;实苹果的强大实力是不容易也不应该被忽视的，除非你有意去忽视， 但鸵鸟的办法不会有任何帮助。任何一个被苹果直接或间接、现在或未来影响到 的行业里的企业大概早晚都要面对苹果的强大实力的。随便举几个已经受到影响 的行业或产品吧：手机、电脑、手提电脑、游戏（包括网游）、游戏机、中低端 相机和录像机、音乐、电影、书、电视、网络、运营商、所有相关产品的零售、 几乎所有的电子消费品……欢迎补充。找到在苹果生态系统里生存的方式也许比 挑战苹果要来的更现实一些。能够避开苹果也许是另一个办法。（2012-03-12）

**段永平：你可以想象一下，如果你是苹果的同行，你能用什么办法像苹果一样** **让用户拥有如此高的黏度，盈利能力还如此好。靠卖低价的都不是一个级别的** **哈，**&#x82F9;果产品的实际成本比任何同行都低不少，主要低在除材料成本以外的地方。 **如果你觉得你能找到一个办法，那就说明苹果其实不厉害。**（2012-02-06）

3.**苏宁、携程**

01.网友：大道能否分析一下“苏宁云商”模式？敢为天下后的苏宁能否第二次 起飞？

**段永平：**&#x6CA1;看过苏宁。学会先想一下生意模式很重要。（2013-03-20）

网友补充：好的企业文化只能让生意模式出现问题的企业减缓下降的速度而不能 逆转下降的趋势，比如书店、胶卷生产商、报纸、汽车、航空公司、百货公司， 持续的竞争优势的基础是好的生意模式。另外，连续几年营收和利润高速增长并 不意味着就拥有好的生意模式，比如苏宁和携程，我曾经以为他们很厉害而且能 继续厉害下去。

**段永平：**&#x8FD9;个理解很好，说明生意模式很重要。（2013-04-02）

网友：苏宁和携程都是用户需求转移型了，而产品形态没跟不上。苏宁受电商的 冲击大。携程是以往用户订酒店订机票都是在电话呼叫预定，所以携程积累起来 的会员规模和呼叫中心在产品竞争中很有优势，呼叫中心的服务能力能构成差异 化的竞争，携程也获得了市场垄断的优势，有不错的定价权。现在休闲旅客崛起， 更倾向在线预订，除了订房需求外，还有了解酒店的设施、交通、区域的信息需 求。在线预订对 OTA（在线旅游）的服务能力要求降低了，所以大量 OTA（在线 旅游）供应商纷纷崛起，由于售卖的酒店预订是标准化的产品，同质化竞争，所 以要开打价格战。携程的产品是从电话呼叫预定向在线预订模式转型，生意模式 变了，以往的利润结构也没了。

**段永平：这两家公司的产品都是很难有差异化的，感觉不容易找到好的生意模 式**。记得携程曾经到过蛮高的价钱，那时看过一眼，没看懂。后来掉了一半时又 看了一眼，还是看不懂，主要是想不通搜索对携程未来的威胁是什么。感觉这种 公司形态 10 年后就不太容易存在了。（2013-04-03）<br>

#### 4.阿里巴巴

网友：阿里巴巴的商业模式非常简单，主要就是做网上商业中介，收取中介费。 不要看马云这个秀，那个秀的，都去掉就是一做中介的，至于规模赚钱能力就是 另外一回事了。

**段永平：**&#x662F;啊，就是一个现代掮客。其实 Google，百度也差不多。他们都不做 “产品”，但给人提供方便。（2010-06-09）

#### 5.汽车行业

01.网友:心中有一个疑惑，希望得到老段的指导：

Buffett（巴菲特）说过回避轮子上的公司，这里应该是指汽车行业，“回避” 至少包含了两层意思，其一他搞懂了这个行业，其二汽车行业不是好的投资标的。 2010 年在央视 2 台的节目中，Buffett 说“他和（芒格）观察这个行业 50 年了”， 这也说明他对这个行业是非常了解的。

欧美日本走过的路表明，GDP（国内生产总值）每增长 1 个百分比，汽车行业就

增长 3 个百分比。1916 年的时候美国有五百多家汽车厂，现在只剩下 3 家，中 国可能会走同样的路。从上面两点来看，一方面蛋糕越来越大，另一方面行业集 中度越来越高，对于这个行业里的优势企业来说，按理来说应该是有机会的，为 什么 Buffett 选择回避呢？&#x20;

或许 Buffett 回避这个行业的原因只在美国存在？好像美国汽车行业从业人员 的福利和待遇很高，也就是说管理费用高昂，但这个问题在中国是不存在的。或 许是因为 Buffett 回避的原因是汽车行业是个重资产的行业？

**段永平：这类企业的产品很难有差异化，所以长期而言很难赚钱。**（2011-03-2 2）

02.引用:巴菲特一季度买入 1000 万股通用汽车减持英特尔

**巴菲特旗下伯克希尔-哈撒韦公司周三提交的监管文件显示，2012 年第一季度公 司买入 1000 万股通用汽车公司股票，同时买入 Viacom 维亚康姆公司 160 万 B 类股。不过，巴菲特将英特尔公司的持股从 1150 万削减至 770 万………**

**段永平：**&#x8001;巴的 intel 就卖了？买通用汽车有点费解，生意模式可不太好啊，感 觉像个雪茄烟蒂。不过通用汽车的财务数据倒是不错。

网友 q：能不能解释一下 通用的生意模式为什么不太好？ 网友 w：汽车是差异化不大的产品？

**段永平：**&#x5DEE;异化小是个重要方面。还有就是工会也是个麻烦，成本下不来，可能 10 来年后又要破产一次。如果不打算拿 10 年的企业为何要拿 10 天。非常可能 这个决策不是巴菲特的决策，那可以看出老巴很宽容，但也看出老巴之后 BRK 的能力确实会下降。(2012-05-18)

#### 6.沃尔玛与阿里

网友：马云挺有意思，他曾说拿着望远镜都看不到竞争对手。他也说过淘宝最大 的竞争对手是沃尔玛。我不懂什么商业模式，不过感觉沃尔玛进军电子商务模式 会很大的发展空间。我要是沃尔玛重量级人物，肯定做重要的事大举进军电子商 务，两条腿走路。

**段永平：**&#x6C83;尔玛很难形成威胁，因为他们实在是太成功了。（2010-05-15） 网友：沃尔玛自己也搞电商，是不是和诺基亚搞智能手机一个意思？

**段永平：** 沃尔玛做电商像当年的康赔做直销。电商营业额还不到 2%。

（2011-10-20）

#### 7.微软

01.网友：看了 wp7 的发布会，没啥新特色，不知道微软的工程师们究竟在捣鼓 什么。如果照这样的态势下去，微软在移动互联网领域真的危险了。

段总前面对诺基亚的点评很经典，一句话就把诺基亚的迷失指出来了。段总能不 能说说微软呢？

**段永平：**&#x6210;功是失败之母。微软陷在过去的成功模式中出不来，估计以后也很难 出来了。（2010-10-14）

网友：为什么说微软陷在过去成功的模式中，出不来呢？ 能否多说说证据呢， 我觉得其实比结论更重要的是 判断主要依据和重要细节。

&#x20;**段永平：**&#x6BD4;如微软的手机软件就要收费，还挺贵，不收又不行，因为和别的栓一 起的。可 Google 得是免费的，大多数手机制造商做 smart phone 最后可能都会 用 google 的，我猜。（2010-10-15）

&#x20; 引用:[盖茨：微软生产自有品牌平板电脑是正确之举](https://xueqiu.com/S/MSFT/21963225)

微软（微博）创始人比尔·盖茨（Bill Gates）称，微软生产自己的平板电脑是

正确之举，并指出 Windows 8 将会“杀死”传统 PC（个人计算机）

**段永平：** ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)（**2012-07-04**）

#### 8.公用行业

网友：我想请问垄断的生意，如自来水公司等，算不算好的生意模式呢？如果算， 好像没发现有伟大的自来水公司？是不是垄断容易产生不思进取、管理混乱等因 素？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x81EA;来水公司的“垄断”是在很多限制条件下的垄断，多有关民生，属于 公共事业，不被允许赚大钱。（2015-04-11）

网友：10 月 6 日我去上海参加了长期资本管理论坛，主持问了一个很有意思的问 题：如何寻找企业的护城河？仁者见仁，智者见智：1.一个央企电力行业的人认 为是垄断（这个我不认同）2.有人认为是有提价能力的品牌如喜诗糖果 3.低成 本如沃尔玛、B 夫人的家具公司（这个我不认同）4.顾客的转换成本……不知大 道对此有何心得？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x5784;断不算还有啥能算？不过行政垄断不是好的商业行为而已。

（2011-10-08） &#x20;

#### 9.银行

&#x20;01.网友：银行是不是也属于无法产生差异化的行业？

&#x20;[**段永平**](http://nteswjq.blog.163.com/)**：**&#x94F6;行产品非常复杂，差异化远大过航空公司，客户的转换成本也非常高。 银行比较难懂的是风险因素。（2014-10-31）&#x20;

&#x20;[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6211;不懂银行。对我而言，即使是让我开银行我也不愿开的。怎么看，银 行都是靠借别人钱做生意，而且生意也是借钱给别人，这两件事我都不知道该怎

么做，所以不懂。（2012-07-29）&#x20;

&#x20;02.网友：您说不太懂银行股，我觉得蛮奇怪的，请问是否谦虚说法呢？还是阿 段看到美国太多银行倒闭，担心国内银行股什么呢。是否国内银行未来会产生大 量坏账。幼稚地请问您认为银行业，您哪里对它不了解呢？

&#x20; [**段永平**](http://nteswjq.blog.163.com/)**：**&#x5C31;是如何保证回本的问题。如果回不了本，利息是什么？

事实上，有很多银行是因为做的大才活下来的，因为国家会救（一部分）。每十 年八年一定来一次，确实不好懂。（2010-06-01）

网友：我同样遇到这个问题，看起来再好的银行，除非我知道他贷款最大的一些 客户保证能还钱，要不我什么也不知道，就不敢买，除非有一种可能，那就是这 个银行历来稳健，发错贷款的概率比较低（但是多低是比较低呢？），买入的价 格要是真清算了还不至于亏多少，但是这种情况可遇不可求，因此几年了也没弄 明白银行能不能买，因此就是只能是不买了。

&#x20;03.网友：你之前曾说过：始终没完全搞懂银行的业务的风险到底在哪儿。美国 的一些大银行隔个十年八年就来一次大动荡，还没明白是怎么回事。<br>

记得后来你也用一些雅虎换成了 BAC（美国银行），不知是不是对银行的业务有 了更深的理解看懂了？求教。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6211;说过是跟着老巴买的哦。BAC 的重建成本大概在 13 块上下（不包括 人）；正常年景的盈利大概可以到 2 块左右（现在没有）；老巴在 7 块左右买的 可转换债券，意味着老巴认为 BAC 的麻烦已经解决了。所以我在 6 块上下买了一 些。无论如何，银行是用 margin 的生意，任何时候我都不会重仓的。（2013-02-03）

04.网友：银行是很好挣钱的行业。如果给我个人银行牌照。我能很轻松地在我 家附近开一家银行分店。比这条街所有的店铺都来钱。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x5728;中国的银行看起来好赚钱是因为牌照不是随便就能拿到的（如果真的 最后能赚钱的话），不然就会想美国一样，每隔个十年八年就要倒掉一大批。

（2011-01-19）

&#x20;05.网友：您曾说下次如果有机会再与老巴吃饭，一定专门请教怎么才能搞懂银 行与保险公司，后来有请教了吗？如果有请教了，或您自己悟明白了，可以谈谈                              您对这方面的理解吗？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x5927;道理明白，细节上不太懂，所以我还是不太会投资这类公司。

（2015-05-12）

&#x20;06.网友：大道是不是对银行的有打算啦？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6CA1;有。最近老巴提了一句，所以我开始想想，准备花几年时间想，因为 银行确实不可替代，但实体银行会不会被替代还不知道呢。（2019-03-21）

07.网友：欢迎大道关注银行。至于实体银行会不会消失，我的答案是不会。举 个例子，银行不可能凭企业的线上申请材料放几千万或者几个亿的贷款。贷前调 查还是能在很大程度减少信息不对称的。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6211;不认为实体银行会马上消失，但未来银行很可能和现在很不一样了。 互联网，尤其是移动互联网正在改变太多的东西，包括银行。（2019-03-21）

网友：请教大道对于银行业有没有新的看法？

&#x20;**段永平：**&#x6CA1;啥新想法，依然觉得移动互联网会对传统银行造成冲击。也许再有 10 年就能看到变化了。(2019-08-17)

#### 10.啤酒企业

网友：我在观察一个啤酒企业，这个企业的酒在北京一带占据绝对主流，我看中 这股票的原因是利润比较稳定，品牌不错，南方地区很多市场还没有，发展空间 很大，现在的价位虽然不是相当便宜，但已经可以关注了，希望各位讨论一下， 给我一些启发。<br>

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x5564;酒和水差不过，运费很高，只能就地生产，所以好的地方品牌未必就 能跑到别的地方去卖。啤酒牌子多了去了，能够成为全国或世界型品牌的极少， 不然可口可乐也能卖啤酒了。个人感觉里见过最不聪明的啤酒品牌叫“茅台啤 酒”，真不知道他们是哪根神经起了主导作用才这么做的。（2013-03-22）

网友：最近也在试着去了解青岛啤酒，总感觉啤酒行业的品牌忠诚度不是特别强

（在品牌档次差距不大的时候）。就行业属性而言，会是门好生意么？不知道段 哥有没有可以分享的看法？

&#x20;[**段永平**](http://nteswjq.blog.163.com/)**：**&#x4E0D;太了解好像也不容易理解。如果能做成可口可乐那样的啤酒当然是厉 害的，但好像没见到过。感觉啤酒的整体市场还是很大的。（2013-03-24）

**红酒** 网友：最近在思考葡萄酒这个行业在中国发展，考虑健康生活在国人的慢慢普及， 红酒会慢慢得以认同，但目前格局受外国品牌冲击行业有些困难，段总如何看待 国有品牌在未来格局。

**段永平：**&#x4F5C;为喜欢喝点好红酒的人，对国产葡萄酒没看法。（2013-03-29）

网友：一个是张裕 B。这两年来，以 B 股计价的张裕，总值多在 10 亿——20 亿 美元之间，个人认为是很便宜的！就是重建，这个价也重建不出一个百年老牌的。

网友 N：看到大家和段总提个股，说一下对张裕认识。以前不懂时，“投资”过 张裕一年多，运气好逃过大跌。后来也有所关注，随着对投资认知的加深，感觉 企业偏市场导向，过于在乎营销、利润等，文化不太喜欢，可能个人理解有误。

**段永平：**&#x6CA1;看过公司，但酒确实不是我愿意喝的那种，所以我不会有任何兴趣去 了解这家公司的。（2015-12-01）

网友：几年前张裕还在被不少投资者看好，接下来面对的是大幅的下滑，是没看 到来自西方的冲击，即使有些投资者自己也是喝红酒的人（其中有爱周游世界的 西方人），段总投资茅台就没有碰到这样的滑铁卢。张裕的现象让我有些困惑， 也不知道错投的投资者这其中有多少像是芒格说的误判心理，有多少是不够了解 市场和产品的整体情况，个人觉得红酒会受到冲击不是非常难看出来。

**段永平：**&#x7EA2;酒是个特别个性化的产品，世界上大概有 10 万个红酒品牌（如果不 是更多的话）。红酒受原材料的影响是无法保持产品的高度一致性的，所以无法 大量生产。能大量生产的酒也许就不该叫红酒。（2017-08-20）

#### 11. 百货行业

01.网友：全国百货行业中第一个“1000 亿销售额”大公司的股票令我有点搞不 懂，现在市值 94 个亿，自有商业地产保守估值 60 个亿，净资产收益率百分之八，

年末公司账面的现金 30 多个亿，而且他的购物中心在东北和内蒙都在最好的地 段，也都是人气最旺的购物中心，超市做的也很好，我是内蒙一个连锁超市的一 个供应商（做了有七年了对超市百货有一定了解），今年我做的这个超市连锁集 团（当地最火的超市百货连锁）也被它收购了，段老师，这样的公司算严重低估 的股票吗？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6CA1;人可以根据你提供的这些资料来判断一个公司是不是低估了。不过， 百货行业还是远离一点的好，除非真的觉得特别便宜。淘宝这种商业模式最后会 让大多数的地面店麻烦的，越大的店越麻烦。（2011-12-17）

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x8BB0;得很多年以前，有一次看资料，发现 WMT 的纯利大概只有 5%左右， 而 Kmart 的成本比 Wmart 大约高 5%。我一想，这 Kmart 早晚要完蛋，只是不知 道多久而已。结果 3 年后 Kmart 就到了。

有人说我是乌鸦嘴，说谁倒谁最后就倒了。其实，没那么邪乎，但确实我说要出 大麻烦的公司好像大多数最后都出了。投资里很重要的一点就是要避免大麻烦。 巴菲特讲的不想拿 10 年的企业你就不应该投。

02.网友：可否谈一下你对零售业的理解， 你对当前的连锁业进入电商有什么看 法。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x89C9;得都是被逼的，最后没几家能活下来。（2012-05-31）

【引用】巴菲特 31 年股东信精华---3（2012-02-17）

64、在一个没有管制的商品标准化产业，一家公司不是降低成本增加竞争力，就 是被迫倒闭关门。（1994）

65、**零售业的经营相当不易，在我个人的投资生涯中，我看过许多零售业曾经 拥有极高的成长率与股东权益报酬率，但是到最后，突然间表现急速下滑，很 多甚至被迫以倒闭关门收场。**&#x6BD4;起一般制造业或服务业，这种剎那间的永恒在零 售业屡见不鲜，部分原因是这些零售业者必须时时保持聪明警戒，因为你的竞争 对手随时准备复制你的做法，然后超越你，同时消费者绝对不会吝于给予新加入 业者尝试的机会。零售业一旦业绩下滑，注定就会失败。相对于这种必须时时保 持警戒的产业，还有一种我称之为只要聪明一时的产业，举个例子来说，如果你 在很早以前就懂得睿智地买下一家地方电视台，你甚至可以把它交给懒惰又差劲 的亲人来经营，而这项事业却仍然可以好好地经营个几十年，当然若是你懂得将 Tom Murphy（汤姆·墨菲）摆在正确的位置之上，你所获得的将会更惊人，**但是 对零售业来说，要是用人不当的话，就等于买了一张准备倒闭关门的门票。**

（1995）

#### 12.新零售

网友：国内现在都在讨论，并且有很多企业都在搞的新零售，您怎么看？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6CA1;太关注过这个名词，你是说像拼多多这种电商吗？目前 74%的美国人 民的买东西的首选已经是亚马逊了（今天网上看到的），所以说新零售确实很恐 怖。不过这个行业非常有可能会变的赢家通吃，或者是几个大头垄断，很多企业 搞的现象也许持续不了太久。（2019-03-21 ）

#### 13.Facebook 脸书

01.网友：想向您请教最近的热点问题：Facebook 和网络隐私保护。

Facebook 的商业模式，我个人理解：是在链接人的同时，通过用户数据分析理 解了解人，并据此通过广告等形式商业化。

我想请教您：如果个人数据的运用权利更多地交给用户选择，那么：基于信息流 推送的商业模式是否还可以成立？Facebook（脸书）生意模式是否会受到严重的 冲击？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x4E2A;人认为 fb 还是一样厉害。用户没有别的选择。（2018-05-01）

02.网友：您怎么看 FB（脸书），高管的不断离职会不会对公司产生致命打击？ 现价可以买入做长期投资吗？

&#x20;[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6211;不推荐人买股票，我觉得如果你需要问人该不该买的时候那就还没到 你能买的时候。我个人觉得 FB 也是家不错的公司，生意模式和文化都不错，扎

克伯格年轻有为，还能好好干很多年。公司有人离职很正常。（2019-03-20）

网友：您投资 FB（脸书），应该是大概率觉得它未来 5-10 年净利润达到 500 亿 美金左右，请问能分享下这其中的逻辑吗？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x5927;概就是觉得生意模式很好，企业文化也很好，扎克伯克还那么年轻， 所以这个公司还会有不错的成长空间。（2019-[03-23](https://xueqiu.com/1247347556/123418921)）&#x20;

03.网友：最近看了一些你在雪球的分享，你多次陈述公司本分的重要性。我持 有 fb（脸书）的股票有一段时间了，获利还算可以，如果不考虑本分的角度应该 会继续长期持有。不过 fb 近几个月频繁爆出隐私泄露的问题（最近几天又爆出 明文存储用户账号密码），我在思考 fb 在本分这个问题上是否有明显的瑕疵， 或者怎么理解公司的本分？

**段永平**：FB 原来的使命是“连接世界”但没有注意隐私，现在使命不变但注重隐 私已经是前提了。好公司犯错误时往往是买入的机会。（2019-03-28）

04.引用: Facebook（脸书）财报解读： 走出阴霾， 变现有惊喜<br>

Facebook (FB.US)是价值投资者口中的好公司，拥有他们梦寐以求的财务报表： 堪比小国国库的...

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x9690;私是头等事，扩张是正经事。（2019-05-01）

#### 14.诺基亚与三星

&#x20;01.网友：诺基亚有很多品类产品，我印象里都有这个策略，低端占市场，中高 端挣利润。如果没有 APPLE，我觉得似乎   nokia   还在高端市场有好日子过。其实，  早几年             nokia 也转向了移动互联网领域，战略上似乎没有错。只是迟迟没有打开 这个市场大门，因为用的还是原来的常规武器，不是像 apple 这样的颠覆性的 ， 重新定义了手机的 iphone。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x8FD9;是诺基亚的大错之一。从他们推出低端机开始我就猜他们会有今天了。

![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif)（2010-10-15）

02.网友：去年开始一直在思考苹果、三星的生意，说下个人的不成熟的观点， 三星的优势，三星在过去 10 年，在中国手机市场一直排名靠前。三星的研发、 学习能力，芯片设计、显示屏技术等。三星在智能机上给我的感觉是迟到者，但 是追赶速度极快。不知道是诺基亚、摩托罗拉等弱了点，还是三星强了点（我很 疑惑的一点之一）？劣势：中高低端全线作战，利润率低，购物体验不好。更像 一个卖硬件的，一次性收入。安卓机竞争者越来越多。负债率比较高、固定投资 比较大。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x4E09;星的生意模式其实不太好，属于疲于奔命的那种，不然不会要求员工 6 点半上班哈（也许是谣传）。**三星的问题在于其实没有产品追求，是生意导向 的公司，焦点太发散，时间长了大概率会出问题。**&#x4E0D;过韩国企业非常努力，会把 危机延长到比较大才出来，这点和日本企业比较像。

03.网友：目前在智能机市场，一种模式是类似三星这种“多机型”模式，另外 一种是类似苹果的“精品”模式。 您能否评价一下哪一种模式更好，为什么？&#x20;

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6709;本事做成苹果的会愿意做三星吗？（2013-08-02）

网友： 1，三星和苹果的差距在于价值观。三星很多东西都不愿舍弃，苹果对该 舍弃的东西是真的下得了手。

2，全球智能手机过几年能卖出 15 亿部以上，苹果能占有 20%份额，每年卖出 3-4

亿部手机，每年赚个 600-1000 亿，那时候软件部分应该也很厉害了，只要苹果 的企业文化不发生大的变化，这些都会发生的，如果期间苹果再研发出个厉害的 硬件，对投资者就是额外的惊喜了。

**段永平：**&#x770B;三星和苹果有点像看篮球里美国队对其他队的比赛，场面上很激烈， 其实差距很大。（2013-02-13） <br>

04[，引用：苹果正在想尽一切办法摆脱对三星零部件供应的依赖](https://xueqiu.com/S/AAPL/22184497) 尽管苹果与三星在法庭上打得不可开交，但事实上，法庭之外，苹果现在每年却 不得不要支付给三星的零部件采购费用超过 70 亿美元。苹果是三星的最大客户，

在其 2011 年总额 1090 亿美元的收入中占比达 7.6%。这势必让苹果非常不甘心。 在库克领导下，苹果正在竭力摆…….

**段永平：**&#x8FD9;只是个时间问题，同时也让三星很难受，**因为这会逼着三星不停地追** **加投资在设备上，最后赚一堆过时的设备**。也许不用 10 年，三星的日子就会比 现在那些日本的老牌家电公司难受。 一直没搞懂为什么日元那么强，哪天日元 突然疲软的话，三星可能马上就难过了。（2012-08-31）

#### 15.塑胶、五金、电子零件公司

网友：请教段总生产电子产品零配件的公司（如塑胶、五金、电子零件）如何进 行价值分析：该类公司都有几个特点：

一是有大量的应收款，目前国内电子行业普通都是三个月（90 天）的结款周期

（当然少数独家供应，不能替代的品牌零件除外）。客户是类似 NOKIA（诺基亚）， 三星、LG 及国内品牌等终端品牌客户。电子行业是充分竞争的行业，一旦客户 中倒下一个，都会造成大量的款项无法收回。想想几年前夏新、波导的倒下，其 大量的供应商一定很受伤。

二是公司业绩不稳定，易怱上怱下。当傍上像 NOKIA、APPLE 这样的超级大客户， 业绩会快速飙涨。一旦合作出现问题，业绩也会一落千丈。当然如能超级大客户 前介入，则是巨大的机会。

三是进入门槛比较低。基本很少有技术壁垒。 [**段永平**](http://nteswjq.blog.163.com/)**：**&#x5475;呵，你要是想忙一天的话，就请朋友来家里吃饭。 你要是想忙一年的话，就装修你的房子。 你要是想忙一辈子的话，就多买几个这样的企业。（2011-01-05）

网友：你对恒生电子怎么看？

**段永平：**&#x5BF9;不起，不知道这家公司。不过，一般来讲，大部分“电子公司”可能 都不值得投资，因为生意模式一般都不会太好。(2019-09-09)

#### 16.高端，低端商业模式

01.网友：小米刚成立时说只做发烧手机，1 年后做了青春版，现在又出了更低 端的红米，不懂雷军想怎样，不看好！我看小米最值钱的也就是开发的一些软件。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x4F4E;价是条最容易的路，也是一条最难的路。（2013-08-04）<br>

**02.网友：（从高端入手真是厉害）为什么说从高端入手真厉害？您能说说从高 端市场入手比低端入手的道理及利弊吗？** &#x20;

[**段永平**](http://nteswjq.blog.163.com/)**：很少有人这样做的，因为成功率太低。但如果成功的话，成本是最低 的**。（2013-07-02）

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6211;们一直算是高端机吧？这次只是进入智能手机而已。一般而言，我们 只要有足够长的时间，国内好像都是算很厉害的那种吧。相信一段时间后国内买 android 的人多数都会把 OPPO 作为选项之一的。（[2011-07-14）](https://xueqiu.com/1247347556/20317354)

03.网友：请教一下学长现在对 android 的前景怎么看呢？您觉得 android 做高 端有前途吗？另外您觉得苹果会不会着力占领廉价手机市场？这样做的话对他 们好处多还是坏处多？&#x20;

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x5728;相当长的时间里，android 的量依然会是大的。不能说 android 做高 端如何，但某个品牌用 android 做个很贵的手机出来是很可能的，会买的人当然 要叫那个高端了。另外，在 android 里也有高低端之分。

**苹果大概永远都不会专门做所谓的廉价手机市场，对学弟提出这个问题感到有 点意外，说明你对企业的理解已经和大众很接近了。苹果的策略一直都在那里 摆着呢，做最好的产品，让前面的产品做入门级以及提高级的产品。大概三年 内，当 iphone7 出来的时候，iphone5c 就会变成入门级的产品，大概会卖到 2000 出头，那个时候会有点好看哈。**

另外，iphone5s 绝对是划时代的，不知道为什么那么多人会视而不见？我可以 肯定的是，三星里很多人要开始“熬夜多压力大了”。（2013-09-03）

04\. 网友：哪位朋友能谈谈 iwatch？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x90A3;还是一个传说，从何谈起？不过，**关于苹果的传说最搞笑的就是廉价** **iphone。有了这个传说后，接着就有了苹果该不该这样做的争论。其实不管认 为苹果该不该卖廉价 iphone 的人大概都是不太懂苹果的，因为苹果的文化里根 本就不会有这个争论。**（2013-02-15）

#### 17.联想

01.[网友：联想 3 年：如何走出阴影](https://xueqiu.com/3533335030/21470320)

在 PC 上的市场份额跃居至全球第二大的联想集团，如何走出行业领先者和技术 变革的阴影，成为一家拥有未来的公司？ 中国最大的 PC 厂商联想集团距离自己 的梦想似乎又近了一步。在过去 3 年的时间里，它的表现堪称神奇。 这家吞下 IBM PC 业务立志成为全球性...

&#x20;[**段永平**](http://nteswjq.blog.163.com/)**：**&#x8FD9;么长的文章好难看。**靠低价得到的份额实际就是阴影本身，很难走出 来的。看看诺基亚就明白了。**（[2012-02-19）](https://xueqiu.com/1247347556/21470369)<br>

02.网友：老段，BYD（比亚迪）的成本优势应属于护城河，而且是比较重要的护 城河，你认为呢？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x5475;呵，还没见过成本优势可以成“护城河”的，**很少有企业能长期维持 低成本的，制造业好像没见过。而且靠自己产品卖低价的企业就很难有长久的， 至少我没见过。**&#x8FD9;是我的观点，和 BYD 无关。（2010-05-24）

**03.引用:**[**惠普首季** **PC** **出货反超苹果** **夺回霸主地位**](https://xueqiu.com/S/AAPL/21790034)

据市场调研公司 Canays 周二发布的报告显示，惠普公司今年第一季度的 PC 出货 量反超苹果，重新夺回市场霸主的地位。Canays 的统计是将平板电脑计入了 PC 的出货量，而 IPAD（平板电脑）去年第四季度的出货量达到创纪录的 1500 万台， 使得苹果当季超越惠普，成为……

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x5475;呵，当个不那么赚钱的霸主味道不太好哦。（2012-05-10）

04.惠普 TouchPad（平板电脑）平板市场占有率第二三星排第三 IPad（平板电脑）之外各大平板电脑市场份额，市场调研机构 NPD 周二发布了一 分报告，显示了目前除了评估 iPad 之外，其他平板电脑的市场占有率情况，而 排位第一的居然是即将绝版的惠普 TouchPad。尽管平板电脑已经成为了众多 PC 企业……

**段永平：**&#x8FD9;是对市场占有率含义的最好解释的案例--除了 ipad 以外，占有率最 高的亏得最多。很高兴我们的 pad 没敢推，理性面对现实的勇气有时候还是会有 回报的。（2011-11-24）

#### 18.航海业、航空业

01.网友：我看好的船运公司，希腊船东（DSX），这个行业目前处在极度困难 期。但公司还是不错的，危机之前，他就看到了危机，并储备了大量现金，被 业内称为最保守的船东。近几年不但在危机中低成本壮大，还保持了较低的负 债，和一定量的现金。管理层也是租赁业中一流的！

**段永平：**&#x8239;运像航空公司，生意模式很不好，时间长了后，什么价都不便宜， 不是我喜欢的投资。（2015-11-30）

02.网友：我说的这家公司是一家船舶（大型船舶）出租公司。在整个行业陷 入泥潭时，她却与大多同行反其道而行，在过去高峰期储备现金，称现在船价 低迷时，适度买入优质低价的船舶。除非出现颠覆现代的造船技术或不可预知 的灾难，否则行业一旦复苏，公司的收益增长是可以确定的！公司这两年的业 绩肯定下滑是从公司和客户签订的出租合同上看到租金是在下调的，确定性非 常高。纠结的地方就是：公司的股价已经是净资产的 5 折了，而且公司仍然在 行业低谷期稳步低成本发展，但公司今明两年的业绩肯定下滑。

**段永平：**&#x5EFA;议你用更长的时间看。感觉你在等别人把价格抬起来以后你再买， 对不？不过，我对在个行业不了解，直觉觉得这个行业的生意模式不是我喜欢 的那种，要借很多钱（意味着风险大），而且产品没差异化（意味着很难有长 期的好利润）。（[2012-06-03](https://xueqiu.com/1247347556/21868911)）

03.网友：当一个不会被淘汰的行业，在产能过剩时期，要经历一场异常惨烈的 淘汰赛，只有把那些本不该从事该行业的弱者淘汰出局！行业才能恢复正常。以 大起大落的航运为例：当一艘日成本为 2 万美元的大船，在船舶紧缺时代，日租

能达到 23 万美元，会吸引大量投资者投资船舶，造成船舶过剩！当日租金跌到

0.2 万美金的时候，船舶每日都处于严重亏损状态。弱者无力支撑，就会破产倒 闭或贱卖船舶，因为船舶维护成本很高，很多还能使用的船舶也会被拆解！当旧 船被拆解到一定数量后，就会逐步平衡或紧缺，进入下一轮牛市（因为造大船需 要 2 年的时间，一旦船舶紧缺，两年内很难填补缺口，就会进入牛市！）无论如 何，行业里都会有一部分实力雄厚，早早做好准备的船东不仅活下来，还在熊市 里低价买入大量价廉物美的资产，成为下一轮牛市的赢家，重点是找到这种公司。

**段永平：**&#x5F88;烂的生意模式。花了很长时间，守着一个生意模式很烂的公司，机会 成本很高，心情也不好吧？花掉的时间也是机会成本。我也有过两个小时赚 20 多倍的记录，但不知道如何才能重复（200 块到 5000 块）。 （2015-09-09）

04.网友：最近南方航空、中国国航涨的很多，可惜都是亏损股，去年两家国 有航空公司巨亏，国家几十亿的注资。中国航空公司这么没有竞争力，到时候 大规模的告诉铁路还要跟航空公司竞争。

**段永平：**&#x822A;空公司还是不碰为好。航空公司的产品难以做到差异化，没办法赚 到钱，长期来讲没投资价值。这是巴菲特教我的，省了我好多钱。（2010-04- 23）

**段永平：**&#x7A81;然想到老巴说过的那句话：如果你在坑里，至少别再往下挖了。产 品完全没有差异化的公司，将来早晚都会出问题的。航空公司是非常好的例子， 其他类似的 50 步和 100 步差别的就不细说了。（2015-12-02）

#### 19.富士康、OEM（代工）

01.网友：段总对富士康有啥看法？

**段永平：**&#x4E00;直不太喜欢。（2010-05-26）

02.网友：想起来 OEM 的问题在投资里对应的术语就是属于“生意模式”不好， 一早就应该避开。以前意识到这个问题的时候不知道这个名词，也还不知道投 资、巴菲特，现在对应上了。

**段永平：**&#x5F88;专注地做 OEM 也许是可以做得不错的，比如 TSMC。25 年前我就告诉 UMC 的人，TSMC 将来会更厉害。（2016-10-25）<br>

网友：25 年前，半导体代工才刚刚起步，段总当时看好 TSMC（台积电）哪些 方面啊？

目前代工的竞争更加激烈，INTEL 也加入战团，SAMSUNG，TSMC，INTEL，段总 更看好谁呢？

**段永平：**&#x8C01;更专注，谁就更有机会。（2016-10-26）

网友：从段总 20 年前就不做 OEM，建立自己的品牌，现在我越来越深信，功夫 熊猫里的一句经典台词“There is no accident 世上无偶然”。这还是跟段总 偷学过来的。

**段永平：**&#x6211;们其实从来就没做过 OEM，但 20 年前确定了不做，所以谈都不谈了， 省了很多时间。（2016-10-25）

网友：在中国民营企业发展的初期，可能几乎没什么人想得到不做国际大公司 的代工，就像这里说到的没有人拒绝他们的订单。几年前当我意识到步步高是 从开始就选择了不代工这条路的时候觉得非常惊讶，因为这个觉知实在是太早 了，觉得怎么可能知道。这时候实际上很多的工厂还是成熟的老牌港台企业不 仅仅是民企，步步高在起步的时候就已经在有些方面超过他们了，这是让人觉 得很佩服的地方，这只有文化非常好的企业才可能想得到、做得到，也是我早 就看好段总的主要原因之一。

**段永平：**&#x5982;果你想的是 10 年 20 年后的事情，这个决定其实非常简单且容易。 凡事能往前（后）想几年，往往难度会大幅度下来。（2016-10-18）

03.【富士康千家店计划战败 郭台铭下伐失利】

两年前郭台铭提出五年内在内地创办 10000 家“万马奔腾”自营渠道连锁店的

目标，其中今年目标是开出 1000 家，时至今日，万马奔腾门店在全国最多的

时候也仅开出 280 多家。一年多的渠道试水，万马奔腾似乎面临难以为继的状 态。

**段永平：**&#x8001;郭虽然在代工业世界顶尖，但对零售业完全没概念。不过，他是有 资格尝试的人，不会因此出啥问题。（2011-12-11）

[**不明真相的群众**](https://xueqiu.com/simon):他搞太阳能的计划，是不是要更靠谱一些？

**段永平：**&#x76EE;前的光伏产业最后就会像加工业，一定是个拼得死去活来的结局。 老郭在加工业里属于剩者，或许光伏产业他也有机会？不过，所谓的光伏产业<br>

和加工业不一样的地方是，几乎可以肯定加工业会一直以某种形式存在，但光 伏产业却可能某天被替代。（2011-12-11）&#x20;

#### 20.黑电，白电，厨电

网友：同样是家电行业，为什么黑电，白电，厨电的净利率会相差这么大？

**段永平：**&#x5E94;该是商业模式造成的。彩电非常难有差异化，白电和厨电产品的差异 化显然是要高些的。（2017-10-18）

#### 21.淘宝模式和京东模式

01.网友：您觉得中国来说，未来是京东这种 b2c 强势，还是淘宝强势？ 我估 计又是个美国的翻版？

**段永平：**&#x6709;可比性吗？（2010-09-16）

网友：段总有空能否讲讲淘宝模式和京东模式您的看法？

**段永平：**&#x4EAC;东的模式好像不复杂，就是砸钱--融资--砸钱的过程。淘宝说不定有 一天会成为中国最大的广告公司的。（2010-07-04）

网友：请问大道对广告市场怎么看？

**段永平：**&#x5E7F;告市场很大，和经济总量几乎是线性相关的。（2019-04-29）

02.网友：据了解，2010 年京东商城营业额预计 108 亿元，现已完成超过 80 亿 元。分析称开放平台可为其带来较高毛利率，为上市做准备。

**段永平：**&#x4E0D;赚钱的生意多少营业额都是没用的。（2010-09-16）

03.网友：京东目前没有办法，互联网企业总是这样，先得上量突破平衡点，突 破了可能就是一马平川。淘宝如果是 C2C 模式，淘宝盈利大头应该是广告。但 现在的趋势已经出来，就是 C2C 后端的 C 数量会逐渐减少，很少的大 C 取代大 量的小 C，那么淘宝未来不是广告，而是靠“抽水”提成。

**段永平：**&#x5EFA;不起“护城河”的话，砸多少钱都是没用的。（2010-07-07）

04.引用：刘强东：新进 2.5 万新员工 最大挑战来自团队

2012 年京东商城最大的挑战仍然来自团队本身。 刘强东表示，京东商城高管近

日用五天时间制定了明年的公司战略，但总体来看 2012 年京东商城最大的挑战

还是来自团队，“特别是如何迎接即将加入京东的 25000 多名新同...<br>

**段永平：**&#x8FD9;么低的 margin 和这么点营业额要用这么多人啊，这个生意模式看起 来不是很美妙。（2011-12-28）

网友 W：2013 年完不成的，光物流就至少得 5 年以上，何况互联网行业必须时时 更新技术。

&#x20;**段永平：**&#x7269;流大概要靠大环境了，自己搞物流费力不讨好。京东那个搞法长期是                        要吃苦头的。2011-09-27）

**段永平：**&#x6211;觉得如果他们真的需要增加那么多员工，为什么不分 3 年而非要在一 年里完成呢？除非他们真是超人，不然这种做法后患比较大。（2011-12-30）

网友 j：原本以为中国靠这种自杀的方法做生意的只有马云一人，没想到还有更 狠的，从来没本事赚过什么钱！最蠢的是那些 PE 们。

**段永平：**&#x9A6C;云的生意模式很好啊。（2011-12-28）&#x20;

网友 X：看过刘强东优米网采访，感觉人很踏实，他说京东从不会亏本卖货（除 了促销，总体相信）；注重用户体验（自己的配送系统在建，将来会剥离，我觉 得中国最大的几个物流公司里会有京东）我遇到过在京东花了花了近十万的人， 非常信赖京东，能留住顾客；他们的系统是自己研发的，成本控制高效，商品价 格都是信息系统自动控制的。非常欣赏他们管培生活动，刘强东说他们如果不为 将来投资现在就可以赚钱了，一直很看好京东，除了他们估价太高。看了这次新 进 2.5 万员工（物流？）有点担心他们现金流及人员管理能否跟上，步子有点迈 得太大了。京东如果能活下来（我很相信），我觉得会超越淘宝。（五到十年来 看）

**段永平：** 除了促销是什么意思？（2011-12-29）

网友 X：我说的是指类似于超市里的每天一款特价商品，京东有时会搞限时抢购。

（就几款非大面积的那种）

&#x20;**段永平：**&#x4E0D;好的生意模式也是有机会在一段时间里赚钱的，但赚起来累，效率差， 持久性不好。需要用很多人（相对营业额和利润而言）是不好的模式的一个特征。 另外，短期内增加很多人往往也是很危险的（比如一年内在一万多人的基础上增 加两万多人），当然有些公司可能会是例外，虽然我还没见过例外。（2011-12-29）

网友 F：那如果对比亚马逊，沃尔玛的表现呢？大道觉得他们的模式好吗？

**段永平：**&#x4F60;对比一下双方的人数、营业额，利润等指标看看，我没认真研究过。 印象中 amzn 的模式不错，但 wmt 恐怕很难再有更大作为了。（2011-12-29）

网友 f：总的来说，淘宝模式本质上无法把控产品品质和一系列服务等。这是硬 伤，从消费者层面，京东是胜出的。

**段永平：**&#x5982;果两者规模相当的话，你可能会得到不同的结论（2011-12-29） 网友 l：也得看跟谁比吧。没记错的话 2010 年京东的人均销售额大概是 100 万，

国美不到 20 万，这么看效率还可以。

网友：已经证伪了，之前的统计是搞错了国美的员工数，估计把临时工、导购之 类的也算进去了，人均实际销售额应该也在 100 万左右

**段永平：逻辑上讲，两个火鸡加起来也不会变成老鹰的。我这里讲的实际上和 京东无关，只是就商业模式说点看法而已，5 年以后大家就知道对错了。**

（2011-12-30） &#x20;

05.网友：阿里最具前景的业务淘宝，其互联网生意模式并不具有护城河。成功 之道是解决了网络支付的信用。但是它没有很好地解决商品信誉和服务信誉。我 每个月都会上淘宝买两三样东西，但是最近发生一些令人不愉快的事情，比如我 通过旺旺和商家聊的时候，最后决定不买了，对方会回复“滚”。这就是我对其 远景的担忧。

&#x20;**段永平：**&#x4ED6;那个护城河很宽啊，不然你可以想象一下和他做同样的生意会是什么 感觉就明白了。貌似你还需要进一步搞懂“护城河”的意思。哪里都有很烂的买 家和卖家，你碰上个也很正常，但这种不好的卖家未来是没法在淘宝混下去的， 这也是淘宝的“护城河”的一部分。（2010-10-11）

网友 j：我没有质疑阿里巴巴和淘宝的生意，我只是认为马云不是一个投资人的 好朋友，特别是二级市场。不尊重股东的人，也得不到股东的尊重！我比较敬重 的生意模式是附加值，好比苹果。本人在中国香港承销过一家企业上市，叫谭木 匠，我也很敬重。

**段永平：**&#x6211;倒是见到许多许多“股东第一”的公司，由于不停地为了取悦“华尔 街”而采取短期行为，最后业绩差导致股东利益都没有了。马云这种实际上是最 尊重股东利益的那一类了。我个人投资时比较喜欢这类“股东第 3”的公司，最 害怕那种“股东第一”的公司。（2012-01-02）&#x20;

06.网友：京东改用 JD.com 为域名，并用“金属狗”为吉祥物，淘宝为“天猫”， 看来“猫狗大战第三部”开始了。

**段永平：**&#x4E07;亿级和百亿级之间的竞争一般不叫大战吧？（2013-04-01） 07.网友：段总能不能说说为什么不看好京东？<br>

&#x20;**段永平：**&#x6211;没说不看好，只是说不了解而已。不过，作为行业中人，确实也没有 想出来能特别看好的理由。（2010-09-16） &#x20;

网友：马云讲京东注定悲剧，对此我觉得有些懂，觉得京东的模式有问题，也觉 得阿里好，但又讲不清楚到底好在什么地方，不知道段哥如何看？

**段永平：**&#x9A6C;云说得很清楚了，只不过不应该在澡堂子外面说而已，你仔细看看， 慢慢琢磨吧。（2015-01-09）

#### 22.(ebay 和亚马逊) 淘宝模式

01.网友：阿段有没有研究过 amzn（亚马逊）？对即将在美国上市的京东怎么看？

**段永平：**&#x61;mzn 不错。京东知道一点点，没什么感觉。（2010-09-16）

02.网友：我认为京东也很牛，不知道大道用不用京东。京东的理念与亚马逊一 致，个人觉得比较靠谱，会是阿里的强劲对手。

**段永平：**&#x4E9A;马逊是不错，但美国物流环境好。京东需要建自己的物流，我有点不 太懂。目前京东这个规模依然亏钱，感觉商业模式不是太理想，但没太认真研究 过。（2012-02-29）

网友：能谈谈京东与亚马逊的区别吗？

**段永平：**&#x4E24;家公司我都不太了解。似乎两家公司都是物流公司而且都不太容易赚 钱，但 amazon 似乎在未来要厉害很多。另外，贝索斯几乎每天回家吃饭洗碗。

（2018-09-26）&#x20;

03.网友：能说说 ebay 犯了哪些奇怪的错误而被亚马逊抢了生意吗

**段永平：**&#x65;bay 是先收费后卖（卖了还要收），amzn 是卖了才收费。（2010-10-29）

04.网友：虽然 eBay 自身增长乏力，被 Amazon 赶超，但 Paypal 的发展势头依 然很猛啊，而且已经占到 eBay 利润的很大一部分，您怎么看这个问题？另外我 觉得，对阿里巴巴也是一样的，支付宝的价值大于淘宝等平台的价值。

**段永平：**&#x5728;国内淘宝约等于 ebay+amazon。（ 2010-07-07）&#x20;

网友：我也很看好淘宝，但是觉得你说的淘宝约等于 ebay+amazon 过于乐观，就 我个人购物体验来讲，对于比较大件的商品无法接受小卖家，哪怕便宜一点。我 在淘宝买大件的经验告诉我，尽管有很强的信誉评分约束机制，体验还是不够理 想。

**段永平：**&#x6211;讲的是生意模式。 （2010-07-14）<br>

#### 23.高负债商业模式

01.网友：看了一下茅台和万科的年报，两家公司的盈利居然相差无几，而市值 几乎相差一半，如果有钱买下整家公司的话，你会选择谁呢？

**段永平：**&#x4F60;借过钱不？（2014-3-23） 网友：段大哥别笑话我，没有看懂“你借过钱不”是想说明什么？ **段永平：**&#x6162;慢看就懂了。（2014-3-23）

网友补充 1：(茅台先收钱再发货，万科需要大量囤地，需要先向银行贷款，其 中风险和生意模式，段大哥一句“你借过钱不”一针见血啊。)

网友补充 2：大家可以想想借钱的好处和坏处：好处是如果一帆风顺的话会发展 得快点；坏处 1：增加经营成本，容易去赚不该赚的钱；2：经常在 10 年、8 年 中会有经济危机或者企业本身的经营困难，从而出现债权人要把钱收回去，资金 周转出问题；貌似相当比例死掉的企业都是倒在这两点上。

【引用】巴菲特 31 年股东信精华（2012-02-17）

**任何一家公司的获利能力取决于（1）资产报酬率（2）负债的成本（3）财务杠 杆的运用（也就是其运用负债而非股东权益来支应资产取得的程度）。（1995）**

**段永平**：我个人一般对有负债的公司不太愿意重仓，另外就是无论多有把握也绝 对不要用 margin。（2013-02-19）

02\. 网友：当然还要看看段老师提到的负债率，我个人偏爱低负债、零负债的公 司。还要看看资本开支，有不少公司是资本黑洞，利润只是纸上富贵。有些公司 多年以来全部利润再投入都不够，还要增发或举债，我会避开此类公司，哪怕利 润表很漂亮: &#x20;

**段永平**：我也尽量避开。GE 对我来讲是个例外，但 GE 的负债有点像银行的负债。

（2010-04-02）

03.网友：想到一个问题：如果投了一个负债率很高的企业，对于投资者而言， 这属于使用 Margin 吗？

**段永平：**&#x4F3C;乎不属于直接用 margin ，不会导致你需要富两次。但是，我是不太 喜欢买负债率高的企业的，除非我能特别懂。（2016-11-12）

**段永平**：没统计过。反正一般负债多的公司我也不买，GE 例外了一次，准备差 不多换一部分到 YAHOO。要看谁涨得快了。（2010-04-23）

04.引用：巴菲特 1990 年给伯克希尔·哈撒韦股东的信：<br>

&#x20;“我们被告知，大量的债务会让经营管理者比以往更加努力专注，就像在汽车 的方向盘上装上一把匕首会让驾驶员异常小心的驾驶。我们承认，这种让人集中 注意力的方式会造就一个非常警惕的驾驶员。但另外一个肯定的后果则是，一旦 汽车碰上即使是最小的小坑或者一点冰，将导致一场致命而且不必要的事故。

（2012-01-12）&#x20;

05.网友：最近很困惑，经营的生意欠账太多，并且随着时间推移越来越深陷。 在“做对的事来看，失去现金流的控制明显不是对的事”，也不利于发展。我打 算要么改变模式，要么退出行业。您认为呢？我这属于家具建材行业。

&#x20;**段永平：不了解你的行业，感觉是难以差异化和难以规模化的行业，应该蛮辛苦 的。不管什么生意，欠债多总是不舒服的，而且很可能早晚会出问题 。**

（2019-04-28）

06.网友：我有个一直困扰我很久的问题想请教您：“绿城中国”目前市值 110

亿，2018 年财报显示现金及等价物 490 亿，流动资产 2800 亿，总负债 2500 亿，

即使现在清算也有 300 亿的价值，收入每年提高，缺点是年利润 11 亿有下滑（2

017 年 26 亿利润），另外绿城品质和口碑一直不错，为什么股价一直很低，我 清楚这个标的肯定长期不如贵州茅台和中国平安，但就是不明白什么原因导致价 格持续走低，请赐教。&#x20;

**段永平：**&#x6211;也不明白，**但我也不会买这种高负债的公司**。（2019-05-20）

#### 24.重资产行业

01.网友：大道，我从 2014 年看你的网易博客，一路跟你到雪球，收获很多。买 股票就是买企业，我懂。但怎么辨别好企业似懂非懂，巴菲特说过，喜诗是好生 意，飞行安全公司是一般生意，航空公司是糟糕的生意。我理解的是资本支出大 的行业不容易出现好企业。不知道对不对，请大道指点一下。

**段永平** **:**“ 资本支出大的行业不容易出 现好企业 ” ， 我 同 意 这 个 观 点 。

（2019-03-16）

&#x20;02.网友：我想问一下关于好的商业模式的问题。如果有一个公司，其行业特性 决定了其项目投资比较大，如化工类，由于公司管理好，净资产收益率也比较高

（大概能达到 30%左右）。公司企业文化比较好，很注重在研发方面的投入。技 术力量雄厚，管理也很好。其主打产品可以做到把成本控制在全行业最低，在包

括国际大公司在内全行业亏损的情况下他们还可以有微利。公司号称别人亏本我 们微利，别人微利我们赚大钱。由于技术和管理水平比较高，投资同样一个项目 可以比别的公司少花很多钱。由于其投资的项目都是资金大技术要求高，导致一 般的企业难以进入，可以认为这是企业的护城河。公司每上一个新项目投资都会 比较大，新项目的投资主要是公司利润和银行贷款。我记得你说过不喜欢有负债 的公司，那么这样的重资产类公司，你认为是不是好的生意模式呢？你会考虑投 资这样的公司吗？<br>

**段永平：**&#x4E00;般不会。（2019-05-31）

#### 25.对冲基金

01.艾美谷:【保尔森旗舰基金今年已亏损 46% 】对冲基金经理人保尔森今年面 临创建基金公司以来最差业绩表现，据透露截止 11 月，保尔森旗下的旗舰基金 已亏损了 46%[网页链接](http://t.cn/SGep33)保尔森对冲基金总共管理着 280 亿美元资产，今年以来， 因投资花旗，美国银行，嘉汉林业等股票损失惨重。

&#x20;**段永平：**&#x8D4C;钱总是有输赢的。当然，如果拿别人的钱赌，赢了有提成，输了还有 1－2％的年费，那更是个不错的生意模式哈。（2011-12-06） &#x20;

**26.拼多多**

01.引用：“初生儿”拼多多式 IPO 的意义

拼多多要上市了。 很多人都感觉震惊：一个成立不足 3 年的“初生儿”；平台治理 上还有这么多问题；公司也不盈利……居然就要上市了？而且是以高达 300 亿美元 的估值上市？ 这是一个值得……

**段永平：**&#x6211;计划再一次买点 PreIPO。也许 10 年后人们会发现拿着望远镜也找不 到对手的年代已经过去了。（2018-07-10）

&#x20;02.网友：请问一个问题。请问您怎么看拼多多的商业模式？我看现在拼多多才 推出了 c2m 的模式，那他现在做这么大是靠的什么？

&#x20;**段永平：**&#x6211;还没认真看过拼多多，但过年回国时体验了一下，感觉蛮好的。这么 多人用可能是有道理的。（2019-03-15） &#x20;

03.网友 j：我不知道拼多多的优势在哪里？打开 app，噱头大过实际，为了便宜， 好多东西都是貌似品牌，这点让人非常不爽。感觉 app 呈现的和黄峥说的不一样， 让我很迷茫。

**段永平：**&#x5982;果你真的认真看的话，总有一天你会看明白的。（2018-07-24）

网友 j：我以前也是五环内住户，也是最近几周才注册的拼多多，而且在拼多多上 连续下了几单，也初步看了一点资料，感觉拼多多虽然也有缺点，但是掩盖不了 它的飞速发展、模式上的创新和机器算法的厉害、购物时还有一点玩的趣味等等。 拼多多每单金额、用户时长、月活等都是持续增长的。**想想拼多多现在** **0.2** **万员**

**工，京东 15.7 万员工，记得段总说过，需要员工相对多的生意模式不是好的生 意模式。个人一点浅见。**

网友 k：近段时间，我一直在看拼多多资料和 APP，在上面购了几次物，也在思考 拼多多，说一点个人看法，不一定对。1、黄峥在段总的影响下，逐渐建立的本<br>

分文化，消费者导向，差异化竞争。2、持续增长的大行业（社会消费品零售业）， 持续增长的子行业（网络零售业）。网络购物人数也在持续增长。3、目前的核 心用户是以前很少被接触到的下沉互联网消费者（他们不认识多少品牌，也没有 到靠品牌来辨识产品的时候），未曾深耕的差异化行业。4、去搜索化购物 APP， 机器算法推送、游戏化、乐趣化。将来对供应链的赋能。5、没有购物车、免密 支付等细节做得很好，转化率很高。6、拼多多团队牛，在发展中解决问题，包 括假货和次品等问题。竞争对手想打压拼多多，现在都不知道怎么出拳。

当然，罗马不是一天建成的。黄峥说过“我想建一座迪士尼，目前只有两个旋转 木马”“低价是阶段性获取用户的手段之一”（目前是 IPO 公司上市静默期，我 也少说一点比较好）

**段永平：**&#x6211;还没用过拼多多但我对黄峥有很高的信任度! 给他 10 年时间，大家 会看到他们厉害的地方的。拼多多才成立不到三年，有些毛病很正常。我觉得 10 年后他们会非常厉害，如果能够有 10 年的话。（2018-07-22）

**段永平：**&#x770B;看黄峥讲的东西，去想想 10 年后的拼多多吧。（2018-07-26）

03.网友：我觉得拼多多有点像线上 costco（好市多）。

**段永平：**&#x8FD9;确实是拼多多想做到的事情（2018-07-28）

&#x20; 网友：拼多多的商业模式是什么呢，肯定不是大家聚在一起搞批发吧。

&#x20;**段永平：Costco+Disney，这个定义有点意思，也很难找到更好的定义了。**

（2019-04-25）

04.网友：拼多多用了一段时间了，体验还不错，确实有的东西比较次，但价格 真便宜，渠道上他们一定做了优化。就看你买什么东西了，确实就像黄铮说的， 不要光听什么消费升级的概念，有的东西就不用升级呀，比如厨房里的用纸。总 之：拼多多好不好，谁用谁知道。

**段永平：**&#x8D28;量的定义其实是一致性。（2018-07-27）

&#x20;05.网友：廉价、降级这类的我一点都不介意，关心的是否拼多多“长期”“纵 容”甚至“支持”山寨，朋友圈和群里都在传“以下品牌恭祝拼多多上市：小米 新品、松下新品、老于妈、雷碧、康帅傅、七匹狠、必相印……”，加上创维公 司的维权声明，个个义愤填膺、讽刺鄙夷。今天我在拼多多的 app 上一个个搜索 了，都没找到，反倒是淘宝上看到不少“七匹狠”。这样就放心了。可惜一直没                                          开美股账户啊。

网友：拼多多动了很多竞争对手的奶酪，现在各种造谣恐吓的软文出了不少。<br>

**段永平：**&#x4E0A;市就是为了被监督，现在监督来了，虽然不一定是预期的形式，但长 远来说，对拼多多的改进是非常有好处的。希望拼多多能以开放的心态接受哈。 亡羊补牢，会有机会的。（2018-07-30）

&#x20;06.网友：在看了非常多的有关拼多多、黄峥的资料后，昨天买入了拼多多的股 票，能和段总成为同一家公司的股东，开心。

**段永平：**&#x6211;今天（7.28）也买了些拼多多。虽然我已经有不少了，而且价格便宜 很多，但我还是想再多买些。我已经好些年没有买公司的欲望了，但我觉得有机 会的话，我会多买些拼多多。我相信企业文化的力量！拼多多股票 10 年内是我 是不会考虑卖的，但有机会我会继续买。（2018-07-28）

&#x20;07.网友：现在买拼多多会不会有点当年买网易的感觉。我感觉有些企业所处的

环境变化快，从生意模式上的确不好把握。但是坚持做对的事情，加上持之以恒 把事情做对的努力，胜出的概率会大很多。

&#x20;**段永平：**&#x6211;的说法不够成投资建议哈。目前拼多多受到的攻击非常猛烈，没人知 道会是什么影响，虽然我不认为会对业务造成任何影响。我看到很多文章都像是 有组织写的，大家对比一下那些写我的文章，基本都是拼的感觉就明白我的意思 了。如果拼多多能渡过他的难关的话，未来拼多多这个流量，怎么着一年 200-300 亿（人民币）的利润似乎不应该是问题吧？至于应该什么价买这家公司，不是我          可以回答得了的。（2018-07-31）

&#x20;08.网友：您觉得现在拼多多的股价相对于公司价值有多便宜？机会成本而言， 现在的拼多多股票跟苹果股票相比，是不是更有吸引力一些？

**段永平：**&#x4ECE; 10 年的角度看，拼多多显然机会大些但风险也大些哈。绝对不够成 投资建议。我认为某一天跌破发行价是很有可能的，10 年后大家觉得今天这个 价钱真便宜也是大概率事件。所以我在等破发了再说，哈哈。（2018-07-31）

&#x20;09.网友：研究了一段时间，还是没搞明白拼多多和阿里京东等传统电商比竞争                     优势在哪。能否指点迷津？&#x20;

**段永平：**&#x518D;过几年就明白了。（2018-08-03）&#x20;

&#x20;10.网友：黄峥说拼多多是撞上了好运。

**段永平：**&#x9EC4;峥是实在人，拼多多起来也确实有运气成分，但绝对不只是运气哈。

（2018-09）

11.网友：最近对拼多多一直在关注，也下载了拼多多的 App，做了些用户体验， 自己有一些粗浅的看法，还望段大哥和诸位球友指正。拼多多现在主要是通过拼 团+社交+营销来吸引买家，未来想做到 costco+disney（好市多+迪士尼），做 到 C2M。那它的生意模式有多大的护城河呢？？拼团现在巴巴和京东已经开始模<br>

仿，并实施了，但基于微信的社交电商，巴巴和京东应该学不了。而未来， costco+disney，C2M，大家都可以学，但谁做得更好，就要看企业文化和企业领 导人了。黄峥是段大哥的徒弟，坚守本分和以消费者为导向的经营理念。我看好。 学段大哥，我对拼多多未来的股价也做了个粗略的毛估估。拼多多现在有 3.44 亿活跃买家，未来十年，到 5 亿活跃买家应该问题不大。拼多多现在年 GMV 是 2600 亿，未来十年到 2 万亿应该是大概事件。如果给个 2% 货币化率，那么营收

是 400 亿。给个 50% 的成本支出，那么净利润是 200 亿（相当从每人身上一年

挣 40 人民币，），约等于 30 亿美元。现在拼多多有 11 亿总股数，阿里巴巴的 P/E=47，亚马逊的 P/E=384，京东 P/E=271。如果我们取保守 P/E=20，那么拼多 多未来的股价=（$30/11）\*20=$55。

&#x20;**段永平：**&#x4F60;厉害，但不是学我的。我不是这么算的，这种情况我根本就不会算！ 目前这种情况，根本还无从算起。唯一我觉得可以做风投的理由就是，在目前这

种成长情况下，我相信他们的好文化最终会有不错的概率会带来好结果。

（2018-08-31）

&#x20; 网友：现在感觉段师兄当年投网易也是风投了一把吗？

&#x20;**段永平：**&#x7F51;易不同，我非常懂游戏，当时非常确定他们将来会赚很多钱，不知道 的只是到底能赚多少。对拼多多来说我目前的水平依然不知道他们未来能不能赚 到符合目前市值的利润。三年前我投拼多多时就不知道最终他们能不能赚钱，现 在看了一下数据后依然还是不知道，但显然他们的影响力已经大了非常非常多 了。我现在觉得他们能做出来的机会比三年前大了许多。

网友 O：风投

&#x20;**段永平：**&#x8FD9;里风投的意思是：这么一帮人，这样一种文化，这样一个生意模式， 如果一直这么发展下去，10 年后跟淘宝平分天下还是有可能的吧？如果他们做 到了，股东回报自然高。风险的部分在哪里呢？我要知道就不是风投了。

（2018-09-02）

网友：京东没有赚到钱，亚马逊没有赚到钱，淘宝赚到钱了，拼多多？

&#x20; **段永平：**&#x4ECE;财报看，拼多多要赚钱似乎不难，只是没必要急着赚钱而已吧？

网友 B：段大哥曾经预测拼多多未来每年可以挣 200-300 亿人民币。以拼多多的 团队，企业文化，和生意模式，我相信这一目标是水到渠成的事。

**段永平：** 是猜测不是预测，把握性不一样。

网友 B：有些生意可以想象出它怎么赚钱，比如“拼多多”；有些生意很难想象 出来它怎么能挣钱，比如“共享单车”。段总的“猜”，是在“懂”的前提下的 “猜”。

**段永平：**&#x6211;懂得不多，但知道流量经常是很值钱的。他们流量很大，而且都来源 于看得见的生意，所以变现不是问题。我相信他们本分的文化会让他们找到非急 功近利的办法的。（2018-09-05）

12.网友：1，拼多多现在只适合以风投的眼光看。 2，买进拼多多相当于押注于 黄的进化。

**段永平：**&#x8FD9;确实是我目前的观点，所以一直不建议大比例投入。（2018-11-15）

13.网友：看了拼多多的财务数据，从资产来看，虽然亏了 100 多，但是净资产 多了将近 200，还是非常优秀，最近跌得比较多，准备买入，10 年后看有没有机 会财务自由。

**段永平：**&#x6211;没看过财报，但看过新闻。净资产多出来的应该主要是融资产生的， 但经营现金流确实好像是正的，说明他们还是蛮保守的。2019-04-28

&#x20;14.网友：大道认识黄峥超过十年了，请问：黄峥是否具备把事情做对的能力和 学习能力？黄峥是否也具备品行端正，本分，不占别人便宜，专注本业和聚焦， 稳健求发展（慢就是快），结果导向，消费者导向，为社会创造价值（这些在李 嘉诚身上可以找到）这些你身上也具备的特征？

&#x20;**段永平：**&#x9EC4;峥的学习能力和把事情做对的能力显然是比我强的。黄峥对什么是对 的事情也有很清醒的认识。（2019-04-27）

&#x20;**15.引用：拼多多黄峥发股东信谈电商竞争，认为拼多多“个头虽高但依然只是                                                 个小学生”**

&#x20;经济观察网 记者 任晓宁 4 月 24 日晚，拼多多创始人、董事长兼 CEO 黄峥， 发布了公司上市以来的首封股东信。黄峥在信中指出，近期拼多多遇到了“二选 一”。他认为，拼多多的出现初步打破了既有电商格局，自然会让其他平台有 所……

**段永平：**&#x8BE5;说的黄峥都说了! （2019-04-25）

16.网友：没什么问题，7 年电商老兵，10 年纬度，坚定看好拼多多，有闲钱就 补一些，知道大道也是股东，内心更坚信了这一点。 **段永平：**&#x6211;觉得你对的概率很大。（2019-05-15）

17.网友：能否演示一下把拼多多看作非上市公司十年后是咋样的？&#x20;

**段永平：**&#x5982;果他们能活下来的话，他们肯定会比现在厉害很多。我认为他们能活 下来的机会很大。(2019-05-17)

18\. 网友：关于拼多多，大家对平台的差货、劣货、假货吐槽很多，周围很多消 费者在心里面对拼多多的品牌认知就是假、差、劣，想问下师兄：你认为这样的<br>

平台如果不补贴，还能做大？或者说是有生存的价值吗？还是仅仅只是因为喜欢 黄峥就投拼多多？谢谢。

&#x20; **段永平：**&#x6211;投拼多多确实是因为喜欢黄峥，但你这么看拼多多表示你大概是个人 云亦云的人，没有理性看待问题的态度。我今年春节回国专门买过接近 100 单拼 多多上的东西，你肯定没有试过。拼多多有这么多用户，绝对是有道理的。不过， 我从来没推荐过大家投资拼多多，目前也不会推荐，因为我不清楚拼多多到底最 后会如何，所以觉得顶多只能按风投的标准去看拼多多。（2019-05-28）

&#x20;网友：哈哈，不要轻易对我下结论嘛！我就想知道下师兄对于拼多多的态度和逻 辑而已。我买了几单，有些东西确实不理想。可能用拼多多的都是沉默的大多数                                                              吧。

**段永平：**&#x6211;买的大多数都是农产品，大多数都还不错哈。有时候会让人觉得便宜 没好货也不总是对的。（2019-05-28）

引用：原标题：从“无脑黑”到拼多多“真香” &#x20;

来源：《金融投资报》个准 00 后大学生的网购心路转变历程 “我妈在拼多多上 买的攀枝花凯特芒果，出乎寻常地好吃，还有她在拼多多上给我买的 8 块钱坐垫， 貌美又好用，还有上次...

&#x20; **段永平**：前段时间回国时在拼多多上买了些东西，没经历不好的体验。举个例子， 这次回去忘了带冲鼻子的瓶子和盐（对付过敏用的），去商店也没找到，在拼多 多和另一家电商上找到了，拼多多只要两天就到货，还稍微便宜些，就买了，东 西和我原来用的是一样一样的。我还没空去自己体验过迪士尼的感觉，但 Costco

的感觉有了。(2019-08-23)

网友：相比于您在股票投资领域的成功，我更佩服你的识人能力。 做投资成功 的人很多，但能投中两个中国首富的人太稀少（我认为黄峥会在未来十年的某一 年能当次中国首富，个人判断）。 我想问下，您当年和巴菲特吃饭，带着 26 岁的黄峥的原因是什么，或者说看中了他身上的哪个特性？

&#x20;**段永平**：黄峥是特别难得一见的一直关注事物本质的人，有悟性，又聪明，未来  有任何成就我都不意外。(2019-09-09)

#### 27.视频

网友：3 月 8 日 49 元进[的搜狐(SOHU)](http://xueqiu.com/S/SOHU) ，认为 18 亿多的市值被低估了。这两个月 来的行情好几次都突破 55 元，都有超过 10%的获利，以往的习惯会选择落袋为 安，这两个月为了践行“价值投资”，认为 SOHU 的合理估值在 25 亿-28 亿美元 美元左右，坚持持有（愿意持有多年）。目前股价已经低于我的成本了，我是否 错过了之前的获利卖出机会呢？想听听过来人帮我分析分析。<br>

[巴克星](https://xueqiu.com/buckstar)：搜狐的最大看点是搜狗和分拆，我认为搜狐的确是被低估了。但是什么 时候它的价值体现就说不好了，我觉得你应该借鉴[大道无形我有型](http://xueqiu.com/n/%C3%A5%C2%A4%C2%A7%C3%A9%C2%81%C2%93%C3%A6%C2%97%C2%A0%C3%A5%C2%BD%C2%A2%C3%A6%C2%88%C2%91%C3%A6%C2%9C%C2%89%C3%A5%C2%9E%C2%8B)在[雅虎](http://xueqiu.com/S/YHOO)上的处 理。

**段永平：**&#x5BF9;我而言，感觉上搜狐的最大不确定性在其对视频的不断的大力投入。 视频是个差异化很小的产品，一堆有钱的公司拼在一起，结局恐怕不太好。

（2012-05-04） &#x20;

&#x20;网友：本人很喜欢看电影，感觉视频这行业很难做到差异化。但不明白为什么国 内那多公司都往里进，像百度、腾讯、搜狐、暴风、PPS 等等。感觉这个行业难 形成一个很好的盈利模式。

&#x20;**段永平：**&#x8FD9;些互联网公司大概是怕失去机会，或者是觉得不能没有。也许人们会 觉得一个互联网公司如果没有视频就有差异化了（怕别人因为这个不来上网）？ 或者大家都是受到 youtube 的鼓励？本人不在其中，不是太能想明白，但绝对不 建议投资专门做视频的网站，因为非常难知道谁将会胜出，而且胜出的公司也未 必就有好日子过，结局很可能会像航空公司。谁能明白航空公司这么难的生意为 什么还是有那么多资本跳进去不？这个世界真奇妙啊。（2013-04-16）

网友：如果视频行业的产品没有差异化，那么超市行业是不是也算一个没有差异 化产品的行业？那么电视台呢？如果电视台有差异化，那么他的差异化是不是自 己独特的节目（消费者喜欢的）？

&#x20;**段永平：**&#x4E2A;人觉得超市是可以有一定差异化的，至少地理位置有，布置有加上品 种太多。但是，未来超市确实会受到网络的冲击。我想我们有个邻居国家的电视

台大概是没有差异的。**明白差异化最简单的办法就是把自己当消费者，想象一下** **自己的体验，自己常去哪里，因为什么而改变等等。**（2012-05-18）

#### 28.分众传媒

网友：分众传媒做电梯广告的，单纯生意模式来说算好的生意模式吗？

**段永平：**&#x5BF9;我没有吸引力。（2019-3-31）

&#x20;网友：分众传媒对您没吸引力是因为你懂这个生意，只是这个生意模式不够好？ 还是说分众的这个生意模式不在您的能力圈范围？

&#x20;**段永平：**&#x5927;道曾经观察过，很多人在等电梯或坐电梯时都是低头看手机的，那谁

来看广告呢？所以这个属于不在能力圈内的事情，看不懂。（2019-04-01）

#### 29.宁德时代

网友：给您推荐一只股票，A 股宁德时代，您可以关注下，目前已经是新能源汽 车电池的龙头企业，从长远看，电动车大概率还有十多倍的增长规模，宁德时代 又是头部企业，符合您价值投资的原则。

**段永平：**&#x8FD9;类产品差异化小，变化快，建立护城河有点难度。（2019-04-29）

#### 30.晨光文具

网友：上次大道问好的生意模式，我说一个：晨光文具。 行业：1）中小学生对文具的要求越来越高，品种越来越多。学生对价格不敏感， 家长愿意在学生文具上花钱。购买文具的每一次花销并不大，家长和学生容易做 出购买决定。但是，使用和损坏的消耗却很快。2）国内的品牌商加强研发，从 中档价格切入，有利于替代进口品牌。3）基本刚需，基本不受宏观经济低迷的 影响。

公司：1）学校周边 7 万家终端店，而且从事的是低值易耗品，产品的消费量及 其背后的品牌广告价值都极其可观。2）其推出“快速消费品大流通模式+直销模 式”渠道分销模式，各层级之间形成了一种紧密的利益关系，是一个利益共同体。 这样，加盟商不容易转投竞争对手。有类似于肯德基的模式。3）占据了 80%的 学校周边市场，只要它保证文具品质和创新性，其品牌将在学生心中生根。 一个不好的地方，就是产品的品种太多（这是由这个行业特性决定的），管理上 会比较麻烦。晨光好的企业文化，弥补了产品品种多、品牌多的弊端。

&#x20;**段永平：**&#x8FD9;种生意，能活下来就不错了，和苹果茅台这种生意模式不能相提并论                                        的。（2019-05-29）<br>

## 第 3 节：企业文化

#### （价值）投资最重要的是什么？

**段永平：**&#x72;ight business，right people，right price.（对的生意，对的人， 对的价钱。这是老巴说的。）对的生意说的就是生意模式，对的人指的就是企业 文化。price 没有那么重要，business 和 people 最重要。culture 跟 founder

（创始人）有很大关系。business model，就是赚钱的方式，这个是你必须自己 去悟的，我没法儿告诉你。就像如果你不打高尔夫，我是无法告诉你它的乐趣的。 2018-9-30

网友：老哥，雪球大 V 越来越不爱发言了，作为炒股新人迫切需要与经验丰富的 前辈交流，免费的，却越来越难听到。求一个企业基本面的简易分析框架，别推 荐书，就想听一下您老哥的见解.

[不明真相的群众](https://xueqiu.com/simon)：商业模式，企业文化，合理估值。

**段永平：**&#x8FD9;是“同道中人”的意思。老巴也是这么说的：right business，right people，right price.（2019-03-18）&#x20;

网友：老巴说 right people，大道强调企业文化，大道能谈谈这两者有何区别 和联系吗？

**段永平：现在老巴也说的是企业文化了**。（2019-03-18）&#x20;

网友：请教一下，企业文化，商业模式，价格这三者，按重要性排序，你的看法 顺序是怎样的？或者说相对不重要的是哪个？&#x20;

**段永平：商业模式和企业文化排第一，价格排第三**。（2019-05-31）

## &#x20;

## 一、企业文化

&#x20; 请问步步高的核心竞争力是什么？

**段永平：**&#x662F;我们的企业文化！呵呵，10 多年前我就这么回答，现在可能有些人 已经开始明白了。（2010-03-09）

&#x20;**段永平：核心竞争力是一个企业能够长期获得竞争优势的能力。是企业所特有 的、能够经得起时间考验的、具有延展性，并且是竞争对手难以模仿的技术或 能力。 （2011-05-07）**

一般来讲，公司的企业文化是由 3 个部分组成的：使命、愿景以及核心价值观。 使命指的的企业存在的意义(“Mission”是为什么成立)；愿景是企业内大家的 共同远景(“Vision”是我们要去哪里)；核心价值观“Core Values”是哪些事 情是对的，哪些事情是不对的。（2010-04-04)

**案例 1：阿里巴巴企业文化** 使命：让天下没有难做的生意 愿景：做一家经营 102 年的企业 成为世界最大的电子商务服务提供商 成为世界最优秀的雇主 价值观：客户第一、员工第二、股东第三

客户第一：关注客户的关注点，为客户提供建议和资讯，帮助客户成长 团队合作：共享共担，以小我完成大我  拥抱变化：突破自我，迎接变化

诚信：诚实正直，信守承诺 激情：永不言弃，乐观向上 敬业：以专业的态度和平常的心态做非凡的事情

**段永平：**&#x6211;理解这里的 102 年是形象解释基业长青或百年老店的意思，是从每一

天开始算而不是从 1999 年开始算的 102 年，不然现在就只有 91 年了.<br>

平常的心态大概就是我们常说的平常心吧。这里的诚信指的就是 integrity。阿 里巴巴的企业文化是我在中国企业里迄今见到的写得最好的企业文化。

拥有这么好的企业文化再加上已经找到的这么好的生意模式，阿里巴巴想不成功 都不容易啊。

这也是我愿意买 Yahoo 的最重要的原因！（2010-04-04)

**案例 2. 步步高企业文化**（网友：2010-04-04） 1、愿景：成为更健康、更长久的世界一流企业。

2、使命：对消费者，提供高品质的产品和服务； 对员工，营造和谐、相互尊重的工作氛围； 对商业伙伴，提供公平合理、对等互利的合作平台； 对股东，使其投入的股本有高于社会平均收益的回报。 3、核心价值观：

3.1 本分

·保持平常心，坚持做正确的事，并力求把事情做正确。

·本分规范了与人合作的态度——我不赚人便宜。

·本分是当出现问题时，首先求责于己的态度。 3.2 诚信

·诚，即诚实、无欺，内诚于心。

·信，即守承诺、讲信用，说到做到，外信于人，即使遭遇挫折、付出代价也要 坚守。

·诚信是一种责任、准则和资源。 3.3 团队

·没有团队的成功，就没有个人的成功。

·相互信任，坦诚沟通，将个人融入团队，以共同愿景为最高目标。<br>

·尊重每一位员工的价值，我们相信，员工和公司共同成长，这是我们的责任和 骄傲。

3.4 品质

·品质是精益求精的一种追求，是必须要满足顾客的需求并且高于对竞争对手的 满意度。

·品质是设计出来的，是全员关心和环环相扣的一个系统工程。

·不断提升产品品质，这不仅是我们的价值，更是我们的尊严。 3.5 持续学习

·步步高必须成为学习型公司，“持续学习”永远是对公司与员工的鞭策。

·积极主动地学习、借鉴和引进世界一流企业已经进行或正在进行的最佳实践， 改进和优化我们的管理和运营系统。

·头脑清醒，永不自满，保持开放的思维。 3.6 消费者导向

·从消费者的角度来设计产品、提供服务，避免做貌似消费者喜欢的东西。

·通过科学、严谨的市场调查，充分研究消费者的需求，一切工作须以消费者的 真实需求为原点而展开。

·在公司内部的日常工作中，要坚持内部客户导向的原则。 4、品质方针

不懈进取，步步登高，为用户提供完全满意的产品和服务，我们的“步步高”品 牌，必须是高品质的象征。

5、EHS 方针（环境、职业健康安全管理体系） 遵守法律法规，持续减废节能，保护员工健康安全，共同建设绿色家园。

**问答**

01\. 网友：步步高的（企业文化）有点长啊。

**段永平**：呵呵，你把每一条的解释都放进去了。企业文化是需要逐条解释的，不 然无法传达。我觉得我们的和阿里巴巴的有点像。（2010-04-04）

02\. 网友：愿景的前身好像叫使命感，文化人把它叫愿景了。没有愿景，好像就 相当于短命感。是这样吗？

**段永平：**&#x4F01;业文化一般分 3 块：mission，vision and core value. mission 就 是使命，也就是企业为什么存在；vision 就是愿景，指的是大家的共同远景； core value 指的是核心价值观，也就是大是大非的问题。(2010-11-12)

网友 o：作为投资者，我们如何观察公司这些写在纸面上是不是真的愿景？

**段永平：**&#x770B;他的历史、说的和做的。(2010-11-12)

网友：阿里愿景“成为世界最大的电子商务服务提供商”。阿里文化不如步步高 文化的地方是，阿里要成为最大，步步高要本分。

**段永平：**&#x672C;分和最大本身并没有任何矛盾！事实上，我们公司做的产品大部分最 后都是国内“最大”的，只不过我们罕有提起而已。我们不提的原因是认为这不 是我们用户关心的东西，但这往往是我们关心用户而产生的自然结果。

我个人认为，追求最大确实有点问题，因为他是一个结果而不是一个方向，而且 有可能和核心价值观产生矛盾（比如有时可能不符合用户导向等）。不过，阿里 巴巴作为公司还比较新，等他真到了第一以后才能明白我说的问题何在，那时再 改也来得及。（2010-04-05）

网友 j：“阿里文化不如步步高文化的地方是，阿里要成为最大，步步高要本分。 本分即自然，道法自然。”----佩服！

**段永平：**&#x8FD9;话不是我说的，是网友在问题里说的，我并不同意这个说法。 (2012-01-14)

03.网友：有点困惑的是国内有些自己感觉挺好的企业似乎很看重并且一直在强 调自己的市场占有率，这样的企业段哥会不会直接 pass（淘汰）掉？好像马云 也说过要阿里要超过沃尔玛，是不是不比较只专注于消费者会好一些？

**段永平**：讲本身并不是问题，作为一个大的愿景讲出来没什么不好，尤其是企业 初期，有一个大的愿景非常重要。差别在用什么办法去达到。用消费者导向去达 到愿景目标是本手。（2010-10-24）

04\. 网友：段总，我又不懂了。为什么说企业初期有个大的愿景非常重要呢？

**段永平**：愿景就是大家共同的远景的意思。没有愿景的公司容易陷入利润导向， 最后容易被眼前利益诱惑而犯大错，从而导致公司寿命缩短。（2010-11-10）<br>

网友 O：很多公司都有愿景，但好像都是写在字面上的东西。如果愿景写的比较 切合实际，但那似乎又不是“愿”景。您觉得呢？

另外，我观察公司愿景是否是真得还是假的，主要是看领导有没有真的把它当回 事。我觉得您就经常提到步步高的愿景，所以我相信它是真的。ps：不知道有没 有记错，bbk 步步高的远景是做更健康，更长久的公司？呵呵。

**段永平**：愿景的意思是大家的愿景（远景），光写在纸上是没用的。

我们公司提的是更健康更长久。也就是说不健康不长久的事我们不应该做（哪怕 眼前有钱赚也不应该做）。（2010-11-10）

**段永平**：更健康更长久我们已经提了很多年了。我们认为，要做到更健康更长久， 除了应该知道我们该做什么外，更重要的是需要知道什么不该做。

我们是有个不短的 stop doing list 的，今天举个小例子：

芒格说如果知道自己会死在哪里就坚决不去那里。多数企业最后都是死在资金链 断裂上（实际上绝大多数情况下这只是表象而不是原因）。

我们公司是基本没有贷款的，虽然很久以前银行就给了我们不少额度。 投资也一样，不用 margin！（2016-11-10） &#x20;

05\. 网友：有了愿景不一定一定会成功，但没有愿景，一般不会成功。能否很好 地在企业经营过程中执行好对远景或价值观的追求，与创始人对企业的理解有 关，也与创始人的个性有关。

**段永平**：那要看如何定义成功。没有愿景的公司很难走得很远，但也有些小的家 族企业可以靠别的东西维持走很远的。

06.网友：可乐如果是越南的话根本不可能卖到全世界，有文化的原因，就像麦 当劳和肯德基能卖到全世界一样，我相信原因之一是它们是美国的。比如 PUMA

（彪马）和阿迪达斯，应该不少人会误认为它们是美国品牌，我是前几天才得知， 其实它们是德国品牌呵呵。

**段永平**：那你肯定不知道 NIKE 的故事。值得读一下。NIKE 还是一个很小的公司 时，曾经有一个远景“打败阿迪达斯”，真是太可笑了（阿迪达斯当时是这么想 的）。（2010-05-29）

07.网友：大道，能用一句话总结一下什么是好的企业文化吗？ **段永平：做对的事情！**(2019-05-29) 08.网友：能用一句话描述一下企业文化吗？<br>

**段永平**：呵呵，试试：能够管到制度管不到的东西的东西。（2010-05-18）

网友：请问段总，这是不是对企业文化的理解:管理的最高境界是没有管理，制 度的最高境界是没有制度！有统一的价值观和统一的目标，员工能自我约束，制 度健全与否没有太大的重要性，这就是“由道而德”的管理理念？

**段永平**：没有管理公司很快就会完蛋的。**所谓好的企业文化是能管到制度管不过** **来的东西**，不是个神秘的咒语。制度是强制性的，文化则不完全是，所以建立好 的企业文化非常难，破坏起来非常容易。

网友：破坏起来非常容易如何理解？ **段永平**：比如建立信誉很难，破坏很容易。（2018-11-08）

09\. 网友：库克：我们每天都在变化。他在的时候我们每天都在变化，他不在的 时候我们也在变化。但是核心，核心中的价值观和 98 年、05 年、10 年的时候 是一样的。我觉得价值观是不应该改变的，但是其他任何东西都可以改。

\----------------------------------------------------------

看了很多 CEO 的访谈，发现优秀公司的 CEO 都会讲到一个重要的东西：企业文化。

&#x20;**段永平**：**所谓企业文化讲的就是什么是对的事情（或者说哪些是不对的事情），** **以及如何把对的事情做对。**&#x82F9;果的企业文化堪称好的企业文化的经典，多看看苹 果的发布会或许能有所悟。（2015-03-21）

&#x20;网友：在“做对的事，并把事情做对”这方面，乔帮主和库克为苹果创造并实现 的是：做最对的事，并把事情做到最对！

&#x20;**段永平**：难道还有不太对的对的事情吗？你这是我们没对错的文化的一种体现 吧？其实苹果就是一直坚持了“做对的事情”，其一直聚焦在“把对的事情做 对”的长期结果就把事情做到了极致。（2015-03-23）

&#x20; 网友：您这么一反问，明白我自己错了，谢谢您的指点！重新厘清认识：

1:“做对的事”是指明方向的，属于原则问题，只有对与错而无程度区别，而 “错的事”底线是零容忍的；我原来不经思考地认为“做对的事情”和“把事情 做对”上都有高低水平不同，而且还表达为有好坏之分；在这里学了这么多年， 在大是非上还是这样草率的态度，感觉很羞愧啊。

&#x20;**段永平**：把事情做对确实有高低之分。每个人都有自己的学习曲线，每个人都不

可能不犯错误。据说在任何方面花够一万个小时后，大多数人都能成为专家。

（2015-03-23）

&#x20;10.网友：段总对企业文化理解很深，我们没有做过企业的很难理解企业文化为  什么这么重要？希望你可以指点一二。

&#x20;**段永平：简而言之，好的企业文化可以让企业少犯原则性错误，从而可以走得**

**更远。**（2010-07-08） 11.网友：请问您怎么看待一个公司战略和企业文化的关系？ **段永平**：有好的企业文化的公司战略出错的概率低。（2011-09-01）

12\. 网友：文化。什么是企业文化？墙报、写文章不是企业文化，企业文化就是 把企业写得有味道一点，不要把企业变成赚钱机器。变成赚钱机器就是这个人只 会赚钱，这边出来人民币，这边出来港币，讲话出来是美元，这没意思。” - 来 自马云昨天的演讲； 让我想起你说的“ 利润之外的追求”。 无论自己创业或 者加入一家公司或者投资一家公司，都要关注这一点啊（当然，这个不是充分条 件）。

&#x20;**段永平**：对的，企业文化指的就是“利润之上”的追求。感觉上“利润之上”和

“利润之外”好像是有一点点差别的，“利润之外”可以被理解成不同于利润的 追求，“利润之上”的目的似乎有时候会不同。（2013-04-01）

&#x20;**段永平**：“利润之上”的追求是针对盈利组织而言的。“利润之上”的追求大概 意思就是超出利润的追求，但这种追求和非盈利组织的追求还是有所不同的。

（2013-04-01）

&#x20;网友：马云说的客户第一，员工第二，股东第三是不是有点“利润之上追求”这                                                      个意思。

**段永平：**&#x6B63;是！ （2012-07-24）

&#x20;13.网友：您觉得企业所有制性质（国有、合资、家族）、行业性质（强周期性、 弱周期性）等因素和企业文化的好不好之间是否会有必然的联系或者冲突？再问 个奇怪的问题，您的那一套关于企业经营的知识是如何获取的？（2011-01-24）

&#x20;**段永平**：要搞清这个问题，你要回到什么是企业文化就明白了。我没有一套自己 的关于企业经营的知识（我认为叫理解可能更合适些），所有我对企业的理解， 这本书或那本书里都有，但没有体会的人一般不会去体会而已。重要的是要有基   本的原则：做对的事情，把事情做对。 在如何“把事情做对”上犯的错往往是不可避免且都还是有机会纠正的。

（2011-01-25）

&#x20;14.网友：步步高的企业文化（愿景、使命，价值观）是您创办的时候就已经想 明白，还是创办之后慢慢形成？总的来说，在创办一家企业的时候，是不是越早                                      想明白这些越好？

**段永平**：有很多东西在创办之前就有了，但慢慢补充和完善或修改了一些。基本 核心价值观是不会变的。（2013-03-26）

&#x20; 网友：成功企业往往会打上开创者的气质，也祝您的企业基业常青。<br>

&#x20;**段永平**：那是因为企业文化一般都是由开创者建立的，当然，后期的完善也很重                                  要。（2010-04-04）

网友 Z：开创的时候企业文化怎么建立，有那个精力么，底下的员工都能理解吗？ 可能身边的几个高管还可能半信半疑，不知道阿段前辈当年创立小霸王时是怎么 做的，有什么心得体会呢？

网友 G：我也参与一下讨论，我个人觉得企业文化期初的建立不需要多少精力 吧？老板如何对待同事、员工、客户及其他合作伙伴，体现出来的这些作风就是 企业文化的雏形吧？企业搞大了再整理成易理解的东西，首先传达给干部，干部 传达战士。总之应该是一砖一瓦的事情了。

**段永平**：同意。（2010-04-04）

&#x20;15.网友：您觉得企业文化可以改变或者能改变吗（由不好转好）？

&#x20;**段永平：**&#x4EE5;前专门说过的。想想企业文化怎么来的就知道可不可以改变了。

（2013-12-10）

&#x20; 网友：巴菲特那么神，都觉改变一个坏企业太难了。

**段永平：**&#x6700;难改的是企业文化。（2010-05-23）

网友：我听一个做 MP3 全中国排前几位的老板（也是您浙大校友他说见过您）说 过企业文化就是老板的文化。不知这个理解对不对？

**段永平：**&#x4E00;般而言，创始人对企业文化的形成起的作用都很大（2010-05-10）

&#x20;16.网友：你是怎么判断一个企业的企业文化和价值观是这个企业每个人都认定 的，还是这些都是贴在办公室里的标语根本没人信？我其实对这个是非常困惑。

&#x20;**段永平：**&#x5475;呵，你看企业的领导们信不信就可以了。如果最高领导人都不信，那                          肯定不行。（2010-04-04）

&#x20;17.网友：产品可以模仿，而文化是不可以模仿的。这句话我不理解。

**段永平：**&#x8FD9;里文化指的是企业文化。你大概很难见到一个热衷于骗人的人会学 会'以诚为本'，反正我没见过。（2016-06-22）

18.网友：对“企业文化是核心竞争力”这个说法，我还是有点没理解透。如果 油价大跌，企业文化再好的石油开采企业利润也会大幅缩水；如果铁矿石涨价， 企业文化再好的钢铁企业利润也会大幅缩水；如果油价上涨，钢铁上涨，企业文 化再好的制造业企业利润也会大幅缩水。说企业文化是核心竞争力，是说企业文<br>

化好的企业会提前做好准备以应对危机还是说他们可以有更大可能从灾难中活 下来从而获得更广阔的市场？这其中的机制是什么呢？

**段永平：**&#x6240;谓的“企业文化好”并不是百战百胜的武器，他只是能让企业少犯原 则性错误而已。或者说，在同一个行业里，平均而言企业文化好的企业活得长些 而已。（2011-02-11）

19.网友：想请教一个沟通的问题，感觉现实生活中一部分人沟通起来特别困难， 反而越沟通矛盾越多，直接就不沟通了。段总有什么经验吗？

**段永平**：没有企业文化，就没有共同的愿景和核心价值观，然后大家就讨论怎么 赚钱，怎么能有共同语言？（2012-05-30）

20\. 网友：段总如何看待：卫哲离职这件事情，以及马云的公开信？

**段永平**：做对的事情就是--当发现错了就尽快改，不管多大的代价都是最小的代 价。没觉得马云这样做有什么不对。（2011-02-21）

引用：马云首谈卫哲离职事件：我是在治疗“癌症”  2011-03-25

&#x20;原文略……

**段永平：做对的事情，把事情做对。发现错马上改，不管多大的代价都是最小 的代价。这是我喜欢马云和阿里巴巴集团的原因。有强大的企业文化不等于不 会做错事。强大的企业文化往往体现在做错的事情的概率相对低、发现得早、 改得快。（2011-03-25）**

**段永平：**&#x8D1F;责调查的居然是关明生。关明生来自 GE，早年对阿里的企业文化的 建立起过巨大的作用。**他写过一本书，好像叫《关乎天下》，我很久以前曾经浏 览过，印象中觉得写得很好且非常实用，值得做企业的人一看（或多看）。**

（2011-03-25）

网友 S：说实话，我可能确实小人心度君子腹了。坦率地说，我觉得这件事情没 有这么简单。继任者陆兆禧先生的淘宝网，同样假货很多，如果不是更多的话。 当然 C2C 控制起来更难。此外我没有细心观察和调研过这家企业，特别是内部文 化，没有什么发言权。但据朋友和他们员工聊天说的情况，感觉这家企业洗脑非 常厉害，而且搞马云先生的个人崇拜。从卫哲先生的辞职信，我也有一种这样的 感觉。此外，在 imeigu（艾美谷）上，YAHOO 那位同学写阿里的文章，我觉得应 该比较实在，因为他是从工程师角度写的，我很能理解。一家企业面试时让员工 大肆暴露自己的隐私，以此作为考验，我个人非常难以接受。

诚信，应该落实在实际当中，愤怒，焦虑，这些不是长效机制。而且我个人觉得 阿里，淘宝的假货，应该不是半年一年的问题了。马云先生这一两个月焦虑，愤 怒，我不太理解。<br>

可能的话，3 月份也许会去阿里公司一趟，眼见为实吧。无论如何，它是我们这 个时代和社会的一种“现象”。

最后，段老师能否给些建议：如果真要去看，看些什么比较重要。我个人希望和 中层，员工多聊聊。也没有想清楚要聊什么，才能看清楚企业文化。经营上，我 个人感觉要担心的不是非常多，如果您能提几个要点，那当然更好。

**段永平**：讲几点我的理解。

1\. **好的企业文化不是万能的，但能让公司少犯原则性错误，而且可以让公司及 早发现错误。**&#x540C;样的事情如果出现在企业文化不如阿里巴巴的公司的话，估计认 识到错误就不容易，改起来就更难了。

2\. 你这里所谓的洗脑估计讲的就是对企业文化的宣导。我看到的倒是觉得阿里 对企业文化宣导很有一套。当然，从这次事件来看，大家可以知道要把企业文化 真正融到骨子里还是非常不容易的。至于个人崇拜嘛，那是我们中国文化的产物。 能有马云这种成就的人在中国谁周围没一堆人去有意识无意识搞个人崇拜？能 不能抗住这种个人崇拜的副作用则主要要看马云是否可以一直保持清醒状态了。 从这次事件看，马云还是很清醒的。

3\. 假货不是淘宝造的，没有淘宝抓假货将更难。我了解淘宝在抓假货上还是很 花功夫的，至少绝对没有故意纵容。

4\. 马云的焦虑和愤怒是很容易理解的，因为在他自己的领地里居然有这种破坏 原则的问题。将心比心，我处于同样的情况也会感到愤怒的。

5\. 不知道到这类公司里你能看到啥，聊也很难聊出什么东西的。不过，去看看 至少有个直观感觉。当然，如果真有什么特别不好的东西，如果你敏感的话，有 时候可以“闻”出来。（2011-02-18）

16\. 网友：今天阿里巴巴的 CEO 卫哲辞职。看了他公司内部的辞职信。这个公 司企业文化很到位，如果真正能做到像说的那样。马云辞职，对公司影响都是有 限的。如果段大哥遇到这样问题，你是怎样的处理思路？

**段永平**：呵呵，马云不在影响可能就大&#x4E86;**。**（2011-02-21）

网友 T：如果阿里的企业文化构建好了，马云不在会不会影响也很大？乔布斯离 开了水果公司（总有一天会，除非水果公司先离开），他不在了会不会影响也很 大？是第四级还是第五级的企业判断起来的确不易。

**段永平**：乔布斯的平台已经搭好，所以他现在离开的影响短期不大。马云目前在 公司的作用我个人觉得依然很大，但一旦他真的可以离开时，对公司未来的影响 会比乔布斯小。<br>

21\. 网友：对不起段老师，只是实在看不惯马云上班的时候老拿着一根鞭子，和 您的和蔼相亲大相径庭。

**段永平：**&#x5475;呵，说我和蔼可亲可能是来源于对我的误解吧？在原则问题上我也很 严厉。我倒觉得马云比我要和蔼可亲些，他还挺能搞气氛的，我比不了。

（2010-04-04）

网友：很多人都评价马云带来了一点激情、也带来了一点狗屎，但加起来还是狗 屎，特别令人不爽的是他到处演讲，惟恐天下不知道他很有口才那样！在中国， 要明白潜规则“低调”。

**段永平：**&#x518D;好的东西对不懂得人来讲都可能是\*\*。头几年到处讲讲没啥坏处，企 业文化是要不停的宣讲才能慢慢深入到大家的骨髓里的。当年尼克松好像讲过类 似的话。现在好像马云出来的机会已经少多了。（2010-04-05）

**引用：摘录:段永平逐条点评《马云帝国体系与内幕》一文（2011-05-18）**

&#x20; **段永平:**&#x8FD9;是我无意看到的一篇文章，看完后觉得有很多对马云的说法有点不大 对，所以上来加点自己的理解。我其实并不觉得马云是十全十美的，人无完人嘛。 我也不是说阿里集团就已经可以高枕无忧了。其实阿里才刚刚开始，其最后到底 是个 102 年的老店或只是个像过去很多曾经风生水起一时然后消失的企业其实 现在还无人能下结论。但从下面明显带负面意向的文章里，我们做企业的人依然 可以学到马云的很多东西，如果你能看懂的话。总而言之，可能正是马云对企业 文化的理解和不懈地传播才有了今天的淘宝和整个阿里集团。

&#x20;摘录:多位业内人士和阿里巴巴的内部员工说，马云其实是一个很敏感的人。一 位曾经在早期采访过马云的记者如此转述马云自己的表述：“经常坐立不安；如

果有人突然推门进来，会吓一跳。”一个是无安全感的马云（**点评：好的企业家** **一般都是居安思危的，也就是没有安全感的意思**），他首先把自己塑造成“出手 无招”的风清扬，并把两万多人的公司变成一个奇特的武侠江湖。他的阿里巴巴 公司办公室，全是武侠小说里的武林圣地：“光明顶”、“达摩院”、“桃花岛”、 “罗汉堂”、“聚贤庄”、“半山亭”、“侠客岛”等等，甚至洗手间叫“听雨 轩”。他那叫做“光明顶”的会议室，挂着金庸书写的：“临渊羡鱼，不如退而 结网”。淘宝社区叫淘江湖，负责论坛的也用掌门和帮派来定义，每个新进员工 都要取一个“花名”。（**点评：起花名这个办法是阿里传播企业文化中的一绝。 我们老中见人都不习惯叫名字，一定要加个头衔，于是人与人之间就没法平等 了。起个花名后的感觉马上会不同。**）

马云在公司治理上不仅求诸于武侠梦，更求诸于宏大的口号、舆论控制、思想洗 礼、人治导向、“政治挂帅”的业务体系、战争式的话语体系和充满斗争思想战 略路径。（**点评：其实这些都是阿里建立企业文化的一些有效技巧，不懂企业** **文化的人是看不懂的。**）

2009 年，《马云管理日志》出版。该书中很多地方都或直接或间接地与 mmm 思 想挂钩，如“延安整风”、“万里长征”、“打持久战”、“集中优势兵力”、<br>

“建立根据地”等等。（**点评：mmm** **是伟大的战略家，马云也确实是个极厉害的 战略家。**）

&#x20;马云说，通过运动，把跟我们没有共同价值观，没有共同使命感的人，统统开除 出我们公司。（**点评：要想建立企业文化，不这样是不行的**）世界上鲜有一个公 司有如此多的“文化”：阿里巴巴的“笑脸”文化，支付宝的“手印”文化，淘 宝的“倒立”文化，雅虎中国的“光脚”文化。（**点评：世界上好公司本来就不                                                         多。**）

2 万人还拥有一整套显性价值规则，即被马云冠以“六脉神剑”的“客户第一、 拥抱变化、团队合作、激情、诚信、敬业”。（**点评：这是宣导企业核心价值观** **的最好办法。**）

2001 年到 2003 年，在阿里巴巴最为艰难也最为关键的三年内，马云就曾以“整

风运动”来统一价值观、统一理想。马云说：“通过运动，把跟我们没有共同价 值观，没有共同使命感的人，统统开除出我们公司。”同时，他还以“抗日军政 大学”来培训干部团队的管理能力，以“南泥湾开荒”培养销售人员面对客户应 有的观念、方法和技巧。一位阿里巴巴华南区的客户至今对其销售人员的素质感 到不可思议。“他们有一套又一套训练有素的思想，我觉得完全不像是销售，倒 像是公关。”这样的销售人员在阿里巴巴以万计数。事实上，如同从“员工第一” 到“客户第一”，马云一直在价值观上不断进行修订。“以前是九大价值观，后 来又精简为六大价值观，这对于我这样的员工来说要求实在是太高了，我有时候 觉得阿里巴巴两三万人就马云一个人在孤军奋战，因为卫哲都不符合要求啊。” 阿里巴巴一位前员工 K（**点评：知道** **K** **为什么是前员工了吧？**）说：“‘倒立’ 刚开始也就是大家娱乐娱乐，结果马云觉得那代表着一种思想的境界，于是当作 ‘政治任务’内部推行，还有倒立墙，每一个人都要学会。”马云描述“倒立” 文化，“每个人都要学会倒立，因为当你倒立起来，血液涌进大脑，看世界的角 度和平时完全不一样，想问题，也就能找到一个不可思议的角度。”

阿林说，他所在区域的销售部门“不止一次的发生过人员清洗，都是以各种价值 观问题为理由。我相信，卫哲其实也是价值观的牺牲品之一。”。（**点评：卫哲** **在价值观的建立上确实没过关嘛**）

春节期间，马云来到福建龙岩市上杭县，1929 年 12 月召开“古田会议”的毛公 山。那次会议的主要任务是克服红四军中出现的各种非无产阶级思想，加强党对 军队的领导。两天的会议通过了由毛泽东主持起草的决议案，确立了“思想建 党”、“政治建军”原则。马云通过媒体解释：“军事是业绩导向，业绩和政治 思想是对立的，但是毛泽东把它们合起来。这就是当年红军为什么能够成功的原 因，它不是纯粹打仗的组织，而是一个完成政治任务的组织。”“业绩与价值观 对立，这事儿不通。”马云说（**点评：很对**）。“但是，当年红军的价值观是革 命事业的终极目标，马云的诚信难道就是阿里巴巴的终极目标吗？”前述离职员 工 K 说。“如果是这样，为什么阿里需要上万的 SALES（销售），每个人每天都 要发疯的打几十上百个电话？”（**点评：这个** **K** **确实不明白啊**）同样让人感到困 惑的是，马云和卫哲相交多年，如果卫哲是个追求短期利润的人，以马云的聪明， 他不可能在十年后才看清。（**点评：怎么把卫哲说得像个坏人？卫哲其实只是对** **价值观的理解没到骨子里，事到临头时不够敏感而已。**）<br>

阿里巴巴的成长，就一直是在长尾理论基础上的“农村包围城市”的成长。在攻 下中小企业之后，现在的马云正在剪下长尾，进城见贵客虽然马云讲了很多次， 很多人至今还是没搞清楚马云心中到底什么最重要。

（**点评：马云其实讲得很清楚啊，不过股东第 3 的说法有时候让人不舒服，但 我很同意客户第一的原则--其实就是消费者导向的意思，如果马云说过其他的 顺序，那就说明他后来进步了。其实从不受股东短期利益驱动的影响的角度看， 我也同意股东第 3 的说法。**）2001 年马云的经典语录是：“我认为，员工第一， 客户第二。没有他们，就没有这个网站。”而现在，马云说，“十年以来，我们 活下来的其中一个理由，就是我们坚持客户第一、员工第二、股东第三。”

（2011-05-18）

22.【转载】阿里巴巴：让公益在交易时发生

网友 S：对马云陡升敬意。

**段永平：**&#x5728;中国企业家里，马云是我最佩服的，不是之一。（2013-01-12）

网友 K：能简单地说下是什么原因让您这么看重马云？

&#x20;**段永平：**&#x6211;不明白为什么人们不看重马云，不知道大家认真看了没有。

（2013-01-13）

网友 K：知道段大哥看重马云，只是不知他有哪几条原因让段大哥在这么多成功 的企业家中最佩服他。这也是没经营过企业的人很困惑的。真的想听大哥解释几 句。因为我们买股票分析公司管理层常常出错。

&#x20;**段永平：**&#x6211;觉得马云对企业文化的理解和推行在国内是首屈一指的。

（2013-01-15）

&#x20;23.网友：相对于马云来讲，段永平先生更值得大家去学习和效仿，或者说段先 生更接近大众，更有地气。只要你坚持底线，坚定去每天进步一点点，大家都有 希望成为下一个段先生。如果换一个环境换一个时间段先生我想还能成为段先 生，但马云却不一定能成为再成为现在的马云（没有贬低的意思）。

&#x20;国人更喜欢榜样，马云就是榜样，但实际上最好的榜样是优秀的品质，只要拥有 诚实，善良，坚定，耐心，理智等很传统的东西，加上一点好的运气，每个人都

能成就一个事业，包括我自己这十年天天无所事事，我认为我都过得还不错。 马云从小就立志成为榜样，现在已经是了，但如果能从更长的时间（比方说百年） 来看，那么你会发现最大的榜样是按部就班慢慢来的人，实际上这样的人往往在 当时还并不是榜样，段先生就是一个，其实段大哥在我人生中给我最大的启发就 是做自己就好，其实这样做下去就会成为榜样，而榜样就应该是自己，是自己的 品格，坚毅有耐心，诚实和善良。<br>

几千年我们一直在寻找各种各样的榜样，结果是我们进入了一个又一个陷阱，没 有榜样的世界才是最好的世界，我们的榜样是一切优秀的品质，我们的榜样是遵 守自然的规律，但绝不应该是一个活生生的人。

&#x20; **段永平：**&#x9A6C;云是我最欣赏的企业家。或许是我自己觉得我们对企业文化的理解在 很多地方高度相似吧，但他的实施和表达在很多方面确实要强很多。 我不知道“榜样”的定义是什么，好像心里也没有个榜样。学习某个人并不是想 要成为某个人，因为谁也不可能成为某个别人。我觉得其实也没有谁比谁更值得 学习的说法，因为每个人从别人那里学到的应该是能够提高自己的东西。 我其实也有一些比马云强的东西，比如乒乓球或高尔夫，呵呵。所谓学习并不是 “去其糟粕取其精华”式的学习，那样的学法只能让自己在自己原来的圈子里打 转转，因为人们往往不知道哪些东西是精华。 补充一点，如果让马云从头再来一次，他依然有很大的概率再成功，我也差不多。 如果你能静下心来好好看看马云，你也许能学到很多东西的。（2011-10-01）

网友 Z：段总，说说我们应该怎样的学法！&#x20;

&#x20;**段永平：**&#x4E0D;知道，这都是猿粪的事。有点像学价值投资，其实是学不会的，但有 悟性的人可以提高而已。反正每次和马云聊天我都有不少收获，他看问题的角度 经常确实很独到，确实思考得很深入。人们（经常包括本人在内）一般很难 open 自己去学习别人，即使对方做得很好也老是想办法给自己找个不用学他的借口，                       有趣得很。（2011-10-02）

24.视频：马云作客斯坦福大学演讲（资源详见网络）  （2011-10-01）&#x20;

&#x20;        **段永平：**&#x4E5F;许这个视频可以告诉大家为什么我喜欢马云。经常有人告诉我马云如 何如何的。Frankly，我是见过世面的人，I'm not that stupid，OK？&#x20;

&#x20; **段永平：**&#x6628;天也去听了。马云讲得非常好，而且是用英语，真是厉害！ 自己骑自行车去的，半道居然没气了，差点没赶上。（2011-10-01）

&#x20;25.网友：马云岂止是个理想主义者，简直是个梦想家。最不可思议的是他能把 这变为现实，这就很厉害。属伟人级别，为啥有教师背景的都那么优秀。

&#x20; **段永平：**&#x5355;纯的理想主义者走不远，单纯的现实主义者做不大。马云两个都是。 这和教师背景未必有关吧？（2011-10-02）

26.网友：把“企业文化”真正印到企业上上下下的干部的骨子里又是一项艰难 的工作了。

**段永平：**&#x97E6;尔奇的《赢》里讲了不少 GE 是怎么做的。阿里巴巴这方面做得非常 好。这是一项几十年或更长的工作，应该和企业的寿命一样长，是一项重要但往 往不那么紧迫，常常被人忽略的工作。（2010-04-04）

27.网友：VIVO 对我印象最深的是：前年我在郊县，看到一个 VIVO 店，进去学 习兼聊天，没想到站台的小伙子在认真介绍完产品后，还很认真地和我谈 ‘本 分’，眼神里都是一种压不住的精神气。那一刻我感觉 VIVO 里蕴藏的潜力太大 了。

**段永平：企业文化确实很重要，这点上我比老巴要更强调。**（2015-04-29）

28\. 网友：您认同企业文化也跟您的价值观和做企业的经验有关系。您可能会说 我的经验过去已经证明过了，一定是可行的，但这又回到了用过去判断未来。那 我们可不可以简单地用一个百年老店来判断他未来也一定是好的呢？您怎么 看？（2010-04-04）

**段永平：**&#x4E00;百年老店不意味着他就一定活到 101 年。这就像不能用 pe 去预测明 年的利润一样。雷曼好像就有 150 多年的历史。但你只要注意到雷曼后期的企业 文化都变成什么样了的话，你就不会对他们的结局感到惊奇。

不过，**有好的企业文化的企业犯原则大错误的机会低，和用户比较近，表现好 的机会大**。《基业长青》里会讲的比较好些。（2010-04-04）

29.网友：您说 BBK 步步高的核心竞争力是你们的企业文化。我总觉得满足消费 者需求才是最强的竞争力，企业文化有点虚，好的企业文化一定有好的产品吗？ 不懂，请段总赐教。&#x20;

**段永平：**&#x597D;的企业文化对好的产品而言既不是必要的也不是充分的，只是概率大 一点而已。（2010-10-11）

30.网友：我认为绝大部分公司的企业文化，写在公司网站上的那短短百十个字 都是差不多的，然而对其的诠释会有比较大的区别，实际执行起来的差别就更大 了。深读一个公司的企业文化并长期观察它是否言行一致非常有利于理解一个公 司。在投资时能够很好的剔除绝大部分的平庸企业。将阿里、万科、格力的企业 文化与同行业者做比较是一种很有意思的事情。

**段永平：**&#x5176;实即便是字面也是差很多的。（2013-03-28）

31.网友： 向你请教两个企业经营方面的问题，&#x20;

1、企业的核心竞争力是企业文化，我们现在慢慢也这样认为。但如何让字面上 的企业文化落实到所有员工的言行中呢？ 我们想通过以下方式做：1.列出公司 的关键行为：可以做、不可以做的，成为员工的行为规范；2.管理者去指点和要 求自己的下属，培养员工，成为企业文化的先锋；3.涉及到原则问题不妥协：与 公司文化和价值观相违背的人和行为必须给予坚决的处理。 不知以上内容是否 妥当？ 不知你那边还有其他的方式来让企业文化落地。&#x20;

2、我们这样在行业中的市场占有率还属于 others （其他）的公司，目前的战 略是做细分市场的利基战略。通过对细分市场做差异化的解决方案来占领市场。 要做利基需要对细分市场做了解，不以技术创新为导向，做客户导向，现在就在<br>

做客户易用性的事情。我想请教你之前做公司时了解客户需求时的前 3 种方法是 什么？ 是像史玉柱那种直接找客户沟通吗？ 还是找客户一起测试产品……

&#x20;**段永平**：1.最重要的是什么不可以做。你可以多看看韦尔奇的书。阿里巴巴在企 业文化建立方面的水平也还不错。真正用心的话，总能找到办法。具体的办法很 多，变化也很快，比如现在网络可以大大提高效率了（2010-04-23）

&#x20;32.网友：大道曾讲过投资中重点考察三个要素：商业模式，企业文化，市场价 格。我想问的是：尽管我非常认同步步高体系的企业文化，但不同企业有不同文 化价值观，因行业属性，发展阶段，还有领导人特质的差异，这个企业文化评价 的标准是什么？也就是什么是好的文化，什么是坏的文化？是要符合商业逻辑， 还是常识，还是其他什么的？请大道指导。&#x20;

**段永平：**&#x4F60;的一个尽管说的好勉强啊。**建议你看看《基业长青》和《从优秀到卓** **越》这两本书，我是翻过这两本书后才对企业文化理得比较清了**。（2019-03-21）

33.网友：请教段总一个问题，苹果公司在九十年代陷入困境时董事会决定请乔 布斯回来，IBM 公司的董事会在 IBM 出现问题时也一致决定聘请郭士纳为 CEO。 在这种关键时刻，公司董事会的选择是否也是公司文化的一种体现？

**段永平：**&#x662F;的，没有好的企业文化就很难有好的董事会，没有好的董事会将来的 CEO 人选出问题的概率就会大很多，因为董事会会变得短视。（2013-04-16）

34\. 网友：如何理解一个好企业（符合价值投资理念）的老板或 CEO 的价值？人 的因素与产品的因素哪个更大？

**段永平：**&#x4ECE; 5 年 10 年的角度看，CEO 至关重要。从 10-50 年的角度看董事会很 重要，因为董事会能找出好的 CEO。从更长的角度看企业文化更重要，因为一个 好的企业文化可以维持有一个好的董事会。GE 就是一个好例子。

好的公司之所以是好的公司，必然**会有些**好的产品。但所谓好的产品的寿命是非 常有限的。所谓好的生意模式可以让好的产品的寿命大幅度提高。（2010-04-03）

网友 Z：你是认为企业文化强大可以选出好的 CEO，还是强大的企业文化对于 CEO 个人能力要求反而不是那么高，因为企业文化让公司做正确事情的概率提升？

**段永平：**&#x6211;认为强大的企业文化会帮公司找到好的 CEO，好的 CEO 在有强大企业 文化的公司里能发挥的作用更大。

35\. 怎么把 culture（文化）传承下去？

**段永平：**&#x6CA1;有特别的秘诀，主要在于选择，找到同道中人。因为你是没有办法说 服不相信你的人的。不相信你的人，你跟他说话的时候，他的眼神是飘的，你能 看出来。然后就是年年讲，月月讲，天天讲，靠年头淘汰掉不合适的。（2018-09-30）

36.网友：想要了解更多关于企业文化方面的知识，比如什么是好的企业文化， 如何建立好的企业文化，大道能推荐一本书吗？

&#x20; **段永平：**&#x6211;觉得看书可能不如看企业来的明白。书可以看《基业长青》，企业可 以看苹果这些年的产品发布会（每年九月份的那个就好），或者多看几遍老巴在          大学的问答交流。（2019-06-01）

37.网友：我切身体会到段总在营销本质，企业文化方面诠释的是最简单通透的， 之前看多少本书也半瓶醋的东西，段总一句话或一个例子，就让俺开悟了。

&#x20;**段永平：**&#x54C8;，我们确实也有自己的体会，悟出来不容易，你能一下子体会到那绝 对是你的造化，多数人做不到的。（2018-09-12）<br>

## 二、核心价值观

01.网友：“段总，我觉得你早年成功最主要的原因是：紧随当时的行业领袖--- 任天堂。不知道你同意吗？或者还有更好的答案？”反正我个人觉得这个应该不 是“最”主要的原因，还是听听您的吧！

**段永平：**&#x5475;呵，那个可能是我们不够成功的原因。如果那时我们就开始做搜索的

话，就没 google 什么事了![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)。所谓成功人士，运气看起来固然重要，但其实运

气对大家是均等的。那个时候做游戏机的人恐怕比现在做手机的人都要多，是不 是都算跟对了行业？做搜索的人多了去了，但 google 只有一个。顺便问下，这 里有人知道当年的小天才游戏机的吗？（2011-11-14）

02.网友：请问方丈，89 年段总进入中山怡华电子，当时企业账上只有几千块， 工人二十个，欠债 200 万。91 年开始更名小霸王生产游戏机，95 年年销售额达 到 10 个亿。起码为小霸王赚了好几个亿。2000 年后到美国开始投资股市，获得 极大成功。他创立的步步高电子，他的弟子创立的 OPPO\VIVO，虽然没上市但每 年获取上百亿的利润，然后再把利润交给段总投资苹果公司（我推测的）。他的 四弟子黄峥创立拼多多，虽然还没赚钱，但通过上市把股票卖给大众，立刻变成 了亿万富豪。当然还有金志江掌控的小天才，还有一加手机。在这个过程中，究 竟是段总所传递的价值观最重要呢？还是这些人的聪明才智最重要？如果说价 值观最重要，那是否一般智力的人只要遵循段总的价值观就可以获得相同的成 就？如果说是这些人的聪明才智最重要，那么社会上和他们一样聪明的人一定有 很多，但为什么他们做不到这个程度？

**段永平：大家是同道中人，有着共同的价值观（改变人的价值观几乎不可能）。 但凡几十年如一日坚持做对的事情（或者叫坚持不做不对的事情）同时一直努 力把事情做对，有个不错的结果是大概率事件。价值观是道不是术，很难学的。 假装一下的人坚持不了很久。黄峥的公司看起来似乎运气更好点，才三年就这 么厉害，但实际上黄峥十几年前对企业理解也已经很好，且这个公司之前的公 司就做得不错。其实黄峥十几年前问过类似的问题，看来当时他确实明白了。**

（2019-02-15）

03.网友：看到今天 Tony 的微博，步步高，OPPO，Realme，企业文化基因这么有 序和有力的传承，段哥功力深啊，善莫大焉，叹服。

**段永平：**&#x4F60;看到了为什么我不当 CEO 的原因哈。（2018-07-30）

**段永平：**&#x5728;我心里，像陈明永，沈炜或黄峥他们最后有啥成就我都不会太意外的， 啥都成不了我才会觉得意外！（2018-09-15）

## 三、本分和平常心

人们常说的那些：广告，员工股份分享，经销商入股，网点密布，线下渠道，等 等等等---都是不对的！ 我们的秘诀其实就是：本分+平常心。（博文：《我们的秘诀》2016-10-12）

《**不秘”诀：本分+平常心**》（**2016-10-12**） 或者叫公开的秘密……就是“本分”二字！ 极其简单但绝不容易，可以一秒钟看“懂”但绝大多数人一辈子做不到。

关于本分是什么，读者可以去看陈明永或沈炜的解读，他们从各自的角度，用不 完全一样的语言做了几乎一样的解释。（在我眼里如此哈）

**1.本分是什么？** 我们理解的本分就是：“做对的事情、把事情做对”。 什么是“做对的事情”？

难道还有人明知是错的事情还会做的吗？看看周边有多少人抽烟你就明白了。为 什么人们会明知是错的事情还会去做呢？那是因为错的事情往往有短期的诱惑。

其实，人们往往知道什么是错的事情，只要把错的事情停止做了，就离“做对的 事情”更近了一步。所以，“做对的事情”其实就是发现是错的事情的时候要马 上停止，不管多大的代价都是最小的代价。

人们常说的“坚持到底”，指的是坚持“做对的事情”而不是坚持做错的事情！

很多人都希望知道把公司做好的秘诀是什么，其实“秘诀”不是做了什么而是不 做什么。好的公司都一定是有一个长长的“Stop doing list”，就是“不做的 事情”。

“不做的事情”其实也分两类：一类是谁都不应该做的事情，比如欺骗；另一类 是和自己公司的使命和愿景相结合的。

下面我举一些我们自己的“不做的事情”的例子，这也算我们的小秘密吧。

不做 OEM：最早提出不做 OEM 的就是现在 OPPO 的 CEO 陈明永，不记得是哪年了， 大概可能有 20 年了吧。为什么我们不做 OEM 呢？长远来讲，我们想建立自己的 品牌，我们需要把所有的资源投入到我们自己的产品上。做 OEM 有很专业的公司， 他们有很专业的办法去满足很多不同的客户的不同的要求，我们根本就没有精力<br>

去做这些事情，所以长远来说我们是会输给那些专业做 OEM 的公司的，既然知道 长远会做不过别人，那我们干脆就不做。记得大概 十五六年前，我还是 CEO 的 时候，沃尔玛的供应商曾经来找过我，说要给我们下 100 万台的 VCD 的单子，我 在电话里直接就拒绝了。对方还问我，难道价钱你都不想谈吗？我说，对的，不 管什么价钱我都拒绝，反正你也不会给我好的价钱，谈来谈去浪费大家的时间。 我当时还类似地拒绝过南方贝尔的代表要下的“巨量”电话机订单。当时给我打 电话的人还嘟囔着说，在中国还没有人拒绝过我们的订单呢。

不讨价还价：我刚到广东时，就发现人们在谈生意时谈来谈去谈的都是价格，当 时我就想，如果能不谈价钱，那至少可以省掉 70%到 80%的时间吧。后来，我们 花了两三年的时间，建立了一套销售体系，确确实实做到了所有的客户在我们这 里拿的货的价钱都是完全一样的，不管生意额的大小，没有折扣，没有返点！也 许很多人很难想象，我们这个公司实际上是没有销售部门的。

不赊账、不拖付货款、不晚发工资、不做不诚信的事情、不攻击竞争对手（郁闷 的是偶尔看到一线的友军在线上攻击展开各种攻击……企业文化贯彻到神经末 梢是一件非常不容易的事情）……，我们的“不做的事情”是一个非常长的表， 每一个不做的事情都是有背后的故事和道理和逻辑的，就不一一在此说明了。

什么是“把事情做对”？这个可能比较容易理解一点点，但其实也没有看上去那 么容易。把事情做对是一个学习的过程，中间会犯很多的错误。如何坚持做对的 事情，付出为了把事情做对的过程当中所需要付出的代价，其实是非常不容易的。 在把事情做对的过程当中，其实是没有办法避免犯错误的，比如打高尔夫的人， 是没有办法避免偶尔把球打下水的，能做的仅仅是如何能降低犯错误的概率。

平常心：平常心其实就是在任何时候，尤其是在有诱惑的时候，能够排除所有外 界的干扰，回到事物的本质（原点），辨别事情的是非与对错，知道什么是对的 事情。

最后，顺便说个“把事情做对”的小例子。

前面讲过，把事情做对是一个漫长的学习过程，学习能力和所受过的教育程度是 非常重要的。我是七八年上的大学，当时连电脑都没学过，基础也非常不好，自 己又是个非常懒散的人，不是那么愿意去学那些新的东西，所以一直觉得自己不 是一个做 CEO 的好的人选，所以，我就找到了比我更好的人选。现在 OPPO 以及 vivo 的 CEO 都比我年轻大概 10 岁，所受的教育程度以及学习能力都比我强，对 企业文化的理解也和我一样（我们叫同道中人），所以我当时选择了离开一线。 十多年过去了，今天我可以非常得意地说，我确实是对的。在这里我也可以非正 式地宣布，我已经于十几年前离开了 CEO 的位置（其实我早就不在其位也不谋其 政了）。虽然作为 founder（创始人）之一，我依然会非常关注我们公司（和所 有人一样，我了解我们公司的办法目前主要是从网上），但早就不参与任何一线 的决策了。网上说的所谓的运作或者遥控是完全不存在的。

顺便补充一下，我们的教育电子公司做的其实也很好，在国内的教育产品相关的 企业中应该也算是最好的一个了，CEO 也非常的年轻（对我而言哈）。<br>

另外，有空我会写一些我能记得的回忆（都是十几年前的事情），以及相关的对 于经营企业的理解或感悟。由于离开一线的时间已经很长了，回忆的东西未必准 确，而且所有我不喜欢的东西我都会想不起来的。《不秘”诀：本分+平常心》 2016-10-12）

\----------------------------------------------------------------

**2.本分和平常心（1）（2010-03-24）**

很久很久以前，我们公司就开始提倡“本分”和“平常心”。怎么开始的和为什 么会开始我都不记得了。

网上可以查到许多对这两个词的解释，我只在这说说我自己的简单想法。 “本分”，大概就是该干嘛干嘛，该是谁是谁的意思。 要想搞明白什么是本分，也许要从什么是不本分来看。

比如说，欠债还钱（包括利息）就是本分，不还就不是。想想周围有多少人和企 业欠债不还就知道有多少人不本分了。这类的例子很多，各位可以自己想。

我们这些年来在本分上做得还不错，有时能自己反省自己是否本分，当然也不是 没干过不本分的事。

记得刚刚开始做小霸王时，从一个台商那买了一批散件来组装。当时的东西质量 还是不错的，而且给我们货时已经多给了 2%的 spare parts，可在装的过程当中 总会有些坏的，最后坏的那部分我就没给人钱。可能是当时人家很不高兴的样子， 我就一直记得这个事，反省了很久，终于觉得是自己错了。可惜后来再没和对方 做过生意，也就没有机会补偿给人了。骨子里我也是个不肯吃亏的人呐。

说个我们做的不错的例子，好像是 97 年左右的事。那时步步高还是刚刚起步， 资金还非常紧张，加上俄罗斯外销回款不顺远超想象，造成有一段时间我们无法 按期付供应商的款。当时我们开了个供应商会，向大家通告了我们的情况，提出 了两个延期付款的条件：一是我们付 1%的月利息；二是如果有人愿意的话，可 将货款入股。当然，都不愿意的话我们也就只能付现金了。多亏多数供应商的支 持，我们度过了那个难关。那时可真不容易啊，听说账上只有两万块了。后来是 俄罗斯的同事想尽一切办法，从莫斯科扛着两皮箱的美金到中国香港才最后解决 问题的。

呵呵，记得若干年以后，我见到一个挺熟的供应商，发现他头发掉了好多，就问 他怎么搞的。他告诉我说，因为当时选择了拿利息，很后悔，现在每天早上对着 镜子拽自己头发啊（这一段是我编的，因为我觉得可能是他太太拽的）。

本分说起来容易，做起来真难。看到别人不本分容易，反省自己不本分更难。 我们自己的水平大概到了偶尔会反省的地步，所以还要继续努力。<br>

有事出去了，下次再说平常心。

**----------------------------------------------------------------**

**《好汉不吃眼前亏》（**&#x32;010-03-12） **段永平**：俗话说，好汉不吃眼前亏。我一直不太明白这句话的意思。 不过，我看到的文化现象是大家都不愿意吃亏。 我不知道需要合作的时候，如果大家都不吃亏的话会是什么结局。 事实上我们中国人在生意上合作成功的机会好像确实比较小一些。 很久很久以前，我们公司开始提倡“不赚人便宜”的文化。

我不知道我们到底在多大比例上做到了，但我们和人的合作好像成功比例确实要 比平均高一些。

也许我们公司能活到今天而且活得还不错的原因和这有点关系？ 呵呵，我买股票的时候基本上也是这样。

我想买的股票我总是把价格放在 ask 上，卖的时候总是放在 bid 上，只要这价格 是我可以接受的。

看起来我每一单好像都可能有点亏，但总的结局一直都还不错。

**------------------------------------------------------------------**

**《好汉不吃亏》（2013-02-19 ）**

好汉不吃眼前亏的原意好像是识时务的意思。这里要说的和原来那句话其实未必 有关系。

不爱吃亏是人之常情，无可厚非。记得以前经常会有人提起“双赢”的说法，但 有多少人真的想过到底什么才是“双赢”呢？当人们提起“双赢”时，可能本能 会想只要不吃亏就行。后来发现，要想不吃亏的话，往往需要赚点便宜才能做到

\---于是我们公司便有了“不要赚人便宜”的文化---个人认为只有在“不赚人 便宜”的心态下，才有可能做到“双赢”---所以“不赚人便宜”就成了“本 分”的内容之一。

\-------------------------

顺便讲个小故事：

记得很久很久以前（大概 1989 年）刚刚开始卖游戏机时，我们主要是靠进 SKD 大散件来组装游戏机的。

有一次进了一个台商的一批货（好像是两千台），合同价里包含有 2%的 spare parts，就是对方按 2000 套的价钱共给了我们 2040 套散件的意思。<br>

结果生产完了以后大概有 50 台坏机，所以结账时就少付了对方 50 台的钱。（当 时好像确实没搞懂 spare parts 的意思。）

后来再也没和这个台商打过交道了。 这事让我内疚至今，看来赚人便宜的事情其实是不便宜的。

**--------------------------------------------------------------------**

**问答**

01.网友： 我的理解是，不赚人便宜或者说敢于吃亏，是为了解决一个基本的生 意之道或说管理之道——信任。对于我们中国人来说，“信任”这个资源太稀缺 了啊！缺乏了信任，合作就是空话了！

提倡不赚别人便宜的公司，是值得尊敬的，她至少明确告诉了员工什么是对的（不 赚别人便宜），什么是错的（老想赚别人便宜）。我看到的大多数的公司都是在 以能赚别人便宜为荣，比如一个采购员能拖供应商的货款，是“有能力”的表现， 其结果是……

**段永平：**&#x5F88;同意！我们公司财务如果逾期给不了款应该属于“没能力”的表现。

早年我当 CEO 时曾在一次供应商会议上向所有供应商提供了我的手机号码，告诉 他们如果有人不守信就可以打我电话投诉。好像一直没人打过。（2010-03-12）

02.网友：赞叹段大哥的境界，处处自然而然地流露出智慧！吃亏是福，自古以 来老一辈都是这样提倡的，现在有些讲智慧的书上也是这样说的，吃亏就是舍得， 先舍后有得，大舍大得！学习段大哥！

**段永平**：舍不是为了得。（2010-03-12）  03.网友：李嘉诚先生曾说过一句话，大意是，一个生意，如果应该拿 10 块，但

实际上可以拿到 11 块，最终他只会拿 9 块，这样，生意才做做得大，做得长远。

有 10 多年了，我一直记着这句话，并坚持这样做，意思跟段总说的差不多 **段永平：**&#x662F;的。我挺喜欢李嘉诚的生意经的。（2010-04-02）

04\. 网友：为什么我们说“好借好还，再借不难”是不本分的行为，就是因为这 其中的行为是结果导向的。

&#x20;**段永平：**“好借好还，再借不难”已经比不还要好多了。我确实曾经用过这句话

来说明本分的意思，是想说借人钱就该还，和以后要不要再借没关系。如果是因 为想再借钱才还钱，那就是不本分，因为最后一笔可能就不还了。事实上确实有 一些人还供应商钱的速度是和是否以后还继续有生意有很大关系的。

（2010-04-06）

&#x20;05.网友：最喜欢段总谈企业文化的段落，理解后运用到自己的生意里真是其妙 无穷，记得在段总以前的文章里谈到不扣押供货商的钱，还把自己电话公布给供<br>

货商，有拖欠就直接打电话，在目前中国，这样的事情简直凤毛麟角，都在尽力 用供货商的钱做着自己的生意。表面看，段总这样做事吃亏的，吃的亏还不小， 试想，那以亿计算的材料款多压一天光利息钱就不是小数字，但实际是占便宜的。 理解这句话的实战意义还要从段总提出的企业文化中的本分二字展开，我自己深 有体会，在跟段总学企业文化以后，我把工程提点从百分之二十降到了十八个点 又降到十五个点，每一笔钱都会多给个二三百，每年多给出去好歹也要几万，看 似吃亏了，但是通过这点，企业的凝聚力非常好，工人会自动维护这个团队，他 们在任何人面前都会极力说我的好，业主通过工人的态度对我也会高看一眼，有 亲戚朋友再做装修时候自然会很顺畅地推荐，而且，不管外边用什么办法拉拢他 们，从没人被挖走过，工人干的时间长，经验就特别丰富，一处活该怎么干好根 本用不到我废话。看似吃亏的事情，实际是占很大便宜了。

&#x20; 企业文化中本分二字还有更不同的意义。在中国这样浮躁欺骗到处存在的社会 里，本分就稀有，稀有就会被关注，营销就不会吃力，记得以前在给其他公司做 业务员的时候，老板和员工做营销费劲了九牛二虎之力，但效果相当不理想，我 运用段总的企业文化中本分二字贯穿到营销里时候，业务就像顺水顺风的船，少 许推动就会流畅的往前走。在这说这些不是为表现我自己，在这陌生的地方表现 自己也无用，只是用我本身的事例提醒大家关注段总提出的企业文化部分，这才 是真宝贝。本分二字，必须从骨子里发出来才有用。

&#x20;  **段永平：你只要能坚持“本分”，很多年后你会很厉害的。俗话说“有借有还 再借不难”，其中“有借有还”就是“本分”，“再借不难”其实是“功利”。 当你不再想着“再借不难”时你就真的“本分”了（2013-02-24）** &#x20;

&#x20;网友Ｓ：这真是“本分”的最好解释。突然想到不懂不买也是一种本分，明知不 懂还因为其他原因（诱惑）而买就是不本分。

**段永平：**&#x662F;的，围棋里的本手可能也是这个意思。（2013-02-25）

&#x20;06.网友：好汉不能占便宜。

**段永平：**&#x4E0D;能占便宜的说法经典哈，能说出这话来不容易！（2013-02-21） 07. 网友：一个人，还有一个企业如何才算本分或者如何才能做到本分？

**段永平：**&#x672C;分的意思大概就是不做不本分的事情。心里老有这个念头的人大概就 比较接近了。多数人都是喜欢用这个概念去衡量别人，能够时刻用本分衡量自己 的行为的人大概就算是很本分了，企业大致也如此吧。明知错的事情还去做就是 不本分。本分是个检视自己的非常好的工具。个人认为总是拿“本分”当“照妖 镜”去照别人是不妥的。（2013-03-31）

&#x20; 网友：本分是个检视自己的非常好的工具。个人认为总是拿“本分”当“照妖 镜”去照别人是不妥的。我这半年多正在为“照别人”而困惑呢。但是看到别人<br>

不本分甚至不安全时忍不住要说，说了人家又不高兴。这就是做了对的事情，但 是没把事情做对吧。

**段永平：**&#x5148;照别人大概是不对的事情吧。一个组织里如果大家都有照自己的习惯 就已经很好了。（2012-04-01）

&#x20;网友：我总感觉微信红包有点问题，群里动不动就抢红包，不本分。不知你是怎                                                      样看法？

&#x20;**段永平：**&#x6211;们说本分时说的是“求责于己”，而不是把“本分”作为照妖镜用的。

（2017-06-04）&#x20;

08.网友：本分的问题应该是适用在企业每个员工吧！那这个本分问题可以分大 小吗？比如公司总经理呢，什么样的问题才叫不本分？那我听说步步高里面不同 岗位本分也不一样，比如总经理赚了不应该赚的钱是不是不本分？纠结中！ &#x20;

&#x20;**段永平：**&#x8D5A;了不应该赚的钱当然就是不本分。虽然大部分人认为有钱赚就行，但 我们公司是属于知道有些钱是不能赚的这类公司。如果这类公司越来越多的话，   消费者就会安心很多。（2010-03-29）

09\. 网友：该怎样学习本分呢？

**段永平：**&#x672C;分是骨子里的东西，应该不是学来的。比如借钱要还等等。

（2016-06-19）

10．网友：价值投资中，用 100 万获得 1 个亿，是否和本分文化的价值分配不符 合？

**段永平：**&#x672C;分我的理解就是不本分的事不做。所谓本分，其实主要指的是价值观 和能力范围。赚多少钱不是我决定的，是市场给的。呵呵，谋事在人，成事在天。 本分的意思是不干不该干的东西。知不知道什么该干是能力问题，明知不该干还 干是作风问题，赚了不应该赚的钱当然就是不本分。虽然大部分人认为有钱赚就 行，但我们公司是属于知道有些钱是不能赚的这类公司。如果这类公司越来越多 的话，消费者就会安心很多。（2010-03-25）

11.网友:今天有人分享的时候讲到领导力中的“不知有之”，第一个反应出来就 是阿段，虽然从没有见过你。你上次讲到你对公司的贡献是早期企业文化的建设， 反复强调企业文化是我们核心竞争力。结合这件事情我又有了更深的体会。

正是因为我们有本分的企业文化，才会有反思的动力和进步的决心。昨天问完这 个问题后，我自己也思考了很久。

今天培训最后一天每个人有三分钟的培训感言，我说到我们企业文化不能被曲 解，文化要用普世的价值，学会爱和尊重，而不是把企业文化当成精神奴役员工 的工具。本分本源是排除压力做对的事情，而不是目前部分领导主管所认为的老<br>

实就是本分，员工顺从就是本分，自扫门前雪就是本分，曲解本分就是最大的不 本分。之所以出现文化和组织氛围差异这么大的情况，恐怕很大程度是企业文化 在贯彻实施时发生了扭曲。

为什么卓越的领导者少见，尤其在中国文化下少见，是不是卓越领导者所倡导的 “同理心”、“尊重”、“自由”某种程度是反我们文化，甚至是反人类自身的 一些陋性的，比如“自私”、“占有欲”，要做一个卓越领导者，首先需要修炼 成一个自我管理者，可以管住自己的“小”才能成就别人的“大”。

**段永平：**“爱和尊重”是好的企业文化的基础。老实确是本分、服从领导也是本 分、首先自扫门前雪当然也是本分，但“本分”的内涵应该不仅仅是这些。卓越 的领导人少见是正常的，美国也很少见。（2012-03-27）

12.网友：看着周围不本分的都暴发了，自己还吭哧吭哧地赚血汗钱，股市投资 也是如此，旁边一个人天天投机涨停板，估计周围的人都熬不牢了。

&#x20;**段永平：**&#x5475;呵，如果你赚的是本分钱，你会睡得好。身体好会活得长，最后还是

会赚到很多钱的。最重要的是，不本分赚钱的人其实不快乐 ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif)。（2010-03-25）

13\. 网友：（刘作虎：坚守商业的本质只做好产品这是安静的力量）安静的力量 远超我的期望！

&#x20;**段永平：**《清静经》上说“人能常清静，天地悉皆归”，一个人能够常清静，天 地的力量会回到你生命上来。平常心其实就是这里清净的意思。只有平常心才能 本分哈。“本分”，就是要回归(或者找到)一种心态，在这种心态下往往能做正

确的事情，而这种心态就是清净心，是佛家所说的无上智慧。回归清净心，做正 确事情的这个过程的坚持，就是本分。（2018-12-17）

14.网友：段大哥参与了本次 OPPO 企业文化 2.0 的讨论了吗？请问如何理解以前 的“欲速则不达”到现在的“快”这种改变？

&#x20;**段永平：**&#x6B32;速不达指的是要做对的事情，“快”指的是把事情做对的效率。

（2014-05）

网友：我听说过 "fast is slow/欲速不达"，也听说过 "天下武功，唯快不破"…… 怎样理解？

**段永平：**&#x6B32;速不达指的是要做对的事情，不然可能南辕北辙。“唯快不破”指的 是把事情做对的能力。想想刘翔你就知道光是快也是不靠谱的。（2014-07）

15\. 网友：刚毕业时也许理解不到学长这几句话的精髓，折腾过一番之后会有切 身的体会。抱着侥幸心理制定战术目标是愚蠢行为，抱着侥幸心理制定战略目标 会导致灾难。我们自己吃过亏之后，回归到脚踏实地、甚至匍匐前进的战略规划。<br>

集中火力攻下一个具体项目，然后通过实打实的提效服务树立口碑。用两个湖南 伟人的话说：“建立根据地”、“结硬寨、打呆仗”。

想请教学长一个具体的问题：您刚到中山怡华做厂长的时候，是怎么快速建立执 行团队的？我看网上报道，您 1989 年开始做厂长，三年内就产值过亿了。而那

时候陈明永学长还没毕业。您只身一人到广东才 28 岁，能让工厂按照自己的规 划全速启动，有没有什么招数？有没有遇到内部的阻力？如何克服？

**段永平：**&#x5F53;年谈不上快速，三年内好像也没过亿吧，而且刚好赶在游戏机风口上。 你学长好像是 1991 年加入的。非常有意思的一点是，我整个博客讲的都是"道” 的东西，可人们总是觉得“术”的东西才值得学。其实我不太懂“术”，所以才 觉得自己不太适合做 CEO。不过，只要在“道”上，“术”的东西早晚会学会的， 快速与否往往没有人们想象的那么重要，投资亦然。（2016-06-18）

16\. 网友：唯有坚守“本分”，就可以与浮躁绝缘，。这是 oppo 陈明永 6 月 15 日微博写的；前段时间（一加手机）刘作虎说在步步高企业文化中学到的也是“本 分”。“本分”这个词现在可把我搞湖涂了？请教段老师除了借钱要还外陈明永 上面那个本分所指是不是心态（平常心）来的？

**段永平：陈明永对本分的解释很好，你可以找来看看。**（2016-06-20）

引用:陈明永对“本分”的新含义 1、隔离外在的压力和诱惑，保持平常心态，回归事物的本源，把握住我们应该 做的合理方向。 2、本分要求要敢于质疑，敢于挑战，通过批判性思考，以抓住事物本质。

3、本分是要求自己而不是要求别人，当出现问题时，首先求责于己。

4、本分规范了与人合作的态度——我不赚人便宜。

5、本分高于诚信，即使没有承诺，本来应该做的事情也要做到(2019 年 1 月 4 日 OPPO CEO 陈明永对“本分”的新含义)

网友：OPPO 创始人陈明永认为本分有着三种含义：

&#x20;含义一是指本分是隔离外力，在平常的心态下，把握住应该做的合理方向。所谓 本分，就是当在面临外在的压力和诱惑时，要做出判断、采取行动时，能够把这 种外在的东西摒弃掉，回到事物的本来面去思考，把握住应该做的事情。这时， 面对者所秉持的合理的、积极的心态就是本分。

含义二是指本分规范了与人合作的贪渎。OPPO 期望与供应商坦诚沟通，平等互 信，互利共赢，合作发展，成为健康长久的合作典范。不攻击竞争对手，攻击对 手是人在压力状态下的不本分行为。这种不良情绪带到工作中，就会攻击同事， 带到家里，就会伤害自己的亲人。

&#x20;含义三，本分是指出现问题时，首先求责于己的态度。陈明永说“本分是要求你 做得比说的好；没有说的东西，该你做的你必须要做。如果每个人都这样做那这<br>

个公司运转就会非常好。有些事情介于临界点之间的，你觉得该别人做、别人觉 得该你做，两个都没做，这个事情就放下了，这样做对于整个事情的推动没有任 何的帮助。但是回归到本分的判断，该我做的我就会感觉到“可能该我做”，我 就会直接去做，这个事情就解决了。在与人共事的时候，OPPO 的员工都能主动 地做到责己，就是在出现问题的时候，从自己身上找原因，并解决问题。而这一 本分的企业文化体现在产品上，最大的特点就是以用户为中心。OPPO 对于至美 的追求已经融入了整个公司的设计、工程和制造等各个环节，始终坚持理念来做 最好的产品，让用户很惊喜。“不被外在的事物牵动，就可以把你该做的事情做 好，做到极致。这时，你就可以触动用户——触动用户的产品，市场上总有你的 一席之地。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x8FD9;个是对本分的一个很好的解释。本分简单讲就是“做对的事情，把事 情做对”。所谓回到原点也是指回到“什么是对的事情”或者是“如何把事实做 对”这点上。我们公司在沟通上可能比绝大多数公司的沟通成本要低很多，最重 要的一点就是当碰到难题时，我们能经常先回到“什么是对的事情”而不是停在 讨论“这是不是最好的（赚钱）的办法”上。本分这个东西看起来似乎不起眼， 但 20 年到 30 年后的差异就是我们公司的现状和当时我们那些竞争对手的现状的 差异。我至少还能想起来几十个当年看起来比我们强大很多的对手，从游戏机到 学习机到 VCD 到 DVD……（2015-03-24）

**17.网友：**[**陈明永说本分** **——** **《创业家》杂志** **2013** **年第** **7** **期**](https://xueqiu.com/2740739644/133628865) 本分：**阿段（段永平）给我留下的东西就是做企业的道。 我们想找一个词来描 述这个“道”，找来找去就找到“本分”**，后来我们形成了很细密的一套理解。 当然本分有很多很多种解释。以前我们读书，课桌划条线，线有点宽度。如果你 的胳膊始终占在别人边缘，你秉承的是我不吃亏。如果我不占便宜，如果每……

**段永平**：**我们总是说，量不重要，利润不重要，最重要得是要做对的事情，要 找到消费者的真实需求并想法满足。**(2019-10-06)

18.关于我们    &#x20;

**段永平：**&#x6700;近由于 OPPO 以及 vivo 在手机领域里的不断发展，关心我们的人越来 越多了。有些东西传来传去传偏了很多，有的甚至是没影的事情，所以本人决定 借博客来说说真实的我们，说说一些过去的事情。 今天看到一条，还是一个熟人说的故事，说马云听说我们厉害后就去了我们那里， 然后准备 300 亿买下步步高研究院。这事具体怎么传成这样我不知道，我只想说 两个事实：1.我们就没有步步高研究院这么个单位，2.我很佩服马云的很多方面， 也和马云算是好朋友了，见过多次面，平时也偶尔会通个短信啥的，但我们之间 从来没谈过生意。从来没有啊，不然我得多赚多少钱啊!(这句话是玩笑）

（2016-10-11）

**3.平常心--欲速则不达**

**段永平:**&#x4ECA;天是我们公司成立 15 周年。

当年选这个日子好像和纪念 9.18 还有点关系，毕竟日本人的电器厉害啊。 **现在平常心，知道做企业最大的对手是自己**。（2010-09-18）

\---------------------------------------------------------------

01\. 网友：“现在平常心，知道做企业最大的对手是自己” 这话是段大哥内心 真实的感受，一般人体会不到也理解不了 **段永平：**&#x5475;呵，我们公司的人大概都能明白，不明白的一说也就明白了

（2010-09-18）

02\. 网友：本分和平常心能不能写个续集啊？希望写一个关于平常心的 **段永平：平常心就是回到事物本源的心态**，写完了。有空再想想可不可以写多些。

（2011-05-28）

网友：找个机会再写写你的平常心哲学吧；我觉得这个东西很受用。

**段永平：所谓平常心就是回归事物本源的心态**，马云童鞋说平常心其实就是不平 常心，因为不容易有。（2012-03-10）

03\. 网友： “真正的泡妞高手，不是天天追着女孩子，而是让女孩子天天追着 你。你真正把你的事情做好，利润是水到渠成的事，这个过程只是长一点和短一 点而已。”这句话段总耳熟么？呵呵。 在人的一生中，或者企业经营的过程中，会不断遇到诱惑、挫折，会不断受到挤 压。我们会不由自主、随机地做出反应，这种反应往往背弃了我们最开始的路。 这时，我们要回到最早的原点，想一想我们本来要做什么，我们最开始做这件事 的目的是什么，把这一点牢牢抓住，再考虑外界带给我们的诱惑，这种心态就是 本分。而 OPPO 最根本的，就是对核心价值观的坚守。

**段永平：**&#x8BA9;利润追着你走最早就是陈明永告诉我的，应该来自于京瓷的创始人。 那个泡妞的说法不是来自于我，tony 可能搞混了，但用于幽默地说明问题还是 有效地。我的理解，**我们的本分指的就是原点，平常心就是回到原点思考的心态**。

（2013-09-29）

04\. 网友：“只有回到原点思考，才能带来一个企业基本的逻辑”

《对话王石：千亿万科的原点》。万科和王石已经在思考“回到原点”的问题。 “原点”是什么？一个企业的原点是客户、市场、股东。“只有回到原点思考， 才能带来一个企业基本的逻辑。”郁亮说，“如果脱离原点，即使公司增长了， 但是跟客户、股东的利益是冲突的，这有什么意义呢？”从 2009 年开始，规模 和速度已经不再是万科的主要诉求。

&#x20;我觉得这样的公司，政府越来越紧的调控可能会对它的短期业绩（比如近一两年） 产生不太好的影响，但从长期来看，其实越调控对它越有利。这不仅仅是企业策 略的作用，而是强大的企业文化的作用。关注未来 10 年（而不是“明年”）能 赚多少钱的投资者，现在可能是“逆市而为”的好机会。<br>

**段永平：我们常说的“平常心”其实也是这个意思，就是凡事要回到原点去考 虑。平常人往往很难有平常心**。（2011-02-18）

05\. 网友：李嘉诚“建立自我，追求无我”是不要太看重别人想法，而要追求自 己内心真正想要的东西的意思吗？

**段永平：**&#x5DEE;不多吧，还有就是要“平常心”的意思。（2010-05-21）

06.网友：平常心也就是平和吧！好像最早是诸葛亮说的，和段总的胸无大志一 个意思？

**段永平：平常心指的是回到事物本源的心态**。“胸无大志”指的是要一心一意做 好该做的事而不是好高骛远。“胸无大志”和“志存高远”并不矛盾。就企业而 言，“胸无大志”多用在“如何把事情做对”上面，而“志存高远”则指的是 “愿景”。（2011-03-27）

07.网友：你怎么提高对一件事情的确定性？我的意思是，你怎么肯定自己是对 的？我现在总觉得看问题看不到点子上，广阔撒网阅读，博取百家看法，最后还 是很难得到确定性，看问题进不到下一层。有时候感觉机会就在脚下，只要再深 两三步就能看清，但总是做不到。

**段永平：如果你能平常心去看问题就会容易看到实物的本质。**（2011-03-28）

08.网友：看你的博客 2 年了，看了大部分你的评论和大家的提问。发现我们大 多数人（包括我在内，不是刻意攻击大家哈）是缺乏独立思考的能力，其实也就 是缺乏你说的“ 回到事物本源的心态 ”，不知道理解是否正确？

**段永平：**&#x5E73;常心实际上就是不平常心，对谁都不是件容易的事。（2010-03-24） 09.【引用】平常心是道 (2011-03-25)

平常心是道，无造作，无是非，无取舍，无断常，无凡无圣。只今行住坐卧，应 机接物，尽是道。——马祖道一禅师

有一个人曾经问慧海禅师：“禅师，你可有什么与众不同的地方呀？” 慧海禅师答道：“有！”。“那是什么？”这个人问道。 慧海禅师回答：“我感觉饿的时候就吃饭，感觉疲倦的时候就睡觉。”

“这算什么与众不同的地方，每个人都是这样的呀，有什么区别呢？”这个人不 屑地说。

慧海禅师答道：“当然是不一样的了！”。 “这有什么不一样的？”那人问。<br>

慧海禅师说：“他们吃饭的时候总是想着别的事情，不专心吃饭；他们睡觉的时 候也总是做梦，睡不安稳。而我吃饭就是吃饭，什么也不想；我睡觉的时候从来 不做梦，所以睡得安稳。这就是我与众不同的地方。”

慧海禅师继续说道：“世人很难做到一心一用，他们总是在利害得失中穿梭，囿 于浮华的宠辱，产生了‘种种思量’和‘千般妄想’。他们在生命的表层停留不 前，这成为他们最大的障碍，他们因此而迷失了自己，丧失了‘平常心’。要知 道，生命的意义并不是这样，只有将心融入世界，用平常心去感受生命，才能找 到生命的真谛。”

在禅宗看来，一个人能明心见性，抛开杂念，将功名利禄看穿，将胜负成败看透， 将毁誉得失看破，就能达到时时无碍、处处自在的境界，从而进入平常的世界。

网友：吃饭时便是吃饭，睡觉时便是睡觉……明白这个道理已很难。好在现在开 始有点明白这个道理了……不过，实证更难，睡觉不做梦吧，干脆就没办法了， 睡着了谁能控制，日常生活心不平常则有梦吧。

**段永平：**&#x5176;实我觉得这个和尚（实际上是那个作者）在为了说明什么是平常心时 说了假话，因为活人是不可能不做梦的。所以有平常心很难啊。

10\. 网友：格力的厂房墙上：早上吃好，晚上早睡。

**段永平：**“早上吃好，晚上早睡”。呵呵，这就是企业文化了。你能从这点看到 企业的差别，说明你已经是高手了。记得大概 10 年前，有个招行的朋友就和我 谈起格力空调，说觉得有很多地方和我们公司挺像的，呵呵，我觉得他们很多地 方做得比我们好，当然我们也做得还行。（2010-06-01）

网友：废寝忘食的人就是违反了“饿了吃、倦了睡”的平常法则。 **段永平：**&#x5475;呵，也违背“更健康、更长久”。（2011-03-25）

11.网友：经历了不平常，才会有不平常心。大部分人是回归不了的。当然，有 少部分人是从小到大都能保持平常心的。

**段永平：平常心指的是理性思考，平常人多不理性**。（2014-05）

12.网友：读完《穷查理宝典》中人类 25 个心理误判，明白最大的敌人是自己。 一直感觉自己很理性，后来明白自己的心理在作怪，很难保持平常心，感觉平常 人很难保持平常心与理性。

**段永平：**&#x6240;以马云说平常心就是不平常心哈。

网友：我把能找到的有关老段的资料看了十几二十遍了，感觉上老段为人行事暗 合佛理常在定中。只是老段是个无神论者，斗胆讲几句，请老段指正。就老段转 帖中的平常心来说，其实有平常心的人已经不是常人了，老段就不是常人。 <br>

**段永平：**&#x5E73;常人都难有平常心，包括我自己在内，所以要随时提醒自己。

我个人理解，佛理其实就是这么多年来很多人对智慧的总结，平常人如果努力的 话，也是可以悟出佛理的，因为佛理本来就是以前的平常人悟出来的。千万不要 神化神，因为神就是被神化出来的。（2011-03-26)

13.网友：看了段总的采访视频及一些文章，觉得段总很真实，很客观，很平和 的心态。跟以前所了解的一些成功人士完全不一样，那些人给人感觉像个高人一 样，很特别的那样。感觉您跟普通人也没什么区别，就是在某些领域做得比较出 色。总之我觉得您更真实，我更喜欢。向您学习。

**段永平：**&#x6211;喜欢你的说法。我就是普通人来着。（2010-03-26）

14\. 网友：要做到平常心好难啊，是不是在怎么努力也无法完全做到？有什么方 法吗？

**段永平：**&#x80A1;市掉这么点儿就这样了？平常人是很难有平常心的，所以平常心又叫 不平常心。如果你关心的不是事物的本质，没有平常心是正常的。倒过来也一样， 如果你关注的只是事物的本质，平常心自然就在那里了。（2015-05-29）

网友 L：是不是也可以这样理解：在没有平常心的地方是找不到平常心的。我亲 身经历平常心不是求来的，而是“做对的事，把事情做对”后自然而然就有的一 种心态。

**段永平：**&#x5728;错的道路上是没办法有平常心的，比如用着 margin 的人们，昨天那 种情况下，你懂的。（2015-05-29）

15.网友：“微信之父”张小龙就曾说，乔布斯最厉害的地方是什么？“乔布斯 最厉害的地方是他 1 秒钟就能变成傻瓜，而马化腾大概需要 5 秒钟，而我差不多

需要 10 秒钟。”所以，更重要的是思维观念上的通达，越聪明的人越可以“大 道至简”。

&#x20;**段永平：**&#x662F;不是张小龙说的不知道，但这话其实很有道理。这里说的是自己开放 心态的水平，这点上乔布斯确实是厉害的，发现自己不知道的东西他是可以立刻 放下自我去学习的。我们大部分人都做不到。（2019-03-02）

16.入驻拼多多参加 3 年庆 品牌商家遭遇“二选一”

10 月 10 日前后，拼多多平台 3 年庆主会场几乎所有品牌商家遭遇“强制二选 一”新闻被商家陆续爆出，该行为导致拼多多“3 周年活动”中的大批品牌商家 被迫提出退出活动、下架商品，甚至要求关闭旗舰店。

**段永平：**&#x4F01;业成长的过程当中会有很多磨难的，这个不算什么。（2018-10-11）

网友：我想以风清扬或者大道的功力，即使当年创业早期，也不大会出现对竞争 对手愤怒的情形。<br>

**段永平：**&#x5927;道当年是有过很多愤怒的。（2018-10-11）

网友：后来您是怎么应对这些愤怒的呢？或者愤怒转化为了啥？平常心吗？（想 听您讲当年的故事）

**段永平：**&#x6124;怒一下，然后平常心回归本源，该干嘛干嘛，不要因为愤怒做出任何 决定。（2018-10-11）

17\. 怎么发现并保持平常心？

&#x20;**段永平：**&#x4FDD;持不难，因为它就在那儿（是内心已经有的东西）。不过，马云还说 过一句话“平常人是很难有平常心的，所以平常心也是不平常心！”发现嘛，靠 吃亏。因为没有平常心，一不 rational 就会栽跟头。（2018-09-30）

18.网友：你在形成关于“平常心”，“本分” 理念过程中的一些故事，或者说 关于上面理念是如何来的？来自家庭？社会？

**段永平：**&#x53EF;能是来自于经验和教训吧，所以和家庭社会以及自己的悟性都有关。

（2010-09-21）

19.网友：你身上具备的平常心、本分是天生就具备的呢？父母教育的？后天学 习而来？还是三者皆有？

**段永平：**&#x5E73;常心其实就是理性思考的习惯，应该是后天养成的。（2019-04-22）

网友：这两年，学习了您在网上能查到的一切，精神和物质都有很大收获。我现 在面对诱惑时，依然有时会失去平常心，经常反省，继续努力。

**段永平**：告诉你一个好消息，我之所以提出平常心的原因就是因为我也会失去平 常心，所以大家都差不多，需要时刻提醒一下自己哈。(2019-09-12)

20.网友：大道，我的理解，本分和平常心，都是事物的本质，或者说事物的本 源，是事物本来的东西。反过来说，即不逾越能力范围，不贪心。在我看来，本 分和平常心是一回事。可以告诉我两者的区别吗？

**段永平：本分就是要做对的事情和要把事情做对。平常心就是回到事物本源的 心态，也就是要努力认清什么是对的事情，认清事物的本质。(2019-09-23)**

21.网友 m：平常心是 common sense（常识）？理顺中。

**段永平**：平常心：平常心其实就是在任何时候，尤其是在有诱惑的时候，能够排 除所有外界的干扰，回到事物的本质（原点），辨别事情的是非与对错，知道什 么是对的事情。(2019-09-12)

网友 j：知道什么是对的太难了。<br>

**段永平**：什么是不对的没那么难。(2019-09-12) 22.引用：**本色英雄 —《赢周刊》采访全手记**

**问：你常说不争一城一池，企业的心态最重要。这“心态”指的是什么？**

**段永平**：有时候无招反胜有招。做人要有平常心，企业亦如是。往往，企业规模 越大，要保持平常心就越难。对一个新企业来说，他唯一的目标就是生存。小企 业去尝试一件事的时候，它的机会成本很低，失败了，再来过，谈不上有多大的 损失。在美国，95％的创业企业要失败的。但是在企业有了一定规模的时候，管 理者要保持平常心就有了一定难度，因为他可选择做的事情多了，选择的范围大 了，同样，他犯错误的可能性也大了。**大企业比什么？比谁犯的错误少。**&#x6211;看国 外网球比赛的转播发现比较科学，他们是算一个运动员和对手之间谁的失误率最 少，基本就可以判断胜负。一些水平相当的运动高手之间比赛比的往往就是心态 了。（2004-01-19）

**段永平：**&#x505A;企业，必须有平常心。我认为企业最重要的是安全，而不是像某些人 说的要做多大。大是自然而然的发展过程，包括利润。企业的利润也是一个过程！ 当然企业必须有利润，没有利润就无法生存，但你不能把利润作为最大的追求目 标。如果这样的话，企业就会变的唯利是图。企业赚了不该赚的钱，会伤害你的 未来的。企业应该有利润之上的追求。(2000 年青年报专访)

**段永平：**&#x5E73;常心包括进取心。（2012-12-02）

**4.诚信、正直**

01\. 网友：步步高广告中的视听享受、对产品高品质的执着追求、对消费者需求 的不断满足、本分专注、在别人的不屑一顾中坚持不懈……所有这些是构成“护 城河”的要素吗？

**段永平：**&#x6700;重要的是正直和诚信。广告应该不算吧？（2010-09-22） 02. 调查称国产手机大多设收费陷阱，可自动扣话费

**段永平：**&#x522B;的不敢说，我相信步步高和 OPPO 的手机肯定没有！如果巴菲特或者 芒格也卖手机的话，我相信他们也不会有的。（2010-05-09）

网友：对企业文化的理解一直很模糊，**忽然觉得企业文化好像是一个企业的品格。** **那么它太重要了**。

**段永平：对啊。做对的事情，然后是把事情做对。对这种不诚信的事我们只有 0 容忍度。这就是所谓的企业文化。（2010-05-09）**

03\. OPPO 手机官方声明 （2010-05-10）<br>

**段永平：**&#x5475;呵，刚刚查到的。看来我没说错。

\[公告]OPPO 手机官方声明

广东欧珀移动通信有限公司作为 OPPO 品牌的拥有人和 OPPO 品牌手机的生产商， 自公司成立以来，坚守“本分”、“诚信”的企业核心价值观，致力于为广大消 费者提供品质优良的产品和服务。自 OPPO 手机上市以来，以其时尚的造型设计、 优良的产品性能、完善的售后服务赢得了广大消费者的认可和信赖。

鉴于目前手机市场存在部分手机内置 SP 收费陷阱、欺诈消费者、侵害消费者利 益的恶劣情形，我公司特此郑重声明如下：

手机内置 SP 收费陷阱是一种不诚信的行为，与我公司的核心价值观完全背离。

我公司自生产手机以来，就从未内置过此类 SP 收费陷阱，我公司今后永远也不 会在手机产品或其他产品上内置此类 SP 收费陷阱，请广大消费者监督。

最后，我公司对一直以来支持、关心 OPPO 手机发展的广大消费者表示真心的感 谢！ 特此声明。

04\. 网友：您当初管理步步高时会琢磨下属的性格心理情绪，通过掌握他们的心 理状况，找出相应的方式激励下属吗？还是不琢磨别人，只做好自己的本分？

**段永平：**&#x5F85;人以诚最重要。（2011-07-28）

05.网友：阿里巴巴 CEO 卫哲辞职，原因竟然是诚信上出问题，段哥怎么看？

&#x20;**段永平：**&#x4ED6;们出这个问题我也多少有点意外，看起来在上市公司的业绩的压力下， 要坚持做对的事情不容易。从卫哲以前说的一些话来看，此人有点虚荣，犯这种 错误恐怕也不是偶然。好在马云很明白大是大非问题，不然将来会有大麻烦的。 从这事也能看出来，企业文化的建立不是一朝一夕之功哦。（2011-02-24）

网友 H：据郭广昌说，马云早在 2010 年年中就给郭广昌说要在阿里巴巴消灭职 业经理人，开始郭广昌还不太明白马云的本意，怎么要消灭职业经理人呢？后来 理解职业经理人应该站在股东企业家的角度去实施管理。可见马云可能早有了炒 掉卫哲的想法，只是由于这个事件而选择了这个时机而已。

**段永平：**&#x6211;想他说的“职业经理人”大概就是比较短视的那种，短视的意思就是 很在乎这个季度、下个季度的业绩，很在乎自己公司的市值是不是会到 500 亿或

者 1000 亿的那种。（2011-02-26）

网友 H：卫哲是马云一手找来聘用和扶植起来的总裁，说明马云是认可卫哲的， 并合作了 5 年以上，相互应该是非常了解的，发生了问题，是否也可以采取改造 而非消灭的方式呢？马云的做法似乎也给天下职业经理人一个过河拆桥，卸磨杀 驴的感觉。<br>

**段永平：**&#x4F60;的意思是让人搞垮阿里巴巴以后再处理会好些？那时候就不是卸磨杀 驴了，可能是卸磨杀马。（2011-03-01）

网友 G：段大哥，其实在中国目前的大环境下，卫先生做得已经非常棒了。让职 业经理人每天做改善人才留存环境、帮企业完善制度、改进标准以及提高消费者 体验度、给同事灌传企业文化等等这些工作，试想想哪个不是慢活、累活、得罪 人的活，而且不能直接出成绩，真正是劳神、劳身、费时间。能做到 “无他、 无我”这样的东家已经是凤毛麟角了，何况是掌柜了。

**段永平：**&#x6211;不能理解的是为什么这种欺骗公司可以在哪里存在那么久，难道没有 投诉？这种零容忍的行为居然被容忍了这么久你居然还觉得不错？那你还有没 有原则了？（2011-03-01）

网友 G：抱歉上个帖子我没有表达清楚，我是想说现在好多掌柜都是骗吃骗喝不 做事，临走了嘴里还要嘟嘟囔囔讲东家的不是，可卫先生没有这样做。那个公开 信里也讲了，他并没有参与其中，并且也处理过部分违规的商家及员工，估计是 手段软了、不坚决。现在他背着一身骂名辞职谢罪，也没有埋怨东家，算是做得 不错了！要说责任，最大东家责任大了，第一时间知道公司有欺诈行为，就该严 肃警告掌柜并让其迅速处理，一并给受损客户鞠躬致歉，还有合理赔偿。（丰田 先生对着镜头也鞠躬了。）

**段永平：**&#x4F60;前面说的够清楚。看来你确实没原则，属于不太明白大是大非的那种。 马云确实比你强多了。

网友 G：段大哥批评我太给力了，我有点明白自己“糊涂”在哪里了，比如：某 掌柜把四鹿牛奶从三亿做到三百亿，后来产品里有三聚氰胺把顾客给吃坏了，东 家觉着不对，不用掌柜了。您说的大是大非就是三聚氰胺，与从三亿做到多少没 关系。

**段永平：**&#x54C8;，你明白了。（2011-03-02）

06\. 网友：请教个问题，在中国不少行业都有潜规则的问题，不知道国外有没有。 在有潜规则的行业中，如果不用潜规则，有时和使用这些潜规则的企业相比而言 成本会高不少，但如果使用了总感觉缺乏诚信、不够本分，比如建材行业中铝合 金门，说是 1.2 的厚度，行业内其实一般都是 1.0 的厚度甚至更薄，但这个行业 从上游的型材到门厂的加工到终端门市的销售都类似，请问段老师怎么看这个问 题呢？如果你是从事门厂这个行业的话，会怎么做呢？

**段永平：**&#x6240;谓“讲信誉”或叫诚信或本分都是在需要付出代价的时候才能体现出 来。本分的意思就是 1.0 的厚度就说是 1.0 的厚度，句号。（2013-02-26）

07.引用：Warren Buffett Quotes    &#x20;

&#x20;If principles can become dated，they’re not principles.  **段永平：信誉不是讲讲而已**，**只有需要付出代价的时候，才知道谁是讲（守） 信誉的。原则是不应该有时间性的**。（2012-11-17）<br>

08\. 网友：我理解企业文化和人的性格一样，一经形成后是很难改变的，不好的 性格虽然平时可能看不出来，但一到关键时刻会暴露无遗，有时造成的伤害可能 会是致命的。段总，请问我这样的理解是否正确。

**段永平：**&#x5475;呵，回答正确，得一分。**只有当你需要付出代价的时候才知道你是不** **是个守信誉的人。“讲”信誉谁都会，但当需要“守”信誉的时候很多人就不 行了**。（2011-02-18）

09.网友：为什么你不介意企业管理层的人品问题呢？譬如从捐款门看出人品的 王石，创维欺诈门的黄宏生等，你都买了他们的股票，还有值得争议的史玉柱， 你都觉得他很不错。还有你对中国的企业家是怎么看的？本人觉得中国好像没有 受尊敬的企业家。

**段永平：**&#x6211;非常在乎企业管理层的人品！等你长大了就明白我说的是什么了。

（2010-05-04）

10.网友：大哥你是怎样判断一个企业是否诚信的？ **段永平：**&#x5475;呵，用心感觉一下。其实大多数被骗的人最后都是知道的。

（2010-05-17）

11.网友：请教大道：我们公司与一家上市公司合作一个项目，目前在前期阶段。 我们发现该公司董事长虽然热情客气但多次言而无信，让我们很失望。鉴此，我 们内部有两种意见：  第一种：公司董事长多次言而无信，是人品问题，与这种人合作我们是在做错事， 基于前期投入损失还不大，赶快终止合作，越快纠正损失最小。

&#x20;第二种：公司董事长虽然多次言而无信，但我们应该求同存异，包容人家，多沟      通，力争共同推进项目，完成合作。

我偏向于第一种意见。大道你说呢？

&#x20;**段永平：**&#x5408;作伙伴言而无信，合作大概率不会有好下场。停止和你已经投入的无 关，损失少是你的运气。（2019-05-13）

网友：大道，怎么看不本分的人，经常做不对的事的人，经常抓不住本质的人。 他们时间长，应该没啥出息。大道怎么看他们？我想学点世界观。

**段永平**：我不知道。我尽量不和这些人打交道。(2019-08-21)

12.网友：我的问题是坚持原则与妥协之间如何取舍？例如请了一个工头做一个 建筑或者装修工程项目，工头不诚信，老想偷工减料，或者临时加价等，如果换 工程队会严重影响工期，带来比较大的损失。(如换一个工头，大概也不会很诚 信）。如果选择妥协，则可按照计划完工，在可控范围内比原计划成本增加一些。 现实生活中很多诸如此类的问题，该如何取舍呢？&#x20;

**段永平：**&#x539F;则问题不应该妥协，这不是代价的问题。（2019-05-23）

&#x20;13.网友：在中国做正直的人好难啊，

**段永平：**&#x5176;实不难，但你如果希望因为这个得到什么可能会有点难。有时可能还 要吃亏。如果你不肯吃亏，也会有点难。（2010-05-21）

14.网友：CEO 致命的经营缺陷是哪些？

**段永平：**&#x6CA1;研究过，但读中欧时曾经看过企业家最重要的品质是 integrity（诚 信），所以大概违背 integrity 的品质可能会是致命的吧，时间足够长的话。

网友：Integrity，其实就是段大哥经常提到的本分二字。&#x20;

**段永平：**&#x672C;分包含的东西要更多一些。Integrity（诚信）是承诺的事情要做到， 本分是要求自己，即使没有承诺应该自己做的要做到（或者说违反自己原则底线 价值观的不做)。本分包含且高于诚信。本分的企业或人总是让人有好感，值得 信赖。

&#x20;15.网友：发现错误立即改正，不管付出多大的代价都是最小的代价，不改正错 误将付出更大的代价，能举个例子吗？

&#x20;**段永平：**&#x4F8B;子好举：比如吸烟，比如骗人？？。人们热衷于做明知是错的事情的 原因是这些错的事情往往有短期的诱惑。错了就改呗，不然要命的。错了的东西 是要改的，**商业上的承诺也偶有兑现不了的时候，这个时候就需要付出代价。 不守信往往体现在逃避代价上。**（2018-09-28）

16.网友：周鸿祎发飙：怒批“霸道总裁”余佳文太虚 <http://video.sina.com.cn/view/249735164.html> 这个属于做错的事吧，还是 因为太年轻？

**段永平**：**不诚信公司大概率不会有好下场**。（2015-08-14） 17.网友：发现段大哥特别强调“正直”、“原则”。我要想想去。

**段永平**：是的。我记得去上中欧的第一天，前院长张国华训话里讲过一个故事。 他说有个著名商学院（我不记得名字了）曾经做过一个调查，想知道非常成功的 人都有什么共同特性，结果发现什么特性的人都有，但他们唯一共有的特点就是 integrity。顺便追悼一下老院长。（2010-04-02）

18\. 网友：段前辈，你小时候愤青过么？我目前在一个事业单位工作，里面的黑 暗真的令人无法忍受，中国正直、随和的人是会吃亏的，而外国却不会，如果中 国人都像你那样有品就好了。中国就有希望了。<br>

**段永平**：我们小时候不敢愤青啊！能愤青就是社会的大进步。你要觉得随和吃亏 那可就说明你骨子里不是随和的人，世界上哪里都一样，最后成事的人都还是正 直的人。（2010-03-29）

19.网友：本人在某商学院上了几个不同课程，都有个特点，同学们的班费会被 某类人以各种理由做了各种报销，活动预算和实际开支差距很大，提出异议也并 没有一个好的结果，这种社会现象怎么跟我想的本分不一样呢？倒是和很多公司 上市融资的目的颇为类似，想请教大道，守本分的人是不是很少，还是因为这种 商学院的文化氛围不好，&#x20;

**段永平**：本分的人比例上确实不多。（2019-03-27）

20.网友：很喜欢您讲的本分和正直。但我自己做不到，我会为了利益或者别人 的关注做出很多不本分的事，我试图想重新选择去做一个正直和本分的人，但我 发现那对我个人而言很痛苦，因为这种选择需要代价，会让我很难受，所以面临 选择的时候我还是选择了利益和舒适，但这种选择也令我不安。 记得您曾经为了一个承诺付出很大的代价好像是 1500 万，你那时候的内心有没

有纠结过？你失去这 1500 万的时候难过吗？如果这 1500 万是你的全部家当，你 还会这样做吗？

**段永平**：没有人是绝对完美的，**但本分和正直让我坦然。**&#x5176;实你做的那些选择留 给你的并不是舒服，只是暂时逃避了问题或得到一点点眼前的好处，但很可能会 因此失去内心的平静。我没有碰到过为了承诺失去身价的情况，虽然遵守诺言应 该和大小无关。（2019-03-30）&#x20;

网友 N：正直本分的人可能不太会碰到要失身价的事情。 **段永平**：概率上小很多很多。（2019-03-31）  **21.成功的组成因素**：**10%的运气+30%的善良+60%的努力** **段永平：**&#x4ECA;天从一个朋友那儿听来的，觉得很有道理。（ 2010-06-11） 网友 T：30%的善良指的是正直。诚实是最好的策略。 **段永平：**&#x5584;良好像应该包括正直。

网友：其他的都同意，只是对 30%的善良有疑问。三要素里“善良”是最弱的， 最可能被替代的吧。

**段永平：**&#x5475;呵，也许用 30-50 年的角度看你就明白了。（2010-06-12）

网友：看到许多博友都谈到了善良。记得有个寓言故事，农夫与蛇。善良的农夫 将在大雪中冻得将要死去的蛇放在了自己的怀中来拯救它，结果不言而喻。希望 大家拥有善良禀性的同时也拥有一份思辨的智慧。<br>

**段永平：**&#x6211;认为逻辑很重要。善良不是把蛇放怀里。善良体现最多的是不作恶。 看看现在社会上的那些现象。（2010-06-12）&#x20;

22.网友：记得上初中的就看到打工皇帝“阿段”和“小霸王”的事，我说的 “奇”是从小霸王道步步高到 OPPO 再到慈善，段先生总是能先人一步，创造奇 迹，这是从结果上说的。

但其实无论经营企业还是投资，段总所做的事并不奇，都是最基本的，即对消费 者需求把握很到位，员工持股，保证合作者的利益等等。这些都分内事，阿段悟 到并做到了。感觉这是“本分”与“素质”相同的地方，即把握事物本质的能力 很强。

**段永平：**&#x4E0D;整天想着出奇，犯错机会会下降，不小心出个奇反而成为可能了。我 们的智能手机就是个例子哈。我说的不出奇并不是说结果不出奇，而是说心里不 要老想着出奇。你如果老想着本质的东西，总有机会出奇的，我们公司就是不错 的例子啊。（2018-08）

23.网友：我的问题是凭什么 oppo 可以这么厉害？我们知道过去十年竞争最激烈 的行业就是乔布斯开创的智能手机浪潮，2010 年以前的功能机时代的霸主诺基 亚，摩托罗拉，黑莓等等直接死掉，到了 2019 年的今天来看，这场智能手机马 拉松长跑的胜负大概率已分，当年的那些风口上的猪也大都摔了下来，如果拉起 来名单，可能有十几家比较知名的手机品牌，算上供应链和渠道的企业可能有成 千上万家企业倒闭了。oppo 是唯一一家成功从功能机时代转型智能手机时代的 品牌，并且在这波浪潮里毫无疑问 oppo 成为了一家够分量的国际品牌。据媒体 披露（不知道真假哈）oppo 在 2010 年时候也面临关门的可能性，大道曾经参与 了 oppo 的转型的决策，但明确表示不会重出江湖，亲临一线。到底是什么决定 oppo 可以这么成功？

**段永平：**&#x4F;PPO 厉害是因为 OPPO 有厉害的文化和厉害的团队同时还赶上了好产品 和好模式，其实 vivo 也很厉害啊，原因也是一样的。转型是 12 年中，我没有参 加过转型的决策，但确实参加过一个有点悲壮的会。当时 OPPO 和 vivo 都面临很 大困难，我们当时不是很确定我们是否能过得去，所以当时大家达成一个共识： 如果我们要倒下的话，一定不要倒的很难看，不要欠员工钱，不要欠供应商钱， 要尽量保护代理商……。我们 12 年没亏钱，13 年没亏钱，但 12-13 年那一整年

亏了非常多的钱，到 13 年中终于挺过来了。

我明确表示不会重出江湖比这个还要早差不多 10 年，我当时说的意思很简单， 大家都比我能干，如果大家搞不定的事情我也肯定搞不定的，所以我绝对不会重 出江湖的。（2019-05-22)

&#x20;24.网友：大道和评论区的诸位能不能也分享一些关于本分的力量的故事？

&#x20;**段永平**：假以时日，本分的力量是厉害的。你自己去找例子吧，反过来找就好。                                               (2019-08-04)&#x20;

&#x20; 网友：怎么反过来找，我愚钝，望段总明说！拜谢！<br>

**段永平**： 倒过来的意思就是，不本分的话，假以时日，大概率会如何。提示一 下：比如，查查过去 30 年破产的公司都是什么原因吧。(2019-08-06)&#x20;

&#x20;网友：确实，正面的例子不好找，反面的例子比比皆是，绝大多数的服务行业的 机构满脑子割韭菜，去了一次就不想去第二次了。

**段永平**：对的，反面的例子比比皆是。(2019-08-06)

## 四、团队合作

**1.人才培养**

01．网友：我知道的在步步高体系里面的管理人员基本没有空降的。这个和基业 长青里面提到的人才观一致。想听听老师对于人才培养及引入的心得。

[**段永平：**](https://xueqiu.com/1247347556/114333162)这是个合格性和合适性的问题。合格性指的是能力，合适性指的是对企 业文化的认同感。企业内部培养的人合适性强，有时候企业里某些岗位外来引进 人才合格性好。合适性比较难培养，需要很长时间，有时很长时间也没用。而合 格性多数情况下是可以培养出来的。

有时我们会引进急需的技术上的人才，因为其合格性很重要，而合适性往往有足 够长的时间培养。高级管理人员我们一般不引进，因为很难培养其合适性。

（2010-03-24）

02\. 网友：一直以来我以为做老板的第一任务是选拔人才然后因才适用。现在理 解到，第一任务（绝对是最难的工作）应该是怎么保证企业文化不变质、怎样让 更多的同事认知、认同企业文化、怎么把这个层层传递“虚”的东西变成有形的 东西来影响更多同事。

[**段永平：**](https://xueqiu.com/1247347556/114333162)人才的合适性往往比合格性重要。合适性就是人才对企业文化的认同， 合格性就是人才做具体事的能力。合格性是可以通过培训提高的，合适性很难改 变。企业文化如何传递的问题建议看韦尔奇的《赢》。（2011-03-26）

[**段永平：**](https://xueqiu.com/1247347556/114333162)招人分合格的人和合适的人。合适是指文化匹配， 合格是指能力。价 值观不 match（匹配）的人，坚决不要。给公司制造麻烦的，往往是合格但不合 适的人。一群合适的普通人在一起，同心合力也能干大事。（2018-09-30）

03.网友：我们只有 5 个人的小公司，今年想招聘人扩大队伍，提高业绩。但是 发现目前招人很困难，难招聘到人手，特别是营销人员难招聘到，营销员投简历 都很少。其他岗位也面试的人也面试过，满意的人不愿意来。不知道是办公环境 不好，还是待遇不好，还是公司规模小等原因，想请教下您，我们这样的情况， 如何能招聘到人呢？有哪些方面需要注意的地方？&#x20;

&#x20;[**段永平：**](https://xueqiu.com/1247347556/114333162)我不在一线很久了，对目前如何招人完全没概念。小公司找人难很正常， 招到好的人更难。除非你们有什么特别吸引人才的地方，不然人家为什么不去大

点的公司呢？我觉得招人一定要注意的地方就是要先看合适性。然后才是合格 性。合适性就是和自己企业文化匹配的意思，合格性就是工作能力的意思。合格 性是可以培养的，但基本素质一定要够。小公司能找到人就不错了，所以多数可 能都不太注意。（2019-03-19）

&#x20; 引用：段永平北大演讲

问：段总您好，请问有时候公司确实招不到人怎么办？

&#x20;**段永平：**&#x6211;是经常听到一些做企业的抱怨公司没人，但你查看这些人的日程表， 却几乎没有和猎头公司、可以挖来的潜在人才见面的时间，也没有仔细分析招不 到人的原因。一边把自己忙得够呛，一边又抱怨没有得力的人，你觉得问题究竟 在哪？（2005 年）

04\. 网友：授权给的对象只要合适（操守）、合格（才干或专长）、有意愿（愿 意拼命工作）就可以了，然后一起讨论好下一步的工作计划（把做对的事情计划 好），让该对象执行（把事情做对，如有偏差协助其调整即可）。从来没有体会 到授权和企业文化有什么关系，您能否明示？

&#x20;**段永平：**&#x5475;呵，其实你说得很对。不过，你说的合适其实指的就是文化。比如说，

如果你是个诚信的人，坑蒙拐骗就“不合适”了吧？

05\. 网友：请教一个在国内企业治理中比较常见的情况，就是领头人的能力非常 强而且个性突出，这种情况下，整个团队的构架往往难以突破最初的创业伙伴， 用您的话说，就是合适性人才有，但合格性人才引入难度比较大；我见过一家很 优秀、专注主业的公司在 3 年时间里更换了 3 个财务总监，引入的十多个职业经 理人基本陆续全部离开，但创业团队还算稳定，这样的企业如何判断其发展前景 与持续性？

&#x20;[**段永平：**](https://xueqiu.com/1247347556/114333162)你说得很对，合格性人才是可以培养的，而离开的原因是因为合适性问                                  题。（2010-03-26）

06.网友：你对挖竞争对手的人才怎么看？ 国内最著名的房地产公司（我们称“W 公司”，请允许我耍个小聪明，因为我只 是为了说明问题，对这个公司本身不是太感兴趣，不想浪费一个名额，毕竟今年 才刚开始呢，呵呵）当年为了克服自身发展中的人才瓶颈，发起了一个有名“海 盗计划”，大挖其最大的竞争对手（一家国有大型地产公司，我们称“Z 公司”，） 的员工，结果确实挖到了很多，并且这些人才为 W 公司接下来的发展做出了很大 的贡献。此后 W 公司还不断重复过这个计划，只不过换了个名字。对此，W 公司 不但没有觉得有什么不对，反而振振有词说他们是先礼后兵，因为他们提出和对 方合并被人家拒绝了。 我记得松下先生曾经说过，他从来不挖别人的人才，因为将心比心，如果自己的 人才被人挖了，自己也会不高兴。

W 公司被国内很多人认为是中国企业的标杆，但是据我所知，这个企业有很多不

好的地方，比如上边的挖人才，我觉得不是怎么地道，好比看上了人家的女儿， 可人家父母不同意，结果把人家抢来，还振振有词：你女儿过来后，我对她很好！ 潜台词就是：我抢你女儿这件事是对的！因为后来还抢过，呵呵。 还有前几年我同学准备买他们的房子，也是过几天就提价，他们老板还在媒体上 说他们不推高房价，事实上他们的楼盘也没少涨啊，前面的话从何说起？ 我也认识在那个企业工作的人，他说他也拿回扣……<br>

我承认，在中国的这种环境下，能做到 W 公司那样的程度确实不错了，但是远远 没有他们自我宣传的那种程度，所谓的“伟大”企业更是无从谈起。从投资角度 来说，这个企业也有其可取之处，大概就是抓大放小吧，但是，如何辨析这些负 面因素不是“大”呢？

可能说的有点过，请段兄和大家批评指正。

&#x20; [**段永平：**](https://xueqiu.com/1247347556/114333162)呵呵，我们公司一般不主动挖人，但招人总是可以的。

一般整编制挖人的短期效率高，但长期对企业文化传承不利，而且经常会出现损 人利己的事情，最后倒过来破坏整个行业的生态环境，最后也会伤害到自己公司。 自己培养人短期看起来慢，但长期往往是效率最高的办法。不过，老是被挖人的， 尤其是关键人物老被挖的企业一定要好好检讨自己的保健因子是不是不够，为什 么会留不住人呢？由于机制的问题，国有企业要留在人才确实困难大很多，好的 人才不被人挖也有很高的机会自己流走，不一定是 W 或 Y 公司的错。（2011-03-08）

07\. Yammer 狠挖雅虎墙角：来者赠$2.5 万入职红包。 雅虎最近比较动荡。如果有雅虎员工需要跳槽找工作，社交网站 Yammer 是个好 选择。Yammer 为所有前来的雅虎员工提供了 2.5 万美元的入职红包。 该消息是 Yammer 首席执行官 David Sacks 今早通过社交网站 Twitter 发布的，有效期为 60 天。

[**段永平：**](https://xueqiu.com/1247347556/114333162)用这个办法的公司自己也不会有好日子过，对已经进去了的员工也不公 平。（2012-03-17）

08.网友：你们公司招 MBA 的学生吗？？感觉很多人 MBA 学生不靠谱。

**段永平**：我不能讲 MBA 的学生 95%都不靠谱，没调查过，但印象中我们公司好 像确实没有直接招进来的刚刚毕业的 MBA 的学生。

我自己也算是读过 EMBA 的学生，和 MBA 学生也有过一些接触。我感觉 MBA

刚刚毕业的学生中确实有一些人有点自视甚高，从而妨碍了他们自己的发展。

（2010-07-27）

09.网友：说到关于看人的问题，在这里想顺便问问。 一般在面试的情况下，有 什么好的方法来判断对方是否 "culture fit"（文化适应），是否“本分”呢？ 感觉 “合适性”在短时间内不好判断呀。

**段永平：**&#x65F6;间长了就知道了，短期我没有好办法。（2014-09）

**引用：段永平北大演讲（2005** **年）**

问：既然谈到人，我们在座的很多都是学生，以后要出校门找工作。从他们求职 这个角度来考虑，比如说求职、访谈、面谈的时候，你们最在乎的那些素质表现 能不能跟他们沟通一下。怎么来选人。

**段永平**：从我们公司的角度来讲，我个人的观点一直是这样，**最重要的是所谓一**<br>

**个人的品德**，品德这个东西它很虚，你怎么能够了解一个人的品德。其实他很难 在面试的时候做到，所以面试的时候有一些基本的，比方说看看你的履历，有没 有一些特别不对头的地方，然后你通过面试其实也会有一些感觉，包括聊，你会 发现一个人虚和实有时候是看得出来的。

但是为什么往往在企业里头并不是最重要的，最重要是你工作以后能够干什么， 而且它的矛盾很有意思的地方是，刚开始工作的时候大部分人都不能干什么，我 不知道我这样说大家理解吗？

你作为一个刚毕业的学生，不管你学过什么，哪怕你是 MBA，你说马上把你放 到一个很重要的岗位上头，我觉得会非常难。所以往往大家会发现这些得分比较 高的学生，比方说学校里头是好学生的人，出去以后往往不怎么成绩。反而那些 中不溜秋的，人绝对不笨，但是成绩也未必就一定好，但是跟谁一混就熟，然后 很快就能适应环境，然后到了工作当中很快就能进入状态，让他干什么他能够干 得很好。你想想看，你到了一个，不管你到一个什么样的所谓的单位，那么他交 给你一件小事你干了，他会交一件稍微大一点的事。那么你干的事情越多你的机 会就越多，你得到的锻炼越多，你的能力就会变得越来越强。

还有一个就是你像我们怕的人是什么人，你一看这个履历表，他跳槽跳了很多次， 东跳一跳，西跳一跳，这也做过那也做过的人我们往往一般都不太愿意要，这个 人不知道他想要什么，要不他不知道自己想要什么，要不不知道你想要什么，总 的来讲，这种人多半可能会有这样那样的问题。

因为作为一个企业，他在招人那一刹那，他并没有太大的耐心去了解你到底为什 么会这样，所以他可能，尤其是在比较有挑选余地的时候，他未必就会挑选你。

所以我觉得大家在换工作的时候，换地方的时候，你一定要慎重，不要随便换， 换的太频繁。你说呆了三五年换一个地方我觉得可以考虑，有些人呆个一年换三 五个地方，我觉得这肯定是有问题。(2005 年，北大演讲)

网友：我有一个困惑不知道是否方便解答，您选的接班人水平都很高都非常成功， 我们小公司人才不多，选接班人更多看能力还得看忠诚度呢？

**段永平**：选人本分诚信比聪明重要，合适性比合格性重要。(2019-09-10) 10.网友：怎么保证选对人？

**段永平：没有绝对的办法来保证，但如果选人时先看合适性（价值观匹配）会 比只看合格性（做事情的能力）要好得多，选中合适的人的概率要大得多。许 多公司挑人时是首先看合格性的，概率上就容易出问题，许多公司本身价值观 就有问题，选人自然就困难了。不合适的人管理公司的风险很多时候是难以控 制的，结果公司很可能就会垮掉。企业文化比较好的公司往往会更快发现问题， 所以纠正的机会会大很多，存活下来的概率就会大很多。（2018-06）**

12.问：怎么样选人，包括合伙人，员工？

**段永平：**&#x4E00;次就找对那是运气。主要是要有标准，该淘汰淘汰，该散伙散伙。知 道错了，要有停止的勇气。越早停止，代价越小。（2018-09-30）

**2.员工培训**

01.网友：请教段哥，您在步步高的时候，有没有定期找时间亲自跟下面的人进 行培训？今天看到一个报道， 说 Twitter 的 CEO 自己编了一门 6 小时的课程 (Managing at Twitter)，定期跟下面的管理员上课，理由是他期望下面的 manager 有一致的管理方式/工作方式。 我觉得这种方式对树立公司的企业文化也是挺有帮助的 （当然，培训的内容必 须是靠谱的）。您怎么看？

&#x20;**段永平：培训的成本很贵，但不培训的成本更贵。不知道第二点的企业走不远。**

（2013-10-28）

&#x20;02.网友：建立企业文化时找到合适的人是不是要比后期培训要重要得多？

**段永平：**&#x627E;到合适的人很重要，合适指的是合适于企业文化，培养的是合格性， 两者都重要。合适性需要时间才能真正知道。（2015-06-13）

**引用：段永平：我为什么要去读书？—— 《读者》2001 年 11 月刊**

&#x20;我在中欧学习时，只要发现有好的课程，我就会把它搬到公司，然后再请中欧的 老师来给我们的高层、中层的管理人员进行培训。**在公司，我们提倡全员学习。** 公司每年投入到员工培训方面的经费是很大的。我认为学习对员工对公司都很重 要，虽然通过工作、实践来学习也是学习的一种途径。但是集中系统的理论学习 可能效果会更快一些，沟通的成本也会因此而大大降低。**对于一个企业，我觉得 成本最高的地方就在沟通上面，因为大家的想法千奇百怪，受教育的背景也各 不相同，沟通的时候，如果没有一个统一的理论基础，可能会影响到工作的效 率。**&#x5982;果公司有一套成形的系统学习方案，员工在培训时就不断地接受同一种理 论的影响，沟通起来也会慢慢变得容易，沟通成本自然也就降低了。公司各方面 的改进也会加快，这样日积月累，对公司的成长很有好处。

**段永平：**&#x8FD9;个看着也像是采访，不会是我自己写的。有印象。应该也是 2002/2003 年左右的事情——刚刚才注意到人家已经说了是 2001 年 11 月刊，居然是读者。

&#x20;在中欧最大得收获就是我们引进了一些中欧的课程，尤其是管理概论。当时公司 学员里还包括有丁磊同学哈。中欧课程的引入对降低我们的沟通成本起到了很大 作用！我还记得我当时学到的一句话：如果你觉得培训贵的话，那就试试不培训 的成本吧（忘了谁说的，原话也不记得了）。（2019-10-08）

#### 3.员工激励

01\. 激励因子和保健因子（2011-02-18）

**段永平：**&#x7ECF;常看到报道说有人发多少多少钱去激励员工，甚至据说还有扛着钱到 球场边督战的。

不知道是不是真的重赏之下必有勇夫，但在企业经营中靠多发钱对员工其实是没 有激励作用的。

“钱”其实是保健因子，多了没用，少了不行的东西。

比如，如果员工已经很努力在工作了，多发钱并不会让他们更努力，但少发是会 留不住人的。所以，发多少其实体现的是公平。

公司应该按承诺发给员工应该得的报酬，多发少发其实都会破坏公平。

某些所谓老板给员工发“红包”的说法其实也是有点问题的，因为其实这个“红 包”就是员工应该得的。

记得早期还在小霸王时，由于公司人还很少，很多同事的“年终奖”都是我自己 一个一个发到大家手里的。

有时有人会说“谢谢老板”，我就会很严肃地说应该是公司谢谢大家的一年努 力。这个真不是客气。（2011-02-18）

02\. 网友：真的是知易行难啊，这么多公司的管理者有几个不知道双因素理论的 定义。但运用起来真的是……simple but no easy。

**段永平：**&#x6211;怎么觉得其实很多人还是不知道的，不然怎么那么多人想到要“激 励”时才要“多”发钱呢？（2011-02-18）

03\. 网友：问题是通过分股份来提升团队凝聚力还是高工资？我知道您分了大部 分股份下去。怎么能做到不怕失去控制权和未来大部分收益的索取权？

**段永平：**&#x4E5F;许你要首先要搞明白什么是保健因子，什么是激励因子。企业员工的 收入其实是保健因子，就是少了不行，多了没用的东西。当然这个多少有时候不 一定是绝对值，很多时候会体现为相对值（就是一定比例）。提升团队的凝聚力 靠加钱是没用的，但减少钱会有显著的破坏力。

04\. 网友：段大哥对股权激励计划怎么看？ **段永平：**&#x5B9E;际上是保健计划，可人们非要叫做激励计划。（2013-06-26） 05.网友：跟钱有关的属于保健引子，段大哥能否说说激励引子？

**段永平：**&#x5927;概就是和钱没直接关系却让大家在一起工作很开心的那些东西，也可 以叫利润之上的追求（2013-06-20）<br>

06\. 网友：请问：如果员工还不是很努力在工作，多发钱（或加工资）会不会让 他们更努力呢？&#x20;

**段永平：**&#x90A3;你要搞清楚不努力工作的原因。很多情况下不一定和钱有关。任何情 况下，少了都是会有问题的。（2011-02-18）

07\. 网友：我想请问段大哥一个问题，目前不少国内企业采用的股票激励政策让 我很搞不懂，说它坏吧，可能还有那么一点点好处；好吧，又觉得是对股东的权 益稀释，总之我发现有股票激励管理层的我算企业现金流时采用净现金流－现价

×激励股票数，这样一看还不及直接发高薪实惠，可以少缴些企业所得税，段大 哥能不能说说你的看法。&#x20;

&#x20;**段永平：**&#x4F60;如果不理解股票激励政策的好处，只要想想没有股票激励的坏处就明

白了。如果员工的工作和结果无关的话，最后的结果就一定是老式国营企业的样 子。（2011-05-27）

网友 X：对于股权激励我是这么看：巴菲特、芒格应该是讲这个东西不好，我觉 得应辩证去看这个问题。如果是我们信任的人执掌的信任公司，那么也许真正能 产生激励作用！最近一直在琢磨投资最本质的东西，我把建立起一套好制度看成 一个重要参考因素，制度好人才好。不知理解是否有偏差？！

**段永平：**&#x6CA1;听说过他们说 option 不好，他们只是说 option 没道理不计入成本。 所谓的股权激励实际上是股权保健，没有这个可能会留不住人，但有了未必可以 激励人。

网友 D：“股票期权体系会使某些什么事没做的人得到大量的回报，而应该得到 很多报酬的人却什么都没有。除非我们收购的公司原来就实行了（股票期权制 度），否则我们不会使用它。”--------《穷查理宝典》

&#x20;**段永平：**&#x4E0D;知道巴菲特和芒格算不算那种什么事都没做却得到大量回报的人？不 知道说这段话的背景是什么，但正常情况下这段话肯定是有问题的。没做事确得 到了大量回报的原因不是因为股票期权体系，而是因为绩效考核体系有问题。不 能因噎废食嘛。**不是每个企业都需要股票期权体系，但有些行业里的企业没有恐                 怕会有麻烦。**（2011-05-27）

&#x20;网友：请教段总个事儿，在业务规模不大的小公司里给核心员工分股权有没有实                                                      际意义？&#x20;

**段永平：**&#x4F60;是说 Google 的初期还是苹果的早期？（2015-02-25）

08.网友：国内很多公司给员工派发的股票越来越少，搞得新人很心寒，这样没 有新人的动力，公司能持续发展吗？不知段老师有何见解？

**段永平：**&#x5475;呵，如果你反过来想想，比如给员工发的股票越来越多会怎么样？这 个问题看看那些百年老店怎么做的就明白了。（2010-03-28）

网友：谢谢段老师回答，其他企业我不清楚，我只了解像华为这样的公司，现在 新人都很难拿到股票了，可能步步高以后也会遇到这样的问题，对我来说这个很 难看穿。

&#x20; **段永平：优秀到卓越里好像讲到这个问题。好公司的收入一般都不是最高的。 我在中欧 EMBA 时学过一个很重要的东西。就是钱是保健因子而不是激励因子。**

（2010-03-28）

09.网友：公司目前 15-20 人，是我持股最多，大概 80%，除了 2 个合伙人，其 他大部分员工都是招聘回来的，凝聚力不强，想组建个核心员工的分红机制，参 考阿里巴巴合伙人的制度，现在大概做满 2 年价值观合适就可以参与利润分配， 目前有个问题，这利润分配的比例大概怎么定才比较科学又能激励大家呢？很想 最后能达到大道您的状态，公司能自己运营，利益和大家共享。

**段永平**：凝聚力不强和是不是招聘回来的没关系。我不知道什么比例科学又能激 励大家。钱是保健因子，多了没用但少了不行。就是给钱多起不到激励的作用， 但少了大家会走的意思。建议看下《基业长青》和《从优秀到卓越》这两本书， 也许会有启发？（2019-03-23）

10.网友：这个合适性的时间长度以您的经验来讲一般是多久呢？格力电器的董 姐在近期表示现在企业遇到了被人挖走人才的速度大于企业培养人才的速度（格 力培养出一个人才需要大概五年），也明确表示只提高薪水对留人没用，需要在 企业文化上下功夫。去年格力被挖走 600 多技术人员，这些离开的人员大多在格

力待了 5 年，还是被挖走是不是说明他们不适合格力的企业文化？

&#x20; **段永平：**&#x5927;批人员被挖走可能是保健因子出问题了。

网友 L：顶级专家才拿 60 万，如果是年薪的话，确实太低了；几百人被挖走， 一点不奇怪。

**段永平：**&#x5927;批人员被挖走也可能是因为两个因子都出问题了。（2015-06-19）

11.引用：【董明珠总结成网红三原因 今年要花 10 亿元给员工涨薪】

9 月 20 日，董事长兼总裁董明珠在出席论坛活动时表示，自己成为网红主要是 三个因素导致的，“第一个原因是格力做手机引起的；第二是拒绝资本运作伤害 制造业；第三，给格力员工造房子，每个员工分两房一厅。”董明珠表示，2016 年自己给格力员工每人每月加薪 1000 元，红了一把，今年还会继续加，会继续

给员工涨薪 10 亿元。记者以目前格力电器 9 万名员工计算，那涨幅力度与以往 差不多。

**段永平：**&#x8001;板给员工加薪或者发奖金其实都是员工该得的，非常不喜欢那种“恩 赐”的感觉。（2018-09-20）

12.引用:传 OPPO 员工离职后照发 12 万年终奖 主动离职、辞退都 N+1

4 月 19 日，有网友在社交网络上爆料称，OPPO 离职的员工年终奖是照常发的， 其中一位主动离职超过半年的 OPPO 员工就意外收到前东家发的 12 万的年终奖。 从爆料的信息看，一位去年 7 月份从 OPPO 离职的员工，在今年 4 月份突然收到 了 12 万的年终奖。经过询……

**段永平：过去 20 多年都是如此，那是契约精神里的东西，没什么好说的。**

（2019-04-20）

网友：今天看到您转载的文章说 OPPO 发放离职员工年终奖，真的要给 OPPO 点无 数个赞哈！后来看到您评论说你们 20 多年来都如此，真不知该用什么词来表达 对您和您的企业敬意！借用网友的评价，真的把本分做到了极致！之所以会有这 样的感想，是因为我工作的一个公司，说好的我拿所负责业务的 30%提成，但是 老板从去年三四季度的账没完全清要给我（只给了 7 成），今年一季度也没算。 之前都是季度末结清。老板是熟人，当时叫我过来做的时候我一直不来，因为怕 有冲突的时候双方都没有能力处理好。我的问题是，该不该或者什么情况下走法 律程序维权？

&#x20;**段永平：**&#x8FD9;个问题比较复杂。一般来说，恶人自有恶人磨，最重要的是远离他们                                        就好（2019-04-21）

13.网友：请教一个关于分配奖金的问题。在分配奖金时，需要遵循什么标准才 能最大限度调动员工积极性？对于业绩突出和业绩最差的员工如何拉开差距？ 是公开还是不公开？

**段永平：**&#x31;，钱是保健因子，就是少了不行的意思，奖金并不能调动大家的积极 性。2，奖金实际上应该是种契约，是跟业绩挂钩的（所以不是老板赐给大家的）， 比如在某些条件前提下，企业获得的利润的 20%给员工。分配时则是根据你的绩 效考核体系去分的。3，不易公开，公平指的是公平性但从每个人自己的角度看 未必就觉得公平。不过，如果绩效考核体系完整的话，其实也和公开没太大差别 了。（2019-04-26）

14\. 网友：向段大哥请教企业经营上的问题：本人小型贸易型公司，前段占比不 小的员工另立山头，走前准备数月，刻意盗取本公司很多客户资源。之后，互有 纠缠，我有通过互联网发布消息形式对应（仅本公司网站），对方有过激反应。 问题是：现公司没人支持我的动作，合伙人的意见是不管对错有理无理都必须退 让，因为对方一有过激反应就没法应对（比如：不断呼公司电话，一伙人来闹事）。 关于遇到此处境，我应该以什么态度面对？做何思考？

**段永平：**&#x6211;想你可能要面壁几天了，居然会有比例不小的员工另立山头。这种情 出现的话，一定是你的保健因子出问题了，也许你自己也该另立山头了。

（2011-04-14）<br>

网友：已经面壁数月，保健性质的薪酬已经做了很大幅提高（以往为浮动性质的 占比大，而部分不认同公司文化的人始终拿不到手），加强中层的责任制。在商 业策略上做了大的调整，仅从纯市场或经济层面来说现状是比以往没下降反而在 上升。其实我问的不是这个，我问的是，对待前面离开的人无聊或者无理举动， 我应该以什么状态和心态面对？

**段永平：**&#x9762;壁思了谁的过？ 既然已经离开了还要如何面对？由他去吧。

（2011-04-14）

15.网友：大道，管理人最重要的建立奖惩机制吗？建立奖惩机制，尤其是激励 机制，有什么重要原则，可以教诲下吗？

**段永平：**&#x636E;说马云说过，人呆不住就两个原因，钱给少了或者是心委屈了。马云 这句话非常经典，把保健因子和激励因子说得非常形象。钱是保健因子不是激励 因子，给多了没用，给少了不行（绝大多数人在这点上都错了，因为钱不是万能 的，当然没钱也是万万不能的）。激励因子实际上就是不要让人心委屈了，要让 人觉得有意思。（2019-10-19）

#### 4.员工薪酬是否公开

01.网友：请问段大哥对“密薪制”看法？我们单位的工资条都是公开的，不理 解“密薪制”。

**段永平**：各有道理。能做到“密薪”最好。（2011-03-18）

02.网友：请教啊段一个关于公司员工薪酬是否适宜公开的问题：老巴在 2014 年 股东大会上说，公开薪酬对公司并不好。而我觉得应该公开，因为不公开起不到 鼓励先进，鞭策落后的作用。如果谁做得好都不敢表扬，公司昂扬向上的风气怎 么能形成？我这个看法有道理吗？不知道步步高的薪酬计划在公司内部公不公 开？

以下是巴曙松的 2014 年巴菲特股东大会笔记：

巴菲特和芒格目前的薪酬一样，都是象征性地在公司领取一年 10 万美元薪酬， 他认为，其他高管付出的努力完全配得上他们的薪酬。伯克希尔公司会按照美国 证交会(SEC)的要求来披露薪酬计划，但是把薪酬计划完全透明化其实对公司股 东有害无益。因为每个人都知道了他们周围人的工资情况，他们会相互攀比，进 而产生嫉妒情绪而影响工作。巴菲特强调，所罗门公司每个人的收入都很高，但 是到后来他们都很不满，因为他们看到了周围有人拿到更高的工资。

**段永平：**&#x516C;开不好。（2015-05-10）

#### 5.狼性文化与人性文化

&#x20;01.网友：华为的智能手机据说凭着价廉物美打入了美国市场。您在美国是否有 看到？您对华为这家公司怎么看？

**段永平：**&#x4EF7;廉是真，物美就不好说了。华为是一家非常 aggressive 的公司，但 企业道德感不强，为达到目的好像有点不择手段，据说还在我们公司门口设了个 挖人的点，破坏企业环境啊。（2011-02-15）

02.网友：在您这里学习 7 年了，感触最深的就是企业文化——有个相关问题想 了很久，也回头又看了“基业长青”，还是不很清晰，很想在这里请教段老师， 以现有的几家公司正在发生的事情做引子来说事情吧：

1\. 华为最近的人事

坊间传说 40+以上研发，34+以上交付人员要赴海外，不愿意的那么人事谈话， 请离职——背后原因如同罗生门，各有说法。

（因为是 OV 手机品牌的友商，我想您不方便具体评价。但我自己是 70 后，也在 通信行业干过，我个人觉得华为这种狼性文化确实是这个行业生存所需要的——

因为年龄增大，家庭事务增加，学习精力时间减少，同时生理机能渐渐衰落难以 高强度加班工作，必然导致战斗力下降，而这个年纪薪水渐高。所以被边缘化甚 至淘汰几乎是必然的，这是快速进步的时代和相对进步缓慢的个人之间的矛盾。 华为通过员工持股已经解决得算是较好了，因为年纪大岗位即使调整到普通岗， 还可以通过股票多分红） 只是：这样的企业文化必然带有丛林法则或者说奋斗者为本的底色——我个人认 为从企业实际出发，让员工和家属完全理解这些现实（为了实现愿景和使命，战 争年代要流血牺牲，和平年代要下岗失业）是很困难的；反过来如果员工不能完 全接受，那企业文化也是很难持久和深入人心成为信仰的。

2\. 张朝阳和搜狐：张朝阳最近也在反省之前搜狐的好人文化 说实话，我比较好奇步步高和 OV 是怎样做到坚持自己的文化同时也坚持（我个 人理解）（长期）结果导向（否则意味着企业可能失败，但导向必然意味着部分 员工可能会牺牲利益？！），同时又能保持昂扬的企业和员工精神——也不使用 短期鸡血刺激。（不好意思段老师，这里有些言语可能微妙使用不当。我并没有 贬义，只是难以找到更合适的表达。请您勿怪）

**段永平：**&#x31;.狼性文化最终会输给人性文化，2.此“好人”非彼“好人”，你这么 看说明你也还没有是非观。（2017-02-26）

网友：谢谢段老师的回复。我愿意多说明下自己的理解：A. 您提到的：关于“好 人”与“老好人”的区别；B.关于效率与狼性的个人理解

1\. 您所说的此“好人”非彼“好人”： 我个人理解是说，企业文化中的“好人”“好企业”是指价值观意义下的“好

人”“好企业”：良好的产品服务，诚信做事，本分待人，为社会提供正能量； 而张朝阳所说的“好人文化”中的“好人”，是指“老好人”，不愿意得罪人， 愿意维持一团和气的“兔子”（借用史玉柱先生的比喻） 我上面引用华为的例子和张朝阳对于“好人”文化的反省，更多是希望询问：如 何既保持人性的企业文化，同时保持效率。当然也许您认为这两个例子性质不同。<br>

**段永平：**&#x6211;们不用好人坏人这种词去形容做对的事情和把事情做对，容易引起误 解。（2017-02-27）

03.网友：大道，狼性文化什么情况下不会败给人性文化？员工分的多能让狼性 文化长期起作用？

**段永平：**&#x5174;奋剂当然是有用的。（2019-03-18）

#### 6.裁员

01.网友：我个人觉得企业裁员对于管理层来讲是个很艰难的事情，但有的时候 又不得不做，该怎么处理这个问题呢？有没有一些大的原则？

**段永平：**&#x88C1;员也许是每天都该做的事情，或者说每年都要做的事情。不合适的人 早点让他们离开对大家都好，不要等到不得不做的时候才做。裁员大概是最难的 一件事情，尽量不要因为短期的困难去裁员。（2019-03-18）

02.网友：今天想请教：如果个别同事不符合我们学校的文化，我们学校也找不 到好办法改变他，我们学校怎么处理好？辞退？

&#x20;**段永平：**&#x4F60;的学校的文化在这里指的是什么呢？不管怎么样，如果融不进这个文 化，你不让他走他也会想走的。（2019-03-18）

#### &#x20; 7.末位淘汰

网友：段大哥：从经营企业的角度看您认同 10%末位淘汰吗？

**段永平：**&#x4E2A;人不太喜欢这种淘汰的办法：如果都是认真招进来的不错的员工，如 何才能挑出 10%赶走呢？（2016-04-28）

#### 8.加班文化

01\. 网友：您认为文化和信仰的差异是东西方企业经营理念不同的原因吗？中国 太多人读了资本论以后都在加班加点的急功近利，变卖资源和糟蹋环境。问题可 能有点幼稚，多包涵。

**段永平：**&#x597D;企业在哪儿的经营理念都很相近。美国急功近利的公司也很多，中国 公司也不都是急功近利。我本人很多年前就很反对没事加班加点的。我一直认为 老是强迫加班加点的部门负责人的管理水平有问题，老是强迫加班加点的公司的 老板的管理水平有问题，呵呵。（2010-04-14）

&#x20;02.网友：还有一个企业问题请教，华为强调狼性文化，企业加班、高压力和高 收入同时并行，据网传阿里等企业加班文化也很盛行。在实际中，似乎要不断努<br>

力哈，有句话叫“比你聪明的人不可怕，可怕的是比你聪明的人比你更努力”， 不努力可能被淘汰，而且看上去这些企业执行力很强，有指哪打哪的感觉。鲁迅 也说：我哪是什么天才，我只是把别人喝咖啡的时间都用在写作上。

&#x20;记得大道说过不鼓励加班，这样，企业会不会因此失去某些执行力而缺乏竞争力      失败。大道怎么看待以上这些想法？

&#x20;**段永平：**&#x6211;一直都不鼓励加班，但不是说我反对加班。需要时加点班无可非议， 但过分加班会会影响员工的生活，长此以往也会让竞争力下降的。我总是希望大 家能够高效率工作，同时还能好好生活，能多陪点家人孩子啥的。我们接受“慢 慢的富起来”的观点，事实上我们做得也还不错啦。（2019-03-22）

03.网友：您如何看待 996（早上 9 点上班，晚上 9 点下班，每周工作 6 天）。

**段永平**：**我不喜欢 996。**  （2019-04-23）

&#x20;04.大道，您好。我对您特别看重的优秀企业文化的理解思考了很久：生意的本 质是满足用户的某种需要，是生意的最底层基石，以用户体验或消费者导向作为 企业文化的，就是好的企业文化，当以消费者导向的企业文化融入到整个公司员 工的价值观时，产品或服务领先于同行只是企业文化的外在体现，当这种差距持 续保持及领先时，极有可能就产生了护城河：用户需要但其他竞争对手满足不了 的某些东西。不知道这样理解是不是对的，请大道指点。

&#x20;**段永平：**&#x57FA;本上同意你的看法，虽然我觉得“以用户体验或消费者导向作为企业 文化的”只是好的企业文化的一部分。比如，我就不喜欢 996 或 997。

（2019-04-08）

#### 9.管理层(CEO)

01.网友：CEO 致命的经营缺陷是哪些？

**段永平：**&#x6CA1;研究过，但读中欧时曾经看过企业家最重要的品质是 integrity（诚 信），所以大概违背 integrity 的品质可能会是致命的吧，时间足够长的话。

02\. 网友：芒格说惠普的董事会之所以会选择菲奥莉娜是被其面试时的表演能力 所迷惑。芒格自己担任一家学院的学术委员会的委员，他替学院选择老师时全部 的依据是其过往的历史表现记录，根本就没有面试这个环节，只根据书面的学术 成果而不用见面就决定录取谁。

**段永平：**&#x627E;空降兵其实不是上策。惠普要走这一步实在可惜。（2010-08-24）

&#x20; 网友：段大哥公司有没有请空降兵？

**段永平：**&#x4E13;业人士很多，CEO 位置没有。<br>

&#x20; 网友：阿里巴巴也请了空降兵？怎么看？

&#x20;**段永平：**&#x8C01;是？马云应该不算吧？我对所谓空降兵的理解就是从外面找一个

CEO。从公司内部提拔上来的不算。空降兵不是一定不行，但由于文化冲突的问 题，空降兵的成功率非常低。（2010-08-26）

引用:消息称雅虎聘请猎头公司寻找新 CEO……

**段永平：**&#x730E;头公司找到的 CEO 好过从内部提拔的 CEO 的概率是非常低的，为什么 有些公司还乐此不疲呢？(2011-10-02)

03.网友：在通用电器 126 年的历史里，包括现任总裁，一共才有 9 位，几乎都 是内部提拔

**段永平：**&#x4E0D;是几乎。（2010-07-27）

04.网友：今天早上又看到微博上说 Carol Bartz（卡罗尔·巴茨）被炒鱿鱼了， 巴茨被炒鱿鱼，一是觉得这种炒的方式感觉董事会做法十分欠妥，二是觉得雅虎 临阵换帅也不是啥好事……YAHOO（雅虎）没有一个好董事会：太在乎短期的效 益（投资回报率之类的）及其外在市场评价，也没有很好的文化。估计无论以后 找到什么样的新 CEO，要在董事会和文化的双重制约下，理性的制订、实施战略 抉择都将会变得比较困难。

&#x20;**段永平：**&#x8FD9;种做法大概是为了保密，当时大家没办法见面，这个办法是最快的。 如果巴茨确实不是合适人选，什么时候换都是对的，而且应该是越早越好。不过，

我觉得巴茨其实为 yhoo 做了不少工作，大战略也许是对的，只是工作方式有点 老，似乎不太适合互联网行业。

**段永平：**&#x770B;来 yhoo 的董事会确实不太灵，不过短期可能对股票好，他们一定会 想办法把 yhoo 的价值体现出来的，长期来讲，美国 yhoo 确实麻烦多多啊。

（2011-09-07）

&#x20;网友：我是比较看好这次炒鱿鱼的，令人精神振奋，不破不立嘛，哈哈。我觉得 的还是杨致远当 CEO 的比较好，谁最 Care（在乎）公司，谁会最用心，杨致远 肯定是最 Care 雅虎的人。雅虎中兴还有很大的机会的，至少在内容提供方面， 雅虎是不二品牌。搜索也不是互联网的全部，搜来搜去，还不要到内容和服务上 去吗？希望雅虎出来个乔布斯，搞个 AppStore（应用商店）之类的，就是把现 有资源开放出来也了不得，有钱大家赚嘛。Google 和苹果的强大就在于开放， 人家想的是建生态系统，而不是想把利益都一家独吞……雅虎和微软都太封闭了 现在，至少草根跟着他们是赚不了啥钱的。

**段永平：**&#x6768;致远是被证明不合适的了。（2011-09-08）

网友：你曾说过巴茨是你投雅虎的一个很重要的理由，现在她不在了是否意味着 你也要重新考虑考虑是否撤了？

**段永平：**&#x4F60;大概没看前言后语吧？（2011-09-08）

&#x20;**段永平：**&#x97E9;非子曰「**宰相必起于州部，猛将必发于卒伍**」，雅虎这么老从外面找 CEO 的办法说明美国雅虎董事会确实很烂啊。今年好像是换 CEO 的念头哈，google 换了、苹果换了、yhoo 也换了。（2011-09-08）

引用:雅虎杨致远发备忘录：将在数月内确定战略选择……

**段永平：**&#x4ECE;外面请顾问对自己公司做战略评估一定是件非常有趣的事情。很难理 解当自己都不知道该用什么战略时别人可以帮得上忙，不管别人都是谁。旁观者 清的情况下，旁观者或许可以指出错误，但要教会自己该干嘛大概是不可能的事。 还有就是，让问题自己找问题大概是不会找到问题的。

网友：[以段总的能力，是能够为雅虎制定一套确实可行的战略和企业文化的！](https://xueqiu.com/1247347556/20403518)

**段永平：**&#x4EE5;我的理解，外部人是做不到的，就算有啥好主意也不会有机会实施。 (2011-09-24)

05.网友：有没有比较好的制度来制衡 CEO 的行为？TRUMP（特朗普）毕竟还有国 会和法院来限制，CEO 似乎更自由一点，而且有权利去改变企业文化。

&#x20; **段永平：**&#x4E00;般来说都是靠董事会，最重要的是企业文化，体现在如何选人上。一 旦选错，一般损失都很大。这些年看到不少公司选错 CEO 的，最典型的就是 HP，

当然也包括 Yahoo。其实阿里当年 168 用错 CEO 的损失也不小，但相对整个公司 而言被忽略不计了。（2018-07-02）

&#x20;06.网友：段总腾讯公司的游戏业务的收入已经占到公司主营的第一比重。假设 您是腾讯董事会的成员，您会在腾讯公司的游戏业务拓展方面提什么建议呢？特 别是在网络时代，游戏缴费都是在线上完成的。

**段永平：董事会的作用是不让做不对的事**，不应该建议什么。（2010-08-30）

07.网友：从投资的角度，我们应该怎样全面看待企业的管理者呢？ 什么是最重 要的品质和素质呢？

**段永平：**&#x6700;重要的是 integrity。（2010-05-20）

08.网友：您现在都在做投资，对 oppo 或 bbk 这些企业您还有没有自己的期望和 目标了？虽然您说不怎么管，只把把大方向。这个大方向跟倾向于您自身的期望， 还是凭职业经理人们运作只要不会有什么问题，您也就认可他们对公司发展上的 决定哪怕和您的设想方向有些出入？

**段永平：**&#x5475;呵，我当然有期望。但目标是大家定的。我在公司的角色是顾问。理 论上讲连大方向都不归我管，但我可以提我的意见。 出入总是有的。我在公司里是个反对派，几乎做什么我都会提反对意见。如果连 我的反对意见大家都不怕时，做什么我都会放心一些。 我最怕的就是当老板说什么大家都说“好”。那时公司就危险了。 当然，这里的前提是我认为我们同事很多都在许多方面比我强。如果认为自己是 公司里最聪明的人的“老板”是很难认同我这个观点的。（2010-04-02）

09\. 网友：请问段总在经营时最重要的是做好那些管理工作？怎么样才能使年轻 的经验不足的成员成长为有责任，，会思考的团队？

**段永平：**&#x9996;先自己要成为有经验、有责任（感）和会思考的团队（一员）。俗话 说：兵熊熊一个，将熊熊一窝。不知道你是兵还是将啊。（2011-03-24）

10.网友：请问大道：乔布斯曾经说过：「我过去常常认为一位出色的人才能顶 两名平庸的员工，现在我认为能顶 50 名。我大约把四分之一的时间用于招募人 才。这句话对吗？您觉得一个公司 CEO 每天时间应该侧重于哪些方面比较合理， 我觉得至少四分之一花在客户需求。您认为应当如何合理安排哪些内容、企业文 化保持、战略、找优质供应商等等？

**段永平：**&#x4E54;布斯是对的。我当 CEO 的时候并没有一个时间分配表，但大致知道什 么是重要的。**简而言之，不要让重要的事情变成紧急的事情**。（2019-03-16）

网友：您认为对于公司管理者来说，处理一些紧急事情的原则和有效的方法是什 么呢？

**段永平：我认为是你要分清什么是重要的事和紧急的事，千万别让重要的事变 成紧急的事。**

举个例子，对于一家公司来讲，客户投诉是紧急的事，员工没有权力解决，老板 可以做主。老板出马，一下就把问题给解决了，虽然老板有成就感，但他却做了 别人应该去做的事。实际上，对于一家公司的管理者来讲，只是做紧急的事，那 都是管理别人或代替别人管理&#x4E8B;**。实际上，对于一个管理者来讲，重要的事是建** **立公司的各项制度，设定公司的服务章程，把重要的事都做好了，剩下的事员 工自己就能处理好。**(2005 年，北大演讲)

11.网友：我仔细观察了下，好像特别强势的领导管辖下的组织，其创新能力和 纠错能力会差一些。是不是也是因为这个原因，所以《基业长青》里第五级领导 人往往都不特别强势？

**段永平：凡是员工见到领导就战战兢兢的公司，时间长了都会出问题的。因为 这种公司员工大多都会慢慢变得没有担待，凡事希望交给上级去决定，效率慢 慢会降低。除非这种公司的产品非常聚焦，大老板确实可以照顾到所有大方面， 不然早晚会出问题的。我觉得日本企业这些年在有些行业出问题就是这个原因。**

（2018-09-22）<br>

12.网友：看了，感觉乔布斯特别强势，下属做得不好，直接一顿臭骂。

**段永平：**&#x6240;以他累得不行，早早退出了，还好选了 Tim Cook！（2018-09-22） 13.网友:《财经》：你认为作为 CEO 的本分是什么？

黄峥：我不是一个典型意义的 CEO，我一负责给公司输入价值观和文化，以及为 员工树立人生理想。二是我管那些突然冒出来以前没遇到过，也不知道分配给谁 的问题。

《财经》：你的员工说你说过的话、做过的决定说一不二，你是不是觉得多数人 都很蠢？自己的决策和判断要明显优于其他人。 黄峥：这和我对自己的认知是很不一样的。在我的脑子里，绝大多数人在绝大多 数方面都是比我强的，我只在很少的方面比很少的人强。

**段永平：**&#x8FD9;个像黄峥说的！（2019-02-14）

**10.如何打造优秀的企业团队**

**段永平：**“保健因素如果不能满足，人肯定会走。保健的关键在于公平。”                &#x20;

&#x20; 企业首先要确立自己的核心价值观，招的人必须符合这个核心价值观。评价一个 员工，可以从“合格性”与“合适性”两个方面来看。大部分企业找的都是合格 的人，比如技术好、会销售、懂设计，但如果没有办法跟他合作，这种人我不要。 很简单，因为合格性是可以培养的，但合适性的培养非常困难。所以，首先必须 要找到“对胃口”、可以信任的人，才能把公司交给他打理。

从“保健－激励”双因素模型来看，保健因素如果不能满足，人肯定会走。保健 的关键在于公平。1989 年，我在工厂账上只有 3000 元、负债 200 万元的情况下

接手，到 1995 年赚了好几亿。最早老板让我接手的时候说按七三分账，后来给 我们的分成变成两成、一成，不断食言。如果当初他兑现承诺，我是不会离开的。 保健因素是基础。

&#x20;金钱激励并非永远有效。如果一个人已经很努力，100%投入，即便你将他的报酬 从 100 万元涨到 1000 万元，他也不会更努力。一个企业要想永续发展，你不会 希望员工花费 120%的精力工作。我很反对员工无缘无故地加班。其实，当保健 因素满足以后，人们追求的往往是钱以外的事情。在步步高，没有人把企业当成 是我的企业来做，而是当成他们自己的企业来做，年薪 100 万元的人，别的公司

给 200 万元都挖不走，因为他喜欢这里的文化。

&#x20;文化是需要花费很大的功夫去培养的。我非常推崇马云，他对企业文化的细节非 常注意，手段也非常高明。比如，他有花名，风清扬。在步步高，所有人都可以 叫我“阿段”。但大多数公司呢？都是王总、张总，员工这么叫你，人马上就矮 了一点，不平等，也没有感情，这样就很难实现充分的沟通。 在一些企业里，如果是老板自己的原因导致赔钱，他会觉得正常；但如果是下属<br>

导致的亏损，他往往会很心疼。我是可以把别人亏的钱和自己亏的钱等同起来的 人，这种容忍对于建立健康的企业文化来说十分重要。我们曾经想做彩电，在研 发上投入了一个多亿。一天我跟这个项目的负责人聊到彩电的未来，得出结论： 5 年以后我们就会沦为彩电的搬运工，因为产品很难做到差异化。几天后，有人 打电话问我：“听说你们的彩电项目取消了？”其实并不是我下令让那位负责人 停止的，是他自己感觉事情不对后，做出了正确的决定。可见，文化一旦建立起 来，它比你想象的要强大得多，会帮你纠正非常多的错误。( 五问段永平 2013-05-17 来源：中欧商业评论)

&#x20;网友：段总这是您的原话吗？觉得里面说的蛮好，蛮有收获的。

**段永平：**&#x5927;概是去年某天，中欧有批人来湾区时，抓我去做了个交流。看上去基 本上是我说的，但记得说过不见媒体的，不知怎么就又见了。(2013-07-08)

网友：这几天公司在请资源公司给大家做领导力的培训，结果今天出了组织氛围 评价的测试结果（非常糟糕，至少从数据上显示，属于典型的指令+领跑的公司）， 而且和领导自己评测的结果大相径庭（很多项目偏差率都超过 50%），所以大家 看到结果有点沮丧和郁闷。咱们们公司有很好的企业文化，但是为什么反映出的 组织氛围却不好，其实大家也有所感觉，至少没有意识数据上的差异会这么明显。 阿段一直在说企业文化是核心竞争力，这个的确我也能理解和逐步领悟。但是为 什么基本看不到有关于公司组织氛围的报告，组织氛围也是核心竞争力的一部分 吗？是不是大部分公司其实从数据上显示都不高？不是很明白这两者的关系，请 教一下阿段？

**段永平：**&#x6240;谓竞争力是相对的。虽然测试结果不理想，但如果比行业里大多数强 的话依然算过得去吧。当然，大家知道要更努力了。

我们中国文化下绝大多数公司或组织都是“指令+领跑”的，如果从现在开始意 识到这一点，你们 10 年后就真有可能成为中国的苹果哦。不过可以肯定的是你 们现在还不是。

好的组织氛围绝对对创新有很大帮助，最后非常可能会成为核心竞争力。

（2012-03-25）

#### 11.关于授权

01\. 网友：我今天的问题是关于我创立的企业的。现在是 100%控股，但每天的 时间被各类管理的事占满了，想在未来能够省下时间来精心做投资，想向段总请 教，如何既能控制公司发展又不用事无巨细都要我拍板？通过分股份来提升团队 凝聚力还是高工资？

&#x20; **段永平：**&#x5173;于授权的问题，能比我理解得更好或做的更好的人确实不多。授权的 过程一般是: 指示、指导、协商、授权、放权，最后一条是 never out of control

（只有好的文化才有可能做到这一点）。这里最重要的还是“做对的事情、把事 情做对”。<br>

在能够把握“做对的事情”的前提下，容忍“把事情做对”的过程当中所犯的错 误。这一点是大多数人做不到而且是很难学会的。呵呵，就像投资一样，授权也 是简单但很难的事情。（2011-01-04）

02.网友： 您说“授权”（只有好的文化才有可能做到这一点）能不能讲的再明 白一点。

**段永平：**&#x4F60;是哪里不明白？（2011-01-08）

网友：我在工作中的体会是：授权给的对象只要合适（操守）、合格（才干或专 长）、有意愿（愿意拼命工作）就可以了，然后一起讨论好下一步的工作计划（把 做对的事情计划好），让该对象执行（把事情做对，如有偏差协助其调整即可）。 从来没有体会到授权和企业文化有什么关系，您能否明示？

**段永平：**&#x5475;呵，其实你说得很对。不过，你说的合适其实指的就是文化。比如说， 如果你是个诚信的人，坑蒙拐骗就“不合适”了吧？（2011-01-09）&#x20;

03.如何培养授权文化

**段永平：**“从指示、指导到协商、授权、放权，逐步推进，这样企业就不会失控。” 前段时间马云辞任 CEO，我很赞成，其实我早就干过这个事情。退下来比待在那 个位子上可能作用更大。步步高的小日子过得不错，手机、电子教育盈利都不错， 但并不意味着需要我去控制，我只担任董事长。在中国企业里，大家不太愿意跟 老板提意见，得有一个人跟老板提意见时不会有顾忌，这个人就是董事长。 我现在常年在美国，连公司具体卖什么产品都不太清楚，有人说我是“影子老板”。 我对授权的体会是，从指示、指导到协商、授权、放权，逐步推进，这样企业就 不会失控。当年因为老板食言，我在小霸王发展最好的时候决定离开，仅仅用了 15 分钟就完成了全部交接，充分授权是我一直以来的作风。做**企业关键就是“做 对的事情”和“把事情做对”，**&#x8463;事长的工作不是去控制细节，而是关注企业是否 在做对的事情。任何人在做对的事情的过程中都可能犯错，那是技术上的问题， 很正常。但类似质量有问题的产品还出厂这样的事，我就要让它立刻停止，不管 多大的代价都是最小的代价。(五问段永平 2013-05-17 来源：中欧商业评论)

03.网友：史玉柱在微博上说已彻底退休，告别江湖。以后主业是玩，副业是公 益。我想问公司基于放权的原则有哪些，万一公司没有找对接班人，公司通过什 么调节的。

**段永平：**&#x54E6;，我还以为他一直在玩儿呢。他以后有可能会更忙吧，因为做公益是 一件非常不容易的事情，尤其是在中国。基本上来说，放权主要是要慢不能够太 急，另外最重要的是要找到合适的人。所谓合适的人，就是合适于企业文化。如 果找错人了，那公司就会有麻烦了。历史上有过麻烦的公司是数不过来的，好像 也没有一个放之四海而皆准的办法解决。以上是 Siri 录下来的，八点二十发。

（2013-04-10）<br>

04.网友：您经营企业的那段时间，您负责公司的哪方面啊，现在觉得企业人 事是比较费心的一件事情。

**段永平：**&#x6211;主要负责打球，偶尔看一下我们有没有做不对的事情，至于怎么把 事情做对则不是我的擅长，公司里很多人比我强。（2013-03-02）

&#x20;05.网友：老巴的宽容或许在为接班做准备？毕竟从师傅带徒弟的角度来说，如 果很严格都给枪毙了可能不利于真正的成长。我哪里见过一句话：真正的宽容， 放手让不如自己的人去做事，还眼睁睁看他把事情搞砸了，中途没去阻止。往好      的方面来说，这些是短期的接班费？

&#x20;**段永平：**&#x54C8;，我是放手让比自己能干的人去做事，至少做着做着就比我能干了。 放权里最关键的是可以容忍在“把事情做对”的过程当中所犯的错误，我个人的 理解是其实干同样的事我也犯错，为什么别人不可以犯错。（2012-05-18）

06.网友：我觉得 oppo 的核心技术就是段先生和段先生培养的价值观、企业文化 和制度。抓住自己能做好的一点去做好。好似好简单，其实很难。比对手优胜的 地方就是更加专注于竞争对手没有做好的地方去做好，紧紧围绕消费者导向这一 原则。另外就是品牌定位方面很有策略性，让人记住 oppo 等于高品质 dvd play er（影碟播放器）。唯一对应性很强。其他竞争对手的品牌做的东西太多了反而 品牌印象模糊了。

**段永平：**&#x6211;这 10 年在公司办公室呆的时间总和可能还不到 10 个小时，在 OPPO 的时间总和可能不到一个小时。我们公司做得好的话一定是大家的功劳，但如果 做不好则确实有我很大的责任。（2011-03-09）

网友：是不是你觉得你的最大责任是为企业找到最好的经营者，如果经营不好， 则是当初经营者没有找好？

**段永平：多数人也许会这么认为，找个所谓的职业经理人。我们不知道怎么找 职业经理人，所以直接找的就是老板。（2011-03-09）**

**12.管理制度**

问：您如何保持组织内部的凝聚力？

**段永平：最基本的原则就是公平**。另外，建立相互信任的方法是同大家敞开地交 流。企业大了以后，层级多了，交流的确少了。拿破仑说到他在滑铁卢失败的原 因，是“很久没有同战士们 喝过汤了”。我们正在学习，寻找解决问题的方法(段

永平做客人民大学精彩问答实录 1999 年)

01\. 公平的定义（2011-02-21） **段永平：**&#x516C;平的定义其实非常复杂，有兴趣大家可以看看网易的公开课。<br>

我个人理解，其实没有绝对的公平--就是所有人都觉得公平的公平。 作为游戏规矩的制定者，最重要的是要有公平心。 公平并不等于平等，也不是平均主义。 看某样东西是否公平往往从旁观者的角度会比较客观些。

公平同时也是很难的一件事，需要很多的功夫，比如一个公司的绩效考核体系等。 客观讲，我自己没有能力去阐述什么是公平，也许这是大学教授才能干好的事。 不过，我可以举一些我们这些年的一些经历或我们制定的小规矩来说明我们对公 平以及平等的一些理解。

**段永平：**&#x5728;美国，机场安检有时很严，有些人偶尔会被抽到详细检查（包括搜身）。 有时候，我们会看到被抽到的人很不高兴，觉得为什么是他而不是别人，觉得那 不公平。我被抽到是感觉很坦然，也很配合，觉得那是公平机制下的结果，也是 为了我们每一个人好。

**段永平：**&#x6211;记得以前经常看到很多公司会有各种规定，比如关于什么人可以分什 么样子的房子，什么级别可以配什么样的车，什么级别以上的人出差可以坐头等 舱或商务舱等等。我们公司里不分房子、不配车（都是自己买），任何人出差都 可以坐头等舱（但公司只报销经济舱。）记得刚开始有这个规矩时，有一次我发 现我的头等舱机票被全报了，就问财务为什么。回答是公司只有我可以报头等舱， 然后我说，这是不把我当人看，因为我们的规矩是对所有人的。后来就都一样了。

**段永平：**&#x6211;记得以前曾经和一家公司的某部门头讨论奖金问题。由于他们部门利 润好，不敢按全额把奖金发下去，另外也怕奖金的分配会不公平。我个人认为所 谓的奖金其实也是某种契约，公司把一定比例的获利分给员工，封顶实际上是违 约的。而由于怕分不好而不发则是最大的不公平。不过，要发的好也确实是一件 非常难的事，不光要有很好的绩效考核体系，同时可能也需要很多年经验的积累， 但不发肯定是错的。（2011-02-18）

02\. 网友 C：公平有时候很难做到的，因为每个人的想法都是不一样的。比如我 们做公路交通工程设计，一个设计室里有 20 多人，学历从研究生到中专生都有， 专业有桥梁隧道，路基路面到交通标志，做工程项目有的人连夜加班，有的人关 键时刻才出手一下子。一个项目下来，比如隧道造价最高，设计工程量却最少， 交通标志造价不高工程量很大。如何分配才能做到每个人都觉得公平呢？

（2011-02-18）

**段永平：**&#x6CA1;有任何办法可以让所有人都觉得公平。

网友 W：公平是不是应该靠规矩来执行，哪怕这规矩只是相对的合理？ **段永平：**&#x5236;定规矩的人一定要有公平心，不然规矩容易有问题。（2011-02-21）<br>

03\. 网友：段总的逻辑很严谨，管理体系不是盈利的充分条件。“同样的东西不 一定是同样的”-----我就不太看懂了。

**段永平：**&#x6BD4;如“同样的管理体系”在不同的地方一定是不同的人来管的，理解和 效率差个几倍是非常常见的现象。（2010-10-15）

04\. 网友：韦尔奇自身受德鲁克的影响比较大，是不是可以说德鲁克是管理学的 理论大师，而韦尔奇是最优秀的实践者？

**段永平：**&#x6211;知道德鲁克，但从来没看过他的东西;补充一点，从书名上看，德鲁 克的东西主要是教大家如何把事情做对的。如果我现在 20 来岁，我觉得我会好 好看看他的东西。（2011-11-04）

05\. 网友：我有经营企业 4 年（从作坊类型过渡到小企业），一直以文化作为主

要控制手段，我有 2 年没呆在公司里，公司越来越好（和每一个昨天比）。问出 有效问题很难，一些困惑很难发出问题。最近几年感觉每一天都在黑暗前进，但 是又发不出明确的问题。员工对已有的规则和流程不严格遵守，屡屡犯错，可实 际规则是由下至上订出来的。现象举例：上班不打考勤机，以忘记为由事后去打 考勤。针对上述现象，想请教段大哥，应以什么思维方式面对。

**段永平：**&#x6211;觉得大家都不遵守的规矩有可能会是不合理的规矩。小部分人不遵守 规矩是执行者的问题。一般而言规矩定得一定要有道理、有意义并且尽量简单和 易于执行，比如这个博客博友发言的规矩。

一个组织如果有大家都不执行的规矩存在，长期来讲就是鼓励大家不执行大家制 定的规矩，未来大家的麻烦可就大了--比如国内常见的没有交警和红绿灯的十字 路口。面对的方式其实也很简单，就是执行你的规矩或者废掉执行不了的规矩， 最好不要有中间地带，不然大家会很忙的。

**段永平：**&#x4E3E;个我们自己的小例子：有一年，我回了一趟公司，发现总部大楼前那 些没有停车线的地方也都停满了车。我就问我们管后勤的同事，为什么这么多车 停在“不可以”停车的地方？他告诉我说，因为“没地方”停。后来他们把那些 原来“不可以”停车的地方都画上了停车线，这个违规的问题就解决了。

06.网友：段总和各位博友好，有时思考一些管理方面的问题，想听听大家的看 法（因为在现实中聊这些常被认为不切实际和想多了，因此变得少和周围的人交 流这些了）。想聊的是，无论是一个国家、公司或团队，制订和公布的规则，如 果没有执行，现实中遭到无视，那么伤害的不仅是这条规则，而是所有规则，久 而久之，便会产生规则形同虚设，无法实现以制度管理的效果，或被选择性利用， 其后果可想而知。不知大家是否同意，怎么看这个问题？第二，又进一步想，为 什么规则不被大家尊重和遵守，是制订、实施、执行、监督及惩戒哪个环节出现 问题都会造成？这个问题又怎么看？谢谢段总和大家解答疑惑。

**段永平：**&#x5728;国内，确实经常经常见到有规矩不执行的情况。举两个小例子：很久 以前，我曾在我们深圳的一个公司的办公室外面见到一个禁止抽烟的标志下放着<br>

一个大烟灰桶，我当时的建议是如果必须要把那里作为吸烟区，那就不能有那块 不许抽烟的牌子在那里。另一个例子是，很久很久以前，在我们东莞总部的办公 大楼前，看到在非停车区也停满了车，我当时就建议把原非停车区能画上停车位 的都画上了。有规矩不执行比没规矩还不好，但规矩的制定要合情合理，且该调 整时也要根据实际情况调整。（2015-12-15）

07\. 网友：学长管理这个博客的风格让我印象很深刻，事先做好约定，执行绝不 含糊。如果我是您，很可能会狠不下心，于是原谅第一次触犯了约定的朋友。

**段永平：**&#x6211;们的文化真是不太尊重规矩，被删的人绝大多数根本就没认真看过我 列的这几条规矩。申请的人绝大多数也是不先看规矩的，真是没办法。当然，留 下来的博友都是蛮懂规矩的，尤其是 23 小时的那条，我经常看到有人是踩着线 来的，呵呵。当然，其他几条也希望看懂哈。前几天刚刚删了一个建议我回国的， 呵呵。

网友：段大哥的规矩简单但不容易，呵呵。感觉对于我们中国人，“规矩”并不 是什么规矩。（包括立规矩的人和要求遵守的人）支持。

**段永平：**&#x5475;呵，你说得对，我们老中尊重规矩的人的比例比较低。 08. 网友 S：人有恒产，就有恒心，然后生活就踏实。

**段永平：**&#x5176;实企业也一样，只要企业内的规矩是靠谱的，员工就会有恒心，我当 年就不会离开小霸王，也许阿里这个生意就是我们在干着，马云可能就要去干别 的了（玩笑哈）。（2013-03-03）

网友 Z：在不靠谱的公司呆过才知道啥应该是靠谱，跟不靠谱的人交往过，才知 道啥是靠谱的人。

**段永平：**&#x5176;实只有在靠谱的地方呆过才知道什么叫不靠谱，反过来其实不成立。

（2013-03-06）

09.网友：最重要的事，就是你做得最不好的事。学习啦。

**段永平：**&#x539F;话的意思大致是：**在公司里显得最重要的那个部门往往是做得不够好** **的部门**。（2017-06-20）

10\. 网友：企业里的问题，有时从外部很难看出来，或者说不能完全确定，因为 经常会“心太软”地认为——“这是在中国，国情就是如此，可以理解”，那么 就更没有准绳来判定企业的管理与文化了……明显时可以看出来，有时不那么明 显，又该怎么办呢？&#x20;

**段永平：**&#x4F01;业经营好坏很多时候是相对的概念，也就是说只要在你的“圈子里” 比竞争对手好就行。**“国情”有时候会帮助国内很多企业在相当长的时间里避开** **来自更强竞争对手的压力。百度其实就是个很好的例子，我们这类企业能很好**<br>

**地生存到今天也和这个有关系。不过“国情就是如此”不能作为长期不能改善 的借口，因为竞争对手有可能会改善。（2011-03-31）**

11.网友：遇到一个工作难题，公司规定配套厂家未按计划完成，每缺一件罚 20

0 元，造成生产缺件每台 500 元，每天有 100 多台未完成计划，这样持续罚款， 厂家挣的钱不够罚款，到公司领导也就不罚了，如果制度没有持续性，对配套商 也就没有约束了，我跟科长商量罚 50 元没打成共识，我想按比例罚款，如，未

完成 100 台，每台 200 元，罚 20000 元，按 50%比例罚款 10000 元。段总有何建 议？

**段永平：**&#x662F;自己公司内部的配套厂家还是外部的？如果是外部的，也许你们要有 个备用的厂家，内部的也一样。如果定的规矩不实施，比没有还糟，但如果因为 定的不合理而实施不了的规矩就一定要改规矩，不然公司会很麻烦。（2011-05-03）

#### 13.直系亲属

01\. 网友：在管理方面，阿段暂时还说得相对比较少。例如您规定直系亲属不能 呆在同一个企业、员工之间不准谈恋爱（这是网上看到，我相信这条是真的、我 觉得这里的员工是特指管理人员，对吧？）、不占客户便宜之类、丑话说前面的 一些具体的行为，有时间的话阿段可以写一下有关经营管理的博文，我觉得对于 真正关注您的人会更受益，毕竟投资这方面的东西，有心的人，是完全可以寻找 您和巴菲特以前在这方面的言论和行为的，谢谢阿段了，狂赞。**你的“更健康、 更长久、本分、平常心、诚信、消费者导向、做对的事把事做对、缺什么什么 最重要、原则性、纪律性、家庭观念”等等很多观点都已经深入到我的骨子里， 真的非常感谢阿段。**

**段永平：**&#x672C;来要睡觉的，下来拿个东西，看见你这么写，不得不回。我们公司绝 对没有过不准谈恋爱的要求！我不可能容忍这种不人性的东西的。别的以后说， 睡觉。（2010-03-26）

网友：辛苦了，不要打扰你休息呜呜，我我知道网上很多假新闻，对于新闻我一 直都是很认真地凭心去识别真假。呜呜……又跌了一个跟斗，阿段你看一下下面 这个 <http://news.sohu.com/20041120/n223091981.shtml>

对于我来说，我觉得直系亲属不能在同一企业，我觉得这也不是很人性，但是从 其他人的角度来看，这的确是公平，因为在直系亲属上有些事情，你就算再公平， 别人也会认为不公平，所以我觉得只是一个选择的问题，当然选择了在同一企业， 处理问题也许会变得复杂；然后我倒推到男女朋友上，觉得男女朋友会出现偏袒 的问题，同时我印象中好像听过你曾经说过亲属不在同一企业，所以我也就觉得 男女朋友也会是你曾经说的。对于丑话说在前面，对于这一条我也是没有任何其 他想法的，因为我觉得它就是对的。总的来说我觉得前面的两个问题都只是选择 的问题，想听听阿段你对这一方面的看法。

**段永平：**&#x6211;在国营企业呆过。研究生毕业后还去佛山一家企业干过。<br>

我知道如果头头脑脑的直系亲属在公司工作对公司的杀伤力有多大。我相信很多 人会有同感，如果你有这种经历的话。而且，如果我们允许的话，那公司里就全 是大家的亲戚了，时间长了就可能都是我的亲戚了，再时间长点我们就又都要再 去找工作了。

中国是个人情社会，我们这个规矩也帮我们的管理人员省了非常多的精力。---- 不然我们每个人都会烦死的，肯定经常一堆人让你帮他找工作。

**段永平：**&#x6211;晕，那不是假新闻，但中间少了个很重要的东西。谈恋爱没问题，结 婚以后就变直系亲属了，所以要变化。现在公司大了以后好像也做了一些调整了， 不过我不太清楚细则。好像是不在一个公司就行，在步步高里面可以等等。由于 我们各个公司的独立性非常强，只要不在一个公司里就关系不大。

**段永平：**&#x5475;呵，你是很有悟性的人，把我们这么多年的理解很多都放这儿了。

不准谈恋爱那条新闻怎么出的我没注意，也好像从来没有人跟我提过。谢谢你提 出来，让我有个机会说明。我们只对结婚后的情况作一些调整，结婚前是没人管 的。现在好像在不同公司就行了，细则我不清楚。（2010-03-26）

02.网友：假如作为一个公司的经营者也是自己很热爱的事业，当有亲人或者朋 友想进自己的公司工作，但是又没有条件，这该怎么办？有条件进入是不是应该 一视同仁吗？一切按照规章制度来执行。

&#x20;**段永平：**&#x867D;然你可能真是“举贤不避亲”，但公司其他同事可能会不这么看。我 认为除非是不可或缺，不然最好不要沾亲带故的，尤其不要沾亲。（2010-03-28）

03\. 网友：能告诉我一下 OPPO 公司的年龄结构吗？还有您的 OPPO 有亲属在里面 任职吗？

**段永平：**&#x5E74;龄结构我不知道，知道也不会说的。我们有明文规定直系亲属不能在 一间公司内，但不同公司好像可以。（2011-02-19）

网友 Z：新规定里面，不同公司也不可以了

**段永平：**&#x6211;问一下。老规定里没有考虑不同公司的情况，新规定可能加一个不同 公司可以，但可能还没讨论清楚，所以还没出来。

网友 S：这条规定是出于什么考虑呢，廉洁、防贪腐？这样好像严厉了点，我看 有些公司反而鼓励这个，算是留人的一种的手段。

**段永平：**&#x6211;觉得在我们中国文化的大前提下，如果允许直系亲属在公司的话，那 10 年 8 年后重要岗位基本上就都是那谁谁谁的亲属了，那企业怎么可能还有竞 争力？再说，有了这条规矩，我们同事们可是省了无穷多的麻烦啊，不然每个稍 有点权力的人都会背上很多人情债的。（2011-02-21）<br>

网友：要是您儿子很适合步步高，董事们都想让他在步步高干，他本人也愿意， 那您会不会只因为他是您儿子这个理由反对他进入步步高决策层？

**段永平：**&#x90A3;会违反公司的规定。（2010-11-01）

03.网友：您以前在一线管理的时候，“有关部门”“上级领导”托您给他们亲 属安排工作的话您怎么处理呢？即使是在步步高这样不受国资委管理的企业，效 益这么好，应该还是会招来很多这样的情况吧？

**段永平：**&#x53EF;能我们真是运气好，没怎么遇到过这种情况。（2011-02-22）

04.网友：您认为一个企业，采购等敏感部门都是大股东的家属这个事情，是否 会有些问题，这样的企业您觉得能投资吗？

**段永平：**&#x4ECE;好的地方讲那可能是大股东找不到他信任的别人。从不好的地方讲， 他有可能通过这个为自己牟利。我个人认为从长期而言，还是尽量不要用亲属的 好。很难单用这个作为是否投资的标准。（2011-02-21）

05.网友：大道可否谈一下你认为企业管理（或团队管理）的本质或重要的原则 有哪些呢？市面上关于管理的书和理论太多了，以下我通过阅读你的博客大概整 理了你对于“管理”的原则……

**段永平：**&#x5F88;久不在一线，没办法按你的要求穷举。你说的几条我确实在不同的场 景下都说过，但混在一起说似乎不是很合适。**一般来说，我总是努力去提醒人们** **不要做什么，但多数人最后总是会回到问我“那我该干嘛？”，大概只有很少** **的人看明白了，我们干过啥对你能干啥不会有太多帮助的。**（2019-06-19）

#### 14.目标管理（过程管理）

01\. 网友：为什么人要重因不重果？常人重果……谢谢！

**段永平：**&#x5927;概是享受过程的意思？管理一定是要重结果的，所谓没有目标就没有 管理啊。但结果的达成必须是“取之有道”，这就是企业文化起作用的地方。欢 迎大家使用“有道”。（2010-05-22）

02\. 网友：老段，步步高的愿景和核心价值是什么？有什么激动人心的目标吗？ 网友 Z：更健康，更长久是愿景； 核心价值观：本分、诚信、团队品质、消费者导向；去年加了结果导向。

激动人心的目标？很少会搞这个事情，如果有，那就是离更健康，更长久近了一 步

网友 D：没有“结果导向”吧？<br>

**段永平：**&#x33; 个公司有一点不同，记得好像 OPPO 有结果导向，其他的不记得了。 网友 T：您能展开说说什么是结果导向吗？

网友 K：段总以前解释过结果导向，就是好的企业文化下的结果导向，不是不择 手段那种的结果导向。结果导向是用来衡量过程的，属于正确地做事情的范畴。

**段永平：**&#x5475;呵，解释得好。这叫“做对的事情”和“把事情做对”。“结果导向” 在“把事情做对”的范畴。（2010-11-10）

网友 L：段老师，今天在 OPPO 官网上面看到价值观中有“结果导向”，是不是 找一切办法把事情做对的“结果”？我感觉只要过程对了，结果一定不会错的。 如果只考虑结果感觉有点短视。

**段永平：**&#x7ED3;果导向的意思当然不是只考虑结果，而是说不能不考虑结果，不然做 不好事情的人都会说“我做的都是对的事情啊，结果不好不是我的错嘛。” 你 要看懂了“做对的事情，把事情做对”就会明白的，结果导向指的是“把事情做 对”的范畴。（2016-05-17）

03\. 网友：企业文化我认为其中很重要的一点就是员工的认同，否则一切只是看 上去很美，而这个认同的过程中，公司本身的规章制度、行为以及中高层领导的 以身作则很重要，否则核心价值观也就只会沦为讽刺公司与领导的笑谈，还不如 没有。

**段永平：**&#x957F;期来讲，企业只会留下认同的员工。不认同的会自己离开或慢慢被淘 汰。（2010-04-04）

网友：走的或许不是不认同的，而是因为领导自己就没去执行。段总对结果导向 这种价值观如何看待，我个人认为这是不本分的行为，或者说是一种错误的引导， 容易让人错以为，为了目的可以不择手段。

**段永平：**&#x7ED3;果导向是过程管理的一个很重要的环节。长期而言没有结果如何来衡 量过程？但你注意，有好的企业文化前提下的结果不是不择手段的结果，不然违 背核心价值观的结果无论是什么都是不对的。（2010-04-04）

网友：恩，理解。我并不反对用结果去考核过程，只是感觉如果将结果导向写入 企业文化太俗，呵呵，也容易引起误导。比如说，为什么我们说“好借好还，再 借不难”是不本分的行为，就是因为这其中的行为是结果导向的。

**段永平：**&#x7ED3;果导向是一个如何把事情做好的范畴里的事，不然无法衡量或者说衡 量的难度非常大，具体无法实施。

“好借好还，再借不难”已经比不还要好多了。我确实曾经用过这句话来说明本 分的意思，是想说借人钱就该还，和以后要不要再借没关系。如果是因为想再借<br>

钱才还钱，那就是不本分，因为最后一笔可能就不还了。事实上确实有一些人还 供应商钱的速度是和是否以后还继续有生意有很大关系的。（2010-04-04）

04.网友：您关于“市场占有率是果而不是因”的论述，出现了很多次，我完全 接受。 但是 我在现实中看到的公司：管理中，都是量化式管理，具体说就是目 标，特别是数量目标的层层分解。有弊端（如段老师所说）但是在公司相对大了 之后，确是相对公平和容易操作的方法。 那么我理解现在的情况是：公司的董事会不会提出量化指标，但是会有其他形式 的对于管理层的评价，例如公司健康程度（也许还是要量化）等等 ；但管理层 对于中层管理的时候，中层对于基层的管理的时候，还是难免出现数量指标。一 旦出现量化的目标，特别是销售上，那么就很难避免出现些短期行为。这二者如 何平衡呢？就是说公司的长期健康发展战略和公司的中短期管理目标之间的如 何平衡呢。我觉得这是我的很大一个困惑，段老师能否指点一二。

**段永平：**&#x6211;不反对量化目标。事实上正确的量化目标是绝对必要的。（2010-10-18）

05\. 网友：段总想问你一下"结果导向"和"利润导向"是不同的吗？利润导向我知 道对企业来讲是不好的.但"结果导向"又是什么意思呢？&#x20;

**段永平：**&#x6BD4;如你可以设定消费者（长期）满意度为结果，那就和“利润导向”会 有很本质的差别。“利润导向”最大的问题是有时候会变成不择手段。

（2013-03-05）

06.网友：考核员工短期拉客户数量，必然导致盲目寻找不诚信商人。我认为应 该增加一个长效指标：培养的客户产生了多少销售额？引导业务人员更注重客户 的质量。

**段永平：**&#x5475;呵，指标的设定实际上要复杂很多。比如如果你用客户的销售额做指 标的话，可能就会有人和客户联手做假销售额。我记得以前有时候为了找一个好 指标要花几年时间。（2011-03-06）

07.网友：大道，我想再问一个愚钝的问题。在企业内部，设立标杆、评选优秀、 项目赛马机制等等区分机制，这些都是在利用分别心和人的争强好胜心。这个和 本分价值观可以共容吗？

**段永平：**&#x8FD9;和本分没有必然的矛盾。（2019-06-13）

08.网友：请问您怎么看企业文化中的用户导向，结果导向和追求极致？三者之 间有啥逻辑关系？

**段永平**：用户导向是一种利润之上的追求，简单讲就是想着用户到底要的是什么， 我们如何去实现。结果导向指的是要把事情做对。追求极致还是要把事情做对的 范畴。(2019-09-26)

#### 15.品质

01.网友：像您当年在一线的时候，产品做得不好您会砸样品（肝火上升)。&#x20;

**段永平：**&#x6211;什么时候砸过样机？你心目中的“老板”就是这样的？（2010-11-29）

网友 H：海尔张瑞敏砸过。

&#x20;**段永平：**&#x4ED6;当时是不得已为之，为的是强调品质的概念，同时也说明当时他们的 品质体系还有很大问题。品质部长是有一票否决权的，没道理会为了不合格的产 品打电话问老板是否可以卖。（2010-11-29）

网友 Z：从这里看到的。看来又看到了不实的报道，某位王总前段时间倒是真砸 了辆车，我觉得对产品的质量要求严格是好事。“老板”也是人啊！总不能啥时 候都一个样吧。

网友 H：对啊，品质部长敢砸才是正常的品保体系。

**段永平：**&#x6655;死。OPPO 的东西出来时我已经离开 CEO 的位置好多年了，这个编得 太离谱。 简单讲，一个公司如果还需要靠老板砸产品来提醒员工注意品质，那他的质量体 系水平就确实还处在比较初级的阶段。（2010-11-29）

网友 Z：完全赞同！一个好的老板一定是建立一些体系去执行公司的目标，然后 成为“懒人”，成为甩手掌柜，主要考虑战略方向的事（重要但是不紧急的事）， 不然公司搞得越大，自己越累，这种人不是拥有财富，而是被财富所拥有。我还 真见过不少这种人，事无巨细，亲力亲为(诸葛亮）。不过回到最初的观点，我 认为正因为您已经建立好一系列的体系，自己可以甩手了，才拥有了更多自由的 时间，身随心动，越来越健康。这也是作为后辈十分敬佩您的一点。这个比喝神 马神马水要难好多。

网友 Y：好奇地问一句，年轻的时候干没干过？

**段永平：**&#x5E94;该没有。（2010-11-30）

02.网友：大道您好，前面有个帖子说到本分文化，有个例子就是你们公司刚开 始的时候有批发商拿你们的产品然后你们自己贴了地址条，后来批发商客户找上 门来了这事。批发商的角度当然是不希望让客户知道自己的货源了。你们是悄悄 放的吗？怎么衡量得失的呢？&#x20;

**段永平：**&#x90A3;时产品质量法还没出来，国家还没有硬性要求厂家必须在产品包装上 打上地址。当时我们只是希望万一机器出问题时用户能找到我们，和质量法要求 的意思不谋而合。（2019-06-20）

03.引用：本色英雄 《赢周刊》采访全手记<br>

&#x20; 问：你所说的基本功包含什么？

&#x20;**段永平：**&#x4F01;业的基本功，其实往简单说就是产品的开发能力、质量的控制能力、 市场的动作能力、人力资源的管理能力等等。张瑞敏说过一句话，在大家都想到 的事情上，他与别人的区别在于他真的去做了。比如售后服务，他确实认认真真 地去做了。你说邓亚萍有什么了不起，不就是练了 10 年吗？可你练练试试！只 要一天不练，水平就会下降一点，她就不能常胜。 具体地说，产品的质量怎么搞好，这就是基本功。比如我们产品的流程，一叠厚 厚的文件你看着都会累得生烦，可我们一个层次一个层次去做，究竟产品的质量 最终怎么出来？有人说靠的是检测，其实不然，产品的品质不是检验出来的，也 不是生产出来的，而是设计出来的。做好品质其实很难，质量不是开一个会，引 起一套管理系统就可以了。而是日复一日，年复一年地做。我们每年光是请品质 管理顾问就花费数百万元。（2004-01-19）

#### 16.股东利益

01\. 网友：什么样的企业文化是维护股东利益的企业文化，这个概念我一直有点 模糊，万科、格力、招行的企业文化似乎比较简单直白，不知道算不算好的企业 文化。

**段永平：**&#x7EF4;护股东利益指的是维护股东的长远利益，这里的长远指的是企业的整 个生命周期，**因为所谓的股东利益实际上就是企业未来净现金流的折现**。

（2013-03-26）

网友：难道不包括短期利益吗？还是短期和长期有效结合？还是为了长期牺牲短 期？总觉得段总讲企业的问题用于人生也已可以的。

**段永平：**&#x957F;期利益中，本来就包括不损害长期利益的短期利益。（2013-03-29）

02\. 网友：请问您会认同马云的价值观——“客户第一、员工第二、股东第三” 吗？

**段永平：**&#x6211;可以接受他的意思。我们公司认为这三者关系是平等的。大家是从不 同的角度去说这个问题。（2010-11-13）

03\. 网友：马云讲过：客户第一、员工第二、股东第三。尽管有些投资者一度认 为这种方式可能损害股东的利益，但事实证明，只有把客户放在第一位，股东获 得的利益才是持续而稳健的。大家怎么看？&#x20;

**段永平：**&#x53CD;正倒过来摆是肯定不对的。（2010-05-20）

网友 Z：不觉得股东第一就肯定错了。最终企业的一切都是为了盈利，而这些盈 利都是为管理层的老板即投资者的利益的增加。否则的话，这些管理层对股东来 说就是噩梦，至少说对长期股东

**段永平：**&#x4E5F;许你该看看 good to great 这本书，你才能明白马云是什么意思。

（2010-05-20）

网友：我认为股东、客户、员工应该是没有那重那轻的，它为是相互的关系。做 好任何一个另外两个也不会差，相反做不好任何一个，另外两个也不会好。

&#x20;**段永平：**&#x5475;呵，我也是这个观点。其实马云的观点也没什么区别，只是说得角度                              不一样。（2010-05-20）

网友：我去年买了 YHOO。我现在有个问题：我对阿里巴巴集团对于大股东的态 度和处理与大股东关系的方法，感觉多少有些不确定性。欢迎段总批评指导，

**段永平：**&#x6CA1;觉得阿里巴巴集团对大股东的态度有什么问题啊。我倒是觉得他们的 态度是上市公司里最好的。因为大股东真正需要的是公司能好好地专注在公司的 发展上，而且大股东其实只需要这一条就够了。（2010-05-24）

04.网友：在股东利益与公司实际控制人利益出现冲突的时候，股东的利益是否 有保障？

&#x20;**段永平：**&#x8FD9;个问题没太看懂你为什么这么问，当然是有的有，有的没有啊，企业 文化不好的企业没保障的概率大得多。（2018-06）

05.网友：参照巴菲特的 8 项投资标准，不以所有的股东利益而是以大股东利益 为先的企业，我们能指望什么？

**段永平：**&#x4EC0;么叫以大股东利益优先？股东利益只能通过投票决定。还有就是如果 你不喜欢，决定公司不以你的利益优先的话，你是应该卖的，不然你就是觉得他 们会以股东利益优先，否则就矛盾了。有些大股东利用控股来为自己牟利，这种 股票什么故事最好远离。

另外，股东利益优先和股东第 3 并不矛盾，是不同角度。（2010-05-28）

06\. 网友：联想柳总讲：现在很多欧美上市公司的管理者缺乏主人翁意识，短视， 没有长期规划，不会为股东的长久利益考虑。

**段永平：**&#x8001;柳这说的是啥子话嘛？好像中国的上市公司主人翁意识很强似的。哪 里的上市公司都是烂的比好的多啊。下次见他要提一提，呵呵，好久没见他了。 公司可以这么说，国家不可以。（2010-04-07）

07\. 网友：有个人问董明珠，为什么最近格力的股票跌跌不休，她说我只对我的 投资者负责，不对投机者负责；她给这几者的排序是：1，消费者，2，员工，3，<br>

社会责任，4，股东；格力一线员工年薪 3 万，如果哪个员工或家人得了绝症， 医药费就算几十万也能解决。

**段永平：**&#x8463;明珠对企业的理解非常好。（2010-05-27）

08.网友：（步步高企业文化，类似“消费者第一，员工第二，商业伙伴第三， 股东第四”吗？）

**段永平：**&#x524D;面三条是要做的事情，最后一条是我们的观点，就是说，我们认为做 到了前面三条，股东回报应该不错。二十多年前我们写下这一条时就是这么认为 的，迄今依然如此，结果似乎也正是如此。 第五条非常不类似的，我们不排序是因为我们认为也许不该排序（2019-03-10）

09.网友：在《基业长青》里面提到过，企业应该平衡员工， 股东，消费者和合 作伙伴的利益。最近在看一些资料，发觉有些企业对合作伙伴比较 “压榨”和 manipulative（善于操纵人的），但是也在比较长 (10 多年)的时间里面做得不 错。这个该怎样理解呢？

**段永平：**&#x6BD4;如微软？第一，基业长青说的不是充要条件；第二，有时候 10 多年 还不够长，我们邻居都三代了还混着呢。（2014-04-14）

&#x20;10.网友：企业文化成熟后会不会出现心理优势的现象，导致与外围的、系统之 外的人沟通时（特别是尚未证明自己成功过的人）出现沟通不良？

**段永平：好的企业文化会大大提高沟通的效率**。（2010-10-15）

引用: 一个人通常只能说出心中所想的 80%，但对方听到的最多只能是 60%，听 懂的却只有 40%，结果执行时，只有 20%了。你心中的想法也许很完美，但下属 执行起来却差之千里，这是由＂沟通的漏斗＂造成的，因此你必须采取适当的方 法，去克服这一＂漏斗＂现象。

**段永平：**&#x72;epeat!（2011-11-07）

\-----------------------------------------------------------------

&#x20; 网友：方丈理解的治理结构和企业文化要怎么评估是好是坏？

&#x20; 不明真相的群众:

1、公司是不是在做正确的事情？是否在用正确的方法做事情？

2、能不能保证由合适的人来管理公司。会不会出现由不合适的人来管理公司的 风险？或者一旦出现由不合适的人管理公司的风险是否可控？ 3、在公司的经营活动中，员工的协作，是否取得了超过单个员工能力加总的效 果？ 4、在股东的利益与公司实际控制人的利益出现冲突的时候，股东的利益是否有 保障？

**段永平：**&#x80FD;不能保证由合适的人来管理公司。会不会出现由不合适的人来管理公 司的风险？或者一旦出现由不合适的人管理公司的风险是否可控？

&#x20;没有绝对的办法来保证，但如果选人时先看合适性（价值观匹配）会比只看合格 性（做事情的能力）要好得多，选中合适的人的概率要大得多。许多公司挑人时 是首先看合格性的，概率上就容易出问题，许多公司本身价值观就有问题，选人                                          自然就困难了。

&#x20;不合适的人管理公司的风险很多时候是难以控制的，结果公司很可能就会垮掉。 企业文化比较好的公司往往会更快发现问题，所以纠正的机会会大很多，存活下                              来的概率就会大很多。

在公司的经营活动中，员工的协作，是否取得了超过单个员工能力加总的效果？ 这个当然，想不出不协作效果更好的例子，哪怕你是个作家，平时也是有人帮点 忙才效率高的吧？

&#x20;4、在股东的利益与公司实际控制人的利益出现冲突的时候，股东的利益是否有 保障？这个问题没太看懂你为什么这么问，当然是有的有有的没有啊，企业文化 不好的企业没保障的概率大得多。（2018-06-30）<br>

## 五、消费者导向

想起一个故事，很久以前有个记者朋友来我这问我一个问题：“为什么我采访了 好几家企业，他们都说自己是电话机行业里的第二？到底谁第一呢？”我说，我

们知道但不说，因为消费者不关心这个问题 ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)。（2010-06-08）

#### 案例 1: iphone 4s &#x20;

**段永平：**&#x69;phone 4s 发售第一天就跑去排队买了一台，出来时碰上国内某著名公 司的一个朋友，然后去他们公司看了一眼，回车上时居然把 iphone 的面给摔裂 了。今天有空去苹果店换了一台，本来还想给太太也买一台的，发现 iphone4s 已经卖空了。现在要买的人必须晚上 9 点上网订，第二天去拿，稍微晚点恐怕就 要等第二天了。**有意思的是，我先说要买一台，苹果店的人告诉我今天没了，然 后我说换一台行不，结果换一台有货。iphone4s 这个卖法，这个季度的财报要 创纪录了。**

\-------------------------------------------------------------------

结果今天晚上去网上买，9 点 pm 准时开始登陆，选 palo alto（ 帕洛阿尔托）的苹果店，9:15 才进去。白的 64G 的 AT\&T 的已经没了，到大概 9:40pm，所有的都卖光，还想买的只能等明天晚上上网订了。真猛啊！苹果的销 售系统一直在改进中，现在至少不用去排队了。

&#x20; 网友：这个有点儿不明白，为什么要买的需要等一天，要换的却有货呢？是因为

要优先保证退换的人可以及时拿到吗？看来我是被“教育”得很“好”的消费者， 如果我要去换，人家告诉我和买的人享受同等待遇而不是要等货源宽松再给我， 我就谢天谢地了，如果说我还有优先权，那真是惊喜啊。

&#x20;网友Ｑ：我还是没能明白。是今天有余货但不卖了，还是把今天最后一名新客户                                  的货换给了老客户。

&#x20;**段永平：你不明白没关系，反正大多数人或公司也不明白，说明你很正常哦。**

（2011-10-23）

网友Ｍ：意思是：段先生是先买 iphone 的客户，现在出了问题，自然要优先服 务，那就是可以换的意思。但是如果你要买，肯定是排在很后边等待，今天的货 就轮不到你啦。

&#x20; 网友Ｑ：想明白了。他们是真正把消费者放在第一位的了。

&#x20; 网友Ｂ：苹果这种强大，是一种持续性的竞争能力吗？

**段永平：**&#x96BE;道不是吗？（2011-10-21）

#### 问答

01.网友：您做生意的时候，会不会和您的对手比较，或者您会选一个公司做您 们的榜样或者追赶的对象吗？

**段永平：**&#x6700;重要的是用户的需求或叫体验，其他都是浮云。（2013-07-04）

网友：是不是所谓高科技公司也只是满足顾客的消费趋向。最终是要傻子都明白 东西。

**段永平：不知道什么是高科技公司。在消费者眼里其实没有这个东西   。**

（2010-10-30）

02\. 网友：苹果年内或成美国市值最大公司……

**段永平：**&#x6211;也常常想苹果现象， Jobs 真是个绝顶聪明的“消费者导向”大师和 marketing 大师，他们在产品上做的很多取舍是让人叹为观止的，同行其他人没 人敢做他们做的一些事。（2010-05-25）

网友：苹果 5 出来了，配制不好，苹果说他们不拼硬件，那他们拼软件吗？ **段永平：体验**（2012-09-16）

03\. 网友：企业以消费者为导向是做消费者喜欢的产品，以市场为导向是做市场 喜欢的产品，市场是谁？是批发商么？段总能否说说市场导向与消费者导向的区 别是什么？

**段永平：**&#x4ECE;字面上理解，“消费者导向”指的是企业在做产品决策的时候是基于 考虑产品最后的消费者的体验的。“市场导向”看上去是基于现在是否好卖的。

很多时候这两者区别不是那么明显，因为好卖的东西往往就是消费者喜欢的。但 消费者往往只是根据现有的产品来决定自己的喜好，所以经常会显得短视，如果 企业总是“市场导向”的话，则陷于短视状况的概率就会相对大些。而总是注重 消费者体验的公司则往往会眼光放得长远些，出“伟大产品”的概率就会大很 多。

过去的国营企业往往基于计划经济，所以连“市场导向”都做不到。绝大部分企 业最后大概只能到达“市场导向”的地步，因为大部分企业都是“利润导向” 的，而要做到“消费者导向”需要有“利润之上”的追求，或者说需要能够放弃 一些短期利益去做出最好的产品去满足消费者真实的需求。其实有些企业或多或 少也是有“利润之上”的追求的，但能力上还没有达到做出伟大产品的地步，所 以这类企业看起来可能没有那么强大，但生命力却往往会比人们想象的强很多。<br>

**只有极少数的企业是真的在骨子里具有“消费者导向”同时又具备实现“消费 者导向”的能力的，这些公司最后往往会被人们称为“伟大的公司”。没有“利 润之上”的追求的公司不大会真的有“消费者导向”的文化，最后也不大可能 成为“伟大的公司”。具有“利润之上”的追求的公司往往多少具有了“消费 者导向”的文化或叫基因，在某些条件下就有可能会慢慢变成“伟大的公司”。 公司是由人来经营的，所以“伟大的公司”也不是一成不变的，时间有可能会 改变一些东西，让一些“伟大的公司”变回到不那么伟大。（2013-04-07）**

04.网友：Apple 是消费者导向的典范。以前很多人说乔布斯不在意或不尊重消 费者，这是对 Apple 最大的误读，我认为老乔最大的贡献恰恰是建立了一种真正 消费者导向的文化。老乔们不在意的只是短期市场的看法。

**段永平：**&#x82F9;果确实特别在意消费者体验。（2013-04-08）

网友 K：很多伟大的公司追求的是做消费者体验最好的产品，比如苹果、茅台； 定位做中低端市场的公司好像很难出现伟大的企业，因为中低端市场很难在成本 和消费者体验上达到一个平衡；但像万科也不是属于高端别墅之类，是不是做针 对特定消费者让这类消费者感觉公司的产品或服务性价比最高，这样才是最佳的 消费者体验；但是还是没完全想明白。&#x20;

**段永平：**&#x6700;好的产品或最好的产品体验本来就是指的一定范围内的。

网友 K：那苹果瞄准的是哪类客户群呢，没想明白，因为苹果是财富各个层次的 人都喜欢，而且 4000-5000 元的价格在有经济基础的地区都有能力买；似乎很难 描述苹果的用户群，苹果是怎么定位自己的消费群体的？

**段永平：**&#x4E2A;人认为其实苹果只是努力把自己的产品做好，然后卖一个合适的价钱 而已。至于谁会最后落在喜欢苹果产品的范围里实际上看起来是个运气问题。 “看起来”是个运气的东西经过很多年的积累后实际上就“看起来”有点必然 了。苹果有今天实际上是经过 30 多年的积累而来的，虽然爆发的时候“看起来” 有点运气。

网友 Y：能做到“市场导向”已经很不错了，可以做到“消费者导向”，并坚持 下来更加是了不起！因为要做到“消费者导向”，是要牺牲很多短期利润的，甚 至会导致公司因此（缺钱）而经营不下去，很多时候“优币会被劣币淘汰掉”所 以要有心有力的公司才能做到“消费者导向”，并最终成为一间“伟大的公司”。

**段永平：**&#x80FD;坚持下来确实非常不容易，苹果也是几十年后才有今天的。

（2013-04-08）

05\. 网友：诺基亚品种多样和你以前说的消费者导向不一致吗？

**段永平：**&#x8BFA;基亚需要用很多品种才能做到消费者导向，而苹果用一个品种就做到 了，这里面功夫差很多啊。（2011-02-08）<br>

06.网友：国产手机的售后服务才是黑幕重重。各个品牌的售后基本都是外包给 某个公司，这些公司为了利润最大化，完全没有道德底线可言。这对品牌的伤害 会很大，很奇怪，厂家是完全不知情吗？

**段永平：别人不知道，我们的服务绝对是我们自己的**。（2013-03-17）

07.网友：格力的售后服务糟透了。我家在杭州，今年夏天天天 40 多度，格力空 调坏掉了，我天天打电话催，格力客服电话 1 小时能打通一次就不错了，21 天 后空调才修好。从打电话的热度可推测，格力的质量是多么的差，有多少人的空 调在最热的时候坏掉了。我当时砸掉空调的心都有啊，热的根本睡不着觉。打死 我，我也不会再买格力的产品了。

网友 S：是的，我也感觉到格力的服务还有很多需要改进的地方，一到旺季经常 出很多问题。

**段永平：**&#x32;1 天有点过分啊，是个案吗？大夏天的杭州 21 天没空调，不容易！

（2013-09-05）

网友 S：应该不是个案，因为工作的关系，最近几年多次找格力的售后维修空调， 需要更换的零件稍微大一点的比如电路板、压缩机都没有现成的，要向公司申请 调货，有时候两三天能到，有时候要等一个星期，几年前这样，现在还是这样， 一直搞不懂为什么这个环节一直没改进，空调坏的时候一般是大热天，维修速度 对用户来说非常重要。 另外我接触过的格力专卖店的专业化程度、服务水平都很一般，基本上都是很 “个体户”的感觉，同样是经销商开的加盟店，远比不上卖梳子的谭木匠。

**段永平：没做过这种大件，不好评价太多。当年曾经想过空调的生意，就是想不 通怎么才能做好安装和售后才放弃的。我当年提的售后服务条款里有一条，叫 “立等可取”，当时修不好的可以临时给一台先用着，大件这么做可能有点困 难？以前我在这里说过一个例子，我去苹果店，说买新机没有，但坏了可以换 个新的。空调似乎更应该如此啊，大热天要命的。（2013-09-06）**

网友 S：品类很少才有可能做到苹果那样的吧，你们公司的产品品类不少，售后 不可能做&#x5230;**“**&#x7ACB;等可&#x53D6;**”**&#x5427;？作为用户来说，**“**&#x7ACB;等可&#x53D6;**”**&#x542C;起来很舒服啊。

**段永平：“**&#x7ACB;等可&#x53D6;**”**&#x7684;意思就是尽量减少顾客的不方便，包括提供一个暂时替 代的产品，并不是所有东西都能马上好的意思。（2013-09-07）

08.网友：我在国内一个小货车企业的售后服务部工作，虽然公司口口声声说客 户至上，但是其实公司每年对售后部各项预算卡得很严。而且一旦用户出现类似 烧车等严重质量问题，基本上是看用户闹得厉不厉害来决定最终赔偿的多与少。 我相信国内大部分企业售后服务其实都是很劣质的，而且国内消费者维权似乎很 困难。总感觉公司对售后服务部的要求就是尽量花最少的钱去办最棘手的事情， 然后公司可以把更多的资金投入到研发和营销上面，只要东西卖出去就行。这些<br>

东西都让我心里一直都很不很不舒服，但好像发现即使是自己如果当了售后服务 部的负责人也根本没法改变这种现状。

&#x20;我的问题是：您当初在作为实体企业经营者的时候，对售后服务的原则和要求是 什么呢？或者说您认为一个实体类企业售后服务应该怎样做能够更好？期待您                                                     的回复。

&#x20;**段永平：**&#x8BF4;什么不重要。不好意思，前面只看到你的问题的前面部分。**我理解的 售后其实是销售的延伸，是产品承诺的一部分，企业有义务解决承诺期内产品 的所有问题，小霸王学习机的“一年包换”就是基于这个原则定出来的（现在 产品周期小于一年，这条可能不再适用了）**。（2019-04-27）

09.网友：今天安装了一个鲁班大师在补丁更新的时候 360 竟然提示会导致系 统崩溃！感觉太霸道了。我就真不信！结果系统好好的速度还更快了。想想 Q Q 群和好友那些天天都要用 360 的话我还有卡巴斯基呢。尽管他以前帮我杀了 些卡巴斯基不能杀的恶意程序。我还是把他给卸载了。卸载 360 杀毒的时候竟

然让我填问题回答感觉有些小孩了。像诺亚传说防外挂一样呵呵！依次卸了 3

60 杀毒 360 安全卫士 360 保镖。这下电脑清净了！企业的事情搞不懂 不过 本身提供服务的企业太霸道了我是接受不了！&#x20;

**段永平：**&#x80FD;真的卸载就不错了。以前装过一个叫 3721 的东西，装完就发现不 对，马上想卸载却无论如何找不到卸载的办法，最后只好重新装了一次机，腾 讯要厚道些，我装过 3 次 QQ，都是一装就发现被加了很多东西，然后我就卸载 了，不过好像有一次也有点什么卸不干净的，但没认真查。以前装过一次迅雷， 也是一装就被强行装上了很多东西，非常不舒服，不过卸载很方便。**我也不太 明白为什么我们这么多企业对自己那么没信心，非要做那么短视的事情。**（20 10-11-06）

10\. 网友：贵公司的企业文化中有两处不能领会:

·通过科学、严谨的市场调查，充分研究消费者的需求，一切工作须以消费者的 真实需求为原点而展开。( 为何不直接写"消费者需求"，而写成"消费者真实需 求" ？ )

·在公司内部的日常工作中，要坚持内部客户导向的原则。( 何为内部客户？ ) 望赐教!

**段永平：**&#x5475;呵，玄乎地讲就是用心。用户的需求不一定是问出来的，经常是自己 体会出来的。iphone 就是一个典型的例子。

1、大概是为了把消费者需求和客户需求分开。客户需求有时候和消费者的真实 需求并不完全重合。

2、内部客户大概就是工作中要打交道的所有人。（2010-10-24）<br>

11.网友：很佩服段哥对消费者导向及平常心的理解，有点困惑的是国内有些自 己感觉挺好的企业似乎很看重并且一直在强调自己的市场占有率，这样的企业段 哥会不会直接 pass（淘汰）掉？好像马云也说过要阿里要超过沃尔玛，是不是 不比较只专注于消费者会好一些？

**段永平：**&#x8BB2;本身并不是问题，作为一个大的愿景讲出来没什么不好，尤其是企业 初期，有一个大的愿景非常重要。差别在用什么办法去达到。用消费者导向去达 到愿景目标是本手。（2010-10-24）

12.网友：现在很多企业的目标是做行业的第一名、做行业的霸主，但感觉段老 师在谈到步步高时从来没提这中口号，而是谈到做出消费者喜爱的产品，也是段 老师常讲的消费者导向。这两者有什么区别吗？

**段永平：**&#x597D;像区别还挺大的，一个是因，一个是果。

“行业第一”好像对消费者而言并没有实际意义，很少有用户是因为看到你是 “行业霸主”而买你东西的。所以总的来讲，我们最关心的只是消费者体验，而 不是行业排名，不然可能就容易犯一些很奇怪的错误，比如发动价格战等等。也 许这也是我们“胸无大志”的体现吧。

不过，貌似我们坚持做的很多产品最后据说都成了“行业第一”（其实没认真考 证过，没有权威数据），比如最早的小霸王学习机，后来的步步高 VCD、DVD、 电话、复读机、点读机等等。手机恐怕需要的时间会长很多，对手们很厉害啊。 想想有一天可能要和苹果或诺基亚 PK 一把还是很兴奋地。（2010-10-15）

13、引用：《我也是苹果股东》 2017-03-21

独家专访段永平——“苹果无法在中国战胜我们”……

**段永平：**&#x6211;要觉得我们能干倒苹果，我怎么会买苹果股票呢？我肯定不会说这话 的！再说，**我们公司不会把追求干倒谁过作为目标，也不会把市场份额，销售** **数量及排名作为我们的追求目标的。我们追求的就是改善用户体验，做出最好** **的产品，其他的都是水到渠成的事情。**

\---刚刚看到一篇文章的标题，很是无奈。（2017-03-21）

&#x20; 网友：我也看到这篇文章了，一看到标题就知道这根本就不可能是您说的话。以 为您没有接受采访，但看到了文章里这句话：“说这些话的人都疯了。当有人讨 论信息不对称时，实际上其内心深处认为消费者都是傻瓜。”觉得像是您说的话。                                       您是接受采访了？

&#x20;**段永平：**&#x662F;因为“拼多多”接受了采访，说的都是“拼多多”，顺便问了一下我 们公司的事情。然后就凑出这篇文章了。很无语，但错在自己。已经多年不接受 采访了，本来警惕性很高的，没想到还是掉坑里了。以后绝不再接受采访了，不 管什么情况！老巴很久以前就有规矩， 只接受电视采访，非常有道理啊。

（2017-03-21）<br>

14.网友：当你认为长期来说消费者会知道这个产品的价值的。但是短期现在这 个时候消费都又不认同的情况下您是怎样平衡的？

**段永平：**&#x77ED;期内不是所有的消费者认同，但总是有认同的。

15\. 网友：段总认为消费者是理性的，我却认为中国的消费者有些是不理性的， 特别是在一些需要一点专业知识的产品上，从持不同意见中我从段总哪里也学到 不少知识。

**段永平：哪里的消费者都是一样的。我们认为消费者是理性的意思是从长期来看 的，套用一句俗语叫“童叟无欺”。也就是说无论消费者眼前是否理性，我们 都一定要认为他们是理性的。不然的话，你经营企业就可能会有投机行为，甚 至会有不道德行为。（2010-03-26）**

16\. 网友：段总您认为顾客是理性还是非理性的啊？您永远做的是满足顾客。还 是让顾客忠诚于公司产品？

**段永平：**&#x957F;期而言，消费者作为一个群体是理性的。我们无法让消费者“忠诚于” 我们公司的产品，但我们应该尽能力去发现消费者的需求并尽量满足。所谓的 “忠诚度”实际上应该是消费者长期的满意度的积累。所以长期满意度越高则 “忠诚度”越高。要积累很高的满意度是需要很长很长的时间的，但破坏则只需 要很短很短的时间。（2010-10-29）

17\. 网友：常常提到好的公司的企业文化一般是“以消费者为导向”，但是又常 说我们不能太在意市场，太在意华尔街和别人的看法。别人和市场的看法也算消 费者的看法吧？我总觉得之间的界限好像有点模糊，不太清晰。比如假设苹果以 后出大屏手机算是符合消费者导向呢？还是太在意市场的看法了？希望段总能 指点。

**段永平：**&#x8BF4;不在意的是指应该不在意短期行为或期望。比如不在意华尔街的看法 指的是不在意华尔街短期的看法。短期的看法是投票器，长期才是称重器。比如 华尔街希望苹果出低价机多占领市场份额，而苹果想的是做最好的产品，所以短 期就让华尔街失望了。（2013-03-07）

18.网友：那段大哥您经常也会拿 bbk（步步高）和那些帝国主义的老牌劲旅去 对照吗？看了您这条发言后，我拿自己的小公司和同行的巨头比了比，觉着我们 的公司纯粹就是一清二白，都快没有做下去的信心了。

**段永平：**&#x5982;果你的目标是打败谁谁谁的话，那确实很可能难有做下去的机会。但 如果你能找到你能满足的细分市场的话，你也许就有机会。**几乎所有大公司都是** **从小公司起来的，最重要是你能有消费者导向的观念**。（2011-02-21）

19.网友：看到 Jobs（乔布斯）要教用户如何拿住手机，还有官网上放置竞品信 号的视频，我们也会说“不本分”。本分还理解不深，不本分的事还是有不少案 例可查实，公司内部也在做不本分案例的总结。反过来想想，当时耳机有问题，<br>

也想是不是要在官网发个公告，告诉用户该如何正确使用耳机，来减少耳机损坏 带来的返修。求责于己，还是应该提高产品的品质。

**段永平：**&#x5012;是没觉得 Jobs 有什么不“本分”，只是觉得他说的“只有 0.55%的 客户打电话抱怨”这句话很刺耳。他们这么有影响，无论多少客户有意见，首先 还是应该道个歉吧？天下不知道有多少人羡慕他们出点问题就要被全世界关心 的影响力。（2010-08-08）

20.网友：最近对“消费者导向”有点困惑，不知有好书推荐否？

**段永平：这东西还需要看书？最通俗的说法就是自己不喜欢的东西别拿出来卖。** 如果你觉得这句话对，你根本不需要看书，如果你觉得不对的话，其实看啥书都 没用。 当然自己喜欢的东西未必就一定好卖，那是因为经常没办法让别人知道你喜欢的 原因，或者是因为 marketing 费用太高，或者就是因为产品教育太难（比如有些 工程师喜欢的东西就没办法让普通老百姓喜欢）。（2012-04-28） &#x20;

21.网友：如何敏锐地发现用户需求，而且是真实的潜在的需求，有什么诀窍保 证做这个正确的事情呢？

**段永平：**&#x53D1;现用户需求的诀窍可能是总是站在用户的立场想问题。（2010-03-30 ）

22.网友：步步高教育电子最近推出了 imoo 学习手机，广告在网上也发出来了。 对于学生，确实是需要有一部手机，尤其是中学生（周边有些家长会把自己淘汰 的给孩子用，经济条件好些的会给孩子买一部新手机），但对于家长，会担心孩 子把时间花在游戏和视频上，影响学习。步步高从学生这个细分领域切入，主打 学习，应该还是能打到家长的痛点上。但感觉量较难起来，不知道段总怎么看这 个事情？

&#x20;**段永平：**&#x91CF;本来就不是我们追求的东西，重要的是用户是不是有这个需求。

（2016-06-30）

&#x20;网友：我想请问不追求量而关心用户是不是有这个需求，这个量是指用户对产品 的需求量还是公司产品销量（市场占有率）？是指只要用户有这个需求，不管需 求量不是很大（市场很容易饱和）都会生产产品以供应用户需求？还是只要用户 有足够的需求量，就会出好产品而不怕销量上不去？&#x20;

**段永平** ：不追求利润不等于不要利润。企业不赚钱就是罪恶啊。不追求量的前 提是你认为这个市场有需求，就是有量的意思，不追求量的意思实际上是不为了 追求短期的量而做不对的事情。只要坚持做对的事情且做对了，量自然就有了。

（2016-07-04）

#### 案例 2 :OPPO 蓝光机 （2011-11-02）

**段永平：刚刚收到公司同事的 Email，放上来分享一下。弟兄们干得真是不错啊！** &#x20;

我一直觉得 OPPO 的企业和产品文化有很多地方和苹果很相近，也许有一天 OPPO 也可以像当年 SONY 改变世界对日本产品印象

那样改变世界对中国产品的印象。希望在 21111112 之前能看到这一天哈。 Anyway，希望不久我们的智能手机也能得到这种评价哦。（2011-11-02） [http://www.pcmag.com/article2/0，2817，2395518，00.asp#fbid=awOGXmWmHN2](http://www.pcmag.com/article2/0%2C2817%2C2395518%2C00.asp#fbid%3DawOGXmWmHN2)

\---------------------------------------------------------------------

Tony，阿段：

今天 OPPO 的蓝光机得到了 PCMag 杂志的 Reader’s Choice 读者选择奖。之前我 们并不知道 PCMag 在举办用户投票，也从来和这家杂志没有任何联系。PCMag 是 美国最大的历史悠久的计算机专业杂志，最近几年开始覆盖家用电器。有意思的 是 PCMag 专门把 OPPO 与苹果相比，引用数据来表明 OPPO 的用户满意度、质量、 推荐意愿都要比苹果好。它开篇写到“Apple doesn't make Blu-ray players， but if it did，we have a feeling that OPPO Digital would still beat it in customer satisfaction.”（苹果不生产蓝光机，即使它生产，我们认为 OPPO 仍然会在用户满意度上击败它）。最后写到“This manufacturer of high-end Blu-ray players received satisfaction scores that would make even Apple jealous.”（这家公司的高端蓝光机所收到的用户满意度得分让苹果也嫉妒）。

今天中午我们聚了餐来感谢员工。另外，想让你们知道，每次发布新机时，我们 也是总要留一定的数量的新机不卖来保证售后服务，苹果也许是向 OPPO 学的（玩 笑）。

&#x20; 敬礼！

&#x20; Jin

01.网友：另外，想让你们知道，每次发布新机时，我们也是总要留一定的数量 的新机不卖来保证售后服务，苹果也许是向 OPPO 学的（玩笑）。

\---------------------

奇怪了，这是您同事给您的 Email 里的话吗，难道您本来不知道吗？

**段永平：**&#x6211; 10 年前就不在一线了，具体大家怎么做我怎么可能知道？除非有时 找我聊天或讨论啥事时我会知道一点。（2011-11-03）

02.网友：OPPO 目标客户非常明确

**段永平**：OPPO 和 APPLE 其实有很多相同的基因，这也是我最后能看懂 APPLE 的 原因之一。（2011-08-07）

03.网友：魅族这个企业有点意思，有点像中国的“APPLE”，向 APPLE 学习比较 彻底的。只是不太明白只有一款机（先是 M8，再是 M9），具然主要靠专卖店来 销售（偌大一个专卖店只买一款机）。并且机器也只有两千多元，也没有软件商<br>

店来赚钱，也不打广告。不知道究竟怎么赚钱？现在估计还在赔钱。长期靠什么 来赚钱？请段总指点一下。

**段永平：**&#x4E0D;了解你说的这个公司。不要随便拿“苹果”来比较，我个人以为大概 很多年都不太可能见到一个所谓的“中国的苹果”出现，因为我们还没有一个出 “苹果”的大环境。

当然，当人们买“苹果”四代的时候，我们也是可以买四袋苹果的。

苹果把用户导向真正做到了极致，他绝对是我们制造业学习的榜样，但同时也非 常有可能成为我们的噩梦。

千万别觉得我悲观，我只是比较客观而已。

我们公司未来很多年的竞争对手其实就是“苹果”，如果我们能够活很多年的 话。

我们其实很幸运有“苹果”这样的对手，虽然我们现在还不能被其称为“对 手”，但在局部细分市场上我们还是会有机会的。（2011-01-08）&#x20;

#### 技术导向

01\. 网友：摩托罗拉一直是技术领先的，最近因何缘故衰落了呢？&#x20;

**段永平：**&#x5475;呵，**摩托罗拉太技术导向了（或者叫工程师导向）。不是消费者导 向的公司结局就该如此。**（2010-03-31）

网友 E：我觉得摩托罗拉太可惜了。我一直想，问题是出在他们的董事会，还是 他们的 CEO，还是研发部？当作一般的管理问题，请教你：你觉得摩托罗拉应该 是哪部分出了问题？

**段永平：**&#x6211;觉得摩托罗拉以前是个很工程师导向的公司。我最早用的就是摩托罗 拉手机，当时特别希望手机上能有个时钟，结果等了好几年都没见加上来，后来 就换诺基亚了。我觉得是文化的问题，他们过去不是消费者导向的公司，以后不 知能否改过来。（2010-04-05）

02\. 网友：您在步步高工作时，公司决策营销推广方式，确定消费者导向还是技 术导向的市场策略。七八年前我家人买步步高无绳电话还有 DVD 都是因为电视广 告的影响。

**段永平：**&#x4EA7;品的设计当然是消费者导向，技术是隐藏在产品里的，是为产品服务 的。没有很强的技术是无法实现消费者导向的。

广告是效率导向的，就是把产品本身用尽可能高的效率传达给你的目标消费群。 最不好的广告就是夸大其词的广告，靠这种广告的公司最后都不会有好下场，因 为消费者长期来讲是个极聪明的群体。<br>

广告能影响的消费者大概只有 20%左右，其余全靠产品本身。（2010-04-23）

#### 市场导向或利益导向

01.网友：段总以前提过诺基亚本身有问题的，不过没细说。 **段永平：**&#x4ED6;们太把当前的市场占有率（以数量计算）当回事了。（2010-10-08） 02.网友：前几天看到李路的一篇演讲，他提到通用汽车 60 年代的资本回报率是

46%，70 年代是 28%，80 年代是 9%，90 年代是 6%，手机行业好像也是一样的现 象，只不过时间大大缩短了，我想李路想说的是，作为价值投资者，我们想寻找 高回报的生意，但高回报的生意一定会吸引大量的资本进入这个行业，所以最关 键的还是巴菲特说的护城河。5 年前回报率很高的国外国内手机公司，几乎每一 家都在大量竞争对手的围攻下回报率迅速下降甚至亏损。

**段永平：**&#x54C8;，说得好。眼光盯住“市场占有率”确实会导致公司做一些本末倒置 的事情。 （2010-10-08）&#x20;

网友：我来说不一句，占有率只是个数字，不能阻止 OPPO 超越诺基亚。 **段永平：**&#x662F;否超越谁并不是我们的目标。最重要是做出好东西给用户。

（2010-10-08）&#x20;

网友：市场占有率不是不重要，是很重要。看待 nokia（诺基亚）的问题主要看 他们对于占领市场占有率的过程，正确的占有市场的方式是“点带面”，占领一 个细分市场然后逐渐吸引更多的相邻细分市场的用户，nokia 的问题在于希望通 吃，忽略了点，结果哪一块都没吃好。几年前 nokia 几乎每年 1 款精品，从 8210 到 N70，每次都是一个潮流，甚至当年的白金手机被人放在办公室里面作为炫耀 的资本。现在呢？哪有创新了，高端的市场都丢的差不多了。

**段永平：**&#x5360;有率是结果，不是不重要，但不能盲目追求，否则以后有麻烦。有点 像 GDP 哈，不是不重要，但不能盲目追求。（2010-10-08）

网友：言下之意是否是不应该把追求市场占有率放在首位，而应该把提高产品的 质量放首位呢？如果后者放首位，达到前者是自然的事？

**段永平：**&#x770B;看 iphone 和诺基亚就明白了。（2010-10-08） 网友：诺基亚手机为啥死掉了？  **段永平：**&#x5F53;时诺基亚一年出大概 50 个机种，岂有不死之理？！

说个小故事，大概 2001 年前后，我还在读中欧时，曾经跟班上一个诺基亚的同 学说过，我觉得目前的诺基亚有蛮大的问题，反映到诺基亚北京总部后，对方说 有兴趣听听，让我去。我当时觉得他们的问题为什么要叫我去呢，架子很大嘛，<br>

所以我没理会。当然，就算说了也未必会有用的。当年 Motorola 的一个中国负 责人倒是确实飞过来找我聊过他们的问题，但结论是：你说的有道理，但控制权 不在我手里，改变不了啊。

其实无非就是要做对的事情。出 50 个机种显然是不对的，有时候一个不对的事 情就会要了他们的命啊，结果也证实了这点。（2018-10-23）

网友：（诺基亚是不是一直没想明白，手机是用来上网的，不是用来打电话的？）

**段永平：诺基亚不是用户导向的，你看到的这个现象其实是他们的内在文化的 外在表现**。（2018-10-23）

网友：请教一下，诺基亚是属于“做对的事情中做错了事”呢还是“把错的事情 的做对”？我觉得诺基亚需要转变的不仅仅是个平台，而是重新回归关注用户体 验这条路上。

**段永平：**&#x8BFA;基亚出的问题大概就是“成功是失败之母”类的问题。由于这些年一 直非常成功，他们大概忘了为什么会成功的原因了。盲目追求市场占有率可能也 是原因之一。简单讲，我认为是文化出问题了，也就是没能坚持做对的事情（或 者叫做了错的事情）。

诺基亚是一家很有实力的公司，如果现在开始真正反省（或者用你的话就是重新 回归关注用户体验上来），几年内说不定还有卷土重来的机会，再过几年就有点 积重难返了。

微软好像也有同样的问题，雅虎其实也是犯了类似的错误。我们旁观者清容易啊， 当局者确实很容易犯这类错误。（2011-02-10）

02.网友：我心得是市场份额和企业核心消费者有关，核心消费者指的是不以性 价比为导向那些用户。如果把目标锁定在一定要多少市场份额就会牺牲用户体验 去追求那些非核心的消费者，短期可能份额会扩大但是消费者组成质量变得非常 差，经营质量和企业文化都会出现问题。

**段永平：**&#x6BCF;个人都是会看性价比的，但每个人对价格的敏感度不同。还有就是每 个人对钱的看法不一样。比如有人会为了便宜去买不安全的车等等。

（2013-02-27）

网友：有点明白了茅台和苹果的用户群，那些为了占份额吸引的客户其实随着时 间会慢慢减少？

**段永平：**&#x90A3;些客户未必会减少，但做那些客户的生意的企业会慢慢地过上苦日子， 其中有部分会撑不下去的。（2013-03-01）&#x20;

03.网友：一般哪些公司会有大麻烦啊，倒下就起不来那种。能举具体情况吗？ <br>

**段永平：**&#x4EFB;何公司倒下去以后都很难再起来，所以倒下再起来的故事才会流传开 来，不然就是常态了。（2010-10-10）&#x20;

**04.美股评论：柯达的双重讽刺 导读：日前柯达宣布，为降低成本将逐渐放弃数码相机业务，其实在这一领域， 柯达一度遥遥领先，拥有过巨大的优势，但是他们的营销战略从根本上就是错误**

的，才会走上了今天这条不归路……

&#x20;**段永平：**“关键的动机并不是让大家更好地拍照，而是为了卖他们的胶卷。”**利 润导向和消费者导向的差别长期而言就是生与死的差别。 突然想到惠普打印机 有点为了卖墨盒的意思（纯属乱感觉，没经过数据比较）**。（2012-04-28）

&#x20;05.网友：段总谈到手机，其实我也是业内人士，俺是中兴通讯手机事业部负责

欧洲市场推广的。中兴手机这几年进步也很大，主要优势在于快速定制，满足运 营商需求，抓住了类似于国内中国移动、电信之类的大客户捆绑销售。问题在于 基本放弃了渠道市场，应该走了跟步步高不同的路线，现在最大的问题在于某种 程度上忽视了“消费者需求”，没有做到“消费者导向”，而是“运营商导向”。 中兴手机的发展方向应该是学习中国台湾的 HTC，从 ODM 逐步到自有品牌，从 单一追求销量到追求销售附加值。道理似乎大家都懂，但做起来很难，是不是企 业的文化和基因很难改变呢？每年为了追求销量忘记忽视了一些最根本的东西， 这点可能就是公司创始人的不同导致的吧。不是说我们老板不行啊，各有强项嘛， 呵呵，上市公司当期业绩压力大嘛。

**段永平：**&#x5475;呵，上市公司当期业绩压力大的说法很有趣（尽管无数上市公司都这 么说来着），难道大家愿意让下期压力更大？ （2010-07-07）

网友补充：狗粮的消费者是狗还是狗主人呢？ 中兴选的是狗主人，真正的消费 者导向，应该是选狗，也有可能运营商需求包含了真正的消费者需求。

**段永平：**&#x7ECF;典案例啊。（2010-07-07）

网友 U：呵呵，狗不买狗粮

网友补充：狗粮是狗吃的啊，狗才是真正的消费者。如果狗主人凭自己喜好感觉 买狗粮，而狗不喜欢吃或者不吃这种味道的口粮，这种狗粮终究还是不好卖的。 狗粮的口味（消费者）考察应该是选不同类型的很多狗试验，而不是仅仅在包装 上迎合购买狗粮的狗主人。&#x20;

06.网友 C：段总以前说过客户与用户有时是有区别的，但笨笨的我到现在也搞 不清头绪。

**段永平：**&#x6709;个狗粮的例子，就是客户满意但用户不满意的典型。（2012-03-03）<br>

07.网友：换个角度看苹果，为啥很多公司市值超过 5000 亿美元之后就会增长缓 慢或走向衰落，苹果是不是也是一样，长大到一定规模，食物就会匮乏，内部和 外部的攻击就会累计更多，管理机构庞大后公司文化就会变异，最后走向死亡。 苹果已经是地球最大公司，还能再扩大一倍还是十倍。不论他现在的基因多么优 秀，最终会因庞大而死亡。如果我从生物学来估值，这个公司已经没有增长空间 了，除非地球经济飞速增长，否则无法支持这样的市值了。

**段永平：**&#x79D1;技类活不长指的是微软吗？即使今天来看，如果从某一时点用同样代 价让你就可以拥有 1%的微软或可乐的股份，哪个会让你觉得更开心呢？ **现在很多“科技类”的公司走下坡路实际上都是同一个原因，你懂的。** 还有就是，消费类的公司就一定活得长吗？只要看看可口可乐这么多年的同行还 有多少活下来就明白了。（2012-04-29）

网友：这些年受您的影响挺大的(虽然一直没缘能见到您)，但也收获了很多东西， 谢谢您。其次，我有缘在 OPPO 体系工作了五年，2018 年 7 月份离开了 OPPO，在 OPPO 的这五年，让我对产品、品牌、营销和渠道都有了一定的理解，所以我想 请教您，OPPO 的这一套打法不适用于哪些行业或产品。再次谢谢您！

**段永平：消费者导向放之四海而皆准**。技巧的东西谁都可以学，但我们之所以成 为我们，除了我们一直努力做的事情外，我们不做某些事情的决定也同样重要。

（2019-06-10）

08.网友：我想问一个比较宽泛的问题：我们是美国 Amazon（亚马逊）上的一个 中国 Seller（销售），销售服装（就是 Amazon.com 上的 Marketplace 的 Seller， 第三方卖家）。问题是：从您的角度，您觉得这个生意有多大概率能做十年甚至 更久？

&#x20; **段永平：**&#x80FD;做多久应该取决于你自己的。如果你一直想着你的用户的需求，10 年或更久为什么会是问题？难道 10 年后大家就不穿衣服了？**很久以前黄峥曾经 问过我一个问题：用户导向是放之四海而皆准的吗？我说，I believe so!** **I think he got the point！**（2019-05-15）

**09.网友：**[**陈明永说本分 —— 《创业家》杂志 2013 年第 7 期**](https://xueqiu.com/2740739644/133628865) 本分：阿段（段永平）给我留下的东西就是做企业的道。 我们想找一个词来描 述这个“道”，找来找去就找到“本分”……

**段永平**：**我们总是说，量不重要，利润不重要，最重要得是要做对的事情，要 找到消费者的真实需求并想法满足。**(2019-10-06)

## 六、基业长青

**--------(段永平在企业文化培训课上的讲解)**

**1.企业文化的重要性**

企业文化是指现阶段企业员工所普遍认同并自觉遵循的一系列理念和行为方式 的总和，通常表现为企业价值观、行为、准则、道德规范和沿袭的传统与习惯等。

**①企业的核心价值观** 本分、诚信、团队、品质、持续学习、消费者导向

**②企业的愿景** 成为更健康、更长久的世界一流企业

**③企业的使命** 对消费者：提供优质的产品与服务。 对员工：营造和谐、相互尊重的工作氛围。

对商业伙伴：提供公平合理、对等互利的合作平台。

对股东：使其投入的股本有高于社会平均报酬的合理回报。

一个企业要长期做下去，要保持竞争力，要基业长青，就一定要有自己的文化。 产品可以模仿，而文化是不可以模仿的。步步高公司走过了十年的历程，一路走 来，虽然有点磕磕碰碰的，但总的来说还算顺利，不论企业的规模、发展速度、 产业结构、产品质量都逐步得到了大的发展和提升。这十年来我们看到好多竞争 对手倒下去，包括很多的知名企业和民营企业家。“你方唱罢我登台，各领风骚 三五年”，从“明星”很快就变成“流星”，中国社科院专门做了一个调查统计， 中国的民营企业的平均寿命只有 3 岁左右，这反映一个问题：企业规模可以做大， 但是做不长、做不强。除了体制上的原因外，企业或企业家本身的问题是主要的， 中国的有些人比较好大喜功，急功近利，动不动就要做世界 500 强。缺乏一个长 远的目光和持续发展的愿景，没有把企业文化的“内功”练好，出问题是早晚的 事。我们企业小的时候，可以不去倡导企业文化，因为人少，好多事情大家心里 都清楚怎样去做，但企业做大了就一定要有自己的行为准则，不断完善我们的管 理制度，日积月累下来，沉淀了我们的企业文化内涵。

**2.做正确的事情与把事情做正确：“道”和“术”**

“道”是先于“术”的，因为只要方向是对的，方法笨一点，也只是做得慢一点， 不会走错路。做得不好的企业往往是因为犯了一些比较大的错误，没有做正确的 事情。首先一件事情的对或错就好难判断，判断出来后做不做，执行起来也难。 我在美国的时候，去机场接一位步步高的同事，估计要在机场等一个小时，所以 在机场停车场投了一个小时停车收费的币，结果那位同事提前半小时就来了，这 就有个问题，多投了半个小时的币，是继续在车里等这半小时还是浪费多投的这 半小时的钱，结论不言而喻的，现实生活中肯定是开车走人。但在实际决策中很 多人都犯继续等下去的愚蠢的错误，这个事情我已经投入了几千万呀，怎么停的 下来，为了救这些沉下去的成本再投入几千万，明知事情是错的还要坚持做下去， 其结果自然败得更惨。在我们公司对一件事情对错的判断标准就是我们公司的企 业文化，如本分、诚信、品质、消费者导向等。对的事情我们就要坚持，不对的 事情，不管付出多大的代价都不做，都要叫停。如果不能判定这件事情是对的， 那么我们可以列出哪些是错的，这样理解和执行起来就容易些。当然也有变通的 时候，当年我们生产超级 VCD，实际上清晰度有 350 线，而我们的竞争对手说有 500 线，那我们不能说有 500 线蒙骗消费者，而不说 500 线消费者又去买别的厂 家产品，后来我们就说大幅度提高了清晰度，效果也不错。但在原则性的问题上， 不能脱离事物的属性，对就是对，错就是错，是非不应该给利益让路。

我们企业之所以活到现在，并且还活得还好，并不是因为我们有什么过人之处， 而是我们少犯了许多错误，失误率少成功的机会就大，我做投资也是这样。如打 乒乓球，偶尔打几个好球其实是正常的，但失误几个也就一样了，失误少的一方 肯定是最后的胜利者。围棋有本手，就是说这手棋该下哪就下哪才是对的。要知 道这件事情的对错，不对的，不要去做。我们公司有许多规矩是根据当时的环境 情况制定的，并且在不断完善。对的我们坚持，发现错了，就应该改正。规矩（或 制度）的制订要根据双方的立场来制订，要双赢，对员工如此，对客户也如此。 如当年我们出台的调价补差的方法，就是根据当时市场情况、竞争对手情况制订 的，双方在诚信的基础上共同把市场做强，企业也得到了迅速的发展。许多政策 的来龙去脉要搞清楚，不能像扭秧歌，走二步退三步，永远都没有发展。中国人 的文化是“利益”文化，人们往往以利益为重，为了获取利益，可能明知道自己 做的事情是不对的，但偏偏运用自己的聪明才智把不对的事情做得很好，结果会 怎么样呢？短期里可能会取得成功，但长期来说，他们必定会失败。国外有教授 评价对中国人的印象是“Smart（聪明）”，这个聪明带有贬义的成分，包含了 狡诈、欺骗、精于计算、喜欢占小便宜的意思。聪明往往和“小”联系在一起， 而智慧往往和“大”放在一块。所谓“小聪明”、“大智慧”！有些人很聪明， 可以把事情做对，但是没有做对的事情。如果把美国比作一个企业，把制度和公 信力比作企业文化，所有的事情都有规矩去做，美国 200 多年的历史拥有现在的

发展水平，中国拥有 5000 年历史进程，不说走，爬也超过了美国了。所以呢， 企业文化很重要，因为有些东西是不能去制度化的，如不许偷东西、不许乱吐痰、 乱丢垃圾、乱停车等。如果这些最基本道德行为要去规范、去教育，那社会成本 就高，就不能集中我们的力量去做我们的步步高事业。

**3.消费者导向**

我们的研发要根据消费者的需要，尊重消费者的意见，要多进行市场调查，开发 生产出老百姓接受的产品，而不是自己主观去搞一些噱头，为差异化而差异化。<br>

我们为什么不提创新，因为创新可能会使人产生误解，为创新而创新，结果弄出 来的东西市场不接受，消费者不接受，只能把自己做死。其实我们要做的就是当 你发现消费者需要的时候去满足它。做到这一点其实不容易的，我们做信息电话 创意就很好，我们曾经开发过的“光盘录像 DVD”，工程师们都认为很好，结果 消费者不买账，就是二个失败的例子，这方面的亏我们不能再吃了。有人说包装 消费者不需要，其实包装也是十分重要的，也是消费者需要的，想想消费者买个 光机回家是什么心情，这是个消费习惯和心理的问题。我们的宣传广告也要正确 简洁地告诉消费者，不能说一些言过其实的话去蒙骗消费者，假话说多了，人家 也就不信了，你也就没得玩了。

**4.敢为天下后--后中争先**

老子曰：“我有三宝，持而保之，一曰慈，二曰俭，三曰不敢为天下先。”例如： 微软从 windows 到 word，它没有哪个产品是敢为天下先的，但是一旦它发现哪 个产品有市场就调以重兵进去，然后把它做成行业第一。松下它的老对手 SONY 都几乎破产两次了，但它还是前年才出现过一次 50 年内的头一次季度性亏损， 这个企业一直都比较健康。按照我们目前的实力和能力，这个原则可能我们还要 用很多年。好多成功的企业都是后面跟进的，开路先锋不好做。一方面自己开发 全新的产品不容易，培育市场、教育消费者的过程是极其缓慢的，代价十分昂贵， 以我们现有实力，很难担负起这个使命。我们做的是看看这个产品，这个市场， 再看看竞争对手，觉得我们有实力、有能力进去，可以打败竞争对手，那么我们 进去了，要做就做最好，树立起我们品牌的知名度和美誉度，打败竞争对手，争 取到我们的市场份额。赚钱不是我们的目的，只是一个过程，可以实现我们的企 业愿景但赚钱是做企业的责任，一个不赚钱的企业是不能长久的。

**5.平常心--欲速则不达**

&#x20; 我们现在没有强势的产品，处于在一个稳定的局面，这是由现在大的环境决定的。 我们不追求快速发展，而是安全。企业安全了，才能发展。做什么事情都要慢慢 地快。例如在高速公路上开车，你的速度是由你的车况决定的，你的目的是安全 抵达目的而不是快速抵达，如果不顾实际情况一味求快，很可能就出现危险。当 然我们有足够实力和外部环境许可我们也可以快一点，但前提一定是安全，为求 速度把企业做死是不划算的。我们应该考虑得长远一些，朝着我们的目标努力， 哪怕慢一点都没关系。这里就出现一个问题，好了，我们老总说了可以慢一点， 那大家停一停，休息一下，那也不行。举个例子来说，通知明天 9 点到深圳开会， 早到是没有意义的，如果你开车去的话要提前一个小时，如坐公车去的话要提前 二个小时，开个玩笑，如果你走路去的话就要提前一天了，但你不能不去呀，还 是要在计划中行动。做事情要有一颗平常心，不能急躁，事物都有一个发展的规 律，企业发展也是一个渐进的过程，出现一点挫折或取得进步都是正常的，要赢 得起，也要输得起。好多高手与泰格· 伍兹打高尔夫，最后一杆几码距离就是 推不进，不是技术的原因，就是没有保持平常心，老想着这一杆推进去了就是冠 军了，就可以赢伍兹了。伍兹的厉害处就是就想这一杆该怎样打就怎样打，所以 就赢多输少了。做企业也是一样要有平常心，不能贪大求快，大干快上。

**6.企业使命之股东、员工**

使命是企业一种根本的，最有价值的，崇高的责任和任务，表明“为什么干这 个”。企业使命的意义有三点：①明确企业发展方向与核心业务。②协调内外部 各种矛盾冲突。③树立用户导向思想。创造财富，回报我们的股东，使股东的投 入高于社会平均报酬，因为如果不能高于社会平均回报，就没有人来投资我们企 业，人家大可去存银行，或去买国债，要给投资者信心。步步高的员工是我们研 发、生产经营的主体，对你们为步步高事业做出的贡献，我们一直心存感激。要 营造和谐、相互尊重的工作氛围，尽量改善工作环境，外部环境不能改变，内部 环境我们尽量搞好，十年来我们的工作环境逐步得到了改善，员工的业余生活也 丰富了许多。一直以来，我们说我们公司是学习型企业，在我们公司工作，不仅 要使员工有稳定工作和收入，还要培养人、锻炼人。不但要提高员工的基本素质， 而且要提高员工的业务能力和综合素质，我们要努力去学习别人先进的管理方 法，当然这个学习要付出代价，但不学的代价更昂贵。要培养合格性，合适性的 人才，尽量减少人才流失。市场的竞争到现在是全方位的竞争，特别是人力资源 的组合，如果公司有一天会垮掉的话，我想就在人才这一块，所以要引起足够重 视。

**7.鸡肋原则**

鸡肋原则：即毛泽东讲的“集中优势兵力，歼灭敌人”1的原则，也就是焦点法 则。我们做的产品都是国际大公司食之无味、不想做的东西，好比是它的鸡肋。 用拳头打跳蚤，它犯不着。但我们在这方面却有优势，能够做得比他们强。比如： 我们做的好多产品绝大多数都是鸡肋产品：游戏机、学习机、VCD、DVD、复读机、 电子词典、电话。如果我们非得去做国际大公司眼中“鸡腿”类的产品，抢这些 大佬的饭碗，那么人家一定会跟你拼命，决一死战。这个时候我们往往就容易被 人打倒。这就是说我们尽可能不要跟那些实力比我们强很多的人做直接竞争对 手。鸡肋也是相对的，并不是我们看见敌人就要逃跑，只要有竞争对手我们就不 做，而是我们要评估我们是否可能有我们的优势，哪怕是在某个局部有优势。比 如，DVD 产品 SONY 也做了，但是在中国这个局部，我们集中了优势兵力，我们 各方面的投入比 SONY 大，比 SONY 更了解这个市场，那么在国内市场，我们的 DVD 就可以做，而且可以做得很好。

**8.企业愿景**

企业愿景是一种意愿的表达，它概括了企业的未来目标、使命及核心价值观，是 一种企业为之奋斗的心愿和远景。这样的愿景是企业发展中共同的目标，不变的 理念，甚至是企业的灵魂。它要解决的是企业将做成什么样子，是对企业未来发 展的一种期望和描述。步步高的企业愿景是：成为更健康、更长久的企业。追求 的是基业长青。现在大的环境决定了我们不可能有具体的目标，如要赶超松下呀， 要做多大呀等，而是要脚踏实地把自己的本身的事情做好，少犯错误，做对的事 情，不是本分的事情坚决不做。小的违规的事情也不能去做，因为刚开始是小违 规，后来会变成大违规，再后来就什么都不顾了，这会损害我们事业，也就不能 实现我们的愿景，更谈不上回报社会了。

![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif)

1 《集中优势兵力各个歼灭敌人》是毛泽东同志于 1946 年 9 月 16 日为中共中央军事委员会起草的对党内 指示，对解放战争的胜利起到了重要指导作用。<br>

**9.企业文化宣传**

企业文化是坚持宣传，不断实践和规范管理的结果。我们的企业文化在这方面做 得还是不错的，比如我们讲本分、诚信和平常心，但我们在这方面的宣导还不到 位。当企业发展到一定程度时，如果没有一个大家都能够把握的做事情的正确的 标准，就很容易犯错误。因为一方面语言在传递的过程中很容易失真，另一方面 每个人的家庭背景、受教育的环境又不同，会沉淀为每个人骨子里的东西，有些 会跟我们的企业文化起冲突。因此，企业文化要进行广泛宣传，反复灌输才能逐 步被员工所接受。一个美国的朋友问我：你们说不攻击竞争对手，那为什么要去 占领市场？这其实是一个误解，我们说的“不攻击竞争对手”，说的是在基于诚 信，在公平合理的规矩内，不用不合法的手段去竞争，在合理的规矩范围内，我 们要尽力去竞争，去开拓市场，去赢得消费者。所以说，企业文化需要广泛宣传， 要不就会造成误解。我们公司的员工，包括我们的客户都要了解理解公司企业文 化，才能形成凝聚力，形成一股发展的力量。而消费者是通过我们的产品来了解 公司的品质文化，我们的产品质量，售后服务的好坏决定了消费者对公司的信赖 程度。高质量的产品、良好的售后服务就是公司良好文化形象的体现。

走过了十六年的步步高公司是不容易的，我们恪守我们的本分、诚信，保持平常 心，胜不骄，败不馁，集中我们的力量把事情一件件做好，企业也在不断地发展。 如果把企业比作一个木桶，那企业文化就是木桶的底板，其他如战略、结构、系 统、网络、职员、技能就是木桶的板。不管板有多长，如果企业文化没做好，那 这个木桶是不能装水的。相反，如果有深厚的企业文化底蕴，有那块短板我们可 以及时补上。做企业容易，做基业长青的企业很难，各位步步高的同仁，我们一 起努力吧！go go  加油 ！

**点评：**

**段永平:** 现在的规模已经不再提鸡肋原则了。这个讲话应该是有人整理过了，随 口说应该说不了这么顺吧？可能是差不多 15-20 年前的讲话了，日子过得好快。

（2019-03-23）

**段永平:**  鸡肋原则本来就是我创造的一个原则，所以你怎么理解并不重要![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.gif)。 规模达到我们公司目前这样，鸡肋原则可能不再适用了。（2019-03-26）

**段永平：**&#x4F;ppo、Vivo 的年收入合计有 400 亿美金。（2018-09-30）<br>

## 七、26 个企业文化案例点评

**段永平：**&#x6211;不会只是基于企业文化买公司，但会把有好的企业文化作为想买的前 提之一。（2015-05-25）

网友：“前提之一”说的好。由此，我会把有“不好”的企业文化的公司作为不 买的全部理由。

**段永平：**&#x786E;实如此，不好的公司文化时间长了一定会伤害到企业自己，而且不好 的企业文化一旦建立就很难去掉了。

（2015-05-28）

网友：我最想问段总的一个问题。您在做一个投资决定买入一只股票的时候，是 由很多理由综合决定的，还是由一个两个关键理由决定的。这些理由是质化的， 还是量化的？希望段总详细说一说。

**段永平：**&#x4E70;一只股票往往要很多理由。不买的理由往往就一两个就够了。（201 0-03-30）&#x20;

网友：您是否投资过护城河（含企业文化）不怎么好的企业？获利如何？ **段永平：**&#x5982;果不喜欢一个公司的企业文化，我很难下手。（2011-01-22） 网友：请教我们可以从哪些地方和渠道去了解和知道想要投资企业的文化？

**段永平：**&#x4E0D;需要渠道，有心人早晚都会看见的。（2013-10-07） &#x20;

&#x20;**段永平：**&#x4F01;业文化作为过滤器非常有威力，为我避免了很多错误。怎么选对的公 司是能力问题，不选错的公司是是非问题。(2020-06-08)

网友：希望老段多教教我们研判企业的知识.

**段永平：**&#x6211;教不了，每个人都只能靠自己悟。我只能偶尔说点自己的体会，相对 于说说盲人摸象自己摸到的那部分，未必就一定对。或者说只在一定的范围内有 道理。（2011-01-23）

**--------------------------------------------------------------------------------------------------------------------------------**

#### 点评的公司：1.松下 2.索尼 3.丰田 4.三星 5.通用电器、创维 6. 比亚迪 7.华侨城 8.格力.白云山  9.美的  10.金山  11.雅虎 12.畅 游  13.东方园林  14.UT 斯达康  15. CSKI    16.九城 17.完美世界

**18.巨人网络** **19.新东方** **20.好未来** **21** **瑞贝卡** **22.万科** **23.双汇** **24.**

**绿大地** **25** **海底捞** **26.招商银行**

**----------------------------------------------------------**

**1.松下（Panasonic）**

网友：您上次说您参观了松下，好像您也提到他们出一些问题。您有空写写一下 参观感受吧。

**段永平：**&#x5475;呵，老说有空就写，没想好写什么，毕竟这还是一家很好的公司。

（2010-05-26）

**松下（博文时间：2010-10-14）**

很久以前就说过想把很久很久以前（大概是 03 年左右）去松下参观的一点点感 想写一下，但好像一直就抽不出心情写。

松下对我的影响很大，到今天我也依然从心里尊重松下本人和松下公司。

在松下公司我看到过两个大大的汉字--“素质”，我猜大概就是我们公司说的 “本分”吧。

总的感觉松下非常训练有素，依然非常强大，我们要达到松下的水平恐怕还要很 多代人的努力（也不一定能到）。

但是，我也确实看到一些问题，而且我觉得这些问题时间长了是可能要命的。 这里只举一个小例子。

当年我们就看到手机市场有机会，但苦于自己拿不到牌照，同时又发现了中国市 场上的很多外资品牌的手机都有明显的弱点，加上本人对松下的认知，于是就产 生了个想法，想找松下合作来共同经营中国这个市场。

我当时大致认为，如果我们和松下联手，几年内在中国做到第 3 名甚至第 2 名都 是很有可能的（我认为一时半会肯定超不过诺基亚），所以就很想和松下聊聊我 们的想法，然后就有了我的松下之行。

有趣的是，我首先发现不知道这事要和谁讲才有效，所以我就见谁都讲。

从若干科长到若干部长再到社长都见过了，除了跟当时的社长没机会讲以外，大 部分人我都或多或少提到了自己的想法。居然，居然从没有一个人问过我为什么 我们认为我们可以做到前 3 名甚至前两名。感觉这事好像没人关心一样。

这么多年过去了，好像在中国市场再也没见过松下的手机，我们的手机也起来了

。<br>

01\. 网友：“居然从没有一个人问过我为什么我们认为我们可以做到前 3 名甚至 前两名。感觉这事好像没人关心一样。”------小哥认为松下有点自大了！

**段永平：我不认为是因为自大，是企业文化出问题了，大家不太关心公司的整 体和未来，只想混自己的日子。（2010-10-14）**

02\. 网友：等了这么久，段总终于说松下的事了。请教一个问题，随着你们自己 企业越长越大，怎么避免同样的事情发生在自己身上？

**段永平：**&#x4E0D;知道。可能已经在发生了。组织小型化可能是个办法，企业文化的建 立应该是最重要的。（2010-10-15）

03\. 网友：段学长也在讨论日本的企业问题！上个礼拜从珠海坐船回中国香港的 时候和一个中国香港国企的老总聊了一路，他说日本的企业人员素质都很高，也 很敬业，但是竞争力要大打折扣，因为每个人都是用一辈子熬到自己的位置的， 当领导的全习惯了听上面的意见，到自己拿主意的时候都特别地谨慎，董事会里 的全是白头老翁，说这是日本大企业的普遍现象。那位老总说和各国的企业打交 道，还是美国的企业有活力。

**段永平：**&#x65E5;本人有点太形式主义，效率比老美低多了。死不认错这点倒是和我们 差不多。创造力相对于老美也弱，但纪律性、条理性和精细程度都非常恐怖。这 个民族一旦有了压力的时候确实有点可怕。当面对日本企业直接竞争时一定要打 醒十二分精神。（2010-10-15）

04.网友：刚好有个问题，如果在整个大的文化下面，分散各个不同的组织，有 些组织已经盈利，但有些亏损，能否认为一段时间后亏损的也应该会盈利呢？我 正在考察一个连锁百货，所有的问题都归结在异地的店能否盈利（异地的现在 80%在亏损），异地商场的装修，供应商，甚至楼层设计都是跟深圳一样的，现 在的判断就是，同样的管理体系下是否能确定异地的商店会慢慢地跟深圳的一样 开始盈利呢。

**段永平：** 1．同样的“管理体系”在不同的地方不能保证盈利。 2．“同样的”东西不一定是同样的。（2010-10-15）

网友 S：方便的话能否请问段老师，希望从松下获取怎样的支持呢？ **段永平：**&#x4ED6;们有很多不错的东西。（2010-10-15）

05\. 网友：如果当时有人问您为什么可以认为能做到前 3 甚至前两名，您的回答 会是啥？

**段永平：**&#x5475;呵，不会在公开场合说。

网友 S：段总对公司的核心竞争力-企业文化还是很有信心的，低调不说而已。<br>

**段永平：**&#x4E0D;是因为低调，是因为说这个就必须要说当时前 3 名的那些公司有哪些 弱点和长处，我们有哪些弱点和长处。如果合作就可以弥补我们双方的弱点，发 挥我们的长处，一定时间后的市场表现就会超过前 3 名中的一个到两个了。由于 要谈到别人，就不好在这里说了。（2010-10-21）

网友 U：段先生你换位思考一下，现在有个中国小伙子找你说，他可以把 XX 做 到中国前三，你会天使投资一下吗？当然，我相信段先生可能会干，因为中国是 个生产奇迹的地方。

**段永平：**&#x6211;起码会问为什么。再说，我们并不是街上随便一个人跑过去说的，他 们应该知道我们是谁，不然我们怎么会见到那么多人？不信你随便跟他们说说试 试？呵呵，你再想想。（2010-10-17）

网友 S：我的感觉是，以东方文化，如果某人开口表示了兴趣，那么应该大约意 味着他这一级应该采取些行动。至少当事人可能是这么认为的。而以他们的级别： 如果级别比较低，那么可能无所适从的，因为他们会觉得需要高层来决定，而他 们是需要提供依据（日方的），而在当时的情况下，多一事不如少一事，提供依 据不是他们（既定）的工作内容工作量，所以按照东方文化，他们选择了沉默； 如果级别比较高，可以决定或者说上话的人物，多少也有上面的担心。更大的担 心我估计是，一旦表示了兴趣，需要一个决策，而决策是有风险的。在这个级别， 风险和收益可能不对等。所以总体上，我很认同段老师的判断，是因为没有人非 常关注公司的未来，愿意自己承担风险，来给公司增加（潜在的）收益。这个问 题的解决，我感觉，一是需要文化；二是可能需要专门的制度设计，不需要个人 来承担这样的风险，甚至可以分享到收益；例如成立一个杂务或者对外联络部门， 专门来处理来自各个级别的这类信息。当然根本的是一，因为如果用二，其实也 会遭遇到系统官僚化的问题。

**段永平：**&#x5475;呵，所以我认为他们的文化好像有点问题了。（2010-10-18）

网友 A：可能松下太大了，他们自己对中国手机市场的成长速度和潜力认识不够， 同时也错过了像段总这样的商界奇才，不可多得的合作伙伴。

**段永平：**&#x786E;实，如果你还认为这是“商界奇才”，那说明你还是没太理解啊。

（2010-10-14）

06.网友：段大哥:我记得您以前说过买过日本股票好像是索尼还是松下，能不能 把这方面的例子给大家说说，让大家分享下您的投资智慧。

**段永平：**&#x6211;买过松下，当时松下只有 100 多亿美金。（2010-04-06）

网友 K：段大哥：我的意思是广大价值投资者们可能跟我一样想详细一些了解当 时您的分析思路，您当时是重仓买入还是买得不太多？我记得当时您买时全世界 没人说日本有前途。罗杰斯也说日本熊了十几年指数跌了 80%是可以中期买入的 地方了。可能您运气好吧，常常买到大底部。<br>

网友 H：日本的电器公司目前处于成熟期，成长空间不大，那段总觉得中国电器 公司格力、美的等目前是好的投资机会吗？不要告诉我你又不了解这个行业哈。

**段永平：**&#x5475;呵，我有点了解这类公司，但不能评价，尤其是不对个股评价。

（2010-04-04）

网友 T：其实我并没有认为日本企业可以轻视，只是很多人都认为日本很完美我 不认可，他们的优势还存在，但我认为没有想象中的不可超越。如果现在投资松 下或者索尼，您会投资吗？（2010-10-15）

**段永平：**&#x4E8B;实上几年前我投资过松下，而且赚了些钱（$200w 左右，70-80%）。 没投过 sony，觉得 sony 没松下健康。

网友 C：能讲讲这次投资么？

**段永平：**&#x5927;概 n 年前，mc 曾经掉到过 100 多亿美金。以我对松下的理解，这个 价钱不太对，就买了。大概 n-2 或者 n-3 年前，松下又回到了 300 多亿，我就卖 了。由于 mc 在美国上的是 adr，成交量特别小，当时很难买。后来好像松下在 美国的上市部分又下市了。(2010-10-16）

07\. 网友：有听说经营企业如果亏损，那么就是在浪费人力物力资源，浪费资源 就是在犯罪。

**段永平：**&#x677E;下幸之助讲过，企业不盈利就是罪恶，但是企业的目的不是为了盈利。

（2010-05-14）

08.网友：我百度了《基业长青 2-基业为何不能长青》，为中文版作序的作者对 此书的简要介绍：《基业长青》研究的是上行的公司，而《基业为何不能长青》 研究的是向下急坠的公司，这本书要回答的是一个基本的问题：一流公司为什么 在成功之后走向了失败？

柯林斯的回答是，狂妄自大是任何公司进入衰败的必然征兆，或者说是衰败的第 一阶段。在狂妄自大的自恋性环境中，企业的领导者会不计后果地贸然进入新业 务；会以牺牲卓越绩效为代价追求增长；会在面临前后不一致或者对己不利的决 策信息时，依然采取激进、冒失的决定；会否认企业因为外部威胁或内部瓦解而 陷入困境的可能性！（2010-09-29）

**段永平：**&#x770B;起来这书不看也罢，有空看看也行。似乎还是在说企业文化的事。没 有好的企业文化的公司一旦得到顺利发展，大概就有可能狂妄自大，最后走向灭 亡。关键是如何把这个和所谓的好公司犯错误时的情况区分开来。

网友 T：这两种情况一般怎么区分呢？比方说黄宏生出事和黄光裕出事，那么怎 么能判断创维能恢复过来，国美是否能恢复过来，再就是能恢复过来的公司一般 有什么特征吗？<br>

**段永平：**&#x4F60;要是能搞明白各自出的是什么事就能搞明白其对未来公司的影响。要 是搞不明白就不碰。（2010-09-21）

网友：比方说创维，当时如何大概能看出来他们的企业文化还是不错的，还是健 康的呢？

**段永平：**&#x521B;维相对于同行而言是较为健康的。好的企业文化会大大提高沟通的效 率。 （2010-10-15）&#x20;

09.引用：乔布斯曾告诫团队：“遇到事情不要问乔布斯会怎么做”  &#x20;

……

**段永平：**&#x5F53;年去松下时，当时中村社长就是这么说的：“我总在想如果松下老人 站在我背后，他会怎么想这件事”（希望不是翻译错了）。我马上心里就想，松 下要有麻烦了，回来后就把松下的股票慢慢都卖了。

当一个社长都在这么想的时候，这个公司的文化肯定都是这样的，那他们的产品 时间长了以后就不会好到哪里去。（2011-10-22）

网友 j：大道一方面认同：乔布斯曾告诫团队：“遇到事情不要问乔布斯会怎么 做”，一方面又认为：伊梅尔让通用电器从卓越变成了优秀。同时认为（中村社 长就是这么说的：“我总在想如果松下老人站在我背后，他会怎么想这件事”） 是不对的。我想来想去，还是迷迷糊糊的。望指点迷津。&#x20;

**段永平：希望你不要寄希望于有人可以一句话让你明白。我花 20 年理解的东西，**

**如果你能花 10 年搞懂就至少比我厉害多了**。（[2011-10-23）](https://xueqiu.com/1247347556/20432578) &#x20;

10.网友：我仔细观察了下，好像特别强势的领导管辖下的组织，其创新能力和 纠错能力会差一些。是不是也是因为这个原因，所以《基业长青》里第五级领导 人往往都不特别强势？

**段永平：凡是员工见到领导就战战兢兢的公司，时间长了都会出问题的。因为 这种公司员工大多都会慢慢变得没有担待，凡事希望交给上级去决定，效率慢 慢会降低。除非这种公司的产品非常聚焦，大老板确实可以照顾到所有大方面， 不然早晚会出问题的。我觉得日本企业这些年在有些行业出问题就是这个原因。**

（2018-09-22）

11\. 引用：探索新能源：谷歌雄心未改 被太阳能电池板覆盖的谷歌总部。谷歌地图谷歌曾经轻率地相信，它的工程师们 能够发明出解决世界能源问题的方法。如今，谷歌采用了一个新策略:对风险较 低的清洁能源项目进行投资，在这方面它能够真的产生些影响。去年，谷歌在可 再生能源方面的投资超过……

**段永平：**&#x8FD9;让我想起很多年前去松下时看到松下有很多为了未来 50 年的开发项 目。当时的感觉是佩服加困惑。佩服的是这些有钱的大公司为了改变世界的努力，<br>

困惑的是为什么他们觉得他们可以在一个完全不熟悉的领域里大有作为。不过， 看起来 google 这类公司的纠错能力要比松下这类公司强很多，调整起来快很多。

（2012-04-16）

网友：不管有没有可能在完全不熟悉的领域大有作为，但他在现在就看到 50 年 之后（可能的）趋势，这本身就很靠前了。

**段永平：**&#x95EE;题是他看到了吗？事实是，可能正因为这样，松下今天的日子才很难 过。我猜松下这么多年来花在研发上的钱恐怕比 google 有史以来赚的钱还多， 但好像效果不是很好。（2012-04-17）

12.松下 **本分**  （2016-11-29）

**段永平：**&#x7A81;然想到查一下松下是否也提过类似于本分的东西，居然发现松下在 社训中用的是完全一样的词。

想起很多年前去参观松下，见到包括当时社长在内的不少高层，也许语言不通 的缘故，交流不是很好，但确实看到一些问题。**有些东西我至今难以理解，比** **如松下在日本为了提高就业，居然在日本不同地方建了 50 多家工厂，这成本 可怎么控制啊？又上哪里去找那么多好的管理人才呢？**（2016-11-29）

13.网友：想咨询一个关于企业经营管理的问题，有很多民营企业当发展到一 定规模之后，就会进行跨地域发展，以制造业来说会在不同的省份开设分厂， 但是有时候我们会发现在跨地域开设分厂或分公司所取得的效益会比原公司 所运作的效益要低，请问以您的经验来看是什么因素导致有些公司或工厂异地 发展效益低下？

**段永平**：这和民营企业没啥关系。其实制造业在不同地方开设分厂的情况非常 罕见，除非是很重的产品比如水或者啤酒类，不然怎么着也是愿意靠近供应链 的。感觉你对生意还不太有概念哈。没人能够知道为什么有些公司或工厂效益 低下的原因的，因为原因可能会有一万种。（2019-09-07)

#### 2.索尼（SONY）

01\. 网友: 2010 年 5 月 14 日，索尼公司发布了 2008 至 2009 年财年严重亏损 989

亿日元（约 10.1 亿美元）的业绩报告，这是索尼公司 14 年以来的首次亏损。在

巨大的亏损压力下，索尼必须立即提出应对措施，以挽回 2009 财年以及未来的

发展。据媒体报道，索尼的重组计划从 6 月 1 日已经开始，未来索尼将关闭全球

8 家工厂，裁员 16000 人，削减 3000 亿日元的成本。同时，索尼有两个重要的 战略计划出炉，一是剥离投资巨大的生产设备，将分散在各个事业部的业务统一 到一个平台，即轻资产策略；二是将电视、游戏等硬件产品与电影、服务等软件 内容连接在一起，创造新的商业模式。 成本的压缩几乎渗透到了索尼的每个采 购与生产部门，减少供应商、低端产品代工，索尼将成本压缩到了极致；而更加 重要的是，索尼的网络业务未来将大大增加，新平台战略跃然而出。其实，索尼<br>

还是我们熟悉的高端品牌，作为世界 500 强企业之一，它所走过的路径可以看出 消费电子的兴衰路径，也反映出仅靠高技术的时代一去不返。如何走入消费者的 内心，从情感上打动消费者让其狂热追逐或许才是根本。刚从《英才》杂志上看 到的，这本杂志很多针对企业的分析都很深入。

**段永平：**&#x5927;概接近 10 年前开始我就觉得 Sony 要出问题了。那个时候开始 Sony 就变得非常利润导向，质量不好的东西也卖。从不合格的 DVD 机芯，明知要出问 题的跳舞毯到可以烧出泡泡的手提电脑和漏电的电池（这都是我自己接触到的东 西，没接触到的东西就不提了），再加上看过一次出井伸之（当时的 CEO）不知 说云的采访，就觉得伟大的 Sony 好像已经迷失了。现在开始亡羊补牢也许还有 机会，不过好像栏里羊已经不多了。

网友 G：利润导向从表面看是没什么错的，好像作为一个家庭的男人，你要拼命 给家里搞钱养活老婆孩子，如果不以利润为导向，男主人拼命把自己所从事的工 作搞到最棒，其实钱的问题会自然解决掉。

**段永平：**&#x5982;果没有“取之有道”的约束，利润导向很容易不择手段。国内现在这 个问题实际上非常严重。（2010-06-09）

02\. 网友：家中索尼电视买了一年就坏了，当时是冲着品牌去的，价格是长虹的 两倍，售后服务很差。把家中的电子产品看了看，能用久的有：步步高无绳电话 10 年以上，步步高 dvd12 年以上，格力多功能机（制冷加热抽湿）14 年，格力 罗西尼表 18 年。剩者为王啊。这就是骨子里的消费者导向。是段总说的健康度 的重要内容吧！

**段永平：**&#x73;ony 确实出问题了，大概 97-98 年时我就发现 sony 的品质关开始出问 题了。（2013-04-05）

网友 D：在 97-98 年就发现 sony 的“品质关”出问题了，能说说是怎样发现的 吗？我感觉这里是“懂”企业的重要一环。是他的企业文化出问题了？可能是 “利润之上”的追求没有了！

**段永平：**&#x5177;体不太记得了，大概就是当时买的几乎所有的 sony 产品好像都有一 些我觉得不该有的问题，似乎整个设计生产都是急急忙忙的样子，体验开始变得 不好。而且那个时候的 sony 已经开始做好多东西，而且开始让别人某种程度打 他的牌子，比如当时新科的 dvd 机芯就是 sony 的，而 sony 自己的 dvd 却不用当 时他们卖给新科的机芯（表示他们自己知道质量可能有问题），等等。

网友 N：最近刚好有和索尼打交道的机会。家里的笔记本坏了，看了几个品牌， 最后去索尼专卖店买了台索尼的笔记本。当时没太注意，买回去才发现 15 寸的

显示屏的分辨率和 14 寸的一样，导致画面不清晰，色彩也没有调好，好歹后来

自己弄好了。买的时候自己添钱 400 元加了内存条，当时想的是如果一个品牌明 知道这个内存不够用，干嘛不在产品设计的时候就弄好？原本是 2 个 G 的内存， 家里的笔记本是 5 年前买的也是 2 个 G 的内存。在等待装机的过程中，把索尼店 的东西全部玩了一遍，发现索尼现在能拿的出手的东西基本没有了。笔记本、数<br>

码相机、DV、手机（店里就两款手机）、平板、录音笔……（电视和游戏机没有） 后来想想索尼店里的所有东西没有一样能进入行业前三的，现在你没有说想买某 个电子产品，第一就想到的索尼，我想索尼真的是没落了。从平板和手机的产品 来看，翻身的机率估计也不大了。

**段永平：**&#x997F;死的骆驼比马大，现在这么说 sony 还太早。（2013-04-05）

03\. 网友 T：我从来不认为日本人有多大的远见，他们的辉煌是在特定的历史时 期内的产物，再过 30 年我想几乎没有什么领域会有他们的身影。我讲一个 sony 的例子，我的同学在 sony 做音频的工程师，sony 准备开发一款竖着放 CD 碟片 的 CD 机，但因为碟片在高速转动的过程中会引起抖动共振，日本的工程师和中 国香港的工程师联合攻关，从电路到结构等用了无数办法都搞不定。后来让中国 大陆的人也加进来攻关，这个同学之前跟一些技术工人做过生产技术，他在一些 容易引起共振的地方增加了 8 个垫片，各项指标都符合标准了，问题就解决了， 呵呵。

结果呢？这个同学被大会小会的批评了几次，说工作不严谨，呵呵，可笑呀，结 果还是用这个方案出厂，这样的企业文化实在看不出好在哪？&#x20;

**段永平：**&#x4EFB;何对日本人的轻视都可能是愚蠢和危险的。 网友：有人把日本人比做蚂蚁，但与吃苦耐劳的中国人相比，日本人差得远。 **段永平：**&#x6211;怎么觉得日本人比我们中国人更能吃苦，而且更有纪律？

我记得一个在日本呆过 10 年左右的朋友回来说，日本人给公司干活比中国人给 自己干活还要认真。不要小看日本人啊。（2010-03-27）

网友 S：这点完全同意，国内的一些企业家确实很让人尊敬，他们受到的干扰太 多了。就说造汽车吧，李书福搞了多少年才拿到牌照，而所有的优惠政策都给了 合资企业，都不知道政府怎么想的。就这样，他都敢去吞并沃尔沃，先不说她能 否成功，就这份胆识和勇气。

网友 T：相信以后各行各业都会有这样真的勇士。

**段永平：**&#x90A3;只是在我们自己村。如果我们的电子产品能在日本本土占据优势，那 才说明我们真的进步了。日本企业强大了很多年，现在依然强大，我们有点像游 击队端了他们几个碉堡，未来的路还长着呢。

不知道如果一个破坏公司原则而给公司带来一点眼前利益的人是否是人才，这种 人在我们中国是太多而不是太少。你说的听起来只是故事的一部分。

网友 T：我举的例子最后是企业用这个方案出厂了，如果认为不合适，是不出厂， 一方面认可这个方案，但确告诉员工要循规蹈矩，这是希望员工学什么呢？这个 就是我一个同学的真人真事，如果步步高解决这个问题，有一个技术员提出似乎<br>

有些不合规矩的方案，但能解决这个问题，步步高是鼓励大家在解决问题的时候 敢想敢做，还是只按照原来的方式进行呢。

**段永平：**&#x5982;果解决了共振问题却带来了可靠性问题是绝对不可以接受的。我估计 你同学可能是这方面出的问题，否则不应该因为解决了问题而受批评。不是很想 再和你讨论企业问题了，有些东西对很多人来讲看起来确实要当过“老板”才容 易明白，哪怕是小老板。

网友 T：争论对你可能没提高，对我是有帮助的，你也不想你说一句什么话，总 没有不同的声音吧。

**段永平：**&#x4F46;我觉得你经常为输赢在说话，不太好。

网友 B：没做过企业的人和一个企业家争论企业，真好笑。

**段永平：**&#x5176;实不是因为好笑。有很多东西由于某些原因只能意会，没经历过的人 意会不了啊。

网友 E：实际情况可能是：30 年内能超越日本优秀企业的中国企业，将会是很大 的奇迹。

**段永平：**&#x4E2A;别企业有可能，整体则不可思议。如果像韩国那样搞国家资本主义， 国家狂推几个企业出来，在某些行业里搞出几个比日本企业还“大”的企业绝对 没问题，但对整体没好处。(2010-10-15）

04.网友：日本企业在消费电子方面似乎节节倒退，手机也没有什么出色的品牌， 再加上最近的神户钢铁事件，再想想在互联网企业或是现在的独角兽公司都没有 什么日本公司（有一个神级的投资公司 softbank 软银），国内开始唱衰日本制 造，我感觉日本在精密仪器和机器人自动化方面还是有不少积累的，在这两个方 面中国超过日本可能还要 20 年左右，那超过后，日本制造还有什么优势呢？不 知段师兄如何看待这些日本现象？

**段永平：**&#x6574;体上日本其实依然非常强，差距依然非常大。任何时候都不要小看日 本！（2017-11-24）

05.网友：你认为日本 sony、松下、东芝等等日企现在低迷的主要原因是什么， 有什么教训需要我们吸取？

**段永平：**&#x6211;觉得日本企业创新文化不够好，很教条。我们总体上还不如日本企

（2012-05-11）&#x20;

&#x20; 06.以前看到您对日本日企也有很多观察思考，我的这个看法是不是很有问题？ 我想再向您验证一下自己对于日本人和日本文化的一个狭窄面的认识是不是有 纰漏？

**段永平：**&#x6211;没你那么仔细地看过日本，但走马观花地看到日本确实相对干净，大 家整体都比较守公共秩序，在公共场合也比较注意怕影响别人，这点韩国人就差 一些。日本企业普遍较有规矩，也比较守信誉，但大企业病似乎比较厉害，多数 人都不愿意负责任做决策，所以这些年变化快的行业日本企业似乎很快就落后 了，比如手机。但有些行业还能看到日本企业厉害的地方，比如有些零配件。总 而言之，日本让人一言难尽但绝对不是不厉害的那种。（2019-05-21）

#### 3．丰田（TOYOTA）

01\. 丰田汽车怎么了？（2010-02-09 ）

**段永平：**&#x4E30;田汽车最近的大规模召回可能会对丰田品牌造成长期致命的伤害。如 果不召回呢？那将彻底摧毁丰田。那丰田该咋办？没办法，因为错在前面。不知 道到现在为止丰田的同学们找到原因没有？我猜的理由忒简单，就是跑得太快 了。经过很多很多年的努力，优秀的丰田在销量上终于成为了世界第一。在成为 世界第一的过程当中，丰田经历了一轮又一轮不停且快速的扩张。谁开得太快都 危险，丰田也不例外。也不例外的同学还有：花旗，雷曼兄弟，AIG，蒙牛...... 我这键盘怎么没有顿号呢？一路逗号打得好难受。本来就没学过怎么用标点符 号，好不容易有个会用的还找不到。例子不多举了，以后大家开车慢点，一定要 打安全带哦。

网友 S：企业为什么这样，段总肯定比一般人更清楚啦。

**段永平：**&#x4E30;田今天道歉时就是说他们的问题是发展太快造成的，呵呵，和我说的 一样。知错就改的就是好同志，丰田是家好公司啊，可惜股价没怎么掉，不然说 不定也是个好机会。（2010-03-01）

网友 O：我觉得丰田的精益生产还是有生命力的，不因为出了事就否定了整个丰 田和丰田对制造生产的贡献。

**段永平：**&#x4E30;田股价根本就没掉什么。（2010-03-01）

02\. 网友：丰田一定会没事的，它的企业文化本来就强，正如段总看到 GE 道歉 转而产生信心一样，阳光会在风雨后，越跌应该越买。

**段永平：**&#x6211;也挺喜欢丰田。本以为这次会有机会，结果到现在为止丰田就没怎么 掉（2010-03-29）

03.网友：您老讲 500 大，那能否对您认可的世界 500 强举例讲讲为什么？

**段永平：**&#x35;00 强就是 500 大，因为这是每年根据营业额统计出来的东西。我认为 如果为了追求进入 500 大而盲目追求营业额是危险的，但自然达到则是健康的。

自然成长而进入 500 强的公司往往能呆在里面的时间要长很多，而为进 500 大而 跑进去的往往呆不长就又出来了。（2010-04-30）<br>

**段永平：**&#x628A;“大”和“强”等同有点像把肥和健康划等号一样。（2013-10-09）

#### 4.三星

网友：请教三星企业文化问题出在哪里？他们家好像也注重“从顾客的角度来思 考问题，与顾客结成利益共同体 ”

**段永平：**&#x82F9;果是一家有“利润之上的追求”的公司。真正有这种追求的公司非常 少。

网友 H：如果可以的话，我希望能听听段总点评一下三星的企业文化。另外，从 自己的观察，苹果有一点跟三星很不同的是苹果比三星专注的多。

**段永平：**&#x82F9;果是一家有利润之上追求的公司。真正有这种追求的公司非常少。

（2014-08-04）

#### 5. 通用电器（General Electric）、创维

博文：我为什么买 GE（2010-03-29）

**段永平：**&#x4E00;直说有机会在这里讲几个我自己的例子，但一直不知道该讲哪个好。

这些年我碰过的股票其实也不少了，有亏的有赚的，就是没有一个从一开始我就 100%觉得自己一定能赚大钱的。不管买哪个，都觉得多少心里有些不踏实，呵呵。

想来想去，觉得 GE 可能比较有本人特色。

最早开始经营企业的时候，我最喜欢的可能是松下。后来慢慢对松下有些失望， 尤其是去大阪拜访过松下总部以后，确实觉得松下有些问题，慢慢自己也就不太 再提松下了。（以后有空我也可以在这说说到松下参观的感觉。）

大概也就是那段时间（应该是去松下之前），我们开始越来越多地反思我们自己， 希望能建立和加强我们自己的企业文化。那时我好像正在中欧读 EMBA，同时还 把中欧的一些课引进了公司内部。

在那段时间里给我印象最深的书就是 GE 的上一个 CEO 韦尔奇写的自传。在那本 书里我看到了企业文化对建立好公司的强大作用，同时对 GE 强大的企业文化留 下了极为深刻的印象。后来又读了韦尔奇后来写的书《赢》，更进一步了解到他 们是怎么建立企业文化的。

从那个时候起，我还花过不少时间去了解和思考 GE。去想为什么 GE 会是家百年 老店，为什么 GE 的董事会总是能选个好 CEO 出来，为什么世界 500 强里有 170<br>

多个 CEO 来自于 GE 等等。当时我其实就注意过 GE 的股票，觉得 GE 当时的股价 并不便宜（好像 40 左右），也就没再关心他的股价了。

从 08 年 9 月雷曼倒开始，金融危机的影响越来越大，整个市场风声鹤唳。到 11 月时我看到整个市场的恐慌情绪越来越厉害，当时就想，这大概就是巴菲特讲的 人们的“恐惧”要来了，也就是轮到我该“贪婪”的时候了。

开始的时候我并没有特别明确的目标，只是觉得市场上到处都是便宜货，就是不 知道哪个安全，好像每个都有很大问题，每个公司都可能要完蛋一样。我当时想 得最多的就是如何把手里的所有资源调动起来去抓住这一生难遇一次的机会。

到 2 月时，GE 已经向下破了 10 块。那时雷曼，AIG，Citigroup 等很多和次贷有 关的公司都已经破产或到了破产边缘，关于 GE 的负面新闻也越来越多，华尔街 上很多人都在说 GE 将会是下一个雷曼。

我知道 GE 过去好的时候每股能有两块多钱利润，就算以后差一点，危机过去后 怎么也会有个 1.5 块/股以上吧。如果我给他个 12-15 倍的 pe，怎么着这也应该 是 20 块以上的股票。所以，当 GE 到 10 块左右时我已经开始着手买一些了，但 还没有下大决心买。直到有一天当 GE 跌到 9 块左右时，我看到了 Jeff Immelt 的一个讲话。我忘了原话是怎么说的了，大致意思是，他认为 GE 的形象被破坏 了，这都是他的错。GE 将在未来几年调整其业务结构，让财务公司在整个公司 中的比例降到 30%以下。他还重申 GE 整体是安全健康的等等。

当时有问题的所有公司当中，好像我只见到 GE 出来承认错误并检讨对策，这大 概就是企业文化不同的地方吧？GE 是个巨大的公司，我也曾试图想看清楚 GE 到 底都有哪些业务，也试图想分析清楚他所有的业务模式的优劣，但发现非常难。 我能看到一些非常好的模式，同时也能看到一些不太好的模式。

最后让我下决心出重手的决定因素还是我对 GE 企业文化的理解。我认为金融危 机并不会摧毁 GE 强大的企业文化，GE 的问题只是过去的一些策略错误造成的， 假以时日一定可以改正。伟大公司的错误往往就是千载难逢的投资机会（呵呵， 有人也把这叫投机）。

想明白以后的事情就简单了，后面的一段时间我几乎每天都在忙着买 GE，不停 地想办法调集资源，从 9 块左右买到 6 块再买到 10 块出头，好像到 12-3 块后还 买了些（有些钱是后来从别的股票调过来的）。直到 GE 股价比 YAHOO 高以后才 停了。当时曾经还动过用 margin 的念头，后来觉得不对的事不做的原则不能破， 就算了。

回头来看，去年我买的股票当中 GE 并不是涨幅最大的，但确实是我出手最重、 获利最多的且担心最少的股票，其原因只能说是我对 GE 企业文化的了解最后帮 助我做出了一个很重要的决定。也许就是个运气？

其实当年我买万科和创维好像也有类似的感觉。顺便提提创维，因为有博友问起 我为什么买创维。创维和我们算是同行了，他们这个公司到底怎么样我们多少还<br>

是了解的。由于体制的因素，我个人一直认为创维是中国彩电行业里最健康的企 业了。虽然当时出了些事，但公司最基本的东西并没有因此改变。我们买创维时 创维的市值好像还不到 20 亿（我不太记得了，也有说 20 出头的），我怎么想都 觉得便宜，就买了。我们是买到差一万股到 5%的时候停的，因为再买就要公告 了，所以很想在公告前和黄宏生沟通一下，怕人家以为我要去抢人家那一亩三分 地，呵呵。结果当时由于不太方便，最后我们就没有再买。一直到前两个礼拜才 和黄老板通了个电话，道个谢，问个好啥的。对创维而言，我并没有一个很清楚 的到底值多少钱的概念，对他们现在的业务情况了解的也不细，所以涨上来以后 就一直在陆陆续续减持，现在可能还剩不到最高持有量的 20%了。我觉得现在买 的人可能比我更清楚创维的价值，后面的钱应该是他们才能赚到的。

（2010-03-29）

网友：押宝企业文化啊，这个太感性了，能不能换算成账面利润？逻辑上企业文 化似乎只能折现成无形资产才好评估，价值几何不好测算哈。

**段永平：**&#x5475;呵，不是押宝是理解。我其实是有一定量化的，你也许没注意。我的 观点是企业文化能保证他长期实施量化。

我在投资里用定性分析确实比较多，这也是我和华尔街分析家们的区别，不然我 怎么有机会啊。（2010-03-28）

网友：那文化可以量化吗?&#x20;

&#x20;**段永平：**&#x91CF;化的单位可能是年吧，就是说有好的企业文化的公司活得长的概率要                          大许多。（2010-05-23）

**后记：**

01.网友：段总对现在的 GE 怎么看？（2017-10-22）

**段永平：**&#x47;E 产品太复杂，现金流也不好，居然还一直分红，不容易搞懂。虽然 现在价钱已经回到我几年前卖掉时的价钱了，我依然不太有兴趣，但作为基本文 化不错的一家公司，还是可以关注一下的。（2017-10-22）

**段永平：**&#x6700;近偶尔有人会问我 GE 掉下来了，是否值得关注。GE 以前的文化我是 喜欢的，前些年我也曾经买过不少 GE 的股票。后来卖掉 GE 的一个很重要的原因 是，有一天我去 GE 的公司主页看了一眼，发现根本找不到我在杰克韦尔奇书上 看到的他对 GE 的文化的描述，后来发现当时的 CEO 居然有“去韦尔奇化”的倾 向，加上这家公司的生意实在是太复杂，所以我就统统卖了。现在价格已经显著 低过我当时卖的价格，但我还是没提起兴趣来。（2018-01-20）

02.网友：请问下怎么看待 GE 退出道琼斯指数？ 是 GE 的赛道出现了问题，还是 GE 本身企业文化出现了问题？<br>

**段永平：**&#x47;E 这些年确实出了问题，CEO 出差居然有另一家飞机随行，更恐怖的是 CEO 居然说不知道，还真没见过这么不靠谱的。（2018-07-01）

03.不明真相的群众: 你有没有做过这样的交易：赚了钱，事后却发现事实或逻 辑搞错了？

**段永平：**&#x6211;的特斯拉就是典型哈。认真想来当年的 GE 也算是买错了，放在今天 我大概会做不一样的决定。我们在 GE 上的收获也还是不错的，好像是 9-6 块买 的，20 出头卖掉了。当时卖的原因就是我突然发现我买的 GE 和我想象的那个不 一样。（2018-10）

不明真相的群众: 什么事让你发现不一样？

**段永平：我是看着基业长青的书和韦尔奇的书买的 GE 哈。杰克韦尔奇说他们的 企业文化里最重要的一条就是 integrity，他还说过不少企业文化的东西，结果 后来我发现在 GE 网站上居然都找不到。当然，还有一个很重要的原因是，GE 的 生意太复杂，我看不懂。再就是，我有点怀疑这家公司 cooking book，因为他 们的 earring 老是刚刚好。简而言之，我觉得当初买 GE 是欠妥的。（2018-09-21）**

不明真相的群众: **杰克韦尔奇本人，他的“战略”我也是有疑惑的。他入主 GE 早期做的一些战略，看起来是不错的，主要是聚焦、做减法，但到了晚期，又 走回去了。**

**段永平：这个我同意。我当时一直都说，从来没见过企业多元化成功的例子， GE 是个例外。现在看来，时间长了都不行哈**。（2018-10）

**6.比亚迪**

博文：车祸 （2010-03-06）

**段永平：**&#x4ECA;天去观澜湖打了场球。去球场的路上看到一起车祸（12：30 左右）， 有辆车底朝天地躺在路中间。本以为肯定和突然自动加速有关，但仔细一看牌子， 居然是个和巴菲特有关的牌子。希望车里人平安无事。

01.网友：好多新闻说到比亚迪的车不行的。在品质方面比亚迪的车可能还是要 有很大的改进的。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x5E0C;望开所有车的所有人安全驾驶。（2010-04-13）

02.网友：上周买车，看了拆车坊，本来要买 12 万的车，最后选了 15 万的大众 的 GOLF，现在觉得好贵哦，&#x20;

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x5728;一定范围内，买车就应该尽自己所能买安全性能最好的车吧？我最早 开过便宜的车，觉得车就是个代步的工具而已，出个事之后就明白了。希望大家 看到别人出事之后就能明白，自己出事后有时候会明白不过来的。<br>

不知道网上能查到各种车出事的概率的资料不？另外，发达国家的检测标准也是 可以看一下的，有些道理在里面。（2013-04-16）

03.网友：最近媒体有报道，BYD 又要进入家电行业了，他已经跨了好几个行业 了。段大哥有什么评论吗？

**段永平：** ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)（2010-07-13）

网友 D：BYD（比亚迪）已经被冲昏头脑了，中国这种企业很多，一个做得好了， 就觉得自己样样能做。所以中国很难出现“百年老店”。根本不懂什么叫专业。 看一下德国企业吧。

网友 S：这跟段大哥提倡的焦点法则不太符合啊!

网友 C：更健康，更长久！

04.网友：比亚迪现在的车有小毛病不碍事吧。我觉得它的新能源车是很宽的护 城河。

&#x20;[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6CA1;兴趣。幸福的家庭都是相似的，不幸的家庭各有各的不幸。

（2010-10-11）

**段永平：**&#x6211;认为 BYD 就是没有“护城河”的企业，事实上，BYD 是刚刚越过了别 人的护城河，但对老巴而言，依然是个非常好的投资。（2010-05-22）

05\. 网友： BYD 的成本优势应属于护城河，而且是比较重要的护城河，你认为 呢？&#x20;

**段永平：**&#x5475;呵，还没见过成本优势可以成“护城河”的，很少有企业能长期维持 低成本的，制造业好像没见过。而且靠自己产品卖低价的企业就很难有长久的， 至少我没见过。这是我的观点，和 BYD 无关。（2010-05-24）

06.网友：谈到新能源，比亚迪回归 A 股，是 A 股价值投资者的一次机会吗？ [**段永平**](http://nteswjq.blog.163.com/)**：** 你问的是什么机会？

**到目前为止我还是没完全搞懂 BYD。我觉得王传福是个对商业机会很敏感且非常 用功的人，但不是很明白为什么他们现在还在 4 面出击，同时还要借那么多钱。 这次在老巴那里还和王传福一起吃了个饭并聊了一会，但时间有限，没能了解 太深，有待进一步了解。如果 BYD 的储能柜真的能做成的话，那可是大事，因 为目前利用太阳能最大的问题就是还不能有效储存能量。可是，BYD 现在的业务 很散，给我的感觉好像是没足够信心集中精力在能源产品上的样子。**

**另外，我不太喜欢他们的中国第一和世界第一的那些个目标，那些个东西消费** **者其实不关心。你看看苹果什么时候说过要提高市场占有率了？苹果总是说且**<br>

**只说要做最好的产品（消费者最喜欢的产品）。**

**为了达到第一的目标（实际上是数量上的第一），企业一定会做些很奇怪的事** **情，比如价格战，比如因为过于急于上量而导致的质量问题等。当我看到他们** **说把** **2015** **年成为第一的目标推迟到** **2018** **年的时候，我就觉得他们还没有明白 过去在哪里出了问题。当然，如果王传福真是像芒格说的那样是个爱迪生和韦 尔奇的合体超人（超人是我加的），那可能一切就都是对的。但这些超出了我 的理解能力范围，所以我自己不会去抓这个机会。**（2011-05-11）

07.网友：段大哥，品种越多，占用的渠道库存越大----是不是说会给经销商增 加负担&#x20;

**段永平：**&#x7ECF;销商的负担难道不是自己的负担？怪不得有人为了 2015 年成第一而 向经销商压货呢。（2011-04-09）

08.网友：以前听到有人说我们的企业的目标是全国第一很激动，现在更冷静了 一些特别是那些把市场把第一当唯一目标的。推荐大家看看比亚迪的愿景片 <http://v.youku.com/v_show/id_XMjE3NTMxNTEy.html> 我是看了这片子对比亚迪 开始刮目相看的 2011-10-02

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x613F;景的意思是大家的共同远景，是可实现的。（2011-10-02）

09.网友：真正的一时风头无两，最重要的是全球范围啊！不知道比亚迪汽车过 几年会不会有这样的奇迹

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6211;估计我们打败苹果的奇迹会先发生。（2011-05-07）

10.网友：你以前说过这样一句话：如果中石油回到当年巴菲特买的价钱，我会 毫不犹豫跳进去，因为我后来看懂了。如果比亚迪回到当年巴菲特买的价钱，我 还是不会买，因为还是不懂。段总，你能说明一下为什么你看懂了中石油，而没 有看懂比亚迪吗？&#x20;

&#x20;[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6211;现在觉得有点明白芒格为什么投比亚迪了。如果我能有当时一样的条 件，我也可以投。大概就是个未来现金流折现的问题。芒格投 20 亿（的 1/10） 在 40 出头的王传福身上，认为他未来 20 年（或更长）肯定可以给出多倍回报。 这么看王传福的话，当时那个价确实便宜。（2010-06-21）

网友 S：关于入股比亚迪，巴菲特在前晚举行的晚宴上回忆说：“51 年前我认识 了查理·芒格。他这些年给我一共打过三次电话，讲过三个自己的主意。两年前 他打电话给我说有一个主意是他长这么大最好的一个主意，这个好主意就是比亚 迪。而且查理·芒格跟我说，我要是不买比亚迪的股份，他将永远离开我。”

**段永平：**&#x4E0D;会的。巴菲特说的是他自己的观点。我相信现在他确实就是这么认为 的。（2010-09-29）

网友 S：不明白芒格为何如此的看好 BYD（比亚迪）。

**段永平：**&#x6211;也一直认为买 byd 不是老巴的风格。无论如何，芒格的面子是要给的， 结果也很好。（2010-09-29）

11.网友：最近有一些报道主要关于是比亚迪的问题方面的！我想，也许是比亚 迪的车开的速度太快了，所以也出问题了！其三季度利润下降非常大（99%）， 从这样看，比亚迪不仅仅是在把事情做对上的错误，而是过于追求大，追求利润！ 如果真是那样，王传福就犯大错误了！巴菲特投资比亚迪，应该是看好王传福！ 这次巴老是否错了呢？你如何看！

**段永平：**&#x6BCF;个活人都会犯错。你要想投个不犯错的公司的唯一办法就是不投。关 键是看人犯的是什么错和是否有机会改。从投资的角度讲，巴菲特投比亚迪可还 是赚大钱的啊，你为什么认为他错了呢？这些在发生的事可能早已经在他的预见 范围里了。（2011-02-26）

12.[引用：王传福为何敢大举高调进入电动汽车？](https://xueqiu.com/3191943504/20616953)2011-12-25  我一直没想明白一件事。昨天同一帮曾投比亚迪赚过大钱，然后又因它而受重伤 的朋友们聊了很久，似乎解开了这困惑，但也不敢确定。现将这些困惑及可能的 解释写出来，希望思享家的享友及博客的读者能提供相关的信息及讨论。 我没 想明白的事是，比亚迪的电...

网友：任何一种前瞻技术投入面临的风险都是不小的，市场能不能起来只是时间 问题，最怕的就是选错了方向。我一直认为王传福是一个务实的人，比亚迪很早 就开始切入电动汽车的研发，我相信他们还是很认真的。只不过在后期市场比预 期相差太远，所以给人的感觉他们是在利用电动汽车来赚眼球。当然也不排除他 们尝到甜头后顺势而为。高速扩张过程中面对诱惑，迷失方向是常事。不过，比 亚迪的问题比我预想的要严重得多，它的安全问题被曝光后让很多人大跌眼镜。

**段永平：** “很多人大跌眼镜”让我的眼镜也找不到了。（2012-01-31）

12\. 《商界评论》主编李彤曾：巴菲特投资比亚迪犯了“八戒”

巴菲特投资比亚迪，目前仍有几倍盈利，未来前景如何？如何评价这笔投资？《商 界评论》主编李彤曾的看法有道理吗？下面是原文。 巴菲特投资比亚迪有可能 是一次经典的失败，因为他违反了自己一贯的投资风格。这些风格可以概括为 “八戒”。 1 戒投机 巴菲特是价值投资的发起人、倡导者和代表人物。而……

网友：巴菲特投比亚迪确实让人看不懂，[@大道无形我有型](http://xueqiu.com/n/%E5%A4%A7%E9%81%93%E6%97%A0%E5%BD%A2%E6%88%91%E6%9C%89%E5%9E%8B)  能否解惑下。

**段永平：**&#x5DF4;菲特投比亚迪吗？1.巴菲特一直说他开始是不愿投的，是芒格一再 “逼”他投的。2.他只投了他管的钱的千分之一，大家还是不要太当回事的好。 他只不过是想试试。我觉得他真正的错误是说了些不该说的话而已。（2011-10-24）

**段永平：**&#x5475;呵，他说的这几条都有道理，但其实老巴唯一错的地方是对 byd 说得 有点太多。老巴“投”byd 其实只是花小钱给芒格一个面子，或者说是个犯错误 的机会。老巴实际上一直不太情愿投，但芒格可能是受别人影响，对 byd 感觉太 好。实际上从某个时间以后，老巴就再也不提 byd 了，你懂的。（2012-02-13）

网友 Q：巴菲特投资比亚迪失败了吗？ 以他们购买的价格计算好像不是吧！我 觉得不要过早下结论。

**段永平：** 现在应该还有 200-300%的利润吧？但老巴说了他不会卖的，10 年以后 就不好说了（2012-02-13）

网友 D：是人都会犯错，不要真把他当作神了，更没必要帮他掩饰错误。

**段永平：**&#x90A3;么说我买的那点新浪也算犯错误了？本人是很理性看待这个问题的。 记得当年刚刚知道老巴买了比亚迪时很是纠结了一阵要不要给他发个 email 说 说我的看法，但后来想通了这其实不是他的典型投资，所以从来没对他说过啥。

（2012-02-14）

13.网友：想请教段总对比亚迪的看法，比亚迪今年有 3 款重磅车型要发布，如 果新车配置参数真实的话，我想比亚迪新车型会大卖，盈利会大涨，加上电动车 概念，混合动力技术，想象空间应该很大。纠结的是现在的市盈率 40 倍左右， 股价已经不低，还有害怕王传福是吹牛。想请教段总，像比亚迪这类 PE 很高， 业绩有高增长预期的公司，是否值得投资？

**段永平：**&#x60F3;象一下拿 10 年的感觉吧。（2013-02-28）

14.引用：比亚迪半导体再引资 8 亿人民币 比亚迪持股摊薄至 72.3%  比亚迪股份(01211.HK)公布，控股子公司比亚迪半导体与 30 位投资者签订第二 轮增资协议，拟向比亚迪半导体合计增资约 8 亿人民币，取得约 7.843%股权。 完成后，公司于比亚迪半导体持股将摊薄至约 72.301%。

&#x20;**段永平：**&#x6BD4;亚迪半导体？比亚迪口罩？看来汽车不太赚钱，商业模式不是那么                                      好？(2020-06-16)

**7.华侨城**

01.网友：你了解华侨城这家公司吗？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x77E5;道。住过东部华侨城，印象不太好。其他好像还行。整体管理水平有 待提高。（2010-09-14）<br>

02.网友：段总在哪说要研究华侨城的企业文化了？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6211;说过。我觉得华侨城的 business model 还行，我只是想了解对这家 公司长期而言，其企业文化会产生哪些影响。2011-03-05

03.网友：这两天上海和北京欢乐谷的项目都相继出现故障，还好没有人员伤亡。 两起都是机械故障，不知道迪士尼相类似的故障几率是多少，还是华侨城管理水 平不够？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x53C8;出事故了？（2011-04-30）

网友 X：事故是谈不上，都是机械小故障。近 40 名游客在北京欢乐谷内乘坐特 洛伊木马时，设备意外出现状况，游客被困无法动弹近 20 分钟。上海欢乐谷我

看错了，是前两三个月的事情，上海欢乐谷过山车突发故障 25 名游客悬空半小 时。不过，老是发生这种小故障也很不好的。很影响消费者的情绪。

网友 M：身处一个连关系民生的猪肉牛奶都出问题的大环境，欢乐谷出一些事故 是很难避免的，可以予以一定的理解吧。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x600E;么理解？你坐飞机的时候也这么想？（2011-05-02）

04\. 网友：您认为东部华侨城的那个事故是在“把正确的事做对”的过程中犯的 错？方便谈谈您对那个事故的想法吗？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x542C;说是为了省钱而犯的致命错误。从他们事后的处理看，应该是知道错 在哪里了。我住过一次东部华侨城，就觉得那里的管理有大问题，比洲际酒店差 一大截，没想到最后还会出这么大的问题。不过，我倒是在那以后才开始对这只 股票有兴趣的。（2011-03-23）

05.网友：我记得您以前投资过华侨城，和 10 年前相比，华侨城的净利润增长了

10 倍，而且未来三年的 20%以上的增长也非常确定，连续 17 年 ROE 不低于 15%， 从财务上看，是非常优秀的企业，可是股价还是和 10 年前差不多，是公司真的 被低估还是所谓的投资陷阱呢？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6211;很久以前确实买过，但后来觉得看不懂就退出来了，没有再跟踪过。 如果按你的数据，那这个公司似乎确实不贵，但我还不太了解其商业模式，企业 文化和公司治理结构。有空时可以再看看。（2019-04-21）

### 8.格力电器

01.网友：请教博主认为格力公司如何？

**段永平：**&#x683C;力是好公司（ 2010-03-30） &#x20;

02.网友：格力听说是先收款再发货的，甚至是预付，牛。

**段永平：**&#x5475;呵，难道还有别的办法可以活下来的？（2010-03-30） &#x20;

03.网友：家电行业分很多种，电视机，冰箱什么的，空调在当时是国内品牌占 有率最多的家电行业，格力，美的和海尔三家基本已经明显的显示出来会在中低 端空调的优势，而高端空调如果不出意外，也会在这三家里排座次，而其他的电 视机，冰箱，小家电，厨具等就没那么明显，电视机竞争最激烈，主要来自日韩 的竞争，冰箱稍好一点，但也主要是日本货的冲击，小家电厨具什么的因为门槛 低基本上不怎么考虑。综合当时的考虑决定在美的，海尔和格力里面选，当时内 心的印象是美的第一，格力第二，海尔第三。

海尔因为核心业务是冰箱，另外本人也比较懒，没时间去青岛，因此就没怎么留 意了，剩下的美的和格力都去过他们的公司去参观，也冒充过几个角色套取一些 信息。真正决定买格力不是美的的是因为一个标语，我去格力的时候，有一个厂 房的标语：“早上吃好，晚上早睡”。美的的标语是：“大战九十天，创造新辉 煌”。回来后又问了一些格力的工人当时的工资格力大概 2200，美的只有 1600 多。其实知道这些的时候，我就决定选格力而不是美的了，实际证明我的做法是 对的。

**段永平：**“早上吃好，晚上早睡”。呵呵，这就是企业文化了。你能从这点看到 企业的差别，说明你已经是高手了。记得大概 10 年前，有个招行的朋友就和我 谈起格力空调，说觉得有很多地方和我们公司挺像的，呵呵，我觉得他们很多地 方做的比我们好，当然我们也做得还行。（2010-05-28）

04\. 网友：有个人问董明珠，为什么最近格力的股票跌跌不休，她说我只对我的 投资者负责，不对投机者负责；她给这几者的排序是：1，消费者，2，员工，3， 社会责任，4，股东；格力一线员工年薪 3 万，如果哪个员工或家人得了绝症， 医药费就算几十万也能解决。

**段永平：**&#x8463;明珠对企业的理解非常好 ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif)。（2010-05-27） 06．网友：担心董明珠退休后接班人的问题。

**段永平：**&#x8FD9;正是我担心的地方，不然现在这价就不贵哦。（2010-07-07）&#x20;

&#x20;网友：董明珠很少公开谈到接班人的问题，只说过公司有很多自己培养的年轻人 很优秀，如果她打算 5 年后退休，现在应该还在考察阶段吧。

&#x20; 记得段总以前提到一个逻辑，好的企业文化——好的董事会——好的接班人，以 她对格力的感情，相信她退休后很长一段时间还是会以某种方式（比如做董事长） 做巴菲特所说的“企业文化看护者”，退休后短时间企业文化就出问题的可能性                                                  应该不大。

**段永平：**&#x8FD9;种机制要维护文化不容易 。（2010-07-07）

07.网友：我持有格力五年。现在很担忧的地方，我认为格力没有好的文化传承。 如果董大姐退休了。格力还有这份坚持 ？

**段永平：**&#x90A3;是你买的时候要考虑的东西。 08.网友：我也认为它是一家好公司，虽然生意模式不是太好，但其他几个方面

（管理能力，产品技术，品牌等都很好），只要董明珠还在任上，我也会一直持

有。

&#x20;**段永平：**&#x8463;姐确实是非常非常难得的了不起。只是没办法知道哪天她退休后这个 机制下如何能够保持他们现在的文化。（2013-02-14）&#x20;

09.网友：您对国内家电产业有什么看法么？感觉这个行业受国外品牌的冲击在 减少？

**段永平：**&#x5F88;难找到好的投资标的。（2013-08-31）

网友 S：格力不错，也不贵，去年赚 70 亿，董姐说今年能赚 100 亿，现在市值才

700 多亿。最大的问题是董姐退休后能不能保持现在的文化。

**段永平：**&#x31;0 年后会怎么样？（2013-08-31）

网友 S：空调是耐用品，一般人会认为质量很重要，同级别的产品格力的质量要 好一点，这一点用户是知道的，随着收入的提高越来越多的人愿意多花点钱买台 质量好一点的空调，这是格力的市场占有率多年来不断提高的根本原因，同时格 力每台空调还能比其他空调卖贵一点，在每台空调上多赚点钱，格力每年卖几千 万台空调，每台多卖个 100 元就能多收几十亿。

格力很专注，空调市场很大：国内市场普及率的提高、国外市场的蚕食、中央空 调、上游配套，未来 10 年格力的空间还很大。

10 年后格力卖出的空调会比现在多得多，由于产品的更新换代，格力在每台空 调上赚的钱也会比现在多一点，10 年后每年应该能赚 200 亿以上？格力的价值 在 3000 亿左右。

空调不算个重资产行业，每年需要的资本开支不大，按现在的分红比例和趋势， 未来十年内应该能分个 500 亿，好点的话分个 700-800 亿，则以现在价位买入的 股东的成本完全收回。

格力有自己独立的销售渠道，大零售商销售格力的产品比例不高。

最近两三年已经没有听说谁想投资做空调了，除非有革命性的技术突破，否则这 个行业不会有什么新的进入者。<br>

**段永平：**&#x4F60;这么看确实有看 10 年的意思，具体看法对不对是属于如何把事情做 对的范畴。我对格力不那么了解，觉得过去他们确实做得不错，但对朱江洪的离 开方式很困惑，也不知道 10 年后的企业文化会变成什么样子。（2013-09-03）

10\. **白云山**   &#x20;

但斌: 凭什么就一定说广药不行？

许多朋友和我聊起广药，多认为国企做不好快消品做不好王老吉，而加多宝的某 些人也认为广药是“扶不起的阿斗”。可行不行，国共还打了三大战役才分出胜 负，不打几次商战凭什么就一定说广药不行。如果选择，广州市政府拿百亿发展 汽车工业不如……

**段永平：**&#x4E0D;是很了解广药的治理结构和文化。但如果机制不对，即使像塔山这样 的东西也会不行的。国营企业如果碰上类似格力董姐这种还是可以好一段时间 的，但没有持续的好办法。（2012-07-06）

11\. 网友：看了段老师的许多以中国大陆地区为主要市场的投资对象和观察对 象，包括：投资过的：YAHOO（雅虎）背后的阿里巴巴，网易，创维，万科，游 戏股：巨人，完美，畅游等；您看好而没有投资过的：腾讯，格力等；大体上按 照通俗的所有者和所有制分类，都是民营企业。 在您对于创维的评价中，您说：由于体制的因素，我个人一直认为创维是中国彩 电行业里最健康的企业了。 您也说过当时美国某家渠道公司也来找了步步高，一听说要开无法撤销信用证掉 头就走。而这家渠道公司造成了当时最大的一家国内彩电企业多年后一次性巨量 撇账，这家彩电企业是国企，当家者也是当年红极一时的企业家。 印象里，还有一次，是您谈到海尔的时候，原文我没有找到，也有些记不住了， 我个人理解的意思是:您欣赏张先生这位老大哥，但是老大哥式的企业由于体制 的原因或者其他原因而影响了发展（这里没有找到具体文字，有些不确定）。 而您看好而没有买入的格力，除了或有的价格因素之外，您说：印象中格力空调 好像也还不错，就是不知道现在的高层还能干多久。 我个人理解这其中其实也包含了体制问题。60 岁年龄，Bartz（巴茨）可以继续 干，董明珠这样优秀的企业家就要退下来。 我个人看了王石的“道路与梦想”，也讲到了他曾特意去探望当年红塔集团的褚 老先生，看得出这位无畏的硬汉心中也有不小的感慨。当然王石先生很早就认识 到了这个问题，通过持续而不断的努力，终于将万科的所有制结构股权结构改造 的更加合理，管理层有比较大的工作空间。 正正反反的例子，加上投资者投资就是买入企业和企业未来的出发点，想请教段 老师：体制因素和其带来的对于企业经营以及企业文化的考虑，是否是我们这些 更多投资于国内企业的投资者应该多注意的呢。

&#x20;**段永平：**&#x53EF;能我在体制内的企业呆过，所以比较敏感，知道有些什么区别。这种<br>

区别不是随时都在，也不是哪里都能显现出来，但往往关键的时候就会发挥一些 看不见的作用。（2010-08-14）&#x20;

12.网友：一直以为护城河是确定未来现金流的唯一办法，现在看来似乎并不是 唯一，或者说只是确定未来现金流的一部分而已，企业文化是另外一部分。

我想问一个问题，如果企业现在不错但原来的 CEO 退休了，换了新的最高决策层， 您是否会卖出或者随时准备卖出来谨慎的观察一下新的决策层的表现呢？有或 者认为企业文化跟这个新的 CEO 关系不大呢？

**段永平：企业文化可以看着是护城河的一部分。换 CEO 对任何公司都是会有影 响的，但企业文化强大的公司往往能选出好的 CEO，从而能让公司继续好下去。**

（2011-01-09）

### 9.美的

01.网友：步步高的生活电器我也注意到了，但好像销售力度不大呀，至少我 在北京的家乐福超市没怎么注意到过，比如说豆浆机。生活家电，我觉着美的 的相当不错，因为家里用的电饭煲，微波炉都是它的，豆浆机也倾向去它，我 很欣赏阿段前辈，做人做事，也很喜欢步步高的产品，但关键是之前没用过， 比如小家电，所以购买时候难免犹豫。还有，我很看好美的电器这家国内公司， 但它的股价相对于价值，投资的安全边界不够大，也许是我水平低吧，没搞懂 它。阿段前辈，你觉着这家公司怎么样呢，投资价值大不大呢，同处一个行业， 应该更了解吧，要是不好回答也没关系。

**段永平：**&#x7F8E;的是我们尊重的竞争对手（也叫竞合伙伴）。美的能够在市场上这 么多年一直不错，一定有它的道理。投资角度上我没有研究评估过，你可能要 自己认真看了。我们进入生活电器这个领域一定是因为看到了某种机会，我们 需要一些时间去证明。（2010-03-23）

网友：看好生活电器这块的，主要是 BBK（步步高）的代理体系太强大了，而 且对公司的认同和责任感和荣誉感太强了，执行力和能坚持持久战的精神太可 怕了，BBK 的几个产品线基本上最终都做成了行业的前 3 名，消费电子行业基 本没有这样的渠道，即使是最基层的促销人员都以在 BBK 工作为荣！伟大的公 司，相信是真真可以做到的百年企业！

**段永平：**&#x8C22;谢鼓励啊！其实我对生活电器挺没底的，主要是不在一线很久了， 不太了解。（2010-03-26）

02.网友：美的、九阳紫砂锅被爆虚假宣传，内胆原料泥竟是田土。这么知名的 企业也会犯这么低级的错误？！也许是文化的问题，文化不是挂在嘴边说给别人 听的，而是烙在自己心里，表现在行动上！

**段永平：**&#x6211;也不知该说啥，反正我们不会允许这种事  ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif)。（2010-05-24）<br>

03.网友：锰会在高温条件下（通常是 900-1300 度，陶瓷的烧制温度）被固定在 晶格的结构中，不可能被稀释出来。锰的毒害性在这种情况下可以被忽略（一个 是因为其成分少，一个是因为其被囚禁在晶格中，再个做饭时不会使用强酸）。 我们知道铅的毒性，但是铅在最严格的欧洲环保法规 ROHS 指令里面在电子陶瓷 里面的禁用也是被豁免的，也就是说欧盟法规认为铅在电子陶瓷中的应用是无害 的，其原因也是陶瓷中被高温烧结的铅，是被“囚禁”固定在晶格中，无法逸出 害人。

因为我有间工厂专门做软磁材料与产品（麦格磁电），所以对该产品了解得较细 致，以上供大家参考。希望上述解释对大家有用。

对美的的这个危机而言，最彻底的做法是做对比化学分析，所谓“不怕不识货， 就怕货比货”。但是剑是双刃的，如果对比结果一样，皆大欢喜；不一样哪，客 人估计不会买账了。如果不一样，那么美的真的太山寨了就。

**段永平：**&#x5176;实最不好的是把合成紫砂说成天然紫砂，后面的只能够安抚一下用过 的人，但后果已成，只能慢慢消化。所谓病来如山倒非一日之寒，病去如抽丝非 一日之功啊。我看到他们处理这事还是挺诚恳和迅速的，这个态度能补救很多。

希望所有人引以为戒，我们实在是有太多太聪明的人了。（2010-05-27）

04\. 网友：这个问题太大了！那些化工原料是要吃进肚子的！品牌不就是为了安 全放心吗？全因为“美的”的牌子，我才敢买他们的便宜电饭煲，如果只靠便宜， 有的是更便宜的！真不明白，为什么要这样呢？为什么会这样呢？又不是山寨厂 子！真的让人很愤怒！&#x20;

**段永平：**&#x5475;呵，知道为什么我说好的企业文化是“护城河”了吧（2010-05-26）

网友：段总说的认为消费者是理性的，其实做人应该也是这样，不要自作聪明， 踏踏实实做好自己的事情。

**段永平：**&#x662F;这个意思。  （2010-03-28） &#x20;

05.网友：10 月 29 日消息，今日上午，美的集团董事局主席何享健宣布，截至 今年 10 月，美的集团销售收入首次突破 1000 亿元，预计全年将突破 1100 亿元。

他同时提出“再造一个美的”目标，要求集团在 2015 年实现销售收入 2000 亿元。

美的集团也在今日公布了 2011-2015 年的发展规划，其主要的战略是继续保持规 模化增长，将拓展以家电为核心的相关多元化产业发展；加快对海外市场开拓； 加大在国内三四线城市销售力度。

段总对格力还比较欣赏，能谈谈美的吗？如果真的能够在 5 年销售额翻番，这个 公司还是值得关注的吧。

**段永平：**&#x5065;康最重要。（2010-10-30）

06.网友：美的它发展很快，不可否认它的收购和并购都很成功，你估计步步高 会不会这样做？或者继续练好自己的内功？

**段永平：**&#x6211;们不会走 M\&A，就是收购和兼并这条路去发展。我们这种办法短期看 来好像慢很多，但从 10 年 20 年的角度来看，有可能是最快的。很累但很有成就 感。（2010-03-25）

07.网友：[诊断美的](https://xueqiu.com/3533335030/21469759) 曾几何时，美的集团在中国家电市场攻城略地，将整个家电 江湖搅得血雨腥风，营业额高歌猛进，似乎不把海尔从头把交椅拉下誓不罢休。 如今，大裁员的背后折射出其经营管理的困顿。这背后，是营销驱动的粗放式扩 张，以至于渠道模式翻来覆……

&#x20;**段永平：**&#x8FD9;个结局是由其生意模式决定的，早晚都会来的。作为投资者要尽量避            开这种生意模式。（[2012-02-19）](https://xueqiu.com/1247347556/21470364)

### 10.金山的文化

01\. 网友：游戏公司比较难把握倒是真的。之前金山的剑侠情缘 3，玩家很期待， 我进去看了下，画面很美，我以为还不错，谁知道，现在没多少人玩了。投资游 戏公司，还真得像段大哥这样，先做个资深游戏玩家再来说。

**段永平：**&#x91D1;山的文化有问题，游戏不可能长久。 网友：不知道段总怎么看出来的？可以列举几点吗？

**段永平：**&#x91D1;山的游戏很短视，周末 16 倍经验（也许更多）都出来了，好像以后 日子不过了一样。等等。（2010-07-09）

网友：说实话自己不太玩游戏，有一个问题，像游戏的研发团队这种的话段总会 怎么去了解啊？

**段永平：**&#x770B;产品其实就知道，不过花的时间多。有机会能接触最好，可以了解到 他们的心态。我印象中网易游戏部门的几个头的心态真不错，不然我猜网易游戏 很难有今天。

02.网友：我有个问题想请教一下，您说金山的文化有问题，请问如何去评判一 个企业文化的好与不好呢？

**段永平：**&#x5F88;难判断一个企业文化是否好，但看出不好的企业文化要容易得多。

（2010-07-10）

### 11.雅虎（YAHOO）

01.网友：想和段总探讨一下，雅虎有什么优势么？&#x20;

**段永平：**&#x6211;想我从一开始就说的很清楚，我买 yahoo 是为了买淘宝和阿里巴巴集<br>

团。所以 yahoo 只要过得去就可以了。（2010-06-01）

网友：今天在图书馆看了一本 98 年出的关于 Carol Bartz 的书，感觉她的思路 很清晰，企业毕竟都是人做出来的，我觉得 Esquire 这篇文章里 Carol 举的苹果 例子还挺好的，苹果前几年也是没啥创造力。

**段永平：**&#x43;arol 是我最后下决心买 yahoo 的原因之一，至少觉得她有机会不把 yahoo 继续往深渊里带。投资就是这样，很难找到一个完美的目标。（2010-05-05）

网友：段先生看中是 YAHOO 手中阿里集团股权。YAHOO 看起似乎基本上也出不了 什么乱子。

**段永平：**&#x662F;的。事实上，我觉得新的 CEO 还行，做的事情我比较认同，不然也不 敢下手。（2010-06-20）

网友：段老师，能谈谈您对雅虎的现有企业文化的理解吗？&#x20;

**段永平：**&#x4EE5;前的 yahoo 的文化不太好，有点乱。现在在调整过程当中，至少开始 聚焦了。总而言之，yahoo 目前还没有很强大的好的文化，似乎以后也不容易有。

（2010-06-20）

网友：段总您什么怎么看出 YAHOO 的文化比较乱的？看企业文化，可以去看企业 老总的电视访谈来观察吗？怎么样更有效的观察企业文化。由于我们不是局内 人，我们如何准确的来观察，怎么样避免不被忽悠？

**段永平：**&#x89C2;察所有的东西。（2010-06-11） 02.引用：雅虎高管：今年将有重大收购

新浪科技讯 北京时间 3 月 29 日凌晨消息，雅虎企业开发高级主管史蒂芬•米森

马彻上周五表示，该公司今年将展开重大收购……

&#x20; **段永平：**&#x8FD9;个看着有点恐怖，不知道这个“重大”到底有多大。雅虎企业文化很 弱，收购的结果很难太好，个人认为长期而言出问题的概率大。（2011-03-29）

03.引用：雅虎：未来几年显示广告营收增长率可达 16%

雅虎周三在其股东大会上表示，显示广告未来几年的营收增长率最高可达到 16%。

雅虎高管认为，雅虎显示广告未来几年的营收增长率在 13-16%，这可以弥补雅 虎与微软所达成搜索协议带去的每次搜索所得营收，雅虎在每次搜索中获得的营 收令人失望……

**段永平：看不懂，“未来几年”的成长率是怎么得出来的？而且还可以准确到 13-16%，真是神啊。自己做企业这么多年，从来就没有过“未来几年的营收成 长率 13-16%”的感觉，所以觉得他们可能是在乱讲。（2011-05-28）**

**12.畅游（CYOU）**

01.畅游公布 2011 年 Q4 财报和年报 总收入创历史新高。

……

**段永平：“**&#x4E0A;海晶茂文化传播有限公&#x53F8;**”**&#x662F;这么回事？第 7 大道是怎么回事？好 久没看 CYOU 了，怎么多了这些没见过的东西？还有就是，大道怎么可以乱用呢？

网友：晶茂是前几年收购的一个电影广告公司，第七大道是去年买的一个网页游 戏公司，花了 1 亿美刀左右吧（具体数字记不清了），主要游戏是《弹弹堂》 。

**段永平：** 汗了，怪不得 cyou 股价上不去，原来他们还搞副业啊。电影广告公司 居然也买？看不懂。（2012-02-07）

网友：畅游今天市值 15 亿美元，持有净现金 3.304 亿美元，净利润达 2.455 亿

美元，扣除现金，市盈率 4.7 倍。结论是：便宜，低估。假设未来两三年利润没 有增长，也会在三四年内回本。感觉游戏股票确实足够低估。&#x20;

**段永平：**&#x521A;刚知道他们居然已经买了几家公司了。对国内喜欢买公司的公司还是 小心为上。（2012-02-07） &#x20;

02.网友：求教，频繁收购公司容易出的问题在哪里？

**段永平：我不知道，但知道收购的成功率一般都很低。只有具有很强企业文化 的公司收购的成功概率才可能比较高点，比如 google，比如 GE 等。（2012-02-07）**&#x20;

03.[畅游（CYOU）](https://xueqiu.com/S/CYOU) （2018-09-20）&#x20;

畅游二季度营收 1.13 亿美元 同比下降 25% 07 月 30 日 14:40

2018 财年 Q2 财报：营收 1.13 亿美元，同比下降 25%

**段永平：**&#x521A;看到畅游都到这个价了？文化的力量真是厉害！记得大概两三年前， 有个朋友向另一个朋友推荐畅游，我说我觉得这公司企业文化似乎不太健康，还 是别碰了吧。（2018-09-20）&#x20;

**13.东方园林**

01.网友：在雪球找了一下，关注东方园林的有三人，且都只关注东方园林。现 价 70 元，2011 年市盈率 20 倍左右，2012 年 12 倍左右。2010 年通过的高管股 权激励价 65 元，近期高管增持价 85 元，拟推的定向增发价 76 元。股本 1.5 亿，

市值 106 亿，董事长最近说五年做到 1000 亿。市场的担忧大概是两点，其一是 市政园林工程的回款不如预期，地方政府无钱，只能拿土地来支付，公司被动进<br>

军地产，按地产股在估值；其二是定向增发有失败的可能，令本就难看的现金流 雪上加霜。上述担忧很有道理，但也许都已体现在股价走势中了。

**段永平：凡是说要把市值做到多少钱的我都不碰。**（2012-02-01）

02.网友：据郭广昌说，马云早在 2010 年年中就给郭广昌说要在阿里巴巴消灭职 业经理人，开始郭广昌还不太明白马云的本意，怎么要消灭职业经理人呢？后来 理解职业经理人应该站在股东企业家的角度去实施管理。可见马云可能早有了炒 掉卫哲的想法，只是由于这个事件而选择了这个时机而已。

**段永平：**&#x6211;想他说的“职业经理人”大概就是比较短视的那种，**短视的意思就是** **很在乎这个季度、下个季度的业绩，很在乎自己公司的市值是不是会到 500 亿**

**或者 1000 亿的那种**。（2011-02-26）

03.网友：大道，最近国内挺出名的一家英语培训机构——韦博英语因为资金链 断裂而关门，给学生和员工都带来了巨大的伤害。您曾说大部分企业倒闭都是因 为资金链断裂，但是断裂只是现象，而不是原因。真正的原因，是不是基本上是 这些企业都在不断求快，好大喜功，急功近利，特别是在这个非常爱贩卖焦虑的 年代。

&#x20;**段永平：**&#x770B;起来都是“人还在钱没了”，但背后各有各的不幸哈。**有些连急功近 利都算不上，比如做生态化反的那个**。(2019-10-15)

#### 14.UT 斯达康

01.财报快讯：UT 斯达康第一财季净亏损 1030 万美元

**UT 斯达康盘前公布了第一季度财报，数据显示：净亏损为 1030 万美元，去年同 期净亏损为 1600 万美元。**

**段永平**：神奇的 UT 斯达康，这么久了居然还没亏完。n 年前曾经糊里糊涂买过 不少这个股票，然后去拜访过一次公司，见过当时的 CEO（好像是叫陆宏亮）， 回来后就用最快的速度把股票都卖了。好像还赚了点小钱。要是留到现在可就亏 大了。现在居然还有这么大的成交量，很好奇都是谁还在买呢？（2011-05-07）&#x20;

02.网友：能否分享一下，当时卖出是什么原因吗？或者是说，在拜访公司的过 程中你留意到一些什么呢？

**段永平：**&#x5475;呵，不方便细说，但至少 6 顶帽子里有一顶以上出来说 no 不了。

（2011-05-07）

**段永平**：六顶帽子思考法，呵呵，网上很容易就找到了。（2011-04-08）&#x20;

03.网友：段先生做企业访问时，主要看那些方面？在北京我有很多机会参观企 业，只是走马观花看和听介绍，与企业领导座谈也是些表面话题，怎样才能看出 价值呢？

&#x20;**段永平：**&#x8FD9;个我也不会，至少没办法通过参观企业看出好企业来，但有时可以看 出来有些企业不太好。有很多企业你参观完了就不想投了。（2010-10-05）

&#x20;04.网友：想到企业文化我还有一个问题请教段大哥，去年我们公司在引进一家 供应商时是这样的，有一家供应商规模较大，设备也好，也和许多世界大企业供 货，但考查时我发现他们有几个制程执行不到位，且企业主管有点太过自信（相 信经验），所以我当时心里一直觉得有问题，可因当时其他考查人员都没有反对， 我虽然表明了观点，但没有实际的证据不好去反对，结果一年后有一个批次出了 较大的问题，给我们造成了很大的损失，请问段大格如果遇到这种情况若你是我

会当初会怎么处理？&#x20;

&#x20; **段永平：**&#x6CA1;太搞清楚这件事和企业文化的关系。直觉往往是有道理的，只不过道 理一下子没找到。我记得以前我见过一本书叫《6 顶帽子》，里面好像就讲到直 觉的作用。 如果我是你，当我直觉告诉我这里还有问题时，我会更小心谨慎地再想办法查查。

（2010-04-05）

#### 15.China Sky One Medical Inc（中国天合一医疗股份有限公司）

01.网友：大家对这家公司怎么看？

China Sky One Medical Inc（中国天合一医疗股份有限公司） (NASDAQ:CSKI)

目前股价 $14.82 市值 $248.8 百万美元 2009 年年报每股收益为 $2.08 ，P E（市盈率）为 7 倍，净资产 $131 百万美元 ，PB（平均市净率） 1.9 倍，净 资产收益率 26%，负债只有 9 百万美元，财务状况非常健康。

近五年的销售收入和净利润分别为(单位百万美元):

销售收入：2009 $130 2008 $91.8 2007 $49.3 2006 $19.9 2005 $7.7

净利润：2009 $34   2008 $29    2007 $15.3 2006 $0.6   2005 $2

我不明白的是，为何财务这么健康、业绩增长这么快的公司，市场给的估值会 这么低，近三个月来股价下跌了 30%。

**段永平：**&#x521A;刚进他们网站看了一眼。居然一家中国公司没有中文网站，好像是 给投资人设计的。另外，也没找到任何有关企业文化的描述。由于我不太懂这 个行业，前面两点看完我就不会再往下看了。我可能又失去了一个赚钱的机会。 一般而言，太把“华尔街”当回事的公司我都很小心。（2010-04-20）

网友：怎么看出这个公司把“华尔街”当回事了？我怎么看不到？

**段永平：**&#x5475;呵，一个中国公司，没有中文网页。你想，消费者都是中国人啊。 主页上 2/3 版面都是消息和股价资料，说明公司认为这些很重要。当然，这些<br>

并不代表这个公司就一定不好，但我至少觉得有明显缺陷，一般就很难再花时 间去看了。（2010-04-20）

#### 16.九城

01.网友：您曾经说过游戏公司可以看看，不知道您怎么看九城啊，现在现金及 等价物就超过市值了。可不可以拣个烟蒂呢？我的一个在九城呆过的朋友说九城 的企业文化还不错，还有你怎么看朱骏本人呢？能不能具体说说九城的企业文 化？

**段永平：**&#x6211;没见过朱骏，也没研究过 ncty，但觉得他们在处理魔兽的过程当中 好像有点不太好。如果我碰到这种情况，我会全力以赴地把游戏交接好，绝不能 让玩家有任何担心。我觉得这本来是一个很好的赢得未来玩家的机会，但他们好 像有点丢了游戏又得罪了玩家的意思。这样的文化我不太喜欢。（2010-05-22）

网友：我在看九城的时候从没从这个角度理解过这个企业，读了这段话对“消费 者导向”有了更深的理解。实在太牛了，受益良多。

02.网友 L：[7 块多的九城还值得买入吗？](https://xueqiu.com/8186325164/20550371)

第九城市市值超过 2 个亿后，我觉得不太值得买入了，或许九城未来还会涨 10 倍，以后暴涨也好，那些钱，不是我赚的，算啦。 原因有：……

**段永平：**&#x6211;完全没兴趣看。（2011-12-03） &#x20;

网友 X：这话的分量不一般啊。&#x20;

&#x20;**段永平：**&#x8FD9;话没什么分量。这家公司文化我看不懂，不赌其一城一池的得失。

（2011-12-06）

03.网友：我满仓九城，自认为模仿段永平买网易，现在反省是不是错了，我预 测 8 月公布二季财报转亏为盈，原因……

**段永平：**&#x60F3;起当年有人模仿着去买 china.com，因为那也是几块钱的互联网公司。 当时我提醒那是家烂公司，千万别碰，结果人家不听，呵呵。（2012-04-26）

网友 M：有这么不着调的老板的公司值得投资？&#x20;

**段永平：** 呵呵，china.com 当时的那个 CEO 确实很烂。（2012-04-26）&#x20;

04.网友：我在“对的人”上，有时还是犯糊涂，高估大股东和管理者的信誉。 港股投资中在这方面吃了亏。

**段永平：**&#x591A;数人在这里只是想当然而已，错多几次就明白了？（2012-11-24）

### 17.完美世界

01.网友：经常翻看段总这个博客的回复，今天看到三年前的两个回复，回头看 很有意思。

2010 年 5 月 18 日，完美世界一天跌了超过 20%，股价从 27 跌到了 22，市值大

概是 11-12 亿，有 2 亿多的现金，2009 年利润 1.5 亿，扣除现金大概 6-7 倍 pe

（市盈率），当时我觉得不贵，在回复中问了段总一句（当时我手上都是巨人， 要不然很可能就买了）。3 年后的现在完美世界股价 11 块左右（中间分红两块 多）。去年利润大概 0.85 亿。市值低于净资产。

2010 年 5 月 20 日，另一位网友在回复中提到九城，说九城的现金及等价物都超 过市值了，问段总是不是可以捡个烟蒂。当时九城的股价在 4.5 左右，3 年后的 现在是 2.5。九城的市值依然低于现金。

&#x20;**段永平：**&#x5B8C;美的文化不太好，九城好像更糟，这类公司我都不敢碰，不知道会怎                                  么样。（2013-04-25）

&#x20;网友：完美经历一些教训后文化有可能慢慢改良么？去年有特殊分红，今年还搞 了个年度分红，感觉还是把账上的钱真当作股东的钱在玩。

**段永平：**&#x6587;化有点像习惯，也有点像基因。（2013-05-07）

02.网友：可以说说 PWRD（完美世界）的看法吗？

&#x20;**段永平：**&#x4E0D;是特别了解，感觉像一群短视的聪明人做的公司，本人不是很看好。

（2011-09-29） &#x20;

网友：这种公司如果够便宜你会不会买？PWRD 现在看上去挺便宜的，就是不知 道这群聪明人未来会不会做蠢事。

&#x20;**段永平：**&#x5C06;来不知道，但过去已经做不少了。人的性格和习惯是很难改变的，公                          司也一样。（2011-09-29）&#x20;

03.网友：北京时间 9 月 5 日晚间消息，完美世界(微博)今日宣布，旗下控股的 一家实体近期签署了一份协议，将投资一只风险投资基金，该基金将由上述实体 及一个或几个与完美世界无关联的普通合伙人成立。

&#x20;**段永平：**&#x5475;呵，看来钱多有时候就容易想干点啥啊。老巴都说以前他手里钱多的 时候就容易犯错，别人如此也正常。（2011-09-07）&#x20;

网友 f：包括 GA（巨人网络），网易似乎也有这样的倾向。不知道段总在这样的 情况下如何做？

**段永平：**&#x6709;钱容易犯错不等于一定会犯错，没钱一般难有机会犯有钱的错误。

（2011-09-07） &#x20;

网友 f：段总觉得 PWRD 进入风投，是犯错吗？ 说实话，个人觉得似乎也是条路。 毕竟，公司在互联网领域，对于 TMT 还是比较熟悉的。一旦找到合适的机会，VC/PE

（风投/私募），甚至由 PWRD（完美世界）出面收购似乎也不错（考虑到网游业 务的发展空间相对有限）。算是投石问路吧，毕竟还是有 风投管理人，PWRD 自 己并不用花太多人力和精力。

&#x20;**段永平：不能简单用对错来判断这件事。但如果是因为钱多而做这件事，尤其 是看到其以前的表现，感觉多半是错的。钱多（相关业务用不掉）就应该回购 或派息，不然就是对自己公司没自信，那股价掉也正常。（2011-09-13）** &#x20;

网友 f：坦率地说，我不认为 PWRD 是因为钱多没处用，来做这件事情。十几二 十个亿的资金，对于一个有些危机感，认为所处行业在快速变化，未来三五年自 己可能面临转型的企业来说，其实不算是很多。即使是同行业收购，一个游戏（大 约 1～2 亿）或者国外一个游戏工作室（3～5 亿），价钱已经不低了。未来可能 要转型的话，那花费更大。所以我认为公司其实在准备后路，或者未来的转型等， 在投石问路。

**段永平：**&#x90A3;更说明这公司有问题了？（2011-09-14）&#x20;

04.【完美世界披露回购股票情况：已回购 357 万份 ADS】

完美世界今天宣布，截至 2011 年 9 月 26 日止，公司已在公开市场上回购 3，566，

549 股美国存托股票，根据该回购计划，公司将在 2011 年 3 月至 2012 年 3 月的

期间内回购不超过 1 亿美元。

**段永平：**&#x4E3A;什么要披露这个？担心买的价格太便宜？（2011-09-27）&#x20;

网友 x: 呵呵，担心别人不知道自己在买，多吆喝两声也算正常，给市场也给股 东听，缓解压力吧。前几天还发了关于公司近期活动（例如新资料片）的一个公 告。都是“自愿”的，呵呵。

**段永平：20 年后回头看这些事（这类的宣布、盈利预测等等），公司或股东们 得到什么了吗？好多上市公司都爱干些 20 年以后回头看一点意义都没有的事， 但却经常要为这些事大动干戈、劳民伤财，实在有趣。（2011-09-28）**&#x20;

05.网友 L[：完美世界现金已接近市值，业务等于白送？](https://xueqiu.com/8186325164/20522378)

完美的净现金只有 2.5 亿，这里说接近市值 4 亿多是包括了转移到投资公司的、 提留股息税费、短期投资、限制性存款，以及扣除短期负债前的总现金（不是净 现金）……

**段永平：**&#x73B0;金少于市值的股票太多了，你为什么会有兴趣？完美的净现金还没有 到大于市值的地步吧？（2011-11-22）  <br>

网友 L：现金合约 4.5 亿美元，按刚才盘前 9 块多的价格，已经和市值接近了。

如果减去短期债务和提留风险投资的，还有 2.5 亿。所以我后面说，假设基金的

钱全部亏掉，按一年 5000 万的利润，市盈率也只有 5 倍（而实际上今年的利润

仍有 1 亿多美元）。完美的研发能力还是值得称道的，只是缺少创新，而管理层 主动做的这些调整，我认为是好的信号。

&#x20;**段永平：**&#x5B8C;美的净现金有多少？印象中完美好像很奇怪地有一些债务？没认真看                                        过。（2011-11-22）

网友 L： 2.5 亿的净现金。

**段永平：**&#x4ED6;们市值有 5 个多亿的吧？2.5 亿现金并不能成为买的理由。如果按完 美的现状，如果净现金大于市值的话，值得一赌，毕竟这个行业不错，对已经开 始赚钱的游戏公司而言，要亏钱不容易（不等于不可能哈）。（2011-11-22）

网友 L：想听听@大道无形我有型的意见。

&#x20; **段永平：“公司主动减少游戏内的活动有关，为了延长游戏寿命，减少道具的 投放。 ”这句话看起来不是太可信，似乎是不得已而为之，也就是说前面做的 可能太过分了，流失率高，所以不敢做了，说明公司文化里利润导向比较厉害。 另外，公司便不便宜公司里的人最应该知道。如果我是大老板同时又对自己公 司有信心，在净资产以内的市值状况下我会拼命回购的。可我们看到的情况似 乎不太像，完美宁肯拿钱去做别的投资也不愿意回购，所谓的回购也就是意思 一下给股东看的。 总的来讲，有点怪，不是很看得懂，感觉似乎公司老板们对 自己公司未来不是很有信心的样子。如果他们都没信心，你的信心又从哪里来 呢？（2011-11-23）** &#x20;

网友 G：完美有在回购，一亿美金的回购也不是小数，差不多是公司 1/3 的现金。 难道要把公司都买回来才算回购吗。对于个人而言，我们经常会说“手中有粮， 心中不慌”。公司握有现金，可以很好的抗击风险，无论是投资还是研发新产品 都是不错的选择。

&#x20;其实从大道的文中，明显可以感到一丝怀疑和暗示，也就是这些现金是否真的？                                          但是没有证据！

完美 09 年的时候也跌到 10 元以下， 当时的完美是怎么做的呢？个人以为，往 往做假的公司的高管会急不可耐的去买股票，因为肥皂泡再美也是假的。相反一 个好公司，真金不怕火炼，该上去的那天终究会上去的。

&#x20;**段永平：**&#x5982;果你认为自己公司未来的现金流会像现在这样强大，你会慌吗？慌什 么？我其实没有任何怀疑账面现金的意思，我只是觉得他们自己好像对自己（的 网游业务）不太有信心，而且觉得这种没信心似乎是事出有因的。另外，电影公<br>

司的事感觉也不太好，有点像公司做了个风险投资，成熟以后只拿回成本，那以 后还会不会有这样的事呢？ 总的来讲，完美有点乱，可能需要点时间好好反省一下。其实如果公司真的能在 网游这个行业好好干的话，完美这个价真是便宜。（2011-11-24）

网友 G：电影公司的事，的确感觉不太好，这一点没有研究过，所以不好说啥？ 只是为啥您觉得他们对网游公司的业务没有信心呢？我感觉他们去收购工作室， 就是一种有信心要深挖的做法。否则这种事费力还不一定讨好，谁去做呢？

&#x20;**段永平：**&#x6709;信心为什么会拿钱去投资别人而不是自己呢（回购）？想把鸡蛋多放 几个篮子的意思就是担心自己这个篮子靠不住，对吧？（2011-11-24）&#x20;

网友 G：公司回购的股票还可以随时再卖出去吗？如果不能或者这种做法就不方 便，那么一味的回购就值得商榷。再说鸡蛋多放几个篮子也可以有效降低风险， 篮子再好也有漏水的风险（比如：国家政策的风险）。再说对于老池来说，玩玩 风投，人生更多姿多彩一点！万一东边不亮了，西边还有可能亮呢？

&#x20;**段永平：希望你什么时候能明白把鸡蛋多放几个篮子其实是有效提高风险的最 好办法，虽然能明白这个东东非常不容易。**（2011-11-24）&#x20;

网友 p：鸡蛋多放几个篮子未必是有效提高风险的最好办法吧？是不是手误啊？

**段永平： “**&#x628A;鸡蛋多放几个篮子其实是有效提高风险的最好办法，虽然能明白 这个东东非常不容易. **”**&#x7EDD;对不是笔误！不过有点调侃的意思。不是说“一定 会”，但很多情况下会的，有兴趣你可以看看有多少“多元化”的公司最后都遇 上大麻烦了。有本书叫《Focus》，也许你可以找来看看，里面有很多很好的公 司把鸡蛋放多几个篮子最后鸡飞蛋打的例子。

网友 F：在国内目前的情况下，说实话，我看到很多优秀企业的多元化，联想控 股，史玉柱，复星等，当然情况各有不同。有些总某个时期只专注一件事，例如 史玉柱先生。希望完美也这样吧。我觉得池先生，骨子里就是行业决定论者，也 许有些像史先生？ 所以确实难象丁磊，马云他们那样做到极致，叹。

**段永平：**&#x8054;想控股是个投资公司吧？史玉柱早就没担任 CEO 了，所以史玉柱不管 干什么不等于巨人不专注。我也觉得池宇峰确实是个“行业决定论者”，所以我 才会担心他似乎对网游这个行业信心不足了。不过，再怎样也好过有些这个行业 的人自己瞧不起这个行业啊。（2011-11-24）

网友 F：您说起史先生的做法，那我有些理解了团队建设的重要性。特别是一个 可以让自己"撒手不管"的 CEO，也许 bbk 也是。陈先生，事事插手，本领再大， 布局再好，结果……但这个多元化似乎确实有人干的还可以，例如三星？

&#x20;**段永平：**&#x4E09;星是国家资本主义的产物，借无穷多的钱，很容易出毛病的。

（2011-11-24）  <br>

网友 W：呵呵。是的，把鸡蛋放在一个篮子是本质，放到多个篮子是一个篮子放 不下的结果。专注和多元化貌似也是这个逻辑。对和错很多时候表面看起来是一 样的。

&#x20;**段永平：呵呵，一个篮子放不下和上杆子要放多个篮子还是不一样的。**

（2011-12-01）

网友 P：我记得好像是哪个说过，多元化是能力问题。

**段永平：大概是吧，就像没办法做成** **iphone** **就多搞几个品种一样。**（2011-12-01） &#x20;

&#x20;06.[不明真相的群众：](https://xueqiu.com/simon)今天听一名玩家点评网游股，她说$巨人网络(GA)$$网易     (NTES)$$畅游(CYOU)$对游戏是有爱的，$完美世界(PWRD)$$盛大游戏(GAME)$没 有。 大家觉得这个点评怎么样？

**段永平：**&#x8FD9;个点评很好，至少说明不要碰 pwrd 和 game 了。玩家的眼睛是雪亮雪 亮滴。（2012-02-10）

&#x20;07.[完美世界欲打造网游进出口国际平台](https://xueqiu.com/S/PWRD/21770383)

**段永平：**&#x5982;果将来有一天完美倒了，“国际化”会是最后压倒其的那根稻草（可 能是很重的稻草）。（2012-05-04）&#x20;

网友： 成也萧何败也萧何。

**段永平：**“成”了吗？当然，如果败的话，这个其实也不是原因，但是很好的理 由。（2012-05-04）

**06.苹果新传奇的中国启示：国际化成关键**

走出去成就苹果传奇 NBA（职业篮球）有句名言:“永远不要低估一颗总冠军的 心”，在大浪淘沙的商业世界，这句话则可以换作:“永远不要低估传奇公司自 我超越的勇气”。

**段永平：**&#x600E;么会得出这么个结论？不过，国际化的定义很含糊，如果国际化指的 是学到世界上的好东西的意思就没问题，如果是指的拼命到别的国家去做生意的 话，对中国绝大多数公司而言还是蛮危险的。（2012-05-03） &#x20;

07.网友：新浪科技讯 完美世界 7 月 6 日提交的 SC 13D 文件显示，复星国际目 前持有完美世界 19，718，650 股普通股占完美世界总股本 8.31%。完美世界目 前市值 4.88 亿美元，市盈率 3.45 倍，账上现金和短投到达 5.23 亿美元。这个 有点像当年段大哥买网易的案例呀 。

&#x20;**段永平：**&#x50CF;吗？现在的诺基亚像以前的苹果吗？猴子像人吗？当年的网易的生意 在我的认识当中是处于上升阶段的刚刚开始的阶段，这个好像是处于不知道哪个<br>

阶段，看起来有点像是开始下降的阶段。如果真是下降的阶段，那就不好说了， 况且里面还有不信任的原因在。但是，如果谁真是很信任完美的管理层，同时又 很了解他们的生意会在相当长的时间里至少不下降，这个价钱确实看着便宜。透 露一下，我实际上有点完美，但下不了重手，看不懂我觉得必须要看懂的东西。 (2012-07-10)

**18.巨人网络** &#x20;

**段永平：**&#x6211;比较喜欢玩游戏，很早就属于每天上网超过 135 分钟的中毒“青年” 了，我总觉得中网瘾的毒好过中某些网瘾“砖家”们中的毒。其实每个人的生活 中都会玩很多游戏，从麻将到各种球到炒股等等，网游只不过是其中一种而已。 如果没有各种游戏，这日子还怎么过？由于喜欢游戏，所以对网游公司也比较熟， 同时还靠投资在网游公司上赚了些钱。除了大家知道的网易外，其实我也有（或 有过）完美世界，畅游和 GA 的股票。GA 是我目前获利最少的网游股。我认为 G A 目前这个价不贵，下行空间很小。GA 每股有 3 块多钱现金，每年有 50cents 以上的获利，虽然老征途目前很难成长，甚至有可能有些萎缩，但从长期而言， 由于史玉柱非常专心在游戏上，巨人早晚会推出些不错的游戏。绿色征途就还可 以啊，有钱没钱都能玩，有点梦幻西游的感觉，我在里面玩得也挺开心的。巨人 其他的游戏我还不太了解。**我对巨人的担心主要是怕他们太把“华尔街”当回事， 从而为了追求短期盈利而忽略了玩家的真实需求。实际上，史玉柱并没有追求 短期盈利的压力和需求，通过他自己的慢慢“反省”，他会找到办法的，毕竟 他经营企业多年，对企业的理解非常好。我认为 GA 回到 IPO 价钱是早晚的事， 但再往上就可能要点运气了。**(2010-02-09)

网友：您觉着绿色征途这款游戏达到他们的预期目标了么？ 史玉柱对巨人近两年的调整，包括游戏战略上的调整和组织结构上的调整，您觉 着会有明显的效果么？

&#x20; **段永平：**&#x6211;不知道他们的预期目标是什么。

我觉得绿色征途还是一款不错的游戏，我有个号在神话一区，叫“大道无形我有 型”，107 级了，有空的话可以来玩玩。我认为史玉柱是个认真的人，他会慢慢 摸索的。我不是很理解明显的效果应该是什么样的效果，在我看来他们可能还需 要些时间。不过，他们现在的小日子还过得去啊。（2010-03-12）

网友：段老大，能不能拨冗分析下巨人网络的投资价值呢，芝加哥后生叩谢了。 **段永平：**&#x47;A 每股有不到 4 块钱现金，现在每年可以赚不到 60cents，股价在 7

块 5 左右。如果未来 6 到 7 年 GA 能维持现在的利润和现金流的话，基本就可以

回本了。

1.我无法知道未来 6-7 年 GA 是否可以维持现在的利润和现金流，但我认为能够 维持的可能性很大（下降的可能性不大）。<br>

2.如果在未来 6-7 年里 GA 能出一到两款好点的游戏，GA 的营收将有机会增长， 现在股价买进的股东回本时间将被缩短。

总而言之，这几年巨人有够多的经验和教训了，史玉柱又一直比较专注，GA 的 下行空间将很有限。我们也有些 GA，但不是重仓。(2010-03-16)

网友 c：不知道您持有 GA（巨人网络）的价格，但是按照您上面所说的现在 GA 的情况，是不是应该不作为候选，因为即使有足够多的经验教训也不会保证未来 不犯错，如果按照巴菲特和 GRAHAM 的安全空间理解，这个价格是不是不够安全， 因为没有留出如果犯错的空间。是这样么？您怎么认为？

**段永平：**&#x6211;的 GA 大概在 6-6.5 左右，多半是 put 进来的，6 块左右是也买了一 些。我觉得 GA 的安全空间还不错，下行的空间不大，有上行空间。未来到 8-20 块我都不会惊奇，但也无法很确定，所以也很难重仓。(2010-03-17)

引用:雪球访谈：巨人总裁刘伟谈巨人网游新战略

2011 年可谓巨人网络战略转型之年，4 月份推出自主研发的《征途 2》，公测突 破 40 万人。而更引人关注的是，《征途 2》并未重复“按时间收费”、“按道 具收费”的旧有网游模式，开始重新建立一个“更公平”的虚拟网游商业系统， 例如首创了全部装备打怪掉落或任务产出、取消商城、玩家自由交易获得游戏 道……

**段永平：**&#x5475;呵，看来还是希望股价涨上去一点？不是在回购吗，为啥子着急嘛？ 如果是我就根本不烦心做这些事，让业绩说话就是了。(2011-10-11)

#### 19.新东方

01.引用：（i 美股讯）新东方先后因为 VIE（可变利益实体）结构调整遭调查和 被浑水质疑连续两个交易日大跌 35%；其股价从 7 月 16 日收盘的 22.26 美元 跌……

引用：俞敏洪回应浑水公司的质疑

俞敏洪： “浑水”写的只是小说。“如果投资者是因为我的原因而损失，我自 杀的心都有了，但他们不是，他们的损失是因为浑水的报告”，面对 18 日浑水 公司长达 100 页的做空报告，“俞校长”语调平静。 浑水公司的指责重点包括： 1，新东方未披露加盟及加盟店信……

引用：徐小平:新东方是好公司 创业家应笑对股市变幻 1、昨天深夜两点钟，新东方已经连续暴跌两天，我正准备洗洗睡啦，一个牛逼 的朋友来短信问是否方便接电话，原来他问是否可以买新东方？我说坚决买，快 买，多 买!说完，想到他要赚大钱了，就心满意足地睡了，还梦见他赚钱并分了 我一些。我知道……<br>

**段永平：**&#x6211;昨天也收到一位以前在新东方干过老师的朋友的 email，说他也买新 东方了，觉得新东方是好公司。有那么多已经离开新东方的人说新东方的好话， 俞敏洪其实干得很了不起啊，要知道这是个文人相轻的行当，相当不容易。

（2012-07-20） &#x20;

网友：昨晚看到的 Muddy Waters 做空 XDF，俞老师这次有考验的&#x20;

&#x20;**段永平：**&#x5176;实被人做空是件多幸福的事情啊，可以使劲地回购的。这个感觉很重 要哦，不是钱能换来的。 (2012-07-20)

网友：段总怎么看？

**段永平：**&#x6211;昨天也买了一些，但还没觉得要到可以下重注的时候。(2012-07-21)

网友：段总这么短的时间就下决定，还是一直有关注？&#x20;

&#x20; **段永平：**&#x4E00;直都多少关注的，别忘了我们也是这个行业的。

网友：为什么说“但还没觉得要到可以下重注的时候”？是有其他比较让人顾虑 的因素吗？&#x20;

&#x20;**段永平：**&#x662F;觉得自己的了解还不够。新东方这个生意模式其实是个力气活，不是          我特别喜欢的那种。(2012-07-20)

&#x20; 网友：所以基本上人不太大问题，剩下是生意模式和估值的考虑？

&#x20;**段永平：**&#x662F;啊，假设什么也没发生过，也不要管过去到过什么价，平常心去想， 新东方值多少钱呢？然后你会发现，如果你不了解新东方的生意模式，其实你就 没办法找到感觉---我是说我自己。（2012-07-20）&#x20;

**02.引用（i 美股讯）宣布 5000 万美元回购，新东方早盘逆市大涨 14.11%**

网友：不是说调查期间不能买吗？

**段永平：** 我也看到那条了。可能是以为不行，一问又可以了？5000 万毛毛雨啊， 他们那么多现金放那里干什么？再说，为什么是未来 3 个月而不是 3 年？其实拿

个 3 个亿在未来 3 年回购（只在便宜时回购）看起来要理性很多。还有就是看到

写的是个人资金，有点晕。个人资金为什么要一起公布？个人资金买资金公司股 票是买了以后备案的，不需要事前发布哦。再说如果股价涨上去了，你是买还是 不买，这是承诺吗？看起来真是有点乱套哦。（2012-07-21）

&#x20;网友：应当是公司名义不能买，所以暂时以个人名义买，这个钱也不少了。调查                  结束估计会有公司回购计划。<br>

**段永平：**&#x5982;果公司名义不能买的话，个人名义怎么就可以了？费解。 我说的是：如果是个人名义的话为什么要宣布？因为没有任何理由要这样做，除 了显示信心以外。如果是为了显示信心，为什么是未来 3 个月？为什么说未来 6

个月不卖（而不是比如 3 年等等）。还有就是如果你真想买，那你是想买的贵点 还是便宜点？喊这么大声音的感觉好像是不太想买的样子。看得出来，他们对股 价还是特别在乎的，有点不太好。（2012-07-21）

&#x20;**段永平：**&#x867D;然我觉得新东方能做到今天很了不起，但看到他们这么在乎股价后， 真的很难找到我会愿意持有这个公司到永远的感觉。当然，这不是批评的意思， 因为对别的绝大多数公司我也找不到这种感觉。（2012-07-21） &#x20;

&#x20; 网友：你看到了李国庆，和江南春的表现，你还觉得新东方在乎股价？

**段永平：我们投资不是来比烂的。我说的是新东方的瑕疵，其实他们可以更好 的**。（2012-07-21） &#x20;

网友 G：想到一个有趣的桥段，假如步步高是上市公司，12 年，13 年的财报显 示没赚钱，股民急的不得了，但公司却专注于打磨新产品，不在意短期的财报， 不在意股价，股价哗哗地下跌，这时候懂步步高的投资者跑步进场，一直持有到 现在。这应该是一次千载难逢且非常成功的投资。

&#x20;**段永平：**&#x6211;们要上市了的话，大概率还是会像不上市那样经营的，不会受任何股                价变动影响的。（2019-05-22）

&#x20;03.不明真相的群众：为什么老罗比老俞靠谱？

原文略…… 老俞是个正常人，如果他成功了，是拜时代所赐；老罗是个神人，如果他成功了， 是因为他对时代的逆袭。所以我认为老罗比老俞更靠谱。

@大道无形我有型  见笑了。

网友 N：你怎么就发现自己的不是理想主义了？我认为俞校长再不行，也不至于 降到老罗做企业的水平！同意你向 @大道无形我有型 的真情表白。

**段永平:** 其实你有空看看王利芬那个采访大概就明白为什么我认为俞其实是个 理想主义者了。他的问题是被现实纠结得太厉害，所以有距离。（2012-07-20）

**段永平：**&#x611F;觉有点因为不靠谱所以靠谱的意思。以前看过俞敏洪的演讲，觉得他 讲得非常好。但看了王利芬的长达 4 个小时的采访后，觉得俞离所谓的顶级企业 家确实还有点距离，而且这个距离似乎是不会被缩短的。俞其实是个非常好的生 意人，但企业大到一定程度后恐怕就有点困难了。对罗没太关注过，但看了大家 放上来的采访的链接的感觉是作为企业家，他和俞的差距还是蛮大的，但他确实 是个蛮直的人。（2012-07-20）

网友 R：是非常好的生意人的意思。

&#x20;**段永平：**&#x6240;谓顶级企业家未必就一定能成功，但一般当人们知道他们的时候，大        概就已经很成功了。（2012-07-20）

&#x20;不明真相的群众：“这个距离似乎是不会被缩短的”，我记得您不止一次说过类 似的话。这种话很难说出口，但它是实话。（2012-07-20）

网友：不以成败论的话 Jobs（乔布斯）真的能算一个传统意义上很好的企业家 吗？

**段永平：**&#x4A;obs 绝对是顶级的企业家，但不知道你这传统的是什么意思？要打领 带么？（2012-07-20）

&#x20;04.引用：俞敏洪：新东方到底应该坚持什么？

2012 年 6 月 12 日，新东方教育科技集团在北京海淀剧院召开了 2012 财年总结

表彰暨 2013 财年工作部署动员大会。新东方教育科技集团董事长兼首席执行官 俞敏洪在会上作了重要讲话………

&#x20; 网友：您感觉俞敏洪是个有利润之上追求的人，所以值得关注？？

&#x20;**段永平：**&#x662F;的，他骨子里或多或少确实有利润之上的追求，一旦方法对头效果就                              会不错。（2012-07-24）

&#x20;网友：我怎么感觉这次你说的和你以前讲的不太一样，还是我把你的话给理解得 偏了。俞的视频我没看过，从这篇演讲稿来讲，我感觉他不是个首先以利润为导

向的人，一如他的价值观和六个坚持，如果唯利润是尔，事业不可能更长久、更 健康吧！

**段永平：**&#x5229;润之上的追求的意思不是利润至上，意思正好相反。 “利润之上的 追求”来源于《基业长青》(built to last)，**想找好企业的人最好能看懂这本 书以及同一作者的《追求卓越》（good to great)。** “利润之上的追求”有时 被有些企业用于公益时的口号，我不好说这种用法有错。但是，这种用法本身潜 意识里好像只有“非盈利”才是“利润之上的追求”。  &#x20;

&#x20; 网友：大道再次提到这两本书，再看一遍。

**段永平：**&#x8BF4;来惭愧，这两本书我也没看完过，但翻过，觉得确实是好书。 不喜欢的地方是这书也是用市值来衡量一个公司的价值的。用市值衡量的缺陷是 具有时点性，在某些时点对某些时点不对。如果用未来现金流折现的概念来衡量 就好了，但从来没见过谁这么做，毕竟教授们都不是真做投资的。忽略这点，这 书就是我看过的最好的关于企业的书（我没看过别的）。（2012-07-24）

05.引用：俞敏洪 2013 年第二届民办培训教育论坛的发言<br>

...

&#x20; 网友：不看好应试教育，因为不符合人性的基本需求，新东方需要转变战略。

&#x20;**段永平：**&#x5E94;试教育不是新东方推出来的，但应试教育的市场巨大。再说，新东方                      的东西不仅仅是应试教育。

网友 R：俞的分裂和纠结也反映了教育培训行业产能扩张和质量的矛盾。

**段永平：**&#x4FDE;敏洪其实能够面对问题，非常不容易。（2012-07-24）

#### 20.学而思（好未来）

&#x20;01.引用：对话张邦鑫：教育机构百亿还是百年？

学而思在上市后曾经走过弯路，过多地着眼于资本市场，提出要每年增长 X%，5 年实现 100 亿元收入，成就"百亿学而思"。这作为一个上市公司的战略似乎无可 厚非，但这不是学而思的教育理想。 学而思创始人张邦鑫在最近的一次教育理念分享会上做上述感叹，并表示：公司 已经把"百亿学而思"的目标变成要做"百年学而思"，把"成为中国中小学培训第 一品牌"修改为"成为受尊敬的教育机构"。

&#x20;**段永平：**&#x5B66;而思创始人张邦鑫在最近的一次教育理念分享会上做上述感叹，并表 示：公司已经把"百亿学而思"的目标变成要做"百年学而思"，把"成为中国中小 学培训第一品牌"修改为"成为受尊敬的教育机构"。 看来大家的基本功都不是太

好啊，不过最后能悟到这点都很了不起。（2012-07-20）&#x20;

&#x20; 网友：真心求教：提到大家的基本功都不是太好。想问基本功是什么？

&#x20;**段永平：**&#x57FA;本功就是“百亿学而思”，“"成为中国中小学培训第一品牌"。到" 百年学而思"就是巨大进步，因为绝大多数公司到死都不会这么想。不过，成为" 成为受尊敬的教育机构"这句话好像稍微有一点点瑕疵，但这比"成为中国中小学 培训第一品牌"要好很多，我也想不出更好的。（2012-07-20）

02.引用：学而思高管解读 2013 财年第一财季季报

（i 美股讯）北学而思今日公布了截至 2012 年 5 月 31 日的 2013 财年第一季度

未经审计财报。一季度净营收为 4930 万美元，同比增长 48.4%；运营利润为 600

万美元，同比增长 74.8%，去年同期为 340 万美元；净利润为 500 万美元，同比 增长 8.2%。财报……

&#x20;**段永平：**&#x73B0;在市值六个多亿，如果按这个价把公司买下来目前的盈利是两千多万 一年。感觉这是个不容易扩张的行业，因为老师的培训不容易。不知道这些培训 公司对互联网的运用到什么水平了，一对一的办法能有规模吗？

仔细想来这个生意模式似乎不是那么美妙，高成长不容易维持。不过我喜欢张邦 鑫的办学理念，所以会长期保持关注。（2012-07-25）

&#x20;03.引用：[雪球访谈预告：北大外籍教授谈做空中概股风潮](https://xueqiu.com/1287305957/20524013)

与半年前以反向并购上市公司为目标不同，近期做空机构针对中概股的做空开始 以 IPO（上市）公司为主，包括新东方、分众传媒、奇虎 360 等一批中概知名公 司，开始持续遭遇做空机构的做空。而且从目前来看，这股做空风潮非常有可能 持续下去。 在不久前接受雪球采访时，华兴资本 CEO（首席执行官）包凡表示， 通过对借壳上市小公……

&#x20; **段永平：总的来讲，苍蝇不叮无缝的蛋，虽然也有误伤的时候。不是很明白被 唱空的公司为什么都那么火急火燎地马上反击。也有人做空老巴的 BRK，老巴的 反应很简单： 空头根本改变不了一家公司的价值，只有某种情况下会有例外，**

**比如公司的融资和股价有关时，股价大掉会有危险。但是，这种危险实际上也 是由融资来的，和空头其实无关。比如，在金融危机的大环境下，某些不够健 康的银行就有可能会成为空头袭击的牺牲品。自从取消 mark to the market， 连这种情况都不太会见到了。 好公司根本就不怕人做空！**（2011-11-23）

**21.瑞贝卡**

01\. 投票：你能接受女性戴假发吗？

投票：你能接受女性戴假发吗？ A. 可以接受，就和戴美瞳、围巾一样，是女性 的一种时尚装扮（自己或周围有人常戴） B. 可以接受，不过戴起来不舒服/太 麻烦/太贵等（自己不常戴或周围戴的人不多） C. 不能接受，试用的感觉不好

（自己或周围有人试过，但不会再戴） D. 不能接受，为了掩饰头发缺陷的……

网友 Y：对瑞贝卡的几点反思：

1）定位的问题。瑞贝卡品牌的主力价格在 5000 左右，算是奢侈品了，但同时它 在美国市场上哪怕是高端的产品价格也就几十美金$，是不折不扣的大众品。这 两边的差异实在有点大，不知未来会以什么样的方式协调起来。另外，在瑞贝卡 的影响下，各个洋品牌和假洋品牌都来中国市场觅食，而且一家比一家卖得贵， 瑞贝卡相当于把整个行业都定义成奢侈品了，我很怀疑这能不能有利于行业发 展？另外，奢侈品在经济不景气的时期，通常也是比较郁闷的，更何况是这种还 不太有品牌底蕴的。

&#x20;2）瑞贝卡的产品体验（产品设计与佩戴的舒适自然度）相对竞争对手是有优势

的，国内品牌推广做的也尚可，但渠道建设还是欠些火候。一是广告到了店还没 开，二是这几年重加盟轻自营，加盟商又是重短期利益轻品牌建设，长久下来未 必是好事。

&#x20;3）就像研究框架里说的，我们需要考察公司的管理人是否德才兼备。就瑞贝卡 而言，郑有全“才”是有的，但从股东角度来看“德”就差一些。这些年经营所 得的现金估计有不少是花在诸如给许昌修路建桥呀，做做房地产呀，收收矿呀之<br>

类的项目上了，很漠视股东利益的。

4）原有产品的基数太大，国内市场做得再好，可能也就是从 10 到 20 的过程了，

1 到 10 那一段已经过去了。

&#x20;总的来说，公司的不确定性确实高了点，弹性也未必那么的大。确定性高的公司 弹性可以差点，但确定性差的公司弹性必须要高，当然，在确定性和弹性两者之 间选择，为了少犯错，还是要选确定性高的。

非常惭愧，我在去年 10 块多买了一点，8 块多亏着卖了。买它是为了套利，逻 辑是在 12.2 的价格上定增之后管理层能顾及到参与定增 5 家机构投资者的利益，

我们也跟着沾点光。其实，这个逻辑真的是很一厢情愿的，何况 2011 年郑总可 能也遭遇了无米之炊呢。

&#x20;当然，瑞贝卡未来可能还是有机会的，但更大的机会是建立在公司经营的切实提 升上的，而公司是否能做到这一点，我们还需要予以更多的观察和验证。

（BTW 顺便一说，事实上，这家公司让我反省了很久很久，并因此而思考“如何 避免犯错”的问题，就是雪球会上的那个 topic 专题……）。

**段永平：**&#x4E0D;知道这个公司，但从文中叙述的情况看不值得花时间。（2012-04-07）&#x20;

网友 Y： 是的……我作为它的用户有点盲目了……

**段永平：**&#x5173;注自己喜欢的产品的企业比较容易找到感觉，或者说比较容易了解企 业。**只是我个人认为当你觉得“德”不行的时候，往往就不值得再花时间了。**

（2012-04-09）&#x20;

02.引用：巴菲特语录

You can't make a good deal with a bad person.  和一个道德品质败坏的人，无法完成一桩好交易。&#x20;

**段永平：**&#x6240;以要避开和不信任的人做伙伴。如果你不信任一家公司就不应该投资 这家公司。

网友：如果一家公司的商业模式不错，但其 CEO 是你不喜欢的人，是不是无论价 格多便宜你都不会买？

**段永平：**&#x6CA1;碰到过这种情况。（2014-10-30）

03.网友：大道，有些公司有些瑕疵但公司经营效率还不错您会投吗？怎么看待 这类公司？谢谢

**段永平：**&#x4F60;说的瑕疵定义太广了，没有完美的企业和人。（2019-05-20）

网友：我说的瑕疵比如粉饰财务数据，造假等。但公司骗了钱后还真做了不少有 价值的事情，或者努力去做事了。您作为一个投资前辈，我想问的是有这样的后 来结果是好的先例吗？或者有哪些是绝对的禁区对投资人来说？能举些例子 吗？&#x20;

&#x20;**段永平：我如果认为一家公司不诚信的话，我就不碰了，禁区大概主要是两个： 生意模式不好，企业文化不好。企业文化不好最典型的特征就是经常说瞎话， 你只要看他以前说过多少瞎话就明白了。（2019-05-20）**

### 22.万科

01.网友：为什么你不介意企业管理层的人品问题呢？譬如从捐款门看出人品的 王石，创维欺诈门的黄宏生等，你都买了他们的股票，还有值得争议的史玉柱， 你都觉得他很不错。还有你对中国的企业家是怎么看的？本人觉得中国好像没有 受尊敬的企业家。

&#x20;**段永平：**&#x6211;非常在乎企业管理层的人品！等你长大了就明白我说的是什么了。

（2010-05-04）

&#x20;02.网友：请问段总，您本人有没有和王石接触过?

&#x20;**段永平：**&#x6CA1;有很深入打交道的机会，有过几次聊天或吃饭的机会。对他印象还不 错，有点“青涩”的味道。2010-05-17）

&#x20; 网友：请问万科吸引您的地方在哪里？

**段永平：**&#x5475;呵，比较“青涩”。 （2010-04-25）

&#x20;网友：你的这个“青涩“是什么意思啊，我看到几处用到。应该不是字典里解释                                                  的那样吧！&#x20;

**段永平：** ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)万科的典故。（2010-04-26）

网友：网上找的..哈哈！谢谢段总！“我虽然快 60 岁了，但对于大事情的处理， 还是显得很青涩。”王石昨天在股东大会上表示

**段永平：**&#x5475;呵，说明王石实在 ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif)我的理解“青涩”表示不“圆滑”。 （2010-04-26）

**段永平：**&#x90A3;个对王石的评语不是我说的，是他自己说的。不过我觉得“青涩”很 难得，现代人普遍太圆滑了。（2010-06-06）

&#x20;03.网友：我插一句：阿段前辈是不是对人也是这样呢，不喜欢太复杂的人，

**段永平:** ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif) （2010-04-28）

网友：段总相对于那年被二柄男采访时,似乎谦逊了许多,这也是我佩服段总的原 因，国内象这样实事求是的商人太少。<br>

&#x20;**段永平：**&#x4E8C;柄男是谁？另外，说我谦逊可能是对我的误解。但我可能不像以前那 么爱较劲了吧，这可能是“成熟”点的表现？**不过我觉得我还是很“青涩”**。

（2010-03-26）

04.网友：段总投资网易和万科都非常的经典，23 日万科开股东大会时，有人问 王总说段永平在买万科前是否和王总吃过一次饭，王总说是有这个事，我想请问 段总：如果您没有和王石饭过这次饭，您会买万科吗？一般的散户是没有这样的 机会的。

&#x20;**段永平：**&#x5475;呵，约到王石也不容易，他整天在荒山野岭里跑啊跑的。我当时找王 石就是想问问他知不知道有谁想卖法人股的，结果很失望，他说应该不会有的其 实吃饭前我们已经买万科了，就是想看看还有没有更便宜的机会，贪心啊。当时

万科的 b 股比 a 股贵，不然我们会多买很多的觉得安心的是，当时要多买的话， 我非得卖网易不可。呵呵，后来网易也涨了不少。（2010-03-30） &#x20;

&#x20;05.网友：您如果只根据对王石一人的了解，就重仓万科，似乎理由不足够?

&#x20;**段永平：**&#x4E0D;是仅仅因为王石就重仓，是因为当时所有的条件再加上王石这一条。 王石最大的作用是让我相信我看到的万科的数据是真实的。有很多公司的数据短 期看起来可能比万科还好，但不敢下手啊。（2010-07-24） &#x20;

&#x20; 网友：这只商业地产股……，段总这对你有吸引力吗？

&#x20;**段永平：**&#x5982;果你能保证里面没假账，净资产不贬值，利润不下降还不会用途不当， 这个价格倒也不贵。呵呵，了解一家公司不容易的地方就是在这些地方。当然，

有时了解也许没那么复杂。

&#x20;我记得当年我们买万科时就有人问过我，说万一万科假账怎么办。我说，以我认 识的王石而言，他绝不是会关在房间里和财务商量个假账来蒙股东的人。其实那 时和王石不熟，现在也不算熟，就是直觉而已。（2010-03-14）

06.网友 S：段总，各位，刚听了《财经会客厅》王石的访谈。 王石说万科的目标定位是健康丰盛，不是最大、第一，讲到了目标和结果，从急 着登顶到坦然的体验过程，讲到了社会浮躁心态——恨不得把三十年的、几代人 的事只争朝夕的干完看见，怎么都听过啊？段总说过：健康长久、敢为天下后、 五十年后的任何消息都行、未必最好蛋肯定能到罗马、快即慢、平常心等等，不 是一个理吗？

&#x20;**段永平：**&#x80FD;够长久经营企业的人对企业的体会实际上都差不多，不信你把马云的 东西拿来比较下，你会发现有很多东西其实也挺像的。不过，“不幸的家庭则各              有各的不幸”。（2011-01-27）

07.网友：能说说您对郁亮的看法吗？如果王石 10 分，那么郁亮你能打几分？<br>

&#x20;**段永平：**&#x5BF9;郁亮不了解，但他能和王石共事那么久，不应该会差到哪里去的。

（2010-07-10） &#x20;

&#x20;08.网友：王石是我最敬重的企业家。我认为万科是中国最伟大的企业。当然阿                                 里巴巴也同样伟大。

&#x20;**段永平：**&#x6211;也很喜欢马云，觉得他应该算是中国最了不起的企业家了。我觉得王 石是条汉子，也是我尊重的企业家。（2013-02-24）

#### 23.双汇

01.网友：段总：奶粉、猪肉这些问题的爆发，让我没有安全感。在成都的糖酒 会再次听到食用酒精勾兑白酒的事情。这样的情况，可能真的无法产生信任感。 您怎么看待？&#x20;

**段永平：**&#x6211;的看法和你一样。（2011-03-24）

02.网友：3 月 31 日上午，双汇“万人大会”上的标语。当日上午，双汇集团在 河南省漯河市体育馆召开万人职工大会，参加会议的有双汇集团中层以上代表， 供应商、销售商代表，漯河当地的工商、卫生、畜牧等相关单位的主管负责人， 双汇集团的 30 多家投资代表，30 多家国内媒体记者，还有建行、中行、汇丰等 国内外的 23 家银行的相关人士，但无消费者代表出席。

&#x20; 我们国家的食品安全到了不容忽视的地步。应该用严峻的法规加以制止，真希望 双汇不是作秀。结果（现场背景牌上的“双汇”拼音被印错）确实不应该，双汇

万岁可以，至于万岁是不是有点过了。什么年代。感觉双汇企业文化是有问题。

&#x20;**段永平：**&#x611F;觉他们关心企业生存多过关心消费者健康，还感觉大家多少有点委屈，             总之感觉有点怪。（2011-04-02）

网友：看到的所有关于双汇的信息从头到尾都在讲销售额减少了多少，损失了 多少钱，都是些数字，没见到对消费者很诚恳的道歉，对消费者的赔偿。似乎 双汇的产品只卖给供应商、销售商、投行和地方政府，看着憋气。

网友 H：确实有点怪，他们的“十八道检验，十八个放心”真是十八个不放心。 双汇有今天这么大的规模，也可能是起步早，消费的人多，才建立起现在的优 势，（我知道还有另外两家，雨润和希望，在超市我基本上选双汇的）如果不 尊重消费者，也必将被消费者抛弃。不经过这些事件，真不知道瘦肉精，苏丹 红，三聚氰氨，工业甲醇假酒，在中国真是奇了，基本上每年都有惊人的事件 发生，我们也麻木了，有时想还好，我还没事，觉得好像是上天的照顾似的。

03.网友：如何避免投资碰到黑天鹅事件？<br>

**段永平：**&#x9ED1;天鹅事件在买的时候就应该避开了，不然你就不应该投资。

价值投资者其实最喜欢看到黑天鹅事件的发生，这种时候往往会有机会。上一次 金融危机无数人中招，但巴菲特那么大盘子，那些一掉到底不复回的股票他一个 都没有就是一个例子，这可绝对不是运气哈。顺便说一句，那些股票我也一个都 没有。

要是你的“估值”会和公司的每一个产品的推出和定价联系在一起，你早晚会在 不赚钱的前提下累趴下的。

**段永平：**&#x8865;充一点：买的时候避开的意思就是不懂不做，事前想清楚。

去年有个朋友想投双汇，问我的看法。我说我不懂，你好像也不比我懂，但我觉 得中国食品行业风险大，不知道啥时候就会出点啥问题，结果不幸而言中了。

（2011-03-30）

04\. 网友：最近看双汇的事件，有个问题求教：危机危机，是危险还是机会呢？ 我想得起的类似事件：2008 年 GE（通用电气），丰田的汽车召回，日本地震和 丰田等停产，创维当年的法律事件；三聚氰胺事件的三鹿破产与伊利蒙牛的跌涨； apple（苹果）的乔布斯因病休假；手机收费陷阱问题；阿里巴巴的供应商欺诈 问题；目前双汇的“瘦肉精”事件；问题是到底如何判断目前的危机是危险还是 机会呢？有没有些什么据以参考标准呢？假如以双汇为例，它是机会呢还是危 险？

我想到的些判断基准：

1、段总讲 GE 的企业文化把 Integrity（诚信）放到首位，而且当时似乎只有伊 梅尔特公开认错——一个角度；

2、做正确的事的过程里把事没做正确（还是段总讲的）——一个角度；（但是 言下之意或者前提是做正确的事）；

3、从消费者角度思考；

4、从财务的角度思考（受到的损害程度和安全空间）；

5、从事件与公司业务相关程度考虑（段总讲创维时讲的）；以双汇为例，有些 难题：食品的安全与别的东西的安全有差别，出现问题如何评估；品牌受损怎么 评估（不像直接亏损那样明白）；消费者心理如何影响企业以及影响程度评估； 我觉得了解的越深越容易做出判断，但是了解详情有时比较困难，而且还是有些 标准需要权衡取舍的。希望集思广益把问题想透。（2011-03-24）

**段永平：**&#x8FD9;种时候关键看你对公司及其文化有多了解。比如，GE 的伊梅尔特出 来说公司没问题时我是相信他确实认为自己公司没问题，所以我就敢下手买。

如果王石碰到类似问题时出来说话我也会相信的。<br>

但如果是雷曼或 AIG 的 CEO 当时出来说我是无法相信的，因为不了解。

你如果了解双汇并绝对相信他们的话，那就会是个机会，不然还是离远一点好。

阿里的供应商欺诈问题反映了当时管理层的心态已经出问题了，但马云后来的处 理还是很给力的，如果股价因此大掉的话，我觉得会是个机会。不过，实际情况 好像掉得也很少，看不出有大油水。

我个人认为，一般情况下，急跌的股票还是不要碰的好。资本市场大多数情况下 都很聪明，但偶尔的错判往往会是机会。

投资不要怕错失机会，最重要的是不要犯大错。没听说过对这种事有规律可循的。

（2011-03-24）

05.网友：前段时间奶粉的三聚氰胺问题，最近猪肉的瘦肉精问题。这些问题不 是个别企业的问题，而是整个行业的问题。明知道是错的事情还是去做。 我想问，这样的企业段总有什么样的看法？是透过现象看本质，避免碰这样的企 业呢？还是人非圣贤，孰能无过，改了就是好同志？或者当出现什么样的问题时 您会卖掉企业（如您投资过的诺基亚），或出了问题继续观察（如现在的淘宝）？ 这个问题一直困扰着我的投资决策，希望能得到您的指点。&#x20;

&#x20;**段永平：**&#x4F60;只要能分清“做了错的事情”和“把事情做错了”，你就会有结论的。

（2011-03-17）

&#x20; 网友：请段总明示。举个例子。

**段永平：我个人的经验基本是用“己所不欲”排除法来鉴别企业的，比如一家 明知故犯地加三聚氰胺的公司我就会认为是一家不好的公司。又比如一家为   500**

**大而 500 大的公司我就会很小心。**（2010-03-19）&#x20;

06.网友：如何看待企业犯错？

**段永平：**&#x6839;据你说的资料没法判断该不该卖。好企业也可能会犯错的。

我一般看到企业犯错时，主要判断这个错是“做了错的事情”还是在想“把事情 做对”的过程当中犯的错。任何人在“做对的事情”的前提下，为了“把事情做 对”的过程当中都是会犯错的，这种错误也可能给企业造成很大的短期损失，但 长期而言却可能微不足道。而另一种错误的损失却可以是致命的。（2011-01-05）

07.网友：最近看了一遍《从优秀到卓越》，促进了“做对的事情”的内涵的理 解。十年前看过《基业长青》，没有留下什么映像，现正在看；这一年多在本博 客中的浸染，使我似乎读懂了一些《基业长青》。感觉这两本书不仅对做企业有 指导作用，对每个人的人生也同样具有指导作用。<br>

**段永平：**&#x4ECE;买股票就是买公司的角度看，这两本书确实值得看。（我都翻过一下， 觉得蛮好的。）（2013-04-02）

#### 24.绿大地

01.网友 W：如果一家公司出现了危机，比如为了上市融资获得高估值而财务造 假，虚增收入虚增利润而导致该公司董事长辞职，后又被捕入狱。但这家公司所 处行业毛利率普遍在 30%以上，尤其是这家公司刚刚签了一个城市的 5 亿人民币 园林绿化工程的合约。在这家公司出现大跌的时候，我耐心买入长期持有，并打 电话询问公司主营业务的进展，公司新董事长会在公司管理上做出如何的调整来 防范再次出现危机。我这样做算不算一个投机者？

**段永平：**&#x5982;果你真打算持有 10 年的话就不算，希望你能睡好觉. （2011-03-22）

网友 W：呵呵，这次公司出了事，曝光的越多越好，矫枉过正希望能置之死地而 后生。

**段永平：**&#x6211;发现“做错的事情”的人和公司往往在侥幸活过来后还会继续“做错 的事情”，就有点像骗子被抓以后往往会认为是骗术不够好而总结如何提高骗术 一样。（2011-03-24）

#### 25.海底捞

网友：段总：海底捞算不算一家有利润之外追求的公司？

**段永平：**&#x4E0D;太熟海底捞，最近去过一次 LA 的店吃过一次。服务确实非常好，服 务人员给人的感觉很亲切和真诚。很少见到华人的服务很真诚的，多数服务感觉 都有点势力。也许这真是一家有利润之上追求的公司？

&#x20; 网友：张勇对员工真诚，所以员工对客户真诚，是这个道理吗？

&#x20;**段永平：**&#x5BF9;员工真诚并不是让员工对客户真诚的充分条件，但确实是必要条件。 在公司里建立一个那样的文化似乎不太容易，所以很少见。苹果店里的员工对用 户的态度也是比较真诚的，这些年我大概去过几十次不同的苹果店了，几乎没有 过任何不愉快的经历。我没有服务业的经验，没想过如何能够让所有一线员工如      何做到那样的办法。（2014-08-18）

&#x20;网友：大道，今天我又要带全家去体验海底捞了，它的服务确实用心，甚至让人

惊讶，看海外很多家也是排队火爆。產品差異化的成功案例很多，背后是有功力 的，护城河明显；您怎麼看待類似海底捞这种服務行業的服务差异化？（其實食 材、配料与同行无差异）

**段永平：**&#x6211;去过 Cupertino 点几次，店长好像叫阳光，人很好！(2019-05-30)

&#x20;**段永平：**&#x6D77;底捞的东西还可以的，服务确实不错。餐饮业到最后还是要靠东西好<br>

吃才能活下去。(2019-10-02)

#### 26.招商银行

01.网友：段兄，你如何看待招行的这个做法，是不是有点利润导向的味道？

东方早报：未来招行的利润增长点是什么？

马蔚华：招行将集中力量发展零售银行、中小企业贷款和非利息收入这三块业务， 推进以低资本消耗的方式来发展业务，扩大低资本风险、高收益业务的规模，并 且提高贷款的定价能力和非利息收入的比重。

零售业务目前占比约 30%，未来还要提高；批发业务，最主要的是中小企业，目 前占比约为 50%，之后这个比重还要提高；中间收入，现状是该业务受到很多制 约，收费业务增长还是非常艰难的过程。

所以，我觉得目前体制下，未来一段时期，5-10 年，银行利差收入仍是银行业 的主要利润来源。

东方早报：贷款必然要消耗资本，如今资本约束越来越严，银行结构如何调整？

马蔚华：调结构就需要不断的资本优化，比如招行零售业务，去年（房贷）按揭 打 7 折，我们就减少这种贷款，增加经营性贷款，微小企业贷款。

批发业务中加大对中小企业的贷款，因为中小企业起码不会下浮利率。在非利差 收入，我们会千方百计发展私人银行、财富管理业务等。

宗旨是在降低资本消耗前提下，取得资本效率最大化，必须在收益和风险间取得 最佳平衡。

**段永平：**&#x6CA1;看出来有什么不妥啊。贬义的“利润导向”一般指的是短视行为，实 际结果往往是让公司的长期总利润（未来现金流折现）降低。我不懂银行，看不 出老马的话会对未来有伤害。（2011-11-30）

02.网友：段总：招商银行董事长经常强调“质量、规模、效益均衡发展”，而 管理层强调的是“早一点、快一点、好一点”，从 2006 年开始买入算起，规模

扩大了（从 9000 亿到今天近 3 万亿）、盈利增加了（从 71 亿到今年一季 116 亿）、质量也没见到不好，但是从投资人的角度看总是要为规模而配股。段总的 敢为天下后是否可以理解为质量效益为先呢？强调规模的公司是否开了快车？ 对“早一点、快一点”有所警惕。

&#x20;**段永平：**&#x5F3A;调规模应该指的是把事情做对的范畴。如果规模大于一切则可能会做 不对的事情。从你说的来看，我没看出有啥不妥。（2012-05-18）

&#x20;03.网友：我昨天买招行了。                                                                理由：

1、价格低于我的持股成本了，有了机会补仓，为啥不买。

2、和大众的投资思维逆向操作，大家抛弃它，我看着不错，偏要买。<br>

3、总股本 215 亿，净利润 180 亿，每股收益 0.83 元，昨天股价 14.45，市盈率

17.4，我觉得可以接受。请段大哥点拨一下。

**段永平：**&#x4E0D;敢乱讲。3100 亿市值。如果你有这么多钱，你愿意把招行买下来， 那就说明你看明白了。其实我也想为我们国内的慈善基金会（有些钱暂时不花的） 买点 A 股，一直还没下手呢。（2010-04-20）

04.网友：我是招行客户，也喜欢用招行。原本特别反感电话推销保险，07 年招 行的电话打过来，卖招商信诺的保险，我居然也接受了，招行的营销能力确实强， 强在细节管理，因为回想起来，招行卖保险的 MM，“话术”了得，环环相扣， 这种客户心理捕捉的优势，可能也和信诺这家公司的传统有关。但是我想如果从 市值看，招行和腾讯同样是 2000 亿左右市值，哪个更有可能将市值翻到 6000

甚至 1 万亿？

**段永平：**&#x6211;觉得腾讯可能性更大些。（2010-07-08）

**段永平：**&#x6211;猜若干年后阿里巴巴集团或腾讯会是中国最早到 500 亿，甚至 1000 亿美金市值的民营上市公司。（2010-02-09）

&#x20;05.网友：段总怎么看招行，我研究招行很久了，一直在投资招行，我觉得招行 是国内银行业里的伟大企业，我非常喜欢招行。招商现在一年赚 400 亿，看十年

就是 4000 亿合理吗？我认为合理。

网友 t：十年赚 4000 亿 多少钱买合适呢？现在市值 2820 亿。十年收回成本 后赚 1180 亿，百分四十的收益率好像并不太划算

**段永平：**&#x5982;果没有负债，没有风险，这个价钱确实不错。（2013-03-01）

![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.gif) 网友：我觉得我对企业文化的理解不错，不过在阿段这上升了一个台阶，比如福 特的企业文化，员工第一，做出优秀的产品，最后才是利润。以前投过一家 ST 公司（财务异常上市公司），最开始提的口号好像是 20 年进入世界五百强，现 在改为“一切以利润为导向“。这家公司问题很大，估计永远都翻不了身了

**段永平：** ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif)（2010-11-15）

网友：想要了解更多关于企业文化方面的知识，比如什么是好的企业文化，如何 建立好的企业文化，大道能推荐一本书吗？

**段永平：我觉得看书可能不如看企业来的明白。书可以看《基业长青》，企业 可以看苹果这些年的产品发布会（每年九月份的那个就好），或者多看几遍老 巴在大学的问答交流。（2019-06-01）**

## 第 4 节：产品、差异化与创新

## 一、好产品

网友：我好像明白一个公司能够基业长青最关键的因素就是能够一直生产出好产 品，依靠别的方法都是短暂的？

**段永平：**&#x4F60;这是 Google 翻译过来的文字不？（2015-12-19）

**案例 1：苹果（Apple）**（2011-04-01）

我不是所谓的“果粉”，像我这个年纪和这么理性的人，不大会是任何人或东西 的 fans，我甚至不是巴菲特的 fans。实际上我以前其实一直多少有点不太喜欢 苹果，毕竟用了 pc 和诺基亚这么多年，但 iphone 和 ipad 的出现确实彻底改变 了我对苹果的认识。作为一个普通人，我没能力从技术上去说这些产品，所以只 说说我都用 iphone 和 ipad 干什么。

1.首先，iphone 和 ipad 都非常容易上手。早年用摩托罗拉的时候，心里那个烦 啊，用户界面太难用了。后来用诺基亚的智能手机时又找到了当年用 moto 的感 觉。以我个人的水平而言，android 的界面水平还远远比不上 iphone（也许我们 自己的出来后会改变一点这个局面？期待中）。上个月我曾经想买个 android phone 试试的，在商店里转了半个多小时，店员给我介绍了 10 来分钟，在 3 个 牌子（htc、3 星、moto）间挑来挑去，晕晕乎乎中最后还是决定不想给自己添 麻烦了。

iphone？呵呵，我几乎拿到手里时就会用了。店员只是告诉我开关在哪里，那些 图标是什么，前后花了大概 15 秒钟。当苹果的销售员可真容易啊，我自己前段 时间在苹果店里只花了几分钟就推销了一台 ipad2。

2.我用 iphone 干什么？我的 iphone 上下载的软件其实比大多数人都少，毕竟不 太花时间玩这个东西。电话、短信、email、上网、世界时间、天气、图片、gps

（地图）、记事本、youtube、相机、录音、录像、字典、相册、图书馆、iPod、 facetime（视频通话）、电影、电视、股票查询及交易、报纸、指南针、日历（记 事本）、游戏、等等等等，不太注意但特别常用的是手电筒。这些功能可能只是

iphone 的沧海一粟。其实我想说的不是 iphone 有多少功能，最重要的的所有这 些功能都非常容易上手。一学就会、无师自通！

3.ipad2

很多人说 ipad 其实就是个大号的 iphone。在用 ipad 之前我同意这个说法，但 用了一段时间后觉得这个“大”确实大得非常有道理。我现在基本上已经不太用<br>

我的手提电脑了，旅行的时候带上 ipad 就绝对够了，但 iphone 有时候还是觉得 有点小。对我而言，ipad2 最强大的地方就是网络功能很强大，上网非常快，又 没有手提电脑开机的麻烦，用起来真是很爽，携带起来又轻便。还有一个特别强 大的功能就是图片，包括上网看图片。我的 ipad2 里有大概 1 万张照片，记录着 我们生活中的很多瞬间，没事看看真的觉得生活很美好，这个玩意儿该值多少钱 呢？facetime（视频）也是一个很好的功能，在有 wifi 的前提下用起来那个叫 方便，比打电话还容易。

我给我妈妈也买了个 ipad2，最近能让人带回去。里面也装上我们的照片。以后 视频通话就非常方便了（以前曾经想过用电脑视频，实在是有点麻烦），没事老 人家还可以翻翻照片，真是好啊。

别的就不说了，有机会大家自己体会吧。总的来讲，如果经济上不是个太大的负 担的话，iphone 和 ipad2 是绝对值得拥有的产品，生活确实因此变得不同了。

（2011-04-01）

说说我喜欢苹果的一些理由。这不是论文，想到就说，没有重点和先后秩序。

1\. 苹果的产品确实把用户体验或消费者导向做到极致了，对手在相当长的时间 里难以超越甚至接近（对喜欢苹果的用户而言）。

2\. 苹果的平台建立起来了，或者说生意模式或者说护城河已经形成了（光软件 一年都几十亿的收入了）。

3\. 苹果单一产品的模式实际上是我们这个行业里的最高境界，以前我大概只见 到任天堂做到过（sony 的游戏产品类似）。单一产品的模式有非常多的好处：

a. 可以集中人力物力将产品做得更好。比较一下 iphone 系列和诺基亚系列（今 年要推出 40 个品种）。苹果产品的单位开发成本是非常低的，但单个产品的开 发费却是最高的。

b. 材料成本低且质量好，大规模带来的效益。苹果的成本控制也是做到极致的， 同样功能的硬件恐怕没人能达到苹果的成本。

c. 渠道成本低。呵呵，不是同行的不一定能明白这话到底有什么分量（同行也 未必明白），我是 20 年前从任天堂那里学会的。那时很多做游戏机的都喜欢做 很多品种，最后下场都不太好。

4\. 苹果的营销也是做到极致了，连广告费都比同行低很多，卖的价钱却往往很 好。

5\. 苹果的产品处在一个巨大并还有巨大成长的市场里。 a. 智能手机市场有多大？你懂的！

b. pad 市场有多大？你也会懂的。<br>

总而言之，我认为苹果现在其实还处在其成长的早期，应该还有很大的空间。

扣掉现金的话，苹果的今年的未来 pe 只有 12-13 倍啊，明年可能要到 10 以下了。 当然，以上我说的这些点中的任何一点的改变都可能或多或少地改变苹果，如果 有苹果的股票的话，就要留心这些变化了。我认为 Jobs 如果真请长假的话，在 相当长的时间里对苹果的业务不会有大影响。（2011-01-22）

#### 问答：

**1.聚焦好产品**

01.网友：苹果的股东大会说要发布震撼人心的产品，苹果又要爆发了。

**段永平：**&#x6211;去股东大会了，人家没说过，只说会聚焦在做最好的产品上，难道这 还不够吗？（2013-03-02）

02.苹果 CEO 库克高盛大会实录：2013 年 02 月 13 日 &#x20;

问：对预付费用户来说，iphone 的价格过高。你对创造一种出色的用户体验是 怎么想的？

&#x20;库克：这是一个经常都会被问及的问题。**伟大的产品是我们的“北极星”。在所 有员工每天上班时，他们都会以此为目标。我们不会去做任何自认为不够伟大 的产品；有些公司会这样做，但我们不会。**

**段永平：**&#x6628;天去苹果的股东大会，听到库克讲了类似的话，大意是：虽然我们可 以有个按钮，可以随时做最多的产品，但我们的文化是做最好的产品而不是最多 的。不过，他也顺便提了一下，认为要建立一个强大的生态系统，必须要有一定 的量。所以苹果是会兼顾最好的产品和足够的份额的关系的。

另外，库克也提到量的概念其实不仅仅是卖了多少，而是人们买了以后用多少。 有兴趣的可以查下新浪上微博的活跃用户都在用啥，也许大家会发现用苹果的人 的比例其实远远超过印象中的“市场占有率”。

参考的统计办法：可以看热门微博 top100 里发帖人是用什么发的帖，还可以看 评论人用什么写的评论，也可以看微话题下面评论人是用什么评论的。

（2013-02-24）

**段永平：**&#x8BB0;得库克还说：我们最重要的是聚焦在做最好的产品上，利润会随之而 来的。关于大屏手机的猜想：还不是很理解为什么苹果还没有推大屏手机，但知 道苹果已经认真考虑过了。猜想是：苹果可能有一个更好的方案，或者苹果推的 时候再说？也许苹果还没有找到大屏是伟大产品的感觉？当然，只要苹果能出个 大屏或比大屏更好的产品，早点晚点都不会影响苹果的价值的。（2013-02-24）<br>

03.网友：产品文化=企业文化 透过公司的产品可以检验公司的文化 写给别人看 的公司文化，永远只能挂在墙上，却没有任何价值。-------可以这样理解吗？

&#x20;**段永平：**&#x4EA7;品文化是企业文化的一部分但不是全部。一般来讲能有挂在墙上的也 比哪里都没有的强，但如果不是真的则强得有限。 （2012-03-07）

04.引用 苹果 CEO 库克接受《财富》杂志专访：我们从来没想要成为先行者，只 想做最好的产品

《财富》：今年一财季，尽管销售了 7400 万台 iphone，利润达到 180 亿美元， 可是由于业绩同比基本持平，苹果遭受了许多的批评。你对此有何看法？

库克：我擅长于屏蔽噪音。我会回到核心问题：我们在做正确的事情吗？仍然记 得自己的方向吗？我们是否专注于制造最好的设备，从而通过某种方式让人们的 生活变得更丰富？人们真正喜欢我们的产品，客户很高兴：这才是我们的动力所 在，随着时间的推移，我相信其他一切都会接踵而来。

《财富》：曾经有一段时间 Mac（苹果电脑）占了营收的 75%，今天却是 iphone

（苹果手机）占了大部分营收。怎样才能让产品营收比例变得更理想，你对此有 何看法？

库克：在过去，Mac 曾经占了 100%的营收，随后 iPod 来了，营收组合出现了变 化。我是这样看待这个问题的：专注于制造最好的产品。只有最好的产品才会带 来其他的一切，最终我们的激活设备数量达到了 10 亿。我们不断增加客户想要

的服务，上个季度服务业务的营收接近 90 亿美元。

《财富》：我换个方式来问吧，一直以来人们都认为苹果首先看重的还是销售设 备，提供服务主要是为销售设备服务的，是这么一回事吗？

库克：已经不是这样了。我们的目光已经聚焦在开发好产品上。至于服务，在我 们看来服务本身就是产品。不论是 Apple Pay 还是 Apple Music，或者是 App Store 中的海量 APP，推动这些服务发展的正是庞大的设备装机量。正因如此，投资服 务才能带来很好的增长机会。2016-02-23

05\. 你怎么看待智能手机行业？

**段永平：我不懂。但是我知道，好东西不需要推广，你看智能手机一出来，很 快就普及开了。如果你的东西推出去没有很快抓住用户，肯定是不够好，一定 要回来好好思考，想自己的问题。（2018-09-30）**

06\. 这么多手机公司，为什么苹果最成功？

&#x20; **段永平：**&#x82F9;果很难得，focus（聚焦）在自己做的事情上。苹果有利润之上的追 求，就是做最好的产品。苹果文化的强度很强，有严格的“Stop Doing List”， 一定要满足用户，一定做最好的产品。我们不和苹果比，因为 1000 个功能里面，<br>

有一些比苹果强，说明不了什么。就像 CBA 篮球打不过 NBA，说我们会功夫，不 是扯嘛。（2018-09-30）

**2.消费者导向**

01\. 网友：段总：能否讲和总结一下：近 5 年来苹果是非常难见到的能够长期 focus 聚焦在“做对的事情”的是指哪些？

**段永平：**&#x8FD1;五年来这句话是怎么出来的？这一改意思就完全变了。**苹果一直聚焦** **的就是“用户体验”，所以这样的公司才能出伟大的产品**。居然有些人会站在死 胡同里说苹果的路会越走越窄，呵呵，有趣。（2013-02-18）

02\. 网友：我这样理解苹果，现在苹果已经不是靠一种新产品就可以打败的了， 良好的企业文化（用户体验）、生态链（app 应用商店、电脑和手机、平板共享 平台）等等，这些都决定了苹果的增长在很长的时间都是有很大的确定性的，对 苹果没有信心，是还不够不了解苹果，当然也有可能会有意外，科技界本来就奇 迹很多。

**段永平：**&#x5176;实革命性的产品并不会贴个标签在上面。ipad mini 绝对是个革命性 的产品，大家会看到的。另外，苹果的产品是非常细致的。三星最近据说要推 8

吋的平板，比苹果 7.9 吋的大一点。别的不说，有一点可能就会很有趣。ipad mini 我是可以放进裤子口袋的，但只是刚刚好放进去，个人觉得 ipad mini 可能是测

过的。8 吋的很可能放不下![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)（2013-03-01）

03.网友：**苹果不追求市场份额，cook（库克）关注的是使用量和满意度，对我 很有启发的一点是 cook 经常用 IOS 使用者的使用流量、电子商务成交量来判断 iphone 和 ipad 的受欢迎程度，**&#x8FD9;些指标苹果都远超安卓。总体上我感觉安卓用 户用便宜的价格买了个“贵”产品而苹果的用户用更高的价格买了个“便宜” 的产品。

现在智能手机处于从无到有的普及阶段，所以价格较低的安卓市场份额越来越大 很正常，苹果会不断“蚕食”安卓的市场份额的，最终肯定不止 15%，因为会有 越来越多的安卓用户发现苹果的产品是最“便宜”的。

**段永平：**&#x968F;便说几个自己观察到的现象或事实：1，iphone 的总量一直都是在上 升；2，由于各种环境比较好，iphone 在美国和日本的市场份额实际上是非常高 的，大概在 40%上下；3，消费能力强的地方明显 iphone 的使用比例高，中国也 如此；4，iphone 使用者的忠诚度远高于 Android，但比初期有所下降，大屏 iphone 出来后非常可能会让很多 Android 用户加入或回到 iphone 阵营；5，Android 的 使用流量的份额这几年实际上是上升的，一方面是因为 Android 确实改善了很多

\--看看我们的手机的制造工艺和有多好用就明白了，另一方面 iphone 没有大屏 也可能是很重要的原因之一。另外，日本韩国车这几十年也是在不断改善的，有 多少习惯用欧洲车的人改用日本或韩国或者国产车了？有多少一开始用日本车 或韩国车或国产车的人一旦有条件就改用欧洲车的？（2014-08-24）<br>

04.网友：我的观察，买苹果的人大部分不是因为性价比高。价值有多少或性价 比有多高，一般用户怎么计算得清楚呢？人们用苹果主要是因为好用、放心用、 有面子。性价比其次。当然，有很多人因为售价高而不舍得买的。但这部分人也 不是因为性价比不够高而不买的。总的来说，苹果因品质高而受欢迎，因价格高 而不可能太普及了。

**段永平：**&#x6211;同意苹果产品是高性价比的。高性价比的东西不等于便宜，该知道的 人最后都会知道的。好的车往往也是性价比高的车，而且这些车往往比较贵，想 通这个就明白苹果的性价比问题了。当然，对于那些整天换手机，最后换到 iphone 的人们而言，这个问题就不是问题。（2014-08-28）

网友 L：ipad、iphone、minipad 是我拥有的最超值的产品，喜欢用的功能都做 到了让我非常满足的程度：（照相、听网易公开课、看电影、摄像、存储旅行照 片、facetime、iMessage、玩儿游戏……），要是没有苹果，我会花更多的钱和 时间也达不到它们带来的效果。这两年很轻松的就推荐出去十几部，还没有一个 抱怨买亏了的。

**段永平：**&#x662F;哦，看起来免费的东西往往最贵、看起来便宜的东西往往不便宜。买 东西如此，投资也常常如此。我也觉得 i 系列是最便宜的东西，**一个是消费体验 好（这个值很多钱哈）**，换机的钱也省了。（2013-02-28）

网友 W：您说贵与便宜的问题让我悟到不少东西，比如，免费的东西往往不便宜， 贵的东西有时其实很便宜。各人对钱的理解不同，所以钱有时候不能用来衡量价 值。比如，买本好书才几十块钱，收获可能远超几百倍书的价钱。买只好牙刷十 几块钱，可能收获的是一口好牙，这些东西算钱就没法算了。再比如您请巴菲特 吃饭，巴菲特说最重要的是生意模式，您说收获远超饭局的价钱，我现在也更看 得懂了，既是很好的投资，又顺带做了慈善。

**段永平：**&#x80FD;明白贵与便宜的关系非常不容易啊，绝大部分人大概一辈子都很难明 白的。（2013-03-29）

05、段永平的博文：《我也是苹果股东》 2017-03-21&#x20;

**独家专访段永平——“苹果无法在中国战胜我们”|新刊上市  商业周刊/中文版**

**段永平：**&#x6211;要觉得我们能干倒苹果，我怎么会买苹果股票呢？我肯定不会说这话 的！再说，**我们公司不会把追求干倒谁过作为目标，也不会把市场份额，销售 数量及排名作为我们的追求目标的。我们追求的就是改善用户体验，做出最好 的产品，其他的都是水到渠成的事情。**

\---刚刚看到一篇文章的标题，很是无奈。（2017-03-21）

**3.焦点法则**

01.网友：很久以前在一份财经媒体上看到段先生一句话“做企业如跳水运动员， 动作越少越好”，深受启发，也把它作为做人的原则之一。

**段永平：**&#x5475;呵，我总觉得那是史玉柱说的。他老说是我说的，我自己有点不记得 当时是不是用过跳水这个例子。我大概说过企业一定要聚焦，或者是焦点法则等 等。不过用跳水来形容非常好，谁说的不重要。（2010-03-27）

**引用：段永平与浙大学生对话**（2008-01-08） 同学：因为当时我看到过你说一句话，是说做企业就像高台跳水一样，动作越少 越好。想听听您对这块怎么看。

**段永平：**&#x6211;的原话是讲的叫焦点法则就 focus。就是你必须在 focus 聚焦就说 你要做你自己擅长的事情。中国有一段时间在搞多元化，我就不懂，我说这个多 元化你一个都搞不好，说鸡蛋要放在很多个篮子里头，我的观点就鸡蛋就放在一 个篮子里头，这样我才看得住，放八个篮子里头肯定至少打掉七个，最后那个还 守不住，对吧？嗯，是这么来的。 那我觉得史玉柱他的理解呢，是用他自己的语言表表达出来的。我的原话，我不 记得我曾经在任何地方讲过用高台跳水这个讲法，但是呢 focus 这个讲法我是 肯定讲过的，因为我跟史玉柱也比较熟了，因为我们原来在泰山产业会有时候在 一块聊天，那么也聊到过一些事情，我说我反正没讲过，他说我肯定讲过，我前 段时间还在旧金山见到他，这个我是确实不记得，但是那个道理是一样的。他说 高台跳水这个东西，就说你动作越少越越安全越简洁，所以他现在要这个聚焦在 这个他喜欢并且熟悉的事情上头，我觉得这个道理其实很简单，但简单的东西是 不容易的，很难做到。（2008-01-08）

**引用:追逐世界的节奏 《经营者》杂志 2000 年，步步高总经理访谈记录**

&#x20; **4.焦点法则**

**段永平：**&#x4E00;个企业家应将 80%的精力放在 20%的事情上，这 20%的事情能给你带 来 80%效益。我们有的企业最大的毛病就是什么事都想去做。实际上每个企业的 资源都是有限的，包括人力、物力、财力，把这有限的资源用到无限的投资方面 上去肯定要出问题。有的企业什么都在做，但都没有什么特点，你不知道它到底 是干什么的。这种企业的问题也许短期内不会表现出来，但将来会很麻烦。我从 “小霸王”到“步步高”，一直都在搞电子行业，且搞活经济的产品也很单一， 但与我们同时起步的一些搞多元化经营的企业相比，我们的发展速度和经营效果 要好得多，“小霸王”在几年之间资产翻了几十倍，我觉得与焦点法则有很大关 系。同时在经营时还要对自己的资源及能力有一个正确估计，有时有人问我对某 一个项目有没有兴趣，我问都不问就说没有兴趣，我知道我自己和我的企业就这 么点能力和规模，不可能再分散资源，我根本就不追求有天上掉馅饼的事。**(2000** **年)**

**段永平：这个采访也有印象。**（2019-10-09）

02.网友Ｌ：我理解的苹果就是一家高度聚焦的公司：用科技和艺术的结合为世 界提供完美产品！

不管是 IOS 系统、iphone、iPad，还是未来的 iWatch、iCar……都在这一焦点<br>

指导下。 用了几年的苹果产品，说三点最深的体会： 1:安全、好用、实用、耐用

在 IOS 足够安全，简洁的系统里，再也不用浪费时间去升级了（简直就是一个解 脱）；不用再担心父母使用困难（又一个解脱）；把 iWork、iLife 统统存 iCloud 上，用任意同样流畅的终端调用………

2:爱不释手 一个好的设计既要简约又要有内涵，同时还要有质感，这或许就是艺术的部分吧

（我也表达不完全）；就是不管拿在手里，还是使用各种 app（应用软件），怎 么用都不觉得腻。

3:性价比超高 其他衣、食、住、行，如果要达到苹果这样的高度和水准，基本上都贵得让一般 人承受不起。

我使用过的产品不外乎或好用、或迷人、或不好还不迷人、也有好用又迷人同时 非常贵的……直到苹果的出现，它同时实现了好用又迷人还不贵。

IWacth 推出会让我们重新使用手表，传统手表除了装饰和收藏外，已经没有使 用价值了；而汽车也已经到了可以实现颠覆性产品的时代了。（其实我也不知道 苹果会不会做汽车，特斯拉的问题虽然很多，但电动车的驾驶体验相对于传统汽 车还是很震撼的，如果苹果找到了解决技术的人才，加之本身的设计能力，相信 大概率能重塑这个行业）。

每次写苹果，都觉得生活美好，有盼头！

&#x20;**段永平：**&#x4F60;确实是明白的果粉。只有真正的果粉才能明白苹果产品的性价比多数 情况下是比别人高很多的。（2015-02-16）

03.网友：当年在美国 Master 研究生毕业的时候跟着大家去招聘会找工作，苹果 前面总是排起长长的人龙，后来在中国香港赶上 iPad 开卖首日，开门前一小时 去也要排起长长的人龙，这一年因为身处中国香港，我已经代人买过两个 iPad 和 4 个 iphone4 了……真是不堪其苦。

苹果和 windows 的用户体验很不一样，我和朋友们的归纳就是两者都很 powerful

（当然还有 UNIX 系统也很 powerful），但是苹果让人用近乎白痴的方式使用 powerful 的功能，而 windows 让人用近乎专业人士的方式使用 powerful 的功能

（UNIX 平台的系统是让人用近乎天才的方式使用 powerful 的功能）。

&#x20;我想起照相曾经是很专业的事情，照相机很复杂，有人会照相甚至算是特长，后 来傻瓜机大肆流行，人人都能照了，再后来又开始流行专业单反相机了，现在满 大街不拿个单反还真不好意思。历史总是交替的演变，非常神奇。

**段永平：**&#x4F60;这个形容很形象，这正是 apple 厉害的地方。apple 还有不少特别厉 害的地方，比如：品种单一，所以效率高，质量一致性好，成本低，库存好管理 等等。我从做小霸王是就追求品种单一，特别知道单一的好处和难度，这个行业 里明白这一点并有意识去做的不多，我们现在也根本做不到这一点。比较一下诺 基亚，你就马上能明白品种单一的好处和难度了。（2011-01-22）

诺基亚需要用很多品种才能做到消费者导向，而苹果用一个品种就做到了，这里 面功夫差很多啊。（2011-02-08）

04.乔布斯曾建议谷歌 CEO 业务瘦身：不要成为微软   &#x20;

史蒂夫·乔布斯（Steve Jobs）传记显示，乔布斯曾呼吁谷歌 CEO 拉里·佩奇

（Larry Page）专注于某些业务并放弃部……

**段永平：**&#x4C;arry Page 上台后马上就砍掉了不少没用的产品，果然厉害！

（2011-10-23）

05.引用：宏达电预测首季营收跌逾 3 成  据中国台湾媒体报道，中国台湾知名品牌宏达电昨日公布第一季营收。由于宏达 电主力市场美国，不仅在苹果 iphone 4S 上市后光环褪去，还同时败给了韩国三 星 Galaxy Note 等产品，宏达电昨日公布的第一季营收预测值，较上季大幅下跌 三百多……

**段永平：**&#x63A8;那么多机种，早晚是要出问题的。（2012-02-07）

&#x20; **5.聚焦的好处**

01.[iphone4S 再出问题 耳机出现间歇性故障](https://xueqiu.com/S/AAPL/20477324)

北京时间 11 月 7 日消息，iphone4S 智能手机近日再次出现问题，有用户反映耳 机出现间歇性故障，向外打电话时无法听见声音。 据苹果官网显示，关于耳机 失灵的讨论已经多达近 30 页，不少用户表示这次故障能够通过重新开机或者拔 掉耳机然后恢复，但是这仅是暂时解决问题……   &#x20;

**段永平：**&#x54C1;种少的好处之一，有问题反映快，解决也快。 （2011-11-07）  网友：好观点！&#x20;

**段永平：** It's not an opinion，it is a fact.（2011-11-07）  网友 x：an unexpected finding based on fact.&#x20;

**段永平：我十多年前就明白这个道理，从任天堂那里学的。这些年来很惊奇地 发现，很少有人能看懂。**（2011-11-08） &#x20;

02.网友：做产品和市场，往往喜欢很多品种，好处用于不同细分市场，用于上 下夹攻对手的品种。坏处搞一大堆库存，品质不好控制。单一品种需要很好的功 力---把产品做到极致。难啊。因为难，大部分人喜欢多品种。就跟投资一样， 价值投资简单，但很不容易。做波动，往往很吸引人。

**段永平：**&#x5475;呵，亏钱当然比赚钱容易 ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)（2011-01-28）<br>

&#x20;03.网友：段总在博客上的文章和回复值得反复阅读，常读常新，特别是在心静 的时候、杂音过后的时候阅读效果更佳。有些问题我还不知道自己不知道。段总 的一些观点背后的逻辑与道理，需要常思常想，才能明白一二。          “c.渠道成本低。呵呵，不是同行的不一定能明白这话到底有什么分量（同行也 未必明白），我是 20 年前从任天堂那里学会的。那时很多做游戏机的都喜欢做 很多品种，最后下场都不太好。”----这句话，我想需要想很久才会明白一点。 我发现，没有理解的地方往往就是读了之后，过一周、二周就会很容易忘记的内 容。某天翻出来再读时，发现原来段总早就说过了。

&#x20; **段永平：**&#x5E38;思长想是很重要的，你能有这个体会说明你真的想了。我说的很多东 西都是经过很多年思考得出的结论，虽然未必都一定对，但多数都是蛮有道理的。 “最后下场都不太好”这句话下面是躺着无数企业的，看不到这句话的意思确实                      有点可惜。（2013-02-14）

网友：“ c.渠道成本低。呵呵，不是同行的不一定能明白这话到底有什么分量

（同行也未必明白)，我是 20 年前从任天堂那里学会的。那时很多做游戏机的都 喜欢做很多品种，最后下场都不太好。”怎么理解？

&#x20; **段永平**：品种多则单一品种研发投入少，库存总量多，单位成本也会高。                                         (2019-08-14)

&#x20;04.网友：热盼段总讲一下当年渠道成本的故事。

&#x20;**段永平：**&#x8FD9;里说的渠道成本的意思就是品种越多，占用的渠道库存越大，是几何                    级数的关系。（2011-04-09）

网友：品种越多，占用的渠道库存越大---------是不是说会给经销商增加负担&#x20;

**段永平：**&#x7ECF;销商的负担难道不是自己的负担？怪不得有人为了 2015 年成第一而 向经销商压货呢。（2011-04-09）

05.网友：您那句“c.渠道成本低……”的话。您的意思是说“苹果单一产品模 式”让苹果在渠道上降低了成本。我在思考的是“为什么单一产品模式可以降低 渠道成本”？

**段永平：**&#x4F60;倒过来想也许就明白了。举个例子，20 多年前我们卖小霸王游戏机

（还没到学习机）时，小霸王游戏机只有两款：红白机和蓝白机（有点像 iphone 的黑色和白色），对手们经常都是有好几十款的。当时我们的销售部门最多被质 疑的问题就是款式太少。好像最后款式多的那些对手最后绝大多数都消失了，原 因大概就是品种太多最后导致的问题（其实是表象）。

网友：当年的小霸王学习机也差不多是单一产品模式，记得当时单一款 486B 卖 得很好，而且在旺季来临前就备足（生产）了货源。<br>

**段永平：**&#x5475;呵，这是我能看懂苹果的重要原因之一，没有那段经历，不一定会知 道苹果有多厉害。（2012-02-01）

网友：可以请段总说一下他那时候的小霸王，应该是一个例外（一家负债的小长 家）。

**段永平：**&#x90A3;时的小霸王确实厉害，记得 95 年仅仅靠那一两款产品的获利就和当 时的海尔差不多了。（2013-10-17）

06\. 网友：单一产品的好处多多，为何 OPPO 与步步高要把手机产品分系列，品 种不少呢？

**段永平：我们属于知道要追求少品种的，所以相对同行多数来说品种确实要少，** **但做不到苹果的水平。**（2012-01-29）

07\. 网友：段哥您好，请问，您当初做企业的时候，从无绳电话、到复读机、dvd、 点读机、音乐手机、等产品，电子产品推陈出新速度很快，但是每次 bbk（步步 高）都可以准确出击并取得不错的成绩，连续很多年，做这么多的商业决策，似 乎都有北斗星为 bbk 指引方向。这背后有啥奥秘，或是原则性的东西？

**段永平：**&#x5176;实你说的我们这些产品是三家完全互相独立的公司出的，时间跨度也 很大，而且，你只是说了比较成功的那些产品，不成功的你可能根本就不知道。 这个世界没有常胜将军哈。

网友 B：段总您好，不知道能否分享一下你们公司的那些不成功产品的经验呀， 以前在网上了解到步步高退出生活电器，是否生活电器也算是不成功的产品，谢 谢!

**段永平：**&#x4E5F;许很多很多年以后说吧。（2013-02-16）

08.网友：我也喜欢产品单一的公司，其实像茅台，云南白药，都是产品单一的 公司。甚至做人也是一样，能把一件事做到极致的人一定是非常优秀的。李昌钰 就说，一生只做一件事。

**段永平：**&#x5355;一比较容易聚焦，这意味着把事情做对的效率高同时犯错误的概率低。

要做到“单一”是非常难的一件事，因为市场的需求是多样化的。ipad 和 iphone 有一样神奇的东西，那就是不管什么年龄段的用户都觉得这是个专门为自己设计 的产品。

我那个“著名”朋友李路是个孝子，给 70 多的老爸买了个 ipad，结果老爸一天 到晚地捧着 ipad ， 还跟李路说： 这东东简直就是专门为我设计的嘛 ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif)。

（2011-04-09）

09.网友：做产品是不是也这样？是不是 SKU 越多越不好做？我又要再纳闷一次 了，为什么小公司小品牌的产品一般都比较多？比如一个山寨电器厂的话，肯定<br>

什么收音机游戏机甚至手机都做很多款式。哪个是因哪个是果？是因为一开始 小，无法依靠单项产品生存，所以必须多做几款？还是因为什么都做又没做好， 所以是小公司小厂家？

最近有一家很著名的 PC 厂商说，在今后每年要推出 50 款智能机器。 一般来讲， 大家都知道苹果这样机型越少越好，为什么有些厂商还要进行”机海战术“呢？ 他们是出于什么考量呢？

**段永平：**&#x82F9;果现在一年都要推两款了，说明用户的需求比较分散。推 50 款基本 是技穷的表现，东西绝对好不了。（2013-09-16）

10.网友：有些公司精品战略，有些机海战略。两者各有难度，难度点不一样。 我观察到的一点是：精品战略做得好的公司比机海战略做得好的公司的资本效率 和回报率要好得多，不是一般的多。

**段永平：如果大凡你能做好一样东西，你为啥还要做很多做不好的东西呢？不 过，确实有些会因为做了一些好东西后就以为自己啥都能做好，于是就开始做 一些自己做不好的东西了。人的精力是有限的，聚焦的人或公司最后会变得很 厉害，这也是我喜欢苹果的原因。（2013-10-17）**

网友：**如果大凡你能做好一样东西，你为啥还要做很多做不好的东西呢？---- 这个好问题值得我思考十年**。

11.网友：近来在看艾-里斯的书《聚焦》，很有收获，但有一个问题比较困惑， 像 GE（通用电气）这样的成功多元化公司是非常稀少的，多元化对管理的要求 能力非常高，也很容易导致大公司病。我能理解苹果在比如手机领域产品是高度 聚焦的（诺基亚很糟糕），但是如何理解苹果从手机，到平板，到手表，甚至有 可能将来的电视和汽车领域，这样的“多元化”和其他公司的“多元化”有什么 不同？我初步的思考是不是企业文化的本质区别导致结果大不一样？比如苹果 一直以消费者为导向来多元化，而其他公司是为了规模或者增长追求来多元化导 致结果大不一样？望段大哥能解惑。&#x20;

**段永平：**&#x5173;于苹果的东西，你可以查 Tim Cook 都说过啥。该说的他都说过了。 你把所有的苹果发布会都看几遍大概就明白苹果是这么回事了。如果还看不明 白，我相信也没有谁能让你明白。 补充一点，理解苹果确实不容易，我似乎从来就没让不明白的任何人明白过，所 以也不可能在这里几句话说明白。我的建议就是把 Tim Cook 说过的东西都拿出 来看一下，包括每一次发布会都认真看一下，**哪怕不是为了投资苹果，至少也可 以看到一家好公司应该是啥样子。如果看完这些还是看不明白的话，我确实也 是没办法让人明白的。**（2015-02-14）

12.网友：自己创业开推拿足浴店有 6 年的时间，后面感觉自己的天花板比较低， 所以寻找新的机会，这两年有代理三家公司的产品，现在主要的迷茫点是开店面 可以维持基本收入，而有一个社交电商的加盟项目在深思熟虑后也觉得前景不 错，那个坡和雪会比开推拿店好。而我们的能力和资源也是有限，是选择齐头并 进还是重点突破好呢？<br>

**段永平**：我不了解你和你的生意，很难给任何建议。不过，**就生意种类一般而言，** **做得越多，赚得越少，所以聚焦很重要。**(2019-08-02)

13.引用: 《步步高总裁段永平人大演讲精彩实录》 **问：请问您对企业多元化和归核化的看法？**

&#x20; **段永平：归核化可能就是我们企业的焦点法则，意思就是集中优势兵力打歼灭** **战。我一向是反对多元化的，**&#x6211;们现在的情况不是多元化，应称为行业的专业化 和产品的多样化。我们产品有几大类，但分为三个独立的公司。**一般，如果我们 判断进不了前三名的行业，我们就不进入**。

[**段永平**](http://nteswjq.blog.163.com/)**:**&#x8FD9;是我们还没开始卖 DVD 以前的事情了，忘了哪一年，大概是 99 年的样 子？简而言之，那时候我比现在要年轻很多。(2019-10-19)

**------------------------------------------------------------------------------------------------------------------------------**

**案例 2 :** 步步高产品（OPPO 、vivo、小天才）

&#x20; 网友：段总，您好！我是ＯＰＰＯ的一员，听很多前辈讲过您的很多故事，您是 我们整个体系的精神领袖，我们很希望下次您会东莞的时候到 OPPO 这边来转转， 给大家合个影，留念一下，呵呵，祝您在美国的日子天天开心，生意越做越火哦。

&#x20;                                                             **段永平：** 好，下次回去一定去祝你们生意越做越火啊， **最重要是要东西好**

（2010-03-28） &#x20;

网友 d：大道做营销绝对是顶级的。

&#x20; **段永平：**&#x6CA1;有靠营销起来并能持久的公司，**能够让公司长久的唯一办法就是能够                                不断有好产品**。(2019-09-17)

&#x20; **1.小天才宝贝电脑**

&#x20;01.网友：我想问一个和投资没有关系的问题，我想给儿子买点读产品，发现你 们家的都是点读机，可是明显点读笔更友好，更适合小孩，为什么不进军点读笔                                                      市场呢？

&#x20;**段永平：**&#x4F60;买点读产品是想给小孩学习的吧？我觉得这种产品最重要的是内容以

及使用的趣味性及方便性，当然产品质量的可靠性（包括内容的可靠性啊，很多 人在买的时候往往会忽略这个最重要的东西）是最基本的东西。步步高点读机能 有这么大销量绝对是有道理的，不然不会有那么多家长和老师推荐啊。 如果你 的小孩在 6 岁以下，强烈建议你看看小天才宝贝电脑。这个产品主要的特点是可 以帮小孩从小培养一些好的习惯，如果你知道好的习惯有多重要的话。  [网页链](http://www.okii.com/main.action) [接](http://www.okii.com/main.action)  顺便说下，刚刚上搜狗查小天才宝贝电脑，居然找不到主页，还要回到百度，<br>

不知道是不是我眼神有问题。还有就是这个主页为什么是 okii 呢？好像以前告

诉过我，忘了 ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif)。(2011-11-24)

**段永平：**&#x6211;们出的是小天才宝贝电脑，是相对于大人的电脑而言的。我们这个东 西主要是寓教于乐，从小培养小孩的好习惯，并不是教一堆没用的东西。小天才 宝贝电脑的游戏大都是教育内容的，让小孩学起来不枯燥，非常适合 2-6 岁的小 孩。包括对眼睛的健康宝贝电脑也是下了功夫的，好过玩别的。（2011-07-14）

&#x20; 网友：哈，这么好的产品一定大卖啊。

&#x20;**段永平：**&#x8FD9;个产品不容易卖，初期的产品教育非常难，不是我们擅长的事。

（2011-07-21）

&#x20;**段永平：**&#x8FD9;个产品与众不同的地方是试图让小孩从小养成良好的习惯（不是教几 首唐诗的那种），**想想一个好习惯值多少钱吧**。（2012-02-16）

网友：小天才平板电脑真的是好东西啊 一出来我就想买两台给小孩用，让小孩 从 IPAD 解放出来。我是知道小天才是步步高的。真担心其他消费者不知道小天 才是步步高的而选择购买其他品牌的产品。毕竟步步高复读机培养的一群消费者 现在都有钱了！&#x20;

**段永平：**&#x5C0F;天才平板电脑就是给小孩用的，在小孩的眼睛保护上下了功夫，比 iPad 强。至于品牌嘛，本来就是产品的积累，到时该知道的就知道了。

（2014-11-16）

网友：买了一台小天才宝贝电脑，小孩子很感兴趣，游戏设计很好。2、家长能 够控制时间，防沉迷 3、方便，我家小孩子像玩具一样提过去提过来。4、声音 非常好，是原音。5、我的时间也多了。把“小天才”一放，不用缠我了。

&#x20;**段永平：**&#x7279;别说明一下，里面有好多游戏都是学习的游戏哈。幼儿园缺人手时这 个都能帮上大忙。小天才宝贝电脑最有意思的地方是可以教会小孩的不是一般的 知识，而是良好的习惯以及其他知识以外但小孩也很需要学的东西，比如情商啥                                  的。（2011-07-25）

网友 x：我觉得给 2-6 岁小孩儿用的电脑必须有一个核心技术----结实。哈哈哈。

**段永平：**&#x6211;们这个确实结实，小孩站上面都没事。（2011-07-01）

&#x20; **2.小天才电话手表**

&#x20;01.网友：小天才据说六月份要出一款针对儿童的，电话手表，因为是家好企业

（也是段总旗下的哈）逻辑上值得期待，建议有小孩的到时候都该去当地的小天 才体验店好好去体验下了？<br>

**段永平：**&#x6211;也听说了，和苹果表概念也许不一样。我不是很明白推这款产品的目 的，也很好奇想看看到底会怎么样，但肯定不会比苹果表更受关注的。

（2015-04-26）

&#x20; 网友：针对儿童使用群体主打“安全”概念，尤其是在国内，儿童走丢和被拐的 现象频发，加上城市的上班族很多家长都是没有时间自己接送孩子的。当然，家 长可以给孩子买手机，但是很多学校是不让孩子带手机的，（手表还没有限制）， 所以“安全”的概念还是颇受关注。360 推出的“360 儿童安全卫士-智能手表” 已经出到第 3 代了（第 3 代可以打电话，1、2 代只能定位和发语音）。

**段永平：** “安全”的想法非常好！（2015-04-28）

02.引用：小天才电话手表 2015-07-10

**段永平：**&#x5C0F;天才电话手表上市了，有 3 到 10 岁小朋友的来看看！在小朋友里这 个也许会比苹果表实用。（2015-07-10）

&#x20; 网友：看准父母爱孩子这个普遍道理，再聚焦把产品做到极致，大卖。

**段永平：**&#x786E;实买的人很多哈。（2015-07-11）

&#x20;03.网友：以小天才为例，我家小孩之前用小米很便宜很耐用，屏幕都碎成什么 样了，依然好用，充一次用一周！二百的东西我们觉得很值，但最后还是换成小 天才了，因为孩子在班里加不了好友，大部分人都是小天才表，入不了他们的好 友圈，没办法只能换成新款 1000 多的，现在每天微信，语音，建群各种聊，计 步每天争第一！ 上周小孩同班的同学和我一个朋友的小孩三个一起公园里玩，2 个小天才加好友 了，一个 360 的加不了，第二天 360 也换成同款小天才了。这就是小天才目前的 护城河，基于小孩社交圈形成的，和产品价格质量等都没任何关系……

**段永平：** ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif)**。(**&#x32;019-05-30)

&#x20;04.网友：天猫的小天才专卖店也是步步高底下的么？

网友 W：小天才是步步高旗下的。

&#x20;**段永平：**&#x5C0F;天才手表似乎很好用的样子，前段时间我在深圳到处都见到小朋友戴                                      着。(2019-09-18)

#### 3.OPPO、vivo 手机

01.网友：Oppo finder 2500，绝对值得期待！不知道这款手机是否会改变中国 国产智能手机的格局啊？<br>

**段永平：**&#x80AF;定不会。如果你不想买 iphone 的话，那就来个 OPPO 吧。不过，长期 而言，我还是觉得 iphone 便宜。（2012-06-13）

02.网友：恭喜，激动人心的发布会，感觉 oppo 一下子高出一大截。

**段永平：**&#x770B;跟谁比了。个人认为 OPPO 的东西确实比绝大多数的 Android 强。 Android 的市场非常大，OPPO 还有很多机会。（2013-09-25）

**引用:**&#x4F;PPO T29 又放大气外观图啦，速速围观，速速围观！&#x20;

网友：这个图片真心丑，屏幕那样刻意去 P 一下好看吗

**段永平：**&#x6B3E;式多了有些细节就顾不上了&#x20;

什么时候能像 iphone 一样一年才出一款就算成功了。okay，一年出两款也算成 功，好吧？（2012-09-20）

网友： 少不是根本，主要是影响力和利润，没有比得过 iPhone 的。

**段永平：**&#x505A;到少是非常难的，OPPO 蓝光倒是做到了（2012-09-20）

网友： X1 是我用过最好用的智能手机！

**段永平：** vivo X1 做得真不错哦，至少我这么认为，肯定比我以前用过的很多 智能手机要好用。别的不说，我估计 vivo X1 肯定会卖断货，信不信由你哈。

（2012-12-18）

网友 K：我觉得国产手机，和外国的手机还是有差距的？！！

**段永平：**&#x54EA;个外国？可以肯定的是，能比我们公司手机好的外国手机已经很少了， 但差不多但各有特色的确实还有一些。 （2012-12-18）

03.网友：我现在用的就是 vivo。产品从外观、尺寸、工艺制作、手感；软件的 优化、功能的完善、性能的反应、电池的续航时间、信号的稳定性、边用边充电 时的系统反应和发热程度、等，对多个安卓系统牌子都体验过觉得 vivo 做得最 好的。

**段永平：**&#x76;ivo 确实很好啊，不然这个价不会有这个量的。当然，继续改进还是 很需要的。iphone 每年也改进不小啊，每代 iphone 都比上一代有相当大改进， 隔代看尤其明显。（2015-04-27）

04.网友：作为用户感觉 OPPO 和 VIVO 的产品看得见和看不见的地方都会把它做 好，特别是电池，已经很久出门都没用充电宝了！

**段永平：**&#x7535;池属于看得见的哈。(2019-08-08)

#### 4.OPPO 蓝光机

01.网友：段大哥的产品可都是比同类的产品价格高噢（国产）。

**段永平：**&#x4F60;有空上网查查 OPPO 的 blu-ray DVD player 在美国卖什么价吧，也看 看老美们是怎么评价我们的产品的。同一个地方产的产品不一定是“同类”产 品。

OPPO DVD 和 blu-ray DVD player 可是在这几年里有过好几次 CNET 的 rating 评 分第一名啊，好像目前还是，具体我也没查过。

我们现在的产品比我当 CEO 时可是强太多了，有些方面和产品的水平已经可以说 是世界一流的了，当然整体实力上还有不小差距。（2010-10-04）

02.博文：和钱没关系。 (2011-03-01)

&#x20;   **段永平：**&#x4ECA;天开车去旧金山见一个朋友，到朋友住的酒店后把车交给酒店门口的                                             停车员就进去聊天了。 出来时就看见停车员很兴奋地冲过来对着我一顿吱哩哇啦的。 听半天才明白，原来他看到我的车牌上有 OPPO，认为我肯定和 OPPO 有关系。           呵呵，他是我们的用户，现正用着我们的蓝光 DVD Player 呢。

确认我是 OPPO 的人以后，跟我夸了半天的 OPPO 是 No.1 第一名 ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.gif)。 听别人夸自己公司的产品的感觉还是不错的 ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image011.gif)。

![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif)近来类似的经历已经有若干次了，看来我们的 OPPO 在美国也是很有希望的 ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image013.gif)。 **(**&#x32;011-03-01)

**段永平：刚刚收到公司同事的 Email，放上来分享一下 。弟兄们干得真是不 错啊！** &#x20;

我一直觉得 OPPO 的企业和产品文化有很多地方和苹果很相近，也许有一天 OPPO 也可以像当年 SONY 改变世界对日本产品印象。

那样改变世界对中国产品的印象。希望在 21111112 之前能看到这一天哈。 Anyway，希望不久我们的智能手机也能得到这种评价哦。（2011-11-02） [http://www.pcmag.com/article2/0,2817,2395518,00.asp#fbid=awOGXmWmHN2](http://www.pcmag.com/article2/0%2C2817%2C2395518%2C00.asp#fbid%3DawOGXmWmHN2)

\---------------------------------------------------------------------

Tony，阿段：

今天 OPPO 的蓝光机得到了 PCMag 杂志的 Reader’s Choice 读者选择奖。之前我 们并不知道 PCMag 在举办用户投票，也从来和这家杂志没有任何联系。PCMag 是<br>

美国最大的历史悠久的计算机专业杂志，最近几年开始覆盖家用电器。有意思的 是 PCMag 专门把 OPPO 与苹果相比，引用数据来表明 OPPO 的用户满意度、质量、 推荐意愿都要比苹果好。它开篇写到“Apple doesn't make Blu-ray players， but if it did，we have a feeling that OPPO Digital would still beat it in customer satisfaction.”（苹果不生产蓝光机，即使它生产，我们认为 OPPO 仍然会在用户满意度上击败它）。最后写到“This manufacturer of high-end Blu-ray players received satisfaction scores that would make even Apple jealous.”（这家公司的高端蓝光机所收到的用户满意度得分让苹果也嫉妒）。

今天中午我们聚了餐来感谢员工。另外，想让你们知道，每次发布新机时，我们 也是总要留一定的数量的新机不卖来保证售后服务，苹果也许是向 OPPO 学的（玩 笑）。

&#x20; 敬礼！

&#x20; Jin

01.网友：另外，想让你们知道，每次发布新机时，我们也是总要留一定的数量 的新机不卖来保证售后服务，苹果也许是向 OPPO 学的（玩笑）。

\---------------------

奇怪了，这是您同事给您的 Email 里的话吗，难道您本来不知道吗？

**段永平：**&#x6211; 10 年前就不在一线了，具体大家怎么做我怎么可能知道？除非有时 找我聊天或讨论啥事时我会知道一点。（2011-11-03）

\---------------------------------------------------------------------------------------------------------------------

**03.博文：**&#x4F;PPO Blu-ray Players （蓝光播放器） (2012-09-20)

**段永平：老中做的电子消费品让别国品牌弱爆的事情见过吗？**&#x50;CMag 杂志 Readers' Choice survey 读者选择调查的权威度老美知道。 **为老同事们感到骄傲！**

这里是文章的具体链接 [http://www.pcmag.com/article2/0,2817,2409758,00.asp](http://www.pcmag.com/article2/0%2C2817%2C2409758%2C00.asp)

“Last year,we launched our inaugural PCMag Readers' Choice survey for Blu-ray players. By a mile,the highest-rated brand of players was OPPO Digital,a small manufacturer of high-end Blu-ray devices like the Editors' Choice BDP-93. Satisfaction with OPPO was in a stratosphere that would even make Apple drool. In 2012,OPPO picks up right where it left off and again wins a Readers' Choice  Award.”  “我们去年开始了蓝光机的 PCMag Reader’s Choice（读者奖）评选。领先一

大截，得到最好评价的蓝光机是 OPPO Digital，一个小公司生产的高端蓝光机 并且得到了 Editor’s Choice（编辑奖）的 BDP-93。OPPO 的满意度高高在上， 甚至让苹果流口水。今年 2012，OPPO 再次赢得了 Reader’s Choice 奖”

&#x20;“OPPO Digital's Blu-ray players aren't cheap ,but according to our survey respondents ,you get what you pay for. OPPO continues to receive among the best satisfaction ratings that we've ever seen in a PCMag Readers' Choice survey.”<br>

“OPPO 蓝光机不便宜，但是根据我们的调查报告，物有所值。OPPO 连续赢得我 们所见过的 PCMag“读者奖”最好的满意度得分” (2012-09-20)

\-------------------------------------------------------------------------------------------------------------------------

04.引用: 一加 7 系列手机在京发布，一加 7 Pro 售价 3999 元起

目前一加 7 系列新品发布会在北京举行，发布会上大家关心的一加 7 Pro 和一加

7 的价格终于揭晓了，其中一加 7Pro 价格为 3999 元起，一加 7 售价为 2999 元

起。 一加 7 Pro 无疑成为了这次发布会的主角，它采用一块 6.67 英寸 19.5:9 的 QHD+显示屏，值得一提的是，这块屏幕是一加和三星...

**段永平：**&#x636E;说瞬间就抢光了，产品会说话哈。（2019-05-22）

网友：正在抢一加 7pro。感觉刘作虎学长真是创业者的典范，大道能分享一些 他的经历和对他的看法吗？

&#x20;**段永平：**&#x5218;作虎很踏实，既知道要做对的事情，也很努力地把事情做对，而且把 事情做对的能力也极强。以前美国市场的 OPPO DVD 和蓝光都是他领军做的，做 得那是相当好哈，哪怕 OPPO 退出这个市场后，影响力还依然很大呢。看看现在 还在网上卖什么价就明白了。

补充一下，目前在 amazon 上卖 3750 美金一台的这款当时出厂价好像是 1999 美 金（我记得不一定对）。图里看到的所有价钱都比当时的零售价高了接近一倍。 电子产品里极其少见啊。（2019-05-20）

网友：在知乎上看到的：“刘作虎曾负责蓝光 DVD 的开发。产品原计划在当年 圣诞节上市，可效果一直没达到预期。他纠结地向步步高创始人段永平汇报。意 外的是，老板听完，轻描淡写地回复，「赶不上今年，赶明年呗。」结果，这款 DVD 真的推迟了一整年才问世。“ 同作为产品经理的我真的佩服，无他，特意 来感谢大道的回复。能再分享点趣事更好。

&#x20;**段永平：**&#x8FD9;个故事跟刘作虎无关。我管事的时候他可能还没来或刚来没几年，不      是直接和我联系的。（2019-05-20）

&#x20; 网友：只是想知道这些是不是真的。和还有哪些真的趣闻。你怎么理解并不重要。

**段永平：**&#x786E;实发生过，但和刘作虎无关。（2019-05-21）

网友：段总您好，我是您粉丝，也是 oppo 蓝光北京代理(11 年-18 年，中国大陆 首批)，23 岁身上就 1 万块钱运气好跟着 oppo 蓝光做了代理，到北京买房五年 换 5 车（我是草根），去年 oppodigital 彻底结束，最后一批货溢价很高，大伙 赚的盆满钵满。段总，谢谢您。一出生社会受 oppo 企业文化熏陶，一身武艺出 自 oppo，受益无穷。项目结束后，我现在也做股票投资，是因为喜欢，想发掘 里边的真谛，逻辑比当下赚钱更重要，以前对段总的“fast is slow”，“做对 的事情和把事情做对”，倒着都能背(企业文化，必须得老背)；进入资本市场， 我才理解透彻，少走很多弯路。草根输在起跑线，需要比条件好的孩子多花 10

年甚至更多的时间去补课。如果 10 年后段总会公开拍卖自己的午餐，我一定会<br>

去竞标，这是我现在的梦想，一来感恩挖井人，二来我坚持做投资(一直到老)， 能够靠实力拍下您午餐，是练武之人最高殊荣，和对自己严格要求的交代。

&#x20;**段永平：**&#x7ED3;束蓝光部门是不得已的一件事情，不然无法维持一个高质量的队伍， 因为这个产品确实江河日下了。目前原蓝光的团队大多转入一加了，他们现在干                  得也很不错哈。(2019-09-12)

&#x20;网友：每次听到有人讲互联网思维，刘作虎都想驳回去。他说：“当年步步高做 得风生水起，阿段是多么厉害的一个人物，但我从未听他说过什么惊人的语录， 说来说去就是“做对的事情，把事情做对”。听起来很普通，但商业不就是这样  吗？把产品做好，不要欺骗消费者。”

**段永平**：刘作虎当年负责的 DVD 和蓝光在北美市场还是非常厉害的，现在虽然退 出了，但上 eBay 看看目前大家的收藏品卖什么价就知道我说啥了。一加也还不 错，但进步空间还很大。(2020-06-19)

\---------------------------------------------------------------

01.网友：很多人并没有看明白 oppo 和 vivo 的成功，以为只是简单的广告＋渠 道胜利！要我说，段总如果去当产品经理，照样把这个行业的高手们打趴下 99.99%。

**段永平：**&#x6CA1;有人可以把别人打趴下，趴下的都是自己趴下的。（2016-10-12）

&#x20; 网友：段大哥能说说研究公司方面的一些技巧吗？

**段永平：**&#x505A;了 20 年企业，一直找不到技巧。（2010-05-04）

02\. 网友：步步高/oppo 在埋头苦干，很可怕。也许，三年后，步步高/oppo 将 是前三甲；也许，步步高/oppo 的手机市场开拓，又将是一个敢为天下后经典案 例。

**段永平：**&#x4F60;小看我们了。（2010-06-07）

网友：我觉得 oppo 的竞争对手目前来说是三星、索爱 ，以后的竞争对手是诺基 亚和苹果。

&#x20;**段永平：我一直认为我们最大的竞争对手就是我们自己**。实际上，排名不是我们 要追求的东西。**能做出用户喜欢的产品才是我们的追求**。也许真有哪一天我们也

能做出个“伟大的产品”。希望 50 年内。（2010-06-08）

03.你是怎么找到你们公司的产品的 mission（使命）的？

&#x20;**段永平：**&#x4EA7;品角度，是慢慢摸索出来的，发现不对，赶紧停。比如苹果的充电器， 说了一年了，今年没推出来。没推出来，肯定是有问题没解决。没解决就不推。

（2018-09-30）<br>

## 二、产品差异化

**差异化：就是用户需要但其他竞争对手满足不了的某些东西。**（2018-11-05）

#### 1. 产品差异化

01.网友：如何判断一个企业做一个产品差异化的正确与否

**段永平：差异化其实就是顾客需要但别人没能满足的需求。千万别简单地理解 成不一样。差异化的好产品一般都是长期积累厚积薄发出来的，当然偶尔也有 运气的成分，但长期来讲，运气的成分可以忽略。（2011-08-16）**

02.网友 H：企业可以通过三方面获得竞争优势：低成本、差异化和专一化。要 看懂这个，需要很强的能力圈啊。

**段永平：**&#x957F;期来讲，低成本是靠不住的，差异化最重要，**专一是产生差异化的基** **本点**。（2011-08-03）

03\. 网友：有一个关于产品的问题想不明白，关于平板电脑的细分市场的。Ipad 的火爆，是针对平板电脑市场内的细分，它是平板电脑的异数还是标尺？还是相 对于原有 PC 市场的细分，开创一个新的品类？

目前在规划产品的时候，还是没有办法跳出竞品导向的思维方式，对于这类新生 的产品形态，该用什么样的方式进入，我对“敢为天下后”又产生了一些困惑。

**段永平：差异化指的就是用户需求满意度上的差异，绝对不仅仅指的是外观。 产品的差异化不是指的所谓的“与众不同”，而是指“与众不同”的东西正好 是用户需要而其他人没能够满足的东西。当一个产品找到的“差异化”正好是 很多很多用户需要的东西时，那这个产品大概就很成功了。**

**我个人理解，好的公司一般来讲就是能够持续找到用户“差异化”需求的那些 公司吧。如果找不到“差异化”的东西，那“敢为天下后”的产品就会成为悲 剧。所以“敢为天下后”的前提一定是你能够提供出你的用户群需要而别人没 有或不能提供的“差异化”的产品。**

**“差异化”的东西是在不断地变化的，当大家（很多公司）都有了的“差异化”** **就会变成基本需求。有时候好的产品的“差异化”东西不一定需要很多，有时 候哪怕有一个也会让公司（或产品）很成功。**

**比如，如果你能想清楚麦当劳的“差异化”是什么，也许你就会明白些。至于 如何找到“差异化”的问题，那是“如何把事情做对”的范畴的事情，那可不 是一朝一夕之“功夫”啊。苹果能有现在这些个好东西，那也是 10 几 20 年的 积累的“厚积薄发”而已。**（2011-01-10）<br>

04\. 网友：段大哥这点偏了产品本质，如果云南创可贴让伤口痊愈更快，粘一些 也无碍。

**段永平：**&#x4F60;的更快是和不贴比，不是和别的产品比。产品的基本功能不能满足的 话，根本就不应该上市。但产品的竞争力往往是基本功能以外的东西。就像好卖 的手表不是因为更准一样。我就是昨天刚刚用过以后觉得不好才去 7-11 买的邦 迪。（2010-08-17）

05.网友：据说方丈很睿智，请教一下:手机和电脑都是竞争很激烈的产品，为啥 苹果靠的是手机赚很多钱而不是其他电子产品？空调和电视机同样也是很竞争 激烈的领域，为啥格力靠空调赚了那么多钱，却没有企业靠卖电视赚很多钱？美 的可以干掉老板电器却干不掉苏泊尔？这些都是竞争很激烈。为啥有的可以胜出 有的不行？难道生意特性不一样还是人不一样？

&#x20;不明真相的群众:这问题太多了，回答完这些问题都能出一本书了。请大家来回 答吧。@大道无形我有型 对这里面的好几个行业都比较熟？

**段永平：**&#x7B80;单讲，没有差异化的产品是很难长期赚到大钱的。苹果之所以赚到大 钱，是因为苹果是卖 iphone 的，其他同理哈。**简单讲一下差异化：就是用户需 要但其他竞争对手满足不了的某些东西**。（2018-11-05）

06\. 网友：段大哥，在芒格的穷查理宝典书“普世的智慧”里讲到一个商业模型： 就是一些竞争激烈的行业，比如麦片，经常做一些促销打折活动，但是大家都活 得很好，而有一些行业最后都只剩下几个寡头，但是谁都不赚钱，芒格说品牌是 麦片行业大家都活得不错的主要因素。但是我总体还是没有想通，为什么在竞争 十分激烈的行业中会存在这两种截然不同的现象。这对于我理解商业模式感觉还 是挺重要的，请段大哥指点。

**段永平：**&#x6211;觉得决定因素是差异化。比如航空公司，由于产品几乎没办法差异化， 最后只能靠价钱。你可以查查从北京到广州的各航空公司的票价，我猜一定几乎 是一样的。而麦片毕竟是吃的东西，不同牌子的东西口味不一样，买的人不会因 为 5%的折扣就换口味。

iphone 也是类似的情况，习惯用 iphone 的人是不大可能因为别的手机便宜一点 而换的。以前人们常换手机的原因是因为各手机之间的差异化其实非常小，所以 新的功能和外观会吸引人们去换。iphone 有可能会是实际上最便宜的手机，你 只要看看你抽屉里那些已经不用了的手机就明白了。

网络游戏其实也是一个有相当差异化的产品，虽然不玩的人看起来都差不多，但 对在游戏里面的中坚玩家而言，社区和感觉的差异实际上是巨大的，不那么容易 换。能够持续有用户喜欢的差异化产品的公司往往就有了很好的生意模式。

（2012-05-02）

07\. 网友：段大哥能否讲讲您眼中的“差异化”，特别是我们小公司如何做好 “差异化”？<br>

**段永平：**&#x4F60;自己眼里有差异化吗？如果没有，别人讲没用，如果你懂什么是差异 化其实也不用别人说，呵呵。（2012-02-21）

网友：之前您讲过专业化之后才会有差异化（不是原话）。我想：小公司专业化 后，只能是用极其有限的资源去解决一两项最能提高客户满意度的事情；长期坚 持，或许这一两项事情上拿的高分，就算是差异化？我真的是似懂非懂，希望得 到您的指导。

**段永平：**"专业化之后才会有差异化"是什么意思？好像两者没有必然的关系。你 买过东西吗？难道你没有发现很多时候你买东西的决策往往不是取决于价格？

（2012-02-21）

#### 2.差异化低的产品面临价格战

01\. 引用：巴菲特：不要投资一门蠢人都可以做的生意，因为终有一日蠢人都会 这样做。

**段永平：产品要有差异化，不然最后就是惨烈的价格竞争**。目前国内在美国上市 的那些个光伏企业就是很好的例子。

老巴引用过彼得林奇的一句话，说投资要投蠢人都能管好的企业因为早晚都会有 个蠢人来管理，潜台词指的是要买生意模式好的企业.而且随后老巴还特别强调: 即便如此，老巴还是希望有个好的管理层。

02.【引用】巴菲特 31 年股东信精华

**在一个没有管制的商品标准化产业（没有差异化），一家公司不是降低成本增 加竞争力，就是被迫倒闭关门。（1994）**

03.网友：不同白酒口感不一样，有用户粘性。喜欢喝茅台的，不会因为茅台涨 价而买五粮液。 另外高端白酒的跟风涨价，也许因为他是高端消费品，价格越高，请客送礼时越 显气派。

家电是大众消费品，而且以功能取胜，用户粘性要差一下，谁价格便宜，就买谁 的。 同时，我想也与行业生态有关系。同样是家电行业，彩电行业就比冰箱更喜欢打 价格战。90 年代彩电行业老大长虹就率先进行价格战，挑起恶性竞争，而空调 老大格力却没有这么做。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x4EF7;格战一般在产品差异化很小时容易发生。酒是有很大差异化的东西， 至少感觉如此。See‘s candy 也是有很大差异化的产品。

电子消费品，尤其是成熟的电子消费品的趋势往往是差异化越来越小，尤其在专 利保护比较弱的国家里会更明显。（2011-01-14）&#x20;

04\. 网友：请教一个问题：虽然太阳能光伏产业的前景是非常光明的，我们该 如何看待光伏产业链中的中国企业？在光伏产业链中，是否建设光伏电厂的企业 其未来前景相对最好？

**段永平：**&#x6211;没说过光伏产业的前景是光明的，我说的意思是太阳能的前景是光明 的，但目前做太阳能产品（包括光伏）我还不太懂，同质化太厉害（尤其是硅系 列），企业要大投入、长周期、进入门槛低、价格竞争厉害，最后这个行业里的 企业能活下来的大概很少。（2012-01-13）

网友：中国的太阳能企业好多啊，我以前不懂投资，买的都是他们的股票，认为 未来在他们手里，什么阳光能源、保利协鑫，后来仔细看了，其实只是生产多晶 硅和单晶硅的工厂，拿个图纸买条生产线就能干了。技术在哪？研发在哪？全在 美国，GE（通用电气）那一类的巨无霸已经把这个行业的未来五十年看在眼里了， 而我们中国的企业只能看到明年硅原料的价格。

**段永平：**&#x751F;产硅片的企业的股票要小心啊。长期而言，这类产品很难有差异化（也 就是没有“护城河”），最后必然面临产品的剧烈价格战，从而企业会没钱赚， 股票也会那个啥的。（2010-05-24）

05\. 网友：最近南方航空、中国国航涨的很多，可惜都是亏损股，去年两家国有 航空公司巨亏，国家几十亿的注资。中国航空公司这么没有竞争力，到时候大规 模的高速铁路还要跟航空公司竞争。

**段永平：**&#x822A;空公司还是不碰为好。航空公司的产品难以做到差异化，没办法赚到 钱，长期来讲没投资价值。这是巴菲特教我的，省了我好多钱。（2010-04-23）

06\. 网友：您是怎么看行业竞争那个问题的（第 75 条）？您在一线做企业的时 候，涉足的行业都是竞争很激烈的。我想您可能比芒格更有资格解释这个问题。

（2012-07-11）

**段永平：**&#x6211;认为和产品的差异化程度有关。产品差异化程度越低，行业内的企业 越难赚到钱。航空公司是极致，就是因为产品差异化小。还有一个极致的例子就 是现在很多做太阳能硅片的，下场会比航空公司还惨。芒格说他不懂不知道是什 么意思，或许是调侃的吧？

网友 X：惭愧，刚接触股票的时候还真买过硅片股票，那时候还不知道巴菲特是 谁，呵呵。造纸、纺织是不是和硅片一样？在我看来产品貌似也没有太大差异化。 另外饮用水您觉得算不算没有差异化的产品？我对于依云矿泉水能卖这么贵一 直感到很神奇。从科学的角度看它不可能有什么差异，但是被赋予故事之后又俨 然很有护城河。那么同理的话有没有可能航空公司也可以有朝一日被赋予故事拥 有护城河？另外，提问的博友想请教您医药算不算没有差异化的行业，我个人感 觉很不能算，您认为呢？

**段永平：**&#x611F;觉上最没有差异化的产品就是硅片，因为用户最后只会关心每度电的 成本，所以这个行业实际上是效率的竞争。长期而言，只有某些能真的做出高效<br>

率光电转换的产品的企业才能生存下来，而且他们的产品以后很可能就是发电 厂。

航空公司实际上的差异化也非常小，除非某航空公司的安全性被怀疑，否则消费 者的关心点会主要集中在从 a 点到 b 点的成本。当然，服务态度会有一点点差异

（如果服务态度很不好则会有很大差异）。所以以上两个行业会是价格竞争异常 激烈的行业。

你说的其他几个行业的差异化程度都比这两个行业或多或少要高一些。有些行业 看起来差异化很小，其实有些“小东西”会造成很大的差异化，比如零售的地理 位置往往会让人们会觉得方便比价钱重要等等，尤其是价钱不贵的东西。吃喝的 东西心理上的差异化其实很大的，当然渠道的差异化也很厉害，比如可口可乐的 护城河中在哪里都能买到这点是非常厉害的。

网友 Z：请问，我从事的工业地坪涂料行业不知算不算没有差异化的行业，我个 人感觉 50%象，自己有时感觉很困惑，会不会像巴菲特的纺织业一样，您认为呢？

**段永平：**&#x770B;上去有点像。不过像不等于是，比如 3M 的产品看起来都像差异化不 大的产品，实际上很多都是差异化很大的产品，比如贴纸啥的。（2012-06-26）

07\. 网友：请教段总关于光伏新能源的两个问题：1、您觉得巴菲特收购尚德电 力的可能性大吗？2、目前的手机市场同质化也很严重，但苹果手机是其中的另 类；在光伏产品同质化竞争中，第一太阳能（FSLR）是否类似苹果也是一个差异 化的异类呢？

**段永平：**&#x5176;实光伏能源早就不算新能源了吧？太阳能发电已经是很久很久以前的 事情了。人们很可能会觉得意外的是，现在太阳能发电 80-85%左右还是“光-- 热--电”的形式。硅片产品没有差异化，这个行业里的公司日子会很难过的，其 中相当部分会比很难过还难过。老巴大概会对已经建好的发电厂有兴趣，个人认 为老巴买尚德的概率比你买中六合彩的概率低。

手机里其实有很多差异化的，就像车一样。很多人其实也觉得车的差异化很小， 那是因为他们没开过别的车。不知道第一太阳能是什么公司。（2013-04-11）

网友 B：车的差异化一般 3-5 年能看出好坏，因为这时最容易出问题。其实在一 个比较成熟的市场当大家都做的差不多时，比的就是谁能把细节做好。手机的情 况也差不多吧！时间永远能证明一切。

**段永平：**&#x6709;些差异化不出事是看不出来的。不地震就“看”不出的差异。不丢手 机 iphone 的有些好处你就“没办法”知道。但是，有条件的用心的用户实际上 事先是可以了解到的。（2013-04-05）

08\. 网友：汽车、手机、电脑、电视机这些行业中的公司绝大部分最后都会失败 的，幸存下来的几个进化成了最有效率的拼装工，拼装工是赚不了几个钱的。手 机行业的下场不会比电脑和电视机行业好多少。<br>

**段永平：**&#x6C7D;车有丰田，电脑有 Mac。我见过真正没什么差异化的产品很少，比如 航空业，光伏，纺织等。（2013-04-06）

网友 F：段总经常提到差异化。1. 差异化是否是好的生意模式的必要条件？2. 任何一个行业内的公司，如果能找到差异化竞争的模式，就有了一定宽度的护城 河？3. 如果大家都找不到差异化的竞争模式，估计就只剩下价格战了。4. 任何 一个行业，都有可能发展出好的生意模式，比如格力，苹果。

**段永平：**&#x31;. 很难说必要条件，比如某些垄断企业，如中石油； 2. 高质量的差异化确实可起到防护的作用；

3\. 找不到差异化好像只能价格战，比如航空公司；

4\. 有些行业是很难有差异化的，或者说用户不太在乎差异化，比如航空公司。

（2013-03-31）

09.网友：太阳能转化效率越来越高，尤其是薄膜领域，最近深受追捧，未来太 阳能发电看上去潜力很大，太阳能能源股可否作为重点研究领域？

**段永平：**&#x4EA7;品没有差异化，最后看到的就是价格战。（2015-03-03）

10.网友：优秀企业指的是格力，说股价低迷夸张了点，我理解格力开展促销活 动巩固和扩大市场份额的做法。商业模式很好、成长空间巨大的公司目前还未找 到。

**段永平：我不了解格力，但除非不得已，用价格武器总是错的。很少人明白，低 价是不会扩大市场份额的，但被迫降价有机会保住市场份额而已。**

网友：“低价是不会扩大市场份额的，但被迫降价有机会保住市场份额而已。” 这句话应该怎么理解，麻烦段大哥再解释下好吗，我最近刚好有这样的迷惑，同 行的同类产品以我们一半的价格在打，我们量下滑了，排名也下滑了。我想降价， 但又担心陷入降价降质的恶性循环。另外，应该如何定合理的价格，或者说企业 合理的利润应该是多少？

**段永平：差异化越小的产品越容易陷入价格战。价格战会导致大家为了保持份 额而降价，所以结果往往是大家份额不变的情况下价格下来了。（2014-09）**

**段永平：**&#x53EA;要时间足够长，领头羊的降价只会带来所有人的降价，最后的结果是 大家在新的价位下继续占有老的份额。这个和囚徒的困境有点像。 （2012-10-24）

11\. 网友：最近有的企业领导要以价格战的方法逼一些品质差，性能差生产的小 企业出局。我的问题是这个市场选择了价格战还是部分企业的主观做法。有点看 不懂这种做法。

**段永平：**&#x60F3;想苹果如果也犯这个毛病会是什么结局。<br>

网友：对啊，这让我想起了当年的彩电价格大战，那时我在赛格三星，其实就是 产品没有差异化的同时产品还严重过剩，我们的玻壳合格率一步一步的提高，彩 管厂，电视机厂就是不赚钱，想技术进步严重缺资金，价格战的大弊端。

**段永平：**&#x6CA1;有差异化的工业品往往容易有价格战。资源性无差异化产品则偶尔会 有惨烈的价格战，比如石油。

网友：价格战后总会优胜劣汰，胜出的大企业会有合适的利润，是否可以这样理 解呢？&#x20;

**段永平：**&#x4EF7;格战的最后结果往往是优不胜，比如汽车业和航空业。

网友：假如某个企业预测两年大概每年有 20%的增长，但突然有一年增长了 80%， 而行业也就 20%不到的增长，大概增长的原因是因为降价打压对手，同时对手这 一年也做的确实不好，那么此时是否可以认为企业有些急功近利了。

**段永平：**&#x6211;认为，一般来讲，对企业而言降价就有点像核武器，能不用就别用， 最后对谁都没好处。主动用核武的属于……（2011-01-05）

12.网友：在某些家电领域进入门槛较低，龙头企业通过打一次价格战，扩宽自 己生意的护城河，我个人对价格战的定义就是降售价，大部分或者全线产品降售 价。**想问问大哥，企业啥时候能开这个大招儿**？

**段永平：犯病的时候。**（2014-09-30）

&#x20;13.网友：企业要去库存，特别是出新产品的时候基本都会对现有产品进行调价。           这个调价方面能谈谈您的见解吗？

**段永平：**&#x8FD9;个正常。（2014-10-01） **3.产品定价权**

01\. 网友：消费类电子行业竞争这么激烈，为什么苹果的产品却有定价权呢？

**段永平：**&#x82F9;果的差异化做得好，成本控制也非常好。类似的有可口可乐、see's candy，国内的茅台也类似。（2011-02-24）

02 网友：“电子消费品的市场竞争激烈，生意模式不是很好………”

段总，看到您这个回复，想起一个产品定价策略的问题想请教一下。1 年多前我 留意到，BBK（步步高）推出了点读机，价格在 1000 多块，并且大量在卫视频道 上做广告。跑到 BBK 在书店的渠道看，BBK 点读机周围充斥着大量杂牌，更令人 不爽的是，价格都比 BBK（步步高）低，甚至有些还低了有一半。虽然点读机的 技术门槛不高，很容易杀进来竞争，但靠从小用小霸王的经验，相信 BBK（步步 高）的质量肯定要好很多。但面对这些快速和大量的跟进，又要考虑质量的成本， 点读机的这个价格，怎么定啊？这个相对的高价，能守得住吗？国内这个价格战<br>

的杀手锏是很容易就把一个产品做死掉的，独善其身，能做到吗？我当时就觉得， 这个价格，太难定了一直保存着这个疑问，希望段总能赐教。

**段永平：**&#x5475;呵，四个轮子的都是车，价格差的比这大多了。真正的用户一般是知 道差别的。比如，我们的点读机里所有的地方都是原声的，都是在专业录音棚里 录得。这还不包括硬件的质量差别等等。买我们的大多是老师推荐的，这里肯定 是有点道理的。

买点读机的家长一般不会为了省钱而买个像点读机的点读机，大多数人会问清楚 再买的。**要有合理价格最重要是产品要有差异化，有用户想要而别人又满足不 了的东西。**&#x4ECA;天我们开会时一个朋友告诉我，他非常喜欢 ipad，因为 It's not great for everything but extremely good for a few things.。（2010-04-17）

**网友：听君一席言，明白了好些道理。1、extremely good for a few things. 专注专业。2、差异化，能满足别人满足不了的需求，是合理价格的支撑。3、 消费者其实是最聪明的，最终还是能感受到产品解决问题能力的差异，下了功 夫的真实价值终究会得到认可和追捧。4、口碑对品牌的支撑很重要。在这里最 大的收获就是平和，懂得道理就“心平气和”了... ...**

**段永平：**&#x5475;呵，总结得很好！（2010-04-17）

03.网友：借机会再向学长请教一个有关定价的具体问题：我组织制作了一款产 品，选用了最好的材料和包装，所以实际成本比较高。而市面流行的同类产品主 流价格只比我的成本价高一点。主流竞品的成本我也很清楚，是远低于我的，他 们利润颇为可观。我们这款产品如果定价在竞品同档位，应该可以形成很好的口 碑，但是利润比较鸡肋。但如果我们把价格提到自己比较舒服的位置，就会进入 一个空白档位，在那个档位几乎没人（再高一个档次反而又有了），团队都认为 尝试的结果很可能是卖不出去。

我对学长帮丁磊出主意定价的事情印象很深刻，OPPO 和 vivo 手机的定价也从不 带有价格战色彩，所以我倾向于给自己产品的价格定得也高一些。但进入一个空 白档位，确实会有些忐忑。想请教学长，您怎么看定价的问题，竞品现存的价格， 对于快消品来说，是否一个绕不过的锚？

**段永平：**&#x5B9A;价很简单，就是你给客户带来的价值的一部分，所以跟客户和价值都 有关。（2017-11-15）

04.网友：请问如何给自己的产品定价呢？在定价的时候最需要考虑的因素是什 么呢？

**段永平：**&#x7406;想主义和现实主义结合。单纯的理想主义走不远，单纯的现实主义做 不大。（2013-07-04）

05.网友：段总如果厂家根据市场情况制定了产品的出产价，那就应该是考虑了 代理商的利润，也赚到了自己应该得到的利润。至于代理商的出货价格只要不是

恶意竞争，厂家就不应该限制。让市场来反映产品竞争力这样应该比厂家设定产 品零售价格的上下限通畅一些，而且也少了监管成本。\
\<!--\
&#x20;/\* Font Definitions \*/\
&#x20;@font-face\
&#x9;{font-family:宋体;\
&#x9;panose-1:2 1 6 0 3 1 1 1 1 1;\
&#x9;mso-font-alt:SimSun;\
&#x9;mso-font-charset:134;\
&#x9;mso-generic-font-family:auto;\
&#x9;mso-font-pitch:variable;\
&#x9;mso-font-signature:3 680460288 22 0 262145 0;}\
@font-face\
&#x9;{font-family:"Cambria Math";\
&#x9;panose-1:2 4 5 3 5 4 6 3 2 4;\
&#x9;mso-font-charset:0;\
&#x9;mso-generic-font-family:roman;\
&#x9;mso-font-pitch:variable;\
&#x9;mso-font-signature:-536869121 1107305727 33554432 0 415 0;}\
@font-face\
&#x9;{font-family:Calibri;\
&#x9;panose-1:2 15 5 2 2 2 4 3 2 4;\
&#x9;mso-font-charset:0;\
&#x9;mso-generic-font-family:swiss;\
&#x9;mso-font-pitch:variable;\
&#x9;mso-font-signature:-469750017 -1073732485 9 0 511 0;}\
@font-face\
&#x9;{font-family:楷体;\
&#x9;panose-1:2 1 6 9 6 1 1 1 1 1;\
&#x9;mso-font-alt:楷体;\
&#x9;mso-font-charset:134;\
&#x9;mso-generic-font-family:modern;\
&#x9;mso-font-pitch:fixed;\
&#x9;mso-font-signature:-2147482945 953122042 22 0 262145 0;}\
@font-face\
&#x9;{font-family:"\\@宋体";\
&#x9;panose-1:2 1 6 0 3 1 1 1 1 1;\
&#x9;mso-font-charset:134;\
&#x9;mso-generic-font-family:auto;\
&#x9;mso-font-pitch:variable;\
&#x9;mso-font-signature:3 680460288 22 0 262145 0;}\
@font-face\
&#x9;{font-family:"\\@楷体";\
&#x9;mso-font-charset:134;\
&#x9;mso-generic-font-family:modern;\
&#x9;mso-font-pitch:fixed;\
&#x9;mso-font-signature:-2147482945 953122042 22 0 262145 0;}\
&#x20;/\* Style Definitions \*/\
&#x20;p.MsoNormal, li.MsoNormal, div.MsoNormal\
&#x9;{mso-style-unhide:no;\
&#x9;mso-style-qformat:yes;\
&#x9;mso-style-parent:"";\
&#x9;margin:0cm;\
&#x9;mso-pagination:none;\
&#x9;font-size:11.0pt;\
&#x9;font-family:"Calibri",sans-serif;\
&#x9;mso-ascii-font-family:Calibri;\
&#x9;mso-ascii-theme-font:minor-latin;\
&#x9;mso-fareast-font-family:宋体;\
&#x9;mso-fareast-theme-font:minor-fareast;\
&#x9;mso-hansi-font-family:Calibri;\
&#x9;mso-hansi-theme-font:minor-latin;\
&#x9;mso-bidi-font-family:"Times New Roman";\
&#x9;mso-bidi-theme-font:minor-bidi;\
&#x9;mso-fareast-language:EN-US;}\
h1\
&#x9;{mso-style-priority:9;\
&#x9;mso-style-unhide:no;\
&#x9;mso-style-qformat:yes;\
&#x9;mso-style-link:"标题 1 字符";\
&#x9;margin-top:0cm;\
&#x9;margin-right:0cm;\
&#x9;margin-bottom:0cm;\
&#x9;margin-left:6.0pt;\
&#x9;mso-pagination:none;\
&#x9;mso-outline-level:1;\
&#x9;font-size:16.0pt;\
&#x9;font-family:宋体;\
&#x9;mso-font-kerning:0pt;\
&#x9;mso-fareast-language:EN-US;}\
h2\
&#x9;{mso-style-priority:9;\
&#x9;mso-style-qformat:yes;\
&#x9;mso-style-link:"标题 2 字符";\
&#x9;margin-top:0cm;\
&#x9;margin-right:0cm;\
&#x9;margin-bottom:0cm;\
&#x9;margin-left:6.0pt;\
&#x9;mso-pagination:none;\
&#x9;mso-outline-level:2;\
&#x9;font-size:15.0pt;\
&#x9;font-family:宋体;\
&#x9;mso-fareast-language:EN-US;}\
h3\
&#x9;{mso-style-priority:9;\
&#x9;mso-style-qformat:yes;\
&#x9;mso-style-link:"标题 3 字符";\
&#x9;margin-top:0cm;\
&#x9;margin-right:0cm;\
&#x9;margin-bottom:0cm;\
&#x9;margin-left:6.0pt;\
&#x9;mso-pagination:none;\
&#x9;mso-outline-level:3;\
&#x9;font-size:14.0pt;\
&#x9;font-family:宋体;\
&#x9;mso-fareast-language:EN-US;}\
h4\
&#x9;{mso-style-priority:9;\
&#x9;mso-style-qformat:yes;\
&#x9;mso-style-link:"标题 4 字符";\
&#x9;margin-top:0cm;\
&#x9;margin-right:0cm;\
&#x9;margin-bottom:0cm;\
&#x9;margin-left:6.0pt;\
&#x9;mso-pagination:none;\
&#x9;mso-outline-level:4;\
&#x9;font-size:12.5pt;\
&#x9;font-family:宋体;\
&#x9;mso-fareast-language:EN-US;\
&#x9;font-weight:normal;\
&#x9;font-style:italic;\
&#x9;mso-bidi-font-style:normal;}\
h5\
&#x9;{mso-style-priority:9;\
&#x9;mso-style-qformat:yes;\
&#x9;mso-style-link:"标题 5 字符";\
&#x9;margin-top:0cm;\
&#x9;margin-right:0cm;\
&#x9;margin-bottom:0cm;\
&#x9;margin-left:6.0pt;\
&#x9;mso-pagination:none;\
&#x9;mso-outline-level:5;\
&#x9;font-size:12.0pt;\
&#x9;font-family:宋体;\
&#x9;mso-fareast-language:EN-US;}\
p.MsoToc1, li.MsoToc1, div.MsoToc1\
&#x9;{mso-style-priority:1;\
&#x9;mso-style-unhide:no;\
&#x9;mso-style-qformat:yes;\
&#x9;margin-top:10.65pt;\
&#x9;margin-right:0cm;\
&#x9;margin-bottom:0cm;\
&#x9;margin-left:17.05pt;\
&#x9;mso-pagination:none;\
&#x9;font-size:14.0pt;\
&#x9;font-family:"Calibri",sans-serif;\
&#x9;mso-fareast-font-family:Calibri;\
&#x9;mso-bidi-font-family:"Times New Roman";\
&#x9;mso-bidi-theme-font:minor-bidi;\
&#x9;mso-fareast-language:EN-US;\
&#x9;font-weight:bold;}\
p.MsoToc2, li.MsoToc2, div.MsoToc2\
&#x9;{mso-style-priority:1;\
&#x9;mso-style-unhide:no;\
&#x9;mso-style-qformat:yes;\
&#x9;margin-top:10.65pt;\
&#x9;margin-right:0cm;\
&#x9;margin-bottom:0cm;\
&#x9;margin-left:17.05pt;\
&#x9;mso-pagination:none;\
&#x9;font-size:11.0pt;\
&#x9;font-family:宋体;\
&#x9;mso-bidi-font-family:"Times New Roman";\
&#x9;mso-bidi-theme-font:minor-bidi;\
&#x9;mso-fareast-language:EN-US;\
&#x9;font-weight:bold;\
&#x9;font-style:italic;\
&#x9;mso-bidi-font-style:normal;}\
p.MsoToc3, li.MsoToc3, div.MsoToc3\
&#x9;{mso-style-priority:1;\
&#x9;mso-style-unhide:no;\
&#x9;mso-style-qformat:yes;\
&#x9;margin-top:5.65pt;\
&#x9;margin-right:0cm;\
&#x9;margin-bottom:0cm;\
&#x9;margin-left:39.0pt;\
&#x9;mso-pagination:none;\
&#x9;font-size:12.0pt;\
&#x9;font-family:宋体;\
&#x9;mso-bidi-font-family:"Times New Roman";\
&#x9;mso-bidi-theme-font:minor-bidi;\
&#x9;mso-fareast-language:EN-US;}\
p.MsoBodyText, li.MsoBodyText, div.MsoBodyText\
&#x9;{mso-style-priority:1;\
&#x9;mso-style-unhide:no;\
&#x9;mso-style-qformat:yes;\
&#x9;mso-style-link:"正文文本 字符";\
&#x9;margin-top:0cm;\
&#x9;margin-right:0cm;\
&#x9;margin-bottom:0cm;\
&#x9;margin-left:6.0pt;\
&#x9;mso-pagination:none;\
&#x9;font-size:12.0pt;\
&#x9;font-family:宋体;\
&#x9;mso-bidi-font-family:"Times New Roman";\
&#x9;mso-bidi-theme-font:minor-bidi;\
&#x9;mso-fareast-language:EN-US;}\
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph\
&#x9;{mso-style-priority:1;\
&#x9;mso-style-unhide:no;\
&#x9;mso-style-qformat:yes;\
&#x9;margin:0cm;\
&#x9;mso-pagination:none;\
&#x9;font-size:11.0pt;\
&#x9;font-family:"Calibri",sans-serif;\
&#x9;mso-ascii-font-family:Calibri;\
&#x9;mso-ascii-theme-font:minor-latin;\
&#x9;mso-fareast-font-family:宋体;\
&#x9;mso-fareast-theme-font:minor-fareast;\
&#x9;mso-hansi-font-family:Calibri;\
&#x9;mso-hansi-theme-font:minor-latin;\
&#x9;mso-bidi-font-family:"Times New Roman";\
&#x9;mso-bidi-theme-font:minor-bidi;\
&#x9;mso-fareast-language:EN-US;}\
span.1\
&#x9;{mso-style-name:"标题 1 字符";\
&#x9;mso-style-priority:9;\
&#x9;mso-style-unhide:no;\
&#x9;mso-style-locked:yes;\
&#x9;mso-style-link:"标题 1";\
&#x9;mso-ansi-font-size:16.0pt;\
&#x9;mso-bidi-font-size:16.0pt;\
&#x9;font-family:宋体;\
&#x9;mso-ascii-font-family:宋体;\
&#x9;mso-fareast-font-family:宋体;\
&#x9;mso-hansi-font-family:宋体;\
&#x9;font-weight:bold;}\
span.2\
&#x9;{mso-style-name:"标题 2 字符";\
&#x9;mso-style-priority:9;\
&#x9;mso-style-unhide:no;\
&#x9;mso-style-locked:yes;\
&#x9;mso-style-link:"标题 2";\
&#x9;mso-ansi-font-size:15.0pt;\
&#x9;mso-bidi-font-size:15.0pt;\
&#x9;font-family:宋体;\
&#x9;mso-ascii-font-family:宋体;\
&#x9;mso-fareast-font-family:宋体;\
&#x9;mso-hansi-font-family:宋体;\
&#x9;font-weight:bold;}\
span.3\
&#x9;{mso-style-name:"标题 3 字符";\
&#x9;mso-style-priority:9;\
&#x9;mso-style-unhide:no;\
&#x9;mso-style-locked:yes;\
&#x9;mso-style-link:"标题 3";\
&#x9;mso-ansi-font-size:14.0pt;\
&#x9;mso-bidi-font-size:14.0pt;\
&#x9;font-family:宋体;\
&#x9;mso-ascii-font-family:宋体;\
&#x9;mso-fareast-font-family:宋体;\
&#x9;mso-hansi-font-family:宋体;\
&#x9;font-weight:bold;}\
span.4\
&#x9;{mso-style-name:"标题 4 字符";\
&#x9;mso-style-priority:9;\
&#x9;mso-style-unhide:no;\
&#x9;mso-style-locked:yes;\
&#x9;mso-style-link:"标题 4";\
&#x9;mso-ansi-font-size:12.5pt;\
&#x9;mso-bidi-font-size:12.5pt;\
&#x9;font-family:宋体;\
&#x9;mso-ascii-font-family:宋体;\
&#x9;mso-fareast-font-family:宋体;\
&#x9;mso-hansi-font-family:宋体;\
&#x9;font-style:italic;\
&#x9;mso-bidi-font-style:normal;}\
span.5\
&#x9;{mso-style-name:"标题 5 字符";\
&#x9;mso-style-priority:9;\
&#x9;mso-style-unhide:no;\
&#x9;mso-style-locked:yes;\
&#x9;mso-style-link:"标题 5";\
&#x9;mso-ansi-font-size:12.0pt;\
&#x9;mso-bidi-font-size:12.0pt;\
&#x9;font-family:宋体;\
&#x9;mso-ascii-font-family:宋体;\
&#x9;mso-fareast-font-family:宋体;\
&#x9;mso-hansi-font-family:宋体;\
&#x9;font-weight:bold;}\
span.a\
&#x9;{mso-style-name:"正文文本 字符";\
&#x9;mso-style-priority:1;\
&#x9;mso-style-unhide:no;\
&#x9;mso-style-locked:yes;\
&#x9;mso-style-link:正文文本;\
&#x9;mso-ansi-font-size:12.0pt;\
&#x9;mso-bidi-font-size:12.0pt;\
&#x9;font-family:宋体;\
&#x9;mso-ascii-font-family:宋体;\
&#x9;mso-fareast-font-family:宋体;\
&#x9;mso-hansi-font-family:宋体;}\
p.TableParagraph, li.TableParagraph, div.TableParagraph\
&#x9;{mso-style-name:"Table Paragraph";\
&#x9;mso-style-priority:1;\
&#x9;mso-style-unhide:no;\
&#x9;mso-style-qformat:yes;\
&#x9;margin:0cm;\
&#x9;mso-pagination:none;\
&#x9;font-size:11.0pt;\
&#x9;font-family:"Calibri",sans-serif;\
&#x9;mso-ascii-font-family:Calibri;\
&#x9;mso-ascii-theme-font:minor-latin;\
&#x9;mso-fareast-font-family:宋体;\
&#x9;mso-fareast-theme-font:minor-fareast;\
&#x9;mso-hansi-font-family:Calibri;\
&#x9;mso-hansi-theme-font:minor-latin;\
&#x9;mso-bidi-font-family:"Times New Roman";\
&#x9;mso-bidi-theme-font:minor-bidi;\
&#x9;mso-fareast-language:EN-US;}\
.MsoChpDefault\
&#x9;{mso-style-type:export-only;\
&#x9;mso-default-props:yes;\
&#x9;font-size:11.0pt;\
&#x9;mso-ansi-font-size:11.0pt;\
&#x9;font-family:"Calibri",sans-serif;\
&#x9;mso-bidi-font-family:"Times New Roman";\
&#x9;mso-bidi-theme-font:minor-bidi;\
&#x9;mso-font-kerning:0pt;\
&#x9;mso-fareast-language:EN-US;}\
.MsoPapDefault\
&#x9;{mso-style-type:export-only;\
&#x9;mso-pagination:none;}\
&#x20;/\* Page Definitions \*/\
&#x20;@page\
&#x9;{mso-page-border-surround-header:no;\
&#x9;mso-page-border-surround-footer:no;}\
@page WordSection1\
&#x9;{size:595.5pt 842.0pt;\
&#x9;margin:69.0pt 78.0pt 69.0pt 84.0pt;\
&#x9;mso-header-margin:0cm;\
&#x9;mso-footer-margin:59.65pt;\
&#x9;mso-page-numbers:251;\
&#x9;mso-paper-source:0;}\
div.WordSection1\
&#x9;{page:WordSection1;}\
@page WordSection2\
&#x9;{size:595.5pt 842.0pt;\
&#x9;margin:69.0pt 80.0pt 69.0pt 84.0pt;\
&#x9;mso-header-margin:0cm;\
&#x9;mso-footer-margin:59.65pt;\
&#x9;mso-paper-source:0;}\
div.WordSection2\
&#x9;{page:WordSection2;}\
@page WordSection3\
&#x9;{size:595.5pt 842.0pt;\
&#x9;margin:69.0pt 79.0pt 69.0pt 84.0pt;\
&#x9;mso-header-margin:0cm;\
&#x9;mso-footer-margin:59.65pt;\
&#x9;mso-paper-source:0;}\
div.WordSection3\
&#x9;{page:WordSection3;}\
@page WordSection4\
&#x9;{size:595.5pt 842.0pt;\
&#x9;margin:69.0pt 80.0pt 69.0pt 84.0pt;\
&#x9;mso-header-margin:0cm;\
&#x9;mso-footer-margin:59.65pt;\
&#x9;mso-paper-source:0;}\
div.WordSection4\
&#x9;{page:WordSection4;}\
@page WordSection5\
&#x9;{size:595.5pt 842.0pt;\
&#x9;margin:75.0pt 84.0pt 69.0pt 84.0pt;\
&#x9;mso-header-margin:0cm;\
&#x9;mso-footer-margin:59.65pt;\
&#x9;mso-paper-source:0;}\
div.WordSection5\
&#x9;{page:WordSection5;}\
@page WordSection6\
&#x9;{size:595.5pt 842.0pt;\
&#x9;margin:69.0pt 78.0pt 69.0pt 84.0pt;\
&#x9;mso-header-margin:0cm;\
&#x9;mso-footer-margin:59.65pt;\
&#x9;mso-paper-source:0;}\
div.WordSection6\
&#x9;{page:WordSection6;}\
@page WordSection7\
&#x9;{size:595.5pt 842.0pt;\
&#x9;margin:69.0pt 78.0pt 69.0pt 84.0pt;\
&#x9;mso-header-margin:0cm;\
&#x9;mso-footer-margin:59.65pt;\
&#x9;mso-paper-source:0;}\
div.WordSection7\
&#x9;{page:WordSection7;}\
@page WordSection8\
&#x9;{size:595.5pt 842.0pt;\
&#x9;margin:69.0pt 74.0pt 69.0pt 84.0pt;\
&#x9;mso-header-margin:0cm;\
&#x9;mso-footer-margin:59.65pt;\
&#x9;mso-paper-source:0;}\
div.WordSection8\
&#x9;{page:WordSection8;}\
@page WordSection9\
&#x9;{size:595.5pt 842.0pt;\
&#x9;margin:69.0pt 80.0pt 69.0pt 84.0pt;\
&#x9;mso-header-margin:0cm;\
&#x9;mso-footer-margin:59.65pt;\
&#x9;mso-paper-source:0;}\
div.WordSection9\
&#x9;{page:WordSection9;}\
@page WordSection10\
&#x9;{size:612.0pt 792.0pt;\
&#x9;margin:72.0pt 90.0pt 72.0pt 90.0pt;\
&#x9;mso-header-margin:36.0pt;\
&#x9;mso-footer-margin:36.0pt;\
&#x9;mso-paper-source:0;}\
div.WordSection10\
&#x9;{page:WordSection10;}\
\--> <br>

**段永平：**&#x5475;呵，你用长期来想就知道你这样不是最好的办法。看看苹果就明白为 什么。（2012-05-04）

06\. 网友：段总请问您在做企业的时候是怎样给产品定价的？另外产品的利润过 高是不是一种不本分的行为啊？

**段永平：**&#x9664;非是国家垄断，不然长期而言企业不会有过高的利润的。（2013-03-26） 07. OPPO／vivo 没有销售部，那你的价格决策机制是什么？

**段永平：**&#x505A;市场调研，在上市的时候就尽可能定准价，错了及时调整。（电子产 品）竞争的本质在于产品差异化，要做别人提供不了的东西。没有差异化，就成 了日用基础商品，只能靠价格来竞争，很难挣钱。（2018-09-30）

08\. 怎么对待差异化定价（给不同的客户不同的价格）？

&#x20;**段永平：**&#x4EF7;格不一致，一是他们迟早会发现；二是客户发现能议价，会想尽办法 跟你讨价还价，浪费你很多时间，这都是麻烦事。价格一致，会省很多麻烦。做 产品主要是要抓住客户的需求，而不是价格。可以看看空客的 John Leahy。（一 个人打败了波音啊！当然背后靠的还是产品！）（2018-09-30）

&#x20; **4.定位高端，低端商业模式**

01.网友：小米刚成立时说只做发烧手机，1 年后做了青春版，现在又出了更低 端的红米，不懂雷军想怎样，不看好！我看小米最值钱的也就是开发的一些软件。

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x4F4E;价是条最容易的路，也是一条最难的路。（2013-08-04）

02.网友：段总您好！**（从高端入手真是厉害）为什么说从高端入手真厉害？您 能说说从高端市场入手比低端入手的道理及利弊吗？** &#x20;

[**段永平**](http://nteswjq.blog.163.com/)**：很少有人这样做的，因为成功率太低。但如果成功的话，成本是最低 的**。（2013-07-02）

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6211;们一直算是高端机吧？这次只是进入智能手机而已。一般而言，我们 只要有足够长的时间，国内好像都是算很厉害的那种吧。相信一段时间后国内买 android 的人多数都会把 OPPO 作为选项之一的。（2011-07-14） &#x20;

引用：【神器！OPPO Find 5】近日 OPPO 公布了新旗舰 Find 5 全部配置参数， 最大亮点是 5 寸屏，分辨率为 1080p，并具备无线充电功能，**就看售价给不给力 了！**

网友：注意低价有轰动效应才给力，太高价会糟群众否定。

**段永平：**&#x54C8;哈，说这话的居然来自 iphone 客户端。**记得中欧有个故事，有个** **EMBA** **童鞋上课时对老师说：老师你不懂，我们中国人都喜欢买便宜东西。然后老师** **问，在座的有多少是开便宜车的？**（2012-09-26）

03.网友：请教一下学长现在对 android 的前景怎么看呢？您觉得 android 做高 端有前途吗？另外您觉得苹果会不会着力占领廉价手机市场？这样做的话对他 们好处多还是坏处多？&#x20;

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x5728;相当长的时间里，android 的量依然会是大的。不能说 android 做高 端如何，但某个品牌用 android 做个很贵的手机出来是很可能的，会买的人当然 要叫那个高端了。另外，在 android 里也有高低端之分。

**苹果大概永远都不会专门做所谓的廉价手机市场，对学弟提出这个问题感到有 点意外，说明你对企业的理解已经和大众很接近了。苹果的策略一直都在那里 摆着呢，做最好的产品，让前面的产品做入门级以及提高级的产品。大概三年 内，当 iphone7 出来的时候，iphone5c 就会变成入门级的产品，大概会卖到 2000 出头，那个时候会有点好看哈。**

另外，iphone5s 绝对是划时代的，不知道为什么那么多人会视而不见？我可以 肯定的是，三星里很多人要开始“熬夜多压力大了”。（2013-09-15）

网友 X：这个疑问的发端其实是最近大家针对 5c 不便宜讨论得挺多。很多人的质 问是：“说好的廉价手机呢？” 不少媒体评论说 5c 未能达到争取低价位市场的 目的，导致这几天股价下跌。

&#x20;至于我自己，从第一次听到传言说苹果推廉价手机的时候就觉得哪里不对。没有 具体的原因分析说它不对，只是朦朦胧胧觉得这个策略是个大俗手。所以最后看 到 5c 的价格反倒是松了一口气。

&#x20;但朦胧的感觉总要转化成比较扎实的分析才好，所以还是想听听学长您的判断： 如果苹果前几天推的就是一款 2000 出头的手机，对于整个公司会有哪些方面的 影响？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x542C;着像如果苹果不是苹果，苹果将会是什么。（2013-09-17）

&#x20;[**段永平**](http://nteswjq.blog.163.com/)**：**&#x5B9A;性总是比定量分析重要，学长早就说过了，对吧？在今年早些时候的 D11 大会上，苹果 CEO 蒂姆·库克(Tim Cook)说过这样一段话：“数量对苹果来 说从来都不是最重要的。我的理由是，苹果生产最好的 PC，但我们不是生产最 多的商家。我们生产最好的音乐播放器，但我们并不追求数量最多。我们生产最 好的手机，但我们并不是最大的生产厂商。iPad 的消费者满意度超过任何平板 电脑。在 JD Powers 排行版上，iphone 已经连续九次荣膺榜首。因此，这就是 我们的目标。我们做出最棒的产品以丰富消费者的生活，数量并不是我们的目<br>

标。” 我用苹果用得很开心，别人不关注很可能是他们的损失。难道每个礼拜 都要我判断一次苹果会不会推廉价手机？（2013-09-17）&#x20;

04\. 网友：哪位朋友能谈谈 iwatch？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x90A3;还是一个传说，从何谈起？不过，**关于苹果的传说最搞笑的就是廉价** **iphone。有了这个传说后，接着就有了苹果该不该这样做的争论。其实不管认 为苹果该不该卖廉价 iphone 的人大概都是不太懂苹果的，因为苹果的文化里根 本就不会有这个争论。**（2013-02-15）

05.引用：网友：联想 3 年：如何走出阴影

在 PC 上的市场份额跃居至全球第二大的联想集团，如何走出行业领先者和技术 变革的阴影，成为一家拥有未来的公司？ 中国最大的 PC 厂商联想集团距离自己 的梦想似乎又近了一步。在过去 3 年的时间里，它的表现堪称神奇。 这家吞下 IBM PC 业务立志成为全球性...

&#x20;**段永平：**&#x8FD9;么长的文章好难看。**靠低价得到的份额实际就是阴影本身，很难走出 来的。看看诺基亚就明白了**。（2012-02-19）&#x20;

06.网友：OPPO FIND 5 真给力，1 万台降 500 活动冒出 35 万预约。。。

**段永平：**&#x8BF4;明便宜还是管用啊，可是以后怎么办？（2013-06-16）

07.网友：老段，BYD（比亚迪）的成本优势应属于护城河，而且是比较重要的护 城河，你认为呢？

**段永平：**&#x5475;呵，还没见过成本优势可以成“护城河”的，**很少有企业能长期维持** **低成本的，制造业好像没见过。而且靠自己产品卖低价的企业就很难有长久的，** **至少我没见过。这是我的观点，和 BYD 无关。**（2010-05-24）

&#x20;08.网友：为什么大公司会比小公司更容易了解些？一般大公司往往代表着复杂 的业务，庞大的产品线，似乎不太容易了解，而小公司相对往往业务简单，产品              也少，不应该是更容易了解吗？

**段永平：**'**大公司'就一定业务复杂吗？乔布斯笑了哈！苹果非常简单，茅台也 是。小公司业务简单吗？贾布斯也笑了**。（2017-03-21）

网友：“性价比”就没有未来吗？雷布斯哭了。

**段永平：**“性价比“其实就是为性能不够好找借口，我也是花了很多年才突然想 明白的。（2017-04-06）<br>

网友：那些追求“性价比”的公司恐怕是既没有长长的坡也更没有厚厚的雪的。 段大哥，追求“性价比”的公司为什么会没有好的结果呢？我以前买过“性价比 高”的手机，发现手机质量不够好，经常出一些小毛病。

&#x20;**段永平：**&#x8BF4;追求“性价比”的公司大多是在为自己的低价找借口。长寿公司大概 是不太强调“性价比”这个概念的，老百姓心里有杆秤。好货不便宜啊。

（2017-03-25）

09\. 现在手机（企业）有两种模式，一是小米这种先圈用户，再通过其他方式变 现；二是苹果这样，靠产品本身赚钱。哪种好？

&#x20;**段永平：**&#x9996;先，圈客户的角度，苹果比小米厉害；其次，长远来看，没有什么企 业是靠便宜赚钱的。性价比，都是给自己找借口。一定要把重心聚焦在用户上，

也不是我们非要做高端还是低端，只是把自己能做的事情做好了，满足了一部分 人群的需求。即使苹果，也没有满足所有人。

&#x20;我们早年经常提性价比，直到我有一次跟一个中国通的日本人谈合作说到我们的 产品性价比高时，对方很困惑地问道，什么是性价比，是“sex-price” ratio 吗？我当时就愣了一下，觉得日本人的词典里似乎是没有性价比这个东西的，之 后又花了很久才悟到，“性价比”实际上就是性能不够好的借口啊。我希望我们 公司不会再在任何地方使用这个词了。（2018-09-30）<br>

## 三、创新

网友：您怎么看待技术能力在满足客户需求进而构建公司的竞争能力方面所起的 作用呢？

**段永平：木桶的一块板，没有是不行的**。（2014-06-18）

**1.创新**

01.网友：说有个意思的事，你看阿段的步步高的企业愿景是“成为更健康、更 长久的世界一流企业”，而且在它的企业文化里没有提“创新”。学习快慢我觉 得不重要，持久学习才重要。

**段永平：**&#x6211;们也没有要吃早餐、午餐及晚餐等等。（2010-09-06）

网友 j：早餐，午餐，晚餐我们不说也会去吃--这是应该去做的事。同理，创新 这一行为不说也要去做。应该是这样吧？

**段永平：** ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)（2010-09-06）

02\. 网友：为什么不喜欢企业“创新”啊，因为啥呢？

**段永平：从来没说过不喜欢企业创新！！！但不喜欢企业盲目创新。**

**很难有企业不靠创新可以生存下来的，但创新是指在用户导向前提下的创新， 而不是为了不同而不同的创新。我们公司把这叫差异化，也就是满足用户需要 而别人还没有提供的东西。当然，用户需要而大家已经提供的东西我们绝对不 能少。盲目创新是危险的，而消费者导向前提下的创新是企业生存的一个重要 基础。**（2010-03-08）

03\. 网友：请教一个问题，高科技企业的核心竞争力在于其持续的创新，而创新 本身却具有不确定性，我们投资者如何在这个“不确定性”中收获“确定”的收 益？&#x20;

&#x20;**段永平：**&#x6309;你这个理解思路，大概是没办法的。"高科技企业的核心竞争力在于 其持续的创新"这句话就是错的，因为你很容易找出一家持续有新产品却完全没

有竞争力的企业。（2013-02-18）

&#x20;04.网友：近期我在理解什么是核心竞争力，核心竞争力还是要能够提供具有广 泛的成本领先优势、集中的品牌差异化优势的产品的企业。在不“倾销”（不正 当竞争）的条件下，要成本领先并不容易，如果这种成本领先优势是广泛的而不 是单一的，可能护城河会更宽一些，不知道是否可以这么理解。<br>

**段永平：**&#x6700;常见的误解是很多人分不清核心竞争力和核心技术的区别。

（2011-01-20）

网友：核心竞争力是一个系统，技术只是核心之一。记下段总的话了。 网友：段总总是一语中的，核心竞争力会持续产生核心技术。

&#x20;05.网友：请教段总，换个思路是否这样理解：就像种地一样，如果地肥，水好， 又能经常除草，杀虫，长出好庄稼的概率就非常高。高科技企业如果具有良好的 创新文化作为支撑，那不断推出好产品的概率就非常高。

&#x20;**段永平：**&#x4E0D;太明白很多现在流行的名词的定义是什么，所以没法回答很多问题。 比如：什么是高科技企业，什么是创新文化，比如什么是“好产品”，概率非常 高的“高”是多高？按你的比喻，除过草杀过虫的庄稼算是“好产品”还是不好

的产品？（2011-01-22）

07.网友：段总，厉害放了 25%在苹果里面，在这种技术变化频率非常快的行业， 我想我只敢放 10%里面，还得过段时间看看，是不是有颠覆技术出现。

**段永平：用户买的从来就不是技术，也不是硬件，用户买的是好用的产品。**

（2011-05-10）

&#x20;网友：是不是所谓高科技公司也只是满足顾客的消费趋向。最终是要傻子都明白                                                      的东西。

**段永平：**&#x4E0D;知道什么是高科技公司。在消费者眼里其实没有这个东西。

08.引用：杨元庆放言拿下全球 PC 第一宝座

本报北京讯 如果联想夺取 PC（个人计算机）业全球第一宝座，这将是中国品牌 在消费类高科技领域的一次全球跨越。联想集团董事长兼 CEO 杨元庆 5 月 8 日在 接受本报记者专访时表示，联想现在是一个挑战者，无论是在个人电脑，智能手 机领域，联想对自己未来有信心……

**段永平：**&#x50;C 也算高科技哈。

网友：从来不看好联想。

&#x20;**段永平：**&#x6211;没有看好或不看好的意思，我只是觉得不知道人们为什么喜欢用类似 “高科技”这种模糊甚至没有定义的东西来形容自己。（[2012-05-11）](https://xueqiu.com/1247347556/21793820)

&#x20;**段永平：对我而言，把经济分成“传统经济”和“新经济”，以及把企业分成“传 统企业”和“高新科技企业”也是瞎搞**。（2012-06-26）

&#x20;09.网友：我觉得苹果也挺有敢为天下后的意味，指纹识别早在很多电子产品上 都用过，一直都不成功，我自己的笔记本上也有指纹识别，从来没用过。但是看<br>

发布会上的苹果指纹识别，非常令人期待。此前 4s 推出 Siri 的时候也是把别人 用不好的语音控制功能用到出彩。一开始用苹果就停不下来，看完发布会我 5c 和 5s 都想要了（现在在用 5）。另外想请教学长，苹果停产了 5，却不停 4s， 您觉得他们出于什么考虑呢？

**段永平：**&#x56E0;为有 5c，所以不再需要 5 了。5 的成本贵一点但又不如 5s 高档，留 着没用啊。

Jony Ive 在 Touch ID 指纹功能的视频中说: "We believe that technology is at it's very best，at its most empowering,when it simply disappears."

（2013-09-11）

网友 N：这句话太牛了！太受教了！幸亏大道兄指点迷津啊！拜谢！

网友 X：这句话我也留意到了，当时没太明白 disappear 消失，后来想想确实在 iphone 上这个扫指纹的动作是 disappear 消失的，因为它和用户们早已习惯的 长按 home 键动作一样（甚至更少了按下去的动作）。

关于新技术的应用，我以前就猜想新的 iphone 会不会应用像 bose 耳机的主动降 噪技术，把周围噪音的反向信号加到听筒里来改善噪音环境下接电话的情形（第 一次试用 bose 耳机时印象太深刻所以有这个想法），上网一查才发现自己手里 的手机早就用上这个技术了！而我之前是不知道的，再一回想，用 5 以来还真是 没遇过听不清楚的情况。技术真正 disappear 消失到无形。我看到镜头边上的小 mic 孔觉得很感动，特别赞同 Siri 对于我的问题的回答。“世界最好的手机是 什么？” “你手里拿着的这一个。”可惜很快就不是了，因为有了 5s。

网友 O：不明白您说的 disappear 的意思？ 我觉得 Jony Ive（苹果设计师）说 的意思很简单，就是:如果手机丢失了，这个功能就可以发挥作用.这个功能看起 来将会很重要，因为未来手机就是钱包(现在好像已经是了)，丢了很麻烦.手机 安全需求似乎和手机能通话/短信的功能需求一样重要.段总，对吗？

**段永平：**: "We believe that technology is at it's very best，at its most empowering，when it simply disappears." 我的理解是：**最牛的技术就是用户 看不到的技术（技术消失的时候）**，应该和丢手机没关系。想想大家以前见过的 pc 上那个巨丑的指纹识别器就明白这是啥意思了。（2013-09-15）&#x20;

**2.敢为天下后，后中争先**

01\. 为什么说“敢为天下后，后中争先”？

&#x20;**段永平：所有的高手都是敢为天下后的，只是做的比别人更好。我们公司成功 不是偶然的， 坚持自己的“Stop Doing List”，筛合伙人，筛供货商，慢慢 地就会攒下好圈子，长期来看很有价值。**

&#x20;**敢为天下后，指的是产品类别，是因为你猜市场的需求往往很难，但是别人已** **经把需求明确了，你去满足这个需求，就更确定。（敢为天下后指的是产品类**<br>

**别，后中争先指的是做好产品的能力。或者说，敢为天下后指的是“做对的事** **情”，后中争先指的是“把事情做对”的能力**。）（2018-09-30）

**段永平：**&#x6211;个人理解，好的公司一般来讲就是能够持续找到用户“差异化”需求 的那些公司吧。如果找不到“差异化”的东西，那“敢为天下后”的产品就会成 为悲剧。所以“敢为天下后”的前提一定是你能够提供出你的用户群需要而别人 没有或不能提供的“差异化”的产品。（2011-11-10）

02.网友：段老师多次讲到“敢为天下后”，能给讲讲“为天下先”的坏处吗？&#x20;

&#x20; **段永平：**&#x4E0D;知道有什么坏处，但你可以试试举几个你知道的敢为天下先现在还不                          错的例子。（2010-07-16）

03.网友：最喜欢段总的一句话是“敢为人后后发制人”。但是，未来要想做强 做大，扛起中国家电用品的大旗可能还不行吧。

**段永平：**&#x7ED9;你举几个“敢为人后”的例子：苹果的 iPod 算是吧（之前 mp3 早就 满大街了）？iphone 算是吧（手机不用说了）？Xbox 算是吧（之前有任天堂， PlayStation 等等）？Playstation 算是吧（之前有任天堂，世家等）？国内的 例子就不举了，太多了，相信你能明白。（2010-03-26）

04\. 网友：段总，听到你后悔没买到腾讯，但我觉得腾讯是一家卑鄙无耻的公司， 很不讲道德、没人品的公司，这个在网上都很多人骂腾讯和马化腾的，你怎么看？

&#x20;**段永平：**&#x6709;人骂不一定是坏事。最不好的其实是没人骂。腾讯的产品，我到现在 还没用过，没有发言权。曾经想装个 QQ，结果一装就被装了一大堆东西，很郁

闷就又都删了。删的时候发现还行，一删基本都能删掉，比当年的 3721 要厚道 多了。（2010-03-28）

网友 A：腾讯成长得太快了，不过是否与移动之间有些纠结就难说了。

预计腾讯 2010 年营业额有望突破 150 亿，虽然腾讯产品很无耻，很多涉及抄袭。

**段永平：**&#x817E;讯的东西有很多进化的啊！不然怎么这么多人用？为什么我们不说苹 果可耻？他那个 iPod 不就是 mp3 吗？微软哪样东西不是在别人之后开始做的？ 不能因为自己人干的好就说人家嘛。（2010-03-30）

**段永平** ：不“超”谁会买呢？腾讯其实也是一个很好的“敢为人后”的好例子。

（2010-03-28）

&#x20;网友：马化腾的那种做法就是等待别人上瘾了再来收费，其实比尔·盖茨也这么 做（不排除马是学他的）。我本人非常反感这些行为，你们都自称企业家，可是 你们都体现出企业家的精神了吗？这和愚弄消费者有什么区别？

**段永平：**&#x90A3;你觉得该怎么做？好东西让人先免费试试没什么错啊，这是最有效的 广告。只有很少一部分产品可以这样做，大部分产品很难做到这一点。

（2010-07-15）

05\. 网友：您一直在谈一个敢为天下后的问题，我想问问您在投资时如何看待 apple 这种靠零售产品有很多现金，有市场为导向的创新，又喜欢抢先的企业。 他们的价格低于价值的几率近期可能很小。当初投网易的时候您肯定看懂了网易 的模式未来会赚钱的，但投资 apple（苹果）这样的企业您会如何看待他们的产 品怎么分析它的成长性和盈利潜力呢？

**段永平** ：呵呵，Apple 也算是敢为天下后的典范了。

其实我说的“敢为天下后”就是这个意思！没有创新的天下后肯定死定了。不过 我没有 Apple，这是我错失的大机会之一。（2010-03-17）

06.引用 苹果 CEO 库克接受《财富》杂志专访：“我们从来没想要成为先行者， 只想做最好的产品。”

网友：库克说： “我们从来未想要成为先行者，只想要做最好的产品。” 步步高企业文化：“敢为天下后。对消费者，提供优质的产品和服务。”&#x20;

网友 W：先和后只是竞争的开始。但好的产品也要：与时俱进，跟上时代的脚 步。步步高企业文化从产品的体验角度来看：我认为是敢为天下先，怎么说呢？ 从 vivo 刚刚发布的产品的配置和一些细节功能体验来分析，这个就很明显了。 敢为天下后以前段老师的视频中也说过企业小的时候要注意少／不犯错用的。

**段永平：“**&#x6562;为天下&#x540E;**”**&#x7684;整句话是“敢为天下后，后中争先”，没有能力后 中争先的地方是绝对不该去的。（2016-03-05）

07\. 网友：苹果现在的团队，他们为荣誉而战，库克是一个斯巴达式的清教徒， 比乔布斯更柔软。这一点可以抵消他在创造性上的欠缺。

**段永平：**&#x9996;先，我不知道库克的创新能力；第二，一家公司如果需要依靠 CEO 的创新能力并不是一件好事。乔布斯实际上被神化了，他实际上主要是建立了创 新的文化而不是自己创新。（2013-02-13）

08.网友：请问“敢为天下后”这个道理，是只适用于企业选择市场吗？在什么 别的地方这个道理也有用？

**段永平：**“不敢为天下先”出自老子《道德经》第六十七章，原文是：“我有三 宝，持而保之：一曰慈，二曰俭，三曰不敢为天下先……不敢为天下先，故能成 器长……舍后且先，死矣！”其意是，我持有、珍藏三大法宝：第一是仁慈，第 二是俭啬，第三是不敢在天下争先。因不敢居前争先所以才能为众人拥戴成为官 长。如果一味居前争先而希望获得拥护，不仅不可能，而且注定是死路一条。 (2019-06-18)<br>

网友：我今天想了一天，我的理解是，在别人开辟出来的正确道路上慢慢行走是 对的。敢为天下先需要极大的勇气，智慧甚至是运气。普通人难以做到，但是敢 为天下后普通人可以。

**段永平：**&#x771F;的能做到这么普通的普通人其实是极少的。(2019-06-18)

**09.引用 段永平与浙大学生对话**（2008-01-08）

&#x20;同学：您说过一句话就是敢为天下后，因为敢为天下后，您是敢说，但是其实很 多做企业的话，我也是自己在做企业，其实说尤其是从小企业开始做的话，其实 很难。您以前做过 VCD，包括现在网游现在进入时间的话，其实已经算是比较晚 一点，而且还这个时候行业集中度已经很高，平均利润率已经很低，那您的企业 您的产品是有哪些核心竞争力能够保证您在当初的行业中能够做到？

&#x20;**段永平：**&#x4EFB;何一个成功的东西，没有什么东西可以保证的，但是从概率上来讲呢， 我们有一些经验是可以有作用。首先我要说敢为天下后呢，其实不是我说的，就 是老子说的，说吾有三宝，一曰勤，二曰俭，三曰不为天下先。我觉得我们企业， **其实做企业非常简单，叫做 consumer retation 就叫做消费者导向， 这个东西 说起来非常简单，但是真正这样做的人非常少，绝大多数都是生意导向，是赚 钱导向。只要你觉得这个市场足够大， 时间足够长，我就什么时候介入都是不 晚的。你比方说假设这个市场有五十年的市场，你说我晚五年有什么关系吗？没有什么关系。**（2008-01-08）

&#x20;10.网友：想问问大道，在一个有积累的行业，后发先至应该怎么寻找破局点？  什么时候就应该判断窗口已经关闭了？

**段永平：**&#x540D;词有点多，我看不懂。（2019-10-17）

网友 b：提问者的意思应该是问：何时可以“敢为天下后，后中争先”，怎么判 断条件合不合适。

&#x20; **段永平：**&#x6211;没有具体量化的概念，毛估估觉得大概有点像“集中优势兵力打歼灭 战”的意思，就是在某个时段某个局部市场你的整体力量能比对手强大三倍以上， 从而最后使自己占到一席之地。这需要强大的实力，同时也需要时间，需要对的 战略也需要对的战术……话虽这么说，我们自己好像从来没真的这么算过，搞得像打仗一样。 只有当你觉得一个行业或产品可以有很长久的发展时，这个做法才有意义。

手机是个很好的例子，苹果也是如此，但微软就是个失败的例子。 “敢为天下 后”里能够“后中争先”大概是个前提，就像下围棋一样，一直落后手是会输棋 的。所以，“敢为天下后”里还有一个隐含的意思，就是：没有金刚钻不揽瓷器活。（2019-10-20）

**3.创新概述**

01.[引用：从安卓看专利敲诈](https://xueqiu.com/S/MSFT/20533132)

近年来，有关安卓侵犯专利的新闻屡屡出现，先是甲骨文状告安卓侵犯 Java 专 利，再到微软利用安卓授权来牟利。本与微软毫不相干的安卓，却成为微软牟利 的工具，使用安卓系统的制造商必须为微软提供相应的专利费，才能得以生存。 为了自保，三星、LG、HTC 等厂家只能屈服……

**段永平：**&#x4E13;利是所有中国企业的痛啊，避无可避，尤其是走向国际时。靠自己的 专利的积累去防御还需要很多很多年。（2011-11-27）

02\. 网友：据说最近美国商会出的报告引起美国国内很大反响，主题就是关于中 国有系统的“抄袭”国外先进技术的问题。我觉得高铁项目和华为的快速发展

（当然不限于此）对国外造成的触动比较大。创新是发达国家和地区的杀手锏， 且事关其长期和根本利益。不知道段总对这类问题和可能发展有何看法。

**段永平：**&#x5982;果我们解决不了专利问题，我们就没办法让自己的企业创新，我们就 势必长期落后于人。（2011-02-04）

03.网友：我们几乎没创新，建国这么久，享受到科技都是美国的。我们只会 copy

（复制）。 不保护知识产权的恶果。

**段永平：**“不保护知识产权的恶果”确实是最关键点啊。看上去保护知识产权是 件重要但不那么紧急的事，现在看起来是越来越紧急了。（2012-05-12）&#x20;

04.引用：乔布斯与史玉柱：死的伟大生的光荣。

乔布斯的去世在中国引起的惋惜与反思，远远超过他的家乡美国。这种对乔布斯 的投射让大家发现，我们这个号称“世界经济救世主”的盛世其实缺失了一个主 角，那就是企业家的创新精神。 如果我们跳出对企业家个人英雄式的价值判断， 把“乔布斯投射”……

**段永平：**&#x6700;讨厌这种自以为喝了几天洋墨水的狗屁专家出来指点江山了，中国出 不了乔布斯是史玉柱（之流）的错？我们的企业家们经常连品牌被仿冒都对付不 了，就更不用说保护创新了。有点常识好不好！（2011-11-03）

网友：为什么乔布斯缔造了数字帝国，史玉柱仅是一个商业神话？

&#x20;**段永平：**&#x4E0D;懂问题是什么。我觉得乔布斯如果在中国的话，应该不如史玉柱。（2                                                010-03-26）

网友：美国近几十年来确实是技术兴国，我所在行业里就有 Adobe 奥多比这样由 两位数学家创立的图文软件巨头。 在美国好像各个行业里的天才通过努力都能自由发展走向成功。而东方人受到的 各种干扰似乎太多了。

**段永平：**&#x6280;术兴国是现象。（2010-03-31）

05.网友：#乔布斯启示录# 此文作为征文的参赛文章， 题目：中国在未来十年 内也出不了一个乔布斯，出不了一个苹果！ 正文： 乔布斯之所以成为乔布斯， 成为一个“生的光荣，死的伟大”的乔布斯，重要的在于他能听到自己内心的声 音，重要的在于坚持按照自己内心的召唤。

**段永平：**&#x7F8E;国资本主义已经 300 多年（包括英国传过来的），中国才羞羞答答

30 年，能出个马云就不错了。中国的大环境估计相当长的时间里是出不了的， 这个时间会比大家想象的长很多。（2011-10-10）

06.引用：雷军为啥不做中国的“乔布斯”？

1、乔帮主的名声太响，做“中国的乔布斯” “鸭梨”太大。 2、国内互联网上 爱拿雷军类比乔布斯，其中一个主要原因在于雷军做了“小米手机”，但小米手 机不是 iphone，这手机也成为不了中国的 iphone。因为乔布斯做 iphone 是往“极 品”方向做的，而雷军推小米手机...

**段永平：**&#x4E0D;知道大家对“乔布斯”的定义是什么，但我觉得中国很长时间里还不 具备出“乔布斯”的大环境。不过，中国这些年确实还是有很大进步的。 当然， 如果我能做“乔布斯”的话，我是不怕“鸭梨”的，大不了和苹果一起吃。

网友：您过去和现在同时在做“乔布斯”和“巴菲特”，但真不知道未来您更想 做谁？

**段永平：** 其实我一直在做自己。真实的乔布斯并不那么美妙的，我可没兴趣当。

（2011-11-28）

07.网友：美国人创新真厉害！国内在过 50 年，不知会不会有这种环境啊。

**段永平：**&#x8FD9;个我可以肯定不会有。因为这种文化建立起来大概需要五百年。(20 13-06-06)

08\. 网友：“没有自由的思想氛围，就不会有创新的精神”深有体会。

**段永平：**&#x521B;新也是可以学的。最重要的一点就是如何创造自由思想的氛围。不过， 在我们老中的文化氛围里做到这点确实特别难。（2012-04-27）

09.网友：对于 OPPO 品质做得这么好，那在技术上面是以整合为主，还是以研 发为主？目前 OPPO 的视听领域有已经领先的核心专利技术吗，例如音频解码， 视频解码的核心技术吗？

**段永平：**&#x5475;呵，缺什么什么重要啊。我们有挺多不错的技术，研发的投入也挺大 的。恕我不能在此说的太多了。<br>

网友：步步高它的研发成本占销售额有很多大？电子的东西更新很快，要不断持 续地研发，会不会很累啊？

**段永平：**&#x662F;的，很累但很有成就感。（2010-03-25） 09.网友：格力在技术研发上，格力电器从不设上线，需要多少投入多少，仅 2010

年格力的科研投入就超过 30 亿元，而净利润只有 40 多个亿。请教大道的看法。

**段永平：**&#x8BE5;花的钱当然要花，你问什么？怎么判断是否该花是能力圈问题？

（2011-12-06）

10.网友：请教大道，研发投入的资金，一般多少年后能形成生产力，产生利润 啊？

**段永平：** N 年左右吧。（2011-12-06）&#x20;

11.引用：OPPO 创始人兼 CEO 陈明永出席 OPPO 科技展时表示：“OPPO 明年研发 资金投入，将从今年的 40 亿提高到 100 亿，并在未来逐年加大投入。这是陈明 永首次明确指明 OPPO 公司研发投入数目。除此之外，陈明永还强调，提升自身 研发实力外，OPPO 还将整合供应链，开放引入专家技术人才，提升科技实力。

公开数据显示，截至 2018 年 9 月，OPPO 国内专利申请公开和授权数量共 22712 件。其中 AI

（人工智能）专利超过 300 项。今年 10 月，OPPO 率先实现了手机首次 5G 上网。毫无疑问 的是，5G 和 AI（人工智能）正在成为手机厂商强化竞争的重要着力点，如何选择赛道以及 如何布局投入成为头部厂 2018-11-27

**段永平：**&#x8F6C;发[\\\OPPO CEO 陈明永：研发队伍将扩大到 1 万人以上](https://xueqiu.com/S/OPPO/124921286)

OPPO CEO 陈明永出席 Reno 新品发布会暨客户答谢会，现场陈明永明确 OPPO 新 阶段三大发力点：深耕手机业务，发力 IoT 物联网，重视技术创新与品牌建设。 他 表示，通过百亿研发投入以及万人研发团队提升 OPPO 科……   （2019-04-11）

12.引用：OPPO 创始人罕见亮相 陈明永：未来 3 年研发投入将达 500 亿元 OPPO 创始人、CEO 陈明永在 OPPO 未来科技大会上罕见亮相并发表《共创万物互 融新生态》的演讲他称，未来三年，OPPO 总的研发投入将会达到 500 亿元，将 着重在增强底层硬件技术和软件架构能力上，加强核心技术的研发，将 OPPO 打 造成世界一流的科技公司。（2019-12-10）

#### 4.案例分析（苹果与三星大屏手机）

**段永平：**&#x6211;前几天去买了个三星的最大屏的手机，认真用了几天，实在是不习惯。 虽然也有些东西还不错，但整体体验和 iphone 还是有相当差距滴。很难想象用 惯 iphone 的人会转到 android。所以库克讲的“蚕食”还是很有道理的。

（2012-03-03）<br>

01.网友：GALAXY NOTE（三星手机）吧，屏幕很大啊。的确，iphone 是领先很 多年的产品，做得很极致，男女都适合用。唯一的问题是，苹果还能不能继续给 我们惊喜？

**段永平：**&#x662F;的，大得有点恐怖，但用段时间后就觉得大得不是那么有必要。

（2012-03-03）

02\. 博文：说说苹果（2013-02-24）

**段永平：**&#x8BB0;得库克还说：我们最重要的是聚焦在做最好的产品上，利润会随之而 来的。关于大屏手机的猜想：还不是很理解为什么苹果还没有推大屏手机，但知 道苹果已经认真考虑过了。猜想是：苹果可能有一个更好的方案，或者苹果推的 时候再说？也许苹果还没有找到大屏是伟大产品的感觉？当然，只要苹果能出个 大屏或比大屏更好的产品，早点晚点都不会影响苹果的价值的。

网友：如果苹果现在出个大屏手机，我会毫不犹豫的冲去买一部。下个月会有点 儿钱到位，根据以前的经验是到位之前股价会起来，买完之后再下跌，看看这次 灵不灵。

**段永平：**&#x6211;们看到大屏的同时苹果也早就看到了。技术上，做个大屏手机对苹果 而言是完全没难度的。所以我猜想苹果可能有什么东西是他们认为可以超越大屏 的。至于会是什么，等一等就会知道了。（2013-03-05）&#x20;

网友：三星各个尺寸该出的都出完了，现在该轮到三星的新机被人说没有创意了。 难道以后要出五边形、然后各个尺寸再轮一遍？

**段永平：**&#x597D;像该轮到苹果出招了。(2013-03-15) 网友：估计出个 4-5 寸的大屏 IPHONE，就 4，5，6 字头了。

**段永平：**&#x4E2A;人现在的感觉是苹果大概不会出一个大家想象的那种大屏了，因为如 果苹果想出大屏的话，应该早就出了。苹果大概会有一个不一样的解决方案，但 可以满足想用大屏的人的真实需求。( 2013-04-20)

03.引用：【三星  Galaxy S4 智能手机销售不及投资者预期】&#x20;

&#x20;三星遭遇黑色六月。三星股价整月下跌 12.31%，市值蒸发 253 亿美元，相当于 索尼市值。Galaxy S4 智能手机销售不及投资者预期。分析师表示，“消费者找 不到更好的理由购买 S4，因为它与前代产品没太大的区别。

**段永平：**&#x5176;实说喜欢什么很难，但说不喜欢什么要容易得多。我经常会用几种安 卓手机，虽然大屏看起来似乎应该实用些，但我自己的体验总是想赶紧换回 iphone 去。**前段时间刚刚试了一下 S4，真是开始对这家公司佩服起来，尤其是 那个眼睛移动功能，这么不成熟的东西也敢拿出来卖，以后不干了吗？**

（2013-07-03）<br>

网友 W："前段时间刚刚试了一下 S4，真是开始对这家公司佩服起来……" 刚看到这里我以为段总对三星发现了什么好东西，往后面看完才知道是＂佩服＂ 三星过人的胆量。

04.网友：好像很多投资者和消费者，都对苹果的大屏有很高的期待，投资者的 期望可不予理会，消费者显而易见的期望为啥千呼万唤不出来？请教大道解读背 后的逻辑。

**段永平：**&#x5927;概苹果对自己的大屏还不够满意吧。估计下一代 iphone 里一定会有 大屏的，大概一年内？估计以后 iphone 会同时推若干个尺寸的。（2013-09-11）

**段永平：**&#x82F9;果一定会推大屏的，大概明年出吧。（2013-09-14）

网友 J：苹果出大屏幕我就会换掉 5。其实国人喜欢花哨，喜欢炫耀，偏偏苹果在 这方面不知道是不屑于做还是没来得及做，总之还有很大很大的空间。美国人做 事太实在了，做那些技术含量高的费事不怎么讨巧的东西，比如国内 360 做的引 擎，那么花哨，实际还是建立在微软的引擎上边，讨了那么大的巧。

**段永平：**&#x5982;果你用 10 年的角度看，也许你会容易理解苹果的做法。（2013-09-14）

05.网友：请教段大哥从苹果的哪些做法中能看出下一年中推大屏的可能性很 大？沒推出廉价版苹果验证了苹果的企业文化，但是否想推大屏自己看不出来。

&#x20;**段永平：**&#x6211;知道大屏市场有多大，苹果当然也知道！只要在苹果的原则范围内和 能力圈内，苹果没道理不推。不过，我可能快两年前就说过苹果必推大屏，没想

到等了这么久。5s 出来后，苹果大概就可以抽出手来推大屏了，所以我认为苹 果一年内就会推的。（2013-09-16）

06.网友：在腾讯上看到的：&#x20;

库克说：“乔布斯知道苹果应该进入那些只有我们的技术能够控制的领域。”

**库克解释了为何在三星和其他手机制造商推出大屏智能手机多年以后，苹果却 等待如此长时间才推出类似产品的理由。主持人罗斯问库克，苹果推出 iphone6 是否为应对三星挑战。库克给出否定回答，并说：“坦白说……我们从多年以 前就开始研制大屏手机。我们只是从未制造过大屏 iphone。我们集中全力，争 取推出一款更好的手机。”**

**库克说，苹果在出售大屏手机前，需要确保为更大屏手机开发适合的显示器、 电池以及软件。比如，苹果已经为大屏手机开发出单手模式，即屏幕顶部的用 户界面可下滑至位于用户大拇指范围内，以便实现单手操作。**

库克的回答与其 2012 年参加 AllThingsD 大会时，被问及苹果为何不推出更大 iphone 的回答如出一辙。当时，苹果最好的手机是 iphone4S，只有相对较小的 3.5 寸屏。库克说，苹果认为，对于 iphone 用户来说，能够单手使用手机非常 重要。他还说，未推出大屏手机还有电池寿命等因素考虑。<br>

&#x20;**段永平：**&#x73B0;在终于明白为什么别人一问大屏库克就说单手使用很重要，别的当时                    他也不能说。（2014-09-14）

07.网友：如果可以的话，我希望能听听段总点评一下三星的企业文化。:) 另外，从自己的观察，苹果有一点跟三星很不同的是苹果比三星专注的多。

**段永平：**&#x82F9;果是一家有利润之外追求的公司。真正有这种追求的公司非常少。

（2014-08-04）

引用：失去乔布斯后的苹果，库克都做了什么？&#x20;

**段永平：他说：“当我们付出努力，为了让盲人也可以使用我们的设备时，我 是不会考虑该死的 ROI（投资回报率）的。”苹果在发起环保倡议、保护员工安 全和其他政策时也是如此。———这就叫利润之上的追求！(2019-06-27)**

**后记：**

网友：请教段老师：a 股公司康得新 9 月 6 日与 三星在北京签订裸眼 3D 业 务全面合作的战略合作协议，主要涉及产品端、研发端等较多层面的合作，推动 裸眼 3D 新技术在移动终端的产业中的应用及推广。计划今年三、四季度推出搭 载康得新裸眼 3D 解决方案的系列移动终端产品等。你对裸眼 3D 技术终端产品 的市场空间怎么看？

**段永平：**&#x5F88;难知道谁是最后的赢家（2017-09-11）

引用：据 TechCrunch 美国科技博客：苹果（AAPL.O）取消了 AirPower 产品项目， 理由是无法满足其硬件的高标准。苹果（AAPL.O）硬件工程高级副总裁 Dan Ric cio 表示：在做出许多努力后，我们得出结论，AirPower 不能达到我们的高标准， 我们已经取消了这个项目。我们对期待这款产品的客户致歉。我们坚持认为，未 来属于无线发展，并致力于推动无线体验的发展。

**段永平：**&#x867D;然 iphone 早就有了无线充电，但 AirPower 出不来还是有点可惜。终 于见到苹果掉一次链子了，不过这比强行推出来好。(2019-03-30)

**------------------------------------------------------------------**

**附录一：(段永平波士堂访谈 2007-07-07)**

袁鸣：我挺替段总可惜。为什么呢？因为段总其实他对行业很敏感，而且我们都 知道你有非常非常强的营销能力，您的营销是非常成功的。您的市场敏锐度，您 的营销能力，我总觉得步步高完全有可能，或者说有机会加上中国这个市场这些 年的发展，成为比如说中国的三星，中国的松下，中国的索尼，甚至中国的苹果。<br>

**段永平：**&#x96BE;道你认为我们现在不是吗？

&#x20; 袁鸣：当然不是，人家是有核心竞争力，它有这个自己的自主创新能够引领。

&#x20;**段永平：**&#x4F60;买东西的时候，你会问这个问题吗？说步步高原创。我现在问你一个 问题，请告诉我微软的什么产品是原创的？你能想出微软的东西是原创的，你知 道的产品，我付你钱。你说是 windows 还是 office 还是 word 还是 X-box 还 是 visa 卡，它不过就是 windows 集成一个产品嘛! 对不对？大家去想。我们 公司叫敢为天下后，其实全世界最大的敢为天下后的样板就是微软，没有人想明 白这个道理，微软哪样东西是比别人先做的，都不是。我们讲的是消费者导向， 我们有非常多的原创，我们从来不说，因为你买东西的时候你并不在意这个是不 是原创，所以我们公司是反对单纯讲创新的，我们叫消费者导向，我们不能够说 以新为新，跟别人不一样就叫好那个是错的。我们东西凭什么能够卖得好，能够

比大多数的竞争对手贵很多，包括我们现在 OPPO DVD 在美国市场，因为我们只 在网上亚马逊上卖，我们在网上亚马逊送上 bestseller 了已经好几个月了，总 之这个就是卖得最好的。

&#x20;主持人：袁鸣你一个高明的发问彻底燃烧跟点燃了。我现在要看到的是胡先生已                          经很不同意他的观点了。

&#x20;胡海平：你刚才讲的话，我觉得部分同意，但很大部分不太同意，你说它没有创 新，微软那个 window 也好，别的也好，它的这个集成也是一种创新，你不能说 他不是原创性的对不对？一个成功的科技实业它应该有大量的前瞻性的研发。

&#x20;**段永平：**&#x6211;给你讲一个北京话叫做“没有金刚钻，不揽瓷器活”，我们有前瞻性 吗？我们有，我没有我活不到今天。 前瞻性是什么？就是说你首先要知道自己

是谁，我们说敢为天下后是什么意思？就是说我们看一个市场，因为做产品做企 业的人非常清楚，最难的是产品教育。这个产品你觉得好，你要去教育他们（消 费者），让消费者觉得也好，这个像我们这种企业根本就没有能力做，但是如果 我是一个……比方说我是松下，我是飞利浦，我可能就不得不做，因为我不做我 就没有机会了。

&#x20;胡海平：但我想说的什么意思？因为你刚才说了你们经过研究以后，步步高这个 企业为什么不在中国上市？因为这个如果一上市以后你就会有更多的钱来做原 创，你的 R\&D 产品研发，投入很简单对吧？

&#x20;**段永平：**&#x4E2D;国有很多上市企业，中国有很多做家电的产品都上市了，他们可能还

没我有钱，这是其一； 其二，在我们同类产品里头，你给我举一个例子，它谁 做得比我好，他们都是上市企业，如果你的逻辑存在，那他一定做得比我好，早 就把我打趴下了，对不对？

&#x20;胡海平：这个就说对了，你可以去奋力……请问你的目标是中国的那些消费电子 企业呢，还是三星还是松下幸之助，这种类型的企业呢？<br>

**段永平：**&#x6211;们没有区别。

&#x20; 胡海平：今天再提一个问题的核心是在什么呢？因为你比我们中国这一代的企业 家原始积累完成得更快，你是富裕中的这个杰出代表。那么作为你这样的一种企 业家，他考虑的问题应该要比人家要更远。是吧？所以你的眼光应该是世界级的， 就是我或许我们对你的期望更高了，所以今天所提的问题也是。

&#x20; **段永平：**&#x95EE;题是我现在已经是的情况下，你非说我不是。

&#x20;胡海平：但我认为你现在是有钱，你现在有很多的钱，你目前就在核心原创性技                                  术方面的投入不够。

&#x20;**段永平：**&#x6211;们开发的能力是非常强的，强到什么程度呢？但凡是我们在国内进去

的产品，到最后都是我们会占到很领先。手机我们刚进去，我们手机面临的对手 会非常的强大。我不敢说能够比方说跟这个诺基亚或者摩托罗拉在 3、5 年决胜 负在这个市场上，但是我相信你给我们五年的时间，如果这个市场还在，我们肯 定能做得比较好。人家确实很强大，但我们能够做的事情就是我们集中在某个局 部发挥我的优势，这就是主席当年教我们的叫“集中优势兵力”，我们的能力就 这一点，你比方说刚从农村出来没受过什么教育，你跑到公司里头看见人家那些 工程师当高阶白领你就不服了，你说这个生产线我也不干了，我也要当白领，你 当不了，你就是一个加工者的水平啊。你要面对现实，但面对现实这个东西是非 常需要有勇气的。做企业我觉得如果让我跟大家讲，我觉得最重要的是你要想很 远，你如何能够生存下来，生存下来比任何东西都重要。你说我今天要想搞一点 激动人心的事情很容易，比方说我看到一些公司有些合并案子亏很多钱，这个东 西有些是先找到我们，而且很多人都骂我说你小子乌鸦嘴，你说人死，人家都死

了，对吧？包括这个……我不想举具体的案子。

&#x20;胡海平：但至少有一点，我认为你这几年到美国去是赚了钱，但是你没有抓住中 国的这个资本市场，把步步高这个企业能够超出你想象的发展壮大，我作为我们 来讲还是感到有点遗憾，你有没有这个感觉。

&#x20;**段永平：**&#x6211;觉得我们的文化里头有一些好大喜功、急功近利的东西，我们企业做 得比我在的时候要好啊！对吧？我们企业的核心价值观我们最重要一条，我们追 求的叫做更健康、更长久。你注意啊，我们没有说更大，2000 年，你们提到那 个亚洲周刊的人采访过我一次，他说 50 年以后如果在一个媒体，在一个报纸的 头条新闻是关于你们公司的新闻，你最希望是什么样的新闻，你猜得出答我的答                              案吗？我说任何新闻。

&#x20; 主持人：只要存在。

&#x20;**段永平：**&#x5BF9;，这说明我还活着，我相信我们公司还会活着，你比方说你说上市， 我看到他们上市融那点资，说实话我根本就不需要，我有的是，我的钱比他融资 要多，你说追求一个世界 500 强，这个不是我的目标，硅谷有一句话叫 smart is beautiful，就是小不一定是不好，它可能是一个好，那么我自己也讲 fast is<br>

slow，也有人讲 nice is more 好就是多，其实我们也用，我们叫焦点法则，就 是你不能做太多东西，你要聚焦在某些地方，我想对企业的一些理解，它是一些 你自己要去悟的东西。(2007-07-07)

**附录二：敢为人后，后来居上。《世界经理人文摘》专访 2001-02-01**

&#x20; **问：你为什么会有“敢为人后”的想法？**

&#x20; **段永平：**&#x5728;高速公路上开车最重要的不是要开得快，而是要安全和准时地到达目 的地。“能否按时到达”是由你的计划决定的。如果一段路程以正常时速要开一 个小时，而你只留了半小时的计划，那就只能开快车了，增加了风险。事实上， 企业每天都在高速公路上飞驰，受到车型、车况、司机的水平、环境等很多影响。

在这种情况下，**我认为安全是第一因素**。我们“敢为天下后”在一定程度上体现 了企业的安全意识，也就是风险意识。**企业最重要的是生存和发展，不在乎一、 两个机会就能“暴发”起来，那样是不会长远的。**

&#x20;对于我们这种比全球跨国公司小很多的企业而言，如果凡事都抢在别人面前的 话，抢对了，也就是抓住了一个机会；抢错了，就可能是灭顶之灾。索尼早期投 资录像机跟飞利浦、松下对抗，后来在宏观上是输了，总体损失非常大。如果这 个企业不是索尼，而是步步高的话，恐怕就不能再回头了。从长期经营的角度来 说，凡事抢在最前面终究会犯大错误的，一个企业哪怕是无数次抢对了，却很可 能因为一次的大错而遭受毁灭性的后果。所以我们在进入每一个产品领域的时候                                          都会相当慎重。

**问：作为一个市场后入者，请你谈谈“后来人”的得与失？**

&#x20;**段永平：**&#x6211;们进入一个市场时不会抢在最前面，在充分看清市场后，我们一般都 以“后来人”的角色考虑是否进入。当你看到有市场的时候，你再来分析要不要              进去，相对来说就有把握多了。

&#x20;**我认为任何一个产品，在刚出来的时候，其实没有人能确定它是不是真的有市 场的。作为“后来人”，你可以分析它的市场有多大。而如果你是市场的开拓 者，就根本没有办法知道。因为市场在没有成型的时候是不断地快速变化的， 你的计划不可能预料到其中的市场变化。而当你面临一个相对成型的市场的时 候，你就可以做一个清晰的强势、弱势、机会和威胁分析（SWOT）。在市场不 明确的情况下，做 SWOT 分析是很虚的。**

&#x20;当然，作为“后来人”也要失去一些的东西，例如市场先机的丢失。当产品在成 长期时，由于选购者相对来说比较赶时髦，从消费学的角度说，他的消费者剩余 比较高，愿意花比较高的价钱去买新东西。“后来人”失去了这个机会，也就失 去了初期的高利润。当到了成长期的后期或成熟期的时候，企业所能获得的就是 平均利润，不会有暴利的进账。如果你营销做得好，产品做得好，消费者认同你 的话，相对来说会有一点点超额利润，但已经是很少的了。早期产品可能会有百<br>

分之几十的超额利润，但到了成熟期，这一超额利润就萎缩到百分之几了。

充当“后来人”有得有失，但根据我们企业自身的情况，在 5 到 10 年甚至更长 一段时间我们都会采用这个策略。**因为步步高是小企业，没有足够的抗风险能力，** **我们的经营就得稳健。**&#x6211;们通常不会很早地进入一个产品大类，尤其是在高科技 行业。高科技一方面意味着有比较好的机会，同时又伴随着比较高的风险，我们 把它称之为高科技的误区。比如说芯片，你在这个芯片上所能产生的产品方向是 无穷无尽的。如果你只是根据一些简单的分析，别人还没有做的东西，你就盲目 的去做，企业就要承担很大的风险。

&#x20; **问：如何把握市场的进入机会？**

&#x20;**段永平：我们会在产品的成长期与成熟期之间进入一个市场。**&#x6211;们大部分的产品

都是在这样一个时期进入的，电话机有点特殊，是在产品的成熟期进入的，那是 因为我们觉得该市场潜力非常巨大。**我们不会在一个产品成长期的初期进入一个** **市场，因为我们看不清楚它是否真的有市场，所有的产品在成长初期都具有相** **同的趋势。在这种情况下，我们没有能力去判断他是否真正有市场，我们等到** **产品已有良好的上升态势时才介入进去。**

&#x20;我们会分析市场与产品的几个方面：一个是市场的潜力有多大，其中包括对该产 品的获利能力的分析。二是要考虑市场现存的竞争者和潜在竞争者都会是谁，做 一个详细的实力比较，如果认为在这个市场依然能够站得住，那就可以进去了。 这里面最重要的是比较分析，而不是简单地说对手强还是弱，一定要结合企业自 身情况进行比较。我们在进入 VCD 行业时已有很多国际大品牌，如索尼、乐声、 三星，而且还有很多国内家电的大品牌包括海尔、长虹、联想、TCL、康佳等。

它们都很强大，但我们在比较分析后找到了自己的优势，就像毛主席讲的“集中 优势兵力打歼灭战”2。

&#x20;**“虽然其他企业看起来牌子很大，但是他们在这一方面投入的兵力其实是没有 我们强，因为他们不可能把原来的市场扔掉，不可能把所有的资源扔进来。所 以我们就有机会。"**

&#x20;但是对于移动电话，我们做了细致分析后决定不进去。其实这个市场更大，现在 每年国内的销售量就有 3 千多万台了，然而我们企业的现有实力还不够。这个产 品的核心技术基本上掌握在世界上 5、6 家大企业中，自己要具备这样的开发技 术是不太现实的。竞争对手又特别强大，前 3 名企业占领了百分之七十几的市场 份额，国内品牌只能苦苦挣扎在生存线上。从经济学的角度来看，我认为它的机

会成本太高了。我们宁愿把同样的人力物力投入到我们更擅长的地方。 此外，是否要进入一个市场与你所拥有的资源也有很大关系，能进入市场的前提 是你有足够的可用资源，要有这种精力和资源进入新市场，上述的分析才有意义。 如果你已经吃饱了，就算有再好的东西搁在那，你也吃不动。

**问：“后来人”如何才能居上？**

**段永平：**&#x4F60;想一夜之间就跑到前面去是不可能的。**这一过程中最关键的是产品质量和消费者是否购买。**&#x9996;先你要做出好的产品，消费者才可能买；其次还要消费 者知道你的产品好，并且要产生信赖。我看到过这样的资料，[因为广告](https://xueqiu.com/S/BK1132?from=status_stock_match)而决定他 们购买行为的消费者只占百分之二十几，百分之七十的人是根据已购买者的使用 结果和推荐。所以我们需要很有耐心，也就是我经常说的“平常心”。

&#x20;我们后启动，却能领先市场，原因是我们在该行业中某些方面比竞争对手强大， 我们在品质管理体系、内部管理体系、员工机制、营销能力，都找到长处的时候 才会进去。例如，我们非常重视品质质量管理。[现在步步高](https://xueqiu.com/S/CSI2022?from=status_stock_match)的品质管理顾问是一 家中国台湾公司。我们用 ISO 体系做最基本的质量保证，推行全面品质控制体系。 我们 AV（视听）厂每年投入的培训是很多的，仅仅顾问费就达数百万。

&#x20;归根结底，要成为成功的“后来人”，企业要具备的是综合素质。麦肯锡公司 (Mckinsey\&Company，Inc.)提出的“7S”理论（strategy、system、staff、 structure、skills、style、superordinate goals）中，就没有说哪一个是最 重要的，**我很反对所谓的核心竞争力的概念。管理是个系统，要做到平衡，哪 一样都不能少。我们把经营管理形容为一个木桶，一个木桶装有 7 块木板，哪 块都不能短，但是哪块长了是没有意义的，这个木桶能装多少水取决于最短的 那块木板。企业要进步、要持续发展，就要做到各方面都同步发展，这是最经                                                         济的。**

**问：“敢为人后”是否不利于创新？**

**段永平：**&#x521B;新不是盲目的，不是为新而新，其实很多人都没有真正地理解创新的 意思。只要是别人没有的东西我有了，这叫创新？我认为不是。**别人好的东西你** **应该去学，你学会了就是不容易。**&#x5176;实我们在产品创新上花的力气是很大的，我们通过不断创新来保证产品的领先。

**但是我认为成功的企业都是相似的。国外的企业已经有了上百年的经营经验，其 实基本上在企业经营管理的各个方面，我们都能够找到很好的借鉴地方。其实 应该把创新分成几个方面去看，比如在企业的理念上，我认为其实很难存在创 新机会；在管理制度上，也很难的有创新机会。别人上百年的经营历史和所经 历的风风雨雨，其实你能够花很大的精力去学，能够学明白就是一项财富。西 方国家众多的企业经营经验都不一样，你找到一个合适自己的这其实本身就是一个创新。**

创新的精神是应该永远存在的，但是作为一个企业，你并没有太多的机会去尝试， 我觉得我们在相当长的时间里都会采用借鉴的办法，到你的企业规模足够大，你 的实力足够强，有很强的抗风险能力的时候，你是可以做一些改变，但是你必须 要有这个能力承受这种风险，任何一种改变的风险都是巨大的。我们并没有说是 赞成或反对创新那么简单，我们讲的是平常心。

**问：“敢为人后”是否会影响企业的发展速度？**

**段永平：**“敢为人后”并不是放之四海而皆准，我们也有失败的时候。但是每当 我们进入一个市场，我们是有“平常心”的，所谓平常心就是要看到机会，但同 时也一定要看到风险，要清楚企业是否能够承受其中的风险。所以，对于我们来 说，失败了也就是一个产品、计划的失败而已，对我们并没有产生根本的影响。 我们并没有像赌博一样，全部一下子投进去，一旦失败，整个企业就陷入困境了。 你可能会认为我们很保守，但我觉得在中国盲目的追求发展速度和企业规模并不 明智。在发达的西方国家，因为国家已经投入了很多钱建立了整套完善的外部经 济环境体系，包括法律、[银行](https://xueqiu.com/S/BK0055?from=status_stock_match)、教育、文化、基础设施等。在这种环境里，企业 的外部成本是很低的，企业到了一定的规模时总成本并不高。

&#x20;中国的整个外部经济环境体系还没有建立起来，外部成本很高，企业做得越大， 总成本就会越高得厉害。所以在中国，大企业并没有竞争力，小企业在竞争中反 而有优势。我们追求的是足够的最小发展速度，这里面的前提是“足够”，没有 这个足够的发展速度，企业就没有办法发展下去——**2001-02-01**

## 第 5 节：品牌、营销与广告

## 一、品牌

我的理解，所谓品牌就是公司过去做过的所有事情（产品）在消费者心中的烙印

（印象），好坏大家都会记得的。(2019-08-20)

**1.品牌与租牌子**

&#x20; 乐百氏，王老吉当年都是租来的牌子，最后也都遇到了很大的麻烦。很少人知道 当年我们也租过牌子。我们最早开始做游戏机时，曾经用过中国台湾的一个牌子， 叫“创造者”。由于我们质量好，这个牌子一开始就还不错，但当时中国的台商

（以及代理的中国港商）比较短视，居然开始将同一牌子的产品的包装盒偷偷卖 给其他人（仅仅是个包装盒啊，当时一块多人民币一个，大概是 1990 年？）。 我当时想，长此以往怎么可以？于是就有了“小霸王”。(2016-11-18）

\--------------------------------------------------------------------------------------------------------------------

**2.ipad 与小天才**

网友：人才与天才的差别：天才看起来有点“二”。（看完段总推荐《阿甘正传》， 想起网上有点“二”的话。）

**段永平：**&#x6211;喜欢“小天才”这个名字。（2011-02-08）

网友：我给儿子买了小天才，998 元，很值，我一直不会教育孩子，现在全解决 了，段总是你创办的吗？感觉市场很大。

**段永平：**&#x8FD9;个产品对适龄的小朋友确实蛮好的，而且市场上基本没有这么好的东 西，不过 ipad 会有影响。**小天才现在是我们公司的品牌了，说起来话长啊。**（2 011-07-08）

**ipad 与小天才**

**段永平：**&#x82F9;果和唯冠的 ipad 商标之争还是没结果，也确实很难猜测最后的结局。 也许这是个不该发生的故事，如果当年苹果买唯冠的 ipad 商标时能多付点钱的 话。不管结局如何，感觉苹果在这件事情上都是赚了小便宜最后吃了大亏，属于 聪明反被聪明误的那种。

不过买商标确实也是件不容易的事，我们的小天才宝贝电脑用的“小天才”商标 就是买回来的。上个世纪 90 年代初的时候，“小天才”在游戏机领域是个非常 响当当的牌子，产品的质量和口碑都非常好，在我的感觉里是曾经唯一可以有机<br>

会和“小霸王”一比的牌子。后来不知道什么原因“小天才”就慢慢在市场上消 失了。

实际上“小天才”这 3 个字比“小霸王”这 3 个字的平衡性要好很多，主要是“霸” 的笔画太多，导致“小霸王”3 个字怎么设计都不太好看。在步步高创业初期， 我们曾经找到“小天才”商标所有人，提出想买这个商标（那是他们在市场已经 上没产品了），并出到了 300 万的价钱，结果被一口回绝了。

10 年后的某一天（大概是 2007 或 2008 年？），我突然想到也许我们该再试试，

因为想个好商标名确实是件非常难的事，尤其是 3 个字商标基本上都被注绝了。 如果能够以不太贵的价钱买到一个好的商标名字绝对是合算的。

于是我们费尽九牛二虎之力终于找到了“小天才”的商标所有人。不过这一次我 们吸取了上次的经验，委托了一个中间公司出面购买。结果对方直接出价就是 30 万，而且一再强调他这个牌子是很值钱的，10 年前步步高就曾经出过 300 万 想买。过程自然是很顺利，一切按照法律手续，大概大半年后这个牌子就归到我 们公司了。

其实我们当时还是打算用 300 万买的，哪怕今天当时“小天才”的所有人找到我 们，我们依然还可以补足他，因为实在是不想赚他的便宜。

不过据说后来又找不到他了，希望他运气好能看到这个帖子哈 ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)。

\------------------------------------------------------------------

网友：我想问下您明明 30 万已买了的商标，怎么还愿意补偿给商标所有人。一 般在生意过程中怎么把握厚道和每一分都要算计这个度？是不是只有厚道的生 意人才能做得大？

**段永平：**&#x56E0;为我们本来就觉得 300 万是个很好的价钱，没想到对方给的价钱那么 低。厚道和做得大没有必然联系，但厚道的生意人可能能睡得好点吧。

（2012-03-01）

**3.品牌起名的原则**

01\. 步步高取名（来源：（视频）财富人生—段永平） **段永平：**&#x90A3;么步步高也是我们征名征来的。

主持人：那您为什么当时从那么多征名里面挑选这个步步高？又是取它什么样的 意义呢？

**段永平：**&#x6211;们当时建立这个品牌的时候，很多人给我们提个建议，比方说你起一 个洋名字，那么看起来像一个外资或者外来的东西，我说这个跟我这个……因为 我做企业一开始，我就提出要以诚为本，就我不能蒙人家，那么你起个洋名字本<br>

意就是已经想蒙人了，就让人家以为你是个洋的东西，所以我跟大家讲我说我一 定要取一个本土的名字，那么品牌它有一个最基本特征。

第一、 你这个字不能够复杂。

就是因为我做小霸王的时候那个霸字给我带来很多困惑，所以我就有一个这样的 定义，就是说名字不能够笔画太复杂，让你有很多地方你做不了，那么这是其一；

其二、不能有异议。 异议就是说有时候步步高，大家很清楚哪个步哪个高你一定很清楚，对吧？ 第三、容易传播容易记。

那么一来我们一征名征上万个名字，有很多人帮我挑，最后当时是我的秘书就这 个名字让我看一看，哎，就是它了，我觉得这挺好，嗯，它是挑出来的，并不是 我真的自己想到的，而且我们当时在这个设计这个征名的时候本身还出了个问 题，就征名一般是取唯一的吗？我们就没有想过这个问题，就觉得没想过征名会 有来那么多，那么就发现我来了很多，就是其中有八个是叫步步高的，我们那个 时候是，我们要是用你的我们就付 5000 块钱，所以最后只好是这八个人每个人 付 5000，我说还好不是 80 个，要是 80 个我可能就要选择我不用这个了。

02\. 小霸王取名（来源：（视频）财富人生——段永平）

&#x20;**段永平：**&#x90A3;是一个很偶然的因素，跟几个朋友在吃饭的时候都在想给公司取什么 名字，有人看到小霸王汽车说不如叫“小霸王”，我觉得这个名字好，对我们这 类产品的取名感觉很有个性比较容易记住。但霸太复杂是缺陷，在推广中带来很 多困惑，小和王笔画简单，霸字笔画太多不均衡，传播性和异议性都很好，传播                                                      效率高。

&#x20; 网友：小霸王一打开电源就是一句“小霸王，其乐无穷”的话，真有趣。

**段永平：**&#x5475;呵，唐老鸭（李扬配音）的“小霸王其乐无穷啊”。 （2010-06-06）

03.网友：我也认为想好商标名确实是件非常难的事。我是建材行业的，我这个 筑道名称也是注册商标，自己比较喜欢。

**段永平：**&#x8FD9;个名字的同一发音有歧义，不是很适合做消费品的牌子。（2012-03-02）

04.网友：没想到段总对商标名称也有这么深的理解，我是做地坪漆的，我针对 每个不同性能产品给了一个牌子，工业用固地宝、地坪宝、菲凡士、地甲、民用 的牌子是地美丽、地平宝。其中菲凡士是受步步高名称启发的，段总可否点评一 下（**给商标起好名的原则）**，谢谢！  <br>

**段永平：你随便找个不知道这个名字的人说一下，看看需要多久他可以复述（说** **对并写出来）。然后用“小天才”或“步步高”对比一下。多出来的时间的比 例就是你未来为推广这个牌子要多花的代价（**&#x5982;果达到一样的知名度和美誉度的 话。**）**（2012-03-02）

05.网友：OPPO 和 VIVO 都是好名字，而且不仅仅名字好，产品也好。希望能成 为国内像苹果一样的优秀公司……

**段永平：**&#x76;ivo 的商标是都是小写的，小写的有些道理哈。vivo 的商标设计有些 小问题，在西班牙语里 vivo 是直播的意思，另外 vivo 在美国有同名的公司，似 乎这个设计时有点仓促，当然找个合适的名字非常不容易。（2015-05-07）

06.网友：提到 BBK（步步高）和 OPPO，想请教段兄一个问题。其实我感觉用 BBK

（步步高）这个名字打国际市场，应该也是个很好的名字啊？多延伸出一个品牌， 是怎样的一种经营战略考虑的？会不会两个品牌容易分薄了资源？

**段永平：**&#x6211;记得曾经测试过 BBK，好像在有些市场不太合适，有些地方发音都不 同。OPPO 则在绝大部分地区都基本一样。（2010-04-02）

07.网友：oppo 和苹果容易搞混。不知道段总设计 oppo 想没想到苹果。

**段永平：**&#x4F60;是说商标？我们设计 OPPO 时苹果还在生死线上挣扎呢，要是现在出 还真说不清了。（2010-10-24）

08.网友：听说 OPPO 诞生经历了 5 年酝酿期。

**段永平：**&#x4F;PPO 定位为全球性品牌，设计工作由荷兰公司完成，希望能够更加欧 化，借以与步步高区分。OPPO 在美国仅卖高端 DVD，销售通过网络完成，在中国 则主要卖 MP3，渠道与步步高有很多重叠。“你看”，他指着窗外说，“每天都 成车地往外送，每月在美国可以卖 1 万台左右。”我们计划用 5 年-10 年树立这 个新品牌，“我们做什么事情都是慢慢来”。

**引用:财经会客厅视频 (博文时间：2010-03-22)**

主持人：步步高也推出了 OPPO 这个独立的品牌。这么多大的动作是不是意味着 步步高是准备再进行一次大的战略转型呢？

**段永平：**&#x5B83;是两个不同的部门做的东西了。那么其实 OPPO 这个牌子我们推出来 的时间远远超过大家的想象。我们设计这个品牌，那是 2000 年就开始了，2000 年开始设计，那设计的主要的动因是我们考虑得比较长远了，就说当我们要走向 全球的时候，我们不可能用步步高这个牌子去走，那么一定要有个国际品牌，所 以我们设计其实就不是中国人设计的。所以我们自己要设一个中英文品牌的话， 肯定会很怪异，自己觉得挺好，老美还读不出来，或者说这个说不顺口，或者说 不舒服，所以我们请的都是像这个 OPPO 是请的是欧洲人设计的。那么而且是全 球一个一个国家都做过语音测试，包括网站，包括所有的这个花了很长的时间，<br>

也花了很多钱。那么等到搞好了，大概也都花了有一两年两三年的时间了，然后 在开始做产品合适的产品。(博文时间：2010-03-22)

网友： 还是 OPPO 读起来方便·语音测试不是白做的啊·

**段永平：**&#x4F;PPO 这名字起得不容易啊，前后好多年功夫呢。

&#x20;**段永平：**&#x54C1;牌最忌讳的就是用有含义的名字，因为本来含义就是应该通过产品去 赋予的，比如 SONY。但是特别强大的产品可以改变原有的含义，让不好的品牌 名字变得很响亮，人们会忘记原来的意思。比如：苹果、微软

网友： 段总这句话值钱。

**段永平：**&#x8FD9;是基本常识哦，不是我的什么话。（2012-09-18）

&#x20; 网友：不敢苟同唉，我的企业精力一定是围绕产品、用户和渠道的。你看王老吉 被迫叫加多宝，名字受到很大影响。但坚实的产品和渠道是核心，人家没伤元气，                                                           对不？

**段永平：**&#x35; 年以后再说这话。

&#x20;其实企业非常不容易，每个细节都可能有影响。在可能的前提下要注重每个细节。 另外，你看看多加宝为了改这个名字花了多少钱吧。（2012-09-18）

&#x20; 09.**产品型号命名**

&#x20;网友：发现一个对产品型号命名的有趣现象：做得比较好的，名字都非常好记而 且不会弄乱；比如汽车里的奥迪 A4、A6、A8；宝马 X1、X3、X5；奔驰 S350、S600…… 像 Model S P85D 记起来就要复杂一些，取各种奇怪难记笔画又多的名字的车（这 个就不举例了）貌似最后销量都不大。手机行业好像也存在这个现象。肯定不是 由名字决定产品的销量，但我觉得一个重视用户的企业，会重视取名这个环节。 假设茅台按您说把年份标示清楚的思路想想，未来的茅台叫：飞天 5、飞天 10、                                        飞天 15、飞天 30，很好记忆啊！

**段永平：**&#x53D6;名字确实很重要，大概相当于锦上添花，最重要的还是产品。

（2015-04-05）

网友： oppo r817 的整体 ui 有深度的美化，菜单没有传统 android 那种黑压压 的感觉，定位在年轻时尚上的 real 系列，有一点清新可爱的感觉，视觉感受很 舒服，有意思

&#x20;**段永平：**&#x8D77;型号名字的水平是诺基亚级别的，感觉有点故意让人记不住的意思。 不过这是我的责任，因为我在的时候就这样。

网友：怎么什么事都怪到你头上了

**段永平：**&#x56E0;为这个起名字的办法确实是我起头的，从很久以前的小霸王游戏机叫 D21/D25 开始就这样。而且这个起名字的办法是和日本人学的，当时松下电视机 有 D21/D25 的型号。

网友：成功在细节处。 **段永平：**&#x8981;不是苹果，也不觉得自己这么做有啥不对的。 网友：呵呵！段总，求责于己！要不改成 R8 如何？既简单好记又符合国际潮流！

**段永平：** OPPO R8 看起来好像比 OPPO R817 好。不过 R 不好读哈。（2012-09-18）

引用: vivo X1S 试用#还有两天！vivo X1S 全网招募试用达人，没那么多限制条 件，只要你对 X1S 感兴趣，就可以参加。

**段永平：**&#x4E3A;什么叫 vivo X1S？不能就叫 vivo X2 吗？多个字母会降低很多传播 效率，2 点其实没关系的。不能因为苹果干傻事我们就可以干哈。再说，苹果叫 啥都能轻松被人记得的，我们好像还有点差距。（2013-04-17）

网友： vivo x2 域名被占用了，无法注册，所以被迫更名 x1s

**段永平：** wow，这个可有点不好。后面的要早点注册了。 （2013-04-18）

10.网友：朋友想开家卖牛肉汤的店，起名字有没有什么需要遵守的原则啊？&#x20;

**段永平：**&#x522B;起那些让人想起就没食欲的，另外就是不要有歧义的，最好是一说就 能写出来的。（2014-07-06）

11.网友：不会是网易有道就是从“取之有道”这里来！百度来自“众里寻他千 百度”

**段永平：**&#x5475;呵，也许是吧，不过没问过。（2010-05-23）

12.网友：大道您好，我孩子 2 个月后出生，它名字我想了大半年了没想好，请 大道和各位大道粉丝帮忙。

**段永平**：给人取名字我没啥经验，但给产品取名字还是有些想法的。其实名字没 那么重要，名字的含义都是后天赋予的，所以取名字主要考虑的是有没有负面的 东西。比如，不要取那些别人大概率会念错的名字，尽量不要有歧义（尤其是负 面的歧义）……给产品取名字时还需要考虑平衡性，比如“小霸王”这个名字虽 然很好，易传播，少歧义，但“霸”子笔画太多，与“小”和“王”怎么配都不 容易好看哈。(2019-09-14)<br>

**4.品牌价值**

01\. 网友：对于步步高这个品牌有没有相关规划？因为目前步步高公司下有两个 品牌，一个 OPPO，一个步步高，而步步高下又有 4 个子产品线，同时这 4 个产 品线的运作是独立，那目前公司是如何规划让步步高的品牌价值最大化？同时如 果步步高到了走向全球市场的时候，那步步高下面的 4 个产品线又如何协调规 划？&#x20;

**段永平：**&#x4E0D;知道你讲的是哪 4 个产品线。我们产品线老多了。

我们公司经营电子消费品的有 3 个公司： 电子教育公司的主力产品是学习机、点读机、复读机、词典等等； 通讯公司以电话机起家，现在手机也做得非常不错；

有声光盘从 VCD 起家，现在刚刚进入“生活电器”；

OPPO 实际上是个全球品牌，现在大家比较知道的大概就是手机和 MP3/4 了，在 美国有点影响的是 OPPO 的蓝光 DVD。OPPO 的东西可能是迄今为止在欧美电子类 里美誉度最好的品牌之一了（知名度还远远不够），咱中国产品这好像还是第一 回吧？不服的请上网查查，都是英文的。 我们没有品牌价值最大化的任何计划，我甚至不懂什么叫品牌价值最大化。我们 最关注的是我们用户的体验和如何改进的方法，我们追求的是如何能提供消费者 有用且喜欢的东西。如果我们能一直坚持这样做的话，20-30 年内说不定的我们 也能出个像 iphone 或者 wii 一样的产品啊。（2010-03-22）

&#x20;02.网友：一直想不明白品牌对于一个企业来说意味着什么。身边的朋友有很多 并不知道苹果为什么好，但是很多都觉得苹果是最好的手机，我自己没用过三星 的手机，但是心里却认为苹果要比三星好很多，如果换的话还会选择苹果。每次

我和人提起茅台，很多都觉得它是最好的酒，这种观念对茅台来说能带来些什 么？人的观念容易改变吗？&#x20;

**段永平：个人理解，品牌就是产品在人们心中留下的印象。一般来讲，好的印 象传播得比较慢一点，坏的传播得比较快一些。广告是企业主动去传播其产品 的印象。好的企业会如实地传播而不好的企业经常会蒙人。老百姓心里有杆秤， 只要时间足够长，大多数人都会对自己关心的产品的品牌有个大致正确的印象。 建立一个好的印象一般需要很长的时间，但破坏一个好的印象可以只需要很短 的时间或某一两件事情。所以建立一个好的品牌是非常不容易的。互联网加快 了传播的速度和到达目标受众的准确率但不会改变事情的本质，这个本质就是 好产品最后会有好印象，能够一直有好产品的公司会活得比较好，短视的公司 最后会有麻烦。（2014.07）**

03\. 网友：请问怎么看待“品牌溢价”、“品牌价值”呢？市面上流行一种观点， 认为像阿迪耐克这样的企业产品价格卖得高是品牌强，而李宁安踏类的品牌弱不 能获得品牌溢价使得价格便宜。前段时间媒体爆出 LV（路易威登）、阿玛尼奢 侈品生产成本只有几十美金，却能通过品牌溢价卖到几百美金的价格。很多企业 也热心积极推进品牌管理，提升品牌形象，想要获得品牌溢价。请问段先生是怎 么理解“品牌”的作用？ <br>

**段永平：**&#x4E0D;是很理解人们常说的品牌溢价到底是什么意思。 所谓的品牌其实就是人们对品牌产品留下的印象（好的坏的）。 我个人观点长期来讲品牌是没有“溢价”的，不然你就不买了。 长期来讲，品牌卖的就是其该卖的价钱。 品牌绝对不只是一个名字！在这点上老马也是不对的。

建立一个好的品牌绝对不是一朝一夕之功，但毁掉一个好品牌可以很快。

（2011-08-03）

04\. 网友：请问对于一些行业，比如服装，时尚用品，饮料等行业，品牌都非常 重要，有些品牌甚至带来比较大的溢价。再比如门户网站也好像比较依赖品牌忠 诚度，打开几大门户，内容差别似乎都比较小。品牌的崛起和衰落有些什么规律？ 相信在中国对品牌的理解比段总强的人不多了。

**段永平：**&#x54C1;牌溢价我觉得是一种误解。品牌只是物有所值而已。当一个品牌想当 然认为其有溢价时，会很容易犯错误。（2010-06-15）

**段永平：**&#x6211;个人观点认为品牌是没有溢价的，一般人看到的溢价其实是假象。贵 的品牌往往有贵的道理，不然他就不会（或叫不能）持续。“溢价”感觉像是同 样的东西在卖不同的价钱，呵呵，他们确实是不同的东西，但可能是同一类别。

网友：能不能举例子.说明物有所值？

**段永平：**&#x5927;多数人买有品牌的东西时肯定不是冲着“溢价”去的。**所谓品牌其实** **就是某种（些）差异化的浓缩。**

早年我开的车就是属于特别便宜的车，觉得都是代步，没必要多花钱。后来偶尔 有一次试了一下“好车”，第二天就去买了一部，因为发现确实差别好大。

呵呵，看看你自己拥有的品牌产品时，你会发现其实没那么难。（2010-06-16）

05 网友：小天才平板电脑真的是好东西啊 一出来我就想买两台给小孩用，让小 孩从 IPAD（平板电脑）解放出来。我是知道小天才是步步高的。真担心其他消 费者不知道小天才是步步高的而选择购买其他品牌的产品。毕竟步步高复读机培 养的一群消费者现在都有钱了！！

**段永平：**&#x5C0F;天才平板电脑就是给小孩用的，在小孩的眼睛保护上下了功夫，比 iPad 强。至于品牌嘛，本来就是产品的积累，到时该知道的就知道了。

（2014-11-16）

06\. 网友：一家公司的产品的附加价值或者说是名牌的溢价，这些多出来的价格， 是一种感觉上的东西，还是可以量化的？

**段永平：**&#x53EF;以量化。你花钱时就是一种量化，不同的牌子你会给不同的价钱。

（2010-04-16）

07.网友：我对名牌的理解是信誉度，美誉度的一种保证，买名牌至少在质量上 会比较放心，还有产品比其他同类产品要出色，比如设计，服务等，可能这就叫 一分钱一分货，名牌产品的含金量确实要比一般的同类商品要高，所以贵一些就 是自然的了，但贵多少能接受，买家仍然认可购买，这可能就是名牌的溢价。

**段永平：**&#x540D;牌之所以是名牌一般都是有道理的。（2010-04-16）

08.网友：有个问题想请教一下大道：波特的五力模型能否用来验证“是否是好 的生意模式”？

我的理解：好的生意模式，是为了能让（供应商+公司+客户）总值最大化，如果 单纯只强调其中的任意一方或两方的利益，最终是不能维持下去的，也不是好的 生意模式。大道如何看呢？

**段永平：**&#x559C;诗糖果是好的生意模式。比如情人节你到商店给太太买点喜诗糖果， 商店说没这个牌子，但有喜词糖果，然后你说“那我去隔壁看看”。你去商店想 买台 iphone5，商店说缺货，但有 gphone6，然后你说我等 iphone5。 说了半天， 好像和利益都没啥关系。（2012-05-02）&#x20;

网友：这就是品牌忠诚度，对吗？

**段永平：我不是很相信顾客会有“品牌忠诚度”，顾客忠诚的是品牌后面的东 西，不然假的会卖得和真的一个价还会卖得一样好**。（2012-05-02）&#x20;

网友 D：有人用苹果是因为其功能，有人是因为其时尚身份。对品牌背后的需求 不同，可能在变化时忠诚度也就不同了。我不止听到一个人说，苹果都成街机了， 用起来不如最初那般有面子了，这个群体的忠诚度又会如何？

**段永平：**&#x5475;呵，这个群体的忠诚度可能更高，因为不用会没面子的。（2012-05-02） **引用:福布斯：用户容忍苹果产品瑕疵源于品牌忠诚度**

**段永平：**&#x7528;户容忍瑕疵或许有很多原因，但和品牌忠诚度不太有关系吧？如果 iphone 没那么好用，人们会容忍他的瑕疵？和乔布斯有啥关系？我就一直不习 惯用 Mac，乔布斯在不在我都不习惯。（2011-11-28）

09.网友：想请教下各位：如何做品牌？我们公司之前是一个 OEM（代工）性质 的代工厂，现在希望能做自己的品牌，但不知需要注意哪些？&#x20;

**段永平：**&#x5475;呵，这是典型的我们不知道我们不知道什么啊。你要想知道需要什么 首先你要知道你有什么。建议你想想那些有名的牌子都有啥，对比一下自己都有 啥，也许你就知道自己需要啥啥啥了。（2011-02-15）<br>

**段永平：**&#x5173;于做企业我举两个例子：不做代工，拒绝沃尔玛。沃尔玛要拧成本毛 巾，给他代工你会很难受，企业会被弄死。

&#x20; 下面我举一些我们自己的“不做的事情”的例子，这也算我们的小秘密吧。

不做 OEM：最早提出不做 OEM 的就是现在 OPPO 的 CEO 陈明永，不记得是哪年了， 大概可能有 20 年了吧。为什么我们不做 OEM 呢？**长远来讲，我们想建立自己 的品牌，我们需要把所有的资源投入到我们自己的产品上。**&#x505A; OEM 有很专业的 公司，他们有很专业的办法去满足很多不同的客户的不同的要求，我们根本就 没有精力去做这些事情，所以长远来说我们是会输给那些专业做 OEM 的公司的， 既然知道长远会做不过别人，那我们干脆就不做。记得大概 十五六年前，我 还是 CEO 的时候，沃尔玛的供应商曾经来找过我，说要给我们下 100 万台的 V CD 的单子，我在电话里直接就拒绝了。对方还问我，难道价钱你都不想谈吗？ 我说，对的，不管什么价钱我都拒绝，反正你也不会给我好的价钱，谈来谈去 浪费大家的时间。我当时还类似地拒绝过南方贝尔的代表要下的“巨量”电话 机订单。当时给我打电话的人还嘟囔着说，在中国还没有人拒绝过我们的订单 呢。（2016-10-12）

网友：在中国民营企业发展的初期，可能几乎没什么人想得到不做国际大公司 的代工，就像这里说到的没有人拒绝他们的订单。几年前当我意识到步步高是 从开始就选择了不代工这条路的时候觉得非常惊讶，因为这个觉知实在是太早 了，觉得怎么可能知道。这时候实际上很多的工厂还是成熟的老牌港台企业不 仅仅是民企，步步高在起步的时候就已经在有些方面超过他们了，这是让人觉 得很佩服的地方，这只有文化非常好的企业才可能想得到、做得到，也是我早 就看好段总的主要原因之一。

**段永平：**&#x5982;果你想的是 10 年 20 年后的事情，这个决定其实非常简单且容易。 凡事能往前（后）想几年，往往难度会大幅度下来。（2016-10-18）

网友：从段总 20 年前就不做 OEM，建立自己的品牌，现在我越来越深信，功夫 熊猫里的一句经典台词“There is no accident 世上无偶然”。这还是跟段总 偷学过来的。

**段永平：**&#x6211;们其实从来就没做过 OEM，但 20 年前确定了不做，所以谈都不谈了， 省了很多时间。（2016-10-25）

10.网友：这 2 年承包了别人的品牌，做的电子商务，在天猫里卖，但是当时我

们签约只签约了 3 年，明年就是第三年了，品牌可能会面临收回的危机，而我们 自己做的是贸易也没有实体生产，自己的品牌已经去注册了，我自从做这个生意 以来一直觉得很被动，感觉自己没有主控权，很想跳出这个阶段。

**段永平：**&#x4E00;个品牌签约只签三年的人，就不要说很想跳出这个阶段了吧？不过， 亡羊补牢总是来得及的。（2014-02-27）<br>

网友：段大哥说的甚是，当时提出签 10 年 ，但他不愿意说 3 年后在签，这个是

我犯下的好大个错误，在我 17 岁的时候就经常看段大哥的视频，还有段大哥去

波士堂的节目，一直在向您学习，签约时我 22 岁，今年 24 了。这也是我第一次 动用家里的资金去做这个生意。&#x20;

**段永平：**&#x4F60;这个年纪，不需要解释什么，而且亡羊补牢的效果会非常好。

（2014-03-02）

&#x20;网友：我所在的地方是一个皮具箱包产业区，有着非常完善的产业链，但我观察 这个行业大部分都是靠模仿外国的品牌，我想请教一下以您在实业电子消费品领 域创立小霸王，步步高，oppo，vivo 这么多品牌的经验角度讲下您觉得目前在 中国是否具备创立一个著名的本土皮具箱包品牌的条件？创立这样的一个品牌                                 需要具备哪些条件？&#x20;

**段永平**：要建立品牌一定要想得很长远很长远。简单但绝非容易。(2019-09-21)

11\. 网友：电视上面看到的步步高的广告好多呀，音乐手机，点读机，豆浆机， 三种不一样领域的产品，消费群不一样，有点感觉相互不照应。oppo 也有手机， MP3/MP4 广告；但感觉这些产品的消费群体很相似，广告投入是有照应的。从对 外形象和品牌感知，OPPO 的确比较厉害。

**段永平：**&#x8FD9;个问题我们会慢慢解决的。貌似已经找到办法了，还需要点时间实施 和验证。我们准备逐步退出小家电行业的最重要原因就是因为这个产品会影响我 们整个品牌的印象。电教产品也会有些办法。估计 3 年左右人们就不会再有那种 相互不照应的感觉了。（2011-03-01）

网友 b：想请教您：步步高退出生活电器，是回避红海么？

**段永平：**&#x6211;们经营这么多年，退出过得产品很多，简单讲就是如果用 5 年 10 年 的眼光来看这个不适合我们。（2011-04-19）

网友 d：我忘了在哪看到说步步高的生活电器被爱仕达接盘了，文中说道步步生 活电器三年亏损 3 个亿，想问段总，您觉得步步高的核心竞争力是什么呢？

**段永平：**&#x5047;新闻。前面说过 n 次了，我们的核心竞争力就是我们的文化。比如决 定退出生活电器领域就是一个例子：从长期来看，这个领域不适合我们，也就是 说对我们而言就是个错误的方向。错了就改，不管多大的代价都是最小的代价。 就这么简单，但能做到的人很少。（2011-04-20）

12\. 网友：今天去商场的时候顺便去步步高和 OPPO 的专柜看了看，也和促销员 随意地聊了聊，感觉她们劲头挺足的，说步步高将成为国内的诺基亚，自己也简 单试用了两个牌子的几款机子，感觉还不赖。顺便说说自己以前使用国产手机波 导的经历，真是很痛苦，太不人性化了，所以后来一直没用过国产的。看来以后 要改观了，盼望国货能自强。<br>

**段永平：**&#x6700;好不要概念化国货。产自什么品牌有时也是很重要的（我觉得比产自 哪个国家重要）。我们的蓝光 DVD 在美国卖得还不错，国内却不行，有个可能就 是高档的东西大家不太相信“国货”。老美不太管那么多，只要东西好就行。

（2010-06-14）

13\. 网友：格力一直以来投入巨额的研发费用，到底是消费者受益了还是格力自 己受益了？格力的研发费用的投入会不会和纺织厂购入新设备一样？&#x20;

**段永平：**&#x683C;力的品牌会积累价值，巴菲特说的纺织厂好像不行，有点像 OEM 厂。

（2010-08-14）

14\. 网友：BBK（步步高）和 OPPO 同时在做手机，不知段总如何定位两个品牌， 如何平衡两个管理层、销售渠道、客户之间的竞争关系？&#x20;

**段永平：**&#x5475;呵，我就算是个顾问，怎么会要我去定位呢？这是两家不同的公司， 各有各的定位。关键文化有相同的地方。市场上有那么多品牌，多一家竞争也没 啥啊。（2010-03-17）

15.网友：段总认为品牌没有溢价。但我还是认为品牌能够带来溢价，要么为什 么那么多企业要建品牌。

**段永平：**&#x4E5F;许是说法不同。没有品牌连生存都会有问题，因为你的消费者无法识 别你的产品。

16.网友：我发现一些人非常喜欢名牌，如手机衣服，买不起正品，就买山寨的， 也许是人的一种虚荣心吧，不过我现在不怎么太重视品牌，我现在重视产品的质 量。

**段永平：**&#x591A;数情况下，不知道在不重视品牌的前提下，如何重视质量。（2010-06-17）

17.网友：我不懂如何看房地产产业，来这里学习学习。我想聊一点：我觉得房 地产缺乏品牌认同的行业，消费者买房子不怎么看开发商是谁，而是看价钱，地 段等等。

**段永平：**&#x5475;呵，品牌在这个行业里绝对有价值。 网友 O：段总能否说细点？

**段永平：**&#x60F3;想如果你自己买房子的话，你会在乎品牌吗？我不信有人不在乎。

（2010-07-05）

网友：A. 海外买房似乎很少人留意房子是谁造的或者是啥品牌，我这个观察对 吗？

B. 房产是否消费能力越低的地区，越注重品牌？<br>

C. 假设中国经济继续长期高速增长，人们的购买力也会大幅提高，国民那时对 房子性价比的辨识能力是否会提高？&#x20;

**段永平：**&#x793E;会信任度越低，品牌的作用越大。（2010-07-08）

18.网友：从 OPPO digital 的那个官网看，这完全是一个美国的品牌，very 非 常硅谷。从 OPPO 手机那个官网看，又完全是一个民族品牌，连英文版的都没有。 学长真高手啊!&#x20;

**段永平：**&#x5176;实和我本人没啥关系，我什么也没做过。说不上有什么厉害的，觉得 挺正常。能反过来的才叫厉害，有时真能见到这种公司。（2010-06-10）

19\. 网友：昨晚看了 315 晚会，对所谓正义的声音感觉很可笑。 **段永平：**&#x96BE;道你是第一次看电视？（2013-03-16）

网友 D：但看着还是生气，每次都会拿两个的好企业开刀，这什么价值观，还有 没有是非了？

**段永平：**&#x53EA;有有名的企业才会有瞩目率，也只有在乎自己品牌的企业才会在乎， 而且……明白？

20.网友：段总不会吧？OPPO 不是国际品牌吗？印度现在有近 12 亿人口，市场 潜力和中国差不多。

&#x20;**段永平：**&#x56FD;际品牌就应该去人多的地方吗？我不觉得印度对我们来讲眼前是个好 市场。也许一段时间以后会是的。（2010-11-08）

21.[中外媒体集体“八卦”只为一段恋情：温网咋就看上中国小子 OPPO 了](https://xueqiu.com/7932872292/125868749)

&#x20;“从前书信很慢，车马很远，一生只爱一个人”，这是父辈的爱情，也是我们再 也不会经历的爱情，品牌之间的“爱情”亦是如此，但有太多的“品牌爱情”却 只是建立在所谓的赞助费上，往往结局并不那么如意，上一刻如胶似漆，下一刻 就已分道扬镳。 北京时间 4 月 26 日，一段几乎没有任何征兆的“品牌恋情……

**段永平：** ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)（2019-04-30）

22.网友：大道的本分，我很认同，OPPO 的产品我从 R15，到 R17，RENO 一直追， 除了 RENO 无惊喜外，其他几款手机产品确实能看到产品平常心中的不平常处， 但我今天要说的是 OPPO 手机的赠品，从雨伞到水杯，非常劣质，毫无品质感， 我收到赠品的雨伞伞柄第二天就脱落了，茶杯的玻璃杯体和外塑间居然是松的， 晃动明显，进一步调查发现这并不是我个例，京东和天猫上很多用户都投诉赠品 质量差，以我知道的自拍杆赠品为例，2016 年有一批是中山市海一舟电子有限 公司做供应商，正好有熟人在里面做事，他们居然是让员工领回家组装好了送到<br>

厂，一套东西拿回家组装，交回来时要么杆多要么线多，这怎么做品控呢？现在 好像这家公司倒闭了，希望 OPPO 公司好好提升赠品的品质，给人感觉完全是两 家公司产品（虽然真是不同公司的产品）。

&#x20; **段永平**：我觉得根本就不该有赠品，如果有就应该是一种标准。问题反映中。

不过，OPPO 应该是没有赠品的，赠品可能来自于经销商。(2019-07-14)

&#x20; **5.品牌多元化**

01.网友：请教一下，同一家公司在同类产品中实施多品牌策略有哪些好处？这 种策略是容易成功的方式吗？不知道段哥是否方便指点一下。

**段永平：**&#x5927;部分产品这么做是非常愚蠢的。早年看过 P\&G 这么做，所以老是觉得 他们的产品多少有点蒙人的味道，将来有一天会有麻烦的。（2017-08-17）

网友：是违背焦点法则的原因吗？段总能不能再多说几句，我们厂就有这个问题。 **段永平：**&#x540C;样的东西分成多个品牌卖显然属于生意导向而不是用户导向。

（2017-08-20）

网友 z：佛山有很多陶瓷企业，一个公司下面就有很多个品牌，当时也不明白！

**段永平：如果是同样的东西，一个牌子都做不好的话，多个牌子就更做不好了。 如果一个牌子能做好的话，为什么还要多个牌子？OPPO 和 vivo 的情况不一样， 他们是两个完全相互独立的公司，希望不要误导大家。**

网友 z：学长说的这个值得深思。

以前我跟学长汇报过，我有个朋友做宠物食品（我参股了一点），代工做得不错。 但我认为没有自己的品牌，代工厂永远受制于人（客户越大，自己的生存能力越 差），不是长久之计（尤其学长说过，步步高在很早的时候就决定了不走代工之 路，坚定走品牌之路）。

现在达成共识了，做自己的品牌。为了快速打开局面，朋友第一步规划的就是多 品牌战术。为的是在每一个地区，都有若干家分销商可以成为当地的独家。逻辑 也说得通，但我下意识觉得，如果让学长您来制定规划，恐怕不会这么做。

我在北京拉了一个团队，做以互联网为主要渠道的高端宠物粮品牌。我们这个团 队是计划只做一个牌子的，做到有名堂为止。筹备过程中，我跟很多“前辈”请 教，很多人建议我先找个定位公司咨询品牌定位、找个广告公司出来的人做 partner 合伙人一起干。作为新入行的人，这个建议逻辑也说得通，但我下意识 又觉得不对了。真正做大的牌子，有几个是广告公司的人做起来的呢？OPPO 和 vivo 应该都没找过这一类“顾问”吧？<br>

**段永平：**&#x6240;谓的“顾问”只能在如何把事情做对的地方教你一些技巧的东西。这 些东西虽然也很重要，但前提是你一定要先知道什么是不对的事情，不然他们是 可能把你引到死胡同里去的。（2017-08-22）

02\. 网友：段总：我认为“茅台拓展多个子品牌和建五星酒店”不妥。请问我的 思路不对？&#x20;

&#x20;**段永平：**&#x5EFA;酒店显得有点愚蠢，希望不会继续。多个品牌看起来也不太明智，但          不了解具体情况。（2013-02-24）

网友 M：建酒店是集团公司的事情，跟股份制公司（上市公司）无关。至于多个 子品牌，也有很多是集团公司的。

**段永平：**&#x54E6;，是集团的，那会有点不同。不过集团搞多个子品牌也不是很明智。 我觉得茅台最重要的事情可能是打假和防假。茅台实际上是很有条件基本杜绝假 货的，不太理解为什么会有那么多假货。现在 IT 技术这么发达，茅台飞天绝对 有条件可以让每一瓶真酒都有自己的身份证的。（2013-02-24）

网友 K：一直不明白为什么要避免多元化，另外，可口可乐不也有多个子品牌么？

&#x20;**段永平：**&#x5F88;少有公司能够做好“多元化”的，尤其是那些为了多元化而多元化的 公司。子品牌是不同的概念，一般是在其能力圈内。茅台出 53 度飞天以外的白 酒或许有一定的道理，毕竟还是在白酒的行业里，但如果做别的酒，比如葡萄酒      或啤酒就有点怪了。（2013-02-25）

网友 D：段总说的“茅台啤酒”问题，其实国内这样干的企业太多了，我也觉得 太荒谬了，一个稍微理解品牌的公司都不会这么干。五粮液也雷同，上他们的官 网去看几十个品牌的酒，把五粮液三个字翻来覆去变化了好几个品牌出来，不过 最雷人的还是霸王洗发水推出的“霸王凉茶”。第一次看到它的电视广告简直被 震惊了。（2013-03-26）

网友 S：不知道茅台会不会趁行业低迷做一些收购？段总如果是您会考虑并购 吗？

&#x20;**段永平：**&#x6211;认为茅台应该做减法而不是加法。好像茅台正在做的也有点这个意思， 慢慢地把非 53 度飞天的酒分出上市公司。（2014-03-25）

&#x20; 网友：段总，怎样才能改变茅台在中国人心中的地位啊？

**段永平：多推一些便宜的非 53 度酒，包括茅台啤酒和红酒，甚至茅台米酒啥的， 以及茅台矿泉水，茅台酒店，茅台手机，茅台空调，加快推出的速度，五年出 厂的规矩也不要了，假酒也不管……十年后， 茅台的地位就应该彻底不一样了。**

（**2015-02-16**）<br>

网友：段总水平高，除了茅台手机，茅台空调，其他都会有的。茅台机场，茅台 文化中心，茅台生态园区，茅台旅游园区也会有的。茅台留了很多钱，总要发展 嘛，不然钱有什么用？管理层能力怎么体现？

**段永平：**&#x5730;方的东西可能是不得已而为之的，冠名的东西有时候也说得过去。最 怕茅台扩展产品线，不过似乎目前还比较清醒，在减掉一些不太合适的东西。

（2015-02-16）

网友：对于茅台的金融布局段总如何评价？ **段永平：**&#x589E;加股东风险的有效办法。希望只是有限的很小的风险。（2017-08-14）&#x20;

03\. 网友：阿段，虽说没有见过你，但是步步高、OPPO 的双牌运作超出我想象 的成功，这点上敬佩你的远见。竞争反而使两个牌子的手机都做得更好了。

&#x20; **段永平：**&#x5176;实我们没有双牌运作的问题。我们这就是两个不同的公司，完全不同 的人，但正好在手机这个产品上重合了。他们面临的竞争也是市场上所有的品牌。

（2010-05-10）

04.网友：品种越多，占用的渠道库存越大---是不是说会给经销商增加负担？

**段永平：**&#x7ECF;销商的负担难道不是自己的负担？怪不得有人为了 2015 年成第一而 向经销商压货呢。（2011-04-09）

**6.品牌保护**

01.网友：段总，我发现那些仿步步高 I6 青花瓦这一款手机，外观看起来什么都 仿得很像，但是犯了一个低级的错误就是把 BBK（步步高）这个商标弄成 BBG。 **段永平：**&#x73BB;璃是玻璃，钻石是钻石。把玻璃当钻石买的人实际上也很值得同情。 无论怎么仿其实都是违法的，只是政府力量现在还抓不过来这些事而已。（除了 假冒商标外，近似侵权也一样违法）

在美国碰到这种事处理起来真是很方便，只要证据全，几乎就是一个电话的事。 所以在美国假冒的人成本巨大，风险很高。我们中国要到那个地步可能还有很长 的路要走（国内假冒成本太低，几乎有点鼓励的意思，对国家的长远利益的伤害 实在是太大了）。（2010-06-17）

02.引用：乔布斯与史玉柱：死的伟大生的光荣

乔布斯的去世在中国引起的惋惜与反思，远远超过他的家乡美国。这种对乔布斯 的投射让大家发现，我们这个号称“世界经济救世主”的盛世其实缺失了一个主 角，那就是企业家的创新精神。 如果我们跳出对企业家个人英雄式的价值判断， 把“乔布斯投射”……

**段永平：**&#x6700;讨厌这种自以为喝了几天洋墨水的狗屁专家出来指点江山了，中国出 不了乔布斯是史玉柱（之流）的错？我们的企业家们经常连品牌被仿冒都对付不 了，就更不用说保护创新了。有点常识好不好！（2011-11-03）<br>

03.马云：平头哥跟人打架无所畏惧（2018-09-20）&#x20;

据了解，“平头哥”是蜜獾的别称，号称是“世界上最无所畏惧的动物”

在今天举办的 2018 年夏季达沃斯新领军者年会上，马云谈及平头哥半导体有限 公司时表示，“我对平头哥比较感兴趣的，太牛的一个，就是跟人打架，无所畏 惧，别告诉我对手是谁，也别告诉我多少人，告诉我时间、地点就行了。我这个 人，我从来不怕。”

**段永平：**&#x60F3;起那个面对一堆偷井盖的大汉还敢大吼一声的马云。每当想起这个时 刻，我心里总有一丝感动。马云内心深处是有个江湖的，他就是那个武林高手哈。

我自己不确定如果面对几个大汉我敢大吼一句。我从来没有面对过那种情景，所 以真的不知道。我个人直接面对过的最需要勇气的大概就是打假了。在小霸王早 期，我们刚刚推出小霸王时在广州就有人假冒我们的商标了，当时公司的法律顾 问不敢去管，我就只好自己提个包，假装买货的人去卖假货的地方订了一批货并 让他们送到火车站以便人赃俱获。当时执法部门很给力啊，不然我就跑不掉了哈。

（2018-09-20）

网友：看来段总的勇气不比马云少啊！假冒商标的事是不是“广州佬”告诉你 的？

**段永平：**&#x6211;那个不一样，我没有选择的余地。马云是可以选择离开的，我们当时 规模还很小，只能面对啊。大概是 1991-92 年的事情。（2018-09-21）

## 二、营销

（外界）有个误解，以为我们很看重营销。其实对于我们来说，营销一点儿都不 重要，最重要的还是产品。没有哪家公司的失败，是因为营销失败。公司失败， 本质都是因为产品的失败。当然我不是说不要营销，事实上我们营销做得很好。 营销，就是用最简单的语言，把你想传播的信息传播出去（给你的用户）。

我这里是要强调，营销不是本质，本质是产品。营销最重要的，就是不能瞎说。 企业文化最重要。广告最多只能影响 20%的人，剩下 80%是靠这 20%影响的。营 销不好，顶多就是卖的慢一点，但是只要产品好，不论营销好坏，20 年后结果 都一样。（2018-09-30）

**问答 1.营销**

01\. 网友：都说您是营销高手，能否传授下营销方面的知识啊？

**段永平：**&#x8425;销很简单，就是把好东西卖出去。长期来讲，不好的东西谁也没办法 卖得好。说我是营销高手的说法纯属误传，这世界号称营销高手的多了去了，但 我不觉得我是其中之一。顺便说下，我见到的大多数“营销高手”都过于注重营 销了。呵呵，我这个“营销高手”快有 10 年不知道我们公司的营销都在干嘛了， 这样的“高手”不多见吧？（2010-03-18）

02.网友：好的名字，是营销成功的关键啊！

**段永平：**&#x5173;键是产品！营销远没有你想的那么重要。比如茅台的营销不算非常好， 不然会更厉害的。（2015-04-05）

网友：关键是产品要好，要符合消费者需求！好的名字，也是好产品很重要的一 部分哈，那些做 2 好的产品，大多都有一个好名字。国酒茅台，酿造高品味的生 活。第一次看见，牢牢记住了。

**段永平：**&#x6D;icrosoft，panasonic 都不是啥好名字，Sony 是好名字。（2015-04-07）

03\. 网友：销售人员最后成了公司的经营者，而不是产品经理和工程师。狠！想 起一些说法：格力电器好是董明珠很会搞销售；步步高好是段总是营销高手，脑 白金好是因为史玉柱广告打得好......另外的说法：格力掌握核心科技；好产品

（品质）是设计出来的；脑白金卖了十年了；不要卖自己不想要的东西...... 确实，好产品不是卖出来的，销售做得好的人首先是会选择产品而不是能说会道。

（都是跟段总学习的）我们相互诚实到残酷的程度。很震撼！如此文化！<br>

**段永平：**&#x522B;人我不知道，但说我是营销高手则绝对是源于误解。我从来没学过怎 么营销，我们一直做的所谓营销只不过是想办法如实告诉我们的消费者我们的产 品是什么、怎么样之类的信息。千万不要以为会打广告就是营销。会打广告的多 了去了，几年一过大多数都不见了，为什么？**所谓营销对于一个公司来说只是一** **个环节而已，相当于木桶的一块板，凡是认为公司好是因为营销好的说法其实 就像认为一个能装水的木桶是因为有了一块叫“营销”的木板一样可笑。**

（2011-10-25）

04\. 网友：中国有决断力又舍得在广告营销上下大手笔的人，史玉柱、牛根生俺 都看过很多资料。但是如果没有亲自创立公司，运作推广一个品牌，根本无法学 到精髓。牛根生 11 年前带 12 个人出来创立蒙牛股份，只有 1300 万资金没有工 厂，到东北找奶厂代工。居然就那么舍得在品牌推广上下成本。品牌在内蒙古做 到第二的时候，也迅速找到了几家风险投资投入巨资，签下对赌协议，为 2003 年上市做准备了。一般人没有这样的胆量，就算有恐怕也驾驭不了发展这么快速 的企业。

**段永平：**&#x5FEB;速会翻车的。史玉柱，牛根生都不是舍得在营销上下“大手笔”的人， 他们不过是花他们觉得该花且花得起的钱而已。“敢”下“大手笔”的那些公司 好像都不见了。（2010-04-23）

05\. 网友：想请教您一个有关花钱的问题。步步高在十年厂庆纪念晚会上，请到 了央视著名主持人朱军和小丫，以及当时一些演艺界的明星大腕，估计要花不少 的钱；步步高还专门请过美国著名管理咨询公司给企业做过咨询，估计也会花不 少的钱；为了全球化的品牌商标 OPPO，你们又花巨资请国外机构在全球各地区 做语音语义测试。这些年，企业为了解决一些问题，肯定还有许多不为外界所知 的巨额花费。我想，你们事先在研究（讨论）以上这些项目的支出时，会不会有 不同的声音嫌花的有点多。 我想请教的是，为了解决问题，花钱时都有什么讲究？或者说，花钱时，不要犯 哪些错误？

**段永平：**&#x6211;们公司从来都是花自己的钱，连有息贷款都没有，怎么可能会乱花钱？ 你花自己钱的时候就会知道需要有啥讲究了，至少你会从经验教训中学会的。不 过，用花钱的说法其实是有点怪的，**公司的运营里我们一般叫投入。投入是和产** **出相关的，会经营的人自然是会算账的人**。（2019-03-20）

06.网友：在学校读市场营销时，书里都是举出行业竞争激烈，各公司产品高度 同质化，提出差异化营销，为产品找卖点。记得叶茂中的书里特别强调的是营销 策略，看了他很多书，受他的思想影响比较大。

**段永平：**&#x8425;销对公司来讲只能锦上添花，千万别夸大其作用。（2010-04-21）

07\. 网友：董姐这样说过：“至于营销，我们如果把营销作为仅仅是一个买卖关 系，跟消费者只是一个交易的话，我们中国是走不上世界舞台的。格力电器营销 这么多年来，坦率地说是没有绝招的，唯一就是两个字—诚信！实际上，我们就 是围绕着诚信两个字做营销。营销上不是说你喊你是什么品牌，是因为消费者他<br>

是要有一个体验过程，而格力电器是靠着口碑的长期积累至今。”格力是很讲原 则的企业，段总说过：“做正确的事重要一点就是不做违反原则的事。”可以这 样认为格力是在正确的路上行走，是吗？

**段永平：**&#x975E;常同意董姐的说法。（2010-09-22） 08.[引用：三星新广告挑衅苹果:你无法阻止的平板](https://xueqiu.com/S/AAPL/20589704)

据报道，澳大利亚联邦法院上周推翻了对三星 Galaxy Tab 10.1 的禁售令，使得 这款产品在圣诞期间得以在澳大利亚销售，这也是三星在苹果诉讼案中取得的一 次重大胜利。 三星推新广告语:苹果无法阻止的平板(图片来自 Engadget 科技播 客) 三星本……  &#x20;

网友 Y：营销嘛，很正常，耍点滑头都是应该的。

**段永平：**&#x62FF;这个说事比较无趣吧？有本事和苹果卖一个价试试。耍滑头的结局都 会是“杯具”。（2011-12-16）&#x20;

09.网友：【上海星河湾大幅降价 补偿老业主超 6 个亿！】据传，浦东、上海星

河湾将以 8-85 折或更大优惠进行降价，并对老业主进行超 6 亿元的差价补偿。 星河湾地产副总裁梁上燕表示，本次礼献三节主要是为了回馈业主，补差价是对 于业主是极其负责任的做法。不知道能否请[@大道无形我有型](http://xueqiu.com/n/%E5%A4%A7%E9%81%93%E6%97%A0%E5%BD%A2%E6%88%91%E6%9C%89%E5%9E%8B)  兄指点……

**段永平：**&#x5982;果卖的时候有承诺就应该这么做。对房地产这么做是啥意思不太明白。 如果是表示以后也会这么做就很好，不然就是噱头。噱头的东西未来都是要吃苦 头的。（2011-12-17）&#x20;

网友： 没有承诺，星河湾是中国最高端的房地产品牌，擅长在普通的地段打造 最高等级的产品，价格比附近的楼盘贵一倍以上都很常见。大道的意思是现在这 么做实际是就对未来的业主隐含了承诺，如果仅仅当噱头未来会遭到更加强烈的 反抗？假如你是这家企业的高官你会选择补偿过去的业主吗？

**段永平：**&#x6211;会不会这么做取决于是否这么承诺过。在地产这个行当我没概念，直 觉觉得不应该承诺，因为不应该把自己的信誉压在无法控制的事情上。这个做法 有一天会信誉破产的。当然，很多人并不在乎“有一天”这种事。（[2011-12-17](https://xueqiu.com/1247347556/20592675)）

10.网友：在中国，买苹果的人，都是把苹果当成一个标配的时尚品罢了。这和 当年一部手机上万元，中国却买者甚众，是相同的道理。苹果最后会发现低估了 中国人对苹果手机的购买能力。

**段永平：任何产品开始时跟风买的都是大部分，但最初懂的那 20\~25%的人最关 键**。（2012-04-26） &#x20;

11.网友：千万不要认识错，中国很多消费者还不够理性的。 **段永平：**&#x6211;还真认为你可能认识错了。<br>

作为一个群体，消费者绝对是理想(性)的。但这种理性不是每时每刻体现在每一 个消费者身上。他的体现会表现为不好的东西最后一定不会卖得好！不过，这并 不会让好东西自然变得好卖。好酒也怕巷子深啊。（2010-03-24）

12\. 网友：企业的运营跟健康蛮像的，段老师也老说健康度。道理是一样的，很 多企业营销部门很牛，广告满天飞，但是生产管理很烂，发生癌变了，最后的结 果就是健康的发达的部分一定会被癌变的部分拉下来。

**段永平：什么企业的营销部门可以很牛？苹果大概也不会吧？好企业的营销部 门是不应该很牛的，当然，别的部门也不会。（2010-11-28）**

13\. 网友：马云思考问题确实独到，也佩服他的成功经历。可一段时间以来阿里 巴巴的销售员给我的感觉却不好，强行营销。在我明确表示暂时不需要通过电子 商务销售，并耐心解释原因的情况下，不预约拜访，强行要求会谈，多次骚扰， 不胜其烦。有损马云与阿里在我心目中的形象。

**段永平：**&#x8FD9;个确实不好，有待改进。（2011-10-02） **2.渠道**

01.网友：段总您是怎么看“终端制胜、渠道为王”这个理念的？&#x20;

**段永平：所谓终端制胜的说法就像最后让你吃饱了的那个馒头**。（2012-08-31）

02.网友：在中国，娃哈哈与双汇的网络比可乐做得好，可乐与宝洁一样，只是 在城市市场强势，在农村市场又很可怜了，有点题外话。 [**段永平**](http://nteswjq.blog.163.com/)**：**&#x5982;果农村市场大到一定程度可能就不一样了，还有就是你是用多少年来 看的。双汇的网络现在还很好吗？宗庆后很强，他绝对可以在农村市场对抗可口 可乐很多年，但“很多年”以后呢？（2011-04-08）

03\. 网友：段总，我去年买了一部步步高的手机，质量挺不错。前几天到“步步 高音乐手机”专卖店买了一台豆浆机。今天在陶宝网上看到了跟我买的一样的豆 浆机，要便宜 20%，想问段总，“步步高音乐手机”专卖店是你们的直营店还是 加盟店？在如今网购飞速发展的时代，为何还要大规模开实体店呢？（在深圳到 处都有 OPPO 跟步步高的专卖店）。顺便延伸一下，我看到国内一家券商的研究 报告说，“美国经验表明网购对实体销售影响有限。”我有点搞不懂，B2C 模式 的企业业绩每年都高增长，为何影响有限！段总，您怎么看这一问题？

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x9996;先介绍一个商业的基本概念：绝大部分公司的所谓专卖店或直销店卖 的都是公司的指导价，不大有可能会是便宜的价钱。去专卖店买东西最大的好处 一定不是价钱，而是服务和货真（网上经常会有假货，价格非常便宜）。我估计 步步高的专卖店应该都是在公司的原则指导下由各级代理商开的。网购确实在飞 速发展，但整体比例依然还小，大部分公司还是需要实体店才能生存。

（2011-03-27）<br>

04.网友：地区唯一代理商制度是不是阿段的发明、创造？  如果是，你是怎样想到的；如果不是，你是从哪儿学来的？反正，在阿段以前， 我没有发现别人用，基本上是走商场渠道，没见什么唯一总代理。还有，在建立 唯一总代理制度的同时，阿段也尝试过建立直销部，未久，取消。

&#x20; **段永平：**&#x6211;不知道是谁发明的，我们只是为了解决自己当时的问题。这套办法在 很多年里都是我们的优势，但在 internet 年代，我们这个办法会遇到巨大的挑 战和威胁。也许在不久的将来，我们会为了继续生存慢慢或快快地进行或大或小 的变革。我们不应该让重要的事有一天变成紧急的事。（2012-03-24）

&#x20;05.网友：烦问段哥对“网上店铺”有何见解，或问“网上店铺”和实体店铺有                  什么真正的区别，孰优孰劣？&#x20;

**段永平：**&#x82F9;果店是“网上店铺”还是“实体店铺”？（2011-05-24）

06\. 网友：向学长请教一个有点儿幼稚的问题。我发现身边很多赚大钱的人都是 做某某（比如红酒、挖掘机、安全套等等）“中国区总代理”的，看起来钱特别 好赚。比如有个叔叔做某日本挖掘机的代理，据他说每年就有稳定的两千万美元 的现金流进，而且看他还挺闲的。“代理”这门生意是个什么特点的生意呢？是 不是只有已经财大气粗的人才可以做？我在北美留学的时候曾经和一个同学到 加拿大的一个酒庄打听可不可以做他们的冰酒的代理，被人家笑着就敷衍出来 了，仿佛我们说梦话似的。比如您的产品的代理商都是找什么样的条件的呢？

&#x20;**段永平：**&#x4F60;觉得如果你找代理会要什么条件？你先设一个才能明白别人需要啥。 有时候逆向思维会很有帮助，但大多数人不习惯。（2011-03-06）

07.网友：我认为步步高公司的“护城河”是渠道掌控，另一个优势就是对中国 消费者的深刻洞见。请平哥指点。

**段永平：**&#x4F20;统渠道的重要性会随着 internet 的发展而变得越来越小，但负担会 越来越大。如果我们“渠道”上不能变革成功的话，我们就会有大麻烦。

（2012-03-30）

08.网友：我们公司是一家很小的电器企业，产品技术和产品品质在行业中处于 领先地位，但由于进入市场时间短，在网络拓展方面一直做得不是很好（代理制）， 请问有什么好的办法，请赐教！

&#x20; **段永平：**&#x6CA1;什么好的办法，只能慢慢来。我们用的也是代理制。你要觉得代理制

不好，那就试试别的办法，比如开分公司等等。过些年你也许会发现分公司可能 更难。（2010-05-23）

09.网友：您对电商行业怎么看？&#x20;

**段永平：**&#x548C;别的行业一样，有好的企业，也有烂的企业。严格讲，“电商”只是 手段或工具，不能叫做一个行业。未来无法适应电商这种工具的企业多数都会面 临生存问题。（2014.09）

10\. 网友：现在越来越多的公司都开始上微博了。你们公司微博营销了吗？你对 这个趋势怎么看？

**段永平：**&#x5FC5;须的！（2012-03-28） **3.产品定价**

01\. 网友：淘宝目前正在运作电器城，可是电器城的卖家却是经销商，而京东却 是直接向厂家拿货的。这个怎么能够竞争得过京东呢？

**段永平：**“厂家”货一定便宜吗？能想明白这个问题其实也不容易。

网友：您的意思是否是指：经销商采购量不够的情况下，厂家给的出厂价是比向 大经销商采购还要高的？的确如此，这个是现实的商业状况。但到最后肯定是更 好的商业模式、或模式一样更好的管理导致卖得更多。以电器城为例：淘宝借平 台之优势，整合一帮卖家来经营的模式，能否做得过京东自营的模式？个人一家 之言，整合的难度比较大，可能搞不过自营模式。

**段永平：卖得多就给得便宜的办法是对销售非常短视和初级的理解，尽管很多 大公司也这么做**。（2010-07-06）

网友：我想了一下，不知道对不对，请段总指点：聪明厂家需考虑所有经销商的 利益，不能偏袒。所以价钱不会便宜。

**段永平：**&#x5DEE;不多吧。看看当年戴尔和康培的关系也许就明白了。（2010-07-06） **段永平：**&#x4F;PPO／vivo 没有销售部（因为不需要谈生意）；不单独和客户谈价钱

（所有客户一个价，省了双方非常多的时间和精力，10 年 20 年加起来很恐怖啊）。

（2018-09-24）

&#x20;02.网友：有一个问题想听听您的看法“：“家电零售业在价格上，是标高一点 再讲价呢？还是标价就是卖价不讲价好点？”

**段永平：任何东西都是标实价不讲价的好**。可以讲价实际上对卖家而言是个非常 短视且成本很高的行为。成本很高指的是无法授权且容易造成管理漏洞，短视指 的是如果可以还价，那就是在鼓励回头客来讨价还价。对于客户而言，任何讨价 还价都会让他们有可能吃亏了的感觉，因为客户很可能觉得价钱还没还够。

（2015-06-12）

**段永平：**&#x8FD9;里透露一个小机密：我们公司卖东西是没有还价空间的，所有的客户 都是一个价，不管生意大小，生客熟客……刚刚开始经营企业时我就发现，所谓<br>

谈生意谈来谈去主要是在谈价钱。人们把大量时间放在谈价钱上，而且在谈的过 程中经常还需要诈来诈去的。对于卖东西的业务员来说，价钱的授权是件非常困 难的事情，所以他们总是要找更上一级领导去获取更多授权，所以领导就会变得 非常忙且没有效率。所以我们在 20 多年前就没有讨价还价了。不讨价还价的好 处实在是太多了，大家慢慢想哈。（2015-06-12）

&#x20;03.网友：有个问题想了很久也没搞清楚，只好请教段总，像茅台对经销商限制 最低和最高零售价这种行为对企业会有什么好处呢？一般会产生什么影响？

**段永平：**&#x5047;设你想做个百年老店，你也许能想明白。（2013-02-23）

&#x20;04.网友：段总如果厂家根据市场情况制定了产品的出产价，那就应该是考虑了 代理商的利润，也赚到了自己应该得到的利润。至于代理商的出货价格只要不是 恶意竞争，厂家就不应该限制。让市场来反映产品竞争力这样应该比厂家设定产 品零售价格的上下限通畅一些，而且也少了监管成本。

**段永平：**&#x5475;呵，你用长期来想就知道你这样不是最好的办法。看看苹果就明白为 什么。（2012-05-05）

**4.关于参展**

01.网友：前几天去了趟广交会，是第一次，好奇之下就搜索参展商看看有没有 学长的企业，发现没有，而且很多国内的名牌都没有，但是有格力的。想请问一 下学长，您以前公司小的时候参加过广交会吗？小公司的新产品用什么方式推广 是您认为最有效的？

**段永平：**&#x6211;们不去任何这类展会的，包括拉斯维加斯的 CES。这种推广的办法对 推广品牌事倍功半。小企业一旦开始用这个办法找生意后，很可能就会很难发展 品牌了。（2013-10-27）

网友 D：是因为企业会把注意力主要放在营业额上了吧。行为就会偏离原点了吧。

&#x20;**段永平：**&#x5982;果我这么说了你还是不懂的话，怎么说你都不会懂的。自己慢慢想个  几年也许就能明白的。（2013-10-28）

网友 l：参加展会，我的理解会出现迷失，因为会发现别人有很多东西很新很好， 那么就想也学过来，这样会从客户需求上迷失；如果真的达成生意的话，那么会 迷失不再去关注用户需求，只需关注大客户订单需求，我是这么理解。

**段永平：**&#x6211;说的是我们公司的产品不摆展，人还是应该去看看的！（2013-10-28） 02.[快讯：报道称微软将向国际消费电子展说“不”](https://xueqiu.com/S/MSFT/20606838)<br>

（i 美股讯）据美联社报道，微软公司周三表示，2012 年美国拉斯维加斯国际消 费电子展（CES）将是该公司最后一次参展 CES。报道称，微软将会在自己的发 布会投入更多精力。

**段永平：**&#x5FAE;软终于明白去 ces 是件费力不讨好的事情了。苹果早就明白了，我们 公司也算一开始就知道地。现在还有很多国内公司每年在 ces 劳民伤财，希望他 们能再想想。

03.网友：网易拒绝参加文博会（是想做成 ChinaJoy 中国国际数码互动娱乐展览 会），也有个性。&#x20;

**段永平：** 呵呵，我想网易是对的。（2011-12-22）&#x20;

&#x20;**5.饥饿营销**

01\. 网友：段总，（苹果产品）是不是可以理解为另一种“饥饿”营销。

**段永平：**&#x8BF4;苹果饥饿营销的人根本就不知道什么是营销。那是个“专家”编出来 的名称。（2011-04-27）

02\. 网友：你觉得真有"饥饿营销"这样的事情吗？ 我总不能相信一个公司原来 可以卖很多货会故意控制销售速度制造饥饿。

**段永平：**“饥饿营销”是那些所谓的不懂销售的市场大师们编出来的，现实当中 没这个东西。苹果的东西给人这个感觉确实是因为供不上货。我见到最早这么卖 东西的是任天堂。（2011-05-07）

03.网友：今晚在超市看见 OPPO R9 的广告有一点耳目一新的感觉，去问服务员 多少钱，2799 元，缺货，预定后三天到货！这绝对不是饥饿营销，有想买的欲 望！

**段永平：**“饥饿营销”这是个不懂营销的人才懂的一个词。（2016-04-15） **6.市场调查**

01\. 网友：iPad 上市之前，苹果公司的 CEO 乔布斯和媒体记者在一起。有好事 者问：在开发新产品时，苹果做了什么样的消费者和市场调查，这些调查起了什 么作用？“我们没有做任何调查”，乔布斯回答说，“知道自己想要什么，不是 消费者的工作。” 请问段总，如何理解乔布斯的话啊？

**段永平：**&#x4ED6;说得很对，因为他知道消费者想要什么。知道消费者想要什么是一件 非常困难的事，没听说市场调研可以解决这个问题。市场调研只能够帮你印证你 的想法而已，你如果自己没想法市调是绝对没用的。其实苹果还是会做一些市调 的，比如偶尔放点消息出来看看反映什么的。（2011-02-26)<br>

02\. 网友：一直想问个问题，对市场调查的看法？我一直不相信市调公司的数据， 他们为钱做的数据在我看来一定会有偏差。更相信自己的直觉；国内应该都有这 个毛病吧？我不知道是对是错。

**段永平：**&#x5E02;调公司应该是中立的，是否有偏差取决于水平。你如果把问卷完全交 给市调公司设计的话，得出的结论容易出偏差。我的观点是，市调结果是用来验 证你的直觉的。如果你的直觉已经很清晰，其实用不着市调。但当你觉得没把握 时，市调有时能帮很大忙。(2010-03-23)

03\. 网友：媒体说在手机领域排行榜上，摩托罗拉高居榜首，HTC、索爱和诺基 亚分居 2 至 4 位，苹果排名第 5。在 PC 领域排行榜上，惠普排名第一，苹果位 列亚军，戴尔为第三名。在消费电子领域排行榜，索尼排名第一，三星、松下、 LG 分别位列 2 至 4 名。而苹果并未在该选项中出现，是不是可以理解为苹果的 空间还很大？

**段永平：**&#x5927;概大部分美国人已经不认为 iphone 是手机或是调研机构的问卷有问 题吧？这种调研和企业的市场调查一样，如果问卷设计得不好，则没办法得到想 得到的东西。苹果的营业额应该也超过 sony 了，但人们也可能不把苹果当消费 电子了。不过，苹果在 pc 里排到第二倒是有点意外，说明这些年 mac 确实起来 了很多。（2011-04-14）

&#x20; **7.国际化**

01\. 苹果新传奇的中国启示：国际化成关键

程实走出去成就苹果传奇 NBA（篮球俱乐部）有句名言:“永远不要低估一颗总 冠军的心”，在大浪淘沙的商业世界，这句话则可以换作:“永远不要低估传奇 公司自我超越的勇气”...

**段永平：**&#x600E;么会得出这么个结论？。 不过，国际化的定义很含糊，如果国际化 指的是学到世界上的好东西的意思就没问题，如果是指的拼命到别的国家去做生 意的话，对中国绝大多数公司而言还是蛮危险的。（2012-05-03）

**附录：段永平给营销人员讲话全文**

&#x20; 原文:

各位同事，欢迎加入步步高公司营销人员的行列，成为这个大家庭中的成员。作

为步步高的营销人员，希望你们热爱本职工作，执着于这一事业，成为步步高事 业前进的排头兵。在这里，有必要让大家了解我们这个企业的理念和精神。 我们做企业最根本的东西，就是本分。

&#x20; 说话要算数，是一种本分。守信誉不是给人看的，为了一个承诺去赔钱，可能很 多企业家会赖账，但我会毫不犹豫地践诺。我曾经为一个承诺赔了 1800 多万元。 客观地讲，信誉是一笔巨大的无形资产，守信誉能带来巨大的收获，步步高发展<br>

到今天，正是得益于良好的信誉得到股东的支持。我觉得好汉应能吃眼前亏，吃 了眼前亏将来才不会吃亏，有的人看上去很聪明，算得很精，甚至能骗钱，但他 赚不着大钱。只有智慧的人才能挣大钱，他不会去玩手腕，不会去骗人，而这种 企业家往往能将企业做大。

&#x20;企业不要什么钱都赚，这是一种本分。企业应该有道德，有自己的原则。有些生 意哪怕再赚钱，如果违背自己做企业的原则，那我肯定不会去做的。企业不能不 赢利，但赢利应该建立在对市场的准确把握的基础上进行合法经营。如果什么钱 都想挣，这种企业永远也长不大。企业挣钱固然非常重要，但挣钱的过程更充满 了乐趣，如果挣钱就是目的，那目光就太短浅，这种企业很难长大。做企业要有 责任感，而不是简单的为了赚钱，赚钱只是一个过程。企业存在要有价值，比如      为社会创造财富，提供就业机会等。

企业不是什么事都做，这是一种本分。也就是遵循“焦点法则”，把 80%的精力 放在 20%的事情上，那么 20%的事情会带来 80%的效益。有多大能力做多大的事， 而不是有多大的胆量。实际上每个企业的资源都是有限的，包括人力、物力、财 力，把这有限的资源用到无限的投资方向上去肯定要出问题，有的企业什么都在 做，但都没有什么特点，你不知道它到底是干什么的。这种企业的问题也许短期 内不会表现出来，但将来很麻烦。必须要集中优势兵力打歼灭战，即在一个企业 中实现焦点化，集中一个行业中最尖端的技术开发出最尖端的产品。企业就那么 点能力和规模，不可能再分散资源，我不相信有天上掉馅饼的事。

&#x20;要老老实实做事，是我们做企业的准则。做企业其实非常简单，没有什么花拳绣 腿，最厉害的招数是没有招的招，一拳打出去，非常朴实。我觉得也跟做学问、 搞科研一样，勤奋和坚韧都是非常重要的，爱迪生关于成功的公式：99%的汗水

加 1%的灵感，这里同样适合。必须老老实实做事，做企业就像长跑赛一样，唯 有老老实实保持匀速前进，不偷懒、不投机者才不会被淘汰。一个企业在成长过 程中，随时都可能遇到困难和挫折，有时甚至是灾难性的打击，但企业家必须能 扛得住，绝不能放弃自己的追求，很多人老是埋怨自己的运气不好，在逆境中沮 丧，甚至走向颓废，这实际上是意志品质不够好。企业家应该有一种精神，百折 不挠，方能制胜。

&#x20; 要处理好企业的利益链。一个企业都有一个利益链，供应商也好，批发商、零售 商也好，消费者也好，都是利益链中的一环。就企业内部来说，从高层管理人员、 中层管理人员一直到基层的工人，都有其利益要求。俗话说，有钱大家赚。各方 面的利益处理得好，这利益链就会运转正常，如果某一个环节出了问题，那么就 会一损俱损，因此每一个环节都不能忽视。

&#x20;要敢为天下后。我觉得敢为天下后对较小的企业尤其重要。我们实力本来就不强， 很难跟世界级的大公司相比，因此，我先看人家国外大企业做什么产品，而且要 看它什么产品好卖，然后我再做什么，这样成功的几率要大得多。其实，先与后 是相对的，暂时的。进入市场有先后之分，这只是竞争的开始，后来者确有不利 之处，但超越前人本身就是巨大的动力和目标，而且在更后面看清对手和市场，<br>

更容易看到，自己的差距，也更容易少走弯路，只要能找到突破口，就可以集中 优势兵力，快速切入，快速跟进，后来居上。

&#x20;不攻击对手。我觉得互相攻击是种不健康的行为，做企业要有点风度，攻击对手 恰恰是没有自信的表现。心态上要沾染这些东西，纵然一时得手，将来总是要摔 跤的。靠攻击别人过日子，是得不偿失。其实，每个企业都有自己的长处，也有  自己的短处，宣传自己的长处就行了。

&#x20;我一直这么认为，一个企业的失败，企业家要负主要责任；一个企业的成功，功 劳肯定是大家的。我们的企业的成功与发展需要各方面的人才，给大家提供充分 施展才华的舞台，提高我们的专业化水平和企业的素质。市场竞争的背后其实是 人才素质的竞争。企业的发展，需要我们的人才队伍不断壮大。

我们正在处在一个竞争日趋国际化的时代，我们的企业面临更为严峻的挑战。与 跨国公司这些重量级的企业相比，我们还是一个弱者，我们在资金、技术、管理、 经验及产品开发能力上都必然要逊一筹。我们要不断努力缩小与他们的差距，提 高我们的专业化水平和整体素质；我们要把企业做大，把它培养成为世界级和重 量级的选手。为此，需要大家励精图治，共同努力，共同奋斗。

谢谢！

**段永平：**&#x5927;道不记得什么时候讲的了，但内容看着像。至少应该是 20 年多前的 事情了吧？（2019-09-26）

## 三、广告

广告只是把产品的功能发掘或展示出来，而不是赋予产品功能。广告是效率导向 的，就是把产品本身用尽可能高的效率传达给你的目标消费群。最不好的广告就 是夸大其词的广告，靠这种广告的公司最后都不会有好下场，因为消费者长期来 讲是个极聪明的群体。

广告能影响的消费者大概只有 20%左右，其余全靠产品本身。（2010-04-21）

**问答 1.内涵**

01\. 网友：我觉得 OPPO 用广告来制造产品做得很成功。这个时代，产品已不仅 是那些功能了，广告策划师也在制造产品。这方面 OPPO 走得很前沿。

**段永平：**&#x8BB0;得我读 EMBA 时有个诺基亚的同学就说过，步步高就是靠广告起来的， 我回答说，对，和诺基亚一样，都是靠广告。她说，诺基亚可不是光靠广告，然 后我说，那你凭什么说我们是靠广告啊？MBA 可不能白学哦。 这里讲个最基本的广告概念：广告不会赋予产品任何东西。广告只是表达产品而 已，好的广告表达的效率高。一个好的广告的制作是非常不容易的，而且大多成 本很高，不了解的人很难想象。（2010-10-16）

网友：说得太正确了。可惜国内太多聪明人总想通过营销把白菜卖出猪肉的价格 来，本末倒置。

**段永平：**&#x73B0;在白菜是比猪肉贵了吧？这是个 fact。广告只是把产品的功能发掘 或展示出来，而不是赋予产品功能。没有这个理解，一个企业的广告早晚会出问 题的。（2010-10-18）

02\. 网友：您在步步高工作时，公司决策营销推广方式，确定消费者导向还是技 术导向的市场策略。七八年前我家人买步步高无绳电话还有 DVD 都是因为电视广 告的影响。

**段永平：**&#x4EA7;品的设计当然是消费者导向，技术是隐藏在产品里的，是为产品服务 的。没有很强的技术是无法实现消费者导向的。

广告是效率导向的，就是把产品本身用尽可能高的效率传达给你的目标消费群。 最不好的广告就是夸大其词的广告，靠这种广告的公司最后都不会有好下场，因 为消费者长期来讲是个极聪明的群体。

广告能影响的消费者大概只有 20%左右，其余全靠产品本身。（2010-04-23）<br>

03\. 网友：做广告是否要追求及时的投入产出比，如果做了广告发现效果一般， 那有没有一个时间限制，多久内如果效果还不行，那就决定不做了。对于广告的 投入和产出，大概有一个比较量化的标准吗？

**段永平：**&#x6295;入产出当然是要的，但要看用多长的时间算。越小的生意对回报的及 时性要求越高，不然会撑不住的。好效率的广告是需要很多积累的，没有犯过错 误的人或公司是很难一直有好广告的。

没做过广告或广告规模小的现在最好从搜索广告开始，容易看到效果，知道成本。 我们当年开始时很多时候完全是靠感觉和悟性，有很多悟性差的对手都掉坑里 了。

总而言之，**广告只是 marketing 中间的一个环节，在整个企业经营当中的作用 千万别扩大化，不然很容易掉坑里。酒香也怕巷子深，广告只是让巷子没那么 深的办法而已。如果酒不好还使劲吆喝，那秦池酒就是其必然下场。**&#x6211;没见过 所谓的很准确的量化标准，但好的公司应该都有个大致的准则。（2011-08-16）

网友 T： 3 个月前我们在一个时装杂志上做了一些招加盟商的广告，加上模特拍 摄什么的花了 20 多万，现在 3 个月过去了，就十几个咨询电话，关键是一个有 意向来深圳参观的都没有，这个效果实在是太差了。这个广告下个月就停了，这 个广告我们分析问题很多，我们自己的产品包装也有问题，另外不能光一个模特 可能也要请明星代言才行，再就是媒体发行量可能也没说的那么大，现在还是不 着急，回到之前的开店思路，稳步的慢慢走，另外网络这一块也被我给煽动起来 了，淘宝商城近期也要上线了，先这么弄了，大规模广告招加盟商的时机还不够， 内功还没练好。

**段永平：**&#x4F60;们的这种广告直觉上可能在百度上做效果更好。但你自己首先要有个 不错的网站才行。

**段永平：**&#x600E;么打广告我认为主要取决于你的目标消费群在哪里。其实瞄得最准的 广告大概就是搜索类的广告了，阿里巴巴这方面好像现在也挺厉害的。

（2010-04-23）

**2.概述**

01\. 网友：2000-3000 万美元？那真是够小的了，那时候怎么就没认识段总呢， 真是可惜啊，那时候就感觉段总老是去 CCTV 做标王的，好像广东帮胡志标、段 总、何伯权老是去做标王的。

**段永平：**&#x6211;们从来没做过标王，不知道人们为什么乱讲。（2010-05-28）

网友：1997 年 CCTV 竞标会上，步步高以 8012.3456 万元的价码竞投标的（不难 理解 FASTISLOW 先生拿下巴老午餐会也是志在必得）经超常规发展，1998 年， 步步高投入 1.59 亿元成为 CCTV 实际上的标王。 “敢为人后”“一般是市场做<br>

不好才谈自己是科技主导型！”。1998 年 11 月 8 日林一平先生主持的那场竞标

（没写清楚）感觉是段总让了胡先生一手的，真功夫让了一回好功夫。

**段永平：**&#x5475;呵，那个不叫标王。标王是有定义的。那时候的广告真便宜啊，现在 如果投同样多的钱，估计很难听到响。我们投这种规模广告也是挺辛苦的，但这 种投资很合算啊，现在要难很多了。我们公司投标从来都是很理性的，那是要花 钱的。当然，有些人实际上后来就没付钱，对其他人来讲确实不公平，因为他们 抬高了价钱。（2010-05-28）

02\. 网友：说到成龙，格力请成龙做的电视广告我看是真不咋地，配音是格力掌 握核心科技不是花拳绣腿，画面却是成龙大哥在玩拳，呵呵成龙是演员，那不是 花拳绣腿是什么？明显的不对板。

**段永平：**&#x5475;呵，广东话里“好功夫”就是“真功夫”，普通话里有点区别。

网友 K：胡志标先生的因果是成龙给的？如果段总请成龙给 OPPO 做广告，看会 不会倒？成龙是“广告杀手”，没有逻辑。

**段永平：**&#x6210;龙不适合 OPPO 的广告。 OPPO 的广告非常年轻化。

网友：请教一个问题，企业选择代言人的标准是什么？像可口可乐，步步高等没 有广告部门的企业，是提具体的代言人标准然后让广告公司去弄还是自己去跟目 标代言人接触呢？

**段永平：**&#x4F60;能告诉我人们选择餐厅的标准吗？（2012-02-23）

03\. 网友： OPPO 手机广告（请迪卡普里奥拍的那个），很牛啊，一看有很高档、 很精致的感觉，这在中国公司里面比较少，挺不错的！你自己怎么看那个宣传广 告？

**段永平：**&#x6211;也觉得不错，但产品怎么样还看不出来。（2011-08-17）

04\. 网友：段总做人这么拼，现在又生活在加州，不知道现在和施瓦辛格州长—— 您的产品的代言人，是否还有联系？

**段永平：**&#x8054;系他干嘛？

网友：联系他干嘛？广告没播，你们也是受害者，他老人家就没请您吃顿牛排补 偿一下？他们应该知道你们也是受害者的吧？委屈了！不过马云先生说，男人总 是在委屈中长大，向段总学习了！

**段永平：**&#x5475;呵，你知道的还挺多。马云这话说的，有点大男子主义。谁没点委屈。

（2010-05-28）<br>

网友：呵呵，段兄调侃我啦。马云业务是肯定懂的，大方向没错。段兄做步步高 和 OPPO，不能说不懂业务吧。巴茨拿几千万去打广告，难道不是方向错误？用 互联网的人，还有不知道 YAHOO（雅虎）的？阿里巴巴有些业务是打广告的，但 YAHOO 不同，YAHOO 打广告是乱来啊。

**段永平：**&#x770B;来你是真不懂啊。这个世界谁不知道可口可乐？为什么他们还要打广 告？（2010-06-11）

06\. 网友：马云说长相和事业成反比，喃也很认同。 **段永平：**&#x90A3;要看干什么事业。 网友：看干什么事业，哈哈哈哈哈，笑死我了，段老师你也太幽默了！

**段永平：**&#x4F60;们想偏了吧？当明星的长相很重要啊，哪怕是体育明星也很重要，广 告价值差很多。（2010-07-22）

07\. 网友：呵呵。今天想起了步步高的广告词，记不全了大概记得是：说到不如 做到，要做就做最好，步步高。

&#x20; **段永平：**&#x8BF4;到不如做到。这和广告词的关系好像很微弱。

网友 L：说到不如做到，要做就做最好，步步高；这个广告很多消费者感觉很踏 实，这是我以前客户说，请问段总您当时是这么想到的？

&#x20; **段永平：**&#x522B;人写的词，我选的。

&#x20;网友:《步步高》那个词是您填的吗？最近公司的晚会拿它表演了，不过是手语， 很多公司营销培训都用这首歌，挺激励人的。

&#x20;**段永平：**&#x4E0D;是我填的。后期我们已经觉得这首歌词有点问题，所以现在不太用了， 主要是觉得“付出总有回报”有点不太对劲。你这一说我就更觉得有点问题了，              以后不会让传销公司拿去用吧？

一般来讲确实如此，但很多时候回报不是追求来的。这个说法觉得有点功利性， 自己感觉不太好。（2013-02-25）

08.网友：请问阿段，对于老白干更换定位“从喝出男人味”到“不上头”，这 个算是道的层面和术的层面，感觉老白干非常既希望所谓的营销变化，但从情感 定位变成功能性定位，从我的认知反而觉得会是种退步，且这种更换消费者心智 印象的行为有可能不成功，记得之前李宁更换“90 后李宁”也遇到类似的问题。 这种定位上的变化，是否也会影响到公司内部的架构和价值点，用户心智的定位 是护城河的一部分，但如何判断定位好坏，阿段做营销非常厉害，能否就这个问 题分享一下？<br>

**段永平：**&#x5386;史上有个广告比较“滴滴香浓意犹未尽”和“味道好极了”，你知道 哪一个？另一个现在在哪里？广告想传达什么很重要，似是而非不好。

（2018-08-21）

09.网友：近两年我最喜欢的广告语是：“充电五分钟，通话两小时。”简单明 了，直指要点，郎朗上口。

**段永平：**&#x54C8;，有人说：“充电五分钟，通话三个半小时”，然后他破产了，为什 么呢？（2018-08-24）

网友：用户不是傻子。用户需要的是真实的体验而不是所谓的数据。广告传达的 应该是产品能够给用户带来的真实的体验。如果一家企业首先就没有做对的事 情，还一心想和同行比高低，和用户耍小聪明，广告是把双刃剑（这个比喻真贴 切），广告语若是言过其实的话，吆喝声越大死得越快。

10.网友：看到上海有一个很有意思的广告：“全球市值最大的银行”，银行名 很小，这几个字 N 公里外都能看见，价格投资者哦。如果段总是这个银行的老总 肯定不会这样做广告吧？

**段永平：**&#x8FD9;种广告越多，这个老总当的时间越短。（2010-05-05）

11\. 网友：网络公司纷纷在传统媒体上打广告，腾讯、拉手网、赶集网等都在央 视打广告；高朋、腾讯微博在电梯上广告。觉得是泡沫了。

**段永平：**&#x90FD;打广告也可能说明市场大，大家都看好未来。其实大家都打广告的效 果和大家都不打的效果是很接近的，所以这是个囚徒的困境，我们也常在这个困 境中。

苹果的日子好过多了，有点啥东西出来全世界一堆人哭着喊着地到处说，真羡慕 啊。（2011-04-08）

12\. 网友：步步高和 OPPO 的广告团队是自己养大的吗？还是找了很牛的外包？

**段永平：**&#x5E7F;告制作一定是找行家的，自己做不可能做得好。如果自己能做好广告 的话，世界上最好的广告公司就会是可口可乐广告公司。

网友 S：说起这个问题，我倒是有一个小小的反例，三星电子，我听说他们的很 多广告都是自己公司的广告部门的。

**段永平：**&#x4F60;可能讲的是对的，好像对三星的广告从来就没有记忆，确实是个很好 的反例。

网友 X：我问的有点儿歧义，其实不是指制作部门，而是说那个决定往哪儿投广 告、投多少广告费、请谁来做广告的部门。花这么多钱，应该算是很大的战略动<br>

作，操盘的人是 CEO 自己吗？还是营销负责人？还是请一个像李光斗这样的“外 人”？

**段永平：**&#x5E7F;告只是日常经营的一部分，CEO 当然会花很多时间，mkt 部门也要花 很多时间的。广告就是用尽可能高的效率把想传达给目标消费群的东西传达出 去。请某种外人就是和自己过不去，不会有任何帮助的。（2011-06-16）

13.网友：是不是开始做企业都是这样的步骤：1，先花很大的功夫做消费者和市 场的分析，确定要做的一两样消费者会喜欢的产品。2，然后把严格控制质量的 产品放出去试探消费者的反应。3，反应良好的话，扩大产能，并在主流媒体上 重拳出击，毕其功于一役。我完全纸上谈兵，但是不知道是不是这个路数？ 是 不是这两年就会见到 OPPO 的广告出现在美国的各个媒体上了？

**段永平：**&#x4F60;的步骤像是没做过企业的人写的教科书上的东西，确实是纸上谈兵。 大公司有时确实会这样做，但开始做企业的我认为一般不会这样。多数都是拍拍 脑袋就出来了。创业就是如此，有一个自认为好主意的东西就开始干，市场会留 下真正的好东西，也就是大家看到的创业成功的例子。

OPPO 广告出现在美国各种媒体上的时间可能会在很久以后，估计两年内肯定不 会有大规模的行动的。（2010-06-11）

&#x20;14.网友：我记得您和李大师合作过的，回头想想您的小霸王和步步高也是很善                                                     用广告，

**段永平：**&#x5475;呵，如果一个人真的很厉害，我们没有道理不长期合作的。

（2010-06-11）

15.网友：学长您的 OPPO 在美国做广告吗？好像以前没见过哦。

**段永平：**&#x76EE;前还没有很多广告，只是在网上卖。OPPO 的 blu-ray DVD player 可 能是中国人做的唯一的高端电子消费品吧？我们那款 899 美金的卖得好像还不 错，听说未来还有一款 999 美金的。我们的产品可是 cnet rating 得分第一啊。

（2010-06-09）

16.网友：我的 MacBook Air（苹果电脑） 有一次不小心也是掉到浴缸的水里。 马上拿起来用电吹风吹吹真的还能开机接着用，跟几个朋友说过这事有些人还不 太相信总说我在推销苹果，我说难道苹果是靠推销的？

&#x20;**段永平：**&#x6211;和“厨师”(cook)聊天时“厨师”特别提到苹果是不搞推销的。

（2014-08-20）

网友：记得段总以前用“不亢不卑”这个词形容过苹果零售店员工的服务态度， 印象很深。今天又看到苹果的“不搞推销”，受益。

**段永平：**&#x82F9;果的广告都没见过推销的，一般见到的都是融入生活的场景。这种广 告效果慢但持久。（2014.07）<br>

网友：偶然看了几集目前很火的电视剧《欢乐颂》，发现里面的所有的人用的笔 记本和手机清一色都是苹果的，这样的嵌入式广告真好。

&#x20;**段永平：**&#x82F9;果不太做推销式广告，做的基本上都是功能性或场景式广告。苹果广 告见效慢点，但影响深，长期的潜移默化力量很大。（2016-05-09）

17.网友：茅台经常在央视做新闻联播前的报时广告，不知道效果怎么样，或许 改为苹果这种广告效果会更好，把产品融入到家庭节日聚餐或其他喜庆动人的生 活场景，融入到亲情、欢乐的气氛中，这样更能传递产品的价值。

**段永平：**&#x4E2A;人感觉报时广告对茅台似乎不太合适，但想不出合适的是什么。不过， 对茅台而言，做点广告比一点不做好。只要茅台持续做，他们会找到更合适的广 告的。（2014.07）

**3.广告预算**

01\. 网友：我发现了一些网络广告的小技巧，请段大哥指正。

网络广告就是要自己看自己的转化率来逆推，不要看别人怎么出价，我 1 单能赚 多少钱，然后推出来我一个展现或者一个点击要支付多少成本，就按照这个成本 以下出价，不要去管别人出多少钱，也不能为了多要流量而多出价？

我现在让他们按照我这个思路做广告投放，现在发现投入产出比竟然赚钱了，之 前他们做网络广告总是亏的，虽然看到流量一大堆，只是问题在于现在钱花不出 去，花的少了，只有慢慢要求他们提高内功，也就是提高转化率，然后才提高出 价了。这个广告投放看来也是一个急不来的东西呀，万变不离其宗呀。

**段永平：**&#x548C;任何投入一样，广告当然也要计算投入产出。大公司的广告规模大， 投入产出的计算时间有时候会长很多，尤其是品牌广告。小公司的广告则应该以 销售广告为主，尤其是搜索广告可能最好，因为搜索广告更精准且较容易算出投 入产出比。**有些公司广告费比营业额高是肯定有毛病的，但问题出在哪里只有 花钱的人才能最后找到，如果他们寿命足够长的话**。（2011-11-08）

02.网友：关于步步高的问题，他前段时间广告的好几款电器都是请了好几个韩 国的女星，这样的代言费和广告费加起来应该不是小数目吧？投入和产出怎么 样？

**段永平：**&#x6295;入和产出的问题我不清楚。不过我知道我们公司投广告一直都很理性， 绝不会乱来的。（2010-03-21）

&#x20;03.网友：步步高最近的生活电器产品的广告都是在央视播放的，本身的广告费 用已经很庞大了，但是代言人还都是韩国的一线明星，这个代言费不是又很庞大 吗 ？广告费和代言费都不是小数目，能不能保本呢？是不是会大幅抬高步步高 电器的价格呢？<br>

**段永平：**&#x5E7F;告费只可能占价格的很小一部分。消费者的眼睛是雪亮的，价格太贵 他们会不知道？（2010-03-27）

04.网友：请教阿段当年做步步高时在广告投入上是怎样预算的？现在有一家阿 胶公司一年的收入是 30 亿，净利润是 10 亿，一年的广告费是 1.5 亿。我的第一 感觉广告投入有点少。

**段永平：广告预算很简单啊，用赚到的钱的一部分打广告就行了。激进一点的 办法或许是用一点点很有把握在未来能赚到的钱。以上说法只针对纯生意而言。 对那些广告不是打给用户的打法不在此列。（2013-08-02）**

05.网友：我还是蛮好奇大道是怎么计算打广告带来多少收益。

**段永平**： 我没算过（不知道算不算大秘密？），但一般最多只花到净现金流的 一部分（不然不安全）。现在估计也应该是这个意思，只是比例下降了而已。 (2019-09-29)

\-------------------------------------------------------------------

**附录：（来源：(视频）财富人生—段永平 2004）**

（旁白:现在小霸王曾经是一个家喻户晓的品牌，当年段永平重金聘请了国际武 打巨星成龙，拍了一个广告，同是天下父母心、望子成龙小霸王，打动了成千上 万父母的心，小霸王从此响彻天下！创建步步高后，段永平在推出无声电话 VCD 学习机的同时，又推出了几则经典广告，系功夫明星李连杰在电视上演绎真功夫 之后，段永平还邀请了周星驰、张惠妹等大片明星为步步高电器代言。2000 年， 步步高更是大手笔请来了国际巨星施瓦辛格，那段时间，步步高的广告里总是一 片耀眼星光）。

主持人：很多人都说这个阿段的这个营销意识很强，你看它这个小霸王和步步高 它这个品牌的营造上他就特别有头脑，我觉得现在老百姓想到这个步步高无绳电 话还是对您那几个广告记忆非常深，您为什么要走这个明星路线？

**段永平：**&#x6211;觉得选明星和不选明星，我们并没有这样一个原则是一定要选明星做 广告，广告它最单纯的东西就是如何提高你的传播效率，你会利用一切最省钱的 办法去传播。

主持人：您觉得省钱吗？ **段永平：**&#x6211;觉得他是最省钱的一种想法。 主持人：用明星省钱吗？

**段永平：**&#x6709;时候是，做对了，举个很简单的例子，我们当年小霸王用成龙这个概 念，你比方说有些人看三次就记住了，要没有成龙的话，你可能要看八次九次十 次，甚至可能更多次你还是记不住。<br>

主持人：而成龙的高知名度就迅速的…

**段永平：**&#x6CA1;错，是有很大的关系。我当时算过一个账，就是说我们付给成龙的钱 大概相当于我们整个广告投放量的不到 10%，大概只有百分之几，为什么说它便 宜？只要这条广告由于成龙的存在提高了百分之几的记忆度或者影响度或者好 感度，你就已经是赚到了，你简单的评价一下，它一定是远远不止百分之几。

主持人：那么施瓦辛格呢？ **段永平：**&#x65BD;瓦星格我觉得概念也是一样的，也是这个概念。 主持人：能不能透露一下您请施瓦星格花了多少美金，

**段永平：**&#x6211;们这个也算是过去了，因为在做的过程当中，大家承诺是不向外透露 的，我们当时大概总共花了 250 万美金。

主持人：那我知道其实这里面有点故事，就是付了 250 万美金之后，这个故事没 有完，后来还有点小曲折是吧？

**段永平：**&#x540E;来是这个广告播了大概两个多月就被停播了，为什么停播呢？是因为 当时有观众给电视台反应，而且反应都非常强烈，说为什么用外国人做广告，而 且在黄金时间播，电视台可能觉得有为难的地方，就不让我们播了。

主持人：他需要你更换这个广告内容？

**段永平：**&#x4ED6;不是更换，他是不让你用外国人做广告，其实后来还有很多品牌碰到 类似的问题。 实际上你要非黄金时间也就算了，看的人就少，反映的也就少， 呼声就没有那么高，为什么会这样呢？这个我也不是很懂，其实本来是没有关系 的一件事，但不让播，我们一点办法也没有。

我们说发生小插曲，这个给我们带来的损失非常大，因为我们整个计划都是两年， 你要是不让播，我等于主流的广告渠道没有了，这一下就变得很被动。你说的这 个插曲，我想指的可能是我们后来跟斯瓦辛格稍微有点纠纷。

主持人：我知道像他们这种大的这种明星、巨星，他有个形象使用权，像您本来 可能就是两年签的这样一个协议，那您刚才怎么会有一些纠纷这个怎么讲？

**段永平：**&#x5176;实这个也不是他们的问题，我们当时想的是，因为我们付款是付了一 半，第一年付了 125 万，第二年再付 125 这样的，结果碰到这个情况就跟他商 量我们后面的钱可不可以不付，因为我买的是你的形象，这个使用权我都没用， 对吧？责任不在我，就跟他们谈，老美这个法制意识非常强，那合同上面我们没 有说，我们只是授予你使用你买了我这个权利。当时开始的时候都是各考虑各的， 他想你这个不能不给我，我觉得我没有买到任何东西，是这样一个概念，就是想 商量。后来，我们去谈判的人也还是有一些强硬的地方，说反正就这种情况，对 吧？对方因为主动权在你这，要么给你打官司，官司这个打起来不知道会打成什<br>

么样子，你到美国来告我，你很难告得倒，这也是实际情况，所以最后他也妥协 地说那叫付一半或者诸如此类的这样的一个协议。但是我个人感觉就是觉得不太 合适，有一样东西，就是我总觉得他们觉得我们在骗他，我总感觉他并不是真正 了解到我这种情况。你像我们企业的宗旨一直是叫以诚为本，我就跟我们的人商 量，说我觉得这好像不太符合我们的本分。因为从这件事情的角度来讲，他没有 犯任何错误，虽然我们也没有，是环境造成的一些客观、不可控的因素，所以这 个损失应该是我们来承受。所以最后签字的时候我就跟他讲，他说已经合同都签 好了就让我签字了。

主持人：钱减半？

**段永平：**&#x4E5F;没有减半，大概是付 6 成吧，就大概少付到三成多不到四成的样子。 后来我在签字的时候我就想，我说我们讨论过就说算了，我说就还是照原合同执 行就不少付了，他说你说什么? 你再说一遍，他那个那律师原来也是在上海工作 过，是一个美国人叫郝山，我觉得他中文水平挺高的，当时也很意外，说你再说 一遍，我告诉他为什么会做这个决策，没有什么特别的东西，我们自己觉得不合 适，就是违背我本分的东西，觉得你跟人签的合同是给人那么多钱，那剩下这些 事情跟你没关系，你就付吧，所以最后就没事了，这也算是一个小插曲。（**2004）**

## 第 6 节：收购和多元化

## 一、收购

01\. 网友：对企业来说，“做对的事情”是如何判断的？譬如，吉利收购沃尔沃， 联想收购 IBM pc 部门等。是否回过头来，还是依据我们对企业文化的理解，相 当于自己在做企业？

**段永平：**&#x7B80;单的东西不容易啊。 “做对的事情，把事情做对”就是简单不容易 的典型代表。其实从外人的角度来看，我无法判断吉利的收购案或联想的收购案 对他们来讲是否是件对的事情，但他们最后自己都会知道的。

&#x20;**关于并购，我可以讲一个我的简单理解。如果当有人本着“大不一定强，不大 则一定不强。所以要做强则先做大。”的想法去并购的话，那结局一定是很难 看的。 韦尔奇的自传里写过一些关于并购的原则，你有兴趣可以去看看。**

**（**&#x32;011-01-25)

02.网友：美的它发展很快，不可否认它的收购和并购都很成功，你估计步步高 会不会这样做？或者继续练好自己的内功？

**段永平：**&#x6211;们不会走 M\&A，就是收购和兼并这条路去发展。我们这种办法短期看 来好像慢很多，但从 10 年 20 年的角度来看，有可能是最快的。很累但很有成就 感。（2010-03-25）

03.网友：段总：快鱼吃慢鱼，慢即是快，中间的尺度该如何衡量？什么时候该 快？什么时候该慢？比如张裕，洋河蓝色经典，该怎么衡量呢？

&#x20;**段永平：**&#x5176;实前面类似的东西从不同角度说过若干次了。快鱼吃慢鱼指的是效率 问题，也就是把事情做对的能力问题。但做对的事情总是要放在前面的，两者并 不矛盾。在自然界里，好像“快”的动物的生存能力也是比“慢”的动物的生存                          能力弱的。(2010-08-31)

04.网友：我还有一个问题，如果一家公司基本以纯股票形式收购另外一家公司 而本身亏损很大，被收购公司是一家盈利未上市公司，可否看成是被反向收购了， 这样的公司有没有投资价值，尤其在股价低于收购时的股票价值时？  &#x20;

**段永平：**&#x5475;呵，看不太懂。感觉好像其中一家有点傻。(2010-03-05)

05.网友：吉利买下沃尔沃轿车品牌，联想买下 IBM 笔记本品牌，海尔将三洋中 华区品牌买下来。请问段大哥，品牌还能这样出售吗？万一收购方将品牌越做越 差，不是更影响未出售的品牌和产品。到时连叫停的权力都没有了。<br>

**段永平：**&#x4F60;是为买方着急还是为卖方着急？**一般来讲多是只有错买没有错卖的。 你说的这几个例子也是如此，卖方没啥要担心的**。(2016-11-25)

06.[【引用】巴菲特 31 年股东信精华](http://nteswjq.blog.163.com/blog/static/126998120121175857240)（2012-02-17）

母公司是不会单纯因为价格因素就将自己旗下最优秀的子公司给卖掉，公司总裁 一定会问，为什么要把我皇冠上的珠宝给变卖掉？不过当场景转换到其个人的投 资组合时，他却又会毫不犹豫地，甚至是情急地从这家公司换到另一家公司，靠 的不过是股票经纪人肤浅的几句话语，其中最烂的一句当属“你不会因为获利而 破产”。你能想象得出一家公司的总裁会用类似的话语建议董事会将最有潜力的 子公司给卖掉吗？就我个人的观点，适用于企业经营的原则也同样适用于股票投 资，投资人在持有一家公司的股票所展现的韧性，应当与一家公司的老板持有公 司全部的股权一样。（1993）

对于购并的对象，我们偏爱那些“产生现金”而非“消化现金”的公司。由于高 通胀的影响，越来越多的公司发现它们必须将所赚得的每一块钱再投入才能维持 其原有的生产力，就算这些公司账面数字再好看，除非看到白花花的现金，我们 对之仍保持高度警戒。（1980）

07.网友：《21 世纪》：吉利集团合并沃尔沃公司后，吉利董事局主席说，吉利 是吉利，沃尔沃是沃尔沃，他们是各自独立的公司，他们并不在一个体系下运作。 而根据麦肯锡的报告，目前越来越多亚洲企业采取如此做法，你如何评价？

韦尔奇：每一家公司都会有它的处事风格。可能中国公司认为没有能力去接管沃 尔沃，沃尔沃可能也是这样考虑的。但是，这种情况下，并购方就可能错失了技 术交流的机会，失去了财务部门提升成本效益的机会，失去了人力资源部门开发 人才的机会。

另一方面，置沃尔沃于不管，可能也是一个成功的办法，因为他们缺少人才去完 成全部的工作。

《21 世纪》：有人认为，这是一次筷子与刀叉所相遇的机会，这两家公司各有 优点，但如果他们的合并并不能良好发展，可能会引起不小的问题。

韦尔奇：但是为什么要置沃尔沃于不管呢？既然如此为什么又要并购沃尔沃呢？ 为什么？你告诉我为什么？是看上了沃尔沃的人才，技术还是市场呢？

感觉韦尔奇的思路很清晰，其实韦尔奇这样回答我也有点心里这样想！

**段永平：**&#x5475;呵，**让韦尔奇来管个中国公司他就明白了。语言及文化沟通是大问 题，没法解决。**&#x4F46;这种收购最大的好处可能是在专利上。(2011-12-06)

08.引用： 苹果 CFO（首席财务官）称谷歌收购摩托罗拉移动价格偏高 &#x20;

据国外媒体报道，谷歌斥资 125 亿美元收购摩托罗拉移动价格偏高。

**段永平：**&#x522B;人谁买 moto 都很难有好下场，但 google 出手则可能有点不同。一方 面说明 google 确实急了，另一方面，google 的文化确实强大，或许有机会？无 论如何，google 的文化和 moto 的差异实在是太大了，如果 google 能够搞掂 moto 那就是 google 的有一个奇迹。3-5 年后就能看到结果。(2011-08-19)<br>

网友：大道觉得并购摩托罗拉的决策做的怎样？要改变这么大一家公司的文化可 不容易，印象中以前好像没有特别成功的。

**段永平：**&#x67;oogle 买 moto 肯定不是为了买 moto 的生意，所以我无法评价。如果 是为了生意而去那就是脑袋坏了。(2012-01-24)

09.网友：畅游今天市值 15 亿美元，持有净现金 3.304 亿美元，净利润达 2.455

亿美元，扣除现金，市盈率 4.7 倍。结论是：便宜，低估。

**段永平： 刚刚知道他们居然已经买了几家公司了。对国内喜欢买公司的公司还 是小心为上。**(2012-02-07)

网友：求教，频繁收购公司容易出的问题在哪里？

**段永平： 我不知道，但知道收购的成功率一般都很低。只有具有很强企业文化 的公司收购的成功概率才可能比较高点，**&#x6BD4;如 google，比如 GE 等。(2012-02-07)&#x20;

10.网友：想请教下，就是现在也在谈一个类似于企业并购的事情，感觉被并购 的管理层还达不到巴菲特多数例子中那些管理层的品行水准，所以想问下就是我 看到的巴菲特收购例子中，没有提到业绩对赌之类的，是不是巴老收购一般都不 谈对赌呢？真是完全凭着对于人和企业的把握来做收购呢？

**段永平：**&#x5BF9;赌双方一般都比较短视。作为投资方，对赌总是立于不败之地的，对 接受投资的人而言，参与对赌是匪夷所思的。(2017-01-07)

11.【引用】巴菲特 31 年股东信精华(2012-02-17)

**第一类你买到的（不管是有意或无意的）是那种特别能够适应通货膨胀的公司，** **通常他们又具备两种特征：一是容易去调升价格（即使是当产品需求平缓而产** **能未充分利用也一样）且不怕会失去市场占有率或销售量；二是只要增加额外** **少量的资本支出，便可以使营业额大幅增加（虽然增加的原因大部分是因为通** **货膨胀而非实际增加产出的缘故）。**&#x8FD1;十几年来，只要符合以上两种条件，虽然 这种情况不多，即使是能力普通的经理人也能使这项购并案圆满成功。（1981）

## 二、多元化

01.网友：问下段哥，VCD、DVD、电话、复读机、点读机、手机，为何说不是多 元化呢？是因为有好的人才团队，因人设事吗？怎么来定义聚焦和多元化？

**段永平：**&#x8FD9;都是我们 3 个公司在不同时期由不同 team 做的产品。每个团队都应 该是高度聚焦的才能做好。(2010-10-15)&#x20;

&#x20;**段永平：**&#x6211;们每个事业部都是高度独立和专业化的，都非常专注于自己擅长的领 域。我们不会为了多元化而多元化。(2010-03-09)<br>

&#x20;02.网友：段哥，美的在做空调还有电磁炉、豆浆机等小家电，不少人说它不够 专一，那步步高现在除了手机、学习机也在做小家电，想听您谈谈对多元化的理 解。

**段永平：**&#x6211;们这些不同大类的产品都是不同的公司做的，完全独立的不同的团队， 不会为其他产品分心，所以不是多元化的产物。我不赞成一般意义上的多元化， 尤其不赞成为多元化而多元化的多元化---有很多公司在经历一段不错的发展 后，为了分散风险，开始搞起了多元化，结果其中有些公司很快就不用再担心风 险的问题了。(2010-09-20)

**段永平：**&#x41; 股有些公司就有这个问题，看着利润不错，可老是不知道公司会怎么 用这些钱。一看他们多元化我就有点晕。(2010-05-23)

03.[马化腾否认 QPhone 谣言 重申腾讯不做手机](https://xueqiu.com/S/IMEIGUROLL/21899764) 就外界盛传“腾讯将于近期推出基于安卓平台的手机产品 QPhone”一事，马化 腾今日在其微博上予以否认，并重申腾讯不会做手机。 马化腾在其微博上称： “借辟谣再次重申：我们不会做手机，不特宫（特供）做扣费机， **段永平：**&#x8FD9;个我能看懂。(2012-06-13)&#x20;

04.盛大非游戏业务盈利前景不明 拖累整体利润

（i 美股讯）2011 年 8 月 31 日，盛大公布了第二季度财报，Q2 净营收较去年同 期增长 26%；普通股股东应占净利润（GAAP）为 880 万元人民币，同比下降近 94.8%。 净利润大幅下滑主要……

**段永平：**&#x6CA1;有焦点的公司早晚会有麻烦。[(](https://xueqiu.com/1247347556/20380594) 2011-09-01)

05.网友：品种越多，占用的渠道库存越大-----是不是说会给经销商增加负担？

**段永平：**&#x7ECF;销商的负担难道不是自己的负担？怪不得有人为了 2015 年成第一而 向经销商压货呢。(2011-04-09)

&#x20;06.网友：一直不明白为什么要避免多元化，另外，可口可乐不也有多个子品牌                                                             么？

&#x20;**段永平：**&#x5F88;少有公司能够做好“多元化”的，尤其是那些为了多元化而多元化的 公司。子品牌是不同的概念，一般是在其能力圈内。茅台出 53 度飞天以外的白 酒或许有一定的道理，毕竟还是在白酒的行业里，但如果做别的酒，比如葡萄酒

或啤酒就有点怪了。(2013-02-25)

07\. 网友：段总，您好，请问您对 tcl 这些年无论在经营范围或者在经营地域， 都实行遍地开花的做法是怎么看的，自知不是一个好问题，不过，真的觉得 tcl 这种经营方式挺值得探讨的。说白了，我是想问，他们似乎也一直在努力，怎么 利润回报就不理想呢？他们的经营业绩是不是开始有转好的迹象，即将进入收获 期呢？ <br>

**段永平：“一直在努力”就一定有利润？ 先要做对的事情，努力才有用。**

（2010-10-14）

08.不明真相的群众: 你有没有做过这样的交易：赚了钱，事后却发现事实或逻 辑搞错了？&#x20;

**段永平：** 我的特斯拉就是典型哈。认真想来当年的 GE 也算是买错了，放在今天 我大概会做不一样的决定。我们在 GE 上的收获也还是不错的，好像是 9.6 块买 的，20 出头卖掉了。当时卖的原因就是我突然发现我买的 GE 和我想象的那个不 一样。(2018-09-21)&#x20;

[不明真相的群众](https://xueqiu.com/simon)：什么事让你发现不一样？

**段永平：**&#x6211;是看着基业长青的书和韦尔奇的书买的 GE 哈。杰克韦尔奇说他们的 企业文化里最重要的一条就是 integrity，他还说过不少企业文化的东西，结果 后来我发现在 GE 网站上居然都找不到。当然，还有一个很重要的原因是，GE 的 生意太复杂，我看不懂。再就是，我有点怀疑这家公司 cooking book，因为他 们的 earring 老是刚刚好。简而言之，我觉得当初买 GE 是欠妥的。(2018-09-21)

[不明真相的群众](https://xueqiu.com/simon)：杰克韦尔奇本人，他的“战略”我也是有疑惑的。他入主 GE 早期做的一些战略，看起来是不错的，主要是聚焦、做减法，但到了晚期，又走 回去了。

**段永平：**&#x8FD9;个我同意。**我当时一直都说，从来没见过企业多元化成功的例子， GE 是个例外。现在看来，时间长了都不行哈**。(2018-09-21)

09.网友：怎么判断是多元化？像苹果从电脑到手机到平板，到手机，到手表， 好像不是多元化，要是做汽车算多元化么？我有些迷糊。

**段永平：**&#x4E0D;知道多元化定义是什么，看着像是在同一个老板管理下的业务之间关 联度很小的东西。苹果的各业务之间高度关联，显然不是一般所说的多元化。 (2018-11-03)

网友 Q：看懂一个大公司的各业务之间是否高度关联和互补。也超出了我们很多 人的能力圈。段总抽时间多给我们聊聊腾讯有没有多元化问题吧。

**段永平：**&#x611F;觉产品上腾讯不算多元化的，他们的绝大多数产品间或多或少都是有 关联或者是内在关联的。投资上似乎有点散，但仔细一想似乎也大多是有关联的。 至少他们不是在追求多元化吧？(2018-11-03)

不明真相的群众：我感觉确定不好的多元化，是这个做不好，看看换另一个事情 能不能好点，这种搞法。

&#x20;**段永平：**&#x5B9E;际情况多数可能会是因为在某个地方成功了，所以就觉得自己很厉害， 想做更多的事情，不小心就跑到能力圈外面去了。有时候试一试也没啥错，所以<br>

这里其实还是蛮难划一条特别清楚的界限的。很多人的所谓多元化大概都是因为 生意而去的，什么好赚钱就跟着去做点啥，和自己原来的用户群没啥关系。举个 例子：如果腾讯开始做房地产了，那就叫多元化，但如果他们买块地给自己员工 盖宿舍或建自己的办公楼就不算。又比如有个群众因为自己爱好开了个网站，虽 然和他以前干的事情不完全一样，也不知道在不在自己的能力圈内，所以依然不 算是多元化，但可以叫做创业了。(2018-11-04)

网友 G：史总也是多元化摔了跟头？

**段永平：**&#x53F2;玉柱做事情还是蛮专注的，当年出问题也不是因为多元化。后来做了 保健品以及游戏，在生意上也算是蛮成功的。后来这两个生意的管理团队完全不 同，所以不算多元化。(2018-11-04)

网友 K：成功并能保持的人 都是有他厉害的地方的。

**段永平：很多所谓厉害的人其实仅仅是因为他们一直在老老实实做他们该做的 事情而已**，单看每件事情是很难看出来他们厉害在哪里的。(2018-11-05)

网友 F：段老师，有点绕哈。是不是在新的领域（另一元），自己的能力能够满 足现有客户的需求，并能创造价值，获得收益，这叫多元化成功（或者就不叫多 元化）？而不在自己能力圈之内的多元化是有害的！能力圈形成之前，能力培养 阶段叫创业，小失败叫试错？

&#x20;**段永平：**&#x591A;元化的意思就是俗语“不要吊死在一棵树上”，要多找几棵树。                                           [(2018-11-21)](https://xueqiu.com/1247347556/117131310) &#x20;

10.网友：偶像芒格一直提议反过来想，抛个问题求解：关于市场上龙头房企“恒 碧万融”四大家，未来哪些因素可能会导致这些公司走向衰落，甚至彻底价值毁 灭？

[不明真相的群众](https://xueqiu.com/simon)：1、杠杆。2、多元化。

网友 C：以前还不太理解多元化的危害，多元化相当于把两只手分到两边，四处 开火。这几年看人人、航美、网秦、迅雷、乐视，好像都是从不看好自己的主业、 多元化开始走向羸弱的。贾布斯如果不多元化瞎折腾，按爱奇艺这估值，乐视网 今年估计也能值几百亿吧。

[不明真相的群众](https://xueqiu.com/simon)：大部分企业的“多元化”，并不是“不看好自己的主业”，而 是没有能力经营好自己的主业，所以觉得另搞一件事情也许会解决问题？但大概 率另一件事情也搞不好。所以本质上是自身的能力问题，而不是事的问题，更不 是多元化的问题。这跟人生碰上问题怪“原生家庭”是一样的。

**段永平：**&#x6211;看到的多元化多是因为自己在某个地方成功了，想要如法炮制到别的 地方。比方说篮球打好了就跑去打棒球，或者高尔夫啥的？（这句话是开我喜欢 的两个篮球运动员的玩笑哈）(2019-01-09) <br>

网友 F：其中的一个是我也特别喜欢的球星库里，喜欢打高尔夫球，据说高尔夫 比篮球打得还溜！

**段永平：**&#x559C;欢打棒球那个是乔丹，居然中间去打了一年职业比赛，然后回来又拿 了三届冠军。库里和乔丹一样，在篮球以外的运动上都不如其他职业球员。 (2019-01-10)&#x20;

11.引用: 《步步高总裁段永平人大演讲精彩实录》 **问：请问您对企业多元化和归核化的看法？**

**段永平：**&#x5F52;核化可能就是我们企业的焦点法则，意思就是集中优势兵力打歼灭战。 我一向是反对多元化的，我们现在的情况不是多元化，应称为行业的专业化和产 品的多样化。我们产品有几大类，但分为三个独立的公司。**一般地，如果我们判 断进不了前三名的行业，我们就不进入**。

[**段永平**](http://nteswjq.blog.163.com/)**:**&#x8FD9;是我们还没开始卖 DVD 以前的事情了，忘了哪一年，大概是 99 年的样 子？简而言之，那时候我比现在要年轻很多。(2019-10-19)

**3.分拆**

01.网友：苹果分拆，是否更利于旗下的子产品部发展壮大？段总最大的担心是 不是分拆后的企业文化跟着稀释？

**段永平：不知道你是不是觉得汽车的 4 个轮子拆开来跑车会跑得更快？** (2013-02-21)

&#x20;02.网友：一直搞不清楚，腾讯旗下这么多生意，分什么不学搜狐和盛大把旗下 有潜力的业务（比如电商，游戏）分拆上市呢？

**段永平：**&#x628A;海陆空 3 军分拆上市会是啥子结果？(2011-10-16)&#x20;

03.网友：从长期看，分拆上市并没有提高总公司的内在价值，不过好处是可能 从公司层面上分业经营，对某些盈利不错的主业会有点隔离的保护吧。大致看来 应该跟拆细差不多吧，格雷厄姆说这种事情对投资者没有意义，但一般会促使那 些投机者有冲动“要做些什么”。

**段永平：**&#x5206;拆一般是没有意义的。我能想出来的意义大概是不同部门都想通过自 己的业绩来体现自己的价值，而老板又没办法协调，大概就只能这么做。

(2010-04-29)<br>

## 第 7 节：Stop doing list（不为清单）

人们关注我们往往是因为我们做了的那些事情， 其实我们之所以成为我们，很 大程度上还因为我们不做的那些事情。<br>

**更健康更长久**(2016-11-10) <br>

——段永平<br>

**段永平：**&#x66F4;健康更长久我们已经提了很多年了。我们认为，要做到更健康更长久， 除了应该知道我们该做什么外，更重要的是需要知道什么不该做。 我们是有个不短的 stop doing list 的，今天举个小例子： 芒格说如果知道自己会死在哪里就坚决不去那里。多数企业最后都是死在资金链 断裂上（实际上绝大多数情况下这只是表象而不是原因）。投资也一样，不用 margin！

01.网友：珠三角地区大批中小企业倒闭的原因是什么？ 董明珠：实际很简单。第一、中小企业没有自己的技术；第二、中小企业目光短 浅，他们就是做生意，而格力是做营销。做生意就是把客户弄过来，让他们低价 拿货，把钱换过来就成了，而营销就是有文化在里面的。&#x20;

**段永平：**&#x8FD9;段话说得不是太对，是不是翻译有问题？ 中小企业大批倒闭从来都是正常的，每隔一段时间就会来一次，发达国家也一样。 其实中大企业倒得也不少。所以更健康更长久才最重要。(2010-08-10)

02.网友：15 年啦，恭喜恭喜！！感觉步步高还很年轻，充满活力。想起段总的 一个采访报道，主持人问如果 50 年后报纸上有步步高的消息，您希望它是什么 消息？段总的回答是：任何消息。因为说明我们还活着。很发人深思的。

**段永平：**&#x5475;呵，难得有人记得这句话。(2010-09-19)

03.网友：阅读您的博客，我知道更健康，更长久很重要。遗憾的是，我并没能 真正领悟。直到有一天我跟我爸在聊我对您的看法，我想给各位博友分享出来。

&#x20;我：“爸爸，段永平这个人真厉害，可以在很多年前预见到智能手机的大发展， 非常有预见性。放眼全世界，能经历功能机到智能机并且业务持续增长的消费电 子企业，恐怕 OPPO 是仅有的两三家之一吧。”

&#x20;爸爸：“段永平恐怕不是你这么想的，他只是看到智能手机会严重打击他们原有 的手机，MP3，MP4 的业务，他们想要活下去并活得更好，必须进入智能手机产 业。重要的是，他们不是预见了什么东西，而是知道什么是不能做的。”

&#x20; 这个故事真有启发性。

后来我注意到，OPPO 在 18 年关闭了蓝光播放器业务（熟悉蓝光播放器的朋友们 肯定能理解 OPPO 在这个领域的地位），我想理由也是同样的。欧美流媒体的风 靡对蓝光播放器的打击几乎是不可逆的，即使这个业务很优秀，也不应当作下去。

&#x20;希望各位球友能领悟到一些东西，再次感谢大道。

&#x20;**段永平：**&#x4F60;爸爸说的我们知道什么不能做这个说法是非常对的，这就是我们的

stop doing list，就是所谓的不为清单![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)。

&#x20;04.网友：老干妈不上市，不打广告，不贷款，经销商现款现货，不欠供应商的 货款，不偷税漏税，质量第一，关爱员工，生意上也非常聚焦，我把老干妈的管 理智慧复制过来，方便您了解。我认为他们的企业文化很不错，我的判断正确吗？

&#x20;**段永平：**&#x4ED6;们有明确的不做的事情，这样的公司只要产品对路了，时间长了大概                  率是会厉害的。(2018-11-13)

05\. 怎么理解“Stop Doing List”？

**段永平：**&#x4E3B;要讲的是做对的事情。它不是一个 skill（技巧）或者 formula（公 式），而是思维方式：如果发现错了，就立刻停止，因为这个时候成本是最小的。 我不能告诉你对错，怎么判断对错，要自己积累。

至于怎么把事情做对，要花时间去培养 skill sets（就是有学习曲线的意思， 要允许犯错误）。坚持“Stop Doing List”，厉害是攒出来的。OPPO 跟苹果比， 我们在做对的事情上是一样的，但是在把事情做对上可能有些差距。但我们有积 累。我们比大多数公司厉害。

“Stop Doing List”没有 shortcut（捷径），要靠自己去积累，去攒，去体悟。 stop doing 就是发现错，就要停，时间长了就效果很明显。很多人放不下眼前 的诱惑，30 年后还在那儿。错了一定要停，要抵抗住短期的诱惑。（2018-9-30）

&#x20;06.互联网里常看到很多公司做事能力很强，但最后商业逻辑不成立，阶段性的 跑得快不等于能够长期生存。所以感觉“做对的事”比“把事做对”要更难。很 多东西听起来正确，但实际并不一定代表对的方向，比如我理解小米强调的性价 比在商业逻辑上可能是需要探讨的。我现阶段的理解里，“对的事”可以理解为 “符合长期商业逻辑的事情”，也希望听听您的意见，以及您如何判断什么是“对

的事”？

&#x20;**段永平：对的事情往往和能长久有关系**，投资上尤其如此。所谓不对的事情其实 并不总是很容易判断的。有些事情相对比较容易判别，比如不骗人。有些不那么 容易，比如是不是该早睡早起。有很多觉得不对的事情都是通过长期的思考和别 人以及自己的经验教训得来的，比如我们公司不为别的公司代工。**所谓要做对的 事情实际上是通过不做不对的事情来实现的，这就是为什么要有 stop doing**<br>

**list，意思就是“不做不对的事情”或者是立刻停止做那些不对的事情。也许 每个人或公司都应该要积累自己的 stop doing list。如果能尽量不做不对的事 情，同时又努力地把事情做对，长时间（10 年 20 年）后的区别是巨大的。 (2019-04-02)**

07.网友：大道您好，早期 OPPO 曾进入豆浆机行业，产品上市不久便迅速退出这 个行业，我的印象是非常短的时间。您能简单说说豆浆机行业为什么不适合 OPPO 吗？或者上市后发现了什么之前未曾考虑清楚的因素呢？

&#x20;**段永平：我当时已经不在一线了，所以没有参与决策，做与不做都和我没关系。 这其实是一个发现错了就马上停止的好例子，不然大家现在看到的可能就是 OPPO 豆浆机而不是 OPPO 手机了。我知道当时停小家电是有几个亿损失的，今天 来看决策真是对啊！这也是我们之所以是我们，很大程度上也取决于我们不做**

**的那些事情，简单但非常不容易。**(2019-05-26)

\------------------------------------------------------------------

**1.** **没有销售部，不讨价还价**

**段永平：**&#x6211;刚到广东时，就发现人们在谈生意时谈来谈去谈的都是价格，当时我 就想，如果能不谈价钱，那至少可以省掉 70%到 80%的时间吧。后来，我们花了 两三年的时间，建立了一套销售体系，确确实实做到了所有的客户在我们这里拿 的货的价钱都是完全一样的，不管生意额的大小，没有折扣，没有返点！也许很 多人很难想象，我们这个公司实际上是没有销售部门的。（2016-10-12）

&#x20;01.怎么对待差异化定价（给不同的客户不同的价格）？

&#x20;**段永平：**&#x4EF7;格不一致，一是他们迟早会发现；二是客户发现能议价，会想尽办法 跟你讨价还价，浪费你很多时间，这都是麻烦事。价格一致，会省很多麻烦。做 产品主要是要抓住客户的需求，而不是价格。可以看看空客的 John Leahy。（一 个人打败了波音啊！当然背后靠的还是产品！）(2018-09-30)

02\. 网友：淘宝目前正在运作电器城，可是电器城的卖家却是经销商，而京东却 是直接向厂家拿货的。这个怎么能够竞争得过京东呢？

**段永平：**“厂家”货一定便宜吗？能想明白这个问题其实也不容易。

（2010-07-06）

网友：您的意思是否是指：经销商采购量不够的情况下，厂家的给的出厂价是比 向大经销商采购还要高的？的确如此，这个是现实的商业状况。

**段永平：**&#x5356;得多就给得便宜的办法是对销售非常短视和初级的理解，尽管很多大 公司也这么做。（2010-07-04）

04.网友：段大哥有一个问题想听听您的看法：“家电零售业在价格上,是标高一 点再讲价呢？还是标价就是卖价不讲价好点？”

**段永平：任何东西都是标实价不讲价的好。**

**可以讲价实际上对卖家而言是个非常短视且成本很高的行为。成本很高指的是 无法授权且容易造成管理漏洞，短视指的是如果可以还价，那就是在鼓励回头 客来讨价还价。对于客户而言，任何讨价还价都会让他们有可能吃亏了的感觉， 因为客户很可能觉得价钱还没还够**。(2015-06-12)

**段永平：**&#x8FD9;里透露一个小机密：**我们公司卖东西是没有还价空间的，所有的客户** **都是一个价，不管生意大小，生客熟客...。刚刚开始经营企业时我就发现，所** **谓谈生意谈来谈去主要是在谈价钱。人们把大量时间放在谈价钱上，而且在谈 的过程中经常还需要诈来诈去的。对于卖东西的业务员来说，价钱的授权是件 非常困难的事情，所以他们总是要找更上一级领导去获取更多授权，所以领导 就会变得非常忙且没有效率。所以我们在 20 多年前就没有讨价还价了。不讨价 还价的好处实在是太多了，大家慢慢想哈。**(2015-06-12)

**段永平：**&#x4F;PPO／vivo 没有销售部（因为不需要谈生意）；不单独和客户谈价钱

（所有客户一个价，省了双方非常多的时间和精力，10 年 20 年加起来很恐怖啊）； (2018-09-30)

**段永平：**&#x4F;ppo、Vivo 的年收入合计有 400 亿美金，没有 Sales 部门，没有折扣、 返利，大小客户一视同仁。(2018-09-30)

05.网友：我记得您好像说过，步步高没有销售部门，大小经销期商提货价格是一 样的，这样做的道理在哪呢？

&#x20;**段永平：**&#x8FD9;样就不用整天花时间讨价还价了。刚刚开始经营时，我就发现每天绝 大部分时间都花在和不同的客人讨价还价上面了。我当时一想，我们还是这么小 的生意，那将来怎么办？我们大概花了三年时间才建立了起这套系统，简单不容                                  易哈。(2019-09-22)

网友 Q：有点好奇，大道公司的产品系列种类并不多，为何指定这套系统需要 3 年时间呢？

**段永平：** 建立信任很难。

网友 L：三年后有底气说服经销商？三年后经销商相信并接受这套系统？

&#x20; **段永平：**&#x76F8;信的人会留下来。

网友 P：如果是小公司的话，面对财大气粗的经销商的时候，怎么让他们服从这 套系统？例如经销商很强势，非要比其他人低的提货价格呢？

**段永平：** 我们那时候就是小公司。(2019-09-22)<br>

网友 O：大道您好！按你所讲，不论大小经销商提货同价，那么你们有没有对完 成约定提货量的经销商，有不同比例的返利奖励吗？

&#x20; **段永平：**&#x6211;们没有返利，从来没有过。

网友 K：返利是不是对价格体系有负面影响？或者说对统一订货价有负面影响， 或者说返利就是鼓励短期行为……

&#x20;**段永平：**&#x4E0D;知道，你要去问那些觉得应该返利的人。我从来就不认同返利的逻辑。                                               (2019-09-22)

**2.不做代工(OEM)**

**段永平：**&#x5173;于做企业我举两个例子：不做代工，拒绝沃尔玛。沃尔玛要拧成本毛 巾，给他代工你会很难受，企业会被弄死。

&#x20; 不代工（代工的产品没有大的差异化，很难有利润）；

下面我举一些我们自己的“不做的事情”的例子，这也算我们的小秘密吧。

不做 OEM：最早提出不做 OEM 的就是现在 OPPO 的 CEO 陈明永，不记得是哪年了， 大概可能有 20 年了吧。为什么我们不做 OEM 呢？长远来讲，我们想建立自己的 品牌，我们需要把所有的资源投入到我们自己的产品上。做 OEM 有很专业的公司， 他们有很专业的办法去满足很多不同的客户的不同的要求，我们根本就没有精力 去做这些事情，所以长远来说我们是会输给那些专业做 OEM 的公司的，既然知道 长远会做不过别人，那我们干脆就不做。记得大概 十五六年前，我还是 CEO 的 时候，沃尔玛的供应商曾经来找过我，说要给我们下 100 万台的 VCD 的单子，我 在电话里直接就拒绝了。对方还问我，难道价钱你都不想谈吗？我说，对的，不 管什么价钱我都拒绝，反正你也不会给我好的价钱，谈来谈去浪费大家的时间。

&#x20;我当时还类似地拒绝过南方贝尔的代表要下的“巨量”电话机订单。当时给我打 电话的人还嘟囔着说，在中国还没有人拒绝过我们的订单呢。(2016-10-12)

&#x20;01.网友：在中国民营企业发展的初期，可能几乎没什么人想得到不做国际大公 司的代工，就像这里说到的没有人拒绝他们的订单。几年前当我意识到步步高是 从开始就选择了不代工这条路的时候觉得非常惊讶，因为这个觉知实在是太早 了，觉得怎么可能知道。这时候实际上很多的工厂还是成熟的老牌港台企业不仅

仅是民企，步步高在起步的时候就已经在有些方面超过他们了，这是让人觉得很 佩服的地方，这只有文化非常好的企业才可能想得到、做得到，也是我早就看好 段总的主要原因之一。

**段永平：**&#x5982;果你想的是 10 年 20 年后的事情，这个决定其实非常简单且容易。凡 事能往前（后）想几年，往往难度会大幅度下来。(2016-10-18)

网友：想起来 OEM 的问题在投资里对应的术语就是属于“生意模式”不好，一早 就应该避开。

**段永平：**&#x5F88;专注地做 OEM 也许是可以做得不错的，比如 TSMC。25 年前我就告 诉 UMC 的人，TSMC 将来会更厉害。(2016-10-25)

02.网友：25 年前，半导体代工才刚刚起步，段总当时看好 TSMC（台积电）哪 些方面啊？

目前代工的竞争更加激烈，INTEL（英特尔）也加入战团，SAMSUNG（三星）， TSMC（台积电），INTEL（英特尔），段总更看好谁呢？

**段永平：**&#x8C01;更专注，谁就更有机会。(2016-10-26)

03.网友：从段总 20 年前就不做 OEM，建立自己的品牌，现在我越来越深信， 功夫熊猫里的一句经典台词“There is no accident 世上无偶然”。这还是跟 段总偷学过来的。

**段永平：**&#x6211;们其实从来就没做过 OEM，但 20 年前确定了不做，所以谈都不谈了， 省了很多时间。(2016-10-25)

&#x20;04.网友：我经营着一家做汽车音响的小公司，这几年自有产品和品牌在行业内 发展的算是小有名气，在全球范围也有了一些代理商。公司也确定了未来以自有 品牌为主的发展方向。可目前公司销售额和利润的 50%依然来自于 OEM（代工）生 意，但我认为这两个生意是有冲突的，可如果马上停止 OEM（代工）生意我担心        对公司目前的经营会有较大的影响 想了解如果是您会怎么做。谢谢！

**段永平：**&#x6211;们有过这种经历。我觉得最好慢慢放弃一种才能做好另一种。不专注 有难度。(2019-05-24)

&#x20;05.网友：我们之所以成为我们，还因为我们那些不做的事情。”能讲一个您印                                      象最深的例子吗？

**段永平：**&#x6211;们 stop doing list 上很多事情都是有例子的。记得有次和中国台湾 做代工的一个大佬吃饭聊天，他也问到为什么你们这么厉害，我说因为我们有个 “stop doing list”， 他也问到“举个例子？”，我说：比如我们不做代工。 他马上问：为什么？我说，如果我们做代工的话很难和你们竞争哈。(2019-06-17)

&#x20; 网友：你这是拐着弯儿夸人啊。

**段永平：**&#x5176;实可能算互夸，因为人家有点羡慕我买了很多苹果。(2019-06-17)

### 3.不借钱，没有有息贷款

**段永平：**&#x6CA1;有有息贷款（永远不会倒在资金链断裂上。芒格说知道自己会在哪里<br>

死去就不去哪里，多数企业垮掉都是因为借了太多钱了。） 我们公司是基本没有贷款的，虽然很久以前银行就给了我们不少额度。 (2018-09-30)

&#x20;01.网友：想请教一下段总如何看到企业举债的问题，觉得现在社会竞争太过于 激烈，如果不借钱，光靠自身积累，可能会错失行业发展的机会，如果借钱，可 能会有驾驭不住的危险。另外，感觉企业成长一定阶段以后，银行，企业，就在 一条船上，可能明知道企业有危险，银行还是会投钱（为了收获前期投入的钱）， 有点像经济中的泡沫，明明知道是泡沫还的维持，直到泡沫最终破裂，不知道理 解对不对。

**段永平：**&#x5982;果没把握还的钱还是不要借的好。(2010-06-10)&#x20;

02.网友：近九成企业有贷款需求. 问一下段先生步步高、OPPO 有没有向银行贷 过款？马云好像说过阿里巴巴没有借过银行一分钱，都能成为这么优秀的企业。 那些要贷款企业贷了款能更优秀？

&#x20;**段永平：**&#x6211;们也不太借钱的，但可能有一些短期贷款吧。早期没借过钱，主要是 因为也没人借给我们。 (2010-06-10)&#x20;

03．网友：为什么有些企业都挺不错，还喜欢负债啊？我个人感觉做企业尽量不 要负债。

**段永平：我们也不负债。负债的好处是可以发展快些。不负债的好处是可以活 得长些。再说，一般来讲，银行都是要确认你不需要钱时才借钱给你的。**

（2010-04-21）

网友 B：我所说的负债不单单指有息货币负债。请问段大哥:是不是关注有息金 融负债就行了，其他负债就不用管了。还有我看到万科的有息负债只有二百多亿， 而它的现在却有四百多亿现金，我以为很安全。请段大哥点评一下。

**段永平：**&#x8FD8;没认真看过财报。如果现金超过负债，那就应该很安全。**我对大多数** **公司的担心是很多公司为了发展快些而去负债，结果某一天因为负债而陷入麻 烦。**&#x4E07;科相对而言还是比较健康的，但似乎对营业额的增长也很有追求。我一般 喜欢那些追求好产品，不太提营业额目标的公司，比如苹果。（2011-09-28)&#x20;

04.网友：想请教学长，您把小霸王和步步高从小做到大的过程中，资金的状况 是怎么样的？大概在哪些阶段需要贷款和融资？还是说一直都是自己滚雪球？

**段永平：**&#x57FA;本上是靠滚雪球，钱多就多做些，没钱就不做。我比较保守，老觉得 借钱不太舒服。再说，那时民营企业很难借到钱。（2011-05-12）

05.网友：巴菲特说过“人生只需富一次”。我觉得，对于人来说，如您所说的 一样，记住不借钱就对了；但如果是对于公司来说，应该可以借适当的钱。<br>

**段永平：**&#x662F;的，rich once 的说法非常经典。我们公司也不太借钱的。（2010-03-18)

06.网友：你主张不贷款，不用 margin，错过了机会怎么办？

**段永平：贷款和用 margin，赚的时候快，赔的时候更快。常在河边走，哪能不 湿鞋，湿一回鞋就湿一辈子，为什么要冒这个险呢？（有些机会总是要错过的， 只要保证抓住的是对的，就足够了。）我们过去的大部分竞争对手都消失了， 我们还健在，道理也许就在此。（2018-09-30)**

&#x20;07.中国民营企业应该怎么应对贸易战的挑战？

&#x20; **段永平：**&#x6700;主要的是取决于企业本身，做得好，有没有贸易战都无所谓。很多做 得不好的企业，会拿贸易战当遮羞布。好的企业，危机来的时候，反而是机会。

我们不贷款，有充裕的现金流，所以每一次危机来的时候都是机会。（2018-09-30)

### 4.不赊账

**段永平：**&#x6211;们好像确实不怎么有收不到的钱。我们比较平常心，收不到钱的生意 我们不做，不管听起来有多好。记得以前有家美国公司倒了国内一家同行 4-5 亿美金。这家美国公司之前也找过我们，一听说我们的条件就走了。呵呵，我是 后来才听说的。（2010-03-26）

01.网友： “收不到钱的生意我们不做，不管听起来有多好。”嗯，你们的条件 主要是什么，能让对方一听说您们的条件就走？会不会是先付款后发货，我猜的。 其实我很想知道您们对应收账款是怎样管理的，或者是您所知道的一些好企业是 怎样管理应收账款的？

**段永平：**&#x6211;们的条件大概就是让对方开不可撤销信用证吧。对方显然是有备而来 的，对我们的条件没兴趣。

别人怎么管的我不知道。早期我们也有过烂账问题，不过比例很小。我其实不知 道我们现在是怎么管的，大概还是我们很久以前定的方案吧。

我们一般给客户的放账额度是过去该客户在我们这一年的营业额的 3-5%，当然 信誉不好的就一点都没了。这意味着一开始的时候是完全没有的。

我们比较平常心，少做生意没关系，收不到钱就麻烦大了。追款的成本非常高， 而且还会对出问题的地区生意造成影响。我已经好些年没听说过有钱收不回来 了。

呵呵，我记得上次（不是这次）金融危机时，有个韩国供应商问我：听说中国三 角债问题很严重啊，我回答说：嗯，我也听说了。隔了半天，他问我，那你是说 你们没有这个问题？我说，对！（2010-03-24）<br>

网友：“收不到钱的生意我们不做，不管听起来有多好。”说得太好了，第一次 创业就因为收不到货款而失败。教训惨痛，从此再也不敢做欠账生意了！

&#x20;网友：按照段总以前说的，那步步高的应收账款应该很少吧？在制造业来说能做                              到这点应该挺难的呀。

**段永平：**&#x5475;呵，真是很少。（2010-03-27)

&#x20; 业务员：我们现款或者预付款，不铺货的。

**段永平：**&#x5475;呵，开始卖手机后听说好像真是这样。（2010-03-28)

&#x20;网友：厉害，很多公司都想，但能做到应该不多。

02.网友：格力听说是先收款再发货的，甚至是预付，牛。

**段永平：**&#x683C;力是好公司，呵呵，难道还有别的办法可以活下来的？（2010-03-3 0)

03.网友：请教学长，对于账期有什么看法？我们创业中遵照本分的思维，成长 得不错，产品的口碑很好。过去受产能限制，供不应求，原则是现款现结，账期 免谈，因此送走了很多潜在大客户。今年产能扩充，有些股东强烈提议接受账期 喂饱产能。我心底有点犹豫，账期带来一定比例的坏账是可以预见的，控制住筛 选标准不会形成太大风险，但是过去行业里都知道我们公司不给账期，现在一旦 开口，怕有蝴蝶效应。您觉得这个问题是不是触及文化基础的事？您的企业在早 期发展过程中，对于放账期是什么态度？

**段永平：**&#x6700;好不要给账期。但是，对你信得过的客户，如果非要给的话，也许按 上一年营业额的 5%-10%（淡季 5%旺季 10%）作为放款上限，而且要收付利息。 这里最重要的是公平，要保证所有的客户得到的条件是一样的，不然会有很多人 会来找你“谈生意”的。利息的收法也不难，你给所有的客户 15 天账期，超过

15 天的付你利息，少于 15 天的你付利息给他们就可以了。具体方法你可以自己 想，但一定要对所有人公平！（2018-10-04)

### 5.不拖付货款

**段永平：**&#x4FD7;话说，好汉不吃眼前亏。我一直不太明白这句话的意思。不过，我看 到的文化现象是大家都不愿意吃亏。我不知道需要合作的时候，如果大家都不吃 亏的话会是什么结局。事实上我们中国人在生意上合作成功的机会好像确实比较 小一些。很久很久以前，我们公司开始提倡“不赚人便宜”的文化。

我不知道我们到底在多大比例上做到了，但我们和人的合作好像成功比例确实要 比平均高一些。也许我们公司能活到今天而且活得还不错的原因和这有点关系？<br>

呵呵，我买股票的时候基本上也是这样。我想买的股票我总是把价格放在 ask 上，卖的时候总是放在 bid 上，只要这价格是我可以接受的。看起来我每一单好 像都可能有点亏，但总的结局一直都还不错。（2010-03-12）

01.网友： 我的理解是，不赚人便宜或者说敢于吃亏，是为了解决一个基本的生 意之道或说管理之道——信任。对于我们中国人来说，“信任”这个资源太稀缺 了啊！缺乏了信任，合作就是空话了！

提倡不赚别人便宜的公司，是值得尊敬的，她至少明确告诉了员工什么是对的（不 赚别人便宜），什么是错的（老想赚别人便宜）。我看到的大多数的公司都是在 以能赚别人便宜为荣，比如一个采购员能拖供应商的货款，是“有能力”的表现， 其结果是……

**段永平：很同意！我们公司财务如果逾期给不了款应该属于“没能力”的表现。**

**早年我当 CEO 时曾在一次供应商会议上向所有供应商提供了我的手机号码，告 诉他们如果有人不守信就可以打我电话投诉。好像一直没人打过。**（2010-03-12)

02.网友：我曾经是ＢＢＫ（步步高）供应商，在合作的几年里，我们每次都能 及时收到货款，从来都不知道你公司财务的电话，现在想来都是我职业生涯中的 骄傲，更是ＢＢＫ无形价值的体现，从与贵公司合作中受益良多！慢慢地理解了 你为什么能在生活中取得如此巨大的成功！

**段永平：** ![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)（2010-03-24）

03.网友：我的问题是凭什么 oppo 可以这么厉害？我们知道过去十年竞争最激烈 的行业就是乔布斯开创的智能手机浪潮，2010 年以前的功能机时代的霸主诺基 亚，摩托罗拉，黑莓等等直接死掉，到了 2019 年的今天来看，这场智能手机马 拉松长跑的胜负大概率已分，当年的那些风口上的猪也大都摔了下来，如果拉起 来名单，可能有十几家比较知名的手机品牌，算上供应链和渠道的企业可能有成 千上万家企业倒闭了。oppo 是唯一一家成功从功能机时代转型智能手机时代的 品牌，并且在这波浪潮里毫无疑问 oppo 成为了一家够分量的国际品牌。据媒体 披露（不知道真假哈）oppo 在 2010 年时候也面临关门的可能性，大道曾经参与 了 oppo 的转型的决策，但明确表示不会重出江湖，亲临一线。到底是什么决定 oppo 可以这么成功？

**段永平：**&#x4F;PPO 厉害是因为 OPPO 有厉害的文化和厉害的团队同时还赶上了好产品 和好模式，其实 vivo 也很厉害啊，原因也是一样的。转型是 12 年中，我没有参 加过转型的决策，但确实参加过一个有点悲壮的会。当时 OPPO 和 vivo 都面临很 大困难，**我们当时不是很确定我们是否能过得去，所以当时大家达成一个共识： 如果我们要倒下的话，一定不要倒的很难看，不要欠员工钱，不要欠供应商钱，** **要尽量保护代理商……我们 12 年没亏钱，13 年没亏钱，但 12-13 年那一整年亏**

**了非常多的钱，到 13 年中终于挺过来了       。**

我明确表示不会重出江湖比这个还要早差不多 10 年，我当时说的意思很简单， 大家都比我能干，如果大家搞不定的事情我也肯定搞不定的，所以我绝对不会重 出江湖的。（2019-05-22）<br>

&#x20;04.网友：想请教您一个关于企业经营方面的问题：在企业经营中我们经常发现 有些企业会尽量占用上游供应商的货款，以保持企业经营与拓展的需要，但是本 人认为这种做法却是不理智的做法。因为本人发现若厂家要多压供应商一个月货 款，供应商就会自动提升报价。若因款期压多一个月，供应商的单价提高

1.5%-2%，若我们将这上升的 1.5%-2%看作是月息的话，那么年息就变成了 18%

（1.5%\*12）-24%（2%\*12），年息 18%-24%是非常高额的利息。请问您认为企业 花这么高额的成本获得资金是理智的吗？

&#x20;**段永平**：你说得对，过长压供应商款是不对的，而且羊毛一定要出在羊身上。我 当 CEO（首席执行官）时是规定过压款不能超过 60 天，不然我们要付利息。我 们从差不多 30 年前就是这么做的了，和是否滋润无关。(2019-07-26)

**附录：（来源：(视频）财富人生—段永平 2004）**

步步高代理商——张源 1：我也是在我们经销商，应该说是第一个就是放弃小霸 王，就是全部这个来做步步高的一个代理商。第一个带头的当时顶着很顶着很大 的压力，因为我在外面接触了很多这种老板的这种合作伙伴，阿段这样就是把这 种诚信落到实处的，确实是就是百分之百贯彻到实处的，确实是很少的。

&#x20; 步步高代理商——邱严杰：有一次我跟我们的一个客户打电话那个时候，然后我 就催他钱，我说，唉，你欠我这么多，你还不给我，我感觉催催钱很正常，做生 意来说催款吗？ 完了当时阿段就在我旁边，就听到我的电话，他说你这个客户 跟你合作了多长时间了？我说大概有两三年了。他就说如果跟你合作了一个客 户，两三年了，你都要这样去拼命追他款的话，那你们这种生意过程一定有问题。

当时我也没往深里想，我觉得做生意你欠我钱我追追，这个天经地义有什么关系， 但后来我真的是想明白这个道理，如果这个生意做到天天我要给你去追你的钱， 完了他还给我说价格卖高卖低，实际上就是双方没有建立起这种足够的信任。

&#x20;主持人：做生意就他就会比较难做，中国人有句古话叫无商不奸，这个诚信现在 做生意的人都是挂在嘴边的，但是其实真正是在实际的操作当中，这个诚信跟这 个利益挂钩的时候，有些时候他可能这个就会屈从于利益的这样一个压力。

&#x20; **段永平：**&#x6211;是这么理解这个问题，就是无商不奸的，奸商是叫无商不奸，无奸不 商，其实是一种小农经济的商，我们小时候学的是那种类似于资本家残酷的剥削， 压榨工人，那个都一定是小商小贩，就是它不可能成气候的！那么他就对企业的 发展是不理解的。我个人理解就是诚信它是作为就我们叫把它叫本分，那么我知

道 GE 它是有一条就叫做 integrity，它是在这个公司所有的企业的核心价值观 最上面的一条，然后他所有的东西它是说都是可以变的，因为环境在变，我们也 必须要变，但是诚信这一条不可以变。我就不是特别明白，为什么到了做生意的 时候到商场上很多人就忘了？你是供应商我欠你钱，你跟我供 100 万货到该给 钱了，说好一个月给或者说好两个月给，到两个月要给的时候，就你说了现在要 么你变成 90 万，要么我现在不给你，或者干脆就不理你了，说我出差或者怎么 样，或者说反正我以后我也不进这个货了，所以我就不理他。<br>

&#x20; 主持人：欠钱的更横是不是？

&#x20;**段永平：**&#x540E;来就是杨白老和这个黄世仁的关系嘛，现在就是这个杨白劳比较横一 点，所以我觉得它这种做法，是一个对企业的理解比较弱，而且像这种企业它未 来的发展会很糟糕，因为信任他的人会越来越少，我们企业能够走到今天一直能 够比较健康的发展，我觉得很重要的因素就是我们建立了一个非常强大的信誉基 础，我们这种诚信的概念是贯彻到很多地方的，包括你对客户对消费者对供应商 对员工对所有跟你相关的人，大家都比较信任你，你就会觉得很多事情都变得非常简单，否则就会非常难。

&#x20;主持人：其实企业本身如果坚持这一点的话，其实自己会最终成为这个事情的一                                                  个受益者。

&#x20; **段永平**：对，我觉得我个人认为是作为企业长期发展来讲是一个它的必要条件， 不是说你老实你诚信你就一定能够做起来，但是你要没有这一点，你早晚会要出                                     大问题。**（2004）**

**6.不晚发工资**

**段永平：**&#x6B65;步高的员工是我们研发、生产经营的主体，对你们为步步高事业做出 的贡献，我们一直心存感激。要营造和谐、相互尊重的工作氛围，尽量改善工作 环境，外部环境不能改变，内部环境我们尽量搞好，十年来我们的工作环境逐步 得到了改善，员工的业余生活也丰富了许多。一直以来，我们说我们公司是学习 型企业，在我们公司工作，不仅要使员工有稳定工作和收入，还要培养人、锻炼 人。不但要提高员工的基本素质，而且要提高员工的业务能力和综合素质，我们 要努力去学习别人先进的管理方法，当然这个学习要付出代价，但不学的代价更 昂贵。要培养合格性，合适性的人才，尽量减少人才流失。市场的竞争到现在是 全方位的竞争，特别是人力资源的组合，如果公司有一天会垮掉的话，我想就在 人才这一块，所以要引起足够重视。（段永平在企业文化培训课上的讲解）

01.引用: 传 OPPO 员工离职后照发 12 万年终奖 主动离职、辞退都 N+1

4 月 19 日，有网友在社交网络上爆料称，OPPO 离职的员工年终奖是照常发的， 其中一位主动离职超过半年的 OPPO 员工就意外收到前东家发的 12 万的年终奖。 从爆料的信息看，一位去年 7 月份从 OPPO 离职的员工，在今年 4 月份突然收到 了 12 万的年终奖。经过询……

**段永平：过去 20 多年都是如此，那是契约精神里的东西，没什么好说的。**

（2019-04-20)

网友：今天看到您转载的文章说 OPPO 发放离职员工年终奖，真的要给 OPPO 点无 数个赞哈！后来看到您评论说你们 20 多年来都如此，真不知该用什么词来表达<br>

对您和您的企业敬意！借用网友的评价，真的把本分做到了极致！之所以会有这 样的感想，是因为我工作的一个公司，说好的我拿所负责业务的 30%提成，但是 老板从去年三四季度的账没完全清要给我（只给了 7 成），今年一季度也没算。 之前都是季度末结清。老板是熟人，当时叫我过来做的时候我一直不来，因为怕 有冲突的时候双方都没有能力处理好。我的问题是，该不该或者什么情况下走法 律程序维权？

**段永平：**&#x8FD9;个问题比较复杂。一般来说，恶人自有恶人磨，最重要的是远离他们 就好。（2019-04-21)

#### 7.不做不诚信的事情

01\. 网友：步步高广告中的视听享受、对产品高品质的执着追求、对消费者需求 的不断满足，本分专注，在别人不屑一顾中坚持不懈。所有这些是构成“护城河” 的要素吗？

**段永平：**&#x6700;重要的是正直和诚信。广告应该不算吧？（2010-09-22） 02. 调查称国产手机大多设收费陷阱，可自动扣话费

**段永平：**&#x522B;的不敢说，我相信步步高和 OPPO 的手机肯定没有！如果巴菲特或者 芒格也卖手机的话，我相信他们也不会有的。（2010-05-09）

网友：对企业文化的理解一直很模糊，忽然觉得企业文化好像是一个企业的品格。 那么它太重要了。

**段永平：**&#x5BF9;啊。作对的事情，然后是把事情做对。对这种不诚信的事我们只有 0 容忍度。这就是所谓的企业文化。

03\. OPPO 手机官方声明 （2010-05-10） **段永平：**&#x5475;呵，刚刚查到的。看来我没说错 \[公告]OPPO 手机官方声明

广东欧珀移动通信有限公司作为 OPPO 品牌的拥有人和 OPPO 品牌手机的生产商， 自公司成立以来，坚守“本分”、“诚信”的企业核心价值观，致力于为广大消 费者提供品质优良的产品和服务。自 OPPO 手机上市以来，以其时尚的造型设计、 优良的产品性能、完善的售后服务赢得了广大消费者的认可和信赖。

鉴于目前手机市场存在部分手机内置 SP 收费陷阱、欺诈消费者、侵害消费者利 益的恶劣情形，我公司特此郑重声明如下：

手机内置 SP 收费陷阱是一种不诚信的行为，与我公司的核心价值观完全背离。<br>

我公司自生产手机以来，就从未内置过此类 SP 收费陷阱，我公司今后永远也不 会在手机产品或其他产品上内置此类 SP 收费陷阱，请广大消费者监督。

最后，我公司对一直以来支持、关心 OPPO 手机发展的广大消费者表示真心的感 谢！ 特此声明。

04\. 网友：想向段老师请教个问题，在中国不少行业都有潜规则的问题，不知道 国外有没有。在有潜规则的行业中，如果不用潜规则，有时和使用这些潜规则的 企业相比而言成本会高不少，但如果使用了总感觉缺乏诚信、不够本分，比如建 材行业中铝合金门，说是 1.2 的厚度，行业内其实一般都是 1.0 的厚度甚至更薄， 但这个行业从上游的型材到门厂的加工到终端门市的销售都类似，请问段老师怎 么看这个问题呢？如果你是从事门厂这个行业的话，会怎么做呢？&#x20;

**段永平：**&#x6240;谓“讲信誉”或叫诚信或本分都是在需要付出代价的时候才能体现出 来。本分的意思就是 1.0 的厚度就说是 1.0 的厚度，句号。（2013-02-26）

05.引用：Warren Buffett Quotes   &#x20;

&#x20;**If principles can become dated，they’re not principles.**&#x20;

&#x20;**段永平：信誉不是讲讲而已**，**只有需要付出代价的时候，才知道谁是讲（守） 信誉的。**&#x539F;则是不应该有时间性的。（2012-11-17）

06\. 网友：我理解企业文化和人的性格一样，一经形成后是很难改变的，不好的 性格虽然平时可能看不出来，但一到关键时刻会暴露无遗，有时造成的伤害可能 会是致命的。段总，请问我这样的理解是否正确。

**段永平：**&#x5475;呵，回答正确，得一分。只有当你需要付出代价的时候才知道你是不 是个守信誉的人。“讲”信誉谁都会，但当需要“守”信誉的时候很多人就不行 了。

网友：周鸿祎发飙：怒批“霸道总裁”余佳文太虚 <http://video.sina.com.cn/view/249735164.html> 这个属于做错的事吧，还是 因为太年轻？

**段永平：不诚信公司大概率不会有好下场**。（2015-08-14）

### 8.不攻击竞争对手

01.引用：为什么手机厂商开发布会都喜欢硬怼苹果？

苹果在全球智能手机出货量当中并非排名第一，但在高端智能手机市场上，苹果 却是毋庸置疑的 NO.1，当然，有些手机在售价上确实高于苹果，比如 8848、motoZ 等，其售价都高于苹果，可市场地位远远弱于苹果，苹果就像一座丰碑一样，矗 立在众多手机厂商的面前…… <br>

**段永平：**&#x5E76;不都是！（2018-06-12）

**段永平：**&#x90C1;闷的是偶尔看到一线的友军在线上攻击展开各种攻击……企业文化贯 彻到神经末梢是一件非常不容易的事情……，我们的“不做的事情”是一个非常 长的表，每一个不做的事情都是有背后的故事和道理和逻辑的，就不一一在此说 明了。（2016-10-12）

02、段永平的博文：《我也是苹果股东》 2017-03-21

**独家专访段永平——“苹果无法在中国战胜我们”**

**段永平：**&#x6211;要觉得我们能干倒苹果，我怎么会买苹果股票呢？我肯定不会说这话 的！再说，**我们公司不会把追求干倒谁过作为目标，也不会把市场份额，销售 数量及排名作为我们的追求目标的。我们追求的就是改善用户体验，做出最好 的产品，其他的都是水到渠成的事情。**

\---刚刚看到一篇文章的标题，很是无奈。（2017-03-21）

网友：我也看到这篇文章了，一看到标题就知道这根本就不可能是您说的话。以 为您没有接受采访，但看到了文章里这句话：“说这些话的人都疯了。当有人讨 论信息不对称时，实际上其内心深处认为消费者都是傻瓜。”觉得像是您说的话。 您是接受采访了？

**段永平：**&#x662F;因为“拼多多”接受了采访，说的都是“拼多多”，顺便问了一下我 们公司的事情。然后就凑出这篇文章了。很无语，但错在自己。已经多年不接受 采访了，本来警惕性很高的，没想到还是掉坑里了。以后绝不再接受采访了，不 管什么情况！老巴很久以前就有规矩，只接受电视采访，非常有道理啊。

（2017-03-21）

03.网友引用：**段永平给营销人员讲话全文**

原文:不攻击对手。我觉得互相攻击是种不健康的行为，做企业要有点风度，攻 击对手恰恰是没有自信的表现。心态上要沾染这些东西，纵然一时得手，将来总 是要摔跤的。靠攻击别人过日子，是得不偿失。其实，每个企业都有自己的长处， 也有自己的短处，宣传自己的长处就行了。

**段永平：**&#x5927;道不记得什么时候讲的了，但内容看着像。至少应该是 20 年多前的 事情了吧？（2019-09-26）

04.引用：**段永平：本色英雄 —《赢周刊》采访全手记**（2004-01-19） 问:你们说你们从不攻击对手，是这样的吗？

**段永平：**&#x8FD9;是铁的规矩。曾经有家对手以“方便谁都做得到，唯有清晰最重要” 来攻击我们，可我们认为这是小聪明，[并非大智慧](https://xueqiu.com/S/SH601519?from=status_stock_match)，其实我们在方便性、清晰度 都远胜于他。当时我判断它维持不了半年，结果三个月就做不下去了，如果做下<br>

去，他们吃的亏更大。我们的市场占有率亦未因此而下降丝毫，因为我们的消费 者是聪明人。这件事我们从头到尾没回应过任何报道，我们认为，就算打死对手， 你也只能分占市场的一部分，而消耗了内力，则成为企业之大忌。（2004-01-19）

### 9.不打价格战

01.网友：小米刚成立时说只做发烧手机，1 年后做了青春版，现在又出了更低 端的红米，不懂雷军想怎样，不看好！我看小米最值钱的也就是开发的一些软件。

**段永平：**&#x4F4E;价是条最容易的路，也是一条最难的路。（2013-08-04）

02.网友：段总您好！（从高端入手真是厉害）为什么说从高端入手真厉害？您 能说说从高端市场入手比低端入手的道理及利弊吗？&#x20;

**段永平：**&#x5F88;少有人这样做的，因为成功率太低。但如果成功的话，成本是最低的。

（2013-07-02）

[**段永平**](http://nteswjq.blog.163.com/)**：**&#x6211;们一直算是高端机吧？这次只是进入智能手机而已。一般而言，我们 只要有足够长的时间，国内好像都是算很厉害的那种吧。相信一段时间后国内买 android 的人多数都会把 OPPO 作为选项之一的。（[2011-07-14）](https://xueqiu.com/1247347556/20317354) &#x20;

03.网友：请教一下学长现在对 android 的前景怎么看呢？您觉得 android 做高 端有前途吗？另外您觉得苹果会不会着力占领廉价手机市场？这样做的话对他 们好处多还是坏处多？

**段永平：**&#x5728;相当长的时间里，android 的量依然会是大的。不能说 android 做高 端如何，但某个品牌用 android 做个很贵的手机出来是很可能的，会买的人当然 要叫那个高端了。另外，在 android 里也有高低端之分。

**苹果大概永远都不会专门做所谓的廉价手机市场，对学弟提出这个问题感到有 点意外，说明你对企业的理解已经和大众很接近了。苹果的策略一直都在那里 摆着呢，做最好的产品，让前面的产品做入门级以及提高级的产品。大概三年 内，当 iphone7 出来的时候，iphone5c 就会变成入门级的产品，大概会卖到 2000 出头，那个时候会有点好看哈。**

另外，iphone5s 绝对是划时代的，不知道为什么那么多人会视而不见？我可以 肯定的是，三星里很多人要开始“熬夜多压力大了”。（2013-09-14）

04.网友：最近有的企业领导要以价格战的方法逼一些品质差，性能差生产的小 企业出局。我的问题是这个市场选择了价格战还是部分企业的主观做法。

**段永平：**&#x60F3;想苹果如果也犯这个毛病会是什么结局。<br>

网友：对啊，这让我想起了当年的彩电价格大战，那时我在赛格三星，其实就是 产品没有差异化的同时产品还严重过剩，我们的玻壳合格率一步一步地提高，彩 管厂，电视机厂就是不赚钱，想技术进步严重缺资金，价格战的大弊端。

**段永平：**&#x6CA1;有差异化的工业品往往容易有价格战。资源性无差异化产品则偶尔会 有惨烈的价格战，比如石油。

网友：优秀企业指的是格力，我理解格力开展促销活动巩固和扩大市场份额的做 法。商业模式很好、成长空间巨大的公司目前还未找到。

**段永平：我不了解格力，但除非不得已，用价格武器总是错的。很少人明白，低 价是不会扩大市场份额的，但被迫降价有机会保住市场份额而已。**

网友：“低价是不会扩大市场份额的，但被迫降价有机会保住市场份额而已。” 这句话应该怎么理解，麻烦段大哥再解释下好吗，我最近刚好有这样的迷惑，同 行的同类产品以我们一半的价格在打，我们量下滑了，排名也下滑了。我想降价， 但又担心陷入降价降质的恶性循环。另外，应该如何定合理的价格，或者说企业 合理的利润应该是多少？&#x20;

**段永平：**&#x5DEE;异化越小的产品越容易陷入价格战。价格战会导致大家为了保持份额 而降价，所以结果往往是大家份额不变的情况下价格下来了。（2014-09）

05.网友：价格战后总会优胜劣汰，胜出的大企业会有合适的利润，是否可以这 样理解呢？我觉得下游面对消费者的组件商才能做品牌.英利目前的一体化感觉 不靠谱，CEO 喜欢军事化管理，我排斥这东西.尚德成本控制一般，签的那个合 同现在看来是很蠢，施喜欢说些空大话.非要选的话还是尚德更靠谱.

**段永平：**&#x4EF7;格战的最后结果往往是优不胜，比如汽车业和航空业。（2011-10-07）&#x20;

&#x20;06.网友：在某些家电领域进入门槛较低，龙头企业通过打一次价格战，扩宽自 己生意的护城河，我个人对价格战的定义就是降售价，大部分或者全线产品降售 价。**想问问大哥，企业啥时候能开这个大招儿**？

**段永平：犯病的时候。**（2014-09-30）

07.引用：**段永平浙大 MBA 论坛超级精彩问答实录**（2010-01-29）

&#x20; 网友：你当年做步步高，能避免价格战吗？

&#x20;**段永平：**&#x6211;们不少企业太短视，动不动就是价格战，说是‘薄利多销’，其实是 低水平竞争的表现。把利润都打没了，就没有可能推动产品创新、研究开发，长 期看消费者也是受害者。他买的东西是便宜，但价值也很低。我们至少做到不主 动打价格战，有时降价是属于被动降价。正因为感到企业陷入价格竞争的负面后<br>

果，所以我希望大家都要着眼长远，走提升价值之路。你看，[可口可乐](https://xueqiu.com/S/KO?from=status_stock_match)和百事可 乐，从来不是互相比降价，而是创造差异化的消费者价值。（2010-01-29）

08.引用：本色英雄 《赢周刊》采访全手记

**段永平：**&#x5728;步步高我做了一个规定，产品定价我不管，但是调价我要管。为什么？ 防止冲动。特别是市场竞争很激烈的时候，市场上会有很多信息。比如说一个消 息传来，说竞争对手调价了，这有几种可能：或者是对方根本没有调，可能对方 调价不是针对我们的，或者是我们本来不应该调价。我们可能会出现误调。每次 出现这种情况我会尽快召集他们开个会，问几个为什么？可能开始时大家都是义 愤填膺的，聊了半个小时之后大家都很平静，这个时候作出的决定可能更合理的。

（2004-01-19）

### 10.不谈性价比

**段永平：**“性价比”其实就是为性能不够好找借口，我也是花了很多年才突然想 明白的。（2017-04-06）

01.网友：那些追求“性价比”的公司恐怕是既没有长长的坡也更没有厚厚的雪 的。段大哥，追求“性价比”的公司为什么会没有好的结果呢？我以前买过“性 价比高”的手机，发现手机质量不够好，经常出一些小毛病。

**段永平：**&#x8BF4;追求“性价比”的公司大多是在为自己的低价找借口。长寿公司大概 是不太强调“性价比”这个概念的，老百姓心里有杆秤。好货不便宜啊。

（2017-03-25）

02.网友：“性价比”就没有未来吗？雷布斯哭了。&#x20;

&#x20;**段永平：**“性价比”其实就是为性能不够好找借口，我也是花了很多年才突然想                          明白的。（2017-04-06）&#x20;

03\. 现在手机（企业）有两种模式，一是小米这种先圈用户，再通过其他方式变 现；二是苹果这样，靠产品本身赚钱。哪种好？

&#x20;**段永平：**&#x9996;先，圈客户的角度，苹果比小米厉害；其次，长远来看，没有什么企 业是靠便宜赚钱的。性价比，都是给自己找借口。一定要把重心聚焦在用户上， 也不是我们非要做高端还是低端，只是把自己能做的事情做好了，满足了一部分

人群的需求。即使苹果，也没有满足所有人。

&#x20;我们早年经常提性价比，直到我有一次跟一个中国通的日本人谈合作说到我们的 产品性价比高时，对方很困惑地问道，什么是性价比，是“sex-price” ratio 吗？我当时就愣了一下，觉得日本人的词典里似乎是没有性价比这个东西的，之 后又花了很久才悟到，**“性价比”实际上就是性能不够好的借口啊。我希望我们 公司不会再在任何地方使用这个词了**。（2018-09-30）<br>

&#x20;04.网友：再请教大道一个问题：您在“不为清单”里提到：不看好性价比。我 的困惑是同等性能，同等体验的产品，通过提高效率，做到价格更低，不是很好                              吗？能再详细解释吗？

**段永平：**&#x6211;该说的都说了，也许你多看几年就明白了？（2019-03-14）

### 11.不做没有差异化的产品

01.网友：很多竞争很激烈的行业。为啥有的公司可以胜出有的不行？难道生意 特性不一样还是人不一样？

&#x20;**段永平：**&#x7B80;单讲，没有差异化的产品是很难长期赚到大钱的。苹果之所以赚到大 钱，是因为苹果是卖 iphone 的，其他同理哈。简单讲一下差异化：就是用户需 要但其他竞争对手满足不了的某些东西。（2018-11）

**段永平：**&#x6211;个人理解，好的公司一般来讲就是能够持续找到用户“差异化”需求 的那些公司吧。如果找不到“差异化”的东西，那“敢为天下后”的产品就会成 为悲剧。所以“敢为天下后”的前提一定是你能够提供出你的用户群需要而别人 没有或不能提供的“差异化”的产品。

“差异化”的东西是在不断地变化的，当大家（很多公司）都有了的“差异化” 就会变成基本需求。有时候好的产品的“差异化”东西不一定需要很多，有时候 哪怕有一个也会让公司（或产品）很成功。

比如，如果你能想清楚麦当劳的“差异化”是什么，也许你就会明白些。至于如 何找到“差异化”的问题，那是“如何把事情做对”的范畴的事情，那可不是一 朝一夕之“功夫”啊。苹果能有现在这些个好东西，那也是 10 几 20 年的积累的 “厚积薄发”而已。（2011-01-10）

02.网友：没有销售部，那你的价格决策机制是什么？

**段永平：**&#x505A;市场调研，在上市的时候就尽可能定准价，错了及时调整。**（电子产** **品）竞争的本质在于产品差异化，要做别人提供不了的东西。没有差异化，就 成了日用基础商品，只能靠价格来竞争，很难挣钱。**（2018-09-30）

### 12. 不参加展会

01.网友：前几天去了趟广交会，是第一次，好奇之下就搜索参展商看看有没有 学长的企业，发现没有，而且很多国内的名牌都没有，但是有格力的。想请问一 下学长，您以前公司小的时候参加过广交会吗？小公司的新产品用什么方式推广 是您认为最有效的？

**段永平：**&#x6211;们不去任何这类展会的，包括拉斯维加斯的 CES。这种推广的办法对 推广品牌事倍功半。小企业一旦开始用这个办法找生意后，很可能就会很难发展 品牌了。（2013-10-27）

网友 l：参加展会，我的理解会出现迷失，因为会发现别人有很多东西很新很好， 那么就想也学过来，这样会从客户需求上迷失；如果真的达成生意的话，那么会 迷失不再去关注用户需求，只需关注大客户订单需求，我是这么理解。

**段永平：**&#x6211;说的是我们公司的产品不摆展，人还是应该去看看的！（2013-10-28）

02.[快讯：报道称微软将向国际消费电子展说“不”](https://xueqiu.com/S/MSFT/20606838)

（i 美股讯）美东时间 12 月 21 日消息，据美联社报道，微软公司周三表示，2012 年美国拉斯维加斯国际消费电子展（CES）将是该公司最后一次参展 CES。报道 称，微软将会在自己的发布会投入更多精力。（John）.

**段永平：**&#x5FAE;软终于明白去 ces 是件费力不讨好的事情了。苹果早就明白了，我们 公司也算一开始就知道地。现在还有很多国内公司每年在 ces 劳民伤财，希望他 们能再想想。

03.网友：网易拒绝参加文博会（是想做成 ChinaJoy 中国国际数码互动娱乐展览会）， 也有个性

**段永平：**&#x5475;呵，我想网易是对的。（[2011-12-22）](https://xueqiu.com/1247347556/20608393) &#x20;

### 13.不弯道超车

01.怎么看待中国企业爱弯道超车？

**段永平：**&#x41;laska 有句话，shortcut is the fastest way to get lost（捷径是 迷路的最快的办法。）不存在什么弯道超车的事情，关注本质最重要！不然即使 超过去，也会被超回来。（2018-09-30）

02.网友：如何看待企业的跨越式发展，弯道超车。 **段永平：**&#x63D0;高翻车率的有效办法。（2019-02-14）

03.网友：10 年来，一直关注步步高。10 前我在想什么时候 BBK（步步高）， 可以超过松下？现在楼主可以回答吗？

**段永平：**&#x4E0D;知道啊。希望不用万年，呵呵。我们现在早就不用超过谁来当大目 标了，超越自己比较好些。我们只要能更健康更长久就行。（2010-03-30）

&#x20;04.网友：段大哥能说说研究公司方面的一些技巧吗？<br>

**段永平：**&#x505A;了 20 年企业，一直找不到技巧（2010-05-04）

05.引用：先成为“职业棋手”再说  ——《21 世纪经济报道》

&#x20;**段永平：**“下围棋取胜最大的秘诀不是如何下出高招，而是能够自始至终下出本 手，不出错，而等着对手出错。**办企业也一样，你看死掉的企业哪一家是被别人 打死的？还不都是自己犯错死的！世界上长青树企业，哪一家不是中规中矩地 按照企业规则在操作？大浪淘沙，在中国，最终在世界上能够站住脚，能够真 正做大做强的一定是严格按企业规则办事的企业家。**&#x8FD9;就像只有九段棋手才能下 出职业九段的围棋来一样。” (2001-11)&#x20;

06.There are no shortcuts. There are no hacks. If you want to take the easy road，I promise you: it's longer and more painful than the hard road.

**段永平：**&#x4E0D;存在什么捷径。不存在什么窍门。如果你想走轻松的路，我保证：它 比艰难的路更长更痛苦。（2019-07-30）

#### 14.不收购和兼并

01.网友：对企业来说，“做对的事情”是如何判断的？譬如，吉利收购沃尔沃， 联想收购 IBM pc 部门等。是否回过头来，还是依据我们对企业文化的理解，相 当于自己在做企业？

&#x20; **段永平：**&#x7B80;单的东西不容易啊。

“做对的事情，把事情做对”就是简单不容易的典型代表。 其实从外人的角度来看，我无法判断吉利的收购案或联想的收购案对他们来讲是 否是件对的事情，但他们最后自己都会知道的。 **关于并购，我可以讲一个我的简单理解。如果当有人本着“大不一定强，不大 则一定不强。所以要做强则先做大。”的想法去并购的话，那结局一定是很难 看的。 韦尔奇的自传里写过一些关于并购的原则，你有兴趣可以去看看。** (2011-01-25)

02.网友：美的它发展很快，不可否认它的收购和并购都很成功，你估计步步高 会不会这样做？或者继续练好自己的内功？

**段永平：**&#x6211;们不会走 M\&A，就是收购和兼并这条路去发展。我们这种办法短期看 来好像慢很多，但从 10 年 20 年的角度来看，有可能是最快的。（2010-03-25）

03.网友：吉利买下沃尔沃轿车品牌，联想买下 IBM 笔记本品牌，海尔将三洋 中华区品牌买下来。请问段大哥，品牌还能这样出售吗？万一收购方将品牌越 做越差，不是更影响未出售的品牌和产品。到时连叫停的权力都没有了。

**段永平：**&#x4F60;是为买方着急还是为卖方着急？**一般来讲多是只有错买没有错卖** **的。你说的这几个例子也是如此，卖方没啥要担心的**。（2016-11-25）

#### 15.不多元化

**段永平：**&#x6211;们每个事业部都是高度独立和专业化的，都非常专注于自己擅长的领 域。我们不会为了多元化而多元化。（2010-03-09）

01.网友：段哥，美的在做空调还有电磁炉、豆浆机等小家电，不少人说它不够 专一，那步步高现在除了手机、学习机也在做小家电，想听您谈谈对多元化的理 解。

**段永平：**&#x6211;们这些不同大类的产品都是不同的公司做的，完全独立的不同的团队， 不会为其他产品分心，所以不是多元化的产物。

我不赞成一般意义上的多元化，尤其不赞成为多元化而多元化的多元化---有很 多公司在经历一段不错的发展后，为了分散风险，开始搞起了多元化，结果其中 有些公司很快就不用再担心风险的问题了。（2010-09-20）

**段永平**：A 股有些公司就有这个问题，看着利润不错，可老是不知道公司会怎么 用这些钱。一看他们多元化我就有点晕。(2010-05-23)

02.网友：谢谢段总的回复。段总在博客上的文章和回复值得反复阅读，常读常 新，特别是在心静的时候、杂音过后的时候阅读效果更佳。有些问题我还不知道 自己不知道。段总的一些观点背后的逻辑与道理，需要常思常想，才能明白一二。

“c.渠道成本低。呵呵，不是同行的不一定能明白这话到底有什么分量（同行也 未必明白），**我是 20 年前从任天堂那里学会的。那时很多做游戏机的都喜欢做 很多品种，最后下场都不太好。**”----这句话，我想需要想很久才会明白一点。 我发现，没有理解的地方往往就是读了之后，过一周、二周就会很容易忘记的内 容。某天翻出来再读时，发现原来段总早就说过了。

**段永平**：常思长想是很重要的，你能有这个体会说明你真的想了。

我说的很多东西都是经过很多年思考得出的结论，虽然未必都一定对，但多数都 是蛮有道理的。

“**最后下场都不太好”这句话下面是躺着无数企业的，看不到这句话的意思确 实有点可惜。**（2013-02-14）

03\. 网友：段总，您好，请问您对 tcl 这些年无论在经营范围或者在经营地域， 都实行遍地开花的做法是怎么看的，自知不是一个好问题，不过，真的觉得 tcl 这种经营方式挺值得探讨的。说白了，我是想问，他们似乎也一直在努力，怎么 利润回报就不理想呢？他们的经营业绩是不是开始有转好的迹象，即将进入收获 期呢？<br>

**段永平：“一直在努力”就一定有利润？ 先要做对的事情，努力才有用。**

（2010-10-14）

04.不明真相的群众: 杰克韦尔奇本人，他的“战略”我也是有疑惑的。他入主 GE 早期做的一些战略，看起来是不错的，主要是聚焦、做减法，但到了晚期， 又走回去了。

**段永平**：这个我同意。**我当时一直都说，从来没见过企业多元化成功的例子， GE 是个例外。现在看来，时间长了都不行哈。**（2018-09-21）

05.网友：偶尔会听到一些人说“ less is more”（包括在网易云音乐上私信与 丁磊聊天时，他也说过），我自己也思考过这句话。但还是想听听段叔叔你的理 解和看法。

**段永平：**&#x5C31;是专注的意思。（2013-08-16） &#x20;

06.网友：最近有一家很著名的 PC（个人计算机）厂商说，在今后每年要推出 50 款智能机器。 一般来讲，大家都知道苹果这样机型越少越好，为什么有些厂商 还要进行“机海战术”呢？他们是出于什么考量呢？

**段永平：**&#x82F9;果现在一年都要推两款了，说明用户的需求比较分散。推 50 款基本 是技穷的表现，东西绝对好不了。（2013-09-16）

网友 O：有些公司精品战略，有些机海战略。两者各有难度，难度点不一样。我 观察到的一点是：精品战略做得好的公司比机海战略做得好的公司的资本效率和 回报率要好得多，不是一般得多。

**段永平：如果大凡你能做好一样东西，你为啥还要做很多做不好的东西呢？不 过，确实有些会因为做了一些好东西后就以为自己啥都能做好，于是就开始做 一些自己做不好的东西了。人的精力是有限的，聚焦的人或公司最后会变得很 厉害，这也是我喜欢苹果的原因。（2013-10-17）**

网友：**如果大凡你能做好一样东西，你为啥还要做很多做不好的东西呢？---- 这个好问题值得我思考十年。**

**16.** **不关注市场占有率，不关注销量排名**

01.网友：请教段老师一个问题：现在很多企业的目标是做行业的第一名、做行 业的霸主，但感觉段老师在谈到步步高时从来没提这种口号，而是谈到做出消费 者喜爱的产品，也是段老师常讲的消费者导向。这两者有什么区别吗？

&#x20; **段永平：**&#x597D;像区别还挺大的，一个是因，一个是果。“行业第一”好像对消费者 而言并没有实际意义，很少有用户是因为看到你是“行业霸主”而买你东西的。<br>

所以总的来讲，我们最关心的只是消费者体验，而不是行业排名，不然可能就容 易犯一些很奇怪的错误，比如发动价格战等等。也许这也是我们“胸无大志”的 体现吧。 不过，貌似我们坚持做的很多产品最后据说都成了“行业第一”（其实没认真考 证过，没有权威数据），比如最早的小霸王学习机，后来的步步高 VCD、DVD、 电话、复读机、点读机等等。手机恐怕需要的时间会长很多，对手们很厉害啊。 想想有一天可能要和苹果或诺基亚 PK 一把还是很兴奋的。（2010-10-15）

02.网友：根据知名市场调查公司赛诺的数据，今年 2 月份，3G 手机销量前 5 名 中，有 4 个是国产品牌，只有 1 个是国际品牌，即三星。不过，三星在 3G 手机 中的份额较大，为 19.4%。后面的第二名华为至第五名酷派则差距不大，从 13.4% 至 9.6%不等，这几家企业正好是号称“中华酷联”的四个主要国内手机品牌， 即华为、中兴、酷派、联想。请问阿段怎么看国内手机市场未来发展？

**段永平：**&#x7528;眼睛看，也用心看。我们公司应该对销量排名兴趣不大，尤其是要亏 钱的销量还是不要的好。（2012-04-20）

03.网友：段总，为什么市场占有率不是很重要？不是太明白。

网友 s：看来“市场占有率”和“利润”一样，只能看成做对事情的结果，如果 整天盯着看，动作就会变形啊。满足消费者需求，创造价值才是正道，像诺基亚 这样的公司还犯这样的错，可见要做到真不容易啊。

&#x20;**段永平：**&#x54C8;，说得好。眼光盯住“市场占有率”确实会导致公司做一些本末倒置                              的事情。（2010-10-08）

网友 j：我来说一句，占有率只是个数字，不能阻止 OPPO 超越诺基亚。 **段永平：**&#x662F;否超越谁并不是我们的目标。最重要是做出好东西给用户。

（2010-10-08）

04.网友：低端市场是指完全依赖价格的一个市场，这群人没有品牌忠诚度，哪 个便宜买哪个，因此就算今天有了这群人买，明天另外一个品牌降 10 块钱，他 也可能会换别人的，面对这种情况，你只能再降价，到最后只能牺牲质量，否则 就没办法要这个占有率。

所谓高端是指必须有个性化，oppo 手机卖点在音乐手机，突出“音乐”，音质 好，抖动也不影响音质等等，那么会有一群喜欢音乐的年轻人愿意高一点价格买， 这群人就相对忠诚，所以现在积累的占有率也不容易掉下来，大概是这个意思。 呵呵。

**段永平：**&#x5360;有率是结果，不是不重要，但不能盲目追求，否则以后有麻烦。有点 像 GDP 哈，不是不重要，但不能盲目追求。（2010-10-08）

网友：段总，言下之意是否是不应该把追求市场占有率放在首位，而应该把提高 产品的质量放首位呢？如果后者放首位，达到前者是自然的事？<br>

**段永平：**&#x770B;看 iphone 和诺基亚就明白了。（2010-10-10）

网友：诺基亚有很多品类产品，我印象里都有这个策略，低端占市场，中高端挣 利润。如果没有 APPLE，我觉得似乎 nokia 还在高端市场有好日子过。其实，早 几年 nokia 也转向了移动互联网领域，战略上似乎没有错。只是迟迟没有打开这 个市场大门，因为用的还是原来的常规武器，不是像 APPLE 这样的颠覆性的 ， 重新定义了手机的 iphone。

&#x20;**段永平：**&#x8FD9;是诺基亚的大错之一。从他们推出低端机开始我就猜他们会有今天了。

（2010-10-15）

网友：诺基亚当时做手机也是很多机型共用一个模具，是不是也算聚焦的企业， 怎么就遭遇滑铁卢了？

**段永平：**&#x8BFA;基亚聚焦在“提高市场份额上”了，岂有不败之理？（2013-02-26） 网友：诺基亚手机为啥死掉了？&#x20;

**段永平：**&#x5F53;时诺基亚一年出大概 50 个机种，岂有不死之理？！

说个小故事，大概 2001 年前后，我还在读中欧时，曾经跟班上一个诺基亚的同 学说过，我觉得目前的诺基亚有蛮大的问题，反映到诺基亚北京总部后，对方说 有兴趣听听，让我去。我当时觉得他们的问题为什么要叫我去呢，架子很大嘛， 所以我没理会。当然，就算说了也未必会有用的。当年 Motorola 的一个中国负 责人倒是确实飞过来找我聊过他们的问题，但结论是：你说的有道理，但控制权 不在我手里，改变不了啊。

其实无非就是要做对的事情。出 50 个机种显然是不对的，有时候一个不对的事 情就会要了他们的命啊，结果也证实了这点。（2018-10）

05.网友：联想 3 年：如何走出阴影？

在 PC（个人计算机）上的市场份额跃居至全球第二大的联想集团，如何走出行 业领先者和技术变革的阴影，成为一家拥有未来的公司？ 中国最大的 PC（个人 计算机）厂商联想集团距离自己的梦想似乎又近了一步。在过去 3 年的时间里， 它的表现堪称神奇。 这家吞下 IBM PC 业务立志成为全球性……

**段永平：**&#x8FD9;么长的文章好难看。**靠低价得到的份额实际就是阴影本身，很难走出** **来的。看看诺基亚就明白了**。（2012-02-19）&#x20;

**0**6.惠普 TouchPad 平板市场占有率第二 三星排第三

IPad 之外各大平板电脑市场份额新浪科技讯 北京时间 11 月 22 日凌晨消息，市 场调研机构 NPD 周二发布了一份报告，显示了目前除了评估 iPad 之外，其他平 板电脑的市场占有率情况，而排位第一的居然是即将绝版的惠普 TouchPad。尽 管平板电脑已经成为了众多 PC 企业……<br>

**段永平：**&#x8FD9;是对市场占有率含义的最好解释的案例--除了 ipad 以外，占有率最 高的亏得最多。**很高兴我们的 pad 没敢推，理性面对现实的勇气有时候还是会 有回报的。**（2011-11-24）

07.网友：在乎市场占有率（市场占有率就是客户的接受程度啊），和“太”在 乎市场占有率，我们能如何区分呢？ 段老师能否再指点一二。

**段永平：**&#x5E02;场占有率是果不是因，在乎也没用。（2010-10-16）

08\. 网友：请教一个企业初期发展策略的问题。现在很多企业在初期发展阶段都 会采取跑马圈地的策略，就是抢市场，抢客户，抢店面，抢位子（或者叫卡位子）， 即使赔钱也这么抢。这种方法的风险很大，很可能消化不了而撑死。但是不抢又 不行。如果依靠稳打稳扎，步步为营，逐年累月的积累，时间会很漫长。别人都 在跑马圈地，都在抢，你如果不抢，到时候会发现市场的每个角落都已经站满了 人，生存空间会很狭小。最要命的是不是每家跑马圈地的都会死掉，如果不死的 话，那就是一个巨无霸，到时候还是会把缓慢扩展的“乌龟”给吃掉。请问段兄， 您怎么看这个问题。这个问题好像很普遍。门户网站当年都是这种烧钱模式起家 的，现在淘宝也算先圈地后盈利吧。

**段永平：**&#x4E0D;是很清楚你想问什么。现在由于资本市场的帮助，节奏确实快了很多， 可原则的东西还是一样的。跑马未必就一定能圈到地，不然 YAHOO 就不会那么困 难了。跑自己的马帮人圈地的例子我倒是看到了不少。（2011-01-16）

网友：主要是问您怎么评价这种圈地策略，并且为何“伟大企业中”为什么大多 数是“不圈地”的。我已经想明白了：因为“圈地”的风险要远大于“不圈地” 的风险，所以活下来的肯定是“不圈地”的居多。但是死去的公司中，“不圈地” 的并不一定少于“圈地”的。您说是吧。

**段永平：**&#x5C11;用类似“圈地”这种定义不清的东西，实际上我不知道你说的“圈 地”到底是什么意思。当年的“跑马圈地”的定义是非常清楚的。（2011-01-18）

09.网友：根据 IHS Technology 的调研，中国智能手机市场 2015 年 Q1 的销量达 到 9900 万台，较上季下跌 5.6%。小米以 1420 万台的销量继续领跑 但是 oppo 8%+vivo 9% 17% 客单价和份额加起来领先小米 4%确实很强，做到本分不张扬确 实不简单，也验证了段大哥在波士堂里面说的自己公司进入行业 会最终进入 top 前列。

**段永平：**&#x5176;实也简单（但绝非容易），认为自己进不了 Top 的就不进去这个行业， 另外长期进不了 top 的早晚也会被淘汰的。（2015-04-28）

10.网友：“2012 年，小米共销售 719 万部手机，作为对比，在此之前雷军曾在 另一场合透露，今年小米手机的销售目标是 1500 万台。”这样设定目标的方法， 会不会造成企业过分追求销售额，过于“市场导向”呢？貌似没有听过苹果说明 年要卖多少台产品 （或者我记错）？<br>

**段永平：**&#x5C0F;米 1500 万台应该没问题的。不是这个行业的人也许不知道这是什么 意思。苹果自己应该也是有计划有目标的，但销量不是目的，而且是在原则之下 的，不是那种为了销量不顾一切的意思。任何公司都应该对自己的生意有个概念 的，不然怎么可以看得长远？（2013-04-10）

11.网友：步步高，oppo，他们每年会如何定目标，会定每年做多少营业额吗？ **段永平：**&#x6211;们好像从来就没有太具体的目标。(2013-12-19 )

### 17.不盲目扩张

01\. 丰田汽车怎么了？（2010-02-09）

**段永平：**&#x4E30;田汽车最近的大规模召回可能会对丰田品牌造成长期致命的伤害。如 果不召回呢？那将彻底摧毁丰田。那丰田该咋办？没办法，因为错在前面。不知 道到现在为止丰田的同学们找到原因没有？我猜的理由忒简单，就是跑得太快 了。经过很多很多年的努力，优秀的丰田在销量上终于成为了世界第一。在成为 世界第一的过程当中，丰田经历了一轮又一轮不停且快速的扩张。谁开得太快都 危险，丰田也不例外。也不例外的同学还有：花旗，雷曼兄弟，AIG，蒙牛…… 我这键盘怎么没有顿号呢？一路逗号打得好难受。本来就没学过怎么用标点符 号，好不容易有个会用的还找不到。例子不多举了，以后大家开车慢点，一定要 打安全带哦。（2010-02-09）

02\. 网友 S：企业为什么这样，段总肯定比一般人更清楚啦。

**段永平：**&#x4E30;田今天道歉时就是说他们的问题是发展太快造成的，呵呵，和我说的 一样。知错就改的就是好同志，丰田是家好公司啊，可惜股价没怎么掉，不然说 不定也是个好机会。（2010-03-01）

02.网友：又看了您先前的部分视频，里面那句“我总是避免在车速 200 码且前 面有堵墙时那种场面做选择”！不知段总是君子不立危墙之下，还是做事成竹在 胸？&#x20;

**段永平：**&#x5982;果我没记错的话，那是在北京电视台的一个“危机时刻”栏目里讲的。 主持人问我对这个栏目有什么意见或建议时，我说我觉得这栏目或许应该叫危机 意识，因为当你开着 200 公里时速的车突然发现前面有堵墙时，其实除了祈祷以 外没啥事可做，而且结局也不会有什么不同。所以最重要的就是别开那么快，记 得打安全带等等。（2011-07-14）

03.网友：您老讲 500 大，那能否对您认可的世界 500 强举例讲讲为什么？

**段永平：**&#x35;00 强就是 500 大，因为这是每年根据营业额统计出来的东西。我认为 如果为了追求进入 500 大而盲目追求营业额是危险的，但自然达到则是健康的。<br>

自然成长而进入 500 强的公司往往能呆在里面的时间要长很多，而为进 500 大而 跑进去的往往呆不长就又出来了。（2010-04-30）

**段永平：**&#x628A;“大”和“强”等同有点像把肥和健康划等号一样。（2013-10-09）

04.网友：我这几天跟这个伙伴沟通过多次，感觉他说的比我的想法还是要好， 现在还是要不断地增加销售渠道，只要店多一点，首次生产 100 件这个最低生产 量分到每一个店去也没多少，积压的问题应该不大。

&#x20;**段永平：扩张的时候要谨慎。我把这个叫足够的最小发展速度，就是兼顾足够 和安全的意思。多数人在扩张时用的都是所谓的最大速度，最后一个不留神就                             翻车了。（2011-04-09）**

&#x20;05.网友：你是如何评论山下俊彦这个人的？你认可他的进攻式做法吗？

如果你是松下的老总，你是继续松下幸之助的保守方式，还是采取山下俊彦的进 攻方式？

**段永平：**&#x4E0D;是很赞成你把他们分成进攻和保守的说法。一个好的运动员应该是能 攻能守的，企业也一样。（2010-10-28）

06.网友：上周自驾出游，为了在唯一的好天气前赶到黄山，一路超车，结果在 一个弯道右侧上坡超车时，只差一线线就和对向车撞上！！现在想起来还头皮发 麻，越想越后怕。没想到差点要付出生命的代价才懂一点：在安全的前提下开到 尽量快。

**段永平：**"在安全的前提下开到尽量快"？说明你依然完全不明白！我以前说过的 是“足够的最小发展速度”。 ( 2013-06-04 )

网友 K：也是我的困惑，是不是因为我们没办法判断和掌控是否安全？ “足够 的最小发展速度”没看得很明白，不知道段大哥能否举个例子。

一直在体会“慢“和”快“的问题，但有一些行业似乎市场的先机很重要，一些 行业，如果渠道先被别人先占坑了，后进入者再去替换渠道成本非常高，在一些 市场时机到来的时候似乎必须得快。而在比如用杠杆这些方面，我是明白了”开 慢车“的道理。

**段永平：**&#x4E3E;个开车的例子：如果你需要花 1 个小时开车去一个不能迟到的会议， 你留多少时间开车？开多快？他说的＂安全＂是自己主观的观点，差点出事事他 正是在用＂最快＂的速度，所以危险。( 2013-06-05 )

网友 n：足够的最小发展速度！这个太受教了。我的理解，重点是 ‘知足’， 请教大道兄，这个理解是否对路子呢？

**段永平：**&#x6838;心是安全，在投资里其实就是复利的意思。( 2013-06-06 )<br>

网友 z：今天再读芒格：理解复利的强大和难以达成是理解一切事物的精髓。发 现其实这句话和段总＂足够的最小发展速度＂是想通的。“核心是安全，在投资 里就是复利的意思”说得太对了。做人做事都是如此，不积跬步无以成千里。现 在内心感觉平静了许多，像刚去完教堂一样。

07.网友：您曾经说过“最小发展速度”这个概念，我找到一个资料说是您早期 经营步步高时的培训资料里讲到：“以足够的发展速度成长，即保持国民经济发 展速度的五倍左右发展，成为国内同类产品的前两名”，我觉得这话不太可能是 您说的，私下我们交流过几次，包括“不太慢的发展速度”等，但他还是坚持， 希望能得到您的回答。

**段永平：**&#x6211;说过足够的最小发展速度，强调的是最小和足够而不是速度。当时公 司还小，发展比较快，会容易有越快越好的想法，所以我才这么说的。就好比开 车，速度是可选的时候，我们总是希望选个安全的速度而不是最快的速度。

（2018-12-22）

**引用：（来源：(视频）财富人生—段永平** **2004）** 主持人：一如既往地走得很稳健，不追求一种就是别人眼中的一种高速度，安全 抵达是最重要。

&#x20;**段永平：**&#x5BF9;，我觉得那个没有意义，你比方说开车上班？谁会说开快点撞死算了，                                                        对不对？ 我就假设开半个小时的车上班，家人跟你说什么，都是说开慢点注意安全，他没                       有担心你去不到那个地方， 但是呢，这个……媒体啊包括过很多百姓，包括很多企业自己都是这种心态，说

开快点撞死拉倒没关系，哪有这样做的呢，但是很奇怪，很多人都追求这个东西， 大家鼓励的都是开快，大家宣传的也都是开快啊、说谁开得快啊、所以我就一直 觉得很滑稽，这个事情其实还不光是中国的企业有这个毛病，美国也一样，但是 好的企业它会比较理性，才会追求一个很均衡的发展。但是你看有很多小的企业， 刚开始的企业，他说的都是我如何如何快，但是你综合他十几年几十年的历史， 你发现它其实并不快，倒过来讲很多人还完蛋了。比方说刚开始起来的很多公司 发展好像看起来都比我们快，十几年过去了以后你再去找他了，没了，有些三年 就没了，有些五年就没了，但是还没有多少家能够做到现在的。所以一个企业做 到十几年总是有它一定的道理。（2004）

引用：**段永平：本色英雄 —《赢周刊》采访全手记**（2004-01-19）

&#x20; 问：你曾经以开车来说明自己的平常心，你认为企业应以怎样的速度发展？

&#x20;**段永平：**&#x6240;谓平常心开车不是让你慢，是不能过快。停在那里肯定是不行的。开 车开多快才最合适自己或是企业？不能用速度来衡量，而应该用心态来衡量。很 多人超过自己的能力在开快车，这就很危险。我们的企业上得了高速公路，一定 就不是辆破车，但上了高速是不是一定要开快车？不一定。如果时时开快车，出 问题的概率就高了。**本分也不意味着就是要慢，而是强调要安全。在安全的情况**<br>

**下选择最快。**&#x6211;开车的时候，用了一个办法就是设一个上限，限速 150 公里每小 时，我的企业也是一样。我天天上班正常速度开车用半个小时，如果开快车只用 20 分钟。但是如果每天都这样，很可能会有一天你就不在这道上出现了，这是 不合算的。你的技术、你的车况你自己最清楚，不能和别人比。你的企业该以快 的速度发展，只有你自己知道。**在安全的情况下选一个适当的速度，这就是平常 心。企业里不同的部分组成一个桶，某一块板太长是没有任何意义的，是浪费； 太短，则要补上。光速度快没用，决策人应该明白，企业其实是最弱的那个方 面最重要。**

08.引用： 2007 年《南方人物周刊》采访手记

问：你常常说的一句话，“fast is slow 快就是慢”。这是你看到很多企业教 训的总结吗？

&#x20; **段永平：**&#x8FD9;是我对企业最基本的一个理解：快不是目的，安全准时到目的地就行 了。本来这是大白话，但是真正很少有人做到这一点。平常人是很难有平常心的。

09\. 对话李嘉诚：不疾而速

本文来自：《全球商业》：大家都很好奇，你从 22 岁开始创业做生意，超过 50 年，从来没有一年亏损，而且还一步步成为华人首富。如何在大胆扩张中，不翻 船？ 李嘉诚：想想你在风和日丽的时候，假设你驾驶着以风推动的远洋船，在 离开港口时，你要先想到万一悬挂十号风球（编按：中国香港以风球……

**段永平：**&#x4E0D;疾而速! 这个说法也很好。（[2012-01-04）](https://xueqiu.com/1247347556/20642630)

**18.不赚快钱**

01\. 网友：该怎样学习本分呢？

**段 永平 ：** 本分是骨子里的东西， 应该不是学来的。 比如借钱要还等等。

（2016-06-19）

&#x20;网友：段总，本分的问题应该是适用在企业每个员工吧！那这个本分问题可以分 大小吗？比如公司总经理呢，什么样的问题才叫不本分？那我听说步步高里面不 同岗位本分也不一样，比如总经理赚了不应该赚的钱是不是不本分？纠结中！

**段永平：**&#x8D5A;了不应该赚的钱当然就是不本分。虽然大部分人认为有钱赚就行，但 我们公司是属于知道有些钱是不能赚的这类公司。如果这类公司越来越多的话， 消费者就会安心很多。（2010-03-29）

02．网友：价值投资中，用 100 万获得 1 个亿，是否和本分文化得价值分配不符 合？<br>

**段永平：**&#x672C;分我的理解就是不本分的事不做。所谓本分，其实主要指的是价值观 和能力范围。赚多少钱不是我决定的，是市场给的。呵呵，谋事在人，成事在天。 本分的意思是不干不该干的东西。知不知道什么该干是能力问题，明知不该干还 干是作风问题，赚了不应该赚的钱当然就是不本分。虽然大部分人认为有钱赚就 行，但我们公司是属于知道有些钱是不能赚的这类公司。如果这类公司越来越多 的话，消费者就会安心很多。（2010-03-25）

03.网友：我觉得马云和王石对“成为一个什么样的企业”思考的挺多的，而不 仅仅是着眼于赚钱。这有点像教育孩子，国内太多的家长总教育孩子如何活的更 好，而不是为什么活和活成一个什么样的人。在这学习一段时间后，越来越发现 看企业越像看人，许多东西都是相同的。

**段永平：**&#x5176;实真正好的能持续经营的企业大多都不是着眼于利润的，利润不过是 水到渠成的结果而已，就是所谓让利润追着自己跑的那种。（2011-01-28）

网友：利润导向从表面看是没什么错的，好像作为一个家庭的男人，你要拼命给 家里搞钱养活老婆孩子，如果不以利润为导向，男主人拼命把自己所从事的工作 搞到最棒，其实钱的问题会自然解决掉。

&#x20;**段永平：**&#x5982;果没有“取之有道”的约束，利润导向很容易不择手段。国内现在这 个问题实际上非常严重。（2010-06-09）

04.引用：**段永平：本色英雄 —《赢周刊》采访全手记**（2004-01-19）

&#x20;问:你提到步步高企业中的核心价值观有“本分”两字，尤其讲究信誉和道德， 在恶性竞争的市场中，你们不觉得吃亏吗？

&#x20;**段永平：**&#x6211;们提倡好汉能吃眼前亏。不赚不该赚的钱。**我们有“三不嫌原则”：** **违法的钱不嫌，有违道德的钱不赚、超过自己能力的钱不赚**。前面两个很容易理 解，第三个，我拿开车来比方。企业跟赛车手不一样，赛车手撞了车只要人没事， 明天会有另一辆车开。我们做企业不一样，哪怕你个人不怕死，但是你只有一辆 车，也就是说企业只有一个，今天撞了车，明天就再也没有车开了。石家庄市场 有一次发现竞争对手跟消费者放风：步步高倒闭了，它的产品不行。当时不少人 想予以还击，可我却稳如泰山。谣言终归不攻自破，而对手哪怕是赚了眼前的钱，   也一定会吃未来的亏。（2004-01-19）

#### 19.不虚夸产品

01.网友：近两年我最喜欢的广告语是：“充电五分钟，通话两小时。”简单明 了，直指要点，郎朗上口。

&#x20;**段永平：**&#x54C8;，有人说：“充电五分钟，通话三个半小时”，然后他破产了，为什                                  么呢？（2018-08-24）

网友：用户不是傻子。用户需要的是真实的体验而不是所谓的数据。广告传达的 应该是产品能够给用户带来的真实的体验。如果一家企业首先就没有做对的事 情，还一心想和同行比高低，和用户耍小聪明，广告是把双刃剑（这个比喻真贴 切），广告语若是言过其实的话，吆喝声越大死得越快。

02.**段永平：**&#x5E7F;告只是把产品的功能发掘或展示出来，而不是赋予产品功能。广 告是效率导向的，就是把产品本身用尽可能高的效率传达给你的目标消费群。**最 不好的广告就是夸大其词的广告，靠这种广告的公司最后都不会有好下场，因 为消费者长期来讲是个极聪明的群体。**&#x5E7F;告能影响的消费者大概只有 20%左右， 其余全靠产品本身。（2010-04-21）

**段永平：**（外界）有个误解，以为我们很看重营销。其实对于我们来说，营销一 点儿都不重要，最重要的还是产品。没有哪家公司的失败，是因为营销失败。公 司失败，本质都是因为产品的失败。当然我不是说不要营销，事实上我们营销做 得很好。营销，就是用最简单的语言，把你想传播的信息传播出去（给你的用户）。

我这里是要强调，营销不是本质，本质是产品。**营销最重要的，就是不能瞎说**。 企业文化最重要。广告最多只能影响 20%的人，剩下 80%是靠这 20%影响的。营 销不好，顶多就是卖得慢一点，但是只要产品好，不论营销好坏，20 年后结果 都一样。（2018-09-30）

\---------------------------------------------------------------------------------------------------------------------------------

网友：步步高、OPPO 的本分、以消费者为导向等的文化和价值观都很好落实在 员工和团队行为上。比如不说对手坏话，不虚夸产品等等，请教一下步步高的企 业文化是如何这么好落地的？有长的负面清单吗？跟奖惩紧密挂钩吗？

**段永平：**&#x6211;不在位很多年，不知道现在的 stop doing list，但每个人最好去积 累自己的 stop doing list 会比较有效果。（2019-03-14）

网友：大道，建立 stop doing lis&#x74;**（不为清单）**&#x65F6;是不是内容尽量具体细致一 些效果会比较好？比如像通用的“不要抱怨周围环境”，直接放进去会不会过于 概括化，这一条可以细化成许多具体内容例如“被安排不喜欢做但不得不做的工 作时，不要抱怨”“被客户拒绝时，不能抱怨客户”“堵车了就不要再抱怨路况 了”等等，甚至这几条还可以结合经历进一步细化，这样尽量具体一些会比较好？ 另外，您的这个 list 大概有多长啊？几十条？几百条？

**段永平：**&#x6211;没有真的统计过我们的 stop doing list 有多少条，但似乎不是几十 条那么多。所谓 stop doing list 指的都是不对的事情，但要列入这个清单的东 西一定要尽量少，不然可能会束缚大家的手脚。你说的抱怨的东西有时候未必就 是不对的事情。抱怨往往是老板们需要收集并改进的东西。(2019-08-06)

#### &#x20; 附录：

## 步步高十周年“记”念晚会——段永平发言

&#x20; **段永平：**&#x5404;位朋友晚上好！今天很荣幸我能够有机会在这个地方跟大家说几句话。

&#x20;首先，我想再把我们刚才说的这个十周年“记念”晚会这两个字我再解释一下， 虽然刚才朱军和小丫已经说过了，那么 “记”呢就是要记住我们过去干过的事 情，不管是对是错，记住以后呢，我们就可以总结我们的经验和教训，对我们未 来的发展会有好处。那么同时我们还要念叨念叨我们倒下去的竞争对手们，以及 已经离开了我们的一些伙伴，我们去思考，去回忆去想，为什么会发生这些事情？ 尤其是我们倒下的竞争对手，他们多年以来其实都给了我们很多的帮助，甚至包 括推动，那么他们所犯的错误，也应该给我们留下很深的记忆。只有我们知道为 什么别人犯了错误会导致倒下，我觉得对于我们未来的发展才会有很大的好处。

而且这么多年以来，我也一直经常会想象，我们这样一个企业，这么多人，这么 多产品，我们这样的企业将会犯什么样的错误？什么样的错误会让我们这样的企 业倒下？那么当我想起这些东西的时候，我们才会去想办法去弥补他，所以这就 是我们要记住、要念叨的一些事情。那么这也是我们为什么没有用十周年厂庆的 这个庆字，因为我们觉得就像刚刚朱军说的，这个十年对于一个人来讲不过是一 个孩子，那我觉得我们企业呢，其实同样也是非常的年轻。世界上比我们做得好 的企业还有的是。所以从这个角度来讲，我们还远远没有到庆的时候，我觉得我 们企业总体上来讲这个 心态还是不错的，那么大家也不会为所取得的一点小小 的成绩就忘乎所以。

&#x20;第二点，我要讲的就是我们企业走过这么多年的确非常的不容易，所以我很高兴 有这样一个机会，能令我们很多新老朋友重新聚在一起，也同时给我一个机会来

感谢我们所有相关的团体。这里面就包括我们的多年以来一直支持我们的消费 者，包括我们日夜辛苦的员工，包括支持我们存在的股东，以及我们多年以来一 直精诚合作的生意伙伴，或者叫做商业伙伴，我觉得只有这些人大家在一起同心 合力，我们的企业才能够走到今天。所以在这个地方我代表我们整个企业感谢各 位。

&#x20;第三点，我想借这个机会再强调一下我们企业的最基本的理念，这个也是我们今 天晚上之所以特别想开这个晚会的一个很重要的原因。我们企业之所以能够走到 今天，并不是因为我们这些人有多么的优秀，或者有多么的了不起。我个人觉得 包括我们很多这些管理人员，我们在一块商量的时候，大家有个共同的认知，就 是觉得我们之所以能够走到今天，最重要的原因是我们犯的错误比我们的竞争对 手要少。那么这个主要我觉得是我们在这个 企业理念上头，我们花了很多的心

思，或者说我们花的心血要比我们的竞争对手多，导致我们在做对的事情上头， 我们做的比竞争对手要做的好，这就是我们为什么犯的错误比竞争对手少的原 因，也是我们能够活到今天的一个很重要的理由。

&#x20; 前一段时间为了这个晚会，我们又重新的整理了一下我们的理念，我在这个地方 就跟大家重新再说一下，我们的核心价值观就是我们一贯秉持的叫做 “本分”， “诚信”，还有就是我们最近调整加进去的叫 “团队”， “品质”和 “以消<br>

费者为导向”。其实当然这些东西我们多年以来都一直坚持着，这个地方无非就 是再重新强调一下。大家也都看到，我们每一个人的背心上面都写的“本分”， “诚信”是“本分”的一部分，“品质”、“团队”和“以消费者导向”也是我 们企业存在的一个很重要的一个核心价值理念，如果没有这些东西，企业将会很 难生存下去。

经过讨论，我们还确立了我们一个很重要的就是把企业建成一个 “更健康更长 久”的企业的这样一个愿景目标，我们这个企业的愿景目标就是让一个企业能够 更健康更长久的生存下去。我是希望在座的大多数人都能够慢慢的理解到，这个 有别于我们很多企业讲的，所谓要做大呀、要做 500 强啊，做这些事情的目标和 我们的更健康更长久的区别。1999 年年底，曾经有一个亚洲周刊的记者采访过 我，说如果 50 年以后，在你们一个大报的头版头条，登载一条有关你们公司的 消息，你最希望是什么样的消息？

&#x20;我当时直接的回答是任何消息。那么记者就问我，为什么是任何消息，难道包括 坏消息吗？我说对。我说其实只要他有任何消息，就表示我们公司还存在，所以 我希望经过我们大家的努力，我相信我们企业一定是可以更健康更长久，会有一 个更好的未来。（2005 年）

**结尾**

网友：感觉段总是一个能将复杂问题简单化的人，而且异常简洁。不知是段老哥 的天性，还是后天历练出的本事。

&#x20; **段永平：**&#x5475;呵，没觉得自己有什么特别。如果有的话实际上是我在这上面花的时 间比较多而已。简化一个复杂的问题绝对不是一件容易的事。**我的很多“简单” 的结论是花了很长很长时间得出来的，千万别以为我是一眼就看出来了。**&#x4E0D;过， “平常心”可以帮助人去找到事物的本源。（2010-03-22）

&#x20;网友：大道老师，是不是心中没有本分和平常心是悟不到你回答问题的？也只有 心中有这两样东西才能 get（领会）到你的思考？谢谢。

**段永平：可能还需要时间吧？我花二十年悟明白的东西也许你需要悟** **十五年，如果你悟的话。**(2019-09-16)

{% file src="/files/-MLNQOn9OqkchP5j2iIh" %}
段永平投资问答录 (商业逻辑篇)
{% endfile %}


# 符号的设计

###


# 符号形式探寻


# 作为符号的设计（上篇）

## 上篇

### 无形的未来

我们始终生活在一个围合的空间内，连续的可延展的空间，生活的日常化会让这个围合空间更加坚固和正当。

如果我们抽取掉日常这一层表皮，内里的结构会让我们感到一时的瞠目结舌。

假设我们生活再一幢高楼之中，那么在距离我们身体很近的一个空间内有着另外的人和另外的生活，在头顶在脚底，在左边或者在右边。就一道墙就可以将两家生活分割地非常彻底，甚至有可能永远不会相识永远不会有交集，而很多时候他们之间的物理距离又是如此之近。一幢高楼由很多这样的个体空间排列和叠加而成，在建筑意义上它们是相互支撑和依靠的，而在生活意义上是一个个独立的相互不干涉的空间，是什么驱使这些以前现在将来都无关联的人排列叠加在一起。

当我们出行，乘坐高铁或飞机，我们会与邻座的人在一个不长不短的时间内在空间上贴近在一起，通常也是以前现在将来都无关联的人。不同于相对而坐的旧式火车，在高铁和飞机上，相邻的人很少会有个人空间之外的叠加和交流，我们也不会因为相邻了五六个小时而不说一句话感到尴尬。我们清楚是因为这同一车次同一航班这些陌生人之间的合作，才能让各自的出行得以完成。

到了一个新的城市，无论是短期逗留的还是长期驻扎甚至居住生活，现在很少会出现陌生感，这个城市与那个城市并没有什么大的不同，你也不会因为独自一人走在一条陌生的道路上而有所伤感，只要有商店有买卖，就能让人感到安心如家。到处都可以为家乡，所谓故乡将不复存在，乡愁只能通过文学作品来延续，就像“独在异乡为异客，每逢佳节倍思亲”仅是一句古诗一般。

我们并没有经历太久到达了这种变迁，而且一直在持续向前。当我们的生活空间在高度方向上发展，和以前现在未来都不直接相关的人通过背后某种关系和合作，一层又一层地向上推进，这不是我们被动接受的现实，而是通过合作主动追求的结果，我们是出于一种目的。因为这一种目的和生活意义的追求，我们积极投身到城市化之中，离开了带有坡屋顶有着外轮廓的田园之家，嵌入到高楼的一个个内空间之中。

尽管我们对屋顶已不再留恋，但只是一个方盒子的空间不能成为家，我们需要将这个空间对我们进行包裹，形成一个无缝的围合空间，让我们看到的一切都指向家，而不是架在半空之中的一个方块。通过我们对这个围合空间的努力改造，加上我们主观上自我欺骗，我们将半空之中的家改造得非常成功。

当我们乘坐电梯，我们意识到的楼层之间的穿梭只是一种概念上的，就像传送门一样，从 A 层走进去，等待，出来就是 B 层，并不会意识到在 A 层到 B 层具体是如何穿梭，上升还是下降了几十米。我们更不会去想电梯这个内空间外的结构，如果能看到结构以及运行过程，肯定会让人感到不安，或许会感到诧异，尤其当我们用田园之家时代的观念来看待时，我们是在用曳引机、钢缆和配重等组成的重型机械结构在建造一个家。

封闭良好的电梯连接起不同的空间，让我们的围合空间得以连续和流通，我们了解电梯的结构，房子内的管线结构等的不可或缺性，但对我们认知最重要的也就是我们关心的事就是表象，因为结构我们可以托付给可信赖第三者，因为它主要依赖于科学逻辑，而表象却是我们需要积极主动参与构建的。

:: – ::

当人们要对现今的设计做出批判之时，总会拿出一些经典设计来作为参照，在表达崇拜之意时，也顺势将自己的划分到了经典设计这一阵营。但不管如何，经典设计只是拿来谈论的，很少会有人去再度拥有和使用这些经典设计，谈论经典设计批判当前设计但使用当前设计，或是，谈论经典设计批判当前设计而且使用经典设计，相比后者显得更加可笑。

时代性在设计上的体现并不是一种结果，而是一种积极参与的因素，那怕同样水准的设计，所处的时代不一样，处于当下的无疑是最具正当性的，无论如何设计首先得是关于当下的。并不是因为技术和工艺发展了，我们能做出比以前更好的设计了，发展了的技术和工艺是保证设计现时性的一种良好的可利用条件，消费者购买的是此时此地最为合适的产品。

几乎所有人都是通过图像来认识一些经典设计的，也几乎所有人将对设计的认识留在图像上，甚至可以说设计就只是存在于图像之上而非实体之中。一个我们在图像上认识已久的经典设计，当我们有机会触摸到实体时，通常首先带来的是认识和体验上的落差，在是否定眼前的实体还是否定此前的认识之间陷入两难之地。可是，我们对当下的产品的认识，也都是从图像开始的，在接触到实体之前对其图像化的认识甚至达到我们阅读经典设计的程度，但通常在接触到这个当下设计的实体之时，并没有带来太多的认识和体验的落差，就因为它是当下的。

当讨论起苹果手机设计的时候，很多人都会说起 iPhone 4 设计的出众，里面会有不少人顺带鄙视一下当前的 iPhone，表达一下诸如一代不如一代这样的看法，甚至几将说出我要用回 iPhone 4 这种看法，不过大家都清楚，谁也不会再去用回 iPhone 4 的。

而将 iPhone 4 和 iPhone 7 放在一起，这是一幅多么具有启示性的画面。

就像一部文学作品一样，将两个具有时代代表性的事物并置再一起，时间线和故事自然地呈现。我们看到了变化，并且看到了深处变化的现在，我们就能看到未来。

iPhone 4 的设计精彩之处自不必言，在其出来之际，我们都感叹此设计将会成为经典并且多年以后依然会体会到它的精彩，现在已经多年过去了，假如我们要去体会 iPhone 4 设计的精彩，不得不提醒自己将时间设置退回到几年前。

或许有人会说这是因为屏幕尺寸，以及因此而带来的尺度差异。屏幕尺寸的确是一个非常有意思的因素，我们现在会感叹当年为什么习惯于这么小的尺寸，就像当年对大屏幕尺寸所持有的怀疑如出一辙，我们现在看到了 iPhone 4 时空并置感，估计带着 iPhone 7 回到几年前亦会如此。索性我们再做一下置换，维持当前屏幕尺寸的不变，将 iPhone 4 的设计使用到 iPhone 7 上，或者将 iPhone 7 的设计使用到 iPhone 4 上，就会发现产生的两个怪物与每一个时代都格格不入。是因为 iPhone 4 的设计不适合大尺寸屏幕吗，iPhone 7 的设计不适合小尺寸屏幕吗？有一定的道理，但远非全部，就像是比较两个不同的环，它们各自自成一体并且自我封闭，不能在它们身上切一段来作比较。

iPhone 4 是工具，而 iPhone 7 是容器；iPhone 4 是具体的，而 iPhone 7 是走向抽象的；iPhone 4 是呈现式的，而 iPhone 7 是消失状的；iPhone 4 上看到清晰的设计，而 iPhone 7 的设计退到了物品之后。

iPhone 4 内外一体式的不锈钢中框在形态上有意作了强化，并且与正背两面的玻璃形成一个三明治的结构，体块感非常明显，而不锈钢中框上的按键，尤其是两个圆形的音量键，让其细节之处也有饱满并且明显的形态。而 iPhone 7 尤其是亮黑色的 iPhone 7，考究的圆弧形曲面绷出了整个手机，所谓的形态就是连续一体处处收敛的外表皮，而亮黑色更是让玻璃与铝之间的视觉间隙得到消除，浑然一体。亮黑色的另外一个特点是通过反射让自身的物质性在视觉上得到消失，就像全反射的镜子，我们看到的是只是反射而出的虚像。亮黑色让 iPhone 的物质感消失，而视觉特性成为了描述其存在的一种符号，不是很多的视觉特征，而是一种，这与手机发展的内在需求是恰好一致的，从工具转向了内容，而手机就成为了内容的容器。

iPhone 7 上经过全新设计的 Home 键，可以看作是在 iPhone 身上逐步剔除模拟时代的痕迹，用间接控制的触觉反馈替代了直接的机械运动反馈，虽然目前大多数人仍然会把这种触觉反馈同“按下”的机械运动反馈给联系起来，但这是习惯使然。手指重按 Home 键然后经过硬件软件一整套程序驱动 Taptic Engine 形成了触觉反馈，同简单直接按压 Dome 按键带来直接的机械反馈，从步骤上前者看着更为繁琐，但它却体现了自动化时代的特征，从输入指令到黑箱再到输出，而不像机械传动时代，人人皆能看明白的从输入到输出的变化过程。

从 iPhone 4 到 iPhone 7，或者说去回顾整个 iPhone 发展的过程，就会发现 iPhone 在抽象化， 比如从天线对形态的抗衡，第一代 iPhone 就是最直接的工具式表达，比如颜色的应用，颜色虽然有时会强化形体感，但如同金色和玫瑰金色，实际上是与工具性背道而驰的，在用一种表面性的语言直接传递一些信息。

如果想要对这个去形态化抽象化发展有一个直观的了解，可以通过比较苹果公司网站这几年的变化，尤其是产品照片的风格变化。现在去看苹果公司网站，一切都变得很轻，而且像亮黑色的 iPhone 7 一般，采用了高对比的刻画方式，用高光来显现产品，强调出了轮廓而将轮廓内的材质感隐藏起来，前面板区域干脆将对玻璃不作描绘，直接烘托屏幕上的内容，而不像此前一样在玻璃盖板区域总是要加上一道发光。现在的苹果公司网站的照片更加趋近于电脑的渲染，而不像此前比如 iPhone 4 时代或更早，产品刻画非常写实，漫反射区域的材质在表达它的形态体量感，就像是一个件可信赖的工具一般。

苹果产品走出工具化时代最有说服力的就是 iOS 7 在视觉上的变革。

:: – ::

产品总是诞生于功能上的创新和解放，笼统地说，产品或物品首先是有某种用途和价值地东西，而在发挥用途和消耗价值时，物品才会产生针对于使用者的意义。通常而言，新物品的出现要么是一种新功能的诞生，比如移动电话；要么是将其从一个依附于旧有体系的功能性地位独立出来，比如椅子在 19 世纪的发展以及在 20 世纪成为设计师的固定课题，不只是因为有了新的生产条件，比如曲木加工或者钢铁塑料的应用，更重要的是它从传统的家具系统中独立出来，不再是通过依附于桌子，依附于墙壁，依附于符合某种社会传统关系的室内风格。

椅子已经不再只是关于坐这个功能性的需求，事实上，在它被解放被独立出来成为名副其实的独立的椅子后，它就要进入了一个新的家居系统，产生了之于物品的新的社会关系，发展到一定阶段，它的功能性就隐退到后台，所以才会出现这样的情形，我们已经又足够足够多类型和设计的椅子供选择，也有各种舒适度各种适合身体类型的椅子供选择，毕竟人的身体尺寸不会有什么变化，但是新的椅子总是在不断被设计出来，都是因为功能之外的需要。

功能性物品不同于食物等材料消耗类物品，通常是非一次性使用的，而是多次反复的。而这些功能性物品要么提供了某种 affordance 比如我们身边的桌椅板凳之类，要么就是提供了某种转换，比如家电或消费类电子产品。功能性物品是一个长久存在的物品，它会占有存在空间，它会与其他物品形成一个系统，与人的生活发生互动，不只是在其发挥功能之时刻，所以功能性物品的存在意义完全超出了其功能所能覆盖的空间和时间。一个物品一旦与人的生活发生经常性的关系，它就与人的认知，处于社会性系统中的信息流通就产生了瓜葛，它就具有了可以指向其功能外的符号作用。

现代主义运动时期的民主化思想，通常指的是功能的普及化，使用现代工业的制造方式，让优质设计走入千家万户。市场经济则会主动去推动功能的普及化，而达到一定饱和度之后，则需要从功能之外的描述去推销产品，而这种方法是必然奏效的，因为作为消费者，在这个功能化新产品可迅速普及的年代，享受完新功能带来的满足感的那一刻起，这个物品就开始承接起符号的功能了，连接起各种社会化人与物之间的关系。即使它是放在家里某个角落的一个东西，它被购买之前与整个社会发生着不少关联，它被使用之后，它也通过用户与外界发生关联。

如今物品的独立地位的获取，既需要物品能够满足某种功能需求，同时也要求物品适配于一个较具体的物品需求系统中，比如椅子要满足坐的需要，而厨房用椅就不只是满足能坐就可以了，它必须成为一个物品，而它面对的需求系统则牵连了很多因素，诸如厨房的环境以及整个家居的装修风格等等，甚至这个需求系统是需要去开发的，比如 iPad 的诞生。

功能需求需要创新，但相比物品需求它所需要应付的条件较具体和固定。物品需求系统总是动态的，它要求的结果是合适的而不是固定的，也就是说人们对物品最终的需求是设计的产物（合适的）而不是功能创新的产物（固定的）。物品需求系统复杂的是，它既是个体的比如一个人对这一物品的认知，又是全社会性的，尤其在信息如此发达的时代，A 地的用户 A 选择了物品 A，也会对 B 地的用户 B 选择物品 B 产生影响，这种影响并非蝴蝶效应般隐蔽，而是直接连通的。

如今我们不再是拿到物品这一刻才开始认识这一物品的，在这之前已经有足够的认识了，甚至是认识的非常彻底了。比如一位要购买新一代 iPhone 的用户在它发布之前就可以关注各种消息和新闻，与其他一样有兴趣的人讨论，也与身边没有兴趣的人讨论，到发布之后就是看各类铺天盖地的报道以及评测等等，下单购买等待，收到之后保护套一套就开始使用，就已经完成了对这个产品的了解。我们已经依赖于信息对物品来作认知了，即使我们触摸着产品的实体使用着产品的功能，我们对其的认知仍是信息化的，因为我们整个对物品的认知系统是建立在符号系统之上的，而这个符号系统有非常强的社会性，为什么我们对随身携带的物品和家居用品的需求地位不一样，为什么我们对吸尘器和水桶的需求地位不一致，为什么我们对桶装水和自来水的需求地位不一致，全在于物品作为符号一面与社会性连接的强弱之差。

我们使用到的很多家电产品，很多从原理上来说都是一致的，比如电动或电热，不同在于将电能转化成动能或热能之后输出的具体方式，但是，我们仍无法通过功能输出形式来定义一个物品，比如说电热水壶要给出一个定义，“用电加热一个内可盛水的容器的器具”这样的描述不足够定义电热水壶，因为似乎电饭煲也可以用这样的描述来定义，需要加上体积限制吗，或者说“一个竖直放置的手柄”，或者说规定一下“只是用来烧水的”？越往下追问，就会发现我们已无法从内部特征上去定义一个物品，只有通过外部的描述来作限定，是将这一物品纳入它所属种类的系统中，以及这一物品的生存环境的整个系统中，从外到内才能找到它的轮廓。

功能性支撑起物品的内在框架，而对符号意义的容纳性才能让一个物品真正独立出来，物品从工具转变到了容器。

:: – ::

比较一下历年苹果公司的广告，时间跨度并不需要太久，近十年或者是近五年的，就能发现广告的表达在一步步地和现实疏远。或许有人会将广告分为产品广告和品牌广告，产品广告需要围绕着产品诸如实际功能的展示，而品牌广告则可以抛开产品功能的实际诉求而去塑造一种能表达和传达理念和价值观的形象。这种划分是非常传统的，类似于植物可以分为草本植物和木本植物一样，仅作已有类别的区分并不会带来具体问题的解决。在此，权且我们同意广告可以分为产品广告和品牌广告，会发现无论是产品广告还是品牌广告，它们的表达都在一步步地和现实疏远。就像是 iPhone 4 时代和 iPhone 7 时代苹果官网的产品图片的表达风格差异一般，前者具体、写实、工具化，后者疏离、抽象、符号化。

比如 iPhone 4 时代对 FaceTime 的功能刻画《FaceTime》，或是 iPhone 4s 对 Siri 的介绍广告《Assistant》，比较 iPhone 7 的强调防水功能的广告《Morning Ride》，就会发现有非常明显的差异。首先我们得接受这样的现实，广告就和电影一样都是拍摄而出的，当镜头从人物自然地切换到手机时候，在镜头的背后发生了很多纷繁芜杂的布置工作，但是作为观众只会在意故事这一层，并且止于这一层。当观众与制作者达成故事讲述的默契之后，背后的布置活动就对观众无任何意义了，制作者要表达的和观众所要看到的全部都在故事之中。iPhone 4 时代的广告，场景都是日常化的，从道具和布景之中就可以看出，但是这种日常化显然需要经过制作者布置的。iPhone 7 时代的广告，初看也会认为故事并没有超越现实，但是和日常有所疏离，这种疏离于日常的场景需要经过制作者布置的，而且是精心布置的，因为疏离是制作者追求的。iPhone 4 时代作为工具的创新功能如 FaceTime和 Siri 需要带入日常生活，将广告的故事放入一个日常化的场景中会有说服力和引导性，而 iPhone 7 的防水性也是一个功能上的革新，为什么也不像此前一样将其放到一个日常化的场景中来表达呢？因为这样在新功能述说上可能会有说服力，但是不具有引导性，对 iPhone 7 来说防水不足以去吸引普通消费者来购买，它需要整体化呈现，除了能表达出功能革新之外更重要的是传递产品作为容器所蕴含的丰富的符号意义，比如说《Morning Ride》所表达出的“酷”。当工具的功能普及之后，每一个人得到的是平等一样的东西，我也知道别人在跟我使用一样的工具，两者并没有多少差别；而像“酷”等符号意义的传递是可以针对个人的，虽然我跟他在使用一样的东西，但是对其理解是不同的，追求的目的也是不一致的。

:: – ::

密斯的西格拉姆大厦，外墙有一层工字钢的表皮结构，没有人会认为是这层工字钢的结构支撑起这座高楼大厦，这层工字钢结构对藏在水泥支撑柱内的巨型工字钢有一层隐喻，但是对于大众来说这种隐喻并没有意义，有意义的是这层表皮结构从视觉上传达出的高耸、理性和秩序，也是支撑结构能表达的一些品质，只不过支撑结构需要被隐藏。

我们对大理石干挂的墙面的建造实质已经习以为常了，不再去鄙视“仅仅是一层表皮”这一属性，也不再会误认为整个墙面都是厚重的大理石块垒叠而成，干挂的大理石片材与垒叠的大理石块材在墙面的表现上有相通之处，这些相通之处同表皮与否并不相关。但是，如果这层表皮的建造如果是粗糙的，诸如露出可间隙，让人窥见了内里，没有在视觉上封闭起来，那么这种传达性就遭到了破坏。

人们对世界的认识越来越趋向止于表象，表象会将人与构造之间作一道阻隔，并且表象将作为人与内在形式之间的唯一代理，表象和内在形式形成了新的共同体，而构造将要服务于这个共同体。

现代设计的发展来自于设计者与制作者的分离，制作者也从具体可触的手工艺转到了机器生产，一旦制作知识化之后，物品的使用者就无法体会到源自于制作过程中形成的构造，而且技术和社会分工的发展，让物品的表象越来越封闭而无缝。当我们不再自己去修理一件东西的时候，它就不会被打开，构造就不会被我们所认识；而技术的发展会让构造自己也更加抽象化，对于普通人的不可阅读性，比如我们所接触到的数字产品，构造就不再对物品的表象起到决定作用，而是要服务于表象和内在形式形成的共同体。

而人对外在世界的直接体验总是具体的，从模拟时代到数字时代的，人还是靠着感官在获取信息，发生变化的是随之而来的认识形成的过程。日常生活中我们朝着数字时代进发并不久，所以感知觉在跨越模拟时代到数字时代总会出现一些错位的现象。比如说驾驶操纵，从手推车到手扶拖拉机，再到方向盘拖拉机，到现在汽车的驾驶，我们都一直认为是人在直接操作转向等动作，其实从手到机械的传动结构不断地在抽象化，逐渐发展成了指令，接着到无人驾驶，才会彻底地摆脱对驾驶操纵的惯性认识。虽然人认知上我们更理解飞机的驾驶是指令式的，但我们总会认为在飞机起飞、转向或者着陆时，驾驶员在付出更多的手臂的力。比起现在的波音 787 或空客 A380飞机，我们会认为协和飞机更现代更抽象，除了机身形态的印象外，协和飞机的驾驶舱和机身以及动力部分感觉更为疏离，而波音和空客飞机的驾驶舱所处位置看上去更符合机械传动的视觉形态。

一旦物品的构造在人的认知过程中是可以隐藏的，是否可以得出这个物品的形态可以是任意的？事实上我们身边有很多东西的外在形态可以是这样也可以是那样，而且无论是这样还是那样都不会与其的构造起冲突。传统的造型设计师正是在这一块领域发挥作用，比如某个产品构造上已经成型，只需要给它一个造型，而这个造型是可以千变万化的。可是任意必然导致世界坍塌，如何抵御这种任意，最直接的就是习惯，一些默认的似乎可以打破但最好遵守的规矩，比如说需要给一个已经具有结构的东西作造型，那么这个壳体与结构之间应该合逻辑，比如不能为了做出一个造型而留出很大的间隙，以此即表里如一性来形成这个造型的说服力，所以一旦遵循了这种规矩，设计师的造型就更多的花在了细节的雕琢之上了。可一旦这个表皮里结构的结构发生了变化，就需要再去寻找一种“表里如一”的逻辑来为新的造型提供说服力，所以当手机从功能机时代转到触摸屏时代时，我们就会感到诧异，这些设计漂亮的功能机的一大波设计师怎么都不见了，以前这些画着漂亮造型的设计师现在只能推敲切边会感到寂寞吗？

所谓造型在一个物品上消失，电视是一个例子，那么手机会不会如此，当然不会，因为它还与手相关，其形态就不会像电视一样其本质就是一块屏幕，电视演变到接近单纯一块屏幕，除了技术发展的结果，还因为它在生活中它退向了墙壁。电脑显示器同样受惠于技术发展，但是它仍需要立于桌面，使其尚不能演变成接近单纯一块屏幕。但是造型的消失，技术和社会的变革并不是必需的，靠着设计师对简洁设计的追求就可以完成，把所要设计的产品以静态的视角来看，去剔除它身上的造型并不是一件难事，尽管有时候实现它需要付出很多努力。

我们面临的是形态的消失。

我们将物品的形式构成分成两部分，内在的形式和外在的形态。外在的形态就是我们感官所能感知到的一个物品此刻的物理状态，它的几何形态，它的颜色材质表面质感等具体可感的属性，而内在的形式指的是需要通过我们思维才能意识到，包括它的“基因”和生成逻辑，物品的家族特性等经过抽象具有普遍性的品性。前者需要感觉，后者需要理解。而我们上面说的所谓造型，并不是外在形态的全部，而是外在形态的部分，依附于外在形态上皮毛之物，最为显眼但也最为肤浅，诸如花样、装饰等都可以包含在造型之内。

所谓造型与内在的形式不会有关联，它并非来自于内在形式，而只是设计师的表达习惯，是他将收集的皮毛再粘贴到一个新的物品的外在形态上。

一个物品的外在形态从根本上说应该去表现它的内在形式，设计师可以给某一物品一个任意的形态，也可以通过注明“这是什么”来强调形态存在的正当性，但这无疑如堂吉诃德般在破坏我们的认知系统，所以设计师的职责就是在给予形态过程中对任意性的抵制。对任意性的抵制，就要求外在形态和内在形式之间的关系不仅言之有理，有足够的说服力，并且具有一定的唯一性。

让外在形态去表现内在形式，“形式追随功能”（此处形式即外在形态）是直接安全的道路，因为功能是必须建立在逻辑和理性之上的，当“形式追随了功能”，外在形态与内在形式的关系也就有了逻辑和理性的支撑。通常这些需要追随功能的外在形态会呈现出不少“必然如此”的特性，比如发动机、航空航天飞行器、用于生产的工具等等，但是一旦与日常生活接近，即使作为工具比如电钻，它并非是通体都是“必然如此”的，因为它们是商品。一旦商品化之后，这个品牌的工具与那个品牌的工具必然具有两种不一样的外在形态，它们并非是单纯地外在形态追随了功能。工具以人为中介呈现出的社会化关系并不强，它们总是呆在工具箱放在某个角落，它们除了与不同品牌的同类工具有市场竞争的关系外，与其他物品的关系并不强大和明显，通常也只有与人有一层直接的强关系（提供功能和使用功能），而不会通过人与其他发生联系。而我们生活中其他产品却与工具大不一样，它们会通过人与其他物品形成非常强的社会化关系，其实它们也是诞生于关系网之中，功能只是决定它存在的一部分因素，所以此时外在形态去表现内在形式就不只是借助对功能的解说，需要重新去寻找物品的内在形式。

科技的发展使物品抽象化，它的功能器件更加集成微型化，成为一个黑方块，原理和功能转换变成不可感知，人与物品的交互都发生在表面。物品诞生并生存于人与物的需求关系，市场和社会的发展，使得人与物之间的关系更加社会化，同时物品之间也形成了社会化的关系，物品成了能够盛放这些关系的容器。

:: – ::

我们正走向一个无形的未来，数字时代对模拟时代的更替似乎不会放过任何一个角落，包括那些我们认为是人文主义的自留地，有的更替是潜移默化，有的更替是一夜之间。

无形并不是指化为虚无不成形的（formless），即使实体消失，内在形式仍然能存在，而当内存形式消失的时候那么与之相应的物就消失弥散了。当一个物品仍为实体时，它就有实体的物质性，有形状有质量有颜色和表面肌理，我们称这些因素的总和为外在形态。“无形”就是指外在形态从静态固定走向了动态离散式，当外在形态和内在形式是通过功能来联通时，外在的形态总是固定的，而且外在形态和内在形式的连接方式就如机械结构一般清晰和确切；而当功能失去了连接外在形态和内在形式之间关系的作用之后，外在形态和内在的形式的关系就如同一团动态的粒子云雾一样，或聚拢沉积或运动扩散。

无形的未来并不意味着外在形态将不再重要，外在形态将比以往更重要，比功能主义时期比物品的工具时代更加重要，因为一旦不加重视，外在形态与内在形式将无法形成关联，而物品将会走向不成形，在这纷繁复杂信息充斥的时代，不成形就是迅速被遗忘。

但是我们无法用以前的形态观念来塑造新时代的物品了，再也不能用功能主义时期的造型方法来设计新时代的产品了。一上来就从形态开始设计将变得更加不再有效，无论我们有多少的现成的或半成的形态语汇的收藏，人们不会只为一个新的造型而买单。而我们目前做的很多设计工作最终将会由计算机直接来完成，包括一些冠以“创新”的工作，有逻辑的推导以及方案的遍历更可以全权托付给计算机，如果我们稍看远一点，造型工作都将可以交给计算机完成。如果我们的设计工作都将可以让计算机来实现，那么我们以什么来输入和要求计算机，这些只可能由人来完成的工作将是未来设计的重要所在。

设计将不再重要，研究设计才重要。形态将不再重要，研究形态才重要。设计就是研究，研究就是设计。

### 转载声明

本文转载自知乎:

上篇: <http://www.hi-id.com/?p=2883>

尊重原创, 转载请注明出处


# 作为符号的设计（下篇）

我们对“革命性”的期待总是那么热切，期待着沐浴在革命后第二天的阳光下，“每隔一段时间会有一个革命性的产品到来，它将改变一切。”然而，革命有来路也有去向，革命者就是其间的扳道工；发展总是连续的，只是有的快有的慢，快的能让我们立刻体会到日新月异，而慢的却是那么悄无声息。科技革命总是疾驰在先，带领着产业变革，从节点到全面的变化可能会漫长，而稳固的变革形成的力量，拽引起的社会变革深入至每一个人的日常生活中，使之永无法回头。

日常的一个魔力就是能消解掉变革的冲突性，从昨天到今天再到明天的转变都是连续又顺畅，让人意识不到变革在发生，亦无法主动去推进变革。当前的工业设计就是处于这一境地，不仅滞后于科技革命，也落在了社会变革和人们日常所需之后，设计以打了折扣式地完成了一项任务，而且还需仰仗于产品的功能属性和市场机制，设计并没有给用户带来愉悦和启示。设计师所使用的工具虽然随着社会的发展在更新，但是思维和手段与上个世纪相比并无差别，即以透视为视角，以功能为原点静态地去塑造一个物品。

我们进入了数字时代，这种时代范式变更具有革命性意义在于它不只是停留在科技和产业层面，也不只是我们日常生活的形态和方式发生了变化，而是我们的认知，我们对物品对世界的认识模式发生了根本的变化。

我们再也不能继续沿用上一个时代的思维和方法来作设计了。

:: – ::

皮尔士（Charles Sanders Peirce）说过：“我们的宇宙是被符号充满了，如果说它不是仅由符号组成的话。”人类通过创造和解释符号来创造意义，也只能通过符号来作思考；我们通过符号来发展文化和知识，否则当我们向他人传递和表达一个意思时都是通过搬运实物来完成的话，也就无法产生语言了。符号会以各种形式呈现，文字、图像、声音、动作、物体等等，然而诸如文字和图像等本身并没有内在意义，只有人们将它们当作符号来解释之后。

皮尔士的符号学基于一个三元结构，即一个符号单元由三个要素组成，分别是 Representamen、Interpretant 和 Object，Representamen （表现体）是指符号的载体形式诸如文字符号图像符号等，它不一定是物质化的东西，Interpretant（解释项）并不是指要解释符号的这个人，而是指解释者对符号的感知结果，而 Object（客体）就是指符号指向的目的物，它可以是物体、事件、状态等等任何能够被思考的东西。皮尔士的符号学通过如下结构将三要素组合起来：符号（以表现体的形式出现）是对某人来说在某些方面代表某个东西，它在这人的意识中创造了一个等效的符号，或者说更进一步发展了的符号，这个进一步发展了的符号就是初始符号的解释项，它代表了客体。从这个三要素之间的支撑关系可以看出表现体与客体之间并不需要有必然的联系，因为它俩之间的关系形成需要经过解释项。比如红灯作为一个表现体，与停车这个客体并没有必然之关系，而是通过“红灯需停车”这个解释项，即通过这个约定俗成的交通法则，来实现前面两者之间的关联，来完成符号的指涉过程。

与索绪尔的结构化的能指所指二元符号学相比，皮尔士符号学最显著一点是引入了作为解释主体的人，而且通过“解释项”这一经过客观化之后要素，在“表现体”和“客体”之间起到动态支撑作用，皮尔士强调的是三要素之间的互动过程。只有经过了人解释之后一个符号才能真正称为符号，要使符号与客体之间相关联以及使这种关联产生意义，就必须将人作为三元之一的要素来审视。

而皮尔士符号学的另外一个最具创见同时又极为复杂繁琐的地方就是对符号的分类，通过他的分类符号可达 59049 种，对我们有意义的是最基本几个分类。皮尔士将符号从三个角度去分类，每一个角度下又分成三种。一个角度是从符号载体自身的属性，一个角度是符号怎么代表客体，第三个角度是符号与解释项之间的关系。从第一角度符号可以分成三种，分别是 Qualisign（性质符号），Sinsign（单一符号） 和 Legisign（法则符号）。性质符号是指符号载体的属性作为符号来代表客体，比如用色板来购买颜料，起到符号作用的是色板上的颜色属性而非其他诸如色板的材质等；单一符号是以实际存在的事物或事件，即个体事实来作为符号；法则符号则是以法则为符号，通过习俗或传统等形成的符号就是法则符号，它不是一个单独的个例，而是一般性的类型，比如“设计”这一个词在这篇文章中出现很多次，它们都来自同一个法则符号，但每一个在具体语境下的“设计”是法则符号的一个复制品，就是单一符号。从第二角度即符号与客体之间的关系，符号可以分成 Icon（图像符号），Index（标引符号） 和 Symbol（象征符号）三种，这是皮尔士符号分类中最广为传播的一组。图像符号是符号载体具有能同所指客体形成相似关系的属性，类似或相像，比如画像、模型或者拟声等等，以第一角度分类的三种符号都可以是图像符号；标引符号则是指与客体会发生事实关系，受客体牵引的符号（所以第一角度分类中的性质符号就成不了标引符号），比如指路牌上的箭头、雷声、踪迹等等，包括单纯引起注意力广告像很多明星代言广告画可以算作是标引符号，以第一角度分类的单一符号和法则符号都可以是标引符号；象征符号指向客体则纯粹来自于人为传统，所以它与客体形成的关系是需要经过习得而来的，诸如文字、短语或者红绿灯等等都为象征符号。从第三角度即同解释项之间的关系分成的 Rheme，Dicisign 和 Argument，因过于高度化使得在此无意义，略过。

皮尔士将我们对事物的兴趣分成了三种，一种是对这一事物本身的原始初级兴趣，第二种兴趣基于这一事物与另外事物形成关系，第三种兴趣是指它向我们头脑传递一个关于这一事物的想法。他还还将人的意识分成三类：Feeling（感觉），Sense of Reaction（反应意识）和 Thinking（思考）。感觉意识指的是用感知觉与对象直接的接触关系，不带入任何的思考和进一步的体会，比如就单纯在头脑中想象处红色，皮尔士认为我们只有在半醒的状态下才有可能处在简单纯粹的感觉意识中，通常它则是混杂综合在我们的意识之中。反应意识则是我们一些本能反应或条件发射，比如听到巨响后立马捂住耳朵，它不是处于一种感觉意识之中，而是来自从一个感觉意识到另一个感觉意识中的隔断。而思考意识则介入了意思，成了人类最重要的能力。

注：以上皮尔士符号学中其中一些专有名词的翻译借用参考的卢德平文章《皮尔士的符号学理论:原点与延伸》

:: – ::

如果将符号这个词与设计相联系起来，通常会被认为脱离了原本，比如脱离了物品或设计本身的价值，去追求其承载的社会价值，比如物品和设计的象征意义，身份或某种精神的象征等等，而对这些象征意义的追求又被认为是肤浅的，或者说是玄乎的。设计师通常不会主动去追求这些符号价值，比如 Jony Ive 在几次[采访中说到](http://www.dazeddigital.com/artsandculture/article/33692/1/discussing-design-with-the-man-behind-your-iphone)他们从不会将符号化作为设计的起点，苹果的很多产品最终都成为了生活或文化语境下的符号（Icon），或被人称为是符号感很强的（Iconic），但 Jony Ive 将这种符号性看作是自然结果，因为这些产品进入社会承担了一些文化意义，但不能把它当作出发点。

如果说符号这个词的含义就是限定于这，即从日常俗世生活中升华而出的图腾意义，设计师当然会对其退避三舍，因为设计一旦脱离开物质性，设计师就会失去控制，或落入矫揉造作，或变成一种牵强附会式的图像语言的设计。但这只是将“符号”限定于 Icon 这个词的某一部分含义，而“作为符号的设计”的“符号”，它指的 Sign，是我们认知的载体，它是物质性的。

如皮尔士的符号学所言，我们的思考活动是以符号作为载体来完成的，我们的感知活动，无论是对物品或环境等实体世界，还是抽象的内容，无不都是思维的参与，知觉总是追随着感觉意识，在我们处于清醒意识之下时，就不会有单独存在的感觉意识。

当我们静态地去看一个物品时，我们首先获取的初级信息是诸如颜色、轮廓、形态、材质、表面肌理等等，这些信息能被我们的感觉器官拾取；接着获取的次级信息将更进一步，即初级信息形成的关系，左右上下，轻重平衡，穿插叠加等等，另外开始将自己介入，将获取这些初级信息与自己的关系，如空间对立关系，此阶段也包括了对这个物品的 [Affordance](http://www.hi-id.com/?p=2732) 的认识，比如一个平坦的表面具有放置另外一个物品的可供性，等等；然后获取的三级信息，或者说在人头脑中形成的信息，就是一些知识性的信息了，诸如这个物品的品名，它是什么，它具有怎样的功能，它是怎样工作的等等。这里所说的初级、次级和三级信息的拾取或形成，它们并不是一个个次序发生，在实际物品感知过程中，它们是综合进行，因为视看过程总是很快，所以信息获取或形成的主次前后关系是动态的，看到一个物品可能立刻获取或形成了很多关于它的知识性的信息，然后才会将注意力集中到这个物品的一些基本属性，比如去识别它的颜色和材质等。在初级和次级信息的拾取过程中并没有知识的参与，有的也只是感觉经验，所以它们具有普遍性，即不同知识背景的人都能获取这些初级和次级的信息。

如果只是静态孤立地去看这个物品，我们没有必要去辨析上面说的初级信息和次级信息是否是符号，因为它们作用于直接知觉，而符号需要对某人在某些方面代表某个东西。诸如“红色代表着热情”和“直线代表着理性”之类小学生式的说辞，它也应是发生在三级信息获取阶段的，看到一个磨砂表面或者弧形凹面，触发了我们的触觉欲望，这之间并没有出现符号的指涉过程，这种依赖本能和感觉经验的通觉是归属于直接知觉。发现红色灯亮起是直接知觉，而这个红灯亮起喻示着某个功能在运作则是一个符号过程了。一个物品的功能的识别不能依赖于直接知觉，需要通过知识的参与，功能识别是一个符号过程；一个物品的品名种类识别也是知识性的，椅子具有坐的 Affordance，但是具有坐的 Affordance 的东西不一定是椅子，符号过程参与了其中。

但是我们从来不会去静态地孤立地去看待一个物品，它不是一个放在完全空白地环境之中的一个物体，平白无故的出现在眼前，它经过了设计师经过了工厂经过了市场来到了这里，它经过的每一处，“设计师”、“工厂”、“市场”和“这里”，每一个节点都有相应的内外因素促成这个物品的诞生。然而作为商业设计最具特点的是，“设计师”这一处并没有起到多少作用，这就是为什么产品不需要设计师的署名，作为同样是创造性活动的产物，文学艺术品我们需要去追究作者的个人性，产品上设计师匿名化并不是否定设计师的创造性，而是这一产品是由更多客观的因素促成的，设计师是作为这些客观因素的发现者组织者。产品的设计上当然会有一些作为设计师个体的表现性，比如这一设计师的风格，但是这种个体表现性在产品上是作为一种差异化，如样式上的差异，它将归于“市场”，就如品牌也是归于“市场”。科技因素可以放到“工厂”这一处，它也是一个客观及固定的因素，产品的功能并非是由科技来决定的，功能由科技支撑，但是决定功能的是人的需求。因此，决定产品那些捉摸不透充满变数的因素来自于两个节点，市场和用户。

产品都是由零部件组成的，或多或少是可以拆卸的，即使由单一材料和形态做成的产品，也可以将其拆解成如颜色、形状和材料的元素，但是这个产品在我们认知中形成的概念却是无法分解的。比如旁边的电热水壶，对我们来说这个概念是无法同零部件一样可以拆解的，如果这个电热水壶的盖子掉了，那么它仍然这个电热水壶，只不过是“掉了盖子的电热水壶”，如果把它的加热部件去掉，它也是还是那个电热水壶，是“坏了的电热水壶”而不会变成一个新的盛水的水壶。如[《上篇》](http://www.hi-id.com/?p=2883)所提到的，随着科技的发展，这种脱离开功能器件和原理的抽象化程度将越来越高，我们以前依赖的以功能来制约形态的手段将不再有效，我们该如何来设计产品？

我们要在用户的头脑里作设计！

:: – ::

产品的实体仍然存在，但这个实体不会是“产品”的唯一，事实上它只是这个“产品”的物质载体，这一个物质载体（伙同其他）将在用户头脑中激发一种认知，指向了这个产品的真正概念，而设计就是去完成这一整个过程。

事实上以往人们对产品的认知也可以归纳到这一个范式上，只不过以往比如上世纪在这个认知过程中涉及到的因素都较为静态和单一，产品的实体，它的功能性和相应的形态在认知过程中占据了主要地位。如果将决定人对产品认知的这些因素看作是粒子的话，以前这些粒子绝大多数都被占主导地位的功能性给吸附和左右，而且数量也有限，但现在这个认知模型中不仅充满粒子，而且不再由功能性和实体来作唯一的主导，更为离散和动态。

从模拟时代进入数字时代，从实体设计时代进入符号设计时代，这种变迁的端倪以及伴随变迁立刻到来的忧伤和怀旧，在手机设计上表露无疑，就像用铁来支撑建筑后，建筑师哀叹柱式的消失一样。智能手机发展了十年，刚开始变迁的几年让人感到对未来充满怀疑，是不是今后的手机将变得没有什么可设计了，因为面积完全被屏幕给占据了，会不会将是千篇一律屏幕加一个圆角机身？是不是手机领域的设计就成出工不出力的点缀工？如果你仍用几年前的视角来看这两三年手机市场，会发现这种设计的同质化表现比预想的还要严重，奇怪的是大家都接受了，但如果仔细去看，你会发现无论是设计思路还是手法与功能机时代相差不大，只不过是发挥的面积有限，就比以前更加收敛和精到，所以手机领域的设计可施展性，并没有得到任何压缩，就像“简洁”不等于“没设计”一样。设计师的设计能力以及能力的发挥，并没有因为施展面积的减少而退化，只不过面对变迁的时代，设计师没有作出任何的行动，而是被变迁的时代拖着朝前行进，就像现在大多数手机你体会到的是一个智能机的底子埋在了功能机身子里。

“设计”这个词——就像这篇文章里用到的——既可以是动词也可以是名词，“这个东西设计得很不错”和“这个东西的设计很不错”，这两个句式是我们经常用到的，如果稍加细究，就会发展它们的侧重点并不一致，因为主语就不一样，前者是“这个东西”后者是“设计”。我们就用这两个句式来套用我们身边的东西，就会发现很有意思的差别，比如“这个键盘设计得很不错”和“这个键盘的设计很不错”，在通常的表达语境下，前面一句话似乎发生在“我在使用键盘”这个情形下，而后一句更像是“我在看这个键盘”，又如，“这个开关设计得不错”像是我在体验，“这个开关的设计很不错”像是我在审阅。而最有意思的是，带着这两个句式去套不同时代的设计，比如去翻阅历年的《Form》杂志（<https://archiv.form.de/> 从 1957 年到 2011 年），会发现随着时代的发展，“这个东西的设计很不错”用得越来越多，而到我们现在“设计”已经不再是藏在产品内里了，甚至已经浮到了产品的外表面了，这些浮出表面的“设计”像是直接与用户沟通，而不再通过产品来为人服务。在我们日常生活中，对“这个东西的设计”的谈论亦是司空见惯的，而商家更是将“这个东西的设计”作为向消费者直接传达的主要信息。

我们谈论“这个东西的设计”时，通常不是替代”样式”（Style）这个词，它包含了比“样式”更抽象一层的意义，而当其成为消费的对象后，这里设计就是一种知识性的东西了，就是上面说的那些离散出来混迹在外层的粒子。

一旦设计走向了符号化，从功能和实体的束缚中解放而出，是否设计就走向了任意，只要能够让人在感觉上明白合理（Make sense）即可？

:: – ::

设计，从根本上来说，是对任意的抵抗。

设计行为不同于发明，凭借着智力找到一个确定的结果，设计依赖现有的资源，操纵现有元素，在创新的新颖性上不及发明；设计更像是做一整试卷的选择题，而且这些选择题没有正确答案，诸如这个外壳的颜色可以是白色也可以是黑色，这让设计工作看上去很简单，只需勾选这些选择答案就行，不像问答题，会与不会是泾渭分明的；设计不仅需要勾选这些选择题，还需要自己出这些选择题，这个外壳的颜色是什么？这个外壳的材质是什么？还需要列出选择项，方形、圆形、圆角四边形、勒洛三角形、自由曲线 A、自由曲线 B 等等可以无休止的向下创作和列举；设计师需要通过这些看似无休止的自问自答来完成排布工作，并综合到一个结果上。

如果纯粹从物理世界的角度来看设计，一个产品的外壳选择是白色还是黑色是没有优劣之分的，那么一个东西的设计经过这些选择，结果可以是无数的，而且它们都是平等的，而我们只需要一种结果，那么结论是，设计结果必然是任意的。

如果设计结果是任意的，那么我们身边这些物品将失去控制，它们的大小、形态、颜色等等可以以无数种的方式背离我们目前看到的现实世界，那么，我们将会生活在一个怎样的奇幻王国之中呢。

是什么在阻止这种崩塌的发生呢？似乎有一种制度在维护我们身边的这些物品世界的生态平衡。一方面，这个物品世界有着很强的容纳力，比如我的电脑是黑色的，如果它是白色的，它仍然能在眼前的物品世界存活的，另一方面它通过各种力量来制约生产者，确保新来的物品是遵守秩序的，这个电脑是黑色的不是生产者自己说了算，而是得到了这些制约力量的怂恿。

这种阻止崩塌发生的制度就要求设计必须在本质上对任意作出抵抗。

对任意作出抵抗，设计师就需要为设计中的各种选择作出令人信服的辩护，无论是基于理性的逻辑，还是基于感性的审美，为什么是这样的形态，为什么选择这样的颜色，而不是其他，在设计过程中对这些问题的思辨是需要经得起最终用户检验的。

两个不同时代，对任意的抵抗的表现是不相同的。

实体时代，是以功能为中心形成的理性认知系统来作为对任意抵抗的基础。如果一个物品的生成因素和形体特征都是源自于功能，那么对其设计的必然性认可是直接明了的。比如一个产品的机械传动结构要求这一处为直筒型，那么就抵抗了弧形、可弯曲型等等潜在选项带来的任意性，而且这一形态的必然性在最终产品表现处的客观理性是可以被消费者感知到的。

实体时代的内外一致性表现在外在形态和内在功能的一致， 我们明了无论处在哪个时代，即使是手工艺时代，每一个产品或每一个设计都有它自己的表现性，而不是以它的原型出现（也就是皮尔士符号学里的法则符号）。对任意的抵抗并不是剔除所有非必然性，即使是最简单的物品上，例如筷子，这一种和那一种总有不同之处，而当市场和消费的作用力发展之后，就会发现这些功能构造简单的产品，在具体形态的表现上也是纷繁芜杂，比如就看看超市里饮料货架上那些瓶子的形态，这些瓶子形态的设计绝大多数并没陷入因任意而带来秩序崩塌中，那是因为有更多的选择项进入也就有更多对任意的抵抗需要考察，而不是只从容器这个功能因素去考虑的。

苹果的产品和 Jony Ive 提的 inevitable（必然的）是实体时代对任意作抵抗的最好注解，让一个产品或设计让人感到是必然如此，到达这个结果感觉像走了一条条独木桥，面对着无数的选项作出看似唯一正确的选择，否定了无数的另外的可能。这个过程就是对任意作抵抗，经过严格周致的拷问，取得的结果让人感觉“显然本该如此”，看上去可以轻松取得一般，与实际为这个结果付出的巨大努力形成鲜明对比。

苹果产品上的这种“必然”最终是可以被消费者感知到的， 就像是他们最先找到了这个时代的原型一下，比如 2008 年的 MacBook Pro 的 Unibody 设计，经过这么多年人们也会认为笔记本就应该设计成这样。如果是设计师去阅读或研究这些设计，就会发现达到“必然”这一路上对无数的任意作出了抵抗，并且在设计同类产品上时，千转百回后发现依然是苹果走在最为正确的道路之上，有时就因发现它堵在你前行的路上不得不另辟道路，而另辟道路无非就是引入另外一个任意性，“不一样是很容易的，但做更好是极其困难的。”

如果一个产品或设计的范式（Paradigm）没有发生变化，苹果往往在找到这个“必然”的原型后，通过剔除偶然性去追求尽可能的接近这个原型的设计，它就像一层薄薄的又具有张力的表皮绷在这个原型之上。当苹果找到这个接近原型的设计后，会维持并在细节上不断去完善，所以我们可以看到苹果的很多产品多年会维持一样的设计，并不会出于样式更新的需要而去作出改变。在一些附件上，像充电器和数据线，它们的原型更替不会那么快速，它们的设计多年维持不变，并在细节上完善。苹果 USB 数据线的 USB 端手持塑胶部分在 2010上半年第一代 iPad 发布时从 U 型更新到了 凵 型（即从弧形改进成目前直切端面），即我们目前看到的样子，这个细节的更新与功能和工艺没有太大关系，但是与形态的原型相关，如果你现在回过头去看，或许会惊讶这个 USB 数据线的设计以前怎么会是这样，感叹这也太不像苹果了吧。

追逐原型的设计，对任意的抵抗是以理性和逻辑为主的，所以让这些设计看上去就像解答数学题一样，如果你先解答了这个问题，后来者只能效仿或者望洋兴叹了，苹果设计被人效仿最多不只是外表上看到的那些，还有牵涉到技术、工艺等等，既效仿了答案又效仿了问题的解决方法。

作为后来者，面对设计实力超前的苹果是否只能是效仿和望洋兴叹了吗？并非如此，随着科技发展或者社会发展，时代的范式（Paradigm）在持续变化中，就像从 iPod 到 iPhone 的交互方式变革；另外同一时期并非只有一种原型；即使处于同一时代，受制于同一个原型所，依然可以有不同表现，而且依然也是对任意作出了抵抗，它或许是从不同的侧重点来表现这个原型，或者从不同的方向来接近原型。

苹果在设计上追求“更好”而不是为“不一样”，带来的结果是，一个产品你都认为已经是“必然”的结果了，趋近完美，而当下一代出来，旧的一代就立刻过时，发现原来是可以如此来做更好的，并且又达到如此极致，然后又进入下一个循环中。带来这种循环除了苹果在设计上精益求精外，就是我们对其认知被拉入了范式之内，而苹果下一代的设计可以跳出已有的范式，而我们作为用户不会，自然就有了这种脱节带来的反差。

但苹果的设计并非都是沿着“更好”这一条线往下走的，可能是在同一平面上作处不同的选择，比如 iPod nano 是苹果产品中一个来回跳动性很大的产品，在产品设计的一些设计属性上这种同一平面上的选择就更多了，而且能够发现苹果最近在产品和设计上线性发展更加模糊，比如最明显的就是在产品颜色的设计上。

苹果在颜色设计上的变迁只要通过官方网站首页这些年的变化就能呈现得一清二楚，从 iMac 时期以纯粹的颜色作为突破开始，进入一个较为漫长的时期，工具式的色彩呈现效果，逐渐在产品的屏幕内出现鲜艳多彩的颜色，偶尔也在产品上出现常用经典色的，接着颜色开始从屏幕中跳出来，来到了产品上，逃脱经典用色的模式，更多的色彩，融入多彩的生活，各种中性色出现，颜色设计上甚至超过了那些时尚与生活方式的公司。如果从产品的颜色设计上去区分，大致可以 iMac G3 时期（1998–2003）， 金色 iPhone 之前（2003–2013）和金色 iPhone 之后（2013–），在颜色设计的角度和手段上，前两个时期是相似的，iMac G3 的颜色设计同第二时期中那些彩色的 iPod 设计，都是经典式的用色，选择的颜色也是具有代表性的，而为强调这种代表性意义，会把色谱中颜色都照顾到。用户对这些产品的颜色的视知也是经典式的，颜色就像是一种可供选择的表皮属性，它并没有与产品内在作多少结合，它的视知体验和符号意义的可容纳性有限。而到了金色的 iPhone 5s 之后，选色不再是笼统的平均覆盖式，而消费者对颜色的认识并不只限于赤橙黄绿青蓝紫了，颜色有了厚度，无论是作为本身的属性还是能容纳的符号意义，消费者已经不再是浅尝辄止了。

设计从实体时代进入符号时代，似乎是带来了更多的任意性，就如颜色的选择会带入太多的主观性，那么进入符号时代的设计，如何来对任意作抵抗？

实体时代是通过对设计的内外一致性（integrity）的追求来实现对任意的抵抗的，外在形态与内在形式的一致，外形形态来自于内在形式的探索，而最终外在形态将要传达内在形式，实体时代的内在形式是围绕这功能这一原点展开的。到了符号时代，同样是通过内外一致性来抵抗任意的，只不过内在形式将不只是从功能这一原点生发出来，作为一个针对消费者的物品，功能依然纯在，它依然参与决定了这一物品的内在形式，只不过它不再聚集化，而是扩散化了，与其他符号时代新的因素一道促成内在形式。如果用较直观的例子来说明符号时代的内外一致性，它们其实身处时间为实体时代，比如椅子这一类物品，它们跨越了时代，但早已经是一个符号化的物品，也就是说它这对于坐这个功能性，以及相应的材料、工艺和如何制造而成的，这些都不足够成为决定它内在形式的因素，也就是在椅子工业化生产后的一百多年时间内，年年都在生产层出不穷的新的形态的椅子。相比之下，其他一些家居用品，当它们的内在形式更多源自功能性的化，它们的外在形态就相对是固定的。

符号时代的任意，就是来自符号指涉过程中的公说公有理婆说婆有理，用 /shù/ 来代表生长的树木，/shù/ 和树木并没有本质上的联系，也就是说用 /huā/ 或 /cǎo/ 来代表树木也能完成符号的指涉，但我们用 /shù/ 来代表树是源自我们语言的传统，使用这一种语言的人群千百年来形成的符号指涉传统。在设计之中，我们可以在设计完成后借助阐释，试图来让设计过程中作出的选择变得正当化，这也是我们通常见到最多的情形，以无节制和任意的阐释来掩盖，企图正当化设计过程中的任意和无节制，是适得其反本末倒置的。在设计的过程中抵抗任意，就像语言有传统可依赖，符号时代的设计，也必须依赖于跟语言一样具有普适性的符号系统，它不是一些静态的有限的规则的集合，而是一个动态的系统。这个系统是理性化，可以被发现、学习和应用的。

符号时代设计中对任意的抵制，就是要正视设计的符号性，它同功能一样是理性的，只不过功能与物理与知识相关，而符号与认知和体验相关。我们需要在设计过程中同对待功能一样去研究它的符号性，需要研究最终它与用户与社会去形成怎样的一个符号指涉过程。

:: – ::

面对走向符号的设计，我们需要对设计视角作出变革。

在上世纪，设计师的设计视角从侧视转变到了透视。

在计算机普及应用到工业设计上之前，设计师的图纸借鉴了工程图纸，输出普遍是工程图式的，在类似三视图式的线稿上加上色彩的一些渲染，而在这些多视图的设计图纸中，透视图不占重要地位，很多时候透视图是省略掉的，因为透视图的绘制是非常耗时的，最能表现设计的是侧视图。当然，设计师是通过这些图纸来传递设计的，而其真正设计过程是通过设计草图来实现，难道以前设计师的草图都没有用到透视图吗？连达芬奇的设计草图都是用到了透视图啊，不管哪个年代，设计师的草图都会有透视图。但如果我们从设计去分析，这一时期的设计基本基于一个侧面轮廓（Profile），透视图能作一些体量上的表达。而像 Dieter Rams 之类的设计草图就是在侧视这个视角基础上作了更进一步的表现，他的设计草图更加 icon 化，这个特性也在他的最终设计中表现的淋漓尽致。

我们现在也非常依赖于侧面轮廓图啊，这个视看、思维和表达的习惯是基于我们器官以及几千年的传统，从石器时代的岩石画到古埃及的壁画到现如今儿童绘画，都是基于主要特征的轮廓图。但是我们在设计和设计表现上，却更多依赖于透视图，尤其是引入了计算机辅助设计之后，我们将工作的主要视图放在了透视图上，尝试、出结果、分析评审并修改等都在集中于透视图，而其他视图是我们的绘图操作视图。设计草图同样更依赖于透视图，一方面来自设计教育的成熟，通过相应的设计表现课程，用透视图来创作已经是最自然的事了，而更重要的是，来自我们对产品和设计的观看角度。

对工业设计师来说，他的设计对象即产品是最终的输出，无论你有怎样的信息和思想要表达，要传递给消费者，或者用设计去参与什么行动，最终都是通过设计的成品作为载体的。最终的产品是设计的凝聚物，只不过随着时代发展，设计的分发渠道在时间和空间上发生了变化，以往的分发渠道有限，消费者对这个产品的认知基本从购买并接触这个产品开始，在这之前会通过一些固定的媒介传递一些信息，但这些信息及其作用是有限的，而不像如今有太多的传播渠道来影响人们对这个产品的认知。

实体时代，设计师的视角是透视图式的，产品就处在这个透视图的中央，它有原点，就是功能，设计师可以很方便的转动视图，照顾到它所有的表面。我们会赋给它颜色、材质和表面效果，会把它放入各个场景中，尽可能去模拟真实，如同做渲染图一样，把这个产品放在桌上，放在用户手中，放到日常的生活场景中……

我们也会从“以用户为中心”的角度出发，随时意识到产品是为人服务的，在设计时，我们会时不时地把自己当作用户，试着从用户的角度出发来体验这个产品，抛弃自己作为设计师的专业经验，以一种体贴的心态通过移情的手段去修正自己的设计，用户至上。还需要让设计从情感上与用户形成沟通，能让用户会心一笑，能让用户心头一颤，能让用户发出感叹……倡导用户心理学，让设计变得有温度，充满人文关怀。

我们不能孤立地去设计这一个，而是要同其他产品看作一个整体来设计，就是总体设计或者 system design。把这一个产品看作是公司向外输出的整体形象的一部分，与公司整体的设计理念要相辅相成，取之哺之。将总体设计的思想应用到用户场景之中，看这个产品与其他用户场景里的产品如何交互，如何融入那个场景。如果让消费者感受到这是他生活的一部分，而不是一个突兀的外来之物。

我们也在意设计的文脉背景，去调查研究这个产品的发展历程，以及相应的文化外延，我们不只是在设计一个产品，它需要去表达时代精神，成为文化传播的物质载体。去挖掘传统留下的精神，让其在新时代展现处新的风貌。也会去研究目标市场，目标消费者的调研，不只是经济水平消费力，还会去作民族志田野调查。

以上列举种种，都是目前我们常用的一些设计视角和手段，以摆脱“外观设计”的“恶名”，但无论采用怎样的视角和手段，这些主题下的设计，设计师看待这个物品仍然是透视角度的，这个物品是一个实打实的东西，如果将这个产品在用户这一端仍以实体来看待，那么仍然是透视视角。

一旦脱离开实体，如果像目前设计公司所做的那样，那就是不同的设计学科了，无论是服务设计，还是用设计思维来作设计咨询。设计公司的模式转变，并不是来自于这个时代设计范式的转变，而是设计公司自身的限制。随着科技的发展，要求产品的集成度更高，以及设计将不再属于一次性的服务，而是根植内部并要求能持续生长的力量，外部的设计公司不再能提供有效的工业设计服务了。工业设计公司会消失，而工业设计不会消失，但是 In-House 的设计受制于公司内部结构，以及已有的传统，缺少设计公司开放和灵活性，与外界较为疏离，视角过于专注于产品身上，缺乏跨学科资源对设计的支撑，使得 In-House 的视角和手段仍然很传统，静态的透视角度。

我们从来不会脱离开实体的设计，当设计从实体时代进入符号时代，实体依然存在，依然是我们设计的主体，依然是我们设计的输出，它就是符号系统中的表现体，符号的载体。

既然仍然是设计实体，那么传统实体时代的设计思维和手段也需要被容纳进来，只不过有了新的内涵，就需要新的对待，以及新的视角去掌控。传统的实体时代的设计将会被包含在新的符号时代的设计之中，对符号时代的产品的审视则无法再用透视的角度，必须通过拉远视角才能对产品在认知上作一定程度的抽象，才能让这个实体能够成为承载起符号的价值。

符号时代我们要用俯视的视角来审视设计。

俯视并不是为了去查看这个产品的顶面，而是将产品的具体化的外在形态剥离，抽象成一个个的符号表现体，去分析它们能参与的符号过程；而最为重要的是，以俯视的角度，我们就必须把用户这个集合体拉入到这个符号系统中。我们必须清楚只有在推敲具体的设计时可能要“站在用户的角度”来模拟，用户必须成为我们的研究对象，作为设计师必须与用户作身份上的区隔。所谓“以用户为中心”的设计应该成为设计师的一条基本准则，和很多要秉持准则一样，如果将这一条准则当作高屋建瓴的思想的话，就会陷入过于具体的细枝末节而快速滑入“小聪明”之中。我们不能站在用户的角度来思考设计（设计师作为用户是与身俱来的，只需在设计过程中放松去体验即可），更不能以具体的某个用户来作为自己的依靠，这仍然是实体时代的思维。我们需要是发现和研究用户群，是处在符号系统内带社会性的用户群，而不只是将用户群当作数据来处理，这个综合起来的用户群是这个符号系统内的解释者。

俯视视角的模型可以描述如下：一个充满了动态粒子平面，有一些粒子已经聚合在一起具有一定的形状了，就是我们的设计，有些粒子是从这个聚合体中散发出来，有的粒子正向这个聚合体靠近，这些粒子来自方方面面，这些粒子一侧为设计师，另一侧为用户。用一个符号来替代这个模型的缩减版就是 :: – ::

:: – ::

在我们给一个物品赋以形态之前，需要做很多的功课，它将在整个设计活动中占有有的比例将越来越大，这些功课就是新时代设计的主要工作。为什么从设计上来说极其专业和优秀的[希拉里的竞选设计](http://designobserver.com/feature/im-with-her/39523)，败给了显得粗糙业余的川普的竞选设计，可能是前者过早地投入到了“设计工作”之中。

在物品以及同一种物品如此丰富的今天，所谓“外观漂亮”这个评价标准几乎消失殆尽，一方面美突破一个合格线之后就没有了相互可比性，另一方面社会经济发展让资源分配更加均等，同一功能的物品比如汽车来自 A 家和 B 家，它们之间不存在美的比较，只有面向不同的选择。不只是“外观漂亮”，功能也逐渐失去相互之间高下的可比较性，尤其走出模拟时代之后，功能更加抽象化，人们对功能的理解纯粹依赖于知识而非直接体验。用户寻找的是适合他的产品，所谓适合就是这位用户事先已经留出一个有轮廓的空间，找得就是轮廓能匹配上的那一款，找到合适的这一款后才会觉得它漂亮。

对物品的研究可以分成两个角度，这个物品是什么，以及用户将怎么认知这个物品。

这个物品是什么，来自两个方面的认识，由功能定义和由家族形象决定。我们对功能的理解是“它能干什么”，而不是“它的工作原理是什么”，科技的发展让用户彻底忽略后一个问题，所以我们对功能的认识也是符号式的。如果是一个已有品类的物品，那么对其功能的认知将转移到家族形象这一面。而创新的产品，往往带有创新的功能，在用户对产品价值和设计的认可上是最为直接的，人们对这种新产品的认知将由此开始。如果按照我们上面提到的粒子模型作参照的化，功能的创新是向外散发粒子最多最直接的，苹果每年的产品更新都或多或少有这样的创新比如 AirPods，也有一些类似 Smart Cover 之类偏设计化的功能创新品，也有像 Touch Bar 这样的反例。我们对这个物品是什么的认知更多是来自于家族形象，如果我们对某个东西头脑中已经有印象，那么看到的那一刻马上会反应处那是什么，在认识它的功能之前，比如“那是条椅子”肯定位于“那是可以坐的”之前。头脑中的这些印象就是我们文章开头提到的法则符号，而这些法则符号的形成并非来自于知识性的定义，而是对收集的很多很多的单一符号的一种认知上的总结，我们从来不会去定义椅子是什么（而且似乎椅子是很难定义的），但是我们认知经历了很多很多椅子，每一条椅子可以算作是一个单一符号，我们会将这些单一符号的集合处理成法则符号，也就是将个例整理成类型。类型的研究在设计中至关重要，我们对物品认知时使用到的类型经验是直觉式的，但在设计中我们就有必要去分析这些类型，而不是也使用直觉式的类型经验，直接付之行动，在符号时代则更应去研究类型，因为当功能失去对物品本质的定义作用后，类型将起决定性的作用。

对用户怎么认知这个物品的研究，是探讨用户对物品的视知觉过程的探讨，诸如对物品基本属性是如何感知的，线条，形态，体量，材质，颜色，表面肌理等等。比如颜色的选择，这项看上去是最具任意性的工作，我们如何去抵抗任意并达到一种出众的效果，首先肯定不能借助教条式的建议，比如今年的流行色是什么之类，我们知道人对这些基本属性的感知并非只是感觉上的，同样会引发初步的知觉，当我们想设计一个较为理性的东西时，就要考虑到颜色与材质的内外一致性，比如阳极氧化需要体现处金属质感的颜色，而当我们想让颜色充当交互的最前沿一层，我们就使用更为大胆的颜色，具有强烈符号属性的颜色，甚至可以违背内外一致性。然后每一个方向又能继续往下深究，体现怎样的金属质感，哪一种颜色能实现我的产品诉求等等。这些基本元素的设计，在符号时代不同于实体时代之处是需要挖掘出里面的符号指涉关系，在实体时代这些基本元素的设计往往比较固定比较制式化，而符号时代有太多需要表达的东西，要借助与这些基本元素。对形态的研究也是如此，需要考虑人们是如何识别形态并在头脑中留下一个经过加工的形象，怎样的形态最有助于用户对信息的拾取以及形象的加工，用户头脑中的怎样的形象有能快速与我们设计所指向的内涵快速联系起来，怎样的图形更加 Iconic 更容易被用户所记住……如此，对这些基本属性的研究并非只有物质本身，它们自身具有很多信息，同时又能承载外界的信息和赋予的意义，这些具有了符号意义的基本属性就是符号学中的性质符号（Qualisign）。

符号时代的设计，我们可以向品牌设计学习，比如现在的 Logo 设计所持的视角与观念同以往有着本质的差别，以前是静态的现在是动态的，以前是图形的标准化，现在 Logo 是具有很强容纳性的容器，以前 Logo 是一个基本元素，现在成为了平台。这种静态到动态的变化恰好应对前面说的从透视视角转换到俯视视角，工业设计也需要让物品成为一个容器，容纳我们要追求的意义。

我们生活的周遭世界已经从物品形成的体系变革至符号形成的体系中，当我们将家从地面迁徙至高空，注定我们从物质的追求逐渐转向了对意义的追求，我们会长期处在这种转变之中，就像实体时代向符号时代转变一样，但我们再也不能继续沿用上一个时代的思维和方法来作设计了。

### 转载声明

本文转载自知乎:

下篇: <http://www.hi-id.com/?p=2896>

尊重原创, 转载请注明出处


# 符号化设计之符号形式探寻

我们已然处于设计变革的临界之地，向新时代探索和进发是我们这一时代设计师的机遇和责任。

从功能主义设计走向[符号化设计](http://www.hi-id.com/?tag=%e4%bd%9c%e4%b8%ba%e7%ac%a6%e5%8f%b7%e7%9a%84%e8%ae%be%e8%ae%a1)就是我们面临的具有时代意义的变革。

这里，功能主义设计是广义的，始自一百多年前的现代主义诞生，涵盖了后继的后现代设计，直至如今。功能主义设计指的是物品的形式由功能生发而出，狭义的功能主义设计是关于设计师的理念和方法，而广义的功能主义设计是关于时代与社会对物品的认知观念。

一百多年来的设计学都是围绕着狭义的功能主义设计，无论是拥抱它还是批判它，都是关于从设计师视角出发的理念和方法，就如后现代设计，是基于对狭义功能主义设计的批判，当批判的任务完成，自身也随之消失，那是因为批评和“革命”仅限于狭义的功能主义，即设计师的理念和方法，并没有介入社会的认知层面。

现代主义的诞生并非仅是来自于 20 世纪初那一时代设计师的作为，在这批设计师作为之前已经具备成熟的历史基础，即物品因功能意义的解放而得到解放，物品的形式不再依赖于社会的习俗，而是基于它被解放了的功能。社会和时代对物品的认知逐渐转移到了以功能为原点的基础之上，现代主义可以追溯到 19 世纪中叶，而其思想的萌芽甚至可以更早。

变革启自时代潮流之变，而设计师理念和方法上的变革总是具有一定的滞后性，就像功能主义这个新的思维观念经过了萌发和生长，足够成熟之后，才随着一代设计师的介入，引起狭义的功能主义设计变革，继而统治了整个 20 世纪。

当新的时代潮流，新的范式，发展到了成熟阶段，对于这一时代的设计师来说，是不能错过的百年机遇。

我们从机械时代，从模拟时代，进入了数字时代，时代变革源自科技层面的发展，却深入普及到社会日常的方方面面，它从根本上改变了人们的认知思维，改变了人与物之间的关系。

我们对周遭的认知范式发生了根本性的改变，从“具体”走向了“抽象”，从“连续”走向了“间断”，从“实体”走向了“现象”。

在“具体、连续、实体”的认知时代，物品的外在可感，内里可知，可知的内在包括原理、结构、运作机制等，它们清晰易懂，逻辑直白，如同谁都能将其拆开维修一般。人们对物品的感知是如实真切的，一切都在眼皮底下，功能和形式的互生关系形成了物品的内外一致性。到了“抽象、间断、现象”的认时代，物品的原理、结构、运作机制等，对于大众来说已经变成了不可知，以及不必知，它们与物品的外在形式相脱离，失去了如实的对应关系，物品的形式及功能不再来自于具体的原理和结构，来自于物品的内部，而是来自于实体物之外的关系，内在性不再“内在”。

外部力量也推波助澜，一个是商品经济和消费主义形成的物品生态体系，这个体系不只是维护物品的关系网络，而且还能够通过关系来生成新的物品，物品进一步从单纯的功能制约上脱离；另一个显著的外部力量就是信息社会的发展，使物品承载了更多的符号内容，物品不再是单纯基于功能的工具，成为了具有媒介意义的容器；而进入信息时代，人们的注意力也从实体转向了信息，当身外世界充满了信息和符号内容，而且这些信息和符号内容大都是被直接消费的，并非是深藏在实体之内有待提取的，注意力的转移直接影响着对周围世界的认知，我们对实体物失去了兴趣。

无论是变革前还是变革后，物品仍然是物品——具有物质形态和功能的东西，所以，这种变革并不是推到重来，要颠覆实体，而是在原来的基础上作了扩充和升华，变革前物品的价值和意义，在变革后仍有保留，只不过成为扩充和升华后物品的价值和意义中的很小一部分。

所以，当我们的认知范式从“具体、连续、实体”变革至“抽象、间断、现象”，设计也需从功能主义变革到符号化。这种变革不是基于批判的颠覆，不像现代主义运动那样具有鲜明共同的时代教义，而是基于递进的升华，关于指引设计实践的理念和方法。功能主义设计时代的课题在符号化设计时代仍然成立，设计师仍然要去探究物品的功能与其形式的关系，只不过功能对形式已经不具备决定性的意义了，功能主义设计时代的理念和方法亦有部分得以继承，成为符号化设计时代的一个子项。

设计师都可以感受到旧有的理念和方法在当前实际工作中是如何地捉襟见肘，那是因为所操持的理念和方法依然是功能主义时代的，虽然会因外部的压力，对自己的工具和方法会作一些变通和打扮，但是从根本上来说，仍然是狭义的功能主义设计。

在日常用语中，“符号”这个词总被简单地理解成仅有附加的象征意义，而自身没什么内涵的抽象元素，以此来看，“符号化设计”就会被认为是脱离根基、不务正业的务虚行为。但现在我们需要严肃地去考查和对待，符号化设计是指[用符号学的视角](http://www.hi-id.com/?p=2896)来审视新时代的设计事务，用皮尔士（Charles Sanders Peirce）的话来说，“我们的宇宙是被符号充满了”，我们通过符号来思考，也是通过符号来交流。

在功能主义设计时代及更早，我们去认识一个物品，在与其交互的过程中也包含了基于符号的交流，但因为这一时期的物品相对来说是独立的，因其功能性而向内自成一体，就如一个恒定的静态物一样，向外界散发的信息粒子固定且稀少，所以用符号学来剖析虽然可行，就是杀鸡用牛刀了。

而一旦物品从向内自成一体的功能性上解放而出，它就不再是一个固定孤立的静态物了，它不仅仅是被纳入一个个物品关系网中，它就是诞生于这些关系网，就像是凝固了一些充满在宇宙的符号一样，这些物品是如此动态和游离状，从它身边走过都能扰动它，带起一阵符号粒子，若此时仍用功能主义设计时代的工具来剖析它，就是抽刀断水了。

所以，当从功能主义设计时代走向了符号化设计时代，我们需要探寻新的设计理念和方法，包括在最基础的设计技法上。

### 符号形式

设计先是从制作中独立而出，设计师就不再是工匠了，接着是设计又和工程相互剥离，设计师不再负责物品功能及制作的具体实现方式了，一方面，设计走向了更加专业，另一方面，脱离了制作和工程的设计，失去了牢靠的理性支撑，从而在说服力上需要付出更多的努力。这种失语一直在困惑着设计师，大众赞赏和认可那些全能的“文艺复兴大师”，设计师也恨不得自己还是个工程师，没有比设计这个专业更愿意去引用和借助其他学科的知识来增强自己的专业性的了，这种困惑和不自信的根本来自于对[设计的本体性](http://www.hi-id.com/?p=2753)的迷茫。

设计师对工程的依赖在走向牛角尖，当设计和工程从机械时代开始相脱离之后，工程在专业程度上飞速发展，对于大众以及设计师来说已是无法理解了，同时也是不必理解了，包括其原理，其结构，其运作机制等。虽然现在依然强调设计师要了解材料和制造工艺，但这些经验与设计的本体性并非处在一条路上，它们是设计的实现方法。一旦人们对原理、结构和运作机制不再关心后，以技术上的专业知识来增强物品和设计的说服力成了一门宣传的技巧，比如那些经过精心舞台布置来渲染产品加工制造过程的资料，所展示的并不是设计。

不管时代如何更替，设计师的任务总是关于形式的塑造，[形态会变化会消失](http://www.hi-id.com/?p=2883)而形式永远是设计师固定的主题。

在功能主义设计时代，设计就是处理形式和功能的关系，是功能生成形式还是形式表达功能，是形式追随功能还是形式满足欲望，在功能主义设计的大时代之下有各种潮流，有的——比如后现代主义——看上去是反功能主义设计的，有的则弱化功能在设计的地位，将对设计对形式的描述转向了诸如历史文化，或者是个人体验，诗意的表现等等主题，尽管这些潮流有各自的表现，但是其设计的立身之本，即其设计的本体性，仍然都是围绕功能展开的辨析。物品的原型，往往设计师寻找的形式的源头，决定于对物品的功能所作的本质探讨。

波提舍（Karl Bötticher）将建筑形式分成了工作形式（或核心形式）和艺术形式两类，工作形式是关于建造力学和材料等的非直接可见的抽象内容，而艺术形式则是对工作形式的表达和再现。如果将这个二分法应用到物品的设计上，就相当于对功能和形式这个笼统的概念上作一次深化，因为功能并不只是满足用户实用性需求，这些实用性的功用同其制造的逻辑、材料属性、结构上的理性思考等等内容一起形成的一个抽象的概念，并通过形式来表达和再现。功能主义设计时代的设计本体性的主要内容就是围绕着工作形式和艺术形式的内外一致上。

当我们从功能主义设计时代进入符号化设计时代，这个时代的更替并非来自于批判和颠覆，而是来自内涵的扩充和升华，所以，功能主义设计时代的内容在符号化设计时代仍然延续着其生命力，功能仍然重要，功能和形式的内外一致性仍然决定着设计的一些品性，只是决定物品及其设计并不只是来自功能，更多的决定因子来自于外在的关系网络，而且这些成因将在人们对物品的认知中占据越来越重要的地位。

就像功能应对着工作形式一样，符号化设计时代我们引入**符号形式**，以它来承载起新时代物品上的符号化内容。

而符号化设计时代，设计师的主要任务就是对符号形式的探索。

通常来说，符号是不具备物质性的，也就是符号和最基本的直接体验无关，符号总是与认知关联，可以是低度的信息交流，也包括是抽象层面的意义象征。但是，在实际中并非如此泾渭分明，我们用触觉直接去感知木材和金属的温度可能与符号无关，但是在冬天看到金属质感的表面联想到冰冷的触觉记忆，就有符号在传递。因此，符号形式也能覆盖到传统的功能主义设计之上，而时代的变化，认知范式的变革，让符号形式成了物品设计最重要的课题，如今我们与一个物品间的交互几乎全是符号式的，无论是偏客观一面的功能还是偏主观一面的审美体验，无不被物品和审视者自身外的关系网所左右着。

同其他的形式概念一样，符号形式并不是指具体的形态，那些眼睛或者其他感觉器官可以直接感触到的东西，它必然是与人的认知系统关联。

符号形式并非关于物品独立于人的本质，它探讨的是从观者角度所认识到的概念；符号形式并非关于元素的集合，它总是从整体形象出发；符号形式并非关于物质性，它研究的是现象之上的认知；符号形式并非来自于功能的技术实现，它是功能现象化后的表现；符号形式并非一成不变追求永恒性，它拥抱时代和变化；符号形式并非物品与生俱来，它诞生于物品与人的交互网络之中；符号形式自身不具有意义，它承载后续赋予的意义；符号形式并非是物品形成的必要条件，它是每一个成型物品的必然结果；符号形式并非探讨某种物品的原型，它是关于某个物品的抽象视看属性。

比如我桌上有几种杯子，那么每一种杯子都有它的符号形式，甚至两个几何形态一样的马克杯因为杯身上图案不同，而图案对这两个杯子来说具有足够的重要性，那么这两个杯子就有两种符号形式。这个杯子的符号形式不是从定义上——比如具有空腔的尺寸适当的容器之类——去探求它的本质，符号形式无法单独存在，必须有人（或关系）的参与，或许容器这个概念可以单独存在，但是杯子就是容器和人关联上后的物品，杯子的符号形式研究的正是从人的视看角度出发在杯子上所认知到的具有一定抽象性的概念。这个杯子的符号形式不是仅仅探讨它的材料是什么，它的表面属性是怎样，它的重量是怎样等等，符号形式是关于一个整体形象，让我们意识到“这个杯子”的具有概括性的认知形象。这个杯子的符号形式并非来自于它的制造工艺，是陶瓷烧制还是不锈钢冲压，不同的制造工艺最终有不同的形态表现，而符号形式是基于这些形态表现之上，但也仅限于表现。正如前面提到的两个仅是印刷图案不一样的杯子可以具有两种符号形式，就可以看出符号形式对它的生成环境是如何的敏感了，它跟随着时代一直在变化，甚至就如眼前的这个杯子，虽然它自身形态已是固定，但可能会随着周围环境和时代的变化而发生变化。

所以概括说，符号形式存在于具有社会和关系属性的人对物品的视看过程中，从物品的现象表现上经过一定抽象形成的认知概念。

对设计师来说，需要在物品诞生前，在设计阶段，去构建好它的符号形式。如前所述，随着科技的发展，除了工程师之外，功能的具体技术实现对人们来说不可见并且也没必要了解，功能就成了一个抽象的输入输出模块，对于用户对于设计师来说，它都已经实行了符号化了。如果用[皮尔士的三元符号学结构](http://www.hi-id.com/?p=2896)——即表现体、解释项和客体——来解释我们的符号化设计，那么符号形式就是解释项（Interpretant），即符号解释者对符号的感知结果，而承载符号形式的，即我们设计的物品，就成了表现体（Representament），即符号的载体形式，在这里就是呈现设计的物品，而客体（Object）即符号指向的目的物，在这里就是符号形式的指向物，在这里就包含了人们对物品的认知体验。

功能主义设计时代的理念和方法往往是从物品内部出发的，设计的主要内容也是围绕着静态的物品概念，围绕着功能去探索这个物品的本质，去挖掘这个物品的原型，推敲这个物品的形态和使用体验……而到了符号化设计时代，首要任务就是研究这个物品的生成环境，决定着这个物品生成的关系网和人们对其的认知形成，探索这个物品的基于现象的认知概念等等，亦即对符号形式的探索。

从功能主义设计时代到符号化设计时代，不变的是设计最终都是以真实可感的物品来呈现，也就是我们需要将符号形式物化到可感知的载体上。在[解释皮尔士的三元符号学结构](http://www.hi-id.com/?p=2896)时，使用了看见红灯停车这个例子，“红灯需停车”就是三元结构里的解释项，对应着我们提出的符号形式，作为设计师，首先需要探寻到如“红灯需停车”这样的符号形式，然后就是需要将这个符号形式物化，也就是我们需要去设计红灯，它以怎样的形态呈现，怎样具体的一种红光，怎样的亮度，等等，在符号化设计时代，设计的品质并非来自功能和形式的内外一致性，而是物品与认知概念的内外一致性。

将符号形式物化，最基本的，当然还是关于形态。

### 线描和涂绘，两种形态抽象法

沃尔夫林（Heinrich Wölfflin）研究比较文艺复兴艺术（或称古典艺术）和巴罗克艺术的差别，提出了开创性的五对基本准则，来区分两个时期的艺术作品在风格上的差异，沃尔夫林的这个突破性成就不仅影响了艺术史学，而且改变了人们对艺术作品的欣赏视角，并且这种改变波及到与形式研究相关的各领域。

在沃尔夫林的五对基本准则中最显著也是最主要的就是第一对：线描和涂绘，文艺复兴艺术是线描的而巴罗克艺术是涂绘的，16 世纪是线描的而 17 世纪是涂绘的，丟勒是线描的而伦勃朗是涂绘的……沃尔夫林的这个发现近乎天才般，在他之后，人们就会觉得这种风格上的差异是如此地显而易见。线描指的是按线条来观察和表现，而涂绘则是按块面来观察和表现，前者就如眼睛沿着事物的轮廓和边界（不只是外边缘，事物内部也有其轮廓）摸索和寻找美感，后者则是注意力从轮廓和边界撤离，形体开始闪动，我们看到的是那些小斑点组成的对象。线描风格表达的是客观、固定和明确的，具有塑型感，固态的，形体和形体之间有明显的区分，轮廓清晰而确切如同可以用手触摸得到一样，而涂绘则是主观的，呈现的是眼睛直接看到的外貌，是运动的，边界融合并且不再连续，轮廓模糊不清，对观者来说只有视觉感知。线描按照事物的真实情况来表现，而涂绘则是按照事物显现在眼前的情况来表现。

如果我们以后来的印象派绘画来作为涂绘的例子（文艺复兴作为线描的例子）则很容易理解线描和涂绘的差异，而沃尔夫林的精彩之处在于将线描到涂绘的转变放到了文艺复兴艺术和巴罗克艺术上，不仅说明了艺术风格上的转移并非是突然之间的，它是一个逐渐变化的过程，同时通过对这些逐渐转变过程中艺术品的分析，让人们确信从线描到涂绘的转变是具有时代性的更替，延伸到印象派的诞生就可以更加自然地理解了。

沃尔夫林将线描称作是触觉的艺术，而涂绘为视觉的艺术，因为前者有着清晰的轮廓，诉诸于触觉，眼睛也仿佛如同手指一样可以抚摸这些边界，而到了涂绘时代则全然诉诸于视觉。

线描是最远古的绘画方式，就如关于绘画诞生的那个著名的原型故事：公元前 600 年，在古希腊的西锡安一女子 Kora 因她深爱的年轻人要远行，Kora 就用灯照着她的爱人，在墙壁上沿着影子画出了他的面部轮廓，她父亲 Butades 则根据这个轮廓做出了粘土模型，他被认为是第一个雕塑家。这个关于绘画诞生的这个故事本身不具备历史意义，但要说绘画源自于古人对影子的轮廓的认识和描摹，也是很自然的，因为投影而出的 2D 影子比起 3D 的事物来说更容易对其确切的轮廓进行认识和把握。柏拉图的[洞穴寓言](https://en.wikipedia.org/wiki/Allegory_of_the_Cave)讲述了居住在洞穴中以影子为真的人，在他看到真实的事物后仍然以为影子为真的寓言故事，或许也可以从影子的轮廓更容易认知的角度去解读。

实际上绘画早在 4 万年前就已经出现了，那就是洞穴壁画。在这些位于世界各地不同时期的洞穴壁画中，在主题和绘制方法上有很多共通之处，比如用颜料吹到贴在洞穴墙壁上的手上，留下了手的轮廓剪影。在这些远古的洞穴壁画（以及岩石绘画）中，无论是重于再现的那些惟妙惟肖的动物绘画，还是那些形态抽象简单强调符号意义，通常都是尺寸缩微的图形符号画，它们都是采用了线描的方式，对形态的把握依赖于事物的轮廓。

儿童绘画也是如此，他们的绘画基于轮廓，使用尽可能连续的线条来绘制，由于肌肉和技法的不成熟，总是无法绘制准确的形态，所以与其说儿童绘画是再现性质的轮廓画，不如说它更加接近符号画，但显然儿童还不具备形态的抽象思维，这些儿童画作不像那些远古的洞穴壁画中的符号画一样，具有抽象性，儿童绘画之所以如此并不是全然因为表现技法的限制，他们的认知思维也是如此，因为他们已经能够粗略地去把握事物的轮廓。

如果将线描不再限制于沃尔夫林的研究范围（比如古典艺术），而是将其作为人类最基本的几何形态表达手段来看，那么线描它并非是一种触觉的艺术，它是一种诉诸于认知思维的艺术。人的视觉活动并非是被动的接受外界刺激信息，它是主动的而且具有超越感触之上的认知行为，而对于事物的认知，绝大多数情况下是基于其轮廓的，在我们看到一个事物时，霎那间我们的认知就作出了足够多的思维活动，抽取了这些事物的轮廓，以轮廓来指代具体的事物，就是洞穴壁画中的缩微绘画一样，也就具有了符号性。

线描——对轮廓的认知——是思维的艺术，那么涂绘——对体块的认知——就是体验的艺术。沃尔夫林将涂绘视作是视觉的艺术，涂绘是直接绘制眼睛所看到的，而不是经过思维进行抽象和认知过的，然后，在涂绘的艺术品上，无论是它的再现性（对事物的描绘）还是它的装饰性（自身形式美，诸如笔触的动感）与人的知觉产生的联动不仅仅是限制在视觉之上，同样也会唤起触觉的通感，也包括对运动知觉的挑动，我们将其视作是体验——人的感觉器官直接的反应。

体块认知涵盖了事物中抽取了轮廓之后的内涵，颜色、材质、明暗、表面肌理、光学属性、运动趋势等等都属于体块认知之中，在洞穴壁画中以及儿童绘画中，都可以看到对这些体块元素的表达。体块的认知和轮廓的认知是一道出现的，而且体块和轮廓一样，也会具有一定的抽象性，也就是具有一定的符号作用，通常它们是以性质符号（Qualisign，皮尔士的符号学分类法）的形式出现的，我们看到一件事物上的红色，首先是对这种颜色的直接认知，同时也关联到分类等概念上的认知，比如同时我们头脑中会念叨“红”这个词。体块认知因为直接诉诸于体验，所以在人们识别物品与环境的关系中——即“图和底”区分——起着非常重要的作用，如果我们的视觉思维很难概括事物的轮廓，那么体块在替代着相应的符号作用，同时体块也在强化着事物的轮廓。

我们对事物的认知开始于外貌形态，在认知过程中无论从轮廓还是体块都有一个积极的抽象的过程，而在设计中，将符号形式进行物化的过程中，我们首先需要处理的就是去应对物品将如何被用户所认知，从轮廓到体块，如何被用户拾取信息，又是如何被抽象成符号，用于对物品的再进一步认识和使用。

轮廓和体块的差异，亦可以用计算机对图像图像的两种处理格式来类比，即矢量相对于轮廓，而位图则相对于体块。认知中抽象的过程就像是一种信息的降阶，矢量图是可以任意的放大和缩小的，但是抽象或降阶不是一个缩小的过程，如果只是缩小，就成了缩略模型或微雕，无法做到抽象和符号化。降阶的过程中，除了要去除多余的信息量之外，还要维持住事物的符号原真性。我们可以看到一些艺术作品，比如说将一幅现实场景的照片，通过降价处理成了简化的绘图作品，但因为改变了诸如透视等特性，让这副简化作品变成一幅卡通绘画，虽然增添了趣味性，但已经失去了原真性。而过度的降阶，虽然符号功能得以保留，但是将会变成通用性的符号从而失去了对这一物品的标识性。

在符号化设计时代，标识性将变得无比重要，标识性指的是某一物品经过认知抽象或降阶仍然具有识别性。

在符号化设计时代，一个好的设计就需要具备好的标识性，而好的标识性并不是指它多么特别，多么的突兀，多么容易从周围环境中突现出来，而是指它容易被观者作认知上的抽象，容易被作降阶处理，容易被符号化，并且在抽象和降阶的过程中不失去设计中重要的原真性和识别性。

经典的设计往往总是具有非常好的识别性，一个轮廓或者一个细节特征就具有标识性，那是因为它已经被符号化了，而且作为符号它充分地发挥了作用，它所承载的含义已经在大众中广泛地传播。经典的设计具有的符号特性来自于两部分，第一部分就是本身的设计在当时具有可符号化的基础，第二部分就是这一设计的生存环境以及历史发展不断巩固了其符号特性和地位，对于设计师来说，这些经典的设计的启发意义来自于第一部分，即探讨这一设计在当时形成符号化的基础是什么。

一个好的符号化设计需具备好的标识性，最直白的一个具体例子是：一个好的产品设计总能绘制成一个既有识别性又含设计特征的图标（Icon）。如果将一个设计经过抽象和降阶绘制成一个图标，如果这个图标含混不清，或者过于一般化而不具备特征，那么这个设计要承担起符号任务来就会受到牵制。以图标绘制来检验设计的符号性基础只是一个特殊的例子，并不适用于所有的设计任务之上，我们也必须承认有的设计并不容易图标化但仍是一个好的符号化设计，通常图标更多的依赖于轮廓上的抽象，较少地触及到体块上的抽象。

区别于功能主义设计时代的方法，面对符号化设计，设计师需要在整个设计过程中研究并不断审视设计的符号特性，从最基本的形态，到这个设计的生存环境的分析等等。在对形态的研究和审视过程中，需要引入符号学的视角，去评判形态自身的识别性和独特性，又必须考虑它如何承载和传递意义。对形态的评判我们有必要引入新的手段，从**小幅面的轮廓或体块抽象图**（比如上述图标式的轮廓图）去推敲设计的符号形态，小幅面的轮廓或体块抽象图必须在设计最初阶段引入并且贯穿整个设计过程，在推敲阶段这些轮廓或体块抽象图必须以手绘为主，手绘中与笔联动的思考过程是推敲设计符号特性的最佳方法，就如儿童画一样绘图的过程是视看过程的反应，手绘的推敲过程会包含一部分视看过程中的抽象行为，而计算机制图中输出的轮廓或体块抽象图只能用于辅助评审，比如团队内的评审。

探寻符号形式，以及如何将符号形式物化，在具体的设计和形态上如何体现，比引入新手段更重要的是，引入新的设计视角。

### 符号化设计的四大设计视角

设计师的设计表现技法会随着科技和工具的发展而改变，比如计算机就极大的改变了设计师的工作，而这种改变不仅仅是生产效率和流程上的，工具的改变也会带来思维的改变，虽然是间接导致的。在[《作为符号的设计（下篇）》](http://www.hi-id.com/?p=2896)中提到了设计师绘图在上世纪末发生了转变，主要来自于计算机辅助设计的介入，让设计师从绘图桌转向了计算机，从手绘转向了设计软件，绘图的视角也发生了变化，从诸如三视图等平面上的绘制，转向了以透视图为主。从教育到实践都抛弃了效率低下的旧式制图法，设计师的形态绘制也从严谨的制图转到了自由的塑型软件之上，就像沃尔夫林提出的文艺复兴艺术和巴罗克艺术是从线描发展到涂绘，在设计师的实践上也能发现这种变化，即从轮廓的推敲转向了体块的塑造，从诉诸于认知思维走向了诉诸于感知体验。

设计走向符号化，它将更接近于认知思维，对直接的感官体验的要求将会降低，[未来将会是无形](http://www.hi-id.com/?p=2883)，作为设计师需要适时地对设计视角作出更新。

设计从功能主义走向符号化，我们将这一变革视作是一种扩充和升华，而不是批判和颠覆，所以旧时代的一些设计理念和方法仍然得以保留和延续，或作出适当地更新，但它们的地位将不再重要，将由新时代的设计理念和方法决定着设计的重要性。

我们将借用常用的投影绘图中的视图概念来阐述符号化设计的理念和方法。

#### 塑型视角（透视图）

这是最为普遍的设计视角，也是设计师最依赖的视角。当设计师从工匠和制作中独立出来，不再直接操作物品，需要使用媒介来传递设计，如何能够直观地传达设计成了一个重要问题。设计师并非科学家，靠着抽象的概念就能思考和完成工作，设计师依赖于一些现成之物和经验（即列维-斯特劳斯说的修补匠的思维），必然要有直观的要求。在一段时间内，设计师和工程师使用一样的工具和表现手法，但因为直观性的需求，设计师最终发展出自己的一套用于表现和传达的手段，透视图的绘制和渲染成了重要的一环。在计算机发展后，设计师可以在软件中直接操作形态，而且能够在透视图中实时呈现，这就像是给直观插上了翅膀，设计师也就心甘情愿地“沦陷”其中。

透视图中“直观”的诱惑很容易让设计师沉迷于形态塑造的游戏之中，如同塑造一个雕塑品一样去制作设计，形态的变动，无论是增加还是去除都是轻而易举，而且还可以随时全角度来观察。我们身边有很多设计，比如某个物品的整体设计，或者是某一处的细节设计，都是来自于塑型视角的诱惑，诱惑通常导致了泛滥。从塑型视角出发，往往会专注在设计有机的一面，这些设计就像是一个个具有功能的雕塑品一样走入用户的生活之中，让用户的生活空间成了这些雕塑的展览馆。

而当走入符号化设计时代，我们并不会抛弃塑型视角，只不过它不再是设计过程中最主要的工作了。我们仍然要去塑造形态，只不过形态的塑造不是始于透视图终于透视图，尽管最终我们得到的设计都是以三维实体物的方式出现，但是始于透视图终于透视图是糟糕设计的生产方式，它让设计疏离于思考。

我们通过塑型视角来完成诸如形态塑造等例行公事外，也需要对这一设计视角尝试作出更新。塑型视角是基于体块的感知体验，体块之上的抽象也能承担起符号意义的传送，材质、颜色、表面肌理等在感知体验和意义传达上将占据重要的地位，有时它们的重要性会超过几何形态。在塑型视角，轮廓不是主要内容，在这一视角我们需要去开发设计的“涂绘”内容，如同巴罗克艺术或者更典型的印象派画作一样，甚至，我们在设计的探索阶段，借用一些印象派绘画的技法（比如涂绘）来辅助思考和推敲，尽可能弱化轮廓和边界，强调体块等。试想周围的环境中一切都失去了边界，我们的设计将以怎样的形式和样貌出现在这样的背景之中，它是怎样的颜色，怎样的质感，怎样的动感。

材质、颜色、表面肌理等体块属性的重要性在于，当物品的形态不再重要，甚至走向无形，对物品内在形式表达的任务就落到了这些体块属性上，它们促成物品新的物质性，在今天的物品中我们已经能够体会到这种变迁趋势，在物品意义的传递上，诸如颜色和材质等逐渐充当起了主角。同时可以明显体会到，颜色和材质的设计，它们的表现力以及对符号意义的传达，在近十年有了巨大的发展，达到了新的境地，相比而言，上世纪的颜色和材质的设计不仅是静态的，而且是依附于形态并为其服务的。

#### 功能视角（底视图）

用底视图来指代功能视角再合适不过，极少有人会去在意和关注一个物品的底面，功能组件和结构都安置在物品内部，而底面通常是一个通向内部的窗口。

设计师的任务不是如何去开这个窗口，而是如何去封好这个窗口。

在功能主义设计时代，决定一个设计往往就来自于功能视角和塑型视角，简单的内和外的关系。功能指的是一个物品是如何发挥其功用，以及围绕着功用展开的内在逻辑。“设计是关于一个物品如何工作的”这句话的指向含义在功能主义设计时代也发生了变迁，先是指物品内的功能，之后是指对用户来说功能，前者是人适应物品，后者是物品适应人，之前设计师仅仅研究物品，之后设计关注的是人与物的关系。

设计师并不负责内在功能的具体实现，或者物品结构的具体安排，以及生产工艺的具体编制，尽管这些方面的信息的掌握、知识的了解和经验的积累对设计师的工作有所帮助，但设计师的工作并非通过替代工程师的部分工作来体现其专业性的，事实是，设计师需要为用户将工程师的工作“掩盖”起来，用户理解的某个物品的功能，并非是工程师的工作内容，而是经过设计师转译之后的功能实现。

随着物品功能实现愈加抽象化，设计师的转译工作也将愈加重要。

首先，设计师需要将工程师的工作内容完全封闭，封闭成一个黑箱，它的内里对用户来说没有必要去了解。就像我们看待身边的手机，完全不用去认识它是由一个个电子元件组成的，反而，如果意识到这些元件是组成关系，就破坏了我们日常认知中的那个手机的形象，如果我们将手机的屏幕组件撬开，但仍保持线缆连接仍然能工作，这时候去操作这台手机，它就像丢了魂的机甲一般。这也是设计师必须对底视图投入一样的专注的原因，否则苦心营造的物品的灵魂会从底面泄露掉。

设计师用来封闭工程师工作的不是设计一个无法开启的底盖，而是从[现象上](http://www.hi-id.com/?p=3098)，从人们的认知上去塑造一个具有功能输出的物品概念，所以，与其说功能视角是站在探讨物品的功能上，不如说它在架在人们的认知和体验之上的。

在功能主义设计时代，功能和形式的内外一致性抵抗了[设计中的任意性](http://www.hi-id.com/?p=2896)的出现，到了符号化设计时代，功能和形式之间的互生关系逐渐被解除，功能不再是技术如杠杆传动般的直接输出，而成为了一个个抽象的模块，设计师要做的就是去维持理性，从而阻止设计中的任意性带来的崩塌，功能视角是设计师用来维持设计理性最重要的途径。

#### 符号视角（顶视图）

在谈论与设计有关的问题时，“上帝视角”这个词总时不时被提出来批判一番，批判它抹杀个体，对活生生的用户的具体问题因一概而论而被漠视，批判它盲目拔高，脱离群众不解决实际问题，在日常使用中“上帝视角”（God’s-eye view）会让人觉得因占据了制高点而带有一些高高在上之感，虽然很多时候它是一个技术用词。

设计师的工作的确是基于解决具体问题的，否则它就只是学说而不会是一门实践活动了，但是，如果设计师不具备“上帝视角”，那么他与手工艺时代的工匠没有什么差别。“上帝视角”不是设计师的特权，而是作为现代设计师必备的眼界和方法。“上帝视角”并不与关注个人体验相悖，它也并不反对设计师的同理心，或者称为共情，事实是在设计上我们不应该给“共情”太高的赞赏，设计师不应该成为过分热情的居委会大妈。如果以共情来驳倒上帝视角，那是一种倒行逆施，设计师应当把用户当用户，设计师自己当然也是用户，但切忌用自己替代了所有其他用户。

在这里为了与前后维持统一，便于理解，使用了顶视图（或者[俯视图](http://www.hi-id.com/?p=2896)）这个词来替代“上帝视角”，通常顶视图对准的是某一物品的顶面，但在这里我们的镜头跟上帝视角一样要拉很远，我们看到的不只是这一物品，还包括了生成这个物品，以及与这个物品发生交互的整个系统和关系网。

我们称这一角度为符号视角。

“[设计是关于一个物品如何制作而成的](http://www.hi-id.com/?p=2753)”，在功能主义设计时代，“物品是怎样制作而成”中牵涉的生成因子是固定和静态的，绝大多数来自于物品的内部，来自于物品的功能需求，来自于技术实现，来自于加工工艺等等，而到了符号化设计时代，这些固定和静态的因子仍然有作用，但是物品的生成的决定因素更多的来自于物品的外界，来自于用户的认知，来自于市场的区分，来自于物品的关系网等等。

设计师在实际工作中发现他的理念和方法变得捉襟见肘，发现自己工作的内容非常有限，向人介绍时缺少说服力，所以要么去借助工程或技术的说辞，要么编撰故事，来增强设计的可读性。这种尴尬来自于理念和方法没有跟上时代的发展，走入了符号化设计时代，设计师当需将自己的视角扩大，不再因循守旧而局限在物品的功能和有限的一些关系上，我们仍然设计实体，关注功能，推敲形态，追求内外一致性，但我们需在塑型视角和功能视角的基础上引入符号视角，追随符号化的进程，否则设计师仍在使用功能主义时代的方法和手段，那他设计出的物品却因外界符号化的潮流变成了一个需要强扭的瓜。因为无论怎样的物品，市场都会将它符号化纳入到整个物品系统中，唯有经过符号化设计的物品，才能更好地承担起意义的传达和交流作用。

在功能主义设计时代，设计师也会采用顶视并且拉远镜头的视角，将设计放在一个更大的系统和关系网中去思考，比如总体设计或系统设计，但这一时期的总体设计更多的调谐和修正，或者是对系列的思考，对产品和公司的整体形象的思考，其产品的根本仍然是基于功能的，静态的。到了符号化设计时代，需要设计师一开始就从顶视图即符号视角出发，因为产品的形成因子最主要来自于它所处的关系网，甚至是这个产品的功能也是来自于外部——它所处的物品系统，而并非内部的技术实现。即符号化设计时代的顶视图有了全新的内涵和意义。

设计并非始于草图而是始于研究。

以往的设计调研，或者市场调研，通常是“竞争产品是怎样的设计，而我可以学习借鉴怎样做到不一样”，“统计并分析一下市场看哪部分目前还有突破口”，“看看非同类的产品的设计，作参考和受些启发，可以安全地借鉴”，“对这个产品了解不多，需要找同类产品来认识一下，结合自己的形态设计能力做一个自己的设计”，“挖掘一下其他人还没想到的出发点，让自己的设计师出有名具有说服力”，“我为大公司作设计服务，大部头的设计调研就只是用来砸人的”，“设计调研——除了竞品调查外——其实都是充当门面的套路”……这些调研，往往止于资料的收集，并没作什么研究，即使有研究也是宏观的，更像是市场人员的行为非设计学科的，或者是民族志学人类学的，与实际的设计隔了几座山几条河……这些在符号视角的研究中都是应当摒弃的。

在符号视角中，重点在于研究，因为信息的调查和收集是研究必备，而研究是设计工作的开始，它不是可有可无的“前期调研”。传统的设计调研输出和设计工作常常是脱节的，或者只有弱联系，而在符号化设计时代，这项设计研究的工作必须由设计师本人来完成，信息和资料的收集可任务分发，但每一个设计师必须亲力亲为设计研究，它就跟草图绘制一样，是一项实打实的设计工作。

符号视角的设计研究立足于当下（我们必须要正视自己的工作：[设计师不是以永恒为目标的](http://www.hi-id.com/?p=2999)），时间是研究中最重要的坐标轴，时间不能泛泛而论必须明确到最小单位，而且大跨度的时间范围对当下的设计研究不具备意义，我们应当聚焦于当下之前一段有效时间，不必追溯到历史书上去。研究历史是为了预知未来，我们瞄准的未来就是明天，对明天预知最有效的就是对今天和昨天的研究，站在符号视角，更长久的时间比如去年和前年对于当下及未来的意义，我们相信它们可以在对昨天和前天的研究中可以捕获到。

符号视角下的设计研究项目可涵盖所有促成和定义了我们将要设计的物品的因子，通常我们只要抓住主要项目，而对其他关联因素保持警惕即可。研究项目首级分类为“内部因子”和“外部因子”，指的是促成设计的因子是来自于物品的内部还是物品的外部。在传统的功能主义设计视角中，内部因子占最主要的决定作用，而在符号化设计视角中，外部因子不仅起着主导作用，而且因为其动态性也是最值得研究。

**内部因子**包括了科技，关于所有技术实现的内容，新技术的开发或者技术的新应用等，往往适用于改进型的设计上。内部因子包括了功能上的运算，在功能上的加减法，派生或者主次转变等。同时内部因子也包括了与功能相对应的需求，这是用户基于已有功能，以及这些功能之间的运算，提出的新的需求。

与内部因子相比，**外部因子**涵盖的内容更广泛，也是在符号化设计时代我们研究中最主要的课题。外部因子总是和“关系”有关，我们可以分成两类，与物相关和与人相关。

**与物相关**的外部因子又可以分成两类，自属物相关和它物相关。

自属物指与自身所属的那一品类的物品相关，**自属物相关**的因子研究最主要的课题就是类型学研究，同一所属的物品在如今类型是如此的繁多，它们的诞生并非任意的无迹可寻的，这个自属物的体系具有一定的理性，如果我们在研究中能够找到这种理性，也就有可能为我们的设计找到一席之地。类型学上的理性程度往往超出我们想象，尤其是越成熟的物品越成熟的市场，就有越理性的类型表现，就像手机的屏幕尺寸一样，虽然任何尺寸都可以，但最终的分布总是集中而固定的。

**它物相关**的外部因子研究就是物品体系的研究，没有一个物品是单独存在的，我们的设计最终都会被放到一堆物品之中，它们之间会相互关联，传统的设计理念就是考虑如何让它们的关系融洽，让自己的设计与消费者的物品或家装氛围相配，但这些不是我们从符号角度出发的研究内容。它物相关的研究就像是在为自己的设计找一个能恰好填补进去的缺口，而这种填补可以是相融式也可以是突出式，比如通过研究所处物体系的颜色情况来设计颜色。这种填补可以基于功能补充，基于可系列化，基于颜色或材质，等等。它物相关必须寻找确信的强相关，切不可为了追随蝴蝶效应这样的迷思而牵强附会。

比起与物相关的外部因子研究，**与人相关**的外部因子因为有人的参与，就显得更为复杂和难以琢磨。

与人相关并不是去研究物品与具体某个用户之间的关系，也不是指独立的一个抽象的用户（那是用来研究人机工学，属于功能视角），我们面对的是具有社会属性的用户群，社会属性决定着人们对一个物品的认知，并且也会体现到具体的某一个用户身上。那么作与人相关的外部因子研究，以问卷形式去调查具体的一个个用户，如果样本足够多而且问卷设计出色，可能对研究会有很好的帮助，但这种方式不具备可操作性，因为要研究具有社会属性的用户群需要很大的数据量，而且这种直接主观问答不具备数据统计上的意义，所以具体用户的调研只能用来辅助研究。就像是我们要了解某一商品与人之间的关系，不是去大型超市访问购买者或者观察他们的购买行为，而是超市给出的统计数据将更有价值，当然随着科技发展，大型超市能够统计到的将不仅仅是销量之类的静态数据。

研究与人相关的因子，先是**人群研究**，也就是传统市场调研中的目标消费群，但是在这里人群研究是一种设计工作。与传统的市场调研一样，诸如年龄情况、消费能力、喜爱品牌之类也是需要关注的基本数据，但是作为设计工作的人群研究，更重要的是将一个群体去描绘成一个具体的人物，活生生的有态度有偏好的人物。这种描绘并不是一件难事，因为得益于社交媒体的发达，我们只需要寻找即可，群体特征会从一些典型用户身上凸显而出。社会化网络的发达，给设计师的人群研究带来的极大的便利和资源，因为通过社会化网络，人们的喜好、态度、价值观、品味等等，都可以数据化了，而且还能看到这些数据的变迁和流动，我们可以通过人找到数据，还可以通过数据找到人。

另一与人相关的因子的研究就是**关系研究**，关系研究就是关于“这个物品意味着什么”，在这里就是“对用户这个物品意味着什么”。在讨论这个问题前，可以先从工程师的角度看“这个物品意味着什么”，再从设计师的角度看“这个物品意味着什么”，以比较物品在符号化前后的差别。物品又可以向下细分，每一处的设计，每一个细节对用户来说都有可能意味着什么，无论是形态、材质还是颜色，这种意味并不是针对个体的感受，而是关于群体的共同认知。在功能主义设计时代，当说到“金色代表财富”这一类话时，通常会认为这是用语言阐述上赋加的意义，无论是来自商家还是习俗，在设计师看来是没有内涵的且有意回避，但是到了符号化设计时代，颜色的含义将不再是“代表着什么”之类单一苍白的象征意义，它有了深度，因为它作为符号承载了很多信息和意义的传递，这些意义在关系网的传播中滋生和成长，所谓深度就是例如，一个颜色在两个人的体验和认知中有很多层的重叠；而同样的物品同样的设计同样的颜色，放到不同的关系网中，就具有不一样的意义。在关系研究中，容易陷入牵强附会的风险中，这要求我们在研究过程中不断地作出拷问和验证。

#### 轮廓视角（周视图）

投影视图中剩下的前视图、后视图、左视图和右视图归为一种，我们称它为周视图（一周圈），用它来指代轮廓视角。

沃尔夫林在说到建筑视图时，认为正视图（即前视图）是事物和它的外貌完全重合，而透视图外貌脱离了事物的实际，所以透视图就有了“入画”的特征。对于我们来说，一个物品的轮廓就包含在周视图中，很少会出现在透视图中，如果让一个人用笔来画出某一个物品的轮廓，无论这个人是否经过绘画的训练，多数情况他画的要么是正视图要么是侧视图，或者在正视图或侧视图的基础上加些立体感，一旦有人在绘制透视图，他可能在是描述事实外增加了一些个人表达。

人们对物品的思考依赖于轮廓，尽管我们对物品的记忆——即物品在我们头脑中出现的形象——并非是基于轮廓的。物品在头脑中出现的形象因人而已，它们甚至可以很具象，比如听到“杯子”这个词，头脑中出现的形象可能是刚才使用过的杯子，或者一些零碎形象，有时候还有可能就是“杯子”两个字。当我们开始思考“杯子是怎么样的”的时候，我们就要去摸索它的轮廓了。而当我们开始交流了，那么就要“绘制”轮廓图了。

一个物品越容易被抽取它的轮廓，就越容易被符号化，也就越容易在符号化的时代流通起来，轮廓视角是为符号化设计奠定最基础也是最重要的形态基础。我们用周视图来指代轮廓视角是基于象征意义的，就像用底视图来指代功能视角，并非所有的物品都把内部结构的开口放在底部，物品的轮廓也并非都是从正交的前视图、后视图、左视图或右视图来推敲的。

物品在它的轮廓抽取过程中，还要保证它的设计特征，如果一个物品抽取出的轮廓只是一个一般化的符号形象，那么它就失去了被指代的价值，所以在设计过程中，推敲小幅面的轮廓图就变得非常重要了，看提取出的轮廓形态是否具有识别性和独特性，通过分析和绘制一些优秀设计的轮廓图则是借鉴和训练的一个好方法。

在轮廓抽取过程中能保持设计特征，可以称之为保真；从另外一侧来看轮廓抽取过程中的保真，就是无论优劣都如实传递，假如物品上具有破坏整体形象的接缝，在轮廓的抽取过程中它不会被抹去。所以当我们使用轮廓来指导形态的设计时，需要确保从轮廓到物品过程中“轮廓”没有变异。

轮廓和体块是我们对物品进行抽象的两条途径，它们是符号化设计的形态探索之基础。

设计从功能主义走向符号化，源自于由科技革新引起的时代的变化，从机械、模拟时代进入了数字时代，这种改变已经触及到日常生活的方方面面，改变了人们的认知范式，从“具体、连续、实体”走向了“抽象、间断、现象”，改变了人与物的关系。从功能主义设计走向符号化设计，我们认为是一种扩充和升华，而不是批判和颠覆，所以我们在功能和形式之上引入了符号形式，作为符号化设计时代的原点，同时也接管了体系更新后的功能和形式的议题。承担符号形式的物质基础，是轮廓和体块，前者是思维的艺术，后者是体验的艺术。面对变革我们引入四大主题，分别从塑型视角、功能视角、符号视角和轮廓视角去面对符号化设计时代的新课题。

时代的变革可能快可能慢，可能向前也可能后退，可能忽如一夜春风，也可能安静地没有波动的迹象，但无论怎样，作出尝试总是激动人心的。

### 转载声明

本文转载自知乎: <http://www.hi-id.com/?p=3877>

尊重原创, 转载请注明出处


# Dark Mode


# Dark Mode的设计要点

先上代码，怎么搞这个切换的颜色问题

![](https://pic3.zhimg.com/80/v2-7e5a4750ba60c15a7c03f1dac2c55660_720w.jpg)

Dark Mode 已经成为了一种新的时尚。

像 Slack、WhatsApp、Chrome 等等软件，都在今年宣布支持 Dark Mode。除了这些应用外，目前主流的操作系统也都在逐步支持 Dark Mode。在桌面级的操作系统中，2018 年的 macOS Mojave 率先支持了深色外观，紧接着 Windows 10 在 2018 年的 10 月份大版本更新中，也引入了 Dark Mode。

在今年，这股 Dark Mode 热来到了移动端操作系统，在今年秋天将正式发布的 Android Q 和 iOS 13 这两大移动操作系统中，Dark Mode 也是被重点介绍的新功能。

![](https://pic2.zhimg.com/80/v2-4f42d9bcf5106775e79cb9c89b8d085a_720w.jpg)

在本文中，围绕 Dark Mode 这个话题，我们就分三个方面来谈一谈：为什么 Dark Mode 变得越来越流行？Dark Mode 的设计难点又在哪里？在即将到来的 iOS 13 中，苹果又是如何为其设计 Dark Mode 的？

### 为什么 Dark Mode 越来越流行？

Dark Mode 的流行，有多方面的因素，我们就来梳理一番。

#### 1. 夜间使用时不那么刺眼

手机已经占据了我们生活中的相当大部分的时间，许多人在睡前都会有在床上看手机的习惯。然而，在夜间使用手机，非常痛苦的一件事情就是刺眼的界面。虽然有许多 app 已经支持了夜间模式，但还远远不够。首先，每个 app 的支持程度不尽相同，同时由于缺乏系统级的 API 支持，每个 app 的开发适配工作也比较烦琐。其次，在实际使用时，由于缺乏系统级的统一开关，需要在每个 app 中单独设置。再者，由于系统原生的 app 和界面不支持 Dark Mode，在调用 Share Sheet，或者打开「设置」app 时，又会是刺眼的白色。

Google 在去年提出了「Digital Wellbeing（数字健康）」的概念，注重在科技设备与使用者之间，找到一个健康的平衡点。其实，近几年来，两大移动端操作系统都围绕这个主题，推出了不少的功能。以 iOS 为例，屏幕使用时间让我们了解在设备和各个 app 之间花费的时间；夜览模式让屏幕在晚上减少蓝光，帮助我们更好地睡眠；隐式推送减少了各类通知打扰我们的次数，使手机不会频繁打断我们的注意力……

顺着这种数字健康的概念，Dark Mode 自然也是不可缺少的一环，成为了今年两大移动端操作系统更新的亮点功能。

#### 2. 让使用者沉浸于内容

Dark Mode 是夜间使用手机的重要功能，不过，如果将 Dark Mode 简单地等同于「夜间模式」，就显得有些片面了。我一直不认同国内的一些文章，将 Dark Mode 翻译为「夜间模式」，是因为前者的使用场景更广，因此使用「深色模式」这样的翻译更恰当。

黑色更有利于我们沉浸于内容本身，无论是生产内容还是消费内容。如果你细心观察，你会发现许多专业级的多媒体内容生产软件，一直以来都是黑色的界面。不管是 Adobe 系列的软件，还是苹果的 Final Cut Pro，或者是 Pixelmator、Affinity 系列软件，都是深色的主界面基调。同样的道理，你会发现许多视频网站或者影音播放工具，都是使用深色作为主基调。

![](https://pic4.zhimg.com/80/v2-20e4b9ad8b127bac695fed57de7c8b4d_720w.jpg)

在手机和平板越来越能够胜任生产力工具的今天，在视频内容被消费得越来越多的今天，系统级的 Dark Mode 并不仅仅只是「夜间模式」，它同时也是一种审美偏好，能够帮助我们沉浸于内容本身。无论白天还是黑夜，Dark Mode 都有用武之地。<br>

#### 3. OLED 屏幕节电

现在，大多旗舰机的手机屏幕都抛弃了 LCD 材质，转而使用 OLED 材质的屏幕，例如，从 iPhone X 到 iPhone XS，都已经用上了 OLED 屏幕。搭配 Dark Mode，这样就能更加省电。

在本文中我们不具体展开介绍 LCD 和 OLED 两者之间的详细差别，只重点介绍一件事情：Dark Mode 之所以能达到省电的效果，是由于 LCD 和 OLED 屏幕的一个重要差异 —— 简单来说，LCD 屏幕分两层：像素层不发光，另外有背光面板照亮像素。而 OLED 屏幕只有一层，像素本身是自发光的。这样，在显示黑色时，OLED 的屏幕像素只需要关闭，就是纯正的黑色了。

我们有理由认为，苹果在设计 iOS 的 Dark Mode 时，也是考虑了这一点的。在 macOS 的深色模式中，基底色并不是纯黑，而是带有一定灰度的黑色。而在 iOS 上，苹果设计 Dark Mode 的基底色就是纯黑，这样一方面来可以省电，另一方面也与「刘海」的衔接更加自然。

### Dark Mode 的设计难点在哪？

既然 Dark Mode 有不少吸引人的优点，为什么 Google 和苹果，一直等到今年才正式推出系统级的 Dark Mode\
支持？我们不妨试想一下，如果让我们来设计一套系统级的 Dark Mode 支持，该怎么做？这当中又存在着哪些设计难点呢？

这其实也是这篇文章的起源：作为产品团队，前两周我在团队内部举办了一次讨论会——如果你是 Dark Mode 这个特性的产品经理，你会怎么做？随着讨论的深入，你会发现 Dark Mode 并不像想像中的那么简单。

#### 1. Dark Mode 并不是简单的颜色反转

在抛出这次讨论会的主题后，团队里面有人马上给出了一个直觉性的反馈：如果要做 Dark Mode，把白色变成黑色不就好了吗？

没错，这的确是一个非常容易想到的答案：两种模式给人的直观感受上，最大的差异好像就是一个是白色，一个是黑色。iOS 的确在系统设置中提供了颜色反转的功能，在「设置 - 通用 - 辅助功能 - 显示调节 - 反转颜色」中，你可以找到一个名为「经典反转」的选项。开启后，同一个界面就能像下面这样，显示成黑白两种样式。

![](https://picb.zhimg.com/80/v2-f4720f1d71d6535680a90b23c34a3998_720w.jpg)

然而，这只是非常理想的一个界面情况。白色变成黑色，是非常符合直观的一个变换方式，但别的颜色呢？要明白这一点，就要懂得颜色反转是如何工作的。<br>

我们都知道任意颜色可以由三原色组成，在电子设备上，一个色彩也可以表示成 RGB 值，即红绿蓝三种颜色的比例。每种颜色的取值范围是 0-255 之间，例如，白色可以表示为（255，255，255），黑色可以表示为（0，0，0）。那么，颜色反转实际上，是把一种颜色（R，G，B），自动变换到它的对立面，成为新的颜色（255-R，255-G，255-B）。

在界面色彩复杂一些的情况下，直接的颜色反转就完全没法用了。以下面的桌面为例，绿色的反转色是粉色，红色的反转色是青蓝色，而原本就是黑色的桌面被反转成了白色，最终得到的效果惨不忍睹。

![](https://picb.zhimg.com/80/v2-7297dd8a094c2f1766c269dde21b7358_720w.jpg)

#### 2. 要重新考虑色彩对比度

简单粗暴的颜色反转失败了，这时候，很容易注意到 iOS 提供的颜色反转中，还有一个名为「智能反转」的选项，它下面附注的介绍是这样的：

> 智能反转颜色会反转显示屏的颜色，使用深色样式的图像、媒体和部分应用除外。

这是 iOS 11 中推出的功能，它拥有一定的「智能度」，知道哪些区域和色彩应该调整，哪些应该保持不变。iOS 的原生应用基本都适配了「智能反转」，也的确有不少第三方 app 搭配这个特性推出了自己的深色外观，如 Twitter、Flipboard 等等。不过，如果第三方 app 没有适配，开启「智能反转」后的效果，与「经典反转」是一样的。

然而，即使抛开应用适配的问题，「智能反转」之所以不能成为真正意义上的 Dark Mode， 是因为这里面还有色彩对比度的问题。如下图所示，在浅色外观下的深棕色图标非常醒目，然而，如果背景色切换为深色，而图标颜色保持不变的话，这时候图标的辨认度就非常差了，如果你不非常仔细看的话，只会觉得下半部分是一片黑色。

![](https://pic3.zhimg.com/80/v2-1d5584325a6c1b9e262888f50c421ca7_720w.jpg)

这其实就是内容与背景之间的色彩对比度问题，两者之间必须保持一定的对比度，才能使内容具有可读性。要衡量这一点，其实是有一个明确的指标的：色彩对比率（Color Contrast Ratio），它能够提供两种颜色之间，相对亮度的一个衡量关系。<br>

色彩对比率的取值范围在 1:1 到 21:1 之间，数值越大，表示对比度越强烈，内容的可辨认度越高。Web 标准制定组织 W3C 在其 Web 内容无障碍指南（WCAG）中建议，对比一般的文本，其对比率应该不小于 4.5:1，而对于图像和界面元素来说，对比率应该不小于 3:1。在上图中，白色背景和图标的对比率是 18.65:1，而黑色背景的对比率只有 1.12:1。

那么，要如何计算色彩对比率呢？它的计算相对比较复杂，感兴趣的同学可以在[这个页面](https://link.zhihu.com/?target=https%3A//www.w3.org/TR/WCAG20/)搜索「Contrast Ratio」查看具体的计算方法。一般情况下，你可以使用各种现成的[工具](https://link.zhihu.com/?target=https%3A//webaim.org/resources/contrastchecker/)，只需要数入两种颜色的数值，就可以直接看到最终的计算结果了。

![](https://pic2.zhimg.com/80/v2-72a8fe2decca41e36d753c3120e47c62_720w.jpg)

可以看到，在不同的明暗模式下，我们需要重新考虑各种色彩的搭配。即使「智能反转」能够区分出哪些元素和界面不应该被反转，但色彩对比度依然是设计师需要重点关注和调整的对象，以达到最佳的内容辨识度。<br>

#### 3. 界面的层级与明暗关系

除了色彩对比度的关系外，还有一个更深层次的界面层级带来的问题，是通过颜色反转无法解决的。Steve Schoge 在 Twitter 上的[这条案例](https://link.zhihu.com/?target=https%3A//twitter.com/steveschoger/status/1151160261170126850)，很好地展示了这种情况。

![](https://pic1.zhimg.com/80/v2-5f75eef76bda786bfd0ed224d6509542_720w.jpg)

上面三幅界面中，如果第 1 幅是界面的浅色外观，那么它的深色外观，应该是像图 2 还是图 3 一样？不同的人可能会给出不一样的答案，但是从设计的专业角度来说，一般会选择图 3 的方案。这是因为，无论是浅色还是深色外观下，我们都应该在界面层级中，**让离用户在逻辑关系上更近的颜色更亮一些**。<br>

这时候再来看一下，前文中提到的通过颜色反转实现的效果。你会发现，在原先的浅色外观下，可点击的「自动、蓝牙头戴式耳机、扬声器」这几条相比背景，是最亮的白色。然而，通过颜色反转的方式得到的深色外观中，这几条可操作区域变成了白色的对立面：完全的黑色，反而是界面的背景色更浅一些。

![](https://picb.zhimg.com/80/v2-f4720f1d71d6535680a90b23c34a3998_720w.jpg)

再让我们看一看实际 iOS 13 版本中 Dark Mode 的效果。你会发现，Dark Mode 的界面配色，并不是简单的颜色反转，可操作区域的颜色更浅一些，而背景色才是全黑的。这样，不管是浅色还是深色外观下，始终都保持了逻辑上的统一：离用户逻辑关系上越近的层级，颜色越浅越亮一些。<br>

![](https://pic2.zhimg.com/80/v2-6553c298fb144e357384feb23cbcd4c5_720w.jpg)

可见，寄希望于仅仅通过颜色反转来实现 Dark Mode 是不现实的，不仅有诸多的限制因素，界面层级与明暗的逻辑关系，本质上是与颜色反转不兼容的。那么，苹果是如何为 iOS 设计一套全局的 Dark Mode 标准的呢？<br>

### 苹果是如何为 iOS 设计 Dark Mode 的？

苹果在今年 WWDC 的「[What's New in iOS Design](https://link.zhihu.com/?target=https%3A//developer.apple.com/videos/play/wwdc2019/808/)」专题中，花了不少的篇幅专门用来介绍如何升级适配 Dark Mode。我们可以从中一窥苹果是如何为 iOS 设计 Dark Mode。这里面不乏许多细节上的考究，但从总的方面来说，苹果做了这四件事情。

#### 1. 引入语义色彩（semantic color）

在以往的界面设计与开发过程中，需要单独针对每一个元素，指定一个颜色。既然不能简单地通过颜色反转来实现 Dark Mode，那么最简单的方式，就是为浅色外观和深色外观分别设计两套配色方案。

![](https://pic1.zhimg.com/80/v2-a3c037a9c294b93bdb16357ed06abdce_720w.jpg)

然而，这样的做法带来了一系列问题，尤其是 iOS 作为一个平台，需要考虑平台化的统一标准，以及尽可能地方便第三方开发者的适配工作。如果单纯地使用两套配色方案，那么每改动一处界面，都不能忘了要改动两个颜色值。同时，界面和界面之间，同样的页面元素，需要重复地指定具体的颜色，也造成了不必要的工作。

因此，苹果引入了语义色彩（Semantic Color）这个概念。如同字面意思一样，不再通过 RGB 的值来描述一个颜色，而是通过 LabelColor、SeparatorColor 这样的文字描述，来说明这里应该使用文字标签的颜色、分隔线的颜色……例如，在深浅两种模式下，系统界面的背景色会自动地去对应 SystemBackground，在浅色外观下 SystemBackground=#FFFFFF（白色），在深色外观下 SystemBackground=#000000（黑色）。<br>

![](https://pic4.zhimg.com/80/v2-15ab6379bdd12c5c1695bd1783f91d73_720w.jpg)

语义色彩带来了两个显而易见的好处：

1. **趋动设计师规划全局的配色方案**：在 Dark Mode 的设计难点中我们提到了，一套完整而悦目的 Dark Mode，需要设计师深入地调整明暗关系下色彩的搭配。通过引入语义色彩，设计师可以自上而下地进行框架性设计，首先定义好界面中一共存在哪些元素，然后，为这些元素规划好相应的配色方案，以确保在深浅外观中都获得最佳显示效果。
2. **更容易复用**：通过语义色彩，无论是对于设计师还是程序员，都可以实现「一次声明，处处使用」。通过语义色彩，设计师可以整理出配色模板，程序员可以在不同界面的同类型元素中，直接使用语义色彩，而不用重复地去指定相同的颜色。

![](https://pic3.zhimg.com/80/v2-83dd1b52237d947521f7edd3d5ea2776_720w.jpg)

苹果在系统层面整理出了一套配色方案，其中包含了背景色、文字标签色、填充色等等，大多提供了四种不同醒目程度的层级，从应用在标题上的一级，到提示或说明性文字的四级。当然，除了系统内置的这些色彩，开发者也可以根据自己的需要创建和声明新的语义色彩。<br>

#### 2. 背景色区分基底色（Base）与提亮色（Elevated）

在设计难点中我们提到了，层级上离用户越近的区域，应该在视觉上更明亮一些。苹果在设计 Dark Mode 时，也充分考虑到了这一点。

iOS 深色外观的背景色，是纯正的黑色（#000000），苹果称之为基底色（Base）。不过，这个背景色会随着界面层级的变化，而变成提亮色（Elevated）。下图就是一个例子：在左边的通讯录 app 中，背景色就是纯正的黑色。而到了右边的电话 app 中，有些操作会需要弹出浮层供你选择联系人，这时候浮在上方的界面背景色，就变成了亮一些的提亮色。

![](https://pic4.zhimg.com/80/v2-36373d57f85da895817a4b248c53a5fa_720w.jpg)

#### 3. 材质（Material）与系统控件的原生支持

苹果在介绍 Dark Mode 时，还提到了材质（Material）。在我们常见的说法中，就是自 iOS 7 中引入的毛玻璃效果，常用于系统的文件夹、下拉菜单、通知、Dock 栏等处。苹果为这些材质设计了深浅两套配色方案，并提供了从厚到薄的四种感观效果。

![](https://pic1.zhimg.com/80/v2-ecfb39d9c9787f3a432e6a40eb65f3d9_720w.jpg)

更重要的是，苹果还为材质上的内容颜色进行了单独的鲜活化（Vibrancy）处理。以下图为例，第一行的文字「Solid Color」为固定色彩，随着背景颜色的变更，到最后两幅图中几乎不可辨识了。第二行的「Vibrant」则为经过了鲜活化处理的文字效果，在背景色变亮时，也能保证文字的可读性。

![](https://pic3.zhimg.com/80/v2-b00e524754ad903f60c0f62553ad5734_720w.jpg)

此外，苹果还更新了 UIKit 中的系统级控件，以适配深浅两种颜色外观。值得注意的是，在浅色模式下，许多元素是存在投影的，例如开关按钮、拖动条的拉动点……而到了深色外观中，这些投影被统统移除了，这也是苹果设计的细微精致之处。

![](https://pic3.zhimg.com/80/v2-343f56b1b2dd775b5ffab079f0379ca4_720w.jpg)

#### 4. 引入字体化图标

在 iOS 13 中，苹果还为了 Dark Mode 引入了多达 1500 余个字体化图标 SF Symbols。

![](https://picb.zhimg.com/80/v2-0fac9c1e91d1d5670e9ee32a4ba0eece_720w.jpg)

前面我们已经看到了，苹果通过语义色彩解决了界面与内容的色彩管理，同时通过更新一系列的系统级控件确保适应两种不同的配色方案。然而，界面中还存在着一个重要元素，就是图标。如果我们希望获得良好的效果，往往需要针对深浅外观重新填充图标的颜色，准备两套图标素材。<br>

而字体化图标彻底解决了这个问题，还带来了一系列的优势。什么是字体化图标呢？简而言之，你可以对文字进行的处理，也可以针对图标做到。所以，字体化图标可以像文字一样修改颜色、粗细、大小、对齐。前面提到的语义色彩、鲜活化处理等技术，也一样可以运用在图标上。

![](https://pic1.zhimg.com/80/v2-b390b7c69a171743dd422e98c3da6897_720w.jpg)

以上四点，就是苹果如何为 iOS 设计 Dark Mode 的。你可以在[这里下载](https://link.zhihu.com/?target=https%3A//developer.apple.com/design/downloads/iOS-13-Sketch.dmg)苹果官方提供的 iOS 13 设计模板的 Sketch 文件，其中包含了 iOS 13 的最新范式、内置语义色彩、材质等元素。<br>

Dark Mode 在 iOS 13 上的呈现感不错，但距离完美还有一定距离。这其中既有客观因素，也有系统的主观原因。例如，iOS 的 Dark Mode 针对图像不会进行特别的处理，如果你的备忘录中有一张白色的照片，就会变得十分刺眼。而 Instapaper 在深色外观下，会自动暗化（Dimmed）处理内容中的图片元素。

![](https://pic4.zhimg.com/80/v2-1aa2163a2af0e29b337d8c1705f234ea_720w.jpg)

此外，从客观因素上来说，许多网页还没有针对 Dark Mode 进行适配，导致打开时会一片惨白刺眼。同时，在 Power+ 1.0 中的《[深色模式对视疲劳和效率的影响](https://link.zhihu.com/?target=https%3A//sspai.com/post/45713)》这篇文章，对 Dark Mode 也提出了许多非常有深度的论述。例如，深色模式其实未必适合文字的阅读，以及即使开启了深色模式，在昏暗环境中使用电子设备对视力的伤害也不容小觑。<br>

但不管怎么说，Dark Mode 都给我们提供了额外的选择，数字健康（Digital Wellbeing）不仅仅只体现在硬件的迭代与软件的更新上，更应该成为每一位使用者与开发者的主动意识，借此也希望所有的 app 和 web 开发者，尽早适配 Dark Mode。

### 转载声明

本文转载自知乎: <https://zhuanlan.zhihu.com/p/141465632>

尊重原创, 转载请注明出处


# 一篇吃透 Dark Mode ，搞定“暗黑/深色”适配

#### **下面分四块讲述：**

**1.两大平台做法：层级、颜色2.技术实现范围3.Dark细节4.Dark难点**文字如有思虑不周、描述不清之处，还望各位大佬指正。

#### **一、两大平台做法**

今年Android Q 和 iOS 13 都开始支持暗黑模式。下面我将从“层级”、“颜色”两方面讲述两大平台的做法。

#### **1.1 层级**

通过背景、投影，表达层级关系是设计常用的手法。如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/fd67e6d72b1bc9c2604490050b594679.jpg)

&#x20;列表在背景上方，所以背景颜色比列表暗。同理，搜索框颜色比背景色暗，可以理解为搜索框在背景的下层（凹槽）。可是在黑暗模式下，颜色明暗关系发生了变化：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/c7bc11aa5c169ba434c8df889b64f66a.jpg)

&#x20;iOS 13中的搜索框却比背景色要亮，二者的层级关系随之发生变化。PS：iOS 13中Sheet弹窗也会改变页面的层级关系。再看Android Q的设置页：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/464758bfa02a8b654dd245a290d71a02.jpg)

&#x20;在浅色模式下，页面背景为白色，搜索框也是白色，但通过投影表示，悬浮在背景上方。而两个提示卡片则采用灰色，表达的层级高低依次是：搜索框、背景、提示卡片

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/4052a72863d3b60d9d4974420ba1121a.jpg)

&#x20;在暗黑模式下，搜索框、背景、提示卡片 三者的明暗强弱依次是：搜索框、背景、提示卡片。透露出的层级关系与浅色模式下一致。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/70a80220c285b3a87584654ebd87a269.jpg)

&#x20;诚然iOS 13的暗黑适配效果，看起来比Android Q优秀。毕竟苹果每个元素都经过精心设计：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/c6cc5a56b761c1f5d7ae37e53b34ea04.jpg)

&#x20;但层级变化上，缺少统一的“标尺”，这无疑会增加多人协作的适配成本。而安卓则有一套层级体系可以借鉴。

无论是浅色模式，还是暗黑模式，只要固定好各层级，再确定不同层级的配色方案，就能大大降低适配难度。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/4ca442cf9834f19e728599819fde24fc.jpg)

#### **1.2 颜色**

说完“层级”再来看下“颜色”。这里先说与“层级”关联度较大的“黑白灰”，再说“彩色”。

&#x20;**① 灰色**iOS 13这边，以新版的健康APP为例：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/bf4f7ff9c69a3a17b35828be83bc4059.jpg)

&#x20;左图是健康APP的首页，右图是点击“编辑”后调起的弹窗。在这两个看起来很简单的页面中，排除蓝色、红色和所有文字颜色，还用到8种颜色，如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/fd145bc81b849ffd53f80ef2a047a779.jpg)

&#x20;而苹果官方给出的配色建议，则更加“丰富”：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/e3724755c8d469aa9dce23462f28c0e9.jpg)

&#x20;不仅明暗不同，且一部分是透明色。另外，这些颜色的色值变化也没有明显的“规律”可循。如果按照iOS 13的规范进行操作的话，不仅执行成本高的吓人，统一性也很难得到保障。相比之下，安卓所采用叠加“不透明度”不同的白色，来区分层级的方式执行起来就简单很多。在Android Q中，安卓官方的建议是：在浅色模式下，页面的层级可以靠投影进行区分，底层元素投影面积较小、而上层元素投影面积较大。如下图左侧：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/b937689dd51738bf56fdf17d946c439d.gif)

&#x20;而在暗黑模式下投影变得不明显。因此改用“明暗”区分层级，如上图右侧。Android Q把页面分层了8个层级：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/e4a7d3fa237f724be39dfa5af5ebeeee.jpg)

&#x20;其中最底层的”代号”为00dp\*，最高层为24dp。PS：这里的dp，无需和逻辑像素单位dp、pt关联。不同层级的实现方式，是在同一个背景色上，叠加“不透明度”不同的白色。

比如：背景色为#121212， 那么最底层的00dp就是#121212叠加不透明度为0%的白色；而最上层的24dp，则是#121212，叠加不透明度为16%的白色。这样一来不同层级只要调整所叠加的白色不透明度即可，操作起来也比较方便。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/d160e9640efa15ef3cc1a121478d806e.jpg)

&#x20;**② 彩色**下面再看彩色，先说iOS 13中的彩色方案

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/54038ee6067fafe713556e23197167d1.jpg)

&#x20;如图所示，两种模式下的颜色变化很小。RGB的色值不太方便看差异，下面我将RGB配色改为HSB配色。如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/340430f0d40129ed64bb17218646146c.jpg)

&#x20;可以看到在HSB模式下，参数只有2\~5的细微差别。作为凡人的我，只得感叹苹果配色的微妙和不易琢磨…..相比iOS“微妙精致”配色，安卓的彩色适配方案则要简单粗暴很多。过去安卓的配色规范中，一直有一块彩色梯度渐变。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/30718899b55adfb939c996d191267207.jpg)

&#x20;通常浅色模式的配色会选取500左右的配色为主色，如下：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/887c5c8b7902ed1dde9b19eeeb4a0e11.png)

&#x20;而这个配色方案在暗黑模式下，与背景色的对比度太小，

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/7ccd333534a191804669f55f4b7ff94a.png)

&#x20;所以官方不建议在暗黑模式下使用与浅色模式相同的主色。对此，安卓官方给的建议是，在渐变梯度上，选用200左右的颜色作为暗黑模式下的主色。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/dd40bf15b1b6e3c621bc19aa118a90a0.png)

&#x20;更改的页面如下:

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/aca5780b5ddd42d51ad346664d81264e.png)

小结：安卓彩色适配看起来虽没有iOS精致，但终归是有迹可循，值得借鉴。

#### **二、标注的变化**

近期更新的爱奇艺 iOS V10.8.5新增了暗黑模式适配

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/dfcc407f71b6643913300a7a27164abe.jpg)

&#x20;根据前端开发工程师描述，目前Native、Html 5 均支持暗黑模式适配（跟随系统切换）

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/d1c6275fce2b288460298bb0b68e0034.png)

如此同时，对于拥有**浅色**和**深色**两种模式的项目（抖音APP只有深色），今后设计师在提供颜色标注时，也需要提供两套色值。以按钮色值标注为例：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/b3aa304f85f82b7bdbfa3206d5320a75.png)

&#x20;假如一个按钮浅色模式模式下使用APP主色#10C30B，在暗黑模式下，主色为#0FD852。那过去我们只需要在对应文字旁，标注#333333即可，如下图

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/2aa4ad1ced2064de6ccd182293fab237.png)

&#x20;而新版的标注，不仅要标注#333333，还要标注#CCCCCC，如下图

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/d35ad0e5e62db2291a7c70b765f67ad9.png)

&#x20;日常需求，可以不输出暗黑模式下的设计图，仅提供两种模式下的标注即可。但切图就需要提供双份：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/009d2be1970c29bcf65fca7934fb26cd.png)

一份浅色模式下的@2x、@3x切图，一份暗黑模式下的@2x、@3x切图。

#### **三、四个适配细节**

下面分别讲述Dark适配需要关注四个细节：字色、图标、插图、其他

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/001558c83357d683d847715b0aa5826c.png)

#### **3.1 字色适配**

过去常见的文字配色为#333333、#666666、#999999、#CCCCCC

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/f4a12237530a4c0d0286642aae3b1823.png)

&#x20;这些字色都是不带透明度的色值。这四种色值在HSB的模式下，H和S相同，只在B上存在差别。而亮度差，刚好构成了字色上的“层级”。PS：详见之前写的[《深色模式文字配色》](http://www.xueui.cn/tutorials/color-tutorial/diablo-mode-text-colour-matching.html)为了适配暗黑模式，建议字色采用某个固定色值，字色的层级仅靠透明度进行区分，如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/0571a44e2d7e295c0e155589a7f7b8ec.jpg)

&#x20;这样做，不仅方便后期标注。也能让文字和背景之间保持良好的对比度。如果采用不带透明度的文字，那暗黑模式下，很容易出现文字和背景之间对比度较低，严重的会导致文字和背景“相融”，对阅造成障碍，如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/42b09aa23693ab0d7b3ca70dd93861b5.png)

&#x20;而采用带透明度的配色方案，可以让文字和背景之间保持一个相对好的对比度：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/044dcde86470d818bc451c1d36c06c15.png)

避免出现文字和背景相融的Bug

#### **3.2 图标适配**

下面是苹果原生键盘中的Emoji Key按钮。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/1f43f698c27b956f7f0ddf219672b21c.jpg)

&#x20;在iOS 9上，苹果公司采用的是办法将浅色模式下的线性图标颜色反转，拿到深色界面下使用。等到了iOS 11，苹果公司将这个图标在暗黑模式下改成了面性图标。这是因为白色背景可以更好的表现出形状，人的大脑可以将白色脑补成图形的一部分。然而在暗黑模式下，这种作用消失了，人脑更倾向于认为这些空白的部分是镂空的。比如电影哪吒魔童结尾的彩蛋图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/4284b6fee57e7c307eb2c39de551c868.jpg)

&#x20;看到黑底白线的卡通人物，会不会觉得怪怪的？尤其是眼睛👀下面将彩蛋哪吒反色处理后，变成白底黑线，再看下效果：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/2d7f416420bf73160e49b0f29b896c2c.jpg)

&#x20;是否觉得白底黑线，更有立体感？所以苹果在iOS 13暗黑模式下，放弃线性图标，改用面性图标。比如Emoji键盘上的图形：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/7d5126c8138f7de97e0091c06913903f.jpg)

&#x20;不过键盘最右侧的“删除”，在暗黑模式下却依然采用线性图标。我想删除按钮用线性图案，也许是苹果刻意为之。毕竟在深色键盘中，诸如地球、麦克风这个两个图形，也都是线性图标。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/43238f7a6cb7cfb0b3f3c2a538ab028e.jpg)

&#x20;也就是说，暗黑模式下采用面性图标并非一招鲜的解决办法。最终还是需要设计师根据具体效果进行选择。在爱奇艺 iOS V10.8.5 中，底部导航在暗黑模式下，也由线性图标变成了面性图标。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/e9a236aead700e0dcef463a393d88946.jpg)

&#x20;值得一提的是，有一些浅色模式下“面性图标”（填充图标），到暗黑模式下，也是要进行再设计的。比如下面的页面：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/061960b1088906a1db5304d1dd3fa75c.jpg)

&#x20;灰色图标和彩色图标，在浅色模式下，图案比圆形的底色要深。这样的设计在暗黑模式下，效果并不理想。如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/49fdc1e859c6bd2d5624ddeab72abd14.png)

&#x20;因此需要对图标的图形和圆形底色进行调整。改为底色暗、图形亮。如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/f7e287011f1e22ea0ea25c329a3f017d.png)

&#x20;修改前后对比如下：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/ea64345115d6e3a236637f6944550980.png)

#### **多说一点：**

有些文章中提到，在适配暗黑模式时，可以提供SVG格式的切图。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/9a261eae12ec276445c769dac92bc6e0.png)

&#x20;这样就可以让程序员调整切图颜色，减少设计师工作量。在我看来，SVG切图完全不符合国情。首先，国内的APP产品，很少使用单色图标，以“多色”、“彩色”、“带投影”为主，如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/ca06d8a69927e6e6baa2061e6f2a97c9.jpg)

其次，如果只是局部使用SVG，那后期维护成本不低。远不如png切图维护起来方便。还有就是，矢量切图在@3x下，不可避免的会出现像素不对齐、描边线虚边这类Bug。简单来说，SVG虽有亮点，但缺点尤多，慎用。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/185379ca65b84f6ccbc88d802fb0ccac.jpg)

#### **3.3 插图适配**

现在大家都说暗黑模式更加适合夜晚操作，那想必大家都不希望在操作一款适配暗黑模式的APP时，时不时出现“亮瞎”眼睛的白色页面。普通的页面适配起来比较简单，程序员就可以完成适配。但一些带有插图的页面，就免不了需要设计师专门进行适配。下面这些页面，就需要设计师注意了：

&#x20;**① 启动页**以下样式，logo中带有黑色、图中有很亮的配色（比如黄色），需重绘：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/cb9a1b379d25859795343a779685d966.jpg)

&#x20;下面这种本来就是黑色，以及大面积品牌色的做法，可直接复用：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/be7d5c3dc5c57e0d2871f2189b688b9c.jpg)

&#x20;**② 新手引导**原本适配白底的插图，快重绘制吧：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/026443c296a37500c17ada68bdb82e0b.jpg)

&#x20;彩色底、品牌用色、大面积彩绘的方案，可直接复用：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/56d23874ba3a22a4101ca393ac3366f2.jpg)

&#x20;**③ 弹窗**暗黑模式下，弹窗颜色也有调整，如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/f2932c625672e12211bb3c47e3e68e11.jpg)

&#x20;出现在白底弹窗上的配图，难免要重绘，如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/dca7b0127f92edf246ac058e5025e697.jpg)

异形弹窗可直接复用，如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/1b2bb82a6aeb4a108b82e9fe6431d39e.jpg)

&#x20;**④ Loading**以蚂蜂窝APP为例，如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/edb2ae8dc54b642d32bb2dbb9b0854cf.gif)

&#x20;蚂蜂窝logo中存在黑色，且logo动画中用到了浅灰色。

那么如果这个动效要适配深色底的背景，无疑需要重绘。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/9a8905c46b5de791cff9b2aa6d541a54.png)

&#x20;**⑤ 空态插图**

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/0158a8d8ab1534187c3234b9b796879b.jpg)

&#x20;线性插图、白色插图、黄色插图（亮色插图）也需要重绘。其中带眼睛的线性插图，无论是反色、还是简单的转成面，在深色上看起来都会很奇怪。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/bb16b58905526a76f4e82d2627dcabe4.jpg)

&#x20;这个时候，建议参考爱奇艺Mac端的插图方案：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/f5fbe634e99f46d822810e36fa1ff8e1.jpg)

保留眼白和眼球，将整个图形调暗。

&#x20;**⑥ 其他**还有一些，诸如身高体重设置、性别选择、内容推荐、勋章展示等页面，其中的元素和插图

在暗黑模式下，难免也需要重新绘制。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/3152185ce156b2a3d5e1d581ab46cbd0.jpg)

#### **3.4 元素适配**

在APP中，有一些元素不像图标和插图那么明显，导致经常被忽视。但其实又经常能够遇见。

&#x20;**① 默认图和默认头像**

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/c883f0c85e12bb3c933bb9dcb5239d9d.jpg)

&#x20;在进行暗黑模式适配的时候，如果忽略这些元素，整个产品的体验会大打折扣。在爱奇艺 iOS V10.8.5 中，首页默认图已适配Dark模式。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/d56bbecdae75eaa183e5ec4a7a699317.jpg)

&#x20;但其他模块的视频预加载尚待适配，如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/34afc9c52da1943c7b9cbea5db8d61e7.jpg)

&#x20;**② 标签**还有一些标签图，需要进行二次设计：

比如爱奇艺首页的“剧头条”的插图和“最新”标签。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/6425bd1d92762f29f1d5155e532a6df0.jpg)

&#x20;**③ Logo**iOS 13邮箱设置界面中，雅虎logo为深紫色，Aol.为黑色。在暗黑模式下，苹果对这两个logo的颜色都做了改变。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/e61b37ebd857ab23f2bba3399e14162b.jpg)

&#x20;**④ 地图**最后，还有一个工作量巨大的模块：地图iOS 13中，苹果地图已经完成了暗黑模式的适配。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/0fe188ac9998e8218362c767ab8d9a65.jpg)

&#x20;这样一来，夜间开车看地图再也不用担心手机晃眼了。🚘🤦但对于一些公司来说，地图适配恐怕要头疼了。比如自如、美团、微信：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/798bbbbc82e0bc37a93da9435bb73808.jpg)

&#x20;如果地图要自家设计适配的话，这工作量恐怕得要个一年半载。即便提供地图服务的公司来完成地图暗黑模式的适配，这些公司在地图上用到的小元素，自然还需要自家设计师来处理。

#### **四、Dark适配难点**

#### **4.1 重绘**

除了上面提到的各种图标、插图、小元素 重绘外

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/bc3d3592b88b174cc46b3bec2ef95bc4.jpg)

&#x20;还有一些不起眼的H5页面需要进行适配，比如：用户协议、加载页、功能介绍，如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/78784191c313aa6d30312c55ed7d0ad2.jpg)

&#x20;目前豆瓣APP也做了Dark模式适配，完善度相当高。就连Tost、加载中这样的细节都做了适配，如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/52204ccde9939f8acbc5d08081901e7e.jpg)

&#x20;不过，当下豆瓣APP（V6.22.0）分享弹窗图标尚待完善，如下方左图：

右侧放了爱奇艺的弹窗图标，方便做个对比。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/aadfcfe5a56bfc5166b6763bf9d588d3.jpg)

#### **4.2 对比度**

无论是Android Q，还是iOS 13，在暗黑模式的建议中，都提到了文字需满足WCAG无障碍阅读的AA标准。WCAG从高到低分别是AAA、AA、A三个等级。其中AA要求文字与背景对比度不小于4.5:1

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/1dbad657702baeb3e837385cd332f7e7.png)

&#x20;不过，WCAG还规定，大号文字与背景的对比度大于3:1就算符合要求。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/a5ac9a58dc161be5b14e9edce55aaeb1.png)

&#x20;同理，小字号要求的对比度会高于4.5:1 ，加之国内正文字号普遍小于18dp（@2x，36px）所以单纯比较对比度，并不实用。比如，现在很多人推荐的 contrast-ratio.com （在线测量对比度）：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/99ae0a2857ebca659c5fea66caca74a3.jpg)

&#x20;这个网站只能提供两个色值的对比度，功能十分局限。建议使用hexnaw\.com进行对比度测量：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/f604db18336479176036a57827a6ac20.jpg)

&#x20;这个网站支持最多12种颜色的交叉对比：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/09c392c22d71e1b4d18131feaa07bee9.png)

&#x20;这里输入3种色值，就能看到交叉对比的结果：

第一个参数是对比度，后面分别对应的是大字号、小字号的WCAG评级（AAA最高，AA普通，A最低，Naw不及格）&#x20;

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/31ad62ed0b7ab60bc538bfd4a46753b4.jpg)

#### **4.3 遗漏**

要完成产品的暗黑模式适配，最大的难题就是遗漏。以爱奇艺 iOS V10.8.5为例部分主页完成了暗黑模式适配，但很多二级页面尚待适配，如下图：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/c40fd905908c252345e4500b935146b6.jpg)

&#x20;另外，一些页面虽然“大面”上完成了适配，但如果细节处理不完善，效果就会大打折扣，比如爱奇艺应援页面：

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/eb89fcf5d6a933fd2ec1bb1c7a360cd1.jpg)

&#x20;仅这一页，就尚有四处有待进一步完善。现在的效果，无疑破坏了产品在暗黑模式下体验的一致性。对于容易出现的遗漏，建议如下：首先在适配前，用Excel统计好需要适配的产品页面。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/30ceda57fdc8954f911cb1a84a284aa0.png)

&#x20;其次，标记好各种不常见的页面模块和组件，比如低频的运营配置模块。同时在替换素材和切图时，避免采用“替换全局”这种不便后期排查的描述。而是标记好需要替换的页面，并在开发后逐一排查。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/c8ea3a30dbd68de92054a7bfe5e8bae7.jpg)

&#x20;如果一味把工作量和责任推给开发，也成。不过，当别人看到不完善的页面时，一定不会觉得是程序员的锅，而只会吐槽设计师。

#### **五、最后**

如果你还没有开始适配Dark，那我希望你在看完本文后，可以对适配工作量有一个较为全面的了解。重新思考是否要进行Dark适配，不要走过去“MD风格适配”的老路。Dark适配一旦开工，就不好轻易掉头和叫停。也许眼下，觉得做暗黑模式很新鲜，可时间一长，多数需求都要做两套，那可就是另一副光景了。

![](http://imgs.xueui.cn/wp-content/uploads/2019/09/496790cc642ab51ea35c1ebede88f4e9.jpg)

### 转载声明

本文转载自: <http://www.xueui.cn/design-theory/dark-dark-adaptation.html>

尊重原创, 转载请注明出处


# Apple

本栏资料整理自\[iD 公社], 链接: <http://www.hi-id.com/>

尊重原创, 转载请注明原文出处


# Apple “无缝”设计之历程

当两个东西组成一起时，就会留下结合的痕迹。两条线组成一个形态就会有一个节点，两种材料相连就会有一条结合线，两个零件相配就有了装配缝隙，可以说，如果没有化学反应参与，物件相连接相组合，发生的物理连接这一事件，会形成一条日志（log），这条日志记录了连接前后物件的状态，凭着这些日志我们就可以分析物件形成和发展。

![apple seamless design journery](http://www.hi-id.com/atcl/2017/apple-seamless-design-journery.jpg)

在一个产品上，这些日志就存在于形态的转折处，零件的相配处，在分割线和连接缝隙之中。此前两篇文章，《2010: A Design Odyssey》和《设计的踪迹》就是从产品的结构和装配出发，通过对这些“日志”——设计与制作在产品身上留下的踪迹——的阅读和分析，来梳理 Apple 这些产品的设计的形成，及其发展历程。本文《Apple “无缝”设计之历程》将继续这段探索之路，来分析一种特殊的接缝，那就是“无缝”（seamless）。

接缝往往是产品制造和生产带来的必然结果，尽管现在很少产品要在消费者的手上打开，不再自己去维修产品了，也就是作为产品开启门道的缝隙对消费者来说，存在的意义越来越弱，但是一个组装而成的产品，无论如何都无法做到真正意义上的无缝。接缝在揭示着一个物品是如何制作而成的，进而了解这个物品是如何设计而成的，作为必然结果，物品之上的接缝也就具有了一定的人文意义，但是这种人文意义不是设计师追求的目标，如果一个物品能做到无缝，设计师不会去画蛇添足地刻意做出一条接缝，设计师追求无缝，但制造和生产会带来接缝，两者的对峙就是我们将要探讨的“无缝”。

Apple 非常在意产品中的接缝，总是想办法把接缝做到最小，或者做到无缝，或者接近无缝，由此，产品的整体性和一体感将得到加强。这并非是对工匠精神的追求，而是深知用户也在意产品中的这些接缝，尽管这种在意可能是潜移默化式的，工匠精神只不过是追求明确的目标过程中的一种风采体现，它并非是用户所需。接缝与生产工艺相关，好的制造设备或者生产工艺，能够更好的控制接缝，所以工业产品总是一代代在朝着精致方向发展，接缝越来越小，整体性和一体感越来越强，但是，生产工艺只是手段，如果没有设计上的追求，这种进化只是一种水涨船高的结果，而且往往生产工艺的革新是需要设计去推动的。所以，我们在这探讨的接缝和无缝，并非是关于工艺，而是设计。

本文将从三个方向去分析 Apple 产品上的“无缝”设计，从材料的方向上可以区分出两条划分的路线，即是单一材料还是多种材料，第三个方向探讨的是“无缝”的意义是在于物理上，还是针对于用户的体验和认知，即现象上的无缝。

### 一、单一材料

单一材料指的是同一种材料形成的缝隙，或者说用同一种材料达到的无缝，比如材料都为塑料，或者都是铝合金。通常印象中，单一材料总是很容易达到无缝的，材料和任何一个形态的内部都是无缝的，而缝隙总是在边缘出现，而且总是存在的，我们从一个形态的内部某一个点开始，像外行走，总能到达边缘，边缘所在处就是接缝所在之处。在一个产品上这些边缘数量的多少，就能体现出这个产品的设计对缝隙在意程度或者取舍的考虑。Apple 擅长的不仅是将接缝做到最小，而且还让数量更少，在同类产品上出现的接缝，Apple 将其消化到形态的内部，也就实现的无缝。

那么单一材料下的无缝形式就会有两种，一种是一体性的，也就是探讨 Apple 如何用一个完整的形态来实现他人要用多个形态来达到的设计，另一种是组合形态，即是由两个或多个形态组合成的“无缝”的形态。

#### （一）单一形态

单一形态下的无缝设计又可以分成两种，一种是新的形态设计和加工工艺，另外一种是传统的形态和工艺，但是后继作修正。

**1、新的形态**

![iPod Shuffle 1st Double Injection](http://www.hi-id.com/atcl/2017/iPod-Shuffle-1st-Double-Injection-1.jpg)

Apple 在 2005 年 1 月发布的第一代 iPod Shuffle，口香糖式的长条形设计是它形态的特征，它只有一个开口设计，就是摘下前端帽盖之后，露出 USB 头的那一端，详细可以看 [iFixit 的拆解](https://www.ifixit.com/Teardown/iPod+Shuffle+1st+Generation+Teardown/21039)。第一代的 iPod Shuffle 的塑料主题机身是一体无缝的，更重要的是整个形态都是平平直直，这对于传统的注塑工艺来说是无法达到的。如果使用传统的注塑工艺，产品的形态从理论上来说与上图 FIG. 1B 里所示，即使外表面做到了平直，内腔因为需要退出模芯就必然会是如图式的梯形，而不是像 iPod Shuffle 那样（类似 FIG. 2）所示的那样均匀形态，而在实际制造之中如 FIG. 1B 的设计很难完成，因为加上产品长度的需求，不仅带来壁厚不均会导致缩水，还会因加工工艺需要急剧改变设计的原始形态，可以参照上图中的“traditional” 所示，前端开口处壁厚为 1.20 mm 的化，尾端将会是 2.70 mm，而且前端开口尺寸将会增大，这样带来的最终形态将不会是小巧轻盈了。

Apple 使用了二次注塑（或称双射，Doubleshot injection molding）来实现这个无缝的产品形态。

![iPod Shuffle 1st Double Injection](http://www.hi-id.com/atcl/2017/iPod-Shuffle-1st-Double-Injection-2.jpg)

二次注塑的大致步骤可以参照上图，FIG. 4A 和 FIG. 4B 为合上模具，FIG. 4C 注塑，FIG. 4D 为打开模具，FIG. 4E 为放入模芯，FIG. 4F 为合上模具，FIG. 4G 为注塑，FIG. 4H 为抽出模芯， FIG. 4I 为打开模具，FIG. 4J 为顶出零件。这样的二次注塑仍然会有一次抽芯，但是不同于传统的一次性抽芯，可以保证很小的拔模角，如上上图所示的“Double shot”中底下一图，最厚处也只有 1.50 mm。

关于第一代 iPod Shuffle 上的二次注塑工艺可以参考 Apple 的这份 [US 20110278312 专利](http://www.google.com.gi/patents/US20110278312)。简洁的形态背后需要复杂的技术和工艺支撑，而这种结果的取得，无缝，一体性和纯粹的几何形态，并非是小题大作，用户可以体验到它的独特之处，而是这种特征在当时是 Apple 独占的，不只是他们能做到，他们去做到，更重要的是他们能想到。

![iPod Chargers](http://www.hi-id.com/atcl/2017/iPod_Chargers.jpg)

这张 iPod 电源适配器的照片来自 [Wikipedia](http://en.wikipedia.org/wiki/IPod)，在《设计的踪迹》一文中也有过介绍，在这篇文章中写道“当接缝出现于正中间是最扎眼的，即使你意识中并没有去明确的指出，它似乎开门见山的告诉人们它就是这样直接设计与制造的。”

![Apple USB-C Power Adapter 29W](http://www.hi-id.com/atcl/2017/Apple-USB-C-Power-Adapter-29W.jpg)

这是 Apple 的 29W 的 USB-C 电源适配器（上图左[来自这](https://gtrusted.com/how-to-quickly-charge-your-ipad-pro-using-the-apple-29w-usb-c-power-adapter)，图右[来自这](https://beetstech.com/product/29w-usb-c-power-adapter-and-charge-cable)），与 MacBook （视网膜屏幕版）一道在 2015 年推出。

Apple 的 29W 的 USB-C 电源适配器，与此前类似形态的 Apple 的电源适配器显著不同，就是周身都为一体了，没有以前的电源适配器在中间的装配接缝，除了一个开口就是完全的无缝，同时期给 MacBook Pro 用的 61W 和 87W 的 USB-C 电源适配器，在中间仍然有装配的接缝。采用无缝一体的壳体设计，在这个电源适配器上，工艺的难度在于内部怎么掏空，也就是如何来抽出模芯，应是采用了多瓣的模芯。

![Apple USB-C Power Adapter 29W](http://www.hi-id.com/atcl/2017/Apple-USB-C-Power-Adapter-29W-molding.jpg)

如上图所示，Apple 的 29W 的 USB-C 电源适配器的内腔使用了三瓣模芯，先竖直向下抽出中间的模芯，然后是右侧模芯向左下方向运动，避开这个适配器腔体开口并退出，左侧一瓣同理。通过这三瓣模芯非通常方向的运动，就可以形成内腔比开口还大的空间。这个 29W 的 USB-C 电源适配器外壁光洁无瑕，甚至找不到分模线，除了高精度的模具设备外，可能还会用到后继加工，比如抛光等。关于这个适配器内腔成型的方法可以参考 Apple 的这份专利——[US 9694526](https://www.google.com/patents/US9694526)。

![Apple Pencil](http://www.hi-id.com/atcl/2017/Apple-pencil.jpg)

[Apple Pencil](https://www.apple.com/apple-pencil/) 如果确切的去辨别，那么它是由四段组成了，但是由于中间笔身足够的长，一体而无分割，所以看起来 Apple Pencil 有很强的一体感，可以对比目前其它任何手写笔。

Apple Pencil 笔身是使用塑料做成的，一个带锥尖的圆柱型套筒，它必然是空心的，因为需要安装触摸笔的内部元件。如果对注塑工艺有了解，就会发现要成型这样的塑料件，几乎是不可能，如此细长的空心圆筒，而且一头还有锥尖形状，如果计算上拔模角，这个最终形态将会变得不可思议。假设内腔只用 1° 拔模角，而 Apple Pencil 柱身差不多有 170 mm 长，直径大概 9.0 mm，假设壁厚 1.0 mm（这样内腔直径就是 7.0 mm），那么如果一端满足 Apple Pencil 现在的大小，另一头的壁厚就达到了 4.0 mm，而内腔的直径只有 1.0 mm 了。壁厚的 4 倍的变化，让这个塑料圆柱管无法生产。

Apple 采用的是一种 0° 拔模工艺，上面介绍的第一代 iPod Shuffle 也是接近 0° 拔模，但是它采用的是二次注塑的方式，而在 Apple Pencil 上因为是圆柱体，无法使用二次注塑等方法来达到，它需要一种新的抽芯方式，抽出模芯，让圆柱内腔是 0° 拔模，即头尾处处的直径是一致的。Apple Pencil 的内部结构可以参考 [iFixit 的拆解](https://www.ifixit.com/Teardown/Apple+Pencil+Teardown/52955)，iFixit 是使用了砂轮片将其锯开。

![Apple Pencil](http://www.hi-id.com/atcl/2017/Apple-pencil-molding.jpg)

腔体内之所以需要有拔模角，是便于模芯抽出，如果拔模角过小，模芯就无法抽出，或者能强制抽出，但是会拉伤产品的内表面，或者破坏整个产品，因为通常模具是用高硬度的钢做成了，为了保证所生产的产品的尺寸精度，模具就需要尺寸固定，而且受热胀冷缩的干扰较小。Apple Pencil 要形成内腔的 0° 拔模，使用了一个柔性的模芯，它由两部分组成，一个柔性带开口的套筒，以及一个内芯，靠着这个柔性套筒在一定条件下具有弹性形变，让其可以在 Apple Pencil 的圆柱腔体内抽出。

上图 FIG. 3 就是柔性的金属套筒，而 FIG. 5 是将装入套筒的内芯。套筒具有抛光的外表面，使用底摩擦性的金属做成，便于在塑胶内壁滑出，套筒上开一整条槽，使得套筒能具有一定的弹性，与之相配的内芯有一条凸起的键，套筒和内芯组成了模芯。注塑过程就是先将套筒装到内芯上，然后合上外模，完成注塑，将注塑成型的塑胶件和套筒从内芯上拉出，此时套筒在塑胶件的内壁上，因为套筒具有一定的柔性，它让内收缩，就可以从塑胶件内壁中抽出。FIG. 9 就是模具合上后的注塑过程，而 FIG. 12 是柔性的金属套筒在塑胶件（图上举例为三棱柱）内壁发生了弹性形变。详细可参考阅读 Apple 的这份专利——[US 20150367545](https://www.google.com/patents/US20150367545)。

![Apple Aluminum Remote Control](http://www.hi-id.com/atcl/2017/Apple-Aluminum-Remote.jpg)

Apple 产品上使用最多的两大材料为塑料和金属，其中金属最主要的是铝合金的使用，尤其是搭配 Unibody 的设计，使用 CNC 在整个铝块中铣削出所需的形态，这种加工工艺，一体性就是与生俱来的，它在从一个具有整体性的原材料上减料而成，而不是通过零碎的部件作加法而成。

上图是 2009 年 Apple 发布的铝合金机身的遥控器（上图左[来自这](https://www.youtube.com/watch?v=YnBqbzU4XPk)），从整个产品看上去就找不到一个开口，就像一块实心的铝，全身都没有缝隙。当然这种完全无缝之感，一部分来自于我们体验和认知的习惯，因为我们的认知习惯让我们倾向于认为它是一个壳体产品，它的腔体从上方直通到下方，而实际上，遥控器的下端就是实心的，而且它的腔体就是靠这些小于柱身的孔位向里挖掘的，而当这个孔位被塑胶按键给嵌入封闭住的时候，它的整体感就跃然而出了。

在 Unibody 之前，Apple 使用铝合金用到了很多铝挤形态，即在一个截面沿着一个方向拉伸而出，首先是在 2004 年初的 [iPod mini](https://en.wikipedia.org/wiki/IPod_Mini) 上使用，拉伸铝也是一种追求无缝的工艺，就像 iPod mini 一样，在你的主要视觉范围内，看不到接缝，因为接缝都在上下两端。

![Apple Mac mini](http://www.hi-id.com/atcl/2017/apple-mac-mini.jpg)

Mac mini 也是如此，挑战我们的体验和认知习惯，用小于形态的开孔去挖掘金属件的内腔，上面介绍的 29W 的 USB-C 电源适配器亦是如此，开口尺寸小于内腔的界面尺寸，形成的包裹形态强化了它的一体性。Mac mini 采用了特殊的刀具来作 Undercut。

单一材料在单一的形态下，按理来说是最为容易去追求无缝和一体化的，就像我们在设计草图上可以按照主观意愿去绘制一个一体化的设计，但正因为设计不是止于绘图，设计是始于绘图，所以按照我们主观意愿绘制的形态只是一个起始，马上就要面对挑战，与工程的挑战，与制造工艺的挑战。

**2、修正式的**

单一材料单一形态下，如果没有去设计一种新的形态，还是较为传统的方式，那么它不可避免具有传统方式带来的缺点，这些缺点会影响到设计的无缝感和一体感，那么在此基础上去追求无缝或者一体，那么就需要在原有基础上作出修正。

而这里广泛的就是对不可避免产生的分模线的修正，分模线（[Parting Lines](http://mimaweb.org/Part_line.htm)）指的是两块模具相合之处的平面，因为模具分合的需要以及产品脱落模腔的需要，结合位置总是在形态截面最大之处，而且因为拔模的存在，以及两块模具配合无法达到真正的光滑连续，所以在此处的产品表面上会留下一条结合线的痕迹。所以，当一个壳体或零件的最大界面在内部时，分模线就不可避免的出现了。

![Apple In-Ear Headphones](http://www.hi-id.com/atcl/2017/Apple-In-Ear-Headphones.jpg)

上图是 Apple 2008 年发布的 Apple In-Ear Headphones，入耳式的耳机，目前仍在销售。这个入耳式的硅胶帽就是最大截面在形态的内部，如上图斜线所示，前后两头形态向内收缩，那么如果按照通常的硅胶注塑方法，在斜线位置上就会出现分模线，很多厂商为了这一位置出现分模线，就将硅胶帽的形态设计成最大截面在尾部。这些带有分模线的硅胶帽如果将它反过来看，会发现内表面是光滑的，因为硅胶是软性材料，可以强制拉出模芯，所以内表面是光滑的，而 Apple 作的改进就是将注塑成型进行反转，完成注塑后，将产品光滑的内表面发过来，成为实际使用产品的外表面。详细可参考阅读 Apple 的这份专利——[US 8348010](https://www.google.com/patents/US8348010)。

![Apple Mighty Mouse 2 & MacBook 2009](http://www.hi-id.com/atcl/2017/Apple-Mighty-Mouse-2-MacBook-2009.jpg)

分模线在产品身上消失是 Apple 的一个特点，像 Apple Mighty Mouse 2 和 2009 年的塑料 Unibody 版 MacBook，都是将外表面处理光滑，看不出任何加工留下的痕迹，即分模线的出现，在上图所示的虚线位置为其产品内部的截面最大之处，也是模具分合所在位置，Apple 除了靠高精度的模具外，还通过后续的抛光打磨来去除分模线。

![iPhone 5c MacBook 2009 Polishing](http://www.hi-id.com/atcl/2017/iPhone-5c-MacBook-2009-Polishing.jpg)

上图是 iPhone 5c 和 MacBook 的打磨抛光程序，因为 MacBook 的轮廓是一个大弧形，所以打磨就需要适配产品的形状，否则虽然将分模线等瑕疵打磨了，但会改变产品的形态，让其高光和发射等光学视觉表现也发生了变化，图右来自于 [US 20110081839](https://www.google.com/patents/US20110081839)。

#### （二）组合形态

单一材料的组合形态，最简单的理解就是将同一材料做成两个零件组合成一个，而且这种组合不是装配关系，也就是组合后不会留下缝隙，或者是接近无缝。典型的例子就是两个一样的材料的零件焊接在一起，然后经过打磨等后期处理工艺，让最终效果看上去如同一体成型一般。Apple 在几种常见的材料上都有焊接，比如塑料和塑料的超声波焊接，铝和铝的搅拌摩擦焊接（以及激光焊接），以及不锈钢与不锈钢之间的焊接。

![Apple earpods welding](http://www.hi-id.com/atcl/2017/Apple-earpods-welding.jpg)

上图是 Apple EarPods，可以参看 [iFixit 的拆解](https://www.ifixit.com/Teardown/Apple+EarPods+Teardown/10501)。将两个塑料元件使用超声波将其焊接起来，现在已经成熟和常用的工艺了。超声波焊接不能做到无缝，会留有段差，而像耳机这样接触频繁的产品又容易积累灰尘，所以它只要仔细辨认总是能看到。

![iPod Shuffle 3rd Stainless Steel](http://www.hi-id.com/atcl/2017/iPod-Shuffle-3rd-Stainless-Steel.jpg)

Apple 2009 年下半年推出的第三代 iPod Shuffle 特别版，高亮的不锈钢版本，同期的铝合金版本以及第二代的 iPod Shuffle 使用了 Unibody 工艺，但是当时 Unibody 工艺实行不久，在这么小的不锈钢件上实行不太现实，可以在 iFixit 上看[相关的拆解](https://www.ifixit.com/Teardown/iPod+shuffle+3rd+Generation+Teardown/1166)，铝合金版能看到 CNC 的切割的痕迹，可以对比[这张图](https://d3nevzfk7ii3be.cloudfront.net/igi/rSnZjGWfjYFSNk5M)，不锈钢版的后盖是光滑的，而且留有焊接的痕迹。不锈钢版的 iPod Shuffle 从整体上看和铝合金版的一样，表面没有接缝，而且开口小，看上去就是一整块的金属。它应该是用一个不锈钢直筒，然后焊接封口后打磨抛光，使其看上去就是完整的一体。

![iMac 2017](http://www.hi-id.com/atcl/2017/iMac-2017-chin.jpg)

iMac 就像是一块显示屏直接贴在一个封闭的大铝盒子上，这个铝盒子没有接缝，也没有其他开口，看着就跟 Unibody 一样。它并非是 Unibody 的，因为这样的尺寸实在太大，不仅需要具有很大机台的 CNC，而且加工效率可想而知，要在那么大的铝块上去挖出一个盒子。所以，它使用厚的铝板冲压成型的，而冲压成型基本都是开放式的形态，像 iMac 这样的半封闭式的形态是怎么做成的呢？其实 iMac 下巴一整块都是焊接上去了，可以想象成就直接贴上去，但是你从外表怎么也看不出焊接上去的痕迹，除非你仔细放大看，或许有机会可以看到。

![iMac 2017](http://www.hi-id.com/atcl/2017/iMac-2017-chin-2.jpg)

上图来自 [Slashgear](https://www.slashgear.com/apple-imac-27-inch-2012-review-05259551/)，可以看出两块材料的一点影子，但极不明显。在 2012 年 10 月份的发布会上，Apple 更新的 iMac 的设计，侧面厚度从此前较厚款降到 5 mm 时，Phil Schiller 在台上介绍做这个下巴用了一种焊接工艺叫做搅拌摩擦焊接（[Friction stir welding](https://en.wikipedia.org/wiki/Friction_stir_welding)），在当时的网站介绍是，因为新款 iMac 边缘部分太薄了，所以无法使用传统的焊接方法。

![iMac 2007 & iMac 2009](http://www.hi-id.com/atcl/2017/iMac-2007-iMac-2009.jpg)

上图是 2012 iMac 更新前的两代，分别是 2007 年的 iMac，这一代使用的是塑料后背，所以前面一整个铝框架（包括下巴）是一体成型的，这一代的下巴的冲压并后加工成一条锐利的边缘的工艺，在以前文章《[iMac 的那一道亮利的风景线](http://www.hi-id.com/?p=2396)》中介绍过。而上图右的 2009 款 iMac 就使用了铝合金的背壳，在加上焊接一块下巴，但是这是机身很厚，所以还没使用到后来的“搅拌摩擦焊接”。从 2007 年和 2009 年的 iMac 比较，你就能看到因为工艺的不同，也决定了一些细节的不同，比如 2007 款显示屏玻璃盖板是嵌入铝框架的，而且下巴上方（与显示屏玻璃配合处）是两个圆角，而 2009 款显示屏玻璃盖板是浮起来的，那么下巴也就是直通的。

而上面提到了“传统的焊接方法”，即用在 2009 款的 iMac 的下巴焊接工艺，为激光焊接。

![iMac 2009 Laser Welding](http://www.hi-id.com/atcl/2017/iMac-2009-Laser-Welding.jpg)

使用激光焊接，一方面是因为 iMac 上的焊接空间有限，更加重要的是，激光焊接可以让焊接面渗透较深，从而保证焊接的充分。2009 款的 iMac 的下巴焊接，先将尺寸略大的金属板（将要成为 iMac 的下巴）放置到铝框架上，锁定位置固定好，施加锻压力，锻压力是保证下巴与框架紧密结合在一起，当焊接开始熔融金属时，在施加了锻压力的情况在，在内部焊接，焊接完毕后进行机加工，去掉不必要的材料，达到设计所需要的形态，然后是退火处理，然后是喷砂和阳极氧化。在喷砂和阳极氧化阶段，可以修正焊接阶段留下的一些痕迹，比如金属变色，或者是缝隙等，最终达到无缝和一体化的效果。对 2009 款 iMac 的下巴激光焊接需更详细的介绍，可参考阅读 [US 8338737](https://www.google.com/patents/US8338737) 专利内容。

而 2012 年款的 iMac 边缘只有 5 mm 厚，四周都是狭窄的空间，很难再像 2009 款的 iMac 那样可以伸到里面去焊接，那么焊接只能在外表面进行。要在外表面进行焊接，就要重新面对此前在里面激光焊接回避的问题了，最主要是对焊接和外表面的影响，选择搅拌摩擦焊接可以避免这些问题，而且它更安全和环保。搅拌摩擦焊接通过在要焊接的结合线处对两块材料进行旋转并摩擦生热，软化金属并通过施加压力让两块金属连接在一起。

![iMac 2012 Friction stir welding](http://www.hi-id.com/atcl/2017/iMac-2012-Friction-stir-welding.jpg)

iMac 上的搅拌摩擦焊接简要流程如上图所示，放置下巴，并且固定，然后沿着一圈的结合线进行搅拌摩擦焊接，而后与上面的流程类似，后继对工件进行机加工，让其有一个完整一体的表面，并且通过喷砂和阳极氧化等表面处理工艺，加强了产品的无缝感和整体性。

### 二、多种材料

在绝大多数产品上，多种材料相配合往往就是两种材料，三种或三种以上的材料会集到一处，来形成连接或接缝的情况很少，一条界线通常分开的就是一对。当两种材料在产品上碰到一起，往往就会有界线作区分，线的这边是这种材料，线的那边是那种材料，线有宽度，那么就是接缝和缝隙，线很窄，就是无缝。多种材料配合在无缝这个主题上的体现，我们就从缝隙的大小来作区分。这些材料往往就是几种常用的，它们之间的配合因不同的需要不同的设计以及不同的工艺，带来了不同大小的缝隙。

#### （一）小缝隙

![iPhone SE](http://www.hi-id.com/atcl/2017/iPhone-SE.jpg)

小缝隙在 Apple 产品上到处都是，只要有装配结构就有缝隙，而这些缝隙需要工艺和制程来控制。上图的 iPhone SE 的背面有几条缝隙，这几条缝隙都属于装配缝隙，是因为零件之间相互连接配合产生的。上下两段黑色玻璃盖板（相应的白色盖板是陶瓷）与机身的装配，在 iPhone 5 推出时 Apple 将其作为一个亮点来宣传，即用两台高倍相机来拍摄铝合金机身框架，然后从 725 件嵌片中找到一片配合尺寸最合适的，保证两件之间的结合缝隙达到尽可能的小。另外镶嵌的不锈钢 Logo 与机身之间的装配缝隙也非常之小，只有仔细看以及用手去摸的时候才能感觉到它们是两个元件装配起来的（iPhone 5 和 iPhone 5s 的 Logo 与机身一体，采用的是遮蔽二次阳极氧化来完成），因为 Logo 有一些尖角，所以这个镂空加工先是用 CNC 将这一区域材料减薄，然后用激光来切割。

极小的缝隙能够极大提高产品的整体感，即使是两种材料，不同颜色不同材质，就好像 iPhone SE 背面上下黑色嵌片玻璃，只要它与机身配合的缝隙足够小，而且与铝合金机身的高度足够一致，尽管它们是两种材质，但你会认为整台手机是一体的，而如果某条接缝扩大，即使其他条件一致，感受也会截然不同。

那么如果两种材料相遇，它的接缝更小呢？

#### （二）接近无缝

![ipad 2 ipod touch 4 seam](http://www.hi-id.com/atcl/2017/ipad-2-ipod-touch-4-seam.jpg)

在《[设计的踪迹](http://www.hi-id.com/?p=2716)》这篇文章中，探讨了 iPad 2 和 iPod touch 第四代中从前面板玻璃到铝合金机身之间的接缝问题。其实在玻璃面板和铝合金机身之间有一道黑色的塑料边，黑色塑料边可以让玻璃与金属机身之间形成一个缓冲。

![ipad 2 ipod touch 4 seam](http://www.hi-id.com/atcl/2017/ipad-2-ipod-touch-4-seam-2.jpg)

上图就是类似 iPod touch 第四代的边缘的处理，一圈的塑料镶边是在金属机身（不锈钢或者铝合金）注塑而成，上图左来自 [US 9547338](https://www.google.com/patents/US9547338)，上图右来自 [US 9285833](https://www.google.com/patents/US9285833)。 壳体上注塑材料在宏观上看是接近无缝的，当与玻璃相配时，玻璃的外边缘刚好是整个产品的外边缘，玻璃有一条小斜边也能增强边缘感，所以这个装配缝隙在通常情况下不容易被看到，而黑色的塑料镶边与金属机身的结合又是接近无缝的，产品就接近浑然一体。

![iPod touch antenna windows](http://www.hi-id.com/atcl/2017/iPod-touch-antenna-windows.jpg)

iPod touch 除了第四代是全不锈钢背壳外，其余都为无线信号开了一个窗口，并用一个塑胶件来封闭这个窗口，这样就出现了金属与塑胶在外观面上相遇。目前几代的 iPod touch 的背部的塑胶与金属结合的结构方式有三种，如上图所示（图片来自 [iFixit](https://www.ifixit.com/Device/iPod_Touch)）。

![iPod touch 1st antenna cap](http://www.hi-id.com/atcl/2017/iPod-touch-1st-Antenna-cap.jpg)

上图来自 [US 8472203](https://www.google.com/patents/US8472203)。第一代 iPod touch 使用的塑料盖片是从外向内装，靠着卡扣来张紧安装。而此后的 iPod touch 的天线窗口塑料盖片都是从内向外安装，第二代和第三代的 iPod touch 的塑料片可以看到一个与机身相匹配的凸起。iPod touch 上这些塑料与金属连接都是装配关系，亦是靠对制造公差的控制来追求尽可能小的缝隙。

![iPad 1st Antenna Bar](http://www.hi-id.com/atcl/2017/iPad-1st-Antenna-Bar.jpg)

第一代 iPad 的 Cellular（蜂窝网）版因为需要支持多频段的移动数据网络，需要在全金属的背盖上开启一个让无线电波穿透的窗口，使用塑料来制作。上图所示的为第一代的 iPad Cellular 版本，上图左来自于 [iFixit](https://www.ifixit.com/Teardown/iPad+3G+Teardown/2374) 而图右来自与 [US 8345410](https://www.google.com/patents/US8345410) 专利。iPad 上端的这一条塑料件与机身也是装配连接的，但是在外观面上几乎无法识别出缝隙，就好像是两种材料一体成型的。后续的 iPad 机型的天线窗口处塑胶件形态上有更新，但装配方式仍类似与 iPad 第一代，塑胶件是镶嵌上去了。

两种材料相遇，如果要做到几乎无缝，那么就需要一体成型。

#### （三）几乎无缝

![iPhone 4](http://www.hi-id.com/atcl/2017/iPhone-4-Plastic-Slot.jpg)

iPhone 4 的不锈钢框架上的塑料条，是将金属框架放入注塑模内射出成型的，到现在已经是司空见惯了，几乎每台手机都在使用现在称作纳米注塑的工艺。将需要与塑胶结合的金属件表面作纳米级别的表面处理，注入的塑胶和金属表面的咬合也达到纳米级，金属和塑胶之间的缝隙可以称为 0 间隙，虽然从理论上来说，两种材料的物理连接始终不会成为一体。

iPhone 4 在发布前因样机遗失，很多人早早看到了它的照片，人们纷纷对这一黑色的塑料条表示不喜欢。随着机器的发布和上市，大多数人接受了这一妥协的结果，因为天线的需要，而很多设计师则认可并且赞扬这种金属和塑料的结合方式，那种异性的材料可以结合如此紧密和精密。但是，这种两种材料之间的无缝连接带来的独特的工艺和审美需要得到赞颂吗？无缝当然值得赞颂，但是为了这种独特的审美，而刻意去强化塑料和金属的无缝连接，并不会得到大众消费者的认可的。

![iPhone 6s](http://www.hi-id.com/atcl/2017/iPhone-6s-antenna-plastic-band.jpg)

对于用户来说，他能接受这种塑料和金属之间的分割，那是因物理和技术的限制达到一种妥协的结果，但不值得去赞赏。

尽管在技术上实现了无缝，但在人们的认知体验中，它们仍是有缝隙的。

### 三、现象上的无缝

![iPod nano 2015](http://www.hi-id.com/atcl/2017/iPod-nano-2015.jpg)

Apple 的设计追求内外合一（Integrity）和本质，不被外界和流行所干扰，总是能在一定条件下找到最佳的结果，并且下一次依然会做到更好，如果因技术限制，遇到必须妥协时，会光明正大的妥协，而且不会去掩饰，以防掩盖了内外合一性。

Apple 对妥协之处的坦白，在天线窗口的处理上显露得淋漓尽致，比如上图所示的 iPod nano，不仅没有掩饰，而且还在向人们明示这是因为物理和技术的限制而作出的必然选择，为什么不把塑料片做成机身一样的颜色？会有很多可回答的因素考虑，Apple 最终选择了最为明显的白色，灰色款使用的是黑色。

iPod nano 的前面板也是如此，不只是 iPod nano，到目前位置 Apple 所有的屏幕盖板的颜色只有黑色和白色，没有为了追求“一体化”而将盖板做出其他颜色。

![iPod Air 2 Cellular Plastic Bar](http://www.hi-id.com/atcl/2017/iPod-Air-2-Cellular-Plastic-Bar.jpg)

iPad 的蜂窝网络版的天线窗口的塑料条一直只有黑和白两色，然而到了目前 2017 款的 iPad Pro，此处设计就有很大变化，或许是将手机上的设计和技术引入，不再是一整条的塑料窗口，而是用一细小的塑料条将铝合金背部上端部分作了分割。

这种变化也发生在 iPhone 上，iPhone 推出了哑光黑和高亮黑两个版本，这两个版本的天线条对机身颜色作了很好的颜色适配，不再像金色版和玫瑰金版（白色天线分割条）那么显眼，也比银色版（灰色的天线分割条）更隐蔽，更加一体化。

![iPhone 7 Red](http://www.hi-id.com/atcl/2017/iPhone-7-Red.jpg)

然后就是这个红色版的 iPhone 7 (PRODUCT)RED，不再像金色或者玫瑰金版本一样使用坦白的“白色”天线分割条，而是匹配的机身的红色。

The Times They Are a-Changin’，Apple 并没有失去对内外合一的追求，只是时代发展了，不再拘泥于过去那种“坦白式”的设计了，时代发展，不仅仅是技术的发展，比如天线条的着色的实现手段发展了，更为重要的是“时代精神”发生了改变，人们看待和使用物品也发生了改变，所以我们看到了 Apple 比以往更加丰富多彩。

![iPhone 7 Jet Black](http://www.hi-id.com/atcl/2017/iPhone-7-Jet-Black.jpg)

iPhone 7 的 Jet Black，则是另外一个角度在追求无缝。它的制造的精密，装配公差等等，那些物理意义上的缝隙，依然是一代代在突破，但是更大的突破来自于我们对产品认知上的缝隙，我们称之为“现象上的无缝” 。iPhone 7 的高亮能够掩盖到那些缝隙，那些被眼睛看到的缝隙，而感觉和知觉上的缝隙并非只来自于视觉可见的那些物理缝隙，感知觉上的缝隙来自对产品一体化的违背，一个产品如果只是功能的叠加，并没有对它在日常生活中的符号意义作探讨，那么它就是散架了，也就是充满缝隙的。

如果意识到这一点就会发现，那么或许被我们看不上的产品，那些追随市场潮流的产品，那些像流行乐一样的产品，它的设计意义比一些有操守的设计师设计出的东西更大。

![MacBook Pro Touchpad iPhone 5s sidekey](http://www.hi-id.com/atcl/2017/MacBook-Pro-Touchpad-iPhone-5s-sidekey.jpg)

在《设计，在于制造真实的“假象”》一文中我们讨论了 iPhone 在按键上设计的进化历程，认为设计的目的在于制造“假象”。将 MacBook 的玻璃材质的 Touchpad 处理成与周围的阳极氧化铝合金一样，将手机四周的按键处理成所处边框一样，首先肯定不是为了炫技，所以不用去和用户说明制造的逻辑是怎样，实际上消费者有没有在意或过问 Touchpad 的材质也不重要，设计也从来不是给消费者提供智力和知识，消费者的体验都是来自于一个个的现象。

Apple 现在的产品越来越多的颜色，如果是专注于实体产品的本质意义，那么像金色和玫瑰金色等都可以看作是违背了本质，像 MacBook 这样大尺寸的铝合金产品都用上了金色和玫瑰金色，我们不能不承认一些根本性的改变在发生，颜色将变得比材质更重要。材质与形态相关，它与物理的缝隙相关，而颜色独立于实体，它作用于现象。

用高亮版的 iPhone 7 作为追求现象上的无缝，并不是要说只要做成通体一色就能到达现象上的无缝，将金色版的 iPhone 7 做成通体的金色未必是最佳，高亮版的 iPhone 7 通过对颜色和表面工艺的处理，将铝合金的金属质感也剥离掉，我们对铝合金的质感记忆比如颗粒感也只不过是习惯而已，习惯也是建立在现象积累之上。现象上的无缝或需要物理上的无缝来作为基础，但它高于物理上的无缝，它笼罩其上.


# Apple 那些“无关紧要”的设计改进

在 Apple 出的《Designed by Apple in California》这本书中，Jony Ive 写了一页简短的文字介绍，最后一段他写道：“我确信人类对在意（care）的感知同我们对草率（carelessness）的察觉是一样的，我认为我们所感知察觉到的东西——也许不是有意识地——远超出物品本身，我们能感知到物品背后的那一群人，他们所做的不仅仅是让某个东西发挥功用，他们诚挚地在意那些小到看不见的细节，也同样在意那些大想法和首要功能。”不加考虑的设计和粗制滥造的产品，绝大多数人都会有所察觉，而设计中殚精竭虑和产品上的精益求精，却不像瑕疵那样明显和浮于表面，这时“没有人会在意”往往就会成为推辞设计的理由。Jony Ive 认为人们对草率和在意这两者的感知是可以同等并论的，只不过对后者，对设计品质的感知会部分扩散至潜意识之中，因此，每一个细节，无论是看的见的还是“看不见”的，在设计中都变得非常重要。

![Apple Small Detail Design](http://www.hi-id.com/atcl/2018/Apple-Small-Detail-Design-201803.jpg)

Jony Ive 这些年的访谈总是围绕着几个关键词，除了“care”（在意），还有“making”（制作）、“inevitable”（必然的）、“rational”（理性的）、“coherence”（一致）、“integrity”（正直、内外相合）以及“simplicity”（简洁）等，而流传最广的是“better”（更好）这个词，来自“不一样很容易，更好则很难”这句（It’s very easy to be different, but very difficult to be better）。设计师，无论哪个门类，对“不一样很容易，更好则很难”都能感同身受，“不一样”就像是设计师的本能一样，可以无止境地输出具有差异性的方案，而“更好”则在于后世的修炼，需要日积月累的辛勤付出。Apple 无疑是“追求更好”的最佳典范，20 多年的设计发展，不仅仅是连续的、生长的，而且它跟科技发展一样的坚实，一步比一步地更好，无法回滚，不存在现在的设计不如几年前的这种情况。对“更好”的持续追求带来的一种魔力，一旦 Apple 公布一个新的设计，很快人们就会觉得旧的设计是如此过时和亟待改进。“为什么之前我就想不到，或者没觉得呢？”这种可以改变人们认知的力量，主要靠不断的“更好”支撑而起。做得更好，有一个潜在含义，就是必须在当前的设计条件下做到最好，如果没有休止符——“当前条件下不再有更好的设计了”，更好就无法成立。

Apple 这 20 多年来产品上设计的发展呈现而出的是台阶式的，除了 iPod nano 比较跳跃式的更新换代外，其他产品在不断的迭代更新中具有清晰的线性脉络，革新——发展——成熟——维持——下一次革新，以此不断向前发展，不同的产品有不同更新频率，有的产品迭代快速，有的则会有很长的“维持”阶段。作为现在 Apple 最重要的产品 iPhone，得益于市场需求，以及需求对新技术的拉动，使它成为设计更新最频繁的产品，维持了设计每两年一更新的频率，而从 iPhone 6s 到 iPhone 7 再到 iPhone X，可发现一些设计元素逐渐进入了“维持”阶段，不再像此前那么节奏明显。而另一些 Apple 产品，一旦定型之后就进入很长的“维持”阶段，比如第一代的 Mac Pro 如从 2003 年的 Power Mac G5 算起，设计维持了 10 年，这与产品的市场所需有关，因为技术上早就支持作出改进了。iPad 虽然也是高需求的产品，但它的设计在 2012 年第一代 iPad mini 定型后也少有改动了，是因为设计的合理性为产品带来了高度的形态完成性。iMac 从 2012 年开始定型后就一直维持到现在，MacBook Pro 也可以从 2012 年的 Retina 版算起，经历了将近 6 年时间，在设计上没有太大的变化。iPhone 电源适配器（5W）则从 2008 年随着 iPhone 3G 发售开始就在设计上维持不变了，而 Apple 笔记本的带绕线结构的 MagSafe 电源适配器（USB-C 版不再具有绕线功能）可追溯到 2001 年的“[超级便携电源适配器](https://web.archive.org/web/20011116130714/http://store.apple.com:80/1-800-MY-APPLE/WebObjects/AppleStore?productLearnMore=M8576LL/A)”，用了将近 17 年的设计（[USD478310](https://patents.google.com/patent/USD478310)）……这些变与不变的设计很好地体现了 Apple 设计的那些关键词，不会出于对“不一样”的需求而去追求形态的更新，形态是结果而不是出发点。

但如果我们看得够仔细，Apple 那些看似没变的产品依然在设计上不断作出改进，这种改变发生在看得见的地方，也发生在那些“看不见”的细节之处。有一些细节上的设计改进是因为功能，比如说从 iPhone 7 之后的手机的皮革保护壳，侧面的按键从原先的一体设计改成了镶嵌式设计，代之以与皮革颜色一致的铝合金金属按键，因为此前一体式设计的皮革保护壳虽然有很好的一体性，但按键很难按压。有一些细节上的设计改进是因为设计能力和工艺的提升，带来的整体品质上的提升，比如 2006 年给 iPod 和 iPod nano 使用的皮革外套，同样是袖套式（Sleeve）的设计，比较现在为 iPad 和 MacBook 提供的皮革保护袖套，整体品质的提升体现在一个个的细节之上，比如针线、开口设计等。有一些细节上的设计改进是因为改善体验，比如 2011 款的 MacBook Pro 将边缘上的圆角加大了小小一点，以防锋利边缘而带来了“硌手”之感，与 2009 款 MacBook Pro 的比较图片[可以见这](https://marco.org/2011/09/07/the-new-setup)，在视觉和体验之间作了一些调和。有一些细节上的设计改进是为了视觉体验，比如第三代的 MacBook Pro 也就是 2012 视网膜屏款将电源按键从孤立的右上角移到键盘区域内，而 2016 年的第四代则将左右方向键拉高，保持与上下方向键同高，让整个键盘区不再有空余区域，规整有序……

所谓“无关紧要”的设计，往往栖居于那些注意不到的细节，这种改进并非来自功能上的直接需求，粗一看无可无不可，但仔细一比较会觉得这些改进朝着“更好”的方向前进，回味一下又会感叹“我怎么没想到”。

![Safari Icon 10 vs 11](http://www.hi-id.com/atcl/2018/Safari-Icon-10-vs-11-201803.jpg)

iOS 上 Safari 浏览器的图标，左侧为 iOS 10 右侧是 iOS 11（从 iOS 11 beta 4 最先引入），上图来自 [Twitter 用户 @surenix](https://twitter.com/surenix/status/889667263485399040)。设计上的改变是，指针的角度约略转动了一下，以及指针的长度约略往回缩了一点。

这个设计改动的原因在中文网络上有一个流传较广的说法，来自于新浪微博用户 [@阑夕](https://weibo.com/1560906700/Fe9K5wXx0)：“在iOS 11 Beta 4的图标设计中，Safari的指针朝向发生了轻微的偏移，这是因为在现实地球中的地磁北极也在持续的发生变化，在过去的150年里向北移动了超过1000公里。”而这个说法最早可能出自 Twitter 用户 [@nAODI](https://twitter.com/naodi/status/889869674552320000)：“iOS 11 Beta 4 中 Safari 图标也发生变化：指针有偏移。原因应该是现实中地磁北极继续向北移动。”这样的说法总是能吸引人，以及被人们津津乐道，这些外部的参照以及轶事能够为设计带来故事和制造传播，就像流传的 Apple Logo 背后的故事一样，虽被辟谣然而总是生生不息，但它们与设计其实并无多大关系。对于设计师来说，相比为设计增加丰富的外在含义，对设计内在内容的探讨更富乐趣也更有意义。

说 Safari 图标上指针的变动是源自地磁北极的变动，显然是没有立足点的。iOS 10 上的磁针是 45°，而 iOS 11 上的磁针角度是 50°，如果这个角度变化代表这地磁偏角的变化的话，那么为什么是变大而不是变小，通过[维基百科](https://en.wikipedia.org/wiki/Magnetic_declination)以及 [NOAA](https://maps.ngdc.noaa.gov/viewers/historical_declination/) 网站可以看到美国地区在近百年的地磁偏角是缩小的。

iOS 10 上的 Safari 图标磁针是 45°，是为了视觉效果，因为通常情况均等优于不均等，而 iOS 11 上的 Safari 图标磁针从 45° 调整到了 50° 也是出于视觉体验上的修正。iOS 10 上的 Safari 图标定型于 iOS 7，继承自 iOS 6 及之前的 Safari 图标中的罗盘基本元素，包括 5° 的单元角形成了刻度盘，刻度的长条短条间隔排列。iOS 7 上罗盘指针两端超出了刻度与外圆相接（见 [iOS 7 介绍视频](https://youtu.be/4xzLr7xSr-g?t=1m50s)），45° 时罗盘指针刚好覆盖了刻度短条，被两长条相夹，从大图上看这样的设计并没有什么问题，但在实际尺寸上看，指针的两端的形态就显得拥挤嘈杂，并且干扰识别，指针几乎要与相邻的刻度长条相接了。离奇的是 iOS 10 上的罗盘指针不是恰好在 45° 的位置上，有些许的偏移（白色指针偏向了 6 点钟方向），可能是因为设计师手抖，iOS 9 上倒没有这个失误带来的瑕疵。经过调整后的 iOS 11 上的 Safari 图标虽然角度从均等的 45° 变成了 50°，但新图标指针两端明显更加清晰和简洁，指针与相邻的刻度长条间也有了更大的空间。

![Apple USB Cable](http://www.hi-id.com/atcl/2018/Apple-USB-Cable-201803.jpg)

Apple 的 USB 数据线的 USB 端的不同设计，我们现在对右侧的形态已经熟知在心了，会认为 Apple 的数据线应该是这个样子，而左侧的数据线看上去像非官方的，的确有很多第三方的 USB 数据线的设计就跟左图一样。但上图两种 USB 数据线都是来自于 Apple，只不过一条是老的设计，一条是新的设计，那么很多人会猜老的设计应该是很久以前的了吧，实际 iPhone 3GS 随机附送的数据线仍为如上图左所示的老式设计（2009 年），新设计的数据线零售版在 iPhone 3GS 发布后上市，而随机附送的要到第二年的 iPad 才更新至新设计。

两个 USB 端的设计差别就在于手持塑胶壳体的尾端，一个为弧形一个为直线型，这就是“无关紧要”的设计，只是设计语言上的差异，新的设计比老的设计更好更漂亮？似乎很难给出具有说服力的理由，但是人们会认为新的设计更符合时代，很多这样的评价其实是基于对后者的习惯之上，然而我们从形态的识别上来说显然后者更为容易，因为曲线的形态带来了不少复杂度，新的设计更加简洁和干净利落，而且与另外一端的形态相配（当时是 [Apple 的 30 针接口](https://www.apple.com/ph/shop/product/MA591G/C/apple-30-pin-to-usb-cable)）。

与数据线相配的电源适配器在《Apple “无缝”设计之历程》一文中有详细的介绍，关于 Apple 的 29W 的 USB-C 电源适配器，从分件式的设计走向完全的一体化单壳体设计。

![iPad 1st Gen Case and Smart Cover](http://www.hi-id.com/atcl/2018/iPad-1st-Gen-Case-Smart-Cover-201803.jpg)

Apple 在 2010 年 1 月发布第一代 iPad 时也发布了一些配件，其中就包括这个 iPad Case，它不只是可用来保护 iPad 以及易于携带，还可以将 iPad 支起，能够提供横屏下两个角度，立式便于看视频等，而卧式则让打字更加舒适，这个 Case 还将所有的按键和插口位置掏出孔位，装上这个保护套也不影响任何按键和连接功能的操作。

如果以我们现在的眼光去看这个 iPad Case，会惊讶于 Apple 怎么会做出这样的设计。这个 iPad Case 虽然提供了一些功能创新，能贴合 iPad 的使用模式（看视频和打字），但看上去没有什么设计含量，是一个非常功能化的产品，以直接又快速的方式来解决功能性的需求，似乎没什么深思熟虑，比如，如何让这个 iPad Case 的盖子反折到背后来形成一个楔形的支撑角，Apple 就直接在 Case 的背面做了一个外露卡口，卡住翻转过来的盖子，非常直截了当的设计。按键和插口的孔位也是简单粗暴地切除，而装进 iPad 则并不省力，需要像将书装入背包一样复杂，具体可以看[这个上手的视频](http://www.youtube.com/watch?v=QGNeSjzkoAU)。

有一点需要明晰的是，2010 年 1 月份时 Apple 的在售的最新手机还是 iPhone 3GS，保护套这个品类产品虽然开始兴起，但是仍然处于较为原始的状态，当时 Apple 把保护套还仅仅当作一个功能性附件来看待，与今天将这类产品视作时尚品一样（可以看 Apple 现在在售的配件），已经不能同日而语了。在第一代 iPhone 时期，Apple 也设计过保护套，申请了专利，[USD574819S1](https://patents.google.com/patent/USD574819) 和 [USD582405S1](https://patents.google.com/patent/USD582405)，最后没量产和推向市场，从图上看那时的保护壳也是以追求功能性为主，简单粗暴。

在推出了第一代的 iPad 以及 iPad Case 之后，仅仅过了一年，Apple 发布了 iPad 2，以及极具创新性的 Smart Cover。按照通常的认知路径，第一代的 Case 不理想，那么第二代应该会“有所”改进，而 Smart Cover 出现远远超出人们能预想到的任何角落，围观的设计师不再发出类似“我怎么没想到”的感叹，而是觉得自己可能再怎么想也未必能想到，因为这样的创新设计的取得除了灵感，还需要精力和专注的持续投入。这跟多年后看到 AirPods 的诞生一样，觉得在很长一段时间内，会觉得这样的设计足够好了，很难再做更好的了。

![iPad Smart Cover vs iPad mini Smart Cover](http://www.hi-id.com/atcl/2018/iPad-Smart-Cover-iPad-mini-201803.jpg)

然而仍有可以做得更好的地方，在 2012 年 10 月份 Apple 推出了第一代 iPad Mini，有了新的形态设计（侧面轮廓线），同时也将 Smart Cover 作了设计上的改进，就是将原先与 iPad 相连的外露的金属铰链改成了隐藏的和一体式的设计，在 iPad Mini 的 Smart Cover 上，磁铁藏于长条槽形的塑胶件内，然后一面是 PU 材质一面是超纤材质覆盖。新的设计能够带来更好的握持体验，手感比裸露的金属铰链更加舒适，而在视觉体验上有了更强的一体感，结构都被封闭在内，不像金属铰链看上去那么工具化。

所以，经过前后比较，会发现更好之后还可以继续更好。

![Apple Store Fifth Avenue](http://www.hi-id.com/atcl/2018/Apple-Store-Fifth-Avenue-201803.jpg)

纽约第五大道上的 Apple Store，通常会被认为是 Apple Store 的符号和象征，一说起 Apple Store，在人们脑海中的替代形象就是这第五大道上的玻璃方盒子，尤其在早先年间 Apple Store 的数量还不众多的情况下，人们是通过各种媒介先认识到，常常就是这个玻璃方盒子。这个 Apple Store 在 2006 年开业，也成为纽约的一个建筑地标。

在 2011 年 6 月份 Apple 开始对这个玻璃方盒子[进行整修](https://www.macrumors.com/2011/06/16/apple-to-upgrade-fifth-avenue-store-plaza/)，或者说重建地面部分，即这个玻璃盒子。玻璃盒子有 5 个面，原先每个面有 18 块玻璃，总共 90 块，重建后每个面只有 3 块玻璃，总共只是 15 块，用巨大的玻璃替代原先的小块玻璃。

![Apple Store Fifth Avenue](http://www.hi-id.com/atcl/2018/Apple-Store-Fifth-Avenue-2-201803.jpg)

前后的对比图示，15 块玻璃里面还有一些长条玻璃作结构支撑用，视觉效果的改变就像视网膜屏一样，在没看到之前，或者还在看前一代的设计时，很难去预计改进后会是怎样，甚至怀疑是否有改进的必要，也想不到去作出这种改进，而一旦看见之后，一切就变得十分的明确了，就像这个 Apple Store 一样，它的设计朝着纯粹的方向迈进了巨大一步，会觉得这样的设计改进完全是有必要的。

当时负责这个项目的建筑公司是 BCJ，而 Steve Jobs 参与了设计全程，见改进后的 Apple Store 的外观专利 [USD712067S1](https://patents.google.com/patent/USD712067S1/)。改进后的 Apple Store 在 2011 年 [11 月 4 号重新开放](https://www.macrumors.com/2011/11/04/apples-new-fifth-avenue-store-cube-fully-revealed/)，而在一个月前，也就是 2011 年的 10 月 5 号，Steve Jobs 去世。

![iMac Pedestal](http://www.hi-id.com/atcl/2018/iMac-Pedestal-201803.jpg)

Apple 在 2004 年 8 月发布了 iMac G5，告别了服役两年的台灯式 iMac G4 的设计（Steve Jobs 在 iMac G4 的发布会上说它那漂亮和优雅的设计将会持续十年），走向了理性的设计，而这个设计原型持续到了 14 年后的今天，这个原型就是一个弯折的支撑底座和一个悬挂的盒子。支撑底座是用 8 mm 厚的阳极氧化铝板弯折而成，它可以支持电脑从 25° 到 -5° 进行角度调整，而悬挂的设计可以让桌面变得非常干净整洁，Apple 当时介绍说当不使用电脑时你的键盘和鼠标可以放在这个铝合金的底座之上。

到了 2007 年 8 月 iMac 机身的前壳专用冲压铝合金制作，而到 2009 年 10 月份则整体机身都用铝合金制作，但是在 2009 年 3 月份，Apple 对 2007 款的 iMac 作了一个小改款的设计，淘汰了一个 FireWire 400 接口，增加了一个 USB 接口，另外一个改变就是这个支撑底座前端变薄，而这一处的设计到 10 月份发布新款 iMac 时 Apple 对它作了介绍：“又一次战胜杂乱的胜利，精致处理的渐薄的铝合金底座几乎在桌面消失掉了。”

明显这是一个针对视觉体验的设计，也许不是那么显著的改变，但它实实在在的提升了体验，否则视觉容易被非常具有物质感和材质感的底座吸引，就好像面对一块厚厚的铝板，这种抢眼的视觉特性或多或少在离散我们对产品的注意力。

到了 2012 年低 Apple 发布了四周侧面更薄的 iMac，抛弃了光驱（对光驱的考虑，在几代的 iMac 设计上占很重要的作用），可以发现对 iMac 的这个底座支架又作了微小的调整，也是出于视觉的优雅上，对比上图可以看出这个底座支架不再只是前端渐消，而是两端都有渐消的变化，对弯折处的形态也作了改进，整体看上去更加流畅，而不像前一版本在弯折处会有一些视觉的淤积之感。

![MacBook Thumbscoop](http://www.hi-id.com/atcl/2018/MacBook-Thumbscoop-201803.jpg)

Steve Jobs 在 2007 年发布 iPhone 时说过一句“每过一段时间就有一个革命性的产品到来，改变了一切”，iPhone 也的确如此，而这句话用来称赞 2008 年 Apple 推出的 Unibody 设计，也并不为过，虽然 Unibody 设计的改变不是那么直接和显现。Unibody 的设计最早从 2008 年 1 月发布的 MacBook Air 身上得到充分应用，在同年 10 月 MacBook Pro 发布会上，Jony Ive 上台介绍了 Unibody。

在《Designed by Apple in California》这本书的引言中，Jony Ive 写到过一句“切出一个孔洞来作为把手而不是增添多个零件”，虽然在上下文中这句话只是一个举例说明，但这一条对 Apple 追求的简洁设计具有一定的代表性，用它来说明 MacBook Pro 的手指扣位也再好不过了，在 2008 年发布的 Unibody 设计之前，MacBook Pro 开启和合上有一个独立的锁闩结构，在 Unibody 版上就通过一个挖出的凹槽来形成手指的扣位。

Apple 对这个 2008 Unibody 版 MacBook Pro 的手指扣位的介绍是：“这个手指扣位面临的设计挑战是既要表现出机加工的清晰锐利感，同时也要让操作舒适，Apple 的设计师为这个手指扣位设计了数百个版本，甚至用电子显微镜来检验，为达到最终合适的效果。”（一些检验的模型可以见《[Designed by Apple in California](https://www.apple.com/designed-by-apple/)》这本书的视频介绍，Via: [wusen.me](https://wusen.me/take-a-bite/)）这个手指扣位由两条曲线和一个曲面构成，顶面的曲线高度低，为了最低限度的不破坏形体同时也要保证扣位的空间，而正面的曲线相对有更大的高度，保证手指放入的足够空间，而曲面则是两个垂直方向上的面的融合，这个曲面对于机加工来说并不简单。

到了 2016 年 6 月份发布带有视网膜屏的 MacBook Pro 时，MacBook Pro 的设计作了一些更新，最显著的特征就是更薄，厚度只有 1.8 cm（此前版本厚度为 2.41 cm），手指扣位的设计也作了更新，仍然是两条曲线一个曲面，仍然是顶面的曲线高度低而正面的曲线高，曲线的形态约略有些改变，与机身棱边形成的夹角更大，这样可以让三线交接的尖点更钝一些，而最大的变化就是曲面的变化，这个曲面在中间段是一个斜面而两侧的曲面顺势形成，而不像此前版本由两个垂直相交的平面圆滑过渡而成。

为什么作了这个改进，是因为内部空间不够，不能向里掏去更多的材料？并非如此，从拆解图看空间是足够的；是因为原先的加工工艺复杂，要用更简单的一刀完成的形态？这也不会成为 Apple 设计改进的主驱动力……

后来很多笔记本电脑的手指扣位都使用了这种形式的设计，比如微软的 [Surface Book 2](https://www.microsoft.com/en-us/surface/devices/surface-book-2/overview)，微软的手指扣位采用的是 45° 角的切除，即顶面的曲线和正面的曲线是一致的，而到了两端以较大的角度与机身棱边相接，非常直接的操作。如果在商店里去比较 MacBook Pro 和 Surface Book 2 的这个手指扣位的效果，就会发现 MacBook Pro 的设计在光影表现下更加微妙和丰富，而 Surface Book 2 的形态看上去硬生生，没有太多的光影变化；而从使用体验上来说，MacBook Pro 很好打开，而且大角度的斜面对手指有很好的引导效果，Surface Book 2 则扣位的空间很小。

![MacBook Thumbscoop](http://www.hi-id.com/atcl/2018/MacBook-Thumbscoop-PS-201803.jpg)

MacBook Pro 在 2016 的视网膜屏版作出更新的手指扣位，一个主要原因应是视觉效果的改进，当机身变得更薄时，仍然采用原先的设计的话，对形态的破坏就更明显，也更加突兀，因为原先的扣位的形态通常不会被视觉理解成一个面，而是一个体块特征，原先的设计形成的光影效果比较复杂，两端有类似球面一样的全面，在此处高光和阴影很容易就一起出现，上图下就是经过嫁接后的效果示例。

这也是一个更好的设计，但仍然不完美，仍会觉得这个手指扣位是一种对整体性的破坏。

![Apple Lightning Cable Packaging](http://www.hi-id.com/atcl/2018/Apple-Lightning-Cable-Pack-201803.jpg)

2012 年 9 月 Apple 发布了 iPhone 5，随之也更新了连接接口至 Lightning，替代了原先宽大的 30-pin 接口，Lightning 接口更小更牢靠，可以正反插，iPhone 5 的包装盒内配备了 USB 到 Lightning 的连接线，消费者打开包装盒，如果在意的话，会惊讶于这种连接线缠绕地是如此规整，看上去就不像手工缠绕而出的，虽然到今天这种包装方式已经较为常见了，而在 2012 年看到就会赞叹他们对细节的关注是多么无微不至。在这之前，Apple 的 USB 到 30-pin 的连接线，无论是 iPhone 还是 iPad 也作了缠绕，相比而言是比较杂乱的。

![Apple Lightning Cable Packaging](http://www.hi-id.com/atcl/2018/Apple-Lightning-Cable-Pack-2-201803.jpg)

连接线的缠绕使用到了治具（上图来自专利 [US9073727](https://patents.google.com/patent/US9073727)），这个治具的关键在于如何在开始和结尾时对两端连接头进行固定。

现在 Apple 将这种设计，连接线缠绕的规整性，应用到所有的产品之上，只不过固定数据线的材料从透明塑料转向了纸张。

![iPhone 6s and iPhone 7 Packaging Film](http://www.hi-id.com/atcl/2018/iPhone-6s-7-Packaging-Film-201803.jpg)

iPhone 的包装上另外一个意想不到的设计改进是在 iPhone 7 的盒子上，就是包装盒外层的保护膜。此前 iPhone 包括 Apple 的其他很多产品包装盒使用都为热缩膜，或者称塑封膜，在盒子外面套一层塑料膜（或袋子），处理一下边角，经过电热箱烘烤，塑料膜收缩绷紧在盒子上，而盒子四周会出现几条熔接线。热缩膜的好处是成本低，收缩服帖便于后续的流通，缺点也明显，品质不高，尤其在熔接线处，有时也会因收紧力大导致盒子变形，还有一个主要缺点就是用户拆除困难，看开箱视频基本有两种方法，先用刀划或者是直接用指甲去剥（上图左来自 Tech Trinkets 的 [iPhone 6s 开箱视频](https://www.youtube.com/watch?v=rP6xX9jRDV8)，上图右来自于 DetroitBORG 的 [iPhone 7 开箱视频](https://www.youtube.com/watch?v=qkblFCAcOxQ\&t=666s)）。iPhone 7 采用全新设计的保护膜，使用的是包裹的方式，拆除将变得很简单，而且塑料膜厚度更大，转角处有包裹的自然圆角，感觉比热缩膜品质感更强，但在包裹的服帖上会差一些，较难避免折皱或气泡等问题。

这也是一个看似“无关紧要”的设计改进，在前一种设计如此成熟高效运转情况下，很少有人去考虑去作改进，和追求更好。Apple 的很多设计改进并不一定完美，但他们会接着不停往下改。

![MacBook Pro asymmetrical fan blades](http://www.hi-id.com/atcl/2018/MacBook-Pro-Fans-201803.jpg)

在 2012 年更新 MacBook Pro 的视网膜屏版上，Apple 对散热结构作了很大的改进设计，在掌托两侧的底部加了设计很酷的长条进风口，隐蔽且不夸张，但细看斜向进风口，加上 Unibody 工艺带来的厚度，让 MacBook Pro 从视觉上显得很强壮，事实也的确增大了强度（[官方视频介绍](https://youtu.be/mWX2S3c6cS0?t=4m)），而隐藏在转轴上的出风口（屏幕打开，出风口开启，很自然的逻辑），和 Unibody 壳体融为了一体（[见 iFixit 照片](https://d3nevzfk7ii3be.cloudfront.net/igi/1hlMKPXTFf32klKi)），而不像此前的 MacBook Pro 是和转轴为一体的（塑料件，[见 iFixit 照片](https://d3nevzfk7ii3be.cloudfront.net/igi/OF4CQUiPn2xXy6EL)）。

2012 年带视网膜屏的 MacBook Pro 还对内部的风扇作了设计，将风扇的扇叶进行非对称排列，可以降低风扇的噪音，因为非对阵带来了变动的声波频率。而到了 2016 年版的 15 吋的 MacBook Pro，Apple 又对这个风扇作了设计改进，仍然维持原先的不对称排列，但增加了扇叶，大小相间进行排列（分离式扇叶设计），来增强气流从而提高散热效率。

在 Apple 的产品中，这些“无关紧要”的细节设计改进还有很多，我们研究这些细节并不是为了直接借鉴什么，而是为了激励自己，时不时问自己，是不是足够好了？是不是所有的可能性都想到了？……

![Good Fucking Design Advice](http://www.hi-id.com/atcl/2018/Good-Fucking-Design-Advice-201803.jpg)

在《纽约客》 2015 年对 Jony Ive 的那篇《[The Shape of Things to Come](https://www.newyorker.com/magazine/2015/02/23/shape-things-come)》的报道中，提到了 Jony Ive 的办公室中靠在墙上有两幅海报，一幅是 Banksy 的黑猩猩脸的英国女王像，另外一幅就是来自 Brian Buirge 和 Jason Bacher 的海报《[Good Fucking Design Advice](https://goodfuckingdesignadvice.com/)》，海报以“Believe in your fucking self. Stay up all fucking night.”开头，以“Think about all the fucking possibilities.”结尾，这也是很好的激励。


# HomePod 的设计

HomePod 上市以来受到的评价与 Apple 的宣传相一致，将居家的音乐收听体验提升到了一个全新层级。与 Amazon Echo 和 Google Home 定位不一样，HomePod 首先强调的是音乐，在目前，它的智能与其说体现在语音助手上——发展落后于竞争对手的 Siri，倒不如说通过设备的工具性能表现而出，即对 HomePod 所处的声学环境自动进行分析并制定播放方案，得益于其圆柱形设计及 7 个高音喇叭的环形排列。HomePod 的出色音质除来自独特设计的低高音喇叭外，还依赖于 Apple 的 A8 芯片的实时处理。HomePod 小巧的体型及超出预感的重量，在用户上手的一刻，为其带来一份扎实和可信赖之感。触摸交互操作简单、有限、易记，而继承之 AirPods 的适配体验，“快速又神奇”，已是一个标杆性的设计。

![HomePod](http://www.hi-id.com/atcl/2018/HomePod-Title-201802.jpg)

HomePod 的设计在 Apple 的网站上[只有简短的介绍](https://www.apple.com/homepod/)，以“Beautiful design with a purpose”（有目的的漂亮设计）为小标题，如果说追求词藻且意指暧昧的标题文字并无什么内容含量，那么在具体的介绍中总能传递出一些设计的主要特征。在这个简短介绍中提及了两个设计特征：一个是小于 7 英寸的高度，可以让 HomePod 可以放置家中任何地方；另外一个就是无缝网布，既是为了审美——任何角度都非常漂亮，也是为了声学——它对音乐来说是透明的无阻挡的。

![Echo 2 Google Home Sonos HomePod](http://www.hi-id.com/atcl/2018/Echo2-Google-Home-Sonos-HomePod-201802.jpg)

无缝是 HomePod 最为显著的设计特征，一下让它与其他同类产品的设计区别而开，比如 Sony 的智能音箱 LF-S50G，以及 Amazon Echo，Google Home 以及 Sonos One。如《Apple “无缝”设计之历程》一文所言，无缝不仅仅是指字面意义上的，诸如装配缝隙或者制造加工留下的痕迹，无缝更重要的意义在于从现象层面去探讨，用户看到 Amazon Echo，Google Home，Sonos 与 HomePod，并不会直接地注意到哪个有缝隙哪个无缝隙，而是一个整体形象，这个整体形象的塑造——是否具有一体性——需要无缝的支撑。

Amazon Echo 2 从纯工具性和设备化的第一代 Echo 设计上作出改进，减低了高度，去掉了顶部的一条接缝，并且增加了具有不同材质选择的罩壳，诸如木纹和布纹，使其能够更加融入家居环境也能削弱它的工具感，Amazon 采取的设计和处理手段仍是程式化，即普遍的手段，并没有在工艺上作出突破，也没有在整体形象的塑造上有更进一层的追求，加上一圈 LED 灯效的设计以及顶部物理按键及直接安置的麦克风，Amazon Echo 2 仍然是一个工具和设备。Google Home 则直白地表达了对识别性的追求，所以设计了一个独特的几何形态，而斜面的设计一方面指示着喇叭的朝向，一方面也能方便手指交互操作（尽管对于一个智能语音设备来说并非主要），从这一点来说这个几何形态的设计并非过于任意化。但是从 [Google Home 的拆解图](https://www.ifixit.com/Teardown/Google+Home+Teardown/72684)中可以看出，尤其是上半部分的结构布置，浪费了的空腔结构，它并不具备很强的内外一体性，作为形态导向的设计，Google 并没有在构造的内外一体性上有更多的追求。而这样的几何形态设计就必然会带来几条接缝，在破坏产品的一体性，Google 通过对下部罩壳的材料和颜色的设计来弱化这一点，但灰色以外的罩壳设计总是很突兀，加上独特的几何形态，让这个产品过于前台化，与其产品“隐在”的内涵特征相背。Sonos One 则是从传统的音箱设计上进化而来，剔除了 Sonos Play:1 顶部的物理按键设计，以及复杂的顶面内凹形态设计，替换为触摸式设计，但是触摸按键的符号仍是刻印在表面，加上一组环形麦克风排列，仍倾向于旧时代的工具化设计，尽管设计和工艺都很精致。

HomePod 在设计上则给人一种符合时代之感，工具感消失，形态符号化，内外一体又不失识别性。视觉能及就只有两个形态要素，一体化的网布和顶部的玻璃，网格为斜纹，不像 Sonos One 那样的罩壳网格设计很容易在传播的图片上出现摩尔纹（如上图所示）。网布要做到无缝并不难，因为现今有各种 3D 针织以及其他技术的支持，但是要将网布应用到产品上，并且让产品从现象感知上达到无缝就并非易事。通常印象中，以及绝大多数产品上，网布就像是给产品穿一层外衣一样，很难和产品有合二为一，由于软性的材质又较难处理，很多设计是将网布粘贴在一个塑胶的罩壳上再套到产品之上，网布在这些设计中更像是发挥它的装饰性，这势必导致无法实现现象认知上的无缝，即没有一体感。HomePod 试图让网布形成的形态成为产品的形式代言，而不是里面的塑料体或者喇叭，对用户来说，这个物品就是感知到的符号形象，以及这个形象指向的含义，而在工程结构中喇叭在哪或者麦克风在哪对用户没有意义，设计要塑造的符号形象往往要封闭起物品的工程特征。

![HomePod Structure](http://www.hi-id.com/atcl/2018/HomePod-Structure-201802.jpg)

HomePod 不像 [Google Home 那样](https://www.ifixit.com/Teardown/Google+Home+Teardown/72684)内部有很多冗余的空间，如果说 Google 是先有设计师的形态然后工程师来布置结构，是否 HomePod 是先有工程的内部结构然后设计师来包裹一个外壳？不管先后顺序，在最终的产品上我们看到的是 HomePod 在结构和形态上有着内外一体性，也能够发现设计师在形态上的自我追求，以及相互牵制形成的平衡状态，比如侧面轮廓线的形态不只是来自于内部结构件，或者设计师的偏好，它与整体的几何形态，与网布纹理和大小所形成的视觉效果，及相应的工艺，都有相互的制衡，当然，这种结果是靠不断的尝试得到的。

![HomePod Bottom](http://www.hi-id.com/atcl/2018/HomePod-Bottom-iFixit-201802.jpg)\
![HomePod Bottom](http://www.hi-id.com/atcl/2018/HomePod-Bottom-2-iFixit-201802.jpg)

​尽管用户看到的 HomePod 总是关于网布和顶部的球面触摸玻璃盖板，但对于设计的整体性来说，它的底部也至关重要，不能因为隐蔽而在这泄了气。即使翻过 HomePod 来仔细查看的人数占比小到可以忽略不计，它仍关系到每个人的使用体验，比如搬动和放置等活动。HomePod 的底部使用了一个完整的碗形硅胶缓冲底座，弧面的设计具有一定的厚度，结合封闭的碗底形态，带来了很好的整体感。标签看上去应是通过激光雕刻在弧面上（并不简单），而底部的 Logo 像是《Apple 的 Logo 设计》中介绍的 iPhone 硅胶保护壳的 Logo 制作工艺。这个硅胶碗底与机身相连并不只靠胶水，除了胶水的封闭外，还有一圈 7 个塑胶卡扣，那么这个硅胶碗底就是将硅胶和塑胶通过 Co-Molding（Overmolding） 工艺装在一起的，也同 iPhone 硅胶保护壳一样。（上图来自于 [iFixit](https://www.ifixit.com/Teardown/HomePod++Teardown/103133) 及其[拆解视频](https://www.youtube.com/watch?v=ArH41WyUt28)）

![HomePod Cable](http://www.hi-id.com/atcl/2018/HomePod-Cable-iFixit-201802.jpg)

HomePod 的电源线按一些评测视频所说，它外层材质与机身的网布材质一样，维持了整体性，其他同类产品通常为黑色塑胶，它们通常并不在意这些细节设计，而这些细节是至关重要的。HomePod 的电源线通过一个塑胶环片与机身相连，这个环片有和机身一样的弧度，而两条边的圆角也塑造处一定的厚度感，似乎与硅胶碗底有相承关系。实际上电源线和塑胶环片是装配在一起的，整条电源线用大力是可以拔出的（但不建议拔出），可以看 [9to5mac.com 的视频](https://9to5mac.com/2018/02/10/remove-homepod-power-cable-video/)。HomePod 的电源线设计的考究之处并不只是这个细节，它位置的安排同样是有意思之处。本文提到的几个音箱，除了 Amazon Echo 2 之外，其他如 Google Home，Sonos One 和 Sony LF-S50G 的电源线都是插在机身的底部，在机身侧面与底面的交接边缘上挖出一个孔位，而相应的电源线的插头上作一些设计，在电源线插上机身后，可以让两个形态有一定的融合，比如弧面的一致。但是这种看似周全的设计其实是南辕北辙，而且处理地非常粗暴，破坏了产品的整体感，以一种躲藏的方式设法隐匿不加深思的设计。Google Home 的电源线是扁平的，设计师的想法应该和 Google 给出的官方图一样，可以完美地贴着桌面，让电源线不再干扰用户的环境，但如果去搜索用户发的照片，就会发现完全是两回事。如果去翻看用户贴出的 HomePod 的照片，电源线在里面并不完美，通常也是歪歪扭扭，隐藏不了，但比起其他几个音箱的电源线设计来说，HomePod 的设计更加顺畅，尤其电源线通过桌子或台子的边缘伸上来，而且不容易被牵绊。而最重要的是，它维持住了产品的整体性，以直白和看似粗暴的方式，通过细致的处理，优雅地解决了问题。

![HomePod Top Touch Panel](http://www.hi-id.com/atcl/2018/HomePod-Top-Touch-Panel-201802.jpg)

在 HomePod 发布时，Apple 在其网站上介绍顶部可触摸操作时，说到“在 Siri 听你说话时，顶部会为你说的每个词展示 LED 波形”，虽然已经说了是 LED 波形，但是很多人仍认为它是一块屏幕来显示，比如是通过 OLED 屏幕，那么白色面板的效果是如何实现呢？带来这种错觉有几方面的因素：一个就是音量的增减符号“+”和“−”是随着不同场景出现或消失，而且它与中间的动态图案不是同时出现（也可以同时出现）；最重要的一个原因是波形的显示色彩丰富，动画的效果与 iOS 中的 Siri 很相似，而通常人们印象中的 LED 动态效果就像 Google Home 顶部的 LED 环形阵列形成的跑马灯一样。

![HomePod LED Waveform](http://www.hi-id.com/atcl/2018/HomePod-LED-Waveform-201802.jpg)

HomePod 的触摸操作板上并没有使用屏幕，而是使用了 LED，“+”和“−”各自有单独一片，而波形图则是通过如上图所示 19 粒 RGB LED 灯片，通过德州仪器的 TLC 5971 来驱动（[见 iFixit 介绍](https://www.ifixit.com/Teardown/HomePod++Teardown/103133)），可控制 RGB 每一粒小灯珠来形成波纹，并且通过扩散膜（LED Diffuser）来形成雾化扩散的动态效果，而且相对应的玻璃盖板上也有一层扩散膜。形成的波纹图案和 iOS 上的 Siri 的视觉元素很相似，会让人误以为是通过屏幕来实现图案的显示的，所以 HomePod 通过软件和设计，用了简单有效的硬件来实现了所需的最终效果。（上图来自于 [iFixit](https://www.ifixit.com/Teardown/HomePod++Teardown/103133) 及其[拆解视频](https://www.youtube.com/watch?v=ArH41WyUt28)）

![HomePod Peel Off iFixit](http://www.hi-id.com/atcl/2018/HomePod-Peel-Off-iFixit-201802.jpg)

无缝网布包裹下的 HomePod 机身有一个一体式的塑胶壳体机身，从[ iFixit 的拆解](https://www.ifixit.com/Teardown/HomePod++Teardown/103133)中可以看到这个塑胶壳体顶部是通过超声波焊接到柱身上的（底部和柱身应是一起注塑而出），和此前使用了超声焊接工艺的 EarPods 和 AirPods 一样，装好配件然后来焊住塑胶壳体，对于声学相关的产品来说，封闭的腔体以及一体化的结构是非常重要的。

HomePod 的塑胶壳体，或者说内胆，它的一体性是关于功能的，壳体上很粗的合模线就是很好的说明，那么对于消费者来说，HomePod 就是关于无缝网布形成的形态，而 Apple 要做到的就是怎样让这个无缝网布形成的形态去代表这这个产品，而不是将网布认为是袖套般的罩壳。

![HomePod Fabric Peel Off](http://www.hi-id.com/atcl/2018/HomePod-Fabric-Peel-Off-2-iFixit-201802.jpg)

首先须在结构上将网布锁定机身上，如果在物理上都无法让网布来紧紧裹住机身，现象感知上的整体性就无从谈起。如 [iFixit 的拆解](https://www.ifixit.com/Teardown/HomePod++Teardown/103133)中可以看到，网布牢牢地固定在机身上之后，再用上端的触摸显示组件，以及下端的封口和缓冲构件封住了网布两端的开口，而且两端的开口埋很深，比如上端并非是用玻璃盖板的封住，而是用玻璃盖板下的 LED 显示组件，所以无论如何，这个网布的开启口只是留给制造的，对用户来说它可以说是不存在的。网布下端通过胶水粘死在机身上，而上部则由收口的拉绳经缠绕由螺钉固定在机身上，此处结构的巧妙是留给装配和生产的，而不是用户。

![HomePod Fabric](http://www.hi-id.com/atcl/2018/HomePod-Fabric-Mesh-iFixit-201802.jpg)

HomePod 的网布有两层，其中内层为衬底，除了阻挡用户看到塑胶客体外，应该也有助于包裹和摩擦。而最重要的 3D 纺织的网布其实有三层，在 [iFixit 的拆解](https://www.ifixit.com/Teardown/HomePod++Teardown/103133)中有详细的介绍及大图展示，上下为两层为网状，中间有一层线圈织成的夹心层，iFixit 说这样的机构让声波透明无发射，而又能阻挡灰尘。从材料来看，中间的线圈层应亦能够起到增加网布的刚性性能，如果有很高的弹性，那么这层网布就是一层封套了，而不是上面说的它可以塑造整个产品的认知形象，由于这三层需要合为一体，所以编制就变得复杂了。有厚度有层次的网布在视觉效果上表现的更明显，比如与 Amazon Echo 2 相比较，HomePod 的网布形态在不同的距离不同的光影下都有很丰富的效果。

![HomePod Mesh Drawing](http://www.hi-id.com/atcl/2018/HomePod-Mesh-Drawing-201802.jpg)

那么这层网布的网格是怎样的设计，或者说它是怎样绘制而成的？

网格的成型，尤其这些形态上有渐变的几何形态，通常会想到使用算法，比如通过 Grasshopper 等软件来绘制，但是无论使用怎样的方式，首先需要去发掘生成的机制，如果确定了生成机制，在 Grasshopper 或者其它基于算法的成型软件上，只要控制不同的参数输入即可。而 HomePod 的网布网格无需使用到算法成型，因为它是通过简单的圆周阵列而来，只需要知道其中一条线是如何成型几何。

![HomePod Mesh Drawing](http://www.hi-id.com/atcl/2018/HomePod-Mesh-Drawing-2-201802.jpg)

是否可以投影？但任何时候，在圆柱体或类似形态上通过投影来得到一个曲线或形态需要慎重，通常是不可取的。即使是先将圆柱面展开成矩形平面（Rhino 中的 UnrollSrf），再在矩形平面上作线条和图案，再包裹到原先的圆柱面上（Rhino 中的 FlowAlongSrf），也因为算法问题，会出现线和面质量的瑕疵，而且这个方法通常只适用于圆柱面等可展开面上，而如 HomePod 上下两端的曲面就无法使用。

如果从另一角度来思考，问题就变得很简单了，就是通过扭曲（Twist）来完成，绘制好一条基础线条，然后沿着柱体轴线作扭曲，那么问题关键在于怎么确定这条基础线条，以及确定曲线扭转的角度。

我们可以通过 Apple 的官方图片来获取这些数据。

![HomePod Mesh Drawing](http://www.hi-id.com/atcl/2018/HomePod-Mesh-Drawing-3-201802.jpg)

通过官方图片可以数出网格由 128 组即 256 根线条编制而成，一组两条具有镜像关系的线在顶部相交，一条顺时针方向扭曲，另外一条逆时针方向扭曲，在顶部形成的角度约等于 50°。通过前视图，如上图右所示，可以计算出线条的扭曲角度，一条假设的线 a，扭曲后成为了 a’，从 a 到 a’ 可以数出经过了 28 个间隔，那么扭曲的角度就是 (28 / 128) × 360° = 78.75°，我们就可以根据这些数据来绘制出网格图形。

![HomePod Mesh Drawing](http://www.hi-id.com/atcl/2018/HomePod-Mesh-Drawing-4-201802.jpg)

如上图所示，用 15° 夹角的蓝色直线线在柱身上投射出一条交线，为什么是 15°，因为经过尝试后发现用此角度形成的曲线经扭曲后可以达到接近 25° 的夹角，即满足上面说的 50° 夹角的要求。在这里我们柱身先只用半边形态，可以后续镜像完成。

![HomePod Mesh Drawing](http://www.hi-id.com/atcl/2018/HomePod-Mesh-Drawing-5-201802.jpg)

对投影形成的蓝色交线进行扭曲（Twist）操作，以 Rhino 为例，注意扭曲轴需要是柱身全长，如上图左所示的红线，Infinite 选项选 Yes，控制扭曲后的另外一端达到 78.75° 处，然后镜像柱身下半部分，接着镜像整条扭曲线，成为一组，接下来只需要将这组扭曲线阵列 128 个即可。

![HomePod Mesh Drawing](http://www.hi-id.com/atcl/2018/HomePod-Mesh-Drawing-6-201802.jpg)

阵列之后的效果。

这是我们逆向去绘制的结果，那么在设计时，诸如 50°，128 组，78° 之类的数字是如何确定，最简单方法就是不断尝试来比较，而 Apple 似乎也是这样作的，因为：

![HomePod Mesh](http://www.hi-id.com/atcl/2018/HomePod-Mesh-Before-201802.jpg)

在 HomePod 官方页面[第一版](https://web.archive.org/web/20180111015623/https://www.apple.com/homepod)（archive.org 存档）中有一张技术参数的图，即上图，绘制的网格与其他图形不一致，目前官方图片以及上市销售版的 HomePod 的网布的网格都是 128 组（即共 256 条线），而上图是 100 组（200 条线），而且一组两条线在顶端形成的夹角将近有 80°。

而且目前上市 HomePod 的外包装使用的图案都是上面这个与实际产品不符的图片，猜测这个版本的网格是尝试方案中一个，毕竟这个图案如果由平面设计自己来绘制是很困难的，尤其是前视图。

![HomePod Mesh Patent](http://www.hi-id.com/atcl/2018/HomePod-Mesh-HKPatent-201802.jpg)

而 Apple 提交给香港知识产权署的 HomePod 外观专利，里面的图案网格数量更多，有 144 组（288 条线）。

![Apple HomePod](http://www.hi-id.com/atcl/2017/Apple-HomePod-Zoom-Side.jpg)

最终 Apple 选定的是 128 组版本的网布。如果仅是通过图片上的比较，很难辨别多少数目的网格数更合适，不过网格的夹角，产品上的版本（约 50°）比如包装上的版本（约 80°）更优秀，有渐变的层次，而且符合形态扩张和收缩的趋势，更具动态。

像 HomePod 无缝网布这样的设计也只有 Apple 想到做和能做到，这是 Apple 这么多年在设计上积累和发展的结果。Apple 在产品的设计和制造上作出了突破和革新，当然是通过投入大量的资源和研发精力，大到引起产业变革的创新，小到用户都无暇顾及的一处处细节工艺，这些突破和革新经过一两年或者更短的时间，都能影响或者说惠及整个业界，在竞争激烈的领域尤其快速，比如手机，像消费品上的 CNC 加工或者是 Unibody 工艺等等，一波接着一波。Apple 作为一波接一波的浪潮发起者，蓄积了很多优势，并且持续加固并作为屏障，通过资金和精力的持续投入，而在一些缺少竞争的产品上，似乎预见不到后来者身影的出现，像 Apple Watch，或者是 AirPods 这些产品，还包括像 HomePod 上一处又一处的细节设计。如果循着 Apple 的道路前进，那么它就像一位极有天赋、极努力有极有钱的竞争对手，或许在一两处能追上或战胜，如想全面追赶则像是要炸开一道道保险库铁门一样。但是幸运的是，世界异彩纷呈，并非只有一条路，好的产品和设计并非处处都要高精尖，就像 HomePod 用 LED 就实现了 Siri 的动态波形。


# 解决方案、设计、好设计，Apple UI 设计中的 Tuning

iPhone X 的全面屏的设计让十年来“无论在哪都能带你回家”的 Home 键退役，代之以在屏幕底部显示的一个指示条。与 Home 键类似，无论何时，从底部边缘即指示条区域向上轻扫即可返回主屏幕，用手势操作替代了物理的按压；同时源自指示条区域的手势操作还能实现两项常用操作，一个进入多任务应用切换界面，通过从指示条区域向上轻扫并停顿一下来实现，在指示条区域沿底部左右轻扫则能完成应用的快速切换。

![iPhone X Home Indicator](http://www.hi-id.com/atcl/2017/iPhone-X-Home-Indicator-201711.jpg)

Apple 在其 Youtube 频道上发布了一个 iPhone X [操作指引视频](https://www.youtube.com/watch?v=cJZoTqtwGzY)，可以看到这三个功能的手势操作，但这个指引视频里的操作看起来有点教科书化，比如在应用的快速切换操作中，沿着指示条左右轻扫这个动作看上去过于规矩，而不像在 iPhone X 上市前流出的一个视频中的操作那样吸引人。这个[上市前流出视频](https://i.imgur.com/SIHhP99.gifv)中的操作略显浮夸，用单手来完成应用的快速切换，而且手指的活动路劲是弧线的，不像官方指引中是直线滑动，所以能够看到更多的场景变换的动画过程，每个应用的界面有放大和缩小的过程，而且似乎可以感受到，只要手指向上移动并停顿，就可以光滑连续地过渡到多任务应用的切换画面。

实际上，上述的三个操作，返回主屏幕、进入多任务应用切换界面和应用间快速切换，可以看作是同一起点的三条分支，起始有一条共同的路段，然后可以光滑连续地过渡到三个分支，这是 iPhone X 上屏幕手势操作与物理按压的 Home 键操作在认知和操作习惯上最显著的区别，物理按压的 Home 键不同的操作是隔离的，而屏幕手势的操作不具有物理上的隔离，而是靠交互设计背后的阈值来作划分的，通过不同表现的参数组合比如触摸的距离、时间和强度等，来唤醒不同的功能，而对这些参数或阈值的确定将是决定交互设计是否优秀的关键。

![iPhone X Home Transition](http://www.hi-id.com/atcl/2017/iPhone-X-Home-Transition-201711.jpg)

上图是 iPhone X 上返回主屏幕操作的过程图，界面的变换过程主要有三支动态路径叠加综合完成：第一是壁纸的动态变换过程；第二是主屏幕从模糊到清晰；第三是前景的动态变换过程，分为两个阶段，第一阶段则是当前应用界面从大到小的变化，而且这个变化并不是线性的，缩小的运动轨迹和速度不是线性的，缩略图的变化也非线性的，然后缩略图淡出，而此应用对应的图标渐入直至完全替代，然后非线性过渡到最终状态。上图演示中的应用图标位于主屏幕最左上角的，主屏幕上不同位置有不同的变换路径和效果。

iOS 用户界面中的丰富的动态变换过程到处都是，从 2007 年的第一代 iPhone 开始，经过了 10 年的发展变得更大庞大和全面。有部分人可能会认为这些动态效果影响了效率，通过在 iOS 设置中“辅助功能”项下“减弱动态效果”一栏来选择关闭，但是它们是 Apple 用户界面设计中非常重要的一部分内容，对于大多数人来说，并不会去主动辨认这些零点几秒之内的动画，但是能够意识到因这些动态变换效果带来的体验，顺畅、丰富、自然。

### 解决方案、设计、好设计

设计这个词通常会有两种用法，一种是将其作为行为的结果来论，它是中性的，不论好和坏，这些物品上的“设计”都能指向设计师的思考和操作，也就是说，我们接触到的所有物品都含有“设计”，它们是设计师和制作者思考和操作的结果，正因为不论好坏都是设计，我们会有“这个设计好”和“这个设计差”的评价。

现实中，能被我们用“这个设计好”来称赞和“这个设计差”来鄙视的东西并不多，我们身边绝大多数的物品都是一般化的东西，让我们无法提起精神来谈论它们的设计。不可否认这些绝大多数的物品都是经过设计的，也有设计师的思考和选择，这些设计都是安全的，不能鄙视它，否则就是煞有介事了，如果你带着“设计”这个问号逼近它们，它们会躲到一边。

我们不会去谈论这些一般化的绝大多数物品的设计，它们是不值得品读的。

所以，设计这个词的另外一种用法，它指的是那些我们能够用来谈论和品读的属性，因为这种属性，它不再是一个中性的谁都具有的属性。那么我们不再称那些一般化的绝大多数的物品为设计时，称它们什么呢？称其为“解决方案”。

如果站在设计师的视角来看，更能体会出“解决方案”和“设计”的区别，因为设计师的工作总是在面临一次次的挑战，就是如何让“解决方案”变成“设计”，他也就更容易区别出某个东西是可以称作为“设计”，还是仅仅是另外一种“解决方案”而已。

![Solution or Design](http://www.hi-id.com/atcl/2017/Solution-Design-201711.png)

当面对一个问题，无论是工程师还是设计师，往往很快就有一些想法，以及一些解决方案，不仅是工程师和设计师，即使是科学家或其他任何专业人员，面对一个问题从来不会是说：“好，让我们从最原始的原理开始。”解决方案往往可以来得很快，当要让这些解决方案成为完美的答案，对于设计师来说，就像让解决方案成为设计，需要为其付出努力，不断地进行推敲和迭代。

对设计师来说，给出多少数量的解决方案从来不是什么问题，给出多少数量的看似不错又有点特点的解决方案也从来不是什么问题，但是要让这些解决方案变成一个设计并非易事。设计师的工作通常是两部分，一是创新的解决方案，二是经过详尽分析比较达到最终唯一的选择，它具有不言自明的说服力。要让解决方案变成设计，需要在这两部分的具体工作中去追求，这两部分的工作是相互交织的，创新自然重要，但是通过对一堆解决方案的比较和辨析，去取得最终具有说服力的最终唯一选择，决定着解决方案是否能够转变为设计的关键。通过比较和辨析去取得最终唯一选择，是一个“[Say](https://www.google.com/search?newwindow=1\&hl=en\&source=hp\&q=steve+jobs+say+no) [No](https://www.google.com/search?newwindow=1\&hl=en\&source=hp\&q=jony+ive+say+no)”的过程，而且要让每一个“说不”具有足够的理由，这样才能让最终的选择具有说服力。

从解决方案到设计要有一个质的跨越，而从一个设计到一个好设计，之间的转化可能没有一个质变的过程，但是它就像画龙点睛，或者给一个物品蒙罩一层光韵一样，有一个艺术般的转变，或许从物理上来说是不值一提的转化，但是对人的感知来说，就有一个灵气尽显的提升。

从一个设计转变到一个好设计，有很多路径，调校（Tuning）是其中之一。

调校的特点在于它并非是机械化地来微调一些参数值，它并非是一个完全理性的过程，它虽然依赖于一些参数，但是设计师的主观判断和取舍仍占据重要的地位，而公式和参数等，只是作为设计师的一个工具。

### Apple UI 设计中的 Tuning

从早期的 Lisa 和 Macintosh 的图形化用户界面开始，Apple 带领了几次人机交互界面设计的革命，从 Mac 上的鼠标和图形界面，到多点触摸屏和手指直接触摸操作，革命并非只是来自于技术的革新和设备的发明，影响了整个产业，而是软硬件的结合带来的新的交互方式，而且设计的如此出色和自然，直接影响到每一位具体的用户，给他带来了愉悦，而且还改变了他的认知。

像 iPhone X 中自然顺畅的手势操作，并非突然出现，包括那些不会注意到但又能体验到的细节设计，也是经过了很长的时间一步步发展而来的。

#### Mac OS X 的 Dock 及图标放大效果

![OS X Aqua](http://www.hi-id.com/atcl/2017/OS-X-Aqua-201711.jpg)

2000 年 Apple 在 San Francisco 的 Macworld 上发布了 Mac OS X，消费者版的 Mac OS X 要到第二年才上市，Macworld 2000 上发生可一些有趣的事情，尤其是我们现在回过头去看这个当年的[发布会视频](https://www.youtube.com/watch?v=uGMQLfi0kGc)（[优酷链接](http://v.youku.com/v_show/id_XODg3MTQ1MjU2.html)）：回归 Apple 的 Steve Jobs 宣布出任正式 CEO 而不再是实习，Keynote 使用的字体是手写体，Phil Schiller 演示 Quake 3 时死机，“[It’s pretty awesome when it works](https://www.youtube.com/watch?v=GCZgqoQSGu4)”这句话就是来自这一刻（链接视频是 Steve Jobs 发布会演示失败场景的集合）。

当 Steve Jobs 开始介绍 OS X 的用户界面即 Aqua 时，先以 1984 年的原始 Macintosh 的图形用户界面以及跟随者 Windows 作了一下铺垫，但接着介绍 Aqua 时却是从水晶效果的按钮开始，Steve Jobs 在台上认真又自豪地讲怎样从最原始的元素开始，用整个月来设计按钮该是怎样，滚动条和滑条该是如何，但是台下的反应却是寥寥的笑声，似乎是“就这？”。[Ars Technica](https://arstechnica.com/gadgets/2000/01/macos-x-gui/5/) 上有 Aqua 的介绍，它可以看作是 Steve Jobs 回归后 Apple 的用户界面设计发展的起始点。

在 Phil Schiller 演示失败后，Steve Jobs 展示了 Mac OS X 上最酷的两项设计，Dock 和 Genie（OS X 界面设计的特征就是 Aqua、Dock 和 Genie 这三项）。Dock 就是屏幕底部可以放置应用、文件、网页和视频等图标并且能够动态适应的快捷栏，放入图标越多 Dock 就向两边扩张，而且引入了 Magnification 放大效果，当鼠标滑过图标，图标就有一个动态流畅的放大效果。而 Genie 则是窗口的动态变换效果，当窗口缩小到 Dock 或者从 Dock 栏放大，有一个非常有意思（Apple 称其为“funky”）的动画效果，在发布会上 Steve Jobs 不厌其烦的展示，在前面介绍 OS X 的锁定到相应窗口的对话框时也有窗口的动态效果设计。这两项以及其他一些 OS X 用户界面设计的特征在现在的 Mac OS 上仍然保留着，OS X 的 Dock 和 Genie 等这些动态界面设计来自同一个设计师。

在 Walter Isaacson 写的《Steve Jobs》书中（第 28 章）写到，Steve Jobs 收到一位年轻人的 Email 要应聘图形界面设计师（1998 年），应聘者很紧张，所以面试不成功，这位沮丧的设计师坐在大厅等 Steve Jobs 出来，问他是否可以看一下他的一些创意和设计，用 Adobe Director 作的 Demo，就是在屏幕下方一个可动态适应的 Dock 栏，而且有一个随着鼠标移动的放大效果，Steve Jobs 当场就雇佣他了，这位设计师就是 Bas Ording，不只是设计了很多 Mac OS 的富有特色的交互设计，还包括促成 iPhone 诞生的列表滚动和回弹效果，以及很多 iOS 上的出色交互设计。由此也可以看到 Dock 图标放大这个设计从诞生到仍在使用的今天已经有 20 年了。

![Mac OS X Dock Magnification](http://www.hi-id.com/atcl/2017/Mac-OS-X-Dock-Magnification-201711.jpg)

对于需要在 Dock 栏放置多个图标的用户，以及考虑到十多年前的屏幕大小和显示精度，Dock 栏的放大效果是非常有效的一个视觉增强功能。对于像放大效果这样的交互设计，并非单纯源自于功能的需求，它也不像技术革新那样具有重大意义，或许人们会称之为增强了审美效果，用现在的语言来说是带来了丰富的体验，随着时代的发展，它的重要性将被越来越多的人认识到。

“随着鼠标的移动图标动态地变化”这只是一个 Idea，或者是一个创新的解决方案，还不能成为设计，要成为设计，就得考虑它具体是怎样变化。鼠标移到哪个图标，这个图标就按设定值放大，然后两边的图标以小一级的放大倍数来放大，离鼠标位置越远放大的倍数越小？

但问题是如果按上面描述的方式来实现这个放大的效果，它将是非常机械的，线性的或者是接近线性的，而 Apple 的交互设计，从 Mac OS X 到现在的 iPhone X 最大的特征就是**反线性**，一个机械的动态效果将会是适得其反的。Bas Ording 在这个设计中引入了几个参数和函数，为了达到更加连续和顺畅的动态效果。

首先是在鼠标两侧递减的放大倍数是连续的，而不是一级一级的，如果你把鼠标放在某一图标的中间，那么左侧和右侧的图标放大倍数是一样的，如果鼠标是放在图标某一侧而非中心的位置，那么在这个图标两侧，里鼠标越近的图标放大倍数越大。然后引入两个可变动的参数，即最大放大的倍数是靠放大后的高度（H）来决定，放大影响的范围是靠鼠标两侧的宽度（W）来决定。

![Mac OS X Dock Magnification](http://www.hi-id.com/atcl/2017/Mac-OS-X-Dock-Magnification-2-201711.jpg)

在这个设计（专利 [US7434177](https://www.google.com/patents/US7434177) 所示）中，图标的设计是宽度可以不等，即有宽窄之分，所以图标的宽度和位置靠两边离鼠标的距离 d1 和 d2 来确定。当原始高度 h 和放大后的高度 H，以及影响范围的宽度 W 确认之后，那么放大后的在宽度上的增量 S 就可以确认，本设计使用的函数：S=((H−h)÷2)÷sine(π×(h÷2)÷(W×2))，两段各增加 S，也就是放大后的宽度是 2W+2S，S 与高度增长量（H−h）成线性正比关系，但是与影响宽度 W 是非线性的正比关系，而是引入了一个正弦函数，以原始高度 h 和影响宽度 W 指比形成的正弦函数，带来了一个非线性增大的结果，原始高度 h 越大，S 就相对越小，因为原始图标够大需要的放大倍数不需要太大。

同样放大后的图标两侧距离鼠标的距离的增加量也是通过正弦函数来与得到结果：d1′=S×sine(π÷2×d1÷W) 和 d2′=S×sine(π÷2×d2÷W)，d1′ 和 d2′ 在上图（引用自 US7434177 专利图）标示有误，通过公式来看 d1′ 和 d2′ 是增量，即放大后图标两侧离鼠标的距离为 d1+d1′ 和 d2+d2’，d1′ 和 d2′ 指来自于对一侧宽度总增量 S 的分配，通过以放大前的与鼠标距离 d1（或 d2） 与影响宽度 W 的比值作为正弦函数的因子，正弦函数值的范围就是从 0 到 1，离鼠标越近，也就是 d1（或 d2）值越小，正弦函数的特征就是因子数值越小变化率越大（在 0 到 π/2 之间），也就是离鼠标越近，增大的倍数越大。

最终增大的比例因子为：1+(d2′−d1′)÷(d2−d1)。

所以这一设计的要点有两项，一是以图标离开鼠标的距离来确定放大倍数，也就是鼠标作任何大小的移动，Dock 栏都有变动，如果鼠标在某一个图标内移动不影响旁边图标的大小，这个设计就一下子变得死板了；第二个是通过正弦函数来实现非线性的变化。

如上所示，通过参数和公式来完善设计，并非通过尝试来获得一个满意的结果，可以称之为“Tuning”（调校）。如前所述，Tuning 并非是完全客观和理性的，像这里使用到的参数和公式，并不是必然如此，而是设计师作出的选择，这种效果也可以用其他的参数和公式来实现，只不过在这个设计上 Apple 使用了设定参数的比值来作为正弦函数的因子来达到非线性的变换效果。

#### Mac OS X 的 Genie 效果

![Mac OS X Genie](http://www.hi-id.com/atcl/2017/Mac-OS-X-Genie-201711.jpg)

这就是 Steve Jobs 在 Macworld 2000 演示得乐此不彼的 Genie 动画效果，窗口缩小的默认效果是 Genie Effect ，另外还有一个 Scale Effect 供选择，Scale 效果就是单纯的缩小和放大，具有更高的执行效率，而 Genie 效果在缩小和放大之间有窗口有变形，而且变形的速度也是非线性的，动态的变换过程需要一些时间，而且连续的变形会让人感觉显得更慢。现在的 Mac OS 仍提供这两个选项，很多人喜欢 Genie 效果，也有很多人不喜欢。

![Mac OS X Genie](http://www.hi-id.com/atcl/2017/Mac-OS-X-Genie-2-201711.jpg)

上图是 Genie 效果中窗口轮廓的变化过程，来自[专利文档 US7362331](https://www.google.com/patents/US7362331)。这个设计的一个特点就是变形后窗口的外轮廓，当从 QR 为上边的四边形窗口变形移动到 S’T’ 为上边的四边形窗口（或图标）时，窗口的左右轮廓由直线变成了曲线，而这两条曲线在这为正弦曲线（当然它可以是其他曲线），来自函数 y=A sin(x) ，x 为图面垂直方向的距离，正弦曲线的范围定在 −π/2 和 +π/2 之间，y 为图面水平方向的距离，A 为振幅，从零到 SS’ 和 TT’ 的一半。所以当窗口当前位置确定，以及目标位置确定，左右两条曲线就能确定，窗口就沿着曲线向下缩小和移动。

![Mac OS X Genie](http://www.hi-id.com/atcl/2017/Mac-OS-X-Genie-3-201711.jpg)

这个设计的另一个特别之处，就是窗口在缩小变化过程中以怎样的速度进行了，它需要是非线性的，如果是匀速地向下移动和变化，那么就会显得很机械，非线性的运动就是在开始和结束的时候是缓慢的，而中间过程是快速的。如此前一图所示，窗口在数值方向上移动的距离是 SQ 线段，如何实现非线性的变化，这个设计引入了一个余弦函数。首先当移动变换的整体时间 T 确定后，可以将 T 划分为几等份，比如 8 等份，用 8 等份来等份分割一个半圆，在每一个分割点向下作垂线来分割直径，得到的分割距离就是从小到大再到小，用此分割线段比来划分 SQ 线段，就可以得到非线性的窗口移动变换过程。

同样，在这可以使用其他的函数或方法来实现非线性的变动，而上述方法聪明、简单、直观，虽然使用到了参数和公式，但参数和公式在这里不是原理和依据，而是一个解决问题的工具，而挑选恰好的参数和公式这种工具，就是设计中的 Tuning。

#### Cover Flow 和 iOS 上的 Safari 标签视图

![Cover Flow on iPhone](http://www.hi-id.com/atcl/2017/Cover-Flow-iPhone-1st-201711.jpg)

[Cover Flow](https://en.wikipedia.org/wiki/Cover_Flow) 指的就是用唱片封面组成的一串可动态移动的序列，最早在 iTunes 7.0 上应用，但是它的原始设计并非来自 Apple 自己。Cover Flow [最早的想法](https://web.archive.org/web/20050331055401/http://thetreehouseandthecave.blogspot.com/2004/12/dissatisfaction-sows-innovation.html)来自艺术家 Andrew Coulter Enright，而他的灵感却是来自于 Apple 的视频会议通话软件 iChat AV，即中间画面正视，两侧画面则为侧视（平行四边形）。一位独立的 Mac 开发者 Jonathan del Strother 将 Enright 的想法应用，然后 2006 年被 Apple 收购。除了 iTunes，Apple 还将 Cover Flow 应用到了 iPhone、iPod 以及 Mac OS 的 Finder 上，而后到 iTunes 11 以及 iOS 7 上 Cover Flow 就被去除了。

Cover Flow 被 Apple 收购后，在一些设计的细节上作了调整，如透视的角度，让显示更美观自然。

![iOS Safari Tab Screen](http://www.hi-id.com/atcl/2017/iOS-Safari-Tab-Screen-201711.jpg)

在 iOS 7 上 Cover Flow 被唱片墙（Album Wall，平铺的封面）给替代，而新的 Safari 的标签视图却有类似的设计应用，每个标签页变形堆叠在一起，形成了三维动态的视角效果，而且能够在有限的空间内直观地显示更多的信息。

在浏览器的标签页中使用这种方式的设计，最早出现在 2012 年 Google 的 Chrome Beta 版上，运行在当时的 Ice Cream Sandwich 版本的 Android 上（可以观看[这个视频](https://www.youtube.com/watch?v=jT3LNoJhWsw)）。当时 Chrome Beta 的标签栏堆叠原始状态并非有立体透视效果的，标签页整整齐齐的平贴叠加在一起，然后不同的标签页在竖直方向上一个个位置回退，可以看出不同的标签，直到向下滑动标签页，达到顶部（或底部）出现阻尼效果时，标签页向内倾斜，加上阴影的处理，形成立体透视的效果，此刻与后来的 Safari 标签视图相似。

那么 Safari 的标签视图有怎样的不同？通过在打开多个标签页的标签视图中上下滑动操作，会发现变换动画都是非线性的，不像 Chrome Beta 那样简单直接。Safari 的标签视图中每个标签的透视略有不同，越靠近屏幕下方透视角度越大，即看到标签页上内容越多（即看得越深），越靠近屏幕上面透视角度越小，越接近平视状，但越远离我们，并且还能与手机的姿态形成动态的三维关系，比如手机平放能看到的深度就浅，手机竖放能看到的标签就深，模拟对一个立体物的视知觉。

滑动 Safari 的标签视图看上去有点像踩水车，除了滑动外，单独的一个标签页在这组标签页序列里的位置可以重新排布，只要拖拽住标签页移动就行，标签页的拖拽移动也有动态的变换效果。

![iOS Safari Tab Screen](http://www.hi-id.com/atcl/2017/iOS-Safari-Tab-Screen-2-201711.jpg)

Safari 的标签视图模拟了 [Rolodex](https://en.wikipedia.org/wiki/Rolodex)（Apple 用了很多次的类比参照物），沿着具有一个滚动轴心的圆筒上排布。上图来自专利 US9804745，图左示意了标签页手动排布的动画，FIG. 2A 示意的是将标签页向下手动挪一个位置，即将 112 移到 110 的位置，而 110 相应的从底部看不见的区域绕到 112 后，即用户在操作 206 这个动作时，原先位置的标签页 110 同时在完成 204 和 208 两个动作。FIG. 2B 示意的是将标签页向上手动挪一个位置，而 FIG. 2C 和 FIG. 2D 则是示意在 Safari 的标签视图上滑动的动画效果。

#### “Rubber band”橡皮筋效果

![iOS List Scrolling with rubber band effect](http://www.hi-id.com/atcl/2017/iOS-List-Scrolling-with-Rubber-Band-Effect-201711.jpg)

“Rubber band”（橡皮筋效果）指的是在 iOS 上对一个列表比如联系人或页面内容比如网页等作滚动操作时，无论是快速还是慢速，达到列表末尾的时候并非立刻停止，画面仍在滚动，但是滚动的阻尼加强，在停止滚动后，画面回弹回到结束状态，就像一根橡皮筋一样具有弹性效果。

“Rubber band” 的设计也是来自于 Bas Ording，尽管看上去只是一个小小的设计，如果与 iOS 操作系统背后的巨大工程相比显得微不足道，但正是这个小小的设计，促成了 iPhone 的诞生，也为新一代的人机交互界面设计开辟了起点。关于“Rubber band”和 iPhone 的诞生在《Affordance（可供性）和设计》这一篇文章提到过，而今年出的《The One Device: The Secret History of the iPhone》一书讲解的更详细，简短说，当 Steve Jobs 看到 Bas Ording 设计处的惯性滚动、Rubber band 以及其他一些东西的 Demo，震惊并立马认为可以通过这些来做一台手机。

如 [Cult of Mac 这篇文章](https://www.cultofmac.com/489256/bas-ording-rubber-band-effect-iphone/)所述，Bas Ording 设计原始的滚动列表时并没有增加回弹效果，达到顶部或底部就停止了，但是这样看起来就像是这个程序奔溃了，每次看到都觉得不适但一时不知道怎样解决，后来在顶部和底部增加一段空白，但是如果空白部分就顶在顶部或垫在底部不动，仍然解决不了问题，空白部分需要动起来但是也没有效果，后来他让空白部分的移动速度小于手指操作速度，就出现了弹性效果，然后他就想它需要在弹回来，就是 Rubber band。

但是要正真设计到位，Bas Ording 花了几个月的时间，原理虽然简单，但是要做出恰当的效果，合适的数学公式，让其自然顺畅就需要不断的调试。

![iOS List Scrolling with rubber band effect](http://www.hi-id.com/atcl/2017/iOS-List-Scrolling-with-Rubber-Band-Effect-2-201711.jpg)

上图来自关于 iOS 中 Rubber band 的专利 [US7469381](https://www.google.com/patents/US7469381)，涵盖的范围除了列表滚动至两段有回弹效果，还包括文档平移到边缘有回弹效果，文档缩小到最小有回弹效果，文档放大到最大有回弹效果，文档扭转（但未达可扭转要求）有回弹效果。上图所示的为列表滚动时出现的回弹效果。

如图，当列表滚动到顶端边缘时，如果仍然有滚动的趋势，速度未达到零，在列表的顶端显示空白部分，有阻尼效果进行滚动，如没有在这一方向上的输入后，回弹到列表的顶端边缘。按照此份专利描述，列表滚动的速度是根据取样检测到的触点的速度来确认，而当用户中断接触后，滚动速度按照中断前的加速度和速度来确认，按照公式 Vf = Vo + α Δt 来确认，Vf 是中断后的速度，Vo 是中断时的速度，α 为中断时的加速度（为负值），Δt 为时间间隔，Vf 随着时间增加在减小，当达到某个设定好的阈值后，Vf 就直接为零。当滚动达到列表顶端时，速度降为原先速度的几分之一或者平方根，以有阻尼效果的速度完成在列表顶端增加的空白部分的移动，然后再完成回弹。

以上只是笼统的介绍，要达到满意的效果，就需要对公式和参数进行不停的尝试和验证，也就是 Tuning。

#### 界面设计在触摸屏时代的革命

在 2007 年 iPhone 发布后，\[ i D 公 社 ] 发过一篇文章《iPhone 的那些让人印象深刻的细节设计》，其中将动态的转换界面放在第一条，当时那篇文章指的场景动画就如下图所示：

![iOS Original App Animation](http://www.hi-id.com/atcl/2017/iOS-Original-App-Animation-201711.jpg)

上图来自于[专利 US D597101](https://www.google.com/patents/USD597101)，这是第一代 iPhone 时一个 App 打开，以及从一个 App 界面回到主屏幕的变换过程，这个变换过程从 iOS 1 开始一直持续到 iOS 6。App 打开时窗口从屏幕中心开始，从小到大的动画然后呈现在用户面前，当窗口开始作从小到大变化时，主屏幕的图标也在作相应的扩散，当然这个扩散是非线性的，从 App 界面回主屏幕是这个动态变换过程的逆向。这是十年前让我印象深刻的一个细节设计，而现在再来看这个设计，就已经觉得过于机械化了。

![iOS 7 Home Screen Animation](http://www.hi-id.com/atcl/2017/iOS-7-Home-Screen-Animation-201711.jpg)

这是 iOS 7 进入主屏幕的界面动态变换过程（来自专利 US D790569），与此前 iOS 1 到 iOS 6 进入主屏幕单纯是图标的移动不同，iOS 7 上是图标分级的缩小，从屏幕的 Z 轴方向进行的动态效果，配合 iOS 7 其他一些视差效果的设计，界面的立体动态感更强，也符合 iOS 7 在 Z 轴方向上界面的层级逻辑。

![Force Touch UI Animation](http://www.hi-id.com/atcl/2017/Force-Touch-UI-Animation-201711.jpg)

Force Touch 在主屏幕图标上使用时的界面动态变换过程（来自专利 US D775649），与深压操作的逻辑能够协调起来，加上 Taptic Engine 提供的反馈，综合的体验效果让设计变得自然不过了。

我们这里说的很多设计，它们并非来自于功能的技术需要，甚至看起来是远离功能的一些“表面”设计，可以想象 Macworld 2000 当 Steve Jobs 在台上自豪地展示 Aqua 按钮以及各种控制元素时，台下肯定不少人会茫然，在很多人看来，OS X 界面设计中的 Dock 图标放大和窗口最小化的 Genie 效果只是一些“表面”和“花哨”的东西。

但是我们能够看到，从计算机的图形界面时代到触摸屏界面时代，发生了巨大的变迁。一人们潜移默化的接受了界面设计的重要性，如果现在去使用一台触摸屏设备，如果它的交互界面设计中没有任何动画，完全为了执行效率考虑，我想没有多少人愿意使用，因为触摸屏让人们直接操作内容，而不是通过鼠标等来遥控，直觉和体验与效率直接相关。而我们上面提到的一些动态界面设计，对用户来说，他并不会意识到辨别出，但是他能够体会到。当用户有了经验和品味，也将促进设计不断向前探索。

另一方面，因为科技和生活的变革，界面设计自身发生了的巨大的变革，比较一下这 10 年来的 iOS 的设计，或比较一下 iPhone X 和第一代的 iPhone，可以发现界面设计的深度如同屏幕组件一样，在一层层的增加，每一层比如 Force Touch 就会带来新的因子和新的阈值范围，也就带来了新的复杂性，但是仍然需要设计出简单且符合直觉的设计。

![Slide to unlock](http://www.hi-id.com/atcl/2017/Slide-to-unlock-UI-201711.jpg)

滑动解锁是当年被认为 iPhone 用户界面直觉设计的一个典范，儿童看到它也知道怎么操作，而且这个设计也有 Tuning 在里面，比如滑动到哪个数值的距离能解锁，否则回弹等等，但是在现在看来，无论从技术、从用户的安全需要、从操作的便利性，还是设计的美感，它早已落伍，而且落伍速度远超过 [Apple 诉三星的官司](https://www.theverge.com/2017/11/6/16614038/apple-samsung-slide-to-unlock-supreme-court-120-million)。

我们与机器、与设备、与信息、与技术、与更抽象的东西，与它们的交互的内容远远超出了图像，不只是对象在变，交互行为本身，以及交互的主体——用户——都在以一样程度发生着变革。基于功能需求的解决方案已无法让人感到满意，消费者渴望的是设计，要想让设计能为消费者带来共振，设计师除了要将解决方案朝设计方向推进，亦要不停地审视设计并对其作出调校。


# Apple 的 Logo 设计

### Apple 设计“暴发户、土老板”的一面

设计师同其客户或者老板总是充满争执，较量的热身活动往往就是“Logo 的大小”，设计中 Logo 的大小这一主题，被设计师用来嘲笑其客户或者老板品味粗俗，也被客户或者老板用来嘲笑设计师的固执且简陋的自我意识。客户或者老板总会认为当前设计上的 Logo 不够大，Logo 越大越好在设计师看来则是“暴发户、土老板”的审美，“暴发户、土老板总希望 Logo 越大越好”这个推断到现在应仍是成立的；而设计师则总会考虑整体的视觉效果，或者依靠自己成熟的审美经验，总会把 Logo 调整到他满意的尺寸，通常就是偏小，在“暴发户、土老板”看来就是在做好看但没用的设计，而在一些有经验的客户或者老板看来，这是设计师遵循了刻板的教条，追求自以为是的品味。

![the design of apple logo](http://www.hi-id.com/atcl/2017/the-design-of-apple-logo.jpg)

把 Logo 做很大的设计，最常见的就是店面的招牌，而且从城市到乡镇 Logo 的大小在递增，并不是物理尺寸上的大小，而是 Logo 的地位比重。在产品上把 Logo 做很大的设计有两类比较明显，一类是那些低廉的产品，比如那些在夜市地摊上出售的商品，另外一类就是奢侈品类的，可以通过新闻图片中的“暴发户、土老板”身上看到。这么看来，似乎 Logo 越大和品味越低可以划上等号。

但上面这些例子只是多年前积留下的固有印象，事实是，我们现在生活中那些大 Logo 物品早已泛滥成灾了。那些被商家入侵的，产品的包装、附赠的包装的包装、手提袋、小礼品、赠送品等等，通过 Logo 来换取的免费物品或者折扣品：雨伞、T恤、笔记本等等。另外还有很大的一类，并非来自于商家的入侵，而是消费者和商家的协力，它不是地摊货也不是奢侈品，商家不用为能在产品上放上巨大的 Logo 而作出补贴，反而消费者购买的就是这个巨大的 Logo，这类产品最常见就是服装鞋帽等。

Apple 也是大 Logo 集团中的一员，可能我们很少会留意到，一旦去注意，就会发现大多数 Apple 产品上的 Logo 都大得出奇，如果说大 Logo 代表这暴发户、土老板式的低品位，那么在科技行业中，没有比 Apple 更像“暴发户、土老板”的了。

![the design of apple logo big logo](http://www.hi-id.com/atcl/2017/the-design-of-apple-logo-big-logo.jpg)

iMac G5 背面的产品名称“iMac”字样和 iPad mini 上的 Apple 的 Logo，很难在同类产品中找到 Logo 更大的产品，在 iPad mini 上 Logo 的高度和产品的总高度之比已经超过了 15%，而 Logo 的大不只是在于物理尺寸上，而是被强调出的地位。不只是 iMac G5 和 iPad mini 上，几乎历代所有 Apple 的产品都能看到大 Logo，iPod、MacBook、iPhone 等等，Logo 还不只是大，有的 Logo 还发光，有的 Logo 还镜面高亮，都是亮闪闪。这些 Logo 虽然多数放在背面，但总是处于视觉的中心，独占的地位，得到强调和烘托，而且它们并非简单的粘贴上去，而是切穿掏空了完整的背壳，再镶嵌上去一块不同于背壳材料的 Logo，它并非 Logo 那么简单了，像是供奉的符号。

被 Apple 收购的 Beats by Dre 也属于大 Logo 集团，Beats 的耳机和音箱最显眼的就是那突出的大大的 Logo，像 Beats Studio 3 这样的产品，第一眼看上去最吸引人的有 5 处地方，都是它的金色的 Logo，位于两侧的“b”和“Studio 3”，还有顶上大大的“beats”字样，不只是第一眼，这些大大的 Logo 时时刻刻在那吸引人的注意力，再也不会移开，就跟那些服装鞋帽一样，一看到就被大 Logo 糊一脸。

看看我们身边的产品，会发现“暴发户、土老板”的风气愈演愈烈了。

### Logo 不再是标牌

在手工业时代，当物品开始流通，不再限于邻里间的需求时，匠人们就在自己的制品上留下印记，作为可以可追溯制造者的标记，尽管那时并没有太多仿冒制作，因为制作的样式也往往都是通用的，但是这个小小的标记和符号亦代表着“正宗”，朴素的品牌意识。这些标记往往就是一个用于识别的符号，本身没有什么审美价值，往往放在产品隐蔽的地方，生怕被看到一样，只在偶尔用到时才会翻看得到。

进入了工业化时代，先于品牌形象到来的是商标，将手工业时代匠人的印记从阴暗处带出，加以强调和显现，并将其合法化。上世纪初 Peter Behrens 为 AEG 做的设计，从 Logo 到宣传材料，从产品到建筑，一致的字体，一致的排版，一致的设计思考，应用到方方面面，开启了二十世纪的企业形象和识别设计。

![Peter Behrens and Otto Eckmann AEG Poster](http://www.hi-id.com/atcl/2017/Peter-Behrens-AEG-Otto-Eckmann-Poster.jpg)

上图左为 Peter Behrens 于 1912 年为 AEG 灯泡设计的宣传海报，右侧是 1900 年 Otto Eckmann 为 AEG 设计的产品目录的封面，后者显然受[新艺术运动影响](https://en.wikipedia.org/wiki/Art_Nouveau)，类似 [Henry Van de Velde 的海报](https://collection.cooperhewitt.org/objects/18707967/)，而 Peter Behrens 的海报则受影响于当时同属德意志制造联盟的年轻设计师 [Lucian Bernhard](https://en.wikipedia.org/wiki/Lucian_Bernhard)，剔除不必要的装饰元素，剩下产品形象，以及同产品直接关联的品牌字体。这两幅海报在样式和风格上的差别只是表面上的，本质上它是从视觉符号向商品符号的转变，Logo 不再停留于那些原始的功能，进入工业生产，进入商品经济，Logo 就需要具有自己独立地位，而且将是企业和产品来传递信息和形象最重要的载体，它首先需要在视觉形象上独立而出。

在《设计，在于制造真实的“假象”》一文中说到，一个产品和设计对消费者有意义的是它的外在形象，这个观点本雅明在上世纪初的《Charles Baudelaire》一书中也提到过，他[写到](http://redbookreports.tumblr.com/post/22778752249/the-ideology-of-the-art-and-craft-debate-part-2)：“当生产的产品成为市场提供商品后，人们越来越不在意于它们的生产情况了，不只是以剥削形式出现的商品生产社会条件，同时还包括商品生产的技术条件……当消费者还需要向工匠给出需求时，他或多或少还算个专家……当他成为向市场购买商品的卖家后就通常不是那么知识丰富了……当消费者的专家属性降低时，他品味的增长就变得很重要——对于消费者和生产者都是。品味对消费者来说或多或少是专业性缺失的一种精致掩饰，对生产者来说是对消费的一种新刺激，在有些时候，可以替代那些需要付出更多成本换取来的消费刺激。”这也能从一个方面来说明为什么一个 Logo 对商品来说是多么重要，而且这种重要性同 Logo 本身的设计一样，随着商业和社会的发展，在一直向前进化。

随着广告和平面设计的发展，Logo 的图形设计也经历了一个时代又一个时代的发展，Chermayeff & Geismar 和 Paul Rand 为企业做的 Logo 和识别系统的设计定义了一个时代，而近几年将 Logo 设计从图形推进到平台又是一个新的阶段，从图形到平台，对设计师来说仍是使用几何和视觉等设计手段，但因为认识的角度发生了变化，呈现而出的是全新的景象。

消费者对 Logo 的认识一样也在发生着变革，以前 Logo 就是一个静态的标牌，它与产品均具有独立的地位，是可以分离的，Logo 代表这品牌，指示着这个产品的正宗性，就像是铭牌一样的标签，印在产品之上。而现今，品牌消费的行为和观念不再是那么静态和单一，企业更是将品牌打造成一个品味的平台，就像本雅明所说的，消费者的注意力已经从产品背后的专业性转移到品味之上了，对企业家来说打造品味的平台就不再局限于产品的生产了，还包括文化的生产，因此作为品牌的承载基石之一的 Logo 也迎来新的责任，它不能再只是一个简单的标牌，或者印制在产品表面的图案，它需要合入产品的整体形象，需要向消费者传达更多的内容，它的几何形态要更加考究，本身要具有审美价值，还需要适应到各种产品之上，Logo 将不再是一个小标牌，在产品的某个角落一粘贴。

我们看到身边的大 Logo 产品越来越多，Logo 在这些产品身上不再是简单的品牌符号，它的视觉元素也成为了产品的一部分，同时一个扩大的符号，它的一些符号价值也会相应得到扩大。并非大 Logo 就是放大 Logo 的尺寸，否则到处都是暴发户、土老板式品味的东西了，设计师面临的挑战就是如何将 Logo 这个符号纳入到产品之中，使其成为一体，同时也应意识到产品设计的本身也已经符号化了。

Logo 不再是标牌。

### Apple 的 Logo 设计

#### Apple Logo 图形设计

![Apple Logo Evolution 201710](http://www.hi-id.com/atcl/2017/Apple-Logo-Evolution-201710.jpg)

Apple 1976 年的第一代 Logo 不能算作是真正的 Logo，那是 Ron Wayne 的钢笔画，而当 Steve Jobs 对 Apple II 当作一件正式的事来看待时，当开始制作 Apple II 外壳的样机时，他意识到需要一个新的 Logo，就找来了 Rob Janoff 来设计，就是 1977 年的彩虹纹 Logo。当时原始的轮廓并非如上图所示，苹果的外形曲线并非那么光滑连续，而是留下了一下写实的曲线特征，可以在 thebrainfever.com 的[这篇文章](http://thebrainfever.com/apple/the-lost-apple-logos-you-ve-never-seen)中查看。

关于 Apple Logo 设计背后的故事，设计师 Rob Janoff 在 [Creativebits](http://creativebits.org/interview/interview_rob_janoff_designer_apple_logo) 和 [Logo Design Love](https://www.logodesignlove.com/rob-janoff-apple-logo-designer) 访谈中详细地谈到了，与图灵无关，与牛顿也无关，bite（咬一口）和 byte（比特）也没有关系。设计之前 Steve Jobs 给 Rob Janoff 的 意见只是“不要可爱”，Rob Janoff 给出了一些方案然后 Steve Jobs 选择了彩虹条纹被咬一口的苹果。彩虹主要源自 Apple II 是第一台可以使用彩色显示器的个人电脑，另外也更容易被年轻人接受，而“咬一口”来自于体量相关，让人们一看到就认为它是苹果而不是樱桃，而且咬一口的苹果是很有标识性的，因为每个人都体验到。Rob Janoff 在 Creativebits 访谈中说得非常坦诚和清楚，而且我认为从设计上来说，能想到这个标识性的形象来形成人人都能看懂的苹果含义，价值远超出其他意义的附加。

Rob Janoff 的形态后来经过 Landor & Associates 调整后轮廓就维持不变了，这也证明了原始设计的可再生可扩展性。Apple 从 1998 年开始，在 Logo 轮廓不变的情况下，样式经过几次变化，从 1998 年开始，进入了半透明时代，匹配当时的 iMac 电脑，到了 2001 年是水晶时期，再到 2007 年镜面金属，2014 年回到单色黑。

Apple 的 Logo 有如此高的可扩展性，可以随着时代的发展作出不同的适应，不同的呈现，但仍然是那个“被咬了一口的苹果”，得益于 Rob Janoff 的设计之外，品牌的名称及其理念，Apple II 是针对个人和家庭使用的计算机，在当时其他计算机包括一些个人计算机，无论是它的名字还是理念都是非常技术化，而苹果这个名称和形象每一个人都知道，它与背后的技术完全无关系，技术正是消费者不在意的地方。所以现在，但凡听过说苹果手机的人，一看到“被咬了一口的苹果”，都知道而且都会说出“这就是苹果手机”，这是其他品牌难以达到了，这远远比 Logo 背后是否有精彩的来源故事更加重要。

Apple 的 Logo 适应于不同的时代，也适应于不同的产品，不同的工艺。

#### Logo 在产品上的呈现

![Logo On Braun Products](http://www.hi-id.com/atcl/2017/Logo-On-Braun-Product-201710.jpg)

进入工业化生产之后，Logo 就不可避免要在产品身上出现，而且不像手工业时代只在隐蔽处留下印记，而是需要放在显眼之处，让消费者能够在纷繁的同类产品中迅速识别到，但它又不能占据整个产品的外观面，因为它并非与产品一体，它与产品的功能无关，它与产品呢的工艺和生产无关，它是来自于市场的需求。以往的产品中见到最多的 Logo 在产品上的呈现方式，就如上图的 Braun 剃须刀所示（图片来自于 [Core77](http://www.core77.com/posts/24437/a-history-of-braun-design-part-1-electric-shavers-24437)）,一片外加的标牌，这块标牌可以作很好的设计，但仍然是外加，即使如右侧所示没有了视觉上可见的“一片标牌”，它是印刷在产品的本体之上，但仍被视为外来视觉元素的附加。

随着技术的发展，Logo 在产品的呈现方式也不断得到发展，比如丝印的 Logo 附着力越来越强，不会在使用过程中剥落，就像与产品一体一样，与产品一体的工艺也越来越多，比如模内转印，激光镭雕，金属的蚀刻，等等。我们可以按照 Logo 是否与产品一体来作划分，但是一体化不仅仅限制在物理上是否一体，比如镶嵌不是一体而模内成型是一体，或者附着力弱不是一体而附着力强到无法剥落为一体，物理上的是否一体仅仅与技术工艺相关，它并不能代表着设计的一切，否则物理上的一体就是最好的，但实际情况是有的 Logo 在产品上实现虽然是使用了物理上一体的工艺，比如镭雕，但它在设计上，在人的视觉和认知体验上仍然是分离的，附加上去的标记，就如烧坏了产品壳体的镭雕一样。所以除了从物理上是否一体来作划分外，还需要加上另外一个维度，那就是现象上是否一体。

![Type of Logo Application On Product](http://www.hi-id.com/atcl/2017/Type-of-Logo-Application-On-Product.png)

那么通过区分物理上是否一体，以及现象上是否一体，我们对 Logo 在产品上的应用可以划分为 4 种情况，如上图所示。

**\[A]** 指的是这种 Logo 的应用物理上是分离的，而且在现象上也是分离的，比如上面举得 Braun 剃须刀的例子，Logo 就是通过一片单独制作的标牌镶嵌到产品之上，现象上的分离，指的是当人们看到这个 Logo 标牌也认为是它是独立的，它可以被剥落，尽管剥落之后产品身上会留下一个为其量身定做的空缺平台，但并不对产品自身的设计完整性产生太大的影响。

**\[D]** 指的是 Logo 应用在物理上是一体的，比如它同产品是一同加工生产而出，不可剥落的，而且是现象上也是一体的，它属于产品的一部分，与其他设计元素一起组成了产品的总体形象，通常因为 Logo 具有鲜明的符号意义，它的重要性不言而喻。

**\[B]** 指的是在物理上这种 Logo 应用是一体的，比如用到了一体加工的各种工艺，但是在设计上它没有融入产品，就像仅仅是炫耀一体加工的工艺一样，比如在形态、尺寸和位置等关系上设计没到位，它存在的价值同标牌的镶嵌一样。

**\[C]** 虽然在物理上是分离的，但因为设计之处就将 Logo 元素同产品作一体化思考，只是因为综合各种因素，选择了分离式的工艺，而在用户看来，Logo 也是产品整体设计不可或缺的一部分。同样也说明，即使没有一体加工的资源可利用，同样也可以将 Logo 在产品上的应用做得一体化。

这四种划分，也并不是说明我们一定要朝着 \[C] 和 \[D] 的方向上去实现，虽然这是潮流方向，\[A] 属于落伍的设计，而 \[B] 在实际中并非不可取，Logo 在产品上的应用是产品形象和品牌的一部分工作，如果需要牺牲此部分的一体性为更大的形象和品牌服务，\[B] 甚至 \[A] 并非一定得抛弃。比如需要作一些复古怀旧性质的设计，可以在分离式的 Logo 应用上做出新的文章。\[B] 方向的例子就可以看现在很多反品牌的设计和产品，将 Logo 放回到隐蔽的角落，就像无印良品倡导的理念一样，通过无印来形成一种品牌，而且随着网络和物品流动的发展，无印的理念可以执行更为彻底。

#### Apple 的不走寻常路

如果说设计是连接问题和解决方案一条通路的话，那么通常这条道路不是一条直通的平坦大道。面对一个技术问题，工程师会面对物理通过逻辑来给出直接的技术解决方案，而设计师来解决一个设计问题，在外人看来他总像老学究一样，绕个弯式地走出一条路。比如需要在产品身上安放一个品牌的 Logo，如果以工程师的解决思维来看，他可能会选择最简单直接的方式，而且还是成熟的，业界常用的方案，但是从设计师的角度来看，这不是解决问题的途径，即使最终作出妥协还是选择了业界成熟的通行方案，他需要经过慎密的思考和比较，为妥协给出足够充分的理由。

设计师看上去的不走寻常路，并非来自于设计师的故意，故意也成就不了专业性，因为设计师要解决的不是某一个专门的技术问题，他不仅需要去解决生活中一个模样笼统的问题，还需要去塑造产品的外在形象，虽然客观的限制能够提供逻辑的支撑，但是对主观的需求作出理性的认识并非平铺直叙。

而我们面对的是充满竞争的商品经济，除了技术的竞争，还有品味的竞争，这些因素让设计师在解决问题过程中遇到的复杂性再次得到扩充，这让是连接问题和解决方案之间的通路不是那么一目了然和平坦。

![iPod 1st gen and iMac G4](http://www.hi-id.com/atcl/2017/iPod-1st-gen-iMac-G4-201710.jpg)

Apple 最为擅长此种“不走寻常路”，去分析他们的解决方案，会发现这种“不走寻常路”并非是老学究的迂腐，并非另辟奇径，并非为了一点小小的细节而大费周章，而是能发现“寻常路”中存在的问题，安逸，庸常，没有竞争力。

在《Apple “无缝”设计之历程》我们分析了 Apple 为小小的接缝在不同产品上作出的巨大的努力，Apple 设计上的这种突破覆盖到方方面面，材料和颜色，接缝，以及材质的表面处理，等等。比如上图所示的 2001 年第一代 iPod，它的前面板使用了双料注塑，外壳为一体的塑料件，但是分为两层在模具内一体成型，外层为透明的 PC 塑料，内层为白色 PC/ABS 塑料，带来的视觉效果是晶莹剔透而且有层次和深度的质感，而且还有重要的一点是，显示屏区域不用开窗口，也不需要额外的装配零件，用双料注塑的外层的透明的 PC 来作为保护层，保证的产品的一体感。Apple 将这种设计一直维持到金属前面板的 iPod Classic 的出现，他们也将双料注塑使用到其他产品上，比如 iMac G5 等。iMac G4 的底座部分有着柔和但又有深度的材质表现，Apple 先用透明 PC 塑料注塑出这个罩壳，然后将内表面喷涂成白色，然后再在外表面喷上一层磨砂的硬质图层，达到了这种有深度的雾蒙蒙的质感。通常我们会认为喷漆或表面涂层都是直接应用在外表面，而在透明塑胶件的内部喷涂可以带来有层次的质感，有时也能解决一些技术问题，内表面喷涂 Apple 在后继的产品上也使用很多，比如 iPhone 3G 上，以及 Apple TV 上，Apple TV 在内表面喷涂黑色，这样可以很好的隐藏红外窗口。

Apple 的这种“不走寻常路”的设计在产品的 Logo 设计上表现的更为淋漓尽致，或许我们没有仔细去观察之前，会觉得产品上的 Logo 设计并不会有太多精彩之处，事实是他们在这个细节的设计上持续地努力和追求，以小见大，见微知著。

#### Apple II

![Apple II Logo Plate](http://www.hi-id.com/atcl/2017/Apple-II-Logo-Plate-201710.jpg)

Apple II 上的 Logo 标牌（上图做[来自这](http://www.ebay.com.au/itm/mint-original-apple-ii-name-plate-from-apple-computer-rare/172673061776)，图右[来自这](http://www.applefritter.com/content/early-apple-ii)），采用的是铭牌式的设计，使用的是金属冲压件，冲压然后上色，黑底衬托处苹果图形的彩色和字体的金属本色，Apple II 为 Logo 铭牌做了一个沉台，而不是直接将铭牌粘到产品表面之上，沉台具有一定的深度，让 Logo 镶嵌其中。冲压击凸的字体表面呈圆弧形，在后来的 Apple IIe 上[作了改进](http://www.nightfallcrew.com/25/05/2013/apple-iie-apple-e/)，字体部分变得平直，按照[此图片](http://inanis.net/museum/wp-content/uploads/2015/03/A2Badge-1140x395.jpg)来判断，苹果图形为冲压成型，而字体部分为后粘上去。

#### Macintosh

![Apple Macintosh Logo Plate](http://www.hi-id.com/atcl/2017/Apple-Macintosh-Logo-Plate-201710.jpg)

上图是原始版 Macintosh（[Macintosh 128K](https://en.wikipedia.org/wiki/Macintosh_128K)）和 [Macintosh Classic II](https://en.wikipedia.org/wiki/Macintosh_Classic)，图片分别来自[这](https://www.flickr.com/photos/splorp/12124969075/)与[这](https://68kmla.org/forums/index.php?/topic/29945-macintosh-classic-ii-questions/)。

图片中 Macintosh 128K 的 Logo 处于它的背面，形式继承自 Apple IIe，字体的纹理从竖向改成了横向，苹果图形与字体形成了独立关系，形态更为考究，可以看出尺寸经过严谨处理过，而且塑胶壳体的成型精度也提高了，Macintosh 128K 的正面只有一个苹果图形标牌，在屏幕的左下角，也是正方形的形态。Macintosh 是 Steve Jobs 在 1984 年 1 月发布介绍的具有历史意义的个人电脑，革命性的图形界面以及鼠标的应用。第二台的 Macintosh Classic II 则是 Apple 1991 年推出的产品，当时 Steve Jobs 早已离开公司了，同时期 Apple 的产品上的 Logo 设计类似于上图的 Macintosh Classic II，苹果图形的标牌直接镶嵌到塑胶壳体上，没有什么留白的空间，或者说不像镶嵌，而像是陷入。

镶嵌式的彩虹 Logo 设计一直持续到 [PowerBook G3](https://en.wikipedia.org/wiki/PowerBook_G3)，之后就是 Steve Jobs 回归后的新时代的产品了。PowerBook G3 两处设计影响到了后续 Apple 的笔记本设计，一个就是外壳上的发光 Logo，光源就是来自于 LCD 的背光，不需要耗费额外的能源。另外一个就是 PowerBook G3 的 Logo 在打开使用的时候，人们看到的 Apple Logo 是倒立的，无论是员工还是用户都很困惑，可以搜索查看一下[相应的图片](https://www.google.com/search?q=PowerBook+G3+logo+upside-down\&newwindow=1\&source=lnms\&tbm=isch)，《Sex and the City》中有一些剧照。设计师的解释时它们发现如果打开时 Logo 正立，那么合上后对用户来说就是倒立的，那么用户就会经常搞错笔记本打开的方向，Apple 前员工 Joe Moreno 在他的 Blog 写过[掉转方向背后](http://blog.joemoreno.com/2012/05/upside-down-apple-logo.html)的故事，PowerBook G3 之后的产品，Apple 改变了 Logo 的方向，就是目前我们看到的样子。

#### iMac G3

![Apple iMac G3 Logo](http://www.hi-id.com/atcl/2017/Apple-iMac-G3-Logo-201710.jpg)

iMac G3 的 Logo（上图左[来自这](https://maas.museum/event/interface/object/imac-g3-bondi-blue/index.html)，图右[来自这](https://www.theregister.co.uk/2010/11/29/bondi_blue_imac/)），它仍然是一个镶嵌的标牌，不像 1984 年的 Macintosh 128K 使用正方形的沉台，也不同于 Steve Jobs 出走时期的如 Macintosh Classic II 那样的设计，iMac G3 的 Logo 设计与机身一体化程度更高，从形态的处理、颜色的选择到高度的控制。iMac G3 是小 Logo 应用的一个阶段性产品，后续的产品 Logo 的尺寸将变大。

#### Power Mac G4 和 Power Mac G4 Cube

![Apple Power Mac G4 And G4 Cube Logo](http://www.hi-id.com/atcl/2017/Apple-Power-Mac-G4-And-G4-Cube-Logo-201710.jpg)

Power Mac G4 和 Power Mac G4 Cube 的镶嵌 Logo（上图右[来自这](https://retrocosm.net/2011/10/29/apple-power-mac-g4-cube/)），Apple 从 1999 年 1 月发布的 [Power Macintosh G3](https://en.wikipedia.org/wiki/Power_Macintosh_G3#/media/File:Apple_Yosemite.JPG) 的蓝白透明机身版开始，使用了大尺寸的 Apple Logo，放在台式机的机身侧面，而且都是镶嵌式的 Logo，即机身上有相应的沉台，通过上图右侧的 G4 Cube 的 Logo 一周的光线中可以看出，这也是 G4 Cube 采用了有机玻璃罩壳的特点之一。

这一阶段是 Apple 设计的浪漫主义时期，所以大尺寸的 Logo 并非因为“暴发户、土老板”的审美，而是属于解放和表现。而一旦 Logo 的尺寸放大，它就不再像以前那些镶嵌式小 Logo 那样，它不再是标牌，虽然它仍具有标牌的作用，具有指向品牌内涵的作用，但是 Logo 自身的审美价值获得了独立的地位，而且得到了强调和烘托，人们不再只关心 Logo 指向的含义，还能欣赏 Logo 自身，与产品形成一个整体。

这些镶嵌式的 Logo 设计在“分离一体坐标系”中属于 A 类，物理上是分离的，在现象上也是分离的。

#### iMac G4 和 eMac

![Apple iMac G4 and eMac Logo](http://www.hi-id.com/atcl/2017/Apple-iMac-G4-eMac-Logo-201710.jpg)

iMac G4 和 eMac 上的 Logo 就不再是镶嵌式设计了，它不再像 iMac G3 或者 Power Mac G4 那样强调立体感，具有深度的边缘，而是平面化的镜面金属质感 Logo，从一体性上来说，比起 Apple 其他产品，这是较差的设计。

这些平贴式的 Logo 也是属于既是物理上分离又是现象上分离的。

#### Titanium PowerBook G4 和 Aluminum PowerBook G4

![Titanium PowerBook G4 Logo](http://www.hi-id.com/atcl/2017/Titanium-PowerBook-G4-Logo-201710.jpg)

2001 年 1 月份 Apple 发布了钛合金版的 PowerBook G4 笔记本，如上所属，Logo 的方向已经掉转。钛合金版 PowerBook G4 使用的材料是 0.4 mm 厚的板子冲压而成，所以 Logo 的镂空处也是冲压而成，然后在镂空的背后安装上导光片，由 LCD 的背光提供光源，从上图可以看到冲压孔的圆润边缘（图片[来自这](https://www.macworld.com/article/2901437/macbook/ode-to-the-12-inch-powerbook-g4-apples-first-desktop-quality-laptop.html)），以及镂空处形成的深度感。

![Aluminum PowerBook G4 Logo](http://www.hi-id.com/atcl/2017/Aluminum-PowerBook-G4-Logo-201710.jpg)

2003 年推出的铝合金版的 PowerBook G4，Logo 处的设计仍然维持不变，虽然材料改成了铝合金，但是工艺仍以冲压成型为主，左侧可以看到导光片的安装位置（图片[来自这](https://www.ifixit.com/Guide/PowerBook+G4+Aluminum+17-Inch+1.67+GHz+%28High-Res%29+LCD+Replacement/4532)）。

镂空边缘的厚度以及圆润边缘，加上安装方式的简单，无法给人带来制作精致的感觉，这个问题将来后续的产品中得到改善。

![iBook G4 Logo](http://www.hi-id.com/atcl/2017/iBook-G4-Logo-201710.jpg)

2003 年推出的 PC 塑料版 iBook G4 的 Logo 设计也是类似（图片[来自这](https://www.macstories.net/mac/the-taming-of-the-ibook/)）。

这几种 Logo 的设计如果不作进一层思考，它们肯定是属于既是物理上分离又是现象上分离的设计，如果从我们现在的角度去看这些细节设计，会觉得无法忍受 Logo 处的台阶高度差，认为 Logo 的外表面应该与壳体外表面平齐，但假设我们不作这些需求，而是将 Logo 看作是壳体的缺口部分（负形态），因为当前的设计 Logo 并不是一片镶嵌件，那么就无法判定它在物理上是分离的了，但在现象上仍然是分离的，从人们的认知和体验中，通常不会把负形当作认知的主体。

#### 第一代 iPod、Power Mac G5、iPod mini 等和激光雕刻

![iPod 1st Gen Logo 201710](http://www.hi-id.com/atcl/2017/iPod-1st-Gen-Logo-201710.jpg)

第一代的 iPod (图片[来自 Flickr 上 Pinot Dita 的照片](https://www.flickr.com/photos/pinodita/6921022828/in/photostream/))，背面是抛光不锈钢，Logo 图案和文字采用激光雕刻而成，这是 Apple 较早使用激光的产品，后面有大量的产品会使用到激光，不只是用来雕刻图案和文字，还用来作精密加工等。

在镜面的不锈钢作激光雕刻，形成的磨砂表面与抛光面形成视觉对比，会带来一些深度差的视错觉，图案就像镂刻在机身上一样。在不锈钢表面处理图案和文字，除了激光雕刻外也没有其他效果更好的方法，所以后继的 iPod 系列产品，以不锈钢为背壳的都采用了激光雕刻这种工艺。

镜面不锈钢上的激光雕刻虽然是一体化的，但是如果仔细去看这些图形，会发现质感并不好，就像是通过破坏来获取的图形一般，而激光雕刻在不锈钢上的成型原理就是破坏，所以它在物理上是一体的，但是从现象上的一体性并不强。

![Power Mac G5 Logo](http://www.hi-id.com/atcl/2017/Power-Mac-G5-Logo-201710.jpg)

2003 年 6 月份推出的 Power Mac G5 采用铝合金机身，而 Logo 也是采用激光雕刻，与前几代的镶嵌式 Logo 相比则更为精致和平面化。

![iPod mini Logo](http://www.hi-id.com/atcl/2017/iPod-mini-Logo-201710.jpg)

两代 iPod mini 的背部（图片来自 [Jon Hume 的 Flickr](https://www.flickr.com/photos/humedini/5100024940)），第一代 iPod mini 是 2004 年 2 月份推出，iPod mini 是采用的铝挤的机身，表面阳极氧化而且有不同的颜色，背面的苹果图形和文字均采用激光雕刻，此时的激光雕刻工艺还比较原始，所以在彩色版的 iPod mini 的机身上看到是激光将氧化颜色层完全去除，留下银底色，就跟刀刻一般，而在银色机身上则是雕刻成深色。

![iPod nano and shuffle Logo](http://www.hi-id.com/atcl/2017/iPod-nano-6st-iPod-Shuffle-4th-Logo-201710.jpg)

2010 年的第 6 代 iPod nano 和第 4 代 iPod shuffle（上图[来自](https://www.flickr.com/photos/ipodlounger/4970839379/) iLounge 的 [Flickr](https://www.flickr.com/photos/ipodlounger/8032867444/in/photostream/)），此时期的 iPod nano 和 iPod shuffle 形态和工艺有很大相似，但是背面的 Logo 处理不一致，iPod nano 的 Logo 颜色与机身颜色相似，而 iPod shuffle 则为白色，iPod shuffle 使用的是激光直接雕刻，而 iPod nano 则是先作激光雕刻，在 Logo 区处理出与机身不同的肌理，然后再去阳极氧化。先激光处理再氧化这个工艺也只在第 6 代的 iPod nano 上使用，第 4 代的 iPod shuffle 在 2012 年和 2015 年都出过新的颜色版本，Logo 处的处理仍然使用直接雕刻，彩色机子上的苹果图形是金属本色。从表面处理上来说，先激光再氧化显得更加考究也更漂亮，但是从 Logo 的识别角度来说，就不如先氧化再激光的处理，虽然先激光再氧化，两个区域的表面肌理不一样，但是仍然是微观层面的不一样，在用户看到，都是一样的磨砂材质。

![iPhone SE Logo](http://www.hi-id.com/atcl/2017/iPhone-SE-Logo-201710.jpg)

如今 Apple 产品上的镭雕精度与第一代的 iPod mini 已经不能同日而语了，比如在 iPad 和 iPhone 背面的字样，除了看小字的清晰度，还可以比较“iPhone”和“iPad”字样的内部，它的表面肌理与周围的磨砂面已经有很大的阶梯，镭雕面已经非常细腻和光滑。比起以前的激光雕刻，各种新型的激光雕刻技术在金属表面击出的凹坑更小，烧击的厚度更小，能够在氧化层完成雕刻，所以它不像 iPod mini 时代那样像刀刻上去，也不像丝印那样只是作用于表面，它比“铭刻”还深刻，无可置疑的一体性。

但是激光雕刻处的表面虽然能比周围的磨砂面更光滑，但是与抛光面相比仍相差太远，所以在对表面有要求的，比如 iPhone 或 iPad 上的苹果图形，就不会用激光来雕刻，目前的 Apple 产品上，激光雕刻用于次一级的信息在产品表面上呈现。

#### iMac G5 和 iMac G5 iSight

![Apple iMac G5 Logo](http://www.hi-id.com/atcl/2017/Apple-iMac-G5-Logo-201710.jpg)

Apple 在 2004 年 8 月发布了新一代的 iMac，替代了 2002 年的台灯式的 iMac G4，Steve Jobs 在发布 iMac G4 时曾经说过 iMac G4 漂亮和优雅的设计将让它持续十年，没想到过了两年就发生了变化，而且在发布会上提到的一些设计的缘由，比如为什么要做底座，也被 iMac G5 给击破，但是 iMac G4 发布仍是 Steve Jobs 经典式的演讲，可以观看[这个 Youtube 的 5 分多钟的视频](https://www.youtube.com/watch?v=YxRcQfALqqw)。

iMac G5 使用了双料注塑工艺，透明的 PC 塑料为外层，而内层为白色的 PC/ABS 塑料，Logo 位置只有透明的 PC 塑料外层，2004 款的 iMac 是在内部粘贴一片灰色的塑料片，如上图所示（右上图片[来自这](https://auction.catawiki.com/kavels/12805335-apple-imac-g5-2-0-20-als-model-a1076-g5-2ghz-cpu-1gb-ram-250gb-dvd-rw-with-apple-keyboard)，右下图片[来自这](http://www.ebay.ie/itm/Apple-iMac-G5-ALS-17-A1058-Chassis-Front-Bezel-922-7275-/232405326753)）。

![Apple iMac G5 iSight Logo](http://www.hi-id.com/atcl/2017/Apple-iMac-G5-iSight-Logo-201710.jpg)

2005 年 iMac G5 推出了 iSight 版，即增加了前置摄像头，iSight 版在 Logo 处有细微变动，从原先的灰色塑料片改成了配色喷涂，在壳体的内部喷涂，这样从外部看 Logo 的深度更浅，可以参考见上图（左上图片[来自这](https://www.ifixit.com/Guide/iMac+G5+17-Inch+Model+A1144+Front+Bezel+Replacement/959)，左下图片[来自这](http://www.ebay.ie/itm/Apple-iMac-G5-iSight-17-A1144-Chassis-Front-Bezel-922-7070-/232427572827)），因为此时 Logo 处的灰色与周边的白色是处在同一高度的，也就显得更加的一体化，而且它仍然处在透明 PC 塑料层下，而不是表面的丝印。

#### iPod shuffle 第一代

![iPod Shuffle 1st Gen Logo](http://www.hi-id.com/atcl/2017/iPod-Shuffle-1st-Gen-Logo-201710.jpg)

Apple 在 2005 年推出了第一代 iPod shuffle，机身为塑料材质，采用二次注塑完成。背面的指示文字应为激光雕刻，但是 Logo 部分和 iPod 字样是略微向下凹陷的，这是在模具上成型，颜色应是喷涂上色。

#### MacBook & MacBook Pro 2006 以及 MacBook Air

![MacBook and MacBook Pro 2006 Logo](http://www.hi-id.com/atcl/2017/MacBook-and-MacBook-Pro-2006-Logo-201710.jpg)

这是发布于 2006 年的 MacBook 和 MacBook Pro，这是 Unibody 设计之前的 MacBook 和 MacBook Pro，结构继承自 iBook G4 和 PowerBook G4，而在 Logo 处作了改进，将能够导光的 Logo 片做成了一个镶嵌件，从内向外装配，这样就不会出现像 iBook G4 和 PowerBook G4 那样的高度差，Logo 镶嵌片的外表面与显示屏壳体的外表面几乎平齐，一个透明的 PC 塑料件，背部喷涂白色，如上图所示（上图左来自 [rainspoo 的 Flickr](https://www.flickr.com/photos/nicodmus/235014806/)，图右来自 [Allan Reyes 的 Flickr](https://www.flickr.com/photos/pixeleden/229916228/in/photostream/)）。

第一代的 MacBook 和 MacBook Pro 上的这个 Logo 设计重要意义就在于它是从内向外安装的镶嵌件，这和以往的在外表面安装的镶嵌 Logo 从结构意义上来说有本质的不一样，Logo 不再是产品的后续附件物，它属于产品身体的一部分，既然 Logo 成为了产品的内在一部分，那么设计做好就是浑然一体，如果设计做差，那么在产品身上开了洞还有画蛇添足之嫌，比起在外部镶嵌 Logo 来说更让人讨厌。

MacBook 和 MacBook Pro 在 2008 年都转向了 Unibody，虽然第一代的 MacBook Air 显示屏的铝合金罩壳先是冲压成型（此后的显示屏罩壳均为 Unibody），但是也使用了 CNC 等机加工来形成一些特征，包括 Logo 安装处的沉孔设计，而在此前的 PowerBook G4 上是没有台阶面。设计了沉孔的好处就是可以让 Logo 处的壁厚变薄，降低发光 Logo 的深度，提高 Logo 安装的平整度和精度。

![MacBook Air Display Rear Housing Logo](http://www.hi-id.com/atcl/2017/MacBook-Air-Display-Rear-Housing-Logo-201710.jpg)

上图是 MacBook Air 的显示屏的铝合金罩壳，图片来自[这个视频](https://www.youtube.com/watch?v=a9y8lckkxF8)。

#### 第一代 iPhone

![iPhone 1st Gen Logo](http://www.hi-id.com/atcl/2017/iPhone-1st-Gen-Logo-201710.jpg)

2007 年发布的第一代 iPhone 的 Logo（左图[来自这](https://mr-iphone.deviantart.com/art/iPhone-1st-GEN-8-103213115)），第一代的 iPhone 背盖使用铝合金制成，如要在铝合金表面制作出 Logo 形状有几种方法，如上面说到的激光雕刻相关的工艺，但激光雕刻在大面积使用时无法表现处质感，更难做到高亮。iPhone 采用了抛光的不锈钢镶嵌的 Logo，虽然不锈钢 Logo 片略低于铝合金背盖表面，但同 iPod 的不锈钢背盖一样，划痕难以避免。

![iPhone 1st Gen Logo](http://www.hi-id.com/atcl/2017/iPhone-1st-Gen-Logo-How-Made-201710.jpg)

安装镶嵌 Logo 的结构（上图左[来自这](https://www.youtube.com/watch?v=9zEcGE4umuc)，图右[来自这](https://www.ifixit.com/Guide/iPhone+1st+Generation+Rear+Panel+Replacement/443)），可以看到先加工处 Logo 的通孔，然后再在 Logo 孔位周围向下铣削，形成装配不锈钢 Logo 片的平台。

高亮的 Logo 开始成为 Apple 的产品上最主要的选择，尤其是与铝合金背盖相搭配时，是塑造 Apple 产品视觉特征很重要的一个手段。高亮的金属 Logo 能够吸引人，同时它又能被视作同背盖金属为一体，只不过是两种表面处理，金属的哑光和高光两种质感表现人人都熟悉，高亮的金属 Logo 成为产品背面的视觉中心，这无论对于识别还是产品形象的形成是积极促进的，假设像 iPad 这样的大尺寸产品，将背面的金属 Logo 去掉，或者做小，那么金属的材质感将压过产品形象的符号功能，它更像金属而不是产品。

#### iMac 2007 –

![iMac From 2009 Logo](http://www.hi-id.com/atcl/2017/iMac-From-2009-Logo-201710.jpg)

iMac 从 2007 年后开始转到铝合金机身，Logo 就转为从内向外安装的黑色高亮金属镶嵌片，而背面则使用塑料材质，当作天线窗口，虽然远观可能与 iMac G4 有点相似，但因为结构的不同，镶嵌的 Logo 片虽然是分立式的，但整体感更强。

#### iPhone 3G

![iPhone 3G Logo](http://www.hi-id.com/atcl/2017/iPhone-3G-Logo-201710.jpg)

iPhone 3G 和 iPhone 3GS 的 Logo 也是金属的（上图右来自 [Dominick 的 Flickr](https://www.flickr.com/photos/dominicotine/7969194952)）。iPhone 3G 使用的高亮塑料材质，如果仍然使用第一代 iPhone 的不锈钢镶嵌 Logo，则两者无法融合到一起，如果使用非金属质感的，比如白色的丝印，则无法同整体的黑色高亮相搭配。iPhone 3G 的背壳使用的半透明的 PC 塑料注塑而成，让后在壳体的背面（即内表面）进行喷涂，到达高亮且有深度的质感，Apple 再在这个壳体的正面（即外表面）喷涂一层很薄的铝，然后用激光把多余的铝熔掉，剩下背面所需的图案，最后加上一层防刮的保护层，使用长久救过刮擦后就如上图右所示。

#### 第一代 iPad

![iPad 1st Gen Logo](http://www.hi-id.com/atcl/2017/iPad-1st-Gen-Logo-201710.jpg)

第一代的 iPad 背面的 Logo 为黑色哑光塑料，跟 iMac 一样用来作天线的窗口（上图右[来自这](https://www.ifixit.com/Teardown/iPad+Wi-Fi+Teardown/2183)），以我们现在习惯了亮闪闪的眼光去看第一代的 iPad，会觉得它更像一个偏技术的产品，技术完备但就没“闪亮”。

#### iPhone 4 和 iPhone 8

![iPhone 8 and iPhone 4](http://www.hi-id.com/atcl/2017/iPhone-8-iPhone-4-Logo-201710.jpg)

iPhone 4 以及现在的 iPhone 8 背面使用了玻璃材质，Apple 在丝印玻璃颜色前通过电镀将高亮的 Logo 呈现出来，iPhone 8 上颜色有变动，Logo 色搭配金属中框颜色。

#### Mac mini

![Mac mini Logo](http://www.hi-id.com/atcl/2017/Mac-mini-Logo-201710.jpg)

Unibody 版的 Mac mini 从 2010 年开始，塑料的 Logo 放在顶面，这里有意思的是这个 Logo 苹果图形的形成，如上图所示（图片来自[这个视频](https://www.youtube.com/watch?v=a9y8lckkxF8)），第二步开始，苹果图形的形成不只是在内表面加工，外表面同时也在进行，到了第三步内表面铣出台阶面，而外表面也向下打磨，这样的好处是可以形成苹果图形的那些尖的夹角。

#### Apple TV

![Apple TV 4t Logo](http://www.hi-id.com/atcl/2017/Apple-TV-4th-Logo-201710.jpg)

Apple TV 的 Logo 设计就像是玩高亮和哑光的套圈游戏，它同 iPhone 3G 一样，也是在半透明的 PC 塑料注塑件内表面喷涂黑色形成高亮有深度的表面质感，在内表面喷涂的一个好处是可以很好隐藏红外线穿透的窗口，而在顶面丝印一层哑光油墨，并且镂空 Logo 区域，所以 Logo 区域仍然是高亮的。遥控器也一样被处理成哑光和高亮两种质感，正面一整块为玻璃，并处理成两种纹理，粗糙和光滑了，在背面丝印黑色，最终效果就是哑光和高亮的对比。

#### iPhone 5c

![iPhone 5c Logo](http://www.hi-id.com/atcl/2017/iPhone-5c-Logo-201710.jpg)

iPhone 5c 的塑料高亮质感是通过外层喷涂透明漆来实现，Apple 不仅将颜色藏在透明漆，还包括 Logo 和文字内容，Logo 是在喷涂透明漆之前在壳体上丝印，而文字则是在喷完透明漆之后激光镭雕的，激光是穿过透明漆层在壳体上雕出文字，也就是所有的内容都被透明漆封闭保护。

#### iPhone 硅胶保护壳等

![Apple Silicone Case Logo](http://www.hi-id.com/atcl/2017/Apple-Silicone-Case-Logo-201710.jpg)

Apple 从 iPhone 5c 开始就使用了 Overmolding 工艺的硅胶保护套，并且沿用到同类产品之上，比如 Smart Battery Case 之上。这些硅胶保护套有两层材料构成，外表皮柔软的部分为硅胶，被硅胶包裹在内是一层硬质的塑料（如 PC），先注塑成型硬质的壳体，然后将硬壳放入另一套模具内，然后注塑包裹上硅胶外层。硅胶手感柔软细腻，而且防滑，能提升手感，而且硅胶的弹性性能给结构和设计带来很多便利，比如保护套的弹性可以让手机放入和取出变得方便快捷，Smart Battery Case 上体现更明显，尤其与同类产品的使用体验相比，有活动或弹性需求的地方只要在硬壳上开口然后被硅胶包裹即可。在 iPhone 5c 和 iPhone 6 及 iPhone 6 Plus 的硅胶套的背面，苹果图形的 Logo 是往下凹的，在模具上直接成型，因为模具成型的精度控制得好，所以形状的边缘锐利清晰。然而 Logo 的整体的视觉感知却是非常隐蔽的，不加注意或者稍远一点距离看就很难识别出这个图形，iPhone 5c 的硅胶保护套具有鲜明的特征（孔洞），而对于 iPhone 6 来说，Logo 处的低调处理的硅胶保护套让产品失去了传达性，所以 Apple 在后续的产品上作了改进，从 iPhone 6s 之后的产品，Logo 通过与背景颜色的区分来得到突现。但如果是在硅胶表面直接作处理，丝印或者喷涂，则油墨和颜料的附着力将非常差，经不住磨损，用激光雕刻则会是烧焦的形态，Apple 的处理结果，如果不用手去摸，就会发现像丝印一样贴于表面，而且轮廓清晰，如仔细辨别会发现 Logo 面与周边表面有落差，像是凹刻一样，再仔细辨认，会发现 Logo 其实是另外一件，材料仍然为硅胶。Apple 采用的工艺是在完成硅胶的 Overmolding 阶段，将 Logo 处的硅胶切除掉，然后在镶嵌和粘接上不同颜色但材料仍为硅胶的 Logo，因为硅胶的弹性以及与胶水相溶的特性，可以让其看不出缝隙。这一工艺的考究之处在于切除硅胶时保证不切到内层的硬质塑料部分，需要在硅胶的底部增加一块比 Logo 区域稍大的衬垫材料，详细见专利 [US9749001](https://www.google.com/patents/US9749001) 的介绍。

#### iPhone 5 和 iPhone 5s 等

![iPhone 5s Logo](http://www.hi-id.com/atcl/2017/iPhone-5s-Logo-201710.jpg)

Apple 从 iPhone 5 开始采用铝合金 Unibody 的机身，也是从 iPhone 5 开始使用了一种新的表面处理工艺，实现铝合金上亮哑一体化，并将这种工艺使用到第一代 iPad mini，iPod touch 第 5 代和第 6 代，iPod nano 第 7 代，以及 iPhone 5s 上。以 iPhone 5s 为例，看其背面，会发现苹果图形和“iPhone”字样是高亮的，而且与机身同色，并且是一体的，但有不是亮面和哑面的简单分割，而是亮面部分即 Logo 和字体是高出哑面机身一些，像是贴上去亮薄片，但是它与机身是一体的。另外的一些信息比如型号和设计地则为激光雕刻。（上图[来自这](https://www.flickr.com/photos/janitors/11837329285)）

这种工艺是先将整个金属壳体抛光成镜面，然后用光致抗蚀剂来形成遮蔽区域，然后对未遮蔽区域进行喷砂或化学抛光处理，然后进行第一次阳极氧化，移除遮蔽膜，然后就行第二次阳极氧化，第二次阳极氧化针对的是遮蔽区域，非遮蔽区域因为经过了第一次的阳极氧化受保护就不再受第二次阳极氧化的影响了，如此形成了上述表面效果的 Logo 图案，如要详细了解，可以参考阅读 [US9420713 专利](https://www.google.com.na/patents/US9420713)。

但是到了 iPhone 6 上，Apple 就不再使用这种工艺了。

#### iPhone 6, iPhone 6s 和 iPhone 7 等等

![iPhone 6s Logo](http://www.hi-id.com/atcl/2017/iPhone-6s-Logo-201710.jpg)

之后的 iPhone Logo 设计回到了第一代的工艺上，使用由内向外安装的镶嵌式 Logo，仍然使用不锈钢，但是表面作了氮化钛涂层来着色、提高光泽度和增强硬度。

![iPhone 7 Laser Cut Logo](http://www.hi-id.com/atcl/2017/iPhone-7-Laser-Cut-Logo-201710.jpg)

Logo 区域先通过机加工向下铣薄壁厚，然后通过激光来烧穿背部，形成 Logo 形状，用激光可以保证形状的高精度，包括连接的尖点等。

如今从内向外镶嵌不锈钢 Logo 不只是 iPhone 和 iPad，MacBook 系列也都从发光的 Logo 更新到了高亮的金属 Logo。如 iPhone 5s 的背面的处理方式，遮蔽和二次阳极氧化，镜面和磨砂面有一定高度差，要说物理上的一体性，相比较而言这种方式是最为彻底的，然而它也有缺点，比如工艺复杂，镜面的程度不够，硬度不够容易划伤，另外从用户的视觉体验上来说，容易看作是贴片，镶嵌式的 Logo 虽然物理上是分离的，但是 Logo 略低于外表面，除了可放置一些划伤外，从结构上看起来让人觉得更紧固。

当然，最重要的是它“闪闪发亮”。

#### “向拉斯维加斯学习”

Apple 的产品总是闪闪发亮的，Apple 的设计实践和设计追求具有工匠和艺术家的精神，但 Apple 的产品从来都不是艺术，或者具有高品位，更像是 Billboard Hot 100。而设计师，无论自己在做怎样的设计，为怎样的客户服务，总会将标准定到古典乐，总认为真理在隐士而不在田野，也有的甚至会将 Apple 的产品和设计就归属到古典乐这一方向，殊不知 Apple 设计的精彩之处在于享乐俗世。当生活、产品和设计越来越走向符号化，工匠的旧工具已经无法胜任新的挑战，他需要被扔到闪闪发亮的霓虹灯下。


# J 的艺术，R 的艺术

今天在[微博上](http://weibo.com/2214257545/Ff47uBgZb)看到日本航空（JAL）的视频广告（[Youtube](https://www.youtube.com/watch?v=jf7T7TY7134) 和[腾讯视频](https://v.qq.com/x/page/r0531bq5zfi.html)），这个广告叫做《The Art of J》（J 的艺术），共分三篇，分别是《Precision》、《Privacy》和《CONNECTIONS》（精度、隐私和连接）。广告视频拍摄得很美，比如《Precision》中厨师凭着高超的技艺使每一个手工做出的寿司重量都是 27 克，打出的广告语是“Precision is in our culture.”（精度在我们的文化中），五次获得世界上最准时航班的殊荣，用手工难于控制的寿司重量与航班的精准形成对应的阅读关系。接着的《Privacy》是来讲座椅空间和乘坐环境的私密性好，没有什么东西能来打扰你，一位折纸艺术家在他的商务舱内作出了一件复杂又漂亮的折纸作品。通过 [JAL 的网站](http://www.jal.co.jp/en/inter/service/business/seat/skysuite.html)可以看到这是他们商务舱的座位，这一套的座位设计以直线型为主，在转角等地方使用了很多三角元素，看上去整个空间都是平整和有效率，不受打扰。

![the table in JAL 777-300ER](http://www.hi-id.com/atcl/2017/the-art-of-r-table-in-JAL-777-300ER-2.jpg)

但是在看《Privacy》这个视频时，全程都在受打扰，而打扰来自于旋转桌，这个带圆角的旋转桌设计与整体舱位设计看上去有点格格不入，大圆角与小圆角的直线折角设计，更怪异的是这个桌子的四个圆角还是不一样的大小，绕着顺时针方向一级级增大。

![the table in JAL 777-300ER](http://www.hi-id.com/atcl/2017/the-art-of-r-table-in-JAL-777-300ER.jpg)

有意思的是，《Privacy》这支广告中的道具摆设却很细致，看上图这个具有颜色渐变的纸片的排列，右上和右下两处角落的纸片似乎在印证 1 和 2 两处的圆角大小不同，虽然左下违背了这一规律，但是可以看出上图的四个圆角依次在增大，按照 [JAL 的网站](http://www.jal.co.jp/en/inter/service/business/seat/skysuite.html)对这个旋转桌子的示意，可以判断这几处的圆角设计并不是因为旋转这个功能需要来确定的，或许通过圆角的大小在示意旋转的方向，如果是这样就太过于隐晦了。

比圆角大小更“干扰”人的是圆角处理，设计师使用了简单的圆角工具，圆弧与两头直线的过渡方式只是 G1 切线连续，看右上角的大圆角处尤其明显，两段直线，中间一段 1/4 的圆弧形成的圆角。

如今人们经过 Apple 产品的美学特征熏陶，尤其是 2013 年 iOS 7 发布时，将界面的圆角四边形图片也改成了曲率连续的圆角四边形后，不只是设计师，大众对这些细节的处理也敏感和直接了，或许以前只是觉得不太顺畅，现在就会立刻发觉。在平面上讨论圆角的形态，各种连续的表现，\[ i D 公 社 ] 在 2009 年就经过一次讨论。

![the art of r alias](http://www.hi-id.com/atcl/2017/the-art-of-r-alias-1.png)

G0 还是 G1 连续指的是两条曲线形成连接的数学关系（直线是曲线的一种），曲线具有曲率（按定义说就是曲线上某个点的切线方向角对弧长的转动率），大小即曲率半径的倒数，所以通常我们说一条曲线越平缓，越接近直线也就是它越“不曲”，就是曲率越小，曲率越大曲线就越弯曲。连续就是调查连接处的曲率关系。

如上图所示（图形来自与 [Alias 帮助页面](http://help.autodesk.com/view/ALIAS/2018/ENU/?guid=GUID-882B194B-E044-4921-B130-47391EFA1443)），有 G0、G1、G2 和 G3 四种连续，G3 以上的连续可以按 G3 的描述向上理解，但是除了特殊需求，通常很少用到 G3 以上的连续。上图绿色的如梳子一样的线，表示着此处曲率的大小（越长曲率越大），称作曲率梳状线，曲率梳状线的外轮廓形成曲线也是连续的。G0（位置连续）指的是两条曲线相连接，但是两条曲线仅仅是相连接，在连接点位置的切线方向不一致，所以梳状线在此处形成了一个角度。G1（切线连续）指的是两条曲线不仅仅是相连接，在连接点位置的切线方向一致，但是曲率半径的大小不相等，所以梳状线在此处虽然共线但各有长短。G2（曲率连续）指的是两条曲线不仅仅是相连接，在连接点位置的切线方向一致，而且曲率半径的大小也相等，所以梳状线在此处不仅共线而且长短相同。G3（曲率连续）指的是两条曲线不仅仅是相连接，在连接点位置的切线方向一致，而且曲率半径的大小也相等，进一步在此处的曲率变化率也是相同，所以梳状线在此处不仅共线而且长短相同，而且梳状线的外轮廓线在连接点位置是切线连续的。更高阶的连续形式就是依次往下推进。

![the art of rounded corner](http://www.hi-id.com/atcl/2017/the-art-of-r-rounded-corner-1.png)

在直角上形成的圆角如上图所示，仅仅以 G1 和 G2 为例子，直线的曲率为 0，它的曲率变化率也为 0，所以在与直线相连时，G3 及更高的连续没有意义。G1 就是使用 1/4 的圆弧来形成两条直线的连接的，圆弧的曲率在曲线的每一处都是相等的，所以与直线相连，就形成了从 0 到某一个曲率的跳动，在视觉效果上就是曲线的不连续感，在曲率发生变动的一段。而 G2 保证了曲率从 0 逐渐增大的过程，所以在视觉效果上它是连续光滑的。而从直线到曲线不同的过渡形态，也会带来不同的结果。

![the art of r alias](http://www.hi-id.com/atcl/2017/the-art-of-r-alias-2.png)

上图[来自这](http://help.autodesk.com/view/ALIAS/2018/ENU/?guid=GUID-E1BDFBD0-33CC-44C4-866D-5F367105A050)，显示了同一连续条件下，即 G2 曲率连续情况下，不同的过渡形态，可以从梳妆线的形状来对比，即曲率变化的加速度的不同。左图为先缓和再急剧在缓和，右图为先急剧再缓和（接近匀速）在急剧，中间的为介于两者之间，左图容易在中间形成曲率的最大值，而右图中端更接近圆形。

在用 G2 连续的曲线来制作圆角时，一般需参照上图右的梳状线形态，因为我们需要用一条曲率连续变化的曲线来模拟曲率恒定的圆，G0 连续的圆角即 1/4 圆弧虽然在头尾处的曲率突变给人带来不顺畅的视觉体验，但是它的圆度是确定的，我们用 G2 连续的曲线来制作，除了需照顾到头尾过度的顺畅，还要照顾到它的中间段与圆足够接近，也就是要求保证它的圆度，让它的曲率看上去尽可能相同，那么在圆角上，我们识别到“曲”的地方就是中间段，所以它的曲率变化梳状线应该如右图所示。

![the art of r alias](http://www.hi-id.com/atcl/2017/the-art-of-r-alias-3.png)

上图[来自这](http://help.autodesk.com/view/ALIAS/2018/ENU/?guid=GUID-E1BDFBD0-33CC-44C4-866D-5F367105A050)，圆弧形成的圆角好处就是它的数字是确定的，也就是可以描述，可以口头传递，所以在设计和制作过程中，形态的传递很方便，比如说“R=5 mm”的圆角，即使我们在此处用 G2 的曲线来模拟，我们也会说 R 等于多少，自由曲线 NURBS 曲线是计算机来描述的，无法口头描述。所以在日常的工作中，我们通常会先确定这个 R 值，然后再来绘制过渡曲线，而我们绘制的 G2 曲线需要一个过渡的区间，这个区间往往需要比圆弧形成的圆角过渡更大，以便在中部达到跟圆弧圆角一样的数值，即我们确定的 R，如上图所示，左图为 G0 的圆弧圆角过渡，中间为变化区间不变，但是中间的 R 值就发生了变化，而右图则把两头的连接点位置向各自方向后退，以便曲线的中段达到所需的 R 值。

![the art of rounded corner](http://www.hi-id.com/atcl/2017/the-art-of-r-rounded-corner-2.png)

G1 和 G2 连续的不同数学特性不只是在正视的情况下能够识别出来，在透视的情况下也能分辨而出，透视是在视平面上的投射，所以是从 0 跳到一个数字，还是从 0 逐渐过渡到一个数字，投射之后这种特征是维持的。

但是最终作用于我们的是视觉效果，而不是数学关系，我们可以辨别处不同的顺畅程度，但是无法测出它的数学结构，而且我们看到的所有东西都是模拟世界的实体，数学只是对关系的一种归纳。就好像我们用放大镜去看产品的每条边线，它们都是连续的，只有我们通过辨别和归纳后，才能猜出设计师是否采用了 G2 曲线连续，所以，我们对曲线连续的分辨和执行，除了在软件中使用各种数学工具检测外，更重要的是退到宏观一层，就像去看待一个已经制造完的产品去观察。

![the art of rounded corner](http://www.hi-id.com/atcl/2017/the-art-of-r-rounded-corner-3.png)

也就是说，并不是 G2 连续是万能的，或者时刻都必要的。

就好像《Privacy》这个视频中，我们最容易判断它是 G1 连续的就是来自与右上角的大圆弧，原因不在于它的 R 值大，而是与直线边形成的对比关系，比如上图所示的左图，就很难分辨出它是 G1 连续还是 G2 连续。

另外从制作的矢量图到输出成上图的点阵图，有一个栅格化的过程，栅格化就像是工业生产中的一种加工，它也有加工精度，加工会影响到最终曲线连续的视觉特征。比如在设计图纸上圆角过渡是 G1 切线连续，但是到了机床、抛光、打磨等等生产制程，圆角过渡可能变得更自然顺畅，尤其是如上图左这样的小圆角，如果是大圆角，像 JAL 商务舱旋转桌的左上角一样，就很难通过后续的加工过程来自我修正，因为它太大了必须在设计时就作出决定；在矢量图到点阵图的栅格化过程中也会如此，所以时刻关注宏观化后的效果也是同样重要的。


# 从圆角到圆角

### 从圆角到圆角

iPhone 一直都是关于屏幕，Steve Jobs 在 2007 年发布会上就将第一代 iPhone 的 3.5 吋显示屏称为“巨大的屏幕”，而在 iPhone [设计最初阶段](https://www.cultofmac.com/488008/jony-ive-book-excerpt-iphone/)也同“无边泳池”这个意象相关联，所有的设计元素遵从于屏幕而不能让用户分心，全屏幕设计的 iPhone X 将对这一理念的执行提到具有划时代意义的高度之上，由 iPhone X 划分前后两个时代。

![iPhone X Corner](http://www.hi-id.com/atcl/2017/iPhone-X-Design-Corners-1.jpg)

但是仅一块大屏幕无法开启未来，屏占比和边框宽度之类的参数指标无法用来作为时代划分的依据，用户的认知并非受控于一些参数条，从 89% 增大到 90% 对用户来说并没有质的改变。质的改变必须作用于用户的认知，不是用语言上的假象或者宣传手段来说服，而是用真象和产品，递出一把钥匙，也就是设计。

一个革命性的产品背后有大量的技术的支撑，每一处创新的实现背后又有大量的繁杂的具体工作，但是用户认识到的却是产品的“外在形象”，这个外在形象具有自明性，并非技术使然，用户认识到的产品的外在形象与技术无任何关系，比如用户认识到的手机就是它的外在形象，手机里面的 CPU 或者制作这款手机的工艺等对用户来说没有意义，因此，设计师工作的两面性在于，台前，需要将外在形象与背后的技术相隔离开，幕后，则需要为实现这个外在形象去与背后的技术形成关联。我们看到的那些炫技的设计，就是设计师期望外在形象与背后技术形成关联，以及我们经常能见到的那些以参数为目标的设计，也是如此。

产品的外在形象越简洁越易识别，越脱离技术关联就越有说服力。

很多手机厂商在宣传自己的大屏幕手机时，总会使用到一个手段，比如是平面广告还是视频上，那就是让手机屏幕内的内容与所处的背景融合在一起，让人感觉手机消失了，或者说边框消失了，这种宣传手段在强调的恰恰是手机的技术参数一面，而与“外在形象”没有太大关联。

iPhone X 上脱离了技术关联的就是全屏幕，而塑造 iPhone X 的全屏幕外在形象最重要的设计特征就是四个圆角。柔性 OLED 屏幕的切割和折叠，相应的电路堆叠技术，或者是圆角处的次像素反走样渲染等等技术内容，对厂家来说，可以用此辅助来向用户说明自己创新的独特之处，但对于用户来说，真正关心的只有外在形象，也就是这块独特的圆角全面屏。通常来说，如此大的圆角的屏幕是反技术的，不符合技术的理性导向，也就是为什么它需要更多额外技术支撑的原因，但在产品之上，在用户关心的外在形象之上，这个圆角屏幕却是非常自然的结果，依照手机的形态形成的均一的屏幕外轮廓符合全面屏的概念；而另外一面，突破常规的形象（屏幕总是四四方方的）则又能表现出它的革命性。

Apple 标志性的圆角曲线在 iPhone X 的应用，将其划时代的意义通过外在形象向前推了一大步，并与其他厂家的类似产品形成差距，人们将进一步认为 iPhone X 才是真正的全面屏，而其他的设计，如屏幕的外轮廓没有追随机身形态，都会被认为不够彻底的。与此同时，如果屏幕的圆角很小，它就更像一个技术革新产品，无法脱离技术关联感，也就是无法为用户的认知带来革新。在 iPhone X 上，屏幕的圆角，以及因这个圆角形成的整体形象的重要性，从 Apple 对屏幕上端的缺口处理就可以得到验证。从 Apple 的产品图和宣传资料上看，对屏幕的缺口（Notch）不仅毫无掩饰，而且还加以强调和渲染，为突出 Face ID，为形成一个标志性的视觉元素，也是以不避讳的方式在强调全屏幕形象。我们甚至可以确定，iPhone X 上端屏幕缺口两侧的圆角区域，就是为了营造“外在形象”，从功能、技术和理性层面来说，更倾向于将屏幕上端做齐平而无缺口，这个外在形象是如此重要，Apple 甚至在软件界面上也不去对这个缺口作过多的掩饰。

![iPhone X Corner](http://www.hi-id.com/atcl/2017/iPhone-X-Design-Corners-2.jpg)

如我们所知，从 iOS 开始，Apple 将产品上的圆角曲线应用到界面之上，主要是围绕着圆角四边形的图标上，而从 iPhone X 上的 iOS 11 上可以看到，在界面上加入了更多圆角曲线的元素，就像上图所示的一角所展示，从外到内，形成了一层层更加连续的多度，从最外侧的圆角开始一直等距递进到电话图标，如果去仔细核算，这个角落可以数出至少 7 条等距圆角曲线。

到处都是圆角。

![Xerox Star 8010 and Mac 1984](http://www.hi-id.com/atcl/2017/Xerox-Star-8010-Mac-1984.jpg)

早期的计算机采用的是 CRT 显示器，而 CRT 显示器是用真空玻璃管做成的，要保证它的安全和密闭性，以及可制造性，CRT 显示器玻璃要做成凸面的，而且四周的外轮廓并非四四方方，而是向外凸的弧线形成的四边形，四个角当然就为圆角，所以，早期的 CRT 显示器基本都是外凸并且四角都有大圆角。

上图分别是 1981 年的 Xerox Star 8010 和 1984 年的 Macintosh 电脑，可以看出当时围绕着屏幕的设计是如何抵消弧面屏幕的反直觉性，通常的方式就是用罩壳圈出一个相对四方的显示区域，比如 [Xerox Alto 那样](https://en.wikipedia.org/wiki/Xerox_Alto)，而四角的圆角处理可以让显示区域显得更平（因为四角形态收缩更厉害）。Xerox Star 8010 在罩壳下都为内容显示区，而 Macintosh 则有大的黑边，内容显示区域面积更小也更为平坦，Macintosh 上的这个黑边为界面显示黑色，并非显像管上的非显示区，与“用黑色来掩盖 iPhone X 上的屏幕缺口”同理。

Macintosh 界面四周有小小的圆角，可以看出是经过设计的圆角。

![Apple RoundRects History 1981](http://www.hi-id.com/atcl/2017/Apple-RoundRects-History-1981.jpg)

左图为 1983 年发行的 Lisa Office System 3.1（图片来自 [Wikipedia](https://en.wikipedia.org/wiki/Apple_Lisa)），可以看到界面的四角，以及计算器的界面轮廓都出现了圆角四边形。

按 Andy Hertzfeld 在 [The Original Macintosh](https://www.folklore.org/ProjectView.py?project=Macintosh\&sortOrder=Sort+by+Date) 中所写，Apple 在软件界面上出现圆角四边形可以追溯到 1981 年，Andy Hertzfeld 在 [Round Rects Are Everywhere!](https://www.folklore.org/StoryView.py?project=Macintosh\&story=Round_Rects_Are_Everywhere.txt) 这一节中说到了圆角四边形诞生时的故事。当时 Apple 的天才程序员 Bill Atkinson 正向团队展示他是如何用一种聪明的方法可以在仅有 68000 处理器的 Lisa 和 Macintosh 机器上快速画出圆和椭圆，Steve Jobs 看了之后有另外的想法，他说：“圆和椭圆都不错，但是能画出带圆角的四边形吗？我们现在也能画出吗？” Bill Atkinson 回答说很难做到，而且他认为并不真需要圆角四边形，Steve Jobs 就立刻强烈回应了：“到处都是圆角四边形！看看这个房间周围就知道了！”并且还带着 Bill Atkinson 出去转看可以碰到多少圆角四边形，最后 Bill Atkinson 被说服，第二天下午就拿出了满意的结果。

接着，圆角四边形在 Apple 的软件界面上到处都是了。

### iOS 的圆角图标

![iOS 7 Rounded Corner Icon](http://www.hi-id.com/atcl/2017/iOS-7-Rounded-Corner-Icon.png)

2013 年随着 iOS 7 的发布，Apple 将 iOS 上的标志性的圆角图标轮廓作了更新，将工业设计中的曲线连续概念应用到了视觉设计之上，iOS 7 之前的圆角图标，也包括通常的平面设计软件中绘制的圆角四边形，圆角部分为一段圆弧，那么在直线和曲线的连接点处曲率从 0 立刻过渡到一个恒定的数值，带来的视觉感觉就是过渡不顺畅，保证顺畅就需要让直线到曲线过渡中形成一个连续的变化，从 0 逐渐地过渡到某个数值，而不是从 0 跳动到某个数值。在实际操作中，并非一件简单的事，曲线的过渡也是一件讲究技艺的事，也要求一定的数学意识。

iOS 7 在介绍新的圆角图标轮廓时，给出了上图右的一张线框示意图，图中在圆角处密密麻麻的点让人感到困惑，并非难以逆向破解，由于最近 Apple 在 UI Design Resources 上给出了 [iOS UI 素材的下载](https://developer.apple.com/design/resources/)，里面包含了这个圆角图标轮廓的矢量图，我们可以通过这个矢量图可以挖掘到一些信息。

**简单的概念**

![iOS icon rounded corner study](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-0921-1.png)

在前文《J 的艺术，R 的艺术》已经对曲率连续一些基本概念作过介绍，在此稍作重复一下。

上图 a 为 1/4 圆弧过渡的圆角，iOS 7 之前的圆角图标，通常平面软件绘制的圆角四边形，以及通常我们称作“导圆角”，都为上图 a 所示的方式。因为直线的曲率为 0，而圆弧的曲率为一固定值，所以从直线到圆弧有曲率的突变，虽然是切线连续（G1 连续），但是无法达到曲率连续（G2 连续），这种过渡的不顺畅我们可以通过视觉很明显地感觉到。

上图 b 为用一段曲线替代了 1/4 圆弧作过渡，绘制时要求连接直线的两端达到曲率连续，即这段曲线的曲率是从两端的 0 逐渐连续的增大的，我们能够从图形的四个角上看到过渡顺畅，但是，存在一个问题就是，看上去四个角不够圆了。虽然光滑但不够圆，我们也可以从曲率的示意图中观察到，这条曲线曲率的变化不具备圆的特征，因为圆的曲率处处相等，均质而统一的。

我们需要做的是将上面两种情况进行综合，曲线与直线连接端来保证过渡的顺畅，而尽可能提到曲线的圆度，即让曲线中间段的部分曲率的变化极为缓和，接近圆的均质统一的曲率特征。

上图 C 就是采用这种策略的一种示意，曲线两头连续过渡，中间部分过渡缓慢，接近均等。

但是上图 C 所示仅为一个粗略的示意，在实际的工作中，要求将会比这更高，比如说对圆度的要求到底是要多高，甚至包括曲率过渡是以怎样的速度或加速度来进行也可能需要在考虑之中，另外也将牵涉到数据的传递，比如从设计到生产，如何来保证形状在传递过程中的保真性。

但我们先否定几个通常对 iOS 圆角图标的猜测。

**iOS 圆角图标不是超椭圆**

![iOS icon rounded corner study Superellipse](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-Superellipse.png)

一个有趣的现象是，逆向如果是更多依赖于猜测，会发现结果就是指向自己的假设，而在讨论 iOS 圆角图标是怎样的图标和曲线，或者去拟合产品上的曲线，甲乙丙丁走向不同方向，而且谁都认为自己是正确的，而且一看拟合结果，严丝合缝。

比如 iOS 7 发布不久，[有人认为](https://twitter.com/marcedwards/status/347451374214213633)是超椭圆（[Superellipse](https://en.wikipedia.org/wiki/Superellipse)），可能不少人看到超椭圆这个吓人的专业词就认为八九不离十了，而且一看两者[相拟合的图](https://imgur.com/RfAk1lv)，严丝合缝，而且还给出如何在 Photoshop 中使用的指南，但是殊不知平面软件使用的 3 阶贝塞尔曲线，而拟合用到的却是一个 5 次方程式。其实超椭圆从头到尾都是曲线，而没有一条直线段，iOS 7 的圆角图标明显有直线部分，如果连这都能匹配上，可想而知用视觉来判断是否高度拟合是多么不可信。

如 [Wikipedia 所述](https://en.wikipedia.org/wiki/Superellipse)，超椭圆是椭圆函数的一般化，即当曲线阶数为 2 的时候为椭圆，当阶数为 4 的时候，如上图左所示为方圆形（[Squircle](https://en.wikipedia.org/wiki/Squircle)），介于圆和方之间图形（Nokia 的 MeeGo UI 图标被认为是类似 Squircle ），上图右为阶数为 5 的曲线。

从视觉上就能看出超椭圆是曲线，找不到具有圆度的地方，从曲率分布示意图就可以看出，曲率总是在连续过渡，而且阶数越高加速度就越大，即曲率过渡的光滑程度越高。

![iOS icon rounded corner study Conic Corners Rectangle](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-Conic-Corners-Rectangle.png)

与超椭圆有些类似的是 Rhino 里一个圆角工具（右键点击），圆锥曲线圆角四边形，是用一段圆锥曲线（二次曲线）绘制成 1/4 图形，圆锥曲线圆角四边形的一端极值为圆，而另外一端极值为直角四边形，所以圆锥曲线圆角四边形是不具有圆度的曲线。圆锥曲线因为阶数不高，所以曲线的数学结构较简单，适合绘制一些不圆不方的图形，可以与上面的超椭圆曲线来比较，就会发现圆锥曲线圆角四边形的线条的塑造能力不及高阶的曲线，即一个跨度内曲线的形态塑造能力非常有限，所以除了特殊要求，通常很少用到这一类曲线。另外由于它是二次曲线，所以数据输出的时候需留意。

**iOS 圆角图标不是羊角螺线**

![iOS icon rounded corner study Euler spiral](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-Euler-spiral.png)

羊角螺线（[Euler spiral](https://en.wikipedia.org/wiki/Euler_spiral) 或者 Cornu spirals）同上面类似，如果来拟合 iOS 的圆角图标，也可能会达到高度匹配的结果，但实际并不是。

以前羊角螺线常用于公路和铁路工程之上，“以缓和直路线与圆曲路线之间的曲率变化”（[Wikipedia 介绍](https://zh.wikipedia.org/wiki/%E7%BE%8A%E8%A7%92%E8%9E%BA%E7%BA%BF)）。而羊角螺线的主要特征是，它的曲率从 0 开始，而且是随着曲线长度（弧长）增大而线性增大，所以当一条羊角螺线的尾部与一个圆形相连时，那么这条曲线肯定是曲率连续的。如上图右所示的两种图形，一条为与圆相连（圆角四边形内部），一条为一段羊角螺线的镜像连接（圆角四边形，左上角），它们都是曲率连续的（G2 连续）。

正因为羊角螺线的这个特性，随着曲线长度的增大曲线呈线性增大，让其具有不少应用之处。在上图右中，虽然我们看到了曲率的变化率曲线（红线）具有尖点和不连续性，但是曲线本身（低一阶次）是光滑连续的。上图右的圆角四边形左上角使用的是一段羊角螺线的镜像连接，它的曲率从 0 线性增大到某个值，然后又降回到 0，按我们上面的基本概念中介绍，这样的曲线是不具有圆度的。

那么羊角螺线既然有这样的特征，我们可以在中间加入一段圆弧，如上图右的圆角四边形的右上角所示，就得到了一个连续的圆角，而且圆度有保证，首尾与直线段也是曲线连续，而且三段曲线形成的圆角的曲率的变化率，虽然不是连续的，但也是非常简单的数学结构，从 0 增大到某一数值，停留，然后再降到 0。而羊角螺线可以用三次曲线来趋近，那么在实际的应用中就有相应的方便之处，比如在平面的矢量绘图软件中使用，来绘制类似 iOS 圆角图标的曲线连续圆角四边形。

![iOS icon rounded corner study Euler spiral](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-Euler-spiral-2.png)

方法是，从 Wikipedia 可以下载到满足使用的[羊角螺线矢量图](https://en.wikipedia.org/wiki/Euler_spiral)（SVG），然后就是定义圆角曲线中圆弧的大小是多少，然后确定这段圆弧占圆角曲线总长度，也就是画好如上图 1 所示的图形，然后按如图 2 所示画出圆弧一端的切线和法线，并画出直线的垂线，形成一个类三角形，接着将这个类三角形移到羊角螺线之上，定好位置，如图 3 所示，然后移动斜线，找到这条斜线与羊角螺线的相切位置，切断羊角螺线如图 4 所示，得到一段羊角螺线，作放大或缩小动作，装入圆角曲线的圆弧两头，完毕如图 5 所示。

这种绘制方法可以方便地在平面软件内完成，因为目前平面软件没有其他相应的工具来直接或辅助绘制这样的圆角四边形，即保证曲率连续又保证圆度。那么曲线推敲的关键在于确定圆弧段的大小以及占整体曲线长度的比率。

用羊角螺线以这种方式（两端羊角螺线中间圆弧）绘制的圆角四边形的缺点有两个，一个就是形成的整条曲线它的曲率连续但曲率的变化率不连续，第二个就是羊角螺线段的曲率增大是线性的，所以虽然曲率具有加速度但曲率的变化率是恒定的。当对曲线的品质有更高要求时，或者是在三维产品上实现时，不仅对产品的形态还对产品的高光等光学表现有要求时，就可能需要用到更加光滑和连续的曲线了，因为重要的是，这一切的区别都有可能被眼睛看到。

**iOS 圆角图标**

![iOS icon rounded corner App Icon](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-App-Icon-1.png)

Apple 的 [UI Design Resources](https://developer.apple.com/design/resources/) 网页上，提供了 iOS 的 UI 素材下载，在素材里面提供了 iOS 圆角图标的矢量图，可以导入各种绘图软件中使用，而且提供的矢量的布点方式和 iOS 7 发布时对圆角图标描述的布点一样，所以这个矢量图的原真性就可以得到确认。

iOS 的圆角图标从宏观上看由 4 条直边和 4 条曲线形成的圆角组成，从圆角曲线的曲率变化示意图中可以看到它符合我们上面说的要求，即首先是曲率连续的曲线，然后能够保证曲线的圆度，让它看起来就像圆弧一样，另外我们也可以看到曲率变化具有加速度，曲率变化的状态大致可以分成五个阶段，第一阶段，也就是接近直线处，以缓慢的速度增加曲率，到达某一值进入第二阶段，也就是快速增长阶段，达到一定程度后，就连续光滑地过渡到第三阶段，以极其平缓的速度变化几乎匀速一般，也就是圆弧阶段，之后的变化过程就是反方向，第四阶段是快速降低，第五阶段是缓慢降低到 0。

在圆角处“缓慢—加速—平缓—加速—缓慢”的变化轨迹是典型的，但具体到应用上亦要看具体情况，并不是做到同 iOS 圆角图标的曲率变化曲线就能符合各种要求的。

![iOS icon rounded corner App Icon](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-App-Icon-2.png)

iOS 的圆角图标在圆角处的曲线有 11 个分割点分成了 10 段曲线，它们都为 3 阶贝塞尔曲线，如果仔细看这 10 段曲线，会发现它们前后相连并非是严格的曲率连续（G2 连续），看曲率示意图在相邻的两端曲线见，曲率的数值有略微的跳动。并不是形成了尖点，而是有台阶段差，如上图蓝色圆圈处所示，这些台阶段差在每两段前后相连的曲线交点处都能找到，只不过太小在上图无法看出。

虽然再严格的数学意义上来说，这样的曲线连接只能达到切线连续（G1 连续），但是我们谈论是否达到一种标准，还要看公差范围，如果在公差范围内，那么它就是曲率连续。而更为重要的是，我们要从宏观上从视觉上从实际应用中去判断，所以有这样的台阶段差在这对曲线的光滑没有影响。

那么这些线段和段差是如何生成的呢？我们先来分下一下圆角处的曲线。

![iOS icon rounded corner App Icon](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-App-Icon-3.png)

如上图所示，我们对分段的曲线进行测量，测量它的曲线长度（弧长），会发现上图所标的这些线段的长度都是完全一样的，除了靠近直线端的两条曲线段，它是作了再次的分割。

而这个再次的分割，将一段曲线长度为 a 的曲线分成两段曲线，曲线长度分别是 0.46\*a 和 0.54\*a，这个切割方式看上去很随机，推断有三种可能性：一种为作者留下的签名，可用来追踪（万一被他人侵权使用）或其他作用；第二种可能是留下的干扰因素，来干扰逆向；第三种可能是为了保证数据在传输过程中的安全和保真性。

![iOS icon rounded corner App Icon](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-App-Icon-4.png)

上图是保证数据传递中的安全和保真性的一个例子，第一条曲线为 5 阶曲线与直线曲率连续，所以交点位置的曲率为 0，如果这条曲率连续的曲线不作处理，传递给最高只有 3 阶曲线的软件，那么曲线转化过程中很有可能变成中间这样，如蓝色所示位置曲线弯曲方向发生了变化，为了避免这种转化过程中不必要的错误发生，在一些极值处，比如从 0 开始的变化，将其设置到一个与 0 接近的数值，比如上图所示，可以给其一个非常微弱的曲率。（注：此为个人经验，并未经过理论上的验证）

我们可以不必去追究 0.46\*a 和 0.54\*a 的由来，因为我们能确定的是 iOS 的这写曲线段的曲线长度（弧长）是均等的，而且都是 3 阶曲线。那么，首先能否定的，这个图形肯定不是设计师一条接一条画出来的，也不是由程序自动生成的，因为这 10 段曲线是太多可能性里面的一种，所以合理的解释就是通过其他曲线，更高阶的曲线，转换为多段的 3 阶曲线，而这个转换过程是以均等曲线长度为依据的，也就达到上述的多段曲线长度为 a 的曲线组成的圆角。

那么为什么不用 3 阶多段的曲线来直接绘制呢？因为 3 阶曲线[内部最多只满足 G2 连续](http://help.autodesk.com/view/ALIAS/2018/ENU/?guid=GUID-151252E8-8E7F-4119-90D1-9784A81C402A)，所以无法用它来有效的绘制顺畅的曲线，如果要使用多段的曲线就需要用到高阶曲线，比如 5 阶或 7 阶。

![iOS icon rounded corner App Icon](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-App-Icon-5.png)

iOS 圆角图标是如何来保证圆度的呢，我们可以看一下圆角部分最中间的两段曲线，按照上面长度的关系，中间两段曲线占总曲线长度的 1/4。我们能看到一段曲线两侧的 R 值有微弱的差别，可以说明这两段设计师就是以圆弧来要求的，但是为什么会不一样，因为是用 3 次曲线来逼近圆弧，如果使用 2 次曲线就可以画出曲率完全均等的圆弧，但是 2 次曲线的引入，将为后续图形的追加以及数据传递带来不可预见的复杂性，在 3D 相关的设计中，绝大多数的场景中，都需用 3 次曲线来绘制圆弧，基本上的软件都提供 3 次曲线绘制圆形的工具。

![iOS icon rounded corner App Icon](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-App-Icon-6.png)

因此，绘制问题就如上图所示，需要事先确定的就是 X、R 和 L 的值，这些数值的确定就是这个圆角的设计工作。X 就是直线一端与圆弧圆心的距离，X 肯定为正值数字，用圆弧来形成的圆角，就是此前提到的 G1 连续圆角，X 值为 0。R 代表的圆角的大小，但因为我们要作的是曲率连续的圆角，使用到的一端圆弧小于 1/4，即上图的 L 值，所以在设计 R 的大小时并不能完全依赖于 G1 连续圆角的感觉。X、R 和 L 值的确定是需要反复推敲，不断画草稿来寻找的过程。

一旦 X、R 和 L 值确定，我们就是怎么来绘制图形的问题了。

![iOS icon rounded corner App Icon](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-App-Icon-7.png)

上图是达到 iOS 圆角图标最直接快速的方法。图 1 是在两个直线段之间作一条 7 阶 2 Span 的曲线，即总共控制点有 9 个控制点，7 阶曲线具有很高的塑造性，而且在此处为对称性图形，所以只需要操作 4 个控制点就能完成任务，第 2 和第 3 个控制点受制于曲率连续将与直线共线。图 2 是去拟合圆形，尤其是斜线区域内要做到高度拟合，来回操作控制点。图 3 是当曲线调整到满意后，从中间断开。图 4 是再向下断，将圆角曲线的一半断成均等的 4 等份，得到的 4 段曲线长度相同的 7 阶曲线。图 5 是将这 4 段 7 阶曲线转换为 3 阶曲线（4 个控制点），并且作微调，保证两两相接的曲线切线连续，并且将曲率的段差控制到尽可能小。图 6 就是镜像后的结果。

这个绘制方法的关键点在于拟合圆部分，需要靠操作控制点，亦可借助一些分析工具（比如分析最大最小曲率的差值），让曲线尽可能接近圆形。另外一个要点就是曲线要先分段再降阶，这样可以很好的控制好因降阶带来的形变，如果在第三步直接将完整的 7 阶曲线转为 3 阶 8 段曲线，不仅形状误差会超出允许公差，更糟糕的曲率变化曲线将很难达到光滑。

而这个方法有一个缺点就是圆的拟合部分，需要耗费操作的时间，而且圆角曲线的中点并不在事先给出的确切位置上，改进方法如下。

![iOS icon rounded corner App Icon](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-App-Icon-8.png)

让一段 5 阶 2 Span 的曲线一端与直线曲率连续，另外一头与中间的圆弧去作曲率连续，其余操作手法类似上一方法，均分曲线段，降至三阶曲线，微调曲率，镜像完成。

以上方法都是指来完成类似 iOS 图标圆角处 10 段曲线的绘制，而实际中有时候并不需要这么复杂，那么可考虑用以下方法。

![iOS icon rounded corner App Icon](http://www.hi-id.com/atcl/2017/iOS-Icon-Coner-Study-App-Icon-9.png)

我们已知了三段曲线，那么直接用一条 5 阶的曲线完成直线和圆弧之间的连接，只要调整好曲线的曲率变化即可。

另外也可以用一条 3 阶曲线来完成，当使用 3 阶曲线时，只有一个控制点可供操作，因为另外一个控制点要满足与圆弧连续，又要与直线连续，就必然位于直线的延长线和圆弧端点处切线的交点上，所以可以拖动这个可供操作的控制点，来达到曲率连续，曲率连续的位置点存在并且只有一个，虽然用手拖动操作只能尽可能逼近，但正因为这样的特点，即如果用 3 阶曲线来完成直线和圆弧之间的曲率连续，这条 3 阶曲线是确定的，所以可以用算法来完成求解，前提是前面说到的 X、R 和 L 值确定。在但 X、R 和 L 值确定的情况下，用此方法来形成三段曲线的连接，有时效果未必很好，比如上图右下所示的 3 阶曲线段，曲率的最大值出现在内部而不是尾部，这将影响到曲线的质量，如果此情况下 X 值可以变动，即这条 3 阶曲线与直线连接位置可以微调，可能会带来较好的效果。

尽管用 3 阶曲线来完成圆角曲线的绘制相对简单，只需要动一个控制点，但在平面软件中来绘制，因为缺少曲率分析和呈现的模块，所以还是难以实现操作。

前 Apple 出色的交互设计师 Bas Ording（就像 iOS 时代的 Bill Atkinson 一样）在 2013 年申请了一项专利（2016 年获准）[US9396565](https://www.google.com/patents/US9396565)，专利名称是“用户图形界面元素中边界的渲染”，专利内容就是用 3 阶曲线来绘制圆角四边形，而基础正是基于这条 3 阶曲线的 4 个控制点具有约束性。

![Bas Ording Rendering borders of elements of a graphical user interface](http://www.hi-id.com/atcl/2017/Bas-Ording-Rendering-borders-of-elements-of-a-graphical-user-interface.jpg)

Bas Ording 采用算法来完成，基于 3 阶曲线与两段的直线和圆弧形成曲率连续后，这条 3 阶曲线的控制点位置的特征。他的圆角生成需要先输入圆弧段的半径，以及圆弧两边两条非圆弧曲线占圆角曲线整体弧长的比率，以这两项参数输入就可以生成圆角曲线，如果在输入四边形的长和宽，就可以生成圆角四边形。他的算法我并没全看明白，而他给出的结果是上图中的 Q2Q1 间的距离是 Q3Q2 的两倍，就可以看出这个算法并不能一般化（开始就设定了一个固定比率），只是涵盖了某一个子集的曲线，可能他在计算过程中加入了其它限定因素。

![iPhone X Corner](http://www.hi-id.com/atcl/2017/iPhone-X-Design-Corners-3.jpg)

以上是关于 iOS 圆角图标及其实现的方法，只针对于平面的图形效果，如果来绘制一条手机的轮廓线，肯定不会使用 iOS 圆角图标那样分成 10 段 3 阶曲线，那将是另外一个更复杂的生成环境，数据的传递和实现就有更长的路径。

圆角是一个小细节，就跟设计本身一样，如果不在意，就没必要大费周章，但如果在意这些细节，在意曲线的质量，那追求是无止境的。


# Apple 颜色设计的历程

\
数字消费品（包括生产力工具）的发展现在已经进入了一个衔接前后的混沌期，它不再像以前那么简单纯粹，它也没有指明确切的未来方向。处于模糊混乱时期就会产生模糊混乱的设计，带有 Touch Bar 的 MacBook Pro 和 12.9″ 的 iPad Pro，你无法看清它们指向了怎样的未来。

![iphone color design](http://www.hi-id.com/atcl/2017/iphone-color-design.jpg)

两股力量拉我们进入了混乱的泥潭，一个是科技的发展，另一个就是消费的欲望。两股力量纠缠在一起，科技发展让人们看到潜在的可能性，这种可能性或许是一种未来，或许只是相对当下的另外一种选择；消费的欲望促进了科技的发展，但过于俗世和功用化会将其引入奇淫技巧的歧路，让当下的另外一种选择成为确定的未来。

拉动数字消费品的发展的力量主要是消费的欲望，消费欲望的一个特征就是喜新厌旧，永远对“新”充满渴求。对“新”最直接和简单的就是新的样式，所以每隔一年人们对 iPhone 的期待最主要的就是新的样式，但设计师不能仅仅只提供新的样式，否则将走向溃败，设计师不仅用设计去满足这种对新样式渴求的欲望，而且需要结合当前的科技，用理性的综合思考去合理化新的设计，让新的样式成为理性设计的自然结果，并非仅仅为了不同而不同。

Apple 是用理性设计去满足喜新厌旧的消费欲望的最佳榜样，现在我们处在下一代 iPhone 将要发布的前夕，结合网上不断泄露的消息，会发现一些不合旧理的地方，去猜测 Apple 将如何来合理化它们，会是了解 Apple 如何“用理性设计去满足喜新厌旧的消费欲望”的好的案例，Apple 对“更好而不是不同”的持续追求往往会超出此刻我们对它的预想，无论是技术突破还是工艺上的革新将会带来耳目一新的结果。下一代 iPhone 或者称 iPhone 8 的全面屏的需求遭遇现实的制约将带来一个缺口，如何去合理化，掩饰或选择不掩饰将是等待是观察的地方，是利用 OLED 屏幕的特性将黑色背景的状态栏往上顶吗？那样如何去处理两侧凸起的肩部具有一定高度的问题（远超出当前状态图标所需的空间），如果有白色前玻璃盖板又怎样处理？如果使用面部识别来替代了指纹识别，如何将面部识别体验做得更好让这种替代成为一种更新甚至是革新，而不是为了全面屏作出的妥协，安全性更高识别性更方便，对湿度和汗水无需顾虑，当然一些额外的创新体验，比如利用了前置的 3D 传感器，可以让手机识别使用者是否在看它，比如看到来电可[自动关闭铃声](https://www.theverge.com/circuitbreaker/2017/8/9/16117954/iphone-8-silence-notifications-automatic-face-3d-sensor-rumor)，这些创新应用将为面部识别对指纹识别的替代作出支撑。

将要发布的（按以往规律是在 9 月份）的 iPhone 有三款，其中两款可以看作是当前 iPhone 7 和 iPhone 7 Plus 的升级，而使用全面屏的将会是更高端的版本。而按照目前的消息看，这三款 iPhone 都将采用相似的设计，前后玻璃加上金属中框，只不过高端版本采用的是不锈钢中框，而升级版的两款使用的是铝中框。前后玻璃加金属中框这种形式就是 iPhone 4 时代使用的，那么经过了 7 年时间，Apple 会如何将这种形式的设计作出革新。使用了前后玻璃加金属中框的设计并非是为了样式的更新而更新，并非是人们怀念 iPhone 4 的设计而回到过去，这种合理性的支撑其中一个原因来自于无线充电的需求，是因为需要样式更新而上无线充电，还是因为需要无线充电而选择了这种样式，或许并不需要去辨析鸡与蛋的问题，但 Apple 需要实现的是让这种改变成为一种更新甚至是革新，而不是为追求新样式的替代，因为此前的铝合金 Unibody 设计已经达到了很高的一体性。

但是，在高度的消费欲望驱使下，没有什么能成为“最终的设计”。

下一代 iPhone 的前后玻璃加金属中框的设计，将带给我们一些观察 Apple 是如何处理的地方，比如摄像头的金属圈等，而最为重要的是颜色的设计，以及相应的工艺处理，玻璃、不锈钢和铝合金，Apple 将会带来怎样的革新，它会有怎样的颜色来表现，怎样去维持 iPhone 7 式的一体性，以及消除玻璃等材质的表现力的缺点……

在《作为符号的设计》一文中曾说到我们可以从这些年 Apple 的官方网站变迁中看出产品在从工具走向符号化，如果我们比较 [iPhone 4s 时代](https://web.archive.org/web/20111214022217/http://www.apple.com/)与现在的 Apple 网站，只是从首页就可以看出一个主要特征，就是更多的颜色，产品上更多的颜色，网页的底色更多的颜色，到处是更多的颜色，如果去看现在 Apple 的[配件页面](https://www.apple.com/shop/accessories/all-accessories)，颜色可以用琳琅满目来形容，选择一款符合自己的手机保护壳需要花费不少时间，但是它们都很漂亮。这并非因为 [Jony Ive 喜欢颜色](http://www.newyorker.com/magazine/2015/02/23/shape-things-come)（如果用颜色来区分 Steve Jobs 时代和 Jony Ive 时代也说得通），因为其他公司，他们的网站他们的产品也在多彩化。在产品走向符号化的过程中，颜色将变得越来越重要。

![iphone color design](http://www.hi-id.com/atcl/2017/apple-color-design.png)

iPhone 7 目前有亮黑、黑、银、金、玫瑰金和红色六种颜色供选择，我们可以将这六种颜色分成三个种类，亮黑、黑和银为一类，金和玫瑰金为一类，红色为第三类，这三种分类的颜色设计可以看作是 Apple 的一种策略，可以概括 Apple 所有产品的颜色设计（我们从 Steve Jobs 回归后的 iMac G3 开始），而且从这些年 Apple 的颜色发展上去看，会发现颜色并非是选取那么简单，它具有跟设计一样的深度，但因为颜色与主观关联紧密，无法分析或者一旦分析就成过度阐释，使得作出好的颜色设计变得更难，但颜色设计里具有理性。

我们将 Apple 颜色设计的发展历程及其策略呈现如上图。

亮黑、黑和银为一类，称为“本色”，金和玫瑰金为一类，称为“专色”，而红色被归为“彩色”，从上图可以看到本色和彩色的发展是齐头并进的，而专色是后来在本色和彩色的基础上派生出来的，如果要说时间点，就是 2013 年金色的 iPhone 5s 的出现。这三种颜色并非是此消彼长的过程，而是一同往更深更宽广的方向前进，即是说现在 Apple 产品上白色将比以前更出色。

本色并非按字面意义上来理解，即材质本身的颜色，我们几乎不用材质本身的颜色，或许只有在特殊情况下，比如使用耐候钢，但那也是氧化的颜色，并非这种钢的本身颜色。这里的本色是指在认知层面上，这种颜色靠近于此材质在某类产品感知上的本质表现，比如对铝来说，银色、灰色和黑色都可以是它的本色，而红色就不是；同样是红色，高纯度的红色对塑料来说可以是本色，但偏粉的红色可能很难视作是塑料的本色，从物理上来说，红色的阳极氧化铝和高亮红色塑料都是经过着色而成（墨水和色母）。本色这样的区分最重要的意义是和产品相结合，因为我们是按照材质的视看感知属性来区分的，必然同产品的形态、概念和属性等相关，某一种颜色的材质在这个产品上可能是本色，而在其他产品上就未必，比如黑色铝合金在小尺寸的数字消费品上可以算本色，但是在大尺寸的铝合金门窗上也不是。另外，这种颜色划分也跟具体的某一品牌以及同其产品线有关。

彩色很容易理解，通常也会指黑白灰以外的颜色，但是为什么不把 iPhone 的金色和玫瑰金也算作彩色呢？至少金色可以称是一种黄色，而玫瑰金可以称是一种粉色，彩色最重要的属性就是它的“之一”性，也就是它不是单独出现的，而是作为一个系列颜色中的其中之一出现的，而这个系列数量往往超过三个，可以系列内的几种颜色具有类比排列属性。

专色指的是在本色之外开辟的具有专属性质的颜色，它不具有“之一”属性，另外它的表现力更接近于本色，比如 iPhone 的金色。

![iphone color design](http://www.hi-id.com/atcl/2017/apple-standard-colors.jpg)

上图是从 Steve Jobs 回归后的 Apple 产品选择出的本色代表。

第一个是 2000 年的 Power Mac G4 Cube 全套，特点是透明（水晶），使用的是 PC（Polycarbonate）材料，连鼠标和键盘的连线也是透明的，PC 原材料即注塑前的颗粒有透明也有不透明的，但这不是我们作为本色的定义，而是但透明成为统一的主题时，而且透明属性与塑料的认知本质属性是相关的，即我们对一个不具坚硬属性的透明料通常会认为是塑料，所以在这我们将其归为本色之中。

2001 年的第一代 iPod，加上当时的耳机，开始了 Apple 的白色历程，区别于此前的 Frog 参与的 Snow White，这种白色更为个性化，亲近人，除了产品尺寸的变化，还因为塑料颜色的白度提高，以及高光白的使用，在[第一代 iPod 上是靠双射](https://www.technologyreview.com/s/407782/the-secret-of-apple-design/)（Double-Shot） 来完成的。抛光的高亮不锈钢背盖，同高光白一样，在 Apple 的产品上延续了很久，高亮的不锈钢作为本色毋庸置疑，而白色则是靠着颜色的纯粹性，高光更能将白色的纯粹性提高一层。

Power Mac G5 在 2003 年推出，这个机箱可以称是 Apple 寿命最长的一个设计（被 2013 年的圆筒形 Mac Pro 取代），也是 Apple 在产品上不断使用铝合金的开始，颜色就是铝的本色——银色，作为铝的本色的银色可以有千千万万的灰度和亮度，需要选择与产品形态相符合的，可以用想象作一下对比，如果 2013 年的 Mac Pro 用银色来完成，比如高亮的版本来，哪一个显得更沉重哪一个金属感更强；那么如果 2003 年的 Power Mac G5 使用黑色的铝来制作，比起银色版来，又是哪一个更沉重？

白色塑料版（PC）的 MacBook 有过几代，上图所示的是最后一款，即 2010 版。以塑料来达到 Unibody 形态式的设计，它的 C 壳即键盘一面是一个整体的塑胶件，侧面的轮廓线中间是鼓出的（[见图片](https://images-eu.ssl-images-amazon.com/images/G/02/uk-electronics/product_content/apple/macbook_white_side_view.png)），所以注塑后需要打磨抛光分模线。此款白色的塑料版 MacBook 可以看作是 Apple 塑料白色时代的结束。

2010 年是 Apple 塑料白色的结束，但是白色依旧继续，它在玻璃上继续，尽管白色版的 iPhone 4 在 2010 年发布，但是因当时的工艺难实现，直到十个月后即 2011 年 4 月底才上市。白色的玻璃盖板带来的好处是让产品的工具属性降低，尤其是在手机上，就像是 iPod 的白色一样，更轻更受女性消费者欢迎。

2013 年的 iPad Air 从形态上来说进入了成熟期（前面板，高亮金属切边，铝合金背盖），后续的 iPad 在形态设计上只是细节处的调整。iPad Air 有两个颜色版本供选择，即与原先 iPad 及其他铝合金 Unibody 产品相似的银色，另外就是一种新的本色——深空灰（Space Gray）。

深空灰是 Apple 在 2013 年 iPhone 5s 上推出的（上图为 iPod touch），替代了 iPhone 5 上的黑色，比银色更深的颜色，可以与黑色的前盖板很好的相配，介于 \[黑色铝背盖/黑色前盖板] 和 \[银色铝背盖/白色前盖板] 之间。

如果说 iPhone 5 上的黑色是一种不完美的尝试的话（发蓝以及类似容易剥落等问题），那么 Apple 在 iPhone 7 的哑光黑上作出调整，取得很好的效果，足够哑而且不泛其他颜色。

比哑光黑成就更高的就是高光黑在 iPhone 7 上的实现，将去物质化达到了一个高度，它让铝金属给人的视觉感消失，但它仍是一种本色，与其说是铝的本色，不如说这是 iPhone 的本色。

![iphone color design](http://www.hi-id.com/atcl/2017/apple-colorful.jpg)

上图是从 Steve Jobs 回归后的 Apple 产品选择出的彩色代表。

Apple 的起死回生可以说是得益于 iMac 的彩色，虽然此后 Apple 的主打产品总不会出现彩色，但是彩色就像一条次要路线一样一直伴随着这些产品的发展，而且时不时地为产品的受欢迎程度起到主要推动作用，就像第一代的 iPod mini 一样。第一代 iPod mini 开始在铝的阳极氧化上作出彩色，而且其中一款还是金色，但是由于当时金色的销量并不好，所以在第二代 iPod mini 上金色就被取消了，对比 iPhone 5s 金色的大受欢迎以及此后手机上的金色狂潮，不可同日而语。

第三个是 iPod Socks，是 [2004 年发布](https://www.macobserver.com/article/2004/10/26.14.shtml)的第一个针对于 iPod 的官方配件，前后卖了 8 年，包装也跟袜子差不多，Steve Jobs 在发布会上说这是“让你的 iPod 在冷天保持温暖”，适合当时除 iPod shuffle 外的所有 iPod。当年网站上的介绍是：“不管你心情如何，每盒 iPod 袜子有六种鲜亮的颜色，所以你可以挑选一只最适合的套上。”彩色的本质也是如此，它的“之一”性的价值就在于提供了一定的选择性，这也是为什么彩色的设计，总是要尽可能覆盖整个色谱。

第五代的 iPod nano，使用了高光彩色的阳极氧化铝，全色系的彩色，尽管有的颜色受欢迎，有的颜色会卖得少，但多彩的价值在于，虽然消费者只会选择其中一种，但是他看到的却是全彩色的，也就是说，如果这个产品的广告宣传画面上，放上全彩不仅会促进销量，而且会让一个种个体颜色显得更漂亮。

到了 iPhone 5c 时期（C for Colorful），Apple 在彩色设计上开始摆脱传统式的设计，从具有代表性的“赤橙黄绿青蓝紫”上走开，去寻找更丰富更符合时代的颜色，iPhone 5c 的粉色系彩色，不仅应用在手机上，而且还扩展到手机的硅胶保护套上，只不过前者是高光色，后者是哑光色，两者相配就可以得出很多的不同个性搭配。

而现在的 Apple 的配件的颜色已经到了难于记忆难于分辨的地步了，当然这也符合配件的特性，必须去亲自观看、体验和选择，有足够的选择让消费者获取更多的自我属性，在手机等产品上的克制，以及在配件上提供足够多的选择，无论从生产者的角度还是从消费者的角度，都是一个非常好的策略。现在 Apple 配件的颜色都是细腻、微妙、有品质，不像以前那样鲜明的颜色，比如 iPhone 4 的 Bunper 的颜色，现在去看（[见图片](http://www.iphonefaq.org/images/archives/case-apple-bumper.jpg)），就像是只是颜色来作区分一样——“黑色代表低调，蓝色代表沉静，白色代表纯洁……”

![iphone color design](http://www.hi-id.com/atcl/2017/apple-dedicated-color.jpg)

上图是 Apple 产品上的专色代表。

如上所说，在 Apple 的主打产品上不会出现彩色，但也不能仅限于黑白灰这些本色，因为颜色在产品设计上的价值就越来越重要，尤其是像 iPhone 这样量级的数字消费品。Apple 在 iPhone 5s 上引入了一个金色，与同时的银色和深空灰比，它是一种彩色，但是它又是除银色和深空灰外的唯一的颜色，另外，金色不是黄色，它有“金”的属性，除了视觉属性外，还有它的社会属性，而且铝的阳极氧化颜色对金色又有独特的表象力，通过表面砂粒和反光属性让其在使用过程中有着丰富的表现，在硬直的 iPhone 5s 上表现更出色（可以与金色的 iPhone 6 等作比较）。这种独立且独占的颜色这里我们称之为专色，iPhone 5s 的金色是非常成功的一个颜色设计，不只是商业上以及带起的一股浪潮，而是，或许再难找到一种新的这样的颜色了，尤其是铝合金的手机上。后来 Apple 又推出了玫瑰金色的设计，虽然从颜色的品质上并不比金色相差多少，但是它的表现力无法与iPhone 5s 的金色相媲美。

专色似乎是一种有限的资源，世界上的颜色可以有无数种，但是基于共同的认知和体验，能够承担起人们之间交流的颜色并不会太多，而且我们对颜色的识别和分类是固定的，所以两种细微差别的金色都属于金色。专色不像彩色那样，可以通过多种颜色形成的语境来作为交流平台，比如在 iPhone 5c 颜色中的单独抽出一种来作为专色，比如放到 iPhone 5s 金色的地位上，失去了语境（粉色系）的这种颜色就失去了号召力。作为专色的颜色必须具备一定符号意义，我们无法随便选取一种颜色，然后再去赋以其符号意义并且还要推广，通过阐释和传播，这就是本末倒置了，因为我们本来是需要颜色来传播符号意义的。另外一种手段，就是像彩色学习，靠颜色相互间的并置对比来形成一定的语境，我们可以看到目前 Apple 的产品中，凡是出现了玫瑰金颜色的，必然有金色，一方面玫瑰金没有金色那样的专色表现力，另外一方面金色的存在可以支撑玫瑰金的存在价值。

下一代的 iPhone，无论是 iPhone 7 和 iPhone 7 Plus 的升级版，还是全屏幕设计的 iPhone 8（或称 iPhone Pro 之类），都将采用新的设计，也就是两面玻璃加金属中框的形式，那么它们的颜色设计将是一个很大的悬念，Apple 将会怎样去实现则是更让人值得期待。

iPhone 7 和 iPhone 7 Plus 的升级版仍然采用铝合金中框，那么这个铝合金中框的颜色设计仍可以沿用当前 iPhone 7 的，亮黑、黑、银、金、玫瑰金和红色六种颜色，但问题关键在于后玻璃盖板的颜色怎样与之相配。这里面亮黑应该是最没有问题的，能具有很高的一体性；哑光黑色将会形成三段式设计，不过能达到前后对称；银色铝合金中框将前后玻璃盖板做成白色，看上去并不是好的选择；像剩下的金色、玫瑰金和红色，如何去做到玻璃背板与金属中框匹配，有新的工艺革新？或者是将专色或彩色的铝合金中框处理成高光色，与高光黑一样形成一体感，如果是这样，这两种专色该如何处理，它们必将与现在的金色、玫瑰金色不一样，或许是新的颜色？

不锈钢中框的 iPhone 8 除了上面说到了玻璃盖板的处理外，不锈钢的颜色表现也是悬念之一，此前 Apple 产品的不锈钢除了高亮抛光外（iPod 背盖，iPod Shuffle 以及 Apple Watch），就是 iPhone 4 上的哑光处理，不锈钢镀上色彩并不像铝的阳极氧化那么有表现力和可亲近性。\[ 2017/9/9 修正：Apple Watch 上的 Space Black 不锈钢版采用了一层 DLC 涂层（Diamond-like carbon，类金刚石碳），采用 PVD 等工艺达成，但是它的黑色看上去较机械化，材质不够亲近感，加入和 iPhone 7 的亮黑比较的话。] Apple 此前在笔记本的触摸板上用玻璃来模拟金属，但到了整只手掌握的设备上，单纯的视觉模拟是不足够的，或许 Apple 在设计和工艺上又会有新的突破？目前从网上可以看到一些消息说 iPhone 8 将会有红铜色版本，Sony 的 Xperia Z3 也曾出过红铜色版本，无论从红铜色的 iPhone 8 自制模型，还是 Sony 的参照，以及想象作一下比较，如果将红铜色作为 iPhone 的一种专色，它将不及当前的金色和玫瑰金色。或许 iPhone 8 放弃专色，用颜色交给附件的彩色？


# 欲望、逻辑和习惯

\
[Essential Phone](https://www.essential.com/#screen) 公布后，没有人不去注意那侵入屏幕的前置摄像头，如此违背常理的设计，感觉注意力时刻都难逃离，如芒在背一般。[The Verge](https://www.theverge.com/2017/5/30/15717066/essential-phone-hands-on-photos-android-hardware) 编辑把玩了 Essential Phone 几分钟，也认为一直被这个屏幕缺口吸引住——直到看够为止，他认为看到这个手机的人会认为此处设计怪异，而使用这个手机的人将不会介意；到这部手机被更多人使用还有一段时间，所以很难猜测人们将如何来习惯这一设计。而[传言](https://www.macrumors.com/2017/05/31/iphone-8-renders-size-comparisons-iphone-7/)中 iPhone 8 的屏幕也将采用类似的缺口式异形屏幕设计，似乎能为这样的设计增加一些莫名的说服力。

![essential phone display](http://www.hi-id.com/atcl/2017/essential-phone.jpg)

但是，这样的切割屏幕的设计是残破的，即使人们都适应和接受了这样的妥协后，它仍然是违背纯粹的。它会像凸起的摄像头，像 iPhone 7 和 iPhone 7 Plus 摄像头周围的火山口那样被人所习惯吗？从形态上来说，突起的摄像头和火山口，是一种增加和生长，而缺口式的屏幕是一种去除，后者对形态整体性的破坏是不可逆的，而前者增加的形态是有可能被纳入整体性之中。从功能上来说也是如此，前者没有形成破坏，后者不仅破坏了内容的显示，也远离了显示的原型（矩形）。

而我们对手机全屏设计的追求是无法阻挡的，消费者的这种欲望明白无误地站在了厂商之前，它并不是预见力，如 PDA 时间预见我们当前的真正的掌上计算机时代，而是“下半年就想要”的欲望。我们需要全面屏，而又无法丢弃前置摄像头以及传感器，当他们之间的位置发生冲突的时候，似乎可供作选择的选项并不多，位置排列的选项看上去消费者都能罗列完，设计师能作的估计就是如何执行到位了。

与生俱来的适应能力让我们在每次变革之后总能迅速作出调整并找到自己的位置，以新的角度来看外面世界，对既存秩序下的纯粹不断的违背和批判。驱动变革不是需求，因为需求太容易得到满足了，驱动变革的是我们无止境的欲望，不切实际的欲望，欲望诞生的那一刻起就迫不及待地要和现实去撞得头破血流，极具生命力又带有自杀性般的勇气，通过与现实的抗争去占据新的时代。

设计也是欲望与现实相对抗的结果，有时欲望占上风有时欲望落败；有时欲望得到满足是一个好的设计，有时欲望被制服是一个好设计；有时欲望战胜却得到不人们喜欢，有时克制了欲望同样被人讨厌……

:: – ::

我们有一个欲望与现实的对抗模型图，可以用来解释大多数我们接触到的设计，它从对抗到生成的轨迹。

![Desire, logic and customary](http://www.hi-id.com/atcl/2017/Desire-Logic-Customary.png)

上图中最左的自由六角形可以代表着“我需要全面屏”这个欲望，这个要求先是不切实际的，“不管你接下来的条件如何，我需要尽可能大的全面屏”，而左侧的正方形就是现实中的各种限制，比如功能需要的限制，像需要前置摄像头。自由六角形和正方形的对抗可以产生无数种结果，我们可以将这些结果从四个方向引导输出，最上一条就是符合当前人们认知习惯并且“我需要全面屏”这个欲望战胜了现实中限制的制约，输出的或许是最理想的结果，那就是完完全全的全面屏幕，而且前置摄像头仍处在它的最佳位置，它整合到了全面屏之中，并且不会破坏屏幕，也不会覆盖屏幕。第二条路线也是符合了当前用户的认知和审美习惯，但是全面屏的欲望与现实的限制作对抗中，甘愿退后一步，就是带引号的“全面屏”，将前置摄像头放在屏幕之外，并且尽各种可能让屏幕占据足够大的面积，从视知觉上去靠近真正的全面屏。第三条路线也是现实的限制占据了上风，也就是 Essential Phone 式的设计，另一种打折扣的“全面屏”，将摄像头置入屏幕内，尽可能让被去除的屏幕显示区域越小越好，但是无论怎样的布置和操作，它都是违背了人们对手机或显示屏的认知习惯。第四条路线中，欲望战胜了现实的限制，而且不受人们通常认知习惯的限制，使得欲望如脱缰野马，只要满足欲望不管形态如何，虽然这个方向的设计充满了创意、好玩和创新，但不可避免走向了某种溃败，比如在全面屏设计这个例子中，为了达到彻底的全面屏设计，可以使用正反两块屏幕，把摄像头只放在一面，有摄像头的这一面的屏幕主要为了满足自拍和视频通话等相应功能的需要。

我们几乎可以将所有的设计填充到这个对抗模型图之中。

比如说 Apple 出的供小尺寸 iPhone 用的 [Smart Battery Case](https://www.ifixit.com/Teardown/Smart+Battery+Case+Teardown/53762)，被人诟病的怪异的驼背外形设计，但是使用的人们都出奇地满意的产品。将这个产品放入到对抗模型图之中，那么欲望就是“带有备用电池的手机保护套”，而现实的限制主要来自于电芯的外形。那么第一条路线，欲望战胜限制，电芯采用可定制的，产品的形态以最自然的方式出现，对用户来说就是“当然就是这样的”，没有驼背，平平整整，而且尽可能轻薄，就如同稍稍加厚的手机保护套，因为整个背面的空间——除了需挖出摄像头的位置——都用来填充电芯。而第二条路线，因为定制电芯从成本等因素上考虑被排除在外，使用的是方块式，而且电池的安全性需要结构上作防护，所以电芯的空间进一步缩小，那么有不少多余的空间，考虑的形态需要满足人们的审美习惯，所以就将多余的空间覆盖住，就是做成 Mophie 之类产品差不多的。第三条路线就是 Apple 的 Smart Battery Case，理性得到了体现，但也挑战了人们的习惯式的审美。一些新奇好玩的备用电池设计则可以归到第四条路线上。

经常被人拿来嘲笑的 Apple 设计除了这个 Smart Battery Case 外，还有两个，Apple Pencil 和 Magic Mouse 2 的充电方式。

将 Apple Pencil 的充电方式的设计中的“欲望”和“限制”提取，去看它的四条路线会是怎样的结果。第一条路线，会是一个很方便的充电方式，或许使用无线，或许可以做成笔筒式，这将更符合人们已有的认知习惯。第二路线就是提供一个直接的充电线缆，实际上 Apple Pencil 已经配备了一个充电转换器，可以用 Lightning 充电线来对 Apple Pencil 充电。第三路线，就是现在 Apple Pencil 的另外一种充电方式，方便合适的设计，如果 Apple Pencil 没电了，直接在 iPad Pro 上插入 15 秒就可以接着使用 30 分钟，相当方便的一个救急的设计，Apple 在网站的[使用介绍](https://support.apple.com/en-us/HT205236)中也说到这是给“快速充电”使用的，但不管如何，这个充电方式呈现出的观感是违背人们已有认知习惯的，更是违背了人们对 Apple 设计的已有认知习惯。第四条路线就可以留给我们尽情想象了，诸如非接触式无线充电之类，摇晃式自主发电等等。

Magic Mouse 2 也是归类到对抗模型图的第三条路线之中。上面这几个例子是存在与现实限制有很明确对抗的设计，那些看上去对抗不是那么明显的创新设计呢，比如 AirPods？虽然 AirPods 第一眼感觉有一丁点怪异，就像剪去线缆的 EarPods，支出的长柄有一点突兀，但是很快就会适应并习惯起来，这种适应除了有对合理性有了认识外，还包括来自 EarPods 的熟悉感，所以 AirPods 被归类到“合习惯”这一端，而如果用过其他无线蓝牙，会发现几乎所有的难用之处都被 AirPods 解决了，所以可以将 AirPods 归到对抗模型图的第一路线之中。

很多创新的产品可以归到第一路线之中，但并非走第一路线的就是好的设计，事实上每一条路线都有好的设计和差的设计。比如带有“革命性”的 Touch Bar 的 MacBook Pro，无疑它是属于第一路线的，但是与 Essential Phone 的屏幕相反，带有 Touch Bar 的 MacBook Pro 是以功能的增加在违背产品所具有的纯粹性，就像前几年 PC 市场上出现的带有触摸屏功能的笔记本一样。Apple 在细节上精益求精或超出人想象的追求的那些设计，大多数也可以归到第一路线，比如对拔模角等外观品质的要求，像 iPad Pro 的充电器，表面上看与 16 年前的第一代 iPod 的 Firewire 充电器在设计上没什么改变，而实际上比此前版的充电器有了很大的突破，在结构上不再是分件（中间没有装配缝隙），而是一个完整的独立体，而且外观面没有分模线，就像 Apple Pencil 的零度拔模柱面一样，需要在模具和制造工艺上作出很大的努力才能实现这种表面上“看不到”的结果的，这些都可以看作是欲望战胜了限制。而且设计的结果看上去却是很自然的结果，必然如此般，因为它们是符合用户已有的认知习惯的，就是那些被称作很“显然”的设计（obvious）。

我们通常见到的产品，大部分是符合第二条路线的，称之为普通的、中庸的设计。普通和中庸并不意味着它们不会有好的设计，有很多符合第二条路线的设计，很多经过时间考研，经过了约定俗成的历练，谦逊而富有实效，可信且持久。这些设计很多都是匿名的，并不知道设计师是谁，可能散落在民间，在超市的货架之上。

第三路线的设计，它们或者是偏离了人们的审美习惯，比如陷入设计师的个人情趣中；或者是挑战人们已有的认知习惯，最明显的例子就是 iOS 7 在视觉上的革新，即使是已经对革新到来作好准备的用户来说，看到 iOS 7 第一眼的时候仍然有些触不及防。当我们准备去挑战人们的认知习惯时，我们就需要重建逻辑了，如果失去了逻辑的支撑，那么就只是样貌上的变更。

第四条路线的设计，通常是充满创新的个人性设计，有时这些设计是独立于当前的通行准则，让其一时间内备受瞩目，也有可能因为文化和历史等原因，成为“经典设计”。

这四条路线的设计划分并非的泾渭分明的归类，它们之间是有渐变和梯度的，某一设计可能位于两条路线之间，欲望和现实的限制之间的对抗也不是非此即彼的，而人们的习惯更是会跟着时代作更替，iOS 在发布时是不合习惯的，而一旦人们上手之后，它就立刻成为了新的习惯。

:: – ::

![Desire, logic and customary](http://www.hi-id.com/atcl/2017/Desire-Logic-Customary-2.png)

通常我们的设计工作只专注于上图中的第 3 块而不在意第 1 块和第 2 块，诸如对形式和功能之间的探讨，对细节的推敲，与工艺的磨合等等，那些称之为设计师的“本职工作”。如果是只专注于这些“本职工作”，就会发现总是被很多力量牵制，总是在跟随潮流和某个榜样，总是落后一步，总是作出中庸的设计……那是因为我们对输入的信息失去了发现和把控的主动权，剩下能做的就是“排布师”的工作，将这些输入的信息当作材料，将它们排列整齐。

在我们这个设计生成的对抗模型图中，需要我们去研究的就是欲望、逻辑和习惯。

前面我们用对抗模型图中方块来代表“现实中的限制”，如果将它再抽象一次，就是“逻辑”，逻辑是这三者中唯一静态稳定的，它是来促成和维护设计中理性的基础。逻辑不是现成的条条框框，并非是一些定理的集合，只要用来遵循即可的，它也并非只是物理的制约，或者是工艺的限制，它是一个系统。逻辑只在设计生成的过程中发生作用，如同尺规一样，来调整校正设计生成，它不是设计生成的内部因素。逻辑无法生成设计，它是来指引和规范设计。

认识习惯并不是一件简单的事，设计师擅长的推己度人手段，通常是建立在主观体验而非理性分析之上的，极容易陷入一厢情愿和片面化。通常，设计师是受制于习惯，经验也是一种习惯，受制于习惯的结果，就是结局往往就是上图给出的第二条路线，而且是第二条路线指向的中庸的一面。而如果需要来挑战习惯了，那么就必须以理性的手段来研究和认识现有的习惯，找到它的生成源头和成长路径，唯有理性才能提供足够的力量去战胜旧习惯，就如 iOS 7 一般。习惯的拽引力可以从“黄金分割”这个简单的例子就可以看出，人们就是通过一些口口相传的话语，甚至就是这么一个词语“黄金分割”，就认为“黄金分割”是关于美和和谐的，而且会上升到非常高的高度，但是它的来由只是口口相传的经验和习惯，没作考证没作研究，而实际上“黄金分割”同美与和谐相关联，是一段薄弱和经不起推敲的发展历史（可参考阅读 [Wikipedia](https://en.wikipedia.org/wiki/Mathematics_and_art) 或者 Lynn Gamwell 的《Mathematics and Art: A Cultural History 》一书）。如果没有去考证一下“黄金分割”出处，或者仅仅知道 1.618 这个数字而不是数字的来源几何公式，那么就会被这些口口相传的习惯带着向前走，不可避免的走向中庸。

设计生成的种子来自于欲望。通常我们会说“需求”这个词，但这个过于一般化的词语缺少生命力，“需求”就像是由“欲望”分配而出的任务，所以一旦专注于需求，我们仍没有追溯到设计生成的源头。欲望是需要设计师去发现和分析的，而设计作为具有表达性的工作，那么不可避免地会有两种欲望，就是用户的欲望和设计师的欲望，而设计师自己往往会把自己的欲望扩增到视作是用户的欲望。贪婪跟欲望与生俱来的，所以在我们去发现欲望时，就要去寻找里面的贪婪，除了可以能促进设计的生成外，也能抵御住贪婪的进攻。MacBook Pro 的 Touch Bar 是一种贪婪，主要是来自于设计师的贪婪，Apple Watch 是一种贪婪，所有计算力富余过分的数字设备是一种贪婪，弧形屏是一种贪婪，全面屏是一种贪婪，挖穿屏幕去做全面屏是一种贪婪……Gadget 也是一种贪婪，以 iPhone 为首的数字消费品极大的吞噬了 Gadget 市场，在人们以为计算机将很快抽象化，科技产品将摆脱了功能的细分，走向了纯粹的内容呈现介质时，以贪婪为本的 Gadget 精神又在这些新的科技产品上以另外的形式出现，现在大家不介意使用同一款手机，而且，这些人会在一两年时间内更换至新的又是相同款式的手机。

完美的全面屏手机将会是手机以及数字产品发展一个极其重要的里程碑，虽然在实现之后，人们的欲望仍不会停止，但是现在，我们得庆幸像前置摄像头这样的限制存在，使我们可以看到进化或以退为进的整个过程。


# 反“建筑学”的 Apple Park 将刺激建筑的发展

\
Apple Park 即苹果公司新的环形总部自 2011 年对外公布以来，一直受到人们的关注，就像是一件将要发布的 Apple 产品一样，而且可以看到它的建造过程，借助于无人飞机等工具。大众喜欢这个巨大的环形飞船，充满未来感——或者说复古未来感，像以前的科幻场景描绘地那样。随着媒体带来一些深度的报道，比如 Steven Levy 在 Wired 的长篇文章《[Inside Apple’s Insanely Great (or Just Insane) New Mothership](https://www.wired.com/2017/05/apple-park-new-silicon-valley-campus/)》，以及 WSJ 最近发布的 Christina Passariello 的《[How Jony Ive Masterminded Apple’s New Headquarters](https://www.wsj.com/articles/how-jony-ive-masterminded-apples-new-headquarters-1501063201)》，还有此前来自[路透社](http://www.reuters.com/article/us-apple-campus-idUSKBN15M0CM)等媒体的文章，带来不少这个建筑上一些细节设计的介绍，如媒体对 Apple 新产品的报道一样，人们愈加好奇和喜欢这个飞船总部。WSJ 的文章介绍了新总部的内部空间以及员工的工作环境，以及有一些新的照片，包括开放式的工作区，[一](https://sixcolors.com/link/2017/07/jony-ive-and-apple-park/)[些](https://daringfireball.net/linked/2017/07/26/ive-apple-park)[人](https://twitter.com/marcoarment/status/890231222684856320)对苹果公司员工从办公室转换到开放式的办公表示一些忧虑，除此之外，大多数人对这个建筑表示了喜欢之情。

![apple park photo](http://www.hi-id.com/atcl/2017/apple-park-photo.jpg)

但是建筑评论圈自始至终对这个建筑并无好感，一路都是批判的意见，Rowan Moore 在卫报的文章《[The billion-dollar palaces of Apple, Facebook and Google](https://www.theguardian.com/artanddesign/2017/jul/23/inside-billion-dollar-palaces-of-tech-giants-facebook-apple-google-london-california-wealth-power)》汇总了其中一些对 Apple Park 的批判意见。大众媒体上的建筑评论，影响他批判视角的立场往往偏向于人文，加上建筑历来都是单件建造，所以大多数这些评论家对大量制造、过度消费化和商业化带有与生俱来的抵制，有时这些抵制是情绪化的，他们讨厌批量化的东西，将流行作为庸俗来批判，有趣的是，批判庸俗的时候总是借助于经典，所以可以看到不少评论用 Dieter Rams 的设计来批判 Apple 现在的设计。或许是一个正常现象，我们可以看到每个行业对行业内的无名后来者（Underdog）的反抗和成就的取得总是充满赞美，而来行业外的外来者的所谓跨界总是充满警惕，尤其是来自于邻近行业的挑战，因为这种挑战触及的不是荣誉和利益，而是学科传统，它是有圈子意识的。

Apple Park 对外公布是在 2011 年 Steve Jobs 向 Cupertino 市议会展示这个新总部的设计，你可以在 [Youtube](https://www.youtube.com/watch?v=gtuz5OmOh_M) 上看到这个视频，当市议会问 Steve Jobs 这个建筑的建筑设计师是谁时，Jobs 的回答是：“我们雇了一些杰出的建筑师来一起工作，世界上最好的一些，我认为。”他没有说 Norman Foster 或者是 Foster + Partners 工作室，尽管 Foster 的 Logo 是印在图纸上的，这些图纸在 Cupertino 市的网站上能下载到。后来的 Apple 的官方新闻以及媒体报道都会提及 Foster + Partners 工作室，但这个细节在当时招致了建筑评论界的一些批评，比如 Christopher Hawthorne 在洛杉矶时报上的评论《[Apple’s new campus will be a retrograde cocoon](http://articles.latimes.com/2011/sep/10/entertainment/la-ca-applehq-20110911)》，他认为这是 Jobs 要强调他个人在这个设计中的重要性，Jobs 历来都是如此，比如他在 D8 会议上[讲 iOS 上了自然滚动](http://www.hi-id.com/?p=2732)的交互时，也只是说“一位优秀的用户界面设计师”而没说出 Bas Ording 的名字，而且在很多书籍和报道中都可以看到，在公司内部，Steve Jobs 也是[喜欢抢](https://www.google.com/search?newwindow=1&\&q=steve+jobs+idea+credit)一个创意的归属的（Credit）。但上面这两个未指名道姓地说明设计的署名，或许可以看作是 Steve Jobs 对自我的维护，但并没有抢夺功劳。

或许就因为建筑是单件建造的作品，对设计的署名的强调是建筑设计一个鲜明的特点，如果对一个建筑作出设计评价而不明确指明建筑师或工作室名称的话，会被认为是不适当之举，比如最近纽约时报写了一篇 Apple Park 的报道《[Apple Disrupts Silicon Valley With Another Eye-Catcher: Its New Home](https://www.nytimes.com/2017/07/04/realestate/commercial/apples-park-silicon-valley-cupertino-sunnyvale.html)》，这篇报道主要围绕着这个总部将为城市和居民带来的影响，并非一篇建筑设计上的评论，而建筑评论家 Paul Goldberger‏ [在 Twitter 上抱怨](https://twitter.com/paulgoldberger/status/882329588059303936)：“纽约时报写了关于苹果总部的一整片文章，评论了设计的细节，怎么能够不提及建筑师 Norman Foster 呢？”而平面设计师和评论家 Michael Bierut‏ [在底下回复道](https://twitter.com/michaelbierut/status/882353091693162496)：“建筑设计倒还好，如果你像默默无闻，那么成为一个平面设计师吧。”这些对署名的是否强调，我想并非来自与建筑设计、工业设计或平面设计对自我意识是否有追求，是否对荣誉和名声有所喜好，在建筑评论界也一直在对“明星建筑师”现象在作批判，对署名的强调来自于这个行业的传统，建筑设计作为单件建造，并不像工业设计或平面设计那样因批量的生产、传播和使用将降低设计者的著作属性，对于消费者来说，绝大多数情况下，这种设计事署名性（并非品牌）的强调是没有价值的。

不少建筑评论会认为 Apple 的这个新的总部是 Apple 或者 Steve Jobs 对自我意识的一种追求，因为它的设计过于标志性（Iconic）以及纪念碑化（Monument）。而最主要的批判意见是，Apple Park 这种封闭式的建筑，它与周围的关系，包括它的形态，是一种落伍的设计，或者是倒行逆施，并且与 1950 年代 Eero Saarinen 设计的 [Bell 实验室来比较](https://www.nytimes.com/2017/07/08/opinion/sunday/silicon-valley-architecture-campus.html)，与 Google 或者 Facebook 的这些新总部不一样，Apple Park 是孤立的封闭的，巨大的环形形成的公园只面向于苹果公司员工自己，它与外界没有动态的交互，包括对当地带来的影响可能会是更多的交通堵塞，Apple Park 过多的依赖于汽车——巨大的地下和地面停车场——也是被批判的一个重要特征，“Apple 的飞船着陆在错误的地址上了”，是 [San Jose Mercury News](http://www.mercurynews.com/2013/10/13/wolverton-apples-spaceship-is-landing-in-the-wrong-place/) 对这些弊大于利的结果作出评论的文章标题，作者 Troy Wolverton 还在文章中提到一个有趣的观点，就是这个标志性的建筑最终将会被周围的公园中树木给挡住，而让公众无法看到这个建筑，这个特点刚好与追求自我的标志性形成相悖关系。这种“倒行逆施”还表现在建筑和内在工作空间上的均一性和集体性，与现代的科技公司对工作的自由和流动性的追求反其道而行之，像是 Apple 的《1984》广告中所描绘的 IBM 公司那样。

而 Apple Park 反“建筑学”的地方在于他们用像做产品设计一样在做这个建筑设计，用现代化生产的观念在制作建筑。

最主要的一个特征，就是 Apple 对细节无止境的追求，虽然“[The devil is in the detail](https://en.wikipedia.org/wiki/The_devil_is_in_the_detail)”（或“God is in the detail”）这句话被著名建筑师 Ludwig Mies van der Rohe 发扬广大，激励着各行各业的设计师，现今对这句话的最佳阐释就是 Apple 的设计，但是一旦 Apple 将这个追求再又拉回到建筑设计上，如果对比世界上其他的建筑，这种对细节的追求可以看作是太过头了，就像 Apple Park 对连续面的装配间隙的要求是 1/32 英寸（0.8 mm），而美国的标准是 1/8 英寸（3 mm），如果说“建筑学”就止步与 3 mm 这个公差内，是否有必要去追求 0.8 mm？

事实上“建筑学”并没有太多关于细节的追求，更别说像 Apple 像作产品设计一样来要求， [Peter Eisenman 就不感兴趣于](http://www.archdaily.com/785334/interview-with-peter-eisenman-i-am-not-convinced-that-i-have-a-style)这些细节，像 [Peter Zumthor](http://www.hi-id.com/?p=2459) 那样把时间花在木头的细节和纹理上，或者是材质的颜色上。像 Peter Eisenman 和 Rem Koolhaas 是一类设计师，对细节和施工工艺不感兴趣，而像 Carlo Scarpa 和 Peter Zumthor 是另外一类设计师，执着于细节和工艺的追求。但是，像 Peter Zumthor 等对细节设计的追求是工匠式的，就像他设计的 2011 年的 [Serpentine Gallery Pavilion](http://www.bdonline.co.uk/serpentine-gallery-pavilion-by-peter-zumthor/5020460.article)（蛇形画廊），他要追求一种有深度的非常黑的黑色，但是无法简单的表面刷漆来完成，最终使多层的纱幕上涂刷蒸汽管道上用的防水黑漆来完成。

但这些追求细节的建筑师所做的细节，与 Apple 在新总部追求的细节相比，就像一个是手工艺，一个是现代工业生产，Apple Park 上特种木材的使用指引手册就有 30 页。

Apple Park 使用了世界上最大的单片玻璃，咖啡厅的玻璃移门，每扇 26 米高（56 英尺）以及 200 吨重，通过底下的机械装置可以无声且快速的打开（12 秒），消除室内与室外的界线。整个 Apple Park 可以说是巨型的弧形玻璃做成的，Steve Jobs 醉心于玻璃的设计，透明可以让室内与室外相融合，以往的 Apple Store 大多也采用巨型的玻璃幕墙，所以 Apple 同它的玻璃供应商——德国的 Seele Group——保持了良好的合作关系，当他们的产能无法满足 Apple Park 的需求时，就扩展设备来完成。WSJ 的《[How Jony Ive Masterminded Apple’s New Headquarters](https://www.wsj.com/articles/how-jony-ive-masterminded-apples-new-headquarters-1501063201)》文章中照片，巨大的弧形玻璃看起来就像无缝拼接一下，将内外融合在一起，或许就是 Mies van der Rohe 对玻璃屋追求的一个目标。

![Apple Park GLASS CASTLE](http://www.hi-id.com/atcl/2017/Apple-Park-GLASS-CASTLE.jpg)

Jony Ive 和他的团队将在产品设计上的经验，比如对玻璃的处理，应用到了 Apple Park 的建筑设计之上。Apple Park 具有特点也显得怪异的一处设计就是每一层的一圈帽檐，Jobs 本不想要这个帽檐设计，但因为需要遮蔽阳光以及防止雨水沾染玻璃幕墙，最终使用了这个帽檐。这个帽檐的下表面也是玻璃做成的，而且为了达到一体性，玻璃需要尽可能的白，但是就算是世界上最好的玻璃，因为内部元素它仍然是泛绿的，尺寸和厚度越大这种绿色就会更明显，Jony Ive 和他的团队就将用在手机盖板上的经验使用到这个玻璃的处理上，在它的背面涂上白色，然后安装到金属板上，即帽檐的上表面，这个金属板也是被喷涂成尽可能的白色，在白色的涂料中增加了一点粉色。而为了保证雨水能够很好的从帽檐的上表面滚下来，他们团队与 Foster + Partners 一同专研并且找到了明尼苏达大学的[研究成果](https://www.cambridge.org/core/journals/journal-of-fluid-mechanics/article/teapot-effect-sheetforming-flows-with-deflection-wetting-and-hysteresis/1BB5A356CBBEE1438DFD519075999EDE)来完成。内外空气流通的设计被隐藏在帽檐之下，完整一体的形态加上白色玻璃和白色金属面的反射，将外部的树木、光线等带入了走廊和室内。

建筑的内外连贯性不只是体现在视觉上，Apple Park 在进门的设计上要求平整连续，没有门槛，开始施工队难以实现，但是 Apple 坚持不放松，因为他们认为如果苹果工程师进入大楼因为门槛而需要调整步态，就会分散他们工作的注意力。

天花板是用混凝土做成了，而且是经过打磨的混凝土，每一块都要经过 Apple 团队的审核，这些混凝土板模仿了楼梯间的水磨石表面，就连斑点也一样，楼梯的扶手也是如此，就像是从边上的墙体挖出来一样。无止境的细节追求还包括对线缆的隐藏，圆角曲线，柱子转角的弧度，可升降的台面，以及用一年半的时间来争论门把手等等。

Apple 完全用产品设计的准则在执行 Apple Park 的建造，制作各种原型来验证设计，因为 Apple Park 是个环形的设计，而且内部也是均一的布局，所以 Apple 就用批量生产的概念来建造，完成一块，然后复制，他们建造出一段的原型，然后 Jony Ive 和他的设计团队对其进行推敲并作为签样进行批量化。Jony Ive 说现在很多的建筑都是软件驱动的设计，正因为他们了解制造，所以建造出一个原型，使用并体验，看什么可行什么不可行，他认为产品设计与建筑设计的界线不应该太严格，建筑可以是一种产品设计，我们可以从尺度、功能、材料和材料类型等词语来谈论，区分专业的界面应更柔和。

建筑是否有必要这么追求完美？一个有意思的现象是，一家公司，给人的印象往往是广告最美，因为广告总是在塑造童话，然后是这家公司的产品，之后才是这家公司的建筑和厂房，有时我们会对这种差距感到惊奇，就像我们去比较 Apple 的产品以及 Apple 老的公司总部。一家公司的建筑需要跟公司的产品挂钩吗，Apple 的新总部像是弥补了这种差距，意义并非停留与象征，我想公司的员工在与建筑的日常交互中，或许会被这些细节，或许会被其中指向的精神所激励。

建筑是否有必要超越 1/8 英寸，“建筑学”是否就止步于 1/8 英寸，“建筑学”是否需要在现代的工业生产的环境下去突破，Apple Park 或许是对这些问题的思考的一个案列。


# 螺钉，还是胶水？

\
\
如果我们认为每一个物品每一个东西都留有一个后门，或者留有一个退出机制的话，那么这个后门或退出机制必然要使用上一代或更早的技术，只有这样才使得 [Dave 能战胜 HAL 9000](https://en.wikiquote.org/wiki/2001:_A_Space_Odyssey_\(film\))。

![iPhone 7 Plus Screws](http://www.hi-id.com/atcl/2017/iPhone-7-Plus-Screws.jpg)

如在《作为符号的设计》一文所说，iPhone 从具体的工具逐渐走向了抽象的容器，iPhone 7 比起 iPhone 4 来经历了巨大的转变，但是在其身上仍留下一些前生前世的印记，其中最明显的一项就是底部的两粒螺钉（上图来自 [iFixit](https://www.ifixit.com/Teardown/iPhone+7+Plus+Teardown/67384)），从 iPhone 3G 开始。作为代表着如今最为先进制造工艺的个人手持数字消费品，在其外表仍有两粒外露的螺钉，如果脱离实物来念叨这句话，会分辨出一些不可思议之感。不只是个人手持的数字消费品，包括其他身边大大小小的产品，外表不露螺钉似乎早已是不成文的规矩，否则这个产品的结构和细节设计就会受到人们的怀疑。

我们很少去质疑 iPhone 底部的那两粒螺钉，熟视无睹视而不见，视而不见的一个原因是这两粒螺钉的处理精致而不突兀，通常只会被看成两个形态元素，而不会与起紧固装配用的螺钉联系起来，更不会从外观上就能看出这两粒螺钉是固定前面板的（iPhone 4 和 iPhone 4s 是固定后面板），倒是容易理解成是固定两粒螺钉之间的接口用的。iPhone 的最外层结构一直是使用物理紧固的方式，即通过卡扣和螺钉来固定，而不是使用胶水，现在大多数手机使用的固定方式。

用胶水来固定，这种结构方式一直都是被鄙视的，通常认为是业余和草率的方式，或者说用胶水来固定就不认为具有“结构”上的设计，而只是面子工程。我们在《设计的踪迹》提到过 Steve Jobs 和 Jony Ive 一同在法国逛商店的故事，这个故事在 Walter Isaacson 的《[Steve Jobs](https://www.amazon.cn/gp/product/1451648537/ref=as_li_tf_tl?ie=UTF8\&camp=536\&creative=3200\&creativeASIN=1451648537\&linkCode=as2\&tag=hiid-23)》传记中写到，两人同时对一把厨房刀具表示失望，因为看到了手柄和刀身之间有一小点胶水。使用胶水来粘接，就像是违背了工匠的基本准则。

但是，如果去看现在 Apple 的产品，很多产品都采用了胶水粘合，或者是从其他方式转到了胶水粘合，比如 iMac 的前面板与机身的结合方式，此前[单纯是磁铁和卡扣](https://www.ifixit.com/Guide/iMac+Intel+21.5-Inch+EMC+2428+Display+Replacement/5952)，2012 年就[开始使用了胶水](https://www.ifixit.com/Teardown/iMac+Intel+21.5-Inch+EMC+2544+Teardown/11936#s42488)。前几天，Apple 对第一代的 Apple Watch [延长了免费维修的时间](https://www.macrumors.com/2017/07/11/apple-watch-back-cover-service-policy/)，因为第一代的 Apple Watch 背部容易脱落，Apple Watch 背部面板是使用胶水与机身结合的，很多人比如 John Gruber [认为胶水和表是不相称的](https://twitter.com/gruber/status/783026270388953089)，[60 美元的精工表](https://daringfireball.net/linked/2017/07/11/apple-watch-unglued)都比高端版的 Apple Watch Edition 装配工艺还要好。

胶水粘合的优点是毋庸置疑，严丝合缝，装配精度更高，减少装配结构和缝隙可以让产品更加紧凑，等等。

我们可以假设一种情形，像第一代的 Apple Watch 的背部容易脱落是因为胶水等问题，我们才发现原来它的结构是如此的，如果我们假设，胶水粘合足够牢靠，就像 Apple Watch 的前面板一样，我们也不会去拆开它，我们更加不会从视觉认知上去拆解它，比如我们看不出 Apple Watch 的前面板到底是胶水粘接还是其他方式，我们是否还有必要去置疑胶水的正当性？

但是如果使用外露的螺钉，那么它的含义也就一目了然了，虽然我们不会确切理解具体的紧固装配关系，就像我们不会去关注 iPhone 底部的那两粒螺钉到底固定哪一个零件，但我们能够看出这个产品的外层结构的某种含义。

就像使用螺钉的方式有好有差，胶水的使用方式也有好有差，胶水粘接也有它的结构表达方式，并非是两片材料一贴合那么简单，用得差就是一种补救的方式，或者偷工减料的方法，用得好就和卡扣和螺钉一样，是一种结构材料。像 Apple Watch 即使我们知道它的前后两面板都是胶水粘合，但是我们并不介意，但是如果一把厨房刀具使用胶水粘合的，我们可能就在意了，因为从我们对产品的理解上，我们不会去拆解 Apple Watch，但我们会从对产品的理解上，去拆解传统的机械腕表，或者厨房刀具，这是模拟时代的产品和数字时代的产品的一个差异。


# 关于苹果设计的书籍和文章推荐

随着介绍 Apple 设计的书籍和文章越来越多，我们作了一些筛选和整理，将值得阅读的内容列举如下。

![Designed by Apple in California](http://www.hi-id.com/atcl/2017/Designed-by-Apple-in-California.jpg)

### 书籍

– [《Designed by Apple in California》](https://www.apple.com/designed-by-apple/)（2016）

1. Apple 官方出的设计画册，你可以通过
2. [这个视频](https://www.youtube.com/watch?v=9zEcGE4umuc)
3. 大致浏览一下画册的内容，它并没有展示设计详情，而是提供了一个从图像化的角度去认识设计的途径。

– [《Jony Ive: The Genius Behind Apple’s Greatest Products》](https://www.amazon.cn/gp/product/159184617X/ref=as_li_qf_sp_asin_tl?ie=UTF8\&camp=536\&creative=3200\&creativeASIN=159184617X\&linkCode=as2\&tag=hiid-23)（2013）/ 中文版：[《苹果首席设计师:乔纳森传》](https://www.amazon.cn/gp/product/B00HF35W9Y/ref=as_li_qf_sp_asin_tl?ie=UTF8\&camp=536\&creative=3200\&creativeASIN=B00HF35W9Y\&linkCode=as2\&tag=hiid-23)（2014）

1. 除了对以往报道和访谈的整理，作者 Leander Kahney 通过对离职工业设计师和 Jony Ive 亲朋好友的访谈，获得了不少第一手的资料，而且作者对设计关注也很细微，虽然书籍内容主角是 Jony Ive，它是目前对苹果设计介绍最为详细的一本书。更多这边书籍的介绍可以见
2. [这篇文章](http://www.hi-id.com/?p=2957)
3. 。

– [《The One Device: The Secret History of the iPhone》](https://www.amazon.cn/gp/product/031654616X/ref=as_li_tf_tl?ie=UTF8\&camp=536\&creative=3200\&creativeASIN=031654616X\&linkCode=as2\&tag=hiid-23)（2017）/ [Kindle 版](https://www.amazon.cn/gp/product/B01LXR18HZ/ref=as_li_tf_tl?ie=UTF8\&camp=536\&creative=3200\&creativeASIN=B01LXR18HZ\&linkCode=as2\&tag=hiid-23)

1. 作者 Brian Merchant 以类似非虚构写作的角度来撰写第一代 iPhone 的诞生，内容主题跨度较大。设计相关的内容，除了
2. [The Verge](https://www.theverge.com/2017/6/13/15782200/one-device-secret-history-iphone-brian-merchant-book-excerpt)
3. 刊发过一章外，主要集中与开始几章。这本书最具价值之处，就是作者采访到了离职的 Bas Ording 和 Imran Chaudhri，他俩的合作决定了 iOS 人机交互的基础，也是 iPhone 的基础。书籍中设计部分的讲述是为 iPhone 开发故事书写服务的，所以没有太多的细节，但是仍然能带来不少启发，可以身临其境体会一个划时代的产品如何
4. [Built from scratch](http://www.hi-id.com/?p=2732)
5. 。

– [《Steve Jobs》](https://www.amazon.cn/gp/product/1451648537/ref=as_li_tf_tl?ie=UTF8\&camp=536\&creative=3200\&creativeASIN=1451648537\&linkCode=as2\&tag=hiid-23)（2011）/ 中文版：[《史蒂夫·乔布斯传》](https://www.amazon.cn/gp/product/B00IM4IFL2?ie=UTF8\&camp=536\&creativeASIN=B00IM4IFL2\&linkCode=xm2\&tag=hiid-23)/ [中文 Kindle 版](https://www.amazon.cn/gp/product/B0084X49V6?ie=UTF8\&camp=536\&creativeASIN=B0084X49V6\&linkCode=xm2\&tag=hiid-23)

1. Walter Isaacson 的 Steve Jobs 授权传记，本书有单独一章来写 Jobs 和 Ive 以及设计工作室，虽然对设计触及不会到达具体，但可以从书中阅读到以 Jobs 的视角来看待产品和设计，仍是一本无法忽略的书。

– [《Becoming Steve Jobs》](https://www.amazon.cn/gp/product/0804138362?ie=UTF8\&camp=536\&creativeASIN=0804138362\&linkCode=xm2\&tag=hiid-23)（2015）/ 中文版：[《成为乔布斯》](https://www.amazon.cn/gp/product/B01LYBOP0K?ie=UTF8\&camp=536\&creativeASIN=B01LYBOP0K\&linkCode=xm2\&tag=hiid-23)

1. Brent Schlender 写的 Steve Jobs 传记，如果你是科技爱好者或者关注具体和细节，会更喜欢这本传记。

– [《Appledesign: The Work of the Apple Industrial Design Group》](https://www.amazon.com/exec/obidos/ASIN/1888001259/architoshbooks)（1997）

1. Paul Kunkel 在 1997 年也就是 Apple 20 周年时出版的画册，目前只能买到二手，这本画册不仅包括了当时 Apple 销售过的所有产品，还包括一些概念设计。

– [《Keep it Simple: The Early Design Years of Apple》](https://www.amazon.cn/gp/product/3897904071?ie=UTF8\&camp=536\&creativeASIN=3897904071\&linkCode=xm2\&tag=hiid-23)（2013）/中文版：[《极简设计:苹果崛起之道 》](https://www.amazon.cn/gp/product/B01J69XZPW?ie=UTF8\&camp=536\&creativeASIN=B01J69XZPW\&linkCode=xm2\&tag=hiid-23)

1. Frog design 创始人 Hartmut Esslinger 的书籍，可以了解那个时代的 Apple 的设计，以及作为设计公司是如何与 Apple 合作的。

– [《Designing Interactions》](https://www.amazon.cn/gp/product/0262134748?ie=UTF8\&camp=536\&creativeASIN=0262134748\&linkCode=xm2\&tag=hiid-23)（2006）

1. Bill Moggridge 的书，里面讲了早期的人机交互设计，比如 Pull-Down Menus 的诞生。

### 文章

#### Jony Ive 和 Apple 设计

– [AXIS Magazine Presents Special Dialogue: Jonathan Ive × Naoto Fukasawa — The industrial design that changed the world](https://www.axismag.jp/posts/2019/02/116846.html)（2019）

1. AXIS 杂志对 Jony Ive 和深泽直人的访谈，以及两位设计师的对谈，说到两人由来已久的交集。有意思的是两人对同一个问题不同的看法，比如说设计在这些年的变化。Jony Ive 最近这些年谈论设计的话题和视角更加宏观，这篇访谈最后写到的那样，Jony Ive 开始在发挥他在设计上的影响力。

– [How the iPhone almost didn’t happen: Jony Ive talks design, drive, and curiosity](https://www.pocket-lint.com/phones/news/apple/146386-jony-ive-design-curiosity-drive-apple-iphone)（2018）\
– [Apple designer Jony Ive has explained how ‘teetering towards the absurd’ helped him make the iPhone](https://www.independent.co.uk/life-style/gadgets-and-tech/news/apple-jony-ive-iphone-designer-stephen-hawking-fellowship-lecture-a8642916.html)（2018）\
– [“On Monday There Is Nothing”: Apple’s Jony Ive On Design And Conflicts In Creativity](https://www.forbes.com/sites/davidphelan/2018/11/20/apples-jony-ive-talks-about-the-iphone-design-and-nearly-giving-up/#5370ee494117)（2018）

1. Jony Ive 获得 Stephen Hawking Fellowship 所作的报告，内容比以往的媒体访谈更加宏观，从更高的层面来探讨设计与创新。

– [Jony Ive interview: Apple design guru on how he created the new iPad – and the philosophy behind it](https://www.independent.co.uk/life-style/gadgets-and-tech/features/jony-ive-interview-apple-ipad-new-macbook-air-mac-tim-cook-event-a8614421.html)（2018）

1. Independent 的采访，在 2018 年 iPad Pro 发布会后，主要谈及了一些 iPad Pro 的设计，诸如圆角屏以及直边薄壁的形态。

– [Jony Ive on the Apple Watch and Big Tech’s responsibilities](https://www.ft.com/content/20aad4d4-d2ba-11e8-a9f2-7574db66bcd5)（2018）

1. Lunch with the FT 栏目邀请了 Jony Ive 共进午餐，所以文章里有不少 Jony Ive 个人生活方式上的一些信息，诸如衣着和饮食等。多数内容与 WIRED25 summit 上相差不多，诸如合作的重要性，尤其是复杂的科技产品；Jony Ive 会鼓励设计师招募员跟设计师坐一起感受他们的哲学和价值观；以及责任感并不停止于一个产品上市，因为当创造一个从未有过的东西时，很多东西的最终走向并非都能始料的，有好的也有不好的，责任感在于尽可能去预测这些结果并减轻那些无法预测到的；当问到是否对城市规划师感兴趣时，Jony Ive 回答“能部分涉及”就很快乐了。

– [Apple’s Jony Ive on the Unpredictable Consequences of Innovation](https://www.wired.com/story/wired-25-apple-jony-ive-on-the-unpredictable-consequences-of-innovation/)（2018）

1. Jony Ive 参见《WIRED》25 周年高峰会谈，Anna Wintour 作了采访，有访谈视频。Jony Ive 谈到了工业设计部门搬入 Apple Park，不同领域的设计师，以及与设计和体验直接相关的专家比如触感专家、材料专家等，坐在了一起（可以说历史上没有过的），将带来无限的可能性；保密对正在进展的项目的重要性，减少噪音等，因为项目中不可避免会出现问题；好奇的重要性，当被问到最近学到什么时，Jony Ive 说到了怎么将玻璃和结构框架结合，虽然这个他们做了十多年了。

– [Apple, Influence, and Ive](https://www.hodinkee.com/magazine/jony-ive-apple)（2018）

1. 手表杂志 Hodinkee 对 Jony Ive 的一个访谈（杂志创办人 Benjamin Clymer 来采访），围绕着 Apple Watch 展开。

– [Quiet By Design: Naomi Campbell Interviews Jony Ive](http://www.vogue.co.uk/article/naomi-campbell-jonathan-ive-interview)（2018）

1. VOGUE 对 Jony Ive 的一个访谈（由模特 Naomi Campbell 来采访），提到了自己是害羞的人以及怎样克服（Avoid people），他的兴趣在于了解人们怎么去认知一个物品，提到整个月呆在工厂，一个创意需要去呵护（或者说保密），等等。

– [JONY IVE: THE FUTURE OF DESIGN（音频版）](https://soundcloud.com/user-175082292/jony-ive-the-future-of-design)（2017）\
– [JONY IVE: THE FUTURE OF DESIGN（文字摘要版）](https://www.fastcodesign.com/90153068/jony-ive-dishes-on-apple-rumors-and-his-design-team-in-rare-interview)（2017）

1. Jony Ive 在 Smithsonian’s Hirshhorn Museum and Sculpture Garden 作的一个访谈。

– [IN THE LOOP](https://www.wallpaper.com/design/jony-ive-apple-park)（2017）

1. Wallpaper\* 杂志对 Jony Ive 的访谈，关于 Apple 新总部和 iPhone X。

– [Inside Apple’s Insanely Great (or Just Insane) New Mothership](https://www.wired.com/2017/05/apple-park-new-silicon-valley-campus/)（2017）\
– [How Jony Ive Masterminded Apple’s New Headquarters](https://www.wsj.com/articles/how-jony-ive-masterminded-apples-new-headquarters-1501063201)（2017）

1. Wired 和 WSJ 对 Apple 新总部的长篇报道，里面包含了对 Jony Ive 的访谈。

– [Discussing design with the man behind your iPhone](http://www.dazeddigital.com/artsandculture/article/33692/1/discussing-design-with-the-man-behind-your-iphone)（2016）\
– [Sir Jony Ive reflects on the nature of objects, the fragility of ideas, and 20 years of Apple design](https://www.wallpaper.com/design/apple-charts-twenty-years-of-product-design-in-new-book)（2016）

1. Apple 推出《Designed by Apple in California》这本书时，Jony Ive 接受 Dazed 和 Wallpaper\* 的采访，里面有一个视频，鲜有拍摄了 Apple 工业设计工作室办公环境。

– [Charlie Rose interview with Jony Ive](https://charlierose.com/videos/25315)（2016）

1. 2016 年 Charlie Rose 对 Jony Ive 的访谈。

– [Charlie Rose Inside Apple](https://vimeo.com/154257890)（2015）

1. Charlie Rose 2015 年访谈视频，其中对 Apple 的工业设计工作室有一些拍摄画面。

– [The Shape of Things to Come](http://www.newyorker.com/magazine/2015/02/23/shape-things-come)（2015）

1. Ian Parker 在纽约客给 Jony Ive 写的长篇人物故事，当时 Apple Watch 刚发布。

– [The man behind the Apple Watch](https://howtospendit.ft.com/technology/77791-the-man-behind-the-apple-watch)（2015）

1. FT 的文章，围绕着 Apple Watch。

– [Jony Ive interview: The story of the Apple Pencil](http://www.telegraph.co.uk/technology/apple/11988396/Jony-Ive-interview-The-story-of-the-Apple-Pencil.html)（2015）\
– [Apple reinvents the pencil: in conversation with Sir Jony Ive](https://www.wallpaper.com/design/apple-reinvents-the-pencil-in-conversation-with-sir-jony-ive)（2015）

1. Apple Pecil 发布时 Jony Ive 接受 Telegraph 和 Wallpaper\* 的采访。

– [How the super-secret Apple Industrial Design group works](https://www.cultofmac.com/303396/design-studio-behind-iron-curtain/)（2015）

1. Leander Kahney 的《Jony Ive》书的节选，文章有一张当时 Apple 工业设计团队的照片。

– [Design education is “tragic” says Jonathan Ive](https://www.dezeen.com/2014/11/13/design-education-tragic-says-jonathan-ive-apple/)（2014）

1. Jony Ive 在 Design Museum 的一个对谈节目上谈到了学校的设计教育脱离实际，以及其他，涉及内容比较丰富。

– [Apple’s Design Boss Jony Ive Gives A Rare On-Stage Interview](http://www.businessinsider.com/jony-ive-vanity-fair-summit-interview-2014-10)（2014）

1. Jony Ive 和 Vanity Fair 的 Graydon Carter 一个对谈节目，还展示了他学生时代的设计，一个电话设计。

– [Jonathan Ive on Apple’s Design Process and Product Philosophy](https://bits.blogs.nytimes.com/2014/06/16/jonathan-ive-on-apples-design-process-and-product-philosophy/?smid=tw-share0)（2014）

1. Jony Ive 接受纽约时报 Bits 栏目的访谈，谈到了后 Steve Jobs 时代的 Apple 的设计，以及刚接任负责指导人机界面设计的工作。

– [Apple Designer Jonathan Ive on What’s Next](http://time.com/jonathan-ive-apple-interview/)（2014）

1. 《TIME》的访谈。

– [Jonathan Ive](http://designmuseum.org/designers/jonathan-ive)（2014）

1. Design Museum 的 Jonathan Ive 专页。

– [Designing Men](http://www.vanityfair.com/news/business/2013/11/jony-ive-marc-newson-design-auction)（2013）

1. Marc Newson 和 Jonathan Ive 的联合访谈，围绕着他们一起合作的为慈善拍卖设计的限量品，以及两人对设计共同的看法。

– [Apple’s Jonathan Ive and Craig Federighi: The Complete Interview](https://www.bloomberg.com/news/articles/2013-09-25/apples-jonathan-ive-and-craig-federighi-the-complete-interview)（2013）\
– [Jony Ive: The man behind Apple’s magic curtain](https://www.usatoday.com/story/tech/2013/09/19/apple-jony-ive-craig-federighi/2834575/)（2013）

1. Bloomberg 和 USA TODAY 的访谈，主要是围绕着 iOS 7 的设计。

– [苹果公司是如何做工业设计的？](https://www.zhihu.com/question/19550279/answer/12240559)（2013）

1. 2011 年在知乎的一个回答，2013 年作了一些补充，里面有一些链接材料。

– [Apple SVP Jony Ive and Marc Newson on Charlie Rose \[Video\]](https://9to5mac.com/2013/11/22/apple-svp-jony-ive-and-marc-newson-on-charlie-rose-tonight/)（2013）

1. Charlie Rose 的视频访谈。

– [An Oral History Of Apple Design](http://www.dailymail.co.uk/home/moslive/article-1367481/Apples-Jonathan-Ive-How-did-British-polytechnic-graduate-design-genius.html)（2013）

1. Max Chafkin 在 Fast Company 发布的一组文章，作者采访到了一些关键人物，如当时离职的工业设计师 Doug Satzger（Apple 工业设计团队人数很少而且极其稳定，而且很多一起工作了 20 多年，Satzger 应该是离职第一人，此后到 2017 年又有 2-3 人离职），可以窥见一些内部秘密。

– [Jonathan Ive interview: simplicity isn’t simple](http://www.telegraph.co.uk/technology/apple/9283706/Jonathan-Ive-interview-simplicity-isnt-simple.html)（2012）\
– [Jonathan Ive interview: Apple’s design genius is British to the core](http://www.telegraph.co.uk/technology/apple/9283486/Jonathan-Ive-interview-Apples-design-genius-is-British-to-the-core.html)（2012）

1. Telegraph 2012 年的独家专访。

– [Sir Jonathan Ive: The iMan cometh](http://www.standard.co.uk/lifestyle/london-life/sir-jonathan-ive-the-iman-cometh-7562170.html)（2012）

1. Evening Standard 2012 年的访谈。

– [Jonathan Ive – Tribute to Steve Jobs（视频）](https://www.youtube.com/watch?v=GnGI76__sSA)（2011）

1. Jony Ive 对 Steve Jobs 纪念致辞。

– [How did a British polytechnic graduate become the design genius behind £200billion Apple?](https://www.fastcodesign.com/3016318/an-oral-history-of-apple-design-1992)（2011）

1. Daily Mail 2011 年的报道，里面挖掘了不少 Jony Ive 年轻时的故事，以及汽车爱好之类。

– [Core77 speaks with Jonathan Ive on the design of the iPhone 4: Material Matters](http://www.core77.com/posts/16817/core77-speaks-with-jonathan-ive-on-the-design-of-the-iphone-4-material-matters-16817)（2010）

1. 关于 iPhone 4 Jony Ive 接受 Core77 的访谈。

– [“Objectified”: Jonathan Ive（视频）](https://www.youtube.com/watch?v=nUHROAtyGIg)（2009）

1. 工业设计纪录片《Objectified》的片段。

– [Jonathan Ive: Inventor of the decade](https://www.theguardian.com/music/2009/nov/29/ipod-jonathan-ive-designer)（2009）

1. 《卫报》2009 年的访谈。

– [Who Is Jonathan Ive?](https://www.bloomberg.com/news/articles/2006-09-24/who-is-jonathan-ive)（2006）

1. 《商业周刊》2006 年的报道。

– [Jonathan Ive: Product Design](http://www.metropolismag.com/uncategorized/jonathan-ive-product-design/)（2006）

1. 《Metropolis》2006 年的报道。

– [onathan Ive was in conversation with Dylan Jones](https://ncarson.wordpress.com/2006/12/12/jonathan-ive/)（2006）

1. 英国《GQ》2006 年的访谈。

– [Jonathan Ive](https://www.iconeye.com/opinion/review/item/2730-jonathan-ive-%7C-icon-004-%7C-july/august-2003?tmpl=component\&print=1)（2003）

1. 当时《Icon》杂志的一个人物故事，Jony Ive 当时获得了 Design Museum 的 Designer of the Year 奖，接受了作者 Marcus Fairs 的采访。

#### Steve Jobs

– [The Tweaker](http://www.newyorker.com/magazine/2011/11/14/the-tweaker)（2011）

1. 纽约客的文章，Tweaker 这个词是对 Steve Jobs 的创新的一个很好的描述。

– [Full D8 Interview Video: Apple CEO Steve Jobs（视频）](http://allthingsd.com/20100607/full-d8-video-apple-ceo-steve-jobs/)（2010）

1. Steve Jobs 2010 年 D8 会议上的访谈。

– [TRANSCRIPT–Bill Gates and Steve Jobs at D5](http://allthingsd.com/20070531/d5-gates-jobs-transcript/)（2007）

1. D5 会议上 Bill Gates 和 Steve Jobs 同台

– [The Perceptionist](http://www.newyorker.com/magazine/1997/09/08/the-perceptionist)（1997）

1. Steve Jobs 回归 Apple 后纽约客的一篇报道。

– [Steve Jobs: The Next Insanely Great Thing](https://www.wired.com/1996/02/jobs-2/)（1996）

1. 《Wired》 1996 年的访谈。

– [Steve Jobs The Lost Interview（视频）](http://www.hi-id.com/v.youku.com/v_show/id_XNDg1MjYxNjk2.html)（1995）

1. 接受 PBS 的访谈。

– [Steve Jobs in 1994: The Rolling Stone Interview](http://www.rollingstone.com/culture/news/steve-jobs-in-1994-the-rolling-stone-interview-20110117)（1994）

1. 《Rolling Stone》 1994 年的访谈。

– [Playboy Interview: Steve Jobs](http://reprints.longform.org/playboy-interview-steve-jobs)（1985）

1. 《Playboy》 1985 年的访谈，但是 Steve Jobs 还不满 30 岁，但是访谈中展现出对技术认识和前瞻非常独到的见解。

#### 产品相关

– [How Apple Makes the Watch](http://atomicdelights.com/blog/a-glimpse-at-how-the-apple-watch-is-made)（2015）

1. Greg Koenig 对 Apple Watch 的制造视频的材料工艺解读。

– [From Phones To Tablets: 26 Apple Designs That Never Came To Be](https://www.fastcodesign.com/1671718/from-phones-to-tablets-26-apple-designs-that-never-came-to-be)（2013）

1. Hartmut Esslinger 的《Design Forward》 一书节选。

– [And Then Steve Said, ‘Let There Be an iPhone’](http://www.nytimes.com/2013/10/06/magazine/and-then-steve-said-let-there-be-an-iphone.html)（2013）

1. 纽约时报的 iPhone 诞生记。

– [iWitness](https://www.sevendaysvt.com/vermont/iwitness/Content?oid=2183491)（2012）

1. Apple 早期设计师 Jerry Manock 的访谈。

– [The iPad that never was](https://www.theverge.com/2012/7/26/3190849/court-documents-reveal-multiple-ipad-iphone-prototypes-kickstand)（2012）

1. 因与三星专利官司，公布的一批早期 iPhone 和 iPad 的设计方案。

– [The Secret of Apple Design](https://www.technologyreview.com/s/407782/the-secret-of-apple-design/)（2007）

1. 对早期 Apple 设计的一个介绍，从 Frog 的设计师到 Robert Brunner 等的采访。

– [The Guts of a New Machine](http://www.nytimes.com/2003/11/30/magazine/the-guts-of-a-new-machine.html)（2003）

1. 纽约时报的 iPod 诞生记。


# 正面冲撞习惯

\
每隔一段时间 Apple 总能“发明”一个让人要捂脸的词语，通过发布会或介绍视频，比如 iPhone 5c 发布时的“Unapologetically”，去年的 iPhone 7 发布会上在解释为什么去掉 3.5mm 耳机孔时，使用了“Courage”这个词。Phil Schiller 在发布会上说 Apple 去掉传统耳机孔的理由可以归结到“勇气”这一个词，迈向未来和做一些让我们所有人都会受益的事情的勇气。“勇气”这个词一出，就像是一个炸弹扔到了正在看直播的人群中，人们纷纷在 Twitter 上[晒出](https://www.theverge.com/2016/9/7/12838024/apple-iphone-7-plus-headphone-jack-removal-courage) Apple 那些具有“勇气”的设计来回应，需要翻身才能充电的 Magic Mouse 2，插在 iPad Pro 上充电的 Apple Pencil，各种转接头，等等。做出这些设计可能是需要一些勇气，因为设计师能预计到大众对这些设计的反应，工业设计也同 Logo 设计一样，设计评论成了一种群体性的观赏体育运动（[Spectator Sport](http://designobserver.com/feature/graphic-design-criticism-as-a-spectator-sport/37607/)），每一个人都有他自己的意见。

![Apple Health Icon](http://www.hi-id.com/atcl/2017/Apple-Health-Icon-0620.png)

这些观众在看到设计后就立刻表达自己的评论意见，如果错过这个时间点评论将失去意义了，作出评论的速度之快就像是，在这些观众眼里，设计师完成这个设计也是刹那之间的事。如果设计是刹那之间完成的事，没有反复辩论和验证，任意草率地作出决定，那就只是鲁莽而不是勇气了。

勇气是指挑战习俗和规矩的决心，习俗和规矩的一部分就蕴含在那些观众的即时评论之中，除了极少数是为了挑战而挑战之外，对习俗和规矩作出了挑战说明已经对其进行了批判性的思考。有些挑战的作出是显而易见的，比如 3.5mm 的耳机接口将会消失，甚至是耳机物理接口的消失，似乎没有人会反对未来是这样的，那么勇气就在于当前的时间段是否合适；有些挑战的缘由是能理解的，比如新一代的 MacBook Pro 的 Touch Bar 设计的一个主要缘由是原先占据此位置的功能键有着极少的使用率，那么勇气就在于新的设计是否维持原先的一体性，并且能否说服用户这不是替代而是一种升级并且能够预示未来；而有点挑战则是超出用户当前认知范围但又认定是未来的正确方向，甚至与其习惯背道而驰的，而且用户需要一定的接受和适应的时间，因此，甚至会激怒一定的用户群体。因科技带来的更新而作出的改变是容易被理解和接受的，而因审美范式作出的改变往往需要经受时间的考验，其中有的可能顶不住第一波的反作力的抵制而被收回。

无疑四年前发布的 iOS 7 是最具勇气的一个设计，尽管在其发布前人们已经讨论所谓“扁平化”设计很久了，随着当时不停的传言 iOS 将走向扁平化，似乎将潮流的趋势推向了后来 iOS 将去的方向（也可以将这看作是试水民意的一种策略）。当时已经有扁平化的设计了，而且不少设计师也作出了一些概念设计，这些概念设计是当时的熟悉的扁平化风格设计。没有人知道 Apple 会是怎样的设计，而当 iOS 7 发布时，我想几乎所有人，至少第一刻，无论是所谓的果粉还是果黑，还是一般人，像是被利剑刺中了，每个人都需要一些时间来治疗伤口。四年后去回看发展历程，同前 iOS 7 时代比较，同那些所谓“扁平化”设计作比较，以及同当下其他移动设备操作系统的界面设计去比较，无法否认 iOS 7 革新是 Apple 勇气的最佳代表。

如果去细读 iOS 7 的设计，当时给我冲击最大的就是大量的官方应用图标使用了纯白色背景，iOS 11 有更多的图标使用的纯白背景。现在回头去看，这是最让我感到佩服的一个具体设计，我现在很喜欢这些白色背景的应用图标设计。而四年前，第一眼看到这些白色的图标，一种感觉是似乎它触犯了某种天条，另一种感觉是难道 Apple 的设计师这么草率，加上后来[媒体报道](https://www.macrumors.com/2013/06/12/jony-ive-put-apples-marketing-team-in-charge-of-ios-7-icon-design/)说 Jony Ive 启用的市场部门来负责 iOS 的设计（实际上准确说法是 Alan Dye 的平面设计部门），像是摇摇欲坠却又被扶上马的感觉。

这个被触犯的“天条”是什么？就是四年后的今天，在其他移动设备的操作系统上很少能看到纯白色背景的系统应用图标，第三方的应用图标有一些是白色背景是为了同 iOS 版维持一致，为什么这些系统没有跟进呢？天条就是习惯和规则，Apple 的 [Human Interface Guidelines](https://developer.apple.com/ios/human-interface-guidelines/graphics/app-icon/) 也会给出指引规则，但这些规则是基于经过争辩后的理性之上的，而被 iOS 7 应用图标的白色背景所触犯的“天条”是视觉经验形成的审美习惯，它是累积而成的，并没有经过争辩的。白色背景是我们认为 Apple 设计师草率的一个原因，白色在我们看来是空白的背景，空出的未经设计的，尤其是在前 iOS 7 时代的图标设计强调背景具有一定的丰富性，而在我们通常印象中，如果一个图标的背景是黑色还好一点，因为我们有时不会把白色看作是一种颜色。如果将白色看作是同其他颜色具有一样的地位，它在喻示是一种空白之外，先是一种可以拿来填充的颜色，那么这些白色背景的图标就稍稍可以理解一点了。正因为白色具有空白和颜色两种表现力，在 iOS 的系统图标中，白色背景是使用最多的一种颜色，它带来了丰富的“[图–底](https://en.wikipedia.org/wiki/Figure%E2%80%93ground_\(perception\))”视觉体验。

前 iOS 7 时代的图标设计用丰富来表现，图标除了指向作用外，本身也是可品味的，而这种品味像是食用美食一般。一旦追求表现力的丰富，圆角四边形就成了一种限制，面积上的限制，可以看到那一时期的第三方应用的图标设计，就像想方设法同轮廓作物理上的抗争。这些图标有欣赏品味咂嘴的乐趣，但是明显它的实际功用，以及蕴含在实际功用中的审美乐趣就被占用了，Paul Rand 说过好的 Logo 能够提供识别的快乐和意义的承诺（“the pleasure of recognition and the promise of meaning ”），而在那些拟物的图标上，这两项都会被图标的精致刻画给覆盖了。

iOS 7 提供了一个光滑连续的圆角图标，以及图标的网格系统指引，这让白色在图标上的表现力被解放了，可以比较一下那些没有作图标外轮廓统一的 Android 系统，或者作了外轮廓统一但是几何形态设计不考究的 Android 系统，白色在其上就失去了表现力，试想在一个不够饱满没有张力而且识别力差的外轮廓下去使用白色，将会是多一重干扰。如果将 iOS 的图标的外轮廓的圆角变小，比如接近正方形，那么白色部分就会脱离开来，就像是一个现成的彩色图标放在一个白色方块之上；同样如果在目前的白色背景上放一个更加写实的图标，白色背景也将独立而出成为一块底板；如果所有的图标都采用白色背景，那么这些图标也会被看成是一个彩色的图标放在一个统一的白色底板之上。或许使用白色背景的图标设计最忌讳的就是被看成一个彩色图标放在白色底板之上，也就只有双层的叠加关系，而没有同一平面上的“图–底”关系。在这些白色背景的图标中，设计最安全的一种就是具有圆形外轮廓的比如 Safari 和 Photos，另外一种就是像 Music 和 Calendar 这种让白色作为颜色来表现的，而像 Health 的这个图标则通过偏移加强了视觉，并且还可以通过位置带来的寓意，带来的“识别的快乐和意义的承诺”。

规则并不是坏事，就像 iOS 7 的白色背景图标如果失去一些规则的支撑，它将成为仅仅只为冲击习惯和打破规则的混乱产物。Michael Bierut 在[他的一篇文章](http://designobserver.com/article.php?id=24558)中介绍了他进入 Vignelli Associates 工作受到约束的那些规则，诸如“任何项目都不能超过两种字体”，“即使是信笺和名片设计，也要从模数网格开始”等等，并且展开说是如何得益于这些不成文的则的限制，在离开 Vignelli Associates 时他感觉终于可以摆脱这些规则的束缚，经过一段“痛苦”自我放纵时期后又认识到那些规则的价值，直到经过设计师 Tibor Kalman 的点醒，意识到你是无法完全逃脱那些塑造你成长的规矩的影响的，窍门是，每隔一段时间，“fuck them up a little”。

然而，除了这些促进成长的规则之外，还有很多来自各个方向的规则，它们都会影响我们，影响设计，有些规则是可以辨明的，有些规则或许就是莫须有的，不成文的，或许就是[习惯](http://www.hi-id.com/?p=2910)，习惯总是充满陷阱，尤其在思考和批判力涣散或丧失时，它会吞噬一切，所以靠着“fuck them up a little”是隔靴搔痒的，唯有直接正面冲撞。


# 从 iOS 7 的电话图标到 polyoxybenzyl…

### 第一部分

iOS 7 刚发布之时，视觉上的变动立马吓傻了不少人，也激怒了不少人，包括设计师，那时候经常可以看到一种说法，“我四岁的侄子都画得比这好。”“就像是刚学会 Photoshop 的人画得。”类似这些话语多指 iOS 7 的图标设计。实际上，这些评语并不少见，伦敦 2012 奥运会标志出来的时候也是这样说，通常用来评价那些脱离已有审美习惯的作品，这个审美习惯不只是样貌上的喜好比如习惯了柔和就不喜欢硬朗，更重要的基础是一种认知模式，那么放到设计师身上，就关系到制作习惯。当设计师将制作习惯当作设计的基础，比如能力，那么只要收集足够多的制作模板就可以代表设计的能力，它同时影响到了认知，所以一旦出现挑战这些模板的时候，就站在模板的正义正确性的角度上对挑战者加以否定。iOS 7 图标的简单设计，以抽象替代可以表现已有制作技巧的质感性图形时，以模板收集为主的设计师就只能通过否定来维护自己了，否则就感觉自己的积蓄变成了废纸了，设计师的维护当然也要上前线。

所以可以看到很多 iOS 7 的 Redesign，基本都是关于图标的，就想说我可以设计得比你好，结果当然不出所料，他们一定以旧有的认知和习惯对其进行修正，而且可以发现很多都在调整渐变、质感和立体感之类，将一个系统打造成一个主题。

如果以 iOS 7 的电话图标的再设计方案上去比较，可以发现两个很有意思的方向，一个就是专注于表现那些收集的模板技巧，光影渐变层次等等，然后随手也对电话图标的轮廓作了改变，似乎他对这个轮廓倒兴趣不打，而更关注与轮廓边缘的高光和阴影，但是这些结果看上去很可笑，尤其是那粗劣的轮廓和造型；另外一个就显得聪明一点，就是完全继承了 iOS 7 的那个电话图标的轮廓，也许他在设计过程中意识到了这个形状不错，然后就是一些修饰性的工程，通过那些收集的模板技巧。

![iOS 7 Phone icon](http://www.hi-id.com/atcl/2017/iOS-7-Phone-icon.jpg)

iOS 7 的电话图标。知乎上有过一个问题：iOS 7 里的改变，有哪些是 Jony Ive 的工业设计理念的衍生？ 提问者在问题补充中说类似 iOS 7 图标的圆角矩形，我不认为这是与“理念相关”，但如果问题是 iOS 7 中有哪些是类似 iOS 7 圆角图标一样受工业设计的影响，那么我会回答这一个，就是 iOS 7 的电话图标中的这个轮廓曲线。没错，就是简单的几条曲线围合，就能看出工业设计的影响，或许，可以看成是一个 6 条曲线的围合。

![iOS 6 Phone icon](http://www.hi-id.com/atcl/2017/iOS-6-Phone-icon.jpg)

这是 iOS 6 的电话图标，为了更细致的比较，将两个图标作一下旋转，如下：

![iOS 6 & 7 Phone icon](http://www.hi-id.com/atcl/2017/iOS-6-7-Phone-icon.jpg)

可以看出 iOS 6 的电话图标是不对称的，而 iOS 7 的电话图标是完全对称的。

![iOS 7 Phone icon](http://www.hi-id.com/atcl/2017/iOS-6-7-Phone-icon-2.jpg)

通过比较可以看出 iOS 7 比 iOS 6 更像电话，看上去更加有手感，而且比例和尺度感觉比 iOS 6 合适（见上图与 Western Electric 的 G 系列手柄的重叠图 ），也更现代，iOS 6 更像是老式电话的手柄，而且感觉不适合面部。所以这是通过形态的尺度上感觉 iOS 7 更考究，像是工业设计的轮廓，而不是符号设计的轮廓，因为更拟真了，而符号通常在尺度上会有改变，只求图形和指向意义的直接关联。

而另外一个原因，让 iOS 7 的电话图标感觉受工业设计的影响，就是曲线的绘制。

![iOS 7 Phone icon](http://www.hi-id.com/atcl/2017/iOS-6-7-Phone-icon-3.jpg)

这是我拟合绘制的图形，并不是 100% 的重合，但已足够接近。曲线就是指这一条大曲线，因为其他部分，比如话筒平面和听筒平面的夹角等，可以归类到上面的尺度部分，而这一条曲线需要单独列出来，主要是因为头部部分的过渡。上面我们曾将这一整条曲线看作是 6 条围合线里面的一条，但实际上不应该看错是一条，如果是一条曲线，那么这条曲线将会非常复杂，只要考察一下曲线的曲率变化就可以，从手柄中部的大曲率半径过渡到头部很小的曲率半径然后更扩大并结束，可以体会一下曲率变化率的曲线。无论在平面或三维软件中，如果绘制成单一的曲线将非常困难，当然可以拟合，但拟合需要事先的模板比如手绘，而从设计的角度来说，没有一个控制点是可以任意的，也就是每一控制点设计是都是确定的，这是设计中非常重要的一点，那么如果一条曲线的控制点过多，无疑设计师会失去控制，比如中间的几个控制点你就无法确定它一定得在这，那么也就是对曲线失去了控制，设计师不会陷入这种自造的陷阱之中。它是由几段曲线连接成的，通过光滑的连续，而在平面设计和软件中通常是一条曲线代表一段形态，它与下一条线段即使是光滑过渡，在形态上也发生了变化。这一点非常容易比较，只要去看一下其他图标设计中的手柄背部的曲线，有的尽管形态上弯曲性也很大，但是它的曲率变化是非常缓和均匀的，或者直接就形体的变化。也就是说 iOS 7 的电话图标这条曲线经过工业设计式的精炼。

现在我们去拟合，无论是使用什么软件都是简单的，多作调整就能达到满意的结果，或许也可以通过手绘再导入作拟合，但无论是哪种，都需要问最初是怎么生成的？而对于上面说那些 iOS 7 图标再设计者来说，是不会去思考这一点的，因为 iOS 7 的这个图标就是刚收集的模板。

至于在图标设计中追求这些是否必要这个问题，并不能简单给出问题，不可否定的是，这样的设计在剔除一些多余的东西的同时也带来了多余的东西，这些多余的东西包括尺度上拟真是否与 icon 的符号性和抽象性相抵触，另外就是高级曲线必然就像它的数学描述一样，必然包含更多的信息，那么在人对符号的认知过程中这些信息是否要跳到前面来积极参与人的识别与认知，这种平衡我们留在后面解答。

我们先看看其他电话图标的绘制。

![SAMSUNG Phone icon](http://www.hi-id.com/atcl/2017/SAMSUNG-Phone-icon-1.jpg)

上图截自：[Apple Hammers In That Samsung’s Products, UI ‘Confusingly Similar’ to Its Own](http://www.wired.com/gadgetlab/2012/08/apple-samsung-ui-trial/)。是否侵犯商标权利这里不去讨论，在这只比较图形的设计，三星在电话的立体感上作了一些努力，如果与 iOS 6 比较而且将影响只看作影响，我认为并没有达到侵犯的地步，即感觉三星是对着某一手柄在绘制，可以比较背部的曲线弧度，在与 iOS 6 比较同时，也可比较一下与 iOS 7 体会一下 iOS 7 精炼过的曲线。

![SAMSUNG Phone icon](http://www.hi-id.com/atcl/2017/SAMSUNG-Phone-icon-2.jpg)

无疑，三星被官司吓得不轻，这是三星目前最新系统中的图标设计，或许三星在选择设计方案是靠律师的。

![HTC Phone icon](http://www.hi-id.com/atcl/2017/HTC-Phone-icon.jpg)

HTC 没被吓也这样，还好旋转了电话图标默认的角度，否则看不出是电话还是把手。

![Windows Phone icon](http://www.hi-id.com/atcl/2017/Windows-Phone-icon.jpg)

Windows Phone 8 的，至少可以看出 icon 不需要写实不需要在尺度和轮廓上拟合现实，当然也需要和整个系统的匹配。这个图标的绘制就是规整的平面几何绘制，它的特点和优势也得益于这种规整，因为人们能识别出这种规整，比如相互垂直，那么就完全不用去考虑与真实的手柄相比会怎样的问题了。

![Android Phone icon](http://www.hi-id.com/atcl/2017/Android-Phone-icon.jpg)

Android 的电话图标，从图标设计的角度来说，这是一个偷懒的设计，至于在系统上是否适合就得看整体，但 Android 在这些细部的视觉一致性上执行很差。

![Android Phone icon](http://www.hi-id.com/atcl/2017/Android-Phone-icon-2.jpg)

Android 也有图标性设计，它的地位当然不能与应用图标比较，所以在此处它需要更抽象化，而形态的设计有一点类似与 WP 8 的规整几何性，并且向轮廓模拟方向上作一些细微的调整。

![Sony Phone icon](http://www.hi-id.com/atcl/2017/Sony-Phone-icon.jpg)

Sony 的，落伍的设计，不过可以与 Android 的作对比，不清晰的光影表现非常影响识别，影响识别不是信息过多，而是形态组织杂乱让人眼无法抓取轮廓。

![LG Phone icon](http://www.hi-id.com/atcl/2017/LG-Phone-icon.jpg)

LG 的，你能认为它是 LG 的吗？它可以是任何其他人的，中庸的设计是很难有归属性，形成不了品牌的原真性及识别性。

![BlackBerry Phone icon](http://www.hi-id.com/atcl/2017/BlackBerry-Phone-icon.jpg)

BlackBerry Z10，可以对比 iOS 7 的背部曲线，这个就显得简单了，但是这个设计的一个缺点在于听筒或话筒的内外弧线圆角和曲线过于相似，与 WP 8 做比较就显得在形态上没有考虑，简单也需要深思熟虑反复比较后。

![Nokia N9 Phone icon](http://www.hi-id.com/atcl/2017/Nokia-N9-Phone-icon.jpg)

Nokia N9 的，如果现在看来，那么听筒和话筒处的立体表现是多余，影响识别。

![Nokia 700 Phone icon](http://www.hi-id.com/atcl/2017/Nokia-700-Phone-icon.jpg)

Nokia 700 的，没有骨骼的设计，为什么，曲率变化太过缓和。

看起来我们可以根据这个电话图标的设计来评判整个操作系统的设计了，它简单，但要绘制出色又是非常困难。

![Nokia 101 Phone icon](http://www.hi-id.com/atcl/2017/Nokia-101-Phone-icon.jpg)

Nokia 101 的。

![Nokia 1200 Phone icon](http://www.hi-id.com/atcl/2017/Nokia-1200-Phone-icon.jpg)

Nokia 1200 的。试想如果将触摸屏手机应用图标中的电话轮廓应用到这些位置上，会是怎样？很少会有适合的，甚至可能就绿色和红色的线条是最合适的。

也就是说，现在的触摸屏手机中的 icon 不是功能手机键盘上的符号，也不是指示牌的符号，不是视觉导引系统中的符号。

![Otl Aicher Phone icon](http://www.hi-id.com/atcl/2017/Otl-Aicher-Phone-icon.jpg)

Otl Aicher 设计的电话图标，来自：[ERCO Aicher Pictograms](http://www.piktogramm.de/pictoserver/pictograms/focus/otl_aicher_4742/en/en_otl_aicher_focus_1.php)。设计的时间在 1970 年代左右（具体时间未作考证，很多资料将其看成是他为慕尼黑奥运会设计的视觉系统内，实际上是在这此前完成的）。

试想在那个年代是否有人能画出 iOS 7 的图标轮廓？那么 iOS 6 呢，如上其他的一些设计呢？

![AIGA Phone icon](http://www.hi-id.com/atcl/2017/AIGA-Phone-icon.jpg)

这个电话图标可能见得更多了，因为这是 AIGA 提供的一套免费使用符号内的一个（[AIGA | Symbol Signs](http://www.aiga.org/symbol-signs/)）1974 年发布，AIGA 同美国运输部合作的结果。

![Bildschirmtext Phone icon](http://www.hi-id.com/atcl/2017/Bildschirmtext-Phone-icon.jpg)

是德国 Bildschirmtext 公司的标志（[Bildschirmtext Wikipedia](http://de.wikipedia.org/wiki/Bildschirmtext)），一家 1983 年创立运营 [Videotex](http://en.wikipedia.org/wiki/Videotex) 业务的通信公司，现在看起来是很酷的一种服务。

更多电话符号的设计可以用 Google 搜索：pictogram icon、telephone symbol、telephone icon、phone icon 等等。

![pictogram Phone icon](http://www.hi-id.com/atcl/2017/pictogram-Phone-icon.jpg)

icograda.org 上有一篇文章：[Iridescent :: Icograda and the development of pictogram standards: 1963-1986](http://iridescent.icograda.org/journal/journal70.php)，介绍了 pictogram 标准的发展，里面不会少电话图标。上图座机全貌的是 1964 年东京奥运会的电话图标，而下面是 1965 年首先用于荷兰铁路，而后 ISO 标准中的图形（左右是大小尺寸时不同应用）。 如果你看这个手柄图像，会发现它留有不少实体物的信息。

作为指示性系统的其中一个符号来说，它并不需要展示自身的识别性，它的自身识别性是属于设计师内部，比如为了体现自己的知识产权自己的独特性自己作为设计师的追求，而符号是为指向所服务的，就像面对一套相似的无衬线字体一样我们不会去比较两个 P 字在设计上的异同，它们的独特性更多在于整体的比较中，但这些独特性对大众来说更薄弱，更加依赖于整个系统，所以这一类符号更像文字。

人们对指示系统中的符号的使用往往是一次性的，不会有反复，也就是说当看到电话符号明白电话亭，这其中并没有快乐，这个过程纯粹为了效率，所以我们不会去回味刚才电话符号的形象和设计，更不会将刚才那个电话符号指向电话亭这组关系收集起来，并与普通的电话符号指向电话亭这组关系作并列，即这类符号没有咀嚼价值。

手机上的 icon 当然有效率上的很高要求，因为 icon 指向的内容更复杂，而且对识别性的要求也更高，因为被其他应用围绕。它需要有抽象性，因为它的作用在于指向应用的内容，它需要用形象来表达这种抽象性，在头脑中形成的映射组合关系中需要有明确的感知形态，如同我们对物体的认知，总是尝试在寻找轮廓，那些轮廓容易概括的物体通常我们会说那是 iconic 的，而对于无形而不具形的东西，以及难以概括轮廓的物品，我们需要用更长的时间来形成那对映射组合关系。但是又不能抽象成指示系统中的符号一样，因为如果将这些符号放在一起，比如一个屏幕上，那就没有效率可言了，并且这种使用不是一次性，所以建立起的映射关系需要更具体可感的元素。等等。

这其中的平衡，iOS 7 的图标设计是很好的示范。

### 第二部分

BBC 出的 《The Genius of Design》[第二集](http://v.youku.com/v_show/id_XMzA2MDM3ODEy.html)，你可以直接跳到 50:00 出观看，如果要更多一点的背景的话，从 44:00 开始。

里面对比了 Henry Dreyfuss 1936 年为 Western Electric 设计的 [Model 302](http://en.wikipedia.org/wiki/Model_302_telephone) 电话机与 Bauhaus 电话的对比，后者是 1928 年 Bauhaus 为 H. Fuld & Co. 设计的，一个是电话的理论上的形式，一个为倾向商业的形式。

而视频中对重量的比较并不能反应真实情况，因为 Bauhaus 电话后来底座用了塑料，而 Model 302 此前也有用金属作底座的外壳。另外 Model 302 受 Ericsson model DBH 1001 影响较大，也就是底座向上收缩的形式。

![bauhaus telephone](http://www.hi-id.com/atcl/2017/bauhaus-telephone.jpg)

Bauhaus 电话，图片[来自这](http://www.liveauctioneers.com/item/7491461)，更多图片可 Google 搜索“bauhaus telephone”。

这是一个 Form Follow Function 的设计，在当时“形式追随功能”并不像我们现在用时那么折衷，当时是非常彻底的，剔除一切不必要的元素，使用基本的几何形态。比如视频中说的听筒和话筒部分使用了圆形，那么为什么从侧面看不是圆柱，那是因为要从模具中脱落，为什么听筒有一个斜面，以及话筒为什么要这么设计。

![bauhaus telephone](http://www.hi-id.com/atcl/2017/bauhaus-telephone-2.jpg)

上图[来自这](http://www.henderson-tele.com/vtm/de/de/pre-1933.html)，为了防止听筒声音干扰。

那么 Bauhaus 电话的手柄为什么在话筒部分突出呢，而不像听筒部分那样进行融合呢？

![bauhaus telephone](http://www.hi-id.com/atcl/2017/bauhaus-telephone-3.jpg)

上图[来自这](http://www.britishtelephones.com/t700.htm)。

看了这幅图，以及查看一些手柄的图，就可以了解 Bauhaus 电话的那处设计了，为了抽芯，因为手柄中间需要是中空的，为了通线，那么如何来形成空腔呢，它可不像我们现在座机手柄的设计，通过上下壳塑料件扣在一起，那么自然不需要关心中间的空腔了。早期的手柄是一体式的，所以抽芯来形成空腔是必须的，所以 Bauhaus 电话的那处设计，是有一条直通听筒的为了走线的通道。也有一些其他的处理方式，比如直接放入一根金属管等。

那么为什么上图所示的是弧形的呢，弧形的型芯更复杂，它需要保证是半径恒定的圆弧，否则抽不出芯（除了从电话接入口处外，还可以从话筒和听筒处抽，Western Electric 的就是从此处抽芯，无论是 F1 型还是 G 型）。

![bauhaus telephone](http://www.hi-id.com/atcl/2017/bauhaus-telephone-4.jpg)

Bauhaus 电话的手柄也有另外一个版本，在形态上可作比较，上图[来自这](http://www.henderson-tele.com/vtm/de/de/pre-1933.html)。

所以，我们看到的很多手柄之所以为那样的弧型设计，可能一个很重要的原因就是为了抽出中间的空腔。

那么为什么手柄是两头小中间大的设计，中间大是为了人机为了手的握持，两头小或许减少材料，让形态更轻巧灵动，但此前的古式电话的影响是肯定的，就像话筒和听筒部分的设计。

在一些大照片中可以看清 Bauhaus 电话手柄的分模线。那么，型芯的形态肯定要均一的，就是中空的截面处处一样，而手柄却是两头小，中间大，那么肯定造成了壁厚不均，如果以我们现在的注塑观念来说，壁厚不均是要回避的，为了避免形体收缩不均对最终成品带来了凹坑等问题，而且壁厚不能太厚，但是看上面的结构示意图，可发现壁厚很厚。

因为材料是 polyoxybenzylmethylenglycolanhydride。

polyoxybenzylmethylenglycolanhydride 是什么材料，就是 [Bakelite](http://en.wikipedia.org/wiki/Bakelite)，说出中文就很熟悉了，电木、胶木，那是最早被大量用作产品工业制造的产品，它与工业化以及工业设计的发展紧紧相随，虽然不少人用它来作首饰，其实在日常生活中还经常碰到，比如锅的把手，用的时间长了，发现手柄破碎脱落，这种不会被高温软化的塑料就是电木，当然材质看上去也很粗旷。

电木是热固性塑料而不是我们现在最常见的塑料那样是热塑性的，热固性塑料比热塑性性塑料在壁厚不均上更容易控制。热固塑料的分子间是交叉连接的网状结构，所以它的强度也较热塑的高，同时因为不易变形而很脆。

可以比较一下后来转变到（热塑性）塑料时代的产品，[见这](http://www.samhallas.co.uk/collection/plastic.htm)，尤其比较一下塑料手柄的形状，能发现是比较均匀的形状了，而不像电木做的手柄，能有很大的形态变化。

而像 Model 302 以及其他很多很多的电话，底座部分早早使用了热塑性塑料，而手柄却一直用电木。网站 [Sam Hallas Collection](http://www.samhallas.co.uk/collection/bakelite.htm) 上有材料使用不同时期的简介。

Bauhaus 电话的纯粹几何形设计来自于 Form Follow Function 的指引的另一个证据是在 1925 年德国已有光滑圆弧式的手柄设计了，[见这](http://www.henderson-tele.com/vtm/de/de/pre-1933.html)。在这些手柄身上可以看到分模性很明显，这也是电木的一个材料特性，分模线明显而且不易表面处理（绝缘抗腐蚀等因素），所以通常手柄的分模线在手柄的下方，当然也有左右分模的，那么中间那条棱线会很明显。

![Model 302 telephone](http://www.hi-id.com/atcl/2017/Model-302-telephone.jpg)

Model 302，图片[来自这](http://en.wikipedia.org/wiki/Model_302_telephone)，这个款式底座是热塑性塑料，而手柄是电木，可以看到分模线。

![Model 302 telephone](http://www.hi-id.com/atcl/2017/Model-302-telephone-2.jpg)

图片[来自这](http://www.oldphoneshop.com/products/western-electric-f1-handset.html)，Model 302 是一个 icon 式的产品，它的形象就是电话的代表，当然现在一代一代会有变化，Model 302 的手柄之一就是 F1 手柄也是这个 icon 的形象一部分，两个碗形设计以及碗和手柄结合处的肩部设计，而且话筒倾斜度大，这个形态也就在 iOS 6 的电话图标中反映而出。

![Henry Dreyfuss Western Electric Phone](http://www.hi-id.com/atcl/2017/Henry-Dreyfuss-Western-Electric-Phone.jpg)

Henry Dreyfuss 为 Western Electric 设计的 G 系列手柄的最初设计进化图，图片[来自这](http://www.beatriceco.com/bti/porticus/bell/telephones-technical-handsets.html)，最终就是这：[Patent USD151614](http://www.google.com/patents/USD151614) 一些一系列的 G 手柄。

开始的视频用两部电话的比较来形成美国商业设计与 Bauhaus 的区别，是非常明确的，还有一个细节也能反应出商业设计的另外一面，那就是这个手柄与电话线连接部分的不考究。

![bauhaus telephone](http://www.hi-id.com/atcl/2017/bauhaus-telephone-5.jpg)

我想 F1 手柄的把手与听筒话筒连接部分的设计也应该受影响自 Ericsson model DBH 1001，这个结构形态与当时美国设计的代表性语言流线型结合正是如此。

然后（热塑性）塑料时代的到来，以及技术的发展，电话机的形态从上面这些逐渐进化到我们现在这样，同时，手柄也发生改变，从[类似电木时代](http://www.samhallas.co.uk/collection/plastic.htm)开始到了[左右放置](http://www.samhallas.co.uk/collection/post_lib.htm)，塑料手柄采用上下壳配合的方式，也就将元件全内置与手柄之中，也就没有了额外的听筒和话筒处旋盖式的设计，然后话筒不断变小变成了几个麦克风通孔。

![Modern telephone](http://www.hi-id.com/atcl/2017/Modern-telephone.jpg)

从现在 Amazon 的[热卖清单](http://www.amazon.com/Best-Sellers-Electronics-Corded-Telephones/zgbs/electronics/172746/ref%3Dzg_bs_nav_e_4_3017871)中选了一张图片。 手柄愈来愈简单扁平的设计，使其形象的符号性丧失，加上产品变迁，它也终将无法取代前代产品的符号功能。

从这些几个有代表性的例子去考察形状的形成，会发现形状是来自于很多的制约，比如制作方式，抽芯决定的手柄弧度和碗形的弯曲度，与材料的配合，以及技术带来元件的变化导致形态的改变，即形状并非是想当然的，它的生成是富含逻辑的。

回过头去看 Otl Aicher 时代，如果说那时告诉它取消话筒听筒处的设计，肯定是不符号那时代的认识了，因为那时电话还是上下两个圆碗。

在 iOS 7 的电话图标中很难明确指出是那个时代的手柄形象，如果说 iOS 6 还算是老式电话机的话，因为可以分辨出听筒和话筒上的两个旋盖，以及手柄的弧度，而 iOS 7 的曲线形态明显是当下的，但它的轮廓却不是现今的手柄，它还在强调听筒和话筒，只不过没有明显刻画成老式电话机的形态，并且没有作立体阴影表现，留下一定的暧昧性。显然，iOS 7 的电话图标改进不是以实物进化为参照了，消除了 iOS 6 对实物形象的依赖，而是纯粹在形态和符号形象自身的发展中去追求，一代一代人对这个功能需求的符号代表在发生变化，从 Otl Aicher 时代再到下一代，下一代肯定对 Model 302 等的认识越来越少，即使在影视中常出现，也就是说，符号的继承需要依赖符号自身。如何让自己的符号设计既符合时代，又能同符号自身历史发展有连续性，而不是时代错乱到处穿越，iOS 7 的电话图标是个好例子，尤其对比其他电话图标的设计。


# Affordance（可供性）和设计

![](http://www.hi-id.com/atcl/2011/ios-keyboard.png)

#### iOS 键盘

为什么 iOS 的键盘如此出色，其他系统的虚拟键盘虽然在尺寸上基本超过 iOS 键盘，而它们的视觉体验还是操作体验相比之下显得像一团渣，为什么？

在比较分析之前，先说明一下，分析虽然是一个逆向过程，但在这里我认为诠释性的分析比揣测设计者的意图更有价值，当问“为什么这样设计”的时候，应该将眼界超越设计者本人的意图，即使有一些给出的理解完全脱离设计者的意图甚至与其相背。

iOS 键盘是（新一代）虚拟屏幕键盘的开山始祖，它有很多创新的设计和技术应用，在第一代 iPhone 上市的时候，Apple 做过详细全面的视频介绍，其中有一段就是 iOS 键盘介绍，土豆视频[见这](http://www.tudou.com/programs/view/aqsstX4tqog/isRenhe)（Youtube 地址[见这](http://www.youtube.com/watch?v=a-9UggQV9BM)）。Steve Jobs 在 WWDC 2007 上介绍 iPhone 是从革命性的用户界面开始的，从列出 Moto Q、BlackBerry、Palm Treo 和 Nokia E62 这四台带全键盘的手机——当时被称为智能手机——开始，它们的按键和操作是不能改变的，无论你是否需要它总是在那里，而不同的应用需要不同的用户界面。iOS 虚拟键盘只在需要的时候出现，在不同的应用中使用不同的键盘，在输入网址的时候就将空格键替换成了“.”、“.com”和“/”等配合网址输入的按键。同时虚拟键盘需要解决精度以及效率问题，让人轻松快速的输入，使用放大镜进行轻松的光标再定位，比如“臭名昭著”的热词自动修正（英文），除了使用字典以及联系人等词组匹配进行修正外，还可以对输入区域进行匹配比如介绍视频中的将“ouzza”转为“pizza”，还有一项创新的设计是，根据字典来预测下一个字母，以此实时改变键盘的各字母对应的触摸区域的大小，让这些字母更容易被触发，比如输入“tim”，那么接下了“e”就比相邻的“w”和“r”的触摸区域大，因为“time”是一个常用词，而没有“timw”和“timr”这两个英文单词。

在 Apple 的获得专利中，与 iOS 键盘相关的有很多项，重要的就有根据下一个字母来动态改变触摸区域这一项，专利号 7,900,156 名称为“Activating virtual keys of a touch-screen virtual keyboard”，相应在中国的专利申请号为 200680033988 名称为“致动触摸 — 屏幕虚拟键盘的虚拟键”，专利内容就是上述实现的一个一般化，将触摸区域的改变一般化为按键如何根据触摸位置来触发，触摸位置与触发按键通过距离来确定（比如与哪个按键的距离小就触发哪一个按键），同时引入一个权重，那么上述实现中，出现下一个“e”比“w”和“r”有更大的权重，也就是“e”的触摸范围更大，这项专利例举的另一个实现，就是“删除”按键的权重设置成小的，它更不容易被触发。另外在设计专利中，有两项比较显著，一个是 D644,238 整个键盘的设计，另一个 D621,848 是关于按键被按下时挤出的那个放大的键盘指示牌。

我们先从尺寸来看 iOS 键盘的设计，上图是 iPhone 4 之后的视网膜屏幕的界面，所标注数字的单位为 px，其实就是 320\*480 屏幕的两倍，前后键盘设计并没有变化，如果换算成 mm 为单位的实际尺寸，那么就类似 32 px/326\*25.4=2.49 mm。这些尺寸是如何决定的，如果从设计者的角度来看，这个决定的过程既有逻辑的部分也有感性的成分，所以我们分析不能像数学一样去反推。iOS 的键盘高度为 430 px（320\*480 的分辨率时为 215 px，其实 430 px 上方还有 2 px 的黑线），正好位于屏幕正中间向下偏 50 px，或许可以提出一个问题就是键盘为什么不是屏幕的一半呢？这个尺寸由其内部支撑起的，但是如果把它设成刚好一半，那么在比例上很容易体会到压抑（均分是较容易被识别）。76 px 的按键高度是 5.92 mm，52 px 按键宽度是 4.05 mm，12 px 按键间距是 0.93 mm，32 px 的按键间距以及字高是 2.49 mm，iOS 的 [HIG](http://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/Characteristics/Characteristics.html#//apple_ref/doc/uid/TP40006556-CH7-SW6) 建议的最小可触摸操作元素是 44\*44 point，转换到 mm 单位为 6.90，Windows Phone 7 的 [HIG](http://msdn.microsoft.com/en-us/library/hh202889%28v=VS.92%29.aspx) 中也说到最小触摸目标的高度是 7 mm（紧接着也说到键盘和链接可以例外，因为有额外的动态补偿）。肯定有很多人机尺寸可供参考，比如横向的尺寸，而从设计的角度除了依赖这些统计学上的数据，更重要的是结合经验和体验，毕竟在这么一个小范围内，依赖后者更迅速。我们从 iOS 键盘的尺寸上可以看出它们都是经过细致安排的，就是“尺度”。

![](http://www.hi-id.com/atcl/2011/android-ios-keyboard.png)

将 Android 的键盘和 iOS 键盘以实体的尺寸为准进行比较，为什么不选用其他中文输入法的键盘，因为这些键盘多数是模仿 iOS 键盘的，而且有几个在尺寸上没有考究，比如上下两排按键或间隙都不是统一的，有 1 px 的差距，这样它们就没有什么参考价值。 Android 键盘也有尺寸诡异的地方，比如按键的圆角是 2px，2 px 的圆角在通常情况下是没有表现力的（只有3个像素参与），尤其像键盘这种密集排布的，反而让人感觉难受。

比较上面两个键盘，iOS 键盘虽然在整体的尺寸上小于 Android 键盘，但是按键之间的间距都要大于 Android 键盘，横向的 0.93 mm 对比 0.87 mm，纵向的 2.49 mm 对比 1.96 mm，尤其是纵向的差距，使得 iOS 键盘的按键可以更清晰和安心的识别、瞄准和按下，此时 iOS 上 8px 的圆角也发挥了很重要的作用。iOS 键盘的文字使用的是黑色的 32 px 高的大写 Helvetica （Bold），而 Android 键盘采用的是白色的 x-height 为 20 px 的小写 Droid Sans （Bold），人对物体的识别通常被轮廓左右，简单饱满的轮廓所需的识别精力小，尤其是在重复连续的键盘操作中，Android 键盘上的小写的小字体需要花费更多的精力，字体小需要聚焦，而复杂的小写字体轮廓让人付出更多的精力来拾取轮廓而且高度上会有跳动（更容易中途中断），而大写的大字体，在整体上是饱满完整的，在识别上所费精力更少。iOS 键盘的字体带来另外一个良好体验，就是与识别结合的后继动作——瞄准，它让人感觉到更容易被瞄准和敲击，因为按键上有字体，所以瞄准时首要注意的是字体的中心，而按键的轮廓是辅助，那么 Android 的小写字体更不容易找到中心，像 j l i 等就显得更难了。Android 键盘还有一个颜色的设计，从完全黑色的背景到灰色的按键再到白色的字体，引导视力集中到小字体上，而 iOS 富有层次感的设计，从有柔和渐变的背景到清晰突出的按键，再到黑色的大字体，让人的视力不过分集中，这样字体和按键感觉上是一体的，这也符合操作的识别范式。细致的层次感设计，比如阴影、渐变和高光让界面更加具形化，丰富人的体验。

什么是“丰富人的体验”？从 iOS 键盘的一个创新设计说起，那就是当按键被触发时挤出的放大显示牌，就是 D621,848 这个设计专利。iPhone 之后的其它虚拟键盘也有类似的放大显示，不过基本都是在上方跳出一个独立的方块，不像 iOS 有挤出效果，让人在感觉上能平滑的过度。放大显示从另外一个角度是设计的必然，即没有 Apple 其他的后来者都会想到，它位于逻辑的主干道上，但是像 iOS 这样的交互方式，是一种创新。这个放大显示牌它是在按键被触发后才显示的，也就是它是不参与识别、瞄准和敲击这个过程的，也就是它对当前这个按键出发行为和结果并没有带来帮助，只有当按错了之后，它才可能发挥它的显示功用，而通常情况下它是被忽略的，或者说只被散落的注意力关注着，它的作用只是有限的辅助修正输入。但是它却“丰富了人的体验”，它就像那些细致刻画了键盘层次感的阴影高光，或者键盘声音一样，如果没有它，功能上并没有什么缺失，但是就像没有了润滑油。它只能显示用于比较刚才敲击的按键是否正确，它不能保证当前的操作更精确，但是它可以让下一个操作更精确。当我们说体验这个词时，它必然与过程相关。

iOS 键盘无论是从操作前的视觉体验，还是操作过程之中以及之后，它都让人感觉其隐含的优秀性能，虽然实际上人的操作只是在敲击玻璃。

我们先要下个岔道溜达一下，因为我认为有一些值得讨论的东西。

#### Built from scratch，始自粗砺

![](http://www.hi-id.com/atcl/2011/apple-early-keyboard-tablet-patent.png)

iOS 键盘的挤出放大显示牌似乎 Apple 很早就做了，在 2005 提交的一份专利申请中可以看到类似的，如上图左所示，这份专利的申请号为 20060053387，题目为“Operation of a computer with touch screen interface”，发明者署名只有 Bas Ording 一人。这份专利申请主要是关于一些诸如按键的操作，比如不同时长的接触时间配置不同的反应，而上图这个键盘指示牌是放在最后的一项应用实现。在这份专利描述中的显示牌是“preview”用的，它是在一个虚拟界面元素被激发在为期指派功能前显示这个元素被激发，比如当手指停留在触摸屏或者移动而不举起，那么界面元素对应的功能就未激发。

上图右来自 Apple 在 2004 年提交的一份专利申请，这是 Apple 最早的几份与多点触摸以及平板电脑有关的专利之一，这份专利的申请号码为 20060026535，专利的署名有 Bas Ording，Greg Christie 和 Imran Chaudhri 三位用户界面设计师，Steve Hotelling，Brian Huppi 和 Joshua Strickon 的三位硬件设计人员，Jonathan Ive 和 Duncan kerr 两位工业设计师。这份名为“Mode-based graphical user interfaces for touch sensitive input devices”的专利有 72 页，可以看到 Apple 对多点触摸的平板电脑初探时是怎样的情形，在一些实现举例图示中可以看到圆环形的操作界面，在上图中你可以看到两个，可以理解成从 iPod 中继承而来的操作模式，或许在现在看来很难理解，既然是多点触摸了，为什么还要引入一个额外的操作界面。还可以看到很多操作方式的雏形，比如 pinch-to-zoom （专利中介绍这种操作背景就是地图）和旋转等，这些注定会被发明的多点触摸交互方式。

有了“Steve Jobs: A Biography”这本传记的补充，配合一些其他材料以及这些专利中的信息，可以大致了解一下 iPhone 和 iPad 的开发过程，Jonathan Ive 的设计团队最早开始在做一些多点触摸屏的探索。Steve Jobs 在 D8 上也说过（[视频 36:30 处](http://v.youku.com/v_show/id_XMjk4NDM4Njg4.html)），当设计开发人员给他展示了平板电脑的样机之后，他让一位优秀的用户界面设计师来做一些界面，几星期后 Steve Jobs 被自然滚动（橡皮筋式弹跳）操作给震惊了，然后决定应该先做手机，所以就有了 iPhone。这位用户界面设计师我猜测是 Bas Ording，因为最早的 List scrolling 专利 [7,469,381](http://www.google.com/patents/about/7469381_List_scrolling_and_document_tran.html?id=n7WxAAAAEBAJ) 署名只有他一人。

通常我们认为伟大的产品都是经过精心规划的，其实它们的开始都差不多，都是从很原始的状态开始，这个原始的状态很重要，它是保证原创性的基础。如果我们去看 iOS 的革命性用户界面，它们并不是不可解剖的，其实粗略的说，就是以主要的几项创新的交互支撑起来的，有了架子之后剩下的就是完成实体化的工作，Steve Jobs 就可以靠一个自然滚动效果而引向 iPhone，这些主要的交互创新中有的是随着深入自然或必然会被发现或发明的，比如 pinch-to-zoom，有的是属于闪现的。有哪些主要的创新交互，可以在 uspto 搜索像 [Bas Ording](http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2\&Sect2=HITOFF\&p=1\&u=%2Fnetahtml%2FPTO%2Fsearch-bool.html\&r=0\&f=S\&l=50\&TERM1=apple\&FIELD1=ASNM\&co1=AND\&TERM2=bas\&FIELD2=INNM\&d=PTXT)，[Greg Christie](http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2\&Sect2=HITOFF\&p=1\&u=%2Fnetahtml%2FPTO%2Fsearch-bool.html\&r=0\&f=S\&l=50\&TERM1=apple\&FIELD1=ASNM\&co1=AND\&TERM2=Christie\&FIELD2=INNM\&d=PTXT) 和 [Imran Chaudhri](http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2\&Sect2=HITOFF\&p=1\&u=%2Fnetahtml%2FPTO%2Fsearch-bool.html\&r=0\&f=S\&l=50\&TERM1=apple\&FIELD1=ASNM\&co1=AND\&TERM2=Chaudhri\&FIELD2=INNM\&d=PTXT) 等这几员大将相关的专利。

这些设计师你基本都搜索不到什么东西，不过可以搜索到1998年 Bas Ording 在到 Apple 工作不久回荷兰作过一个讲座，讲座的文字[见这](http://www.vanriet.com/doors/doors5/content/ording.html)，两张图片[见这](http://www.vanriet.com/doors/doors5/press3.html)，讲的是不同按钮的不同感觉。现在看上去，尤其是从这两张小图看，非常原始，非常粗砺。如果现在去[搜索](http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2\&Sect2=HITOFF\&p=1\&u=%2Fnetahtml%2FPTO%2Fsearch-bool.html\&r=0\&f=S\&l=50\&TERM1=apple\&FIELD1=ASNM\&co1=AND\&TERM2=bas\&FIELD2=INNM\&d=PTXT) Bas Ording 的一些专利，就会发现很多创新的交互他都有参与或者独立一人负责。

如果从设计的角度来看，世界没有什么“微创新”或者“自主创新”的东西，如果创新有大小的限定，就像多数人认为的那样，具有革命性的突破或者有高技术含量的研究才叫创新的话，那么你就不会认识到创新的原创性，如果你去搜索 Apple 的设计师，比如 Imran Chaudhri，他的自我介绍只有很短的一条“I make things”，这句可视作谦卑也可视作高尚，就像 Jonathan Ive 致 Steve Jobs 的悼词一样：“Steve loved ideas, and loved making stuff.” 而“自主创新”除了可闻到腐朽的民族主义气味还有的就是自卑，“微创新”当然是功利主义者的龟壳。

始自粗砺，并不是说去再发明轮子，而是一种关于设计和制作的世界观，去触及设计和制作的本质的一层，理解一件东西是怎么被制作而成又是怎样被使用的。如果自愿放弃这些探索，你做的只是“换肤”、“定制”、“深度定制”之类。如果没有“始自粗砺”的意识，虽然可能你在别人的框架上有一个容易的开端，但结果要么浅尝辄止，要么受制于框架，甚至测试被缠住即使想重新“始自粗砺”已经无法脱身了。

往回走。

#### 用户体验

设计和制作是一段历程，产品对于用户来说也是一段段历程，因为有了长度，也就有了用户体验。当人人都谈论用户体验的时候，必然会出现很多曲解，体验是历程，我们可以比作一段路程的行走，设计和制作者就像是为用户开路，让用户有一段愉快和丰富的旅程有很多工作要做，但是现在很多所谓的用户体验并不是把精力放在那一段路上，而是在用户上路的时候，推一辆小推车“花生、瓜子、矿泉水”来进行贿赂，如果去比谁更会体贴用户，我觉得这就不是 Making stuff 了，制造伟大的产品让用户感到愉悦，和取悦用户来骗取信任和利益是两回事，所以对那些动不动就将“用户放在第一位”的公司要避而远之。

抄条小路，回到主道，回到开始说的。

同样是一块玻璃，为什么有的让人敲击起来有更好的体验，这当然与玻璃关系并不是太大，主要是交互界面，那么交互界面相对与体验优劣的特性是什么？比如 iOS 的键盘比 Android 的键盘更容易按下，那么 iOS 键盘具有的优势和特性是什么？“设计的好”这个答案太过笼统，或许我们可以借用 James J. Gibson 的 Affordance 理论。

#### 阈下意识的感知，物体的属性

![](http://www.hi-id.com/atcl/2011/affordance-milk-carton-elbow-window.jpg)

所谓“阈下意识”就是无意识，荣格在《本能与无意识》一文中写道：“我把无意识定义为所有那些未被意识到的心理现象的总和。这些心理内容可以恰当地称之为‘阈下的’——如果我们假定每一种心理内容都必须具有一定的能量值才能被意识到的话。一种意识内容的能量值越是变低，它就越是容易消失在阈下。可见，无意识是所有那些失落的记忆、所有那些仍然微弱得不足以被意识到的心理内容的收容所。”荣格还将无意识分成了个人无意识和集体无意识，前者包括像被压抑的个人情感、被遗忘的心理内容之类，后者不是来自个人体验和后天习得，而是来自先天，它是集体的普遍的。

由于这里要谈论的意识范围比较小，而无意识这个词涵盖面大，并且会为对它不了解的人带来困惑，所以采用阈下意识这个词，平时还说的潜意识、下意识、弱意识都包含在内，也因为我们并不站在心理学的角度来讨论这些内容，所以在概念的限定上更轻松自由，这里的阈下意识也包括后知后觉，比如延时进入意识的身体感知等。

左图来自深泽直人，他在书中或者演讲中会经常提到，一个牛奶盒放在了扶手栏杆上，而且牛奶盒的底面与扶手上的小台面刚好相符合，就如这个扶手就在等这个将要被扔弃的牛奶包装盒一样。深泽直人会在前后列举其他很多的例子，来说明环境对人的行为的拉扯作用，比如地上的垃圾桶没有人扔东西，但是和这些垃圾桶张得差不多的，可以看成是把这些垃圾桶架高了，自行车前面的篮子却被人当作垃圾桶，这是高度的吸引。还有车站站牌边的铁管护栏被当作座椅，长时间之后铁管就弯曲了，因为这个高度刚好适合人坐下。深泽直人会用“刚刚好”这个词来描述这种人与环境的关系。

右图来自 [Stylepark](http://www.stylepark.com/en/news/down-with-the-window-and-out-with-your-elbow/325250) 的一篇文章：Down with the window! And out with your elbow! 文章把这种习惯提高到了美国风俗的高度，说这种习惯大约在 1950 年代被年轻人追抬到一种文化符号，悠哉悠哉开着车，同其他人打招呼，这篇文章是从文化的角度去解读这种行为，排除这些社会性的因素，这个动作同样也是自然的，因为高度“刚刚好”，这个高度和距离在引诱人将手臂放上去。

实际上这种由阈下意识对周遭作出的感知并且身体作出直接反应，时时刻刻都在发生。它与有意识的感知有什么差别呢？意识行为最重要的特征是集中，比如注意力的集中，视力的集中等，集中必然是范围内的，而意识后的行为则更为复杂，而未经过人类智慧思考的对阈下意识作出的反应，通常是自然的行为，更加纯粹。

深泽直人从 1998 年开始做的“Without Thought”为主题的 Workshop 就是基于他对人们这些无意识行为的观察，以及对这种人和物关系对传统设计观念的冲突的思考，通常而言的设计是需要激发人的注意力。他说到太多的刺激并不是一件好事，人和物的关系应该是无意识的，和谐的，“不加思考”的。

如果我们问为什么，或者不停留于现象的表面，试图去分析这些“刚刚好”的交互关系背后的实质，大多数情况我们会把研究对象对准人，人的认知心理和人的经验习惯之类，因为物体很简单，比如司机的手为什么会搁到车窗上去，因为高度刚好合适。如果我们将“刚刚好”认作是物体的一个属性，以此为出发点去思考人与物的交互关系，我认为可以拓宽认知视野。但是“刚刚好”这一种属性不同于密度、高度、硬度、温度等物理属性，它不是构成这件物品的物质基础的，而是呈现出的，并且与环境或者说人相关的，如果没有人的存在，这种属性也无从谈起，比如车窗如果没有司机的存在，那么它就不会有这个“刚刚好”的属性。

那么它是什么？

#### Affordance

affordance 是 James J. Gibson 造出来的一个词，Gibson 是20世纪最重要的认知心理学家之一，他的生态学式视知觉论和直接知觉为认知心理学开辟了新的领地。affordance 是 afford (提供、给予、承担)的名词形式，环境的 affordance 是指这个环境可提供给动物的属性，无论是好的还是坏的，所以我认为“可供性”是一个合适的翻译。Gibson 用来解释 affordance 的例子是这样的：如果一块地表面接近水平（而不是倾斜的），接近平整的（而不是凸起或凹陷的），以及充分延伸的（与动物的尺寸相关），如果地表面的物质是坚硬的（与动物的重量相关），我们可称它为基底、场地或地面，它是可以站上去的（stan-on-able），可让四足或两足动物保持竖直姿势，它是可以行走（walk-on-able）和跑动（run-over-able）的，它不像水表面或沼泽表面之于一定重量的动物那样是可陷入的（sink-into-able）。列出的四项属性——水平、平整、延伸和坚硬——它们是这个表面的物理属性，如果以物理中使用的度量衡去衡量它们的话，但是对于特定动物的支撑可供性，它们必须与动物关联上才可以被衡量，它们不是抽象的物理属性，它们是为所指动物特定的，与动物的姿势和行为相关，所以 affordance 不能像我们在物理中那样来衡量。

Gibson 的集大成之作《The Ecological Approach To Visual Perception》的第八章就是 Affordance 理论，这一章可以单独阅读，你可以在 UBC 大学森林学交互式数字环境评估实验室的环境感知课的[网上课表](http://www.ideal.forestry.ubc.ca/frst524/)中下载到（里面第二周的阅读材料中有 pdf 文章，如果对认知心理学感兴趣，另外两篇文章也值得一看）。

环境的 affordance 既不像物理属性那样是一种客观属性，但也不像价值和意义那样是一种主观属性，它看上去又是既主观又客观，比如一个与膝同高的水平、平整、有一定延伸以及一定硬度的表面它是“可供坐下的”，它看起来是客观的，不随人的意志而改变（总是“可供坐下的”），但它又是主观的，如果没有动物的存在，“可供坐下的”就会因为没有对象而失去存在的逻辑。Gibson 认为 affordance 跨越了主观和客观的二分法，既是物理的也是心理的，也都不是，它同时指向环境和观察者。

生态学中的 niche （niche 在建筑中是壁龛，指放塑像的地方）指一系列适合动物的环境特征配置，它关于动物是怎样生存的，Gibson 将 niche 认为是一套 affordance。感知 affordance 不是为了对物品分类，一块石头是一个投掷物并不意味着它不能是其他东西，它可以是纸压、书挡、锤子或者摆锤，它可以叠加到另外一块石头上成为石碑或者一堵石墙，一个橙子在饥饿的人感知到的是它的可食用性，而对于一个愤怒的人来说感知到的是它的可投掷性，这些 affordance 各自是共存的，它们之间没有清晰的界线。

affordance 是 Gibson 的直接知觉论的核心内容，直接知觉论是 Gibson 发展出的一种与绝大多数认知理论相冲突的视知觉理论，这些其他的绝大多数认知论可统称为间接知觉论，虽然会有很多划分或门派比如结构主义或格式塔之类，这里将它们笼统的称为间接知觉论。间接知觉论认为知觉是间接的，强调的是人对信息的加工，将视网膜接受到的刺激通过大脑加工转变为关于环境的知觉，认为我们感知的意义来自于人（动物）的内部，比如灯光照射到接收者，引起了他的知觉，接收者对这种知觉作出推论并给出感知的意义，这种刺激信息的输入经过加工构建一种心像的模式，由于和兴起计算机的处理模式相似，此后引入了计算机上的一些术语比如“输入”“输出”等，也使得这种理论更加大众化。间接知觉论认为知觉是人积极和构建的过程，它不是由输入的刺激直接引起的，而是将呈现的刺激与假设、期望、知识、动机、情绪等交互作用加工处理得来的。而直接知觉论强调的是意义就在环境之中，感知者不需要做什么赋以意义的推论，只需要从环境中收集信息（pickup 拾取信息，也应包含了传统观念中的一些“处理”作为），意义就在环境之中说明它不单单是物理的，所以 Gibson 就跳出了诸如二分法（要么是主观的要么是客观的）等框架来构筑直接知觉论，认为感知不只是一种主观的行为结果。间接知觉论通常研究的是观察者静止状态下的视知觉，甚至很多这些认知心理学的书就只在分析视错觉，而 Gibson 的直接知觉论强调观察者是运动的这个事实，观察者的运动不应该被限制住。Gibson 将认知心理学从实验室中带入到日常生活之中，他的书中不会讨论盲点、残像、近视、散光之类问题，那些被其他认知心理学作为核心材料的视错觉，也不详细讨论两只眼球距离带来的空间感或者视网膜成像原理，不讨论我们是在怎样识别不同的颜色光线，他关注的是我们身边的物体，我们是怎样看到它的轮廓，如果看待自己在这些物品的围绕之中。替代传统认知心理学的“视网膜图像”这个概念，Gibson 引入了一个“Optic Array”（光学分布）这个概念，人就是从这些“光学分布”中拾取（pickup）信息的。

Gibson 也用自己的概念来重新定义环境，使用了“MEDIUM”（介质）、“SUBSTANCES”（实体）和“SUFACES”（表面）这三个概念，我们的周遭环境都可以用这三个概念来区分和表达。Gibson 用我们环境的一个原始模型展开对这几个概念的解释，我们的地球由土、水和空气（一种固体一种液体和一种气体）组成，这三种物质的交接处就是表面。气体和液体不同于固体的是身体可以在其中运动，它可为动物提供移动，空气比水更适合动物移动因为它的阻力更小；空气和水可以让光通过，它为视觉提供了可供性；空气和水可以传输声波……空气和和水是介质，介质是均质的。实体是混合的，它不能被光自由通过也不允许动物在其中移动，这些固态和半固态的物质就是实体。人类的活动都是在表面上发生了，所以表面是 Gibson 生态学的视知觉论中最重要的一环，不同的物质有不同的表面，不同的纹理，不同的 layout，人类在其上生存并同时在改变这些表面，人类行为都是围绕着表面展开的，我们看见的接触的都是周遭的表面。

Gibson 的直接知觉论不仅在认知心理学上开辟的新的世界，可能也正是因为它区别于传统的认知心理学，脱离了对科学实验的依赖，所以直接知觉论更具有哲学上的意义，虽然它在认知心理学内会有一些不完备或者争议之处，但是它在其他领域的带来影响是巨大的，它带来了一种新的世界观，虽然这一种世界观因为偏离传统的静止的科学的物质的视角，使其看上去偏向现象学偏向诠释，但是它也是不被驳倒的。这一种视角、认知角度或者世界观也为设计带来启示。

#### Donald Norman 和 Affordance

如果要将 Gibson 的 affordance 或直接知觉论同设计结合起来，那么 Donald Norman 肯定会是第一个提到，Donald Norman 将 affordance 这个概念引入了设计，同时也由于他对这个概念使用地疏忽也留下不少的负面影响，让 affordance 这个概念的含义发生了改变同时也阻碍了再进一步的探索。

Donald Norman 是在《Design of Everyday Things》即中文版名为《设计心理学》中引入 affordance 这个概念的，并且由于这本书的流行，affordance 随之也被更多人接触到，包括设计师以及用户，但是由于翻译的问题，这个独特概念在中文版中就被埋没了，中文版中将 affordance 翻译成“预设用途”，也有的文章会将 affordance 翻译成“示能性”，比如 Don Norman 授权的 uigarden 对 Norman 一篇澄清 affordance 这个概念的[翻译文章](http://www.uigarden.net/chinese/shi-neng-xing-yu-she-ji)，虽然全篇只有开头将 affordance 进行了翻译，使用的就是“示能性”（“功能可见性”），这些翻译对 Donald Norman 文章表达的意思来说是没有歧义的，但正由于 Norman 对这个词的疏忽使用，使得中文翻译与 affordance 原来的意思相去甚远，所以才有了后来 Norman 的澄清文章，就是 uigarden 翻译的这一篇。我倾向于使用“可供性”这个翻译，不仅含义上重合，而且它更加术语话，符合原来的生造词的身份。

《Design of Everyday Things》（《设计心理学》）这本书引入 affordance 主要在两处，一是第一章中“日常物品中的心理学”这一节中以“affordance”为一小节作了介绍，二是第四章第二节“将 affordance 和限制因素应用到日常物品上”。在第一章里 Norman 对 affordance 这个词给出的解释是“the term affordance refers to the perceived and actual properties of the thing, primarily those fundamental properties that determine just how the thing could possibly be used.”说的是 affordance 是物体被感知到的和实际的属性，主要指那些可决定物品可以怎样被使用的基础属性。接着在举例介绍中 Norman 的 affordance 使用想是一个功利主义者看到的只符合自己需求的那一面物品的“可供性”，在读者看来 affordance 就成了物品的设计特征，物品通过这些特征来告诉使用者该怎么使用。

Norman 意识到 affordance 经过他介绍后流行到了滥用，与原意相去甚远，他后来写了一些澄清文章比如 [Affordances and Design](http://www.jnd.org/dn.mss/affordances_and_design.html) 以及 [Affordance, Conventions and Design (Part 2)](http://www.jnd.org/dn.mss/affordance_conventions_and_design_part_2.html) 等，其中他说道应该使用“perceived affordance”这个词，他认为在设计中我们更关心的是被感知到的 affordance ，相比真实的 affordance，Norman 认为在实体产品中，它既可以是真实的 affordance 又可以是可感知的 affordance ，但是在基于屏幕的图形界面中，设计师能操控的都是可感知 affordance，Norman 解释说：“计算机系统，键盘、显示屏、指示设备（例如鼠标）和选择按键（比如鼠标按键）可供指示、触摸、观看和点击屏幕上任何一个像素，大多数这些 affordance 没有价值，试想，如果一个屏幕并非触摸屏的话，虽然它仍然可供用户 触摸，但是这个计算机不会产生任何结果。注意，这个 affordance 仍然有作用，比如在多人交流的时候就有帮助，它也可以帮助清洁屏幕用的纸巾和清洁剂的销售。所有的屏幕都可供触摸：只有一些能够察觉到触摸并会作出反应，但是可供触摸这个 affordance 在任何情况下是一样的，触摸屏会让它们的（触摸）affordance 可以被视觉可感知，往往是通过在触摸点的下方显示一个指针，指针不是一个 affordance，而是视觉反馈。”所以，让用户可感知到哪些地方的点击是有意义的，有用的动作和反应是可感知 affordance 的真正问题所在，因为我们可以在任何地方点击。

从上面 Norman 的解释中可以看出他认为对 affrodance 的误解主要是发生在交互设计领域，甚至让人觉得此时 affordance 这个词是多余的，反而带来的麻烦。Norman 的《设计心理学》主要讲的是实体产品，而后 Norman 所从事的以及他的影响力主要集中在 HCI （Human–computer interaction）到现在的交互设计领域，以屏幕显示图形界面为主，所以大面积的误解看上去是很自然的。以致于后来， Norman 写了一篇文章 [Signifiers, not affordances](http://www.jnd.org/dn.mss/signifiers_not_affordances.html)，用“示意”这个词替代了 affordance，并号召设计师们忘掉 affordance 吧（或许潜在意识就是“抱歉啊，带你们绕了一个弯。”）。

关于 Norman 的 affordance 和 Gibson 的 affordance 有什么差别，有不少人作过比较，Joanna McGrenere 和 Wayne Ho 写过一篇文章 Affordances: Clarifying and Evolving a Concept 作过详细的比较（[PDF 链接](http://www.cs.ubc.ca/~joanna/papers/GI2000_McGrenere_Affordances.pdf)）。文章指出 Gibson 的 affordance 有三项根本的特性：1. affordance 是与一位特定行为者的行为能力相关而存在的。2. affordance 是独立于行为者的感知能力而存在的。3. affordance 不会随着行为者的需求和目标的改变而改变。而 Norman 将 affordance （指《Design of Everyday Things》这本书上写的）分成了可感知属性和真实属性两部分，Norman 认为 affordance 与物品的本质属性相关，而 Gibson 认为一个物品的不同 affordance 是没有差别的（指没有主次或者用于识别这一物品的 affordance），在 Norman 的 affordance 中没有行为者作为参与框架。Gibson 认为 affordance 是独立于人的经验和文化的，而 Norman 则相反，将 Affordance 与过去的知识和经验精密相连，对 Gibson 来说 affordance 的参照框架是行为者的行动能力，而 Norman 的是行为者的心理和认知能力，Norman 说的 affordance 其实是感知到的特性。

这篇文章在比较了 Gibson 和 Norman 的 affordance 区别之后，也对其他人在 HCI 领域对 affordance 的探索努力做了介绍，其中 William. W. Gaver 的“Technology Affordances”（1991年）中将 Gibson 的 affordance 以不同于 Norman 的认识带入到 HCI 领域，但他使用了和 Norman 一样的例子——门，Gaver 关注的设计建议门的 affordance 而不是 Norman 他们的建议动作，而且 Gaver 引入了 Gibson 的 affordance 可嵌套的观点，即一个 affordance 可嵌套在另一个父级 affordance 下也可以向下嵌套一个子级 affordance，比如拉一个门把手的 affordance 是嵌套于打开门这个 affordance 下的，Gaver 带来了一个可感知的信息与可感知和隐藏的 affordance 进行搭配，就是下图左所示：

![](http://www.hi-id.com/atcl/2011/perception-information-affordance-degree.jpg)

引入了这个可感知信息的概念，就很容易来解释清楚那些用 Norman 的观点要被带绕的设计分析。右图是 Joanna McGrenere 和 Wayne Ho 在文章中将 affordance 进行扩展，扩展成有梯度的可度量的概念，并有命令行用户界面与图形界面进行了解释。

#### 深泽直人和 Affordance 以及 Gibson 的直接知觉论

深泽直人也是通过 Donald Norman 认识了 affordance 和 Gibson 的理论的，深泽直人说他是 1989 年左右听到这个词的，因为当时他在 IDEO 工作，而 IDEO 当时就有交互设计人机界面方面的项目，而 Donald Norman 那本书 1988年出版，当时是叫做《The Psychology of Everyday Things》。同时深泽直人也指出了 Norman 这本书对 affordance 的在设计中的阐述只在人机工程方面展开，深泽直人认为 affordance 是一种认知论，是人处理物品时判断不致于出错的基准，也就是深泽直人将它作为一种世界观，这也是为什么深泽直人除了关注 affordance 之外，也关注了 Gibson 直接知觉论其他方面的内容。

2003年初，建筑师后藤武，心理学家出了很多本关于 affordance 的佐佐木正人和深泽直人进行了三次会谈，会谈内容变成了一本书，这本书借用了 Gibson 书名叫做《生态学的设计论 the ecological approach to design》，中文版（台湾）的大标题叫《不为设计而设计=最好的设计》，这本书名义上以及实际上是围绕着 Gibson 的 affordance 和生态学的视知觉论展开的，但是内容是自由讨论性质，而不是学术式的。佐佐木正人作为研究 affordance 方面的专家，在介绍 Gibson 理论上自然深入浅出并努力与其他两位在 Gibson 理论的某一方面能建立起连接来，深泽直人虽然对 affordance 没有深入的研究，但是他能把握好自己的视角，将 Gibson 的一些理论与自身实践和喜好相结合，并且对他的设计实践和思想有较全面的介绍，如果你看过后来他的书以及演讲，很多都是相似的。而后藤武从建筑学的视角出发谈论了一些形态和技能方面的内容。此书的附录也挺不错，有三人的书籍推荐、建筑师设计师名言摘录等。

深泽直人在这本书中的介绍内容，与他的其他书和演讲类似，从自身的体验和经验出发，尤其是作为一名敏感的观察者。在书中他将他关注和研究的几个关键词进行了串联。“outline”（轮廓）是深泽直人以逆向的思维来看待人和环境的关系。“相即（吻合）的设计”，是他对“刚刚好”的总结，发现了你要设计的东西将会填充的缺口，你就找到了你的设计。“张力”来自内外力的作用和反作用，达到紧绷的状态，深泽直人很早（1994年）就开始探索“张力”这个词。“无意识的记忆”（Active Memory）或者称“身体性的记忆”，就是人在无意识情况下作出对环境“刚刚好”的匹配反应，比如将牛奶盒放在尺寸一样的扶手上。“Withou Thought”（不加思索）是针对无意识记忆的另一角度的解读。“Found Object”（被找到的形状）发现使用已有的物品，通常这些物品已有一定的符号性来设计制作新的东西。“First Wow / Later Wow”是指那些人们接触和使用后有会心反应的设计。

这本书中有深泽直人撰写的一篇围绕着“affordance”谈论设计的文章，叫做“多样化的设计与 affordance — 重新定义 Reality”，文章从“张力”开始，“我一直认为，当赋予‘物体’形状时，主宰其美丽的是‘张力’。”深泽直人举了一个例子，如何从草莓表面的种子及其周围的光泽来判断草莓的成熟度，它是由表面的张力来表现的，张力达到顶点就是最好吃的时候。深泽直人意识到了 affordance 对它的启发，虽然他自己也说他的理解可能有所扭曲，但是 affordance 揭露了人们已经知道却没有发现之事，他认为 Gibson 理论的着眼点也很艺术，比如说谁都认识长方形桌子的“长方形”，实际上谁也没见过这个事实（因为人眼是看不到长方形的）。深泽直人认为艺术和心理学的起点是相同的，都是要看见平常看不见的真实。他说 affordance 传达了身体能接受的环境之真实，认为 affordance 所传达的环境资讯与真实性，是处于知识化、资讯化社会的身体真正的心声。affordance 是某人在某种情况下所发掘出、包藏在环境中的价值，不断向环境诉说着其价值的存在。affordance 不是事物的物理性质，而是“对动物而言的环境性质”，而且不是由知觉者的主观说构成。深泽直人将 affordance 容易引起的误解，比如是引起反射的刺激以及知觉者内在拥有的“印象”或“知识”，同“设计”这个概念容易引起的误解连接了起来，比如那些认为设计是作用于人主观使其产生刺激。深泽直人认为好的设计应该会被人在毫不自觉的情况下拾取出其 affordance，而不是与印象等主观性挂钩，他认为一些经久未变的设计那些无名氏设计的产品是个好例子，affordance 强调知觉者的获取，设计也是不应该是设计师去强加。

![](http://www.hi-id.com/atcl/2011/umbrella-tip-tiles-naoto-fukasawa.jpg)

当人们找不到置伞架的时候，绝大多数人会不由自主的把伞的前端放在瓷砖之间的接缝中，这就是人从环境中拾取 affordance，深泽直人以此作了一个设计，在玄关的大理石上，离墙一些距离的地方开凿一条小沟，说不定人会无意识的将伞放置其上。

Alvaro Siza 说过设计是 transform （转变）已经存在的东西（“not creating something new but transforming something that already exists”），这句话是值得经常体会的。在《生态学的设计论》这本书中，我们可以看到 Naoto Fukasawa 的设计上“发现——转变”的影子，而且他的早期一些设计，这种转变是直接的青涩的，就和我们“发现一个有趣的东西”到“马上做成一个设计”这样，但在深泽直人后来的设计中，这种立即的转变式设计越来越少，在一些人看来可能“有意识的、出彩的、有创意的”设计越来越少，但你可以看到他的转变更加深层次了，比如 R2.5 产品，就是将自然中发现的圆角引入人工制品之中。与 Siza 这句话类似的是在这本书中深泽直人引用了《俳句之道》作者高浜虚子说强调的“客观写生”这个观念，“致力于客观写生一事，主观便可借由客观写生渗透而出。作者的主观是想隐藏也隐藏不住的，随着客观写生技巧的进步，主观便逐渐抬头。”

![](http://www.hi-id.com/atcl/2011/naoto-fukasawa-vitra-affordance.jpg)

深泽直人 2007 为 Vitra 在 Design Miami Basel 做出的展览项目 Vitra Edition，这是深泽直人用椅子来作对 affordance 的设计探索的，他也写了一篇文章叫做 On “affordance” 发布在[ Vitra 网上](http://www.vitra.com/en-it/collage/design/on-affordance/)。文章说到当人是无意识的同物品和环境相关联的时候，物品是处在最自然的状态，当人们使用一个物品的时候是不会意识到它的功用或者是人是怎样使用它的，在无意识状态下人会调整自己的身体去认识适应物品，所以设计不是创造外形而是关系。深泽直人的这个设计项目就是认识到日常生活中哪些东西是可供坐下的，当作椅子似的，甚至在椅子诞生之前，比如石头或者倒下的树木，行李箱、干草垛、树桩等等，深泽直人就将它们做成像椅子形状一样可乘坐的东西。

比较深泽直人和 Donald Norman 对 affordance 的理解，可以看出两种不同的应用，Donald Norman 由于只着眼于 affordance 这个概念，并且较匆忙地借用这个术语，使得他最终被自己缠绕住了，一部分原因也来自于人机界面和交互设计这个领域的特殊性（非实体产品），而深泽直人对 Gibson 的理论理解和使用却像东方式的，将其作为一个可供启发的世界观，一种看待世界的新的视角，深泽直人并没有误解，他不仅关注 affordance 也关注并思考 Gibson 的生态学的视知觉论的其他内容，所以从全貌上它能够分辨出，但由于是基于感性和现象而未进入分析的理解方式，让 affordance 或 Gibson 的理论和设计实践相连时看上去表面化。

#### Affordance 和设计

我将 Gibson 的生态学的视知觉论看作是一种世界观，它并不是要取代已有的什么而成为独占性的看待世界的方式，我们仍然关心物体的物理属性，用实验室为基础的科学观去认识和改变东西，Gibson 的理论可以和这些已有的观念完美的融合在一起，这也说明这一理论具有生命力的地方。当然它也不是设计师非要了解不可，或者说了解了它就会有用，可拿它来直接利用的东西。

就像深泽直人所说，它让我们去发现我们已经知道的事，为什么椅子可以坐人，因为椅子提供了让人坐的 affordance，因为它水平、平坦、有硬度和有宽度的表面，以及它的高度。我认为一个人在一定的时间内，从环境中获取信息的能力是没有止境的，那么如果你建立了一种新的看待世界的方式，那么你就多一种能力从环境中获取信息，观察的能力。

认识了 affordance 也会给设计带来直接的作用，比如意识到设计未来与人的交互场景，这其中包括了未来用户的无意识行为，可能其中有危险需要排除，可能会给用户带来便利。比如文章开头的司机将手肘靠在车窗上这个无意识行为，一些高度上的匹配，产品作为环境会对人产生牵引力，因为人会用阈下意识来拾取产品内的各种 affordance 而不只是设计初所定的那些需求功能，如果说一个设计刚好在人可以依靠的高度，因为各种需求，在这一位置出现了一个平台，那么这个平台具有的各种 affordance 会被用户在无意识情况下拾取到，比如搁置（身体和东西），如果这一部位有危险性的存在，就需要慎重对待的。类似这样的在设计时的考虑，这种意识是可以通过对 affordance 的理解得以提高的。

上面这种意识是功利性的，我觉得将 Gibson 的理论作为一种世界观，会有各种潜移默化的作用，比如提高感官的敏锐，平和的看待环境的视角，认识到平常的价值所在，不被标志性象征性表面式符号性的东西占满感官。有时甚至可以多一份人文的视角，比如路边的大石头，你不会认为它除了是块石头就什么也不是，你可以认识到它的可供坐下休息的 affordance，就会发现它在与人的世界交互中有其丰富的故事。

Affordance 和 Gibson 的生态学的视知觉论可以为发现开辟新的视角。

#### Affordance 和共振

Gibson 说到拾取信息（information pickup）需要一个认知系统而不是一种感觉，这个系统可以调整方向、探索、调查、调整、优化、共振、抽取并达到平衡，这个拾取信息的过程中有一个过程是共振，它和收音机进行调谐才能收到声音类似，如果人和环境中的信息能谐调，那么就会拾取这些信息。

而深泽直人提到的以及我们见到的那些“刚刚好”是印证共振发生过的一个痕迹，当一个水平、平坦、有硬度和有宽度的表面，它的高度与一位路过的有疲惫劳累倦意的人的膝盖弯的范围内（在保持身体平衡条件下的）相符合的话，在他看到这个表面时，就会产生共振，从而拾取这个表面可供坐下休息的 affordance。而这个可供坐下的表面会有不同的表现，比如它不是完全水平，完全平坦，硬度和宽度各有不同，高度也会不同，虽然它们都有可供坐下这个 affordance，但是如此不同的表面面对同一位特定的人来说，肯定可以分出好坏优劣之分，这种好坏之分可以在坐下前意识到，也可以通过比较得到。那么也就是 affordance 会有等级，就像上面列出的一张图那样，通过什么来衡量 affordance 的等级差别，通过共振的程度。

![](http://www.hi-id.com/atcl/2011/zumthor-handle-ios-keyboard.jpg)

上图左来自[这](http://www.flickr.com/photos/luke_stearns/2343160013/sizes/l/in/photostream/)，是 [Peter Zumthor](http://www.hi-id.com/?p=2459) 的 Saint Benedict Chapel 的门把手，你应该看看[另外一张大图](http://www.flickr.com/photos/jonolist/4736273317/sizes/l/in/photostream/)，就只是看一张图你就似乎可以体会到打开这扇门时的手感，预感到它的体验将是非常好的，干净利落，就像你看到 iOS 的键盘一样，在操作前你就可以体会到它的操作体验，这就是共振的重合度高，你可以体会到它们有良好的 affordance，而不是单纯的它们可供做什么。共振的程度在衡量 affordance 的优秀，那么是什么在决定着共振的程度呢？参考文章上方的那张坐标图，可以看出是那些可感知的清晰的信息，也清晰就越能激发共振，比如一个表面越是平坦就越是有良好的可供坐下的 affordance。

Peter Zumthor 的门把手可以说是门上最主要的一道横线，因为门板都是竖条纹组成的，门上水平方向的就线条就门把手以及门锁的四边形上下两条，这让门把手非常清晰地呈现，并且对它将要进行的运动也作了加强，正方形的门锁铁板比常见的要大，而且形状简单，正方形内只有六个特征，都是整齐均匀平衡的分布，门把手的长度和正方形形成的比例尺度突出了这个铁把手的轻巧，把手离门的充分距离也对这一点进行了强化。看着它就能预知到一些体验，如果看过 Peter Zumthor 的 《Thinking Architecture》一书，就会马上想起这本书的第一段的最后几句话：“There was a time when I experienced architecture without thinking about it. Sometimes I can almost feel a particular door handle in my hand, a piece of metal shaped like the back of a spoon.”

清晰的信息，更多的是侧重信息的组织、排布和呈现，这一点在用户界面设计上就更加明显了，因为在用户界面中 affordance 的载体和可感知信息是同一体的，当在用户界面中谈 affordance 我们已经抛弃实体的干扰了，比如不再去关注玻璃是可供敲击的或者可供透视的，任何位置是可供点击的，这样我们可以避开 Norman 陷入的僵局。由于界面都是在一个屏幕中显示，那么信息的组织、排布和呈现，决定其优劣的叫做“尺度”，就成为最为重要的。为什么 iOS 的键盘看上去更好按，不是因为 iOS 键盘更像实体键盘更拟真，而是得益于尺度的把握，甚至这种视角设计上的节奏就可以唤起 affordance 的共振，如果一个界面的设计只是起到示意作用，比如哪里是可以点击，哪里是可以拖动，那么这些信息就带动不了多大幅度的共振，它和在一个可点击元素上写上“点击这里”并没有多大差别，Apple 的界面设计优秀最基础的就是在尺度上的考究。就和虚拟键盘一样，通过界面的交互是一个过程，可供键盘用这个 affordance 之下（某种情况下是可供输入）嵌套了很多其它 affordance，它的用户体验是一个整体的过程。

形容设计有一个词叫做 immersive （沉浸，身临其境），在这里我们可以将陷入了 affordance 之中称作是沉浸式的，比如我们在享受使用一件物品的时候，这一点在触摸屏交互设计中更容易区别，因为体验不好的设计，你就感到你在“擦玻璃”。


# 美的感知力

![stay hungry stay foolish](http://www.hi-id.com/atcl/2010/stay-hungry-stay-foolish.jpg)

**“Stay Hungry, Stay Foolish.”的背后**

“Stay Hungry, Stay Foolish.” 是 2005 年 Steve Jobs 在斯坦福大学毕业典礼的[演讲](http://v.youku.com/v_show/id_XODc1MzQ0MA==.html)上说的一句话，引用自 The Whole Earth Catalog 杂志最后一期的封底文字，成为了 Steve Jobs 被人引用最广泛的一句引用名言，Steve Jobs 的很多警句是引用他人的，而他也是将“引用”这种表达方式发挥得最优秀的人，比如 [MacWorld 2007](http://v.youku.com/v_show/id_XMTc5NzI5NDQ4.html) ，Apple 对外[发布](http://www.hi-id.com/?p=985)了现在我们称之为革命性的 iPhone 的时候，那场发布会一样让人铭记深刻，有好几个我们可以称之为“氛围充斥”的时候，Steve Jobs 在讲完 Apple TV 喝了一口水，大屏幕变为神秘阴暗的 Apple Logo 图片，他以沉默的姿态开始并压低声音说出“这是一天……”，如果和 [1983 年首次展示](http://v.youku.com/v_show/id_XMTA4OTIzOTI0.html) “1984” 这支著名广告那时刻相比，更能体会此时的氛围感或者说此时 Steve Jobs 个人的范——文艺范，iPhone 的揭幕在 “An iPod, A Phone ……”二次重复中达到高潮，最后以引用自 Wayne Gretsky 的一句名言“我滑向冰球将去的地方而不是它在的地方”安静地结尾，你会认为这些只是演讲技巧或者修辞手段吗？说它是技巧和手段并没有错，但是我们的感受可以用一个词来概括，也是我们常用的一个词——“作品”，Steve Jobs 另外一次引用警句可能也让人记忆较深，因为催人泪下，就是在 [D5 大会](http://v.youku.com/v_show/id_XMTA3OTA4MzQw.html)上和 Bill Gates 一起畅谈往事展望未来的时候引用自披头士的那句“你我的记忆比前面的路更漫长” 。

“Stay Hungry, Stay Foolish.” 有着成为最流行名言警句的先天优势，简洁易达以及意蕴无穷，可以使用 Google 实时搜索或者 twitter 以及国内的微博，可以看到每天它都被人们在引用着，讨论着自己对它的理解或者怎么翻译，这句话的中文翻译可以看到很多版本，人们也在争论着，嘲笑着他人引用地肤浅或者小文艺小清新。

而我们在这不去讨论这句话的本身，而是这句话背后，它的背后是什么呢？我们先引用 Steve Jobs 说这句话的前后文字，来自[斯坦福大学官方网站](http://news.stanford.edu/news/2005/june15/jobs-061505.html)。

> Stewart and his team put out several issues of The Whole Earth Catalog, and then when it had run its course, they put out a final issue. It was the mid-1970s, and I was your age. On the back cover of their final issue was a photograph of an early morning country road, the kind you might find yourself hitchhiking on if you were so adventurous. Beneath it were the words: “Stay Hungry. Stay Foolish.” It was their farewell message as they signed off. Stay Hungry. Stay Foolish. And I have always wished that for myself. And now, as you graduate to begin anew, I wish that for you.

> Stewart 和他的团队除了几期 The Whole Earth Catalog ，然后当走到头了就出了最后一期，那是在 1970 年代中期，我那时和你们现在一样的年龄。在他们的最后一期的封底是一张清晨乡村公路的照片，那种如果你有足够的冒险精神就会不自禁搭上顺风车就走，在照片下面有一句话 “Stay Hungry. Stay Foolish.” 这是停止刊发的告别语。 Stay Hungry. Stay Foolish. 我一直希望自己如此，现在，你们毕业并开始新的旅程，我用这句话祝福你们。

我们想讨论这句话背后什么呢？先摘出几个词 “mid-1970s” , “country road”, “beneath it ”。

Steve Jobs 所说的最后一期的 The Whole Earth Catalog 封底，就是如上图所示，是一条很有美国风味的乡村公路，但是等等，”Stay Hungry. Stay Foolish.” 这句话的位置不是在下面，而是在照片上方，而且乡村公路的照片并不大上方还有一张日蚀的图（ 如果去查找 The Whole Earth Catalog 的图片会发现他们的封面都是以星球图片为主，这不仅符合杂志形象，而且在当时也是一种文化符号，所以 \[ i D 公 社 ] 的标志是非常过时的 ），这最后一期 The Whole Earth Catalog 是 1974 年的。

“mid-1970s” , “country road”, “beneath it ”…… “mid-1970s”, “country road”…………你明白了吗？:-)

Steve Jobs 怎么能够把上下位置弄错呢，看上去是很难颠倒的啊？这是距他演讲30年前的杂志呀，怎么会记得那么清楚呢！有一点可以确定的是 Steve Jobs 在准备演讲稿的时候没去翻出这一本30年前的老杂志，并且距离他最后一次看到这杂志封底的时间已经足够漫长，很有可能就是30年，而且也没有理由可以使他去翻出那本杂志进行核对，因为不需要核对，“在上”和“在下”没有多大关系。

嗨，谁能记得30年前看过的一本杂志的封底，或者30年前受过刺激的一句话，20年前呢，10年前呢，5年前呢，1年前呢，1月前呢，1星期前呢，一天前呢？

或许有一些刻骨铭心的话会记住很长时间，比如 “不怕苦，吃苦半辈子；怕吃苦，吃苦一辈子”这些在某个时刻让你“羞愧不已、嚎啕大哭，跪在地上又撞墙又打滚、抽搐”的人生哲言，但30年也足够漫长了，更难得的是这样一句话在这30年只对外说了一次，当然 Steve Jobs 引用的名言都不会出现第二次，或许从中我们可以寻求到很多的理解，比如理想主义的坚持之类，但这里我们要谈的不是这一点，而是比记住 “Stay Hungry. Stay Foolish.” 这句话更惊人的事。

或许当时 “Stay Hungry. Stay Foolish.” 这句话确实如雷劈一般击中了 Steve Jobs ，使它永远不会忘记，因为记起来并不难，如上所说也是它能够被广泛传颂的原因，警句或者文字是容易记住的，但是图像呢？

你对5年前看过的那一幅图片有记忆呢?不是什么名画名作之类，而是像这幅“清晨乡间公路”一样普通的图片。Steve Jobs 不仅记住了 “Stay Hungry. Stay Foolish.” 这句话，他还记住了这一张照片，甚至记住了这张照片的“氛围”或者“光韵”（“如果你有足够的冒险精神就会不自禁搭上顺风车就走”，多么有诗意和图像感），这一点足够让人吃惊。

我们并不是称奇于 Steve Jobs 的记忆力，如果真只是记忆力，我想他不会忘记 “Stay Hungry. Stay Foolish.” 这句话是在“清晨乡间公路”的上方而不是下方。30年前的一张照片和一句警句，30年后回顾这句话以及对这张照片的描述，从这两者之间我们可以找寻到什么呢？或许有人会说，这里面有其他因素让 Steve Jobs 对这个画面记忆深刻，比如停刊、当时这本杂志的文化感染力，以及这幅照片的特殊性等等。但我们不能否定的是，Steve Jobs 当时欣赏到了这个封底，或许其他人也被这句话甚至整个封底的氛围有所打动，而 Steve Jobs 更直接的与其接触，让这一切可以在30年后回忆起，这种接触不是当时他是怎样来描述这个画面——“这是一条什么样的乡村公路呢?”，而是欣赏。

我们要说的就是“美的感知力”。

**Taste**

人们谈起 Steve Jobs，谈起他具有他人不具备的东西，总是和一个词联系起来，那就是 Taste，翻译过来是“品味”，也是一种难以捉摸的东西，可“品味”则是围绕着格调上的一个词语，比如我们会说某某人穿衣很讲究很有品味，但是 Steve Jobs 的衣着千古不变，如果我们也称之为品味的话，无疑将概念描述狭隘化了，所以按大众对“品味”这个词的理解来指称 Steve Jobs 的 Taste 难免也陷入狭隘甚至误导。我们以前有一篇简短的介绍提起过 Steve Jobs 的 Taste，我们说它是一种能力，对，Taste 是一种能力而不是一种格调。

那么 Taste 不是品味是什么，是 “美的感知力”，即感觉到和识别出美的能力。当 Steve Jobs 看到这张乡村公路的照片，他感觉到的留下记忆并可以在30年后唤起，这就是 Taste，当他决定在新产品中使用 Unibody 工艺，这也是 Taste，当他引用名言当他散发出他的文艺气息之时，蕴含其下的也是 Taste。

美的感知力并不是可以确定描述的，或者参数化明确化，就像 “Stay Hungry. Stay Foolish.” 这句话以及那张照片可以给出确定的解释，它不成凝聚状，不会今天吃上一汤匙明天功力见涨，而是涣散的需要激发培养和累积的，如同去看这张乡村公路的照片，感知到它并不是经过一番分析，比如色彩的分布，线条的排列光影关系构图然后去作出认可的意向，它是感官上和潜意识的。但现在我们在讨论和交流这个问题，就势必要作出一定程度上的分析和概括，那么，“美的感知力”是什么？

**鉴赏力和欣赏力**

鉴赏力，简单说就是 A 和 B 放在一起，你可以分辨选择出那一个比较美，有时 A 和 B 是简单的类比关系，即状态和地位是平等的，而多数情况 A 和 B 未必就是清晰明确的可比较项，或许其中一个是另外一个的子集，比如有时你只面对一个东西，而你需要作出评判。

平时我们将“鉴赏”作为一种技能，比如通常说的什么什么鉴赏家，鉴宝，玉石鉴赏之类的，而这里所谈的鉴赏力是普罗意义上的，它是一种能力，但它和作为技能的鉴赏一样，需要一些较明确的东西来支撑，比如知识，以及经验。

欣赏力，是指发现美的能力，这种发现不是建立的明确的比较之上的，不需要参考，所以它更多的是依赖于个体，而不是知识，其中的经验也是身体性的，而非思维性和知识性，它与直觉的关系更近。

鉴赏力和欣赏力两者关系既可以相互支撑，也会相互的克制，比如当鉴赏力的意图很强的时候，势必会蒙蔽欣赏力的自由发挥，鉴赏力需要欣赏力的支撑，否则这个鉴赏就真的成为了鉴宝一样的技能性行为了。

**批判和创造**

批判和创造是我们熟悉不过的词语，“你给点建设性意见好不好。”

这里要说的是批判性创造和创造性创造，所谓批判性创造指创造性活动是建立在参考对象之上的，比如可以对一个产品指出缺点提出很好的改进意见，有时未必有确定的参考对象，可能只是累积的经验和知识。而创造性创造表现而出的是它的自由表达性，有时它未必有很强的争辩基础，比如理论来支持它是否优秀，它就是一种直接的表达，但是它更具突破性。

批判相对是容易的，一个设计放在大众面前人人都会提出意见，如果放在对设计有追求或者设计师面前则会带来更专业的意见，也会有更多的意见，这是我们时常可见的，因为在我们目前是以批判性创造见长的人是占多，主要的原因已在“‘我’的寻找”一文中给出，自我的缺失让我们从外界寻找依赖，知识、经验、规矩……越专业就越不像个正常人。

**欣赏力的来源**

就像人们说起 Steve Jobs 的 Taste，多数情况指向的是鉴赏力，鉴赏力是一种可明确评估的能力，比如某人评价越有经验越专业越关注细节我们就可以赞赏其鉴赏力，而欣赏力却是模糊的，正因为鉴赏力的明确，就不可避免地会带来功利性，功利抑制了欣赏力，如果都成为了鉴宝师，那将是如何之荒诞。

欣赏力是发现美的能力，也可以衡量一个人和外界的交流关系，当人与外界之间形成隔膜，无论这种隔膜是来自心态或生活状态，还是来自知识的增加专业的加强，都会让欣赏力消退或被阻碍。对于设计师来说，在走向更专业之时，更是值得注意的，Stay Foolish。

现代生活让人处于聚焦状态，而欣赏力并不能通过聚焦来加强的，比如突击、强化训练这些极有可能导致走火入魔，而是来自于平常。

不过偶尔的刺激会带来一些激励。


# 2010: A Design Odyssey

我们的现在从未像过去对未来所期待地那样美好，2010 我们还生活在地球之上。

![iphone 4 odyssey](http://www.hi-id.com/atcl/2010/iphone4-odyssey.jpg)

如果深入其里，我们会在追溯过去之后依然对现在感到愉悦，并对现在的未来作出更美好的期待。

![iphone 4facetime](http://www.hi-id.com/atcl/2010/iphone4-facetime.jpg)

WWDC 2010 上 Steve Jobs 介绍了最新一代 iPhone 即 iPhone 4，在演示 FaceTime 可视电话功能的时候， Steve Jobs 再一次在现场拨通 Jonathan Ive，两人非常欣喜地感叹，伴随他们成长的那些乐观主义科幻的梦想，“It’s real now!” 你感到激动了吗？我想多数人并不会跳起来说：“啊，终于实现了！“ 当这个人人熟悉的想法经过老长的时间终于变成现实，这一刻它已经进入平常了。

![videophone 2001 a space oddyssey](http://www.hi-id.com/atcl/2010/videophone-2001-a-space-oddyssey.jpg)

或许科幻的魅力就在于憧憬和期许，恰如设计是对未来的一种试探。

**iPhone 4**

![iphone 4 allview](http://www.hi-id.com/atcl/2010/iphone4-allview.jpg)

iPhone 4 上市才三天就卖出了超过 170 万台，并且还是在供货不足以及白色款因制造原因未能赶架上市的情况下，频繁报道的天线问题也似乎并没有带来多少影响，势不可挡。

如果将汽车设计中的 Evolution 和 Revolution 划分关系引入 iPhone 来评价这次升级，也就是说从 iPhone 自身的发展历史作为主线来看，那么 iPhone 4 无疑是一次 Revolution ，Apple 也打出了“This changes everything,Again.”（“再一次，改变一切。”）的口号。

iPhone 4 是如此的不一样，尤其与其前身们作比较，从弧线到直线是非常大的一个转变，它直接关系到人们的一些细微体验，比如说弧线是有机的，直线则是抽象的，那么两者能承载的形体感外延是完全不一样的，这也就是说为什么将 iPhone 4 和 iPhone 3GS 放在一起，人们会觉得 3GS 更像玩具。

除了 FaceTime ，由前置摄像头带来的可视电话功能，iPhone 4 在硬件及 iOS 4 的软件功能上更新不少，高分辨率的 Retina 显示屏 内置的陀螺仪传感器，500 万像素带闪光等的摄像头，升级的芯片和内存，多重任务处理系统，高清摄像和编辑等等。

作为消费类电子产品公司，Apple 给人们的感觉就是它的创新总是体现在应用层面，就像 Steve Jobs 的很多名言是引用而来的，所以当人们以及简单的“创新”去检阅 Apple 的产品的时候，总会说“那谁谁谁已经做了”，Apple 不是第一个，但是如 Apple 所说的是第一个做好的，比如复制粘贴功能和多任务处理等等。[First to Do It 和 First to Do It Right](http://daringfireball.net/2010/06/first) 体现在另一面，即人们很少用“机皇”之类的词语来称呼 iPhone ，即是说人们并不在意 iPhone 的硬件配置参数，或者说在 Apple 产品上这个概念并不会有鲜明的体现。但是，现在 iPhone 4 的 Retina 显示屏却突破了这个成见，每英寸 326 像素的超过人眼识别力的最高配置，让人感觉到一些改变，因为它超出了“right”这个范畴。

总之，iPhone 4 是如此的不一样。

**iPhone 4 它不像 Apple**

![iphone 4 allview](http://www.hi-id.com/atcl/2010/iphone4-allview-2.jpg)

iPhone 4 在发布前遭到了严重的泄漏事件，在官方发布前人们都已经对它有较清晰的认识了，无论是在确定是不是真的新款 iPhone 之前，还是确定了之后，还是在 Apple 正式发布 iPhone 4 甚至是销售之后，人们总是有这样一个想法，就是“它不像 Apple （一贯）的风格”。

优秀的设计总是会给人们带来明确清晰的印象，在感官层面它就是人们以“风格”称呼的东西，Apple 贯穿全产品线统一的设计理念和风格，让人们的这种印象和认识更加清晰，或许无法详细地表达，但是可以感知得到。

我们曾从曲线这一角度对 Apple 设计的改变历程作出过[解读](http://www.hi-id.com/?p=2397)，由此我们也可以体会到 Apple 产品线中的设计统一性，从大尺寸的 iMac 到小尺寸的遥控器，从曲线到直线的硬边结合，到 Unibody 式的由内而外的整体感，等等。

但是 iPhone 4 粗略看上去却是如此的不一样，甚至有很多人会说更像 Nokia 的设计，因为 iPhone 4 采用了三明治式的层叠式设计，而不像 Apple 的其他产品那样，要么是前壳包络后壳，要么是后壳包络到前壳，或者完全的整体式。似乎这种三明治式的设计将强调整体感的 Apple 设计风格剔除的非常干净。

它也不是 Unibody 式的设计，当 Apple 推出 Unibody 并在各产品中发展开来，人们希望看到这种熟悉的设计。

iPhone 4 整个产品上没有我们熟悉的曲线，或者说只有一个方向上的平面内曲线，最明显的即四个圆角，人们所认为的 Apple 产品应该有像 iPad 背部一样的曲面。在曲线进化历程那篇文章中我们将类似 iPad 背部曲线称作是 New Edge 时期，而 iPhone 4 看上去又回到了理性主义时期。

iPhone 4 对整体感的违背不仅出现三明治非 Unibody 式的整体设计中，甚至在细部都出现了缝隙，即中间件一圈的金属件是分件的，由三片组成的，使其尤其像 Nokia 之类的传统手机式的设计，而且音量调节按键也出现的分离，结合基本形状圆形以及圆角四边形的运用，以及元素的增多比如前置摄像头的圆形之类，看上去更像上世纪或者说是现代主义风行时期的风格。

为什么？

**解读 iPhone 4 设计的困惑**

![iphone 4 bottomview](http://www.hi-id.com/atcl/2010/iphone4-bottomview.jpg)

大众对设计的有意识非主动认识行为通常停留于表象，因为作为消费者，他们是设计服务的对象，而不需要去主动探索设计而从中获取自己的所需。如果说设计需要说明书式的一步步指导消费者来认识，即抛弃个体主动感官体验，则应是人类进化到智慧体时代了，当一个设计需要明确贴上“这是设计”这个标签之时，要么是这位设计师的粗浅，要么社会扼杀所有个体性进入荒诞期。

当大众对设计认识从有意识非主动进入到主动认识的时候，比如当人们不是在使用或消费设计，而是去谈论或者思考设计的时候，由消费者或者说业余的身份背景决定，基于表象知识的积累，就会让其对设计的理解带来一些问题。

比如，只认识到设计的“其中之一”性，导致他对设计表达方面的重视，即将对设计的认识更向艺术方向靠拢。人们会认为设计师的工作就是，灵感一来一挥而就它就成了，因为对比工程师的工作，它更有无中生有的因素，认为设计的结果未必一定要如现在这样，只不过它是经过选择决定的。

实际上，很多设计师或者说每个设计师有一段时期是这样的，或者说刚入道的设计师，尤其是认为自己创意四溢，逮什么就能做出一个优秀设计的时候，而当问起“为什么这样设计”的时候，答案就是“就这样”。

的确，设计并不是一个有着明显单纯的线性特征的工作，它面对很多抉择，当对一路中遇到的各种选择项没有能力进行选择的时候，就出现“这样也是一个好设计”“那样也是一个不错的设计”这种情况。“设计” 从这个词来理解，它天生有目的性，即动机，必须要有驱使，而且原始驱动的强度很大程度决定了设计的结果。如果有人说“你给我设计一个东西，怎样都行”，这是成就不了任何设计的。

好的设计是收敛的，即能体现出它的“其中唯一”性，如果一个设计让人们抓不着头脑，无从理解，那么它是一个不成功的设计。

设计有它的线性特征，而它的逻辑源自于动机，也就是对“为什么要这样”这个问题的追问。当然设计中的线性逻辑，即从动机到结果的路线并不像工程设计中那样鲜明，因为设计不是科学，动机也是模糊的，比如说“新一代的 iPhone”。

Apple 的设计有着清晰明确的形象，我们可以称它有很好的收敛性，尤其是现在的 Apple ，可以比较 New Edge 时期和浪漫主义时期的设计，Apple 浪漫主义时期的设计就像刚解放的青春期，更重的表达性上的特征，更淡的“其中唯一”性，没有太强的“增之一分则太长 减之一分则太短”的感觉。

我们可以很清晰的理解 iPad 为什么要那样设计，但是 iPhone 4 为什么要这样设计，我们一时之间还有很多困惑。

首先可以肯定的一个动机就是 iPhone 需要新的设计，尽管在 iPhone 4 出现之前，人们仍然满意于 iPhone 3GS 的设计，Apple 的产品也不单纯靠样式的丰富来获取消费者的亲睐，但 iPhone 毕竟是消费品，两年时间对于一个标榜时尚的电子消费品来说是非常长的时间。“需要新的设计”是最主要的动机之一，那么它经过怎样的路径达到最后的结果即三明治式的设计呢，与前一代以及其他 Apple 产品有着显著的差别。在动机和结果都明确的前提下，如果不能描出它们之间较明确的路径，那么我们就不能说这个设计是收敛的。

但是从我们非制作者的角度去寻找这些路径在 iPhone 4 上变得很困难，也就是解读 iPhone 4 设计的困惑所在。如果按照一般的认识，我们会认为新款的 iPhone 会保留 Apple 产品中鲜明的曲线特征，以及由 Unibody 进化而来的整体感，就像 iPad 那样，当然由于手机这个产品的特殊性，使得完整形状的金属比如铝制背壳的使用可能性不大。人们喜欢 Unibody ，Apple 也着迷于 Unibody 工艺，这一点我们从遥控器到 iPad 背壳的内部梯田式结构特征设计中可以体会到，那么在新款 iPhone 手机中使用这个工艺看上去也是自然的。既然不能像 iPad 那样设计背壳，那 iPhone 上那部分可以使用 Unibody 呢，内部结构件是可能的，因为有一块很大的金属衬板以及很多系链托架结构。

![ipad teardown](http://www.hi-id.com/atcl/2010/ipad-teardown1.jpg)

新的设计是因为内部结构决定的吗？iPhone 4 有着非常紧凑的内部设计，整体厚度只有 9.3 mm，而且为电池提供了非常大的空间。通常曲线和弧面设计是在牺牲空间而获取形体上的独特性，比如需要额外的支撑结构件，或者会给装配带来困难，有时甚至牺牲细小处的美观来保证整体的美观，设计是权衡取舍的结果，如果前几代的 iPhone 的整体弧线让细节之处比如各种插孔，就有明显的妥协迹象，会带来一些不悦。Apple 网站上的 iPhone 4 图集现在有手机的上下左右前后各个角度展示而且是刻意展示，而以前几代的 iPhone 的官方图集不会有耳机插孔的特写。

是因为新的天线设计决定的吗？看上去反而觉得天线设计是妥协的结果而不是驱动，只不过天线设计促成了 iPhone 4 上那三道黑线的，或许因为天线的原因使得 Unibody 式的中间件设计变得不太可能，而间接导致了最终的设计。

是材料的原因吗？材料是改变设计的一个非常重大的因素，如果改变了材料，设计必定会随之改变，即使想法设法将新的材料特性整合到原来的设计之上。iPhone 4 前面面板使用了高强度的玻璃，前壳使用玻璃是必然的，而后壳启用玻璃材料则是突破性的，是因为这个突破带来了整体设计的改变吗？似乎也解释得通，因为使用了玻璃材料，就很难再设计弧形的背部，无论是背壳与外部的接触比如防跌落之类，以及与内部结构的配合比如必定带来更复杂的支撑结构设计，都决定了平面背部是最优的选择。如果背部采用了平面式设计，那么整体就朝着目前 iPhone 4 的样子发展了。也有可能是设计决定了材料，即现有这个三明治式的设计，而后才有玻璃材料的使用。

是 Apple 的设计哲学决定的吗？可哲学是生成不了实体的。

解读是对设计过程的一个逆向工程，基于推断和猜测，iPhone 4 的设计解读并不像 Apple 其他产品那么容易。

**走近看 iPhone 4**

![iphone 4 sim tray](http://www.hi-id.com/atcl/2010/iphone4-simtray.jpg)

我们粗略看 iPhone 4 的时候，觉得它太一般了，它没有了 Apple 设计的品质，其实这个“没有品质”的评价是出于它缺少了那些熟悉的明显的识别元素，或者是觉得像其他品牌的设计了。

而当我们仔细看的时候，可以从中发现 Apple 一贯的设计品质和执行力。iPhone 4 上的 Sim 卡槽，和 iPad 3G 上的一样，看上去很简单，但我们似乎看不到间隙，而它是一个全活动的部件，尽管 iPhone 一代和 iPhone 3GS 的 Sim 卡槽配合间隙也非常小，但由于材料的特性以及沉孔式的设计，一下就体现出 iPhone 4 的制造品质。

![iphone 4 bottom view](http://www.hi-id.com/atcl/2010/iphone4-bottomview-2.jpg)

Apple 在官方图集中不厌其烦地展示 iPhone 4 各个角度的特写，展示每一条倒角边，这些倒角边看上去只有 0.2 mm 左右，无论是内边缘还是外边缘都作了这样的处理，可以称作是精密加工。

中间金属件的边缘超出前后壳边缘大约有 ~~0.8~~ 0.6 mm，无疑这是有较强企图的一个设计，它增强了整体和硬实感，就如前后壳是贴到一个金属块之上，而不像是一圈金属饰条镶嵌到机身之上，同时它能在一些跌落中起到保护作用，比如不会损伤前后盖的配合结构或者对内部的影响，并且增强把握性能和手感，边缘可以让手有更强的意识。而且让手机的正视图效果更好，如果没有这么一圈金属边，正视图将会非常平白，平白并不一定与是否有这些外形特征有关，比如 HTC 的一些机子也有很多“外形设计”，但给你的感觉就是“一块大屏幕”，而是看这些外形特征是否能表达出产品的内在。

![iphone 4 sideview](http://www.hi-id.com/atcl/2010/iphone4-sideview.jpg)

关于那三条黑色分割线，也是人们看到泄露机器图片之后困惑最多的地方，因为“这看上去太不像 Apple 了”，Steve Jobs 在发布会上专门作了解释，说总共有三条黑线将金属带分成左右两部分，他们既是手机结构的基础，同时也是手机的天线，左侧较短一条是 Bluetooth, Wi-Fi 和 GPS，右侧是 UMTS 和 GSM，也就是说右侧的黑色分割线为为平衡左侧而作的一个装饰设计，Steve Jobs 称其为非常牛和酷的工程设计，我想他指的不全是这个想法和实现，还包括它的工艺。

前面我们说到 iPhone 4 上的精密加工，Sim 卡槽上难以辨识的配合间隙，而这三条黑色分割线更甚，因为看上去它没有间隙。那三条黑色塑料分割条不是装配上去的，而是直接将金属条放在模具内直接注塑上去了，所以看上去是如此的天衣无缝。

![iphone 4 stainless steel band](http://www.hi-id.com/atcl/2010/iphone4-stainless-steel-band.jpg)

![iphone 4 stainless steel band](http://www.hi-id.com/atcl/2010/iphone4-stainless-steel-band-2.jpg)

这些金属条是 Apple 自己研发的不锈钢合金，5倍于标准钢的强度，它们先经过锻造而后装配起来进行注塑（上图所示的毛胚件应该是左侧即带音量调节按键的那一条），即完成那三道黑色分割带，然后才是 CNC 加工，这就是为什么我们看到塑料和金属是如此浑然一体的原因。

![iphone 4 display optical lamination](http://www.hi-id.com/atcl/2010/iphone4-display-optical-lamination.jpg)

iPhone 4 的高分辨率 Retina 屏幕给人们带来的巨大的冲击，纷纷被其征服，人们提到它的显示效果如同印刷一样，如同印刷在玻璃上，而不是玻璃下，很多人说到 iPhone 4 屏幕的这个特性，就是似乎分别不出屏幕和玻璃，它们之间是没有距离的。Apple 确实在屏幕和玻璃之间加了一层光学薄片，这样不仅可以解决水汽或灰尘进入玻璃和屏幕之间的间隙这个常见的问题，而且提高了显示效果，感觉玻璃就是屏幕一般，加上 Retina 屏幕的高对比度，效果更出色。并且，这也改变了屏幕部分的结构，可以和 iPhone 3GS 和 iPod touch 相比，后两者的屏幕和玻璃是很容易分开的，虽然和其他手机一样它们都有排气结构设计，但水汽和灰尘问题还是能够发生，而 iPhone 4 则是将玻璃和屏幕牢牢贴合在一起，连 [iFixit 都没有拆开它](http://www.ifixit.com/Teardown/iPhone-4-Teardown/3130/3)，这或许带来一个问题就是维修的时候，如果玻璃损坏那么前面板的整体都要更换，Apple 敢于在这一点上进行取舍，是因为运用了高强度玻璃—直升飞机和高速火车上挡风玻璃一样的材料，经过化学坚固使其硬度是塑料的20倍，坚固度的30倍。

简单说，iPhone 4 是一个精工之作，如同 Unibody 工艺一样，将精密工艺带入到大众消费品上。此前将此同一理念使用到手机设计上的并不少，各种面向小众的高端手机，比如强调钟表制造般工艺的 Motorola AURA ，早于 Apple 使用整铝雕刻的 Porshce Design 设计的 P’9521\
，但 iPhone 4 与它们不同的是，精密工艺是 iPhone 4 的内在，而不是外在装饰或标签。

iPhone 4 的工艺品质是内在的，那么消费者能认识到它的价值吗？这个问题也是设计中经常会问到或者被问到的，消费者当然不会去关注那个倒角边是零点几毫米，那个又是使用了怎样的加工工艺，但是品质是可以体会得到的，也许这种体会是潜在的，不可表达的，但是能够感受得到。

Jonathan Ive 在和 Core77 的[一个简短交谈](http://www.core77.com/blog/object_culture/core77_speaks_with_jonathan_ive_on_the_design_of_the_iphone_4_material_matters_16817.asp)中说到，“人们对一个设计的感受，不管怎样它都是是主观的，但客观地说，制造公差是可被感知的。我们坚信这一点，所以从设计最开始我们就朝着这些目标努力。”

我们从人们对 iPhone 4 的使用体验中之中可以明显看到他们对这种品质的认可，如 Core77 对 iPhone 4 [第一印象](http://www.core77.com/blog/object_culture/core77s_iphone_4_first_impressions_16806.asp)中说到的，通常我们碰到的情况是一个产品实际不如效果图，或者照片，这也是我们使用 CAD 软件做设计经常碰到的一个问题，但是 iPhone 4 却是相反，照片无法表达出实机的质感，需要用手来感觉，而不是眼睛通过图片来获取。

**好木匠不会在柜子背面使用烂木头**

![iphone 4 structure](http://www.hi-id.com/atcl/2010/iphone4-structure.jpg)

Gizmodo 不久前有一篇文章 [Apple Design vs Apple Engineering](http://gizmodo.com/5575412/apple-design-vs-apple-engineering) ，挖出了 Apple 的一些往事，在 1981 年 Steve Jobs 对工程师在一次会议上展示的（印刷）电路板发表了自己的看法，“那部分真的很漂亮，但看看这些存储芯片，太丑了，线靠得太紧了。”一位工程师说：“谁在乎电路板的看起来怎样，唯一重要的是它运作的如何的好，没人会去看电路板。” Steve Jobs 强烈地表示：“我会去看，我想让它尽可能的漂亮，即使它藏在盒子内，一位优秀的木匠是不会在橱柜的后背上使用烂木头的，即使没有一个人会看见它。”另一位工程师说：“因为存储总线这是很难规划的地方，如果我们改变它，也许电路就不能很好的工作了。” Steve Jobs 说：“让我们另做一块漂亮的，如果不行就改回来。”最后，浪费了5000美元做了一块符合 Steve Jobs 审美的但不能工作的板子，最后还是回到了原来的设计。

这是一个经常会被讨论的话题，比如漂亮的飞机和牛逼的飞机之类，我想我们应该脱离开单纯辩论，跳过一部从一个新的角度来思考这个问题。

我们先看 iPhone 4 的内部结构，非常漂亮，看上去每一个元件都在它最合适的位置，所有的元件又都非常有秩序的组成一起，与之相比的其他甚至是前几代 iPhone ，它们的内部就好像是经过很多次被动的妥协而拼凑在一起。或许是最漂亮的手机结构设计，甚至可以说它比 iPhone 4 的外在更要美，此刻我们说到的美事实上与外在的美是两个概念，就像说最牛逼的飞机是最美的这个“美”，简单说，我们可以称之为“工艺之美”。

![iphone 4 teardown ifixit](http://www.hi-id.com/atcl/2010/iphone4-teardown-ifixit.jpg)

更多拆解图片可见 [iFixit](http://www.ifixit.com/Teardown/iPhone-4-Teardown/3130/1) 。

在 iPhone 4 内部看不到普通样式的 PCB ，多数手机都习惯于一大块的板子设计，而 iPhone 4 看上去将一个个某块包装得非常整齐完整，再非常紧凑有理有序的装配起来，就和外观设计一下“增之一分则太长 减之一分则太短” ，每一寸的空间都从整体的角度经过精心设计，加上不锈钢框架作为结构最原始的承载（那些经过 CNC 加工而成的特征），以及整体平面直线型设计带来空间上的利用率以及元件安置的水平性，精密的工艺之感立马呈现。

“工艺美”是一个较难阐述的主题，可以指完美和彻底地执行功能的实现，也可以在功能实现的基础上经过“设计”的，这个“设计”主要是针对工程的，它不是附加的，或者如开头所说，这个“设计”是经过明确的线性逻辑路线取得的。

![apple mac pro](http://www.hi-id.com/atcl/2010/apple-mac-pro.jpg)

在人们印象中，Apple 产品的内部与外表一样设计的漂亮，比如说 Mac Pro 就是一个很好的例子，但是如果我们从 Apple 自己的产品中去比较它们内部结构的设计变化，就可以发现很多显著的变化。

![Apple Power Mac G5](http://www.hi-id.com/atcl/2010/Apple-Power-Mac-G5.jpg)

Mac Pro 的前身 Power Mac G5，我们会说时代在变化，内部设计当然与时俱进，但是遗憾的是，其他很多产品的设计并非是这样，或者说最多是因为元件的大小改变了，而在尺寸上有所变化，而其他方面的突破甚微，包括日新月异的手机设计

**回头看 Apple 产品的结构设计**

![new mac mini](http://www.hi-id.com/atcl/2010/new-mac-mini-teardown.jpg)

![new mac mini](http://www.hi-id.com/atcl/2010/new-mac-mini.jpg)

Apple 在不久前更新的 Mac mini ，采用了 Unibody 设计，外壳从一整块铝中雕刻而出。更多的拆解图见[这](http://www.ifixit.com/Teardown/Mac-Mini-Model-A1347-Teardown/3094/1)。

![old mac mini](http://www.hi-id.com/atcl/2010/old-mac-mini-teardown.jpg)

老款的 Mac mini，更多的拆解图见[这](http://www.ifixit.com/Teardown/Mac-mini-Model-A1283-Teardown/659/1)。

对比着两者，可以感受到新款的内与外是融合的，而老款的 Mac mini 的外壳就是一个罩子。

![ipad 3g teardown](http://www.hi-id.com/atcl/2010/ipad-3g-teardown-2.jpg)

![ipad 3g teardown](http://www.hi-id.com/atcl/2010/ipad-3g-teardown-1.jpg)

iPad 3G 的拆解图（更多见[这](http://www.ifixit.com/Teardown/iPad-3G-Teardown/2374/1)）

![ipod touch teardown](http://www.hi-id.com/atcl/2010/ipod-touch-teardown.jpg)

![iphone 3gs teardown](http://www.hi-id.com/atcl/2010/iphone-3gs-teardown.jpg)

iPhone 3GS 拆解图（更多见[这](http://www.ifixit.com/Teardown/iPhone-3GS-Teardown/817/1)）和 iPod touch 拆解图（更多见[这](http://www.ifixit.com/Teardown/iPod-Touch-3rd-Generation-Teardown/1158/1)）

![iphone 1gen teardown](http://www.hi-id.com/atcl/2010/iphone-1gen-teardown.jpg)

iPhone 第一代的拆解图（更多见[这](http://www.ifixit.com/Teardown/iPhone-1st-Generation-Teardown/599/1)）

![ipod classic teardown](http://www.hi-id.com/atcl/2010/ipod-classic-teardown.jpg)

iPod classic 拆解图（更多见[这](http://www.ifixit.com/Teardown/iPod-Classic-Teardown/595/1)）

![iphone 4 structure](http://www.hi-id.com/atcl/2010/iphone4-structure-2.jpg)

iPhone 4 内部结构的另一张图。

虽然是不同的产品，但从中我们可以明确感受到 Apple 的产品不仅在外观上一步步进化着，而且内部也是，两者相结合就是外观不仅仅为改变而改变（简单举例就是为了更新产品而换一个样子），内部也不是应改变而改变（应改变而改变简单举例就是技术或元件的变化而带来的被动改变），我们可以感受到Apple pp在内外融合的整体上的主动探索和进化。

从 Apple 产品内外进展历程中，可以看见一个转折点，那就是 Unibody。

**Unibody**

![apple unibody macbook](http://www.hi-id.com/atcl/2010/apple-unibody-macbook.jpg)

Unibody 不仅是工业设计上的一个里程碑，而且也是现代工业生产以及现代工艺（CRAFT）上的一个里程碑，我甚至认为它在人文精神层面也起到了重大促进作用（见《人与物的距离之变》）。

Unibody 有狭义和广义之分，即使只针对于 Apple。狭义的 Unibody 是一种生产工艺，就是指在一整块原材料中用去除材料的方法加工出成品，通常是指使用 CNC 对块状金属进行铣削，而成品具有明显的整体性特征，即有高度或者说有封闭围拢的形状，通常一些形状特征较难使用其他普通加工方法加工而成，比如用到模具的工艺。广义的 Unibody 是一种形体特征，具有 Unibody 形体特征的通常具有明显的整体性特征，比如封闭围拢的形状，或是将通常的结构分件特征进行了一体化处理，但它未必使用诸如 CNC 对块状金属进行铣削等整体去材料方法加工而成。MacBook Pro 的 Unibody 是狭义的 Unibody，而塑料壳的 MacBook 的 Unibody 是指形体特征。

Unibody 这个词是随着 MacBook Pro 发布会 Jonathan Ive 上台介绍而流传而开，实际上 Apple 以前也使用过这个词(其他领域用的就更多了)，比如与 Pro Mouse 鼠标相关的专利文案之中，而这种与 CNC 相关的工艺更是常见，只不过 Apple 将它带到了新的层面，和其他 Apple 的应用创新一样，起到了革命性的作用。

在我们印象之中，Apple 有一个特点，或许我们可以称为“作”，即在一些地方一意孤行地追求它所追求的完美和漂亮，比如零度拔模角之类，追求形状的单一完整，分型面与分件面的偏离即形成一个收缩围拢的形状。当其它还在使用上下壳结构的时候，Apple 已经在竭力避免使用这种结构的路上越走越远，将侧面的咬合线甩地远远的。

![apple pro mouse might mouse](http://www.hi-id.com/atcl/2010/apple-pro-mouse-might-mouse.jpg)

无线版的 Pro Mouse 和 Might Mouse，图片来自[这里](http://www.flickr.com/photos/foskarulla/2509678826/sizes/l/)。Pro Mouse 即是传说中没有按键的鼠标，因为人们总是抱怨 Apple 鼠标只有一个按键，倔强的 Apple 就以一个没有按键的鼠标回应之。在正常视角中，这两个鼠标看起来是浑然一体的，如同一块完整洁白的玉石一样，这不仅得益于上表面不作按键分件设计，以及应用简洁的形体，还来自于越过最外点而朝内拐的设计，即截面最大处并不是零件边缘，而一般的模具成型，形状的最大处即是分件之处。

![ipod mini ipod shuffle](http://www.hi-id.com/atcl/2010/ipod-mini-ipod-shuffle.jpg)

iPod mini 和第一代 iPod shuffle，iPod shuffle 一代使用了[二次注塑](http://www.hi-id.com/?p=1040)的方式实现了零度拔模角的口香糖式设计，而 iPod mini 则使用了铝挤工艺，实现了完整无缝的外壳。

![iphone 1gen 3gs](http://www.hi-id.com/atcl/2010/iphone-1gen-3gs.jpg)

前三代的 iPhone，弧线经过最高点然后继续折回。

![ipod touch allview](http://www.hi-id.com/atcl/2010/ipod-touch-allview.jpg)

iPod touch 2 代和 3 代有着和 iPhone 2 代和 3 代类似的曲线特征，但是更为彻底，我们也可以从 iPod touch 1 代的对比中来获取这个感觉，iPod touch 前后背部形状差别很大，一个是直线型一个是弧线型。

![ipod touch first gen](http://www.hi-id.com/atcl/2010/ipod-touch-first-gen.jpg)

iPod touch 比 iPhone 更完整（指的是 2 代和 3 代），它在外部看只有两个部件组成，背壳和前面板，而粗略看上去它是完整一块，人们不会有意识去分辨背壳和前面板，这得益于背壳曲线设计的引导。而 iPhone 却有一圈金属饰条，iPod touch 1 代也有一圈较大的边框，因为它的结构和 iPhone 1 代一样更偏向传统的手机结构设计，即内部结构的基础是一块塑料件，在这块塑料件上进行装配然后配上外壳，详细体会可以见 iFixit 的拆解图（ [iPhone 1 代](http://www.ifixit.com/Teardown/iPhone-1st-Generation-Teardown/599/2)和 [iPod touch 1 代](http://www.ifixit.com/Teardown/iPod-Touch-1st-Generation-Teardown/596/3)）。而 2 代和 3 代的 iPhone 和 iPod touch 的结构设计明显转换到 Apple 风格的结构设计上，不再有塑料做成的结构基础件，而是和 iPod ,MacBook 这些产品类似，以外壳作为结构的基础。iPod touch 1 代的背壳和内部结构是脱离的，而 2 代和 3 代的 iPhone 和 iPod touch 所有的东西是从安装在背壳的基础上开始的。传统的塑料结构基础件模式除了在美学上较难突破外，在控制重要和厚度上也有不少的束缚。

iPod touch 比 iPhone 更完整，因为它将 iPhone 上的金属边框和背壳融为一体了，iPhone 上有这么一圈金属边框是因为塑料材料决定的，塑料材料又是决定于手机产品这个特性，可以想象 iPhone 上没有那么一圈金属边框，那会在品质感上减低多少个档次啊，除此之外，有了这么一圈金属边框，在制造和装配上带来了不少方便。iPod touch 是一个完整的不锈钢金属壳，所以为了避免形体上的单调或者说在正面作更好的融合，翻到正面的不锈钢有一圈平面的配合，效果可以比较 1 代 iPod touch，1 代没有这圈细小的平面过度，同样 iPod touch 3代（及2代）在玻璃和金属框之间有美工缝的设计，即一道极窄的刻意设计的缝隙，也为整体效果增色不少。

iPod touch 这个完整的背壳是用 0.5 mm的不锈钢板冲压成型的，因为最大截面在内部（腰鼓形弧线），使用了可收缩型芯，弧线设计既符合审美，比如左右的不对称，又符合人机工学，同时还要考虑到结构性能。这样的外壳设计必定会为结构设计和装配带来一些挑战性，首先需要有托架焊接到背壳上来支撑内部器件并强化结构性能，装备从滴到上，由于元件众多，所以厚度方向上的精度控制尤其重要，所以在托架和衬片焊接完成后需要进行 CNC 加工。

从外部看是形状的进化历程，从内部看是“结构” 的进化历程。

![apple unibody macbook](http://www.hi-id.com/atcl/2010/apple-unibody-macbook-2.jpg)

当 Apple 在 MacBook 上应用了全铝雕刻成型的 Unibody，将 Apple 的设计推向了一个新的层面，Apple 对整体性的追求也跃进一大步。

也可以拿出康对砖的描述 — “砖，你想成为什么？”“我想成拱。”一块材料，一块硬材料，最想成为一件作品，最想被雕刻成为一件作品，为什么不喜欢其他方式，因为这种方式最酷。

![hp envy 15 unibody](http://www.hi-id.com/atcl/2010/hp-envy-15-unibody.jpg)\
![the unibody loser](http://www.hi-id.com/atcl/2010/the-unibody-loser.jpg)

现在距 Apple 公布他们的 Unibody 设计已经快两年了，其他厂商跟进的并不多，因为如上面所说的它也是工业生产的一个里程碑，要全线批量生产不是一件小事。此后采用类似工艺，有的会称其 Unibody 也有的不用这个词，HP 的 ENVY 13 和 15 ，不过它是应用在 D 壳之上，还有 Zune HD 的背壳。还有上图所示的 Nexus One 的那腰带形状，还有 Nokia N8，N8 让我感到奇怪的是 Nokia 在[官方博客](http://conversations.nokia.com/2010/04/27/nokia-n8-official-price-specs-and-pics/)中介绍是“从一块阳极氧化的铝中雕刻而出”，而看上去它主要部分是铝挤的，而且即使真是如此，阳极氧化应该在雕刻之后吧。另外还有 Dell 的 Adamo。

目前没看到任何后继者在 Unibody 设计上可以追上 Apple 的，甚至可以说就是对 Unibody 的理解都没有跟上，就像 Nexus One 的 Unibody，在 Google [官方介绍视频](http://www.youtube.com/watch?v=e2WtBwAL0SE)中（1:18 处）出现了模糊了的“UNIBODY”字样，但是总觉得是为了 Unibody 而 Unibody 或者说只是为了装饰，如其形状一样 — 别扭和纠结。

跟随者的先天缺陷是注定的，除非作出了巨大的努力。Unibody 对于 Apple 来说像是一种自然生长，这是 Apple 对设计对整体性的不断追求自然得到一个结果，并大胆地结合了锋利的边线设计，将 Apple 的形体风格带入新时代。

试想，如果最先出现的不是 Apple 的 Unibody ，而是其它的比如 Nexus One 的，接着会是怎样，我想不管有没有 Apple ，最终如 Apple 这般的 Unibody 设计一定会被实现，而现在的 Nexus One 的 Unibody 设计只是继承 Apple 的 Unibody 的一个偶像选择，这就是以前提到的“必然”和 “Universal”。

**Unibody，工艺( Craft )之美**

![apple unibody art of craft](http://www.hi-id.com/atcl/2010/apple-unibody-art-of-craft.jpg)

当第一只黑猩猩认识并捡起一根骨头，将其作为武器和工具，标志着人类意识和认知力的产生；那么当打磨第一块石头的时候，那是创造力的诞生；在打磨过程中产生了满意和愉悦，就是工艺（craft）诞生的时刻。

当我们看到或摸到 MacBook Pro 的那道有一点利手边缘的时候，当我们用砂纸打磨一个东西在多次来回擦拭之后在吹开粉尘看到光滑的时候，当我们在用白色在画面上点出高光当我们在效果图上加上反光的时候，当我们在耗尽最后一点精力找出 Bug 看着程序运行的那一刻，当我们用榔头将钉子不偏不倚敲进一块质感很好的木头看着钉帽嵌入木头的那一刻……我们触摸到了黑石。

记得在小时候看到的那些游走的手工艺匠人，凿臼的石匠，就是从一块石头中凿出一个水槽，我既为其着迷同时也感到困惑。因为这看上去是一件非常简单的事，比起凿石佛的来说，只需要在石头上挖出一个槽子就行，为什么没有更厉害一点的工具一下就搞定呢，而不需要这样一小块一小块石片地挖，需要费上这么多天，而且石匠它从开头到初次成型都是差不多大小的一块块凿，为什么不大一点呢。但是我非常着迷于观看这个无聊的过程，尤其是石匠在每次榔头敲下那一刻就闭上眼睛，然后一块石片就脱落，慢慢在这个大石块上出现形状，然后是平整，然后是肌理，新鲜的石头和荔枝一样嫩。

我们赞叹工艺之美，那种用技能去克服困难完成作品的过程，坚硬是一种原始基础的困难，雕刻也是一种原始基础的技能。罗丹说雕塑是将石头的灵魂解放出来，坚硬具有抽象性，所以它能够承载起很多精神，这是我们陶醉于从坚硬而来的作品的原因，一个石头雕塑和一个泡沫雕塑给人不一样的感受，而雕刻也比塑造更具有抽象性，因为前者更拘束更搜索，所以一个雕刻作品和一个铸造作品也给人不一样的感受。

我们赞叹工匠之美，它让人与材料有了更深的接触，就像 “2001: A Space Odyssey” 里面一样，这是一种触摸。手工艺时代，人们与材料直接的触摸，工匠是手的艺术，在作品之中留下手的痕迹，这一段的触摸如同黑猩猩和黑石的那第一次接触。

那么工业化之后就像是在月球上的那次触摸，将我们带向新的未来。在《人与物的距离之变》以及《实体感的消失》中说到随着工业化的进展，手工艺被机器生产，市场经济的形成，信息社会的到来，让人与材料之间的关系发生了彻底的改变，生产力改变，生产消费模式改变，设计也在改变。BBC 前段时间出了5集纪录片，讲述工业设计在工业化之后到现在的发展简史 — [The Genius of Design](http://www.verycd.com/topics/2826438/)，从这个纪录片中可以获取一个概括的图像，从生产机器的出现，人们应对新时代追求现代化，战争的影响，塑料的出现，到消费主义时代的到来以及人们的反思。

我们在工业化的产品中获取空前的满足的同时，也怀念手工艺时代那种人与材料的亲近之感，这并不是具体的而是抽象的感觉，我们仍能从工业化产品的触摸到各种材质肌理，失去的是精神性的东西，就是工艺之美，工匠的艺术和精神。我们身边不再有那种需要经过几天几月手工打磨而出的产品，或许它们的生产时间在1秒之内，那么我们如何去寻找那种工艺之美呢？但是，如果以此来对过去进行怀念是消极和懦弱的，甚至愚昧的。

事实上，我们并没有失去这种工艺之美，当我们看到现代化的生产车间，快速的流水线操作，敏捷迅速的机械臂等等之类，我们会体会到这种工艺之美，但为什么我们在最终的产品中体会不到呢，就是手工艺时代，一个作品可以留下工匠的触摸，那么一个现代的工业化产品中的机器留下的工艺之感，我们是否能够体会得到呢？我们仍能从产品中去获取这种工匠的艺术吗？

这就是现代设计的责任。

我们可以从 Apple 的 Unibody 中体会得到，一个对 Unibody 工艺没有任何了解，甚至不知道是否怎样成型，使用了什么设备，它的精度控制等级是多少，对设计也不知道怎样描述，不清楚是一体设计还是拼凑粘贴的，甚至是一个纯正的物欲主义消费者，他仍然能够在某一刻，抛弃粉丝情节，抛弃媒体的灌输，脱离开那些未经过自我判断的价值观，能够体会到其中的品质感，或许就是一种模糊但是很纯粹的感受，我觉得这就是拉近了人和物的距离，这个产品就体现出了它的工艺之美。MacBook 的 Unibody C 壳是一个现代化的机器加工品，但它就像一个石雕作品一样，我们能够体会到一些凝聚着的东西。

但是我们可以从 Nexus One 的 Unibody 中体会到什么呢？这就是设计的重要，进入现代化之后，生产者成为了机器，那么能让产品和人作交流的使者就是设计师，设计师也不是直接用手进行创作，而是将更多的工作交给思想，使用硬度多高的工具也不能从一块铝中去手工雕刻出一个设计，我们需要的是现代工匠。

**保持接触**

![keep in touch](http://www.hi-id.com/atcl/2010/keep-in-touch.jpg)

在 Core77 对 Jonathan Ive 的那次[简短访谈](http://www.core77.com/blog/object_culture/core77_speaks_with_jonathan_ive_on_the_design_of_the_iphone_4_material_matters_16817.asp)中，Jonathan Ive 说到：

> “对一个实体物的体验一个最主要的相关因素就是材料，我们（在 Apple ）体验和探索材料，处理它，学习材料的固有特性和将它从原始的材料转变为最终成品的工艺，比如说，明确理解机加工或者研磨的工艺会怎样作用于材料，理解，倾注于材料和公司，是我们工作方式中极为重要的。”

> “最好的设计它会明确地承认你不能将形式同材料分裂，材料引导形式（the material informs the form），与之正好相反的方式是，在 CAD 里虚拟设计，创造一个随意的形式，然后以独特的材料如渲染出图，标注说’这是木头’之类等等。而当一个物体的材料，材料的工艺和形式，所有的都得到完美的均衡时，这个物体就会在很多层面（给人）带来真实的共鸣，人们会在一种独特的方式下认识到物体的本真。”

> “在现在的设计学校里可能对虚拟的设计工具非常精通，过分依赖于它们的危险是我们将以与物理世界脱离而终结，在我们寻找快速制作三维物体的时候，我们会遗失制作东西的体验，那些可以给带来对形式、材料和材料行为方式的第一体验，‘我在这压得太重，它这里就破裂了’等等，一些数字设计工具很吸引人，但重要的是人们仍然真实地想努力找到一条道路去获取材料的直接体验。”

> “以学术的方式是很难学习材料的，比如看书和看视频，真正理解一种材料的唯一道路就是使用它制作东西，激发想制作东西的欲望是非常重要的，对材料世界好奇，真正理解材料达到一个层面。”

> “对一个设计师来说，对材料的不断学习不是份外之事，它绝对是根本的。”

在 Apple 的几乎所有官方视频中（21世纪的），Jonathan Ive 的形象和发布会上的 Steve Jobs 一样总是一个形象，光头、胡渣、T恤和肌肉男，有人曾经评论说 ：“我就整不明白为啥他出现总是穿着那件汗渍渍的T恤，难道是为了让我们相信他刚从工厂出来，刚挥着锤子砸出个iMac?”事实上，Jonathan Ive 他的确在用自己的手砸出很多模型，来获取对材料的深刻理解。

在手工业时代，设计者和制造者基本是同一个人，工业化、市场化和职能分工之后，两者开始脱离，随着工业化的深化，制造的更多任务将交给机器，对设计师来说，这是一个与实体脱离的过程，朝着知识化的方向发展，用形而上管理形而下。但是实体是人类存在最基础和重要的部分，如果当我们进化到不再依赖实体的时候或许就不用“人类”这个词了，只不过我们需要用新的视角去看待，就像从手工业走向工业化，原本设计者和制作者的一体进行分化，而现在，我们将设计者依然视作“制作者”（Maker），只不过这时的“制作者”已经被赋以新的含义了。

**我们没有 Apple 设计师那样幸福**

![iphone 4 HTC Evo 4G](http://www.hi-id.com/atcl/2010/iphone4-HTC-Evo-4G.jpg)

从这张图你可以看到什么，iPhone 4 和 HTC Evo 4G，两种不同的设计，两种不同的结构设计，一种是传统的手机结构设计虽然从视觉上看它也是漂亮的，一种是突破性的工艺之美，还可以看到什么？可以看到一个是分工，一个是合作，从 HTC Evo 4G 上似乎可以隐约看到从设计师的设计到工程师的结构设计这一有着先后的工作流程，从 iPhone 4 很难看到设计师和工程师之间的先后关系，看不到明确的分工，比如这部分是我做的，那部分归你管，而是看到了一个整体。

每当我们说起 Apple 设计的时候，设计师们除了对 Apple 设计师佩服之外，最多的就是对 Apple 设计师的羡慕 — “ Apple 设计师是幸福的。” 因为他有条件让他的设计要求实现，各种很“作”的设计都能够被实现，可以突破各种限制，比如零度拔模角、腰鼓形等等，看上去有了 Steve Jobs 领导的公司，设计师可以提出各种苛刻的要求，而自己所作的却受各种因素的限制，不能得到任何发挥，只能老老实实地做着各种平庸的设计。

表面上看这种抱怨和羡慕是合理的，毕竟设计的实现不是设计师一个人的事，但是从设计师自身的角度去看，这中想法完全是一种托辞，为自己的无能和懦弱寻来的一条后路而已。

如果我们去看 Apple 前期产品，比如上面“回头看 Apple 产品的结构设计”那一节所简要展示的，我们确实可以看到结构对外型的配合，有时候甚至结构是屈从于外形设计，这和 Apple 对设计的重视分不开的，但是越到后来，你就可以看到两者的融合，你看不到是结构是否服从于外形，工程是否屈于设计，设计是否受制于工程，分不清哪一部分是设计师的功劳而哪一部分是工程师的功劳，看上去设计师也是工程师，所有都是相融在一起的。

Apple 的确非常强调各部门的合作，设计在 Apple 中占有重要的地位，Apple 的设计师与其他部门的合作也有着深厚的基础。但，最重要的是我们看到的，Apple 对产品对设计的不断深入理解。让一个人来既作设计师又作工程师是不现实的，因为我们处于现代工业文明之中，分工是它的基础，基于分工的设计是怎样的呢？那就是我们最常见的，设计师接过从流水线上来的任务，完成自己的“本份”工作，放到传送带运到工程师，工程师接到在其基础上做他的“本份”工作，发现问题，不是自己的责任，问题来自设计师，写上自己的回馈，又放到传送带运回给设计师……这就是为什么多次当我们看到 Apple 设计突破的时候，发现其余的这样循规蹈矩传送带来传送带去地已经很久了，有点腐朽了。

怎样提高对产品对设计的理解，那就是 — 触摸。

**T —— 经典式和现代式**

Apple 的设计是最牛逼的吗？

如果陷入这个问题的讨论，就是闲聊扯淡了，可是一叶障目的情形却是常见的，你不可能学会 Steve Jobs 的穿衣风格或者脾气就可以再造一个 Apple，也不可能只关注 Apple 你就可以认识设计了，Apple 的设计只是其中之一。

我们常听说 Apple 不作用户调研，那么如果我们学 Apple ，也就不用户调研了？所以，将 Apple 设计从一个子范围提升到一个父范围，比如 Apple 设计代表全体设计，这中源自偶像崇拜的近视无疑会带来固步自封，加上粉丝所持有的那份傲娇，没有比这更让人觉得遗憾的了。

关于 Apple 设计我们所知的都是围绕着产品、围绕着设计，那么设计除了围绕着设计之外还能围绕着什么呢？还有很多，因为设计这个专业和其他行业一样一直在不断的扩展和进化，我们现在的设计已经去10年前的明显不一样了，或许10年前的设计师是一个纯粹的工业造型设计师，而现在的设计师需要更开放面对更多的新学科新领域。但是我们从来没听过 Jonathan Ive 来谈过关于 Design Thinking，关于 Design for the Other 90%，关于这关于那。

Apple 设计是属于经典式的，或许我们可以称是纯粹式的设计，它的活动范围相对是稳定的，而且追求的是纵深方法上的发展，很少来横向上作出延伸，它像是新时代的工匠，就像 Peter Zumthor 之于建筑设计，从某种角度来看，它是封闭的，但是在它自身所代表的那个维度上来看，它是引导者。就像 T 的一竖，而 T 的一横则可以是代表现代式的设计，即是开放的，在横向上发展，拥抱多学科，积极与外界以及新时代相融合，它呈现出的是丰富多彩。

不仅是 Apple 的设计，Apple 本身也是经典式制作者（Maker）的代表，比如秉持“做好产品”这一点，从其公司的运营特征到产品细微的功能确定上，我们都可以将其归纳到经典式之中，比如在手机系统上和 Google Android 的比较，可以很好地映照出两种特征，而且这两者并不是冲突的，也就是说 iPhone 越优秀，Android 就有更广阔的发展空间，可以说是相辅相成的。Apple 给人的不完美之处也可以将根源追溯到这种模式之中，尤其当你在横向上索求，而它在纵向上供应的时候。

经典式可以看成是内敛型的，而现代式则是开放的，从设计师个体的角度来说，同时具有内和外，在 T 的两个方向上都需要发展，这也是 [Tim Brown](http://www.core77.com/hack2work/2009/09/on_being_tshaped.asp) 说的 成为一个 T 型人才。

**技术和人文艺术**

![apple technology liberal arts](http://www.hi-id.com/atcl/2010/apple-technology-liberal-arts.jpg)

在 iPhone 4 发布会上 ( WWDC 2010 ) Steve Jobs 第二次以这张图片结束，第一次是在1月27号的 iPad 发布会上。Steve Jobs 说 Apple 不只是一家技术公司，而是追求技术和人文艺术的结合。


# iPad,从 niche 到 mass

![apple ipad](http://www.hi-id.com/atcl/2010/apple-ipad.jpg)

1月28号（美国时间27号）Apple 发布了 iPad，如人们平常所称的来自 Apple 的平板电脑（Tablet），iPad 采用了高分辨率的 9.7 英寸 LED 背光 IPS 显示屏，承载了 Multi-Touch 多点触摸技术，宽 189.7mm，高 242.8 mm，厚度为 13.4 mm，重 0.68 kg (配备3G的为 0.73 kg)，电池续航时间可达 10 小时，详细的一些介绍可以见[官方网站](http://www.apple.com/ipad/)。

iPad 从正面看像是从 MacBook Pro 上卸下来一样，四周尺度平均的黑色边框，完整的玻璃表面被带有较大圆角的金属所框住，金属边框从后包到正面不仅在 Apple 产品上（新款的 iMac 是玻璃完全覆盖住边框），也在我们身边其他一些产品上是一种非常熟悉了的形式语言。而将 iPad 转往背后，从侧面到背后的形式语言更接近于 iMac 或者是 Apple 的 LED Cinema Display 显示器，一个较大的弧形背面与四壁相接形成一条锐利的边线，大弧面便于手的把握，与 iPhone 从弧面过度到平面不一样的是因为 iPad 的尺度决定了一些人机操作上的不同，另外 iPad 四壁在正面的那条外边倒了一个直角边，这样的手法也是很通俗的，如果要在 Apple 产品上去追溯渊源，或许可以找到 MacBook Pro 的 Unibody C 壳的下边沿。不带 3G 只带 Wi-Fi 功能的 iPad 背部是一个完整的外壳，工艺类似于 iMac 或者 LED Cinema Display ，我们在《亮利的风景线》 一文中介绍过，即用后加工的方式作出类似 Unibody 的那种整体感。内置扬声器的空位是三个长条形的完整圆角矩形排列而成，有点 PowerBook 时代的感觉，用三个估计是为了平衡视觉和功能之间的关系，这样的可以称带一点掩饰的手法在其他 Apple 产品的细节上较少见。iPad 正面和 iPhone 一样只有一个按键，界面也一样。

在 iPhone 发布之时，当时我们这里发布的文章是以“千呼万唤终出来！”这一句开始的，iPad 也如此，也是千呼万唤，虽然都是千呼万唤，但两者之间的差别是值得我们去体会的。我们在半年前曾经就 iPad 这个话题写过一篇文章并讨论过，也对这种千呼万唤的期待作过一些分析，而现在 iPad 已经呈现在人们面前了，虽然上市到人们手中是另外一个重要阶段，但现在人们对 iPad 已经有了大概的观念上（没有手的触摸）较清晰的印象，亦是说千呼万唤已经有了后继反应，我们就可以再进一步去了解围绕着 iPad 的外围生态了，外围生态比如说人们的反应、适应和接受是产品的一部分，而在 iPad 身上尤其重要，这一点我们会在下面讨论。

与 iPhone 的千呼万唤终出来之后人们的反馈明显不一样的地方是，iPad 的反馈不是完全被征服，有些人明显的是失望，尤其是那些对这个产品的革命性抱有很大期望的人，在前一篇 iPad 的文章中我们说到过这些人，比如那些在当时对 iPad 存在一些疑问的文章下兴奋反驳的人，这些人也是产品形成的一个主要部分，尤其是 Apple 的产品，他们热忱、开放、充满希望，现在他们对这个结果很失望，因为 iPad 不够革命性不够突破，或者说和那些其他厂家看不出什么区别，就像那个 JooJoo ( 以前的CrunchPad )。

而更多的是困惑、疑虑，摇摆不定，要说 iPad 好也说得通，要说不怎么样也还真就那么会事，要从革命性和带来的产业效应有很多论据支撑，要从现实中的一些问题去敲击叩问，iPad 确实也不是无坚不摧……为嘛？

因为 Apple 所作的就是将一个现在还是 niche 的产品带向 mass，即将一个位于角落的产品类别如何带向大众化。

Tablet 平板电脑并不是一个新鲜的产品类别，如同谈论设计史可以追溯到旧石器时代的石块，Tablet 也有它的石器时代，从桌面使用联系掌上使用这是一个非常平常的逻辑性创造思维，从石器时代到现在，很多公司也都在 Tablet 上有所行动，当然从去年下半年开始就更多的，除了那些想在 Apple 之前押一个宝的，最重要的还是时代的变化，所谓时代的变化，即有底层的技术的变化或者生活方式的变化，人们的期盼也是其中之一。

在这之前，Tablet 一直是一个 niche 产品，我们可以称之为小类别产品，即使是针对大众化的收到的反馈也是使其限在角落之中。如果我们来梳理背后的原因，简单地我们可以分成两类，硬性的和软性的。

硬性的，就是指围绕着技术的客观因素，试想如果一个平板电脑常用的使用方式是放在桌面上，则有多少人愿意使用呢，这种使用方式或许很多人都碰到过，就是以前还只有阴极射线管显示器的时候，很多学校都是将显示器倒立放置于一个桌子中，只露出一个现实球面玻璃。从元件到电池到显示效果无一不制约着它的发展和应用，当然我们可以从那时的很多概念设计中看到使用轻便的设计。同样软件也制约着它的发展，不展开详述。

软性的，就是生活方式。Tablet 的基础成因之一就是移动，如果只有电脑的需求，我们能在 Tablet 上做什么呢？如果它只能完成笔记本或者智能手机的功能，只是一种替代，那么选择 Tablet 最主要的还是没事干。

但是，还有一个非常重要的原因使得 Tablet 只是一个 niche 产品，这个原因即时硬性的，因为它是客观因素很难改变的，也是软性的，因为它不是技术之类促成的，而是人以及习惯。人机，决定了产品类别，这一点我们不仅在前面文章中讨论了很多，在 iDESIGN 上也作了不少讨论。人的身体可以说是客观不会改变的，无论你是怎样的创新方式或者设计，只能去适合人，也就是人机的因素，使得产品的大类别非常鲜明，比如屏幕尺寸决定的不同电脑，甚至我们身边的很多标准包括工业标准是因为人机这个因素决定的。当然人机这个决定因素不是非常死板的只有1，2，3，4这样的级数，在1和2之间同样有无数的选择，那么这种选择的分布从空间和时间上表现出来的就是人的习惯，如果说人机是诸如产品类别和标准的内在因素，那么习惯就是外在因素，比如为什么我们的键盘是 QWERTY 而不是 DVORAK，为什么我看电脑是水平视线而读书是倾斜视线……一个人会受制于习惯而改变需要付出尝试和努力，当大众都被习惯束缚的时候，也就促成了类别。

iPad 并不像 iPhone 那样的革命性，我们从发布会的视频中就可以很好的体会，虽然 Apple 在词语的使用上还是非常煽情，但是可以从中哪怕是 Steve Jobs 的一些语气和神态中感受到一些薄弱之处，或许可以体会到一些 Apple 的试探之意。 Tablet 虽然是一个小类别，但是它是最重要的未被抬上水面的产品类别，Apple 肯定不是只是在现在才去探索这个类别的产品， Steve Jobs 在发布会开始不久也提到了，他们探索了很久，那么为什么现在就正式推出了呢，因为尽管有很多受制因素，但有很好的天时地利人和，Apple 可以有条件把它推一把，努力将它从niche 带向 mass。

天时

相对于互联网的发展，数字产品或者说硬件的发展是缓慢的，比如说这几年由 Web 2.0 带动的网络变化，非常迅速的改变着人们的生活，2年前我们这里写过一篇[《走下电脑的 Web 2.0，催生一片新天地》](http://www.hi-id.com/?p=1427)，看看我们周围的产品，有多少是内容带动的，而且这个需求有多大，我们可以看一下此前风行的 Netbook，甚至是 Kindle。或许感慨说我们坐在电脑面前已经很久了，这个感慨不是意味着我们不应该坐着使用电脑，坐着使用电脑仍然是最理想的方式，但或许可以加一个之一，因为我们现在想无时不刻都能体会坐在电脑前那种便利，比如想查找一个信息，想发布一下 twitter 之类，我们需要更多的生活方式，而现在似乎就在眼前了，我们再也不会有什么现实世界和虚拟世界的感觉差别了，甚至我们都很少说“网恋”“网购”这个词了，因为数字生活已经深入并日常化了，而现在我们很多局限却是受制于硬件或者说产品和设计。

地利

Apple 在将公司名称上的“电脑”去掉之后，它切实成为一家创新的数字消费品公司，无论是人们的印象还是实际比如说最近的季度财报，Apple 这家公司已经不再和电脑联系起来了，甚至说 Mac Pro ? 那个6-7年没更换的机箱，听上去就像 Xserve 一样了。尤其是在 iPhone 发布之后，诸如 Multi-Touch 这样的技术应用已经深入人心，Apple 的产品线无论是功能和设计都是空前的明确和统一。iPhone 已经快3年时间，它还带来一个效应就是人们的期待，如果此时 Apple 再不整出点新花样是无法交代的，而这个新花样不像 MacBook 那样隐形的升级创新，人们期待的是 iPhone 那样的创新。Tablet 恰好是一个最直接的产品类别创新，它能够介入 Apple 现有的产品线之中，有了 iPhone 的基础，它可以从中很好的独立出来。

人和

我觉得这是人们叫唤一个产品最狂热的，在一个产品还未出现之前，甚至可以说 Apple 本来不想做，但是人们期望太热烈了，无论从积极还是消极的因素说，都应该推出这个产品。（关于人们的期待讨论可以见前一篇 iPad 文章）

Apple 能够将这个 niche 的产品努力带向 mass，一个是因为 Apple 能够将这个产品打造好，另外一个就是靠着 Apple 的号召力可以去突破习惯，让这个类别产品原本一个首当其冲的限制退到边缘，这种号召力是强大的，iPad 或许从根本说就是一平板电脑，和其他公司产的差别不大，但是给人们的感觉就是不一样的，非常不一样，甚至说对 Tablet 这个产品类型都有了新的看法。

那么，最重要的，Apple 怎样来打造这个产品，努力使它从 niche 走向 mass 的呢？

1，它是 iPad 不是 Tablet

当然 Apple 没有说它不是 Tablet，不是平板电脑，但是 Apple 自己不会去说 iPad 是一部 Tablet 平板电脑，在发布会中只有在开头的演示屏幕上引用华尔街日报的话中出现过 Tablet 一词，其他都没见到听到这个词语。人们会叫它是 iPad 而不是 Apple Tablet 什么的，这也是 Apple 其他产品的一个战略思想，iPod 很少和 MP3 播放器联系起来，当然在中国比较特殊一点，尤其是网上介绍，喜欢叫苹果MP3或者MP4播放器的很多，可想 iPad 如果叫 iTablet，那么它在国内会被人叫成什么呢？以我的体验，不熟悉英文的超过3个音以上的英文词非常难念。

想要摆脱类别的束缚，就要摆脱类别。类别名称是一把双刃剑，一边的刃非常钝，即便与人们理解，比如作出一个很新奇的产品，用现有类别名称是最容易向大众介绍的，也是最懒惰的方法，比如说“啊，它是一个MP3播放器”。类别名称的劣势我们在《Outline/轮廓》这篇文章讨论过。

有谁记得什么 UMPC 吗？或者 MID 吗？或者现在哪个MP3播放器你还印象深刻。当然，iPhone 是手机或者说智能手机（Apple 提这个也很少），这就是大类别和小类别的区别。

2，它还真不是 Tablet

以往的 Tablet 是怎样的呢？就是将电脑做小做成手持的，还有，加上触摸操作，但是一打开还是和桌面电脑一模一样，使用和消费的观念也一样，就像 Window 系统的平板电脑，它就是一个小电脑。后来，会做一些优化，比如系统载入上，而且做一些定制界面，但是给人的感觉就是一台阉割了的电脑，似乎我只能消费我买的功能实力的一部分，当然使用 iPad 你也不可能让里面的 A4 CPU 100%的为你服务，但这就是感觉的差别。如果这个类别本身不能明确的独立出来，那么这个类别就很难逃脱 niche 的束缚，WinCE 在很多工业设备上就表现很好，但这不是给大众使用的。

iPad 它不是 Tablet，也不是电脑，也不是放大了的 iPad Touch 或者 iPhone，Steve Jobs 在介绍开始的时候说，只有让它的核心功能体验大大超过其他类型产品，那么它才能独立出来，然后列了一大堆，从浏览网页到电子书阅读。

3，它真正重要

它不是一个 Hobby（至少在现在），它是一个重量级的产品，Apple 把它看得和其他产品一样重要，而不是一次尝试。虽然听起来再正常不过了，但是相比一下其他大厂家的平板电脑，无论他们内部部门是怎样的对待，但是从大众来看，就像是他们扔出一块东西，然后心不在焉的在后面看看“怎么样嘛？”“不错的话，我继续”，或者有的就是玩票似的，只有 Apple 才把它搞的如此重要。

3，Apple 式的追求完美的呈现

发布之前不会有模糊照片泄漏，每一丝都做到完美，因为第一印象，比如我们可以把 iPad 和 HP Slate 刚出的平板电脑放在一起，或许你开始并不对这个 iPad 有好印象比如有失望之类，好多人都会说边框太宽，但是一旦你多看，就觉得这个比例很不错很舒服，这不仅关系到背后的设计考虑，还有重要一点的“表面功夫”，比如产品效果图，我们可以从 Apple 的网页上去体会，比如 iPad 照片上玻璃面高光的修饰，可以同高反光的 MacBook 玻璃面的高光处理作比较，每一个你能想到的细节，角度、示例图片等等都是形成第一印象的重要因素。而[ HP Slate ](http://www.engadget.com/2010/01/06/the-hp-slate/)的宣传效果图片却是灰蒙蒙一片，简单的背景，充满无味之感，甚至一个画面上出现了2个 hp 的logo。

4，向大众诉求

最近看网上对 iPad 的讨论中，经常出现这样的场景，当一个 Geek 有点失望的时候，他父母喜欢上了。如果上来就显示编辑文档或者使用 SketchBookPro 多么炫，那只能卖给设计师了。

5，售价

售价是最大的号召力

……

至于 iPad 会走向怎样大众，我想不仅我们在期待和观察，Apple 应该也在期待和观察，如果靠着 Apple 不妥协的执行力加上号召力能够冲破习惯和生活方式上的束缚将 iPad 带向大众，相信也会给 Tablet 带来不小的变化。


# Nginx

**Nginx** (pronounced "engine X",[\[8\]](https://en.wikipedia.org/wiki/Nginx#cite_note-Sysoev-8) [/ˌɛndʒɪnˈɛks/](https://en.wikipedia.org/wiki/Help:IPA/English) [EN-jin-EKS](https://en.wikipedia.org/wiki/Help:Pronunciation_respelling_key)) (stylized as **NGINX** or **nginx** or **NginX**) is a [web server](https://en.wikipedia.org/wiki/Web_server) which can also be used as a [reverse proxy](https://en.wikipedia.org/wiki/Reverse_proxy), [load balancer](https://en.wikipedia.org/wiki/Load_balancer), mail proxy and [HTTP cache](https://en.wikipedia.org/wiki/HTTP_cache). The software was created by [Igor Sysoev](https://en.wikipedia.org/wiki/Igor_Sysoev) and first publicly released in 2004.[\[9\]](https://en.wikipedia.org/wiki/Nginx#cite_note-Mobily-9) A company of the same name was founded in 2011 to provide support and Nginx Plus paid software.[\[10\]](https://en.wikipedia.org/wiki/Nginx#cite_note-D-10)

Nginx is [free and open-source software](https://en.wikipedia.org/wiki/Free_and_open-source_software), released under the terms of the [2-clause BSD](https://en.wikipedia.org/wiki/2-clause_BSD) license. A large fraction of web servers use NGINX,[\[11\]](https://en.wikipedia.org/wiki/Nginx#cite_note-netcraft2017-11) often as a [load balancer](https://en.wikipedia.org/wiki/Load_balancer).[\[12\]](https://en.wikipedia.org/wiki/Nginx#cite_note-Linode-12)

In March 2019, the Nginx company was acquired by [F5 Networks](https://en.wikipedia.org/wiki/F5_Networks) for $670 million.[\[13\]](https://en.wikipedia.org/wiki/Nginx#cite_note-13)

As of February 2020, [Netcraft](https://en.wikipedia.org/wiki/Netcraft) estimated Nginx served 36.48 percent of all active websites ranked, ranking it first, above [Apache](https://en.wikipedia.org/wiki/Apache_HTTP_Server) at 24.51 percent,[\[14\]](https://en.wikipedia.org/wiki/Nginx#cite_note-14) while according to W3Techs, Apache is ranked first at 40.1 percent and Nginx 2nd at 31.8 percent.[\[15\]](https://en.wikipedia.org/wiki/Nginx#cite_note-15)


# 前言

大部分资料整理来自作者 [chenhanzhun](http://blog.csdn.net/chenhanzhun)

本人出于学习目的, 将资料整理在自己空间. 尊重原创, 转载请注明原作者出处


# Nginx入门

昨天在配置google cdn的时候, 缺乏对Nginx的基本了解

## 1. 基本介绍和配置文件语法

### 1, 介绍

Ngin基于时间的异步IO的并发模型

### 2, 安装

ubuntu 安装nginx:

sudo apt-get install nginx

编译安装: ./configure make sudo make install

其中关于configure是可以按照自己的需求来配置安装的参数的。比如:

```
./configure \
--user=nginx                          \
--group=nginx                         \
--prefix=/etc/nginx                   \
--sbin-path=/usr/sbin/nginx           \
--conf-path=/etc/nginx/nginx.conf     \
--pid-path=/var/run/nginx.pid         \
--lock-path=/var/run/nginx.lock       \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module        \
--with-http_stub_status_module        \
--with-http_ssl_module                \
--with-pcre                           \
--with-file-aio                       \
--with-http_realip_module             \
--without-http_scgi_module            \
--without-http_uwsgi_module           \
--without-http_fastcgi_module
```

### 3, 命令行语法(Command line Syntax)

Start, restart, stop

```
sudo /etc/init.d/nginx restart # or start, stop
```

Or do like this

```
sudo service ngingx restart # or start, stop
```

Reload

```
sudo nginx -s reload
```

### 4, 配置文件语法(Configuration file syntax)

nginx是模块化的系统，整个系统是分成一个个模块的。每个模块负责不同的功能。比如http\_gzip\_static\_module就是负责压缩的，http\_ssl\_module就是负责加密的，如果不用某个模块的话，也可以去掉，可以让整个nginx变得小巧，更适合自己。在上面的configure指令中带了很多参数，就是在这里编译之前可以加入某些模块或去掉某些模块的。

要用的模块已经被编译进nginx了，成为nginx的一部分了，那要怎么用这些模块呢？那就得通过配置文件，这跟传统的linux服务差不多，都是通过配置文件来改变功能。nginx的模块是通过一个叫指令(directive)的东西来用的。整个配置文件都是由指令来控制的。nginx也有自己内置的指令，比如events, http, server, 和 location等，下面会提到的。

如果是ubuntu系统，安装后，配置文件存放在`/etc/nginx/nginx.conf`

```
user www-data;
worker_processes 1;
pid /run/nginx.pid;

events {
  worker_connections 768;
}

http {

  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  keepalive_timeout 65;
  types_hash_max_size 2048;

  include /etc/nginx/mime.types;
  default_type application/octet-stream;

  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log;

  gzip on;
  gzip_disable "msie6";

  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;
}

```

在这个示例文件, 先不管上面3行, 就是由两个block(块)组成的.

```
events{
}

http{
}
```

块和块之前还可以嵌套

```
http{
server{
}
}
```

这个是主配置文件。有时候仅仅一个配置文件是不够的，由其是当配置文件很大时，总不能全部逻辑塞一个文件里，所以配置文件也是需要来管理的。看最后两行`include`，也就是说会自动包含目录`/etc/nginx/conf.d/`的以conf结尾的文件，还有目录`/etc/nginx/sites-enabled/`下的所有文件。

在`/etc/nginx/conf.d/`下有个配置文件叫rails.conf，它的内容大体是这样的。

```
upstream rails365 {
    # Path to Unicorn SOCK file, as defined previously
    server unix:///home/yinsigan/rails365/shared/tmp/sockets/unicorn.sock fail_timeout=0;
}
server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    server_name www.rails365.net;
    root         /home/yinsigan/rails365/current/public;
    keepalive_timeout 70;

  ...

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

  ...
}

server {
  listen 80;
  server_name rails365.net;

  return 301 $scheme://www.rails365.net$request_uri;
}

```

整个配置文件的结构大体是这样子的

```
# 这里是一些配置
...
http {
  # 这里是一些配置
  ...
  # 这部分可能存在于/etc/nginx/conf.d/目录下
  upstream {

  }
  server {
    listen 8080;
    root /data/up1;

    location / {
    }
  }
  server {
    listen 80;
    root /data/up2;

    location / {
    }
  }
  这里是一些配置
  ...
}

mail {
}

```

指令和指令之间是有层级和继承关系的。比如http内的指令会影响到server的。

http那部分除非必要，我们不动它，假如你现在要部署一个web服务，那就在/etc/nginx/conf.d/目录下新增一个文件就好了。

http和events还有mail是同级的。http就是跟web有关的。

server，顾名思义就是一个服务，比如你现在有一个域名，要部署一个网站，那就得创建一个server块。

就假设你有一个域名叫xxx.xxx.xxx，要在浏览器输入这个域名时就能访问，那可能得这样。

```
server {
  listen 80;
  root /home/hijason/xxx;
  server_name xxx.xxx.xxx;
  location / {

  }
}

```

具体的意思是这样的。listen是监听的端口。如果没有特殊指定，一般网站用的都是80端口。

root是网站的源代码静态文件的根目录。一般来说会在root指定的目录下放置网站最新访问的那个html文件，比如index.html等。

server\_name指定的是域名。

&#x20;有了这些，在浏览器下输入`http://xxx.xxx.xxx`就能访问到目录`/home/hijason/xxx`下的index.html文件的内容。但是有时候我们得访问`http://xxx.xxx.xxx/articles`呢？那得用location。像这样:

```
server {
  ...
  server_name xxx.xxx.xxx;
  location /articles {

  }
}

```

除了`http://xxx.xxx.xxx/articles`，还有`http://xxx.xxx.xxx/groups`，`/menus/1`等很多，是不是每个都要创建一个location啊，肯定不可能。我们有动态的方法来处理的。

下面来看一个例子:

```
server {
    listen      80;
    server_name example.org www.example.org;
    root        /data/www;

    location / {
        index   index.html index.php;
    }

    location ~* \.(gif|jpg|png)$ {
        expires 30d;
    }

    location ~ \.php$ {
        fastcgi_pass  localhost:9000;
        fastcgi_param SCRIPT_FILENAME
                      $document_root$fastcgi_script_name;
        include       fastcgi_params;
    }
}

```

&#x20;当用户访问`http://example.org`时就会去读取`/var/root/index.html`，如果找不到就会读取index.php，就会转发到`fastcgi_pass`里面的逻辑。当用户访问`http://example.org/about.html`就会去读取`/var/root/about.html`文件，同样道理，当用户访问`http://example.org/about.gif`就会读取`/var/root/about.gif`文件，并会在30天后过期，也就是缓存30天。

## 2, 反向代理

**1. 什么叫反向代理服务器?**

要说反向代理服务器，先来说一般的代理服务器。代理就是受委托去做一些事。假如用户A委托B去做一些事，做完之后B告诉A结果。在代理服务器中也是一样的道理，用户A通过代理服务器B访问网站C(`www.example.com`)，请求先到代理服务器B，B再转发请求到网站C，代理服务器B是真正访问网站C的，访问之后再把网站C的应答结果发给用户A。这样给用户A的感觉是C直接提供服务的一样，因为看不到B的整个处理过程。代理服务器是一个中间者，是充当转发请求的角色。这种代理也叫`正向代理`。

使用正向代理是要在客户端进行设置，比如浏览器设置代理服务器的域名或IP，还有端口等。

正向代理的作用有很多，例如，能访问本无法访问的，加速，cache，隐藏访问者的行踪等，具体的不再详述了。

`反向代理`(reverse proxy)正好与正向代理相反，对于客户端而言代理服务器就像是原始服务器，并且客户端不需要进行任何特别的设置。假如用户A访问网站B，这个时候网站B充当了web服务器，也充当了反向代理服务器，它充当的代理服务器的角色是这样，假如用户A要得到网站C的内容，而用户A又不能直接访问到(例如网络原因)，而服务器B可以访问到网站C，那服务器可以得到网站C的内容再存起来发给用户A，这整个过程用户A是直接和代理服务器B交互的，用户A不知道网站C的存在，这个web服务器B就是一台反向代理服务器，这个网站C就是上游服务器(upstream servers)。

反向代理的作用是，隐藏和保护原始服务器，就像刚才的例子，用户A根本不知道服务器C的存在，但服务器C确实提供了服务。还有，就是负载均衡。当反向代理服务器不止一个的时候，就可以做成一个集群，当用户A访问网站B时，用户A又需要网站C的内容，而网站C有好多服务器，这些服务器就形成了集群，而网站B在请求网站C，就可以有多种方式(轮循，hash等)，把请求均匀地分配给集群中的服务器，这个就是负载均衡。

![](https://box.kancloud.cn/b9b93fbf080b4b68a9d876f5f0eafb8d_750x498.jpg)

**2. 示例**

我们先来看最一个最简单的例子。

**2.1 最简单的反向代理**

nginx的反向代理是依赖于[ngx\_http\_proxy\_module](http://nginx.org/en/docs/http/ngx_http_proxy_module.html)这个module来实现的。

反向代理服务器能代理的请求的协议包括http(s)，FastCGI，SCGI，uwsgi，memcached等。我们这里主要集中在http(s)协议。

我有一个网站，用的是https协议来访问的。用这个协议访问的网站在chrome等浏览器的地址栏是可以看到一个绿色的代表安全的标志的。你请求的所有资源都要是https的，它才会出现。假如你请求了一张外部的图片，而这张图片是以http协议请求的，那这个时候那个安全的标志就不存在的。

所以我要把这个https协议的图片请求反向代理到http协议的真实图片上。https协议的这张图片是不存在，而它有一个地址实际指向的内容是http协议中的图片。

```
# https
server {
  server_name www.example.com;
  listen       443;
  location /newchart/hollow/small/nsh000001.gif {
    proxy_pass http://image.sinajs.cn/newchart/hollow/small/nsh000001.gif;
  }

  location /newchart/hollow/small/nsz399001.gif {
    proxy_pass http://image.sinajs.cn/newchart/hollow/small/nsz399001.gif;
  }

```

&#x20;假如我的网站是`www.example.com`这样就能使用`https://www.example.com/newchart/hollow/small/nsh000001.gif`，它指向是`http://image.sinajs.cn/newchart/hollow/small/nsh000001.gif`

## 3, gzip 压缩提升网站性能

**1. 介绍**

网站开发到一定程度，可能css文件或js文件会越来越大，因为有可能加载了很多的插件。这个时候如果能把这些文件压缩一下就好了。

nginx就支持这种功能，它可以把静态文件压缩好之后再传给浏览器。浏览器也要支持这种功能，只要浏览器的请求头带上`Accept-Encoding: gzip`就可以了。假如有一个文件叫application.css，那nginx就会使用gzip模块把这个文件压缩，然后传给浏览器，浏览器再解压缩成原来的css文件，就能读取了。

所有的这一切都需要nginx已经有编译过`ngx_http_gzip_module`这个模块。这个模块能对需要的静态文件压缩大小，比如图片，css，javascript，html等。压缩是需要消耗CPU，但能提高传缩的速度，因为传缩量少了许多，从而节省带宽。

**2. 使用**

使用之前先来查看一下是否编译了`ngx_http_gzip_module`这个模块。

```
sudo nginx -V
```

配置nginx的gzip

```
http {
        gzip on;
        gzip_disable "msie6";

        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
        server {
                location ~ ^/assets/ {
                   gzip_static on;
                   expires max;
                   add_header Cache-Control public;
                }        
        }
}

```

上面最重要的是http中`gzip on;`还有`gzip_types`这两行，是一定要写的。其他的`gzip_vary`等都是一些配置，可以不写。

然后在需要压缩的静态资源那里加上下面三行:

```
gzip_static on;
expires max;
add_header Cache-Control public;
```

## 4, 作为负载均衡器

nginx是以高并发和内存占用少出名，它是一个http服务器，也是反向代理服务器，它更是负载均衡器。作为负载均衡器，在版本1.9之前，它只能作为http的负载均衡，也就是在网络模型的第七层发挥作用，1.9之后，它可以对tcp进行负载均衡，比如redis，mysql等。

nginx的负载均衡是出了名的简单，它跟反向代理的功能是紧密结合在一起的.


# Nginx 配置文件

## 概述

Nginx 是使用一个 master 进程来管理多个 worker 进程提供服务。master 负责管理 worker 进程，而 worker 进程则提供真正的客户服务，worker 进程的数量一般跟服务器上 CPU 的核心数相同，worker 之间通过一些进程间通信机制实现负载均衡等功能。Nginx 进程之间的关系可由下图表示：

Nginx 服务启动时会读入配置文件，后续的行为则按照配置文件中的指令进行。Nginx 的配置文件是纯文本文件，默认安装 Nginx 后，其配置文件均在 /usr/local/nginx/conf/ 目录下。其中，nginx.conf  为主配置文件。配置文件中以 # 开始的行，或者是前面有若干空格或者 TAB 键，然后再跟 # 的行，都被认为是注释。这里只是了解主配置文件的结构。

Nginx 配置文件是以 block（块）形式组织，每个 block 都是以一个块名字和一对大括号 “{}” 表示组成，block 分为几个层级，整个配置文件为 main 层级，即最大的层级；在 main 层级下可以有 event、http 、mail 等层级，而 http 中又会有 server block，server block中可以包含 location block。即块之间是可以嵌套的，内层块继承外层块。最基本的配置项语法格式是“配置项名  配置项值1  配置项值2  配置项值3  ... ”；

每个层级可以有自己的指令（Directive），例如 worker\_processes 是一个main层级指令，它指定 Nginx 服务的 Worker 进程数量。有的指令只能在一个层级中配置，如worker\_processes 只能存在于 main 中，而有的指令可以存在于多个层级，在这种情况下，子 block 会继承 父 block 的配置，同时如果子block配置了与父block不同的指令，则会覆盖掉父 block 的配置。指令的格式是“指令名 参数1 参数2 … 参数N;”，注意参数间可用任意数量空格分隔，最后要加分号。

下图是 Nginx 配置文件通常结构图示。

## Nginx 服务的基本配置项

Nginx 服务运行时，需要加载几个核心模块和一个事件模块，这些模块运行时所支持的配置项称为基本配置；基本配置项大概可分为以下四类：

* 用于调试、定位的配置项；
* 正常运行的必备配置项；
* 优化性能的配置项；
* 事件类配置项；

各个配置项的具体实现如下：

```




#以守护进程 Nginx 运行方式
#语法：daemon off | on;
#默认：daemon on;

#master / worker 工作方式
#语法：master_process on | off;
#默认：master_process on;

#error 日志设置
#                   路径        错误级别
#语法：error_log    /path/file  level;
#默认：error_log    logs/error.log  error;
#其中/path/file是一个具体文件；level是日志的输出级别，其取值如下：
#   debug info notice warn error crit alert emerg
#从左至右级别增大；若设定一个级别后，则在输出的日志文件中只输出级别大于或等于已设定的级别；

#处理特殊调试点
#语法：debug_points [stop | abort]
#这个设置是来跟踪调试 Nginx 的；

#仅对指定的客户端输出 debug 级别的日志
#语法：debug_connection [IP | DIR]

#限制 coredump 核心转储文件的大小
#语法：worker_rlimit_core   size;

#指定 coredump 文件的生成目录
#语法：working_directory    path;



#定义环境变量
#语法：env  VAR | VAR=VALUE;
#VAR 是变量名，VALUE 是目录；

#嵌入其他配置文件
#语法：include  /path/file;
#include 配置项可以将其他配置文件嵌入到 Nginx 的 nginx.conf 文件中；

#pid 的文件路径
#语法：pid  path/file;
#默认：pid  logs/nginx.pid;
#保存 master 进程 ID 的 pid 文件存放路径；

#Nginx worker 运行的用户及用户组
#语法：user username    [groupname];
#默认：user nobody nobody;

#指定 Nginx worker进程可打开最大句柄个数
#语法：worker_rlimit_nofile limit;

#限制信号队列
#语法：worker_rlimit_sigpending limit;
#设置每个用户发给 Nginx 的信号队列大小，超出则丢弃；



#Nginx worker 进程的个数
#语法：worker_process   number;
#默认：worker_process   1;

#绑定 Nginx worker 进程到指定的 CPU 内核
#语法：worker_cpu_affinity  cpumask [cpumask...]

#SSL 硬件加速
#语法：ssl_engine   device;

#系统调用 gettimeofday 的执行频率
#语法：timer_resolution t;

#Nginx worker 进程优先级设置
#语法：worker_priority  nice;
#默认：worker_priority  0;


#一般有以下几种配置：
#1、是否打开accept锁
#   语法格式：accept_mutex [on | off];

#2、lock文件的路径
#   语法格式：lock_file  path/file;

#3、使用accept锁后到真正建立连接之间的延迟时间
#   语法格式：accept_mutex_delay Nms;

#4、批量建立新连接
#   语法格式：multi_accept [on | off];
#
#5、选择事件模型
#   语法格式：use [kqueue | rtisg | epoll | /dev/poll | select | poll | eventport];

#6、每个worker进行的最大连接数
#   语法格式：worker_connections number;

```

HTTP 核心模块的配置

具体可以参看《[Nginx 中 HTTP 核心模块配置](http://nginx.org/en/docs/http/ngx_http_core_module.html)》

```




#监听端口
#语法：listen   address:port[default | default_server | [backlong=num | rcvbuf=size | sndbuf=size | 
# accept_filter | deferred | bind | ipv6only=[on | off] | ssl]];
# 默认：listen:80;
# 说明：
#   default或default_server：将所在的server块作为web服务的默认server块；当请求无法匹配配置文件中的所有主机名时，就会选择默认的虚拟主机；
#   backlog=num：表示 TCP 中backlog队列存放TCP新连接请求的大小，默认是-1，表示不予设置；
#   rcvbuf=size：设置监听句柄SO_RCVBUF的参数；
#   sndbuf=size：设置监听句柄SO_SNDBUF的参数；
#   accept_filter：设置accept过滤器，只对FreeBSD操作系统有用；
#   deferred：设置该参数后，若用户发起TCP连接请求，并且完成TCP三次握手，但是若用户没有发送数据，则不会唤醒worker进程，直到发送数据；
#   bind：绑定当前端口 / 地址对，只有同时对一个端口监听多个地址时才会生效；
#   ssl：在当前端口建立的连接必须基于ssl协议；
#配置块范围：server

#主机名称
#语法：server_name  name[...];
#默认：server_name  "";
#配置块范围：server

#server name 是使用散列表存储的
#每个散列桶占用内存大小
#语法：server_names_hash_bucket_size    size;
#默认：server_names_hash_bucker_size    32|64|128;
#
#散列表最大bucket数量
#语法：server_names_hash_max_size   size;
#默认：server_names_hash_max_size   512;
#默认：server_name_in_redirect  on;
#配置块范围：server、http、location

#处理重定向主机名
#语法：server_name_in_redirect  on | off;
#默认：server_name_in_redirect  on;
#配置块范围：server、http、location

#location语法：location[= | ~ | ~* | ^~ | @] /uri/ {}  
#配置块范围：server
        #location尝试根据用户请求中的URI来匹配 /uri表达式，若匹配成功，则执行{}里面的配置来处理用户请求  
#以下是location的一般配置项  
#1、以root方式设置资源路径  
#   语法格式：root path;  
#2、以alias方式设置资源路径  
#   语法格式：alias path;  
#3、访问首页  
#   语法格式：index file...;  
#4、根据HTTP返回码重定向页面  
#   语法格式：error_page code [code...] [= | =answer-code] uri | @named_location;  
#5、是否允许递归使用error_page  
#   语法格式：recursive_error_pages [on | off];  
#6、try_files  
#   语法格式：try_files path1 [path2] uri;  



#root方式设置资源路径
#语法：root path;
#默认：root html;
#配置块范围：server、http、location、if

#以alias方式设置资源路径
#语法：alias path;
#配置块范围：location

#访问主页
#语法：index    file...;
#默认：index    index.html;
#配置块范围：http、server、location

#根据HTTP返回码重定向页面  
#   语法：error_page code [code...] [= | =answer-code] uri | @named_location;  
#配置块范围：server、http、location、if

#是否允许递归使用error_page  
#   语法：recursive_error_pages [on | off];  
#配置块范围：http、server、location

#try_files  
#   语法：try_files path1 [path2] uri;  
#配置块范围：server、location



# HTTP 包体只存储在磁盘文件中
# 语法：client_body_in_file_only    on | clean | off;
# 默认：client_body_in_file_only  off;
# 配置块范围：http、server、location

# HTTP 包体尽量写入到一个内存buffer中
# 语法：client_body_single_buffer   on | off;
# 默认：client_body_single_buffer   off;
# 配置块范围：http、server、location

# 存储 HTTP 头部的内存buffer大小
# 语法：client_header_buffer_size   size;
# 默认：client_header_buffer_size   1k;
# 配置块范围：http、server

# 存储超大 HTTP 头部的内存buffer大小
# 语法：large_client_header_buffer_size   number    size;
# 默认：large_client_header_buffer_size   4   8k;
# 配置块范围：http、server

# 存储 HTTP 包体的内存buffer大小
# 语法：client_body_buffer_size   size;
# 默认：client_body_buffer_size   8k/16k;
# 配置块范围：http、server、location

# HTTP 包体的临时存放目录
# 语法：client_body_temp_path   dir-path    [level1 [level2 [level3]]];
# 默认：client_body_temp_path   client_body_temp;
# 配置块范围：http、server、location

# 存储 TCP 成功建立连接的内存池大小
# 语法：connection_pool_size    size;
# 默认：connection_pool_size    256;
# 配置块范围：http、server

# 存储 TCP 请求连接的内存池大小
# 语法：request_pool_size    size;
# 默认：request_pool_size    4k;
# 配置块范围：http、server



# 读取 HTTP 头部的超时时间
# 语法：client_header_timeout   time;
# 默认：client_header_timeout   60;
# 配置块范围：http、server、location

# 读取 HTTP 包体的超时时间
# 语法：client_body_timeout   time;
# 默认：client_body_timeout   60;
# 配置块范围：http、server、location

# 发送响应的超时时间
# 语法：send_timeout   time;
# 默认：send_timeout   60;
# 配置块范围：http、server、location

# TCP 连接的超时重置
# 语法：reset_timeout_connection   on | off;
# 默认：reset_timeout_connection   off;
# 配置块范围：http、server、location

# 控制关闭 TCP 连接的方式
# 语法：lingering_close off | on | always;
# 默认：lingering_close on;
# 配置块范围：http、server、location
# always 表示关闭连接之前无条件处理连接上所有用户数据；
# off 表示不处理；on 一般会处理；

# lingering_time
# 语法：lingering_time   time;
# 默认：lingering_time   30s;
# 配置块范围：http、server、location

# lingering_timeout
# 语法：lingering_timeout   time;
# 默认：lingering_time   5s;
# 配置块范围：http、server、location

# 对某些浏览器禁止keepalive功能
# 语法：keepalive_disable   [mise6 | safari | none]...
# 默认：keepalive_disable   mise6  safari;
# 配置块范围：http、server、location

# keepalive超时时间
# 语法：keepalive_timeout   time;
# 默认：keepalive_timeout   75;
# 配置块范围：http、server、location

# keepalive长连接上允许最大请求数
# 语法：keepalive_requests  n;
# 默认：keepalive_requests  100;
# 配置块范围：http、server、location

# tcp_nodelay
# 语法：tcp_nodelay on | off;
# 默认：tcp_nodelay on;
# 配置块范围：http、server、location

# tcp_nopush
# 语法：tcp_nopush on | off;
# 默认：tcp_nopush off;
# 配置块范围：http、server、location



# MIME type 与文件扩展的映射
# 语法：type{...}
# 配置块范围：http、server、location
# 多个扩展名可映射到同一个 MIME type

# 默认 MIME type
# 语法：default_type    MIME-type;
# 默认：default_type    text/plain;
# 配置块范围：http、server、location

# type_hash_bucket_size
# 语法：type_hash_bucket_size   size;
# 默认：type_hash_bucket_size   32 | 64 | 128;
# 配置块范围：http、server、location

# type_hash_max_size
# 语法：type_hash_max_size   size;
# 默认：type_hash_max_size   1024;
# 配置块范围：http、server、location



# 按 HTTP 方法名限制用户请求
# 语法：limit_except    method...{...}
# 配置块：location
# method 的取值如下：
# GET、HEAD、POST、PUT、DELETE、MKCOL、COPY、MOVE、OPTIONS、
# PROPFIND、PROPPATCH、LOCK、UNLOCK、PATCH

# HTTP 请求包体的最大值
# 语法：client_max_body_size    size;
# 默认：client_max_body_size    1m;
# 配置块范围：http、server、location

# 对请求限制速度
# 语法：limit_rate  speed;
# 默认：limit_rate  0;
# 配置块范围：http、server、location、if
# 0 表示不限速

# limit_rate_after规定时间后限速
# 语法：limit_rate_after  time;
# 默认：limit_rate_after    1m;
# 配置块范围：http、server、location、if



# sendfile系统调用
# 语法：sendfile    on | off;
# 默认：sendfile    off;
# 配置块：http、server、location

# AIO 系统调用
# 语法：aio on | off;
# 默认：aio off;
# 配置块：http、server、location

# directio
# 语法：directio    size | off;
# 默认：directio    off;
# 配置块：http、server、location

# directio_alignment
# 语法：directio_alignment    size;
# 默认：directio_alignment    512;
# 配置块：http、server、location

# 打开文件缓存
# 语法：open_file_cache max=N [inactive=time] | off;
# 默认：open_file_cache off;
# 配置块：http、server、location

# 是否缓存打开文件的错误信息
# 语法：open_file_cache_errors  on | off;
# 默认：open_file_cache_errors  off;
# 配置块：http、server、location

# 不被淘汰的最小访问次数
# 语法：open_file_cache_min_user  number;
# 默认：open_file_cache_min_user  1;
# 配置块：http、server、location

# 检验缓存中元素有效性的频率
# 语法：open_file_cache_valid  time;
# 默认：open_file_cache_valid  60s;
# 配置块：http、server、location



# 忽略不合法的 HTTP 头部
# 语法：ignore_invalid_headers  on | off;
# 默认：ignore_invalid_headers  on;
# 配置块：http、server

# HTTP 头部是否允许下划线
# 语法：underscores_in_headers  on | off;
# 默认：underscores_in_headers  off;
# 配置块：http、server

# If_Modified_Since 头部的处理策略
# 语法：if_modified_since   [off | exact | before]
# 默认：if_modified_since   exact;
# 配置块：http、server、location

# 文件未找到时是否记录到error日志
# 语法：log_not_found   on | off;
# 默认：log_not_found   on;
# 配置块：http、server、location

# 是否合并相邻的“/”
# 语法：merge_slashes   on | off;
# 默认：merge_slashes   on;
# 配置块：http、server、location

# DNS解析地址
# 语法：resolver    address...;
# 配置块：http、server、location

# DNS解析的超时时间
# 语法：resolver_timeout    time;
# 默认：resolver_timeout    30s;
# 配置块：http、server、location

# 返回错误页面是否在server中注明Nginx版本
# 语法：server_tokens   on | off;
# 默认：server_tokens   on;
# 配置块：http、server、location

```

以下是在 Ubuntu 12.04 系统成功安装 Nginx 之后的主配置文件：

```
#Nginx服务器正常启动时会读取该配置文件，以下的值都是默认的，若需要可自行修改；
#以下是配置选项

#Nginx worker进程运行的用户以及用户组
#语法格式：user  username[groupname]
#user  nobody;

#Nginx worker 进程个数
worker_processes  1;

#error 日志设置
#语法格式：error /path/file level
#其中/path/file是一个具体文件；level是日志的输出级别，其取值如下：
#debug info notice warn error crit alert emerg,从左至右级别增大；
#若设定一个级别后，则在输出的日志文件中只输出级别大于或等于已设定的级别；
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#保存master进程ID的pid文件存放路径
#语法格式：pid path/file
#pid        logs/nginx.pid;

#事件类配置项
#一般有以下几种配置：
#1、是否打开accept锁
#   语法格式：accept_mutex [on | off];
#2、lock文件的路径
#   语法格式：lock_file  path/file;
#3、使用accept锁后到真正建立连接之间的延迟时间
#   语法格式：accept_mutex_delay Nms;
#4、批量建立新连接
#   语法格式：multi_accept [on | off];
#5、选择事件模型
#   语法格式：use [kqueue | rtisg | epoll | /dev/poll | select | poll | eventport];
#6、每个worker进行的最大连接数
#   语法格式：worker_connections number;
events {
    worker_connections  1024;
}

#以下是http模块
http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

#server块
#   每个server块就是一个虚拟主机，按照server_name来区分
    server {
#监听端口
        listen       80;
#主机名称
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
#location语法：location[= | ~ | ~* | ^~ | @] /uri/ {}
        #location尝试根据用户请求中的URI来匹配 /uri表达式，若匹配成功，则执行{}里面的配置来处理用户请求
#以下是location的一般配置项
#1、以root方式设置资源路径
#   语法格式：root path;
#2、以alias方式设置资源路径
#   语法格式：alias path;
#3、访问首页
#   语法格式：index file...;
#4、根据HTTP返回码重定向页面
#   语法格式：error_page code [code...] [= | =answer-code] uri | @named_location;
#5、是否允许递归使用error_page
#   语法格式：recursive_error_pages [on | off];
#6、try_files
#   语法格式：try_files path1 [path2] uri;
        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

```

参考资料：

《深入理解Nginx》

《[Nginx模块开发入门](http://kb.cnblogs.com/page/98352/#section1-2)》

《[Nginx开发从入门到精通](http://tengine.taobao.org/book/index.html)》


# Nginx 内存池管理

## 概述

Nginx 使用内存池对内存进行管理，内存管理的实现类似于前面文章介绍的《[STL源码剖析——空间配置器](http://blog.csdn.net/chenhanzhun/article/details/39153797#t7)》，把内存分配归结为**大内存分配**和**小内存分配**。若申请的内存大小比同页的内存池最大值 max 还大，则是大内存分配，否则为小内存分配。

1. 大块内存的分配请求不会直接在内存池上分配内存来满足请求，而是直接向系统申请一块内存（就像直接使用 malloc 分配内存一样），然后将这块内存挂到内存池头部的 large 字段下。
2. 小块内存分配，则是从已有的内存池数据区中分配出一部分内存。

Nginx 内存管理相关文件：

1. src/os/unix/ngx\_alloc.h/.c

* 内存相关的操作，封装了最基本的内存分配函数。
* 如 free / malloc / memalign / posix\_memalign，分别被封装为 ngx\_free，ngx\_alloc / ngx\_calloc, ngx\_memalign
* ngx\_alloc：封装malloc分配内存
* ngx\_calloc：封装malloc分配内存，并初始化空间内容为0
* ngx\_memalign：返回基于一个指定 alignment 的大小为 size 的内存空间，且其地址为 alignment 的整数倍，alignment 为2的幂。

1. src/core/ngx\_palloc.h/.c

* 封装创建/销毁内存池，从内存池分配空间等函数。

Nginx 内存分配总流图如下：**其中 size 是用户请求分配内存的大小，pool是现有内存池。**

## 内存池基本结构

Nginx 内存池基本结构定义如下：

```


typedef struct {
    u_char               *last; 
    u_char               *end;  
    ngx_pool_t           *next; 
    ngx_uint_t            failed;
} ngx_pool_data_t;  

struct ngx_pool_s {
    ngx_pool_data_t       d;    
    size_t                max;  
    ngx_pool_t           *current;
    ngx_chain_t          *chain;
    ngx_pool_large_t     *large;
    ngx_pool_cleanup_t   *cleanup;
    ngx_log_t            *log;
};

typedef struct ngx_pool_s   ngx_pool_t;
typedef struct ngx_chain_s  ngx_chain_t;

```

大块内存分配的数据结构如下：

```
typedef struct ngx_pool_large_s ngx_pool_large_t;  

struct ngx_pool_large_s{  
          ngx_pool_large_t  *next;    
          void    *alloc;             
};  
```

其他数据结构如下：

```
typedef void (*ngx_pool_cleanup_pt)(void *data);    

typedef struct ngx_pool_cleanup_s ngx_pool_cleanup_t;  
 
struct ngx_pool_cleanup_s{  
    ngx_pool_cleanup_pt handler;  
    void    *data;              
    ngx_pool_cleanup_t *next;   
};  
  
 
typedef struct {  
    ngx_fd_t   fd;  
    u_char    *name;  
    ngx_log_t *log;  
} ngx_pool_cleanup_file_t;  
```

内存池基本机构之间的关系如下图所示：

**ngx\_pool\_t 的逻辑结构**

上面数据结构之间逻辑结构图如下：**该图是采用 UML 画的，第一行黑色粗体表示对应数据结构，第二行是结构内的成员，冒号左边是变量，冒号右边是变量的类型；**

## 内存池的操作

## **创建内存池**

```

ngx_pool_t *
ngx_create_pool(size_t size, ngx_log_t *log)
{
    ngx_pool_t  *p; 

    
    
    p = ngx_memalign(NGX_POOL_ALIGNMENT, size, log);
    if (p == NULL) {
        return NULL;
    }

    

    p->d.last = (u_char *) p + sizeof(ngx_pool_t);
    p->d.end = (u_char *) p + size;
    p->d.next = NULL;
    p->d.failed = 0;

    size = size - sizeof(ngx_pool_t);   
    
    p->max = (size < NGX_MAX_ALLOC_FROM_POOL) ? size : NGX_MAX_ALLOC_FROM_POOL;

    p->current = p; 
    p->chain = NULL;
    p->large = NULL;
    p->cleanup = NULL;
    p->log = log;

    return p;
}

```

其中内存分配函数 ngx\_memalign 定义如下：

```
void *  
ngx_memalign(size_t alignment, size_t size, ngx_log_t *log)  
{  
    void  *p;  
    int    err;  
      
    err = posix_memalign(&p, alignment, size);  
    
      
    if (err) {  
        ngx_log_error(NGX_LOG_EMERG, log, err,  
            "posix_memalign(%uz, %uz) failed", alignment, size);  
        p = NULL;  
    }  
      
    ngx_log_debug3(NGX_LOG_DEBUG_ALLOC, log, 0,  
        "posix_memalign: %p:%uz @%uz", p, size, alignment);  
      
    return p;  
}  

#define NGX_POOL_ALIGNMENT       16  
```

## 销毁内存池

销毁内存池由  void ngx\_destroy\_pool(ngx\_pool\_t \*pool) 函数完成。该函数将遍历内存池链表，释放所有内存，如果注册了clenup (也是一个链表结构)，亦将遍历该 cleanup 链表结构依次调用 clenup 的 handler 清理。同时，还将遍历 large 链表，释放大块内存。

```


void
ngx_destroy_pool(ngx_pool_t *pool)
{
    ngx_pool_t          *p, *n;
    ngx_pool_large_t    *l;
    ngx_pool_cleanup_t  *c;

    
    for (c = pool->cleanup; c; c = c->next) {
        if (c->handler) {
            ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0,
                           "run cleanup: %p", c);
            c->handler(c->data);
        }
    }

    
    for (l = pool->large; l; l = l->next) {

        ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0, "free: %p", l->alloc);

        if (l->alloc) {
            ngx_free(l->alloc); 
        }
    }

    
#if (NGX_DEBUG)

    

    for (p = pool, n = pool->d.next; ; p = n, n = n->d.next) {
        ngx_log_debug2(NGX_LOG_DEBUG_ALLOC, pool->log, 0,
                       "free: %p, unused: %uz", p, p->d.end - p->d.last);

        if (n == NULL) {
            break;
        }
    }

#endif

    
    for (p = pool, n = pool->d.next; ; p = n, n = n->d.next) {
        ngx_free(p);

        if (n == NULL) {
            break;
        }
    }
}

```

## 重置内存池

重置内存池由  void ngx\_reset\_pool(ngx\_pool\_t \*pool) 函数完成。该函数将释放所有 large 内存，并且将 d->last 指针重新指向 ngx\_pool\_t 结构之后数据区的开始位置，使内存池恢复到刚创建时的位置。由于内存池刚被创建初始化时是不包含大块内存的，所以必须释放大块内存。

```

void
ngx_reset_pool(ngx_pool_t *pool)
{
    ngx_pool_t        *p;
    ngx_pool_large_t  *l;

    
    for (l = pool->large; l; l = l->next) {
        if (l->alloc) {
            ngx_free(l->alloc);
        }
    }

    for (p = pool; p; p = p->d.next) {
        p->d.last = (u_char *) p + sizeof(ngx_pool_t);
        p->d.failed = 0;
    }

    pool->current = pool;
    pool->chain = NULL;
    pool->large = NULL;
}

```

## 内存分配

## 小块内存分配

小块内存分配，即请求分配空间 size 小于内存池最大内存值 max。小内存分配的接口函数如下所示：

```
void *ngx_palloc(ngx_pool_t *pool, size_t size);
void *ngx_pnalloc(ngx_pool_t *pool, size_t size);
void *ngx_pcalloc(ngx_pool_t *pool, size_t size);
void *ngx_pmemalign(ngx_pool_t *pool, size_t size, size_t alignment);
```

ngx\_palloc 和 ngx\_pnalloc 都是从内存池里分配 size 大小内存。他们的不同之处在于，palloc 取得的内存是对齐的，pnalloc 则不考虑内存对齐问题。ngx\_pcalloc 是直接调用 palloc 分配内存，然后进行一次 0 初始化操作。ngx\_pmemalign 将在分配 size 大小的内存并按 alignment 对齐，然后挂到 large 字段下，当做大块内存处理。

ngx\_palloc的过程一般为，首先判断待分配的内存是否大于 pool->max，如果大于则使用 ngx\_palloc\_large 在 large 链表里分配一段内存并返回， 如果小于测尝试从链表的 pool->current 开始遍历链表，尝试找出一个可以分配的内存，当链表里的任何一个节点都无法分配内存的时候，就调用 ngx\_palloc\_block 生成链表里一个新的节点， 并在新的节点里分配内存并返回， 同时， 还会将pool->current 指针指向新的位置（从链表里面pool->d.failed小于等于4的节点里找出） 。

```


void *
ngx_palloc(ngx_pool_t *pool, size_t size)
{
    u_char      *m;
    ngx_pool_t  *p;

    
    if (size <= pool->max) {

        p = pool->current;

        do {
            
            m = ngx_align_ptr(p->d.last, NGX_ALIGNMENT);

            
            if ((size_t) (p->d.end - m) >= size) {
                p->d.last = m + size;   

                return m;
            }

            
            p = p->d.next;

        } while (p);

        
        return ngx_palloc_block(pool, size);
    }

    
    return ngx_palloc_large(pool, size);
}

static void *
ngx_palloc_block(ngx_pool_t *pool, size_t size)
{
    u_char      *m;
    size_t       psize;
    ngx_pool_t  *p, *new, *current;

    
    psize = (size_t) (pool->d.end - (u_char *) pool);

    
    m = ngx_memalign(NGX_POOL_ALIGNMENT, psize, pool->log);
    if (m == NULL) {
        return NULL;
    }
    
    new = (ngx_pool_t *) m;
    new->d.end = m + psize;
    new->d.next = NULL;
    new->d.failed = 0;
    
    
    m += sizeof(ngx_pool_data_t);
    
    m = ngx_align_ptr(m, NGX_ALIGNMENT);
    new->d.last = m + size;

    current = pool->current;
    for (p = current; p->d.next; p = p->d.next) {
        if (p->d.failed++ > 4) {
            
            current = p->d.next;
        }
    }

    
    p->d.next = new;

    
    pool->current = current ? current : new;

    return m;
}

```

```

void *
ngx_pcalloc(ngx_pool_t *pool, size_t size)
{
    void *p;

    p = ngx_palloc(pool, size);
    if (p) {
        ngx_memzero(p, size);
    }

    return p;
}


void *
ngx_pmemalign(ngx_pool_t *pool, size_t size, size_t alignment)
{
    void              *p;
    ngx_pool_large_t  *large;

    p = ngx_memalign(alignment, size, pool->log);
    if (p == NULL) {
        return NULL;
    }

    large = ngx_palloc(pool, sizeof(ngx_pool_large_t));
    if (large == NULL) {
        ngx_free(p);
        return NULL;
    }

    large->alloc = p;
    large->next = pool->large;
    pool->large = large;

    return p;
}

```

小内存分配之后如下图所示：

上图是由3个小内存池组成的内存池模型，由于第一个内存池上剩余的内存不够分配了，于是就创建了第二个新的内存池，第三个内存池是由于前面两个内存池的剩余部分都不够分配，所以创建了第三个内存池来满足用户的需求。由图可见：所有的小内存池是由一个单向链表维护在一起的。这里还有两个字段需要关注，failed和current字段。failed表示的是当前这个内存池的剩余可用内存不能满足用户分配请求的次数，即是说：一个分配请求到来后，在这个内存池上分配不到想要的内存，那么就failed就会增加1；这个分配请求将会递交给下一个内存池去处理，如果下一个内存池也不能满足，那么它的failed也会加1，然后将请求继续往下传递，直到满足请求为止（如果没有现成的内存池来满足，会再创建一个新的内存池）。current字段会随着failed的增加而发生改变，如果current指向的内存池的failed达到了4的话，current就指向下一个内存池了。

## 大块内存分配

```

static void *
ngx_palloc_large(ngx_pool_t *pool, size_t size)
{
    void              *p;
    ngx_uint_t         n;
    ngx_pool_large_t  *large;

    
    p = ngx_alloc(size, pool->log);
    if (p == NULL) {
        return NULL;
    }

    n = 0;

    
    for (large = pool->large; large; large = large->next) {
        if (large->alloc == NULL) {
            large->alloc = p;
            return p;
        }

        if (n++ > 3) {
            break;
        }
    }

    
    large = ngx_palloc(pool, sizeof(ngx_pool_large_t));
    if (large == NULL) {
        ngx_free(p);
        return NULL;
    }

    large->alloc = p;
    large->next = pool->large;
    pool->large = large;

    return p;
}

void *
ngx_alloc(size_t size, ngx_log_t *log)
{
    void  *p;

    p = malloc(size);

    if (p == NULL) {
        ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
            "malloc() %uz bytes failed", size);
    }

    ngx_log_debug2(NGX_LOG_DEBUG_ALLOC, log, 0, "malloc: %p:%uz", p, size);
    return p;
}


ngx_int_t
ngx_pfree(ngx_pool_t *pool, void *p)
{
    ngx_pool_large_t  *l;

    for (l = pool->large; l; l = l->next) {
        if (p == l->alloc) {
            ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0,
                           "free: %p", l->alloc);
            ngx_free(l->alloc);
            l->alloc = NULL;

            return NGX_OK;
        }
    }

    return NGX_DECLINED;
}

```

大块内存申请之后如下所示：

## cleanup 资源

```

ngx_pool_cleanup_t * ngx_pool_cleanup_add(ngx_pool_t *p, size_t size);


 void ngx_pool_run_cleanup_file(ngx_pool_t *p, ngx_fd_t fd);


 void ngx_pool_cleanup_file(void *data);


 void ngx_pool_delete_file(void *data);

 
ngx_pool_cleanup_t *
ngx_pool_cleanup_add(ngx_pool_t *p, size_t size)
{
    ngx_pool_cleanup_t  *c;

    c = ngx_palloc(p, sizeof(ngx_pool_cleanup_t));
    if (c == NULL) {
        return NULL;
    }

    if (size) {
        c->data = ngx_palloc(p, size);
        if (c->data == NULL) {
            return NULL;
        }

    } else {
        c->data = NULL;
    }

    c->handler = NULL;
    c->next = p->cleanup;

    p->cleanup = c;

    ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, p->log, 0, "add cleanup: %p", c);

    return c;
}


void
ngx_pool_run_cleanup_file(ngx_pool_t *p, ngx_fd_t fd)
{
    ngx_pool_cleanup_t       *c;
    ngx_pool_cleanup_file_t  *cf;

    
    for (c = p->cleanup; c; c = c->next) {
        if (c->handler == ngx_pool_cleanup_file) {

            cf = c->data;

            if (cf->fd == fd) {
                c->handler(cf);
                c->handler = NULL;
                return;
            }
        }
    }
}


void
ngx_pool_cleanup_file(void *data)
{
    ngx_pool_cleanup_file_t  *c = data; 

    ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, c->log, 0, "file cleanup: fd:%d",
                   c->fd);

    
    if (ngx_close_file(c->fd) == NGX_FILE_ERROR) {
        ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno,
                      ngx_close_file_n " \"%s\" failed", c->name);
    }
}


void
ngx_pool_delete_file(void *data)
{
    ngx_pool_cleanup_file_t  *c = data;

    ngx_err_t  err;

    ngx_log_debug2(NGX_LOG_DEBUG_ALLOC, c->log, 0, "file cleanup: fd:%d %s",
                   c->fd, c->name);

    
    if (ngx_delete_file(c->name) == NGX_FILE_ERROR) {
        err = ngx_errno;

        if (err != NGX_ENOENT) {
            ngx_log_error(NGX_LOG_CRIT, c->log, err,
                          ngx_delete_file_n " \"%s\" failed", c->name);
        }
    }

    
    if (ngx_close_file(c->fd) == NGX_FILE_ERROR) {
        ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno,
                      ngx_close_file_n " \"%s\" failed", c->name);
    }
}

```

参考资料：

《 [Nginx源码剖析之内存池，与内存管理](http://blog.csdn.net/v_july_v/article/details/7040425)》

《[nginx源码分析—内存池结构ngx\_pool\_t及内存管理](http://blog.csdn.net/livelylittlefish/article/details/6586946)》

《[Nginx内存池实现源码分析](http://blog.chinaunix.net/uid-24830931-id-3764858.html) 》

《[Nginx源码分析-内存池](http://www.alidata.org/archives/1390)》

《[Ningx代码研究](https://code.google.com/p/nginxsrp/wiki/NginxCodeReview)》


# Nginx 基本数据结构

## 概述

在学习 Nginx 之前首先了解其基本的数据结构是非常重要的，这是入门必须了解的一个步骤。本节只是简单介绍了 Nginx 对基本数据的一种封装，包括 基本整型数据类型、字符串数据类型、缓冲区类型以及 chain 数据类型。

## 基本数据类型

### 整型数据

```





typedef intptr_t        ngx_int_t;
typedef uintptr_t       ngx_uint_t;
typedef intptr_t        ngx_flag_t;



#if __WORDSIZE == 64
# ifndef __intptr_t_defined
typedef long int		intptr_t;
#  define __intptr_t_defined
# endif
typedef unsigned long int	uintptr_t;
#else
# ifndef __intptr_t_defined
typedef int			intptr_t;
#  define __intptr_t_defined
# endif
typedef unsigned int		uintptr_t;



```

### 字符串类型

```




typedef struct {
    size_t      len;    
    u_char     *data;   
} ngx_str_t;

typedef struct {
    ngx_str_t   key;
    ngx_str_t   value;
} ngx_keyval_t;

typedef struct {
    unsigned    len:28;

    unsigned    valid:1;
    unsigned    no_cacheable:1;
    unsigned    not_found:1;
    unsigned    escape:1;

    u_char     *data;
} ngx_variable_value_t;


#define ngx_string(str) {sizeof(str)-1, (u_char *) str}
#define ngx_null_string {0, NULL}



#define ngx_str_set(str, text)
    (str)->len = sizeof(text)-1; (str)->data = (u_char *)text

#define ngx_str_null(str)   (str)->len = 0; (str)->data = NULL



ngx_str_t str1 = ngx_string("hello nginx");
ngx_str_t str2 = ngx_null_string;


ngx_str_t str1, str2;
str1 = ngx_string("hello nginx");   
str2 = ngx_null_string;             


ngx_str_t str1, str2;
ngx_str_set(&str1, "hello nginx");
ngx_str_null(&str2);


```

### 内存池类型

内存池类型即是 ngx\_pool\_t ，有关内存池的讲解可参考前文《[Nginx 内存池管理](http://blog.csdn.net/chenhanzhun/article/details/42365605)》

```


typedef struct {
    u_char               *last; 
    u_char               *end;  
    ngx_pool_t           *next; 
    ngx_uint_t            failed;
} ngx_pool_data_t;  

struct ngx_pool_s {
    ngx_pool_data_t       d;    
    size_t                max;  
    ngx_pool_t           *current;
    ngx_chain_t          *chain;
    ngx_pool_large_t     *large;
    ngx_pool_cleanup_t   *cleanup;
    ngx_log_t            *log;
};

typedef struct ngx_pool_s   ngx_pool_t;
typedef struct ngx_chain_s  ngx_chain_t;

```

### 缓冲区数据类型

缓冲区 ngx\_buf\_t 的定义如下：

```

typedef void *            ngx_buf_tag_t;

typedef struct ngx_buf_s  ngx_buf_t;

struct ngx_buf_s {
    u_char          *pos;   
    u_char          *last;  
    
    off_t            file_pos;
    off_t            file_last;

    
    u_char          *start;         
    u_char          *end;           
    ngx_buf_tag_t    tag;
    ngx_file_t      *file;          
    
    ngx_buf_t       *shadow;

    
    
    unsigned         temporary:1;

    
    
    unsigned         memory:1;

    
    
    unsigned         mmap:1;

    
    unsigned         recycled:1;
    unsigned         in_file:1; 
    unsigned         flush:1;   
    unsigned         sync:1;    
    unsigned         last_buf:1;
    unsigned         last_in_chain:1;

    unsigned         last_shadow:1;
    unsigned         temp_file:1;

     int   num;
};

```

### chain 数据类型

ngx\_chain\_t 数据类型是与缓冲区类型 ngx\_buf\_t 相关的链表结构，定义如下：

```
struct ngx_chain_s {
    ngx_buf_t    *buf;  
    ngx_chain_t  *next; 
};
typedef struct {

```

链表图如下：<br>

参考资料：

《深入理解 Nginx 》

《[Nginx 从入门到精通](http://tengine.taobao.org/book/chapter_02.html#id3)》

《[Nginx 代码研究](https://code.google.com/p/nginxsrp/wiki/NginxCodeReview#ngx%E7%9A%84%E5%86%85%E5%AD%98%E6%B1%A0)》


# Nginx 数组结构 ngx\_array\_t

## 概述

本节源码来自 src/core/ngx\_array.h/.c。Nginx 源码的数组类似于前面介绍的《[STL源码剖析——序列容器之 vector](http://blog.csdn.net/chenhanzhun/article/details/39287983)》，在 Nginx 数组中，内存分配是基于内存池的，并不是固定不变的，也不是需要多少内存就申请多少，若当前内存不足以存储所需元素时，按照当前数组的两倍内存大小进行申请，这样做减少内存分配的次数，提高效率。

## 数组数据结构

动态数组的数据结构定义如下：

```
typedef struct {
    void        *elts;  
    ngx_uint_t   nelts; 
    size_t       size;  
    ngx_uint_t   nalloc;
    ngx_pool_t  *pool;  
} ngx_array_t;

```

数组结构图如下：

## 数组的基本操作

```

ngx_array_t *ngx_array_create(ngx_pool_t *p, ngx_uint_t n, size_t size);

void ngx_array_destroy(ngx_array_t *a);

void *ngx_array_push(ngx_array_t *a);

void *ngx_array_push_n(ngx_array_t *a, ngx_uint_t n);

```

创建新的动态数组：

创建数组的操作实现如下，首先分配数组头，然后分配数组数据区，两次分配均在传入的内存池(pool指向的内存池)中进行。然后简单初始化数组头并返回数组头的起始位置。

```

ngx_array_t *
ngx_array_create(ngx_pool_t *p, ngx_uint_t n, size_t size)
{
    ngx_array_t *a;

    
    a = ngx_palloc(p, sizeof(ngx_array_t));
    if (a == NULL) {
        return NULL;
    }

    
    if (ngx_array_init(a, p, n, size) != NGX_OK) {
        return NULL;
    }

    return a;
}



static ngx_inline ngx_int_t
ngx_array_init(ngx_array_t *array, ngx_pool_t *pool, ngx_uint_t n, size_t size)
{
    

    
    array->nelts = 0;
    array->size = size;
    array->nalloc = n;
    array->pool = pool;

    
    array->elts = ngx_palloc(pool, n * size);
    if (array->elts == NULL) {
        return NGX_ERROR;
    }

    return NGX_OK;
}

```

销毁动态数组

销毁数组的操作实现如下，包括销毁数组数据区和数组头。销毁动作实际上就是修改内存池的 last 指针，即数组的内存被内存池回收，并没有调用 free 等释放内存的操作。

```

void
ngx_array_destroy(ngx_array_t *a)
{
    ngx_pool_t  *p;

    p = a->pool;

    
    if ((u_char *) a->elts + a->size * a->nalloc == p->d.last) {
        p->d.last -= a->size * a->nalloc;
    }

    
    if ((u_char *) a + sizeof(ngx_array_t) == p->d.last) {
        p->d.last = (u_char *) a;
    }
}

```

添加元素操作

数组添加元素的操作有两个，ngx\_array\_push 和ngx\_array\_push\_n，分别添加一个和多个元素。实际的添加操作并不在这两个函数中完成，只是在这两个函数中申请元素所需的内存空间，并返回指向该内存空间的首地址，在利用指针赋值的形式添加元素。

```

void *
ngx_array_push(ngx_array_t *a)
{
    void        *elt, *new;
    size_t       size;
    ngx_pool_t  *p;

    
    if (a->nelts == a->nalloc) {

        
        

        
        size = a->size * a->nalloc;

        p = a->pool;

        if ((u_char *) a->elts + size == p->d.last
            && p->d.last + a->size <= p->d.end)
            
        {
            

            p->d.last += a->size;
            a->nalloc++;

        } else {
            
            

            
            new = ngx_palloc(p, 2 * size);
            if (new == NULL) {
                return NULL;
            }

            
            ngx_memcpy(new, a->elts, size);
            a->elts = new;
            a->nalloc *= 2;
        }
    }

    elt = (u_char *) a->elts + a->size * a->nelts;
    a->nelts++;

    
    return elt;
}


void *
ngx_array_push_n(ngx_array_t *a, ngx_uint_t n)
{
    void        *elt, *new;
    size_t       size;
    ngx_uint_t   nalloc;
    ngx_pool_t  *p;

    size = n * a->size;

    if (a->nelts + n > a->nalloc) {

        

        p = a->pool;

        if ((u_char *) a->elts + a->size * a->nalloc == p->d.last
            && p->d.last + size <= p->d.end)
        {
            

            p->d.last += size;
            a->nalloc += n;

        } else {
            

            nalloc = 2 * ((n >= a->nalloc) ? n : a->nalloc);

            new = ngx_palloc(p, nalloc * a->size);
            if (new == NULL) {
                return NULL;
            }

            ngx_memcpy(new, a->elts, a->nelts * a->size);
            a->elts = new;
            a->nalloc = nalloc;
        }
    }

    elt = (u_char *) a->elts + a->size * a->nelts;
    a->nelts += n;

```

测试程序：

```
#include "ngx_config.h"
#include <stdio.h>
#include "ngx_conf_file.h"
#include "nginx.h"
#include "ngx_core.h"
#include "ngx_string.h"
#include "ngx_palloc.h"
#include "ngx_array.h"

volatile ngx_cycle_t  *ngx_cycle;

void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
            const char *fmt, ...)
{
}

void dump_array(ngx_array_t* a)
{
    if (a)
    {
        printf("array = 0x%x\n", a);
        printf("  .elts = 0x%x\n", a->elts);
        printf("  .nelts = %d\n", a->nelts);
        printf("  .size = %d\n", a->size);
        printf("  .nalloc = %d\n", a->nalloc);
        printf("  .pool = 0x%x\n", a->pool);

        printf("elements: ");
        int *ptr = (int*)(a->elts);
        for (; ptr < (int*)(a->elts + a->nalloc * a->size); )
        {
            printf("%d  ", *ptr++);
        }
        printf("\n");
    }
}

int main()
{
    ngx_pool_t *pool;
    int i;

    printf("--------------------------------\n");
    printf("create a new pool:\n");
    printf("--------------------------------\n");
    pool = ngx_create_pool(1024, NULL);

    printf("--------------------------------\n");
    printf("alloc an array from the pool:\n");
    printf("--------------------------------\n");
    ngx_array_t *a = ngx_array_create(pool, 5, sizeof(int));

    for (i = 0; i < 5; i++)
    {
        int *ptr = ngx_array_push(a);
        *ptr = 2*i;
    }

    dump_array(a);

    ngx_array_destroy(a);
    ngx_destroy_pool(pool);
    return 0;
}

```

输出结果：

```
$ ./test 
--------------------------------
create a new pool:
--------------------------------
--------------------------------
alloc an array from the pool:
--------------------------------
array = 0x9fe2048
  .elts = 0x9fe205c
  .nelts = 5
  .size = 4
  .nalloc = 5
  .pool = 0x9fe2020
elements: 0  2  4  6  8  

```

参考资料：\
&#x20;《深入理解 Nginx》

《[Nginx源码分析—数组结构ngx\_array\_t](http://blog.csdn.net/livelylittlefish/article/details/6599056)》


# Nginx 链表结构 ngx\_list\_t

## 链表结构

ngx\_list\_t 是 Nginx 封装的链表容器，链表容器内存分配是基于内存池进行的，操作方便，效率高。Nginx 链表容器和普通链表类似，均有链表表头和链表节点，通过节点指针组成链表。其结构定义如下：

```

typedef struct ngx_list_part_s  ngx_list_part_t;


struct ngx_list_part_s {
    void             *elts; 
    ngx_uint_t        nelts;
    ngx_list_part_t  *next; 
};


typedef struct {
    ngx_list_part_t  *last; 
    ngx_list_part_t   part; 
    size_t            size; 
    ngx_uint_t        nalloc;
    ngx_pool_t       *pool; 
} ngx_list_t;

```

链表数据结构如下图所示：

## 链表操作

Nginx 链表的操作只有两个：创建链表 和 添加元素。由于链表的内存分配是基于内存池，所有内存的销毁由内存池进行，即链表没有销毁操作。

### 创建链表

创建新的链表时，首先分配链表表头，再对该链表进行初始化，在初始化过程中分配头节点数据区内存。

```

ngx_list_t *
ngx_list_create(ngx_pool_t *pool, ngx_uint_t n, size_t size)
{
    ngx_list_t  *list;

    
    list = ngx_palloc(pool, sizeof(ngx_list_t));
    if (list == NULL) {
        return NULL;
    }

    
    if (ngx_list_init(list, pool, n, size) != NGX_OK) {
        return NULL;
    }

    return list;
}


static ngx_inline ngx_int_t
ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n, size_t size)
{
    
    list->part.elts = ngx_palloc(pool, n * size);
    if (list->part.elts == NULL) {
        return NGX_ERROR;
    }

    
    list->part.nelts = 0;
    list->part.next = NULL;
    list->last = &list->part;
    list->size = size;
    list->nalloc = n;
    list->pool = pool;

    return NGX_OK;
}

```

### 添加元素

添加元素到链表时，都是从最后一个节点开始，首先判断最后一个节点的数据区是否由内存存放新增加的元素，若足以存储该新元素，则返回存储新元素内存的位置，若没有足够的内存存储新增加的元素，则分配一个新的节点，再把该新的节点连接到现有链表中，并返回存储新元素内存的位置。注意：添加的元素可以是整数，也可以是一个结构。

```

void *
ngx_list_push(ngx_list_t *l)
{
    void             *elt;
    ngx_list_part_t  *last;

    
    last = l->last;

    
    if (last->nelts == l->nalloc) {

        

        
        last = ngx_palloc(l->pool, sizeof(ngx_list_part_t));
        if (last == NULL) {
            return NULL;
        }

        
        last->elts = ngx_palloc(l->pool, l->nalloc * l->size);
        if (last->elts == NULL) {
            return NULL;
        }

        
        last->nelts = 0;
        last->next = NULL;

        
        l->last->next = last;
        l->last = last;
    }

    
    elt = (char *) last->elts + l->size * last->nelts;
    last->nelts++;  

    
    return elt;
}

```

测试程序：

```
#include "ngx_config.h"
#include <stdio.h>
#include "ngx_conf_file.h"
#include "nginx.h"
#include "ngx_core.h"
#include "ngx_string.h"
#include "ngx_palloc.h"
#include "ngx_list.h"

volatile ngx_cycle_t  *ngx_cycle;

void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
            const char *fmt, ...)
{
}
void dump_list_part(ngx_list_t* list, ngx_list_part_t* part)  
{  
    int *ptr = (int*)(part->elts);  
    int loop = 0;  
  
    printf("  .part = 0x%x\n", &(list->part));  
    printf("    .elts = 0x%x  ", part->elts);  
    printf("(");  
    for (; loop < list->nalloc - 1; loop++)  
    {  
        printf("%d, ", ptr[loop]);  
    }  
    printf("%d)\n", ptr[loop]);  
    printf("    .nelts = %d\n", part->nelts);  
    printf("    .next = 0x%x", part->next);  
    if (part->next)  
        printf(" -->\n");  
    printf(" \n");  
}  
void dump_list(ngx_list_t* list)
{
    if (list)
    {
        printf("list = 0x%x\n", list);
        printf("  .last = 0x%x\n", list->last);
        printf("  .part = %d\n", &(list->part));
        printf("  .size = %d\n", list->size);
        printf("  .nalloc = %d\n", list->nalloc);
        printf("  .pool = 0x%x\n", list->pool);

        printf("elements: \n");
        ngx_list_part_t *part = &(list->part);
        while(part)
        {
            dump_list_part(list, part);
            part = part->next;
        }
        printf("\n");
    }
}

int main()
{
    ngx_pool_t *pool;
    int i;

    printf("--------------------------------\n");
    printf("create a new pool:\n");
    printf("--------------------------------\n");
    pool = ngx_create_pool(1024, NULL);

    printf("--------------------------------\n");
    printf("alloc an list from the pool:\n");
    printf("--------------------------------\n");
    ngx_list_t *list = ngx_list_create(pool, 5, sizeof(int));

    if(NULL == list)
    {
        return -1;
    }
    for (i = 0; i < 5; i++)
    {
        int *ptr = ngx_list_push(list);
        *ptr = 2*i;
    }

    dump_list(list);

    ngx_destroy_pool(pool);
    return 0;
}
```

输出结果：

```
$ ./list_test 
--------------------------------
create a new pool:
--------------------------------
--------------------------------
alloc an list from the pool:
--------------------------------
list = 0x98ce048
  .last = 0x98ce04c
  .part = 160227404
  .size = 4
  .nalloc = 5
  .pool = 0x98ce020
elements: 
  .part = 0x98ce04c
    .elts = 0x98ce064  (0, 2, 4, 6, 8)
    .nelts = 5
    .next = 0x0 

```

参考资料：

《深入理解 Nginx 》

《[nginx源码分析—链表结构ngx\_list\_t](http://blog.csdn.net/livelylittlefish/article/details/6599065)》


# Nginx 队列双向链表结构 ngx\_queue\_t

## 队列链表结构

队列双向循环链表实现文件：文件：src/core/ngx\_queue.h/.c。在 Nginx 的队列实现中，实质就是具有头节点的双向循环链表，这里的双向链表中的节点是没有数据区的，只有两个指向节点的指针。需注意的是队列链表的内存分配不是直接从内存池分配的，即没有进行内存池管理，而是需要我们自己管理内存，所有我们可以指定它在内存池管理或者直接在堆里面进行管理，最好使用内存池进行管理。节点结构定义如下：

```

typedef struct ngx_queue_s  ngx_queue_t;


struct ngx_queue_s {
    ngx_queue_t  *prev;
    ngx_queue_t  *next;
};
```

## 队列链表操作

其基本操作如下：

```

ngx_queue_int(h)


ngx_queue_empty(h)


ngx_queue_insert_head(h, x)


ngx_queue_insert_tail(h, x)


ngx_queue_head(h)


ngx_queue_last(h)


ngx_queue_sentinel(h)


ngx_queue_remove(x)


ngx_queue_split(h, q, n)


ngx_queue_add(h, n)


ngx_queue_middle(h)


ngx_queue_sort(h, cmpfunc)


ngx_queue_next(q)


ngx_queue_prev(q)


ngx_queue_data(q, type, link)


ngx_queue_insert_after(q, x)

```

下面是队列链表操作源码的实现：

### 初始化链表

```

#define ngx_queue_init(q)                                                     \
    (q)->prev = q;                                                            \
    (q)->next = q


#define ngx_queue_empty(h)                                                    \
    (h == (h)->prev)
```

### 获取指定的队列链表中的节点

```

#define ngx_queue_head(h)                                                     \
    (h)->next


#define ngx_queue_last(h)                                                     \
    (h)->prev

#define ngx_queue_sentinel(h)                                                 \
    (h)


#define ngx_queue_next(q)                                                     \
    (q)->next


#define ngx_queue_prev(q)                                                     \
    (q)->prev
```

### 插入节点

在头节点之后插入新节点：

```

#define ngx_queue_insert_head(h, x)                                           \
    (x)->next = (h)->next;                                                    \
    (x)->next->prev = x;                                                      \
    (x)->prev = h;                                                            \
    (h)->next = x

```

插入节点比较简单，只是修改指针的指向即可。下图是插入节点的过程：注意：虚线表示断开连接，实线表示原始连接，破折线表示重新连接，图中的数字与源码步骤相对应。

在尾节点之后插入节点

```

#define ngx_queue_insert_tail(h, x)                                           \
    (x)->prev = (h)->prev;                                                    \
    (x)->prev->next = x;                                                      \
    (x)->next = h;                                                            \
    (h)->prev = x
```

下图是插入节点的过程：

### 删除节点

删除指定的节点，删除节点只是修改相邻节点指针的指向，并没有实际将该节点的内存释放，内存释放必须由我们进行处理。

```
#if (NGX_DEBUG)

#define ngx_queue_remove(x)                                                   \
    (x)->next->prev = (x)->prev;                                              \
    (x)->prev->next = (x)->next;                                              \
    (x)->prev = NULL;                                                         \
    (x)->next = NULL

#else

#define ngx_queue_remove(x)                                                   \
    (x)->next->prev = (x)->prev;                                              \
    (x)->prev->next = (x)->next

#endif
```

删除节点过程如下图所示：

### 拆分链表

```

#define ngx_queue_split(h, q, n)                                              \
    (n)->prev = (h)->prev;                                                    \
    (n)->prev->next = n;                                                      \
    (n)->next = q;                                                            \
    (h)->prev = (q)->prev;                                                    \
    (h)->prev->next = h;                                                      \
    (q)->prev = n;
```

该宏有 3 个参数，h 为队列头(即链表头指针)，将该队列从 q 节点将队列(链表)拆分为两个队列(链表)，q 之后的节点组成的新队列的头节点为 n 。链表拆分过程如下图所示：

### 合并链表

```

#define ngx_queue_add(h, n)                                                   \
    (h)->prev->next = (n)->next;                                              \
    (n)->next->prev = (h)->prev;                                              \
    (h)->prev = (n)->prev;                                                    \
    (h)->prev->next = h;                                                      \
    (n)->prev = (n)->next = n;

```

其中，h、n分别为两个队列的指针，即头节点指针，该操作将n队列链接在h队列之后。具体操作如下图所示：

### 获取中间节点

```

ngx_queue_t *
ngx_queue_middle(ngx_queue_t *queue)
{
    ngx_queue_t  *middle, *next;

    
    middle = ngx_queue_head(queue);

    
    if (middle == ngx_queue_last(queue)) {
        return middle;
    }

    
    next = ngx_queue_head(queue);

    for ( ;; ) {
        
        middle = ngx_queue_next(middle);

        next = ngx_queue_next(next);

        
        if (next == ngx_queue_last(queue)) {
            return middle;
        }

        next = ngx_queue_next(next);

        
        if (next == ngx_queue_last(queue)) {
            return middle;
        }
    }
}
```

### 链表排序

队列链表排序采用的是稳定的简单插入排序方法，即从第一个节点开始遍历，依次将当前节点(q)插入前面已经排好序的队列(链表)中，下面程序中，前面已经排好序的队列的尾节点为prev。操作如下：

```



void
ngx_queue_sort(ngx_queue_t *queue,
    ngx_int_t (*cmp)(const ngx_queue_t *, const ngx_queue_t *))
{
    ngx_queue_t  *q, *prev, *next;

    q = ngx_queue_head(queue);

    
    if (q == ngx_queue_last(queue)) {
        return;
    }

    
    for (q = ngx_queue_next(q); q != ngx_queue_sentinel(queue); q = next) {

        prev = ngx_queue_prev(q);
        next = ngx_queue_next(q);

        
        ngx_queue_remove(q);

        
        do {
            if (cmp(prev, q) <= 0) {
                break;
            }

            prev = ngx_queue_prev(prev);

        } while (prev != ngx_queue_sentinel(queue));

        
        ngx_queue_insert_after(prev, q);
    }
}
```

### 获取队列中节点数据地址

由队列基本结构和以上操作可知，nginx 的队列操作只对链表指针进行简单的修改指向操作，并不负责节点数据空间的分配。因此，用户在使用nginx队列时，要自己定义数据结构并分配空间，且在其中包含一个 ngx\_queue\_t 的指针或者对象，当需要获取队列节点数据时，使用ngx\_queue\_data宏，其定义如下：

```

#define ngx_queue_data(q, type, link)                                         \
    (type *) ((u_char *) q - offsetof(type, link))
```

测试程序：

```
#include <stdio.h>
#include "ngx_queue.h"
#include "ngx_conf_file.h"
#include "ngx_config.h"
#include "ngx_palloc.h"
#include "nginx.h"
#include "ngx_core.h"

#define MAX     10
typedef struct Score
{
    unsigned int score;
    ngx_queue_t Que;
}ngx_queue_score;
volatile ngx_cycle_t  *ngx_cycle;

void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,  
            const char *fmt, ...)
{
}

ngx_int_t CMP(const ngx_queue_t *x, const ngx_queue_t *y)
{
    ngx_queue_score *xinfo = ngx_queue_data(x, ngx_queue_score, Que);
    ngx_queue_score *yinfo = ngx_queue_data(y, ngx_queue_score, Que);

    return(xinfo->score > yinfo->score);
}

void print_ngx_queue(ngx_queue_t *queue)
{
    ngx_queue_t *q = ngx_queue_head(queue);

    printf("score: ");
    for( ; q != ngx_queue_sentinel(queue); q = ngx_queue_next(q))
    {
        ngx_queue_score *ptr = ngx_queue_data(q, ngx_queue_score, Que);
        if(ptr != NULL)
            printf(" %d\t", ptr->score);
    }
    printf("\n");
}

int main()
{
    ngx_pool_t *pool;
    ngx_queue_t *queue;
    ngx_queue_score *Qscore;

    pool = ngx_create_pool(1024, NULL);

    queue = ngx_palloc(pool, sizeof(ngx_queue_t));
    ngx_queue_init(queue);

    int i;
    for(i = 1; i < MAX; i++)
    {
        Qscore = (ngx_queue_score*)ngx_palloc(pool, sizeof(ngx_queue_score));
        Qscore->score = i;
        ngx_queue_init(&Qscore->Que);

        if(i%2)
        {
            ngx_queue_insert_tail(queue, &Qscore->Que);
        }
        else
        {
            ngx_queue_insert_head(queue, &Qscore->Que);
        }
    }

    printf("Before sort: ");
    print_ngx_queue(queue);

    ngx_queue_sort(queue, CMP);

    printf("After sort: ");
    print_ngx_queue(queue);

    ngx_destroy_pool(pool);
    return 0;

}

```

输出结果：

```
$./queue_test 
Before sort: score:  8	 6	 4	 2	 1	 3	 5	 7	 9	
After sort: score:  1	 2	 3	 4	 5	 6	 7	 8	 9	

```

## 总结

在 Nginx 的队列链表中，其维护的是指向链表节点的指针，并没有实际的数据区，所有对实际数据的操作需要我们自行操作，队列链表实质是双向循环链表，其操作是双向链表的基本操作。


# Nginx 哈希表结构 ngx\_hash\_t

## 概述

关于哈希表的基本知识在前面的文章《[数据结构-哈希表](http://blog.csdn.net/chenhanzhun/article/details/38091431)》已作介绍。哈希表结合了数组和链表的特点，使其寻址、插入以及删除操作更加方便。哈希表的过程是将关键字通过某种哈希函数映射到相应的哈希表位置，即对应的哈希值所在哈希表的位置。但是会出现多个关键字映射相同位置的情况导致冲突问题，为了解决这种情况，哈希表使用两个可选择的方法：**拉链法**和 **开放寻址法**。

Nginx 的哈希表中使用开放寻址来解决冲突问题，为了处理字符串，Nginx 还实现了支持通配符操作的相关函数，下面对 Nginx 中哈希表的源码进行分析。源码文件：src/core/ngx\_hash.h/.c。

## 哈希表结构

\*\*ngx\_hash\_elt\_t 结构 \*\*

哈希表中关键字元素的结构 ngx\_hash\_elt\_t，哈希表元素结构采用 键-值 形式，即\<key，value> 。其定义如下：

```

typedef struct {
    void             *value;    
    u_short           len;      
    u_char            name[1];  
} ngx_hash_elt_t;
```

**ngx\_hash\_t 结构**

哈希表基本结构 ngx\_hash\_t，其结构定义如下：

```

typedef struct {
    ngx_hash_elt_t  **buckets;  
    ngx_uint_t        size;     
} ngx_hash_t;
```

元素结构图以及基本哈希结构图如下所示：

\*\*ngx\_hash\_init\_t 初始化结构 \*\*

哈希初始化结构 ngx\_hash\_init\_t，Nginx 的 hash 初始化结构是 ngx\_hash\_init\_t，用来将其相关数据封装起来作为参数传递给ngx\_hash\_init()，其定义如下：

```
typedef ngx_uint_t (*ngx_hash_key_pt) (u_char *data, size_t len);


typedef struct {
    ngx_hash_t       *hash;         
    ngx_hash_key_pt   key;          

    ngx_uint_t        max_size;     
    ngx_uint_t        bucket_size;  

    char             *name;         
    ngx_pool_t       *pool;         
    
    ngx_pool_t       *temp_pool;
} ngx_hash_init_t;
```

哈希元素数据 ngx\_hash\_key\_t，该结构也主要用来保存要 hash 的数据，即键-值对\<key,value>，在实际使用中，一般将多个键-值对保存在 ngx\_hash\_key\_t 结构的数组中，作为参数传给ngx\_hash\_init()。其定义如下：

```

typedef struct {
    ngx_str_t         key;      
    ngx_uint_t        key_hash; 
    void             *value;    
} ngx_hash_key_t;
```

## 哈希操作

哈希操作包括初始化函数、查找函数；其中初始化函数是 Nginx 中哈希表比较重要的函数，由于 Nginx 的 hash 表是静态只读的，即不能在运行时动态添加新元素的，一切的结构和数据都在配置初始化的时候就已经规划完毕。

### 哈希函数

哈希表中使用哈希函数把用户数据映射到哈希表对应的位置中，下面是 Nginx 哈希函数的定义：

```

#define ngx_hash(key, c)   ((ngx_uint_t) key * 31 + c)
ngx_uint_t ngx_hash_key(u_char *data, size_t len);
ngx_uint_t ngx_hash_key_lc(u_char *data, size_t len);
ngx_uint_t ngx_hash_strlow(u_char *dst, u_char *src, size_t n);
#define ngx_hash(key, c)   ((ngx_uint_t) key * 31 + c)

ngx_uint_t
ngx_hash_key(u_char *data, size_t len)
{
    ngx_uint_t  i, key;

    key = 0;

    for (i = 0; i < len; i++) {
        
        key = ngx_hash(key, data[i]);
    }

    return key;
}


ngx_uint_t
ngx_hash_key_lc(u_char *data, size_t len)
{
    ngx_uint_t  i, key;

    key = 0;

    for (i = 0; i < len; i++) {
        
        key = ngx_hash(key, ngx_tolower(data[i]));
    }

    return key;
}


ngx_uint_t
ngx_hash_strlow(u_char *dst, u_char *src, size_t n)
{
    ngx_uint_t  key;

    key = 0;

    while (n--) {
        *dst = ngx_tolower(*src);
        key = ngx_hash(key, *dst);
        dst++;
        src++;
    }

    return key;
}
```

### 哈希初始化函数

hash 初始化由 ngx\_hash\_init() 函数完成，其 names 参数是 ngx\_hash\_key\_t 结构的数组，即键-值对 \<key,value> 数组，nelts 表示该数组元素的个数。该函数初始化的结果就是将 names 数组保存的键-值对\<key,value>，通过 hash 的方式将其存入相应的一个或多个 hash 桶(即代码中的 buckets )中。hash 桶里面存放的是 ngx\_hash\_elt\_t 结构的指针(hash元素指针)，该指针指向一个基本连续的数据区。该数据区中存放的是经 hash 之后的键-值对\<key',value'>，即 ngx\_hash\_elt\_t 结构中的字段 \<name,value>。每一个这样的数据区存放的键-值对\<key',value'>可以是一个或多个。其定义如下：

```
#define NGX_HASH_ELT_SIZE(name)                                               \
    (sizeof(void *) + ngx_align((name)->key.len + 2, sizeof(void *)))



ngx_int_t
ngx_hash_init(ngx_hash_init_t *hinit, ngx_hash_key_t *names, ngx_uint_t nelts)
{
    u_char          *elts;
    size_t           len;
    u_short         *test;
    ngx_uint_t       i, n, key, size, start, bucket_size;
    ngx_hash_elt_t  *elt, **buckets;

    for (n = 0; n < nelts; n++) {
        
        if (hinit->bucket_size < NGX_HASH_ELT_SIZE(&names[n]) + sizeof(void *))
        {
            ngx_log_error(NGX_LOG_EMERG, hinit->pool->log, 0,
                          "could not build the %s, you should "
                          "increase %s_bucket_size: %i",
                          hinit->name, hinit->name, hinit->bucket_size);
            return NGX_ERROR;
        }
    }

    
    test = ngx_alloc(hinit->max_size * sizeof(u_short), hinit->pool->log);
    if (test == NULL) {
        return NGX_ERROR;
    }

    
    bucket_size = hinit->bucket_size - sizeof(void *);

    
    start = nelts / (bucket_size / (2 * sizeof(void *)));
    start = start ? start : 1;

    
    if (hinit->max_size > 10000 && nelts && hinit->max_size / nelts < 100) {
        start = hinit->max_size - 1000;
    }

    
    for (size = start; size <= hinit->max_size; size++) {

        ngx_memzero(test, size * sizeof(u_short));

        for (n = 0; n < nelts; n++) {
            if (names[n].key.data == NULL) {
                continue;
            }

            
            key = names[n].key_hash % size;
            test[key] = (u_short) (test[key] + NGX_HASH_ELT_SIZE(&names[n]));

#if 0
            ngx_log_error(NGX_LOG_ALERT, hinit->pool->log, 0,
                          "%ui: %ui %ui \"%V\"",
                          size, key, test[key], &names[n].key);
#endif

            
            if (test[key] > (u_short) bucket_size) {
                goto next;
            }
        }

        
        goto found;

    next:

        continue;
    }

    ngx_log_error(NGX_LOG_WARN, hinit->pool->log, 0,
                  "could not build optimal %s, you should increase "
                  "either %s_max_size: %i or %s_bucket_size: %i; "
                  "ignoring %s_bucket_size",
                  hinit->name, hinit->name, hinit->max_size,
                  hinit->name, hinit->bucket_size, hinit->name);

found:

    
    for (i = 0; i < size; i++) {
        test[i] = sizeof(void *);
    }

    
    for (n = 0; n < nelts; n++) {
        if (names[n].key.data == NULL) {
            continue;
        }

        
        key = names[n].key_hash % size;
        test[key] = (u_short) (test[key] + NGX_HASH_ELT_SIZE(&names[n]));
    }

    len = 0;

    
    for (i = 0; i < size; i++) {
        if (test[i] == sizeof(void *)) {
            continue;
        }

        test[i] = (u_short) (ngx_align(test[i], ngx_cacheline_size));

        len += test[i];
    }

    
    if (hinit->hash == NULL) {
        hinit->hash = ngx_pcalloc(hinit->pool, sizeof(ngx_hash_wildcard_t)
                                             + size * sizeof(ngx_hash_elt_t *));
        if (hinit->hash == NULL) {
            ngx_free(test);
            return NGX_ERROR;
        }

        
        buckets = (ngx_hash_elt_t **)
                      ((u_char *) hinit->hash + sizeof(ngx_hash_wildcard_t));

    } else {
        buckets = ngx_pcalloc(hinit->pool, size * sizeof(ngx_hash_elt_t *));
        if (buckets == NULL) {
            ngx_free(test);
            return NGX_ERROR;
        }
    }

    
    elts = ngx_palloc(hinit->pool, len + ngx_cacheline_size);
    if (elts == NULL) {
        ngx_free(test);
        return NGX_ERROR;
    }

    elts = ngx_align_ptr(elts, ngx_cacheline_size);

    
    for (i = 0; i < size; i++) {
        if (test[i] == sizeof(void *)) {
            continue;
        }

        buckets[i] = (ngx_hash_elt_t *) elts;
        elts += test[i];

    }

    
    for (i = 0; i < size; i++) {
        test[i] = 0;
    }

    
    for (n = 0; n < nelts; n++) {
        if (names[n].key.data == NULL) {
            continue;
        }

        key = names[n].key_hash % size;
        elt = (ngx_hash_elt_t *) ((u_char *) buckets[key] + test[key]);

        elt->value = names[n].value;
        elt->len = (u_short) names[n].key.len;

        ngx_strlow(elt->name, names[n].key.data, names[n].key.len);

        
        test[key] = (u_short) (test[key] + NGX_HASH_ELT_SIZE(&names[n]));
    }

    
    for (i = 0; i < size; i++) {
        if (buckets[i] == NULL) {
            continue;
        }

        elt = (ngx_hash_elt_t *) ((u_char *) buckets[i] + test[i]);

        elt->value = NULL;
    }

    ngx_free(test);

    hinit->hash->buckets = buckets;
    hinit->hash->size = size;

#if 0

    for (i = 0; i < size; i++) {
        ngx_str_t   val;
        ngx_uint_t  key;

        elt = buckets[i];

        if (elt == NULL) {
            ngx_log_error(NGX_LOG_ALERT, hinit->pool->log, 0,
                          "%ui: NULL", i);
            continue;
        }

        while (elt->value) {
            val.len = elt->len;
            val.data = &elt->name[0];

            key = hinit->key(val.data, val.len);

            ngx_log_error(NGX_LOG_ALERT, hinit->pool->log, 0,
                          "%ui: %p \"%V\" %ui", i, elt, &val, key);

            elt = (ngx_hash_elt_t *) ngx_align_ptr(&elt->name[0] + elt->len,
                                                   sizeof(void *));
        }
    }

#endif

    return NGX_OK;
}
```

### 哈希查找函数

hash 查找操作由 ngx\_hash\_find() 函数完成，查找时由 key 直接计算所在的 bucket，该 bucket 中保存其所在 ngx\_hash\_elt\_t 数据区的起始地址；然后根据长度判断并用 name 内容匹配，匹配成功，其 ngx\_hash\_elt\_t 结构的 value 字段即是所求。其定义如下：

```

void *
ngx_hash_find(ngx_hash_t *hash, ngx_uint_t key, u_char *name, size_t len)
{
    ngx_uint_t       i;
    ngx_hash_elt_t  *elt;

#if 0
    ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0, "hf:\"%*s\"", len, name);
#endif

    
    elt = hash->buckets[key % hash->size];

    if (elt == NULL) {
        return NULL;
    }

    while (elt->value) {
        if (len != (size_t) elt->len) {
            goto next;
        }

        for (i = 0; i < len; i++) {
            if (name[i] != elt->name[i]) {
                goto next;
            }
        }

        
        return elt->value;

    next:

        elt = (ngx_hash_elt_t *) ngx_align_ptr(&elt->name[0] + elt->len,
                                               sizeof(void *));
        continue;
    }

    return NULL;
}

```

测试程序：

```
#include <stdio.h>
#include "ngx_config.h"
#include "ngx_conf_file.h"
#include "nginx.h"
#include "ngx_core.h"
#include "ngx_string.h"
#include "ngx_palloc.h"
#include "ngx_array.h"
#include "ngx_hash.h"
volatile ngx_cycle_t  *ngx_cycle;
void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err, const char *fmt, ...) { }

static ngx_str_t names[] = {ngx_string("www.baidu.com"),
                            ngx_string("www.google.com.hk"),
                            ngx_string("www.github.com")};
static char* descs[] = {"baidu: 1","google: 2", "github: 3"};


int main()
{
    ngx_uint_t          k;
    ngx_pool_t*         pool;
    ngx_hash_init_t     hash_init;
    ngx_hash_t*         hash;
    ngx_array_t*        elements;
    ngx_hash_key_t*     arr_node;
    char*               find;
    int                 i;
    ngx_cacheline_size = 32;

    pool = ngx_create_pool(1024*10, NULL);

    
    hash = (ngx_hash_t*) ngx_pcalloc(pool, sizeof(hash));
    
    hash_init.hash      = hash;                      
    hash_init.key       = &ngx_hash_key_lc;          
    hash_init.max_size  = 1024*10;                   
    hash_init.bucket_size = 64;
    hash_init.name      = "test_hash_error";
    hash_init.pool           = pool;
    hash_init.temp_pool      = NULL;

    

    elements = ngx_array_create(pool, 32, sizeof(ngx_hash_key_t));
    for(i = 0; i < 3; i++) {
        arr_node            = (ngx_hash_key_t*) ngx_array_push(elements);
        arr_node->key       = (names[i]);
        arr_node->key_hash  = ngx_hash_key_lc(arr_node->key.data, arr_node->key.len);
        arr_node->value     = (void*) descs[i];

        printf("key: %s , key_hash: %u\n", arr_node->key.data, arr_node->key_hash);
    }

    
    if (ngx_hash_init(&hash_init, (ngx_hash_key_t*) elements->elts, elements->nelts) != NGX_OK){
        return 1;
    }

    
    k    = ngx_hash_key_lc(names[0].data, names[0].len);
    printf("%s key is %d\n", names[0].data, k);
    find = (char*)
        ngx_hash_find(hash, k, (u_char*) names[0].data, names[0].len);

    if (find) {
        printf("get desc: %s\n",(char*) find);
    }

    ngx_array_destroy(elements);
    ngx_destroy_pool(pool);

    return 0;
}

```

输出结果：

```
 ./hash_test 
key: www.baidu.com , key_hash: 270263191
key: www.google.com.hk , key_hash: 2472785358
key: www.github.com , key_hash: 2818415021
www.baidu.com key is 270263191
get desc: baidu: 1

```

参考资料：

《深入理解 Nginx 》

《 [nginx中hash表的设计与实现](http://blog.csdn.net/brainkick/article/details/7816420)》

《[Nginx 代码研究](http://code.google.com/p/nginxsrp/wiki/NginxCodeReview#ngx_hash)》


# Nginx 红黑树结构 ngx\_rbtree\_t

## 概述

有关红黑树的基础知识在前面文章中已经做了介绍，想要更详细的了解红黑树可以参考文章《[数据结构-红黑树](http://blog.csdn.net/chenhanzhun/article/details/38405041)》，在这里只是单纯对 Nginx 中红黑树源码的解析，Nginx 红黑树源码是实现跟算法导论中的讲解是一样的。

## 红黑树结构

```
typedef ngx_uint_t  ngx_rbtree_key_t;
typedef ngx_int_t   ngx_rbtree_key_int_t;


typedef struct ngx_rbtree_node_s  ngx_rbtree_node_t;

struct ngx_rbtree_node_s {
    ngx_rbtree_key_t       key;     
    ngx_rbtree_node_t     *left;    
    ngx_rbtree_node_t     *right;   
    ngx_rbtree_node_t     *parent;  
    u_char                 color;   
    u_char                 data;    
};

typedef struct ngx_rbtree_s  ngx_rbtree_t;

typedef void (*ngx_rbtree_insert_pt) (ngx_rbtree_node_t *root,
    ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);


struct ngx_rbtree_s {
    ngx_rbtree_node_t     *root;    
    ngx_rbtree_node_t     *sentinel;
    ngx_rbtree_insert_pt   insert;  
};

```

## 红黑树的操作

### 初始化操作

```

#define ngx_rbt_red(node)               ((node)->color = 1)
#define ngx_rbt_black(node)             ((node)->color = 0)

#define ngx_rbt_is_red(node)            ((node)->color)
#define ngx_rbt_is_black(node)          (!ngx_rbt_is_red(node))

#define ngx_rbt_copy_color(n1, n2)      (n1->color = n2->color)




#define ngx_rbtree_sentinel_init(node)  ngx_rbt_black(node)



#define ngx_rbtree_init(tree, s, i)                                           \
    ngx_rbtree_sentinel_init(s);                                              \
    (tree)->root = s;                                                         \
    (tree)->sentinel = s;                                                     \
    (tree)->insert = i

```

### 旋转操作

```

static ngx_inline void
ngx_rbtree_left_rotate(ngx_rbtree_node_t **root, ngx_rbtree_node_t *sentinel,
    ngx_rbtree_node_t *node)
{
    ngx_rbtree_node_t  *temp;

    temp = node->right;
    node->right = temp->left;

    if (temp->left != sentinel) {
        temp->left->parent = node;
    }

    temp->parent = node->parent;

    if (node == *root) {
        *root = temp;

    } else if (node == node->parent->left) {
        node->parent->left = temp;

    } else {
        node->parent->right = temp;
    }

    temp->left = node;
    node->parent = temp;
}

static ngx_inline void
ngx_rbtree_right_rotate(ngx_rbtree_node_t **root, ngx_rbtree_node_t *sentinel,
    ngx_rbtree_node_t *node)
{
    ngx_rbtree_node_t  *temp;

    temp = node->left;
    node->left = temp->right;

    if (temp->right != sentinel) {
        temp->right->parent = node;
    }

    temp->parent = node->parent;

    if (node == *root) {
        *root = temp;

    } else if (node == node->parent->right) {
        node->parent->right = temp;

    } else {
        node->parent->left = temp;
    }

    temp->right = node;
    node->parent = temp;
}

```

### 插入操作

```

static ngx_inline ngx_rbtree_node_t *
ngx_rbtree_min(ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel)
{
    while (node->left != sentinel) {
        node = node->left;
    }

    return node;
}



void
ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree,
    ngx_rbtree_node_t *node)
{
    ngx_rbtree_node_t  **root, *temp, *sentinel;

    

    root = (ngx_rbtree_node_t **) &tree->root;
    sentinel = tree->sentinel;

    
    if (*root == sentinel) {
        node->parent = NULL;
        node->left = sentinel;
        node->right = sentinel;
        ngx_rbt_black(node);
        *root = node;

        return;
    }

    
    tree->insert(*root, node, sentinel);

    

    
    while (node != *root && ngx_rbt_is_red(node->parent)) {

        
        if (node->parent == node->parent->parent->left) {
            temp = node->parent->parent->right;

            
            
            if (ngx_rbt_is_red(temp)) {
                ngx_rbt_black(node->parent);
                ngx_rbt_black(temp);
                ngx_rbt_red(node->parent->parent);
                node = node->parent->parent;

            } else {
                
                
                if (node == node->parent->right) {
                    node = node->parent;
                    ngx_rbtree_left_rotate(root, sentinel, node);
                }

                
                
                ngx_rbt_black(node->parent);
                ngx_rbt_red(node->parent->parent);
                ngx_rbtree_right_rotate(root, sentinel, node->parent->parent);
            }

        } else {
            
            temp = node->parent->parent->left;

            if (ngx_rbt_is_red(temp)) {
                ngx_rbt_black(node->parent);
                ngx_rbt_black(temp);
                ngx_rbt_red(node->parent->parent);
                node = node->parent->parent;

            } else {
                if (node == node->parent->left) {
                    node = node->parent;
                    ngx_rbtree_right_rotate(root, sentinel, node);
                }

                ngx_rbt_black(node->parent);
                ngx_rbt_red(node->parent->parent);
                ngx_rbtree_left_rotate(root, sentinel, node->parent->parent);
            }
        }
    }

    
    ngx_rbt_black(*root);
}


void
ngx_rbtree_insert_value(ngx_rbtree_node_t *temp, ngx_rbtree_node_t *node,
    ngx_rbtree_node_t *sentinel)
{
    ngx_rbtree_node_t  **p;

    for ( ;; ) {

        
        p = (node->key < temp->key) ? &temp->left : &temp->right;

        if (*p == sentinel) {
            break;
        }

        temp = *p;
    }

    
    *p = node;
    node->parent = temp;
    node->left = sentinel;
    node->right = sentinel;
    ngx_rbt_red(node);
}

void
ngx_rbtree_insert_timer_value(ngx_rbtree_node_t *temp, ngx_rbtree_node_t *node,
    ngx_rbtree_node_t *sentinel)
{
    ngx_rbtree_node_t  **p;

    for ( ;; ) {

        

        

        p = ((ngx_rbtree_key_int_t) (node->key - temp->key) < 0)
            ? &temp->left : &temp->right;

        if (*p == sentinel) {
            break;
        }

        temp = *p;
    }

    *p = node;
    node->parent = temp;
    node->left = sentinel;
    node->right = sentinel;
    ngx_rbt_red(node);
}

```

### 删除操作

```

void
ngx_rbtree_delete(ngx_thread_volatile ngx_rbtree_t *tree,
    ngx_rbtree_node_t *node)
{
    ngx_uint_t           red;
    ngx_rbtree_node_t  **root, *sentinel, *subst, *temp, *w;

    

    root = (ngx_rbtree_node_t **) &tree->root;
    sentinel = tree->sentinel;

    

    
    if (node->left == sentinel) {
        temp = node->right;
        subst = node;

    } else if (node->right == sentinel) {
        temp = node->left;
        subst = node;

    } else {
        subst = ngx_rbtree_min(node->right, sentinel);

        if (subst->left != sentinel) {
            temp = subst->left;
        } else {
            temp = subst->right;
        }
    }

    
    if (subst == *root) {
        *root = temp;
        ngx_rbt_black(temp);

        
        node->left = NULL;
        node->right = NULL;
        node->parent = NULL;
        node->key = 0;

        return;
    }

    
    red = ngx_rbt_is_red(subst);

    
    if (subst == subst->parent->left) {
        subst->parent->left = temp;

    } else {
        subst->parent->right = temp;
    }

    
    if (subst == node) {

        temp->parent = subst->parent;

    } else {

        if (subst->parent == node) {
            temp->parent = subst;

        } else {
            temp->parent = subst->parent;
        }

        
        subst->left = node->left;
        subst->right = node->right;
        subst->parent = node->parent;
        ngx_rbt_copy_color(subst, node);

        if (node == *root) {
            *root = subst;

        } else {
            if (node == node->parent->left) {
                node->parent->left = subst;
            } else {
                node->parent->right = subst;
            }
        }

        if (subst->left != sentinel) {
            subst->left->parent = subst;
        }

        if (subst->right != sentinel) {
            subst->right->parent = subst;
        }
    }

    
    node->left = NULL;
    node->right = NULL;
    node->parent = NULL;
    node->key = 0;

    if (red) {
        return;
    }

    
    

    
    while (temp != *root && ngx_rbt_is_black(temp)) {

        
        if (temp == temp->parent->left) {
            w = temp->parent->right;

            
            
            if (ngx_rbt_is_red(w)) {
                ngx_rbt_black(w);
                ngx_rbt_red(temp->parent);
                ngx_rbtree_left_rotate(root, sentinel, temp->parent);
                w = temp->parent->right;
            }

            
            
            if (ngx_rbt_is_black(w->left) && ngx_rbt_is_black(w->right)) {
                ngx_rbt_red(w);
                temp = temp->parent;

            } else {
                
                if (ngx_rbt_is_black(w->right)) {
                    ngx_rbt_black(w->left);
                    ngx_rbt_red(w);
                    ngx_rbtree_right_rotate(root, sentinel, w);
                    w = temp->parent->right;
                }

                
                
                ngx_rbt_copy_color(w, temp->parent);
                ngx_rbt_black(temp->parent);
                ngx_rbt_black(w->right);
                ngx_rbtree_left_rotate(root, sentinel, temp->parent);
                temp = *root;
            }

        } else {
            w = temp->parent->left;

            if (ngx_rbt_is_red(w)) {
                ngx_rbt_black(w);
                ngx_rbt_red(temp->parent);
                ngx_rbtree_right_rotate(root, sentinel, temp->parent);
                w = temp->parent->left;
            }

            if (ngx_rbt_is_black(w->left) && ngx_rbt_is_black(w->right)) {
                ngx_rbt_red(w);
                temp = temp->parent;

            } else {
                if (ngx_rbt_is_black(w->left)) {
                    ngx_rbt_black(w->right);
                    ngx_rbt_red(w);
                    ngx_rbtree_left_rotate(root, sentinel, w);
                    w = temp->parent->left;
                }

                ngx_rbt_copy_color(w, temp->parent);
                ngx_rbt_black(temp->parent);
                ngx_rbt_black(w->left);
                ngx_rbtree_right_rotate(root, sentinel, temp->parent);
                temp = *root;
            }
        }
    }

    ngx_rbt_black(temp);
}

```


# Nginx 模块开发

Nginx 模块概述

Nginx 模块有三种角色：

* 处理请求并产生输出的 Handler 模块；
* 处理由 Handler 产生的输出的 Filter（滤波器）模块；
* 当出现多个后台服务器时，Load-balancer （负载均衡器）模块负责选择其中一个后台服务器发送请求；

通常，服务器启动时，任何 Handler 模块都有可能去处理配置文件中的 location 定义。若出现多个Handler 模块被配置成需要处理某一特定的 location 时，最终只有其中一个Handler 模块是成功的。Handler 模块有三种返回方式：

1. 接收请求，并成功返回；
2. 接收请求，但是出错返回；
3. 拒绝请求，使默认的 Handler 模块处理该请求；

若 Handler 模块的作用是把一个请求反向代理到后台服务器，则会出现另一种类型的空间模块—— Load-balancer。 Load-balancer 负责决定将请求发送给哪个后端服务器。Nginx 目前支持两种 Load-balancer 模块：round-robin （轮询，处理请求就像打扑克时发牌那样）和"IP hash" method（众多请求时，保证来自同一 IP 的请求被分发的同一个后端服务器）。

若 Handler 模块没有产生错误返回时，则会调用 Filter 模块。每个location 配置里都可以添加多个Filter 模块 ，因此响应可以被压缩和分块。Filter 模块之间的处理顺序是在编译时就已经确定的。Filter 模块采用“CHAIN OF RESPONSIBILITY”链式的设计模式。当有请求到达时，请求依次经过这条链上的全部 Filter 模块，一个Filter 被调用并处理，接下来调用下一个Filter，直到最后一个Filter 被调用完成，Nginx 才真正完成响应流程。

总结如下，典型的处理形式如下：

```
Client sends HTTP request → Nginx chooses the appropriate handler based on the location config →  
 (if applicable) load-balancer picks a backend server →   
Handler does its thing and passes each output buffer to the first filter →   
First filter passes the output to the second filter → second to third → third to fourth → etc.   
→ Final response sent to client  
```

```
```

## Nginx 模块的结构

## 模块的配置结构

模块最多可以定义三个配置结构：main、server、location。绝大多数模块仅需要一个location 配置。名称约定如下以ngx\_http\_\_(main|srv|loc)\_conf\_t为例的dav module：

```
typedef struct {
      ngx_uint_t methods;
      ngx_flag_t create_full_put_path;
      ngx_uint_t access;
} ngx_http_dav_loc_conf_t;

```

Nginx 模块的数据结构如下定义：

```

#define NGX_MODULE_V1          0, 0, 0, 0, 0, 0, 1
#define NGX_MODULE_V1_PADDING  0, 0, 0, 0, 0, 0, 0, 0

struct ngx_module_s {
    
    ngx_uint_t            ctx_index;
    
    ngx_uint_t            index;

    
    ngx_uint_t            spare0;
    ngx_uint_t            spare1;
    ngx_uint_t            spare2;
    ngx_uint_t            spare3;

    
    ngx_uint_t            version;

    
    void                 *ctx;
    
    ngx_command_t        *commands;
    
    ngx_uint_t            type;

    
    
    ngx_int_t           (*init_master)(ngx_log_t *log);

    
    ngx_int_t           (*init_module)(ngx_cycle_t *cycle);

    
    ngx_int_t           (*init_process)(ngx_cycle_t *cycle);
    
    ngx_int_t           (*init_thread)(ngx_cycle_t *cycle);
    
    void                (*exit_thread)(ngx_cycle_t *cycle);
    
    void                (*exit_process)(ngx_cycle_t *cycle);

    
    void                (*exit_master)(ngx_cycle_t *cycle);

    
    uintptr_t             spare_hook0;
    uintptr_t             spare_hook1;
    uintptr_t             spare_hook2;
    uintptr_t             spare_hook3;
    uintptr_t             spare_hook4;
    uintptr_t             spare_hook5;
    uintptr_t             spare_hook6;
    uintptr_t             spare_hook7;
};
```

在该数据结构中，其中最重要的是两个成员 ctx和commands，这里两个成员会在分别在下面的模块配置指令和模块上下文中讲解；若是HTTP 模块时，type 字段必须定义为NGX\_HTTP\_MODULE；

## 模块配置指令

模块指令存储在一个 ngx\_command\_t 类型的静态数组结构中，例如：

```
static ngx_command_t  ngx_http_circle_gif_commands[] = {
    { ngx_string("circle_gif"),
      NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
      ngx_http_circle_gif,
      NGX_HTTP_LOC_CONF_OFFSET,
      0,
      NULL },

    { ngx_string("circle_gif_min_radius"),
      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
      ngx_conf_set_num_slot,
      NGX_HTTP_LOC_CONF_OFFSET,
      offsetof(ngx_http_circle_gif_loc_conf_t, min_radius),
      NULL },
      ...
      ngx_null_command
};
```

ngx\_command\_t 类型定义在 [core/ngx\_conf\_file.h](http://lxr.nginx.org/source/src/core/ngx_conf_file.h)：

```
struct ngx_command_s {
    
    ngx_str_t             name;
    
    ngx_uint_t            type;
    
    char               *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
    
    ngx_uint_t            conf;
    ngx_uint_t            offset;
    
    void                 *post;
};
```

name ：配置指令的名称；\
&#x20;type    ：该配置的类型，指定配置项的出现位置以及可携带参数的个数，下面规定只是其中一部分，更多信息可查看文件[core/ngx\_conf\_file.h](http://lxr.nginx.org/source/src/core/ngx_conf_file.h)：

```
NGX_HTTP_MAIN_CONF:  directive is valid in the main config
NGX_HTTP_SRV_CONF:   directive is valid in the server (host) config
NGX_HTTP_LOC_CONF:   directive is valid in a location config
NGX_HTTP_UPS_CONF:   directive is valid in an upstream config
NGX_CONF_NOARGS:     directive can take 0 arguments
NGX_CONF_TAKE1:      directive can take exactly 1 argument
NGX_CONF_TAKE2:      directive can take exactly 2 arguments
…
NGX_CONF_TAKE7:      directive can take exactly 7 arguments
NGX_CONF_FLAG:       directive takes a boolean ("on" or "off")
NGX_CONF_1MORE:      directive must be passed at least one argument
NGX_CONF_2MORE:      directive must be passed at least two arguments
```

set     ：这是一个函数指针，当Nginx 在解析配置时，若遇到该配置指令，将会把读取到的值传递给这个函数进行分解处理。因为具体每个配置指令的值如何处理，只有定义这个配置指令的人是最清楚的。来看一下这个函数指针要求的函数原型。

```
char *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
```

该函数处理成功时，返回 NGX\_OK，否则返回 NGX\_CONF\_ERROR 或者是一个自定义的错误信息的字符串。该函数传入三个类型的参数：

1. cf    ：指向ngx\_conf\_t  结构的指针，该结构包括从配置指令传递的参数；
2. cmd：指向当前ngx\_command\_t 结构；
3. conf：指向模块配置结构；

为了方便实现对配置指令参数的读取，Nginx 已经默认提供了对一些标准类型的参数进行读取的函数，可以直接赋值给set 字段使用。下面是一部分已经实现的set 类型函数，更多可参考文件[core/ngx\_conf\_file.h](http://lxr.nginx.org/source/src/core/ngx_conf_file.h)：

* ngx\_conf\_set\_flag\_slot : 把 "on" 或 "off" 解析为 1 或 0；
* ngx\_conf\_set\_str\_slot   : 解析字符串并保存 ngx\_str\_t类型；
* ngx\_conf\_set\_num\_slot: 解析一个数字并将其保存为int 类型；
* ngx\_conf\_set\_size\_slot: 解析数据大小 ("8k", "1m", etc.) 并将其保存为size\_t；

conf   ：用于指示配置项所处内存的相对偏移量，仅在type 中没有设置NGX\_DIRECT\_CONF 和NGX\_MAIN\_CONF 时才生效。对于HTTP 模块，conf 必须设置，它的取值如下：

* NGX\_HTTP\_MAIN\_CONF\_OFFSET：使用create\_main\_conf 方法产生的结构体来存储解析出的配置项参数；
* NGX\_HTTP\_SRV\_CONF\_OFFSET：使用 create\_srv\_conf 方法产生的结构体来存储解析出的配置项参数；
* NGX\_HTTP\_LOC\_CONF\_OFFSET：使用 create\_loc\_conf 方法产生的结构体来存储解析出的配置项参数；

offset ：表示当前配置项在整个存储配置项的结构体中的偏移位置。

## 模块上下文

这是一个静态的 ngx\_http\_module\_t 结构，它的名称是ngx\_http\_\_module\_ctx。以下是该结构的定义，具体可查阅文件 [http/ngx\_http\_config.h](http://lxr.nginx.org/source/src/http/ngx_http_config.h)：

* preconfiguration
* postconfiguration
* creating the main conf (i.e., do a malloc and set defaults)
* initializing the main conf (i.e., override the defaults with what's in nginx.conf)
* creating the server conf
* merging it with the main conf
* creating the location conf
* merging it with the server conf

```
typedef struct{
    
    ngx_int_t   (*preconfiguration)(ngx_conf_t *cf);
    
    ngx_int_t   (*postconfiguration)(ngx_conf_t *cf);

    
    void        *(*create_main_conf)(ngx_conf_t *cf);
    
    char        *(*init_main_conf)(ngx_conf_t *cf);

    
    void        *(*create_srv_conf)(ngx_conf_t *cf);
    
    char        *(*merge_srv_conf)(ngx_conf_t *cf, void *prev, void *conf);

    
    void        *(*create_loc_conf)(ngx_conf_t *cf);
    
    char        *(*merge_loc_conf)(ngx_conf_t *cf, void *prev, void *conf);
}ngx_http_module_t;
```

在以上的结构内容中，大多数模块只使用最后两项：ngx\_http\_*create\_loc\_conf和ngx\_http*\_merge\_loc\_conf；例如：

```
static ngx_http_module_t  ngx_http_circle_gif_module_ctx = {
    NULL,                          
    NULL,                          

    NULL,                          
    NULL,                          

    NULL,                          
    NULL,                          

    ngx_http_circle_gif_create_loc_conf,  
    ngx_http_circle_gif_merge_loc_conf 
};
```

下面针对最后两项进行说明，以下是以 circle\_gif 模块为例子，该[模块源码](http://www.evanmiller.org/nginx/ngx_http_circle_gif_module.c.txt)；

### create\_loc\_conf 函数

该函数是传入一个 ngx\_conf\_t 结构的参数，返回新创建模块的配置结构，在这里是返回：ngx\_http\_circle\_gif\_loc\_conf\_t

```
static void *
ngx_http_circle_gif_create_loc_conf(ngx_conf_t *cf)
{
    ngx_http_circle_gif_loc_conf_t  *conf;

    conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_circle_gif_loc_conf_t));
    if (conf == NULL) {
        return NGX_CONF_ERROR;
    }
    conf->min_radius = NGX_CONF_UNSET_UINT;
    conf->max_radius = NGX_CONF_UNSET_UINT;
    return conf;
}
```

### merge\_loc\_conf 函数

Nginx 为不同的数据类型提供了merge 函数，可查阅 [core/ngx\_conf\_file.h](http://lxr.nginx.org/source/src/core/ngx_conf_file.h)；merge\_loc\_conf 函数定义如下：

```
static char *
ngx_http_circle_gif_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{
    ngx_http_circle_gif_loc_conf_t *prev = parent;
    ngx_http_circle_gif_loc_conf_t *conf = child;

    ngx_conf_merge_uint_value(conf->min_radius, prev->min_radius, 10);
    ngx_conf_merge_uint_value(conf->max_radius, prev->max_radius, 20);

    if (conf->min_radius < 1) {
        ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, 
            "min_radius must be equal or more than 1");
        return NGX_CONF_ERROR;
    }
    if (conf->max_radius < conf->min_radius) {
        ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, 
            "max_radius must be equal or more than min_radius");
        return NGX_CONF_ERROR;
    }

    return NGX_CONF_OK;
}
```

## 模块的定义

对任何开发模块，都需要定义一个 ngx\_module\_t 类型的变量来说明这个模块本身的信息，它告诉了 Nginx 这个模块的一些信息。这个变量是  ngx\_http\_\_module；例如：更多例子可查找文件 [core/ngx\_conf\_file.h](http://lxr.nginx.org/source/src/core/ngx_conf_file.h)；

```
ngx_module_t  ngx_http_<module name>_module = {
    NGX_MODULE_V1,
    &ngx_http_<module name>_module_ctx, 
    ngx_http_<module name>_commands,   
    NGX_HTTP_MODULE,               
    NULL,                          
    NULL,                          
    NULL,                          
    NULL,                          
    NULL,                          
    NULL,                          
    NULL,                          
    NGX_MODULE_V1_PADDING
};
```

## Handler 模块

Handler 模块必须提供一个真正的处理函数，这个函数负责处理来自客户端的请求。该函数既可以选择自己直接生成内容，也可以选择拒绝处理，并由后续的 Handler 去进行处理，或者是选择丢给后续的 Filter 模块进行处理。以下是该函数的原型：

```
typedef ngx_int_t (*ngx_http_handler_pt)(ngx_http_request_t *r);
```

其中r 是 request 结构http 请求，包含客户端请求所有的信息，例如：request method, URI, and headers。 该函数处理成功返回NGX\_OK，处理发生错误返回NGX\_ERROR，拒绝处理（留给后续的Handler 进行处理）返回NGX\_DECLINE。 返回NGX\_OK 也就代表给客户端的响应已经生成，否则返回NGX\_ERROR 就发生错误了。

Handler 模块处理过程中做了四件事情：**获取 location 配置**、**生成合适的响应**、**发送响应的 header 头部**、**发送响应的 body 包体**。

## 获取 location 配置

获取 location 配置 指向调用 ngx\_http\_get\_module\_loc\_conf 函数即可，该函数传入的参数是 request 结构和  自定义的 module 模块。例如：circle gif模块；

```
static ngx_int_t
ngx_http_circle_gif_handler(ngx_http_request_t *r)
{
    ngx_http_circle_gif_loc_conf_t  *circle_gif_config;
    circle_gif_config = ngx_http_get_module_loc_conf(r, ngx_http_circle_gif_module);
    ...
}
```

## 生成合适的响应

这里主要是 request 结构，其定义如下：更多可参考文件  [http/ngx\_http\_request.h](http://lxr.nginx.org/source/src/http/ngx_http_request.h#L316)；

```
typedef struct {
...

    ngx_pool_t                       *pool; 
    ngx_str_t                         uri;
    ngx_str_t                         args;
    ngx_http_headers_in_t             headers_in;

...
} ngx_http_request_t;
```

其中参数的意义如下：

* uri              是 request 请求的路径,e.g. "/query.cgi".
* args           是请求串参数中问号后面的参数(e.g. "name=john").
* headers\_in 包含有用的stuff，例如：cookies 和browser 信息。

## 发送响应的 header 头部

发送响应头部有函数ngx\_http\_send\_header(r) 实现。响应的header 头部在 headers\_out 结构中，定义如下：更多可参考文件 [http/ngx\_http\_request.h](http://lxr.nginx.org/source/src/http/ngx_http_request.h#L316)；

```
typedef stuct {
...
    ngx_uint_t                        status;
    size_t                            content_type_len;
    ngx_str_t                         content_type;
    ngx_table_elt_t                  *content_encoding;
    off_t                             content_length_n;
    time_t                            date_time;
    time_t                            last_modified_time;
..
} ngx_http_headers_out_t;
```

例如，一个模块设置为 Content-Type to "image/gif", Content-Length to 100, and return a 200 OK response，则其实现为：

```
r->headers_out.status = NGX_HTTP_OK;
    r->headers_out.content_length_n = 100;
    r->headers_out.content_type.len = sizeof("image/gif") - 1;
    r->headers_out.content_type.data = (u_char *) "image/gif";
    ngx_http_send_header(r);
```

假如content\_encoding 是 (ngx\_table\_elt\_t\*)类型时，则模块需要为这些类型分配内存，可以调用ngx\_list\_push 函数，实现如下：

```
r->headers_out.content_encoding = ngx_list_push(&r->headers_out.headers);
if (r->headers_out.content_encoding == NULL) {
return NGX_ERROR;
}
r->headers_out.content_encoding->hash = 1;
r->headers_out.content_encoding->key.len = sizeof("Content-Encoding") - 1;
r->headers_out.content_encoding->key.data = (u_char *) "Content-Encoding";
r->headers_out.content_encoding->value.len = sizeof("deflate") - 1;
r->headers_out.content_encoding->value.data = (u_char *) "deflate";
ngx_http_send_header(r);
```

## 发送响应的 body 包体

到此，该模块已经产生响应，并把它存储在内存中。发送包体的步骤是：首先分配响应特殊的缓冲区，然后分配缓冲区链接到chain link，然后在 chain link 调用发送函数。

1、chain links 是 Nginx  使 Handler 模块在缓冲区中产生响应。在 chain 中每个 chain link 有一个指向下一个 link 的指针。首先，模块声明缓冲区 buffer 和 chain link：

```
ngx_buf_t    *b;
ngx_chain_t   out;
```

2、然后分配缓冲区 buffer，使响应数据指向它：

```
b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
    if (b == NULL) {
        ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, 
            "Failed to allocate response buffer.");
        return NGX_HTTP_INTERNAL_SERVER_ERROR;
    }

    b->pos = some_bytes; 
    b->last = some_bytes + some_bytes_length; 

    b->memory = 1; 
    

    b->last_buf = 1; 
```

3、接着，把模块挂载到 chain link 上：

```
out.buf = b;
out.next = NULL;
```

4、最后，发送包体：

```
return ngx_http_output_filter(r, &out);
```

## Handler 模块挂载

Handler 模块真正的处理函数通过两种方式挂载到处理过程中：按处理阶段挂载；按需挂载。

### 按处理阶段挂载

为了更精细地控制对于客户端请求的处理过程，Nginx 把这个处理过程划分成了11个阶段。依次列举如下：

```
NGX_HTTP_POST_READ_PHASE:

NGX_HTTP_SERVER_REWRITE_PHASE:

NGX_HTTP_FIND_CONFIG_PHASE:

NGX_HTTP_REWRITE_PHASE:

NGX_HTTP_POST_REWRITE_PHASE:

NGX_HTTP_PREACCESS_PHASE:

NGX_HTTP_ACCESS_PHASE:

NGX_HTTP_POST_ACCESS_PHASE:

NGX_HTTP_TRY_FILES_PHASE:

NGX_HTTP_CONTENT_PHASE:

NGX_HTTP_LOG_PHASE:

```

一般情况下，我们自定义的模块，大多数是挂载在NGX\_HTTP\_CONTENT\_PHASE阶段的。挂载的动作一般是在模块上下文调用的postconfiguration 函数中。注意：有几个阶段是特例，它不调用挂载任何的Handler，也就是你就不用挂载到这几个阶段了：

```
NGX_HTTP_FIND_CONFIG_PHASE
NGX_HTTP_POST_ACCESS_PHASE
NGX_HTTP_POST_REWRITE_PHASE
NGX_HTTP_TRY_FILES_PHASE
```

### 按需挂载

以这种方式挂载的Handler 也被称为content handler。当一个请求进来以后，Nginx 从NGX\_HTTP\_POST\_READ\_PHASE 阶段开始依次执行每个阶段中所有 Handler。执行到  NGX\_HTTP\_CONTENT\_PHASE 阶段时，如果这个location 有一个对应的content handler 模块，那么就去执行这个content handler 模块真正的处理函数。否则继续依次执行NGX\_HTTP\_CONTENT\_PHASE 阶段中所有content phase handlers，直到某个函数处理返回NGX\_OK 或者NGX\_ERROR。但是使用这个方法挂载上去的handler 有一个特点是必须在NGX\_HTTP\_CONTENT\_PHASE 阶段才能被执行。如果你想自己的handler 更早的阶段被执行，那就不要使用这种挂载方式。\
&#x20;      以下是例子：

```
circle gif ngx_command_t looks like this:

    { ngx_string("circle_gif"),
      NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
      ngx_http_circle_gif,
      0,
      0,
      NULL }
```

挂载函数：

```
static char *
ngx_http_circle_gif(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
    ngx_http_core_loc_conf_t  *clcf;

    clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
    clcf->handler = ngx_http_circle_gif_handler;

    return NGX_CONF_OK;
}
```

## Handler 模块编写

Handler 模块编写步骤如下：

1. 编写模块基本结构：包括模块的定义，模块上下文结构，模块的配置结构等；
2. 实现 handler 的挂载函数；根据模块的需求选择正确的挂载方式；
3. 编写 handler 处理函数；模块的功能主要通过这个函数来完成；

## Filter 模块

Filter 处理由Handler 模块产生的响应，即仅处理由服务器发往客户端的HTTP 响应，并不处理由客户端发往服务器的 HTTP 请求。Filter 模块包括过滤头部（Header Filter）和过滤包体（Body Filter ），Filter 模块过滤头部处理HTTP 的头部（HTTP headers），Filter 包体处理响应内容（response content）（即HTTP 包体），这两个阶段可以对HTTP 响应头部和内容进行修改。\
&#x20;      Filter 模块 HTTP 响应的方法如下：定义在文件 [src/http/ngx\_http\_core\_module.h](http://lxr.nginx.org/source/src/http/ngx_http_core_module.h)

```
typedef ngx_int_t (*ngx_http_output_header_filter_pt) (ngx_http_request_t *r);
typedef ngx_int_t (*ngx_http_output_body_filter_pt) (ngx_http_request_t *r, ngx_chain_t *chain);
```

其中，参数 r 是当前的请求，chain 是待发送的 HTTP  响应包体；

所有 HTTP 过滤模块都需要实现上面的两个方法，在 HTTP 过滤模块组成的链表中，链表元素就是处理方法。HTTP 框架定义了链表入口：

```
extern ngx_http_output_header_filter_pt  ngx_http_top_header_filter;
extern ngx_http_output_body_filter_pt  ngx_http_top_body_filter;
```

过滤模块链表中通过 next 遍历，其定义如下：

```
static ngx_http_output_header_filter_pt  ngx_http_next_header_filter;
static ngx_http_output_body_filter_pt  ngx_http_next_body_filter;
```

当执行发送 HTTP 头部或 HTTP 响应包体时，HTTP 框架是从  ngx\_http\_top\_header\_filter 和 ngx\_http\_top\_body\_filter 开始遍历 HTTP 头部过滤模块和 HTTP 包体过来模块。其源码实现在文件：[src/http/ngx\_http\_core\_module.c](http://lxr.nginx.org/source/src/http/ngx_http_core_module.c)

```

ngx_int_t
ngx_http_send_header(ngx_http_request_t *r)
{
    if (r->header_sent) {
        ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
                      "header already sent");
        return NGX_ERROR;
    }

    if (r->err_status) {
        r->headers_out.status = r->err_status;
        r->headers_out.status_line.len = 0;
    }

    return ngx_http_top_header_filter(r);
}


ngx_int_t
ngx_http_output_filter(ngx_http_request_t *r, ngx_chain_t *in)
{
    ngx_int_t          rc;
    ngx_connection_t  *c;

    c = r->connection;

    ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0,
                   "http output filter \"%V?%V\"", &r->uri, &r->args);

    rc = ngx_http_top_body_filter(r, in);

    if (rc == NGX_ERROR) {
        
        c->error = 1;
    }

    return rc;
}
```

## Filter 模块相关结构

Filter 模块是采用链表形式的，其基本结构是ngx\_chain\_t 和 ngx\_buf\_t；这两种结构定义如下：

```
typedef struct ngx_chain_s ngx_chain_t;

        struct ngx_chain_s {
                ngx_buf_t    *buf;
                ngx_chain_t  *next;
        };

struct ngx_buf_s {
        u_char          *pos;       
        u_char          *last;      
        off_t            file_pos;  
        off_t            file_last; 

        u_char          *start;    
        u_char          *end;      
        ngx_buf_tag_t    tag;      
        ngx_file_t      *file;     

        
        ngx_buf_t       *shadow;

        
        unsigned         temporary:1;

        
        unsigned         memory:1;

        
        unsigned         mmap:1;

        unsigned         recycled:1; 
        unsigned         in_file:1;  
        
        unsigned         flush:1;
        
        unsigned         sync:1;
        
        unsigned         last_buf:1;
        
        unsigned         last_in_chain:1;
        
        unsigned         last_shadow:1;
        
        unsigned         temp_file:1;

        
         int   num;
};
```

## Filter 过滤头部

header filter 包含三个基本步骤：

1. 决定是否处理响应；
2. 对响应进行处理；
3. 调用下一个 filter；

例如下面的"not modified" header filter：其中 headers\_out 结构可参考文件 [http/ngx\_http\_request.h](http://lxr.nginx.org/source/src/http/ngx_http_request.h#L220)；

```
static
ngx_int_t ngx_http_not_modified_header_filter(ngx_http_request_t *r)
{
time_t if_modified_since;

if_modified_since = ngx_http_parse_time(r->headers_in.if_modified_since->value.data,
r->headers_in.if_modified_since->value.len);


if (if_modified_since != NGX_ERROR && 
if_modified_since == r->headers_out.last_modified_time) {


r->headers_out.status = NGX_HTTP_NOT_MODIFIED;
r->headers_out.content_type.len = 0;
ngx_http_clear_content_length(r);
ngx_http_clear_accept_ranges(r);
}


return ngx_http_next_header_filter(r);
}
```

## Filter 过滤包体

Filter 包体只能在chain link缓冲区buffer 中操作。模块必须决定是否修改输入缓冲区，或分配新的缓冲区替换当前缓冲区，或是在当前缓冲区之后还是之前插入新的缓冲区。很多模块接收多个缓冲区，导致这些模块在不完整的chain 缓冲区中操作。Filter 包体操作如下：

```
static ngx_int_t ngx_http_chunked_body_filter(ngx_http_request_t *r, ngx_chain_t *in);
```

以下是一个例子：

```


    ngx_chain_t *chain_link;
    int chain_contains_last_buffer = 0;

    chain_link = in;
    for ( ; ; ) {
        if (chain_link->buf->last_buf)
            chain_contains_last_buffer = 1;
        if (chain_link->next == NULL)
            break;
        chain_link = chain_link->next;
    }


    if (!chain_contains_last_buffer)
        return ngx_http_next_body_filter(r, in);


    ngx_buf_t    *b;
    b = ngx_calloc_buf(r->pool);
    if (b == NULL) {
        return NGX_ERROR;
    }


    b->pos = (u_char *) "<!-- Served by Nginx -->";
    b->last = b->pos + sizeof("<!-- Served by Nginx -->") - 1;


    ngx_chain_t   *added_link;

    added_link = ngx_alloc_chain_link(r->pool);
    if (added_link == NULL)
        return NGX_ERROR;

    added_link->buf = b;
    added_link->next = NULL;


    chain_link->next = added_link;


    chain_link->buf->last_buf = 0;
    added_link->buf->last_buf = 1;


    return ngx_http_next_body_filter(r, in);


```

## Filter 模块挂载

Filters 模块和Handler 模块一样，也是挂载到post-configuration ，如下面代码所示：

```
static ngx_http_module_t ngx_http_chunked_filter_module_ctx = {
NULL, 
ngx_http_chunked_filter_init, 
...
};
```

其中 ngx\_http\_chunked\_filter\_init 处理如下定义：

```
static ngx_int_t
ngx_http_chunked_filter_init(ngx_conf_t *cf)
{
ngx_http_next_header_filter = ngx_http_top_header_filter;
ngx_http_top_header_filter = ngx_http_chunked_header_filter;

ngx_http_next_body_filter = ngx_http_top_body_filter;
ngx_http_top_body_filter = ngx_http_chunked_body_filter;

return NGX_OK;
}
```

由于 Filter 模块是 “CHAIN OF RESPONSIBILITY” 链表模式的。Handler 模块生成响应后，Filter 模块调用两个函数：ngx\_http\_output\_filter 和 ngx\_http\_send\_header，其中ngx\_http\_output\_filter 函数是调用全局函数 ngx\_http\_top\_body\_filter；ngx\_http\_send\_header 函数是调用全局函数 ngx\_http\_top\_header\_filter。

```
ngx_int_t
ngx_http_send_header(ngx_http_request_t *r)
{
        ...

        return ngx_http_top_header_filter(r);
}

ngx_int_t
ngx_http_output_filter(ngx_http_request_t *r, ngx_chain_t *in)
{
    ngx_int_t          rc;
    ngx_connection_t  *c;

    c = r->connection;

    rc = ngx_http_top_body_filter(r, in);

    if (rc == NGX_ERROR) {
        
        c->error = 1;
    }

    return rc;
}
```

Filter 模块的执行方式如下图所示：

## Filter 模块编写

Filter 模块编写步骤如下

* 编写基本结构：模块定义，上下文结构，基本结构；
* 初始化过滤模块：把本模块中处理的 HTTP 头部的 ngx\_http\_output\_header\_filter\_pt 方法与处理HTTP 包体的ngx\_http\_output\_body\_filter\_pt 方法插入到过滤模块链表首部；
* 实现处理 HTTP 响应的方法：处理 HTTP 头部，即 ngx\_http\_output\_header\_filter\_pt 方法的实现，处理HTTP 包体的方法，即ngx\_http\_output\_body\_filter\_pt 方法的实现；
* 编译安装；

## 开发 Nginx 新模块

把自己开发的模块编译到 Nginx 中需要编写两个文件：

1. "config"，该文件会被 ./configure 包含；
2. "ngx\_http\_\_module.c"，该文件是定义模块的功能；

config 文件的编写如下：

```


ngx_addon_name=ngx_http_<your module>_module	
HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES ngx_http_<your module>_module"	
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_<your module>_module.c"		



ngx_addon_name=ngx_http_<your module>_module
HTTP_MODULES="$HTTP_MODULES ngx_http_<your module>_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_<your module>_module.c"
```

关于 "ngx\_http\_\_module.c" 文件的编写，可参考上面的Handler 模块，同时可参考Nginx 现有的模块：[src/http/modules/](http://lxr.nginx.org/source/src/http/modules/)；例如下面的“Hello World ”代码：

```
#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_http.h>

typedef struct
{
        ngx_str_t hello_string;
        ngx_int_t hello_counter;
}ngx_http_hello_loc_conf_t;

static ngx_int_t ngx_http_hello_init(ngx_conf_t *cf);

static void *ngx_http_hello_create_loc_conf(ngx_conf_t *cf);

static char *ngx_http_hello_string(ngx_conf_t *cf, ngx_command_t *cmd,
        void *conf);
static char *ngx_http_hello_counter(ngx_conf_t *cf, ngx_command_t *cmd,
        void *conf);

static ngx_command_t ngx_http_hello_commands[] = {
   {
                ngx_string("hello_string"),
                NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1,
                ngx_http_hello_string,
                NGX_HTTP_LOC_CONF_OFFSET,
                offsetof(ngx_http_hello_loc_conf_t, hello_string),
                NULL },

        {
                ngx_string("hello_counter"),
                NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
                ngx_http_hello_counter,
                NGX_HTTP_LOC_CONF_OFFSET,
                offsetof(ngx_http_hello_loc_conf_t, hello_counter),
                NULL },

        ngx_null_command
};


static int ngx_hello_visited_times = 0;

static ngx_http_module_t ngx_http_hello_module_ctx = {
        NULL,                          
        ngx_http_hello_init,           

        NULL,                          
        NULL,                          

        NULL,                          
        NULL,                          

        ngx_http_hello_create_loc_conf, 
        NULL                            
};

ngx_module_t ngx_http_hello_module = {
        NGX_MODULE_V1,
        &ngx_http_hello_module_ctx,    
        ngx_http_hello_commands,       
        NGX_HTTP_MODULE,               
        NULL,                          
        NULL,                          
        NULL,                          
        NULL,                          
        NULL,                          
        NULL,                          
        NULL,                          
        NGX_MODULE_V1_PADDING
};

static ngx_int_t
ngx_http_hello_handler(ngx_http_request_t *r)
{
        ngx_int_t    rc;
        ngx_buf_t   *b;
        ngx_chain_t  out;
        ngx_http_hello_loc_conf_t* my_conf;
        u_char ngx_hello_string[1024] = {0};
        ngx_uint_t content_length = 0;

        ngx_log_error(NGX_LOG_EMERG, r->connection->log, 0, "ngx_http_hello_handler is called!");

        my_conf = ngx_http_get_module_loc_conf(r, ngx_http_hello_module);
        if (my_conf->hello_string.len == 0 )
        {
                ngx_log_error(NGX_LOG_EMERG, r->connection->log, 0, "hello_string is empty!");
                return NGX_DECLINED;
        }

        if (my_conf->hello_counter == NGX_CONF_UNSET
                || my_conf->hello_counter == 0)
        {
                ngx_sprintf(ngx_hello_string, "%s", my_conf->hello_string.data);
        }
        else
        {
                ngx_sprintf(ngx_hello_string, "%s Visited Times:%d", my_conf->hello_string.data,
                        ++ngx_hello_visited_times);
        }
        ngx_log_error(NGX_LOG_EMERG, r->connection->log, 0, "hello_string:%s", ngx_hello_string);
        content_length = ngx_strlen(ngx_hello_string);

        
        if (!(r->method & (NGX_HTTP_GET|NGX_HTTP_HEAD))) {
                return NGX_HTTP_NOT_ALLOWED;
        }

        
        rc = ngx_http_discard_request_body(r);

        if (rc != NGX_OK) {
                return rc;
        }

        
        
        ngx_str_set(&r->headers_out.content_type, "text/html");

        
        if (r->method == NGX_HTTP_HEAD) {
                r->headers_out.status = NGX_HTTP_OK;
                r->headers_out.content_length_n = content_length;

                return ngx_http_send_header(r);
        }

        
        b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
        if (b == NULL) {
                return NGX_HTTP_INTERNAL_SERVER_ERROR;
        }

        
        out.buf = b;
        out.next = NULL;

        
        b->pos = ngx_hello_string;
        b->last = ngx_hello_string + content_length;
        b->memory = 1;    
        b->last_buf = 1;  

        
        r->headers_out.status = NGX_HTTP_OK;
        r->headers_out.content_length_n = content_length;

        
        rc = ngx_http_send_header(r);

        if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) {
                return rc;
        }

        
        return ngx_http_output_filter(r, &out);
}

static void *ngx_http_hello_create_loc_conf(ngx_conf_t *cf)
{
        ngx_http_hello_loc_conf_t* local_conf = NULL;
        local_conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_hello_loc_conf_t));
        if (local_conf == NULL)
        {
                return NULL;
        }

        ngx_str_null(&local_conf->hello_string);
        local_conf->hello_counter = NGX_CONF_UNSET;

        return local_conf;
}



static char *
ngx_http_hello_string(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{

        ngx_http_hello_loc_conf_t* local_conf;

        local_conf = conf;
        char* rv = ngx_conf_set_str_slot(cf, cmd, conf);

        ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "hello_string:%s", local_conf->hello_string.data);

        return rv;
}

static char *ngx_http_hello_counter(ngx_conf_t *cf, ngx_command_t *cmd,
        void *conf)
{
        ngx_http_hello_loc_conf_t* local_conf;

        local_conf = conf;

        char* rv = NULL;

        rv = ngx_conf_set_flag_slot(cf, cmd, conf);

        ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "hello_counter:%d", local_conf->hello_counter);
        return rv;
}

static ngx_int_t
ngx_http_hello_init(ngx_conf_t *cf)
{
        ngx_http_handler_pt        *h;
        ngx_http_core_main_conf_t  *cmcf;

        cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module);

        h = ngx_array_push(&cmcf->phases[NGX_HTTP_CONTENT_PHASE].handlers);
        if (h == NULL) {
                return NGX_ERROR;
        }

        *h = ngx_http_hello_handler;

        return NGX_OK;
}
```

写好上面的两个文件后，在编译 Nginx 时，步骤如下：

```
./configure --add-module=path/to/your/new/module/directory
make
make install

```

参考资料：

《[Emiller's Guide To Nginx Module Development](http://www.evanmiller.org/nginx-modules-guide.html)》

《[nginx模块开发篇](http://tengine.taobao.org/book/module_development.html)》

《<https://github.com/simpl/ngx_devel_kit>》


# Nginx 启动初始化过程

## Nginx 启动过程

Nginx 的启动初始化由 main 函数完成，该函数是整个 Nginx 的入口，该函数完成 Nginx 启动初始化任务，也是所有功能模块的入口。Nginx 的初始化工作主要是一个类型为 ngx\_cycle\_t 类型的全局变量。main 函数定义在文件：[src/​core/​nginx.c](http://lxr.nginx.org/source/src/core/nginx.c)

Nginx 启动过程如下。

* 调用 ngx\_get\_options() 解析命令参数；
* 显示版本号与帮助信息；
* 调用 ngx\_time\_init() 初始化并更新时间；
* 调用 ngx\_log\_init() 初始化日志；
* 创建全局变量 init\_cycle 的内存池 pool；
* 调用 ngx\_save\_argv() 保存命令行参数至全局变量ngx\_os\_argv、ngx\_argc、ngx\_argv 中；
* 调用 ngx\_process\_options() 初始化 init\_cycle 的 prefix, conf\_prefix, conf\_file, conf\_param 等字段；
* 调用 ngx\_os\_init() 初始化系统相关变量；
* 调用 ngx\_crc32\_table\_init() 初始化CRC表；
* 调用 ngx\_add\_inherited\_sockets() 继承 sockets；
* 通过环境变量 NGINX 完成 socket 的继承，将其保存在全局变量 init\_cycle 的 listening 数组中；
* 初始化每个模块 module 的index，并计算 ngx\_max\_module；
* 调用 ngx\_init\_cycle() 进行初始化全局变量 init\_cycle，这个步骤非常重要；
* 调用 ngx\_signal\_process() 处理进程信号；
* 调用 ngx\_init\_signals() 注册相关信号；
* 若无继承 sockets，则调用 ngx\_daemon() 创建守护进程，并设置其标志；
* 调用 ngx\_create\_pidfile() 创建进程 ID 记录文件；
* 进入进程处理：
* 单进程工作模式；
* 多进程工作模式，即 master-worker 多进程工作模式；

```
int ngx_cdecl
main(int argc, char *const *argv)
{
    ngx_int_t         i;
    ngx_log_t        *log;
    ngx_cycle_t      *cycle, init_cycle;
    ngx_core_conf_t  *ccf;

    ngx_debug_init();

    if (ngx_strerror_init() != NGX_OK) {
        return 1;
    }

    
    if (ngx_get_options(argc, argv) != NGX_OK) {
        return 1;
    }

    
    if (ngx_show_version) {
        ngx_write_stderr("nginx version: " NGINX_VER NGX_LINEFEED);

        if (ngx_show_help) {
            ngx_write_stderr(
                "Usage: nginx [-?hvVtq] [-s signal] [-c filename] "
                             "[-p prefix] [-g directives]" NGX_LINEFEED
                             NGX_LINEFEED
                "Options:" NGX_LINEFEED
                "  -?,-h         : this help" NGX_LINEFEED
                "  -v            : show version and exit" NGX_LINEFEED
                "  -V            : show version and configure options then exit"
                                   NGX_LINEFEED
                "  -t            : test configuration and exit" NGX_LINEFEED
                "  -q            : suppress non-error messages "
                                   "during configuration testing" NGX_LINEFEED
                "  -s signal     : send signal to a master process: "
                                   "stop, quit, reopen, reload" NGX_LINEFEED
#ifdef NGX_PREFIX
                "  -p prefix     : set prefix path (default: "
                                   NGX_PREFIX ")" NGX_LINEFEED
#else
                "  -p prefix     : set prefix path (default: NONE)" NGX_LINEFEED
#endif
                "  -c filename   : set configuration file (default: "
                                   NGX_CONF_PATH ")" NGX_LINEFEED
                "  -g directives : set global directives out of configuration "
                                   "file" NGX_LINEFEED NGX_LINEFEED
                );
        }

        if (ngx_show_configure) {
            ngx_write_stderr(
#ifdef NGX_COMPILER
                "built by " NGX_COMPILER NGX_LINEFEED
#endif
#if (NGX_SSL)
#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME
                "TLS SNI support enabled" NGX_LINEFEED
#else
                "TLS SNI support disabled" NGX_LINEFEED
#endif
#endif
                "configure arguments:" NGX_CONFIGURE NGX_LINEFEED);
        }

        if (!ngx_test_config) {
            return 0;
        }
    }

     ngx_max_sockets = -1;

    
    ngx_time_init();

#if (NGX_PCRE)
    ngx_regex_init();
#endif

    ngx_pid = ngx_getpid();

    
    log = ngx_log_init(ngx_prefix);
    if (log == NULL) {
        return 1;
    }

    
#if (NGX_OPENSSL)
    ngx_ssl_init(log);
#endif

    

    
    ngx_memzero(&init_cycle, sizeof(ngx_cycle_t));
    init_cycle.log = log;
    ngx_cycle = &init_cycle;

    init_cycle.pool = ngx_create_pool(1024, log);
    if (init_cycle.pool == NULL) {
        return 1;
    }

    
    if (ngx_save_argv(&init_cycle, argc, argv) != NGX_OK) {
        return 1;
    }

    
    if (ngx_process_options(&init_cycle) != NGX_OK) {
        return 1;
    }

    
    if (ngx_os_init(log) != NGX_OK) {
        return 1;
    }

    

    
    if (ngx_crc32_table_init() != NGX_OK) {
        return 1;
    }

    
    if (ngx_add_inherited_sockets(&init_cycle) != NGX_OK) {
        return 1;
    }

    
    ngx_max_module = 0;
    for (i = 0; ngx_modules[i]; i++) {
        ngx_modules[i]->index = ngx_max_module++;
    }

    
    cycle = ngx_init_cycle(&init_cycle);
    if (cycle == NULL) {
        if (ngx_test_config) {
            ngx_log_stderr(0, "configuration file %s test failed",
                           init_cycle.conf_file.data);
        }

        return 1;
    }

    if (ngx_test_config) {
        if (!ngx_quiet_mode) {
            ngx_log_stderr(0, "configuration file %s test is successful",
                           cycle->conf_file.data);
        }

        return 0;
    }

    
    if (ngx_signal) {
        return ngx_signal_process(cycle, ngx_signal);
    }

    ngx_os_status(cycle->log);

    ngx_cycle = cycle;

    ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);

    if (ccf->master && ngx_process == NGX_PROCESS_SINGLE) {
        ngx_process = NGX_PROCESS_MASTER;
    }

#if !(NGX_WIN32)

    
    if (ngx_init_signals(cycle->log) != NGX_OK) {
        return 1;
    }

    
    if (!ngx_inherited && ccf->daemon) {
        if (ngx_daemon(cycle->log) != NGX_OK) {
            return 1;
        }

        ngx_daemonized = 1;
    }

    if (ngx_inherited) {
        ngx_daemonized = 1;
    }

#endif

    
    if (ngx_create_pidfile(&ccf->pid, cycle->log) != NGX_OK) {
        return 1;
    }

    if (ngx_log_redirect_stderr(cycle) != NGX_OK) {
        return 1;
    }

    if (log->file->fd != ngx_stderr) {
        if (ngx_close_file(log->file->fd) == NGX_FILE_ERROR) {
            ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
                          ngx_close_file_n " built-in log failed");
        }
    }

    ngx_use_stderr = 0;

    
    if (ngx_process == NGX_PROCESS_SINGLE) {
        
        ngx_single_process_cycle(cycle);

    } else {
        
        ngx_master_process_cycle(cycle);
    }

    return 0;
}

```

## ngx\_cycle\_t 变量初始化

## ngx\_cycle\_t 结构体初始化

在初始化过程中，ngx\_cycle\_t 类型的全局变量最为重要，该类型结构定义如下：[src/​core/​ngx\_cycle.h](http://lxr.nginx.org/source/src/core/ngx_cycle.h)

```

struct ngx_cycle_s {
    
    void                  **conf_ctx; 
    ngx_pool_t               *pool;     

    ngx_log_t                *log;      
    ngx_log_t                 new_log;

    ngx_uint_t                log_use_stderr;  

    ngx_connection_t        **files;    
    ngx_connection_t         *free_connections; 
    ngx_uint_t                free_connection_n;

    
    ngx_queue_t               reusable_connections_queue;

    ngx_array_t               listening;    
    ngx_array_t               paths;        
    ngx_list_t                open_files;   
    ngx_list_t                shared_memory;

    ngx_uint_t                connection_n; 
    ngx_uint_t                files_n;      

    ngx_connection_t         *connections;  
    ngx_event_t              *read_events;  
    ngx_event_t              *write_events; 

    
    ngx_cycle_t              *old_cycle;

    ngx_str_t                 conf_file;    
    ngx_str_t                 conf_param;   
    ngx_str_t                 conf_prefix;  
    ngx_str_t                 prefix;       
    ngx_str_t                 lock_file;    
    ngx_str_t                 hostname;     
};

```

## ngx\_init\_cycle() 初始化函数

该结构的初始化是通过函数  ngx\_init\_cycle() 完成的，该函数定义如下：[src/​core/​ngx\_cycle.c](http://lxr.nginx.org/source/src/core/ngx_cycle.c)

ngx\_cycle\_t 结构全局变量初始化过程如下：

* 更新时区与时间；
* 创建内存池；
* 分配 ngx\_cycle\_t 结构体内存，创建该结构的变量 cycle 并初始化；
* 遍历所有 core模块，并调用该模块的 create\_conf() 函数；
* 配置文件解析；
* 遍历所有core模块，并调用core模块的init\_conf()函数；
* 遍历 open\_files 链表中的每一个文件并打开；
* 创建新的共享内存并初始化；
* 遍历 listening 数组并打开所有侦听；
* 提交新的 cycle 配置，并调用所有模块的init\_module；
* 关闭或删除不被使用的在 old\_cycle 中的资源：
* 释放多余的共享内存；
* 关闭多余的侦听 sockets；
* 关闭多余的打开文件；

```
ngx_cycle_t *
ngx_init_cycle(ngx_cycle_t *old_cycle)
{
    void                *rv;
    char               **senv, **env;
    ngx_uint_t           i, n;
    ngx_log_t           *log;
    ngx_time_t          *tp;
    ngx_conf_t           conf;
    ngx_pool_t          *pool;
    ngx_cycle_t         *cycle, **old;
    ngx_shm_zone_t      *shm_zone, *oshm_zone;
    ngx_list_part_t     *part, *opart;
    ngx_open_file_t     *file;
    ngx_listening_t     *ls, *nls;
    ngx_core_conf_t     *ccf, *old_ccf;
    ngx_core_module_t   *module;
    char                 hostname[NGX_MAXHOSTNAMELEN];

    
    ngx_timezone_update();

    

    tp = ngx_timeofday();
    tp->sec = 0;

    
    ngx_time_update();

    
    log = old_cycle->log;

    pool = ngx_create_pool(NGX_CYCLE_POOL_SIZE, log);
    if (pool == NULL) {
        return NULL;
    }
    pool->log = log;

    
    cycle = ngx_pcalloc(pool, sizeof(ngx_cycle_t));
    if (cycle == NULL) {
        ngx_destroy_pool(pool);
        return NULL;
    }

    
    cycle->pool = pool;
    cycle->log = log;
    cycle->old_cycle = old_cycle;

    cycle->conf_prefix.len = old_cycle->conf_prefix.len;
    cycle->conf_prefix.data = ngx_pstrdup(pool, &old_cycle->conf_prefix);
    if (cycle->conf_prefix.data == NULL) {
        ngx_destroy_pool(pool);
        return NULL;
    }

    cycle->prefix.len = old_cycle->prefix.len;
    cycle->prefix.data = ngx_pstrdup(pool, &old_cycle->prefix);
    if (cycle->prefix.data == NULL) {
        ngx_destroy_pool(pool);
        return NULL;
    }

    cycle->conf_file.len = old_cycle->conf_file.len;
    cycle->conf_file.data = ngx_pnalloc(pool, old_cycle->conf_file.len + 1);
    if (cycle->conf_file.data == NULL) {
        ngx_destroy_pool(pool);
        return NULL;
    }
    ngx_cpystrn(cycle->conf_file.data, old_cycle->conf_file.data,
                old_cycle->conf_file.len + 1);

    cycle->conf_param.len = old_cycle->conf_param.len;
    cycle->conf_param.data = ngx_pstrdup(pool, &old_cycle->conf_param);
    if (cycle->conf_param.data == NULL) {
        ngx_destroy_pool(pool);
        return NULL;
    }

    n = old_cycle->paths.nelts ? old_cycle->paths.nelts : 10;

    cycle->paths.elts = ngx_pcalloc(pool, n * sizeof(ngx_path_t *));
    if (cycle->paths.elts == NULL) {
        ngx_destroy_pool(pool);
        return NULL;
    }

    cycle->paths.nelts = 0;
    cycle->paths.size = sizeof(ngx_path_t *);
    cycle->paths.nalloc = n;
    cycle->paths.pool = pool;

    if (old_cycle->open_files.part.nelts) {
        n = old_cycle->open_files.part.nelts;
        for (part = old_cycle->open_files.part.next; part; part = part->next) {
            n += part->nelts;
        }

    } else {
        n = 20;
    }

    if (ngx_list_init(&cycle->open_files, pool, n, sizeof(ngx_open_file_t))
        != NGX_OK)
    {
        ngx_destroy_pool(pool);
        return NULL;
    }

    if (old_cycle->shared_memory.part.nelts) {
        n = old_cycle->shared_memory.part.nelts;
        for (part = old_cycle->shared_memory.part.next; part; part = part->next)
        {
            n += part->nelts;
        }

    } else {
        n = 1;
    }

    if (ngx_list_init(&cycle->shared_memory, pool, n, sizeof(ngx_shm_zone_t))
        != NGX_OK)
    {
        ngx_destroy_pool(pool);
        return NULL;
    }

    n = old_cycle->listening.nelts ? old_cycle->listening.nelts : 10;

    cycle->listening.elts = ngx_pcalloc(pool, n * sizeof(ngx_listening_t));
    if (cycle->listening.elts == NULL) {
        ngx_destroy_pool(pool);
        return NULL;
    }

    cycle->listening.nelts = 0;
    cycle->listening.size = sizeof(ngx_listening_t);
    cycle->listening.nalloc = n;
    cycle->listening.pool = pool;

    ngx_queue_init(&cycle->reusable_connections_queue);

    cycle->conf_ctx = ngx_pcalloc(pool, ngx_max_module * sizeof(void *));
    if (cycle->conf_ctx == NULL) {
        ngx_destroy_pool(pool);
        return NULL;
    }

    if (gethostname(hostname, NGX_MAXHOSTNAMELEN) == -1) {
        ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "gethostname() failed");
        ngx_destroy_pool(pool);
        return NULL;
    }

    

    hostname[NGX_MAXHOSTNAMELEN - 1] = '\0';
    cycle->hostname.len = ngx_strlen(hostname);

    cycle->hostname.data = ngx_pnalloc(pool, cycle->hostname.len);
    if (cycle->hostname.data == NULL) {
        ngx_destroy_pool(pool);
        return NULL;
    }

    ngx_strlow(cycle->hostname.data, (u_char *) hostname, cycle->hostname.len);

    
    for (i = 0; ngx_modules[i]; i++) {
        if (ngx_modules[i]->type != NGX_CORE_MODULE) {
            continue;
        }

        module = ngx_modules[i]->ctx;

        
        if (module->create_conf) {
            rv = module->create_conf(cycle);
            if (rv == NULL) {
                ngx_destroy_pool(pool);
                return NULL;
            }
            cycle->conf_ctx[ngx_modules[i]->index] = rv;
        }
    }

    senv = environ;

    ngx_memzero(&conf, sizeof(ngx_conf_t));
    
    conf.args = ngx_array_create(pool, 10, sizeof(ngx_str_t));
    if (conf.args == NULL) {
        ngx_destroy_pool(pool);
        return NULL;
    }

    conf.temp_pool = ngx_create_pool(NGX_CYCLE_POOL_SIZE, log);
    if (conf.temp_pool == NULL) {
        ngx_destroy_pool(pool);
        return NULL;
    }

    conf.ctx = cycle->conf_ctx;
    conf.cycle = cycle;
    conf.pool = pool;
    conf.log = log;
    conf.module_type = NGX_CORE_MODULE;
    conf.cmd_type = NGX_MAIN_CONF;

#if 0
    log->log_level = NGX_LOG_DEBUG_ALL;
#endif

    
    if (ngx_conf_param(&conf) != NGX_CONF_OK) {
        environ = senv;
        ngx_destroy_cycle_pools(&conf);
        return NULL;
    }

    if (ngx_conf_parse(&conf, &cycle->conf_file) != NGX_CONF_OK) {
        environ = senv;
        ngx_destroy_cycle_pools(&conf);
        return NULL;
    }

    if (ngx_test_config && !ngx_quiet_mode) {
        ngx_log_stderr(0, "the configuration file %s syntax is ok",
                       cycle->conf_file.data);
    }

    
    for (i = 0; ngx_modules[i]; i++) {
        if (ngx_modules[i]->type != NGX_CORE_MODULE) {
            continue;
        }

        module = ngx_modules[i]->ctx;

        if (module->init_conf) {
            if (module->init_conf(cycle, cycle->conf_ctx[ngx_modules[i]->index])
                == NGX_CONF_ERROR)
            {
                environ = senv;
                ngx_destroy_cycle_pools(&conf);
                return NULL;
            }
        }
    }

    if (ngx_process == NGX_PROCESS_SIGNALLER) {
        return cycle;
    }

    ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);

    if (ngx_test_config) {

        if (ngx_create_pidfile(&ccf->pid, log) != NGX_OK) {
            goto failed;
        }

    } else if (!ngx_is_init_cycle(old_cycle)) {

        

        old_ccf = (ngx_core_conf_t *) ngx_get_conf(old_cycle->conf_ctx,
                                                   ngx_core_module);
        if (ccf->pid.len != old_ccf->pid.len
            || ngx_strcmp(ccf->pid.data, old_ccf->pid.data) != 0)
        {
            

            if (ngx_create_pidfile(&ccf->pid, log) != NGX_OK) {
                goto failed;
            }

            ngx_delete_pidfile(old_cycle);
        }
    }

    if (ngx_test_lockfile(cycle->lock_file.data, log) != NGX_OK) {
        goto failed;
    }

    
    if (ngx_create_paths(cycle, ccf->user) != NGX_OK) {
        goto failed;
    }

    if (ngx_log_open_default(cycle) != NGX_OK) {
        goto failed;
    }

    

    part = &cycle->open_files.part;
    file = part->elts;

    
    for (i = 0;  ; i++) {

        if (i >= part->nelts) {
            if (part->next == NULL) {
                break;
            }
            part = part->next;
            file = part->elts;
            i = 0;
        }

        if (file[i].name.len == 0) {
            continue;
        }

        file[i].fd = ngx_open_file(file[i].name.data,
                                   NGX_FILE_APPEND,
                                   NGX_FILE_CREATE_OR_OPEN,
                                   NGX_FILE_DEFAULT_ACCESS);

        ngx_log_debug3(NGX_LOG_DEBUG_CORE, log, 0,
                       "log: %p %d \"%s\"",
                       &file[i], file[i].fd, file[i].name.data);

        if (file[i].fd == NGX_INVALID_FILE) {
            ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
                          ngx_open_file_n " \"%s\" failed",
                          file[i].name.data);
            goto failed;
        }

#if !(NGX_WIN32)
        if (fcntl(file[i].fd, F_SETFD, FD_CLOEXEC) == -1) {
            ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
                          "fcntl(FD_CLOEXEC) \"%s\" failed",
                          file[i].name.data);
            goto failed;
        }
#endif
    }

    cycle->log = &cycle->new_log;
    pool->log = &cycle->new_log;

    
    

    part = &cycle->shared_memory.part;
    shm_zone = part->elts;

    for (i = 0;  ; i++) {

        if (i >= part->nelts) {
            if (part->next == NULL) {
                break;
            }
            part = part->next;
            shm_zone = part->elts;
            i = 0;
        }

        if (shm_zone[i].shm.size == 0) {
            ngx_log_error(NGX_LOG_EMERG, log, 0,
                          "zero size shared memory zone \"%V\"",
                          &shm_zone[i].shm.name);
            goto failed;
        }

        shm_zone[i].shm.log = cycle->log;

        opart = &old_cycle->shared_memory.part;
        oshm_zone = opart->elts;

        
        for (n = 0;  ; n++) {

            if (n >= opart->nelts) {
                if (opart->next == NULL) {
                    break;
                }
                opart = opart->next;
                oshm_zone = opart->elts;
                n = 0;
            }

            if (shm_zone[i].shm.name.len != oshm_zone[n].shm.name.len) {
                continue;
            }

            if (ngx_strncmp(shm_zone[i].shm.name.data,
                            oshm_zone[n].shm.name.data,
                            shm_zone[i].shm.name.len)
                != 0)
            {
                continue;
            }

            if (shm_zone[i].tag == oshm_zone[n].tag
                && shm_zone[i].shm.size == oshm_zone[n].shm.size)
            {
                shm_zone[i].shm.addr = oshm_zone[n].shm.addr;

                if (shm_zone[i].init(&shm_zone[i], oshm_zone[n].data)
                    != NGX_OK)
                {
                    goto failed;
                }

                goto shm_zone_found;
            }

            ngx_shm_free(&oshm_zone[n].shm);

            break;
        }

        if (ngx_shm_alloc(&shm_zone[i].shm) != NGX_OK) {
            goto failed;
        }

        if (ngx_init_zone_pool(cycle, &shm_zone[i]) != NGX_OK) {
            goto failed;
        }

        if (shm_zone[i].init(&shm_zone[i], NULL) != NGX_OK) {
            goto failed;
        }

    shm_zone_found:

        continue;
    }

    
    

    if (old_cycle->listening.nelts) {
        ls = old_cycle->listening.elts;
        for (i = 0; i < old_cycle->listening.nelts; i++) {
            ls[i].remain = 0;
        }

        nls = cycle->listening.elts;
        for (n = 0; n < cycle->listening.nelts; n++) {

            for (i = 0; i < old_cycle->listening.nelts; i++) {
                if (ls[i].ignore) {
                    continue;
                }

                if (ngx_cmp_sockaddr(nls[n].sockaddr, nls[n].socklen,
                                     ls[i].sockaddr, ls[i].socklen, 1)
                    == NGX_OK)
                {
                    nls[n].fd = ls[i].fd;
                    nls[n].previous = &ls[i];
                    ls[i].remain = 1;

                    if (ls[i].backlog != nls[n].backlog) {
                        nls[n].listen = 1;
                    }

#if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)

                    
                    nls[n].deferred_accept = ls[i].deferred_accept;

                    if (ls[i].accept_filter && nls[n].accept_filter) {
                        if (ngx_strcmp(ls[i].accept_filter,
                                       nls[n].accept_filter)
                            != 0)
                        {
                            nls[n].delete_deferred = 1;
                            nls[n].add_deferred = 1;
                        }

                    } else if (ls[i].accept_filter) {
                        nls[n].delete_deferred = 1;

                    } else if (nls[n].accept_filter) {
                        nls[n].add_deferred = 1;
                    }
#endif

#if (NGX_HAVE_DEFERRED_ACCEPT && defined TCP_DEFER_ACCEPT)

                    if (ls[i].deferred_accept && !nls[n].deferred_accept) {
                        nls[n].delete_deferred = 1;

                    } else if (ls[i].deferred_accept != nls[n].deferred_accept)
                    {
                        nls[n].add_deferred = 1;
                    }
#endif
                    break;
                }
            }

            if (nls[n].fd == (ngx_socket_t) -1) {
                nls[n].open = 1;
#if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
                if (nls[n].accept_filter) {
                    nls[n].add_deferred = 1;
                }
#endif
#if (NGX_HAVE_DEFERRED_ACCEPT && defined TCP_DEFER_ACCEPT)
                if (nls[n].deferred_accept) {
                    nls[n].add_deferred = 1;
                }
#endif
            }
        }

    } else {
        ls = cycle->listening.elts;
        for (i = 0; i < cycle->listening.nelts; i++) {
            ls[i].open = 1;
#if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
            if (ls[i].accept_filter) {
                ls[i].add_deferred = 1;
            }
#endif
#if (NGX_HAVE_DEFERRED_ACCEPT && defined TCP_DEFER_ACCEPT)
            if (ls[i].deferred_accept) {
                ls[i].add_deferred = 1;
            }
#endif
        }
    }

    
    if (ngx_open_listening_sockets(cycle) != NGX_OK) {
        goto failed;
    }

    if (!ngx_test_config) {
        ngx_configure_listening_sockets(cycle);
    }

    
    

    if (!ngx_use_stderr) {
        (void) ngx_log_redirect_stderr(cycle);
    }

    pool->log = cycle->log;

    for (i = 0; ngx_modules[i]; i++) {
        if (ngx_modules[i]->init_module) {
            if (ngx_modules[i]->init_module(cycle) != NGX_OK) {
                
                exit(1);
            }
        }
    }

    
    

    

    opart = &old_cycle->shared_memory.part;
    oshm_zone = opart->elts;

    for (i = 0;  ; i++) {

        if (i >= opart->nelts) {
            if (opart->next == NULL) {
                goto old_shm_zone_done;
            }
            opart = opart->next;
            oshm_zone = opart->elts;
            i = 0;
        }

        part = &cycle->shared_memory.part;
        shm_zone = part->elts;

        for (n = 0;  ; n++) {

            if (n >= part->nelts) {
                if (part->next == NULL) {
                    break;
                }
                part = part->next;
                shm_zone = part->elts;
                n = 0;
            }

            if (oshm_zone[i].shm.name.len == shm_zone[n].shm.name.len
                && ngx_strncmp(oshm_zone[i].shm.name.data,
                               shm_zone[n].shm.name.data,
                               oshm_zone[i].shm.name.len)
                == 0)
            {
                goto live_shm_zone;
            }
        }

        ngx_shm_free(&oshm_zone[i].shm);

    live_shm_zone:

        continue;
    }

old_shm_zone_done:

    

    ls = old_cycle->listening.elts;
    for (i = 0; i < old_cycle->listening.nelts; i++) {

        if (ls[i].remain || ls[i].fd == (ngx_socket_t) -1) {
            continue;
        }

        if (ngx_close_socket(ls[i].fd) == -1) {
            ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
                          ngx_close_socket_n " listening socket on %V failed",
                          &ls[i].addr_text);
        }

#if (NGX_HAVE_UNIX_DOMAIN)

        if (ls[i].sockaddr->sa_family == AF_UNIX) {
            u_char  *name;

            name = ls[i].addr_text.data + sizeof("unix:") - 1;

            ngx_log_error(NGX_LOG_WARN, cycle->log, 0,
                          "deleting socket %s", name);

            if (ngx_delete_file(name) == NGX_FILE_ERROR) {
                ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_socket_errno,
                              ngx_delete_file_n " %s failed", name);
            }
        }

#endif
    }

    

    part = &old_cycle->open_files.part;
    file = part->elts;

    for (i = 0;  ; i++) {

        if (i >= part->nelts) {
            if (part->next == NULL) {
                break;
            }
            part = part->next;
            file = part->elts;
            i = 0;
        }

        if (file[i].fd == NGX_INVALID_FILE || file[i].fd == ngx_stderr) {
            continue;
        }

        if (ngx_close_file(file[i].fd) == NGX_FILE_ERROR) {
            ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
                          ngx_close_file_n " \"%s\" failed",
                          file[i].name.data);
        }
    }

    ngx_destroy_pool(conf.temp_pool);

    if (ngx_process == NGX_PROCESS_MASTER || ngx_is_init_cycle(old_cycle)) {

        

        env = environ;
        environ = senv;

        ngx_destroy_pool(old_cycle->pool);
        cycle->old_cycle = NULL;

        environ = env;

        return cycle;
    }

    if (ngx_temp_pool == NULL) {
        ngx_temp_pool = ngx_create_pool(128, cycle->log);
        if (ngx_temp_pool == NULL) {
            ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
                          "could not create ngx_temp_pool");
            exit(1);
        }

        n = 10;
        ngx_old_cycles.elts = ngx_pcalloc(ngx_temp_pool,
                                          n * sizeof(ngx_cycle_t *));
        if (ngx_old_cycles.elts == NULL) {
            exit(1);
        }
        ngx_old_cycles.nelts = 0;
        ngx_old_cycles.size = sizeof(ngx_cycle_t *);
        ngx_old_cycles.nalloc = n;
        ngx_old_cycles.pool = ngx_temp_pool;

        ngx_cleaner_event.handler = ngx_clean_old_cycles;
        ngx_cleaner_event.log = cycle->log;
        ngx_cleaner_event.data = &dumb;
        dumb.fd = (ngx_socket_t) -1;
    }

    ngx_temp_pool->log = cycle->log;

    old = ngx_array_push(&ngx_old_cycles);
    if (old == NULL) {
        exit(1);
    }
    *old = old_cycle;

    if (!ngx_cleaner_event.timer_set) {
        ngx_add_timer(&ngx_cleaner_event, 30000);
        ngx_cleaner_event.timer_set = 1;
    }

    return cycle;

failed:

    if (!ngx_is_init_cycle(old_cycle)) {
        old_ccf = (ngx_core_conf_t *) ngx_get_conf(old_cycle->conf_ctx,
                                                   ngx_core_module);
        if (old_ccf->environment) {
            environ = old_ccf->environment;
        }
    }

    

    part = &cycle->open_files.part;
    file = part->elts;

    for (i = 0;  ; i++) {

        if (i >= part->nelts) {
            if (part->next == NULL) {
                break;
            }
            part = part->next;
            file = part->elts;
            i = 0;
        }

        if (file[i].fd == NGX_INVALID_FILE || file[i].fd == ngx_stderr) {
            continue;
        }

        if (ngx_close_file(file[i].fd) == NGX_FILE_ERROR) {
            ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
                          ngx_close_file_n " \"%s\" failed",
                          file[i].name.data);
        }
    }

    if (ngx_test_config) {
        ngx_destroy_cycle_pools(&conf);
        return NULL;
    }

    ls = cycle->listening.elts;
    for (i = 0; i < cycle->listening.nelts; i++) {
        if (ls[i].fd == (ngx_socket_t) -1 || !ls[i].open) {
            continue;
        }

        if (ngx_close_socket(ls[i].fd) == -1) {
            ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
                          ngx_close_socket_n " %V failed",
                          &ls[i].addr_text);
        }
    }

    ngx_destroy_cycle_pools(&conf);

    return NULL;
}

```

参考资料：\
&#x20;《 [nginx源码分析—启动流程](http://blog.csdn.net/livelylittlefish/article/details/7243718)》

《[Nginx启动初始化过程](http://www.alidata.org/archives/1148)》


# Nginx 配置解析

## 概述

在上一篇文章《 [Nginx 启动初始化过程](http://blog.csdn.net/chenhanzhun/article/details/42611315)》简单介绍了 Nginx 启动的过程，并分析了其启动过程的源码。在启动过程中有一个步骤非常重要，就是调用函数 ngx\_init\_cycle()，该函数的调用为配置解析提供了接口。配置解析接口大概可分为两个阶段：**准备数据阶段**和**配置解析阶段**；

准备数据阶段包括：

* 准备内存；
* 准备错误日志；
* 准备所需数据结构；

配置解析阶段是调用函数：

```
      
    if (ngx_conf_param(&conf) != NGX_CONF_OK) {  
        environ = senv;  
        ngx_destroy_cycle_pools(&conf);  
        return NULL;  
    }  
  
    if (ngx_conf_parse(&conf, &cycle->conf_file) != NGX_CONF_OK) {  
        environ = senv;  
        ngx_destroy_cycle_pools(&conf);  
        return NULL;  
    }  

```

## 配置解析

## ngx\_conf\_t 结构体

该结构体用于 Nginx 在解析配置文件时描述每个指令的属性，也是Nginx 程序中非常重要的一个数据结构，其定义于文件：[src/core/ngx\_conf\_file.h](http://lxr.nginx.org/source/src/core/ngx_conf_file.h)

```

struct ngx_conf_s {
    char                 *name;     
    ngx_array_t          *args;     

    ngx_cycle_t          *cycle;    
    ngx_pool_t           *pool;     
    ngx_pool_t           *temp_pool;
    ngx_conf_file_t      *conf_file;
    ngx_log_t            *log;      

    void                 *ctx;      
    ngx_uint_t            module_type;
    ngx_uint_t            cmd_type; 

    ngx_conf_handler_pt   handler;  
    char                 *handler_conf;
};

```

### 配置文件信息 conf\_file

conf\_file 是存放 Nginx 配置文件的相关信息。ngx\_conf\_file\_t 结构体的定义如下：

```
typedef struct {
    ngx_file_t            file;     
    ngx_buf_t            *buffer;   
    ngx_uint_t            line;     
} ngx_conf_file_t;
```

### 配置上下文 ctx

Nginx 的配置文件是分块配置的，常见的有http 块、server 块、location 块以及upsteam 块和 mail 块等。每一个这样的配置块代表一个作用域。高一级配置块的作用域包含了多个低一级配置块的作用域，也就是有作用域嵌套的现象。这样，配置文件中的许多指令都会同时包含在多个作用域内。比如，http 块中的指令都可能同时处于http 块、server 块和location 块等三层作用域内。

在 Nginx 程序解析配置文件时，每一条指令都应该记录自己所属的作用域范围，而配置文件上下文ctx 变量就是用来存放当前指令所属的作用域的。在Nginx 配置文件的各种配置块中，http 块可以包含子配置块，这在存储结构上比较复杂。

### 指令类型 type

Nginx 程序中的不同的指令类型以宏的形式定义在不同的源码头文件中，指令类型是core 模块类型的定义在文件：[src/core/ngx\_conf\_file.h](http://lxr.nginx.org/source/src/core/ngx_conf_file.h)

```
#define NGX_DIRECT_CONF            0x00010000  
#define NGX_MAIN_CONF              0x01000000  
#define NGX_ANY_CONF               0x0F000000 
```

这些是 core 类型模块支持的指令类型。其中的 NGX\_DIRECT\_CONF类指令在 Nginx 程序进入配置解析函数之前已经初始化完成，所以在进入配置解析函数之后可以将它们直接解析并存储到实际的数据结构中，从配置文件的结构上来看，它们一般指的就是那些游离于配置块之外、处于配置文件全局块部分的指令。NGX\_MAIN\_CONF 类指令包括event、http、mail、upstream 等可以形成配置块的指令，它们没有自己的初始化函数。Nginx 程序在解析配置文件时如果遇到 NGX\_MAIN\_CONF 类指令，将转入对下一级指令的解析。\
&#x20;      以下是 event 类型模块支持的指令类型。

```
#define NGX_EVENT_CONF            0x02000000 
```

以下是 http 类型模块支持的指令类型，其定义在文件：[src/http/ngx\_http\_config.h](http://lxr.nginx.org/source/src/http/ngx_http_config.h)

```
#define NGX_HTTP_MAIN_CONF          0x02000000  
#define NGX_HTTP_SRV_CONF           0x04000000  
#define NGX_HTTP_LOC_CONF           0x08000000  
#define NGX_HTTP_UPS_CONF           0x10000000  
#define NGX_HTTP_SIF_CONF           0x20000000  
#define NGX_HTTP_LIF_CONF           0x40000000  
#define NGX_HTTP_LMT_CONF           0x80000000  
```

## 通用模块配置解析

配置解析模块在 [src/core/ngx\_conf\_file.c](http://lxr.nginx.org/source/src/core/ngx_conf_file.c) 中实现。模块提供的接口函数主要是ngx\_conf\_parse。另外，模块提供另一个单独的接口ngx\_conf\_param，用来解析命令行传递的配置，这个接口也是对ngx\_conf\_parse 的包装。首先看下配置解析函数 ngx\_conf\_parse，其定义如下：

```

char *
ngx_conf_parse(ngx_conf_t *cf, ngx_str_t *filename)
{
    char             *rv;
    ngx_fd_t          fd;
    ngx_int_t         rc;
    ngx_buf_t         buf;
    ngx_conf_file_t  *prev, conf_file;
    enum {
        parse_file = 0,
        parse_block,
        parse_param
    } type;

#if (NGX_SUPPRESS_WARN)
    fd = NGX_INVALID_FILE;
    prev = NULL;
#endif

    if (filename) {

        

        
        fd = ngx_open_file(filename->data, NGX_FILE_RDONLY, NGX_FILE_OPEN, 0);
        if (fd == NGX_INVALID_FILE) {
            ngx_conf_log_error(NGX_LOG_EMERG, cf, ngx_errno,
                               ngx_open_file_n " \"%s\" failed",
                               filename->data);
            return NGX_CONF_ERROR;
        }

        prev = cf->conf_file;

        cf->conf_file = &conf_file;

        if (ngx_fd_info(fd, &cf->conf_file->file.info) == NGX_FILE_ERROR) {
            ngx_log_error(NGX_LOG_EMERG, cf->log, ngx_errno,
                          ngx_fd_info_n " \"%s\" failed", filename->data);
        }

        cf->conf_file->buffer = &buf;

        buf.start = ngx_alloc(NGX_CONF_BUFFER, cf->log);
        if (buf.start == NULL) {
            goto failed;
        }

        buf.pos = buf.start;
        buf.last = buf.start;
        buf.end = buf.last + NGX_CONF_BUFFER;
        buf.temporary = 1;

        
        cf->conf_file->file.fd = fd;
        cf->conf_file->file.name.len = filename->len;
        cf->conf_file->file.name.data = filename->data;
        cf->conf_file->file.offset = 0;
        cf->conf_file->file.log = cf->log;
        cf->conf_file->line = 1;

        type = parse_file;  

    } else if (cf->conf_file->file.fd != NGX_INVALID_FILE) {

        type = parse_block; 

    } else {
        type = parse_param; 
    }

    for ( ;; ) {
        
        rc = ngx_conf_read_token(cf);

        

        if (rc == NGX_ERROR) {
            goto done;
        }

        
        if (rc == NGX_CONF_BLOCK_DONE) {

            if (type != parse_block) {
                ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "unexpected \"}\"");
                goto failed;
            }

            goto done;
        }

        
        if (rc == NGX_CONF_FILE_DONE) {

            if (type == parse_block) {
                ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                                   "unexpected end of file, expecting \"}\"");
                goto failed;
            }

            goto done;
        }

        if (rc == NGX_CONF_BLOCK_START) {

            if (type == parse_param) {
                ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                                   "block directives are not supported "
                                   "in -g option");
                goto failed;
            }
        }

        

        
        if (cf->handler) {

            

            if (rc == NGX_CONF_BLOCK_START) {
                ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "unexpected \"{\"");
                goto failed;
            }

            
            rv = (*cf->handler)(cf, NULL, cf->handler_conf);
            if (rv == NGX_CONF_OK) {
                continue;
            }

            if (rv == NGX_CONF_ERROR) {
                goto failed;
            }

            ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, rv);

            goto failed;
        }

        
        rc = ngx_conf_handler(cf, rc);

        if (rc == NGX_ERROR) {
            goto failed;
        }
    }

failed:

    rc = NGX_ERROR;

done:

    if (filename) {
        if (cf->conf_file->buffer->start) {
            ngx_free(cf->conf_file->buffer->start);
        }

        if (ngx_close_file(fd) == NGX_FILE_ERROR) {
            ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
                          ngx_close_file_n " %s failed",
                          filename->data);
            return NGX_CONF_ERROR;
        }

        cf->conf_file = prev;
    }

    if (rc == NGX_ERROR) {
        return NGX_CONF_ERROR;
    }

    return NGX_CONF_OK;
}

```

从配置解析函数的源码可以看出，该函数分为两个阶段：**语法分析**和 **指令解析**。语法分析由 ngx\_conf\_read\_token()函数完成。指令解析有两种方式：一种是Nginx 内建的指令解析机制；另一种是自定义的指令解析机制。自定义指令解析源码如下所示：

```
        
        if (cf->handler) {

            

            if (rc == NGX_CONF_BLOCK_START) {
                ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "unexpected \"{\"");
                goto failed;
            }

            
            rv = (*cf->handler)(cf, NULL, cf->handler_conf);
            if (rv == NGX_CONF_OK) {
                continue;
            }

            if (rv == NGX_CONF_ERROR) {
                goto failed;
            }

            ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, rv);

            goto failed;
        }

```

而Nginx 内置解析机制有函数ngx\_conf\_handler() 实现。其定义如下：

```

static ngx_int_t
ngx_conf_handler(ngx_conf_t *cf, ngx_int_t last)
{
    char           *rv;
    void           *conf, **confp;
    ngx_uint_t      i, found;
    ngx_str_t      *name;
    ngx_command_t  *cmd;

    name = cf->args->elts;

    found = 0;

    for (i = 0; ngx_modules[i]; i++) {

        cmd = ngx_modules[i]->commands;
        if (cmd == NULL) {
            continue;
        }

        for (  ; cmd->name.len; cmd++) {

            if (name->len != cmd->name.len) {
                continue;
            }

            if (ngx_strcmp(name->data, cmd->name.data) != 0) {
                continue;
            }

            found = 1;

            
            if (ngx_modules[i]->type != NGX_CONF_MODULE
                && ngx_modules[i]->type != cf->module_type)
            {
                continue;
            }

            

            if (!(cmd->type & cf->cmd_type)) {
                continue;
            }

            
            if (!(cmd->type & NGX_CONF_BLOCK) && last != NGX_OK) {
                ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                                  "directive \"%s\" is not terminated by \";\"",
                                  name->data);
                return NGX_ERROR;
            }

            
            if ((cmd->type & NGX_CONF_BLOCK) && last != NGX_CONF_BLOCK_START) {
                ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                                   "directive \"%s\" has no opening \"{\"",
                                   name->data);
                return NGX_ERROR;
            }

            

            
            if (!(cmd->type & NGX_CONF_ANY)) {

                
                if (cmd->type & NGX_CONF_FLAG) {

                    if (cf->args->nelts != 2) {
                        goto invalid;
                    }

                } else if (cmd->type & NGX_CONF_1MORE) {

                    if (cf->args->nelts < 2) {
                        goto invalid;
                    }

                } else if (cmd->type & NGX_CONF_2MORE) {

                    if (cf->args->nelts < 3) {
                        goto invalid;
                    }

                } else if (cf->args->nelts > NGX_CONF_MAX_ARGS) {

                    goto invalid;

                } else if (!(cmd->type & argument_number[cf->args->nelts - 1]))
                {
                    goto invalid;
                }
            }

            

            conf = NULL;

            if (cmd->type & NGX_DIRECT_CONF) {
                conf = ((void **) cf->ctx)[ngx_modules[i]->index];

            } else if (cmd->type & NGX_MAIN_CONF) {
                conf = &(((void **) cf->ctx)[ngx_modules[i]->index]);

            } else if (cf->ctx) {
                confp = *(void **) ((char *) cf->ctx + cmd->conf);

                if (confp) {
                    conf = confp[ngx_modules[i]->ctx_index];
                }
            }

            
            rv = cmd->set(cf, cmd, conf);

            if (rv == NGX_CONF_OK) {
                return NGX_OK;
            }

            if (rv == NGX_CONF_ERROR) {
                return NGX_ERROR;
            }

            ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                               "\"%s\" directive %s", name->data, rv);

            return NGX_ERROR;
        }
    }

    if (found) {
        ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                           "\"%s\" directive is not allowed here", name->data);

        return NGX_ERROR;
    }

    ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                       "unknown directive \"%s\"", name->data);

    return NGX_ERROR;

invalid:

    ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                       "invalid number of arguments in \"%s\" directive",
                       name->data);

    return NGX_ERROR;
}

```

## HTTP 模块配置解析

这里主要是结构体 *ngx\_command\_t* ，我们在文章 《[Nginx 模块开发](http://blog.csdn.net/chenhanzhun/article/details/42528951)》 对该结构体作了介绍，其定义如下：

```
struct ngx_command_s {  
      
    ngx_str_t             name;  
      
    ngx_uint_t            type;  
      
    char               *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);  
      
    ngx_uint_t            conf;  
    ngx_uint_t            offset;  
      
    void                 *post;  
}; 

```

若在上面的通用配置解析中，定义了如下的 http 配置项结构，则回调用http 配置项，并对该http 配置项进行解析。此时，解析的是http block 块设置。

```
static ngx_command_t  ngx_http_commands[] = {

    { ngx_string("http"),
      NGX_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
      ngx_http_block,
      0,
      0,
      NULL },

      ngx_null_command
};

```

http 是作为一个 core 模块被 nginx 通用解析过程解析的，其核心就是http{} 块指令回调，它完成了http 解析的整个功能，从初始化到计算配置结果。http{} 块指令的流程是：

* 创建并初始化上下文结构；
* 调用通用模块配置解析流程解析；
* 根据解析结果进行配置项合并处理；

## 创建并初始化上下文结构

当 Nginx 检查到 http{…} 配置项时，HTTP 配置模型就会启动，则会建立一个*ngx\_http\_conf\_ctx\_t* 结构，该结构定义在文件中：[src/http/ngx\_http\_config.h](http://lxr.nginx.org/source/src/core/ngx_conf_file.h)

```
typedef struct{
　　
   void **main_conf;
   
   void **srv_conf;
   
   void **loc_conf;
}ngx_http_conf_ctx_t;

```

此时，HTTP 框架为所有 HTTP 模块建立 3 个数组，分别存放所有 HTTP 模块的*create\_main\_conf*、*create\_srv\_conf* 、*create\_loc\_conf* 方法返回的地址指针。*ngx\_http\_conf\_ctx\_t* 结构的三个成员分别指向这 3 个数组。例如下面的例子是设置 *create\_main\_conf*、*create\_srv\_conf* 、*create\_loc\_conf*  返回的地址。

```
ngx_http_conf_ctx *ctx;

ctx = ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t));

*(ngx_http_conf_ctx_t **) conf = ctx;

...

ctx->main_conf = ngx_pcalloc(cf->pool,
                             sizeof(void *) * ngx_http_max_module);

ctx->srv_conf = ngx_pcalloc(cf->pool, sizeof(void *) * ngx_http_max_module);

ctx->loc_conf = ngx_pcalloc(cf->pool, sizeof(void *) * ngx_http_max_module);


for (m = 0; ngx_modules[m]; m++) {
    if (ngx_modules[m]->type != NGX_HTTP_MODULE) {
        continue;
    }

    module = ngx_modules[m]->ctx;
    mi = ngx_modules[m]->ctx_index;

    
    if (module->create_main_conf) {
        ctx->main_conf[mi] = module->create_main_conf(cf);
    }
    
    if (module->create_srv_conf) {
        ctx->srv_conf[mi] = module->create_srv_conf(cf);
    }
    
    if (module->create_loc_conf) {
        ctx->loc_conf[mi] = module->create_loc_conf(cf);
    }
}

pcf = *cf;
cf->ctx = ctx;

for (m = 0; ngx_modules[m]; m++) {
    if (ngx_modules[m]->type != NGX_HTTP_MODULE) {
        continue;
    }

    module = ngx_modules[m]->ctx;

    if (module->preconfiguration) {
        if (module->preconfiguration(cf) != NGX_OK) {
            return NGX_CONF_ERROR;
        }
    }
}

```

## 调用通用模块配置解析流程解析

从源码 [src/http/ngx\_http.c](http://lxr.nginx.org/source/src/http/ngx_http.c) 中可以看到，http 块的配置解析是调用通用模块的配置解析函数，其实现如下：

```
    
    

    cf->module_type = NGX_HTTP_MODULE;
    cf->cmd_type = NGX_HTTP_MAIN_CONF;
    rv = ngx_conf_parse(cf, NULL);

    if (rv != NGX_CONF_OK) {
        goto failed;
    }

```

## 根据解析结果进行配置项合并处理

```
    
    

    cmcf = ctx->main_conf[ngx_http_core_module.ctx_index];
    cscfp = cmcf->servers.elts;

    for (m = 0; ngx_modules[m]; m++) {
        if (ngx_modules[m]->type != NGX_HTTP_MODULE) {
            continue;
        }

        module = ngx_modules[m]->ctx;
        mi = ngx_modules[m]->ctx_index;

        

        if (module->init_main_conf) {
            rv = module->init_main_conf(cf, ctx->main_conf[mi]);
            if (rv != NGX_CONF_OK) {
                goto failed;
            }
        }

        rv = ngx_http_merge_servers(cf, cmcf, module, mi);
        if (rv != NGX_CONF_OK) {
            goto failed;
        }
    }

    

    for (s = 0; s < cmcf->servers.nelts; s++) {

        clcf = cscfp[s]->ctx->loc_conf[ngx_http_core_module.ctx_index];

        if (ngx_http_init_locations(cf, cscfp[s], clcf) != NGX_OK) {
            return NGX_CONF_ERROR;
        }

        if (ngx_http_init_static_location_trees(cf, clcf) != NGX_OK) {
            return NGX_CONF_ERROR;
        }
    }

    if (ngx_http_init_phases(cf, cmcf) != NGX_OK) {
        return NGX_CONF_ERROR;
    }

    if (ngx_http_init_headers_in_hash(cf, cmcf) != NGX_OK) {
        return NGX_CONF_ERROR;
    }

    for (m = 0; ngx_modules[m]; m++) {
        if (ngx_modules[m]->type != NGX_HTTP_MODULE) {
            continue;
        }

        module = ngx_modules[m]->ctx;

        if (module->postconfiguration) {
            if (module->postconfiguration(cf) != NGX_OK) {
                return NGX_CONF_ERROR;
            }
        }
    }

    if (ngx_http_variables_init_vars(cf) != NGX_OK) {
        return NGX_CONF_ERROR;
    }

    

    *cf = pcf;

    if (ngx_http_init_phase_handlers(cf, cmcf) != NGX_OK) {
        return NGX_CONF_ERROR;
    }

    

    if (ngx_http_optimize_servers(cf, cmcf, cmcf->ports) != NGX_OK) {
        return NGX_CONF_ERROR;
    }

    return NGX_CONF_OK;

failed:

    *cf = pcf;

    return rv;

```

## HTTP 配置解析流程

从上面的分析中可以总结出 HTTP 配置解析的流程如下：

* Nginx 进程进入主循环，在主循环中调用配置解析器解析配置文件*nginx.conf*;
* 在配置文件中遇到 http{} 块配置，则 HTTP 框架开始初始化并启动，其由函数 ngx\_http\_block() 实现；
* HTTP 框架初始化所有 HTTP 模块的序列号，并创建 3 个类型为 *ngx\_http\_conf\_ctx\_t 结构的数组用于存储所有HTTP 模块的*create\_main\_conf、*create\_srv\_conf*、*create\_loc\_conf*方法返回的指针地址；
* 调用每个 HTTP 模块的 preconfiguration 方法；
* HTTP 框架调用函数 ngx\_conf\_parse() 开始循环解析配置文件 \*nginx.conf \*中的http{}块里面的所有配置项；
* HTTP 框架处理完毕 http{} 配置项，根据解析配置项的结果，必要时进行配置项合并处理；
* 继续处理其他 http{} 块之外的配置项，直到配置文件解析器处理完所有配置项后通知Nginx 主循环配置项解析完毕。此时，Nginx 才会启动Web 服务器；

## 合并配置项

HTTP 框架解析完毕 http{} 块配置项时，会根据解析的结果进行合并配置项操作，即合并 http{}、server{}、location{} 不同块下各HTTP 模块生成的存放配置项的结构体。其合并过程如下所示：

* 若 HTTP 模块实现了 *merge\_srv\_conf* 方法，则将 http{} 块下*create\_srv\_conf* 生成的结构体与遍历每一个 server{}配置块下的结构体进行*merge\_srv\_conf* 操作；
* 若 HTTP 模块实现了 *merge\_loc\_conf* 方法，则将 http{} 块下*create\_loc\_conf* 生成的结构体与嵌套每一个server{} 配置块下的结构体进行*merge\_loc\_conf* 操作；
* 若 HTTP 模块实现了 *merge\_loc\_conf* 方法，则将server{} 块下*create\_loc\_conf* 生成的结构体与嵌套每一个location{}配置块下的结构体进行*merge\_loc\_conf* 操作；
* 若 HTTP 模块实现了 *merge\_loc\_conf* 方法，则将location{} 块下*create\_loc\_conf* 生成的结构体与嵌套每一个location{}配置块下的结构体进行*merge\_loc\_conf* 操作；

以下是合并配置项操作的源码实现：

```

static char *
ngx_http_merge_servers(ngx_conf_t *cf, ngx_http_core_main_conf_t *cmcf,
    ngx_http_module_t *module, ngx_uint_t ctx_index)
{
    char                        *rv;
    ngx_uint_t                   s;
    ngx_http_conf_ctx_t         *ctx, saved;
    ngx_http_core_loc_conf_t    *clcf;
    ngx_http_core_srv_conf_t   **cscfp;

    cscfp = cmcf->servers.elts;
    ctx = (ngx_http_conf_ctx_t *) cf->ctx;
    saved = *ctx;
    rv = NGX_CONF_OK;

    
    for (s = 0; s < cmcf->servers.nelts; s++) {

        

        ctx->srv_conf = cscfp[s]->ctx->srv_conf;

        
        if (module->merge_srv_conf) {
            rv = module->merge_srv_conf(cf, saved.srv_conf[ctx_index],
                                        cscfp[s]->ctx->srv_conf[ctx_index]);
            if (rv != NGX_CONF_OK) {
                goto failed;
            }
        }

        
        if (module->merge_loc_conf) {

            

            ctx->loc_conf = cscfp[s]->ctx->loc_conf;

            rv = module->merge_loc_conf(cf, saved.loc_conf[ctx_index],
                                        cscfp[s]->ctx->loc_conf[ctx_index]);
            if (rv != NGX_CONF_OK) {
                goto failed;
            }

            

            
            clcf = cscfp[s]->ctx->loc_conf[ngx_http_core_module.ctx_index];

            rv = ngx_http_merge_locations(cf, clcf->locations,
                                          cscfp[s]->ctx->loc_conf,
                                          module, ctx_index);
            if (rv != NGX_CONF_OK) {
                goto failed;
            }
        }
    }

failed:

    *ctx = saved;

    return rv;
}

static char *
ngx_http_merge_locations(ngx_conf_t *cf, ngx_queue_t *locations,
    void **loc_conf, ngx_http_module_t *module, ngx_uint_t ctx_index)
{
    char                       *rv;
    ngx_queue_t                *q;
    ngx_http_conf_ctx_t        *ctx, saved;
    ngx_http_core_loc_conf_t   *clcf;
    ngx_http_location_queue_t  *lq;

    if (locations == NULL) {
        return NGX_CONF_OK;
    }

    ctx = (ngx_http_conf_ctx_t *) cf->ctx;
    saved = *ctx;

    
    for (q = ngx_queue_head(locations);
         q != ngx_queue_sentinel(locations);
         q = ngx_queue_next(q))
    {
        lq = (ngx_http_location_queue_t *) q;

        clcf = lq->exact ? lq->exact : lq->inclusive;
        ctx->loc_conf = clcf->loc_conf;

        rv = module->merge_loc_conf(cf, loc_conf[ctx_index],
                                    clcf->loc_conf[ctx_index]);
        if (rv != NGX_CONF_OK) {
            return rv;
        }

        
        rv = ngx_http_merge_locations(cf, clcf->locations, clcf->loc_conf,
                                      module, ctx_index);
        if (rv != NGX_CONF_OK) {
            return rv;
        }
    }

    *ctx = saved;

    return NGX_CONF_OK;
}

```

## 处理自定义的配置

在文章中 《[Nginx 模块开发](http://blog.csdn.net/chenhanzhun/article/details/42528951)》，我们给出了“Hello World” 的开发例子，在这个开发例子中，我们定义了自己的配置项，配置项名称的结构体定义如下：

```
typedef struct  
{  
        ngx_str_t hello_string;  
        ngx_int_t hello_counter;  
}ngx_http_hello_loc_conf_t;  

```

为了处理我们定义的配置项结构，因此，我们把 *ngx\_command\_t* 结构体定义如下：

```
static ngx_command_t ngx_http_hello_commands[] = {  
   {  
                ngx_string("hello_string"),  
                NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1,  
                ngx_http_hello_string,  
                NGX_HTTP_LOC_CONF_OFFSET,  
                offsetof(ngx_http_hello_loc_conf_t, hello_string),  
                NULL },  
  
        {  
                ngx_string("hello_counter"),  
                NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,  
                ngx_http_hello_counter,  
                NGX_HTTP_LOC_CONF_OFFSET,  
                offsetof(ngx_http_hello_loc_conf_t, hello_counter),  
                NULL },  
  
        ngx_null_command  
};  

```

处理方法 *ngx\_http\_hello\_string* 和*ngx\_http\_hello\_counter* 定义如下：

```
static char *  
ngx_http_hello_string(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)  
{  
  
        ngx_http_hello_loc_conf_t* local_conf;  
  
  
        local_conf = conf;  
        char* rv = ngx_conf_set_str_slot(cf, cmd, conf);  
  
        ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "hello_string:%s", local_conf->hello_string.data);  
  
        return rv;  
}  
  
  
static char *ngx_http_hello_counter(ngx_conf_t *cf, ngx_command_t *cmd,  
        void *conf)  
{  
        ngx_http_hello_loc_conf_t* local_conf;  
  
        local_conf = conf;  
  
        char* rv = NULL;  
  
        rv = ngx_conf_set_flag_slot(cf, cmd, conf);  
  
  
        ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "hello_counter:%d", local_conf->hello_counter);  
        return rv;  
}  

```

## error 日志

Nginx 日志模块为其他模块提供了基本的日志记录功能，日志模块定义如下：[src/​core/​ngx\_log.c](http://lxr.nginx.org/source/src/core/ngx_log.c)

```
static ngx_command_t  ngx_errlog_commands[] = {

    {ngx_string("error_log"),
     NGX_MAIN_CONF|NGX_CONF_1MORE,
     ngx_error_log,
     0,
     0,
     NULL},

    ngx_null_command
};

static ngx_core_module_t  ngx_errlog_module_ctx = {
    ngx_string("errlog"),
    NULL,
    NULL
};

ngx_module_t  ngx_errlog_module = {
    NGX_MODULE_V1,
    &ngx_errlog_module_ctx,                
    ngx_errlog_commands,                   
    NGX_CORE_MODULE,                       
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NGX_MODULE_V1_PADDING
};

```

Nginx 日志模块对于支持可变参数提供了三个接口，这三个接口定义在文件：[src/​core/​ngx\_log.h](http://lxr.nginx.org/source/src/core/ngx_log.h)

```
#define ngx_log_error(level, log, ...)                                        \
    if ((log)->log_level >= level) ngx_log_error_core(level, log, __VA_ARGS__)

void ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
    const char *fmt, ...);

#define ngx_log_debug(level, log, ...)                                        \
    if ((log)->log_level & level)                                             \
        ngx_log_error_core(NGX_LOG_DEBUG, log, __VA_ARGS__)

```

Nginx 日志模块记录日志的核心功能是由ngx\_log\_error\_core 方法实现，ngx\_log\_error 和ngx\_log\_debug 宏定义只是对其进行简单的封装，一般情况下日志调用只需要这两个宏定义。\
&#x20;      ngx\_log\_error 和 ngx\_log\_debug 宏定义都包括参数 level、log、err、fmt，下面分别对这些参数进行简单的介绍：

**level 参数**：对于 ngx\_log\_error 宏来说，level 表示当前日志的级别，其取值如下所示：

```

#define NGX_LOG_STDERR            0     
#define NGX_LOG_EMERG             1
#define NGX_LOG_ALERT             2
#define NGX_LOG_CRIT              3
#define NGX_LOG_ERR               4
#define NGX_LOG_WARN              5
#define NGX_LOG_NOTICE            6
#define NGX_LOG_INFO              7
#define NGX_LOG_DEBUG             8     

```

使用 ngx\_log\_error 宏记录日志时，若传入的level 级别小于或等于log 参数中的日志级别，就会输出日志内容，否则忽略该日志。\
&#x20;      在使用 ngx\_log\_debug 宏时，参数level 不同于ngx\_log\_error 宏的level 参数，它表达的不是日志级别，而是日志类型。ngx\_log\_debug 宏记录日志时必须是NGX\_LOG\_DEBUG 调试级别，这里的level 取值如下：

```

#define NGX_LOG_DEBUG_CORE        0x010 
#define NGX_LOG_DEBUG_ALLOC       0x020 
#define NGX_LOG_DEBUG_MUTEX       0x040 
#define NGX_LOG_DEBUG_EVENT       0x080 
#define NGX_LOG_DEBUG_HTTP        0x100 
#define NGX_LOG_DEBUG_MAIL        0x200 
#define NGX_LOG_DEBUG_MYSQL       0x400 

```

当 HTTP 模块调用ngx\_log\_debug 宏记录日志时，传入的level 参数是NGX\_LOG\_DEBUG\_HTTP，此时，若log 参数不属于HTTP 模块，若使用event 事件模块的log，则不会输出任何日志。

**log 参数**：log 参数的结构定义如下：[src/core/ngx\_log.h](http://lxr.nginx.org/source/src/core/ngx_log.h)；从其结构中可以知道，若只想把相应的信息记录到日志文件中，则不需要关系参数 log 的构造。

```

struct ngx_log_s {
    
    ngx_uint_t           log_level;
    
    ngx_open_file_t     *file;

    
    ngx_atomic_uint_t    connection;

    
    ngx_log_handler_pt   handler;
    
    void                *data;

    

    char                *action;

    
    ngx_log_t           *next;
};

```

**err 参数**：err 参数是错误编码，一般是执行系统调用失败后取得的errno 参数。当err 不为 0 时，Nginx 日志模块将会在正常日志输出这个错误编码以及其对应的字符串形成的错误信息。

**fmt 参数**：fmt 参数类似于C 语言中的printf 函数的输出格式。

参考资料：

《深入理解 Nginx 》

《[nginx 启动阶段](http://tengine.taobao.org/book/chapter_11.html)》

《Nginx高性能Web服务器详解》


# Nginx 中的 upstream 与 subrequest 机制

## 概述

Nginx 提供了两种全异步方式与第三方服务进行通信：**upstream**和**subrequest**。upstream 在与第三方服务器交互时（包括建立TCP 连接、发送请求、接收响应、关闭TCP 连接），不会阻塞Nginx 进程处理其他请求。subrequest 只是分解复杂请求的一种设计模式，它可以把原始请求分解为多个子请求，使得诸多请求协同完成一个用户请求，并且每个请求只关注一个功能。subrequest 访问第三方服务最终也是基于upstream 实现的。

upstream 被定义为访问上游服务器，它把Nginx 定义为反代理服务器，首要功能是透传，其次才是以TCP 获取第三方服务器的内容。Nginx 的HTTP 反向代理模块是基于 upstream 方式实现的。subrequest 是子请求，也就是说subrequest 将会为用户创建子请求，即将一个复杂的请求分解为多个子请求，每个子请求负责一种功能项，而最初的原始请求负责构成并发送响应给用户。当subrequest 访问第三服务时，首先派生出子请求访问上游服务器，父请求在完全取得上游服务器的响应后再决定如何处理来自客户端的请求。

因此，若希望把是第三方服务的内容原封不动地返回给用户时，则使用 upstream 方式。若访问第三方服务是为了获取某些信息，再根据这些信息来构造响应并发给用户，则应使用 subrequest 方式。

## upstream 使用方式

upstream 模块不产生自己的内容，而是通过请求后端服务器得到内容。Nginx 内部封装了请求并取得响应内容的整个过程，所以upstream 模块只需要开发若干回调函数，完成构造请求和解析响应等具体的工作。

## ngx\_http\_request\_t 结构体

首先了解 upstream 是如何嵌入到一个请求中，这里必须从请求结构体 ngx\_http\_request\_t  入手，在该结构体中具有一个ngx\_http\_upstream\_t  结构体类型的成员upstream。请求结构体 ngx\_http\_request\_t 定义在文件 [src/http/ngx\_http\_request.h](http://lxr.nginx.org/source/src/http/ngx_http_request.h) 中如下:

```
struct ngx_http_request_s {
    uint32_t                          signature;         

    
    ngx_connection_t                 *connection;

    
    void                            **ctx;
    void                            **main_conf;
    void                            **srv_conf;
    void                            **loc_conf;

    
    ngx_http_event_handler_pt         read_event_handler;
    ngx_http_event_handler_pt         write_event_handler;

#if (NGX_HTTP_CACHE)
    ngx_http_cache_t                 *cache;
#endif

    
    ngx_http_upstream_t              *upstream;
    ngx_array_t                      *upstream_states;
                                         

    
    ngx_pool_t                       *pool;
    
    ngx_buf_t                        *header_in;

    
    ngx_http_headers_in_t             headers_in;
    
    ngx_http_headers_out_t            headers_out;

    
    ngx_http_request_body_t          *request_body;

    
    time_t                            lingering_time;
    
    time_t                            start_sec;
    
    ngx_msec_t                        start_msec;

    
    ngx_uint_t                        method;       
    ngx_uint_t                        http_version; 

    ngx_str_t                         request_line; 
    ngx_str_t                         uri;          
    ngx_str_t                         args;         
    ngx_str_t                         exten;        
    ngx_str_t                         unparsed_uri; 

    ngx_str_t                         method_name;  
    ngx_str_t                         http_protocol;

    
    ngx_chain_t                      *out;
    
    ngx_http_request_t               *main;
    
    ngx_http_request_t               *parent;
    
    ngx_http_postponed_request_t     *postponed;
    ngx_http_post_subrequest_t       *post_subrequest;
    
    ngx_http_posted_request_t        *posted_requests;

    
    ngx_int_t                         phase_handler;
    
    ngx_http_handler_pt               content_handler;
    
    ngx_uint_t                        access_code;

    ngx_http_variable_value_t        *variables;

#if (NGX_PCRE)
    ngx_uint_t                        ncaptures;
    int                              *captures;
    u_char                           *captures_data;
#endif

    
    size_t                            limit_rate;
    size_t                            limit_rate_after;

    
    
    size_t                            header_size;

    
    off_t                             request_length;

    
    ngx_uint_t                        err_status;

    
    ngx_http_connection_t            *http_connection;
#if (NGX_HTTP_SPDY)
    ngx_http_spdy_stream_t           *spdy_stream;
#endif

    
    ngx_http_log_handler_pt           log_handler;

    
    ngx_http_cleanup_t               *cleanup;

    
    
    unsigned                          subrequests:8;
    
    unsigned                          count:8;
    
    unsigned                          blocked:8;

    
    unsigned                          aio:1;

    unsigned                          http_state:4;

    
    unsigned                          complex_uri:1;

    
    unsigned                          quoted_uri:1;

    
    unsigned                          plus_in_uri:1;

    
    unsigned                          space_in_uri:1;

    unsigned                          invalid_header:1;

    unsigned                          add_uri_to_alias:1;
    unsigned                          valid_location:1;
    unsigned                          valid_unparsed_uri:1;
    
    unsigned                          uri_changed:1;
    
    unsigned                          uri_changes:4;

    unsigned                          request_body_in_single_buf:1;
    unsigned                          request_body_in_file_only:1;
    unsigned                          request_body_in_persistent_file:1;
    unsigned                          request_body_in_clean_file:1;
    unsigned                          request_body_file_group_access:1;
    unsigned                          request_body_file_log_level:3;

    
    unsigned                          subrequest_in_memory:1;
    unsigned                          waited:1;

#if (NGX_HTTP_CACHE)
    unsigned                          cached:1;
#endif

#if (NGX_HTTP_GZIP)
    unsigned                          gzip_tested:1;
    unsigned                          gzip_ok:1;
    unsigned                          gzip_vary:1;
#endif

    unsigned                          proxy:1;
    unsigned                          bypass_cache:1;
    unsigned                          no_cache:1;

    
    unsigned                          limit_conn_set:1;
    unsigned                          limit_req_set:1;

#if 0
    unsigned                          cacheable:1;
#endif

    unsigned                          pipeline:1;
    unsigned                          chunked:1;
    unsigned                          header_only:1;
    
    unsigned                          keepalive:1;
    
    unsigned                          lingering_close:1;
    
    unsigned                          discard_body:1;
    
    unsigned                          internal:1;
    unsigned                          error_page:1;
    unsigned                          ignore_content_encoding:1;
    unsigned                          filter_finalize:1;
    unsigned                          post_action:1;
    unsigned                          request_complete:1;
    unsigned                          request_output:1;
    
    unsigned                          header_sent:1;
    unsigned                          expect_tested:1;
    unsigned                          root_tested:1;
    unsigned                          done:1;
    unsigned                          logged:1;

    
    unsigned                          buffered:4;

    unsigned                          main_filter_need_in_memory:1;
    unsigned                          filter_need_in_memory:1;
    unsigned                          filter_need_temporary:1;
    unsigned                          allow_ranges:1;
    unsigned                          single_range:1;

#if (NGX_STAT_STUB)
    unsigned                          stat_reading:1;
    unsigned                          stat_writing:1;
#endif

    

    
    ngx_uint_t                        state;

    ngx_uint_t                        header_hash;
    ngx_uint_t                        lowcase_index;
    u_char                            lowcase_header[NGX_HTTP_LC_HEADER_LEN];

    u_char                           *header_name_start;
    u_char                           *header_name_end;
    u_char                           *header_start;
    u_char                           *header_end;

    

    u_char                           *uri_start;
    u_char                           *uri_end;
    u_char                           *uri_ext;
    u_char                           *args_start;
    u_char                           *request_start;
    u_char                           *request_end;
    u_char                           *method_end;
    u_char                           *schema_start;
    u_char                           *schema_end;
    u_char                           *host_start;
    u_char                           *host_end;
    u_char                           *port_start;
    u_char                           *port_end;

    unsigned                          http_minor:16;
    unsigned                          http_major:16;
};

```

若没有实现 upstream 机制，则请求结构体 ngx\_http\_request\_t 中的upstream成员设置为NULL，否则必须设置该成员。首先看下 HTTP 模块启动upstream 机制的过程：

1. 调用函数 ngx\_http\_upstream\_create 为请求创建upstream；
2. 设置上游服务器的地址；可通过配置文件 nginx.conf 配置好上游服务器地址；也可以通过ngx\_http\_request\_t 中的成员resolved 设置上游服务器地址；
3. 设置 upstream 的回调方法；
4. 调用函数 ngx\_http\_upstream\_init 启动upstream；

upstream 启动过程如下图所示：

## ngx\_http\_upstream\_t 结构体

upstream 结构体是 ngx\_http\_upstream\_t，该结构体只在 upstream 模块内部使用，其定义在文件：[src/http/ngx\_http\_upstream.h](http://lxr.nginx.org/source/src/http/ngx_http_upstream.h)

```

struct ngx_http_upstream_s {
    
    ngx_http_upstream_handler_pt     read_event_handler;
    
    ngx_http_upstream_handler_pt     write_event_handler;

    
    ngx_peer_connection_t            peer;

    
    ngx_event_pipe_t                *pipe;

    
    ngx_chain_t                     *request_bufs;

    
    ngx_output_chain_ctx_t           output;
    ngx_chain_writer_ctx_t           writer;

    
    ngx_http_upstream_conf_t        *conf;

    
    ngx_http_upstream_headers_in_t   headers_in;

    
    ngx_http_upstream_resolved_t    *resolved;

    
    ngx_buf_t                        from_client;

    
    ngx_buf_t                        buffer;
    off_t                            length;

    
    ngx_chain_t                     *out_bufs;
    
    ngx_chain_t                     *busy_bufs;
    
    ngx_chain_t                     *free_bufs;

    
    ngx_int_t                      (*input_filter_init)(void *data);
    
    ngx_int_t                      (*input_filter)(void *data, ssize_t bytes);
    
    void                            *input_filter_ctx;

#if (NGX_HTTP_CACHE)
    ngx_int_t                      (*create_key)(ngx_http_request_t *r);
#endif
    
    ngx_int_t                      (*create_request)(ngx_http_request_t *r);
    
    ngx_int_t                      (*reinit_request)(ngx_http_request_t *r);
    
    ngx_int_t                      (*process_header)(ngx_http_request_t *r);
    
    void                           (*abort_request)(ngx_http_request_t *r);
    
    void                           (*finalize_request)(ngx_http_request_t *r,
                                         ngx_int_t rc);
    
    ngx_int_t                      (*rewrite_redirect)(ngx_http_request_t *r,
                                         ngx_table_elt_t *h, size_t prefix);
    ngx_int_t                      (*rewrite_cookie)(ngx_http_request_t *r,
                                         ngx_table_elt_t *h);

    ngx_msec_t                       timeout;

    
    ngx_http_upstream_state_t       *state;

    ngx_str_t                        method;
    
    ngx_str_t                        schema;
    ngx_str_t                        uri;

    
    ngx_http_cleanup_pt             *cleanup;

    

    
    unsigned                         store:1;
    
    unsigned                         cacheable:1;
    unsigned                         accel:1;
    
    unsigned                         ssl:1;
#if (NGX_HTTP_CACHE)
    unsigned                         cache_status:3;
#endif

    
    unsigned                         buffering:1;
    
    unsigned                         keepalive:1;
    unsigned                         upgrade:1;

    
    unsigned                         request_sent:1;
    
    unsigned                         header_sent:1;
};

```

下面看下 upstream 处理上游响应包体的三种方式：

1. 当请求结构体 ngx\_http\_request\_t 中的成员subrequest\_in\_memory 标志位为 1 时，upstream 不转发响应包体到下游，并由HTTP 模块实现的 input\_filter() 方法处理包体；
2. 当请求结构体 ngx\_http\_request\_t 中的成员subrequest\_in\_memory 标志位为 0 时，且ngx\_http\_upstream\_conf\_t 配置结构体中的成员buffering 标志位为 1 时，upstream 将开启更多的内存和磁盘文件用于缓存上游的响应包体（此时，上游网速更快），并转发响应包体；
3. 当请求结构体 ngx\_http\_request\_t 中的成员subrequest\_in\_memory 标志位为 0 时，且ngx\_http\_upstream\_conf\_t 配置结构体中的成员buffering 标志位为 0 时，upstream 将使用固定大小的缓冲区来转发响应包体；

## ngx\_http\_upstream\_conf\_t 结构体

在结构体 ngx\_http\_upstream\_t 的成员conf 中，conf 是一个结构体ngx\_http\_upstream\_conf\_t 变量，该变量设置了upstream 的限制性参数。ngx\_http\_upstream\_conf\_t 结构体定义如下：[src/http/ngx\_http\_upstream.h](http://lxr.nginx.org/source/src/http/ngx_http_upstream.h)

```

typedef struct {
    
    ngx_http_upstream_srv_conf_t    *upstream;

    
    ngx_msec_t                       connect_timeout;
    
    ngx_msec_t                       send_timeout;
    
    ngx_msec_t                       read_timeout;
    ngx_msec_t                       timeout;

    
    size_t                           send_lowat;
    
    size_t                           buffer_size;

    size_t                           busy_buffers_size;
    
    size_t                           max_temp_file_size;
    
    size_t                           temp_file_write_size;

    size_t                           busy_buffers_size_conf;
    size_t                           max_temp_file_size_conf;
    size_t                           temp_file_write_size_conf;

    
    ngx_bufs_t                       bufs;

    
    ngx_uint_t                       ignore_headers;
    
    ngx_uint_t                       next_upstream;
    
    ngx_uint_t                       store_access;
    
    ngx_flag_t                       buffering;
    ngx_flag_t                       pass_request_headers;
    ngx_flag_t                       pass_request_body;

    
    ngx_flag_t                       ignore_client_abort;
    ngx_flag_t                       intercept_errors;
    
    ngx_flag_t                       cyclic_temp_file;

    
    ngx_path_t                      *temp_path;

    
    ngx_hash_t                       hide_headers_hash;
    
    ngx_array_t                     *hide_headers;
    
    ngx_array_t                     *pass_headers;

    
    ngx_http_upstream_local_t       *local;

#if (NGX_HTTP_CACHE)
    ngx_shm_zone_t                  *cache;

    ngx_uint_t                       cache_min_uses;
    ngx_uint_t                       cache_use_stale;
    ngx_uint_t                       cache_methods;

    ngx_flag_t                       cache_lock;
    ngx_msec_t                       cache_lock_timeout;

    ngx_flag_t                       cache_revalidate;

    ngx_array_t                     *cache_valid;
    ngx_array_t                     *cache_bypass;
    ngx_array_t                     *no_cache;
#endif

    
    ngx_array_t                     *store_lengths;
    ngx_array_t                     *store_values;

    
    signed                           store:2;
    
    unsigned                         intercept_404:1;
    
    unsigned                         change_buffering:1;

#if (NGX_HTTP_SSL)
    ngx_ssl_t                       *ssl;
    ngx_flag_t                       ssl_session_reuse;
#endif

    
    ngx_str_t                        module;
} ngx_http_upstream_conf_t;

```

在 HTTP 反向代理模块在配置文件 nginx.conf 提供的配置项大都是用来设置结构体 ngx\_http\_upstream\_conf\_t 的成员。3 个超时时间成员是必须要设置的，因为他们默认是 0，即若不设置这 3 个成员，则无法与上游服务器建立TCP 连接。每一个请求都有独立的ngx\_http\_upstream\_conf\_t 结构体，因此，每个请求都可以拥有不同的网络超时时间等配置。

例如，将 nginx.conf 文件中的 upstream\_conn\_timeout 配置项解析到 ngx\_http\_hello\_conf\_t 结构体中的成员upstream.conn\_timeout 中。可定义如下的连接超时时间，并把ngx\_http\_hello\_conf\_t 配置项的 upstream 成员赋给 ngx\_http\_upstream\_t 中的conf 即可；

```
typedef struct  
{  
        ... 
        ngx_http_upstream_conf_t    upstream;
}ngx_http_hello_conf_t;  
  
  
static ngx_command_t ngx_http_hello_commands[] = {  
   {  
                ngx_string("upstream_conn_timeout"),  
                NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,  
                ngx_conf_set_msec_slot,  
                NGX_HTTP_LOC_CONF_OFFSET,  
                offsetof(ngx_http_hello_conf_t, upstream.conn_timeout),  
                NULL },  
  
  
        ngx_null_command  
};  

  
static ngx_int_t  
ngx_http_hello_handler(ngx_http_request_t *r)  
{  
     ...
     ngx_http_hello_conf_t *mycf = (ngx_http_hello_conf_t *)ngx_http_get_module_loc_conf(r,ngx_http_hello_module);
     r->upstream->conf = &mycf->upstream;
     ...
}

```

## 设置第三方服务器地址

在 ngx\_http\_upstream\_t 结构体中的resolved 成员可直接设置上游服务器的地址，也可以由nginx.conf 文件中配置upstream 模块，并指定上游服务器的地址。resolved 类型定义如下：

```
typedef struct {
    
    ngx_str_t                        host;
    
    in_port_t                        port;
    ngx_uint_t                       no_port; 

    
    ngx_uint_t                       naddrs;
    
    ngx_addr_t                      *addrs;

    
    struct sockaddr                 *sockaddr;
    
    socklen_t                        socklen;

    ngx_resolver_ctx_t              *ctx;
} ngx_http_upstream_resolved_t;

```

## 设置回调方法

在结构体 ngx\_http\_upstream\_t 中定义了 8 个回调方法：

```
    
    ngx_int_t                      (*input_filter_init)(void *data);
    
    ngx_int_t                      (*input_filter)(void *data, ssize_t bytes);
    
    void                            *input_filter_ctx;

    
    ngx_int_t                      (*create_request)(ngx_http_request_t *r);
    
    ngx_int_t                      (*reinit_request)(ngx_http_request_t *r);
    
    ngx_int_t                      (*process_header)(ngx_http_request_t *r);
    
    void                           (*abort_request)(ngx_http_request_t *r);
    
    void                           (*finalize_request)(ngx_http_request_t *r,
                                         ngx_int_t rc);
    
    ngx_int_t                      (*rewrite_redirect)(ngx_http_request_t *r,
                                         ngx_table_elt_t *h, size_t prefix);

```

在这些回调方法中，其中有 3 个非常重要，在模块中是必须要实现的，这 3 个回调函数为：

```

    ngx_int_t                      (*create_request)(ngx_http_request_t *r);

    ngx_int_t                      (*process_header)(ngx_http_request_t *r);

    void                           (*finalize_request)(ngx_http_request_t *r,
                                         ngx_int_t rc);

```

create\_request 在初始化 upstream 时被调用，生成发送到后端服务器的请求缓冲（缓冲链）。reinit\_request 在某台后端服务器出错的情况，Nginx 会尝试连接到另一台后端服务器。Nginx 选定新的服务器以后，会先调用此函数，以重新初始化upstream 模块的工作状态，然后再次进行 upstream 连接。process\_header 是用于解析上游服务器返回的基于TCP 的响应头部。finalize\_request 在正常完成与后端服务器的请求后 或 失败 导致销毁请求时，该方法被调用。input\_filter\_init 和input\_filter 都用于处理上游的响应包体，因为在处理包体前HTTP 模块可能需要做一些初始化工作。初始化工作由input\_filter\_init 完成，实际处理包体由 input\_filter 方法完成。

## 启动 upstream 机制

调用 ngx\_http\_upstream\_init 方法便可启动upstream 机制，此时，必须通过返回NGX\_DONE 通知HTTP 框架暂停执行请求的下一个阶段，并且需要执行r->main->count++ 告知HTTP 框架将当前请求的引用计数增加 1，即告知ngx\_http\_hello\_handler 方法暂时不要销毁请求，因为HTTP 框架只有在引用计数为 0 时才真正销毁请求。例如：

```
static ngx_int_t ngx_http_hello_handler(ngx_http_request_t *r)
{
    ...
    r->main->count++;
    ngx_http_upstream_init(r);
    return NGX_DONE;
}

```

## subrequest 使用方式

subrequest 只是分解复杂请求的一种设计模式，它可以把原始请求分解为多个子请求，使得诸多请求协同完成一个用户请求，并且每个请求只关注一个功能。首先，若不是完全将上游服务器的响应包体转发到下游客户端，基本都会使用subrequest 创建子请求，并由子请求使用upstream 机制访问上游服务器，然后由父请求根据上游响应重新构造返回给下游客户端的响应。

subrequest 的使用步骤如下：

1. 在 nginx.conf 配置文件中配置好子请求的处理方式；
2. 启动 subrequest 子请求；
3. 实现子请求执行结束时的回调函数；
4. 实现父请求被激活时的回调函数；

## 配置子请求的处理方式

子请求并不是由 HTTP 框架解析所接收到客户端网络包而得到的，而是由父请求派生的。它的配置和普通请求的配置相同，都是在nginx.conf 文件中配置相应的处理模块。例如：可以在配置文件nginx.conf 中配置以下的子请求访问 [https://github.com](https://github.com/)

```
location /subrq { 
  	    rewrite ^/subrq(.*)$ $1 break;
  	    proxy_pass https://github.com;
	}

```

## 启动 subrequest 子请求

subrequest 是在父请求的基础上派生的子请求，subrequest 返回的内容会被附加到父请求上面，他的实现方法是调用ngx\_http\_subrequest 函数，该函数定义在文件：[src/http/ngx\_http\_core\_module.h](http://lxr.nginx.org/source/src/http/ngx_http_core_module.h)

```
ngx_int_t ngx_http_subrequest(ngx_http_request_t *r,
     ngx_str_t *uri, ngx_str_t *args, ngx_http_request_t **psr,
     ngx_http_post_subrequest_t *ps, ngx_uint_t flags);

```

该函数的参数如下：引用自文件《[Emiller's Advanced Topics In Nginx Module Development](http://www.evanmiller.org/nginx-modules-guide-advanced.html#subrequests)》

* \*r is the original request（当前的请求，即父请求）；
* *uri and*argsrefer to the sub-request（\*uri 是子请求的URI，\*args是子请求URI 的参数）；
* \*\*psr is a reference to a NULL pointer that will point to the new (sub-)request structure（\*\*psr 是指向返回子请求，相当于值-结果传递，作为参数传递进去是指向 NULL 指针，输出结果是指向新创建的子请求）；
* \*ps is a callback for when the subrequest is finished. （\*ps 是指出子请求结束时必须回调的处理方法）；
* flags can be a bitwise-OR'ed combination of:
* NGX\_HTTP\_ZERO\_IN\_URI: the URI contains a character with ASCII code 0 (also known as '\0'), or contains "%00"
* NGX\_HTTP\_SUBREQUEST\_IN\_MEMORY: store the result of the subrequest in a contiguous chunk of memory (usually not necessary) （将子请求的subrequest\_in\_memory 标志位为 1，表示发起的子请求，访问的网络资源返回的响应将全部在内存中处理）；
* NGX\_HTTP\_SUBREQUEST\_WAITED: store the result of the subrequest in a contiguous chunk of memory (usually not necessary) （将子请求的waited 标志位为 1，表示子请求完成后会设置自身的r->done 标志位，可以通过判断该标志位得知子请求是否完成）；

该函数 ngx\_http\_subrequest 的返回值如下：

* NGX\_OK:the subrequest finished without touching the network（成功建立子请求）；
* NGX\_DONE:the client reset the network connection（客户端重置网络连接）；
* NGX\_ERROR:there was a server error of some sort（建立子请求失败）；
* NGX\_AGAIN:the subrequest requires network activity（子请求需要激活网络）；

该子请求返回的结果附加在你期望的位置。若要修改子请求的结果，可以使用 another filter（或同一个）。并告知该 filter 对父请求或子请求进行操作：具体实例可参照模块["addition" module](http://lxr.nginx.org/source/src/http/modules/ngx_http_addition_filter_module.c)

```
if (r == r->main) { 
    
} else {
    
}

```

以下是子请求函数 ngx\_http\_subrequest 的源码剖析，其源码定义在文件：[src/http/ngx\_http\_core\_module.c](http://lxr.nginx.org/source/src/http/ngx_http_core_module.c)

```

ngx_int_t
ngx_http_subrequest(ngx_http_request_t *r,
    ngx_str_t *uri, ngx_str_t *args, ngx_http_request_t **psr,
    ngx_http_post_subrequest_t *ps, ngx_uint_t flags)
{
    ngx_time_t                    *tp;
    ngx_connection_t              *c;
    ngx_http_request_t            *sr;
    ngx_http_core_srv_conf_t      *cscf;
    ngx_http_postponed_request_t  *pr, *p;

    
    r->main->subrequests--;

    
    if (r->main->subrequests == 0) {
        ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
                      "subrequests cycle while processing \"%V\"", uri);
        r->main->subrequests = 1;
        return NGX_ERROR;
    }

    
    sr = ngx_pcalloc(r->pool, sizeof(ngx_http_request_t));
    if (sr == NULL) {
        return NGX_ERROR;
    }

    
    sr->signature = NGX_HTTP_MODULE;

    
    c = r->connection;
    sr->connection = c;

    
    sr->ctx = ngx_pcalloc(r->pool, sizeof(void *) * ngx_http_max_module);
    if (sr->ctx == NULL) {
        return NGX_ERROR;
    }

    
    if (ngx_list_init(&sr->headers_out.headers, r->pool, 20,
                      sizeof(ngx_table_elt_t))
        != NGX_OK)
    {
        return NGX_ERROR;
    }

    
    cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
    sr->main_conf = cscf->ctx->main_conf;
    sr->srv_conf = cscf->ctx->srv_conf;
    sr->loc_conf = cscf->ctx->loc_conf;

    
    sr->pool = r->pool;

    
    sr->headers_in = r->headers_in;

    ngx_http_clear_content_length(sr);
    ngx_http_clear_accept_ranges(sr);
    ngx_http_clear_last_modified(sr);

    
    sr->request_body = r->request_body;

#if (NGX_HTTP_SPDY)
    sr->spdy_stream = r->spdy_stream;
#endif

    
    sr->method = NGX_HTTP_GET;
    
    sr->http_version = r->http_version;

    
    sr->request_line = r->request_line;
    
    sr->uri = *uri;

    
    if (args) {
        sr->args = *args;
    }

    ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0,
                   "http subrequest \"%V?%V\"", uri, &sr->args);

    
    sr->subrequest_in_memory = (flags & NGX_HTTP_SUBREQUEST_IN_MEMORY) != 0;
    sr->waited = (flags & NGX_HTTP_SUBREQUEST_WAITED) != 0;

    sr->unparsed_uri = r->unparsed_uri;
    sr->method_name = ngx_http_core_get_method;
    sr->http_protocol = r->http_protocol;

    ngx_http_set_exten(sr);

    
    sr->main = r->main;
    sr->parent = r;
    sr->post_subrequest = ps;
    
    sr->read_event_handler = ngx_http_request_empty_handler;
    sr->write_event_handler = ngx_http_handler;

    
    if (c->data == r && r->postponed == NULL) {
        c->data = sr;
    }

    
    sr->variables = r->variables;

    
    sr->log_handler = r->log_handler;

    pr = ngx_palloc(r->pool, sizeof(ngx_http_postponed_request_t));
    if (pr == NULL) {
        return NGX_ERROR;
    }

    pr->request = sr;
    pr->out = NULL;
    pr->next = NULL;

    
    if (r->postponed) {
        for (p = r->postponed; p->next; p = p->next) {  }
        p->next = pr;

    } else {
        r->postponed = pr;
    }

    
    sr->internal = 1;

    
    sr->discard_body = r->discard_body;
    sr->expect_tested = 1;
    sr->main_filter_need_in_memory = r->main_filter_need_in_memory;

    sr->uri_changes = NGX_HTTP_MAX_URI_CHANGES + 1;

    tp = ngx_timeofday();
    sr->start_sec = tp->sec;
    sr->start_msec = tp->msec;

    
    r->main->count++;

    *psr = sr;

    
    return ngx_http_post_request(sr, NULL);
}

ngx_int_t
ngx_http_post_request(ngx_http_request_t *r, ngx_http_posted_request_t *pr)
{
    ngx_http_posted_request_t  **p;

    if (pr == NULL) {
        pr = ngx_palloc(r->pool, sizeof(ngx_http_posted_request_t));
        if (pr == NULL) {
            return NGX_ERROR;
        }
    }

    pr->request = r;
    pr->next = NULL;

    for (p = &r->main->posted_requests; *p; p = &(*p)->next) {  }

    *p = pr;

    return NGX_OK;
}

```

## 子请求结束时的回调函数

在子请求结束时（正常或异常结束）Nginx 会调用ngx\_http\_post\_subrequest\_pt 回调处理方法。下面是回调方法的定义：

```
typedef struct {
    ngx_http_post_subrequest_pt       handler;
    void                             *data;
} ngx_http_post_subrequest_t;

typedef ngx_int_t (*ngx_http_post_subrequest_pt)(ngx_http_request_t *r,
    void *data, ngx_int_t rc);

```

在结构体 ngx\_http\_post\_subrequest\_t 中，生成该结构体的变量时，可把用户的任意数据赋给指针data ，ngx\_http\_post\_subrequest\_pt 回调方法的参数data 就是用户把数据赋给结构体 ngx\_http\_post\_subrequest\_t 中的成员指针data 所指的数据。ngx\_http\_post\_subrequest\_pt 回调方法中的参数rc 是子请求结束时的状态，它的取值由函数ngx\_http\_finalize\_request 销毁请求时传递给参数rc。 函数ngx\_http\_finalize\_request 的部分源码，具体可查阅文件：[src/http/ngx\_http\_request.c](http://lxr.nginx.org/source/src/http/ngx_http_request.c)

```
void
ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc) 
{
  ...
    
    if (r != r->main && r->post_subrequest) {
        rc = r->post_subrequest->handler(r, r->post_subrequest->data, rc);
    }

  ...
    
    
    if (r != r->main) {  
        
        if (r->buffered || r->postponed) {
            
            if (ngx_http_set_write_handler(r) != NGX_OK) {
                ngx_http_terminate_request(r, 0);
            }

            return;
        }
        ...
        pr = r->parent;
        

        
        if (r == c->data) { 

            r->main->count--;

            if (!r->logged) {

                clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);

                if (clcf->log_subrequest) {
                    ngx_http_log_request(r);
                }

                r->logged = 1;

            } else {
                ngx_log_error(NGX_LOG_ALERT, c->log, 0,
                              "subrequest: \"%V?%V\" logged again",
                              &r->uri, &r->args);
            }

            r->done = 1;
            
            if (pr->postponed && pr->postponed->request == r) {
                pr->postponed = pr->postponed->next;
            }
            
            c->data = pr;   

        } else {
            
            r->write_event_handler = ngx_http_request_finalizer;

            if (r->waited) {
                r->done = 1;
            }
        }
        
        if (ngx_http_post_request(pr, NULL) != NGX_OK) {
            r->main->count++;
            ngx_http_terminate_request(r, 0);
            return;
        }

        return;
    }
    
    if (r->buffered || c->buffered || r->postponed || r->blocked) {

        if (ngx_http_set_write_handler(r) != NGX_OK) {
            ngx_http_terminate_request(r, 0);
        }

        return;
    }

 ...
} 

```

## 父请求被激活后的回调方法

父请求被激活后的回调方法由指针 ngx\_http\_event\_pt 实现。该方法负责把响应包发送给用户。如下所示：

```
typedef void(*ngx_http_event_handler_pt)(ngx_http_request_t *r);

struct ngx_http_request_s{
      ...
      ngx_http_event_handler_pt      write_event_handler;
      ...
};

```

一个请求中，只能调用一次 subrequest，即不能一次创建多个子请求，但是可以在新创建的子请求中再创建新的子请求。

参考资料：

《深入理解Nginx 》

《[Emiller's Advanced Topics In Nginx Module Development](http://www.evanmiller.org/nginx-modules-guide-advanced.html#subrequests-single)》

《[nginx subrequest的实现解析](http://blog.csdn.net/fengmo_q/article/details/6685840)》

《[ngx\_http\_request\_t结构体](http://blog.csdn.net/xiajun07061225/article/details/9189505)》


# Nginx 源码结构分析

## Nginx 源码基本结构

学习 Nginx 的构架之前，对 Nginx 源码结构进行简单的分析，可以了解 Nginx 模块结构以及模块之间的关系。充分理解Nginx 的基本构架。解压源码到相应的文件后，我们可以看到有一个存放源码的目录文件src，该目录文件存储Nginx 所有的源代码。首先，我们通过命令查看源码的组织结构：

```
$ tree -L 1
.
├── core
├── event
├── http
├── mail
├── misc
└── os

6 directories, 0 files

```

输出结果显示有 6 个目录文件，以下是这些目录文件的功能：

* core  ：Nginx的核心源代码，包括常用数据结构的以及Nginx 内核实现的核心代码；
* event：Nginx事件驱动模型，以及定时器的实现相关代码；
* http   ：Nginx 实现http 服务器相关的代码；
* mail  ：Nginx 实现邮件代理服务器相关的代码；
* misc ：辅助代码，测试C++头 的兼容性，以及对Google\_PerfTools 的支持；
* os     ：不同体系统结构所提供的系统函数的封装，提供对外统一的系统调用接口；

下面主要针对重要的三个目录进行简单的介绍：core 目录、http 目录、event 目录；

## core 核心模块结构

core 目录中的源码定义了 Nginx 服务器最基本的数据结构以及最基本的核心模块（核心模块为其他模块提供了公共调用的基本功能）。首先看下该核心模块的源码结构：

```

├── nginx.c
├── nginx.h
	

├── ngx_array.c
├── ngx_array.h
├── ngx_hash.c
├── ngx_hash.h
├── ngx_list.c
├── ngx_list.h
├── ngx_queue.c
├── ngx_queue.h
├── ngx_radix_tree.c
├── ngx_radix_tree.h
├── ngx_rbtree.c
├── ngx_rbtree.h
├── ngx_output_chain.c
├── ngx_buf.c
├── ngx_buf.h

├── ngx_conf_file.c
├── ngx_conf_file.h
├── ngx_config.h

├── ngx_connection.c
├── ngx_connection.h

├── ngx_core.h
├── ngx_cpuinfo.c

├── ngx_crc32.c
├── ngx_crc32.h
├── ngx_crc.h

├── ngx_cycle.c
├── ngx_cycle.h

├── ngx_file.c
├── ngx_file.h

├── ngx_inet.c
├── ngx_inet.h

├── ngx_log.c
├── ngx_log.h
├── ngx_syslog.c
├── ngx_syslog.h

├── ngx_md5.c
├── ngx_md5.h
├── ngx_murmurhash.c
├── ngx_murmurhash.h

├── ngx_open_file_cache.c
├── ngx_open_file_cache.h
├── ngx_palloc.c
├── ngx_palloc.h
├── ngx_shmtx.c
├── ngx_shmtx.h
├── ngx_slab.c
├── ngx_slab.h

├── ngx_parse.c
├── ngx_parse.h

├── ngx_proxy_protocol.c
├── ngx_proxy_protocol.h

├── ngx_regex.c
├── ngx_regex.h

├── ngx_string.c
├── ngx_string.h

├── ngx_times.c
└── ngx_times.h

├── ngx_resolver.c
├── ngx_resolver.h
├── ngx_sha1.h
├── ngx_spinlock.c
├── ngx_crypt.c
├── ngx_crypt.h

```

## event 事件驱动模型结构

event 目录里面包含一种子目录 module 以及一些文件，除了 module 子目录，其他文件提供了事件驱动模型相关数据结构的定义、初始化、事件接收、传递、管理功能以及事件驱动模型调用功能。module 子目录里面的源码实现了Nginx 支持的事件驱动模型：AIO、epoll、kqueue、select、/dev/poll、poll 等事件驱动模型；

```
.
├── modules
│   ├── ngx_aio_module.c           
│   ├── ngx_devpoll_module.c       
│   ├── ngx_epoll_module.c         
│   ├── ngx_eventport_module.c     
│   ├── ngx_kqueue_module.c        
│   ├── ngx_poll_module.c          
│   ├── ngx_rtsig_module.c         
│   ├── ngx_select_module.c        
│   └── ngx_win32_select_module.c  
├── ngx_event_accept.c
├── ngx_event_busy_lock.c
├── ngx_event_busy_lock.h
├── ngx_event.c
├── ngx_event_connect.c
├── ngx_event_connect.h
├── ngx_event.h
├── ngx_event_mutex.c
├── ngx_event_openssl.c
├── ngx_event_openssl.h
├── ngx_event_openssl_stapling.c
├── ngx_event_pipe.c
├── ngx_event_pipe.h
├── ngx_event_posted.c
├── ngx_event_posted.h
├── ngx_event_timer.c
└── ngx_event_timer.h

1 directory, 26 files

```

## http 模块结构

http 目录和 event 目录一样，通用包含了模块实现源码的 module 目录文件以及一些结构定义、初始化、网络连接建立、管理、关闭，以及数据报解析、服务器组管理等功能的源码文件。module 目录文件实现了HTTP 模块的功能。

```
.
├── modules
├── ngx_http_busy_lock.c
├── ngx_http_busy_lock.h
├── ngx_http.c
├── ngx_http_cache.h
├── ngx_http_config.h
├── ngx_http_copy_filter_module.c
├── ngx_http_core_module.c
├── ngx_http_core_module.h
├── ngx_http_file_cache.c
├── ngx_http.h
├── ngx_http_header_filter_module.c
├── ngx_http_parse.c
├── ngx_http_parse_time.c
├── ngx_http_postpone_filter_module.c
├── ngx_http_request_body.c
├── ngx_http_request.c
├── ngx_http_request.h
├── ngx_http_script.c
├── ngx_http_script.h
├── ngx_http_spdy.c
├── ngx_http_spdy_filter_module.c
├── ngx_http_spdy.h
├── ngx_http_spdy_module.c
├── ngx_http_spdy_module.h
├── ngx_http_special_response.c
├── ngx_http_upstream.c
├── ngx_http_upstream.h
├── ngx_http_upstream_round_robin.c
├── ngx_http_upstream_round_robin.h
├── ngx_http_variables.c
├── ngx_http_variables.h
└── ngx_http_write_filter_module.c

1 directory, 32 files

```

## Nginx 源码的模块化结构

根据各模块的功能，可把 Nginx 源码划分为以下几种功能，如下图所示：

* 核心模块功能：为其他模块提供一些基本功能：字符串处理、时间管理、文件读写等功能；
* 配置解析：主要包括文件语法检查、配置参数解析、参数初始化等功能；
* 内存管理：内存池管理、共享内存的分配、缓冲区管理等功能；
* 事件驱动：进程创建与管理、信号接收与处理、所有事件驱动模型的实现、高级 IO 等功能；
* 日志管理：错误日志的生成与管理、任务日志的生成与管理等功能；
* HTTP 服务：提供 Web 服务，包括客户度连接管理、客户端请求处理、虚拟主机管理、服务器组管理等功能；
* Mail 服务：与 HTTP 服务类似，但是增加了邮件协议的实现；


# Nginx 事件模块

## 概述

Nginx 是以事件的触发来驱动的，事件驱动模型主要包括事件收集、事件发送、事件处理（即事件管理）三部分。在Nginx 的工作进程中主要关注的事件是IO 网络事件 和 定时器事件。在生成的 objs 目录文件中，其中ngx\_modules.c 文件的内容是Nginx 各种模块的执行顺序，我们可以从该文件的内容中看到事件模块的执行顺序为以下所示：注意：由于是在Linux 系统下，所以支持具体的 epoll 事件模块，接下来的文章结构按照以下顺序来写。

```
extern ngx_module_t  ngx_events_module;
extern ngx_module_t  ngx_event_core_module;
extern ngx_module_t  ngx_epoll_module;

```

## 事件模块接口

## ngx\_event\_module\_t 结构体

在 Nginx 中，结构体 ngx\_module\_t 是 Nginx 模块最基本的接口。对于每一种不同类型的模块，都有一个具体的结构体来描述这一类模块的通用接口，该接口由ngx\_module\_t 中的成员ctx 管理。在 Nginx 中定义了事件模块的通用接口ngx\_event\_module\_t 结构体，该结构体定义在文件[src/event/ngx\_event.h](http://lxr.nginx.org/source/src/event/ngx_event.h) 中：

```

typedef struct {
    
    ngx_str_t              *name;

    
    void                 *(*create_conf)(ngx_cycle_t *cycle);
    
    char                 *(*init_conf)(ngx_cycle_t *cycle, void *conf);

    
    ngx_event_actions_t     actions;
} ngx_event_module_t;

```

在 ngx\_event\_module\_t 结构体中actions 的类型是ngx\_event\_actions\_t 结构体，该成员结构实现了事件驱动模块的具体方法。该结构体定义在文件[src/event/ngx\_event.h](http://lxr.nginx.org/source/src/event/ngx_event.h) 中：

```

typedef struct {
    
    ngx_int_t  (*add)(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags);
    
    ngx_int_t  (*del)(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags);

    
    ngx_int_t  (*enable)(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags);
    
    ngx_int_t  (*disable)(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags);

    
    ngx_int_t  (*add_conn)(ngx_connection_t *c);
    
    ngx_int_t  (*del_conn)(ngx_connection_t *c, ngx_uint_t flags);

    
    ngx_int_t  (*process_changes)(ngx_cycle_t *cycle, ngx_uint_t nowait);
    
    ngx_int_t  (*process_events)(ngx_cycle_t *cycle, ngx_msec_t timer,
                   ngx_uint_t flags);

    
    ngx_int_t  (*init)(ngx_cycle_t *cycle, ngx_msec_t timer);
    
    void       (*done)(ngx_cycle_t *cycle);
} ngx_event_actions_t;

```

## ngx\_event\_t 结构体

在 Nginx 中，每一个具体事件的定义由结构体ngx\_event\_t 来表示，该结构体ngx\_event\_t 用来保存具体事件。该结构体定义在文件 [src/event/ngx\_event.h](http://lxr.nginx.org/source/src/event/ngx_event.h) 中：

```

struct ngx_event_s {
    
    void            *data;

    
    unsigned         write:1;

    
    unsigned         accept:1;

    
    unsigned         instance:1;

    
    
    unsigned         active:1;

    
    unsigned         disabled:1;

    
    
    unsigned         ready:1;

    
    unsigned         oneshot:1;

    
    
    unsigned         complete:1;

    
    unsigned         eof:1;
    
    unsigned         error:1;

    
    unsigned         timedout:1;
    
    unsigned         timer_set:1;

    
    unsigned         delayed:1;

    
    unsigned         deferred_accept:1;

    
    
    unsigned         pending_eof:1;

    
    unsigned         posted:1;

#if (NGX_WIN32)
    
    unsigned         accept_context_updated:1;
#endif

#if (NGX_HAVE_KQUEUE)
    unsigned         kq_vnode:1;

    
    int              kq_errno;
#endif

    

#if (NGX_HAVE_KQUEUE) || (NGX_HAVE_IOCP)
    int              available;
#else
    
    unsigned         available:1;
#endif

    
    ngx_event_handler_pt  handler;

#if (NGX_HAVE_AIO)

#if (NGX_HAVE_IOCP)
    ngx_event_ovlp_t ovlp;
#else
    
    struct aiocb     aiocb;
#endif

#endif

    
    ngx_uint_t       index;

    
    ngx_log_t       *log;

    
    ngx_rbtree_node_t   timer;

    
    ngx_queue_t      queue;

    
    unsigned         closed:1;

    
    unsigned         channel:1;
    unsigned         resolver:1;

    unsigned         cancelable:1;

#if 0

    

    

    void            *thr_ctx;

#if (NGX_EVENT_T_PADDING)

    

    uint32_t         padding[NGX_EVENT_T_PADDING];
#endif
#endif
};

```

在每个事件结构体 ngx\_event\_t 最重要的成员是handler 回调函数，该回调函数定义了当事件发生时的处理方法。该回调方法原型在文件[src/core/ngx\_core.h](http://lxr.nginx.org/source/src/core/ngx_core.h) 中：

```
typedef void (*ngx_event_handler_pt)(ngx_event_t *ev);

```

## ngx\_connection\_t 结构体

当客户端向 Nginx 服务器发起连接请求时，此时若Nginx 服务器被动接收该连接，则相对Nginx 服务器来说称为被动连接，被动连接的表示由基本数据结构体ngx\_connection\_t 完成。该结构体定义在文件 [src/core/ngx\_connection.h](http://lxr.nginx.org/source/src/core/ngx_connection.h) 中：

```

struct ngx_connection_s {
    

    
    void               *data;
    
    ngx_event_t        *read;
    
    ngx_event_t        *write;

    
    ngx_socket_t        fd;

    
    ngx_recv_pt         recv;
    
    ngx_send_pt         send;
    
    ngx_recv_chain_pt   recv_chain;
    
    ngx_send_chain_pt   send_chain;

    
    ngx_listening_t    *listening;

    
    off_t               sent;

    
    ngx_log_t          *log;

    
    ngx_pool_t         *pool;

    
    struct sockaddr    *sockaddr;
    socklen_t           socklen;
    
    ngx_str_t           addr_text;

    ngx_str_t           proxy_protocol_addr;

#if (NGX_SSL)
    ngx_ssl_connection_t  *ssl;
#endif

    
    struct sockaddr    *local_sockaddr;
    socklen_t           local_socklen;

    
    ngx_buf_t          *buffer;

    
    ngx_queue_t         queue;

    
    ngx_atomic_uint_t   number;

    
    ngx_uint_t          requests;

    unsigned            buffered:8;

    unsigned            log_error:3;     

    
    unsigned            unexpected_eof:1;
    
    unsigned            timedout:1;
    
    unsigned            error:1;
    
    unsigned            destroyed:1;

    
    unsigned            idle:1;
    
    unsigned            reusable:1;
    
    unsigned            close:1;

    
    unsigned            sendfile:1;
    
    unsigned            sndlowat:1;
    unsigned            tcp_nodelay:2;   
    unsigned            tcp_nopush:2;    

    unsigned            need_last_buf:1;

#if (NGX_HAVE_IOCP)
    unsigned            accept_context_updated:1;
#endif

#if (NGX_HAVE_AIO_SENDFILE)
    
    unsigned            aio_sendfile:1;
    unsigned            busy_count:2;
    
    ngx_buf_t          *busy_sendfile;
#endif

#if (NGX_THREADS)
    ngx_atomic_t        lock;
#endif
};

```

在处理请求的过程中，若 Nginx 服务器主动向上游服务器建立连接，完成连接建立并与之进行通信，这种相对Nginx 服务器来说是一种主动连接，主动连接由结构体ngx\_peer\_connection\_t 表示，但是该结构体 ngx\_peer\_connection\_t 也是 ngx\_connection\_t 结构体的封装。该结构体定义在文件[src/event/ngx\_event\_connect.h](http://lxr.nginx.org/source/src/event/ngx_event_connect.h) 中：

```

struct ngx_peer_connection_s {
    
    ngx_connection_t                *connection;

    
    struct sockaddr                 *sockaddr;
    socklen_t                        socklen;
    
    ngx_str_t                       *name;

    
    ngx_uint_t                       tries;

    
    ngx_event_get_peer_pt            get;
    
    ngx_event_free_peer_pt           free;
    
    void                            *data;

#if (NGX_SSL)
    ngx_event_set_peer_session_pt    set_session;
    ngx_event_save_peer_session_pt   save_session;
#endif

#if (NGX_THREADS)
    ngx_atomic_t                    *lock;
#endif

    
    ngx_addr_t                      *local;

    
    int                              rcvbuf;

    
    ngx_log_t                       *log;

    
    unsigned                         cached:1;

                                     
    unsigned                         log_error:2;
};

```

## ngx\_events\_module 核心模块

## ngx\_events\_module 核心模块的定义

ngx\_events\_module 模块是事件的核心模块，该模块的功能是：定义新的事件类型，并为每个事件模块定义通用接口ngx\_event\_module\_t 结构体，管理事件模块生成的配置项结构体，并解析事件类配置项。首先，看下该模块在文件[src/event/ngx\_event.c](http://lxr.nginx.org/source/src/event/ngx_event.c) 中的定义：

```

ngx_module_t  ngx_events_module = {
    NGX_MODULE_V1,
    &ngx_events_module_ctx,                
    ngx_events_commands,                   
    NGX_CORE_MODULE,                       
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NGX_MODULE_V1_PADDING
};

```

其中，模块的配置项指令结构 ngx\_events\_commands 决定了该模块的功能。配置项指令结构ngx\_events\_commands 在文件[src/event/ngx\_event.c](http://lxr.nginx.org/source/src/event/ngx_event.c) 中定义如下：

```

static ngx_command_t  ngx_events_commands[] = {

    { ngx_string("events"),
      NGX_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
      ngx_events_block,
      0,
      0,
      NULL },

      ngx_null_command
};

```

从配置项结构体中可以知道，该模块只对 events{...} 配置块感兴趣，并定义了管理事件模块的方法ngx\_events\_block；ngx\_events\_block 方法在文件[src/event/ngx\_event.c](http://lxr.nginx.org/source/src/event/ngx_event.c) 中定义：

```

static char *
ngx_events_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
    char                 *rv;
    void               ***ctx;
    ngx_uint_t            i;
    ngx_conf_t            pcf;
    ngx_event_module_t   *m;

    if (*(void **) conf) {
        return "is duplicate";
    }

    

    
    ngx_event_max_module = 0;
    for (i = 0; ngx_modules[i]; i++) {
        if (ngx_modules[i]->type != NGX_EVENT_MODULE) {
            continue;
        }

        ngx_modules[i]->ctx_index = ngx_event_max_module++;
    }

    ctx = ngx_pcalloc(cf->pool, sizeof(void *));
    if (ctx == NULL) {
        return NGX_CONF_ERROR;
    }

    
    *ctx = ngx_pcalloc(cf->pool, ngx_event_max_module * sizeof(void *));
    if (*ctx == NULL) {
        return NGX_CONF_ERROR;
    }

    *(void **) conf = ctx;

    
    for (i = 0; ngx_modules[i]; i++) {
        if (ngx_modules[i]->type != NGX_EVENT_MODULE) {
            continue;
        }

        m = ngx_modules[i]->ctx;

        if (m->create_conf) {
            (*ctx)[ngx_modules[i]->ctx_index] = m->create_conf(cf->cycle);
            if ((*ctx)[ngx_modules[i]->ctx_index] == NULL) {
                return NGX_CONF_ERROR;
            }
        }
    }

    
    pcf = *cf;
    cf->ctx = ctx;
    cf->module_type = NGX_EVENT_MODULE;
    cf->cmd_type = NGX_EVENT_CONF;

    
    rv = ngx_conf_parse(cf, NULL);

    *cf = pcf;

    if (rv != NGX_CONF_OK)
        return rv;

    
    for (i = 0; ngx_modules[i]; i++) {
        if (ngx_modules[i]->type != NGX_EVENT_MODULE) {
            continue;
        }

        m = ngx_modules[i]->ctx;

        if (m->init_conf) {
            rv = m->init_conf(cf->cycle, (*ctx)[ngx_modules[i]->ctx_index]);
            if (rv != NGX_CONF_OK) {
                return rv;
            }
        }
    }

    return NGX_CONF_OK;
}

```

另外，在 ngx\_events\_module 模块的定义中有一个成员ctx 指向了核心模块的通用接口结构。核心模块的通用接口结构体定义在文件[src/core/ngx\_conf\_file.h](http://lxr.nginx.org/source/src/core/ngx_conf_file.h) 中：

```

typedef struct {
    
    ngx_str_t             name;
    
    void               *(*create_conf)(ngx_cycle_t *cycle);
    
    char               *(*init_conf)(ngx_cycle_t *cycle, void *conf);
} ngx_core_module_t;

```

因此，ngx\_events\_module 作为核心模块，必须定义核心模块的通用接口结构。ngx\_events\_module 模块的核心模块通用接口在文件[src/event/ngx\_event.c](http://lxr.nginx.org/source/src/event/ngx_event.c) 中定义：

```

static ngx_core_module_t  ngx_events_module_ctx = {
    ngx_string("events"),
    NULL,
    
    ngx_event_init_conf
};

```

## 所有事件模块的配置项管理

Nginx 服务器在结构体 ngx\_cycle\_t 中定义了一个四级指针成员 conf\_ctx，整个Nginx 模块都是使用该四级指针成员管理模块的配置项结构，以下events 模块为例对该四级指针成员进行简单的分析，如下图所示：

每个事件模块可以通过宏定义 ngx\_event\_get\_conf 获取它在create\_conf 中分配的结构体的指针；该宏中定义如下：

```
#define ngx_event_get_conf(conf_ctx, module) \
(*(ngx_get_conf(conf_ctx, ngx_events_module))) [module.ctx_index];


#define ngx_get_conf(conf_ctx, module) conf_ctx[module.index]

```

从上面的宏定义可以知道，每个事件模块获取自己在 create\_conf 中分配的结构体的指针，只需在ngx\_event\_get\_conf 传入参数ngx\_cycle\_t 中的 conf\_ctx 成员，并且传入自己模块的名称即可获取自己分配的结构体指针。

## ngx\_event\_core\_module 事件模块

ngx\_event\_core\_module 模块是一个事件类型的模块，它在所有事件模块中的顺序是第一，是其它事件类模块的基础。它主要完成以下任务：

1. 创建连接池；
2. 决定使用哪些事件驱动机制；
3. 初始化将要使用的事件模块；

## ngx\_event\_conf\_t 结构体

ngx\_event\_conf\_t 结构体是用来保存ngx\_event\_core\_module 事件模块配置项参数的。该结构体在文件[src/event/ngx\_event.h](http://lxr.nginx.org/source/src/event/ngx_event.h) 中定义：

```

typedef struct {
    
    ngx_uint_t    connections;
    
    ngx_uint_t    use;

    
    ngx_flag_t    multi_accept;
    
    ngx_flag_t    accept_mutex;

    
    ngx_msec_t    accept_mutex_delay;

    
    u_char       *name;

#if (NGX_DEBUG)
    
    ngx_array_t   debug_connection;
#endif
} ngx_event_conf_t;

```

## ngx\_event\_core\_module 事件模块的定义

该模块在文件 [src/event/ngx\_event.c](http://lxr.nginx.org/source/src/event/ngx_event.c) 中定义：

```

ngx_module_t  ngx_event_core_module = {
    NGX_MODULE_V1,
    &ngx_event_core_module_ctx,            
    ngx_event_core_commands,               
    NGX_EVENT_MODULE,                      
    NULL,                                  
    ngx_event_module_init,                 
    ngx_event_process_init,                
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NGX_MODULE_V1_PADDING
};

```

其中，模块的配置项指令结构 ngx\_event\_core\_commands 决定了该模块的功能。配置项指令结构 ngx\_event\_core\_commands 在文件 [src/event/ngx\_event.c](http://lxr.nginx.org/source/src/event/ngx_event.c) 中定义如下：

```
static ngx_str_t  event_core_name = ngx_string("event_core");


static ngx_command_t  ngx_event_core_commands[] = {

    
    { ngx_string("worker_connections"),
      NGX_EVENT_CONF|NGX_CONF_TAKE1,
      ngx_event_connections,
      0,
      0,
      NULL },

    
    { ngx_string("connections"),
      NGX_EVENT_CONF|NGX_CONF_TAKE1,
      ngx_event_connections,
      0,
      0,
      NULL },

    
    { ngx_string("use"),
      NGX_EVENT_CONF|NGX_CONF_TAKE1,
      ngx_event_use,
      0,
      0,
      NULL },

    
    { ngx_string("multi_accept"),
      NGX_EVENT_CONF|NGX_CONF_FLAG,
      ngx_conf_set_flag_slot,
      0,
      offsetof(ngx_event_conf_t, multi_accept),
      NULL },

    
    { ngx_string("accept_mutex"),
      NGX_EVENT_CONF|NGX_CONF_FLAG,
      ngx_conf_set_flag_slot,
      0,
      offsetof(ngx_event_conf_t, accept_mutex),
      NULL },

    
    { ngx_string("accept_mutex_delay"),
      NGX_EVENT_CONF|NGX_CONF_TAKE1,
      ngx_conf_set_msec_slot,
      0,
      offsetof(ngx_event_conf_t, accept_mutex_delay),
      NULL },

    
    { ngx_string("debug_connection"),
      NGX_EVENT_CONF|NGX_CONF_TAKE1,
      ngx_event_debug_connection,
      0,
      0,
      NULL },

      ngx_null_command
};

```

其中，每个事件模块都需要实现事件模块的通用接口结构 ngx\_event\_module\_t，ngx\_event\_core\_module 模块的上下文结构 ngx\_event\_core\_module\_ctx 并不真正的负责网络事件的驱动，所有不会实现ngx\_event\_module\_t 结构体中的成员 actions 中的方法。上下文结构 ngx\_event\_core\_module\_ctx 在文件 [src/event/ngx\_event.c](http://lxr.nginx.org/source/src/event/ngx_event.c) 中定义如下：

```

ngx_event_module_t  ngx_event_core_module_ctx = {
    &event_core_name,
    ngx_event_core_create_conf,            
    ngx_event_core_init_conf,              
    { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
};

```

在模块定义中，实现了两种方法分别为 ngx\_event\_module\_init 和ngx\_event\_process\_init 方法。在Nginx 启动过程中没有使用 fork 出 worker 子进程之前，先调用 ngx\_event\_core\_module 模块中的 ngx\_event\_module\_init 方法，当fork 出 worker 子进程后，每一个 worker 子进程则会调用 ngx\_event\_process\_init 方法。

ngx\_event\_module\_init 方法在文件[src/event/ngx\_event.c](http://lxr.nginx.org/source/src/event/ngx_event.c) 中定义：

```

static ngx_int_t
ngx_event_module_init(ngx_cycle_t *cycle)
{
    void              ***cf;
    u_char              *shared;
    size_t               size, cl;
    ngx_shm_t            shm;
    ngx_time_t          *tp;
    ngx_core_conf_t     *ccf;
    ngx_event_conf_t    *ecf;

    
    cf = ngx_get_conf(cycle->conf_ctx, ngx_events_module);
    
    ecf = (*cf)[ngx_event_core_module.ctx_index];

    
    if (!ngx_test_config && ngx_process <= NGX_PROCESS_MASTER) {
        ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0,
                      "using the \"%s\" event method", ecf->name);
    }

    
    ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);

    ngx_timer_resolution = ccf->timer_resolution;

#if !(NGX_WIN32)
    {
    ngx_int_t      limit;
    struct rlimit  rlmt;

    
    if (getrlimit(RLIMIT_NOFILE, &rlmt) == -1) {
        ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
                      "getrlimit(RLIMIT_NOFILE) failed, ignored");

    } else {
        
        if (ecf->connections > (ngx_uint_t) rlmt.rlim_cur
            && (ccf->rlimit_nofile == NGX_CONF_UNSET
                || ecf->connections > (ngx_uint_t) ccf->rlimit_nofile))
        {
            limit = (ccf->rlimit_nofile == NGX_CONF_UNSET) ?
                         (ngx_int_t) rlmt.rlim_cur : ccf->rlimit_nofile;

            ngx_log_error(NGX_LOG_WARN, cycle->log, 0,
                          "%ui worker_connections exceed "
                          "open file resource limit: %i",
                          ecf->connections, limit);
        }
    }
    }
#endif 

    
    if (ccf->master == 0) {
        return NGX_OK;
    }

    
    if (ngx_accept_mutex_ptr) {
        return NGX_OK;
    }

    
    

    
    cl = 128;

    
    size = cl            
           + cl          
           + cl;         

#if (NGX_STAT_STUB)

    
    size += cl           
           + cl          
           + cl          
           + cl          
           + cl          
           + cl          
           + cl;         

#endif

    
    shm.size = size;
    shm.name.len = sizeof("nginx_shared_zone");
    shm.name.data = (u_char *) "nginx_shared_zone";
    shm.log = cycle->log;

    
    if (ngx_shm_alloc(&shm) != NGX_OK) {
        return NGX_ERROR;
    }

    
    shared = shm.addr;

    ngx_accept_mutex_ptr = (ngx_atomic_t *) shared;
    
    ngx_accept_mutex.spin = (ngx_uint_t) -1;

    if (ngx_shmtx_create(&ngx_accept_mutex, (ngx_shmtx_sh_t *) shared,
                         cycle->lock_file.data)
        != NGX_OK)
    {
        return NGX_ERROR;
    }

    
    ngx_connection_counter = (ngx_atomic_t *) (shared + 1 * cl);

    (void) ngx_atomic_cmp_set(ngx_connection_counter, 0, 1);

    ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                   "counter: %p, %d",
                   ngx_connection_counter, *ngx_connection_counter);

    ngx_temp_number = (ngx_atomic_t *) (shared + 2 * cl);

    tp = ngx_timeofday();

    ngx_random_number = (tp->msec << 16) + ngx_pid;

#if (NGX_STAT_STUB)

    ngx_stat_accepted = (ngx_atomic_t *) (shared + 3 * cl);
    ngx_stat_handled = (ngx_atomic_t *) (shared + 4 * cl);
    ngx_stat_requests = (ngx_atomic_t *) (shared + 5 * cl);
    ngx_stat_active = (ngx_atomic_t *) (shared + 6 * cl);
    ngx_stat_reading = (ngx_atomic_t *) (shared + 7 * cl);
    ngx_stat_writing = (ngx_atomic_t *) (shared + 8 * cl);
    ngx_stat_waiting = (ngx_atomic_t *) (shared + 9 * cl);

#endif

    return NGX_OK;
}

```

ngx\_event\_process\_init 方法在文件[src/event/ngx\_event.c](http://lxr.nginx.org/source/src/event/ngx_event.c) 中定义：

```
static ngx_int_t
ngx_event_process_init(ngx_cycle_t *cycle)
{
    ngx_uint_t           m, i;
    ngx_event_t         *rev, *wev;
    ngx_listening_t     *ls;
    ngx_connection_t    *c, *next, *old;
    ngx_core_conf_t     *ccf;
    ngx_event_conf_t    *ecf;
    ngx_event_module_t  *module;

    
    ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
    
    ecf = ngx_event_get_conf(cycle->conf_ctx, ngx_event_core_module);

    
    if (ccf->master && ccf->worker_processes > 1 && ecf->accept_mutex) {
        ngx_use_accept_mutex = 1;
        ngx_accept_mutex_held = 0;
        ngx_accept_mutex_delay = ecf->accept_mutex_delay;

    } else {
        ngx_use_accept_mutex = 0;
    }

#if (NGX_WIN32)

    

    ngx_use_accept_mutex = 0;

#endif

    ngx_queue_init(&ngx_posted_accept_events);
    ngx_queue_init(&ngx_posted_events);

    
    if (ngx_event_timer_init(cycle->log) == NGX_ERROR) {
        return NGX_ERROR;
    }

    
    for (m = 0; ngx_modules[m]; m++) {
        if (ngx_modules[m]->type != NGX_EVENT_MODULE) {
            continue;
        }

        if (ngx_modules[m]->ctx_index != ecf->use) {
            continue;
        }

        module = ngx_modules[m]->ctx;

        if (module->actions.init(cycle, ngx_timer_resolution) != NGX_OK) {
            
            exit(2);
        }

        break;
    }

#if !(NGX_WIN32)

    
    if (ngx_timer_resolution && !(ngx_event_flags & NGX_USE_TIMER_EVENT)) {
        struct sigaction  sa;
        struct itimerval  itv;

        ngx_memzero(&sa, sizeof(struct sigaction));
        
        
        sa.sa_handler = ngx_timer_signal_handler;
        
        sigemptyset(&sa.sa_mask);

        
        if (sigaction(SIGALRM, &sa, NULL) == -1) {
            ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
                          "sigaction(SIGALRM) failed");
            return NGX_ERROR;
        }

        
        itv.it_interval.tv_sec = ngx_timer_resolution / 1000;
        itv.it_interval.tv_usec = (ngx_timer_resolution % 1000) * 1000;
        itv.it_value.tv_sec = ngx_timer_resolution / 1000;
        itv.it_value.tv_usec = (ngx_timer_resolution % 1000 ) * 1000;

        
        if (setitimer(ITIMER_REAL, &itv, NULL) == -1) {
            ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
                          "setitimer() failed");
        }
    }

    
    if (ngx_event_flags & NGX_USE_FD_EVENT) {
        struct rlimit  rlmt;

        if (getrlimit(RLIMIT_NOFILE, &rlmt) == -1) {
            ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
                          "getrlimit(RLIMIT_NOFILE) failed");
            return NGX_ERROR;
        }

        cycle->files_n = (ngx_uint_t) rlmt.rlim_cur;

        cycle->files = ngx_calloc(sizeof(ngx_connection_t *) * cycle->files_n,
                                  cycle->log);
        if (cycle->files == NULL) {
            return NGX_ERROR;
        }
    }

#endif

    
    cycle->connections =
        ngx_alloc(sizeof(ngx_connection_t) * cycle->connection_n, cycle->log);
    if (cycle->connections == NULL) {
        return NGX_ERROR;
    }

    c = cycle->connections;

    
    cycle->read_events = ngx_alloc(sizeof(ngx_event_t) * cycle->connection_n,
                                   cycle->log);
    if (cycle->read_events == NULL) {
        return NGX_ERROR;
    }

    rev = cycle->read_events;
    for (i = 0; i < cycle->connection_n; i++) {
        rev[i].closed = 1;
        rev[i].instance = 1;
    }

    
    cycle->write_events = ngx_alloc(sizeof(ngx_event_t) * cycle->connection_n,
                                    cycle->log);
    if (cycle->write_events == NULL) {
        return NGX_ERROR;
    }

    wev = cycle->write_events;
    for (i = 0; i < cycle->connection_n; i++) {
        wev[i].closed = 1;
    }

    i = cycle->connection_n;
    next = NULL;

    
    do {
        i--;

        c[i].data = next;
        c[i].read = &cycle->read_events[i];
        c[i].write = &cycle->write_events[i];
        c[i].fd = (ngx_socket_t) -1;

        next = &c[i];

#if (NGX_THREADS)
        c[i].lock = 0;
#endif
    } while (i);

    
    cycle->free_connections = next;
    cycle->free_connection_n = cycle->connection_n;

    

    
    ls = cycle->listening.elts;
    for (i = 0; i < cycle->listening.nelts; i++) {

        
        c = ngx_get_connection(ls[i].fd, cycle->log);

        if (c == NULL) {
            return NGX_ERROR;
        }

        c->log = &ls[i].log;

        c->listening = &ls[i];
        ls[i].connection = c;

        rev = c->read;

        rev->log = c->log;
        rev->accept = 1;

#if (NGX_HAVE_DEFERRED_ACCEPT)
        rev->deferred_accept = ls[i].deferred_accept;
#endif

        if (!(ngx_event_flags & NGX_USE_IOCP_EVENT)) {
            if (ls[i].previous) {

                

                old = ls[i].previous->connection;

                if (ngx_del_event(old->read, NGX_READ_EVENT, NGX_CLOSE_EVENT)
                    == NGX_ERROR)
                {
                    return NGX_ERROR;
                }

                old->fd = (ngx_socket_t) -1;
            }
        }

#if (NGX_WIN32)

        if (ngx_event_flags & NGX_USE_IOCP_EVENT) {
            ngx_iocp_conf_t  *iocpcf;

            rev->handler = ngx_event_acceptex;

            if (ngx_use_accept_mutex) {
                continue;
            }

            if (ngx_add_event(rev, 0, NGX_IOCP_ACCEPT) == NGX_ERROR) {
                return NGX_ERROR;
            }

            ls[i].log.handler = ngx_acceptex_log_error;

            iocpcf = ngx_event_get_conf(cycle->conf_ctx, ngx_iocp_module);
            if (ngx_event_post_acceptex(&ls[i], iocpcf->post_acceptex)
                == NGX_ERROR)
            {
                return NGX_ERROR;
            }

        } else {
            rev->handler = ngx_event_accept;

            if (ngx_use_accept_mutex) {
                continue;
            }

            if (ngx_add_event(rev, NGX_READ_EVENT, 0) == NGX_ERROR) {
                return NGX_ERROR;
            }
        }

#else

        
        rev->handler = ngx_event_accept;

        if (ngx_use_accept_mutex) {
            continue;
        }

        if (ngx_event_flags & NGX_USE_RTSIG_EVENT) {
            if (ngx_add_conn(c) == NGX_ERROR) {
                return NGX_ERROR;
            }

        } else {
        
            if (ngx_add_event(rev, NGX_READ_EVENT, 0) == NGX_ERROR) {
                return NGX_ERROR;
            }
        }

#endif

    }

    return NGX_OK;
}

```

参考资料：

《深入理解 Nginx 》

《[nginx事件模块分析(二)](http://blog.csdn.net/freeinfor/article/details/16343223)》


# Nginx 的 epoll 事件驱动模块

## 概述

在前面的文章中《[Nginx 事件模块](http://blog.csdn.net/chenhanzhun/article/details/42805757)》介绍了Nginx 的事件驱动框架以及不同类型事件驱动模块的管理。本节基于前面的知识，简单介绍下在Linux 系统下的 epoll 事件驱动模块。关于 epoll 的使用与原理可以参照文章 《[epoll 解析](http://blog.csdn.net/chenhanzhun/article/details/42747127)》。在这里直接介绍Nginx 服务器基于事件驱动框架实现的epoll 事件驱动模块。

## ngx\_epoll\_module 事件驱动模块

## ngx\_epoll\_conf\_t 结构体

ngx\_epoll\_conf\_t 结构体是保存ngx\_epoll\_module 事件驱动模块的配置项结构。该结构体在文件[src/event/modules/ngx\_epoll\_module.c](http://lxr.nginx.org/source/src/event/modules/ngx_epoll_module.c) 中定义：

```

typedef struct {
    ngx_uint_t  events;         
    ngx_uint_t  aio_requests;   
} ngx_epoll_conf_t;

```

## ngx\_epoll\_module 事件驱动模块的定义

所有模块的定义都是基于模块通用接口 ngx\_module\_t 结构，ngx\_epoll\_module 模块在文件[src/event/modules/ngx\_epoll\_module.c](http://lxr.nginx.org/source/src/event/modules/ngx_epoll_module.c) 中定义如下：

```

ngx_module_t  ngx_epoll_module = {
    NGX_MODULE_V1,
    &ngx_epoll_module_ctx,               
    ngx_epoll_commands,                  
    NGX_EVENT_MODULE,                    
    NULL,                                
    NULL,                                
    NULL,                                
    NULL,                                
    NULL,                                
    NULL,                                
    NULL,                                
    NGX_MODULE_V1_PADDING
};

```

在 ngx\_epoll\_module 模块的定义中，其中定义了该模块感兴趣的配置项ngx\_epoll\_commands 数组，该配置项数组在文件[src/event/modules/ngx\_epoll\_module.c](http://lxr.nginx.org/source/src/event/modules/ngx_epoll_module.c) 中定义：

```

static ngx_command_t  ngx_epoll_commands[] = {

    
    { ngx_string("epoll_events"),
      NGX_EVENT_CONF|NGX_CONF_TAKE1,
      ngx_conf_set_num_slot,
      0,
      offsetof(ngx_epoll_conf_t, events),
      NULL },

    
    { ngx_string("worker_aio_requests"),
      NGX_EVENT_CONF|NGX_CONF_TAKE1,
      ngx_conf_set_num_slot,
      0,
      offsetof(ngx_epoll_conf_t, aio_requests),
      NULL },

      ngx_null_command
};

```

在 ngx\_epoll\_module 模块的定义中，定义了该模块的上下文结构ngx\_epoll\_module\_ctx，该上下文结构是基于事件模块的通用接口ngx\_event\_module\_t 结构来定义的。该上下文结构在文件[src/event/modules/ngx\_epoll\_module.c](http://lxr.nginx.org/source/src/event/modules/ngx_epoll_module.c) 中定义：

```

ngx_event_module_t  ngx_epoll_module_ctx = {
    &epoll_name,
    ngx_epoll_create_conf,               
    ngx_epoll_init_conf,                 

    {
        ngx_epoll_add_event,             
        ngx_epoll_del_event,             
        ngx_epoll_add_event,             
        ngx_epoll_del_event,             
        ngx_epoll_add_connection,        
        ngx_epoll_del_connection,        
        NULL,                            
        ngx_epoll_process_events,        
        ngx_epoll_init,                  
        ngx_epoll_done,                  
    }
};

```

在 ngx\_epoll\_module 模块的上下文事件接口结构中，重点定义了ngx\_event\_actions\_t 结构中的接口回调方法。

## ngx\_epoll\_module 事件驱动模块的操作

ngx\_epoll\_module 模块的操作由ngx\_epoll\_module 模块的上下文事件接口结构中成员actions 实现。该成员实现的方法如下所示：

```
        ngx_epoll_add_event,             
        ngx_epoll_del_event,             
        ngx_epoll_add_event,             
        ngx_epoll_del_event,             
        ngx_epoll_add_connection,        
        ngx_epoll_del_connection,        
        NULL,                            
        ngx_epoll_process_events,        
        ngx_epoll_init,                  
        ngx_epoll_done,                  

```

### ngx\_epoll\_module 模块的初始化

ngx\_epoll\_module 模块的初始化由函数ngx\_epoll\_init 实现。该函数主要做了两件事：创建epoll 对象 和 创建 event\_list 数组（调用epoll\_wait 函数时用于存储从内核复制的已就绪的事件）；该函数在文件[src/event/modules/ngx\_epoll\_module.c](http://lxr.nginx.org/source/src/event/modules/ngx_epoll_module.c) 中定义：

```
static int                  ep = -1;    
static struct epoll_event  *event_list; 
static ngx_uint_t           nevents;    


static ngx_int_t
ngx_epoll_init(ngx_cycle_t *cycle, ngx_msec_t timer)
{
    ngx_epoll_conf_t  *epcf;

    
    epcf = ngx_event_get_conf(cycle->conf_ctx, ngx_epoll_module);

    if (ep == -1) {
        
        ep = epoll_create(cycle->connection_n / 2);

        
        if (ep == -1) {
            ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
                          "epoll_create() failed");
            return NGX_ERROR;
        }

#if (NGX_HAVE_FILE_AIO)

        
        ngx_epoll_aio_init(cycle, epcf);

#endif
    }

    
    if (nevents < epcf->events) {
        
        if (event_list) {
            ngx_free(event_list);
        }

        
        event_list = ngx_alloc(sizeof(struct epoll_event) * epcf->events,
                               cycle->log);
        if (event_list == NULL) {
            return NGX_ERROR;
        }
    }

    
    nevents = epcf->events;

    
    
    ngx_io = ngx_os_io;

    
    ngx_event_actions = ngx_epoll_module_ctx.actions;

#if (NGX_HAVE_CLEAR_EVENT)
    
    ngx_event_flags = NGX_USE_CLEAR_EVENT
#else
    
    ngx_event_flags = NGX_USE_LEVEL_EVENT
#endif
                      |NGX_USE_GREEDY_EVENT
                      |NGX_USE_EPOLL_EVENT;

    return NGX_OK;
}

```

### ngx\_epoll\_module 模块的事件处理

ngx\_epoll\_module 模块的事件处理由函数ngx\_epoll\_process\_events 实现。ngx\_epoll\_process\_events 函数是实现事件收集、事件发送的接口。该函数在文件[src/event/modules/ngx\_epoll\_module.c](http://lxr.nginx.org/source/src/event/modules/ngx_epoll_module.c) 中定义：

```

static ngx_int_t
ngx_epoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
{
    int                events;
    uint32_t           revents;
    ngx_int_t          instance, i;
    ngx_uint_t         level;
    ngx_err_t          err;
    ngx_event_t       *rev, *wev, **queue;
    ngx_connection_t  *c;

    

    ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                   "epoll timer: %M", timer);

    
    events = epoll_wait(ep, event_list, (int) nevents, timer);

    
    err = (events == -1) ? ngx_errno : 0;

    
    if (flags & NGX_UPDATE_TIME || ngx_event_timer_alarm) {
        
        ngx_time_update();
    }

    
    if (err) {
        if (err == NGX_EINTR) {

            if (ngx_event_timer_alarm) {
                ngx_event_timer_alarm = 0;
                return NGX_OK;
            }

            level = NGX_LOG_INFO;

        } else {
            level = NGX_LOG_ALERT;
        }

        ngx_log_error(level, cycle->log, err, "epoll_wait() failed");
        return NGX_ERROR;
    }

    
    if (events == 0) {
        if (timer != NGX_TIMER_INFINITE) {
            return NGX_OK;
        }

        ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
                      "epoll_wait() returned no events without timeout");
        return NGX_ERROR;
    }

    
    ngx_mutex_lock(ngx_posted_events_mutex);

    
    for (i = 0; i < events; i++) {
        
        c = event_list[i].data.ptr;

        
        instance = (uintptr_t) c & 1;
        
        c = (ngx_connection_t *) ((uintptr_t) c & (uintptr_t) ~1);

        
        rev = c->read;

        
        if (c->fd == -1 || rev->instance != instance) {

            

            ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                           "epoll: stale event %p", c);
            continue;
        }

        
        revents = event_list[i].events;

        ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                       "epoll: fd:%d ev:%04XD d:%p",
                       c->fd, revents, event_list[i].data.ptr);
        
        
        if (revents & (EPOLLERR|EPOLLHUP)) {
            ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                           "epoll_wait() error on fd:%d ev:%04XD",
                           c->fd, revents);
        }

#if 0
        if (revents & ~(EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP)) {
            ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
                          "strange epoll_wait() events fd:%d ev:%04XD",
                          c->fd, revents);
        }
#endif

        
        if ((revents & (EPOLLERR|EPOLLHUP))
             && (revents & (EPOLLIN|EPOLLOUT)) == 0)
        {
            

            revents |= EPOLLIN|EPOLLOUT;
        }

        
        if ((revents & EPOLLIN) && rev->active) {

#if (NGX_HAVE_EPOLLRDHUP)
            
            if (revents & EPOLLRDHUP) {
                rev->pending_eof = 1;
            }
#endif

            if ((flags & NGX_POST_THREAD_EVENTS) && !rev->accept) {
                rev->posted_ready = 1;

            } else {
                
                
                rev->ready = 1;
            }

            
            if (flags & NGX_POST_EVENTS) {
                queue = (ngx_event_t **) (rev->accept ?
                               &ngx_posted_accept_events : &ngx_posted_events);

                ngx_locked_post_event(rev, queue);

            } else {
                
                rev->handler(rev);
            }
        }

        
        wev = c->write;

        
        if ((revents & EPOLLOUT) && wev->active) {

            
            if (c->fd == -1 || wev->instance != instance) {

                

                ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                               "epoll: stale event %p", c);
                continue;
            }

            if (flags & NGX_POST_THREAD_EVENTS) {
                wev->posted_ready = 1;

            } else {

                
                wev->ready = 1;
            }

            
            if (flags & NGX_POST_EVENTS) {
                ngx_locked_post_event(wev, &ngx_posted_events);

            } else {
                
                wev->handler(wev);
            }
        }
    }

    ngx_mutex_unlock(ngx_posted_events_mutex);

    return NGX_OK;
}

```

### ngx\_epoll\_module 模块的事件添加与删除

ngx\_epoll\_module 模块的事件添加与删除分别由函数ngx\_epoll\_add\_event 与ngx\_epoll\_del\_event 实现。这两个函数的实现都是通过调用epoll\_ctl 函数。具体实现在文件 [src/event/modules/ngx\_epoll\_module.c](http://lxr.nginx.org/source/src/event/modules/ngx_epoll_module.c) 中定义：

```

static ngx_int_t
ngx_epoll_add_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags)
{
    int                  op;
    uint32_t             events, prev;
    ngx_event_t         *e;
    ngx_connection_t    *c;
    struct epoll_event   ee;

    
    
    c = ev->data;

    
    events = (uint32_t) event;

    

    if (event == NGX_READ_EVENT) {
        
        e = c->write;
        prev = EPOLLOUT;
#if (NGX_READ_EVENT != EPOLLIN|EPOLLRDHUP)
        events = EPOLLIN|EPOLLRDHUP;
#endif

    } else {
        e = c->read;
        prev = EPOLLIN|EPOLLRDHUP;
#if (NGX_WRITE_EVENT != EPOLLOUT)
        events = EPOLLOUT;
#endif
    }

    
    if (e->active) {
        
        op = EPOLL_CTL_MOD;
        events |= prev;

    } else {
        
        op = EPOLL_CTL_ADD;
    }

    
    ee.events = events | (uint32_t) flags;
    
    ee.data.ptr = (void *) ((uintptr_t) c | ev->instance);

    ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                   "epoll add event: fd:%d op:%d ev:%08XD",
                   c->fd, op, ee.events);

    
    if (epoll_ctl(ep, op, c->fd, &ee) == -1) {
        ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_errno,
                      "epoll_ctl(%d, %d) failed", op, c->fd);
        return NGX_ERROR;
    }

    
    ev->active = 1;
#if 0
    ev->oneshot = (flags & NGX_ONESHOT_EVENT) ? 1 : 0;
#endif

    return NGX_OK;
}


static ngx_int_t
ngx_epoll_del_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags)
{
    int                  op;
    uint32_t             prev;
    ngx_event_t         *e;
    ngx_connection_t    *c;
    struct epoll_event   ee;

    

    
    if (flags & NGX_CLOSE_EVENT) {
        ev->active = 0;
        return NGX_OK;
    }

    
    c = ev->data;

    
    if (event == NGX_READ_EVENT) {
        
        e = c->write;
        prev = EPOLLOUT;

    } else {
        
        e = c->read;
        prev = EPOLLIN|EPOLLRDHUP;
    }

    
    if (e->active) {
        op = EPOLL_CTL_MOD;
        ee.events = prev | (uint32_t) flags;
        ee.data.ptr = (void *) ((uintptr_t) c | ev->instance);

    } else {
        
        op = EPOLL_CTL_DEL;
        ee.events = 0;
        ee.data.ptr = NULL;
    }

    ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                   "epoll del event: fd:%d op:%d ev:%08XD",
                   c->fd, op, ee.events);

    
    if (epoll_ctl(ep, op, c->fd, &ee) == -1) {
        ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_errno,
                      "epoll_ctl(%d, %d) failed", op, c->fd);
        return NGX_ERROR;
    }

    
    ev->active = 0;

    return NGX_OK;
}

```

### ngx\_epoll\_module 模块的连接添加与删除

ngx\_epoll\_module 模块的连接添加与删除分别由函数ngx\_epoll\_add\_connection 与ngx\_epoll\_del\_connection 实现。这两个函数的实现都是通过调用epoll\_ctl 函数。具体实现在文件 [src/event/modules/ngx\_epoll\_module.c](http://lxr.nginx.org/source/src/event/modules/ngx_epoll_module.c) 中定义：

```

static ngx_int_t
ngx_epoll_add_connection(ngx_connection_t *c)
{
    struct epoll_event  ee;

    
    ee.events = EPOLLIN|EPOLLOUT|EPOLLET|EPOLLRDHUP;
    ee.data.ptr = (void *) ((uintptr_t) c | c->read->instance);

    ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,
                   "epoll add connection: fd:%d ev:%08XD", c->fd, ee.events);

    
    if (epoll_ctl(ep, EPOLL_CTL_ADD, c->fd, &ee) == -1) {
        ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno,
                      "epoll_ctl(EPOLL_CTL_ADD, %d) failed", c->fd);
        return NGX_ERROR;
    }

    
    c->read->active = 1;
    c->write->active = 1;

    return NGX_OK;
}
Nginx


static ngx_int_t
ngx_epoll_del_connection(ngx_connection_t *c, ngx_uint_t flags)
{
    int                 op;
    struct epoll_event  ee;

    

    if (flags & NGX_CLOSE_EVENT) {
        c->read->active = 0;
        c->write->active = 0;
        return NGX_OK;
    }

    ngx_log_debug1(NGX_LOG_DEBUG_EVENTNginx, c->log, 0,
                   "epoll del connection: fd:%d", c->fd);

    op = EPOLL_CTL_DEL;
    ee.events = 0;
    ee.data.ptr = NULL;

    
    if (epoll_ctl(ep, op, c->fd, &ee) == -1) {
        ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno,
                      "epoll_ctl(%d, %d) failed", op, c->fd);
        return NGX_ERROR;
    }

    
    c->read->active = 0;
    c->write->active = 0;

    return NGX_OK;
}

```

## ngx\_epoll\_module 模块的异步 I/O

在 Nginx 中，文件异步 I/O 事件完成后的通知是集成到 epoll 对象中。该模块的文件异步I/O 实现如下：

```
#if (NGX_HAVE_FILE_AIO)

int                         ngx_eventfd = -1;   
aio_context_t               ngx_aio_ctx = 0;    

static ngx_event_t          ngx_eventfd_event;  
static ngx_connection_t     ngx_eventfd_conn;   

#endif

#if (NGX_HAVE_FILE_AIO)




static int
io_setup(u_int nr_reqs, aio_context_t *ctx)
{
    return syscall(SYS_io_setup, nr_reqs, ctx);
}


static int
io_destroy(aio_context_t ctx)
{
    return syscall(SYS_io_destroy, ctx);
}


static int
io_getevents(aio_context_t ctx, long min_nr, long nr, struct io_event *events,
    struct timespec *tmo)
{
    return syscall(SYS_io_getevents, ctx, min_nr, nr, events, tmo);
}


static void
ngx_epoll_aio_init(ngx_cycle_t *cycle, ngx_epoll_conf_t *epcf)
{
    int                 n;
    struct epoll_event  ee;

    
    ngx_eventfd = syscall(SYS_eventfd, 0);

    if (ngx_eventfd == -1) {
        ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
                      "eventfd() failed");
        ngx_file_aio = 0;
        return;
    }

    ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                   "eventfd: %d", ngx_eventfd);

    n = 1;

    
    if (ioctl(ngx_eventfd, FIONBIO, &n) == -1) {
        ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
                      "ioctl(eventfd, FIONBIO) failed");
        goto failed;
    }

    
    if (io_setup(epcf->aio_requests, &ngx_aio_ctx) == -1) {
        ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
                      "io_setup() failed");
        goto failed;
    }

    

    
    ngx_eventfd_event.data = &ngx_eventfd_conn;
    
    ngx_eventfd_event.handler = ngx_epoll_eventfd_handler;
    
    ngx_eventfd_event.log = cycle->log;
    
    ngx_eventfd_event.active = 1;
    
    ngx_eventfd_conn.fd = ngx_eventfd;
    
    ngx_eventfd_conn.read = &ngx_eventfd_event;
    
    ngx_eventfd_conn.log = cycle->log;

    ee.events = EPOLLIN|EPOLLET;
    ee.data.ptr = &ngx_eventfd_conn;

    
    if (epoll_ctl(ep, EPOLL_CTL_ADD, ngx_eventfd, &ee) != -1) {
        return;
    }

    
    ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
                  "epoll_ctl(EPOLL_CTL_ADD, eventfd) failed");

    if (io_destroy(ngx_aio_ctx) == -1) {
        ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
                      "io_destroy() failed");
    }

failed:

    if (close(ngx_eventfd) == -1) {
        ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
                      "eventfd close() failed");
    }

    ngx_eventfd = -1;
    ngx_aio_ctx = 0;
    ngx_file_aio = 0;
}

#endif

#if (NGX_HAVE_FILE_AIO)


static void
ngx_epoll_eventfd_handler(ngx_event_t *ev)
{
    int               n, events;
    long              i;
    uint64_t          ready;
    ngx_err_t         err;
    ngx_event_t      *e;
    ngx_event_aio_t  *aio;
    struct io_event   event[64];    
    struct timespec   ts;

    ngx_log_debug0(NGX_LOG_DEBUG_EVENT, ev->log, 0, "eventfd handler");

    
    n = read(ngx_eventfd, &ready, 8);

    err = ngx_errno;

    ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ev->log, 0, "eventfd: %d", n);

    if (n != 8) {
        if (n == -1) {
            if (err == NGX_EAGAIN) {
                return;
            }

            ngx_log_error(NGX_LOG_ALERT, ev->log, err, "read(eventfd) failed");
            return;
        }

        ngx_log_error(NGX_LOG_ALERT, ev->log, 0,
                      "read(eventfd) returned only %d bytes", n);
        return;
    }

    ts.tv_sec = 0;
    ts.tv_nsec = 0;

    
    while (ready) {

        
        events = io_getevents(ngx_aio_ctx, 1, 64, event, &ts);

        ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                       "io_getevents: %l", events);

        if (events > 0) {
            ready -= events;

            
            for (i = 0; i < events; i++) {

                ngx_log_debug4(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                               "io_event: %uXL %uXL %L %L",
                                event[i].data, event[i].obj,
                                event[i].res, event[i].res2);

                
                e = (ngx_event_t *) (uintptr_t) event[i].data;

                e->complete = 1;
                e->active = 0;
                e->ready = 1;

                aio = e->data;
                aio->res = event[i].res;

                
                ngx_post_event(e, &ngx_posted_events);
            }

            continue;
        }

        if (events == 0) {
            return;
        }

        
        ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_errno,
                      "io_getevents() failed");
        return;
    }
}

#endif

```

参考资料：

《深入理解Nginx》

《[模块ngx\_epoll\_module详解](http://blog.csdn.net/xiajun07061225/article/details/9250341)》

《 [nginx epoll详解](http://blog.csdn.net/freeinfor/article/details/17008131)》

《[Nginx源码分析-Epoll模块](http://www.alidata.org/archives/1296)》

《[关于ngx\_epoll\_add\_event的一些解释](http://blog.csdn.net/brainkick/article/details/9080789)》


# Nginx 定时器事件

## 概述

在 Nginx 中定时器事件的实现与内核无关。在事件模块中，当等待的事件不能在指定的时间内到达，则会触发Nginx 的超时机制，超时机制会对发生超时的事件进行管理，并对这些超时事件作出处理。对于定时事件的管理包括两方面：定时事件对象的组织形式 和 定时事件对象的超时检测。

## 定时事件的组织

Nginx 的定时器由红黑树实现的。在保存事件的结构体ngx\_event\_t 中有三个关于时间管理的成员，如下所示：

```
struct ngx_event_s{
    ...
      
    unsigned         timedout:1;  
      
    unsigned         timer_set:1;  
      
    ngx_rbtree_node_t   timer; 
    ...
};

```

Nginx 设置两个关于定时器的全局变量。在文件[src/event/ngx\_event\_timer.c](http://lxr.nginx.org/source/src/event/ngx_event_timer.c)中定义：

```

ngx_thread_volatile ngx_rbtree_t  ngx_event_timer_rbtree;

static ngx_rbtree_node_t          ngx_event_timer_sentinel;

```

这棵红黑树的每一个节点代表一个事件 ngx\_event\_t 结构体中的成员timer，ngx\_rbtree\_node\_t 节点代表事件的超时时间，以这个超时时间的大小组成的红黑树ngx\_event\_timer\_rbtree，则该红黑树中最左边的节点代表最可能超时的事件。

定时器事件初始化实际上调用红黑树的初始化，其在文件 [src/event/ngx\_event\_timer.c](http://lxr.nginx.org/source/src/event/ngx_event_timer.c)中定义：

```

ngx_int_t
ngx_event_timer_init(ngx_log_t *log)
{
    
    ngx_rbtree_init(&ngx_event_timer_rbtree, &ngx_event_timer_sentinel,
                    ngx_rbtree_insert_timer_value);

    
#if (NGX_THREADS)

    if (ngx_event_timer_mutex) {
        ngx_event_timer_mutex->log = log;
        return NGX_OK;
    }

    ngx_event_timer_mutex = ngx_mutex_init(log, 0);
    if (ngx_event_timer_mutex == NULL) {
        return NGX_ERROR;
    }

#endif

    return NGX_OK;
}

```

## 定时事件的超时检测

当需要对某个事件进行超时检测时，只需要将该事件添加到定时器红黑树中即可，由函数 ngx\_event\_add\_timer，将一个事件从定时器红黑树中删除由函数 ngx\_event\_del\_timer 实现。以下的函数都在文件 [src/event/ngx\_event\_timer.h](http://lxr.nginx.org/source/src/event/ngx_event_timer.h)中定义：

```

static ngx_inline void
ngx_event_del_timer(ngx_event_t *ev)
{
    ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                   "event timer del: %d: %M",
                    ngx_event_ident(ev->data), ev->timer.key);

    ngx_mutex_lock(ngx_event_timer_mutex);

    
    ngx_rbtree_delete(&ngx_event_timer_rbtree, &ev->timer);

    ngx_mutex_unlock(ngx_event_timer_mutex);

#if (NGX_DEBUG)
    ev->timer.left = NULL;
    ev->timer.right = NULL;
    ev->timer.parent = NULL;
#endif

    
    ev->timer_set = 0;
}


static ngx_inline void
ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer)
{
    ngx_msec_t      key;
    ngx_msec_int_t  diff;

    
    key = ngx_current_msec + timer;

    
    if (ev->timer_set) {

        

        diff = (ngx_msec_int_t) (key - ev->timer.key);

        if (ngx_abs(diff) < NGX_TIMER_LAZY_DELAY) {
            ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                           "event timer: %d, old: %M, new: %M",
                            ngx_event_ident(ev->data), ev->timer.key, key);
            return;
        }

        ngx_del_timer(ev);
    }

    ev->timer.key = key;

    ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                   "event timer add: %d: %M:%M",
                    ngx_event_ident(ev->data), timer, ev->timer.key);

    ngx_mutex_lock(ngx_event_timer_mutex);

    
    ngx_rbtree_insert(&ngx_event_timer_rbtree, &ev->timer);

    ngx_mutex_unlock(ngx_event_timer_mutex);

    
    ev->timer_set = 1;
}

```

判断一个函数是否超时由函数 ngx\_event\_find\_timer 实现，检查定时器所有事件由函数ngx\_event\_expire\_timer 实现。以下的函数都在文件[src/event/ngx\_event\_timer.c](http://lxr.nginx.org/source/src/event/ngx_event_timer.c)中定义：

```

ngx_msec_t
ngx_event_find_timer(void)
{
    ngx_msec_int_t      timer;
    ngx_rbtree_node_t  *node, *root, *sentinel;

    
    if (ngx_event_timer_rbtree.root == &ngx_event_timer_sentinel) {
        return NGX_TIMER_INFINITE;
    }

    ngx_mutex_lock(ngx_event_timer_mutex);

    root = ngx_event_timer_rbtree.root;
    sentinel = ngx_event_timer_rbtree.sentinel;

    
    node = ngx_rbtree_min(root, sentinel);

    ngx_mutex_unlock(ngx_event_timer_mutex);

    
    timer = (ngx_msec_int_t) (node->key - ngx_current_msec);

    
    return (ngx_msec_t) (timer > 0 ? timer : 0);
}


void
ngx_event_expire_timers(void)
{
    ngx_event_t        *ev;
    ngx_rbtree_node_t  *node, *root, *sentinel;

    sentinel = ngx_event_timer_rbtree.sentinel;

    
    for ( ;; ) {

        ngx_mutex_lock(ngx_event_timer_mutex);

        root = ngx_event_timer_rbtree.root;

        
        if (root == sentinel) {
            return;
        }

        
        node = ngx_rbtree_min(root, sentinel);

        

        
        if ((ngx_msec_int_t) (node->key - ngx_current_msec) <= 0) {
            
            ev = (ngx_event_t *) ((char *) node - offsetof(ngx_event_t, timer));

            
#if (NGX_THREADS)

            if (ngx_threaded && ngx_trylock(ev->lock) == 0) {

                

                ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                               "event %p is busy in expire timers", ev);
                break;
            }
#endif

            ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                           "event timer del: %d: %M",
                           ngx_event_ident(ev->data), ev->timer.key);

            
            ngx_rbtree_delete(&ngx_event_timer_rbtree, &ev->timer);

            ngx_mutex_unlock(ngx_event_timer_mutex);

#if (NGX_DEBUG)
            ev->timer.left = NULL;
            ev->timer.right = NULL;
            ev->timer.parent = NULL;
#endif

            
            ev->timer_set = 0;

            
#if (NGX_THREADS)
            if (ngx_threaded) {
                ev->posted_timedout = 1;

                ngx_post_event(ev, &ngx_posted_events);

                ngx_unlock(ev->lock);

                continue;
            }
#endif

            
            ev->timedout = 1;

            
            ev->handler(ev);

            continue;
        }

        break;
    }

    ngx_mutex_unlock(ngx_event_timer_mutex);
}

```

参考资料

《深入剖析Nginx》

《深入理解Nginx》


# Nginx 事件驱动模块连接处理

## 概述

由于 Nginx 工作在 master-worker 多进程模式，若所有 worker 进程在同一时间监听同一个端口，当该端口有新的连接事件出现时，每个worker 进程都会调用函数ngx\_event\_accept 试图与新的连接建立通信，即所有worker 进程都会被唤醒，这就是所谓的“惊群”问题，这样会导致系统性能下降。幸好在Nginx 采用了ngx\_accept\_mutex 同步锁机制，即只有获得该锁的worker 进程才能去处理新的连接事件，也就在同一时间只能有一个worker 进程监听某个端口。虽然这样做解决了“惊群”问题，但是随之会出现另一个问题，若每次出现的新连接事件都被同一个worker 进程获得锁的权利并处理该连接事件，这样会导致进程之间不均衡的状态，即在所有worker 进程中，某些进程处理的连接事件数量很庞大，而某些进程基本上不用处理连接事件，一直处于空闲状态。因此，这样会导致worker 进程之间的负载不均衡，会影响Nginx 的整体性能。为了解决负载失衡的问题，Nginx 在已经实现同步锁的基础上定义了负载阈值ngx\_accept\_disabled，当某个worker 进程的负载阈值大于 0 时，表示该进程处于负载超重的状态，则Nginx 会控制该进程，使其没机会试图与新的连接事件进行通信，这样就会为其他没有负载超重的进程创造了处理新连接事件的机会，以此达到进程间的负载均衡。

## 连接事件处理

新连接事件由函数 ngx\_event\_accept 处理。

```

void
ngx_event_accept(ngx_event_t *ev)
{
    socklen_t          socklen;
    ngx_err_t          err;
    ngx_log_t         *log;
    ngx_uint_t         level;
    ngx_socket_t       s;
    ngx_event_t       *rev, *wev;
    ngx_listening_t   *ls;
    ngx_connection_t  *c, *lc;
    ngx_event_conf_t  *ecf;
    u_char             sa[NGX_SOCKADDRLEN];
#if (NGX_HAVE_ACCEPT4)
    static ngx_uint_t  use_accept4 = 1;
#endif

    if (ev->timedout) {
        if (ngx_enable_accept_events((ngx_cycle_t *) ngx_cycle) != NGX_OK) {
            return;
        }

        ev->timedout = 0;
    }

    
    ecf = ngx_event_get_conf(ngx_cycle->conf_ctx, ngx_event_core_module);

    if (ngx_event_flags & NGX_USE_RTSIG_EVENT) {
        ev->available = 1;

    } else if (!(ngx_event_flags & NGX_USE_KQUEUE_EVENT)) {
        ev->available = ecf->multi_accept;
    }

    lc = ev->data;
    ls = lc->listening;
    ev->ready = 0;

    ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                   "accept on %V, ready: %d", &ls->addr_text, ev->available);

    do {
        socklen = NGX_SOCKADDRLEN;

        
#if (NGX_HAVE_ACCEPT4)
        if (use_accept4) {
            s = accept4(lc->fd, (struct sockaddr *) sa, &socklen,
                        SOCK_NONBLOCK);
        } else {
            s = accept(lc->fd, (struct sockaddr *) sa, &socklen);
        }
#else
        s = accept(lc->fd, (struct sockaddr *) sa, &socklen);
#endif

        
        if (s == (ngx_socket_t) -1) {
            err = ngx_socket_errno;

            if (err == NGX_EAGAIN) {
                ngx_log_debug0(NGX_LOG_DEBUG_EVENT, ev->log, err,
                               "accept() not ready");
                return;
            }

            level = NGX_LOG_ALERT;

            if (err == NGX_ECONNABORTED) {
                level = NGX_LOG_ERR;

            } else if (err == NGX_EMFILE || err == NGX_ENFILE) {
                level = NGX_LOG_CRIT;
            }

#if (NGX_HAVE_ACCEPT4)
            ngx_log_error(level, ev->log, err,
                          use_accept4 ? "accept4() failed" : "accept() failed");

            if (use_accept4 && err == NGX_ENOSYS) {
                use_accept4 = 0;
                ngx_inherited_nonblocking = 0;
                continue;
            }
#else
            ngx_log_error(level, ev->log, err, "accept() failed");
#endif

            if (err == NGX_ECONNABORTED) {
                if (ngx_event_flags & NGX_USE_KQUEUE_EVENT) {
                    ev->available--;
                }

                if (ev->available) {
                    continue;
                }
            }

            if (err == NGX_EMFILE || err == NGX_ENFILE) {
                if (ngx_disable_accept_events((ngx_cycle_t *) ngx_cycle)
                    != NGX_OK)
                {
                    return;
                }

                if (ngx_use_accept_mutex) {
                    if (ngx_accept_mutex_held) {
                        ngx_shmtx_unlock(&ngx_accept_mutex);
                        ngx_accept_mutex_held = 0;
                    }

                    ngx_accept_disabled = 1;

                } else {
                    ngx_add_timer(ev, ecf->accept_mutex_delay);
                }
            }

            return;
        }

#if (NGX_STAT_STUB)
        (void) ngx_atomic_fetch_add(ngx_stat_accepted, 1);
#endif

        
        ngx_accept_disabled = ngx_cycle->connection_n / 8
                              - ngx_cycle->free_connection_n;

        
        c = ngx_get_connection(s, ev->log);

        if (c == NULL) {
            if (ngx_close_socket(s) == -1) {
                ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_socket_errno,
                              ngx_close_socket_n " failed");
            }

            return;
        }

#if (NGX_STAT_STUB)
        (void) ngx_atomic_fetch_add(ngx_stat_active, 1);
#endif

        
        c->pool = ngx_create_pool(ls->pool_size, ev->log);
        if (c->pool == NULL) {
            ngx_close_accepted_connection(c);
            return;
        }

        c->sockaddr = ngx_palloc(c->pool, socklen);
        if (c->sockaddr == NULL) {
            ngx_close_accepted_connection(c);
            return;
        }

        ngx_memcpy(c->sockaddr, sa, socklen);

        log = ngx_palloc(c->pool, sizeof(ngx_log_t));
        if (log == NULL) {
            ngx_close_accepted_connection(c);
            return;
        }

        

        
        if (ngx_inherited_nonblocking) {
            if (ngx_event_flags & NGX_USE_AIO_EVENT) {
                if (ngx_blocking(s) == -1) {
                    ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_socket_errno,
                                  ngx_blocking_n " failed");
                    ngx_close_accepted_connection(c);
                    return;
                }
            }

        } else {
            
            if (!(ngx_event_flags & (NGX_USE_AIO_EVENT|NGX_USE_RTSIG_EVENT))) {
                if (ngx_nonblocking(s) == -1) {
                    ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_socket_errno,
                                  ngx_nonblocking_n " failed");
                    ngx_close_accepted_connection(c);
                    return;
                }
            }
        }

        *log = ls->log;

        
        c->recv = ngx_recv;
        c->send = ngx_send;
        c->recv_chain = ngx_recv_chain;
        c->send_chain = ngx_send_chain;

        c->log = log;
        c->pool->log = log;

        c->socklen = socklen;
        c->listening = ls;
        c->local_sockaddr = ls->sockaddr;
        c->local_socklen = ls->socklen;

        c->unexpected_eof = 1;

#if (NGX_HAVE_UNIX_DOMAIN)
        if (c->sockaddr->sa_family == AF_UNIX) {
            c->tcp_nopush = NGX_TCP_NOPUSH_DISABLED;
            c->tcp_nodelay = NGX_TCP_NODELAY_DISABLED;
#if (NGX_SOLARIS)
            
            c->sendfile = 0;
#endif
        }
#endif

        
        rev = c->read;
        wev = c->write;

        
        wev->ready = 1;

        if (ngx_event_flags & (NGX_USE_AIO_EVENT|NGX_USE_RTSIG_EVENT)) {
            
            rev->ready = 1;
        }

        if (ev->deferred_accept) {
            rev->ready = 1;
#if (NGX_HAVE_KQUEUE)
            rev->available = 1;
#endif
        }

        rev->log = log;
        wev->log = log;

        

        c->number = ngx_atomic_fetch_add(ngx_connection_counter, 1);

#if (NGX_STAT_STUB)
        (void) ngx_atomic_fetch_add(ngx_stat_handled, 1);
#endif

#if (NGX_THREADS)
        rev->lock = &c->lock;
        wev->lock = &c->lock;
        rev->own_lock = &c->lock;
        wev->own_lock = &c->lock;
#endif

        if (ls->addr_ntop) {
            c->addr_text.data = ngx_pnalloc(c->pool, ls->addr_text_max_len);
            if (c->addr_text.data == NULL) {
                ngx_close_accepted_connection(c);
                return;
            }

            c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->socklen,
                                             c->addr_text.data,
                                             ls->addr_text_max_len, 0);
            if (c->addr_text.len == 0) {
                ngx_close_accepted_connection(c);
                return;
            }
        }

#if (NGX_DEBUG)
        {

        struct sockaddr_in   *sin;
        ngx_cidr_t           *cidr;
        ngx_uint_t            i;
#if (NGX_HAVE_INET6)
        struct sockaddr_in6  *sin6;
        ngx_uint_t            n;
#endif

        cidr = ecf->debug_connection.elts;
        for (i = 0; i < ecf->debug_connection.nelts; i++) {
            if (cidr[i].family != (ngx_uint_t) c->sockaddr->sa_family) {
                goto next;
            }

            switch (cidr[i].family) {

#if (NGX_HAVE_INET6)
            case AF_INET6:
                sin6 = (struct sockaddr_in6 *) c->sockaddr;
                for (n = 0; n < 16; n++) {
                    if ((sin6->sin6_addr.s6_addr[n]
                        & cidr[i].u.in6.mask.s6_addr[n])
                        != cidr[i].u.in6.addr.s6_addr[n])
                    {
                        goto next;
                    }
                }
                break;
#endif

#if (NGX_HAVE_UNIX_DOMAIN)
            case AF_UNIX:
                break;
#endif

            default: 
                sin = (struct sockaddr_in *) c->sockaddr;
                if ((sin->sin_addr.s_addr & cidr[i].u.in.mask)
                    != cidr[i].u.in.addr)
                {
                    goto next;
                }
                break;
            }

            log->log_level = NGX_LOG_DEBUG_CONNECTION|NGX_LOG_DEBUG_ALL;
            break;

        next:
            continue;
        }

        }
#endif

        ngx_log_debug3(NGX_LOG_DEBUG_EVENT, log, 0,
                       "*%uA accept: %V fd:%d", c->number, &c->addr_text, s);

        
        if (ngx_add_conn && (ngx_event_flags & NGX_USE_EPOLL_EVENT) == 0) {
            if (ngx_add_conn(c) == NGX_ERROR) {
                ngx_close_accepted_connection(c);
                return;
            }
        }

        log->data = NULL;
        log->handler = NULL;

        
        ls->handler(c);

        
        if (ngx_event_flags & NGX_USE_KQUEUE_EVENT) {
            ev->available--;
        }

    } while (ev->available);
}


static ngx_int_t
ngx_enable_accept_events(ngx_cycle_t *cycle)
{
    ngx_uint_t         i;
    ngx_listening_t   *ls;
    ngx_connection_t  *c;

    
    ls = cycle->listening.elts;
    
    for (i = 0; i < cycle->listening.nelts; i++) {

        
        c = ls[i].connection;

        
        if (c->read->active) {
            
            continue;
        }

        
        if (ngx_event_flags & NGX_USE_RTSIG_EVENT) {

            if (ngx_add_conn(c) == NGX_ERROR) {
                return NGX_ERROR;
            }

        } else {
            
            if (ngx_add_event(c->read, NGX_READ_EVENT, 0) == NGX_ERROR) {
                return NGX_ERROR;
            }
        }
    }

    return NGX_OK;
}


static ngx_int_t
ngx_disable_accept_events(ngx_cycle_t *cycle)
{
    ngx_uint_t         i;
    ngx_listening_t   *ls;
    ngx_connection_t  *c;

    
    ls = cycle->listening.elts;
    for (i = 0; i < cycle->listening.nelts; i++) {

        
        c = ls[i].connection;

        if (!c->read->active) {
            continue;
        }

        
        if (ngx_event_flags & NGX_USE_RTSIG_EVENT) {
            if (ngx_del_conn(c, NGX_DISABLE_EVENT) == NGX_ERROR) {
                return NGX_ERROR;
            }

        } else {
            
            if (ngx_del_event(c->read, NGX_READ_EVENT, NGX_DISABLE_EVENT)
                == NGX_ERROR)
            {
                return NGX_ERROR;
            }
        }
    }

    return NGX_OK;
}

```

当出现新连接事件时，只有获得同步锁的进程才可以处理该连接事件，避免了“惊群”问题，进程试图处理新连接事件由函数 ngx\_trylock\_accept\_mutex 实现。

```

ngx_int_t
ngx_trylock_accept_mutex(ngx_cycle_t *cycle)
{
    
    if (ngx_shmtx_trylock(&ngx_accept_mutex)) {

        ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                       "accept mutex locked");

        
        if (ngx_accept_mutex_held
            && ngx_accept_events == 0
            && !(ngx_event_flags & NGX_USE_RTSIG_EVENT))
        {
            return NGX_OK;
        }

        
        if (ngx_enable_accept_events(cycle) == NGX_ERROR) {
            
            ngx_shmtx_unlock(&ngx_accept_mutex);
            return NGX_ERROR;
        }

        
        ngx_accept_events = 0;
        ngx_accept_mutex_held = 1;

        return NGX_OK;
    }

    ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                   "accept mutex lock failed: %ui", ngx_accept_mutex_held);

    
    if (ngx_accept_mutex_held) {
        
        if (ngx_disable_accept_events(cycle) == NGX_ERROR) {
            return NGX_ERROR;
        }

        ngx_accept_mutex_held = 0;
    }

    return NGX_OK;
}

```

Nginx 通过负载阈值 ngx\_accept\_disabled 控制进程是否处理新连接事件，避免进程间负载均衡问题。

```
if(ngx_accept_disabled > 0){
   ngx_accept_disabled --;
}else{
  if(ngx_trylock_accept_mutex(cycle) == NGX_ERROR){
        return;
   }
...
}

```

参考资料：

《深入理解Nginx》

《深入剖析Nginx》

《[Nginx源码分析-事件循环](http://www.alidata.org/archives/1267)》

《关[于ngx\_trylock\_accept\_mutex的一些解释](http://blog.csdn.net/brainkick/article/details/9081017)》


# Nginx 中 HTTP 模块初始化

## 概述

在前面的文章《 [Nginx 配置解析](http://blog.csdn.net/chenhanzhun/article/details/42615433)》简单讲解了通用模块的配置项解析，并且大概讲解了HTTP 模块的配置项解析过程，本文更具体的分析HTTP 模块的初始化过程。HTTP 模块初始化过程主要有：上下文结构初始化、配置项解析、配置项合并、server 相关端口设置。

## HTTP 模块接口

## ngx\_http\_module\_t 结构体

在 Nginx 中，结构体 ngx\_module\_t 是 Nginx 模块最基本的接口。对于每一种不同类型的模块，都有一个具体的结构体来描述这一类模块的通用接口。在Nginx 中定义了HTTP 模块的通用接口ngx\_http\_module\_t 结构体，该结构体定义在文件[src/http/ngx\_http\_config.h](http://lxr.nginx.org/source/src/http/ngx_http_config.h)：我们把直属于http{}、server{}、location{} 块的配置项分别称为main、srv、loc 级别配置项。

```

typedef struct {
    
    ngx_int_t   (*preconfiguration)(ngx_conf_t *cf);
    
    ngx_int_t   (*postconfiguration)(ngx_conf_t *cf);

    
    void       *(*create_main_conf)(ngx_conf_t *cf);
    
    char       *(*init_main_conf)(ngx_conf_t *cf, void *conf);

    
    void       *(*create_srv_conf)(ngx_conf_t *cf);
    
    char       *(*merge_srv_conf)(ngx_conf_t *cf, void *prev, void *conf);

    
    void       *(*create_loc_conf)(ngx_conf_t *cf);
    
    char       *(*merge_loc_conf)(ngx_conf_t *cf, void *prev, void *conf);
} ngx_http_module_t;

```

## ngx\_http\_conf\_ctx\_t 结构体

在 HTTP 模块中，管理 HTTP 模块配置项的结构由 ngx\_http\_conf\_ctx\_t 实现，该结构有三个成员，分别指向三个指针数组，指针数组是由相应地 HTTP 模块create\_main\_conf、create\_srv\_conf、create\_loc\_conf 方法创建的结构体指针组成的数组。ngx\_http\_conf\_ctx\_t 结构体定义在文件[src/http/ngx\_http\_config.h](http://lxr.nginx.org/source/src/http/ngx_http_config.h) 中：

```

typedef struct {
    
    void        **main_conf;
    
    void        **srv_conf;
    
    void        **loc_conf;
} ngx_http_conf_ctx_t;

```

## ngx\_http\_module 核心模块

## ngx\_http\_module 核心模块定义

ngx\_http\_module 是 HTTP 模块的核心模块，该模块的功能是：定义新的 HTTP 模块类型，并为每个HTTP 模块定义通用接口ngx\_http\_module\_t 结构体，管理HTTP 模块生成的配置项结构体，并解析HTTP 类配置项。该模块定义在文件[src/http/ngx\_http.c](http://lxr.nginx.org/source/src/http/ngx_http.c) 中：

```

ngx_module_t  ngx_http_module = {
    NGX_MODULE_V1,
    &ngx_http_module_ctx,                  
    ngx_http_commands,                     
    NGX_CORE_MODULE,                       
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NGX_MODULE_V1_PADDING
};

```

ngx\_http\_module 作为核心模块，必须定义核心模块的通用接口上下文结构，其通用接口上下文结构定义在文件[src/http/ngx\_http.c](http://lxr.nginx.org/source/src/http/ngx_http.c) 中：在 ngx\_http\_module 核心模块中只定义了 http 模块的名称。

```

static ngx_core_module_t  ngx_http_module_ctx = {
    ngx_string("http"),
    NULL,
    NULL
};

```

在 ngx\_http\_module 模块中定义了http{} 块感兴趣的配置项数组，配置项数组定义在文件[src/http/ngx\_http.c](http://lxr.nginx.org/source/src/http/ngx_http.c) 中：

```

static ngx_command_t  ngx_http_commands[] = {

    { ngx_string("http"),
      NGX_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
      ngx_http_block,
      0,
      0,
      NULL },

      ngx_null_command
};

```

从 ngx\_http\_module 模块的定义中可以知道，该模块只有一个初始化处理方法ngx\_http\_block，该处理方法是HTTP 模块的初始化作用。

## ngx\_http\_module 核心模块初始化

在上面 ngx\_http\_module 模块的定义中已经知道，HTTP 模块的初始化过程由函数ngx\_http\_block 实现，首先先给出该函数的整体分析，接着对该函数进行具体的分析。该函数定义在文件[src/http/ngx\_http.c](http://lxr.nginx.org/source/src/http/ngx_http.c) 中：

```

static char *
ngx_http_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
    char                        *rv;
    ngx_uint_t                   mi, m, s;
    ngx_conf_t                   pcf;
    ngx_http_module_t           *module;
    ngx_http_conf_ctx_t         *ctx;
    ngx_http_core_loc_conf_t    *clcf;
    ngx_http_core_srv_conf_t   **cscfp;
    ngx_http_core_main_conf_t   *cmcf;

    

    
    ctx = ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t));
    if (ctx == NULL) {
        return NGX_CONF_ERROR;
    }

    
    *(ngx_http_conf_ctx_t **) conf = ctx;

    

    
    ngx_http_max_module = 0;
    for (m = 0; ngx_modules[m]; m++) {
        if (ngx_modules[m]->type != NGX_HTTP_MODULE) {
            continue;
        }

        ngx_modules[m]->ctx_index = ngx_http_max_module++;
    }

    
    

    ctx->main_conf = ngx_pcalloc(cf->pool,
                                 sizeof(void *) * ngx_http_max_module);
    if (ctx->main_conf == NULL) {
        return NGX_CONF_ERROR;
    }

    
    

    ctx->srv_conf = ngx_pcalloc(cf->pool, sizeof(void *) * ngx_http_max_module);
    if (ctx->srv_conf == NULL) {
        return NGX_CONF_ERROR;
    }

    
    

    ctx->loc_conf = ngx_pcalloc(cf->pool, sizeof(void *) * ngx_http_max_module);
    if (ctx->loc_conf == NULL) {
        return NGX_CONF_ERROR;
    }

    

    
    for (m = 0; ngx_modules[m]; m++) {
        if (ngx_modules[m]->type != NGX_HTTP_MODULE) {
            continue;
        }

        module = ngx_modules[m]->ctx;
        mi = ngx_modules[m]->ctx_index;

        
        if (module->create_main_conf) {
            ctx->main_conf[mi] = module->create_main_conf(cf);
            if (ctx->main_conf[mi] == NULL) {
                return NGX_CONF_ERROR;
            }
        }

        
        if (module->create_srv_conf) {
            ctx->srv_conf[mi] = module->create_srv_conf(cf);
            if (ctx->srv_conf[mi] == NULL) {
                return NGX_CONF_ERROR;
            }
        }

        
        if (module->create_loc_conf) {
            ctx->loc_conf[mi] = module->create_loc_conf(cf);
            if (ctx->loc_conf[mi] == NULL) {
                return NGX_CONF_ERROR;
            }
        }
    }

    
    pcf = *cf;
    
    cf->ctx = ctx;

    
    for (m = 0; ngx_modules[m]; m++) {
        if (ngx_modules[m]->type != NGX_HTTP_MODULE) {
            continue;
        }

        module = ngx_modules[m]->ctx;

        if (module->preconfiguration) {
            if (module->preconfiguration(cf) != NGX_OK) {
                return NGX_CONF_ERROR;
            }
        }
    }

    
    

    cf->module_type = NGX_HTTP_MODULE;
    cf->cmd_type = NGX_HTTP_MAIN_CONF;
    
    rv = ngx_conf_parse(cf, NULL);

    if (rv != NGX_CONF_OK) {
        goto failed;
    }

    
    

    
    cmcf = ctx->main_conf[ngx_http_core_module.ctx_index];
    
    cscfp = cmcf->servers.elts;

    
    for (m = 0; ngx_modules[m]; m++) {
        if (ngx_modules[m]->type != NGX_HTTP_MODULE) {
            continue;
        }

        
       module = ngx_modules[m]->ctx;
       
       mi = ngx_modules[m]->ctx_index;

        
        

        if (module->init_main_conf) {
            rv = module->init_main_conf(cf, ctx->main_conf[mi]);
            if (rv != NGX_CONF_OK) {
                goto failed;
            }
        }

        
        rv = ngx_http_merge_servers(cf, cmcf, module, mi);
        if (rv != NGX_CONF_OK) {
            goto failed;
        }
    }

    

    
    

    
    for (s = 0; s < cmcf->servers.nelts; s++) {

        
        clcf = cscfp[s]->ctx->loc_conf[ngx_http_core_module.ctx_index];

        
        if (ngx_http_init_locations(cf, cscfp[s], clcf) != NGX_OK) {
            return NGX_CONF_ERROR;
        }

        
        if (ngx_http_init_static_location_trees(cf, clcf) != NGX_OK) {
            return NGX_CONF_ERROR;
        }
    }

    
    if (ngx_http_init_phases(cf, cmcf) != NGX_OK) {
        return NGX_CONF_ERROR;
    }

    
    if (ngx_http_init_headers_in_hash(cf, cmcf) != NGX_OK) {
        return NGX_CONF_ERROR;
    }

    
    for (m = 0; ngx_modules[m]; m++) {
        if (ngx_modules[m]->type != NGX_HTTP_MODULE) {
            continue;
        }

        module = ngx_modules[m]->ctx;

        if (module->postconfiguration) {
            if (module->postconfiguration(cf) != NGX_OK) {
                return NGX_CONF_ERROR;
            }
        }
    }

    if (ngx_http_variables_init_vars(cf) != NGX_OK) {
        return NGX_CONF_ERROR;
    }

    

    *cf = pcf;

    
    if (ngx_http_init_phase_handlers(cf, cmcf) != NGX_OK) {
        return NGX_CONF_ERROR;
    }

    

    
    if (ngx_http_optimize_servers(cf, cmcf, cmcf->ports) != NGX_OK) {
        return NGX_CONF_ERROR;
    }

    return NGX_CONF_OK;

failed:

    *cf = pcf;

    return rv;
}

```

从上面的分析中可以总结出 HTTP 模块初始化的流程如下：

* Nginx 进程进入主循环，在主循环中调用配置解析器解析配置文件*nginx.conf*;
* 在配置文件中遇到 http{} 块配置，则 HTTP 框架开始初始化并启动，其由函数 ngx\_http\_block() 实现；
* HTTP 框架初始化所有 HTTP 模块的序列号，并创建 3 个类型为 *ngx\_http\_conf\_ctx\_t 结构的数组用于存储所有HTTP 模块的*create\_main\_conf、*create\_srv\_conf*、*create\_loc\_conf*方法返回的指针地址；
* 调用每个 HTTP 模块的 preconfiguration 方法；
* HTTP 框架调用函数 ngx\_conf\_parse() 开始循环解析配置文件 \*nginx.conf \*中的http{}块里面的所有配置项，http{} 块内可嵌套多个server{} 块，而 server{} 块可嵌套多个 location{}，location{} 依旧可以嵌套location{}，因此配置项解析函数是递归调用；
* HTTP 框架处理完毕 http{} 配置项，根据解析配置项的结果，必要时调用ngx\_http\_merge\_servers 方法进行配置项合并处理，即合并main、srv、loc 级别下server、location 相关的配置项；
* 初始化可添加处理方法的 HTTP 阶段的动态数组；
* 调用所有 HTTP 模块的 postconfiguration 方法使 HTTP 模块可以处理HTTP 阶段，即将HTTP 模块的ngx\_http\_handler\_pt 处理方法添加到HTTP 阶段中；
* 根据 HTTP 模块处理 HTTP 阶段的方法构造 phase\_engine\_handlers 数组；
* 构造 server 相关的监听端口，并设置新连接事件的回调方法为ngx\_http\_init\_connection ；
* 继续处理其他 http{} 块之外的配置项，直到配置文件解析器处理完所有配置项后通知Nginx 主循环配置项解析完毕。此时，Nginx 才会启动Web 服务器；

## ngx\_http\_core\_module 模块

## ngx\_http\_core\_main\_conf\_t 结构体

在初始化 HTTP 模块的过程中，会调用配置项解析函数ngx\_conf\_parse 解析http{} 块内的配置项，当遇到server{} 块、location{} 块配置项时，此时会调用配置项解析函数解析server{} 和location{} 块，在解析这两个配置块的过程中依旧会创建属于该块的配置项结构srv\_conf、loc\_conf，因此就会导致与http{} 块所创建的配置项结构体重复，这时候就需要对这些配置项进行管理与合并。首先先看下结构体ngx\_http\_core\_main\_conf\_t，ngx\_http\_core\_main\_conf\_t 是ngx\_http\_core\_module 的 main\_conf，存储了 http{} 层的配置参数。该结构体定义在文件[src/http/ngx\_http\_core\_module.h](http://lxr.nginx.org/source/src/http/ngx_http_core_module.h)中：

```

typedef struct {
    
    ngx_array_t                servers;         

    
    ngx_http_phase_engine_t    phase_engine;

    ngx_hash_t                 headers_in_hash;

    ngx_hash_t                 variables_hash;

    ngx_array_t                variables;       
    ngx_uint_t                 ncaptures;

    
    ngx_uint_t                 server_names_hash_max_size;
    
    ngx_uint_t                 server_names_hash_bucket_size;

    ngx_uint_t                 variables_hash_max_size;
    ngx_uint_t                 variables_hash_bucket_size;

    ngx_hash_keys_arrays_t    *variables_keys;

    
    ngx_array_t               *ports;

    ngx_uint_t                 try_files;       

    
    ngx_http_phase_t           phases[NGX_HTTP_LOG_PHASE + 1];
} ngx_http_core_main_conf_t;

```

## ngx\_http\_core\_srv\_conf\_t 结构体

结构体 ngx\_http\_core\_srv\_conf\_t，ngx\_http\_core\_srv\_conf\_t 是ngx\_http\_core\_module 的srv\_conf，存储了server{} 层的配置参数。该结构体定义在文件[src/http/ngx\_http\_core\_module.h](http://lxr.nginx.org/source/src/http/ngx_http_core_module.h)中：

```

typedef struct {
    
    ngx_array_t                 server_names;

    
    
    ngx_http_conf_ctx_t        *ctx;

    
    ngx_str_t                   server_name;

    size_t                      connection_pool_size;
    size_t                      request_pool_size;
    size_t                      client_header_buffer_size;

    ngx_bufs_t                  large_client_header_buffers;

    ngx_msec_t                  client_header_timeout;

    ngx_flag_t                  ignore_invalid_headers;
    ngx_flag_t                  merge_slashes;
    ngx_flag_t                  underscores_in_headers;

    unsigned                    listen:1;
#if (NGX_PCRE)
    unsigned                    captures:1;
#endif

    ngx_http_core_loc_conf_t  **named_locations;
} ngx_http_core_srv_conf_t;

```

## ngx\_http\_core\_loc\_conf\_t 结构体

结构体 ngx\_http\_core\_loc\_conf\_t，ngx\_http\_core\_loc\_conf\_t 是ngx\_http\_core\_module 的loc\_conf，存储了location{} 层的配置参数。该结构体定义在文件[src/http/ngx\_http\_core\_module.h](http://lxr.nginx.org/source/src/http/ngx_http_core_module.h)中：

```
struct ngx_http_core_loc_conf_s {
    
    ngx_str_t     name;          

#if (NGX_PCRE)
    ngx_http_regex_t  *regex;
#endif

    unsigned      noname:1;   
    unsigned      lmt_excpt:1;
    unsigned      named:1;

    unsigned      exact_match:1;
    unsigned      noregex:1;

    unsigned      auto_redirect:1;
#if (NGX_HTTP_GZIP)
    unsigned      gzip_disable_msie6:2;
#if (NGX_HTTP_DEGRADATION)
    unsigned      gzip_disable_degradation:2;
#endif
#endif

    ngx_http_location_tree_node_t   *static_locations;
#if (NGX_PCRE)
    ngx_http_core_loc_conf_t       **regex_locations;
#endif

    
    
    void        **loc_conf;

    uint32_t      limit_except;
    void        **limit_except_loc_conf;

    ngx_http_handler_pt  handler;

    
    size_t        alias;
    ngx_str_t     root;                    
    ngx_str_t     post_action;

    ngx_array_t  *root_lengths;
    ngx_array_t  *root_values;

    ngx_array_t  *types;
    ngx_hash_t    types_hash;
    ngx_str_t     default_type;

    off_t         client_max_body_size;    
    off_t         directio;                
    off_t         directio_alignment;      

    size_t        client_body_buffer_size; 
    size_t        send_lowat;              
    size_t        postpone_output;         
    size_t        limit_rate;              
    size_t        limit_rate_after;        
    size_t        sendfile_max_chunk;      
    size_t        read_ahead;              

    ngx_msec_t    client_body_timeout;     
    ngx_msec_t    send_timeout;            
    ngx_msec_t    keepalive_timeout;       
    ngx_msec_t    lingering_time;          
    ngx_msec_t    lingering_timeout;       
    ngx_msec_t    resolver_timeout;        

    ngx_resolver_t  *resolver;             

    time_t        keepalive_header;        

    ngx_uint_t    keepalive_requests;      
    ngx_uint_t    keepalive_disable;       
    ngx_uint_t    satisfy;                 
    ngx_uint_t    lingering_close;         
    ngx_uint_t    if_modified_since;       
    ngx_uint_t    max_ranges;              
    ngx_uint_t    client_body_in_file_only; 

    ngx_flag_t    client_body_in_single_buffer;
                                           
    ngx_flag_t    internal;                
    ngx_flag_t    sendfile;                
#if (NGX_HAVE_FILE_AIO)
    ngx_flag_t    aio;                     
#endif
    ngx_flag_t    tcp_nopush;              
    ngx_flag_t    tcp_nodelay;             
    ngx_flag_t    reset_timedout_connection; 
    ngx_flag_t    server_name_in_redirect; 
    ngx_flag_t    port_in_redirect;        
    ngx_flag_t    msie_padding;            
    ngx_flag_t    msie_refresh;            
    ngx_flag_t    log_not_found;           
    ngx_flag_t    log_subrequest;          
    ngx_flag_t    recursive_error_pages;   
    ngx_flag_t    server_tokens;           
    ngx_flag_t    chunked_transfer_encoding; 
    ngx_flag_t    etag;                    

#if (NGX_HTTP_GZIP)
    ngx_flag_t    gzip_vary;               

    ngx_uint_t    gzip_http_version;       
    ngx_uint_t    gzip_proxied;            

#if (NGX_PCRE)
    ngx_array_t  *gzip_disable;            
#endif
#endif

#if (NGX_HAVE_OPENAT)
    ngx_uint_t    disable_symlinks;        
    ngx_http_complex_value_t  *disable_symlinks_from;
#endif

    ngx_array_t  *error_pages;             
    ngx_http_try_file_t    *try_files;     

    ngx_path_t   *client_body_temp_path;   

    ngx_open_file_cache_t  *open_file_cache;
    time_t        open_file_cache_valid;
    ngx_uint_t    open_file_cache_min_uses;
    ngx_flag_t    open_file_cache_errors;
    ngx_flag_t    open_file_cache_events;

    ngx_log_t    *error_log;

    ngx_uint_t    types_hash_max_size;
    ngx_uint_t    types_hash_bucket_size;

    
    ngx_queue_t  *locations;

#if 0
    ngx_http_core_loc_conf_t  *prev_location;
#endif
};

typedef struct{

      
      ngx_queue_t queue;

      
       ngx_http_core_loc_conf_t *exact;

       
       ngx_http_core_loc_conf_t *inclusive;

       
       ngx_str_t *name;
       ...

}ngx_http_location_queue_t; 

```

## ngx\_http\_core\_module 模块定义

ngx\_http\_core\_module 模块是HTTP 模块中的第一个模块，该模块管理srv、loc 级别的配置项结构。该模块在文件[src/http/ngx\_http\_core\_module.c](http://lxr.nginx.org/source/src/http/ngx_http_core_module.c)中定义：

```
ngx_module_t  ngx_http_core_module = {
    NGX_MODULE_V1,
    &ngx_http_core_module_ctx,             
    ngx_http_core_commands,                
    NGX_HTTP_MODULE,                       
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NULL,                                  
    NGX_MODULE_V1_PADDING
};

```

在模块的定义中，其中定义了 HTTP 模块的上下文结构ngx\_http\_core\_module\_ctx，该上下文结构体定义如下：

```
static ngx_http_module_t  ngx_http_core_module_ctx = {
    ngx_http_core_preconfiguration,        
    NULL,                                  

    ngx_http_core_create_main_conf,        
    ngx_http_core_init_main_conf,          

    ngx_http_core_create_srv_conf,         
    ngx_http_core_merge_srv_conf,          

    ngx_http_core_create_loc_conf,         
    ngx_http_core_merge_loc_conf           
};

```

由于该模块中感兴趣的配置项太多，这里只列出 server、location 配置项。定义如下：

```
    ...

    { ngx_string("server"),
      NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
      ngx_http_core_server,
      0,
      0,
      NULL },

    ...

    { ngx_string("location"),
      NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_BLOCK|NGX_CONF_TAKE12,
      ngx_http_core_location,
      NGX_HTTP_SRV_CONF_OFFSET,
      0,
      NULL },

      ...
      ngx_null_command
};

```

## 管理 HTTP 模块不同级别的配置项结构体

在 HTTP 模块的 http{} 配置项解析过程中，可能遇到多个嵌套 server{} 块以及location{}，不同块之间的解析都会创建相应的结构体保存配置项参数，但是由于属于嵌套关系，所有必须管理好不同块之间的配置项结构体，方便解析完毕后合并相应的配置项，以下针对不同级别的配置项结构体进行分析。

## 获取不同级别配置项结构

根据不同结构体变量的参数获取不同级别的配置项结构体由宏定义实现，在文件 [src/http/ngx\_http\_config.h](http://lxr.nginx.org/source/src/http/ngx_http_config.h)中定义如下：

```

#define ngx_http_get_module_main_conf(r, module)                             \
    (r)->main_conf[module.ctx_index]
#define ngx_http_get_module_srv_conf(r, module)  (r)->srv_conf[module.ctx_index]
#define ngx_http_get_module_loc_conf(r, module)  (r)->loc_conf[module.ctx_index]


#define ngx_http_conf_get_module_main_conf(cf, module)                        \
    ((ngx_http_conf_ctx_t *) cf->ctx)->main_conf[module.ctx_index]
#define ngx_http_conf_get_module_srv_conf(cf, module)                         \
    ((ngx_http_conf_ctx_t *) cf->ctx)->srv_conf[module.ctx_index]
#define ngx_http_conf_get_module_loc_conf(cf, module)                         \
    ((ngx_http_conf_ctx_t *) cf->ctx)->loc_conf[module.ctx_index]


#define ngx_http_cycle_get_module_main_conf(cycle, module)                    \
    (cycle->conf_ctx[ngx_http_module.index] ?                                 \
        ((ngx_http_conf_ctx_t *) cycle->conf_ctx[ngx_http_module.index])      \
            ->main_conf[module.ctx_index]:                                    \
        NULL)

```

## main 级别的配置项结构体

在 ngx\_http\_module 模块 http{} 块配置项解析的初始化过程中由函数 ngx\_http\_block 实现，在实现过程中创建并初始化了HTTP 模块main 级别的配置项main\_conf、srv\_conf、loc\_conf 结构体。main 级别的配置项结构体之间的关系如下图所示：

## server 级别的配置项结构体

在 ngx\_http\_module 模块在调用函数ngx\_conf\_parse 解析 http{} 块main 级别配置项时，若遇到server{} 块配置项，则会递归调用函数ngx\_conf\_parse 解析ngx\_http\_core\_module 模块中 server{} 块配置项，并调用方法ngx\_http\_core\_server 初始化server{} 块 ，该方法创建并初始化了HTTP 模块srv 级别的配置项srv\_conf、loc\_conf 结构体。server{} 块配置项的初始化函数创建配置项结构体的源码如下所示：

```
static char *
ngx_http_core_server(ngx_conf_t *cf, ngx_command_t *cmd, void *dummy)
{
    char                        *rv;
    void                        *mconf;
    ngx_uint_t                   i;
    ngx_conf_t                   pcf;
    ngx_http_module_t           *module;
    struct sockaddr_in          *sin;
    ngx_http_conf_ctx_t         *ctx, *http_ctx;
    ngx_http_listen_opt_t        lsopt;
    ngx_http_core_srv_conf_t    *cscf, **cscfp;
    ngx_http_core_main_conf_t   *cmcf;

    
    ctx = ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t));
    if (ctx == NULL) {
        return NGX_CONF_ERROR;
    }

    
    http_ctx = cf->ctx;
    ctx->main_conf = http_ctx->main_conf;

    

    
    ctx->srv_conf = ngx_pcalloc(cf->pool, sizeof(void *) * ngx_http_max_module);
    if (ctx->srv_conf == NULL) {
        return NGX_CONF_ERROR;
    }

    

    
    ctx->loc_conf = ngx_pcalloc(cf->pool, sizeof(void *) * ngx_http_max_module);
    if (ctx->loc_conf == NULL) {
        return NGX_CONF_ERROR;
    }

    
    for (i = 0; ngx_modules[i]; i++) {
        if (ngx_modules[i]->type != NGX_HTTP_MODULE) {
            continue;
        }

        module = ngx_modules[i]->ctx;

        
        if (module->create_srv_conf) {
            mconf = module->create_srv_conf(cf);
            if (mconf == NULL) {
                return NGX_CONF_ERROR;
            }

            ctx->srv_conf[ngx_modules[i]->ctx_index] = mconf;
        }

        
        if (module->create_loc_conf) {
            mconf = module->create_loc_conf(cf);
            if (mconf == NULL) {
                return NGX_CONF_ERROR;
            }

            ctx->loc_conf[ngx_modules[i]->ctx_index] = mconf;
        }
    }

    
    

    cscf = ctx->srv_conf[ngx_http_core_module.ctx_index];
    cscf->ctx = ctx;

    cmcf = ctx->main_conf[ngx_http_core_module.ctx_index];

    cscfp = ngx_array_push(&cmcf->servers);
    if (cscfp == NULL) {
        return NGX_CONF_ERROR;
    }

    *cscfp = cscf;

    
    

    pcf = *cf;
    cf->ctx = ctx;
    cf->cmd_type = NGX_HTTP_SRV_CONF;

    rv = ngx_conf_parse(cf, NULL);

    
    *cf = pcf;

    if (rv == NGX_CONF_OK && !cscf->listen) {
        ngx_memzero(&lsopt, sizeof(ngx_http_listen_opt_t));

        sin = &lsopt.u.sockaddr_in;

        sin->sin_family = AF_INET;
#if (NGX_WIN32)
        sin->sin_port = htons(80);
#else
        sin->sin_port = htons((getuid() == 0) ? 80 : 8000);
#endif
        sin->sin_addr.s_addr = INADDR_ANY;

        lsopt.socklen = sizeof(struct sockaddr_in);

        lsopt.backlog = NGX_LISTEN_BACKLOG;
        lsopt.rcvbuf = -1;
        lsopt.sndbuf = -1;
#if (NGX_HAVE_SETFIB)
        lsopt.setfib = -1;
#endif
#if (NGX_HAVE_TCP_FASTOPEN)
        lsopt.fastopen = -1;
#endif
        lsopt.wildcard = 1;

        (void) ngx_sock_ntop(&lsopt.u.sockaddr, lsopt.socklen, lsopt.addr,
                             NGX_SOCKADDR_STRLEN, 1);

        if (ngx_http_add_listen(cf, cscf, &lsopt) != NGX_OK) {
            return NGX_CONF_ERROR;
        }
    }

    return rv;
}

```

srv 级别的配置项结构体之间的关系如下图所示：

## location 级别的配置项结构体

在 ngx\_http\_core\_module 模块在调用函数ngx\_conf\_parse 解析 server{} 块srv 级别配置项时，若遇到 location{} 块配置项，则会递归调用函数ngx\_conf\_parse 解析ngx\_http\_core\_module 模块中 location{} 块配置项，并调用方法ngx\_http\_core\_location 初始化location{} 块 ，该方法创建并初始化了HTTP 模块loc 级别的配置项loc\_conf 结构体。location{} 块配置项的初始化函数创建配置项结构体的源码如下所示：

```
static char *
ngx_http_core_location(ngx_conf_t *cf, ngx_command_t *cmd, void *dummy)
{
    char                      *rv;
    u_char                    *mod;
    size_t                     len;
    ngx_str_t                 *value, *name;
    ngx_uint_t                 i;
    ngx_conf_t                 save;
    ngx_http_module_t         *module;
    ngx_http_conf_ctx_t       *ctx, *pctx;
    ngx_http_core_loc_conf_t  *clcf, *pclcf;

    
    ctx = ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t));
    if (ctx == NULL) {
        return NGX_CONF_ERROR;
    }

    
    pctx = cf->ctx;
    ctx->main_conf = pctx->main_conf;
    ctx->srv_conf = pctx->srv_conf;

    
    ctx->loc_conf = ngx_pcalloc(cf->pool, sizeof(void *) * ngx_http_max_module);
    if (ctx->loc_conf == NULL) {
        return NGX_CONF_ERROR;
    }

    
    for (i = 0; ngx_modules[i]; i++) {
        if (ngx_modules[i]->type != NGX_HTTP_MODULE) {
            continue;
        }

        module = ngx_modules[i]->ctx;

        
        if (module->create_loc_conf) {
            ctx->loc_conf[ngx_modules[i]->ctx_index] =
                                                   module->create_loc_conf(cf);
            
            if (ctx->loc_conf[ngx_modules[i]->ctx_index] == NULL) {
                 return NGX_CONF_ERROR;
            }
        }
    }

    clcf = ctx->loc_conf[ngx_http_core_module.ctx_index];
    clcf->loc_conf = ctx->loc_conf;

    value = cf->args->elts;

    
    if (cf->args->nelts == 3) {

        len = value[1].len;
        mod = value[1].data;
        name = &value[2];

        if (len == 1 && mod[0] == '=') {

            clcf->name = *name;
            clcf->exact_match = 1;

        } else if (len == 2 && mod[0] == '^' && mod[1] == '~') {

            clcf->name = *name;
            clcf->noregex = 1;

        } else if (len == 1 && mod[0] == '~') {

            if (ngx_http_core_regex_location(cf, clcf, name, 0) != NGX_OK) {
                return NGX_CONF_ERROR;
            }

        } else if (len == 2 && mod[0] == '~' && mod[1] == '*') {

            if (ngx_http_core_regex_location(cf, clcf, name, 1) != NGX_OK) {
                return NGX_CONF_ERROR;
            }

        } else {
            ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                               "invalid location modifier \"%V\"", &value[1]);
            return NGX_CONF_ERROR;
        }

    } else {

        name = &value[1];

        if (name->data[0] == '=') {

            clcf->name.len = name->len - 1;
            clcf->name.data = name->data + 1;
            clcf->exact_match = 1;

        } else if (name->data[0] == '^' && name->data[1] == '~') {

            clcf->name.len = name->len - 2;
            clcf->name.data = name->data + 2;
            clcf->noregex = 1;

        } else if (name->data[0] == '~') {

            name->len--;
            name->data++;

            if (name->data[0] == '*') {

                name->len--;
                name->data++;

                if (ngx_http_core_regex_location(cf, clcf, name, 1) != NGX_OK) {
                    return NGX_CONF_ERROR;
                }

            } else {
                if (ngx_http_core_regex_location(cf, clcf, name, 0) != NGX_OK) {
                    return NGX_CONF_ERROR;
                }
            }

        } else {

            clcf->name = *name;

            if (name->data[0] == '@') {
                clcf->named = 1;
            }
        }
    }

    pclcf = pctx->loc_conf[ngx_http_core_module.ctx_index];

    if (pclcf->name.len) {

        

#if 0
        clcf->prev_location = pclcf;
#endif

        if (pclcf->exact_match) {
            ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                               "location \"%V\" cannot be inside "
                               "the exact location \"%V\"",
                               &clcf->name, &pclcf->name);
            return NGX_CONF_ERROR;
        }

        if (pclcf->named) {
            ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                               "location \"%V\" cannot be inside "
                               "the named location \"%V\"",
                               &clcf->name, &pclcf->name);
            return NGX_CONF_ERROR;
        }

        if (clcf->named) {
            ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                               "named location \"%V\" can be "
                               "on the server level only",
                               &clcf->name);
            return NGX_CONF_ERROR;
        }

        len = pclcf->name.len;

#if (NGX_PCRE)
        if (clcf->regex == NULL
            && ngx_filename_cmp(clcf->name.data, pclcf->name.data, len) != 0)
#else
        if (ngx_filename_cmp(clcf->name.data, pclcf->name.data, len) != 0)
#endif
        {
            ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                               "location \"%V\" is outside location \"%V\"",
                               &clcf->name, &pclcf->name);
            return NGX_CONF_ERROR;
        }
    }

    
    if (ngx_http_add_location(cf, &pclcf->locations, clcf) != NGX_OK) {
        return NGX_CONF_ERROR;
    }

    save = *cf;
    cf->ctx = ctx;
    cf->cmd_type = NGX_HTTP_LOC_CONF;

    
    rv = ngx_conf_parse(cf, NULL);

    *cf = save;

    return rv;
}

```

loc 级别的配置项结构体之间的关系如下图所示：若 location 是精确匹配、正则表达式、@命名则exact 字段有效，否则就是 inclusive 字段有效，画图过程中只画出exact 字段有效。

## 合并配置项

HTTP 框架解析完毕 http{} 块配置项时，会根据解析的结果进行合并配置项操作，即合并 http{}、server{}、location{} 不同级别下各 HTTP 模块生成的存放配置项的结构体。其合并过程在文件[src/http/ngx\_http.c](http://lxr.nginx.org/source/src/http/ngx_http.c)中定义，如下所示：

* 若 HTTP 模块实现了 *merge\_srv\_conf* 方法，则将 http{} 块下由 *create\_srv\_conf* 生成的 *main* 级别结构体与遍历每一个 server{}块下由 *create\_srv\_conf*生成的*srv* 级别的配置项结构体进行 *merge\_srv\_conf* 操作；
* 若 HTTP 模块实现了 *merge\_loc\_conf* 方法，则将 http{} 块下由 *create\_loc\_conf* 生成的 *main* 级别的配置项结构体与嵌套在每一个server{} 块下由 *create\_loc\_conf 生成的*srv级别的配置项结构体进行*merge\_loc\_conf* 操作；
* 若 HTTP 模块实现了 *merge\_loc\_conf* 方法，由于在上一步骤已经将main、srv级别由*create\_loc\_conf* 生成的结构体进行合并，只要把上一步骤合并的结果在 server{} 块下与嵌套每一个location{}块下由*create\_loc\_conf* 生成的配置项结构体再次进行*merge\_loc\_conf* 操作；
* 若 HTTP 模块实现了 *merge\_loc\_conf* 方法，则将上一步骤的合并结果与与嵌套每一个location{}块下由 *create\_loc\_conf* 生成的的配置项结构体再次进行*merge\_loc\_conf* 操作；

具体合并过程如下图所示：

```

static char *
ngx_http_merge_servers(ngx_conf_t *cf, ngx_http_core_main_conf_t *cmcf,
    ngx_http_module_t *module, ngx_uint_t ctx_index)
{
    char                        *rv;
    ngx_uint_t                   s;
    ngx_http_conf_ctx_t         *ctx, saved;
    ngx_http_core_loc_conf_t    *clcf;
    ngx_http_core_srv_conf_t   **cscfp;

    
    cscfp = cmcf->servers.elts;
    ctx = (ngx_http_conf_ctx_t *) cf->ctx;
    saved = *ctx;
    rv = NGX_CONF_OK;

    
    for (s = 0; s < cmcf->servers.nelts; s++) {

        

        
        ctx->srv_conf = cscfp[s]->ctx->srv_conf;

        
        if (module->merge_srv_conf) {
            rv = module->merge_srv_conf(cf, saved.srv_conf[ctx_index],
                                        cscfp[s]->ctx->srv_conf[ctx_index]);
            if (rv != NGX_CONF_OK) {
                goto failed;
            }
        }

        
        if (module->merge_loc_conf) {

            

            ctx->loc_conf = cscfp[s]->ctx->loc_conf;

            rv = module->merge_loc_conf(cf, saved.loc_conf[ctx_index],
                                        cscfp[s]->ctx->loc_conf[ctx_index]);
            if (rv != NGX_CONF_OK) {
                goto failed;
            }

            

            

            
            clcf = cscfp[s]->ctx->loc_conf[ngx_http_core_module.ctx_index];

            rv = ngx_http_merge_locations(cf, clcf->locations,
                                          cscfp[s]->ctx->loc_conf,
                                          module, ctx_index);
            if (rv != NGX_CONF_OK) {
                goto failed;
            }
        }
    }

failed:

    *ctx = saved;

    return rv;
}

static char *
ngx_http_merge_locations(ngx_conf_t *cf, ngx_queue_t *locations,
    void **loc_conf, ngx_http_module_t *module, ngx_uint_t ctx_index)
{
    char                       *rv;
    ngx_queue_t                *q;
    ngx_http_conf_ctx_t        *ctx, saved;
    ngx_http_core_loc_conf_t   *clcf;
    ngx_http_location_queue_t  *lq;

    
    if (locations == NULL) {
        return NGX_CONF_OK;
    }

    ctx = (ngx_http_conf_ctx_t *) cf->ctx;
    saved = *ctx;

    

    
    for (q = ngx_queue_head(locations);
         q != ngx_queue_sentinel(locations);
         q = ngx_queue_next(q))
    {
        lq = (ngx_http_location_queue_t *) q;

        
        clcf = lq->exact ? lq->exact : lq->inclusive;
        
        ctx->loc_conf = clcf->loc_conf;

        
        rv = module->merge_loc_conf(cf, loc_conf[ctx_index],
                                    clcf->loc_conf[ctx_index]);
        if (rv != NGX_CONF_OK) {
            return rv;
        }

        
        rv = ngx_http_merge_locations(cf, clcf->locations, clcf->loc_conf,
                                      module, ctx_index);
        if (rv != NGX_CONF_OK) {
            return rv;
        }
    }

    *ctx = saved;

    return NGX_CONF_OK;
}

```

## HTTP 请求处理阶段

按照下列顺序将各个模块设置的phase handler依次加入cmcf->phase\_engine.handlers列表，各个phase的phase handler的checker不同。checker主要用于限定某个phase的框架逻辑，包括处理返回值。 在Nginx 定义了 11 个处理阶段，有一部分是不能添加 phase handler 方法的。在文件[src/http/ngx\_http\_core\_module.h](http://lxr.nginx.org/source/src/http/ngx_http_core_module.h)中定义，如下所示：

```

typedef enum {
    
    NGX_HTTP_POST_READ_PHASE = 0,

    
    NGX_HTTP_SERVER_REWRITE_PHASE,

    
    NGX_HTTP_FIND_CONFIG_PHASE,
    
    NGX_HTTP_REWRITE_PHASE,
    
    NGX_HTTP_POST_REWRITE_PHASE,

    
    NGX_HTTP_PREACCESS_PHASE,

    
    NGX_HTTP_ACCESS_PHASE,
    
    NGX_HTTP_POST_ACCESS_PHASE,

    
    NGX_HTTP_TRY_FILES_PHASE,
    
    NGX_HTTP_CONTENT_PHASE,

    
    NGX_HTTP_LOG_PHASE
} ngx_http_phases;

```

每个HTTP的checker方法与handler处理如下所示：

```
typedef struct ngx_http_phase_handler_s  ngx_http_phase_handler_t;

typedef ngx_int_t (*ngx_http_phase_handler_pt)(ngx_http_request_t *r,
    ngx_http_phase_handler_t *ph);

struct ngx_http_phase_handler_s {
    
    ngx_http_phase_handler_pt  checker;
    
    ngx_http_handler_pt        handler;
    
    ngx_uint_t                 next;
};

```

完成 http{} 块的解析后，根据 \*nginx.conf \*文件中配置产生由 ngx\_http\_phase\_handler\_t  组成的数组，在处理 HTTP 请求时，一般情况下按照阶段的方向顺序 phase handler 加入到回调表中。ngx\_http\_phase\_engine\_t 结构体由所有ngx\_http\_phase\_handler\_t 组成的数组，如下所示：

```
typedef struct {
    
    ngx_http_phase_handler_t  *handlers;
    
    ngx_uint_t                 server_rewrite_index;
    
    ngx_uint_t                 location_rewrite_index;
} ngx_http_phase_engine_t;

```

ngx\_http\_phase\_engine\_t 中保存在当前*nginx.conf* 配置下，一个用户请求可能经历的所有 ngx\_http\_handler\_pt 处理方法。

```
typedef struct {
    
    ngx_array_t                handlers;
} ngx_http_phase_t;

```

在 HTTP模块初始化过程中，HTTP模块通过postconfiguration方法将自定义的方法添加到handler数组中，即该方法会被添加到phase\_engine数组中。下面以NGX\_HTTP\_POST\_READ\_PHASE阶段为例，讲解了该阶段的checker方法的实现：

```
ngx_int_t
ngx_http_core_generic_phase(ngx_http_request_t *r, ngx_http_phase_handler_t *ph)
{
    ngx_int_t  rc;

    

    ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
                   "generic phase: %ui", r->phase_handler);

    
    rc = ph->handler(r);

    
    if (rc == NGX_OK) {
        r->phase_handler = ph->next;
        return NGX_AGAIN;
    }

    
    if (rc == NGX_DECLINED) {
        r->phase_handler++;
        return NGX_AGAIN;
    }

    
    if (rc == NGX_AGAIN || rc == NGX_DONE) {
        return NGX_OK;
    }

    

    
    ngx_http_finalize_request(r, rc);

    return NGX_OK;
}

```


# Nginx 中处理 HTTP 请求

Page is too long and couldn't be imported.


# Untitled


# Untitled


# Part 1


# curl

https\://curl.haxx.se/

```
curl -s -D - -o /dev/null http://example.com/style.css
```

```
curl -s -D - -o /dev/null https://xxx.xxx.xxx
```


# 重要概念

* [Google 搜索的工作方式](https://support.google.com/webmasters/answer/70897?hl=zh-Hans\&ref_topic=9459871)
* [什么是展示次数、排名和点击次数？](https://support.google.com/webmasters/answer/7042828?hl=zh-Hans\&ref_topic=9459871)
* [关于我们的统计信息和数据](https://support.google.com/webmasters/answer/96568?hl=zh-Hans\&ref_topic=9459871)


# Google 搜索的工作方式

了解 Google 如何发现、抓取和呈现网页

Google 的工作方式是什么？下文将依次提供简要版和详尽版的回答。

Google 会从很多不同的来源获取信息，包括：

* 网页；
* 用户提交的内容，例如“Google 我的商家”和地图用户提交的内容；
* 图书扫描；
* 互联网上的公共数据库；
* 以及许多其他来源。

但是，此页面内容将重点介绍 Google 如何通过网页获取信息。

### 简要版

Google 按照以下三个基本步骤来生成基于网页的结果：

#### 抓取

第一步是找出网络上存在哪些网页。不存在包含所有网页的中央注册表，因此 Google 必须不断搜索新网页并将其添加到已知网页列表中。由于 Google 之前已经访问过某些网页，因此这些网页是 Google 已知的网页。当跟踪已知网页上指向新网页的链接时，Google 会发现其他网页。当网站所有者以列表形式（[站点地图](https://support.google.com/webmasters/answer/156184)）提交一系列网页供 Google 抓取时，Google 也会发现其他网页。如果您使用受管的网站托管服务，如 Wix 或 Blogger，这些服务可能会让 Google 抓取您更新后的网页或添加的新网页。

Google 发现网页网址后，会访问或抓取该网页以了解其中的内容。Google 会呈现该网页，并分析文字和非文字内容以及整体视觉布局，确定该网页应显示在搜索结果中的什么位置。Google 越了解您的网站，就越能准确地将您的网站与正在查找您内容的用户相匹配。

**如何改善网站抓取效果：**

* 验证 Google 能否访问您网站上的网页，以及这些网页看起来是否正确。确保 Google 能以匿名用户（没有密码和信息的用户）的身份访问网页。Google 还应该能够查看该网页的所有图片和其他元素，以便能够正确了解该网页。您可以在[移动设备适合性测试工具](https://search.google.com/test/mobile-friendly)中输入网页网址快速检查网页。
* 如果您创建或更新了单个网页，您可以[向 Google 提交具体网址](https://support.google.com/webmasters/answer/6065812)。如需让 Google 同时了解多个新网页或更新后的网页，您可以使用[站点地图](https://support.google.com/webmasters/answer/156184)。
* **如果您想让 Google 只抓取 1 个网页，请将该网页设为首页**。在 Google 看来，您的首页就是您网站上最重要的网页。为促成完整网站抓取，请确保您的首页（以及所有网页）包含一个良好的网站导航系统，能链接到您网站上的所有重要版块和网页。这会有助于用户（和 Google）在您的网站上找到所需内容。对于小型网站（少于 1000 个网页），只需让 Google 知道您的首页即可，前提是 Google 可以通过从首页开始的链接路径访问所有其他网页。
* 将您的网页链接到 Google 已知的其他网页。**但是**，请务必注意，Google 不会跟踪广告中的链接、其他网站中由您付费的链接、评论中的链接或其他未遵循 [Google 网站站长指南](https://support.google.com/webmasters/answer/35769)的链接。

&#x20;您无法通过向 Google 付费来提高网站抓取频率或网站排名。任何关于 Google 会在收取费用后提高网站抓取频率的消息均是子虚乌有。

#### 编入索引

发现网页后，Google 会尝试了解该网页的内容。此过程称为“编入索引”。Google 会分析该网页的内容、为网页上嵌入的图片和视频文件编制目录，并通过其他方式尝试了解网页。这些信息存储在 Google 索引中，而 Google 索引是一个存储在很多很多计算机中的巨大数据库。

**如何改善网页索引编制效果：**

* 制作简短且有意义的网页标题。
* 使用传达网页主题的网页标题。
* 使用文字（而非图片）传达内容。（尽管 Google 能够理解一些图片和视频，但相比图片和视频，文字更易于理解。请至少使用替代文本和其他属性为[视频](https://developers.google.com/webmasters/videosearch/)和[图片](https://support.google.com/webmasters/answer/114016)添加适当的注释。）

#### 呈现（和排名）

当用户输入查询时，Google 会根据许多因素尝试从其索引中找到最相关的答案。Google 会努力确定最优质的答案，并会考虑其他因素（例如，考虑用户所在位置、使用的语言及设备（桌面设备或手机）等因素），以便提供最佳用户体验和最恰当的答案。例如，在用户搜索“自行车维修店”后，Google 向巴黎用户显示的答案与向香港用户显示的答案有所不同。Google 不会通过收取费用来提高网页排名，网页排名是以编程方式完成的。

**要改善您的网页呈现和排名效果，请注意以下事项：**

* 提高网页加载速度，并使其适合移动设备访问。
* 在网页上发布实用的内容并保持更新。
* 遵循 [Google 网站站长指南](https://support.google.com/webmasters/answer/35769)，这有助于提供良好的用户体验。
* 详细了解[搜索引擎优化 (SEO) 新手指南](https://support.google.com/webmasters/answer/7451184)中的提示和最佳做法。
* 您可以[点击此处以了解详情](https://www.google.com/search/howsearchworks/)，包括[我们为确保提供理想结果而制定的质量评分者指南](https://static.googleusercontent.com/media/www.google.com/en//insidesearch/howsearchworks/assets/searchqualityevaluatorguidelines.pdf)

### 详尽版

#### 抓取

抓取是指 [Googlebot](https://support.google.com/webmasters/answer/answer.py?answer=182072) 访问要添加到 Google 索引中的新网页和更新后的网页的过程。

我们使用大量计算机提取（或“抓取”）网络上的数十亿个网页。执行抓取任务的程序叫做 Googlebot（也称为漫游器或“蜘蛛”程序）。Googlebot 使用算法流程确定要抓取的网站、抓取频率以及要从每个网站抓取的网页数量。

Google 首先会根据一份网页网址列表开始其抓取过程，该列表是在之前进行的抓取过程中生成的，且随着网站站长所提供的站点地图数据的增多而不断扩大。Googlebot 在访问每个网页时，会查找每个网页上的链接，并将这些链接添加到它要抓取的网页的列表中。它会记录新建立的网站、对现有网站进行的更改以及无效链接，并据此更新 Google 索引。

在抓取过程中，Google 会使用 Chrome 的最新版本呈现网页。在呈现过程中，它会运行找到的所有网页脚本。如果您的网站使用动态生成的内容，请务必[遵循 JavaScript SEO 基础知识页面上的要求](https://developers.google.com/search/docs/guides/javascript-seo-basics)。**主要抓取/辅助抓取**

Google 使用两种不同的抓取工具抓取网站：移动版抓取工具和桌面版抓取工具。每种抓取工具类型都会使用该类型的设备模拟访问您网页的用户。

Google 使用 1 种抓取工具类型（移动版或桌面版）作为网站的主要抓取工具。网站上被 Google 抓取的所有网页都是使用主要抓取工具抓取的。对所有新网站使用的主要抓取工具都是移动版抓取工具。

此外，Google 还会使用其他类型的抓取工具（移动版或桌面版）重新抓取网站上的一些网页。这称为辅助抓取，目的在于了解其他设备类型对您网站的适用情况。

**Google 如何得知哪些网页无法抓取？**

* robots.txt 中屏蔽的网页无法抓取，但如果这些网页链接到其他网页，系统仍可能会将其编入索引。（Google 可以通过指向相应网页的链接来推断页面内容，并且在不解析其内容的情况下将相应网页编入索引。）
* Google 无法抓取任何匿名用户无法访问的网页。因此，任何登录或其他授权防护措施都将阻止 Google 抓取网页。
* Google 不会频繁地抓取先前已被抓取且被视为[与其他网页重复](https://support.google.com/webmasters/answer/139066)的网页。

**改善抓取质量**

您可以利用以下这些技巧帮助 Google 发现您网站上的正确网页：

* [提交站点地图](https://support.google.com/webmasters/answer/156184)。
* [提交单个网页的抓取请求](https://support.google.com/webmasters/answer/6065812)。
* 针对网页使用[简单易懂的逻辑网址路径](https://support.google.com/webmasters/answer/76329)，并在网站中提供清晰直接的内部链接。
* 如果您在网站上使用网址参数进行导航，例如，如果您在全球购物网站上指明用户所在的国家/地区，请[使用网址参数工具告知 Google 关于重要参数的信息](https://support.google.com/webmasters/answer/6080550)。
* 谨慎使用 robots.txt：使用 robots.txt 指明您希望 Google 优先了解或抓取哪些网页，从而降低服务器负载，请勿将其作为阻止材料出现在 Google 索引中的方法。
* 使用 [hreflang](https://support.google.com/webmasters/answer/189077) 指向其他语言版本的网页。
* 明确指出[规范网页和备用网页](https://support.google.com/webmasters/answer/139066)。
* 通过[“索引涵盖范围”报告](https://support.google.com/webmasters/answer/7440203)查看您的抓取和索引涵盖范围。
* 确保 Google 可以访问主要网页以及正确呈现网页所需的重要资源（图片、CSS 文件、脚本）。
* 用[网址检查工具](https://support.google.com/webmasters/answer/9012289)检查实际网页，确认 Google 可以正常访问并呈现您的网页。

#### 编入索引 <a href="#indexing_advanced" id="indexing_advanced"></a>

Googlebot 会处理它抓取的每个网页，以便了解每个网页的内容。这包括处理文字内容、关键内容标记和属性，例如 `<title>` 标记和 Alt 属性、图片、视频等。Googlebot 可处理多种类型的内容，但并不是所有类型的内容都能处理。例如，我们无法处理某些富媒体文件的内容。

在抓取和编入索引的间隙，Google 会确定网页是否是另一网页的[重复网页或规范网页](https://support.google.com/webmasters/answer/139066)。如果该网页被视为重复网页，Google 便会显著降低对它的抓取频率类似网页会归入一个文档中，其中列出了一个或多个网页，包括规范网页（这组网页中最具代表性的网页）和找到的所有重复网页（可能只是访问同一网页的备用网址，或者可能是同一网页的备用移动版或桌面版）。

请注意，Google 不会将包含 [noindex 指令](https://support.google.com/webmasters/answer/93710)（标头或标记）的网页编入索引。但前提是 Google 必须能够看到该指令；如果网页被 [robots.txt 文件](https://support.google.com/webmasters/answer/6062608)、登录页或其他设备屏蔽了，那么即使 Google 并未访问该网页，也可能会将其编入索引！

**改善编入索引的效果**

您可以通过多种技巧使 Google 更加了解您的网页内容：

* 使用 [noindex](https://support.google.com/webmasters/answer/93710) 阻止 Google 抓取或找到您要隐藏的网页。请勿对 robots.txt 屏蔽的网页添加“noindex”；如果您这样做，Google 将看不见“noindex”指令，并且仍会将该网页编入索引。
* [使用结构化数据](https://developers.google.com/search/docs/guides/intro-structured-data)。
* 遵循 [Google 网站站长指南](https://support.google.com/webmasters/answer/35769)。
* 查看[基本 SEO 指南](https://support.google.com/webmasters/answer/7451184)和[高级用户指南](https://support.google.com/webmasters/answer/9429907)，了解更多提示。

**什么是“文档”？**

Google 在内部将网页表示为大量文档。每个文档都表示一个或多个网页。这些网页完全相同或非常相似但本质上内容相同，可以通过不同网址访问。文档中的不同网址可能会指向完全相同的网页（例如，example.com/dresses/summer/1234 和 example.com?product=1234 可能会显示同一网页），或同一网页对使用不同设备的用户来说具有细微差别（例如，example.com/mypage 适合桌面设备用户，m.example.com/mypage 适合移动设备用户）。

Google 会从文档中选择 1 个网址，并将其定义为该文档的[规范](https://support.google.com/webmasters/answer/139066)网址。文档的规范网址是 Google 最常抓取和编入索引的网址；其他网址会被视为重复网址或备用网址，并且[可能会偶尔被抓取](https://support.google.com/webmasters/answer/182072)，或根据用户请求将其作为结果呈现：例如，如果文档的规范网址是移动网址，Google 仍可能会为用桌面设备搜索的用户提供桌面（备用）网址。

Search Console 中的大多数报告都会将数据归到文档的规范网址名下。某些工具（例如“检查网址”工具）支持测试备用网址，但检查规范网址也应提供有关备用网址的信息。

您可以[告知 Google 您认为哪个网址是规范网址](https://support.google.com/webmasters/answer/139066)，但 Google 仍可能会因各种原因而选择其他网址作为规范网址。

下面简要说明了这些术语，以及这些术语在 Search Console 中的用法：

* **文档**：一个类似网页的集合。包含规范网址，如果您的网站有重复网页，还包含备用网址。文档中的网址可能来自相同或不同的组织（根域名，例如 [www.google.com](http://www.google.com) 中的“google”）。Google 会根据平台（移动设备/桌面设备）、用户语言‡或地理位置以及多个其他变量，选择要显示在搜索结果中的最佳网址。Google 可通过自然抓取或网站实现的功能发现网站上的相关网页，这些功能包括重定向或 `<link rel=alternate/canonical>` 标记。其他组织的相关网页只有在您网站通过重定向或链接标记明确编码的情况下才会被标记为备用网页。
* **网址**：用于访问网站上指定内容的网址。网站可能会将不同网址解析为指向同一网页。
* **网页**：通过一个或多个网址访问的指定网页。网页可能有不同的版本，具体取决于用户的平台（移动设备、桌面设备、平板电脑等）。
* **版本**：网页的一个变体，通常分为“移动版”、“桌面版”和“AMP”（但 AMP 网页本身可以有移动版和桌面版）。每个版本都可以有不同网址（example.com 与 m.example.com）或相同网址（如果您的网站[动态提供内容](https://developers.google.com/search/mobile-sites/mobile-seo/dynamic-serving)或使用[自适应设计](https://developers.google.com/search/mobile-sites/mobile-seo/responsive-design)，那么同一网址可以显示同一网页的不同版本），具体取决于您的网站配置。语言变体不会被视为不同版本，而是被视为不同的文档。
* **规范网页或网址**：Google 认为最能代表文档的网址。Google 始终会抓取此网址，偶尔也会抓取文档中的重复网址。
* **备用/重复网页或网址**：Google 可能会偶尔抓取的文档网址。如果这些网址适合用户和请求，Google 也会呈现这些网址（例如，会为在桌面设备上提出请求的桌面设备用户提供备用网址，而不是规范移动网址）。
* **网站 (Site)**：通常用作网站 (website)（概念相关的一组网页）的同义词，但有时也可用作 Search Console 资源的同义词，而实际上可以将资源定义为网站的一部分。网站可以跨子网域（甚至跨组织，如果具有正确关联的 AMP 网页的话）。

**‡**&#x91C7;用不同语言但具有相同内容的网页会存储在不同文档中，这些文档使用 [hreflang 标记](https://support.google.com/webmasters/answer/189077)相互引用；这就是为什么务必要用 hreflang 标记翻译内容的原因。

#### 呈现结果 <a href="#serving_advanced" id="serving_advanced"></a>

用户输入查询时，我们的机器会在索引中搜索匹配网页，并返回我们认为与用户搜索最相关的结果。相关性是由数百个因素决定的，我们一直在努力改进算法。Google 在选择结果和对其进行排名时会考虑用户体验，因此请务必确保您的网页能[快速加载](https://developers.google.com/speed/)且[适合移动设备](https://developers.google.com/search/mobile-sites/)。

**改善结果呈现**

* 如果您的结果针对的是特定地点或使用特定语言的用户，可以[告知 Google 您的偏好](https://support.google.com/webmasters/answer/182192)。
* 确保您的网页能[快速加载](https://developers.google.com/speed/)且[适合移动设备](https://developers.google.com/search/mobile-sites/)。
* 遵循[网站站长指南](https://support.google.com/webmasters/answer/answer.py?answer=35769)，避免常见的潜在问题并提高网站排名。
* 考虑为您的网站[实施搜索结果功能](https://developers.google.com/search/docs/guides/search-gallery)，例如食谱卡片或文章卡片。
* [实施 AMP](https://developers.google.com/search/docs/guides/about-amp)，以加快网页在移动设备上的加载速度。某些 AMP 网页也可以使用其他搜索功能，例如“焦点新闻”轮换展示。
* Google 的算法一直在不断改进，您应遵循我们的指南，努力创建符合用户需求的精彩内容，而不应尝试去猜测算法并根据算法来设计网页。

### 更详尽的版本

[点击此处即可找到对 Google 搜索工作方式更详尽的介绍](https://www.google.com/search/howsearchworks/)（含有图片和视频！）


# 什么是展示次数、排名和点击次数？

本页内容有助于您了解[“搜索分析”报告](https://www.google.com/webmasters/tools/search-analytics)中的展示次数、排名值和点击数据。

此处所述的试探法（例如，轮换展示项目的曝光率要求，或排名数值）随时可能会有变更。

### 什么是展示次数？

每当一个链接网址显示在用户的搜索结果中时，系统就会为其记录一次展示。链接是否必须实际滚动到可见范围内或以其他方式处于可见状态，取决于包含该链接的搜索元素的类型（如下文所述）。

例如，下方是一条非常基本的搜索结果，它只包含 1 个链接：标题“The Compleat Guide to Daffodils - Example.com”。

![只含 1 个链接的基本搜索结果。嗯，我们是故意这样拼写的，请不要因此而报告错误 :)](https://lh3.googleusercontent.com/R50R-W-jCzkkCj1bgAw4cUj11jEkU2N9cYtnj3kxKW2U811czjvmXiChyZw6wUR7_A=w512)

每当用户打开包含此搜索结果（即使用户没有滚动到此结果）的网页时，系统就会为此链接指向的网址记录一次展示。请注意，标题下方的可见链接网址不是超链接，因此系统不会为其记录展示（另请注意，可见网址未必与标题的超链接网址相同）。[在“探索”中，展示次数的统计方式略有不同](https://support.google.com/webmasters/answer/7042828?hl=zh-Hans\&ref_topic=9459871\&dark=0#discover)。

**按资源汇总数据与按网页汇总数据**

如果单个搜索元素包含多个链接（这种情况很常见），则系统会按网址或按资源统计展示次数，具体取决于您在“搜索分析”报告中选择的视图。例如，以下知识图谱卡片包含多个图片链接和文字链接：

![含多个链接的知识图谱卡片](https://lh3.googleusercontent.com/diLtO6bHkcWSmAdBFdfTG0bzOyIgowXAZvH_s0NWONp6aXeOpMXRwLgY0rRad_-De30=w700)

如果您在查看“搜索分析”报告时选择**按资源分组**数据，则会发现系统为整个卡片统计的总展示次数只有 1 次：

* [www.example.com](http://www.example.com) - 1 次展示

但是，如果您查看该报告时选择**按网页分组**数据，则会看到五个网页，每个网页各有一次展示：

* [www.example.com](http://www.example.com) - 1 次展示
* [www.example.com/rain](http://www.example.com/rain) - 1 次展示
* [www.example.com/rainbow](http://www.example.com/rainbow) - 1 次展示
* [www.example.com/shamrock](http://www.example.com/shamrock) - 1 次展示
* [www.example.com/lightning](http://www.example.com/lightning) - 1 次展示

虽然其中部分网页包含多个链接，但在按网页分组数据时，系统会将同一网页的所有展示次数都合并为一次展示。

请参阅[与各个元素相关的详细信息](https://support.google.com/webmasters/answer/7042828?hl=zh-Hans\&ref_topic=9459871\&dark=0#element-details)，以了解其他行为。

### 什么是搜索结果排名？

Google 搜索结果页由许多搜索结果元素构成。搜索结果元素包括蓝色链接部分、轮播界面、[精选摘要](https://support.google.com/webmasters/answer/6229325)、[知识图谱卡片](https://support.google.com/business/answer/6331288)以及许多其他类型的结果功能。单个搜索结果元素可以包括文字、互动功能，以及一个或多个链接。

大部分搜索结果元素都有一个数字型排名值，描述了这些元素在网页上的排名。以下桌面示意图中显示的搜索结果页包含四个蓝色链接部分（1、3、4、5）、一个 AMP 轮播界面 (2) 和一个知识面板卡片 (6)。各个元素的排名计算顺序为：从页面主栏开始，先从上至下，然后转到页面的侧栏，再从上至下（对于从右到左书写的语言，右侧是主栏），如下所示：

![一个 2 列式结果集内的排名统计顺序](https://lh3.googleusercontent.com/W1-yD6yxzUMI3GBKt9lHAK_Bm1A84A0Xd3LWtppkra34ltQyD6C_qBpj2tmwv8q8bQ=w430)

单个元素中的所有链接具有相同的排名。例如，在上面的示意图中，AMP 轮换展示内容中的所有项目都排在第 2 位；排在第 5 位的“蓝色链接”区域中的所有链接都排在第 5 位；知识卡片中的所有链接都排在第 6 位，以此类推。

结果元素在页面上的位置可能会因设备类型、搜索功能和屏幕大小而有所不同，但基本原则不变：系统将按从上至下、从左到右的顺序计算排名（对于从右到左书写的语言，则按从右到左的顺序计算排名）。**请注意，这种计算方式以后可能会有变化。**

#### 什么会被计为一个排名占位对象？

**只有那些包含至少 1 个**[**非查询优化**](https://support.google.com/webmasters/answer/7042828?hl=zh-Hans\&ref_topic=9459871\&dark=0#query-refinement)**链接的元素才会被计入排名范围**；不含任何链接或只含查询优化链接的元素不会被计入排名范围。例如，[轮换展示的梵高画作](https://www.google.com/webhp?#q=van+gogh+paintings)（指向新的 Google 搜索）不会被计为排名占位对象，而且它们的存在不会影响页面中位于它们下方的元素的排名值。如果上述示例中的 AMP 网页轮换展示内容（排在第 2 位）上方显示了不计入排名的轮换展示内容，则该内容不会影响页面上任意位置的排名值。

另外，鉴于主搜索页面中的某些图片缩略图确实（最终）会转到某个网页（可能会在额外点击展开后），所以它们也会被计为排名占位对象。例如，由于精选摘要包含指向源资源的链接，因此它（通常）会排在第 1 位。请注意，广告不会被计入搜索排名范围。

#### “搜索分析”报告中的排名值的含义是什么？

“搜索分析”报告中显示的排名值是搜索结果中指向您资源或网页且**位置最靠上**的链接的排名（如果有多个查询返回了您的资源，则会**针对所有查询取平均值**）。比如：

1. 如果一个查询返回了您的资源（有三条结果，分别排在第 2 位、第 4 位和第 6 位），则系统统计的排名将为第 2 位（最高排名）。
2. 如果又有一个查询返回了您的资源（有三条结果，分别排在第 3 位、第 5 位和第 9 位），则系统统计的排名将为第 3 位（最高排名）。
3. 对于这两次查询，您的平均排名为 (2 + 3)/2 = 2.5。

链接必须获得展示，系统才会记录它的排名。如果某条结果没有获得展示（例如，如果这条结果在搜索结果的第 3 页上，但用户只浏览了第 1 页），则系统不会针对查询记录这条结果的排名。在某些报告配置中，您可能会看到排名值显示为短划线 (-)。这表示，系统没有记录任何排名，因为用户在浏览与相应查询对应的搜索结果时从未看到过您的资源。例如，如果您将某个网页的桌面搜索结果和移动搜索结果进行比较（该网页在桌面设备上获得了 10 次展示，但在移动设备上未曾被展示过），则会看到桌面设备对应的排名值为 10，而移动设备对应的排名值为 -。

#### 排名值对我的资源有何影响？

排名值是一个复杂的指标，如果您不了解它的微妙之处，则可能会被误导。例如，在上面的示意图中，排在第 6 位的知识图谱卡片在网页上的排名值最高，这看起来很不理想，但实际上它会出现在非常显眼的位置。此外，在图片搜索中，每行和每页显示的结果数取决于屏幕宽度和其他因素，因此排名仅用于非常粗略地反映图片的显示位置有多靠后。

例如，对于某个排名值为 11 的元素，可能的解读如下所示：

* 在桌面搜索中，它可能意味着知识图谱卡片中的右上方位置
* 在桌面搜索中，它可能意味着第 2 页上的第一项（如果第一页的侧栏中没有任何内容）
* 在桌面图片结果中，它可能意味着第二或第三行结果（无需滚动即可看到）
* 在移动设备上，它可能意味着第六行结果（只能通过滚动看到）

正如您所看到的，排名数字在不同情况下的含义也不尽相同，因此请不要妄下简单的定论。我们建议您监测排名在一段时间内的变化（尤其是突然的排名变化）以及绝对排名。

**搜索分析显示我的网页的排名是第 5，不过当我执行搜索时，却发现该网页的排名是第 8！**

排名值是所有搜索的平均排名。对于某项特定搜索，由于存在多种可变因素（例如您的搜索记录、所在位置等），您看到的排名可能会不同于平均排名。

### 什么会被计为一次点击？

对于大多数结果类型，将用户定向到 Google 搜索范围之外的网页的任何点击均计为一次点击，而点击搜索结果范围内的链接不会被计为一次点击。如需了解详情，请参阅[什么是查询优化？](https://support.google.com/webmasters/answer/7042828?hl=zh-Hans\&ref_topic=9459871\&dark=0#query-refinement)

如果点击某条搜索结果转到外部页面，返回，然后再点击同一链接，这种情况仅计为一次点击。而点击不同的链接会为点击的每个链接计为一次点击。

某些类型的搜索结果统计点击次数的方式会有所不同；请查看搜索元素类型点击详细信息。

**什么是查询优化？**

如果您点击搜索结果内的链接来执行新查询，这就是所谓的查询优化。例如，如果您搜索“猫品种”，则搜索结果可能会包含不同品种的照片库。点击照片库中的某一张图片会对所选的品种执行新查询。&#x20;

同样，如果您在默认网页视图中搜索“肥猫”，然后选择图片结果视图（或视频结果、新闻结果，等等），那么您每次更改视图时，都会执行一次查询优化。&#x20;

如果某链接属于查询优化链接，则系统不会统计该链接的点击次数和展示次数。这其实是符合常理的，原因在于，查询优化链接的目标网页的所有者是…Google！因此，只有（最终）将用户定向到搜索结果页之外的点击或展示才可以在 Search Console 中获得点击次数或展示次数记录。

如果用户追踪查询优化链接，他们实际上是在执行搜索字词框中显示的新查询。系统会将新结果页中的所有展示、排名和点击数据都计为来自这个新用户查询。

### 系统会将我的搜索分析数据分配给哪个网址？

系统会将点击次数、展示次数和排名分配给 Google 搜索将用户定向到的目标网址。在某些情况下，这可能不是搜索结果中显示的可见网址。例如，如果某项资源在 example.com/mypage 上托管桌面版网页，并且在 m.example.com/mypage 上托管移动版网页（或许会用 `rel=”alternate”` 标记表示），那么移动设备上的搜索结果可能会显示 example.com，但链接目标为 m.example.com。在此例中，Search Console 会将展示和点击数据分配给 m.example.com/mypage（实际目标）。

即使目标网页将用户重定向到另一个网页，也不会对已被分配了展示或点击数据的网址产生任何影响。

### “探索”结果

[“探索”](https://support.google.com/webmasters/answer/9046777)是一个可供用户在移动设备上浏览的可滚动式主题卡片列表，其中显示的内容取决于用户的兴趣。每张主题卡片的内容包括一个标题、几行文字和一张来源网页的图片。用户点按相应卡片即可访问来源网页。

Google 探索还能在卡片内托管可水平滚动的轮换展示内容。此轮换展示内容包含与给定主题相关的一系列网页。

**展示**：当 Google 探索卡片被滚动到用户视野范围内时（以标准结果或嵌入式轮换展示内容的形式皆可），即会被计为 1 次展示。系统会将展示次数分配给来源网页的网址。对于每次会话中的每条结果，系统都仅会统计 1 次展示；因此，如果用户在滚过某个卡片后又滚回，则只会被计为 1 次展示。

**与搜索结果不同，Google 探索从不按资源汇总展示次数**。因此，如果来自同一资源的两条 Google 探索结果显示在同一 Google 探索列表中，则会被分别计为 1 次展示。

**点击**：仅当用户点击卡片（而非分享该结果或对该结果执行其他操作）时，才会被计为对相应结果网址的 1 次点击（点按）。

**排名**：系统不会为 Google 探索结果记录排名。

### 搜索结果元素详细信息

点击次数、展示次数和排名计数可能会有细微差别，具体视此处所述的结果元素类型而定。

#### 轮换展示内容

[轮换展示内容](https://developers.google.com/search/docs/guides/mark-up-listings)是滚动容器（通常为水平滚动），其中包含一组类型相同的项目（例如图片缩略图或 AMP 网页）。

**点击** - 行为取决于所含项目的类型。

**展示** - 一个项目必须在轮换展示内容中滚动到可见位置才会记录一次展示。轮换展示内容本身无需滚动到当前页面中。

**排名** - 轮换展示内容会占据搜索结果中的一个排名，并且系统会为该轮换展示内容中的所有项目指定同一个排名。然而，**只有当所含元素的类型可以占据一个搜索排名**时，轮换展示内容才会占据一个搜索排名：例如，AMP 网页的轮换展示内容具有一个排名，原因在于 AMP 网页可以具有一个排名，但指向 Google 优化查询的链接的轮换展示内容不会占据搜索排名，原因在于此类链接不能占据搜索排名。

**网址** - 轮换展示内容本身不含网址；系统会将数据分配给所含元素的网址。

#### AMP 网页

[AMP 网页](https://www.ampproject.org/docs/get_started/about-amp.html)可显示为标准的结果链接，也能以汇总格式显示在轮换展示内容内。点击轮换展示内容中的汇总 AMP 网页，会在一个特殊的 AMP 查看器中打开完整的 AMP 网页。用户可以在此查看器中浏览所有 AMP 网页，浏览顺序与这些网页在轮换展示内容中的托管顺序相同。

**点击** - 点击轮换展示内容中的某个汇总 AMP 网页（打开该网页）会计为一次点击。在 AMP 查看器中查看一个完整的 AMP 网页会同时计为一次点击和一次展示；因此，如果您打开 AMP 查看器并浏览该网页，则系统会对您首次（且仅这次）看到的网页统计一次点击（和一次展示）。

**展示** - 如果 AMP 网页在搜索结果的轮换展示内容中可见或在显示完整页面的 AMP 查看器中可见，则系统会对 AMP 网页统计一次展示。不管用户在轮换展示内容中或查看器中浏览该网页多少次，系统都只会统计一次展示。如果搜索结果链接作为简单的“蓝色链接”结果（而不是出现在轮换展示内容中）指向 AMP 网页，这也会被计为一次展示。

**排名** - 排名是所含搜索结果元素（轮换展示内容、蓝色链接组，等等）的排名。系统不会记录轮换展示内容中的排名。

**网址** - 报告的网址是 AMP 网页的网址。

#### 精选摘要

[精选摘要](https://support.google.com/webmasters/answer/6229325)会显示从单个特定网页提取的信息。它包含一个指向源网页的链接。

**点击** - 点击精选摘要中的外部网页链接会被计为一次点击。

**展示** - 遵循标准的展示规则。

**排名** - 遵循标准的排名规则。

**网址** - 用户在点击精选摘要中的链接后会被重定向到的最终网址。

#### 富媒体搜索结果

富媒体搜索结果是使用结构化数据定义的，能以不同方式显示在 Google 搜索结果中。

**点击** - 每当用户点击搜索结果中的某个可将用户定向到搜索结果范围外部的链接时，即会被计为一次点击。

**展示** - 遵循标准的展示规则。

**排名** - 遵循标准的排名规则。

**网址** - 包含复合搜索卡结构化标记的网页的网址。

#### 列表式/详情式富媒体搜索结果

一些富媒体搜索结果类型包含两个阶段的搜索结果：最初的搜索结果是一个简短列表，其中包含排名靠前的搜索结果以及与各项搜索结果相关的最基本信息和链接（即“列表视图”）；点击一个列表项，便会打开所选列表项的详细信息视图（即“详情视图”），其中包含指向该项目的一个或多个提供商的链接。

列表视图支持以下操作：

* **点击展开列表**：
  * 在移动设备上的搜索结果中，执行此操作会展开列表视图项的完整列表。
  * 在桌面设备上的搜索结果中，执行此操作会展开列表，还会打开第一个列表项的详情视图。
* **点击简短列表中的特定搜索结果**：
  * 在移动设备上的搜索结果中，执行此操作仅会打开所点击项目的详情视图。
  * 在桌面设备上的搜索结果中，执行此操作会展开列表，还会显示所点击项目的详情视图。

请参阅以下部分，了解用户每次查看内容时系统如何计算点击次数、展示次数和排名。

下方是一个移动设备上的搜索结果示例，分别显示了最初的列表视图和一项特定招聘信息的详情视图。

![](https://lh3.googleusercontent.com/J4HjDt-LCr7ZVhxdITXkd0iAdYoVoqAHbG0kpO73iUxDampZm6XCe1Rc6wf4UNf4mg=w495)

以下富媒体搜索结果类型会在搜索结果中以列表项/详情项的形式显示：

* [招聘信息](https://developers.google.com/search/docs/data-types/job-postings)
* [活动](https://developers.google.com/search/docs/data-types/event)

您可以过滤效果报告，使其仅显示某个给定的富媒体搜索结果类型（例如，职位信息/职位详情、活动信息/活动详情）的列表视图或详情视图数据。

**列表视图指标**

如果一个列表视图项有多个提供商，系统仅会显示第一个提供商。例如，如果 3 个不同的代理机构同时提供同一个职位，列表视图中仅会显示提供商列表中的第一个代理机构（该机构会获得一次展示）。

**点击** - 点击列表视图（简短列表或完整列表）中的某个项目，会计为相应列表项中显示的提供商获得一次点击。在桌面设备上，展开简短列表会自动打开第一个项目的详情视图，但此操作不会计为第一个列表项获得一次点击。

**展示** - 当某个列表项在简短列表视图中**可见**时，即会被计为获得一次展示；当用户展开列表视图时，无论该列表项实际上是否滚动到了用户的视野范围内，**也**会计为获得一次展示。因此，如果某个项目在简短视图中可见，并且用户随后点击展开了相应列表，则会计为获得**两次**展示；如果该项目在简短视图中不可见，并且用户随后点击展开了相应列表，则只会计为获得一次展示。

**排名** - 系统会为简短视图中的所有可见列表项指定同一排名，即列表视图容器的排名。对于展开后的列表，系统会分别为每个列表项指定在该列表中的排名，其中第一个项目的排名为 1，第二个项目的排名为 2，以此类推。因此，如果某个项目在简短列表中的排名为 2，并且用户点击展开了该列表，则该列表项的排名计算方法如下：

（列表容器的排名值（通常为 1）+ 在简短列表中的排名值 (2)）/2 = 1.5。

**网址** - 在列表视图中，每个列表项只能显示 1 个提供商。此网址就是系统会将点击、展示和排名计入其名下的网址。

**详情视图指标**

**点击** - 点击详情视图中的某个提供商，仅会计为所选提供商获得一次点击。详情视图可显示多个提供商，但用户只能选择 1 个提供商。

**展示** - 详情视图中列出的所有提供商都会获得一次展示，无论用户是如何转到详情视图的。用户可通过以下方式打开详情视图：

* 点击某个列表项
* 打开指向详情视图的直接链接（例如有人与他们分享了链接）。[这可能会导致您获得的展示次数高于点击次数](https://support.google.com/webmasters/answer/7042828?hl=zh-Hans\&ref_topic=9459871\&dark=0#impressions_higher_than_clicks)。

**排名** - 此项目的提供商列表中相应提供商的排名。

**网址** - 提供商的网址。**为什么我的详情视图获得的展示次数高于我的列表视图获得的点击次数？**&#x6B64;问题可能是由以下几种原因导致的：

* 如果您与好友分享了指向某个详情窗格的直接链接，然后好友打开了这个链接，则会被计为详情视图获得的一次展示，但不会被计为列表视图获得的一次点击或展示。
* 在桌面设备上，展开列表视图会自动显示第一个列表项的详情视图，此操作会被计为相应详情项获得的一次展示，但不会被计为相应列表项获得的一次点击。
* 当用户点击某个列表项时，只有 1 个提供商会获得相应点击次数。但在得到的详情视图中，发布过详情的所有提供商都会获得一次展示。

**示例**

以下是招聘信息富媒体搜索结果的一些示例情形：

**示例 1：职位信息在简短列表视图中可见（排名为 2）。**

**操作** - 用户点击展开此列表，继而点击职位信息查看详情，然后点击职位详情视图以访问相应提供商的网页。

* 职位信息：
  * 展示次数：2（1 次来自最小化列表，1 次来自展开后列表）
  * 点击次数：1（点击以打开职位详情）。
  * 排名：1.5（（短列表视图的排名值 1 + 在展开后列表中的排名值 2）/2 = 1.5）
* 职位详情：
  * 展示次数：1
  * 点击次数：1
  * 排名：2

**示例 2：职位信息在最小化列表中不可见（排名为 5）。**

**操作**：用户点击展开此列表，继而点击职位信息查看详情，但并未点击访问相应网页。

* 职位信息：
  * 展示次数：1（0 次来自最小化列表，1 次来自展开后列表）
  * 点击次数：1（点击打开职位详情）
  * 排名：5（在展开后列表中的排名）
* 职位详情：
  * 展示次数：1
  * 点击次数：0
  * 排名：1

**示例 3：职位信息在最小化列表中不可见（排名为 10）。**

**操作**：用户点击展开此列表，但并未向下滚动查看职位信息。

* 职位信息：
  * 展示次数：1（0 次来自最小化列表，1 次来自展开后列表）
  * 点击次数：0
  * 排名：在展开后列表中的排名为 10（即使未滚动到用户的视野范围内）
* 职位详情：
  * 展示次数：0
  * 点击次数：0
  * 排名：无

**示例 4：职位信息在桌面设备上的搜索结果中排名为 1**

**操作**：用户点击展开此列表后，系统自动打开第一个项目，该项目有 2 个提供商：第一个是 X，第二个是 Y。然后，用户在展开后的项目中点击提供商 X。

**提供商 X**

* **职位信息：**
  * 展示次数：1
  * 点击次数：0（在桌面设备上进行的自动展开操作不计入相应职位信息获得的点击次数。）
  * 排名：1
* **职位详情：**
  * 展示次数：1
  * 点击次数：1
  * 排名：1

**提供商 Y**

* **职位信息：**
  * 展示次数/点击次数/排名：0
*
* **职位详情：**
  * 展示次数：1
  * 点击次数：0
  * 排名：2

#### 应用安装链接

当用户在移动设备上搜索时，如果搜索结果包含该设备上未安装的应用的应用页面，则该用户可能会看到一个用于在该设备上安装此应用的链接（指向此应用中的页面的结果会从搜索结果中移除）。

**点击** - 点击指向安装位置的链接会计为一次点击。这无法保证用户实际完成了相应应用的安装。

**展示** - 遵循标准的展示规则。

**排名** - 遵循标准的排名规则。

**网址** - 与应用安装链接相关联的网址是设备的根 URI（不带 app\://\<package\_or\_id> 前缀），即“/”。

#### 图片

图片结果既能以缩略图的形式内嵌在[合并后的搜索结果页](https://www.google.com/search?q=daffodils)中，也可内嵌在[图片搜索结果页](https://www.google.com/search?q=daffodils\&tbm=isch)中。在合并后的搜索结果页中，它们有时会以轮换展示图片的形式出现。

在搜索分析数据中，图片只是指向主机页面网址的链接。这意味着，Search Console 对同一网页上的不同图片不加区分；对于点击次数、展示次数和排名而言，所有图片均被视为完全相同的链接。

图片可以同时显示在网页搜索结果和图片搜索结果中。搜索分析会分别记录每种搜索类型的数据；它不会合并不同搜索类型的数据。

**点击** - 点击展开缩略图图片不会被计为点击次数。系统会将用户对展开后图片的点击，或将用户定向到 Google 搜索范围之外的所有图片点击统计为一次点击。

**展示** - 每当用户查看缩略图图片或展开后的图片时，系统就会统计一次展示。系统仅会对每个托管页面网址统计一次展示，因此，如果用户滚动网页离开而后又返回，或者展开缩略图以查看放大的图片，则这只被计为一次展示。系统只会为每个网址记录一次展示；如果某个查询显示同一网页中的不同图片，则系统仅会记录一次展示。系统何时记录展示取决于用户打开的搜索视图：

* **合并结果标签页** - 在默认搜索结果页（其中合并了所有类型的结果）中，无论图片是否已滚动到浏览器窗口中，系统都会统计图片展示次数；但如果图片在此（或任何）网页的轮换展示内容内，则它必须滚动到该轮换展示内容中，系统才能统计一次展示。
* **图片搜索标签页** - 只有当图片已滚动到视图中后，系统才会统计图片展示次数。

**排名** - 遵循标准的排名规则。

* 系统会使用标准的排名规则（在这种规则中，一组图片会占据相同排名）计算**合并结果标签页**中的排名。
* 系统会按先从左到右然后从上至下的顺序（对于从右到左书写的语言，则按从右到左的顺序）统计**图片搜索结果**中的排名。例如，对于从左到右排版的页面中的英语图片结果，计算排名的方式如下：

![一个从左到右式结果集内的图片搜索结果排名统计顺序](https://lh3.googleusercontent.com/n8j4vk4Pryce7l7FJmDMG88olYfNNjXrUSselhWVW1tw2JC92hYbhbLdOKWlMys40w=w357)

在图片搜索结果页面中，屏幕越宽，每行中显示的结果越多。因为每行的图片数量会因屏幕尺寸以及每个图片的宽度而有所不同，因此很难判断图片搜索结果中的某个排名值的确切含义。

**网址** - 图片托管页面的网址。

*

#### Google Play 免安装体验

[Google Play 免安装体验](https://developer.android.com/topic/instant-apps/)结果是指具有下述特征的应用：在移动设备上的 Google 搜索结果中显示，且无需事先安装在设备上即可直接从搜索结果中运行。

**点击** - 用户点击了 Google Play 免安装体验结果。

**展示** - 系统向用户显示了 Google Play 免安装体验结果。

**排名** - 遵循[标准的排名规则](https://support.google.com/webmasters/answer/7042828?hl=zh-Hans\&ref_topic=9459871\&dark=0#position)。

**网址** - 为免安装应用指定的[应用链接](https://developer.android.com/training/app-links/instant-app-links)。

#### Web Light 结果

[Web Light 结果](https://support.google.com/webmasters/answer/6211428)是指具有下述特征的网页：已被 Google 搜索为网络连接速度较慢或设备运行速度较慢的用户转码为更简洁、更快速的版本。

**点击** - 用户执行了点击操作以打开转码后网页结果。

**展示** - 用户看到了转码后网页的搜索结果。

**排名** - 遵循[标准的排名规则](https://support.google.com/webmasters/answer/7042828?hl=zh-Hans\&ref_topic=9459871\&dark=0#position)。

**网址** - 原始网页在网络上的网址。

#### 媒体操作

[媒体操作](https://developers.google.com/actions/media/)结果是指具有下述特征的音频或视频内容：让用户能够直接从搜索结果中启动播放。（播客结果不会被计为媒体操作结果。）

**点击** - 用户点击后，开始在浏览器或应用中播放内容。

**展示** - 用户看到了包含媒体操作的搜索结果。

**排名** - 遵循[标准的排名规则](https://support.google.com/webmasters/answer/7042828?hl=zh-Hans\&ref_topic=9459871\&dark=0#position)。

**网址** - Action.url 值，即用户在点击结果后到达的网页或应用的网址。


# 关于我们的统计信息和数据

### 何时显示 Search Console 数据？

当您将网站添加至 Search Console 后，诊断数据和其他数据可能要过一段时间才能显示出来。这属于正常情况，因为 Search Console 可能需要一些时间来收集和处理您网站的数据。一般而言，如果您看到“尚无任何数据”的消息，请稍后再回来查看。一旦 Google 开始更频繁地抓取您的网站，您就会发现 Search Console 开始显示更详细的数据，而且数据更新也会更频繁。

如果您仍然看不到任何数据，则可能是由以下某个原因导致的：

* 如果您没有看到 [www.example.com](http://www.example.com) 网站的任何数据，可能是因为您添加网站时用的是 <http://example.com> 的形式。对于 Google 而言，这两个网站完全不同。如果您觉得缺少某些数据，请将带 www 和不带 www 的网域都添加到您的 Search Console 帐户中，然后看一下这两个版本的网站数据。
* 如果您在**抓取错误**报告中看不到任何数据，则可能是因为 Google 根本就未发现任何问题。这是好消息，但我们建议您定期回来查看。
* 如果您在**搜索分析**报告中看不到任何数据，则可能是因为还没有人在搜索结果中点击您的网站。请查看可能导致[您的网站在搜索结果中表现不佳](https://support.google.com/webmasters/answer/34444)的原因。
* 如果您在**站点地图**报告中看不到任何数据，请考虑[创建和提交站点地图](https://support.google.com/webmasters/answer/183668)，以帮助 Google 发掘您网站上的内容。

我们一直在努力提高已验证网站的数据（如抓取、索引及搜索分析统计信息）的更新频率。这些数据大部分基于您的网站内容，因此最能反映出您的网站现状。我们的内部系统一直在变化，而网络本身也是一个不断改变的环境。另外，从算出数目到网站站长看到该数目，这中间可能会出现延迟。虽然我们会间隔一定时间来发布数据，但收集数据的工作却是持续进行的。如果您的内容不经常变化，或者如果您没有增加指向自己网站的新链接，则您可能不会在每次登录 Search Console 时都看到数据更新。

### 如果数据缺失或已过期

当您将网站添加至 Search Console 后，诊断数据和其他数据需要过一段时间才能显示出来。

如果您 1 周后仍没看到新网站 [www.example.com](http://www.example.com) 的任何数据，可能是因为您添加网站时用的是 <http://example.com> 的形式。对于 Search Console 而言，example.com 和 [www.example.com](http://www.example.com) 是两个完全不同的网站。如果您觉得缺少某些数据，请将您网域的 www 版本和非 www 版本都添加到 Search Console 帐号中，然后看一下这两个版本的网站数据。

对不带 www 的网域执行“site:”搜索（例如，\[site:example.com]）。这应当会返回您域中的网页以及编入索引的所有子域（例如 [www.example.com、rollergirl.example.com](http://www.example.com、rollergirl.example.com) 等）。您应当能够从结果中看出，编入索引的网站主要是带 www 子域名的网站还是没有 www 子域名的网站。编入索引的版本可能是在您的 Search Console 帐号中显示了最多数据的版本。 [详细了解如何指定网页的规范版本](https://support.google.com/webmasters/answer/139066)。

### 为什么 Search Console 数据与 Google Analytics（分析）数据不一致？

Search Console 数据可能会与其他工具（如 [Google Analytics（分析）](http://www.google.com/analytics)）中显示的数据有所不同。可能的原因包括：

* 在您的网站上次更改后，我们可能没有对其进行抓取。
* Search Console 会进行其他一些数据处理工作（例如，从漫游器中排除重复内容和访问次数），这可能导致您的统计信息与其他来源中所列的统计信息不符。
* 某些工具（例如 Google Analytics（分析））只跟踪已在浏览器中启用 JavaScript 的用户所产生的流量。


# Search Console帮助

## 指南

* [指南概览](https://support.google.com/webmasters/answer/9526064?hl=zh-Hans\&ref_topic=9456575)
* [网站站长指南](https://support.google.com/webmasters/answer/35769?hl=zh-Hans\&ref_topic=9456575)
* [常规指南](https://support.google.com/webmasters/topic/9460495?hl=zh-Hans\&ref_topic=9456575)
* [专门面向内容的指南](https://support.google.com/webmasters/topic/9460494?hl=zh-Hans\&ref_topic=9456575)
* [质量指南](https://support.google.com/webmasters/topic/6001971?hl=zh-Hans\&ref_topic=9456575)


# 指南概览

指南部分提供了有关如何对网站进行编码以使网站显示在 Google 中的建议。这些指南分为以下类别：

[**网站站长指南**](https://support.google.com/webmasters/answer/35769)：帮助您的网站显示在 Google 搜索中的一般最佳做法以及质量指南，如果不遵循这些质量指南，可能会导致您的网页或网站被 Google 搜索忽略。

[**常规指南**](https://support.google.com/webmasters/topic/9460495)：有关如何让您的网站出现 Google 中并展示最佳效果的最佳做法。

[**面向特定内容的指南**](https://support.google.com/webmasters/topic/9460494)：有关网站上特定类型的内容的其他提示，这些类型包括图片、视频、AMP、AJAX 和适合移动设备的网站。要详细了解一般最佳做法或如何为您的网站启用特定功能，请参阅[搜索结果呈现主题](https://support.google.com/webmasters/topic/9456381)。

[**质量指南**](https://support.google.com/webmasters/topic/6001971)：这些指南描述了可能会使您的网页或网站被 Google 搜索结果忽略的特定被禁技术。采用这些技术可能会导致我们对您的网站采取[手动操作](https://support.google.com/webmasters/answer/9044175?#what-is-manual-action)。

Link: <https://support.google.com/webmasters/answer/9526064?hl=zh-Hans&ref_topic=9456575&dark=0>


# 网站站长指南

## 网站站长指南

遵循以下**常规指南**有助于 Google 找到您的网站、将其编入索引并对其进行排名。

我们强烈建议您多加留意以下**质量指南**，其中简要说明了一些违规行为，这些行为可能会导致网站被从 Google 索引中彻底移除，或者导致系统算法或我们手动将其标识为垃圾网站。如果某个网站被标识为垃圾网站，那么它可能不会再出现在 Google.com 或任何 Google 合作伙伴网站的搜索结果中。

### 常规指南

#### 帮助 Google 找到您的网页帮助 Google 了解您的网页帮助访问者使用您的网页

* 确保网站上的所有网页均能通过其他可找到的网页上的链接转到。引荐链接应包括与目标网页相关的文字（对于图片，则应包括 Alt 属性）。可供抓取的链接是[含有 href 属性的 `<a>` 标记](https://support.google.com/webmasters/answer/9112205)。
* 提供 [Sitemap 文件](http://sitemaps.org/)，其中应含有指向您网站上的重要网页的链接。同时，也请提供一个列出了所有指向这些网页的用户可读链接的页面（也称为网站索引或站点地图页面）。
* 将网页上的链接数量限制在合理范围内（最多几千个）。
* 确保您的网络服务器能够正确地支持 `If-Modified-Since` HTTP 标头。此功能可指示您的网络服务器告诉 Google，自我们上次抓取您的网站以来，您的内容是否发生了变化。支持此功能可以节省带宽和开销。
* 在您的网络服务器上使用 robots.txt 文件，通过防止抓取无限的区域（例如搜索结果页）来管理您的抓取预算。及时更新您的 robots.txt 文件。[了解如何借助 robots.txt 文件来管理抓取流程](https://developers.google.com/webmasters/control-crawl-index/docs/faq)。使用 [robots.txt 测试工具](https://www.google.com/webmasters/tools/robots-testing-tool)测试 robots.txt 文件的覆盖率和语法。

&#x20; **如何帮助 Google 找到您的网站：**

* [请求 Google 抓取您的网页](https://support.google.com/webmasters/answer/6065812)。
* 对于应知道您网页情况的所有网站，请务必通知它们您的网站已上线。

#### 帮助 Google 了解您的网页

* 创建一个实用且信息丰富的网站，并撰写能够清晰准确地表述内容的网页。
* 要考虑到用户会使用哪些字词来查找您的网页，并确保您的网站上确实包含了这些字词。
* 确保您的 `<title>` 元素和 `alt` 属性均为描述性内容且具体、准确。
* 网站的页面层次结构要具有一个清晰的概念。
* 遵循我们建议的[图片](https://support.google.com/webmasters/answer/114016)、[视频](https://support.google.com/webmasters/answer/156442)和[结构化数据](https://developers.google.com/structured-data/)最佳做法。
* 使用内容管理系统（例如 Wix 或 WordPress）时，确保该系统生成的网页和链接能被搜索引擎抓取。
* 为了使 Google 能全面了解网站的内容，请允许 Google 抓取可能会显著影响网页呈现效果的所有网站资源，例如会影响 Google 了解网页的 CSS 和 JavaScript 文件。Google 索引系统所呈现的网页样貌与用户看到的一样，包括图片、CSS 和 JavaScript 文件。要查看 Googlebot 无法抓取的网页资源，请使用[网址检查工具](https://support.google.com/webmasters/answer/9012289)；要调试 robots.txt 文件中的指令，请使用 [robots.txt 测试](https://support.google.com/webmasters/answer/6062598)工具。
* 允许搜索漫游器在不使用可跟踪其网站访问路径的会话 ID 或网址参数的情况下抓取您的网站。这些技术有助于跟踪个人用户行为，但漫游器的访问模式完全不同。采用这些技术可能会导致对网站的索引编制不完整，因为漫游器可能无法排除那些看似不同但实际却指向同一个网页的网址。
* 确保在默认情况下 Google 能够查看您网站的重要内容。Google 能够抓取隐藏在导航元素（例如标签或展开部分）中的 HTML 内容，但我们认为用户不太容易访问此类内容，因此您应在默认页视图中显示最重要的信息。
* 尽可能确保网页上的广告链接不会影响搜索引擎排名。例如，使用 [robots.txt](https://support.google.com/webmasters/answer/156449)、`rel="nofollow"` 或 `rel="sponsored"` 阻止抓取工具跟踪广告链接。

#### 帮助访问者使用您的网页

* 尽量使用文字（而非图片）显示重要的名称、内容或链接。如果不得不使用图片代替文字内容，可以使用 `alt` 属性添加一些描述性文字。
* 确保所有链接都能转到实际的网页。使用[有效的 HTML](https://validator.w3.org/)。
* 优化网页加载时间。飞快的网站加载速度既可令用户满意，也可改善网页的整体质量（尤其是对于互联网连接速度较慢的用户而言）。Google 建议您使用 [PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights/) 和 [Webpagetest.org](http://www.webpagetest.org/) 等工具测试网页的加载速度。
* 针对所有设备类型和尺寸（包括桌面设备、平板电脑和智能手机）设计您的网站。使用[移动设备适合性测试工具](https://search.google.com/test/mobile-friendly)测试您的网页在移动设备上的运行效果，并获取反馈以了解哪些内容需要得到修正。
* 确保您的网站[在不同的浏览器中都能正常显示](https://support.google.com/webmasters/answer/100782)。
* 如果可以的话，使用 HTTPS [确保网站的连接安全无虞](https://support.google.com/webmasters/answer/6073543)。对用户与网站之间的互动操作进行加密是在网络上进行通信的最佳做法。
* 确保有视觉障碍的读者也可以浏览您的网页，例如，通过屏幕阅读器测试易用性。

### 质量指南 <a href="#quality_guidelines" id="quality_guidelines"></a>

这些质量指南涵盖了最常见的作弊形式或操纵行为，对于此处未列出的其他误导行为，Google 也会进行查处。切勿抱有侥幸心理，认为某种欺骗手段未在本页中列出，Google 就会认可该手段。作为网站站长，与其花费大量时间寻找漏洞加以利用，不如尽力维护基本原则，以便为用户带来更好的体验，从而使网站获得更高的排名。

如果您认为其他网站在滥用 Google 的质量指南，请通过垃圾信息举报告知我们。Google 希望能开发出灵活的自动解决方案来解决上述问题，并会使用该报告进一步改进我们的网络垃圾检测系统。[Google 会对垃圾网页执行手动操作吗？](https://www.youtube.com/watch?v=2oPj5_9WxpA)

{% embed url="<https://youtu.be/2oPj5_9WxpA>" %}
Matt Cutts 介绍 Google 会对垃圾网页执行的手动操作
{% endembed %}

#### 基本原则

* 您在设计网页时主要考虑的应该是用户，而不是搜索引擎。
* 不要欺骗用户。
* 不要为了提高搜索引擎排名而弄虚作假。一种可以有效分辨您的做法是否妥当的衡量标准是，您在向竞争对手网站或 Google 员工解释自己的作为时是否感到坦然。另一个有用的测试手段是扪心自问：“这能否给我的用户带来帮助？如果没有搜索引擎，我会这样做吗？”
* 想一想是什么让您的网站变得独一无二、具有价值或吸引力。让您的网站在相应领域中出类拔萃。

#### 具体指南

**避免**使用以下技术：

* [自动生成的内容](https://support.google.com/webmasters/answer/2721306)
* 参与[链接方案](https://support.google.com/webmasters/answer/66356)
* 制作[原创内容很少或没有原创内容的网页](https://support.google.com/webmasters/answer/66361)
* [隐藏真实内容](https://support.google.com/webmasters/answer/66355)
* [欺骗性重定向](https://support.google.com/webmasters/answer/2721217)
* [隐藏文字或链接](https://support.google.com/webmasters/answer/66353)
* [门页](https://support.google.com/webmasters/answer/2721311)
* [抄袭内容](https://support.google.com/webmasters/answer/2721312)
* 参与[不能有效增值的联属计划](https://support.google.com/webmasters/answer/76465)
* 加载带有[无关关键字](https://support.google.com/webmasters/answer/66358)的网页
* 制作会实施[恶意行为](https://support.google.com/webmasters/answer/2721313)（如网上诱骗，或安装病毒、特洛伊木马或其他有害软件）的网页
* 滥用[结构化数据](https://developers.google.com/search/docs/guides/sd-policies)标记
* 向 Google 发送[自动查询](https://support.google.com/webmasters/answer/66357)

**遵守**最佳做法，例如：

* 监控网站上的[黑客攻击](https://support.google.com/webmasters/answer/2721435)活动并尽快移除被黑的内容
* 防止网站上出现[用户生成的垃圾内容](https://support.google.com/webmasters/answer/2721437)并及时移除

如果您的网站违反以上一条或多条指南，则 Google 可能会对您的网站执行[手动操作](https://support.google.com/webmasters/answer/9044175)。一旦解决了这些问题，您便可提交网站以供[重新审核](https://support.google.com/webmasters/answer/35843)。<br>


# 常规指南

https\://support.google.com/webmasters/topic/9460495?hl=zh-Hans\&ref\_topic=9456575\&dark=0

## 常规指南

* [搜索引擎优化 (SEO) 新手指南](https://support.google.com/webmasters/answer/7451184?hl=zh-Hans\&ref_topic=9460495)
* [使用 HTTPS 确保网站安全](https://support.google.com/webmasters/answer/6073543?hl=zh-Hans\&ref_topic=9460495)
* [保持简单的网址结构](https://support.google.com/webmasters/answer/76329?hl=zh-Hans\&ref_topic=9460495)
* [向 Google 说明您的出站链接的用意](https://support.google.com/webmasters/answer/96569?hl=zh-Hans\&ref_topic=9460495)
* [将网站标记为面向儿童的内容](https://support.google.com/webmasters/answer/3221080?hl=zh-Hans\&ref_topic=9460495)
* [浏览器兼容性](https://support.google.com/webmasters/answer/100782?hl=zh-Hans\&ref_topic=9460495)
* [避免创建重复内容](https://support.google.com/webmasters/answer/66359?hl=zh-Hans\&ref_topic=9460495)
* [确保链接可供抓取](https://support.google.com/webmasters/answer/9112205?hl=zh-Hans\&ref_topic=9460495)
* [借助 Google 搜索进行网站测试的最佳做法](https://support.google.com/webmasters/answer/7238431?hl=zh-Hans\&ref_topic=9460495)


# 搜索引擎优化 (SEO) 新手指南

### 本指南的适用对象

如果您通过 Google 搜索运营、管理或推广在线内容，或通过在线内容获利，则本指南对您适用。如果您是业务快速发展的商家、拥有十几个网站的网站站长、网络代理方面的 SEO 专家，或者是对搜索机制具有强烈兴趣的 DIY SEO 达人，则本指南也适用于您。如果您有兴趣根据我们的最佳做法对 SEO 基础知识进行全面了解，那么本指南同样适用于您。本指南不会提供任何可让您的网站在 Google 中自动排位第一的秘诀（抱歉！），但是如果您遵循下面列出的最佳做法，则有望让搜索引擎更容易抓取、了解您的内容并将其编入索引。

搜索引擎优化 (SEO) 通常是指对网站的各个部分进行细微的修改。单独来看，这些修改可能只是逐步细微的改进，但与其他优化结合起来后，则可能会对您的网站在自然搜索结果中的用户体验和效果产生显著影响。您可能早已熟悉本指南中的许多主题，因为这些都是所有网页的基本要素，但您可能并没有充分利用它们。

您应该构建一个可让用户从中受益的网站，并且任何优化都应着眼于改善用户体验。您的其中一个用户便是搜索引擎，它可以帮助其他用户发现您的内容。搜索引擎优化是指帮助搜索引擎了解和呈现内容。您的网站可能比我们的示例网站要简单或复杂，所呈现的内容也可能截然不同，但我们下面讨论的优化主题对于所有大小和类型的网站均适用。我们希望本指南能在如何改进网站方面给您带来一些新的启发，同时欢迎您在 [Google 网站站长帮助论坛](https://g.co/WebmasterHelpForum)1中提出问题、提供反馈、分享成功案例。

希望您会喜欢本指南的内容，并通过 Google 支持论坛分享您的反馈。

欢迎随时以适当的方式保存、打印或再次分享本指南：让我们携手共同提高网站的质量。

祝阅读愉快！

此致\
Google 搜索质量团队敬上

### 目录

* [预备知识](https://support.google.com/webmasters/answer/7451184?hl=zh-Hans\&ref_topic=9460495\&dark=0#getting-started)
* [帮助 Google 找到您的内容](https://support.google.com/webmasters/answer/7451184?hl=zh-Hans\&ref_topic=9460495\&dark=0#find)
* [告诉 Google 不应抓取哪些页面](https://support.google.com/webmasters/answer/7451184?hl=zh-Hans\&ref_topic=9460495\&dark=0#no-find)
* [帮助 Google（和用户）了解您的内容](https://support.google.com/webmasters/answer/7451184?hl=zh-Hans\&ref_topic=9460495\&dark=0#understand_your_content)
* [管理您的网页在 Google 搜索结果中的显示效果](https://support.google.com/webmasters/answer/7451184?hl=zh-Hans\&ref_topic=9460495\&dark=0#appearance)
* [组织您的网站层次结构](https://support.google.com/webmasters/answer/7451184?hl=zh-Hans\&ref_topic=9460495\&dark=0#hierarchy)
* [优化您的内容](https://support.google.com/webmasters/answer/7451184?hl=zh-Hans\&ref_topic=9460495\&dark=0#optimize)
* [优化您的图片](https://support.google.com/webmasters/answer/7451184?hl=zh-Hans\&ref_topic=9460495\&dark=0#images)
* [构建适合移动设备的网站](https://support.google.com/webmasters/answer/7451184?hl=zh-Hans\&ref_topic=9460495\&dark=0#mobile)
* [推广您的网站](https://support.google.com/webmasters/answer/7451184?hl=zh-Hans\&ref_topic=9460495\&dark=0#promote)
* [分析搜索效果和用户行为](https://support.google.com/webmasters/answer/7451184?hl=zh-Hans\&ref_topic=9460495\&dark=0#analyze)
* [附录：本文中使用的链接网址](https://support.google.com/webmasters/answer/7451184?hl=zh-Hans\&ref_topic=9460495\&dark=0#appendix)

### 预备知识

#### **术语库**

以下简要术语表包含了本指南中使用的重要术语：

* **索引** - Google 会将所知道的全部网页存储在其“索引”中。每个网页的索引条目都会描述该网页的内容和位置（网址）。编入索引是指当 Google 抓取、读取网页并将其添加到索引的过程。例如：Google 今天已将我网站上的几个网页编入索引。
* **抓取** - 寻找新网页或更新后的网页的过程。Google 会通过跟踪链接、读取站点地图或其他各种方式来发现网址。*Google 通过抓取网页来寻找新增网页，然后（在适当的时候）将网页编入索引。*
* **抓取工具** - 从网络中抓取（提取）网页并将网页编入索引的自动化软件。
* **Googlebot** - Google 抓取工具的通用名称。*Googlebot 会持续不断地抓取网页。*
* **SEO** - 搜索引擎优化：使您的网站更易于搜索引擎抓取和编入索引的过程；也可指从事搜索引擎优化的人员的职位名称，例如：我们刚刚聘请了新的 SEO 来提升我们在网络上的曝光度。

#### 您的网站是否已显示在 Google 搜索结果中？

**确定您的网站是否在 Google 的索引中** - 请为您网站的首页网址执行“site:”搜索。如果您能看到相关结果，则表明您的网站在索引中。例如，搜索“site:wikipedia.org”将会返回[这些结果](https://www.google.com/search?q=site:wikipedia.org)2。

**如果您的网站不在 Google 中** - 虽然 Google 可抓取数十亿网页的内容，但遗漏部分网站也在所难免。造成抓取工具遗漏网站的常见原因如下：

* 网站未与网络上的其他网站紧密关联
* 您刚刚推出新的网站，Google 还没来得及抓取
* 网站的设计致使 Google 难以有效抓取其中的内容
* Google 在尝试抓取网站时遇到问题
* 您的政策阻止 Google 抓取网站

#### 如何让我的网站显示在 Google 搜索结果中？

让网站纳入 Google 搜索结果完全免费，且操作简单，甚至不需要向 Google 提交网站。Google 是一个全自动搜索引擎，它使用网页抓取工具持续抓取网页，以便查找可添加到 Google 索引中的网站。实际上，显示在 Google 搜索结果中的大多数网站都不是手动提交收录的，而是 Google 在抓取网页时找到并自动添加的。[了解 Google 如何发现、抓取和呈现网页](https://support.google.com/webmasters/answer/70897)3。

我们提供了[网站站长指南](https://support.google.com/webmasters/answer/35769)4，以帮助您构建方便 Google 处理的网站。虽然无法保证我们的抓取工具一定能够找到某个特定网站，但遵循这些指南应该可以不难让您的网站显示在我们的搜索结果中。

Google Search Console 提供了一系列工具，可以协助您向 Google 提交内容，同时监测您的网站/移动应用在 Google 搜索结果中的曝光度。如果您愿意，当 Google 在抓取您网站的过程中发现任何严重问题时，Search Console 甚至可以向您发送提醒。[注册 Search Console](https://search.google.com/search-console)5。

首先，您需要问自己以下几个有关网站的基本问题。

* 我的网站是否会显示在 Google 搜索结果中？
* 我是否为用户提供了高品质的网站内容？
* 我的本地商家是否会显示在 Google 搜索结果中？
* 我的网站内容是否能让使用各种设备的用户轻松快速地找到？
* 我的网站是否安全？

您可在 <http://g.co/webmasters>6 上找到更多入门信息

本文档其余部分介绍了如何优化您的网站以方便搜索引擎抓取（按主题整理）。您可从 <http://g.co/WebmasterChecklist>7 下载一份可打印的简要提示核对清单。

#### 您是否需要 SEO 专家？

SEO（“搜索引擎优化”）专家是指能提高网站在搜索引擎中的曝光度的专业人员。如果按照本指南学习，您应能掌握优化网站所需的足够知识。此外，您可能也会考虑聘用一位 SEO 专业人员帮助您审核网页。

聘用 SEO 是一项重大决定，这有可能改善您的网站并节省时间。在研究聘用 SEO 可能带来的益处的同时，也务必考虑到不负责任的 SEO 可能会给您的网站带来的损害。很多 SEO 及其他代理机构和顾问会为网站所有者提供实用的服务，包括：

* 审核您网站的内容或结构
* 网站开发技术建议：如托管、重定向、错误页、JavaScript 的使用
* 内容开发
* 在线业务开发活动管理
* 关键字研究
* SEO 培训
* 有关特定市场和地理位置的专业知识

在开始物色 SEO 之前，您不妨学习一些基本知识，熟悉搜索引擎的工作原理。建议您阅读本指南全部内容，尤其是以下资料：

* [Google 101：Google 如何抓取网页、将网页编入索引和呈现网页](https://support.google.com/webmasters/answer/70897)8
* [Google 网站站长指南](https://support.google.com/webmasters/answer/35769)9
* [如何聘用搜索引擎优化服务商](https://www.youtube.com/watch?v=piSvFxV_M04)10

如果您考虑聘用 SEO，那么越早聘用越好。您打算重新设计网站或启动新网站时是聘用 SEO 的最佳时机。如此一来，您和您的 SEO 就能确保网站的整体设计均便于搜索引擎处理。此外，优秀的 SEO 还能帮助您改进现有网站。

若想详细了解如何确定自己是否需要聘用搜索引擎优化服务商以及应注意哪些事项，请参阅[“您需要搜索引擎优化服务商吗？”这篇帮助中心文章](https://support.google.com/webmasters/answer/35291)11

### 帮助 Google 找到您的内容

要让网站显示在 Google 搜索结果中，首要步骤便是确保 Google 能够找到它。最好的办法是提交站点地图。站点地图是网站上的一种文件，可告知搜索引擎网站上新增了网页或有更新的网页。[详细了解如何构建和提交站点地图](https://support.google.com/webmasters/answer/156184)12。

Google 还会通过其他网页上的链接找到网页。请参阅后文“宣传您的网站”，了解如何吸引用户发现您的网站。

### 告诉 Google 不应抓取哪些页面

#### 最佳做法

**若为非敏感信息，则可以使用 robots.txt 阻止不必要的抓取**

“robots.txt”文件会告诉搜索引擎是否可以访问您网站的各个部分并执行抓取。此文件必须命名为“robots.txt”，且应位于网站的根目录下。被 robots.txt 阻止的网页也可能会被抓取，因此您应使用更安全的方法保护敏感网页。

![此图显示了 robots.txt 文件的正确位置。](https://lh3.googleusercontent.com/lgfNdtsbT9HWGIkgTKORifnpI1Hi5NbFJPDRXSDPcxQmKm1Oj7LKdu0d9uN_FqtmQQc=w510)

您可能不希望网站的某些页面被抓取，因为这些页面显示在搜索引擎的搜索结果中可能对用户无用。如果您希望阻止搜索引擎抓取您的网页，Google Search Console 可提供便捷的 robots.txt 生成器帮助您创建此文件。请注意，如果您的网站使用了子域名，并且您希望 Google 不要抓取特定子域名上的某些网页，那么您必须为该子域名单独创建一个 robots.txt 文件。若想详细了解 robots.txt，您最好参阅网站站长帮助中心内的[使用 robots.txt 文件](https://support.google.com/webmasters/answer/6062608)13指南。

[了解更多可阻止内容显示在搜索结果中的方法](https://support.google.com/webmasters/topic/4598466)14。

**应避免的做法：**

* 不要让 Google 抓取内部搜索结果页。用户不喜欢点击搜索引擎结果后却又被转到您网站上的另一个搜索结果页上。
* 允许抓取由代理服务器创建的网址。

**若为敏感信息，则请使用更安全的方法**

要阻止用户访问敏感或机密信息，Robots.txt 并不是一个适当或有效的方式。它只会告知运行良好的抓取工具不要抓取相应网页，却不会阻止您的服务器将这些网页发送给请求它们的浏览器。其中一个原因是：如果互联网上的某处（例如引荐来源网址日志）恰好存在指向这些被禁止访问的网址的链接，那么搜索引擎仍然能够引用这些网址（仅显示网址，但不显示标题或摘要）。此外，未同意遵守《漫游器排除标准》的不合规搜索引擎或流氓搜索引擎可能会违反您的 robots.txt 文件中的指令。最后，用户可能会出于好奇查看您的 robots.txt 文件中的目录或子目录，并猜测您不想让人看见的内容的网址。

在这些情况下，如果您只是希望网页不显示在 Google 中，则可使用 noindex 标记，无需担心任何用户会通过链接访问该网页。然而，为了做到真正的安全，您应该使用合适的授权方法（例如需要用户密码才能访问）或将网页从网站上彻底移除。

*

### 帮助 Google（和用户）了解您的内容

#### 让 Google 以用户视角查看网页

当 Googlebot 抓取某个网页时，它应[以普通用户查看网页的方式来查看它](https://webmasters.googleblog.com/2014/05/understanding-web-pages-better.html)15。为了实现最佳的呈现和索引编制效果，请始终允许 Googlebot 访问您网站所用的 JavaScript、CSS 和图片文件。如果您网站的 robots.txt 文件禁止抓取这些资源，则会直接影响到我们的算法呈现您的内容并将其编入索引的效果，进而导致您的网站排名降低。

**建议采取的措施：**

* [**使用“网址检查”工具**](https://support.google.com/webmasters/answer/9012289)**16。** 该工具可让您确切地了解 Googlebot 所看到的内容以及它会如何呈现这些内容，有助于您找出并修复网站上存在的许多索引编制问题。

#### 创建唯一且准确的网页标题

`<title>` 标记可告诉用户和搜索引擎特定网页的主题是什么。`<title>` 标记应放置在 HTML 文档的 `<head>` 元素中。您应该为网站上的每个网页创建一个唯一标题。

![一个突出显示了标题标记的 HTML 代码段](https://lh3.googleusercontent.com/2jAl7mGif9SNutD5lxw22e2zQSwLCX1VFxAo-XYmD_Ll0ZO-WIKKRnP9UqzGVYImuYtM=w300)

#### 创建恰当的标题和摘要以在搜索结果中显示

如果您的文档会显示在搜索结果页中，则 title 标记的内容可能会显示在相应结果的第一行（如果您不熟悉 Google 搜索结果的各个组成部分，不妨观看[搜索结果解析视频](https://www.youtube.com/watch?v=MOfhHPp5sWs) (The anatomy of a search result)17。

首页标题可列出网站/商家的名称，并可包含其他重要信息，例如商家的实际营业地点或主营业务/产品。

**最佳做法**

**准确描述网页内容**

选择一个读起来自然且能有效传达网页内容主题的标题。

**应避免的做法：**

* 选择与网页内容无关的标题。
* 使用默认或模糊标题，例如“无标题”或“新增网页 1”。

**为每个网页创建唯一专用标题**

网站上的每个页面最好具有唯一专用标题，这有助于 Google 了解该页面与您网站上其他页面的区别。如果网站具有独立的移动版网页，也请为移动版网页使用恰当的标题。

**应避免的做法：**

* 为网站所有页面或大量页面使用单一标题。

**使用简短但描述准确的标题**

标题应简短而信息丰富。如果标题太长或被认为不太相关，那么 Google 可能只会显示其中的一部分或在搜索结果中自动生成的标题。Google 还可能根据用户的查询或搜索时所用设备显示不同的标题。

**应避免的做法：**

* 使用对用户来说不实用的冗长标题。
* 在标题标记中填充不需要的关键字。

#### 使用“description”元标记

网页的说明元标记可让 Google 和其他搜索引擎了解该网页的大致内容。网页的标题可以是几个词或一个短语，而网页的说明元标记则可以是一两个句子或是一小段话。与 `<title>` 标记一样，说明元标记也位于 HTML 文档的 `<head>` 元素中。

![一个突出显示了描述标记 \<meta>\</meta> 的 HTML 代码段](https://lh3.googleusercontent.com/65_5X4ctSxWiC_97Qeb9CaZvMyxnoKB_T29T7xtP4LPYowROhKzL9-g31zVlq59JmPHJ=w300)

**说明元标记有哪些好处？**

说明元标记很重要，因为 Google 可能会将其用作您网页的摘要。请注意，我们说的是“可能”，因为 Google 也可能选择使用网页可见文本的相关部分（如果该部分能很好地匹配用户查询的话）。为每个网页添加说明元标记从来都是非常好的做法，以防 Google 找不到要在摘要中使用的恰当文字。您不妨去网站站长中心博客看看，其中有[通过更合适的 description 元标记改进搜索结果摘要](http://googlewebmastercentral.blogspot.com/2007/09/improve-snippets-with-meta-description.html) (improving snippets with better description meta tags)18 和[为用户提供更合适的搜索结果摘要](https://webmasters.googleblog.com/2017/06/better-snippets-for-your-users.html) (better snippets for your users)19 等多篇实用博文。帮助中心也不乏[如何创建良好的标题和摘要](https://support.google.com/webmasters/answer/35624)20这样的实用内容。

![与“baseball cards”相关的纯蓝色链接式搜索结果示例](https://lh3.googleusercontent.com/e8E_nJoEuJQpTGAkYbA9lJ-Q0F7OeZujctlt853e-_2P6ChmDhgrxzWZa33uBSFCXw8=w350)

**最佳做法**

**准确总结网页内容**

如果您的说明元标记可在搜索结果中以摘要形式向用户显示，则请编写一份既能告知用户相关信息又能引起用户兴趣的说明。虽然说明元标记中的文本没有最少或最多字数限制，但建议您确保其长度足以完全显示在搜索结果中（请注意，用户可能会看到不同大小的摘要，具体取决于用户搜索时所用的方式和设备），并且包含用户确定该网页是否有用以及是否与其搜索内容相关所需的所有相关信息。

**应避免的做法：**

* 编写与网页内容无关的说明元标记。
* 使用“这是一个网页”或“与棒球卡相关的网页”等通用说明。
* 仅使用关键字填写说明。
* 将整个文档复制并粘贴到说明元标记中。

**为每个网页使用唯一的说明**

为每个网页使用不同的说明元标记对用户和 Google 都有帮助，尤其是当用户的搜索可能会使您网域上的多个网页显示在搜索结果中时（例如，使用 `site:` 运算符进行搜索）。如果您的网站有数千个甚至数百万个网页，那么手动构建说明元标记的方式可能不可行。在这种情况下，您可以根据每个网页的内容自动生成说明元标记。

**应避免的做法：**

* 为网站所有页面或大量页面使用单一说明元标记。

#### 使用标题标记强调重要文字

由于标题标记中的文字往往比网页上的普通文字大，这种视觉提示可告知用户这些文字很重要，并可帮助用户了解标题文字下面的内容类型。按顺序使用多种大小的标题可为您的内容创建层次结构，便于用户浏览文档。

**最佳做法**

**设想您正在编写大纲**

与为大型文章编写大纲相似，您可以想想网页内容的要点和次要点是什么，这将有助于决定在何处使用标题标记。

**应避免的做法：**

* 在标题标记中放置对定义网页结构无用的文字。
* 在 `<em>` 和 `<strong>` 等其他标记更合适的地方使用标题标记。
* 毫无规律地使用不同大小的标题标记。

**在网页上谨慎使用标题**

应在合适的位置使用标题标记，因为如果网页上的标题标记过多，用户将难以浏览内容，也难以确定主题的起止位置。

**应避免的做法：**

* 在网页上过度使用标题标记。
* 标题过长。
* 仅出于为文字添加样式（而非为了呈现结构）的目的使用标题标记。

#### 添加结构化数据标记

[结构化数据](https://developers.google.com/search/docs/guides/intro-structured-data)21是可添加到网站页面中的代码，用于向搜索引擎描述内容，以便搜索引擎更好地了解网页上的信息。搜索引擎可以利用这类信息在搜索结果中以有用的（且吸引用户的）方式显示您的内容。这也有助于您吸引到适合您业务的客户。

![此图显示了一条因具有评价星级（通过使用结构化数据实现）而显得比较醒目的搜索结果。](https://lh3.googleusercontent.com/xdiS_kHu0WVaH0lfWRjs78vYG1esJ297aPIDCoBwVx6g1Zm8Oa9EHUit2A4yfkiCfv0=w527)

例如，如果您有一个网店并且标记了一个单独的产品页面，这将帮助我们了解该页面主要显示自行车、自行车价格以及客户评价。我们可能会在相关查询的搜索结果的摘要中显示这些信息。我们将其称之为“富媒体搜索结果”。

除了使用结构化数据标记来实现富媒体搜索结果外，我们还可能会使用结构化数据来提供其他格式的相关结果。例如，如果您拥有一家实体店，标记营业时间可让潜在客户在需要时准确找到您，并能让他们知道在他们搜索之时您的店是否在营业。

![与冰淇淋店相关的 Google 搜索结果，显示了由结构化数据实现的富媒体搜索结果。](https://lh3.googleusercontent.com/IuoQrJBjUNsrOHmuHAQ99ehEiX6zCR2NZLl_2wZFkUkSjyotostXtkc2uIqDQgbieEI=w675)

您可以标记许多与业务相关的实际信息：

* 所销售的产品
* 营业地点
* 与产品或业务有关的视频
* 营业时间
* 活动信息
* 食谱
* 贵公司的徽标等等！

[在我们的开发者网站中查看受支持的内容类型的完整列表](https://developers.google.com/search/docs/guides/search-gallery)22。

我们建议您使用结构化数据和任何受支持的符号标记来说明您的内容。您可在网页的 HTML 代码中添加标记，也可使用[数据标注工具](https://www.google.com/webmasters/tools/data-highlighter)23和[结构化数据标记助手](https://www.google.com/webmasters/markup-helper/)24等工具（要详细了解这些工具，请参阅“最佳做法”部分）。

**最佳做法**

**利用富媒体搜索结果测试来检查标记**

标记完内容后，您可以利用 [Google 富媒体搜索结果测试](https://search.google.com/test/rich-results)25来确保整个实现过程无误。您可以输入内容所在的网址，也可以复制包含标记的实际 HTML 代码。

**应避免的做法：**

* 使用无效标记。

**使用数据标注工具**

如果想在不更改网站源代码的情况下尝试给出结构化标记，则可以使用数据标注工具，这是一款集成在 Search Console 中的支持一系列内容类型的免费工具。

如果想准备好标记代码以复制并粘贴到您的网页中，您可以尝试使用结构化数据标记助手工具。

**应避免的做法：**

* 在对标记实现还没有把握的情况下更改网站的源代码。

**跟踪已标记页面的表现**

Search Console 中提供的各种[“富媒体搜索结果”报告](https://support.google.com/webmasters/answer/7552505)26会显示以下信息：我们在您网站上检测到了多少个带有特定类型标记的页面、它们在搜索结果中出现了多少次，以及用户在过去 90 天内点击了它们多少次。该报告还会显示我们检测到的所有错误。

**应避免的做法：**

* 添加用户无法看不到的标记数据。
* 制作虚假评论或添加无关标记。

### 管理您的网页在 Google 搜索结果中的显示效果

如果向网页中添加正确的结构化数据，还能使网页有资格使用搜索结果中的许多特殊功能，包括评价星标、外观精美的搜索结果等。[查看您的网页有资格使用的搜索结果类型库](https://developers.google.com/search/docs/guides/search-gallery)27。

*

### 组织您的网站层次结构

#### 了解搜索引擎如何使用网址

搜索引擎需要每部分内容都有一个独一无二的网址，以便能够抓取该内容并将其编入索引，从而在用户搜索时向他们呈现这些内容。不同内容（例如某个商店中的不同产品）以及修改后的内容（例如某内容的翻译版本或地区性版本）需要使用单独的网址才能在搜索结果中得到恰当的展示。

网址通常分为多个不同的部分：

`<协议>://<主机名>/<路径>/<文件名>?<查询字符串>#<片段>`

例如：

`https://www.example.com/RunningShoes/Womens.htm?size=8#info`

Google 建议所有网站尽可能都使用 https\://。主机名是网站的托管之处，通常所使用的域名与您用于电子邮件的域名相同。Google 会区别对待包含“www”的版本或不包含“www”的版本（例如“[www.example.com”或仅仅是“example.com”）。将网站添加到](http://www.example.com”或仅仅是“example.com”）。将网站添加到) Search Console 时，建议您同时添加以 http\:// 开头的版本和以 https\:// 开头的版本，以及包含“www”的版本或不包含“www”的版本。

路径、文件名和查询字符串决定了要访问服务器上的哪些内容。这三个部分区分大小写，因此，使用“FILE”与使用“file”将得到不同的网址。主机名和协议不区分大小写，因为大小写不会产生任何影响。

片段（本例中为“`#info`”）通常用于标识浏览器应滚动到页面的哪个部分。由于不管片段是什么，内容本身通常是一样的，因此，搜索引擎常常会忽略所使用的片段。

指向首页时，主机名后的结尾斜线是可选的，因为有无该斜线都将指向相同的内容（“<https://example.com/”与“https://example.com”的效果相同）。对路径和文件名而言，结尾斜线的存在与否将产生不同的网址（斜线可指明是文件还是目录），例如，“https://example.com/fish”与“https://example.com/fish/”并不相同。>

#### 导航对搜索引擎非常重要

网站导航对于帮助访问者快速找到所需内容非常重要，它也可以帮助搜索引擎了解哪些是网站站长认为重要的内容。虽然 Google 的搜索结果是在页面级别提供的，但 Google 也希望了解页面在网站这个更大层面上的角色。

![此示例展现了一个非常实用的网站网页层次结构。](https://lh3.googleusercontent.com/FkXf1NMLRBDRD0-82WWHYCu7_nHxCzkUaMDFDAuGiFRYIrtgO3wqSJdtSFhpnyu3yeE=w314)

#### 根据首页规划导航

所有网站都有首页或“根”网页，这通常是网站上很多访问者最常访问的页面，是他们在网站中导航的起点。除非您的网站只有极少量的页面，否则您应该考虑访问者将如何从一个内容宽泛的页面（根网页）转到包含更加具体的内容的页面。围绕特定主题的页面是否多到需要创建一个页面来介绍这些相关的页面（例如，根网页 -> 相关主题列表 -> 特定主题）？您是否有数百种不同的产品，需要分类到多个类别页面和子类别页面中？

#### 使用“面包屑导航列表”

面包屑导航是位于页面顶部或底部的一行内部链接，可让访问者快速返回上一版块或根网页。许多面包屑导航都将内容最宽泛的页面（通常为根网页）设置为最左边的首个链接，并在右侧列出更具体的部分。我们建议在显示面包屑导航路径时使用[面包屑导航结构化数据标记](https://developers.google.com/search/docs/data-types/breadcrumbs)28。

![一个采用面包屑导航列表（表明了当前的网页层次结构）的网站。](https://lh3.googleusercontent.com/iRXf8tJ7BTCs_Uwd4U2TgIKTXp_KOP8B-HGo-oqQ4ktQWdVQXKeZZbglL0QxOk6sdg=w650)

#### 为用户创建简洁的导航页

导航页是网站上显示网站结构的一个简单页面，通常包含网站页面的分层列表。如果在网站上查找页面时遇到问题，访问者可能会访问此页面。虽然搜索引擎也会访问此页面，以便使抓取范围尽量覆盖网站的全部页面，但其主要对象还是人类访问者。

**最佳做法**

**创建自然流畅的层次结构**

让用户尽可能方便地从网站上的宽泛内容转到他们所需的更加具体的内容。在必要时增加导航页，并有效地将这些纳入到内部链接结构中。确保网站上的所有页面都可通过链接访问，并且不需要内部“搜索”功能便可找到。在适当情况下，链接到相关的页面，方便用户发现相似的内容。

**应避免的做法：**

* 创建复杂的导航链接网页，例如将网站上的每个页面链接到其他页面。
* 过度拆分内容（以至于从首页点击 20 次后才能访问目标内容）。

**使用文字进行导航**

通过文字链接控制网站页面之间的大部分导航，可使搜索引擎更容易抓取和理解您的网站。使用 JavaScript 创建页面时，请使用“a”元素，将网址用作“href”属性值，并在页面加载时生成所有菜单项，而不是等待用户互动时生成。

**应避免的做法：**

* 创建完全以图片或动画为基础的导航。
* [导航需要使用以脚本或插件为基础的事件处理功能](https://support.google.com/webmasters/answer/72746)29。

**为用户创建导航页，为搜索引擎创建站点地图**

为方便用户使用，您可以为整个网站或最重要的页面（如果您有成百上千个页面）提供一个简洁的导航页。同时，创建一个 XML 站点地图文件，确保搜索引擎能够发现网站上的新增页面和更新页面，文件中要列出所有相关网址及其主要内容的最后修改日期。

**应避免的做法：**

* 任由导航页内容过期、链接损坏。
* 创建一个只是简单罗列页面而不加以整理（例如按主题）的导航页。

**显示实用的 404 页面**

用户偶尔会因点击损坏的链接或输入错误的网址而转到您网站上不存在的网页。使用[自定义 404 页面](https://support.google.com/webmasters/answer/93641)30能够有效引导用户返回到您网站上的正常页面，从而大幅提升用户的体验。404 页面最好包含可以返回根网页的链接，还可以提供指向您网站上热门内容或相关内容的链接。您可以使用 Google Search Console 找出[导致“未找到”错误的网址来源](http://googlewebmastercentral.blogspot.com/2008/10/webmaster-tools-shows-crawl-error.html)31。

**应避免的做法：**

* 允许搜索引擎将您的 404 页面编入索引（确保您的网络服务器配置为：当请求访问不存在的页面时，返回 404 HTTP 状态代码；如果是使用 JavaScript 的网站，则包含 noindex 漫游器元标记）。
* 通过 robots.txt 文件阻止抓取 404 页面。
* 仅提供模糊的消息，例如“未找到”、“404”或根本没有 404 页面。
* 404 页面使用的设计与网站其他部分的设计不一致。

#### 简洁网址易于传达内容信息

为网站上的文档创建描述性类别和文件名，不仅可以帮助您更好地组织网站，而且可以为希望链接到您的内容的用户创建更简单、“更友善”的网址。如果网址极为冗长，含义模糊，并且包含很少的可识别字词，访问者可能会被吓到。

下图所示的网址便不够友善，并且可能会让人感到困惑。

![一个包含无意义的数值式网页名称的网址。](https://lh3.googleusercontent.com/-q9fz6oVjaQTHoL8-7UF2R1BDfjw00L2p5o_qEsyH4IFzdztiZxQ4NaYhxB5ng8Y1A=w650)

如果您的网址有明确的含义，则该网址在不同上下文中都可能会更实用且更易于理解。

![此图显示了一个包含实用且易懂的网页名称的网址。](https://lh3.googleusercontent.com/G_1pinBbx2TX_v-X2_OTeArfQI2gHvDPjLxOBePvEBgeqkM3Rn7x8L8SgImJc070QBE=w650)

#### 网址会显示在搜索结果中

最后需要注意的是，文档的网址通常显示在文档标题下方的 Google 搜索结果中。

Google 擅长抓取所有类型的网址结构（即使它们相当复杂），但花时间尽量让您的网址变得简单才是上策。

**最佳做法**

**在网址中使用字词**

若网址具有与网站内容以及结构相关的字词，则对浏览您网站的访问者来说更为友善。

**应避免的做法：**

* 使用含有不必要的参数和会话 ID 的冗长网址。
* 使用普通的网页名称，例如“page1.html”。
* 使用过多的关键字，例如“baseball-cards-baseball-cards-baseballcards.htm”。

**创建简单的目录结构**

使用可有效组织内容的目录结构，让访问者轻松知晓其在网站上的位置。尝试使用目录结构指明在该网址中找到的内容类型。

**应避免的做法：**

* 具有深层嵌套的子目录，例如“…/dir1/dir2/dir3/dir4/dir5/dir6/page.html”。
* 使用与其内容无关的目录名称。

**提供一个版本的文档访问网址**

为防止将某些用户链接到相应网址的一个版本而将其他用户链接到另一版本（这可能会导致在这两个网址之间拆分该内容的声誉），请确保在网页结构和内部链接中使用和引用 1 个网址。如果您确实发现用户在通过多个网址访问相同的内容，那么设置一个从非首选网址到主导网址的 [301 重定向](http://support.google.com/webmasters/answer/93633)32是一个很好的解决方案。如果无法重定向，您还可使用规范网址或 [rel="canonical"](https://support.google.com/webmasters/answer/139066)33 link 元素。

**应避免的做法：**

* 让子域和根目录的网页访问相同内容，例如“domain.com/page.html”和“sub.domain.com/page.html”。

### 优化您的内容

#### 让网站有趣且实用

创建吸引力与实用性兼具的内容对您网站的影响可能比这里讨论的其他任何因素都大。用户看到此类内容便知道其是优质内容，并且可能乐意推荐其他用户访问此类内容。他们可能通过博文、社交媒体服务、电子邮件、论坛或其他方式进行推荐。

自然的口碑有助于您的网站在用户和 Google 中建立声誉，而没有优质的内容很少能够产生自然的口碑。

![如果您创作了有趣的新内容，其他网站就可能会以链接的形式向用户推荐此内容。](https://lh3.googleusercontent.com/DkplPJOMr83QiKJqfOxYW3KA4_ypm_OHoOEbR0catg24TTzgEQFIgf3sMQnasWIGcK8=w419)

#### 了解读者所想（并向他们提供所需信息）

思考用户找到您的内容时可能用到的搜索字词。与对相关主题比较陌生的用户相比，非常了解该主题的用户可能在搜索查询中使用不同的关键字。例如，资深足球迷可能会搜索 \[fifa]（Fédération Internationale de Football Association 的缩写），而新粉丝则可能会使用更为常规的查询，如 \[足球季后赛]。在撰写内容时（通过搭配使用恰当的关键字词组）预测搜索行为的这些差异并将其纳入考虑范围内，可能会产生积极的影响。Google Ads 提供了便利的[关键字规划师](https://ads.google.com/home/tools/keyword-planner/)34工具，该工具可帮助您发现新的关键字变体并了解每个关键字的大概搜索量。此外，Google Search Console 提供了[“效果”报告](https://support.google.com/webmasters/answer/7576553)35，以方便您查看会使您的网站显示在搜索结果中的热门搜索查询以及为您的网站带来最多用户的搜索查询。

考虑创建一项还没有其他网站提供的实用新服务。您还可以撰写原创研究内容，爆料吸引眼球的新闻报道，或利用您的独特用户群。其他网站可能缺乏这样做的资源或专业知识。

**最佳做法**

**撰写简单易懂的文字**

用户喜欢文笔优秀、易于理解的内容。

**应避免的做法：**

* 编写的文章马虎草率，有许多拼写和语法错误。
* 文笔欠佳。
* 在图片和视频中嵌入文本：用户可能想复制和粘贴文本，但搜索引擎无法读取该文本。

**合理安排主题结构**

合理安排内容结构总是有好处的，以便访问者清楚地知道内容主题从何处开始、另一内容主题从何处结束。将内容划分为符合逻辑的多个语块或部分，可帮助用户更快地找到他们想要的内容。

**应避免的做法：**

* 将大量不同主题的文字堆砌到网页上，不分隔段落、子标题或布局。

**创建新鲜独特的内容**

新内容不仅可以让现有访问者群体回头访问，还能吸引新访问者。

**应避免的做法：**

* 稍加改动（甚至复制）几乎不能为用户带来额外价值的现有内容。
* 网站上到处是重复或近似重复的内容。

[详细了解重复内容](https://support.google.com/webmasters/answer/66359)36

**针对用户而非搜索引擎优化内容**

根据访问者的需求设计网站并确保网站易于搜索引擎访问通常会产生积极的影响。

**应避免的做法：**

* 插入许多针对搜索引擎的不必要关键字，但这些关键字让用户感到厌烦或对他们毫无意义。
* 含有“用于访问此网页的频繁拼写错误”等对用户几乎没有价值的文本块。
* [以欺骗手法对用户隐藏文字](https://support.google.com/webmasters/answer/66353)37，但对搜索引擎显示这类文字。

#### 以建立用户信任为目标

如果用户认为您的网站可靠，就会愿意访问。

声誉良好的网站的可信度较高。增强网站的声誉，使其在特定领域具有专业性和权威性。\
向用户说明您网站的发布商、提供相关内容的人员以及该网站的目标。购物网站和其他金融交易网站应提供清晰且令人满意的客户服务信息，以帮助用户解决问题。新闻网站应该向用户明确地说明谁对相关内容负责。

使用适当的技术也很重要。如果购物结算页上没有安全的连接，用户便无法信任该网站。

#### 彰显专业性和权威性

网站的专业性和权威性越强，其质量就越高。确保您网站上的内容是由相关主题的专家创作或编辑的。例如，提供专家的信息或信息丰富的资源可以帮助用户理解文章的专业知识。在网页中展示对科学主题广泛达成的共识是一种非常好的做法（如果此类共识存在的话）。

#### 提供适量内容来阐明您的主题

制作优质内容至少需要以下其中一项：时间、精力、专业知识和才能/技能。内容应该准确无误、文笔清晰并且全面。例如，如果您在网页中描述了一个食谱，请提供易于理解的完整食谱，而不只是菜肴的一组配料或基本描述。

**应避免的做法：**

* 提供不足以阐明网页用途的内容。

#### 避免投放会分散用户注意力的广告

我们希望用户能看到广告。但是，您不应该让广告分散用户注意力或妨碍他们使用网站内容。例如，让用户难以使用网站的广告、补充内容或插页（在用户希望看到的内容之前或之后显示的页面）。[详细了解此主题](https://www.thinkwithgoogle.com/marketing-resources/better-ad-standards/)38。

**应避免的做法：**

* 在您的网页上投放会分散用户注意力的广告。

#### 明智地使用链接

**撰写优质链接文字**

链接文字是链接内的可见文字。这类文字会告诉用户和 Google 有关您将链接到的网页的信息。您网页上的链接可能是内部链接，即指向您网站上的其他网页，也可能是外部链接，即引向其他网站上的内容。在这两种情况下，定位文字越优质，用户越容易浏览，Google 也越容易了解将链接到的网页上的内容。

![一个意在推荐您网站上的实用链接文字的图表。](https://lh3.googleusercontent.com/kJ9Hr6MZ3i8pG7U0v40uFT4NV1Ys7TEcG4fkLOhq6E1sUJY9UoUyWHoMj0uRGaiwxzl1=w557)

使用适当的定位文字可让用户和搜索引擎轻松了解链接页所包含的内容。

**最佳做法**

**选择描述性文字**

您用于链接的定位文字应至少提供对链接到的网页的基本说明。

**应避免的做法：**

* 使用普通的定位文字，如“网页”、“文章”或“点击此处”。
* 使用与主题或链接到的网页的内容无关的文字。
* 在多数情况下将网页的网址用作定位文字。虽然将网页的网址用作定位文字当然也合情合理，如宣传或引用新网站的地址。

**文字简明扼要**

尽量使用简短但具有描述性的文字 - 通常是几个字或一个短语。

**应避免的做法：**

* 撰写很长的定位文字，如一个长句或一小段文字。

**设置链接格式，让链接容易识别**

让用户能够轻松区分常规文本和链接的定位文字。如果用户没有看到链接或意外点击了它们，您内容的实用性将降低。

**应避免的做法：**

* 使用 CSS 或文本样式，让链接看起来像常规文本。

**将内部链接的定位文字也纳入考虑范围**

通常，您可能会考虑链接能否正常指向外部网站的问题，但加大对用于内部链接的定位文字的关注可帮助用户和 Google 更好地在您的网站中导航。

**应避免的做法：**

* 只针对搜索引擎使用关键字泛滥的定位文字或冗长的定位文字。
* 创建不利于用户在网站中导航的不必要链接。

**注意所链接到的网站**

您将自己的网站链接至其他网站时，这些网站会沾您的声誉的光。有时，用户会通过在您网站的评论版块或留言板中添加自己网站的链接来利用这一点。再或者，有时您提及某个网站的方式可能会给其带来负面的影响，但同时您又不希望它因为您的网站的声誉而跟着沾光。例如，假设您正在撰写关于垃圾评论的博文，并且想引用一个最近对您的博客发表了垃圾评论的网站。您想提醒其他人提防该网站，因此，您在自己的内容中加入了指向该网站的链接；但是，您当然不希望这样的链接造成该网站因为您的声誉而跟着沾光。这时候就非常适合使用 nofollow。

再举一个例子，在应对小部件链接时，“nofollow”属性就会是一个得心应手的工具。如果您使用了第三方小部件以丰富网站的体验及吸引用户，请检查该小部件是否包含您不想随其一起放到网站上的链接。某些小部件可能会向您的网站添加链接，而这些链接并不属于您希望向用户展示的编辑精选内容，这类小部件还可能包含您作为网站站长可能无法控制的定位文字。如果无法从小部件中移除这类垃圾链接，您随时可以使用“nofollow”属性来停止跟踪这些链接。如果您为自己提供的功能或内容创建小部件，请务必在默认代码段中将 nofollow 包含在链接中。

最后，如果您不希望搜索引擎跟踪页面中的所有链接，您可以在该页面的 `<head>` 标记中添加 `<meta name="robots" content="nofollow">` 标记来实现这一点。您可[在网站站长博客内详细了解漫游器元标记](https://webmasters.googleblog.com/2007/03/using-robots-meta-tag.html)39。

**使用“nofollow”应对垃圾评论**

如果将一个链接的“rel”属性的值设置为“nofollow”，就等于告诉 Google 不要跟踪您网站上的该链接，该链接指向的网页也不能沾您网页的声誉的光。要想让搜索引擎不跟踪一个链接，需要在该链接的定位文字中添加 rel="nofollow"，如下所示：

`<a href="http://www.example.com"`` `**`rel="nofollow"`**`>此处为定位文字</a>`

什么时候适合使用此标记？如果您网站上的博客启用了公开评论功能，那么这些评论中的链接可能会将您的声誉传递给某些您可能不愿意为其背书的网页。网页上的博客评论区域很容易出现垃圾评论。不跟踪该区域中用户添加的链接可确保您的网页来之不易的声誉被垃圾网站沾光。

![此图显示了一条包含外部链接的用户评论。](https://lh3.googleusercontent.com/OIdXcVtnsrmHLXym120A-WH6u1hwO6guBWNaPz7COSPAHTaK7IcOnfFvf-F4ulySYQ=w599)

**自动将“nofollow”添加到评论栏和留言板**

许多博客软件包会自动指示搜索引擎不跟踪用户评论中的链接，但那些不提供此功能的博客软件包很可能可以通过手动编辑的方式实现不跟踪。此建议也适用于您网站上可能涉及用户生成的内容的其他区域，例如留言簿、论坛、留言板、引荐来源网址列表等。如果您愿意为第三方添加的链接背书（例如，如果在您的网站上某评论是可信的），则无需针对链接使用 nofollow；但链接到 Google 认为是垃圾网站的网站可能会影响您自己网站的声誉。网站站长帮助中心提供了[更多与如何避免垃圾评论相关的提示](https://support.google.com/webmasters/answer/81749)40，例如，使用人机识别系统以及启用评论审核功能。

![此图显示了一个 CAPTCHA（人机识别系统）弹出式窗口](https://lh3.googleusercontent.com/zaP4cQILTJ-tz2ejO5t2Y-GiR8Mq-zrBbmrHHR2U0_mOPPXaf9s0hUV3KubIkSunfRGj=w350)

### 优化您的图片

#### 使用“alt”属性

为图片提供描述性文件名和 alt 属性说明。“alt”属性允许您为图片指定替代文字，在图片由于某种原因不能显示时起到救场的作用。

![此图说明了出色的图片替代文字的实用性。](https://lh3.googleusercontent.com/eN2M5XXdOXP65rSV_Jwh7zXhrpumCybURa49rEtMNgeh-5FzoNFASEJ2RTtF_ryLIZ-e=w317)

为什么使用此属性？如果用户使用辅助技术（如屏幕阅读器）查看您的网站，则 alt 属性的内容会提供关于图片的信息。

另一个原因是，如果您将图片用作链接，则该图片的替代文字会等同于文字链接的定位文字。但是，如果文字链接可以起到相同的作用，我们建议不要在网站的导航中为链接使用太多图片。最后，优化图片文件名和替代文字可使图片搜索项目（如 Google 图片搜索）更好地理解您的图片。

**最佳做法**

**使用简短但具有描述性的文件名和替代文字**

和网页上被视为优化对象的许多其他部分一样，简短但具有描述性的文件名和替代文字是最理想的。

**应避免的做法：**

* 在可能的情况下使用“image1.jpg”、“pic.gif”、“1.jpg”等宽泛的文件名（如果您的网站有数千张图片，您可能希望将图片的命名工作自动化）。
* 文件名非常长。
* 替代文字中充斥着关键字，或复制粘贴整个句子来作为替代文字。

**使用图片作为链接时提供替代文字**

如果您决定使用图片作为链接，同时提供替代文字可帮助 Google 更深入地了解您链接到的网页。这就像您为文字链接撰写定位文字一样。

**应避免的做法：**

* 撰写会被认为是垃圾内容的超长替代文字。
* 网站导航仅使用图片链接。

#### 帮助搜索引擎找到图片

[图片站点地图](https://support.google.com/webmasters/answer/178636)41可为 Googlebot 提供更多与在您网站上找到的图片有关的信息。这样能够提高在图片搜索结果中看到您的图片的可能性。该文件的结构与您网页的 XML 站点地图文件类似。

#### 使用标准图片格式

使用普遍支持的文件类型 - 大多数浏览器支持 JPEG、GIF、PNG、BMP 和 WebP 图片格式。另外，最好让文件扩展名与文件类型相匹配。

*

### 构建适合移动设备的网站

当今世界由移动设备主宰。绝大多数人都是在移动设备上使用 Google 进行搜索。桌面版网站在移动设备上可能不太容易浏览及使用。因此，拥有适合移动设备的网站是提升在线影响力的重要因素。事实上，从 2016 年年末起，[Google 已经开始尝试主要使用网站的移动版内容](https://webmasters.googleblog.com/2016/11/mobile-first-indexing.html)42进行排名、解析结构化数据及生成摘要。

**了解设备之间的差异**

* **智能手机**：在本文档中，“移动”或“移动设备”指智能手机，例如运行 Android 系统的手机、iPhone 或 Windows Phone。虽然移动设备的屏幕尺寸较小，且在几乎所有情况下，其默认屏幕方向为纵向，但移动浏览器与桌面浏览器类似，都可以呈现各种 HTML5 规格的网页。
* **平板电脑**：我们将平板电脑视为一个单独的设备类别，因此在提及移动设备时，通常不包括平板电脑。相对而言，平板电脑的屏幕要大一些。这意味着，除非您提供针对平板电脑进行了优化的内容，否则用户通过平板电脑浏览网站时，还是希望看到桌面浏览器的显示方式，而非智能手机浏览器的显示方式。
* **多媒体手机**：这类手机采用的浏览器可呈现符合 XHTML 编码标准的网页；支持 HTML5 标记、JavaScript/ECMAscript，但可能不支持某些采用 HTML5 标准的扩展程序 API。这通常指的是大多数带有 3G 功能的手机（非智能手机）中的浏览器。
* **功能手机**：这类手机采用的浏览器无法呈现使用标准 HTML 进行编码的标准桌面版网页，其中包括仅呈现使用 cHTML (iMode)、WML、XHTML-MPF 等语言进行编码的网页的浏览器。

我们的建议主要针对智能手机，但我们鼓励多媒体版和功能手机版网站的所有者在认为合适时也遵循这些建议。

#### 选择移动策略

有多种方法可以让您的网站适合移动设备，并且 Google 也支持不同的实现方法：

* [自适应设计](https://developers.google.com/search/mobile-sites/mobile-seo/responsive-design)43（推荐）
* [动态提供内容](https://developers.google.com/search/mobile-sites/mobile-seo/dynamic-serving)44
* [单独的网址](https://developers.google.com/search/mobile-sites/mobile-seo/separate-urls)45

创建完适合移动设备的网站后，您可以通过 [Google 的移动设备适合性测试](https://search.google.com/test/mobile-friendly)46检验您网站上的网页是否满足在 Google 搜索结果页面上被标记为“适合移动设备”的条件。您还可以查看 [Search Console 的“在移动设备上的易用性”报告](https://www.google.com/webmasters/tools/mobile-usability)47，以修正会对您网站在移动设备上的易用性造成影响的问题。

如果您的网站在多个网页上提供大量静态内容（如博文或商品着陆页），请考虑使用 [AMP](https://www.ampproject.org/)48 (Accelerated Mobile Pages) 实现静态内容。AMP 是一种特殊的 HTML，可确保您的网站保持较快速度并方便用户使用，并可以通过各种平台（包括 Google 搜索）进一步加速。

#### 配置移动网站，以便网站被准确编入索引

无论您选择哪种配置来设置您的移动网站，都需要注意以下几点：

1. 如果您使用动态提供内容或拥有单独的移动网站，当网页采用适合移动设备的格式时（或当网页拥有所用格式适合移动设备的对等网页时），请告知 Google。这有助于 Google 在搜索结果中准确地向移动设备搜索用户提供内容。
2. 如果您使用自适应设计，请使用 meta name="viewport" 标记告诉浏览器如何调整内容。如果您使用动态提供内容，请使用 Vary HTTP 标头，根据用户代理来指示您所做的更改。如果您使用单独的网址，请使用具有 rel =“canonical” 和 rel =“alternate” 元素的 \<link> 标记来表示两个网址之间的关系。
3. 确保资源可供抓取。屏蔽网页资源会致使 Google 无法了解您网站的全貌。当您的 robots.txt 文件阻止对某些或所有网页资源进行访问时，通常会发生这种情况。如果 Googlebot 无法访问某个网页的资源（如 CSS、JavaScript 或图片），那么我们可能无法检测出该网页是专门为了在移动设备浏览器中正常显示和运行而构建的。也就是说，我们可能无法检测出这是“适合移动设备”的网页，因而无法以适当的方式向移动设备搜索用户提供该网页。
4. 避免出现会阻碍移动设备访问者访问网页的常见错误，比如存在无法播放的视频（在将 Flash 视频作为网页的重要内容时就会出现这种情况）。
5. 如果移动版网页无法提供令人满意的搜索体验，那么在移动搜索结果中的排名便会下降，或是在移动搜索结果中显示时伴有警告。这类情况包括但不限于，移动设备上会妨碍用户体验的[全页插页式广告](https://webmasters.googleblog.com/2016/08/helping-users-easily-access-content-on.html)49。
6. 在所有设备上提供所有功能。移动用户希望网站在移动设备上提供和在其他设备上一样的功能（如发布评论和查看）及内容。除了文字内容，确保所有重要图片和视频都已经嵌入移动版本并且用户能通过移动设备访问。对于搜索引擎，在所有版本的网页上提供所有结构化数据和其他元数据（例如标题、说明、link 元素和其他元标记）。
7. 确保移动网站上也包含桌面版网站上所有的结构化数据、图片、视频和元数据。

**最佳做法**

* 使用[移动设备适合性测试](https://search.google.com/test/mobile-friendly)50测试您的移动版网页，看看 Google 是否认为您的网站适合在移动设备上浏览。
* 如果您的移动版网页有单独的网址，请务必对移动版网址和桌面版网址都进行测试，以确保 Google 可以识别并抓取相关重定向。

[有关详情，请参阅 Google 的移动设备适合性指南](https://developers.google.com/search/mobile-sites/)51。

### 推广您的网站

随着人们通过搜索或其他方式发现您的内容并链接到您的网站，大多数连接至您网站的链接都逐渐添加至您的网站，Google 理解您希望其他人能够了解您为自己网站上的内容所付出的努力。有效推广新内容能够让对同一主题感兴趣的人更快发现您的内容。与本文中提及的大部分建议一样，极端地采取这些建议实际上可能会损害您网站的声誉。

在网站上写一篇博文来告诉访问者群体您已经添加了新内容，是宣传新内容或服务的不错方法。关注您网站或 RSS Feed 的其他网站站长也可能会帮您继续宣传下去。

倾注精力线下推广您的公司或网站也非常有帮助。例如，如果您拥有企业网站，请确保将网址印在您的名片、信头、海报上等。您还可以通过电子邮件向客户定期发送简讯，让他们了解公司网站上的新内容。

如果您经营着一家本地商家，将商家信息添加到 [Google 我的商家](https://www.google.com/business/)52将有助于您在 Google 地图和网页搜索上吸引客户。

![Google 搜索结果示例，显示了与实体店对应的富媒体搜索结果。](https://lh3.googleusercontent.com/wXGGe452xamg85_c3dws7bOtaLdoTAefoISO8eIwH1BHrnm42PNI5bsE8-4-vr9JFUk=w400)

**最佳做法**

**了解社交媒体网站**

围绕用户互动和共享构建的网站让感兴趣人群更容易找到相关内容。

**应避免的做法：**

* 试图推广所创建的每一个小的新内容；应该推广精彩、有趣的内容。
* [对网站采用链接方案](https://support.google.com/webmasters/answer/66356)53，在这些服务中人为地置顶您的内容。

**吸引和您网站相关的社区中的用户**

很多网站上的主题很有可能与您网站上的主题相似。与这些网站建立通信通常对您有利。您的生态环境或社区中的热门话题能够激发新的内容想法或建立良好社区资源。

**应避免的做法：**

* 将链接请求不加挑选地发给与您的主题相关的所有网站。
* 从另一个网站购买链接，以提升 PageRank。

### 分析搜索效果和用户行为

#### 分析搜索效果

包括 Google 在内的主要搜索引擎会为网站站长提供免费工具来分析其在搜索引擎中的效果。Google 的工具是 [Search Console](https://www.google.com/webmasters/tools/home)54。

Search Console 可提供以下两类重要信息：Google 能够找到我的内容吗？我的网站在 Google 搜索结果中的效果如何？

使用 Search Console 并不会让您的网站获得优先待遇，但它可以帮助您发现问题，如果解决了这些问题，则有助于您的网站在搜索结果中提高排名。

通过这项服务，网站站长可以：

* 了解 Googlebot 无法抓取网站的哪个部分
* 测试及提交站点地图
* 分析或生成 robots.txt 文件
* 移除 Googlebot 已经抓取的网址
* 指定首选网域
* 使用标题和描述元标记发现问题
* 了解用来转向网站的热门搜索
* 了解 Googlebot 看到的网页外观如何
* 接收质量指南违反通知，并请求重新审核网站

微软的 [Bing 网站站长工具](https://www.bing.com/toolbox/webmaster)55也为网站站长提供免费工具。

#### 分析网站上的用户行为

如果您已经使用 Google Search Console 或其他服务改进了网站的抓取和索引编制效果，那么您可能对转向自己网站的流量感到好奇。诸如 Google Analytics（分析）之类的网站分析程序是了解这一点的实用来源。您可以使用这些网站分析程序：

* 洞悉用户如何找到您的网站以及在您的网站上有何行为
* 发现您网站上最受欢迎的内容
* 衡量对网站所做的优化带来的影响，例如，更改标题和描述元标记是否提高了搜索引擎带来的流量？

对于高级用户，分析包提供的信息与您的服务器日志文件的数据相结合，可以提供更加全面的关于访问者如何与文档互动的信息（例如，搜索者可能用来查找您网站的其他关键字）。

### 其他资源

[网站站长中心博客](https://support.google.com/webmasters/go/blog)56\
网站站长中心博客中有最新资讯，您可以找到关于 Google 搜索更新、Search Console 新功能及其他众多内容的信息。

[网站站长帮助论坛](https://support.google.com/webmasters/community)57\
在网站站长的产品论坛中，您可以就自己的网站存在的问题发帖咨询，还能查找有关创建品质出众的网站的提示。论坛中有许多经验丰富的贡献者，包括[杰出贡献者](http://www.google.com/get/topcontributor/)58，偶尔还会有 Google 员工。

[Google 网站站长 Twitter 帐号](http://twitter.com/googlewmc)59\
请关注我们，获取各种新闻和资源，以便帮助您构建精彩网站。[YouTube“Google Webmasters”频道](http://www.youtube.com/GoogleWebmasterHelp)60\
观看我们为网站站长社群录制的数百个实用视频，让 Google 员工为您答疑解惑。

[Google 搜索的工作原理](http://www.google.com/insidesearch/howsearchworks/thestory/index.html)61\
查看当您通过 Google 搜索进行搜索时后台发生的活动。您将了解到一些非常精彩的趣事！

[在线开展业务](http://www.gybo.com/)62\
如果您在美国有家小型企业，可以免费注册一个网站。GYBO 是 Google 和 Homestead 合作运营的网站，旨在帮助小型企业注册网站并且让他们免费使用一年。

### 附录：本文中使用的链接网址

本文引用了以下网址：

1. <https://g.co/WebmasterHelpForum>
2. <https://www.google.com/search?q=site:wikipedia.org>
3. <https://support.google.comwebmasters/answer/70897>
4. <https://support.google.com/webmasters/answer/35769>
5. <https://search.google.com/search-console>
6. <http://g.co/webmasters>
7. <http://g.co/WebmasterChecklist>
8. <https://support.google.com/webmasters/answer/70897>
9. <https://support.google.com/webmasters/answer/35769>
10. <https://www.youtube.com/watch?v=piSvFxV\\_M04>
11. <https://support.google.com/webmasters/answer/35291>
12. <https://support.google.com/webmasters/answer/156184>
13. <https://support.google.com/webmasters/answer/6062608>
14. <https://support.google.com/webmasters/topic/4598466>
15. <https://webmasters.googleblog.com/2014/05/understanding-web-pages-better.html>
16. <https://support.google.com/webmasters/answer/9012289>
17. <https://www.youtube.com/watch?v=MOfhHPp5sWs>
18. <http://googlewebmastercentral.blogspot.com/2007/09/improve-snippets-with-meta-description.html>
19. <https://webmasters.googleblog.com/2017/06/better-snippets-for-your-users.html>
20. <https://support.google.com/webmasters/answer/35624>
21. <https://developers.google.com/search/docs/guides/intro-structured-data>
22. <https://developers.google.com/search/docs/guides/search-gallery>
23. <https://www.google.com/webmasters/tools/data-highlighter>
24. <https://www.google.com/webmasters/markup-helper/>
25. <https://search.google.com/test/rich-results>
26. <https://support.google.com/webmasters/answer/7552505>
27. <https://developers.google.com/search/docs/guides/search-gallery>
28. <https://developers.google.com/search/docs/data-types/breadcrumbs>
29. <https://support.google.com/webmasters/answer/72746>
30. <https://support.google.com/webmasters/answer/93641>
31. <http://googlewebmastercentral.blogspot.com/2008/10/webmaster-tools-shows-crawl-error.html>
32. <http://support.google.com/webmasters/answer/93633>
33. <https://support.google.com/webmasters/answer/139066>
34. <https://ads.google.com/home/tools/keyword-planner/>
35. <https://support.google.com/webmasters/answer/7576553>
36. <https://support.google.com/webmasters/answer/66359>
37. <https://support.google.com/webmasters/answer/66353>
38. <https://www.thinkwithgoogle.com/marketing-resources/better-ad-standards/>
39. <https://webmasters.googleblog.com/2007/03/using-robots-meta-tag.html>
40. <https://support.google.com/webmasters/answer/81749>
41. <https://support.google.com/webmasters/answer/178636>
42. <https://webmasters.googleblog.com/2016/11/mobile-first-indexing.html>
43. <https://developers.google.com/search/mobile-sites/mobile-seo/responsive-design>
44. <https://developers.google.com/search/mobile-sites/mobile-seo/dynamic-serving>
45. <https://developers.google.com/search/mobile-sites/mobile-seo/separate-urls>
46. <https://search.google.com/test/mobile-friendly>
47. <https://www.google.com/webmasters/tools/mobile-usability>
48. <https://www.ampproject.org/>
49. <https://webmasters.googleblog.com/2016/08/helping-users-easily-access-content-on.html>
50. <https://search.google.com/test/mobile-friendly>
51. <https://developers.google.com/search/mobile-sites/>
52. <https://www.google.com/business/>
53. <https://support.google.com/webmasters/answer/66356>
54. <https://www.google.com/webmasters/tools/home>
55. <https://www.bing.com/toolbox/webmaster>
56. <https://support.google.com/webmasters/go/blog>
57. <https://g.co/WebmasterHelpForum>
58. <http://www.google.com/get/topcontributor/>
59. <http://twitter.com/googlewmc>
60. <http://www.youtube.com/GoogleWebmasterHelp>
61. <http://www.google.com/insidesearch/howsearchworks/thestory/index.html>
62. <http://www.gybo.com/>


# 使用 HTTPS 确保网站安全

保护您的网站和用户

### 什么是 HTTPS？

HTTPS（超文本传输安全协议）是一种互联网通信协议，可确保在用户的计算机与网站之间所传递的数据的完整性和机密性。每当访问网站时，用户都希望自己的在线体验安全无虞且具有私密性。因此，我们建议您采用 HTTPS 来保护用户与您网站之间的连接（无论您网站上提供了什么内容）。

所有使用 HTTPS 发送的数据都可通过传输层安全协议 ([TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security)) 得到保护。该协议可提供三重关键保护：

1. **加密** - 对所交换的数据进行加密，以使其免受窥探。这意味着在用户浏览网站期间，没有人能够“听到”其会话内容，也无法在多个网页上跟踪其活动或窃取其信息。
2. **数据完整性** - 不管是有意还是无意，在数据传输期间数据都无法被修改或损坏，也不会被检测。
3. **身份验证** - 证明用户可与目标网站通信，这有助于保护用户免遭[中间人攻击](https://en.wikipedia.org/wiki/Man-in-the-middle_attack)并建立用户信任，进而带来其他商业效益。

### 实施 HTTPS 时的最佳做法

#### 使用强大的安全证书

在为网站启用 HTTPS 的过程中，您必须获得安全证书。证书由[数字证书认证机构](https://en.wikipedia.org/wiki/Certificate_Authority) (CA) 颁发，该机构会采取有关措施，确认您的网站地址是否确实属于您的组织，从而保护访问者免受中间人攻击。在设置证书时，您可以选择 2048 位密钥，来确保高级别的安全性。如果所持证书的密钥（1024 位）安全性较弱，请将其升级到 2048 位。选择网站证书时，请注意以下几点：

* 从提供技术支持的可靠 CA 处获取证书。
* 确定所需证书的类型：
  * 适用于单个安全源的单个证书（例如：`www.example.com`）。
  * 适用于多个已知安全源的多网域证书（例如`www.example.com、cdn.example.com、example.co.uk`）。
  * 适用于具有多个动态子域名的安全源的通配型证书（例如：`a.example.com、b.example.com`）。

#### 使用服务器端 301 重定向

使用服务器端 301 HTTP 重定向将用户和搜索引擎重定向至 HTTPS 网页或资源。

#### 确认 Google 能否抓取您的 HTTPS 网页并将其编入索引

* 请勿通过 robots.txt 文件阻止抓取您的 HTTPS 网页。
* 请勿在您的 HTTPS 网页中包含 `noindex` 元标记。
* 使用[“网址检查”工具](https://support.google.com/webmasters/answer/9012289)来测试 Googlebot 能否访问您的网页。

#### 支持 HSTS

我们建议 HTTPS 网站支持 HSTS（[HTTP 严格传输安全协议](https://zh.wikipedia.org/wiki/HTTP_Strict_Transport_Security)）。HSTS 不仅会告知浏览器自动请求 HTTPS 页面（即使用户在浏览器地址栏中输入的是 `http`），还会告知 Google 在搜索结果中提供安全网址，从而最大限度地降低了向用户提供不安全内容的风险。

要支持 HSTS，请使用支持 HSTS 的网络服务器并启用该功能。

虽然 HSTS 更安全，但它会增加回滚策略的复杂性。我们建议您按照以下方式启用 HSTS：

1. 首先，滚动未启用 HSTS 的 HTTPS 页面。
2. 开始发送 max-age 较短的 HSTS 标头。通过用户和其他客户端监控您的流量，并监控相关内容的效果，如广告。
3. 逐步增加 HSTS 的 max-age。
4. 如果 HSTS 不会对您的用户和搜索引擎产生负面影响，您便可请求系统将您的网站添加到被大多数主要浏览器使用的 [HSTS 预加载列表](https://hstspreload.org/)中（如果您愿意的话）。

**考虑使用 HSTS 预加载**

如果您启用了 HSTS，则可选择支持 [HSTS 预加载](https://www.google.com/webhp?#q=about+hsts+preloading)，以进一步提高安全性并改善性能。要启用预加载，您必须[访问 hstspreload.org 并按照其中所述的提交要求对您的网站执行相应操作](https://hstspreload.org/)。

#### 避免以下常见问题 <a href="#pitfalls" id="pitfalls"></a>

在使用 TLS 保护网站安全的整个过程中，请避免以下错误：

| **问题**                                                                             | **措施**                                                                                                                                                                                           |
| ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 过期的证书                                                                              | 确保证书始终最新。                                                                                                                                                                                        |
| 注册了错误网站名称的证书                                                                       | 检查您是否已获得可涵盖与您网站对应的所有主机名的证书。例如，如果您的证书仅涵盖 [www.example.com，则仅使用](http://www.example.com，则仅使用) example.com（不带“[www.”前缀）加载您的网站的访问者将会因证书名称不匹配错误而被禁止访问。](http://www.”前缀）加载您的网站的访问者将会因证书名称不匹配错误而被禁止访问。) |
| 缺少[服务器名称指示](https://en.wikipedia.org/wiki/Server_Name_Indication#Support) (SNI) 支持 | 确保网络服务器支持SNI且您的受众通常使用支持的浏览器。所有[新式浏览器](https://en.wikipedia.org/wiki/Server_Name_Indication#Support)都支持SNI，但如果您需要支持旧版浏览器，则需要一个专用的IP。                                                              |
| 抓取问题                                                                               | 请勿使用`robots.txt`屏蔽抓取HTTPS网站。                                                                                                                                                                     |
| 索引编制问题                                                                             | 尽可能允许通过搜索引擎将网页编入索引。避免使用 `noindex` 元标记。                                                                                                                                                           |
| 旧版协议                                                                               | 旧版协议易受攻击；请务必使用最新版 TLS 库并实施最新版协议。                                                                                                                                                                 |
| 并非只含安全元素                                                                           | 在 HTTPS 网页上只嵌入 HTTPS 内容。                                                                                                                                                                         |
| HTTP 和 HTTPS 上的内容不同                                                                | 确保HTTP网站和HTTPS上的内容相同。                                                                                                                                                                            |
| HTTPS上的[HTTP状态代码](https://support.google.com/webmasters/answer/40132?hl=zh-CN)错误   | 确认网站是否返回正确的HTTP状态代码。例如，`200 OK`（页面可访问）或 `404`/`410`（页面不存在）。                                                                                                                                      |

#### 更多提示

有关在网站上使用 HTTPS 网页的更多提示，请参阅 [HTTPS 迁移常见问题解答](https://support.google.com/webmasters/answer/6033049#https-faqs)。

### 从 HTTP 迁移到 HTTPS

如果您将网站从 HTTP 迁移到 HTTPS，则 Google 只会将其视为[包含网址更改的网站迁移](https://support.google.com/webmasters/answer/6033049)。这可能会暂时影响您的部分流量。有关详情，请访问[网站迁移概览页面](https://support.google.com/webmasters/answer/34437)。

**在 Search Console 中添加新的 HTTPS 资源**：Search Console 会分别处理 HTTP 和 HTTPS；数据不会在 Search Console 中的资源之间共享。

请参阅[站点地图迁移的问题排查页面](https://support.google.com/webmasters/answer/6033088)，以排查迁移问题。

### 更多信息

要详细了解如何在您的网站上实施 TLS，请参阅以下资源：

* [Qualys SSL/TLS 最佳做法](https://www.ssllabs.com/projects/documentation/)
* [SSL/TLS Mozilla wiki](https://wiki.mozilla.org/Security/Server_Side_TLS)


# 保持简单的网址结构

## 保持简单的网址结构

网站的网址结构应尽可能简单些。建议您组织一下您的内容，让网址的结构合乎逻辑并易于人们理解（尽可能采用易读的字词而非冗长的ID编号）。例如，如果您要搜索有关aviation的信息，<http://en.wikipedia.org/wiki/Aviation一类的网址将可帮助您决定是否点击该链接。而> <http://www.example.com/index.php?id\\_sezione=360\\&sid=3a5ebc944f41daa6f849f730f1> 一类的网址对用户的吸引力大大降低。

考虑在网址中使用标点符号。对于我们而言，\*\*<http://www.example.com/green-dress.html**这一网址比**http://www.example.com/greendress.html**有用得多。我们建议在网址中使用连字符(-)而非下划线(\\_)。>

过于复杂的网址，特别是那些包含多个参数的网址，可能会给抓取工具带来麻烦，因为它们可能会产生大量不必要的网址，全都指向您网站上相同或相似的内容。Googlebot可能会因此而消耗大量不必要的带宽，也可能无法将您网站上的所有内容完整编入索引。**此问题的常见原因**

导致网址过多可能有多种原因，其中包括：

* **对一组项目的过度过滤** 很多网站为同一组项或搜索结果提供不同的视图，通常可让用户使用定义的标准进行过滤（例如：显示海景酒店）。当以累加方式合并过滤器时（例如：带健身中心的海景酒店），网站中网址（数据视图）的数量就会急剧增加。因为Googlebot只需查看少量能用来访问各个酒店网页的列表即可，所以没有必要创建大量区别不大的酒店列表。例如：
  * 特价酒店：

    ```
    http://www.example.com/hotel-search-results.jsp?Ne=292&N=461
    ```
  * 特价海景酒店：

    ```
    http://www.example.com/hotel-search-results.jsp?Ne=292&N=461+4294967240
    ```
  * 带健身中心的特价海景酒店：

    ```
    http://www.example.com/hotel-search-results.jsp?Ne=292&N=461+4294967240+4294967270
    ```
* <br>
* **动态生成文档**。由于计数器、时间戳或广告影响，这可能会产生少量变化。
* <br>
* **网址中的问题参数**。例如，会话ID会创建大量重复内容以及较多网址。
* <br>
* **排序参数**。 某些大型购物网站会提供多种方式来为相同的商品排序，从而造成网址数量大增。例如：

  ```
  http://www.example.com/results?search_type=search_videos&search_query=tpb&search_sort=relevance
     &search_category=25
  ```
* **网址中不相关的参数，例如引荐参数**。 例如：

  ```
  http://www.example.com/search/noheaders?click=6EE2BF1AF6A3D705D5561B7C3564D9C2&clickPage=
     OPD+Product+Page&cat=79
  ```

  ```
  http://www.example.com/discuss/showthread.php?referrerid=249406&threadid=535913
  ```

  ```
  http://www.example.com/products/products.asp?N=200063&Ne=500955&ref=foo%2Cbar&Cn=Accessories.
  ```
* <br>
* **日历问题**。 动态生成的日历可能会生成指向未来及过去日期的链接，而这些日期没有开始或结束期限。例如：

  ```
  http://www.example.com/calendar.php?d=13&m=8&y=2011
  ```

  ```
  http://www.example.com/calendar/cgi?2008&month=jan
  ```
* <br>
* **相对链接损坏** 。损坏的相对链接往往会导致无限循环。这个问题通常是由路径元素重复造成的。例如：

  ```
  http://www.example.com/index.shtml/discuss/category/school/061121/html/interview/
    category/health/070223/html/category/business/070302/html/category/community/070413/html/FAQ.htm
  ```

**解决此问题的方法**

为避免网址结构出现潜在问题，建议您采取以下措施：

* 您可考虑使用robots.txt文件阻止Googlebot访问有问题的网址。一般情况下您应考虑阻止动态网址，例如会生成搜索结果或无限循环（如日历）的网址。在robots.txt文件中使用正则表达式可以轻松拦截数量较大的网址。
* <br>
* 尽可能避免在网址中使用会话ID。您可考虑改用Cookie。请参阅我们的[网站站长指南](https://support.google.com/webmasters/answer/35769)，以了解更多信息。
* <br>
* 截掉不必要的参数，尽量缩短网址。
* <br>
* 如果您的网站日历未设置期限，请为指向动态创建的未来日历页的链接添加[nofollow](https://support.google.com/webmasters/answer/96569)属性。
* <br>
* 检查网站是否存在损坏的相对链接。


# 向 Google 说明您的出站链接的用意

对于您网站上的某些出站链接，您可能想向 Google 说明您的网站与相应链接页之间的关系。为此，您应在 `<a>` 标记中使用下列 `rel` 属性值之一。

对于您认为无需说明用意、允许 Google 直接跟踪的常规链接，无需添加 `rel` 属性。**示例**：“我最喜欢的马是`<a href="https://horses.example.com/Palomino">`帕洛米诺马`</a>`。”

对于其他链接，请使用以下一个或多个值：

| `rel` 值           | 说明                                                                                                                                                                                                                                                                                                                                                    |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `rel="sponsored"` | <p>请将广告链接或付费展示位置链接（通常称为“付费链接”）标记为 <code>sponsored</code>。<a href="https://support.google.com/webmasters/answer/66736">详细了解 Google 对付费链接的态度</a>。</p><p><strong>注意</strong>：对于这些类型的链接，<a href="https://webmasters.googleblog.com/2019/09/evolving-nofollow-new-ways-to-identify.html">以前推荐</a>使用 nofollow 属性，现在，您仍可以使用该属性进行标记，但更建议您使用 sponsored 标记。</p> |
| `rel="ugc"`       | <p>建议将用户生成的内容（例如评论和论坛帖子）的链接标记为 <code>ugc</code>。</p><p>如果您想对值得信赖的贡献者（始终如一地做出高质量贡献的成员或用户）表示认可和奖励，则可从他们发布的链接中移除此属性。<a href="https://support.google.com/webmasters/answer/81749">详细了解如何防范垃圾评论</a>。</p>                                                                                                                                                   |
| `rel="nofollow"`  | 如果其他值不适用，并且您希望 Google 不跟踪您网站上的出站链接（不从您的网站上抓取站外链接页），请使用 `nofollow` 值。（对于您自己网站中的站内链接，请使用 robots.txt，如下所述。）                                                                                                                                                                                                                                              |
| *多个值*             | <p>您可以将多个 <code>rel</code> 值合并为一个以空格或英文逗号分隔的列表。<strong>示例</strong>：</p><ul><li>我喜欢<code>\<a href="<https://cheese.example.com/Appenzeller_cheese>" rel="ugc nofollow"></code>阿彭策尔<code>\</a></code>芝士。</li><li>我讨厌<code>\<a href="<https://cheese.example.com//blue_cheese>" rel="ugc,nofollow"></code>蓝纹<code>\</a></code>芝士。</li></ul>              |

Google 通常不会跟踪标有这些 `rel` 属性的链接。请注意，链接页也可能经由其他途径找到（例如站点地图或其他网站的出站链接），因此仍有可能被抓取。这些 `rel` 属性仅能在 `<a>` 标记中使用（因为 [Google 仅能跟踪 `<a>` 标记所指向的链接](https://support.google.com/webmasters/answer/9112205)），但 `nofollow` 属性除外，该属性还可以用作[漫游器元标记](https://support.google.com/webmasters/answer/79812)。

如果您不想让 Google 跟踪指向您的站内网页的链接，请使用 [robots.txt Disallow 规则](https://support.google.com/webmasters/answer/6062596)。

如果您不想让 Google 将某个网页编入索引，请允许抓取并使用 [noindex robots 规则](https://support.google.com/webmasters/answer/93710)。<br>


# 将网站标记为面向儿童的内容

如果您认为您的网站或移动应用专门面向儿童，请访问[标记为面向儿童的内容](https://search.google.com/search-console/coppa)页面，并标记某网站或服务的全部或部分内容，以让 Google 根据[儿童在线隐私保护法](http://business.ftc.gov/privacy-and-security/childrens-privacy) (COPPA) 将相应内容视为面向儿童的内容。如果您尚未向 Search Console 添加网站，则必须先[添加网站并验证所有权](https://support.google.com/webmasters/answer/34592)。注意，将您的网站或应用标记为面向儿童的内容**不会**影响其在 Google 搜索结果中的排名。

请注意以下几点：

* 您可以将整个网域或其中的部分内容（子网域或子目录）标记为面向儿童的内容。
* 网域或目录下的所有网页也会沿袭该标记。
* 此操作可能要过一段时间才能在相应的 Google 服务中生效。
* Google 可能会随时限制您可以加入的网域或子网域的数目。

为了更好地控制 Google 如何对待您的内容，您还可以将个别广告单元标记为面向儿童。请查看相应产品的帮助中心，详细了解正确的标记方式。

**注意**：标记个别广告单元后，会立即对投放的广告产生影响。广告单元标记优先于所有适用的网站级设置。


# 浏览器兼容性

用户通常会使用浏览器访问您的网站。各浏览器解译网站代码的方式略有不同，这意味着您的网站在不同浏览器中显示的效果会有所差异。一般情况下，您应避免依赖于浏览器特定的行为，例如在未指定内容类型或编码的情况下，希望浏览器可以正确检测到相应的内容类型或编码。此外，您还可以采取以下步骤来确保网站在不同的浏览器中都能正确显示。

### 在尽可能多的浏览器中测试您的网站

完成网站设计后，您应通过多个浏览器复查网站的外观和功能，确保将您独具匠心的设计完美呈现给所有访问者。早在网站开发阶段，您就应该进行这种测试。各种浏览器（甚至是同一浏览器的不同版本）对同一网站的呈现可能会有所不同。您可以使用诸如 [Google Analytics（分析）](http://www.google.com/analytics)这样的服务来了解访问者最常使用哪些浏览器访问您的网站。

### 编写高质量、易解译的 HTML

即使您编写的 HTML 无效，您的网站在某些浏览器中也可以正确显示，但尽管如此，您的网站可能不会在所有浏览器（或将来出现的浏览器）中都正确显示。要使您的网页在所有浏览器中显示的效果相同，最好的方法就是使用有效的 HTML 和 CSS 编写网页，然后在尽可能多的浏览器中测试这些网页显示的效果。有效、易解译的 HTML 可保证网页得以正确显示，而 CSS 可以将网页的外观和内容分离开来，使网页可以更快速地载入和呈现给访问者。您可以使用验证工具检查自己的网站，例如 W3 Consortium 免费提供的在线 [HTML](http://validator.w3.org/) 和 [CSS 验证工具](http://jigsaw.w3.org/css-validator/)，还可以使用诸如 [HTML Tidy](http://www.w3.org/People/Raggett/tidy/) 快捷地清理您的代码（尽管 Google 强烈推荐使用有效的 HTML，但这并不影响 Google 抓取您的网站并将其编入索引的方式）。

### 指定字符编码

为使浏览器可以呈现您网页上的文字，您应始终为相应的文档指定编码。某些浏览器无法识别文档深处的字符集声明，因此，您应将此编码置于文档（或框架）的顶部。此外，您还应确保您的网络服务器不发送相冲突的 HTTP 标头。`content-type: text/html; charset=ISO-8859-1` 等标头将替代网页中的任何字符集声明。

### 使网页易于访问

并非所有用户都会在浏览器中启用 JavaScript。此外，Flash 和 ActiveX 等技术在某些浏览器中的效果可能并不好（或根本不适用）。建议您按照 [Flash 和其他富媒体使用指南](https://support.google.com/webmasters/answer/answer.py?answer=72746)进行操作，然后在 [Lynx](https://lynx.browser.org/) 这样的纯文本浏览器中测试您的网站。提供针对富媒体内容和功能的纯文本浏览方式，有助于搜索引擎更方便地抓取您的网站并将其编入索引，同时也大大方便了使用屏幕读取器等技术访问您网站的用户。


# 避免创建重复内容

重复内容通常是指网域内或网域间与其他内容完全匹配或大致类似的有一定体量的内容。多数情况下，其成因并不具有欺骗性质。非恶意重复内容可包括：

* 既可生成常规网页，又可针对移动设备生成精简版网页的论坛
* 通过多个不同网址显示或链接的存储项
* 网页的可打印版本

如果您的网站有多个包含大量重复内容的网页，您可以采用多种方法向 Google 指明您的首选网址（该过程称为“规范化”）。[详细了解规范化。](https://support.google.com/webmasters/answer/139066)

不过，在某些情况下，网域间会有故意重复的内容，意在操纵搜索引擎的排名或赢得较多的流量。这种欺骗性做法会使用户在同一组搜索结果中看到实质相同的内容重复出现，从而导致糟糕的用户体验。

Google 会尽量保证编入索引和显示的网页包含不同的信息。该过滤操作意味着，如果您网站的每篇文章都有“常规”和“打印”两个版本，而且两个版本都未被系统根据 [noindex 元标记](https://support.google.com/webmasters/answer/93710)屏蔽，那么我们会选择其中一个版本列出。仅在极个别情况下，Google 才会认为重复内容的用意是操纵我们的排名并欺骗我们的用户，当此类情况出现时，我们也会对相应网站的索引和排名进行适当的调整。这样一来，网站的排名可能会受到影响，或者我们可能会将网站从 Google 索引中完全移除，网站移除后将不会再显示在搜索结果中。

您可采取一些措施来主动解决内容重复的问题，并确保访问者可看到您希望他们看到的内容。

* **使用 301 重定向**：如果您已调整网站结构，那么请在 .htaccess 文件中使用 [301 重定向](https://support.google.com/webmasters/answer/93633)（“RedirectPermanent”）灵活地重定向用户、Googlebot 和其他“蜘蛛”程序（在 Apache 中，您可在 .htaccess 文件中进行以上操作；而在 IIS 中，您可通过管理控制台来进行以上操作）。
* **保持一致**：尽量使您的内部链接保持一致。例如，请勿链接到 `http://www.example.com/page/`、`http://www.example.com/page` 和 `http://www.example.com/page/index.htm`。
* **使用顶级域名**：为便于我们选用最恰当的文档版本，请尽量使用顶级域名来处理针对特定国家/地区的内容。例如，与 `http://www.example.com/de` 或 `http://de.example.com` 相比，`http://www.example.de` 更能说明这是针对德国的内容。
* **联合供稿须谨慎**：如果您在其他网站上将您的内容显示为联合供稿，那么，在每次搜索中，Google 都会始终显示我们认为最适合用户的版本，这有可能是您的首选版本，也有可能不是您的首选版本。不过，您可以采用一种有益的做法：确保以联合供稿形式展示相应内容的每个网站都包含一个指回原创文章的链接。您也可要求其他网站的站长对包含您的联合供稿资料的网页使用 noindex 元标记，从而阻止搜索引擎将那些版本编入索引。
* **最大限度地减少重复的样板文字**：例如，不在每个网页的底部添加冗长的版权文字，而只添加一段简短摘要，然后链接到能够提供详细信息的网页。此外，您还可以使用[参数处理工具](https://support.google.com/webmasters/answer/6080548)指定您希望 Google 如何处理网址参数。
* **避免发布无实际内容的网页**：用户不喜欢看到“空白”网页，因此请尽量避免使用占位符。例如，请勿发布尚无实际内容的网页。如果您确实创建了占位符网页，请使用 [noindex 元标记](https://support.google.com/webmasters/answer/93710)阻止搜索引擎将这些网页编入索引。
* **了解自己的内容管理系统**：请务必熟悉内容在您网站上的显示方式。博客、论坛以及相关系统往往会以不同的格式显示相同的内容。例如，某个博客条目可能会显示在博客首页、存档网页以及包含带有同一标签的其他条目的网页中。
* **最大限度地减少相似内容**：如果您的多个网页内容相似，那么，请考虑扩充每个网页的内容，或将这些网页合并成一个。例如，如果您的旅行网站上包含与两个城市分别对应的不同网页，但这两个网页中的内容相同，您便可将这两个网页合并为一个网页来同时介绍这两个城市的相关信息，或者扩充每个网页的内容以使其包含相应城市的独特信息。

Google 不建议使用 robots.txt 文件或其他方法阻止抓取工具访问您网站上的重复内容。如果搜索引擎无法抓取包含重复内容的网页，便无法自动检测这些网址是否指向相同内容，因此，实际上还是被迫将它们视为独立的不同网页。还有一个更好的解决方案，就是允许搜索引擎抓取这些网址，并使用 `rel="canonical"` link 元素、网址参数处理工具或 301 重定向将这些网址标记为重复内容。如果重复内容导致我们抓取了您网站的过多内容，您还可以在 Search Console 中[调整抓取速度设置](https://support.google.com/webmasters/answer/48620)。

除非重复内容看上去意在欺骗用户以及操纵搜索引擎结果，否则，我们不会对含有重复内容的网站采取措施。如果您的网站存在内容重复问题，但您并未采纳上述建议，我们通常能够选择适宜的内容版本并显示在搜索结果中。

但是，如果我们审查发现您采用了欺骗性做法，并且您的网站已从我们的搜索结果中移除，请仔细检查您的网站。如果您的网站已从我们的搜索结果中移除，请参阅[网站站长指南](https://support.google.com/webmasters/answer/35769)了解详情。如果您已进行更改并确信网站不再违反我们的指南，请[提交重新审核网站的请求](https://support.google.com/webmasters/answer/35843)。

在极少数情况下，我们的算法可能会选择未经您的允许就托管您的内容的外部网站上的网址。如果您认为其他网站违反版权法抄袭了您的内容，可以与该网站的站长联系，要求其移除相关内容。此外，您还可以[根据数字千年版权法案提交请求](https://support.google.com/legal/answer/1120734)，以请求 Google 从搜索结果中移除涉嫌侵权的网页。


# 确保链接可供抓取

只有当您的链接**使用正确的 `<a>` 标记**和**可解析的网址**时，Google 才能跟踪这些链接：

### 使用正确的 \<a> 标记

只有当链接是含有 href 属性的 `<a>` 标记时，Google 才能跟踪这些链接。Google 的抓取工具不会跟踪采用其他格式的链接。Google 无法跟踪缺少 href 标记的 `<a>` 链接，也无法跟踪其他因为脚本事件而导致标记执行为链接时出问题的 \<a> 链接。以下是 Google 可以跟踪以及无法跟踪的链接示例：

**可以跟踪的链接示例：**

* \<a href="[https://example.com">](https://blog.jasonzhang.cc/google-dev/search-console-bang-zhu/chang-gui-zhi-nan/https:/example.com">)
* \<a href="/relative/path/file">

**无法跟踪的链接示例：**

* \<a routerLink="some/path">
* \<span href="[https://example.com">](https://blog.jasonzhang.cc/google-dev/search-console-bang-zhu/chang-gui-zhi-nan/https:/example.com">)
* \<a onclick="goto('[https://example.com')">](https://blog.jasonzhang.cc/google-dev/search-console-bang-zhu/chang-gui-zhi-nan/https:/example.com'\)">)

### 指向可解析网址的链接

确保 `<a>` 标记所链接到的网址是 Googlebot 可以向其发送请求的实际网址，例如：

**可以解析：**

* <https://example.com/stuff>
* /products
* /products.php?id=123

**无法解析：**

* javascript:goTo('products')
* javascript:window\.location.href='/products'
* \#


# 借助 Google 搜索进行网站测试的最佳做法

测试网站网址或网站内容中的变体

本文将介绍如何确保在测试网页内容或网页网址中的变体时最大限度地降低对相应网站在 Google 搜索中的排名的影响。虽然本文并不会阐述如何构建或设计测试，但您可在本文的末尾处找到更多与测试相关的资源。

### 测试概述

网站测试是指试用网站（或网站的某一部分）的不同版本并收集与用户对每个版本的反应相关的数据。通常，您需要使用软件来比较网页（网页的某些部分、整个网页或整个多页流程）的两个不同变体的行为，并跟踪哪个版本对您的用户最有效。

**A/B 测试**是指通过为某个网页创建多个版本（每个版本都有各自的网址）来运行测试。当用户尝试访问原始网址时，您需将部分用户分别重定向到每个变体网址，然后比较用户的行为以了解哪个网页最有效。

**多变量测试**是指使用软件实时更改您网站的不同部分。您可以测试对某个网页的多个部分（例如标题、照片和“加入购物车”按钮）做出的更改。该软件会将各个部分的变体以不同的组合方式显示给用户，然后从统计学角度来分析哪些变体最有效。这类测试仅涉及 1 个网址；系统会在相应网页上动态插入各种变体。

即使 Googlebot 在您运行测试期间抓取了您的部分内容变体或将其编入了索引，也可能无关紧要（具体取决于您正在测试什么类型的内容）。一些细微的更改（例如按钮或图片的尺寸、颜色或位置，或“号召性用语”的文字（“加入购物车”/“立即购买！”））可能会对用户与您网页的互动情况产生出乎意料的影响，但对该网页的搜索结果摘要或排名却往往只会产生极小的影响或者毫无影响。

此外，如果我们对您网站的抓取频次足以让系统检测到您的实验并将其编入索引，那么在您完成实验后，我们可能也会以足够快的速度将您对自己网站做出的最终更新编入索引。

### 测试时的最佳做法

要想避免在测试网站变体期间对相应网站的 Google 搜索行为造成任何不良影响，请参阅下列最佳做法：

#### 请勿隐藏测试网页的真实内容

请勿向 Googlebot 呈现一组网址，而向用户呈现另一组网址 - 因为这种行为被称作[隐藏真实内容](https://support.google.com/webmasters/answer/66355)，且有违我们的[网站站长指南](https://support.google.com/webmasters/answer/35769)（无论您是否正在运行测试）。请注意，违反我们的指南可能会导致您的网站被降位或被从 Google 搜索结果中移除，这可能并不是您进行测试的初衷。

只要您隐藏了真实内容（无论是通过服务器逻辑或 robots.txt 还是通过任何其他方法），就会被视为违规。因此，您不妨改用下文所述的链接或重定向。

#### 使用 rel="canonical" 链接

如果您运行的是针对多个网址的 A/B 测试，则可对所有备用网址使用 [rel="canonical" 链接属性](https://support.google.com/webmasters/answer/139394)，以指明原始网址是首选版本。我们建议您使用 rel="canonical"（而非 noindex 元标记），因为在这种情况下它更符合您的意图。例如，如果您要测试首页的变体，但您并不想让搜索引擎将首页编入索引，而是只想让它们知道所有测试网址都是原始网址的近似副本或变体且应被组合在一起（以原始网址作为规范网址）。在这种情况下，使用 noindex（而非 rel="canonical"）有时可能会产生意外的不良影响。

#### 使用 302（而非 301）重定向

如果您运行的是会将用户从原始网址重定向到变体网址的 A/B 测试，请使用 302（临时）重定向，而非 301（永久）重定向。这会让搜索引擎知晓此重定向是临时的（只有当您运行实验时它才会奏效），并且它们应将原始网址保留在各自的索引中，而不应将其替换为重定向的目标（测试网页）。您也可以使用基于 JavaScript 的重定向。

#### 仅在必要时运行实验

一项可靠的测试所需的时间将取决于您的转化率以及您网站获得的流量等因素；一款优良的测试工具应能够在您收集的数据已足以得出可靠的结论时通知您。一旦完成测试，您便应尽快使用所需的内容变体更新您的网站，并移除测试的所有元素（例如备用网址或测试脚本和标记）。如果我们发现某个网站运行实验的时间过长，我们可能会将此理解为试图欺骗搜索引擎并会采取相应措施，尤其是当您将一个内容变体提供给大量用户时。

### 详细了解测试

* 与内容实验相关的 [Google Analytics（分析）文章](https://support.google.com/analytics/answer/1745147)
* [Google Analytics（分析）内容测试工具](https://www.google.com/analytics/)
* 在 [Analytics（分析）帮助论坛](http://productforums.google.com/forum/#!categories/analytics/content-experiments)中询问与测试相关的问题
* 在[网站站长帮助论坛](http://productforums.google.com/forum/#!forum/webmasters)中询问与对搜索结果的影响相关的问题。


# 专门面向内容的指南

* [与 Google 搜索中的 AMP 网页相关的准则](https://support.google.com/webmasters/answer/6340290?hl=zh-Hans\&ref_topic=9460494)
* [AJAX 增强网站](https://support.google.com/webmasters/topic/6003039?hl=zh-Hans\&ref_topic=9460494)
* [图片和视频](https://support.google.com/webmasters/topic/2370565?hl=zh-Hans\&ref_topic=9460494)
* [播客](https://support.google.com/webmasters/answer/9579369?hl=zh-Hans\&ref_topic=9460494)
* [Google 移动](https://support.google.com/webmasters/topic/2370586?hl=zh-Hans\&ref_topic=9460494)


# 与 Google 搜索中的 AMP 网页相关的准则

我们为如何使网站便于 Google 处理而制定的所有[准则](https://support.google.com/webmasters/answer/40349)也都适用于 AMP 网页。本文档将介绍我们专为 Google 搜索中的 AMP 网页而制定的一些其他准则。要详细了解 Google 搜索中的 AMP 网页，请阅读我们的[开发者指南](https://developers.google.com/search/docs/guides/about-amp)。

* 您的 AMP 网页必须遵守 [AMP HTML 规范](https://www.ampproject.org/docs/reference/spec.html)。如果您是新手，请了解如何[创建您的首个 AMP HTML 网页](https://www.ampproject.org/docs/get_started/create.html)。
* 就可浏览的内容和可完成的操作而言，您必须尽可能地让用户能在 AMP 网页上获得与在对应的规范网页上相同的体验。
* 您的 AMP 网址架构应易于用户理解。例如，如果您的规范网页是 `example.com/giraffes`，那么您应将对应的 AMP 网页托管在与 `amp.example.com/giraffes` 或 `example.com/amp/giraffes` 类似的网址上（而不应托管在 `test.com/giraffes` 上）。这是因为当用户在 Google 搜索结果中点击某个指向您的 AMP 网页的链接时，浏览器内即会显示相应的 AMP 网址（就像任何网页一样）；倘若所显示的网址与您的主网站完全不相关，则可能会令用户感到困惑。
* 您的 AMP 网页必须[有效](https://search.google.com/test/amp)，才能按预期向用户呈现，且才能使用与 AMP 相关的功能。包含无效 AMP 标记的网页将无法使用某些搜索功能。
* 如果您向网页中添加结构化数据，请务必遵守我们的[结构化数据政策](https://developers.google.com/structured-data/policies)。

### 常见问题解答

**平板电脑或桌面设备上未显示我的 AMP 专用功能，这是为什么？**

Google 上的 AMP 专用功能（例如“焦点新闻”轮换展示）目前仅适用于移动设备。尽管 AMP 网页本身适用于所有类型的设备（包括桌面设备），但我们目前还没制定将 AMP 专用功能扩展到非移动平台的计划。

**AMP 网页只能在移动设备上显示吗？**

不是。AMP 网页可供在所有类型的设备上查看，因此请使用[自适应设计](https://www.ampproject.org/docs/guides/author-develop/responsive_amp)构建您的 AMP 网页。

**AMP 网页在桌面设备上的呈现效果如何？**

AMP 网页在移动设备屏幕和桌面设备屏幕上的显示效果一样好。如果 AMP 支持您所需的全部功能，您不妨考虑将您的网页创建为[独立的 AMP 网页](https://www.ampproject.org/docs/guides/deploy/discovery#what-if-i-only-have-one-page)，以满足使用桌面设备的访问者和使用移动设备的访问者对同一网页的不同需求。但是，当桌面设备上的 AMP 网页出现在 Google 搜索结果中时，它们无法使用搜索专用功能进行显示。


# AJAX 增强网站

## 设计AJAX支持的网站以提高可访问性

许多网站站长发现了利用AJAX改善其网站的用户体验的优势，它可以创建动态网页作为强大的网络应用。但是就像Flash一样，如果没有仔细实施该技术，AJAX会使搜索引擎难以将网站编入索引。与AJAX有关的搜索引擎问题主要有两个：确保搜索引擎漫游器能够看到您的内容和确保它们可以看到并跟踪您的导航。

尽管Googlebot非常理解HTML链接的结构，但是它在使用JavaScript进行导航的网站中还是会遇到寻找路径方面的问题。我们正在努力使其更好地理解JavaScript，但是要创建Google和其他搜索引擎可抓取的网站，最好还是提供指向内容的HTML链接。**以易于访问为目的进行设计**<br>

我们鼓励网站站长针对用户（而不仅仅针对搜索引擎）创建网页。您在设计AJAX网站时要考虑用户的需求，包括那些使用不支持JavaScript功能的浏览器的用户（例如使用屏幕阅读器或移动设备的用户）。测试网站可访问性的其中一种最简单的方法是：在停用JavaScript后通过浏览器预览网站，或在纯文本浏览器（例如Lynx）中查看网站。以纯文本形式查看网站还可帮助您找出Googlebot难以看到的其他内容，例如[图片或Flash中嵌入的文字](https://support.google.com/webmasters/answer/72746)。**避免使用iframe或分别指向其内容的链接**<br>

通过iframe显示的内容可能不会被编入索引，也不会在Google的搜索结果中显示。我们建议您避免使用iframe显示内容。如果您的网站中使用了iframe，请务必额外提供基于文本的链接以指向iframe所显示的内容，以便Googlebot能够抓取这些内容并将其编入索引。**以渐进增强的方式进行开发**<br>

如果您是从头开始，那么仅使用HTML构建网站结构和导航是一个不错的方法。然后，在网站的网页、链接和内容就绪后，您可以使用AJAX对外观和界面进行修饰。Googlebot可以很轻松地查看HTML，而使用新式浏览器的用户也可以享受AJAX的优势。

当然，您的有些链接很可能需要JavaScript，以实现AJAX功能。网络开发者杰里米·基思(Jeremy Keith)将此技术叫做[Hijax](http://domscripting.com/presentations/xtech2006/)，它是帮助AJAX和静态链接共存的一种方法。

创建一定格式的链接，以便它们既能提供静态链接又能调用JavaScript功能。通过这种方法，您的JavaScrip用户可以使用AJAX功能，而您的非JavaScrip用户可以忽略此脚本并点击此链接。例如：

```
<a href="ajax.htm?foo=32" onClick="navigate('ajax.html#foo=32');
 return false">foo 32</a>
```

请注意，静态链接网址含有参数(?foo=32)，而不是AJAX代码所使用的片段(#foo=32)。这一点非常重要，因为搜索引擎能理解网址参数，但经常会忽略片段。由于您现在提供的是静态链接，因此用户和搜索引擎可以链接到想要分享或参考的准确内容。

尽管我们在不断改善我们的抓取功能，但使用HTML链接仍不失为一个很好的方法，它可以帮助我们（以及其他搜索引擎、移动设备和用户）更好地理解您网站的结构。**遵从指南**<br>

除了上面提到的技巧之外，我们还建议您查看我们的[网站站长指南](https://support.google.com/webmasters/answer/35769)，以详细了解如何使网站便于Google和用户访问。该指南还指出了一些需要避免的做法，例如[欺骗性的JavaScript重定向](https://support.google.com/webmasters/answer/2721217)。要遵从的通用原则是：尽管您可以根据用户的能力为用户提供不同体验，但是内容应该相同。例如，设想我们为王燕的仓鼠商店创建了网页。网页顶部是“王燕的仓鼠商店”标题，下面是由AJAX技术驱动的最新仓鼠到货消息的幻灯演示。在同一网页上停用JavaScript后，不会应出现其他文本消息而令用户感到奇怪：

> 王燕的仓鼠商店 - 仓鼠、最好的仓鼠、低价仓鼠、免费仓鼠、宠物、商店、仓鼠商店、会跳舞的仓鼠、啮齿动物、苍鼠、沧鼠、最好的仓鼠资源、宠物玩具、舞蹈课、可爱、仓鼠的小把戏、宠物食品、仓鼠习性、仓鼠旅馆、仓鼠生日礼物创意，以及更多内容！

较好的实施方法是：无论是否启用JavaScript，都应该显示相同的文字内容；最佳方案是：为非JavaScript用户提供HTML版本的幻灯演示。[详细了解隐藏文字](https://support.google.com/webmasters/answer/66353)。


# 图片和视频

* [Google 图片最佳做法](https://support.google.com/webmasters/answer/114016?hl=zh-Hans\&ref_topic=2370565)
* [图片站点地图](https://support.google.com/webmasters/answer/178636?hl=zh-Hans\&ref_topic=2370565)
* [Google 图片中的图片权限元数据](https://support.google.com/webmasters/answer/9150868?hl=zh-Hans\&ref_topic=2370565)
* [视频最佳做法](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565)
* [视频 Sitemap 及其替代方案](https://support.google.com/webmasters/answer/80471?hl=zh-Hans\&ref_topic=2370565)
* [有关富媒体文件的最佳做法](https://support.google.com/webmasters/answer/72746?hl=zh-Hans\&ref_topic=2370565)


# Google 图片最佳做法

![蓝莓奶昔](https://lh3.googleusercontent.com/BdQ1ngugnmV6uT960KOX0G9av7YJF4MnoEdSgi5xBINEC4YYuOp3Q7RUj7i4Cg0tRQ=w884)

Google 图片可以帮助用户以直观的方式在网络上发掘信息。得益于[图片说明](https://blog.google/products/search/get-more-useful-information-captions-google-images/)、醒目[标记](https://webmasters.googleblog.com/2017/08/badges-on-image-search-help-users-find.html)和 AMP 结果等新功能，用户可在快速浏览内容时知悉图片的更多相关信息。

为图片添加更多相关信息可使相应的搜索结果变得更加实用，从而给您的网站带来更优质的流量。您可通过确保自己的图片和网站已针对 Google 图片进行优化，使您的内容更容易被发现。发布图片时请遵循我们的指南，以提高您的图片在 Google 图片搜索结果中出现的几率。

**选择停用图片搜索内嵌链接**

选择停用 Google 图片搜索结果中的内嵌链接后，便可阻止完整尺寸的图片显示在 Google 的图片搜索结果页中。

**要选择停用内嵌链接，请按照以下步骤操作：**

1. 当您收到图片请求时，请检查该请求中的 [HTTP 引荐来源网址标头](https://zh.wikipedia.org/wiki/HTTP_referer)。
2. 如果该请求来自某一 Google 网域，请仅回复 HTTP 200 或 HTTP 204（不要附加任何其他内容）。

Google 仍会抓取您的网页并会看到该图片，但会在搜索结果中显示抓取时生成的缩略图。您随时都可选择停用内嵌链接，且无需重新处理网站上的图片。该操作不会被视为隐藏真实图片，也不会引发手动操作。

您还可以[彻底阻止图片显示在搜索结果中](https://support.google.com/webmasters/answer/35308)。

### 打造超凡的用户体验

要想提升您的内容在 Google 图片中的曝光度，请以提供出色的用户体验为原则：**在设计网页时主要考虑用户，而非搜索引擎**。以下是一些建议：

* **提供适当的相关信息**：确保您的视觉内容与其所在网页的主题相关。我们建议您仅在能为网页增添原创价值的情况下展示图片。我们极不赞成在网页中完全使用非原创的图片和文字内容。
* **优化放置位置**：尽可能将图片放置在相关文字附近。必要时，也可考虑将最重要的图片放置在网页顶部附近。
* **勿将重要文字内嵌在图片中**：避免将文字（特别是网页标题和菜单项等重要的文字元素）内嵌在图片中，因为并非所有用户都能访问这类文字（而且网页翻译工具不适用于图片）。为了尽可能让更多的人能访问您的内容，请使用 HTML 格式提供文本，并为图片提供替代文本。
* **创建信息丰富的优质网站**：对 Google 图片而言，优质的网页内容与视觉内容同等重要 - 它可以提供背景信息并更能吸引用户点击搜索结果。网页内容可用于为图片生成一段文本摘要，而且 Google 在进行图片排名时会考虑[对应的网页内容质量](https://webmasters.googleblog.com/2011/05/more-guidance-on-building-high-quality.html)。
* **创建适合在各种设备上访问的网站**：比起桌面设备，用户更多地使用移动设备在 Google 图片上进行搜索。因此，有必要[设计一个适合所有设备类型和尺寸的网站](https://developers.google.com/search/mobile-sites/)。请使用[移动设备适合性测试工具](https://search.google.com/test/mobile-friendly)测试您的网页在移动设备上的运行效果，并获取反馈以了解哪些内容需要修正。
* **为图片创建良好的网址结构**：Google 会借助网址路径以及文件名来理解您的图片。我们建议您好好组织图片内容，以使网址结构合乎逻辑。

### 检查网页标题和说明

| ![](https://lh3.googleusercontent.com/CqaR8po58brlsor-p4N8R41t9F3PyeGIuQ5ZJHNkPGXRqExGdGGPHeCWeirgq_n4YOw7=w720) | ![](https://lh3.googleusercontent.com/fGGVwzupOgWxnmJdU0r48RaDswJwbF42j2e-NGvNjkr2mnix_Mhe7xgjeN12_tPuI_c=w730) |
| ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |

Google 图片会自动生成标题和摘要，以充分描述每条结果并表明相应结果与用户查询有何关系。这可帮助用户决定是否要点击某条搜索结果。

我们会使用很多不同的来源生成此信息，例如标题中的描述性信息以及每个网页的元标记。

遵循 [Google 的标题和摘要准则](https://support.google.com/webmasters/answer/35624)就可以帮助我们改善为您的网页显示的标题和摘要的质量。

### 添加结构化数据

如果您添加了结构化数据，Google 图片就能以富媒体搜索结果的形式（包括使用[醒目标记](https://webmasters.googleblog.com/2017/08/badges-on-image-search-help-users-find.html)）展示您的图片，这种做法不仅为用户提供与您的网页相关的信息，还能为您的网站带来更有针对性的流量。Google 图片支持以下类型的结构化数据：

* [产品](https://developers.google.com/search/docs/data-types/product)
* [视频](https://developers.google.com/search/docs/data-types/video)
* [食谱](https://developers.google.com/search/docs/data-types/recipe)

请遵循[结构化数据常规准则](https://developers.google.com/search/docs/guides/sd-policies)以及专门针对您的结构化数据类型的准则，否则您的结构化数据可能无法在 Google 图片中显示为富媒体搜索结果。对于上述每一种结构化数据类型，您都必须填写图片属性字段，才能使数据在 Google 图片中显示为标记和富媒体搜索结果。

| ![](https://lh3.googleusercontent.com/JPEwZ770S_3x6eqPt5v64Gv2o37gZZDjL_yi5QtVvRGuNemc7UxGSecP7SBCCFMOJTA=w373) | ![](https://lh3.googleusercontent.com/zQ3k3Q2toJkMJ8HP5pIY7BlQebsybScbsH6WV86nwdhontpMy-__i3Xe8Pg3mMQFxDM=w726) |
| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |

### 优化网站速度

图片通常是影响整体网页大小的最大因素，可能会导致网页在加载时既速度缓慢又开销巨大。请务必采用[最新的图片优化技术](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/image-optimization)和[自适应图片技术](https://developers.google.com/web/fundamentals/design-and-ui/responsive/images)，以提供优质且高速的用户体验。

在 Google 图片上，AMP 徽标 ![](https://lh3.googleusercontent.com/piBCOeIarlaZ_L-gfZ1A_LCS7gPIUrQW29732lRrU5cOfHnmbcAmwApRiTCIHCXBxwkH=w36) 有助于用户识别哪些网页能够快速且流畅地加载。您不妨考虑将图片托管网页更改为 [AMP](https://www.ampproject.org/) 网页以缩短网页加载时间（在这种情况下，目标网页即是指用户在 Google 图片中点击搜索结果后到达的网页）。

您可以使用 [PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights/) 分析网站的速度，并访问我们的[“网站开发基础”页面](https://developers.google.com/web/fundamentals/performance/why-performance-matters/)以了解与如何改善网站性能相关的最佳做法和技术。

### 添加高画质图片

与模糊不清的图片相比，高画质图片对用户更有吸引力。另外，搜索结果略缩图中的清晰图片也更能吸引用户，因而可以提高获取用户流量的可能性。

### 为图片添加描述性的标题、说明、文件名和文字

Google 会从图片所在网页的内容中提取与图片主题有关的信息（包括图片说明和图片标题）。请尽可能确保将图片放置在与其相关的文字附近以及与其主题相关的网页上。

同样，Google 也可通过文件名推断图片的主题。例如，**my-new-black-kitten.jpg** 比 **IMG00023.JPG** 更适合作为文件名。

### 使用描述性的替代文本

{% embed url="<https://youtu.be/3NbuDpB_BTc>" %}

替代文本是一段描述图片的文本，可协助看不到网页中图片的用户（包括使用屏幕阅读器或网络连接带宽偏低的用户）了解图片内容。

Google 会结合使用替代文字与计算机视觉算法和页面内容来理解图片的主题。如果您决定将图片用作链接，图片的替代文本还可作为定位文字。

在选择替代文本时，请创建实用、信息丰富的内容，并且内容要恰当使用关键字且与网页内容相符。请避免在 Alt 属性中滥用关键字（[关键字堆砌](https://support.google.com/webmasters/answer/66358)），因为这会导致不良的用户体验，并且可能会导致您的网站被视为垃圾网站。

* **效果欠佳（缺少替代文本）：**`<img src="puppy.jpg"/>`
* **效果欠佳（关键字堆砌）：**`<img src="puppy.jpg" alt="puppy dog baby dog pup pups puppies doggies pups litter puppies dog retriever  labrador wolfhound setter pointer puppy jack russell terrier puppies dog food cheap dogfood puppy food"/>`
* **效果较佳：**`<img src="puppy.jpg" alt="puppy"/>`
* **效果最佳：**`<img src="puppy.jpg" alt="Dalmatian puppy playing fetch"/>`

我们建议您通过[审核无障碍性](https://chrome.google.com/webstore/detail/accessibility-developer-t/fpkknkljclfencbdbgkenhalefipecmb)和[使用慢速网络连接模拟器](https://developers.google.com/web/tools/chrome-devtools/network-performance/network-conditions#emulate_network_connectivity)测试您的内容。

### 帮助我们发现您的所有图片

#### 为图片使用语义标记

Google 会解析网页的 HTML 以将图片编入索引，但不会将 CSS 图片编入索引。

* **效果良好：** `<img src="puppy.jpg" alt="A golden retriever puppy" />`
* **效果欠佳：** `<div style="background-image:url(puppy.jpg)">A golden retriever puppy</div>`

#### 使用图片站点地图

图片是网站内容相关信息的重要来源。通过[向图片站点地图添加信息](https://support.google.com/webmasters/answer/178636)，您可以向 Google 提供关于图片的更多详细信息，并提供我们可能无法通过其他方式发现的图片的网址。

与一般的站点地图（设有强制性的跨网域限制）不同，图片站点地图可以包含来自其他网域的网址。这意味着您可以使用 CDN（内容分发网络）托管图片。我们建议您在 Search Console 中验证 CDN 的域名，以便我们能在发现任何抓取错误时通知您。

#### 支持的图片格式

Google 图片支持以下格式的图片：BMP、GIF、JPEG、PNG、WebP 和 SVG。

您还可以将图片内嵌为数据 URI。数据 URI 提供了一种内嵌图片等文件的方式，可以通过将 `img` 元素的 `src` 设置为采用 Base64 编码的字符串来实现。您可以使用以下格式：

```
<img src="data:image/svg+xml;base64,[data]">
```

虽然内嵌图片能够减少 HTTP 请求，但您应慎重判断何时使用这种图片，因为这种图片可能会导致网页大小大幅增加。要了解详情，请参阅[我们的“网站开发基础”页面中的“内嵌图片的利与弊”部分](https://developers.google.com/web/fundamentals/design-and-ux/responsive/images#inlining_pros_cons)。

#### 自适应图片

设计自适应网页可以带来更好的用户体验，因为用户可以在各自设备上使用这些网页。要了解与如何处理网站中的图片相关的最佳做法，请参阅我们的[“网站开发基础”页面中的“图片”一文](https://developers.google.com/web/fundamentals/design-and-ux/responsive/images)。

网页使用 `<img srcset>` 属性或 \<picture> 元素指定自适应图片。但是，某些浏览器和抓取工具无法理解这些属性。我们建议您始终通过 `img src` 属性指定后备网址。

借助“srcset”属性，您可指定同一图片的不同版本，特别是针对不同屏幕尺寸。

**示例：**`<img srcset>`

```
<img srcset="example-320w.jpg 320w,
             example-480w.jpg 480w,
             example-800w.jpg 800w"
     sizes="(max-width: 320px) 280px,
            (max-width: 480px) 440px,
            800px"
     src="example-800w.jpg" alt="responsive web!">
```

`<picture>` 元素是一个容器，用于对同一图片的不同 \<source> 版本进行分组。它提供了一种后备方法，让浏览器能够根据设备功能（例如像素密度和屏幕尺寸）选择合适的图片。对于尚不支持新图片格式的客户端而言，`picture` 元素也非常便于利用内置的优雅降级功能处理新图片格式。

我们建议您在使用 `picture` 标记时，始终提供 img 元素（带 src 属性）作为后备，格式如下：

**示例：**`<picture>`

```
<picture>
  <source type="image/svg+xml" srcset="pyramid.svg">
  <source type="image/webp" srcset="pyramid.webp"> 
  <img src="pyramid.png" alt="large PNG image...">
</picture>
```

### 针对安全搜索进行优化

安全搜索是帐号中的一项设置，用于指定是要在 Google 搜索结果中显示还是要从中屏蔽包含露骨内容的图片、视频和网站。您应该帮助 Google 了解您图片的性质，以便系统酌情为您的图片应用安全搜索设置。

#### 将仅限成人浏览的图片归到同一个网址位置中

如果您的网站包含成人图片，我们**强烈建议**将这些图片单独归为一组（以与您网站上的其他图片区分开来）。例如：http//[www.example.com/adult/image.jpg。](http://www.example.com/adult/image.jpg。)

#### 向成人网页添加元数据

当用户开启安全搜索过滤器后，我们的算法会根据各种信号来判断是否应从搜索结果中滤除某张图片或某个完整网页。就图片而言，这些信号中的一部分是通过机器学习技术生成的，但安全搜索算法也会考虑一些更简单的因素，例如图片曾被用于何处以及曾被在什么样的情境中使用过。

最有决定性的信号之一是网页自身是否已被标记为成人网页。如果您想发布成人内容，我们建议您在自己的网页中添加下面的其中一种元标记：

```
<meta name="rating" content="adult" />
<meta name="rating" content="RTA-5042-1996-1400-1577-RTA" />
```

很多用户都不希望他们的搜索结果中出现成人内容（特别是在孩子也使用同一部设备的情况下）。提供上面的任意一种元标记都有助于提供更佳的用户体验，因为用户不会看到他们不想或不期望看到的结果。

### 最后…

请阅读我们的[搜索引擎优化 (SEO) 新手指南](https://support.google.com/webmasters/answer/7451184)，其中提供了许多与如何提升排名相关的实用信息；如果您有其他疑问，请在[网站站长帮助论坛](https://support.google.com/webmasters/community)中发帖咨询。


# 图片站点地图

您可以向现有站点地图添加图片，或为您的图片创建单独的站点地图。向站点地图添加图片有助于 Google 发现我们可能无法通过其他方式找到的图片（例如，您的网站通过 JavaScript 代码链接的图片）。

### 最佳做法

* 遵循[发布图片的最佳做法](https://support.google.com/webmasters/answer/114016)和[网站站长指南](https://support.google.com/webmasters/answer/35769)。
* 您可以[添加图片元数据](https://support.google.com/webmasters/answer/9150868)，例如联系信息和许可信息，这些信息将显示在图片搜索结果中。

### 站点地图示例

以下所示是网页 `http://example.com/sample.html` 的站点地图条目，该网页包含两张图片。

```
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>http://example.com/sample.html</loc>
    <image:image>
      <image:loc>http://example.com/image.jpg</image:loc>
    </image:image>
    <image:image>
      <image:loc>http://example.com/photo.jpg</image:loc>
    </image:image>
  </url> 
</urlset> 
```

使用上述示例中介绍的语法，您最多可以为每个网页列出 1000 张图片！

### 图片站点地图引用

#### XML 命名空间

图片标记在以下命名空间中定义：

```
image:xmlns="http://www.google.com/schemas/sitemap-image/1.1"
```

#### 图片标记定义

以下站点地图标记专门适用于图片。您必须使用必需的标记；我们建议您使用可选标记提供更多信息和更好的用户体验。

| 标记                     | 是否必需 | 说明                                                                                                                                                                                                                                                               |
| ---------------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `<image:image>`        | 是    | 包含单张图片的所有相关信息。每个 `<url>` 标记最多可包含 1000   `<image:image>` 标记。                                                                                                                                                                                                      |
| `<image:loc>`          | 是    | <p>图片的网址。</p><p>在某些情况下，图片网址可能与您的主网站不在同一个网域中。即便如此也不必担心，只要这两个网域在 Search Console 中都已验证即可。例如，当您使用内容传送网络（如 Google 协作平台）托管图片时，请确保在 Search Console 中验证相应托管网站。此外，您应确保 <a href="https://support.google.com/webmasters/answer/75712">robots.txt</a> 文件允许抓取想要编入索引的所有内容。</p> |
| `<image:caption>`      | 可选   | 图片的说明文字。                                                                                                                                                                                                                                                         |
| `<image:geo_location>` | 可选   | 图片的地理位置。例如 `<image:geo_location>Limerick, Ireland</image:geo_location>`。                                                                                                                                                                                         |
| `<image:title>`        | 可选   | 图片的标题。                                                                                                                                                                                                                                                           |
| `<image:license>`      | 可选   | 指向图片许可的网址。如果需要，您可以[改用图片元数据](https://support.google.com/webmasters/answer/9150868)。                                                                                                                                                                               |


# Google 图片中的图片权限元数据

摄影师、摄影机构和其他相关行业会在图片元数据中提供有关图片的信息。Google 图片会尽可能在搜索结果中显示 [IPTC 元数据](https://iptc.org/standards/photo-metadata/iptc-standard/)。

![移动设备上的图片权限元数据](https://lh3.googleusercontent.com/c-K3KPEdOYLxsAAo7jfN3kLUP9gmF_6sbfSglegu94MGMTBAb8cJQnqEEBz_9WCpHD0=w486)

### 添加图片权限元数据

* Google 支持使用 [IPTC 元数据格式](https://iptc.org/standards/photo-metadata/iptc-standard/)管理图片版权信息。
* 您可以直接在图片中嵌入元数据，也可以将元数据添加到一个单独的文件（称为[辅助信息文件](https://en.wikipedia.org/wiki/Sidecar_file)）中。Google 建议在图片中嵌入元数据，因为这样有助于防止元数据丢失。
* 尽可能尝试指定 IPTC 字段[创作者](https://iptc.org/std/photometadata/specification/IPTC-PhotoMetadata#creator)、[图片出处](https://iptc.org/std/photometadata/specification/IPTC-PhotoMetadata#credit-line)和[版权通知](https://iptc.org/std/photometadata/specification/IPTC-PhotoMetadata#copyright-notice)，以注明正确的图片来源。

我们建议您使用[元数据管理软件管理图片元数据](https://iptc.org/standards/photo-metadata/software-support/)。

![桌面设备上的图片权限元数据](https://lh3.googleusercontent.com/ms4ox30h_56jMTMXPa65gCvBivghN5wDvUVRib-ikB2Gl0emVQeety5k-pv25Hnu61Vo=w895)

### 是否可以移除图片元数据？

移除图片元数据可减小图片文件大小，从而加快网页加载速度。不过您应当谨慎，因为在某些管辖区，移除元数据可能是非法的。图片元数据可在线提供图片版权和许可信息。Google 建议您至少保留与图片权限信息和标识相关的关键元数据。例如，尽可能尝试保留 IPTC 字段[创作者](https://iptc.org/std/photometadata/specification/IPTC-PhotoMetadata#creator)、[图片出处](https://iptc.org/std/photometadata/specification/IPTC-PhotoMetadata#credit-line)和[版权通知](https://iptc.org/std/photometadata/specification/IPTC-PhotoMetadata#copyright-notice)，以注明正确的图片来源。<br>


# 视频最佳做法

让 Google 搜索能够发现您的视频

人们每天通过 Google 执行数十亿次搜索，其中有许多次是在查找视频内容。如果您遵循下面列出的最佳做法（以及我们的常规[网站站长指南](https://support.google.com/webmasters/answer/35769)），就可以提高您的视频出现在搜索结果中的几率。

Google 搜索中的视频结果会同时显示在合并搜索结果和视频搜索结果中。当用户点击视频结果时，系统会将他们转到您的网页（用户可在此观看您的视频）。

* [Google 如何抓取视频](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#how-google-crawls)
* [关于视频搜索结果](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#video-search-results)
* [最佳做法](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#best-practices)
* [如何区分各个网址](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#which-url-is-which)
* [从 Google 搜索结果中屏蔽特定视频](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#block_video)
* [常见的视频索引编制错误](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#common_errors)

{% embed url="<https://youtu.be/P1YrtGkwm5M>" %}

### Google 如何抓取视频

要使视频出现在搜索结果中，Google 必须了解该视频。Google 可以通过以下方式提取视频的相关信息：

* Google 可以抓取该视频（如果采用[支持的视频编码](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#file-types)）并提取缩略图和预览信息。Google 也可以从相应文件的音频和视频中提取一些有限的含义。
* Google 可以从托管该视频的网页中提取信息，包括网页文本和元标记。
* Google 可以使用与该视频关联的结构化数据 ([VideoObject](https://developers.google.com/search/docs/data-types/video)) 或[视频 Sitemap](https://support.google.com/webmasters/answer/80471)。

**YouTube 内容**：YouTube 视频始终都可供抓取。不过，提供视频 Sitemap 或结构化数据仍然很有帮助，此类内容可帮助 Google 在您的网页上找到嵌入式 YouTube 视频。此外，站点地图和结构化数据还有助于您向我们提供有关视频的其他信息。

### 关于视频搜索结果

您的视频如何（或能否）显示在搜索结果中取决于您提供给 Google 的信息量。Google 需要两项信息才能将您的视频显示在搜索结果中：缩略图和指向实际视频文件的链接。但是，您提供的信息越多，搜索结果体验就越好。

以下是视频搜索结果呈现的两个基本级别：

* **基本搜索结果呈现**：只要您向 Google 提供最低限度的信息，您的视频就能够以缩略图和链接的形式显示在合并搜索结果和视频搜索结果中。但是您不会获得任何增强功能，例如视频预览或内容解析。最低限度的信息是缩略图和指向视频文件的链接。

  ![](https://lh3.googleusercontent.com/AM3p4OOlOZve_luCcU6EJzIijzE22n--S13A6VA5u9sHkN2VHhuLZsoTR1dGu-_2rI06=w500)\
  基本视频搜索结果示例
* **增强型搜索结果呈现**：如果您提供更多信息，Google 就可针对您的视频提供更多功能，例如视频预览、视频时长、视频日期和提供商信息、根据用户所在国家/地区或所用搜索设备限制搜索结果，等等。

  ![Sample desktop video search result](https://lh3.googleusercontent.com/VBWrDcJ-66dezin7HYNeyp1fx_iD9tQsbLTdSto5aitH6M2OkBvg-JzcwA22TIooQCw=w250)\
  增强型桌面视频搜索结果示例

  ![Sample mobile video search result](https://lh3.googleusercontent.com/k1FUSMatP4-D84YVwE1nZfdUOztfTXiuzIBWYbFSWJSHBUea7y3ZYysT6SNu0ddGC-o=w300)\
  增强型移动视频搜索结果示例

### 最佳做法

**视频搜索结果的最低要求：**

如果您希望您的视频能够显示在搜索结果中，必须满足以下要求：

* **Google 必须能够找到该视频**。系统会根据是否存在某种 HTML 标记（例如 `<video>`、`<embed>` 或 `<object>`）来识别网页中的视频。请确保网页不[需要复杂的用户操作或特定的网址片段即可加载](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#complex-javascript)，否则 Google 可能找不到它。**提示**：虽然我们可以通过自然抓取找到网页中内嵌的视频，但您也可以通过发布[视频 Sitemap](https://support.google.com/webmasters/answer/80471) 帮助我们找到您的视频。
* **您必须**[**为视频提供高品质的缩略图**](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#thumbnails)**。**
* **确保每个视频都位于可公开访问的网页中**，用户可以在其中观看视频。该网页不应该要求用户登录，也不应该被 [robots.txt](https://support.google.com/webmasters/answer/6062608) 或 [noindex](https://support.google.com/webmasters/answer/93710) 屏蔽，必须可供 Google 访问。
* **视频内容应确切吻合其所在网页的内容**。例如，如果您拥有一个介绍桃饼的食谱网页，不要嵌入笼统介绍甜点的视频。
* 确保您在视频 Sitemap 或视频标记中提供的任何信息与实际视频内容**一致**。

\
**为了达到最佳效果，请注意以下事项：**

如果您执行这些额外的步骤，Google 就可以为您的视频提供更好的搜索结果：

* [确保 Google 可以抓取您的视频文件](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#make-crawlable)。如果 Google 可以抓取该文件，便可以为您生成缩略图并提供其他功能。
* [避免使用复杂的逻辑或脚本来显示或隐藏视频](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#loading_conditionals)。如果 Google 需要完成复杂的用户互动或满足复杂的资源加载条件，Google 可能无法找到您的所有视频。
* [在视频托管网页中提供良好的用户体验](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#good-experience)。
* 提供描述视频的[结构化数据](https://developers.google.com/search/docs/data-types/video)和/或[视频 Sitemap](https://support.google.com/webmasters/answer/80471)。如果 Google 已经知悉该网页，结构化数据是最佳选择；站点地图可以帮助 Google 找到新内容或了解新内容或更改过的内容。有些网站会针对所有视频使用页内结构化数据，同时使用视频 Sitemap 将新视频、限时视频或难以找到的视频告知 Google。
  * **测试结构化数据或站点地图**：
    * 您可以使用[富媒体搜索结果测试工具](https://search.google.com/test/rich-results)测试视频结构化数据。
    * 如需进行测试，或需要提交站点地图或 Feed，请先在 Search Console 中[添加并验证](https://support.google.com/webmasters/answer/34592)您的网站。确保您已验证包含站点地图或 Feed 的网站，以及该站点地图或 Feed 中引用的所有网站。在 [Search Console 站点地图工具](https://search.google.com/search-console/sitemaps)中测试或提交站点地图。
* 在结构化数据或站点地图中为每个视频提供独特的描述性数据。
* 将[任何内容更新](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#updating-content)告知 Google。
* [正确地处理已移除的视频](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#remove_video)。
* [在 Google Search Console 中添加并验证您的网站](https://support.google.com/webmasters/answer/34592)。Search Console 会显示 Google 在抓取您的网站时遇到的所有问题。如果您使用了站点地图，请[通过 Search Console 提交站点地图，或将其列在 robots.txt 文件中](https://support.google.com/webmasters/answer/183668)。
* 了解[常见的视频索引编制错误](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#common_errors)。
* 如果您有直播视频，您可以在搜索结果中[将其标记为直播](https://developers.google.com/search/docs/data-types/livestream)。

#### 为视频提供高品质缩略图

视频必须具有可显示在搜索结果中的缩略图，才能出现在 Google 视频搜索结果中。

**您可以通过以下几种方式提供（或启用）缩略图：**

* 如果使用 `<video>` HTML 标记，请指定 `poster` 属性。
* 在视频 Sitemap 中，指定 `<video:thumbnail_loc>`
* 在结构化数据中，指定 `VideoObject.thumbnailUrl`
* 以[可抓取的格式](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#make-crawlable)提供视频，我们可以为您生成缩略图。

**首选格式**：JPG、PNG

**尺寸**：介于 160x90 和 1920x1080 像素之间

**位置**：预览缩略图必须可供 Googlebot 访问，即未被 [robots.txt](https://support.google.com/webmasters/answer/6062608) 屏蔽，也不要求登录。

#### 确保您的视频可供抓取

只要 Google 可以抓取您的视频，我们便可以为您生成缩略图、启用视频预览并提供其他功能。

**为确保视频可供抓取，请注意以下事项：**

* 视频必须[采用支持的格式](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#file-types)。
* 不能禁止 Google 访问视频托管网页和实际视频文件。（“已屏蔽”是指该网页或文件受付费墙保护、要求登录、被 [noindex](https://support.google.com/webmasters/answer/93710) 或 [robots.txt](https://support.google.com/webmasters/answer/6062608) 屏蔽。）
* 视频托管网页和流式传输实际视频的服务器必须具有一定的带宽才能被抓取。因此，如果您的着陆页（位于 `example.com/puppies.html`）具有通过 `somestreamingservice.com` 提供的嵌入式小狗视频，则必须取消屏蔽 `example.com` 和 `somestreamingservice.com`，并且二者必须具有足够的服务器负载。

**支持的视频编码**

Google 可抓取以下类型的视频文件：.3g2、.3gp2、.3gp、.3gpp、.asf、.avi、.divx、.f4v、.flv、.m2v、.m3u8、.m4v、.mkv、.mov、.mp4、.mpe、.mpeg、.mpg、.ogv、.qvt、.ram、.rm、.vob、.webm、.wmv、.xap大多数移动网络浏览器已不再支持 Flash，并且 Adobe 计划在 2020 年弃用 Flash。如果您的视频采用 Flash 格式，不妨考虑将其转码为移动浏览器支持的其他格式。

#### 使用结构化数据或视频 Sitemap 描述您的视频

您可以使用结构化数据和/或视频 Sitemap 向 Google 提供有关您视频的其他信息。提供这些额外的信息可以在搜索结果中启用更多功能，并帮助我们更好地了解您的视频和对其进行排名。

这两种技术可以向 Google 呈现相同的信息，但视频 Sitemap 可以帮助 Google 更快地找到新内容或更新内容；相对于站点地图，某些人可能更熟悉结构化数据，并且可能与其网站使用结构化数据实现富媒体搜索结果的方式更加一致。您可以在自己的网站上同时采用这两种技术，但如果您这样做，请确保在使用这两种技术时您的数据是一致的。

**结构化数据**

您可以在托管网页上添加描述视频的结构化数据。结构化数据是指使用标记或 JSON 以明确定义的格式提供的信息。当 Google 抓取此网页时，它可以解读该格式以提取视频的相关信息。

您可以使用多种格式，但 Google 强烈建议使用 schema.org 的 `VideoObject` 语法并采用 JSON-LD 格式。Schema.org VideoObject（**推荐**）

在网页上嵌入 `VideoObject` 代码。`VideoObject` 与包含匹配源网址的嵌入式视频相关联。

[了解如何在网页中为每个视频嵌入 VideoObject 说明](https://developers.google.com/search/docs/data-types/video)。

**VideoObject JSON-LD 示例**

```
<html>
<head>
  <title>一小时内炸好肉排</title>
</head>
<body>
  <script type="application/ld+json">
  {
    "@context": "http://schema.org",
    "@type": "VideoObject",
    "name": "炸肉排攻略",
    "description": "如何在一小时内就能炸好美味的肉排",
    "thumbnailUrl": "https://example.com/imgs/schnitzel-small.jpg",
    "uploadDate": "2015-02-05T08:00:00+08:00",
    "duration": "PT1M33S",
    "contentUrl": "https://streamserver.example.com/schnitzel.mp4"
  }
  </script>
  <h1>人人都爱炸肉排</h1>

  ... 省略了与炸肉排相关的网页内容...

  <video width="420"
      src="https://streamserver.example.com/schnitzel.mp4"
      poster="https://example.com/imgs/schnitzel-small.jpg"/>
</body>
</html>
```

**使用简单的 VideoObject 还是电视/影片富媒体搜索结果？**

如果您只是想利用评论或演员表等信息描述电视节目或影片，或如果您的视频要求执行购买或租借等复杂的操作，您应在网站上实现[电视或影片结构化数据类型](https://developers.google.com/search/docs/data-types/tv-movie)。使用电视或影片结构化数据可以在 [Google 搜索中显示富媒体搜索结果](https://developers.google.com/search/docs/guides/images/search-gallery-tvMovies01.png)，其中包括评分、评论和演员信息，以及指向免费或付费在线播放服务的链接。富媒体搜索结果只会显示在合并搜索结果窗格中。 Open Graph 协议

**视频 Sitemap**

视频 Sitemap 是 Google 用于在您的网站上查找视频的 XML 站点地图，也可以向 Google 提供视频的相关信息。视频 Sitemap 条目可以使用与 `VideoObject` 结构化数据元素相同的方式描述视频。使用视频 Sitemap 的优势在于，它还可以帮助 Google 找到新视频或更新的视频，并且可以在一个文件中描述多个视频，而无需 Google 抓取每个网页并逐一发现各项更改。

[了解如何创建视频 Sitemap](https://support.google.com/webmasters/answer/80471)。

#### 更新内容

{% embed url="<https://youtu.be/l0xW6tmbTI8>" %}

您可以在视频发生更改时通知 Google，具体取决于您如何帮助我们查找或读取您的内容。如果您只是替换了视频网址或源文件但未做其他更改，Google 可能不会注意到相应更改。

* **结构化数据**：当您的页内视频结构化数据发生更改时，Google 会在下次抓取该网页时看到相应更改。您可以使用普通站点地图或视频 Sitemap 告知 Google 发生更改的网页。
* **视频 Sitemap 和 mRSS**：当您发布视频 Sitemap 后，Google 会定期重新抓取它，并使用任何已更改的视频数据更新搜索结果。您也可以重新提交站点地图或告知 Google 发生更改的站点地图，以请求立即重新抓取。详细了解如何[提交站点地图并使用 HTTP 请求更新站点地图](https://support.google.com/webmasters/answer/6065812#sitemap)。

#### 移除视频

建议采用以下方式将视频从网站中移除：

* 对于包含已移除或已失效视频的着陆页，**返回 404（未找到）**&#x48;TTP 状态代码。除了 404 响应代码之外，您仍可返回网页的 HTML，以便让大多数用户了解实际变化。
* 在 schema.org 结构化数据、视频 Sitemap（使用 `<video:expiration_date>` 元素）或 mRSS Feed（`<dcterms:valid>` 标记）中**指明失效日期**。下面这个视频 Sitemap 示例包含一个已于 2009 年 11 月失效的视频：

  ```
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
          xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"> 
    <url> 
      <loc>http://www.example.com/videos/some_video_landing_page.html</loc>
      <video:video>
        <video:thumbnail_loc>
            http://www.example.com/thumbs/123.jpg
        </video:thumbnail_loc> 
        <video:title>
            适合夏季的烧烤排餐
        </video:title>
        <video:description>
            小鲍教您如何每次都能烤出美味牛排
        </video:description>
        <video:player_loc>
            http://www.example.com/videoplayer?video=123
        </video:player_loc>
        <video:expiration_date>2009-11-05T19:20:30+08:00</video:expiration_date>
      </video:video> 
    </url> 
  </urlset>
  ```

**如果您需要立即从搜索结果中移除视频**，还应[提交移除请求](https://www.google.com/webmasters/tools/removals)。请注意，为了成功完成此请求，该视频不能存在，也不能可供 Google 访问，即返回 404 代码或需要登录。

#### 避免使用复杂的视频加载条件

在设计您的网站时，请合理地配置您的视频网页，以便无需进行过于复杂的用户互动或满足过于复杂的条件就能加载视频。例如，如果您只是在某些情况下使用过于复杂的 JavaScript 在 JavaScript 中嵌入视频对象（例如，在网址中使用哈希标记），那么我们也可能只能找到您的部分视频。如果您未使用站点地图列出视频，这一点尤为重要。

#### 在视频网页中营造精彩的用户体验

除了精彩的视频外，您还应该考虑如何围绕内容设计 HTML 网页。例如，应该考虑以下事项：

* **为每个视频创建独立的着陆页**，您可以在其中收集视频的所有相关信息。如果要执行此操作，请确保在每个网页上提供唯一的信息，例如描述性标题和说明。
* 让用户尽可能方便地在每个着陆页上**查找和播放视频**。在显眼的位置嵌入视频播放器（采用广受支持的视频格式），可以增加视频对用户的吸引力，并且更方便 Google 将其编入索引。

#### 按平台限制用户

您可以根据搜索用户的平台限制视频的搜索结果。平台包括计算机浏览器、移动设备浏览器和电视浏览器。

{% embed url="<https://youtu.be/6xdSwPE7sd0>" %}

### 使用视频 Sitemap 按平台进行限制

如果您的视频没有任何平台限制，请勿添加平台限制标记。

您可以在视频 Sitemap 中使用 [`<video:platform>` 标记](https://support.google.com/webmasters/answer/80471#platform)允许或阻止视频显示在指定设备上的搜索结果中。每个视频条目只能有 1 个 `<video:platform>` 标记。该标记具有一个必需属性 `relationship`，可指定列出的平台是被排除在外还是必需平台。

**示例**

在以下视频 Sitemap 示例中，视频将仅在桌面设备和移动设备的浏览器上显示。

```
<url>
  <loc>http://www.example.com/videos/some_video_landing_page.html</loc>
  <video:video>
    <video:thumbnail_loc>
        http://www.example.com/thumbs/123.jpg
    </video:thumbnail_loc>
    <video:title>适合夏季的烧烤排餐</video:title>
    <video:description>
        小鲍教您如何每次都能烤出美味牛排
    </video:description>
    <video:player_loc>
        http://www.example.com/videoplayer?video=123
    </video:player_loc>
    <video:platform relationship="allow">web mobile</video:platform>
  </video:video>
</url>
```

### 使用结构化数据或 mRSS 按平台进行限制

VideoObject 或 mRSS Feed 没有任何平台限制标记。

#### 按国家/地区限制用户

您可以根据搜索用户的地理位置限制视频的搜索结果。如果您的视频没有任何国家/地区限制，请勿添加国家/地区限制标记。

{% embed url="<https://youtu.be/ndynLJW6CBQ>" %}

### 使用视频 Sitemap 按国家/地区进行限制

您可以在视频 Sitemap 中使用 [`<video:restriction>` 标记](https://support.google.com/webmasters/answer/80471#country-restriction)允许或拒绝视频在特定国家/地区显示。每个视频条目只能有 1 个 `<video:restriction>` 标记。

`<video:restriction>` 标记应该包含一个或多个用空格分隔的 [ISO 3166](http://en.wikipedia.org/wiki/ISO_3166) 国家/地区代码。`relationship` 属性是必需项，可指定限制的类型。

* **`relationship="allow"`** - 视频将仅在指定的国家/地区显示。如果未指定国家/地区，视频不会在任何地方显示。
* **`relationship="deny"`** - 视频将在除指定国家/地区外的所有其他地方显示。如果未指定国家/地区，视频将在所有地方显示。

在以下视频 Sitemap 示例中，视频将仅在加拿大和墨西哥显示。

```
   <url> 
     <loc>http://www.example.com/videos/some_video_landing_page.html</loc>
     <video:video>
       <video:thumbnail_loc>
           http://www.example.com/thumbs/123.jpg
       </video:thumbnail_loc> 
       <video:title>适合夏季的烧烤排餐</video:title>
       <video:description>
           小鲍教您如何每次都能烤出美味牛排
       </video:description>
       <video:player_loc>
           http://www.example.com/player?video=123
       </video:player_loc>
       <video:restriction relationship="allow">ca mx</video:restriction> 
     </video:video> 
   </url>
```

### 使用结构化数据按国家/地区进行限制

&#x20;如果您使用 `VideoObject` 结构化数据描述视频，请设置 [`VideoObject.regionsAllowed` 属性](https://schema.org/VideoObject)，指定哪些区域内的用户可获得视频搜索结果。如果不添加此属性，所有区域内的用户都可在搜索结果中看到该视频。

### 使用 mRSS 按国家/地区进行限制

在 mRSS Feed 中，您可以将 [`media:restriction` 标记](https://support.google.com/webmasters/answer/80471#mrss)的必需属性 `type` 设置为 `country`，为视频指定国家/地区限制。`media:restriction` 还要求将 `relationship` 属性设置为 `allow` 或 `deny`，并接受一系列用空格分隔的 ISO 3166 国家/地区代码。

在以下 mRSS 条目示例中，视频将在除美国和加拿大以外的所有其他地方显示。

```
  <item xmlns:media="http://search.yahoo.com/mrss/" xmlns:dcterms="http://purl.org/dc/terms/">
    <link>http://www.example.com/examples/mrss/example.html</link>
    <media:content url="http://www.example.com/examples/mrss/example.mp4"
                   fileSize="405321" type="video/x-flv" height="240"
                   width="320" duration="120" medium="video"
                   isDefault="true">
      <media:title>适合夏季的烧烤排餐</media:title>
      <media:description>
          每次都能烤出美味牛排
      </media:description>
      <media:thumbnail
          url="http://www.example.com/examples/mrss/example.png"
          height="120" width="160"/>
    </media:content>
    <media:restriction relationship="deny" type="country">us ca</media:restriction>
  </item>
```

详细了解如何针对 Google 视频搜索[使用 mRSS Feed](https://support.google.com/webmasters/answer/80471#mrss)，或详细了解 [mRSS 规范](http://www.rssboard.org/media-rss#media-restriction)中的 `media:restriction` 标记。

### 如何区分各个网址？

网页上可能有多个网址与某个视频文件相关联。下面简要说明了其中的大多数网址：

![Diagram of URLs in a page](https://lh3.googleusercontent.com/cOrYUJXSEsqESYRI9M9YXDEb0-lcuV3pYEsUkxzMWLJBPGNlDKWQ6ZourcpCC4Ea5lc=w430)

|       | 标记                                                                                                                                                                                                                                       | 说明                                                                                                                                                                                                                                                                                               |
| ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **1** | <ul><li><code>\<loc></code><br>（视频 Sitemap 标记）</li></ul>                                                                                                                                                                                 | <p>视频托管网页的网址。<strong>示例</strong>：</p><p><code>\<loc>[https://example.com/news/worlds-biggest-cat.html\&#x3C;/loc>](https://example.com/news/worlds-biggest-cat.html\&#x3C;/loc>)</code></p>                                                                                                      |
| **2** | <ul><li><code>VideoObject.embedUrl</code><br>（结构化数据）</li><li><code>\<video:player\_loc></code><br>（视频 Sitemap 标记）</li><li><code>\<iframe src="..."></code></li></ul>                                                                     | <p>自定义播放器的网址。通常是网页上的 <code>\<iframe></code> 或 <code>\<embed></code> 标记的 src 值。<strong>示例</strong>：</p><p><code>\<video:player\_loc></code><br><code>[https://archive.example.org/cats/1234\&#x3C;/video:player\_loc>](https://archive.example.org/cats/1234\&#x3C;/video:player_loc>)</code></p> |
| **3** | <ul><li><code>\<video src="..."></code><br>（HTML 标记）</li><li><code>\<embed src="..."></code><br>（HTML 标记）</li><li><code>\<video:content\_loc></code><br>（视频 Sitemap 标记）</li><li><code>VideoObject.contentUrl</code><br>（结构化数据）</li></ul> | <p>实际内容文件的网址，这些文件可以位于本地网站上，也可以位于流式传输服务上。<strong>示例</strong>：</p><p><code>\<video src="videos.example.com/cats/1234.mp4"></code></p>                                                                                                                                                              |

在添加结构化数据、视频 Sitemap 或备用站点地图时，您应该指向嵌入式播放器或实际文件（具体视相应字段而定）。

### 从 Google 搜索结果中屏蔽特定视频

如果您想从 Google 搜索结果中隐藏某个视频，下面这几种方法都行得通：

* 为托管网页及视频文件显示某种形式的登录屏幕。
* 在视频 Sitemap 中为视频添加[国家/地区限制](https://support.google.com/webmasters/answer/156442?hl=zh-Hans\&ref_topic=2370565\&dark=0#restrict_by_country)，然后指定一个空的“allow”列表：\
  `<video:restriction relationship="allow"></video:restriction>`
* [使用 robots.txt](https://support.google.com/webmasters/answer/6062608) 屏蔽源视频和/或托管网页。如果视频和托管网页是在同一网站上，则既屏蔽源文件网址（contentUrl 地址）也屏蔽托管网页网址。如果视频托管在其他 CDN 上，只需屏蔽托管网页/播放器网页。
* 向针对托管网页和文件（如果文件存在于您的网页上）的请求返回 [noindex HTTP 响应](https://support.google.com/webmasters/answer/93710)。

请注意，上述方法都无法防止其他网页链接到您的视频或网页。

### 常见的视频索引编制错误

下文介绍了我们见过的一些最常见的视频索引编制错误，以及解决这些错误的建议方法，可提高您的视频显示在搜索结果中的几率。您还应该查看我们的[网站站长指南](https://support.google.com/webmasters/answer/35769)。

#### 使用 robots.txt 屏蔽资源

常见的做法是使用 robots.txt 阻止搜索引擎抓取 JavaScript、视频和图片文件。要让 Google 将视频编入索引，我们必须能够看到在结构化数据或站点地图中指定的缩略图、该视频所在的网页、视频本身以及加载该视频所需的任何 JavaScript 或其他资源。确保您的 robots.txt 规则不会屏蔽上述任何与视频相关的资源。

如果您使用的是视频 Sitemap 或 mRSS，请确保 Google 可以访问您提交的任何站点地图或 mRSS Feed。如果这些内容已被 robots.txt 屏蔽，我们将无法读取它们。

[详细了解 robots.txt](https://support.google.com/webmasters/answer/6062608)。

#### 低画质的缩略图

我们接受任意格式的缩略图，但发现使用 .png 和 .jpg 图片效果最佳。图片必须至少为 160x90 像素，且不得超过 1920x1080 像素。

#### 重复的缩略图、标题或说明

对不同视频使用相同的缩略图、标题或说明可能会影响视频索引编制效果，并且可能会令用户感到困惑。确保每个视频的数据都是唯一的。对于系列性内容，一个常见的问题是多个视频具有相同的标题屏幕缩略图。

#### 失效日期设为过去的时间

如果 Google 发现某个视频的失效日期已过，我们便不会将其收录到任何搜索结果中。这包括站点地图、页内结构化数据以及网站头部中的元失效标记中的失效日期。确保每个视频的失效日期都正确无误。虽然此方法对于视频在失效日期之后不再显示的情形非常有用，但您往往会在无意中将可用视频的失效日期设为过去的日期。如果视频不会失效，请不要包含任何失效信息。

#### 列出已删除的视频

从网页中删除嵌入的视频后，某些网站会用 Flash 播放器告知用户视频已不能观看。这样可能会使搜索引擎出现问题，因此建议选用以下措施：

* 对于包含已移除或已失效视频的着陆页，**返回 404（未找到）**&#x48;TTP 状态代码。除了 404 响应代码之外，您仍可返回相关网页的 HTML，以便让大多数用户了解实际情况。
* 在提交给 Google 的页内结构化数据、视频 Sitemap（使用 `<video:expiration_date>` 元素）或 mRSS Feed（`<dcterms:valid>` 标记）中**指明失效日期**。

#### 复杂的 JavaScript 和网址片段

在设计网站时，不要使用任何过于复杂的 JavaScript 配置视频网页，这一点很重要。如果您只是在某些情况下使用过于复杂的 JavaScript 在 JavaScript 中嵌入视频对象，那么我们也可能无法正确地将您的视频编入索引。不支持需要“哈希标记”或[片段标识符](https://en.wikipedia.org/wiki/Fragment_identifier)的内容网址或着陆页网址。另外，在网页上使用 Flash 可能会致使该网页无法被高效地编入索引。为了获得最佳效果，请使用纯 HTML 标记（而不是 Flash）显示您的视频标题和说明。

如果您使用的是页内结构化数据，则应该无需运行 Flash 或其他嵌入式播放器即可提供这些结构化数据。

#### 小型视频、隐藏的视频或很难找到的视频

确保您的视频显示在视频网页上并且很容易找到。Google 建议为每个视频使用一个独立的网页，并且每个视频的描述性标题或说明都必须是独一无二的。视频应显示在网页上的显眼位置，不应处于隐藏状态或很难找到。


# 视频 Sitemap 及其替代方案

视频 Sitemap 是一个[站点地图](https://support.google.com/webmasters/answer/156184)，其中包含有关托管在您网页上的视频的其他信息。创建视频 Sitemap 可有效帮助 Google 找到并了解您网站上的所有视频内容，避免漏掉某些内容，尤其是最近添加的内容或 Google 通过常规抓取机制可能发现不了的内容。Google 视频 Sitemap 是对[站点地图标准](http://www.sitemaps.org/)的扩展。

虽然 Google 建议您使用视频 Sitemap，但我们也支持 [mRSS Feed](https://support.google.com/webmasters/answer/80471?hl=zh-Hans\&ref_topic=2370565\&dark=0#mrss)。您应该遵循[视频最佳做法](https://support.google.com/webmasters/answer/156442)，以便在 Google 搜索中获得最佳效果。

### 视频 Sitemap 准则

**以下是视频 Sitemap 的基本准则：**

* 您既可以单独为视频创建站点地图，也可以在现有站点地图中嵌入视频 Sitemap，哪种方式更方便就选哪种。
* 您可以在一个网页上托管多个视频。
* 每个站点地图条目是托管一个或多个视频的网页的网址。每个站点地图条目的结构如下所示：

  ```
  <url>
     <loc>https://example.com/mypage</loc>      <!-- 托管网页的网址 -->
     <video> ... 视频 1 的相关信息 ... </video>
     ... 根据需要添加任意多个其他 <video> 条目...
  </url>
  ```
* 不要列出与托管网页不相关的视频。例如，如果视频只是对网页的小小增补，或者与主要文字内容不相关，则不要列出此类视频。
* 视频 Sitemap 中的每个条目都包含您提供的一组必需值、推荐值或可选值。推荐值和可选值可提供实用的元数据，这些元数据能完善您的视频搜索结果并帮助 Google 将您的视频收录到搜索结果中。[要查看站点地图的一系列元素，请参阅下表](https://support.google.com/webmasters/answer/80471?hl=zh-Hans\&ref_topic=2370565\&dark=0#schema_tags)。
* Google 可能会使用视频着陆页上的文字，而不使用您在站点地图中提供的文字（如果网页文字被视为比站点地图中的信息更为实用的话）。
* 由于 Google 采用复杂的索引编制算法，因此无法保证会将您的视频编入索引，也无法保证何时会将视频编入索引。
* 如果 Google 无法在您提供的网址上发现视频内容，则站点地图条目将被忽略。
* 您提供的每个 Sitemap 文件**所包含的网址元素都不得超过 5 万个**。如果视频超过了 5 万个，您可以提交[多个站点地图](https://support.google.com/webmasters/answer/75712)和[站点地图索引文件](https://support.google.com/webmasters/answer/71453)。您无法嵌套站点地图索引文件。请注意，如果您要添加可选标记，可能您还未达到视频数量上限（5 万个），就已经达到未压缩文件大小的上限 (50 MB)。
* Google 必须能够访问源文件或播放器（也就是说，源文件或播放器不能[被 robots.txt 屏蔽](https://support.google.com/webmasters/answer/6062608)、要求登录或因其他原因无法供 Googlebot 访问）。我们不支持需要通过流协议下载视频源的元文件。
* 所有文件都必须可供 Googlebot 访问。如果您想阻止垃圾内容发布者访问在 `<player_loc>` 或 `<content_loc>` 网址上的视频内容，请[验证访问您服务器的任何漫游器是否确实为 Googlebot](https://support.google.com/webmasters/answer/80553)。
* 确保 robots.txt 文件未屏蔽每个站点地图条目中包含的任何项（包括托管网页网址、视频网址和缩略图网址）。[详细了解 robots.txt。](https://support.google.com/webmasters/answer/156449)
* Google 会验证您为每个视频提供的信息是否与网站上的内容相符。如果不相符，可能不会将您的视频编入索引。
* 您可以在一个站点地图中指定来自不同网站的网页。所有网站（包括包含您的站点地图的网站）都必须通过 Search Console 进行验证。[详细了解如何管理多个网站的站点地图。](https://support.google.com/webmasters/answer/75712)

### 站点地图示例

以下是包含一个托管一个视频的网页的示例视频 Sitemap。此示例包含 Google 使用的所有标记。

```
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
   <url>
     <loc>http://www.example.com/videos/some_video_landing_page.html</loc>
     <video:video>
       <video:thumbnail_loc>http://www.example.com/thumbs/123.jpg</video:thumbnail_loc>
       <video:title>适合夏季的烧烤排餐</video:title>
       <video:description>小安教您如何每次都能烤出美味牛排</video:description>
       <video:content_loc>
           http://streamserver.example.com/video123.mp4</video:content_loc>
       <video:player_loc>
         http://www.example.com/videoplayer.php?video=123</video:player_loc>
       <video:duration>600</video:duration>
       <video:expiration_date>2021-11-05T19:20:30+08:00</video:expiration_date>
       <video:rating>4.2</video:rating>
       <video:view_count>12345</video:view_count>
       <video:publication_date>2007-11-05T19:20:30+08:00</video:publication_date>
       <video:family_friendly>yes</video:family_friendly>
       <video:restriction relationship="allow">IE GB US CA</video:restriction>
       <video:price currency="EUR">1.99</video:price>
       <video:requires_subscription>yes</video:requires_subscription>
       <video:uploader
          info="http://www.example.com/users/grillymcgrillerson">GrillyMcGrillerson
       </video:uploader>
       <video:live>no</video:live>
     </video:video>
   </url>
</urlset>
```

### XML 命名空间

视频 Sitemap 标记在以下名称空间中定义：

```
xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"
```

### 视频 Sitemap 标记定义

您可以在 [rssboard.org](http://www.rssboard.org/media-rss) 上查找有关媒体站点地图的更多文档。

| 标记                              | 是否必需？                                                                                                                                            | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `<url>`                         | **必需**                                                                                                                                           | 您网站上的单个托管网页的父级标记。[由基本站点地图格式定义。](https://www.sitemaps.org/protocol.html)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `<loc>`                         | **必需**                                                                                                                                           | <p>指定在其中托管一个或多个视频的托管网页。用户点击 Google 搜索中的视频结果后，系统会将他们转到此网页。此网址在站点地图中必须是唯一的。<a href="https://www.sitemaps.org/protocol.html">由基本站点地图格式定义。</a></p><p><strong>对于单个网页上的多个视频</strong>，为该网页创建一个 <<code>loc></code> 标记，并为该网页上的每个视频创建一个子级 <code>\<video></code> 元素。</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `<video:video>`                 | **必需**                                                                                                                                           | `<loc>` 所指定网页上的单个视频的所有相关信息的父级元素。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `<video:thumbnail_loc>`         | **必需**                                                                                                                                           | 指向视频缩略图文件的网址。[请参阅缩略图要求。](https://support.google.com/webmasters/answer/156442#thumbnails)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `<video:title>`                 | **必需**                                                                                                                                           | 视频标题。所有 HTML 实体都应进行转义或者封装在一个 [`CDATA` 块](http://wikipedia.org/wiki/CDATA)中。建议此标题与网页上显示的视频标题一致。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `<video:description>`           | **必需**                                                                                                                                           | 视频的说明。不得超过 2048 个字符。所有 HTML 实体都应进行转义或者封装在一个 [`CDATA` 块](http://wikipedia.org/wiki/CDATA)中。必须与网页上显示的说明一致（不必逐字匹配）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `<video:content_loc>`           | <p><em><strong>必需：</strong></em><br><strong>video:content\_loc</strong><br><em><strong>或</strong></em><br><strong>video:player\_loc</strong></p> | <p>指向实际视频媒体文件的网址。<a href="https://support.google.com/webmasters/answer/156442#file-types">应采用其中一种支持的格式。</a></p><p>HTML 不是支持的格式。允许使用 Flash，但大多数移动平台已不再支持 Flash，因此可能不太经常被编入索引。</p><p>不得与 <code>\<loc></code> 网址相同。</p><p>相当于结构化数据中的 <a href="https://developers.google.com/search/docs/data-types/video"><code>VideoObject.contentUrl</code></a>。</p><p><strong>最佳做法</strong>：如果您想限制内容访问权限，但仍然希望 Googlebot 抓取该内容，请确保 Googlebot 能够使用<a href="https://support.google.com/webmasters/answer/80553">反向 DNS 查找</a>访问您的内容。</p>                                                                                                                                                                                                                                                                                                                                                                                                             |
| `<video:player_loc>`            | <p><em><strong>必需：</strong></em><br><strong>video:content\_loc</strong><br><em><strong>或</strong></em><br><strong>video:player\_loc</strong></p> | <p>指向<strong>特定</strong>视频的播放器的网址。通常情况下，是指 <code>\<embed></code> 标记的 <code>src</code> 元素中的信息。不得与 <code>\<loc></code> 网址相同。对于 YouTube 视频，使用此值而不是 <code>video:content\_loc</code>。它相当于结构化数据中的 <a href="https://developers.google.com/search/docs/data-types/video"><code>VideoObject.embedUrl</code></a>。</p><p>不得与 <code>\<loc></code> 网址相同。</p><p><strong>属性：</strong></p><ul><li><code>allow\_embed</code> \[可选] Google 是否可以将视频嵌入搜索结果中。允许的值为 <code>yes</code> 或 <code>no</code>。</li></ul><p><strong>最佳做法</strong>：如果您想限制内容访问权限，但仍然希望 Googlebot 抓取该内容，请确保 Googlebot 能够使用<a href="https://support.google.com/webmasters/answer/80553">反向 DNS 查找</a>访问您的内容。</p>                                                                                                                                                                                                                                                                     |
| `<video:duration>`              | 推荐                                                                                                                                               | 视频的时长（以秒为单位）。值必须介于 `1`（含）和 `28800`（8 小时，含）之间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `<video:expiration_date>`       | 适用时建议添加                                                                                                                                          | <p>视频的失效日期（采用 <a href="http://www.w3.org/TR/NOTE-datetime">W3C 格式</a>）。如果您的视频不会失效，则不要添加此标记。如果存在此标记，则在此日期之后，Google 搜索将不会显示您的视频。</p><p>支持的值为完整日期 (<code>YYYY-MM-DD</code>)，或完整日期加时、分和秒以及时区 <code>(YYYY-MM-DDThh:mm:ss+TZD</code>)。</p><p><strong>示例</strong>：<code>2012-07-16T19:20:30+08:00</code>。</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `<video:rating>`                | 可选                                                                                                                                               | 视频的评分。支持的值为介于 0.0（下限，含）到 5.0（上限，含）之间的浮点数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `<video:view_count>`            | 可选                                                                                                                                               | 视频的观看次数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `<video:publication_date>`      | 可选                                                                                                                                               | <p>第一次发布视频的日期（采用 <a href="http://www.w3.org/TR/NOTE-datetime">W3C 格式</a>）。支持的值为完整日期 (<code>YYYY-MM-DD</code>)，或完整日期加时、分和秒以及时区 <code>(YYYY-MM-DDThh:mm:ss+TZD</code>)。</p><p><strong>示例</strong>：<code>2007-07-16T19:20:30+08:00</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `<video:family_friendly>`       | 可选                                                                                                                                               | <p><code>yes</code>（或不添加），如果视频可以在开启安全搜索的情况下播放。</p><p><code>no</code>，如果视频只能在关闭安全搜索的情况下播放。</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `<video:restriction>`           | 可选                                                                                                                                               | <p>是否在来自特定国家/地区的搜索结果中显示或隐藏您的视频。</p><p>以 <a href="http://wikipedia.org/wiki/ISO_3166">ISO 3166 格式</a>指定用空格隔开的国家/地区代码列表。每个视频只能使用一个 <code>\<video:restriction></code> 标记。如果没有 <code>\<video:restriction></code> 标记，Google 会假定该视频可在所有国家/地区播放。<em>请注意，此标记仅会影响搜索结果；它不会阻止用户通过其他方式在受限制的国家/地区查找或播放您的视频。</em><a href="https://support.google.com/webmasters/answer/156442#restrict_by_country">详细了解如何应用国家/地区限制。</a></p><p><strong>属性：</strong></p><ul><li><code>relationship</code> \[必需] 视频在指定国家/地区的搜索结果中是允许显示还是拒绝显示。支持的值为 <code>allow</code> 或 <code>deny</code>。如果是 <code>allow</code>，则允许在已列出的国家/地区显示，拒绝在未列出的国家/地区显示；如果是 <code>deny</code>，则拒绝在已列出的国家/地区显示，允许在未列出的国家/地区显示。</li></ul><p><strong>示例</strong>：本示例仅允许在加拿大和墨西哥显示视频搜索结果：</p><p><code>\<video:restriction relationship="allow">CA MX\</video:restriction></code></p>                                                                                                            |
| `<video:platform>`              | 可选                                                                                                                                               | <p>是否在指定类型的平台上的搜索结果中显示或隐藏您的视频。这是用空格隔开的平台类型列表。<em>请注意，此标记仅会影响指定设备类型上的搜索结果；它不会阻止用户在受限平台上播放您的视频。</em></p><p>对于每个视频，只能显示一个 <code>\<video:platform></code> 标记。如果没有 <code>\<video:platform></code> 标记，Google 会假定该视频可以在所有平台上播放。<a href="https://support.google.com/webmasters/answer/156442#restrict_by_platform">详细了解如何应用平台限制。</a></p><p><strong>支持的值</strong>：</p><ul><li><code>web</code> - 桌面设备和笔记本电脑中的传统计算机浏览器。</li><li><code>mobile</code> - 移动浏览器，例如手机或平板电脑中的浏览器。</li><li><code>tv</code> - 电视浏览器，例如 Android TV 设备和游戏机上的浏览器。</li></ul><p><strong>属性：</strong></p><ul><li><code>relationship</code> \[必需] 用于指定视频在指定平台上是拒绝显示还是允许显示。支持的值为 <code>allow</code> 或 <code>deny</code>。如果是 <code>allow</code>，则拒绝在所有未列出的平台上显示；如果是 <code>deny</code>，则允许在所有未列出的平台上显示。</li></ul><p><strong>示例</strong>：以下示例允许向使用传统计算机浏览器或电视浏览器的用户显示视频，但不允许向使用移动浏览器的用户显示视频：<br><code>\<video:platform relationship="allow">web tv\</video:platform></code></p> |
| `<video:price>`                 | 可选                                                                                                                                               | <p>下载或观看视频需要支付的费用。如果是免费视频，则不要添加此标记。您可以列出多个 <code>\<video:price></code> 元素（例如，用于指定多个币种、购买选项或分辨率）。</p><p><strong>属性：</strong></p><ul><li><code>currency</code> \[必需] 以 <a href="http://en.wikipedia.org/wiki/ISO_4217">ISO 4217 格式</a>指定币种。</li><li><code>type</code> \[可选] 指定购买选项。支持的值为 <code>rent</code> 和 <code>own</code>。如果未指定，系统会使用默认值 <code>own</code>。</li><li><code>resolution</code> \[可选] 指定购买版本的分辨率。支持的值为 <code>hd</code> 和 <code>sd</code>。</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `<video:requires_subscription>` | 可选                                                                                                                                               | 指明是否需要订阅（收费或免费）才能观看视频。允许的值为 `yes` 或 `no`。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `<video:uploader>`              | 可选                                                                                                                                               | <p>视频上传者的名称。每个视频只能有一个 <code>\<video:uploader></code>。字符串值，最多 255 个字符。</p><p><strong>属性：</strong></p><ul><li><code>info</code> \[可选] 指定其中包含有关此上传者的其他信息的网页对应的网址。该网址必须与 <code>\<loc></code> 标记位于同一个网域中。</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `<video:live>`                  | 可选                                                                                                                                               | 指明视频是否为直播视频。支持的值为 `yes` 或 `no`。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `<video:tag>`                   | 可选                                                                                                                                               | 用于描述视频的任意字符串标记。标记通常是与视频或内容片段相关联的关键概念的极简短说明。一个视频可以有多个标记，尽管它可能只属于一个类别。例如，有关烧烤食物的视频可能属于“烧烤”类别，但可以带有“牛排”、“肉类”、“夏季”和“室外”标记。请为每个与视频相关的标记创建新的 `<video:tag>` 元素。最多允许使用 32 个标记。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `<video:category>`              | 可选                                                                                                                                               | 视频所属宽泛类别的简短说明。这是一个不超过 256 个字符的字符串。一般情况下，类别是指按主题对内容进行的大致分组。通常，一个视频只属于一个类别。例如，有关烹饪的网站可以有“铁板烧”、“烘烤”和“烧烤”等类别。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `<video:gallery_loc>`           | *未使用*                                                                                                                                            | 当前未使用。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |

### 站点地图替代方案

虽然 Google 建议您使用视频 Sitemap 和 [schema.org 的 VideoObject](https://support.google.com/webmasters/answer/156442#videoobject) 来标记您的视频，但我们也支持 mRSS Feed。

### mRSS

Google 支持 [mRSS](http://www.rssboard.org/media-rss)，它是一个用于补充 [RSS 2.0](http://cyber.law.harvard.edu/rss/rss.html) 的元素功能的 RSS 模块。mRSS Feed 与视频 Sitemap 非常类似，可以像站点地图一样进行测试、提交和更新。

对于每个 mRSS Feed，未压缩时的文件大小都不得超过 50MB，且包含的视频条目不超过 5 万个。如果未压缩文件大于 50MB，或者视频数量超过 5 万个，您可以提交多个 mRSS Feed 和[站点地图索引文件](https://support.google.com/webmasters/answer/71453)。站点地图索引可以包含 mRSS Feed。**RSS 与 mRSS** - mRSS 是用于整合多媒体文件的 RSS 扩展。它对内容的描述比 RSS 标准要详细得多。

#### mRSS 示例

下面是 mRSS 条目的示例，其中提供了 Google 使用的所有主要标记。该示例包含了 `<dcterms:type>live-video</dcterms:type>`，您可以使用该标记标识直播视频。

```
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:dcterms="http://purl.org/dc/terms/">
<channel>
<title>示例 MRSS</title>
<link>http://www.example.com/examples/mrss/</link>
<description>MRSS 示例</description>
  <item xmlns:media="http://search.yahoo.com/mrss/" xmlns:dcterms="http://purl.org/dc/terms/">
    <link>http://www.example.com/examples/mrss/example.html</link>
    <media:content url="http://www.example.com/examples/mrss/example.flv" fileSize="405321"
      type="video/x-flv" height="240" width="320" duration="120" medium="video" isDefault="true">
      <media:player url="http://www.example.com/shows/example/video.swf?flash_params" />
      <media:title>适合夏季的烧烤排餐</media:title>
      <media:description>每次都能烤出美味牛排</media:description>
      <media:thumbnail url="http://www.example.com/examples/mrss/example.png" height="120" width="160"/>
      <media:price price="19.99" currency="EUR" />
      <media:price type="subscription" />
    </media:content>
    <media:restriction relationship="allow" type="country">us ca</media:restriction>
    <dcterms:valid xmlns:dcterms="http://purl.org/dc/terms/">end=2020-10-15T00:00+01:00; scheme=W3C-DTF</dcterms:valid>
    <dcterms:type>live-video</dcterms:type>
  </item>
</channel>
</rss>
```

#### mRSS 标记

| 标记                    | 是否必需？     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| --------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `<media:content>`     | **必需**    | <p>附上视频的相关信息。</p><p>属性：</p><ul><li><code>medium</code> \[必需] 内容的类型。此属性应设置为 <code>video</code>。</li><li><code>url</code> \[必需] 指向原始视频内容的直接网址。<strong>如果未指定此属性，则必须指定 <code>\<media:player></code> 标记。</strong></li><li><code>duration</code> \[可选，但建议使用] 视频的时长（以秒为单位）。</li></ul><p>要了解 <code>\<media:content></code> 标记的所有其他可选属性和子字段，请参阅 <a href="http://www.rssboard.org/media-rss">mRSS 规范</a>。</p>                                                                                                              |
| `<media:player>`      | **视情况而定** | <p><strong>您不能既不指定 <code>\<media:player></code>，也不指定 <code>\<media:content></code> 中的 <code>url</code> 属性。</strong></p><p>指向<strong>特定</strong>视频的播放器的网址。通常，该网址是 <code>\<embed></code> 标记的 <code>src</code> 元素中的信息，不应该与 <code>\<loc></code> 标记的内容相同。不能与 <code>\<link></code> 标记的网址相同。<code>\<link></code> 应指向托管该视频的网页的网址，而此标记应指向播放器。</p>                                                                                                                                                                         |
| `<media:title>`       | **必需**    | 视频标题。不得超过 100 个字符。所有 HTML 实体都应进行转义或者封装在一个 [CDATA 块](http://wikipedia.org/wiki/CDATA)中。                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `<media:description>` | **必需**    | 视频说明。不得超过 2048 个字符。所有 HTML 实体都应进行转义或者封装在一个 [CDATA 块](http://wikipedia.org/wiki/CDATA)中。                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `<media:thumbnail>`   | **必需**    | 指向预览缩略图的网址。[请参阅缩略图要求。](https://support.google.com/webmasters/answer/156442#thumbnails)                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `<dcterms:valid>`     | 可选        | <p>视频的发布日期和失效日期。<a href="https://www.dublincore.org/specifications/dublin-core/dcmi-terms/terms/valid/"><code>dcterms:valid</code> 的完整规范</a>。</p><p><strong>示例：</strong></p>                                                                                                                                                                                                                                                                                                                                     |
| `<media:restriction>` | 可选        | <p>可以播放视频或无法播放视频的国家/地区列表，其中各项用空格隔开。允许的值为采用 <a href="http://wikipedia.org/wiki/ISO_3166">ISO 3166 格式</a>的国家/地区代码。如果没有 <code>\<media:restriction></code> 标记，Google 会假定该视频可在所有地区播放。</p><p><code>type</code> 是<strong>必需属性</strong>，应设置为 <code>country</code>。仅支持国家/地区限制。</p><p><code>relationship</code> 是<strong>必需属性</strong>，用于指定视频在指定国家/地区是否允许播放。允许的值为 <code>allow</code> 或 <code>deny</code>。</p><p><a href="https://support.google.com/webmasters/answer/156442#restrict_by_country">详细了解如何使用国家/地区限制。</a></p> |
| `<media:price>`       | 可选        | <p>下载或观看视频需要支付的费用。如果是免费视频，请勿使用此标记。您可以列出多个 <code>\<media:price></code> 元素（例如，用于指定多个币种或购买选项）。</p><p><strong>属性：</strong></p><ul><li><code>currency</code> \[必需] 以 <a href="http://en.wikipedia.org/wiki/ISO_4217">ISO 4217 格式</a>指定的币种。</li><li><code>type</code> \[必需] 购买选项。允许的值为 <code>rent</code>、<code>purchase</code>、<code>package</code> 和 <code>subscription</code>。</li></ul>                                                                                                                             |

[完整的 mRSS 规范](http://www.rssboard.org/media-rss)包含更多可选标记、最佳做法和示例。创建 mRSS Feed 后，您便可以[测试和提交](https://support.google.com/webmasters/videosearch/testing.html)此 Feed，就像测试和提交视频 Sitemap 一样。


# 有关富媒体文件的最佳做法

Google 可以将哪些类型的文件编入索引？

Google 可以将[大多数类型的网页和文件](https://support.google.com/webmasters/answer/35287)编入索引。以下是关于特定富媒体类型的一些具体做法：

### 一般性最佳做法 <a href="#id-5" id="id-5"></a>

如果您确实计划在网站上使用富媒体，可以参阅下面的建议，以避免出现问题。

* **尽量只在需要时使用富媒体**。我们建议您对内容和导航使用 HTML。
* **提供网页的文本版本。** 如果您的首页使用了非 HTML 的启动画面，请确保在该首页上提供一个常规 HTML 链接指向基于文本的网页，以便用户（或 Googlebot）无需富媒体也能浏览您的网站。

一般情况下，搜索引擎是根据文本进行搜索。这意味着您的内容需采用文本格式才能被抓取并编入索引（Google 现在可以将 Flash 文件中包含的文本内容编入索引，但其他搜索引擎可能不行）。

这并不是说您的网站中不能包含 Flash、Silverlight 或视频等富媒体内容，而是意味着您嵌入这些文件中的任何内容也应通过文本格式提供，否则搜索引擎可能无法访问这些内容。以下示例集中介绍非文本内容的最常见类型，但对于其他任何类型的内容，指南中的要求都是相似的：需要为所有非文本文件提供对应的文本格式内容。（另外请注意，大多数移动浏览器已不再支持 Flash。）

这不仅会提高 Googlebot 抓取内容并将其编入索引的成功率，同时也会使内容更便于访问。很多人（比如有视觉障碍的用户、使用屏幕阅读器的用户或带宽较低的用户）无法看到网页上的图片，因此如果您提供了对应的文本内容，就可以拓宽受众群体。

### 视频 <a href="#id-3" id="id-3"></a>

请查看[有关视频的最佳做法](https://support.google.com/webmasters/answer/156442)。

### Iframe <a href="#id-4" id="id-4"></a>

Iframe 有时用于在网页上显示内容。通过 iframe 显示的内容可能不会被编入索引，也可能不会在 Google 的搜索结果中显示。因此，我们建议您避免使用 iframe 显示内容。如果您的网站中使用了 iframe，请务必额外提供基于文本的链接以指向 iframe 所显示的内容，以便 Googlebot 能够抓取这些内容并将其编入索引。

### Flash <a href="#id-1" id="id-1"></a>

大多数移动网络浏览器已不再支持 Flash，并且 Adobe 计划在 2020 年弃用 Flash。我们建议使用其他格式，例如 HTML5。

Googlebot 几乎可将用户与您网站上的任意 Flash SWF 文件互动时看到的任意文本编入索引，并使用这些文字生成摘要，或与 Google 搜索中的查询字词匹配。另外，Googlebot 还可以发现 SWF 文件中的网址（例如，指向您网站上其他网页的链接），并跟踪这些链接。

我们抓取此类内容并将其编入索引的方式与我们抓取您网站上其他类型内容并将其编入索引的方式相同，您无需执行任何特殊操作。然而，我们不保证将抓取所有内容（Flash 或其他）并将所有内容编入索引。

如果 SWF 文件加载其他一些文件（无论是文本、HTML、XML、其他 SWF 等）的内容，Google 也可以将此外部内容编入索引，并将其与父 SWF 文件及其嵌入到的任何文档相关联。

我们一直在努力改进 Flash 文件的编入索引过程，但目前仍存在一些限制。例如，我们目前无法将 Flash 文件中的双向语言内容（如希伯来语或阿拉伯语）编入索引。

请注意，虽然 Google 可以将 Flash 文件的内容编入索引，但其他搜索引擎可能不行。因此，我们建议您将 Falsh 等富媒体技术主要用于装饰目的，而针对内容和导航使用 HTML。这不但可以让您的网站更便于抓取工具处理，也能让它获得更多的受众群体，包括如因视力障碍需使用屏幕读取器的用户、使用较早版本或非标准浏览器的用户，以及带宽有限或较低的用户（如手机或移动设备用户）。好处还不止这些，将 HTML 用于导航时，用户可将内容添加为书签并可通过电子邮件发送直接链接。

您还可以考虑使用 [sIFR (Scalable Inman Flash Replacement) 技术](https://wikipedia.org/wiki/Scalable_Inman_Flash_Replacement)。sIFR 是一个开放源代码项目，可让网站站长用对应的 Flash 内容替换文本元素。使用该技术，内容和导航由嵌入的 Flash 对象显示，但由于内容包含在 HTML 源中，非 Flash 用户（包括搜索引擎）也可以进行读取。


# 播客

![](https://lh3.googleusercontent.com/dveHl3OH3-eTEQ6YVALm108eOWZ7zqYKaIE0nCTn-vPx5_XXc_jujyTdSnD577PxNuQ=w673)

Google 可以通过多种不同的机制向用户呈现播客，其中包括：

* [Google 搜索结果](https://www.google.com/search?q=fresh+air+podcast)，作为指向播客页面的链接或作为内嵌剧集播放器
* [Android 版 Google 搜索应用](https://www.google.com/search/about/)（需要 v6.5 或更高版本的 Google 搜索应用）
* [Google 播客应用](https://play.google.com/store/apps/details?id=com.google.android.apps.podcasts)
* [Google Home](https://support.google.com/googlehome/answer/7072800)
* [Google 助理的内容操作](https://developers.google.com/actions/content-actions/)
* [Android Auto](https://www.android.com/auto/)

Google 只需查找您的播客并将其编入索引，即可向用户呈现该播客。[请点击此处了解如何在 Google 上发布您的播客](https://developers.google.com/search/docs/guides/podcast-overview)。<br>


# Google 移动

* [在功能手机上进行移动浏览](https://support.google.com/webmasters/answer/35312?hl=zh-Hans\&ref_topic=2370586)
* [Web Light：在搜索结果中提供更快速且更精简的移动版网页](https://support.google.com/webmasters/answer/6211428?hl=zh-Hans\&ref_topic=2370586)
* [Google 搜索中的 Web Light 网页对广告网络的支持](https://support.google.com/webmasters/answer/6211355?hl=zh-Hans\&ref_topic=2370586)
* [Google 探索和您的网站](https://support.google.com/webmasters/answer/9046777?hl=zh-Hans\&ref_topic=2370586)
* [实用资源：面向适合在移动设备上显示的网页的开发者](https://support.google.com/webmasters/answer/72462?hl=zh-Hans\&ref_topic=2370586)
* [将移动网络结算费用明确告知用户](https://support.google.com/webmasters/answer/9111943?hl=zh-Hans\&ref_topic=2370586)
* [将 Android 应用与网站相关联](https://support.google.com/webmasters/answer/6212023?hl=zh-Hans\&ref_topic=2370586)


# 在功能手机上进行移动浏览

功能手机上的 Google 网页搜索可让用户搜索 Google 索引中针对桌面网络浏览器的所有内容。由于该内容不是专门为功能手机和设备编写的，因此可能会无法正常显示。用户是通过我们的转码器来查看网页搜索结果的，该转码器会分析原始 HTML 代码并将其转换成适用于移动设备的格式。为确保在您的手机或其他移动设备上显示最优质且最易用的网页，Google 可能会调整图片大小、调节文本格式和/或转换网页功能的某些方面。

如果您不希望 Google 在功能手机上对您的网页进行转码，则可请求 Google 在用户尝试通过转码器查看网页时将用户重定向到备用网页。为此，您可在自己网页的 HTML 文件中的 `<head>` 部分添加下面这行代码：

```
<link rel="alternate" media="handheld" href="alternate_page.htm" />
```

备用网页应是原始网页针对移动设备进行优化后的版本，或者应通过显示一条消息告知用户该网站无法在手机上呈现。


# Web Light：在搜索结果中提供更快速且更精简的移动版网页

网站所有者须知

Google 会向通过速度较慢的移动客户端进行搜索的用户提供更快速且更精简的网页。为此，我们会实时对网页进行转码（转换），从而提供适用于上述客户端的优化版网页，以提高网页加载速度并节省数据流量。我们将这种技术称为“Web Light”。Web Light 网页会保留大部分相关内容，并会为用户提供用于查看原始网页的链接。我们的实验结果表明，与原始网页相比，经过优化的网页的加载速度提高了 4 倍，字节用量减少了 80%。由于这类网页的加载速度提高了许多，因此其浏览量也增加了 50%。

以下示例展示了同一网页的已转码版本和未转码版本的加载效果：

{% embed url="<https://youtu.be/xyEv6yxlXXM>" %}

### 查看网页的 Web Light 版本

您可在自己的移动设备或桌面设备上查看非 AMP 网页的 Web Light 版本，具体步骤如下所述：

* **如果您有** [**Google 帐号**](https://support.google.com/accounts/answer/27441?hl=zh-CN)**：**
  * [查看已转码的网页](https://www.google.com/webmasters/tools/transcoder?pli=1#url=www.example.com)
* **如果您没有 Google 帐号：**
  * **在移动设备上**，打开链接 `http://googleweblight.com/i?u=[您网站的网址]`，其中的网址应是完全限定网址 (<http://www.example.com)。\\>
    &#x20;    或者
  * **在桌面设备上**，使用链接 `http://googleweblight.com/i?u=[您的网站网址]`（其中的网址应是完全限定网址 (<http://www.example.com)）打开> [Chrome 设备模式模拟器](https://developer.chrome.com/devtools/docs/device-mode)

部分网页目前无法转码，包括视频网站、需要使用 Cookie 的网页（例如个性化网站），以及其他在技术上难以转码的网站。在这类情况下，如果您使用上述其中一种工具来请求系统显示经过转码的网页，则会看到“未转码”通知。

### 对比加载时间

您可以查看 Web Light 网页和未转码网页的[加载时间对比图](http://www.webpagetest.org/optimized?url=www.aol.com\&start=0)（该测试需要几分钟的时间）。

### 选择停用 Web Light

如果您不希望系统对您的网页进行转码，请在您的网页响应中设置 HTTP 标头“`Cache-Control: no-transform`”。如果 Google 看到此标头，便会向用户显示原始网页，而不是转码后的网页。

**注意**：每当用户在相应条件下在搜索结果中点击您的网页时，[Web Light 用户代理](https://support.google.com/webmasters/answer/1061943#weblight)仍会访问您的网页以检查是否存在 `no-transform` 标头，因此您仍会看到一些 Web Light 流量。不过，我们不会对网页进行转码，因此您可以放心地忽略这些请求。我们正在努力减少进行 HTTP 标头检查的访问次数。

### 常见问题解答 <a href="#faq" id="faq"></a>

#### 常规

**用户何时会看到这种 Web Light 网页？**

* 只有当 Google 检测到用户使用的是连接速度缓慢的客户端时，才会向用户显示这种网页。

**Google Analytics（分析）适用于我的网页吗？**

* 适用。请注意，我们仅支持网页浏览量统计信息，以确保网页精简且加载迅速：例如，系统不会报告事件跟踪信息。另外，我们目前仅支持 Universal Analytics（analytics.js JavaScript 库）。 \
  在显示网页的已转码版本的指标时，Google Analytics（分析）会在网页的主机名后面附加 `googleweblight.com`。因此，如果您有一个位于 `example.com/mypage` 的网页，那么该网页的未转码版本的指标会显示为 `example.com/mypage`，而其已转码版本的指标则会显示为 `example.com`**`.googleweblight.com`**`/mypage`。

**如果用户使用的是速度较快的客户端，系统也会对我的网页进行转码吗？**

* 如果用户使用的客户端连接速度较快，系统就不会对网页进行转码。

**如果用户在桌面设备或平板电脑上进行搜索，系统是否会对我的网页进行转码？**

* 系统只会针对手机用户（而非桌面设备用户或平板电脑用户）进行网页转码。

**这项功能支持哪些浏览器？**

* 目前，系统只为来自 Chrome 浏览器、Android 浏览器（2.3 及更高版本）以及 [Google Go](https://play.google.com/store/apps/details?id=com.google.android.apps.searchlite) 的搜索提供网页转码服务。

**你们会缓存我的已转码网页吗？**

* 系统通常会在收到用户的请求时将相应网页从当前版本转换为转码后版本。Google 会将主要内容缓存 24 小时之久。其他资源（如 CSS、JS 和图片）可能会缓存更长时间。

**你们是只针对搜索结果链接到的目标网页进行转码，还是对整个网站进行转码？**

除非网页无法转码或已停用转码功能，否则我们会对网页和用户在点击该网页中的链接后转到的任何目标网页进行转码。

#### 广告和收入

**这将对我的广告收入产生怎样的影响？**

* 我们目前支持来自多个广告网络的广告，并致力于将更多网络纳入支持范围。我们的实验结果表明，已转码网站获得的流量比未转码网站高 50%；我们期望您的网站能通过这项服务获取更多收益。

**目前你们支持哪些广告网络？**

* 截至 2018 年 10 月，我们可支持 Sovrn、Zedo、AdSense 和 Google 发布商代码 (GPT)。我们正在努力为更多广告网络提供支持。

**一个网页上会显示多少广告？**

* 为了精简网页并提高网页加载速度，我们会限制每个网页上可以显示的广告数量。目前，该数量上限已设置为 3。

**我使用多个广告网络。Google 如何选择要显示哪些广告？**

* 目前，我们是按原始网页请求广告时依照的顺序来选择广告。

**我只使用一个广告网络，而且我的网络不受支持。我如何才能被纳入到你们的支持范围内？**

* 我们很乐意支持您的广告网络。请查看我们的[广告网络页面](https://support.google.com/webmasters/answer/6211355)。

#### 选择停用

**如果我选择停用 Web Light，会出现什么情况？**

* 如果您选择停用 Web Light，Google 就不会在用户使用连接速度较慢的设备时对您的网页进行转码。请注意，如果用户所用设备的连接速度较慢，从搜索结果转到您的网站的流量便可能会减少，因为用户需要花费更多的时间来加载您的网页。

**我并未选择停用转码功能，为什么系统没有对我的网页进行转码？**

* 受技术方面的限制，我们目前无法对某些网页进行转码。系统也会在搜索结果中将这类网页标记为未转码。这类网站包括：
  * 需要使用 Cookie 的网站（如个性化网站或者您必须先登录才能使用的网站）
  * 使用大量数据流量的网站（如视频网站）
  * 其他在技术上难以转码的网站。

#### Google Web Light 用户代理会忽略 robots.txt 规则

[Web Light 用户代理](https://support.google.com/webmasters/answer/1061943#weblight)仅用于人类访问者的明确浏览请求，因此可以忽略用于屏蔽自动抓取请求的 robots.txt 规则。


# Google 搜索中的 Web Light 网页对广告网络的支持

广告网络提供商需知

当用户通过缓慢的移动网络连接进行搜索时，Google 会向其提供更快速且更精简的网页。为此，我们会实时地将网页转码（转换）成已针对缓慢网络进行优化的版本，以提高网页加载速度并节省数据流量。这些经过优化的网页会保留大部分相关内容，并会为用户提供用于查看原始网页的链接。我们将这种技术称为“Web Light”。我们的实验结果表明，与原始网页相比，经过优化的网页的加载速度提高了 4 倍，字节用量减少了 80%。由于这类网页的加载速度的升幅如此显著，我们也发现它们所获得的浏览量增加了 50%。

Google 会在这种已转码的网页上展示广告，以便发布商可继续通过其流量获利。我们从一开始就支持来自多个第三方广告网络（包括 [Sovrn](http://www.sovrn.com/) 和 [Zedo](http://www.zedo.com/)）的广告，并致力于将更多广告网络纳入支持范围。如果您运营一个广告网络且希望自己的广告能在 Web Light 网页上展示，请继续阅读下文。

### 我们的方法

当 Google 为使用缓慢网络的用户优化网页时，可能需要执行几个步骤。如果原始网页不适合移动设备，我们会将相应内容转换成适合移动设备的格式。我们还会缩减网页大小，以使网页加载速度比原始网页快。为此，我们会移除不必要的 JavaScript 和 CSS、压缩图片并进行其他方面的性能优化。

待相应内容经过优化后，我们会将发布商的广告放回到 Web Light 网页中。为此，我们会检测发布商网页上的现有广告。如果原始网页适合移动设备，我们就可以直接添加广告代码。如果原始网页不适合移动设备，我们则需要修改广告代码的参数，以便向相应的广告网络请求移动广告。

如需了解详情，请[参阅我们的常见问题解答](https://support.google.com/webmasters/answer/6211428#faq)。

### 参与

如果您运营一个广告网络，且希望将自己的广告纳入 Web Light 网页中，请通过[填写此表单](https://docs.google.com/forms/d/13T54_fnT0SkIfpWIGsmXA1V0PNrcwVdyI-DsCIch2-0/viewform)与我们联系。我们将需要以下信息：

* **您的广告代码在发布商网页上的格式**\
  请向我们提供您的广告代码示例，或提供一种途径以在发布商网页的 HTML 中找出您的广告代码。
* **用于请求适合移动设备的广告版本的参数**\
  如果我们所要优化的网页不适合移动设备，我们可能需要修改广告代码。请提供一个文档来帮助我们修改相关的广告代码参数，以便您的服务器返回适合移动设备的广告格式。
* **支持的格式**\
  目前，我们仅支持展示以下格式的广告：320x50 和 300x250。
* **其他注意事项**\
  为了使 Web Light 网页快速加载，请确保您的 JavaScript 软件包不会太大。此外，您最好支持 HTTPS 请求。


# Google 探索和您的网站

[Google 探索](https://support.google.com/websearch/answer/2819496)会根据用户的[网络与应用活动记录](https://support.google.com/websearch/answer/54068)向用户显示与其兴趣相关的内容。

![](https://storage.googleapis.com/support-kms-prod/a3tqEbPXQkjWfocZf6XpG9XRlD8PZiiHJfDQ)

### Google 探索与 Google 搜索的区别

对于 Google 搜索，用户可以输入搜索字词来查找与其查询相关的实用信息，但 Google 探索采用了不同的方法。Google 探索并非根据查询显示结果，它显示内容主要依据的是 Google 自动化系统认为非常契合用户兴趣的内容。Google 探索中的内容会根据新发布的网络内容或用户不断变化的兴趣而定期调整。

Google 探索显示的内容具有不确定性，因此与 Google 搜索相比，Google 探索带来的流量有些不可预测或不太可靠，应视为对 Google 搜索流量的补充。这意味着，您可以创建和优化内容以满足特定搜索需求，以便获得搜索引擎流量，但您无法创建显著契合 Google 探索兴趣匹配机制的内容。

### 内容如何显示在 Google 探索中

只要内容被 Google 编入索引并符合 Google 探索的[内容政策](https://support.google.com/websearch/answer/9982767)，内容就自动有资格显示在 Google 探索中，无需包含任何特殊标记或结构化数据。请注意，有资格显示在 Google 探索中并不保证一定会显示。

为了提高成功几率，请务必发布您认为用户可能感兴趣的精彩有趣内容。尤其要注意以下几点：

* 网页标题抓住内容的精要之处，但不采用点击诱饵的方式。
* 切勿采取不当策略以引起互动度虚假高涨，例如在预览内容（标题、摘要、图片）中采用误导性或夸大的详细信息来提高吸引力，或隐瞒了解内容要旨所需的重要信息。
* 切勿采取不当策略以操纵内容吸引力，例如满足病态的好奇心、提供挑逗性或引起愤怒情绪的内容。
* 内容及时契合当前用户兴趣、巧妙讲述故事或提供独特见解。
* 提供明确的日期、署名、作者信息、发布内容、发布内容的发布商/公司/网络以及联系信息，以便更好地博得访问者信任和提高透明度。
* 在内容中加入引人注目的高品质图片，尤其是大幅图片更可能助您通过 Google 探索获得访问量。大图片需至少为 1200 像素宽，并通过 [`max-image-preview:large` 设置](https://developers.google.com/search/reference/robots_meta_tag)或使用 [AMP](https://www.ampproject.org/) 启用。请勿将网站徽标用作此类图片。

Google 探索中显示的内容由我们的自动化系统选取，这些内容所来自的网站包含众多颇具专业性、权威性和可信度 (E-A-T) 的网页。若想提高 E-A-T，您可以从我们建议网站所有者针对 Google 搜索考虑的[问题](https://webmasters.googleblog.com/2019/08/core-updates.html)中选一些问题加以考虑。虽然 Google 搜索不同于 Google 探索，但两者中内容适用的总体 E-A-T 原则是相似的。

### 监控您的内容在 Google 探索中的表现

如果您的内容显示在 Google 探索中，则可使用[“在 Google 探索中的表现”报告](https://support.google.com/webmasters/answer/9216516)监控内容的表现。只要您的数据在 Google 探索中的展示次数达到最低阈值，这份报告就会显示在过去 16 个月内您的任何 Google 探索内容的展示次数、点击次数和点击率。




---

[Next Page](/llms-full.txt/1)

