0%


概念

一种空间高效的概率型数据结构,用于判断一个元素是否存在于集合中。

空间高效:用几个比特位来标识存在与否,不占用太多内存空间。
概率型:有几率把一个不存在的元素判定为存在。

Hash表存在的问题:数据量很大时,占用内存太多了。

基本操作

插入操作:

初始bit数组A[m-1]全部置0,通过映射函数,将要插入的值随机映射到数组范围内,将该位置为1

查找操作:

将要查找的元素通过映射函数,映射到数组中,判断该bit位是否为1

应用:

  • 网页爬虫对 URL 去重,避免爬取相同的 URL 地址;
  • 反垃圾邮件,从数十亿个垃圾邮件列表中判断某邮箱是否垃圾邮箱;

图片来源

概述

书籍简介
认知天性 : 让学习轻而易举的心理学规律
关于作者

三位作者:

  • 彼得·布朗(Peter C. Brown)
    一位作家和独立出版人,专注于撰写历史、商业和心理学方面的书籍。他在《认知天性》中担任主要撰稿人,负责将科学家们的研究成果转化为易于理解和应用的内容
  • 亨利·勒迪格(Henry L. Roediger III)
    华盛顿大学心理与脑科学系的教授。他的研究主要集中在记忆和学习方面,尤其是记忆的提取和测试效应(testing effect)。勒迪格教授在认知心理学领域发表了大量的研究论文,并获得了多项荣誉和奖项。
  • 马克·麦克丹尼尔(Mark A. McDaniel)
    华盛顿大学心理与脑科学系的教授,专注于认知心理学和教育心理学。他的研究兴趣包括记忆、学习策略和如何在实际教育环境中应用这些策略。麦克丹尼尔教授也在认知心理学领域发表了许多重要的研究成果,并与勒迪格教授共同开展了大量的合作研究。
结构
  • 学习是挑战天性的必须课
  • 学习的本质:知识链和记忆结
  • “后刻意练习”时代的到来
  • 知识的“滚雪球”效应
  • 打造适合自己的心智模型
  • 选择适合自己的学习风格
  • 终身学习者基本的基本
  • 写给大家的学习策略
内容
  • 1、学习是挑战天性的必须课
    • 天性懒惰孕育了认知规律和心智模型
      • 耗费心血的学习才是深层次的,效果也更持久。不花力气的学习就像在沙子上写字,今天写上,明天字就消失了。
      • 与反复阅读这种复习方法相比,回想事实、概念或事件会更有效。这种方法被称为检索式练习。
    • 科学“照妖镜”下的学习方法
      • 背诵、不断重复、反复阅读、功利性记忆、集中练习等方式,看起来很刻苦,其实效果不好,很快被忘记。
      • 对文字越熟悉、越流畅阅读,会造成一种掌握的假象。
      • 当事关重大时,当抽象的事务被形象化时,当事情和个人息息相关时,你就会把学到的东西记得更牢。
      • 轻易接受别人的观点,不给自己提问题,没有去想什么是自己不知道的
    • 知识多不等于学习能力强
      • 学习知识不能求快,要求扎实,循序渐进理解。
    • 考试是最有效的学习策略之一
      • 不要把考试当做衡量学习成果的标尺,而是记忆检索的练习,一种学习工具。
      • 主动检索(考试)可以强化记忆,而且检索花费的心思越多,受益就越多。

读书笔记:不要无意识的重复,集中练习、把抽象形象化,找到知识与自己的关联。别太在意考试的成绩。

  • 2、学习的本质:知识链和记忆结
    • 知识最终将变成条件反射
      • 可以带来更好的学习效果:从记忆中检索知识或是早期的训练内容,把这些和新体验联系起来,借助观察和思考,预先演练你下次可能采取的不同做法。
    • 自我检查:给知识链打上记忆结
      • 重复检索能让记忆更清透,而且它把记忆这条绳子又缠了一圈,使其变得 更牢靠。
    • 只需一次自测:一周后回忆率28%跃迁为39%
      • 自测是一种检索式学习,可以强化记忆。
    • 如何成为一名主动学习者
    • 为何学习越轻松效果越不好

读书笔记:不断回顾知识(考试)可以加深印象,减少遗忘。反思也是一种记忆检索。

  • 3、“后刻意练习”时代的到来
    • 频繁的集中练习只会产生短期记忆
    • 间隔练习使知识存储得更牢固
    • 穿插练习有助于长期记忆
    • 多样化练习促进知识的活学活用
    • 善用练习组合,带来成长性思维
    • 知识是平面的,复合型知识是立体的
    • 关于练习的几条普适性原则

读书笔记:这一部分的副标题是连贯深入的。

  • 4、知识的“滚雪球”效应
    • 学习的三个关键步骤
      • 编码
      • 巩固
      • 检索
    • 欲求新知,先忘旧事
      • 使用Mac电脑,要先忘记Windows电脑,因为Windows的操作习惯会干扰你的学习。忘掉的不是知识本身,而是检索的线索。
    • 越容易想起,越不容易记住
    • 学习中必须要做哪些努力
      • 重新巩固记忆
      • 打造心智模型:复杂理论或连续运动技能融合成有意义的整体。
      • 举一反三
      • 构建概念学习
      • 学习迁移
      • 做好学习的心理准备
    • 这些”良性干扰“能提升学习效果
    • 化解因失败带来的焦虑感
    • 创造性源于不设限的学习
    • 别在无法克服的困难上浪费时间

读书笔记:

  • 5、打造适合自己的心智模型
    • 没头脑的机制1和爱自省的机制2
      • 指反射脑和逻辑脑(《思考快与慢》)
    • 学习时避免错觉和记忆扭曲
    • 打造适合自己的心智模型
    • 你无法从不擅长的事情里学到知识
    • 实践和测验才能暴露学习漏洞

读书笔记:

  • 6、选择适合自己的学习风格
    • 主动学习能制造掌控感
    • 你是分析型、创新型、还是实践型思维
      • 第一种智力区分模型:8种
        • 逻辑——数学智力:批判性思考,以及使用数字和抽象概念的能 力,诸如此类。
        • 空间智力:三维判断,以及在脑海中具象化的能力。
        • 语言智力:使用文字和语言的能力。
        • 肢体动觉智力:行动敏捷和控制身体的能力。
        • 音乐智力:对声音、旋律、音色,以及音乐的敏感性。
        • 人际交往智力:“读懂”他人,以及与人有效协作的能力。
        • 内省智力:理解自身,准确判断自身知识、能力、效率的能力。
        • 自然观察智力:区分和关联周围自然环境的能力(例如园丁、猎人 或厨师特有的智力)。
      • 第二种智力区分模型:3种
        • 分析型智力 :分析型智力是我们解决问题的能力,典型的例子就是解答测验中的问题
        • 创新型智力 :创新型智力是我们综合并应用现有的知识与技能,应对那些新的特殊情况的能力;
        • 实践型智力 :实践型智力是我们适应日常生活的能力——明白在具体环境下需要做什么并行动,也就是我们所说的“街头智慧”。
    • 学不好的领域暴露了你的能力结构
    • 用搭积木的方法构建知识
    • 有人喜欢看说明书,有人喜欢动手试错

读书笔记:不同的文化与学习场景需要不同的智力类型。

  • 7、终身学习者基本的基本
    • 双胞胎的认知能力也会天差地别
      大脑的结构与整体构造在很大程度上是由基因决定的,但神经网络的精细构造似乎也可以由经验来塑造,而且具备大幅修改的能力。
    • 性格、求知欲和家庭条件对学习的影响
      智商是基因🧬与环境共同作用的产物。
      人类智商在持续升高,因为教育、文化(电视机兴起)、营养(脂肪酸、铁、维B)发生了极大的变化。
      社会经济地位也会影响智商。早期教育可以提升贫困孩子的智商。
    • 脑力训练可以提升学习自信
      流体智力:指推理、发现关系、抽象 思维,以及在解决问题的同时头脑中保留信息的能力。
      晶体智力:指积累的关于世界的知识,以及从过去的学习与经验中提炼出来的 程序或心智模型。
    • 想要终身成长,请像专家一样思考
      1、信念:你要相信智力水平不是固定的,而是在很大程度上掌握在自己手中。
      2、面对失败的态度:那些将失败归咎于本身无能的人——说“我就是不够聪明”的人——会变得无助;而那些认为失败是努力不够或策略不对的人则会深入发掘,尝试不同的做法。
      3、目标:有的学生以成绩为目标,而有的学生则以学习为目标。对于前一种人来说,他们努力是为了证明自己的能力。对于第二种人来说,他们努力则是为了学到新的知识或技能
    • 学习执行力比学习技巧更重要:成为专家需要一万小时刻意练习。
    • 掌握几个适合自己的记忆方法:记忆宫殿等记忆技巧

读书笔记:智商 = 基因 + 环境因素。我们可以通过改变环境因素提升我们的智商。

  • 8、写给大家的学习策略
    • 给学生的学习策略
      • 练习从记忆中检索新知识
      • 有间隔的安排检索练习
      • 学习时穿插安排不同类型问题
    • 给职场人士的学习策略
    • 给教师的学习策略
      • 向学生解释学习的过程
      • 教学生如何学习
      • 在课堂上创造合意困难
      • 保证透明度:让学生理解用意。
    • 给培训者的学习策略
全书总结

从作者的职业可以看出,一个出版人和两个教授合作出版的一本书。属于认知心理学范畴。主要介绍学习、认知、大脑相关实验和结论。

1、自己究竟有没有掌握一个知识点。考试(测验、自测)是一个很好的检验手段。不像学校里的考试,要以正确的心态看待考试,只是检测自己知识的掌握度,而不是要一较高下。

个人理解:
获取到新知识,停留在浅层记忆,会有迷惑性,以为自己懂了。实则过段时间就忘记了。我们应该间隔性的回忆知识,内化吸收,这样才能将知识灵活运用。

日志库是一个项目的基础功能之一,它应该包括但不限于以下功能:

  • 扩展性:支持把日志记录到多个地方,如:本地文件、控制台、崩溃系统。
  • 高性能:日志记录较为频繁时,如何写文件,提高性能。
  • 稳定性:崩溃前一刻的日志不丢失。

以下是一些开源的日志库,做一个记录:

基于 mmap, 高性能、高可用的 Android 日志收集框架

1
2
3
Log4a.i(TAG, "Hello,Log4a!");
Log4a.flush();
Log4a.release();
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
class Test {
LogConfiguration config = new LogConfiguration.Builder()
.logLevel(BuildConfig.DEBUG ? LogLevel.ALL // Specify log level, logs below this level won't be printed, default: LogLevel.ALL
: LogLevel.NONE)
.tag("MY_TAG") // Specify TAG, default: "X-LOG"
.enableThreadInfo() // Enable thread info, disabled by default
.enableStackTrace(2) // Enable stack trace info with depth 2, disabled by default
.enableBorder() // Enable border, disabled by default
.jsonFormatter(new MyJsonFormatter()) // Default: DefaultJsonFormatter
.xmlFormatter(new MyXmlFormatter()) // Default: DefaultXmlFormatter
.throwableFormatter(new MyThrowableFormatter()) // Default: DefaultThrowableFormatter
.threadFormatter(new MyThreadFormatter()) // Default: DefaultThreadFormatter
.stackTraceFormatter(new MyStackTraceFormatter()) // Default: DefaultStackTraceFormatter
.borderFormatter(new MyBoardFormatter()) // Default: DefaultBorderFormatter
.addObjectFormatter(AnyClass.class, // Add formatter for specific class of object
new AnyClassObjectFormatter()) // Use Object.toString() by default
.addInterceptor(new BlacklistTagsFilterInterceptor( // Add blacklist tags filter
"blacklist1", "blacklist2", "blacklist3"))
.addInterceptor(new MyInterceptor()) // Add other log interceptor
.build();

Printer androidPrinter = new AndroidPrinter(true); // Printer that print the log using android.util.Log
Printer consolePrinter = new ConsolePrinter(); // Printer that print the log to console using System.out
Printer filePrinter = new FilePrinter // Printer that print(save) the log to file
.Builder("<path-to-logs-dir>") // Specify the directory path of log file(s)
.fileNameGenerator(new DateFileNameGenerator()) // Default: ChangelessFileNameGenerator("log")
.backupStrategy(new NeverBackupStrategy()) // Default: FileSizeBackupStrategy(1024 * 1024)
.cleanStrategy(new FileLastModifiedCleanStrategy(MAX_TIME)) // Default: NeverCleanStrategy()
.flattener(new MyFlattener()) // Default: DefaultFlattener
.writer(new MyWriter()) // Default: SimpleWriter
.build();

XLog.init( // Initialize XLog
config, // Specify the log configuration, if not specified, will use new LogConfiguration.Builder().build()
androidPrinter, // Specify printers, if no printer is specified, AndroidPrinter(for Android)/ConsolePrinter(for java) will be used.
consolePrinter,
filePrinter);
}
````

+ [logger](https://github.com/orhanobut/logger) 13.7k star


```java
class Test {
FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
.showThreadInfo(false) // (Optional) Whether to show thread info or not. Default true
.methodCount(0) // (Optional) How many method line to show. Default 2
.methodOffset(7) // (Optional) Hides internal method calls up to offset. Default 5
.logStrategy(customLog) // (Optional) Changes the log strategy to print out. Default LogCat
.tag("My custom tag") // (Optional) Global tag for every log. Default PRETTY_LOGGER
.build();

Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
}

概述

源码

startup库是一个极简启动优化库,可以解决启动中的依赖顺序问题。

基本使用

1.1 实现Initializer接口

1
2
3
4
5
6
7
8
9
10
class LoggerInitializer : Initializer<Logger> {
override fun create(context: Context): Logger {
Logger.init(context)
return Logger
}

override fun dependencies(): List<Class<out Initializer<*>>> {
return emptyList()
}
}

1.2 AndroidManifest.xml中声明

1
2
3
4
5
6
7
8
9
10
<provider>
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">

<meta-data
android:name="me.xxx.demo.LoggerInitializer"
android:value="androidx.startup"/>
</provider>

源码分析

1、默认由ContentProvider onCreate中获取AppInitializer单例
2、调用AppInitializer单例的discoverAndInitialize,解析Manifest里面的mate
3、解析完后放入Set<Class>>中
4、遍历Set,调用doInitialize进行初始化
4.1 检查循环依赖问题
4.2 找到此项的所有依赖项,递归调用doInitialize
4.3 此项依赖初始化完成

缺点

  • 不支持线程控制和等待

其他相关库

android-startup

在接入Google Admob时,依据官方文档 或 依据开发习惯,我们一般先对Admob SDK进行初始化,然后进行广告加载:

1
2
3
4
5
6
7
8
// first init the admob sdk
MobileAds.initialize(context) {
//init successful
}

//second load Ad
val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)

那么,多思考一下,我们有个疑问:

1、一定要先初始化,才能加载广告吗❓

实验设计:不执行初始化操作,直接请求广告。

1
2
val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)

实验结论:不初始化SDK也能成功加载到广告。

2、为什么不初始化也能加载广告呢❓

猜想:
1、初始化和加载有关联性:加载广告时,发现没有初始化,先进行了初始化,再执行广告加载操作。
2、初始化和加载无关联系:加载广告不需要SDK初始化,两者无关联。

设:广告初始化耗时m毫秒,广告加载耗时n毫秒,总耗时m+n毫秒。

实验设计:
A组:执行初始化,同时执行广告加载。
若初始化和加载有关联性,广告加载时长约等于m+n。
若初始化和加载无关联性,广告加载时长约等于n。

日志输出示例:

1
2
3
4
2024-07-06 10:10:06.061 23555-23555 InitAndLoad     com...oid.gms.example.bannerexample  D  call init....
2024-07-06 10:10:06.224 23555-23555 InitAndLoad com...oid.gms.example.bannerexample D start load....
2024-07-06 10:10:07.401 23555-23555 InitAndLoad com...oid.gms.example.bannerexample D after init = 1340
2024-07-06 10:10:08.416 23555-23555 InitAndLoad com...oid.gms.example.bannerexample D onAdLoaded...cost = 2192

初始化耗时 m=1340ms
加载耗时 n=2192ms

B组:延迟10s执行初始化。立即执行广告加载。

日志输出示例:

1
2
3
4
2024-07-06 13:23:42.675 27481-27481 DelayInitAndLoad    com...oid.gms.example.bannerexample  D  start load....
2024-07-06 13:23:43.453 27481-27481 DelayInitAndLoad com...oid.gms.example.bannerexample D call init....
2024-07-06 13:23:46.208 27481-27481 DelayInitAndLoad com...oid.gms.example.bannerexample D onAdLoaded...cost = 3532
2024-07-06 13:23:53.486 27481-27481 DelayInitAndLoad com...oid.gms.example.bannerexample D after init = 24

初始化耗时 m=24ms
加载耗时 n=3532ms

结论:由于广告加载成功后,才调用初始化逻辑,因此初始化时长大幅降低。故:初始化和加载有关联性。

3、聚合的SDK初始化了吗❓

实验设计:
A:不初始化SDK,加载广告后,打开AdInspector。
B:初始化SDK,加载广告后,打开AdInspector。

实验结论:不初始化只能加载Admob自身的广告,初始化后可以加载聚合源的广告。

3、初始化成功后再加载广告 VS 直接加载广告 加载速度的对比

直接加载:

第一组 第二组 第三组 第四组 第五组
2915ms 1581ms 1435ms 1621ms 1581ms

初始化后加载:

第一组 第二组 第三组 第四组 第五组
初始化 2373ms 2374 2463 2427 2298
加载 1468ms 1386 1505 2498 1250
日志总耗时 3843 3762 3970 4927 3550

结论:初始化后才加载广告慢于直接加载广告。

4、一种开屏广告的优化方案

不初始化SDK也能加载到Admob广告,且加载速度较快,但是没有参与bidding,价格较低。
初始化之后,加载聚合源广告,速度较慢,但经过bidding后,价格会高一点。

结合两个加载方式,闪屏时段内加载广告,闪屏n秒时长内,加载到bidding类型则展示bidding类型。没加载到,则展示Admob类型。

概述

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

马尔科姆·格拉德威尔(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.改变模型,这三个步骤介绍了当我们遇到各种问题时,我们应该如何分析问题,找出问题的本质,然后从本质解决问题本身,而不是浮于表面。同时,脑海中要牢记一些思维定式,避免陷入思维定式当中。