0%

概述

书籍简介
异类:不一样的成功启示录
关于作者

马尔科姆·格拉德威尔(Malcolm Gladwell)(1963年9月3日)毕业于多伦多大学的三一学院,主修历史学,是一位加拿大作家、记者和演讲者,以其畅销书和在《纽约客》杂志上的文章而闻名。他的作品通常探讨社会科学、心理学和行为经济学的主题,通过生动的故事和深刻的见解启发读者。

其他出版物:
《引爆点》(The Tipping Point, 2000):探讨了如何通过少数关键因素引发大的变化,书中引入了“引爆点”的概念。
《决断两秒间》(Blink, 2005):研究了人们在瞬间决策中的潜意识过程和直觉判断。
《异类》(Outliers, 2008):探讨了成功背后的非凡因素,提出了“1万小时定律”等概念。
《大开眼界》(What the Dog Saw, 2009):这本书是他在《纽约客》杂志上发表的文章的集合,涵盖了各种主题。
《大卫与歌利亚》(David and Goliath, 2013):讨论了在人们认为不利的条件下如何取得成功。
《谈话的力量》(Talking to Strangers, 2019):探讨了人们在与陌生人交流时常犯的错误及其后果

第一部分:机遇

马太效应:英超球员的优势积累

这一节分成六个部分:

  • 成功靠什么:成功靠的是个人意愿和能力优势,只能靠自己而不是他人的帮助。真的是这样吗?
  • 成功者之幸
  • 生于年初:职业青年队绝大多 数球员的生日集中在1月、2月和3月
  • 优势积累:一个1月1日出生的选手,是在跟许多年纪比其小的队友争夺晋级权。晋级后接受更好的训练。
  • 我们要做怎样的改变:制度改革。
    • 领先优势造就了天才们辉煌的成就。
    • 在社会学领域,所谓的成功就是“优势积累”的结果
    • 很多制度甚至过早地将一部分人划入了失败者的行列,阻碍了这些人成才
  • 离绝对老大只剩三天:出生在1月4日,只差3天他就是同龄队员中绝对的老大了

读书笔记:有意识的提前建立优势,并不断积累优势是成功的关键。

1万小时定律:生于1955年的乔布斯和比尔盖茨

这一节分成六个部分:

  • 天才创始人:计算机科学家比尔·乔伊。
  • 一万小时有多久:一万小时训练是成为优秀的必要条件。
  • 安娜堡计算机中心的日日夜夜:

    现在, 让我们理一理比尔·乔伊的机遇链吧。
    他有幸考入作为计算机学 科领跑者的密歇根大学;
    有幸第一批使用分时系统,而不是键盘打孔机;
    又恰巧密歇根大学的机房管理系统有漏洞, 他得以想学多长时间就学多长时间;
    因为计算机中心24小时开放,他又得以夜以继日地学习;
    他获得了充分的时间练习编程,所以当改造UNI;系统项目开始的时候,他顺理成章地进入了项目组。
    比尔·乔伊的确聪明绝顶,他也热爱学习,这是他成功的一大因素。
    但是,在他成为专家以前,他首先依靠运气获得了成为专家的机会。

  • 甲壳虫乐队的汉堡之行:正是在汉堡的超量训练才使甲壳虫乐队脱颖而出的。
  • 1968年的电脑:比尔盖茨的机遇和更多使用电脑的机会。
  • 时势造成功:机遇造就了成功。

读书笔记:成功 = 时代机遇 + 努力

智商和机遇:曼特人的谬误

这一节分成五个部分:

  • 全美最聪明的人:智商195的兰根参加《以一敌百》节目。
  • 超常“特曼人”

    这些被挑选出来的天才少年,正式成为历史上最著名的心理学研究的研究对象,他们被统称为“特曼 人”。

  • 智商的门槛效应

    智商与成功只在一定程度上相互关联, 一旦某 人的智商超过120分,此时更高的智商并不意味着会同比转化成更多的现实优

  • 充满想象力的心灵:发散性思维测试要求你运用想象力,寻找尽量多的不同的可能性。
  • 事与愿违的试验结果:特曼忽略了一个事实——智力在现实中的作用并 没有那么大。
社交与家庭:天才兰根的忧伤

这一节分成六个部分:

  • 令人心碎的天才命运:天才兰根家庭环境不好,即使是天才,最后结局也很一般。
  • 另一位天才的命运:天才奥本海默,家庭环境好,结局成功。
  • 实践智力从哪来:两个天才的结局为何如此不同?实践智力不同!
  • 协同培养的典范:奥本海默是协同培养的典范。
  • 协同培养与自然成长
  • 如何避免悲剧重演

家境富裕的父母总是让孩子一刻也不能闲着, 让孩子穿梭于各项活动之 间,并听取孩子对老师、教练或是队友的评价
而穷人家孩子的生活中完全没有这种紧张的时间安排, 他们的活动不会 是每周两次足球训练,而是和亲戚或者邻居家的孩子在外面玩耍。

读书笔记:家庭教育很重要,让孩子高效利用时间深度参与到有意义的社会活动中,鼓励孩子表达自己的想法,挑战权威,敢于表现自己。

最佳时代:乔-弗洛姆的律师生涯

这一节分为七个部分:

  • 律师事务所之翘楚:贫穷的移民,被歧视的犹太人:乔-弗洛姆,从世达律师事务所的助理到合伙人,从几个人到几千人。这是时代造就了行业
  • 纽约移民区的故事:弗洛姆成长环境下的几个小故事。
    • 启示一:身为犹太人的重要性:
      在那个年代,如果你的家庭背景、宗教信仰、社会地位不符合要 求, 即便你是从法学院毕业的, 你也只能去那些二流的、 刚起步的小事务所,或者自己创业。
    • 启示二:生育潮低谷之幸
      受20世纪30年代的经济大萧条和第二次世界大战(1939—1945年)的影响,不同阶段出生的人的命运截然不同。
    • 启示三:服装厂与有意义的工作
      路易斯·波吉尼特和瑞吉娜·波吉尼特夫妇移民美国后卖围裙成长起来的故事。
  • 一代新人胜旧人
  • 成功不是随机事件

读书笔记:受歧视的乔-弗洛姆进不了大公司只能进小公司,自己创业,处理那些别人不愿处理的案子。随着时代或政策的转变业务激增,二流律师摇身一变成为一流。弗洛姆并不 是克服了逆境,而是原先的逆境忽然之间变成了机遇。

第二部分:文化传承

文化差异:小镇哈伦

这一节分为四部分:

  • 血染哈伦
    哈伦县城两大家族矛盾和枪战。
  • 荣誉文化

    “荣誉文化”植根于高地或富庶地区的边缘地带,如意大利的西西里岛 和西班牙的巴斯克山区。这种解释的逻辑是,当人们居住在多岩石的山坡地 带时,由于那里的土地很难耕种,人们大多会依靠放牧生活。游牧文明和耕 种文明大相径庭。
    从事耕种的农民要想维持生计依靠的是人与人之间的合 作,而从事游牧的牧民所依靠的更多的是自己。农民不必担心他们的庄稼一 夜之间就被人全部偷走,除非盗贼有本事一个晚上就把地里的所有庄稼收割 完。但是牧民就有这样的担忧。
    实际上,他们一直生活在牲口被偷,整个生 活被毁的恐惧之下。所以他们养成了好斗的性情:他们必须通过自己的言行 表明自己不是弱者,要对危及他们名誉的哪怕是最轻微的挑战予以最坚决的 反击——这就是“荣誉文化”的含义。在游牧文化所在的地方,荣誉感往往是当地男性的存在感与自我价值的中心。

  • 遗泽百世
    心理学家做实验,发现:

    有些人的回应被其之前遭到的侮辱影响,有些人的则没有。志愿者的行为是否改变,并不取决于他们的情绪是否稳定,也不取决于他们是知识分子还是运动员, 同样也不取决于他们的相貌。 这其中的决定性因素——我想你一定已经 猜到了——是他们来自何方。

  • 文化传承的力量

    文化传承是事件背后更强大的力量, 它根深蒂固,影响长存。 经过数代 传承,即便塑造文化的经济、社会、人口等条件已经消失,这种文化也会一 直完好无损地留传下来。文化直接决定了我们看待世界的方法和行为模式,其作用如此巨大,以至于没有它,我们将无法认识世界。

权力距离指数:韩国飞机失事率

权力距离是指人们对待比自己更高等级阶层的态度,特别是指对权威的重视和尊重的程度。

  • 大韩航空801航班:大韩航空空难的故事。
  • 祸不单行:大韩航空是如何从一家安全记录糟糕的公司转变成世界最好的航空公司之一的。
  • 阿维安卡航空052航班:燃油耗尽导致的空难。
  • 初探052航班坠毁:飞机本身操作难度大,机长多次误判,副机长缺乏和塔台的沟通
  • 成功化解空中危机的案例:老人机上晕厥,需要紧急降落,机长决策各种情况,和同事沟通最后完美降落。

    这次降落要求拉特瓦特必须具备一定 的沟通素质。这里的沟通不仅意味着向机组下达降落指令,还意味着鼓励、 安抚、说服他人,与他人商讨,以及用清晰无误的语言与他人共享信息。

  • 再探052航班坠毁事件:沟通和表达存在问题。

    那晚与052航班通过话的另一个航空管制员形容克洛茨“语调冷淡……声音中丝毫听不出紧急之意”。

  • 严禁客套:与缓和性语气做斗争, 成为过去15年间商业航空业的主要战役
  • 052航班的最后时刻:
  • 三探052航班坠毁:
  • 空难的深层原因:
    • 这次事故在很大程度上源于哥伦比亚人长久以来对权威的敬畏与服从
    • 副机长只把自己定位为下属,既然是下属关键性的决定就不应由自己做出,这个决定应由机长做出。
  • 不断积累的小问题:具备飞机失事的3个典型前提:轻微的技术故障、坏天气、疲惫的飞行员
  • 高权力距离指数之恶:(我觉得所谓的高权威,其实就是一种等级制度)

    高权力距离指数文化的这种对话方式,只有在聆听者有条件揣摩 对方话语的情况下才是适宜的。也就是说,双方得有足够的时间相互揣摩。 这种方式绝不应该在暴风雨的夜晚,在精疲力竭的机长准备把飞机降落在一 个下滑角指示灯有故障的机场时使用。

  • 卸下重担:

读书笔记:客机失事的主要原因在于权利指数在副驾驶和主驾驶之间发挥着作用。这是一种文化特征,是一种上下级的阶级关系。我们应该对事不对人,客观辩证的处理问题,不屈服于权威。

内在优势:亚洲人精神

这一节分为6个部分:

  • 数字优势:亚洲人在数字方面有优势,一方面是因为他们对数字的发音更短,另一方面得益于族裔文化。
  • 稻田中的辛劳:种植水稻的亚洲农民一年的工作时长约为3000小时。
  • 稻田精神:努力工作的精神品质在亚洲人身上很常见。
  • 斜率难题:一个计算直线的斜率的实验。
  • 怎样做才算是勤奋:态度比能力更重要。 只要你有意愿,你就能驾驭数学。
  • 劳有所得:哪个国家和地区的学 生更愿意花时间仔细回答冗长的问卷,哪个国家和地区的学生在TIMSS考试中的成绩就更好。

读书笔记:亚洲人精神:吃苦耐劳,耐心,持之以恒。

扭转风气:玛丽塔之幸

这一节分为6个部分:

  • 风气之先:KIPP项目代表了美国教育的新理念,它的成功并非依靠环境、师资或制度创新。
  • 西方教育的传统:
    • 亚洲:水稻耕种次数越多收获越多 -> 学习越努力收获越多
    • 西方:小麦需要休耕让土地保持肥沃 -> 过度学习会对学生个性生活习惯造成恶劣影响
  • 成绩到底差在哪儿:假期时间导致低收入家庭孩子成绩没长进,而高收入家庭孩子在假期做的事情更有意义。
  • 对症下药:更多的学习时间,更慢的节奏,更多理解和思考。
  • 挑战自我:KIPP学园的学生(玛丽塔):多出50%-60%的时间学习,早上5点就起床,很晚才睡。
  • 机遇之歌:玛丽塔需要的其实只有一样东西——机遇.(玛丽塔放弃一些自由时间,放弃一些个性,通过更多的学习时间和努力改变自己的命运,原本上不了大学,现在有机会了)

    “异类”是那些获得特殊机遇之人,是那些耐心等待,当机遇到来时就当仁不让地把握住的人。
    对于加拿大的冰球运动 员来说,生于1月就是他们进入全明星队的机遇。
    对于甲壳虫乐队来说,汉堡 之旅就是他们成名的机遇。
    对于比尔·盖茨来说,他的特殊机遇就是生在正 确的年代,并在初中时代就获得电脑终端。
    对于弗洛姆和沃切尔·利普顿· 罗森·卡茨律师行的创始人来说,机遇是多重的:他们出生于最佳年代,有着能给他们最勤勉激励的父母;他们拥有少数族裔身份,这种身份帮助他们在纽约其他传统律师事务所涉足公司并购官司以前,就已在这个领域实践了20年。
    最后是大韩航空,直到公司帮助飞行员突破原有文化的禁锢,他们才最终扭转了局势。

概述

由于maven插件已经废弃,被maven-publish插件替代了,有些老项目还在使用maven插件,所以需要知道如何升级,这里做一个对比。

maven插件

以下是总体配置,具体还会涉及:是否上传源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
apply plugin: 'maven'

uploadArchives {
repositories {
mavenDeployer {
//release 还是snapshot打包
def isRelease = project.AAR_BUILD_TYPE == "release"

if (isRelease) {
repository(url: project.RELEASE_URL) { //正式仓库地址
authentication(userName: project.MAVEN_USERNAME, password: project.MAVEN_PASSWORD)
}
pom.version = project.AAR_VERSION//eg: 1.0.0
} else {
repository(url: project.SNAPSHOT_URL) {//测试仓库地址
authentication(userName: project.MAVEN_USERNAME, password: project.MAVEN_PASSWORD)
}
pom.version = project.AAR_SNAPSHOT_VERSION//eg: 1.0.0-shapshot
}
pom.groupId = project.POM_GROUPID//eg:com.github.bumptech.glide
pom.artifactId = project.POM_ARTIFACTID//eg: glide
pom.name = project.POM_NAME// eg: glide
pom.packaging = project.POM_PACKAGING//eg: aar/jar
}
}
}

maven-publish插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
apply plugin: 'maven-publish'

publishing {
repositories {//仓库
maven {
url = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
credentials {
username = "sonatypeUsername"
password = "sonatypePassword"
}
}
}

publications {//发布产物
//下面这个名字可以自己定义如:debug、release
maven(MavenPublication) {

//配置产物,三种方式
//1、依赖bundleReleaseAar任务,并上传产物
afterEvaluate{
artifact(tasks.getByName("bundleReleaseAar"))
}
//2、直接指定路径
artifact "$buildDir/outputs/aar/${project.name}-release.aar"
//3、结合agp插件

groupId = 'com.example'
artifactId = 'my-library'
version = '1.0.0'

pom {
name = 'My Library'
description = 'A description of my library'
url = 'https://github.com/example/my-library'
}
}
}

}

结合agp插件,指定产物:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
afterEvaluate {
publishing {
repositories {//仓库

}
}

publications {//发布产物
maven(MavenPublication) {
from components.release//发布内容
artifact sourcejar//上传源码
}
}

}

参考资料

maven插件 和 maven-publish 插件的区别
Maven 插件与 Maven-Publish 插件的差异

概述

书籍简介
慢思考:大脑超载时代的思考学

关于作者

特奥·康普诺利(Teo Compagnoli)教授是一位在医学、神经精神病学、心理治疗和商业咨询领域都颇有建树的专家。

  • 比利时的鲁汶天主教大学获得医学博士
  • 荷兰的阿姆斯特丹大学获得博士

其他出版物:

  • 《压力:朋友和敌人》

本书的结构

  1. 第一部分:解释了大脑的工作机制
  2. 第二部分:忽视大脑的优势劣势就会给大脑套上无形的锁链
  3. 第三部分:解开大脑锁链的方案——慢思考

导读

人的大脑有三套负责认知决策的脑系统:

  • 反射脑:快速原始无意识处理问题
  • 思考闹:慢而成熟消耗大量能量
  • 存储闹:存储信息激发创意

如何保持专注:

  • 第一,彻底离线:抽出固定的不受打扰的时间完成专注工作和对话
  • 第二,批量处理:尽量减少切换次数
  • 第三,恢复正常的睡眠模式
  • 第四,科学应对负面压力

第一部分:神奇大脑一个简单而迷人的科学真相

  • 第一章,关于大脑的惊人真相
    大脑里帮助我们处理数据的细胞总数共有1600亿个,大脑并不像机器一样由一个个独立部件组成,而是一套层层叠叠的复杂网络,他没有中枢决策器官。新细胞的产出会随着年龄的增长而减少但不会彻底停止。
    大脑能够与身体里的50万亿~100万亿个细胞进行直接的双向通信,这些细胞组成了我们的“身体脑”。
    身体脑通过三套系统影响全身所有细胞:
    • 反应极其迅速的神经系统
    • 反应较慢的内分泌系统。
    • 免疫系统。
  • 第二章,果壳里的三种脑
    • 慢而成熟的思考脑
      • 速度慢,需要专注,消耗大量能量,易疲劳,串行处理,制定远期目标并提前做出预判。
    • 快而原始的反射脑
      • 速度快,自发无意识,情感网络也属于反射脑的一部分。
    • 时刻等待空闲的存储脑
      • 信息分类存储,主要以联想方式保存信息,年龄增加信息检索时间增加,与思考脑保持平衡,其中一个激活另一个就休息。
  • 第三章,思考脑:不能一心二用
  • 第四章,反射脑:总喜欢抄捷径
  • 第五章,存储闹:至关重要的放松
  • 第六章,如何在扁平的世界深入思考

第二部分:脑锁链如何不自觉地摧毁自己的大脑

  • 第七章,1号锁链:随时在线
    • 现代技术让我们被短信邮件通知电话等外部事件所吸引,导致精力分散。
    • 信息超载,信息的充沛消耗资源,消耗什么资源呢?接收者的注意力!
    • 决策疲劳:经过一段时间持续的自我控制或是做出大量的小选择以后,人 的自控力、毅力、面对失败时的韧性都会有所衰退,拖延情况加剧, 数学计算的数量和质量下降,决策能力也会变差。
  • 第八章,2号锁链:多任务并行
  • 第九章,3号锁链:低水平压力
  • 第十章,4号锁链:睡眠不足
  • 第十一章,离线思考为何如此困难
    • 深入阅读是思考不可或缺的前提
    • 真正的对话对思考至关重要
      • level1 = 闲聊:重点不在于内容,在于维护关系
      • level2 = 讨论:说明自己的主观看法、观点、意见、信念和价值判断
      • level3 = 真正对话:综合彼此看法创造出新意义并由此建立更稳固的关系。能够发起并引导真正的对话,这是智商和情商的重要元素。
    • 分散注意力的罪魁祸首

第三部分:慢思考如何解放你的大脑

  • 第十二章,1号解锁秘诀:离线思考
    • 抽出固定的不受打扰的时间,来完成专注的工作和对话。状态最好的时间段(早上?晚上?)。
    • 每周日晚抽出20分钟计划一周的工作,每天睡前抽10分钟安排第二天的工作,这样,睡觉时,存储脑会提前工作。
    • 纸质阅读更利于理解、阅读速度更快、也更不容易疲劳
  • 第十三章,2号解锁秘诀:批量处理

13.1 艾森豪威尔原理(事情的重要性、紧急性四象限)

13.2 帕累托法则(20%的活动创造80%效益,要提高效率,你的找出那些高价值的活动来)

  • 递进帕累托法则(平方:4%的活动产生64%的价值,三次方)
  • 快乐的帕累托法则(做积极有意义让你快乐的事情)

13.3 批量处理:
13.4 合理安排每个人的任务:
13.5 从根源消除多任务:管理者在规划工作流程和项目时应该尽量避免多任务并行。
13.6 如何打败邮件怪兽:邮件会过度分散我们的专注力,要集中批量把它处理了。(这可能是外国人生活的一部分吧)

  • 第十四章,3号解锁秘诀:恢复正常的睡眠模式
    • 保证8小时睡眠
    • 每天同样的时间就寝起床,包括周末(补觉应该早点上床而不是晚起)
  • 第十五章,4号解锁秘诀:科学应对负面压力
    • 短暂压力能刺激智力生产力,压力过大持续时间过长会摧毁你的智力生产力。
    • 频繁任务切换导致的慢性压力会积压成大压力导致思考精疲力尽
  • 第十六章,ABC模式:如何把坏习惯变成好习惯

总结

这本书的中文名翻译,烂透了!原书名:《脑链:在高度互联的多任务世界中释放你的潜能》核心思想是让你提升大脑利用率,高效工作生活,琐碎工作集中处理,专注。
第一部分介绍大脑的工作机制,第二部分介绍了一些导致我们大脑效率低下的问题,第三部分介绍一些方法解决这些问题。


一、磁盘的结构

磁盘按照物理结构和逻辑结构区分比较好。

1.1 HDD物理结构(Hard Disk Drive)

  • Platters:盘片
  • Head:读写头
  • Spindle:主轴
  • Actuator Arm:机械臂
  • Cylinder:柱面
  • Sector:扇区
  • Track:磁道:

1.2 SSD的物理结构(Solid State Drive)

1.2.1 基本存储单元

通过向被绝缘层包围的浮栅层充放电来写入擦除数据。(非易失存储器)

1.3 逻辑结构

文件系统block -> 磁盘block -> n * 扇区

二、文件系统挂载

文件系统生成后,还不能直接使用,需要借助”mount”操作,将这个文件系统加入到Linux的管理,这样用户才能看到并访问

三、虚拟文件系统

虚拟文件系统为各种文件系统提供一个通用的接口,其支持的文件系统可以划分为三种主要类型:

  • 磁盘文件系统(EXT3、NTFS)
  • 网络文件系统
  • 特殊文件系统(/proc)

虚拟文件系统通过引入一套通用的文件模型来支持所有的文件系统,通用模型由四大对象组成:

  • 超级块对象
  • 索引节点对象
  • 目录项对象
  • 文件对象

3.1 超级快对象:代表一个具体的已安装文件系统

1
2
3
struct super_block {
struct super_operations s_op;//操作对象
}

3.2 索引节点对象:代表一个具体的文件

1
2
3
struct inode {
struct inode_operations *i_op;
}

3.3 目录项对象:代表一个目录项,是路径的一个组成部分

1
2
3
struct dentry {
struct dentry_operations *d_op;
}

3.4 文件对象:代表由进程打开的文件

1
2
3
struct file {
struct file_operations *f_op;
}
四、相关系统调用
系统调用 说明
mount() unmount() unmount2() 安装卸载文件系统
mkdir() rmdir() 创建删除目录
unlink() rename() 对目录项进行操作
mmap() mmap2() munmap() 处理文件内存映射
read() write() 进行文件IO操作
select() poll() 等待一组文件描述符上发生事件
open() close() create() 打开关闭创建
chmod() fchmod() utime() 更改文件属性
五、参考文献

https://z.itpub.net/article/detail/8ABB71A5EFED33EA9D09353759A91F1C

深入理解 Linux Ext 文件系统设计原理

第4章 ext文件系统机制原理剖析

Linux 虚拟文件系统四大对象:超级块、inode、dentry、file之间关系

从内核文件系统看文件读写过程


概述

书籍简介
麻省理工深度思考法 : 从模型及动力机制来思考现象
关于作者

[日] 平井孝志(Takashi Hirai),罗兰贝格管理咨询公司执行董事,东京大学理学硕士、麻省理工MBA博士。

其他出版物:

  • 《本質思考 : MIT菁英這樣找到問題根源,解決困境》、
  • 《图像思考术 : 为什么聪明人会通过画图来思考?如何用一页纸解决生活和工作问题》

书本的结构

  1. 九个思维定式(了解思维定式才能注意📢避免)
  2. 模型和动力机制
  3. 第一步:建立模型
  4. 第二步:解读动力机制
  5. 第三步:寻找改变模型的对策
  6. 第四步:从实践获得反馈
  7. 日常训练方法
九个思维定式
  • 初级思维定式
    • 因果倒置——————(表面现象不是原因,究其现象的本质)
    • 满足于普通解
  • 可能陷入两难的严峻定式
    • 依赖框架——————(框架是工具,不满足于工具的使用,而是借助框架思考)
    • 范围适应——————(指着眼于事物分类以寻找解释)
    • 思考止于关键词——————(要理解和思考一些高大上的关键词的含义,别以为你懂了)
    • 执着于初步假设
  • 不能迈入思考大门的症状
    • 忘却思考的初衷——————(收集资料是为了使用资料,而不是目的)
    • 偏重过程
    • 失去独立思维——————(依赖他人,一味地”是啊”,”对啊”,”是这样吗?”)
模型和动力机制

“本质” = “模型” × “动力机制”

“模型是指产生某种现象的结构,包括构成要素及其相互关系。”

“所谓动力机制,是以长远目光观察模型产生的现象,以及今后将会产生怎样的结果及动向,即会出现怎样的模式。”

模型是什么?

  • 剥离细枝末节后的精简概念图或因果循环图

动力机制是什么?

  • 模型随着时间流逝产生的运动及结果
建立模型
  • 分析问题的因素,及其因果关系
  • 用一张图绘制出因果循环图

建模要点①:5个要素:

  • “输入源是指投入模型中的要素”
  • “输出点是指模型产生的成果”
  • “竞争关系是指在输入及输出等方面互相竞争的对象”
  • “合作关系是指在一起可以互补或协作的对象”
  • “影响者是指间接对模型整体产生重大影响的要素”

建模要点②:层次结构

建模要点③:注重因果,无视相关

解读动力机制

“动力机制的 6 种代表性模式”

  • 动力机制探究要点①:分开研究存量和流量

  • 动力机制探究要点②:对事物进行非线性解读

  • 动力机制探究要点③:探究作用与反作用

  • 动力机制探究要点④:从各要素的视角进行深层次的思考

  • 动力机制的解读方法① 探究拐点

  • 动力机制的解读方法② 研究相变(相变使动力机制不再连续)

  • 动力机制的解读方法③ 锁定本源动力

寻找改变模型的对策(寻找解决问题的根本方法)
  • 寻找对策的要点① 正确理解前提条件
  • 寻找对策的要点② 原因不一定接近结果
  • 寻找对策的要点③ 将思考范围扩展到受影响的方方面面(不断地问自己是否考虑到了所有可能有影响的因素)
  • 寻找对策的要点④ 提升视角
    • 尝试偶尔放下眼前的问题(如果被眼前的问题占用太多注意力,就很难摸索出问题的整体脉络)
  • 寻找对策的要点⑤ 想一想“该如何思考”
    • “首先思考的应该是思考顺序和判断标准”
从实践获得反馈

从实践中得到的反馈可以提高思考精确度,反复练习建立模型、解读动力机制、寻找改变模型的对策。

日常训练方法

略。

总结

  • 全书的核心在第四第五章。其他部分可以快速跳读。
  • 全书围绕1.建立模型、2.解读动力机制、3.改变模型,这三个步骤介绍了当我们遇到各种问题时,我们应该如何分析问题,找出问题的本质,然后从本质解决问题本身,而不是浮于表面。同时,脑海中要牢记一些思维定式,避免陷入思维定式当中。

说明:

宅学部落这个网站看到一篇讲CPU流水线的文章,写的非常好,为了便于翻阅回顾,转载之。

正文:

现在的CPU处理器一般都是超流水线工作,动不动就是10级以上流水线,超高主频,这两者之间有什么关系呢?今天就跟大家科普下CPU流水线的工作原理,以及他们之间的关系。

说到流水线,很多人会想到富士康;说到富士康,很多人会想到张全蛋。作为富士康 3 号流水线资深质检员,下面就请张全蛋给大家科普下什么是流水线,大家鼓掌欢迎。

Micheal Jack 眼中的流水线

大家好,我是张全蛋,英文名叫Micheal Jack,法文名叫霍雷呆-杰Q赖,大家也可以叫我查理。作为iPhone 手机 3 号流水线的资深质检员,我很忙的,每分钟都是几百万的生意。像我们富士康这样的transnational enterprise,经常会和不同国家的客户说一些技术上的meeting啊、下班陪他们message啊,都需要英文的。像我们厂里不会说英语的啊,都会被经理 fire 掉的。在我们厂里,流水线叫法太 low了,我们都叫 pipeline,一条pipeline,每个人分工不同,从手机原材料到成品iPhone ,只需要短短几分钟。—- 《嵌入式C语言自我修养》

查理很忙,介绍到这里就走了,接下来我们继续了解下什么叫流水线。

流水线是工业大生产下的产物。在农业社会做一部手机,需要的是工匠、手艺人,就像故宫里制作钟表的那些匠人一样,是需要拜师学艺、慢慢学习的:从手机组装、质检、贴膜、包装都是一个人,什么都要学。手艺人慢工出细活,但成本很高,到了工业化社会就不一样了:大家分工合作,将做手机这个复杂过程拆分为多个简单步骤,每个人负责一个步骤,经过刻意(机械)练习和培训,就可以很快上手。每个人都做自己最擅长的,可以大大提高工作效率。

如果每个人都单独做一部手机,焊接电路、组装成品这一步骤一般人需要8分钟,测试检验一般需要4分钟,贴膜包装成盒一般需要4分钟,总共需要16分钟。每16分钟,如果有3个工人的话,一共可以生产3部手机。一个新员工从进厂开始,要培训学习三个月才能掌握所有的技能,才能上岗。如果引入生产流水线就不一样了,每个人只负责一个工序,比如赵铁柱只负责焊接电路、组装手机,李小花只负责贴膜,进厂培训3天就可以快速上手了,对工人的技能要求大大降低!而且随着时间积累,每个人对自己所负责的工序越来越熟练,每道工序需要的时间大大减少:赵铁柱焊接电路越来越顺手,花费时间从原来的8分钟缩减为4分钟;张全蛋的质量检验练得如火纯情,整个流程做完只需要2分钟;李小花的贴膜技术也越来越溜了,从贴膜到包装2分钟搞定。每16分钟,赵铁柱可以焊接4块电路板 ,整个流水线可以生产出4部手机,产能整整提升了33.33%!老板高兴,赵铁柱高兴,张全蛋和李小花更高兴,因为每做2分钟,他们还可以休息2分钟,刷刷微博滑个抖音,岂不乐哉!

看到这里可能有人抬杠了:你这么算是不对的,每道工序所用的时间都变为原来的一半,怎么可能做得到?其实要做到不难的,只要工序拆解得合理,容易上手,再加上足够时间的机械重复,很多人都可以做得到。只要奖金发到位,蛋糕店里的小姐姐夹蛋糕的速度比你眨眼的速度都快,银行柜台的小李数钞票的速度比点钞机都快,买单时饭店前台的小妹摁计算器的速度比你掏钱的速度都快。

流水线工作原理

一条指令的执行一般要经过:取指令、翻译指令、执行指令三个基本流程。CPU内部的电路分为不同的单元:取指单元、译码单元、执行单元等,指令的执行也是按照流水线工序一步一步执行的。我们假设每一个步骤执行时间都是一个时钟周期,那么一条指令执行需要3个时钟周期。

CPU 执行指令的3个时钟周期里,取指单元只在第一个时钟周期里工作,其余两个时钟周期都处于空闲状态,其它两个执行单元也是如此,效率太低了,消费者无法接受,老板也不能接受。解决方法就是引入流水线,让流水线每一颗螺丝钉都马不停蹄地运转起来,最好一刻也不要停。

引入流水线工作模式后可以看到,除了刚开始第一个时钟周期大家还可以偷懒外,其余的时间都不能闲着:从第二个时钟周期开始,当译码单元在翻译指令1时,取指单元也不能闲着,要接着去取指令2。同样如此,从第三个时钟周期开始,当执行单元执行指令1时,译码单元也不能闲着,要接着去翻译指令2,而取指单元要去取指令3。从第四个时钟周期开始,每个电路单元都会进入满荷负载工作状态,像富士康工厂里的流水线一样,源源不断地执行一条条指令。

引入流水线后,虽然每一条指令执行流程不变,还是需要3个时钟周期,但是从整条流水线的输出看来,差不多平均每个时钟周期就能执行一条指令。原来执行一条指令需要3个时钟周期,现在平均只需要1个时钟周期,CPU 性能提升了不少。

流水线的本质其实就是拿空间资源换时间。将每条指令分解为多步,指令的每一步都有独立的电路来执行,并让不同指令的各步操作重叠,从而实现几条指令并行处理,从而加快程序的运行。

CPU内部的流水线如此,富士康工厂里的iPhone流水线也是如此,通过不断往流水线增加人手来提高流水线的生产效率,也就是吞吐率。

超流水线技术

想知道什么是超流水线,让我们再回到富士康。

在富士康 3 号 iPhone 流水生产线上,因为赵铁柱工作效率不高,焊接组装一步手机需要 4 分钟,导致生产一部iPhone手机也得需要 4 分钟,从而拖累了整条生产线的生产效率。老板很生气,后果很严重,赵铁柱没干到一个月就被 fire 掉了。后面几个月,陆陆续续来了不少人:小黑、皮裤哥、红姐,都想试试这份工作,可惜干得还不如赵铁柱,挑战电子厂失败,早已提桶跑路。

老板招不到人,感觉又错怪了赵铁柱,于是决定升级生产线,并承诺加薪重新召回了赵铁柱。

老板找出了生产线的瓶颈:每道工序都是需要2分钟,只有赵铁柱这道工序耗时4分钟,老板错怪了这铁柱,这不是赵铁柱的原因,是因为这道工序太复杂。于是把这道工序进行了拆解为2道工序:焊接电路板和组装手机。焊接电路仍由赵铁柱负责,把电路板、显示屏、手机外壳组装成手机这道工序则由新招员工王建国负责。生产流水线优化后,赵铁柱焊接电路只需要2分钟,王建国组装也只需要 2 分钟,生产每部 iPhone 的时间由原来的 4 分钟缩减为 2 分钟,生产流水线的瓶颈解决了!

跟富士康流水线类似,优化CPU流水线也是提升CPU性能的有效手段。流水生产线存在木桶短板效应,我们只需要找出CPU流水线中的性能瓶颈,即耗时最长的那道工序,然后再进行细分、优化为更多的工序就可以了。每一道工序我们称为流水线的一级,流水线越深,每一道流水电路单元的执行时间就会变得越小,我们处理器的时钟周期就可以更短,从而可以通过提升CPU主频来提升CPU性能、提高工作效率。

在富士康流水生产线中,每道工序的最长耗时时间决定了整条生产线的吞吐率。在CPU内部也是如此,每个流水单元的执行时间(即时间延迟)决定了CPU流水线的性能。CPU流水线中的每一道电路单元由组合逻辑电路和寄存器组成,逻辑单路用来执行本道工序的逻辑运算,寄存器用来保存结果,并作为下一道工序的输入。

流水生产线是通过减少每一道工序的耗费时间来提升整条流水线效率的。在CPU内部也是如此,CPU内部的数字电路是靠时钟驱动来工作的,既然每条指令的执行时钟周期数不变,即执行每条指令需要3个时钟周期,但是我们可以通过缩短时钟周期的方法来提升效率,即减少每条指令所耗费的时间。减少时钟周期,也就是提升CPU主频,一个关键的制约因素就是CPU内部每一个执行单元的耗费时间。虽然说电信号在电路中的传播时间很快,可以接近光速,但是经过成千上万的晶体管,不停地信号翻转,还是会带来一定的时间延迟,这个时间延迟我们可以看做这道工作的执行时间。以上图为例,如果每个执行单元的延迟是 1.5 纳秒,那么你的时钟周期至少也得2纳秒以上,否则电路就会工作异常。如果驱动CPU工作的时钟周期是 2 纳秒,CPU的主频就是 500 MHz。现在的CPU流水线深度可以做到10级以上,流水线的每一级时间延迟可以做到皮秒级别,驱动CPU工作的时钟周期可以做到更短,因此可以把CPU的主频飙到 5 GHz 以上。

我们把5级以上的流水线称为超流水线结构。高性能的处理器,为了提升CPU主频,一般都会采用这种超流水线结构。Intel的 i7 处理器有16级流水线,AMD的速龙64系列CPU流水线为20级。史上具有最长流水线的是Intel的第三代奔腾四处理器,有31级的流水线。

想要提升CPU的主频,根本在于减少流水线中每一级流水的执行时间,消除木桶的短板效应,才能提升流水线的整体性能。解决方法有三个:一是优化流水线中各级流水线的性能,受限于当前集成电路的设计水平,这一步最难;二是依靠集成电路的制造工艺,更先进的纳米工艺,芯片面积越小,发热越小,更容易提升主频;三是不断地增加流水线,流水线越深,流水线的各级延迟就可以做得越小,更容易提高主频。

流水线是否越深越好呢?非也。流水线的本质是拿空间换时间,流水线越深,电路就会越复杂,需要更多的组合逻辑电路和寄存器,芯片面积也就越大,功耗也就随之上升了。拿功耗增长换来性能提升,在PC机和服务器上还行,但对于很多靠电池供电的移动设备的处理器来说就无法接受了,CPU设计人员需要在性能和功耗之间做一个很好的平衡。

流水线越深,就越能提升性能吗?也不一定。流水线是靠指令的并行来提升性能的,第一条指令还没有执行完,下面的第二条指令就开始取指、译码了。执行的程序指令如果是顺序结构,没有中断或跳转,流水线确实可以提高执行效率。但是当程序指令中存在跳转、分支结构时,下面预取的指令可能就要全部丢掉了,需要到要跳转的地方重新取指令执行。如下面的分支,如果BEQ条件不满足,处理器可能就会将预期的ADD指令全部丢弃,重新到here标签处取SUB指令执行。

script
1
2
3
4
5
6
7
8
BEQ R1, R2, here
ADD R2, R1, R0
ADD R5, R4, R3
...
here:
SUB R2, R1, R0
SUB R5, R4, R3
...

流水线越深,一旦预取指令失败,浪费和损失就会越严重,因为流水线中预取的几十条指令可能都要丢弃掉,流水线发生了停顿,无法按照预期继续执行,这种情况我们一般称之为流水线冒险(hazard)。在现在很多超流水线处理器中,为了避免这种情况出现,会采取各种各样的方法去避免这种情况,以免影响处理器的性能。

流水线越深,一旦预取指令失败,浪费和损失就会越严重,因为流水线中预取的几十条指令可能都要丢弃掉,流水线发生了停顿,无法按照预期继续执行,这种情况我们一般称之为流水线冒险(hazard)。在现在很多超流水线处理器中,为了避免这种情况出现,会采取各种各样的方法去避免这种情况发生,以免影响处理器的性能。


一、概述

Bloc = Business Logic Component

二、结构

BloC本身是一个独立的package、flutter-bloc基于BloC和Provider实现,其结构如下图所示:

三、 实现

3.1 BloC是基于dart的Stream API实现的发布订阅模式。
  • 通过on方法订阅事件并提供处理函数,收到Event再将Event转换成State返回给Bloc
  • 通过add方法发布事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
abstract class Bloc<Event, State> extends BlocBase<State>
implements BlocEventSink<Event> {
//所有的订阅者
final _subscriptions = <StreamSubscription<dynamic>>[];

final _eventController = StreamController<Event>.broadcast();

//添加订阅者
void on<E extends Event>(
EventHandler<E, State> handler, {
EventTransformer<E>? transformer,
}) {
//这里开始了listen
final subscription = xxx.listen(null);
_subscriptions.add(subscription);
}

@override
void add(Event event) {
try {
onEvent(event);
_eventController.add(event);
} catch (error, stackTrace) {
onError(error, stackTrace);
rethrow;
}
}

}
3.1 事件和状态之间的转换
  • 转换逻辑有业务层通过on()注入
  • 内部的核心是_Emitter以及 _eventController_stateController
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
(dynamic event) {
void onEmit(State state) {
if (isClosed) return;
if (this.state == state && _emitted) return;
onTransition(Transition(
currentState: this.state,
event: event as E,
nextState: state,
));
emit(state);
}

final emitter = _Emitter(onEmit);
final controller = StreamController<E>.broadcast(
sync: true,
onCancel: emitter.cancel,
);

void handleEvent() async {
void onDone() {
emitter.complete();
_emitters.remove(emitter);
if (!controller.isClosed) controller.close();
}

try {
_emitters.add(emitter);
//交给外部实现转换事件和状态
await handler(event as E, emitter);
} catch (error, stackTrace) {
onError(error, stackTrace);
rethrow;
} finally {
onDone();
}
}

handleEvent();
return controller.stream;
}

四、参考

主要参考和debug了bloc仓库里面examples中login的例子:
这里


简介

官方提供的一个简单的状态管理库。

关键点:

  • 提取状态:状态变量和UI分离
  • 访问状态:将UI和状态建立联系
  • 使用状态:读取状态变量

前置知识

1、InheritedWidget

关键点:

  • Element持有Widget对象
  • Element也是一个BuildContext对象
  • Element里面持有所有的InheritedElement

所以:通过BuildContext对象可以拿到所需的Widget对象,然后访问里面的数据。

父节点存放数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class InheritedShareWidget extends InheritedWidget {
final int data;//用于共享的数据
InheritedShareWidget({this.data, Widget child}) : super(child: child);

//定义便捷方法,方便子控件获取共享数据
static InheritedShareWidget of(BuildContext context) {

///当子控件依赖使用了我们的数据源时,数据变动会触发子控件中的 didChangeDependencies 方法
return context.dependOnInheritedWidgetOfExactType<InheritedShareWidget>();

///(前提:子控件使用了数据源)子控件中的 didChangeDependencies 方法不会被触发
// return context.getElementForInheritedWidgetOfExactType<InheritedShareWidget>().widget;
}

@override
bool updateShouldNotify(covariant InheritedShareWidget oldWidget) {
return oldWidget.data != this.data;//返回true时,才会通知子控件
}
}

子节点获取数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class TestShareChildWidget extends StatefulWidget {
const TestShareChildWidget({Key key}) : super(key: key);
@override
_TestShareChildWidgetState createState() => _TestShareChildWidgetState();
}

class _TestShareChildWidgetState extends State<TestShareChildWidget> {
@override
void didChangeDependencies() {
///如build 方法中没有使用 InheritedShareWidget 的数据,那么它的didChangeDependencies()将不会被调用
super.didChangeDependencies();
print("enter didChangeDependencies");
}

@override
Widget build(BuildContext context) {
print("enter child build");
//获取Inherited的共享数据:
final data = InheritedShareWidget.of(context).data.toString();
return Text(data);
}
}

父子节点嵌套:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class _TestInheritedWidgetState extends State<TestInheritedWidget> {
int count = 0;

@override
Widget build(BuildContext context) {
return Center(
child: InheritedShareWidget(
data: count,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TestShareChildWidget(),
RaisedButton(
child: Text('add'),
onPressed: () {
setState(() {
++count;
});
})
],),),);}}

2、InheritedProvider

关键点:

  • 通过InheritedProvider及其子类(如:ChangeNotifierProvider)来包裹其他Widget(child),其实是将child放入了_InheritedProviderScope
  • _InheritedProviderScope是一个InheritedWidget所以,InheritedProvider及其子类将会持有child对象,及其数据。

Provider的基本使用

1
2
3
4
5
6
7
8
9
///这是状态
class Person with ChangeNotifier {
String name = "ChangeNotifierProvider";

void changName({required String newName}) {
name = newName;
notifyListeners();//1
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
class MainApp extends StatelessWidget {
const MainApp({super.key});

@override
Widget build(BuildContext context) {
return ChangeNotifierProvider<Person>(///状态和UI之间建立联系
create: (ctx) => Person(),
child: const MaterialApp(
home: ChangeNotifierProviderDemo(),
),
);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class ChangeNotifierProviderDemo extends StatelessWidget {
const ChangeNotifierProviderDemo({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("ChangeNotifierProvider")),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Consumer<Person>(///使用状态
builder: (ctx, person, child) => Text(person.name),
),
Consumer<Person>(
builder: (ctx, person, child) {
return ElevatedButton(
onPressed: () => person.changName(newName: "ChangeNotifierProvider更新了"),
child: const Text("点击更新"),
);},),],),),);}
}

Provider的类结构

3.1 InheritedProvider的子类只是具体功能的实现,基础逻辑封装在InheritedProvider中
3.2 InheritedProvider将职责转嫁给_InheritedProviderScope而_InheritedProviderScope是一个InheritedWidget

如何实现监听

1、数据实现了ChangeNotifier,变更后调用notifyListeners(),触发回调。

2、ChangeNotifierProvider继承自ListenableProvider,ListenableProvider构建时开启监听:

1
2
3
4
5
6
7
static VoidCallback _startListening(
InheritedContext e,
Listenable? value,
) {
value?.addListener(e.markNeedsNotifyDependents);
return () => value?.removeListener(e.markNeedsNotifyDependents);
}

class InheritedContext extends BuildContext{
void markNeedsNotifyDependents();
}

3、markNeedsNotifyDependents是InheritedContext中的方法,其实现类是_InheritedProviderScopeElement

1
2
3
4
5
6
7
8
9
@override
void markNeedsNotifyDependents() {
if (!_isNotifyDependentsEnabled) {
return;
}

markNeedsBuild();
_shouldNotifyDependents = true;
}

4、markNeedsBuild是Element的方法:标记需要重新构建

1
2
3
4
5
6
7
8
void markNeedsBuild() {
...
if (dirty) {
return;
}
_dirty = true;
owner!.scheduleBuildFor(this);
}

局部更新

Provider的Selector提供了缓存Widget的功能,当Widget没有变化时,将直接返回缓存,否则重新build。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class _Selector0State<T> extends SingleChildState<Selector0<T>> {
T? value;
Widget? cache;//这是缓存
Widget? oldWidget;

@override
Widget buildWithChild(BuildContext context, Widget? child) {
final selected = widget.selector(context);

final shouldInvalidateCache = oldWidget != widget ||
(widget._shouldRebuild != null &&
widget._shouldRebuild!(value as T, selected)) ||
(widget._shouldRebuild == null &&
!const DeepCollectionEquality().equals(value, selected));
if (shouldInvalidateCache) {//需要重新构建
value = selected;
oldWidget = widget;
cache = widget.builder(
context,
selected,
child,
);
}
return cache!;
}

@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties.add(DiagnosticsProperty<T>('value', value));
}
}

参考

https://juejin.cn/post/7067356022272163847#heading-16

Row和Column分别在横向和纵向对子Widget进行布局。

  • 对于Row来讲,横向是主轴,纵向是交叉轴。
  • 对于Column来讲,横向是交叉轴,纵向是主轴。

针对主轴和交叉轴,不同大小的子Widget该如何对齐呢?Flutter提供了下列属性:

MainAxisAlignment:主轴对齐方式

属性值 解释 图示
start 靠近主轴的开始
end 靠近主轴的末尾
center 靠近主轴中间
spaceBetween 剩余空间在孩子中间平分
spaceAround 剩余空间围绕孩子平分
spaceEvenly 剩余空间在孩子之间均等分配

CrossAxisAlignment:交叉轴对齐方式

属性值 解释 图示
start 左对齐(Column)或上对齐(Row)
end 右对齐(Column)或下对齐(Row)
center 中间对齐
stretch 拉伸
baseline 基线对齐,需要配合textBaseline属性使用

本章包含三节:

  • 是什么让你相信了那些荒谬之辞
  • 光环效应与群体智慧
  • 眼见为实的想法往往让我们仓促作出决定

开篇

“同样的形状在字母的环境下就容易被看做是字母,在数字的环境下就容易被看做是数字”

“你过早地对它的“身份”下了结论,并且根本意识不到你已经赋予了某种歧义以解释。”

“你作了一个确切的选择,但自己却没有意识到自己这样做了”

是什么让你相信了那些荒谬之辞

联想记忆的运作是导致“确认偏误”的原因之一

“你试试他给出的例子:“白鱼吃糖果。”
你有可能意识到一个关于鱼和糖果的模糊印象,这个印象的产生过程,就是联想记忆自动搜索“鱼”和“糖果”这两个概念之间各种联系的过程,这一过程会使这种很荒唐的说法看起来竟有些道理了。

光环效应与群体智慧

“如果你赞同一个总统的政见,你可能也会喜爱他的声音及着装。喜爱(或讨厌)某个人就会喜爱(或讨厌)这个人的全部—包括你还没有观察到的方面—这种倾向就叫做光环效应”

Alan:聪明—勤奋—冲动—爱挑剔—固执—忌妒心强
Ben:忌妒心强—固执—爱挑剔—冲动—勤奋—聪明

“光环效应注重第一印象,而后续信息在很大程度上都被消解掉了”

眼见为实的想法往往让我们仓促作出决定

“所有受试者都充分了解了整个过程,那些只听到其中一方辩词的受试者能够很轻松地为另一方写出辩词。然而,片面的证据陈述对判断有着重大影响。
另外,只掌握一方证据的受试者比掌握了双方证据的受试者更有自信。”

“这正说明人们根据已有信息“勾勒出的故事的连贯性增强了他们的自信心。一个好故事最重要的是信息的前后一致性,而不是其完整性。
的确,你常会发现:知道得很少反而可以把已知的所有事物都囊括进连贯的思维模式中。

“眼见即为事实的理念有助于达成连贯性和认知放松的状态,从而使我们相信某个陈述是真实的。这一理念解释了我们能够快速思考的原因,解释了我们是如何弄清楚一个复杂领域中那些信息片段的含义的。很多时候,我们拼凑出的连贯情节与事实是无限接近的,完全可以用来支持理性活动”