1. 1. 君山书院 课程
    1. 1.1. 第1期直播 李迪
      1. 1.1.1. 第一遍笔记:
      2. 1.1.2. 第二遍笔记:
    2. 1.2. 第2期 《穷查理宝典:查理•芒格的智慧箴言录》—— 许树泽
    3. 1.3. 第三期直播
    4. 1.4. 第四期直播 余奕宏
  2. 2. Cryptography by Dan Boneh
  3. 3. 2020-03-08
    1. 3.1. What is cryptography
  4. 4. TikZ 绘图工具 2020-03-07
  5. 5. 2020-03-03 Entrepreneurial Thought Leaders Seminar etc.
    1. 5.1. Title Entrepreneurial Thought Leaders Seminar
    2. 5.2. New Development in Cryptocurrencies and Blockchain Technologies
  6. 6. 电影笔记
  7. 7. 研究者方法论(持续更新)2020-02-17
  8. 8. 《互联网企业安全高级指南 作者:赵彦 江虎 胡乾威》 读书笔记 2020-02-17
  9. 9. 北京大学公开课《区块链技术与应用》笔记 (笔记阅读指数:)2020年2月7日
    1. 9.1. BTC-密码学原理
  10. 10. application layer: Bitcoin Block chain
  11. 11. 当你退出时,直接退出,当其他节点没有收到你的信息时,就会删除你这个节点)
  12. 12. 关于区块链的一些整理 2019年12月
  13. 13. 《数学之美》 吴军 2017年12月
  14. 14. 高级项目管理培训 2017年6月14日
  15. 15. 礼悟会员课程:“艾比克英语”创始人陈序讲座 2019年11月
  16. 16. 叩响英语学习大门(九个方面)
  17. 17. 视频访谈 “美国奥数总教练罗博深访谈” 2019年10月18日
  18. 18. 书《为何家会伤人》 2019年10月
  19. 19. 视频课程《Learning How to Learn》2017年9月22日
    1. 19.1. 第一周 什么是学习
      1. 19.1.1. 集中思维和发散思维
      2. 19.1.2. Robert Bilder博士就创造力与问题解决能力进行的访谈
      3. 19.1.3. 《八步半轻松写作》作者达芙妮 www.publicationcoach.com
      4. 19.1.4. Benny Lewis 爱尔兰多语种达人 全职语言黑客 memorise.com 助记法 APP:Anki
    2. 19.2. 第二周 组块
    3. 19.3. 第三周 拖延症和记忆
  20. 20. ORID学习和实践 2018年06月28日
    1. 20.1. ORID是什么
    2. 20.2. ORID有什么用
    3. 20.3. 模版
    4. 20.4. ORID 升级版
    5. 20.5. 实践
    6. 20.6. 效果和体会
    7. 20.7. 参考
  21. 21. 幽门螺旋杆菌治疗 2016年10月21日
    1. 21.1. 四联疗法 PPI+抗生素
    2. 21.2. Notice
    3. 21.3. references
  22. 22. 癌症相关 2013-08-04 12:00:00
    1. 22.1. 饮食注意
    2. 22.2. XELOX方案
    3. 22.3. 参考
  23. 23. 健康相关

我的笔记

君山书院 课程

第1期直播 李迪

第一遍笔记:

原酷我音乐(现腾讯音乐娱乐集团)高级副总裁,现在做人工智能的孵化工作

  • 误判心理学 类似行为心理学 查理芒格 穷查理宝典:最有价值的事情是把人的思想抽象为各种各样的思维模型,用思维模型去理解世界。
  • 思维模型:从人性的弱点总结出来思维模型
  • 实在的例子:看到别人很容易,看到自己很难。“迷信谬误”:人们不相信随机,所谓成功的概率:大时代、运气、最后才是其他的因素
  • 人:基于随机性得到的经验,作为一个确定性的结论
  • 认知谬误:《别做正常的傻瓜》 《影响力》《怪诞行为学》:描述认知谬误。
  • 《思考:快与慢》:系统1:感性,99%的决策都是系统1完成 系统2:1%的决策都是系统2完成。作者试图在尝试解决为什么会有认知谬误。
  • 为什么要取一个好名字:启发效应
  • 读完这本书如何改造自己?
    • 刻意练习+1万小时
    • 车库思考时间
    • 20个或者100个(wiki上搜)思维谬误,自己最常犯的记下来,并将自己的例子记下来。
    • 反思机制:
    • 冥想:比尔盖茨推荐的Handspace
    • 坚持
  • 聚光灯效应:减压方式,15%不到其实
  • 读书的经验分享:
    • 抱着读书的目的
    • 基石性的书:教材等,建立一个框架
    • 读书,至少过两遍
    • 试着表达出来 费曼学习法
  • take away:反思系统或者升级机制

    • 车库思考
    • 定目标:最重要的是复盘:哪些没完成,哪些完成,为什么没有完成才是重要的
    • 每天前进1%,72月翻一番
  • 我的思考:

    • 一个重要的问题:人类是感性的,AI可能是绝对理性的,那么问题是:感性到底是不是冗余的,是不是没有价值?

第二遍笔记:

  • 重要的是:反思机制,不断进化
  • 如何做到呢?
    • 定期反思,更新,最好每天都有
    • 每日的习惯养成:比如冥想等

第2期 《穷查理宝典:查理•芒格的智慧箴言录》—— 许树泽

  • 斯托各学派(什么能改变,什么不能改变) —-> 本杰明 富兰克林 —-> 芒格 (健康、伴侣、事业。。。等人生问题的标准答案)
  • 查理芒格:一辈子都在做的事情就是将绝对理性作为道德
  • 第一句话:多元化、跨学科的思维方式
    • 亚当斯密基础上,建立是分工基础之上,磨针人
    • 比较优势
  • 第二句话:必须使用清单 checklist
  • 第三句话:序言李璐:书中自有黄金屋。一个读书人,一个知识分子,挣干净的钱,在主流社会取得成功和自由,难道这还不让人诱惑吗?

  • 思维模型1:逆向思维

    • 逆向思维:说的是一个负面清单,通向成功的事情其实是概率决策树的分叉,将不work的事情堵住。
    • 论证失败的概率:第一个原因:激进扩张;比如:家族企业,真功夫。比如:新冠肺炎。
  • 思维模型2:基本的概率思维
    • 保证能用的模型:无能之错
    • 彩票:C36 6 * C16 1 期望是负1.4 能买:区分重复博弈还是单次博弈
    • 概率和赔率
  • 思维模型3:经济学模型

    • 经济学最有用的模型是:微观经济学的东西。宏观经济学的变量太复杂,变量太多。复杂系统:整体大于部分之和。
    • 成本思维:

      • eg 法拉利不考虑成本; 福特考虑成本。
      • 显性成本
      • 隐性成本
      • 成本转为资产:成本是一次性的,资本是长期使用的。举例:读书考学历是一个资产负债表。因为那是一个资产,可以去拿这个找工作。
      • 资产的资本化期足够长。比如首都机场可以用100年。资产使用时间长,折旧费用很少。
      • 砍掉一切可变成本,尽量做大你的固定成本,提高经营杠杆(一般杠杆指的是:资产/负债率)。一个规律:产量摊薄。所有的大公司:固定成本+规模优势。
      • 归纳3点:1 有思维区分显性成本和隐形成本;2 费用变成资产,让资产的资本化期尽可能长 3 提高经营杠杆,砍掉可变成本,做大固定成本,扩大产量,降低平均成本
    • 比较优势原理:

      • 做自己擅长的事情就是比较优势
      • 全球贸易的基础:通过比较优势建立起来的贸易和分工
      • 一直做比较优势,不够:没有竞争优势。比如荷兰:专门造船,没有发展工业。
    • 竞争优势:竞争对手做不到的。还有品牌(搜索成本、需求的品牌优势、还是单纯的品牌优势)。

      • 做品牌的最大:链接快乐+品牌。
      • 比你成本低,差异化很难的,用户感受差不多,成本低
    • 心理学 略

    • 巴菲特和芒格的投资哲学:永远只打现金流的比赛。

      • 现金流/折现率 (每年挣1000元玉米/10%折现率)
      • 举例:可口可乐 Syscandy
      • 茅台:永续现金流。但是科技公司不一定存在。

第三期直播

  • 微软的核心竞争力在云上。
  • take away:

    • 看清自己,坚定走下去
  • 推荐书单:

    • 《刷新》
    • 《活着》工作100%投入
    • 《阿里铁军》

第四期直播 余奕宏

  • 连锁模式,是互联网模式出现之前最好的盈利模式
  • 忍耐:困难时期很多

  • 喜茶:最深刻理解星巴克的模式。90后,2000后的社交场所。

  • 咖啡:利润毛利率高,标准化最高。瑞兴咖啡的模式:圈人,上亿人,再做分发。
  • 大趋势 选赛道 商业模式 经济模式 :福建人 陆正耀
  • 认知维度决定你的生意的维度

  • 奕宏品类观:趋势

    • 看好中国
    • 移动互联网的直播 视频

Cryptography by Dan Boneh


2020-03-08

What is cryptography

  • Crypto can do much more
    • Digital signatures
    • Anonymous communication
    • Anonymous digital cash
    • Protocols
      • Elections
      • Private auctions
      • Secure multi-party computation
    • Crypto magic
      • Privately outsourcing computation
      • Zero knowledge
  • A rigorous science
    Three steps in cryptography
    • Precisely specify threat model
    • Propose a construction
    • Prove that breaking construction under threat model will solve an underlying hard problem
  • Symmetric Encryption
    • History
      • Book: David Kahn “The code breakers” (1996)
      • Substitution cipher (badly broken)
        • Use frequency of English letters (“e”:12.7%,”t”:9.1%,)
      • Caesar Cipher (badly broken)

TikZ 绘图工具 2020-03-07

TikZ 是一个很棒的 TeX / LaTeX / ConTeXt 图形绘制软件包. 与其他 TeX 软件包不同,TikZ 本身确实非常庞大,其手册包含约 1100 多个页面,100 多个章节. 其他数十个软件包以及服务器 GUI 应用程序均基于 TikZ.

2020-03-03 Entrepreneurial Thought Leaders Seminar etc.

Title Entrepreneurial Thought Leaders Seminar

  • 2019.2.6 by Balaji Srinivasan(Coinbase) Stanford Center for Professional Development
  • Balaji Srinivasan: CTO,Coinbase
  • Ten things about the blockchain
    1. A blockchain is a database for storing things of value.
      • Cryptocurrency
      • Tokens
      • Digital assets
      • Identity
    2. Bitcoin is a protocol. Payments are now packets.
    3. This means machines can now hold & send money.
    4. Blockchain have already 10X’d gold,SWIFT,crowdfunding.
      • 10X better than Gold
      • 10X faster than SWIFT
      • 10X larger than kickstarter
      • 10X faster than delaware
    5. Blockchains have already created many billion dollar entities.
    6. Blcokchains means you have a choice of who to trust
    7. Blockchains enable internet-scale cap tables
    8. Blockchain-first is the new mobile-first.
    9. Blockchains break network effects
    10. Blockchains transform social networks.
    11. Blockchain is a partial move away from cloud towards privacy.
  • Coinbase
    • create a more open financial system

New Development in Cryptocurrencies and Blockchain Technologies

  • Stanford Center for Professional Development
  • 2018.8.8
  • Dan Boneh Standford University
  • The Standford Computer Security Lab
    • David Mazrieres work on operating systems and consensus protocols
    • Stellar consensus protocol is designed by David Mazrieres.
  • Topic 1: Blockchain technology
    • Confidential transactions using bulletproofs
      • Bulletproofs and confidential transactions
      • Research in crypto currencies
        1. New consensus protoccls:distributed system
        2. New programming languages for smart contracts
        3. New verification tools
        4. New cryptography(this talk!)
        5. New mechanism design(AGT)
    • Short proofs of solvency
  • Topic 2: Prio — privately aggregating statistics

  • New Center for Blockchain Research (CBR) http://cbr.stanford.edu

  • What is blockchain?
    • A data structure with the following properties:(informal)
    • Liveness:anyone can write to the blockchain(transaction fee)
    • Persistance: once written,data can never be removed
    • Consensus: parties “agree” on the current state of the blockchain, and everyone can read the current state.
  • Application
    • Cryptcurrency is simplest and natural application of blockchain.
    • crypto asset mamagement:Smart contract:enable crypto asset mamagement:eg. Cryptokitties(amazing game:no one can take the kitty away from you.—-the power of blockchain)
  • Problem: transaction validation
    sum(input values) = sum(output values) + fee
    If values are hidden,how do we verify?
    Solution: Zero knowledge proof.

电影笔记

  • 《82年生的金智英》2020-02-02
    82年生的金智英 豆瓣链接
    • 重男轻女带来的不仅是损害家庭伦理,更是伤害了很多人,包括生命和人生
    • 勇于做自己是勇敢的表现
    • 同理心是处理人和他人关系的key
  • 《Joker》
    JOKER 豆瓣链接
    • 压抑的愤怒,如果没有适当的表达出口将会导致可怕的麻木和暴力。对个人如此,对社会如此,对人类也是如此。
    • 人和自己的关系:当没有人注意你,在乎你,尊重你的时候,当有人欺负你的时候,你要尊重,在乎,注意你自己。
    • 面具下的虚伪是这个世界的毒药。
    • Always look at the bright side。这个世界一定不完美,再丑恶的人或事都有积极的方面,注意那些积极的方面,才能形成正循环,不断向上。
  • 《The Post》
    豆瓣链接

    • 国家不是总统一个人的,而是全体人民的。
    • 公民社会任重道远。
  • 《Life of PI》
    豆瓣链接

1
2
3
4
5
6
7
8
9
Above all, Don't lose hope.

我们共处一个环境,虽然不能做朋友,但我们可以学会沟通。

Without Richard parker, I would have died by now.

It's beautiful.

It happened. Why should it have to mean anything?

My Thinking:

  • 我们都处在不同的关系中:亲密关系,陌生人关系,和自己的关系,和自然的关系。
  • 在和自然的关系中,事实重于意义,沟通大于征服,不能做朋友但可以共存,这种关系很真实,看上去残酷实际上却很仁慈。(野性也许更仁慈)
  • 语言有时候是虚伪的,那些行动和眼神才是真诚而令人动容的。
1
你们已经是世界上的濒危物种了,我恳求你们,不要选择平庸,不要碌碌无为,就像这个世界上其他的98%的人那样,因为这个世界已经满目疮痍,你们必须靠你们自己,珍惜每一分每一秒,珍惜每一口呼吸,生活,其实就是一段鸟鸣。

My Thinking:

  • Live as if you will die tommorow.
  • 《Alita: Battle Angel》
  • 阿丽塔:战斗天使 Alita: Battle Angel (2019)
    豆瓣链接

My Thinking:

  • What am I? Brain, Memory, Desire? Free Will? 真正决定我是我自己的,是我的躯体吗?阿丽塔换一个身体好像还是阿丽塔,那么是我的大脑或者我的记忆吗?也许是的,大脑是关键的,而大脑中什么是最核心的呢?也就是什么才是决定我是我自己呢?耶鲁大学的雪莱有公开课谈论过这个问题。我想当我的身体可以被机器取代,那有没有一天我的大脑也可以被取代?那一天也许是人类的技术巅峰到达之时,也是人类毁灭之日。
  • 人性? 不要被外表所迷惑,无论ta是组装人还是别的东西,人性的光芒来自于对自然中的生命的同情和理解,比如那条狗,比如男主,比如悬赏猎人养狗人。
  • 制度? 监视,控制和巨大的阶级鸿沟。 这也许才是最大的恶?或者每个人的角度不同,也许是最大的善? 需要问的则是:存在的基础是否合理,思想基础是什么?

*《Solaris》
Wiki链接)

  • “在这里,庸人和天才都一样毫无价值,我们没有兴趣征服宇宙,我们想把地球延伸到宇宙的边界…我们不需要宇宙,我们需要一面镜子…人类,需要人类。”
  • 塔可夫斯基通过影片提出两个观点:人类未能处理好自身的问题,就不应当探索外部;或人类应当探索外部,忽略人性。然而哈莉,却提出第三种观点:凯尔文比你们更有人性,而我快变成人了。在冷战时代,他面临的问题是严峻的对人的拷问,在这种情形下,人对外界的探索能力丧失意义,导演回到了人类本身。

My Thinking:

  • 人类关注自己,先把自己安顿好。就像爱别人先学会爱自己。
    *《巴斯特·斯克鲁格斯的歌谣 The Ballad of Buster Scruggs (2018)》
  • 巴斯特·斯克鲁格斯的歌谣 The Ballad of Buster Scruggs (2018)豆瓣链接

    • 科恩兄弟的作品。充满了想象力和对内心深处和生命本质的探索,让我很受用。
    • 人的生命是一条通往目的地的马车,从不停歇。
    • 人生无常,其实意外并不意外。
  • 《波西米亚狂想曲 Bohemian Rhapsody (2018)》2019-11-21 14:49:00
    豆瓣链接

    • 皇后乐队(Queen)主唱Freddie Mercury的传记片。
    • 音乐是人类的通用语言,完美还原现场,we are the champions!

研究者方法论(持续更新)2020-02-17

  • 引言
    工欲善其事,必先利其器。受机器学习研究者方法论的刺激,整理下思路,分享之。
  • 成功的关键在于解决正确的问题,并在这些问题上不断取得进步,实现持续的个人成长。(《机器学习研究指南》John Schulman)
  • 挑选要解决的问题
    • 阅读大量论文,并认真评论与探讨;
    • 成立研究小组,吸收他人研究经验;
    • 找自身研究者提建议,吸收他人的看法;
    • 花时间思考哪些研究能够产出成果;
      • 理论在什么时候是有用的
      • 实验结果普遍吗
      • 为什么一些方法广泛被采纳,其它又被遗忘
  • 研究工作的驱动类型之一:想法驱动
    • 这两种方法并不是相互排斥的,任何领域的机器学习的新想法都与某些目标有关。从某种意义上来说,想法驱动的研究就是目标驱动的一部分。
    • 想法驱动的研究有一个缺点,存在被窃取或窃取其它研究工作的风险。
  • 研究工作的驱动类型之二:目标驱动
    • 将自己定义在通用解决方案中。(great!)
    • 增量研究:在更大的目标下做增量研究(10% 的提升)是最有效的。
  • 专注:研究是一条漫漫长路,在这条路上可能发现新算法、发篇新论文,也可能是直到最后才能知道一个结果。为了在这条旅途中开发新的算法和见解,你需要在很长一段时间内把精力集中在一个问题上。
  • 习惯:保持写笔记的习惯。
  • “换坑”:根据经验来说,过于频繁地切换想法比呆在原地不动的故障概率更高。不排除会存在具备超强潜力的新想法,但更常见的是失望。
  • 一般性知识的学习
    • 教材书:一般以一种更集中的方式来吸取知识。
    • 学位论文:除了教材书之外,学位论文的阅读也是必不可少的
    • 阅读其他论文来拓展知识前沿。
    • 除了阅读那些富有创造性的论文并进行复现之外,你也应该关注领域内不那么突出的论文。以批判的眼光浏览阅读即将发表的论文有助于你时刻跟上领域内的发展趋势。
  • 吴恩达的建议(CS230 课程中,对于研究规划与如何读论文也提出了他的一些建议)
    • 参考视频:CS230 Lecture 8: Career advice / Reading papers:https://www.youtube.com/watch?v=733m6qBH-jI
    • 读论文是做研究的基础,高效地读高质量论文又是重中之重。
    • 如果阅读 5-20 篇论文,差不多我们对该领域就有一定的了解了。如果高效阅读 50 到 100 篇论文,那么对该领域的理解就比较完整了。
    • 阅读论文的方法
      • 第一遍应该只看标题、摘要和图表
      • 第二遍应该继续看前言、结语和图表
      • 第三遍阅读就要纵览论文主体了
      • 第四遍需要阅读所有的内容
  • 团队合作也很重要。
  • 工业界交付产品时的一些实用方法和建议:

    • 为自己感兴趣的任何项目创建一个工作代码项目文件夹;
    • 如果发现一些有趣或类似于你正在研究的东西,尝试任何已发表的代码;
    • 在运行 Python 的过程中,你可以利用 pyenv 来轻松地避开不同的需求;
    • 如果 repo 起作用,则创建一个标有「起作用」的文件菜单,以方便下次找到;
    • 让自己擅长创建数据集并进行预处理和分类;
    • 收集一些与自己研究类似的数据集;
    • 当更好的代码出现时,要尝试使用;当意识到观点需要改进时,使用已有方法来打磨优化自己的数据集。
  • 参考文献

  1. 机器学习研究者的养成指南,吴恩达建议这么读论文
  2. 《机器学习研究指南》John Schulman

《互联网企业安全高级指南 作者:赵彦 江虎 胡乾威》 读书笔记 2020-02-17

  • 漏洞扫描、入侵感知和应急响应是技术维度日常工作中最重要的3部分
  • 互联网的安全体系:基本上以运维安全、应用安全、业务安全三管齐下。
  • 推倒业界,社区,甲方,乙方之间有一堵墙,看到企业安全的整体体系。
  • “二进制”流派和“脚本”流派并不是全部。
  • 企业安全:从广义的信息安全或狭义的网络安全出发,根据企业自身所处的产业地位、IT总投入能力、商业模式和业务需求为目标,而建立的安全解决方案以及为保证方案实践的有效性而进行的一系列系统化、工程化的日常安全活动的集合。涵盖7大领域:
    1. 网络安全:基础、狭义但核心的部分,以计算机(PC、服务器、小型机、BYOD……)和网络为主体的网络安全,主要聚焦在纯技术层面。
    2. 平台和业务安全:跟所在行业和主营业务相关的安全管理,例如反欺诈,不是纯技术层面的内容,是对基础安全的拓展,目的性比较强,属于特定领域的安全,不算广义安全。
    3. 广义的信息安全:以IT为核心,包括广义上的“Information”载体:除了计算机数据库以外,还有包括纸质文档、机要,市场战略规划等经营管理信息、客户隐私、内部邮件、会议内容、运营数据、第三方的权益信息等,但凡你想得到的都在其中,加上泛“Technology”的大安全体系。
    4. IT风险管理、IT审计&内控:对于中大规模的海外上市公司而言,有诸如SOX404这样的合规性需求,财务之外就是IT,其中所要求的在流程和技术方面的约束性条款跟信息安全管理重叠,属于外围和相关领域,而信息安全管理本身从属于IT风险管理,是CIO视角下的一个子领域。
    5. 业务持续性管理:BCM(BusinessContinuityManagement)不属于以上任何范畴,但又跟每一块都有交集,如果你觉得3和4有点虚,那么BCM绝对是面向实操的领域。最近,有网易、中有支付宝、后有携程,因为各种各样的原因业务中断,损失巨大都属于BCM的范畴。有人会问:这跟安全有什么关系?安全是影响业务中断的很大一部分可能因素,例如DDoS,入侵导致必须关闭服务自检,数据丢失,用户隐私泄露等。又会有人问:这些归入安全管理即可,为什么要跟BCM扯上关系,做安全的人可以不管这些吗?答案自然是可以不管,就好像说:“我是个Java程序员,JVM、dalvik(ART)运行原理不知道又有什么关系,完全不影响我写代码!”事实上,BCM提供了另一种更高维度、更完整的视角来看待业务中断的问题。对于安全事件,它的方法论也比单纯的ISMS更具有可操作性,对业务团队更有亲和力,因为你知道任何以安全团队自我为中心的安全建设都难以落地,最终都不会做得很好。
    6. 安全品牌营销、渠道维护:CSO有时候要做一些务虚的事情,例如为品牌的安全形象出席一些市场宣介,presentation。笼统一点讲,现在SRC的活动基本也属于这一类。
    7. CXO们的其他需求:俗称打杂。这里你不要理解为让安全团队去攻击一下竞争对手的企业这样负面向的事情,而是有很多公司需要做,但运维开发都不干,干不了或者不适合干的事情,安全团队能力强大时可以承包下来的部分,事实上我的职业生涯里就做了不少这样的事情。
  • 互联网安全的工作:
    1. 信息安全管理(设计流程、整体策略等),这部分工作约占总量的10%,比较整体,跨度大,但工作量不多。
    2. 基础架构与网络安全:IDC、生产网络的各种链路和设备、服务器、大量的服务端程序和中间件,数据库等,偏运维侧,跟漏洞扫描、打补丁、ACL、安全配置、网络和主机入侵检测等这些事情相关性比较大,约占不到30%的工作量。
    3. 应用与交付安全:对各BG、事业部、业务线自研的产品进行应用层面的安全评估,代码审计,渗透测试,代码框架的安全功能,应用层的防火墙,应用层的入侵检测等,属于有点“繁琐”的工程,“撇不掉、理还乱”,大部分甲方团队都没有足够的人力去应付产品线交付的数量庞大的代码,没有能力去实践完整的SDL,这部分是当下比较有挑战的安全业务,整体比重大于30%,还在持续增长中。
    4. 业务安全:上面提到的2),包括账号安全、交易风控、征信、反价格爬虫、反作弊、反bot程序、反欺诈、反钓鱼、反垃圾信息、舆情监控(内容信息安全)、防游戏外挂、打击黑色产业链、安全情报等,是在“吃饱饭”之后“思淫欲”的进阶需求,在基础安全问题解决之后,越来越受到重视的领域。整体约占30%左右的工作量,有的甚至大过50%。这里也已经纷纷出现乙方的创业型公司试图解决这些痛点。
  • 大型互联网企业安全建设的方法论
    • 自研或对开源软件进行二次开发+无限水平扩展的软件架构+构建于普通中低端硬件之上(PC服务器甚至是白牌)+大数据机器学习的方式,是目前大型互联网公司用来应对业务持续增长的主流解决方案。(机器学习阶段还不确定,但安全大数据时代已经到来)
    • 注意:安全架构随着整个业务架构水平扩展,保证高可用性。
  • 生态级企业vs平台级企业安全建设的需求
    • 质的差别:生态级:大部分自研;平台级:开源或者商业软件+一部分自研。
    • 例子:Google造轮子Android;阿里的ODPS;华为的LiteOS。
    • 原因:
      • 技术驱动还是应用层驱动。
        • 生态级:技术驱动(自己造轮子),安全覆盖基础架构和应用层面;
        • 平台级:应用驱动,安全围绕应用层面。
      • 钱:成本;ROI。“为什么从事信息安全行业一定要去大公司”-知乎
      • 人:大牛成本高,来了也不一定能有用武之地。
        • 平台级的知识和经验集中在:Web/App,应用层协议,Web容器,中间件和数据库。
        • 生态级的知识和经验集中在:二进制,运行时环境和内核级别。
  • 平台级公司的技术发展天花板
    • 修改SSHD,LVS,加入一些安全特性,定制一个WAF,日志的大数据分析。
    • 不介入:DPI,全流量入侵检测,SDN,内核级别的安全机制。
  • 生态级公司的竞技场
    • 入侵检测,WAF,扫描器,抗DDoS,日志分析。
    • 在SDL环节上自研,但短平快。
    • 一个原则:自研工具只限定在“民用”领域,不会设计RSA算法这类的。
  • 云计算的本质是改变企业需求方通过传统的渠道获取IT资源的方式。
  • 治病还是救火是有区别的。体现在安全建议的差别上。
  • 甲方安全建设CSO的工作
    • 第一张表:组织结构图;第二张表:每一个线上产品(服务)和交付团队(包括其主要负责人)的映射。第三张表:全网拓扑、各系统的逻辑架构图、物理部署图、各系统间的调用关系、服务治理结构、数据流关系。
    • 初期三件事:1 事前的安全基线 2 事中的监控能力,多维度的入侵检测 3 事后的应急响应,应急的时间成本更短,溯源和根因分析的能力更强。
    • 安全需要向业务妥协吗?
      • 安全的本质是风险管理-Fireeye这样的公司也一样会被APT
      • 安全建设的本质是以一定的成本追求最大的安全防护效果
      • 风险缓解的原则是在以下三者之间做最大平衡:
        1 风险暴露程度 2 研发运维变更成本 3 用户体验的负面影响
      • 亚马逊Amazon有一个研发理论:T-shirt Size估计的方式来做项目。比如:当业务影响力是XL,时间人员成本是S,这是最高优先级。加班与效率
  • 需要自己发明安全机制吗?
    • 安全机制:常见的对称和非对称加密算法,操作系统自带的BRAC基于角色的访问控制,自带的防火墙Netfilter,Android的基于appid隔离的机制,Kernel支持的DEP(数据执行机构),以及各种ASLR,各种安全函数、服务器软件的安全选项。比如三星的KNOX就是在Android基础上自己造的轮子。
    • 日常中发生的问题绝大多数问题都属于对现有安全机制的理解有误、没有启用或没有正确使用安全机制而导致的漏洞,而不是缺少安全机制,所以绝大多数场景不需要发明安全机制。
    • 判断是否是一个问题还是一类问题
      • 一类问题的情况,分以下情况
        • 安全编程能力不足:不需要导入新机制,通过加强SDL的某些环节,加强培训教育取解决。
        • 在相应的领域还没有成熟的安全解决方案,或者现有的安全机制对抗程度太弱:则可以考虑自己造轮子。
    • 安全工程师晋升为Leader很重要的一点:对安全事件和安全漏洞的抽象能力,没有抽象就谈不上PDCA。
  • 如何看待SDL(安全开发生命周期)
    • 基本软件安全培训的基础概念
      • 安全设计
        • 减小攻击面
        • 深度防御
        • 最小权限原则
        • 安全默认配置
      • 威胁建模
        • 威胁建模概述
        • 威胁模型的设计意义
        • 基于威胁模型的编码约束
      • 安全编码
        • 缓冲区溢出(C/C++)
        • 整数算法错误(C/C++)
        • 跨站点脚本(托管代码和web应用程序)
        • SQL注入
        • 弱加密
      • 安全测试
        • 安全测试和功能测试的区别
        • 风险评估
        • 安全测试方法
      • 隐私
        • 隐私敏感数据的类型
        • 隐私设计最佳实践
        • 风险评估
        • 隐私开发最佳实践
        • 隐私测试最佳实践
      • 高级概念培训,包括但不限于以下方面
        • 高级安全设计和体系结构
        • 可信用户界面设计
        • 安全漏洞细节
        • 实施自定义威胁缓解
  • 简单的流程+实践驱动型构成了日常行为的本质
  • Facebook宣称:最好的程序员投入在工具研发上
  • 互联网安全的主要瓶颈还是人和工具的缺失。
  • STRIDE威胁建模
    • Spoofing假冒
    • Tampering篡改
    • Repudiation否认
    • Information Disclosure信息泄漏
    • Denial of service拒绝服务
    • Elevation of Privilege权限提升
  • 数据流关系图DFD,包含四个元素:数据流、数据存储、进程和交互方,对于威胁建模,增加一个元素即信任边界。
  • STRIDE有助于风险识别的覆盖面。
  • 标准的作用:救火阶段之后,企业的安全建设哪些事情是值得做的。
  • 实用的参考
    • ITIL(BS15000/ISO20000)—-绝大多数互联网公司的运维流程都是以ITIL为骨架建立的。
    • SDL—-研发测的安全管理,绝大多数公司都借鉴了微软的SDL,所以无论如何要掌握它。
    • ISO27001—-企业安全管理领域的基础性安全标准。最精简的了,入门级。
  • 业务持续管理BCM-较高层次的管理机制
    • 总体目标:提高企业的风险防范能力,有效的响应非计划的业务破坏并降低不良影响。
    • 重要环节
      • BIA(Business Impact Analysis)业务影响分析(和基于资产权重的风险管理方法类似,和威胁建模异曲同工)
      • Recovery Strategy恢复策略
      • 实施以及测试和演练
      • BCP-Business Continuity Plan
    • 应急响应
      • PDCERF模型(也可以参考NISTSP800-61)
    • 评价安全建设做的的好坏的唯一标准:ROI,用什么样的资源TCO产出什么样的安全效果。
    • 技术篇-防御架构原则
      • 防守体系建设三部曲
        • 攻防对抗的三个层面的对抗:信息对抗、技术对抗、运营能力对抗。
        • 高纬防守。扭转攻防优势的手段:HIDSAPI hook于命令注入和系统横向渗透,RASP于Web漏洞,行为监测模型于0day攻击。
        • 工程能力:代码能力,海量数据运营,规则的优化
        • 运营能力主要体现在两个方面:
          • 风险闭环:“一个问题不能犯两次”
          • 执行力
      • 大规模生产网络的纵深防御架构
        • 互联网安全有几个比较核心需求:快速检测、有限影响、快速溯源、快速恢复。
        • 互联网安全架构设计原则:
          • 纵深防御
            • 保护关键数据:层层设防,层层包围
            • 多维防御:第一层、第二层、第三层、第四层
            • 降维防御:例如在内核态检测用户态攻击,使用RASP在运行时而不是在cgi层面检测webshell,HIDS的攻击检测不在本机判定,而在云端计算,入侵者无感。
            • 实时入侵检测
            • 伸缩性、可水平扩展:非常重要
            • 支持分布式IDC:互联网公司的生产网络一般多是IDC部署,对于海量IDC规模,需要支持去中心化、多级部署,解决一系列的失效、冗余和可用性问题。
            • 支持自动化运维
            • 低性能损耗:理论可行,实际情况可能业务无法接受
            • 能旁路则不串联
            • 业务无感知
            • 去“信息孤岛”
            • TCO可控:自研的必然性
    • 技术篇-基础安全措施
      • 安全域划分
      • 系统安全加固:比如账户密码,大数据攻击(社工库)的都是弱密码
      • 服务器4A:account,authentication,authorization,audit
        • 使用类似SSO的统一权限管理,目前有两种方式:一种是基于LDAP的方案;一种是基于堡垒机的方案。
          • 基于LDAP的方案:Linux平台-PAM(pluggable Authentication Modules) Windows平台-pGina,实现用户认证和访问管理,使得登录认证重定向到LDAP服务器做统一认证。
          • 基于堡垒机的方案
      • 一些tips
        • 大型互联网里,购买商业防火墙产品可能越来越少,大部分都会转换为使用Netfilter+高性能PC服务器。
      • 网络安全
        • IDS 出口处部署NIDS,用于当有类似shellshock等漏洞公布时,可以在这里部署过滤规则,达到“虚拟补丁”的功能。
        • 开源SNORT
        • 入侵检测和入侵防护 P和D 在大型互联网公司的使用
        • DDoS分类
          • 网络层攻击
            • Syn-flood 发送源地址的虚假SYN报文,导致目标主机无法完成3次握手
            • Ack-flood
            • UDP-flood
          • 应用层攻击
            • CC(ChallengeCollapsar) 互联网架构追求扩展性本质上是为了提高并发能力,CC反其道而行之
            • DNS flood
            • 慢速连接攻击
            • DOS攻击—服务器bug、漏洞、架构性缺陷
            • 多层防御结构:第一层ISP近源清洗 第二层云清洗/CDN硬抗 第三层 DC级近目的清洗 第四层 OS/APP层抗CC
        • 链路劫持
          • DNS over TLS
          • HTTPS google推出的加密算法chacha20
          • AWS做的不错:SOC FISMA ITAR FIPS 140-2 MTCS HIPAA CSA-cloud Security Alliance MPAA
        • 应用防火墙WAF
      • 入侵感知体系
        • 主机入侵检测
        • 检测webshell
        • RASP
        • 数据库审计
        • 入侵检测数据分析平台
        • 入侵检测数据模型
        • 数据链生态-僵尸网络
        • 安全运营
      • 漏洞扫描
      • 移动应用安全
        • 漏洞扫描、入侵感知和应急响应是技术维度日常工作中最重要的3部分
        • 互联网的安全体系:基本上以运维安全、应用安全、业务安全三管齐下。
        • 代码加固:IOS-Clang Static Analyzer Android-Findbugs
        • 应用加固
        • 移动认证
      • 代码审计
        • 自动化审计产品 《Data Flow Analysis in Software Reliability》数据流分析、状态机系统、边界检测、数据类型验证、控制流分析
        • 代码审计工具:Coverity 支持C C++ Java 发现的问题:resource leaks 。。。
      • 办公网络安全
        • 研发管理:两台PC,一台不能联网,vlan分隔
        • 源代码管理:github同步时泄漏密钥
        • 远程访问:VPN最大的问题是暴力破解,双因素认证,RSA令牌
        • 虚拟化桌面:Citrix
        • 2015年年中,Google发布beyondCorp项目,宣称办公网络取消内网。其基本假设:内部网络实际上跟互联网一样危险。
      • 安全管理体系
      • 隐私保护
        • 密钥管理基础设施KMI通常分两部分:
          • 密钥的存储
          • 对密钥本身的访问授权管理
    • 实践篇
      • 业务安全与风控
      • 大规模纵深防御体系设计与实现
      • 分阶段的安全体系建设
  • 一些标准
    • BS25999(BCM的一个标准)
    • ISO27001
    • BS7799
  • 其他参考文献
  1. 信息安全行业从业指南2.0 by ayaz3ro https://www.ifshow.com/information-security-industry-practitioners-guide-v2/

    • 几个趋势
      1.企业安全管理最终都会向互联网公司学习–未来大多数公司都会复制自己业务到互联网,也就是大多数企业都会拥有互联网的属性。从现在看,互联网公司的安全管理方法论是领先传统公司整整一个时代的,完全不在一个量级上。你还在做传统的安全吗?夸张一点说你就快不属于这个行业了

      2.向云迁移–云是一种趋势,虽然我不认为短期内马上会有非常多的公司将自己的业务迁移到公有云上,或者从头打造私有云。但是云计算折射出的IT管理方式,技术架构却会越来越成为安全管理的风向标,例如分布式IDC管理,虚拟化,SDN,海量运维生态,业务伸缩,大数据,高度自动化,敏捷发布……等很多带着时代标签的东西,安全管理体系的设计和产品化落地需要越来越多的围绕这些特性标签展开工作,如果你没有这方面的经验,也会逐渐out

      3.倾向于以技术和产品(工具自动化)解决问题,而不再是以前宣扬的七分管理三分技术。看近些年的IT技术发展,本质上由Google、Facebook为代表的这些互联网公司带动,除了技术架构,像运维管理、研发生命周期管理、安全管理都在成为其他公司的教科书,安全的最高境界是让你身处于保护之中而不感觉那些繁琐措施和流程的存在,以技术、自动化、机器学习、人工智能为导向解决问题的价值观已超越流程制度的落后方式,也是过去那些理论标准越来越显得发虚的原因。

    • 从这些趋势看,如果你是体系架构型,技术复合型(俗称全栈工程师),特定技术方向专攻型以后会受市场青睐,而“务虚型“的市场价值可能不太乐观。
    • 过分迷恋于技巧对长足的发展没有好处。
    • 价值一方面跟人才市场的供求关系有关,一方面也跟学习成本高低、获取技能的难易度有关。
    • 第一代安全从业者的技能基本以OS和网络安全为主,1.5到第二代以广义的web service等应用安全为主,如果一定要说第三代,移动安全可能还算是当下比较热门,关注者比较多,相对前沿的领域,而从VC的角度看移动互联网可能都不再是热点,早已开始布局更下一代的东西了,也许是类似于人工智能这样的领域。
    • 对个人来说一方面你到底需要多前沿的铺垫才能不out,另一方面则要考虑将自身定位收缩于哪些点才可能挖到最深,视野一定是尽可能的宽泛,是一个“放”字,但落到实践一定是个“收”字,以如今的技术复杂度你不可能样样都精通,只能挑几个。
    • 关于创业,如果你原先是做安全产品研发,能带一支完整的团队出来,做的产品属于下一代类型或者干脆就是市场空白,不妨尝试一下,其他的类型我认为创业的成功率应该比较低。

北京大学公开课《区块链技术与应用》笔记 (笔记阅读指数:)2020年2月7日

  • 讲师:肖臻
  • 北大第一次区块链的公开课 我的笔记基本上是流水账,只是作为自己的备用参考,不值得阅读,后续有总结

BTC-密码学原理

  1. Cryptographic hash function

    • Collision resistance
      • Hash函数的输入空间无限大,输出空间有限,客观存在hash碰撞
      • 没有高效的找到hash碰撞的方法
      • Collision resistence 的作用:保证数据不被篡改,因为数据一篡改,hash值就变化了。
      • 理论上,无法证明任何一个hash函数是Collision Resistence,只能从实践上说明
      • 但有些hash函数之前是collision resistance,后来证明不是。一个著名的例子:MD5,已经找到可以hash碰撞的方法。
    • hiding(单向函数)
      • 输入空间足够大,分布比较均匀
      • 当输入空间不是足够大时,实际操作过程中:可以加一个随机数保证足够随机:H(X||nonce)
    • collision resistance和hiding这两个性质,形成了一个digital commitment
      • digital equipment of a sealed envelope
    • puzzle friendly(输入的X(X只能一个一个试)对应的预测hash值。)
      • difficult to solve, but easy to verify
    • SHA-256:Secure Hash Algorithm
  2. 区块链开户:创建一个公私钥对(public key,private key) 来源于非对称加密算法(asymmetric encryption algorithm)

    • aysmmetric encryption algorithm 解决了密钥分发的问题:用公钥加密,用私钥解密
    • 公钥—银行账户 私钥—-账户密码
    • 用私钥签名,其他人用公钥验证。
    • 一个可能的攻击方法:不停的产生公私钥对,和别人的公钥碰撞,如果相同,就可以用私钥将对方的账户偷窃。但这种攻击方法其实不可行,概率极小(比地球爆炸的概率还小)。
    • 但前提是一个好的随机源:a good source of randomness。(公私钥的随机源,包括签名时也要有好的随机源)
    • 区块链中,一般先hash,再签名
  3. BTC中的数据结构

    • 数据结构1
      • 用hash指针(hash pointer)代替了普通指针
      • Block chain is a linked list using hash pointers.
      • 区块链:genesis block <—- H() <—- H() <—- H() <—- H() <—- most recent block
      • 普通链表:可以改变其中一个元素,不改变其他元素。但区块链:改变一个元素,后面的其他元素都会被改变。 只要最后一个hash值,就可以验证前面的区块。
      • tamper-evident log
    • 数据结构2 Merkle Tree
      • Merkle Tree 和 Binary Tree 的区别: hash指针代替了普通指针
      • Merkle Tree的数据结构:二叉树
      • block header + block body (轻节点:比如手机上的手机钱包应用只存储 block header;全节点:包括block header + block body )
      • 如何向轻节点证明一笔交易?用到 Merkle proof :找到交易所在的位置,往上找到根节点(root hash),这个就是Merkle proof,向全节点请求一些hash值。
        轻节点中只有root hash值,根节点hash值验证通过,则说明这个交易没有被修改。
      • 这个证明也叫做Proof of membership 或者 Proof of inclusion,复杂度O(log(n))。证明这个交易不存在呢?即Proof of non-membership,一种方法是把所有的树结构发送给轻节点,判断正确后,检查这个节点不在叶节点中,复杂度为O(n),其他没有更好的办法,但是如果按照交易内容的hash值排序,如果要找的交易做hash,找到处于两者hash之间的两个Markle Tree,验证通过即可证明这个交易不存在,复杂度O(log(n))。这个方法的代价是排序:称为Sorted Merkle Tree。但比特币中没有使用Sorted Merkle Tree,因为比特币中无需证明交易不存在。
    • 注意:有环的链表都不能使用hash指针,因为会产生循环依赖。
  4. BTC协议

    • double spending attack:花两次攻击(双花攻击):因此要向央行验证这个数字货币是否使用过(可行,但这个事中心化方案)。
    • 比特币要解决的问题:数字货币的发行(挖矿决定的);数字货币的有效性。
    • 数字货币的有效性:有签名+说明币来源(为了证明货币的合法性)
    • 一个转账交易:A—->B 必须有B的公钥(账号),也必须要知道A的公钥(所有的节点都要知道A的公钥,用于验证)。那么如何知道A的公钥?
    • Block Header(version;hash of previous block header;Merkle root hash;target;nonce;)+block body(transaction list)
    • full node:全节点,保存区块链所有信息,也叫做fully validating node
    • light node:轻节点,只保存block header

    • 如何保证账本的统一性:分布式共识 distributed consensus。

      • 一个方法是全局hash表 维护一个 distributed hash table
      • 分布式系统的一些结论:有很多impossibility result,其中最著名的是FLP impossibility result。
        • asynchronous系统:(异步系统:网络传输时延没有上限的系统)即使只有一个节点是faulty,也没法达成共识
        • CAP Theorem(CAP是分布式系统的三个性质:Consistency,Avalability,Partition tolerance):只能满足两个
        • 分布式共识的一个著名协议:Paxos,如果达成共识,一定是一致性的(consistency),但有可能Paxos一直不能达成共识
    • 比特币中的共识协议:Consensus in BitCoin

      • 去中心化货币解决两个问题:1. 谁能合法发行货币 2. 交易的合法性
        1. 铸币权
          • 唯一一个产生货币的交易:coinbase transaction 例子:50 BTC —-> 25 BTC —-> 12.5 BTC(21万个区块后,大约4年时间区块奖励减半。每隔10分钟产生一个区块,21万✖️10分钟=4年时间)
        2. 交易的合法性
          • hyperledger fabric 联盟链协议:基于投票是可行的,因为大多数成员没有恶意的
          • 比特币系统中不是这样的,因为产生公私钥对是不需要批准的。
          • sybil attack 女巫攻击:一个节点不断产生公私钥对,超过51%的数量,就能通过投票控制区块链。
          • 比特币系统的解决方法:也是用投票的方法,但用的是计算力来投票。计算:穷尽4 bytes nonce:满足H(block header)<= target,则获得了记账权。
          • forking attack 分叉攻击
          • longest valid chain:被选择的区块,丢弃的区块:orphan block
          • 争夺记账权的好处:获得记账权的节点有一定权力:决定哪些交易可以被写到区块里。但这个不是主要动力,因为设计者希望合法交易都可以写到区块链中。区块奖励 block reward
* 共识的内容:指的是区块链中的交易内容
* 基于算力的投票:hash rate(计算nonce的速度)作为投票的权重。如何避免sybil attack:创建账户,并不能增加hash rate的能力。
* 争夺记账权的说法:挖矿 mining digital gold,争夺记账权的节点:矿工miner。
  1. BTC实现

    • transaction-based ledger
    • 维护一个数据结构:UTXO:Unspent Transaction Output。全节点在内存中维护UTXO的目的:检查double spending。
    • 一个交易可以有多个输入(每个输入都要有签名),有多个输出,但要满足:total inputs = total outputs
    • 比特币中的另一个激励机制:transaction fee,交易费。
    • account-based ledger

    • Bernoulli trial:a random experiment with binary outcome

    • 一连串的Bernoulli trial构成了Bernoulli process:a sequence of independent Bernoulli trials。
      • Bernoulli process的一个特征:无记忆性 memoryless,指的是做了多次实验,下一次成功的概率和之前的无关,仍然一致。
    • Bernoulli process可以用poisson process近似。实验的次数很多,每次的实验成功的概率很小。我们关心的是:出块时间,理论推导出出块时间符合指数分布expontial distribution。
      process free:指的是以前的工作并不影响后面找nounce的概率。如果process free不成立,算力强的矿工会产生不成比例的优势,是挖矿公平的保证。

    • 比特币的数量每隔4年(每21万个区块)减半,产生一个几何级数 geometric series: 21万✖️50+21万✖️25+21万✖️12.5+…=21万✖️50✖️(1+1/2+1/4+…)=2100万

    • Bitcoin is secured by mining。挖矿没有实际意义,但能保证比特币的安全性。

    • 比特币的安全性分析

      • double spending attack:M->A这个交易先之行,后M->M’,然后将这个作为最长合法链。
      • forking attack
      • 防范这种攻击的方法:多几次确认, confirmation: one confirmation,。。。,six confirmation。六个confirmation,平均一个块十分钟,这个就是一个小时
      • irrevocable ledger:凡是写入区块链的内容都永远改不了。
      • zero confirmation:
      • selfish mining:挖矿,挖到一个区块,不急着发布,藏着一条链,分叉攻击的手段,只有当:恶意节点和其他同伙的算力超过51%才有可能成功。
        selfish mining的两个目的:1是获得常用(比如取消某一个交易) 2 是减少竞争(一次发布2个区块,别人挖到的块就失效了)。风险是有可能失败
  2. BTC网络 The Bitcoin Network

    application layer: Bitcoin Block chain

    network layer: p2p Overlay Network
    (简单的p2p网络,没有所谓的超级节点super node,或者master node。
    有一个seed node,它会告诉你其他节点,tcp通信用于穿透防火墙

    当你退出时,直接退出,当其他节点没有收到你的信息时,就会删除你这个节点)

    • 比特币的设计原则是:简单,鲁棒。而不是高效。 simple,robust but not efficient
      flooding 节点第一次收到洪流消息后,节点把这个传输给其他节点,同时记录下这个消息我已经收到过了,下次再收到这个消息,就不转发给其他邻居节点。
    • best effort:有的节点不转发一些合法交易,有的节点转发一些不合法交易
  3. BTC-挖矿难度

    • H(block header)<=target SHA-256 输入空间2^256
    • 1_target: difficulty=1时的目标阈值 target
    • difficulty = (difficulty - 1_target)/target
    • 产生区块的时间越短,就会产生分叉,分叉的后果:就是恶意节点集中算力增加自己的区块,导致攻击。
      而以太坊的区块时间是15秒,产生一个新的共识协议:ghost协议:分叉的orphan block会得到一些奖励uncle reward。
    • 出块时间无论多长,但都要保持稳定。
    • 如何修改挖矿难度:

      • 每隔2016个区块就调整一次挖矿难度,大约是2个星期的时间。2016✖️10分钟/60/24=14天。
      • 目标阈值(实际比特币代码中使用的是目标阈值):target = target✖️actual time/expected time expected time:2016✖️10分钟 actual time:time spent mining the last 2016 blocks(实际产生2016个区块的时间)注意:阈值一次调整最大不超过4倍,,最小是1/4,防止系统出现意外情况。
      • 挖矿难度:next_difficulty = previous_difficulty✖️expected time(2 weeks)/actual time
      • 问题:当恶意节点不调整这个target,通不过nBits的区块合法性检测。target 256 bytes ,nBits 4bytes
      • 以太坊是可以自己修改自己产生的区块时间,比比特币复杂得多。
    • 比特币系统的总算力的变化情况

  4. BTC-挖矿

    • 全节点
      • 一直在线
      • 在本地硬盘上维护完整的区块链信息
      • 在内存中维护UTXO集合,以便快速检验交易的正确性
      • 监听比特币网络上的交易信息,验证每个交易的合法性
      • 决定哪些交易会被打包到区块里
      • 监听别的矿工挖出来的区块,验证其合法性
      • 挖矿
        • 决定沿着哪条链挖下去?(最长合法链)
        • 当出现等长的分叉时,选择哪一个分叉?(最先听到的那个分叉)
    • 轻节点

      • 不是一直在线
      • 不用保存整个区块链,只要保存每个区块的块头(与都保存相比,差出1000倍)
      • 不用保存全部交易,只保存与自己有关的交易
      • 无法检验大多数交易的合法性,只能检验与自己相关的那些交易的合法性
      • 无法检测网上发布的区块的正确性
      • 可以验证挖矿的难度
      • 只能检测哪个是最长链,不知道哪个是最长合法链
    • 比特币上的安全性(类似银行给拥有合法身份的人钱)

      • 密码学的保证:随机源足够随机
      • 共识机制:只给合法身份的人

      • CPU—>GPU(浮点运算是深度学习需要的)—>ASIC:Application Sepcific Intergrated Circus(mining puzzle)一个芯片设计给一个加密货币

      • 设计Alternative mining puzzle:抗ASIC resistance。

      • 挖矿的趋势:大型矿池的出现。pool manager + miner + miner+ miner+ miner。

        • pool manager:全节点的功能;miner:只计算hash值
        • 解决收入不稳定的问题:因为挖矿太难了,所以降低挖矿难度即可:share = almost valid block。根据矿工提交的share数目,分配工作量
        • 问题1:不可能偷区块奖励。因为除了nonce,还有其他域的值需要调整(coinbase中有收款人的地址=矿主的地址)。
        • 问题2: 可能捣乱吗?挖到一个正确的区块,扔掉,谁也得不到了。分红别人挖到的块。
        • 大型矿池的一个弊病:当有人控制了大型矿池,吸引一些不明真相的群众,这样就能发动51%的攻击:攻击包括分叉攻击;Boycott:发现包含某个交易后就分叉,如果拥有51%算力,就可以将分叉的区块链作为最长合法链,这样别的节点也不包含这些交易了,因为包含了就分叉。
    1. BTC-比特币脚本

      • 只有堆栈,没有C语言那些全局变量,动态数组等。
      • P2PKH(Pay to Public Key Hash)最常用的
      • P2SH(Pay to script hash)最复杂的一种:其中一个应用场景是:对多重签名的支持
      • Proof of Burn:不管输入脚本是什么,输出到Return都会返回。两种应用场景:1.销毁比特币,可以得到一些小币种AltCoin(Alternative Coin)。2.digital commitment(专利内容做hash,证明当时已经知道这个知识了)
        // 首先运行解锁脚本
        0: [] // 初始状态:空堆栈
        1: [签名] // PUSHDATA 入栈签名
        2: [签名, 公钥] // PUSHDATA 入栈公钥
        // 复制堆栈后运行上锁脚本
        3: [签名, 公钥, 公钥] // DUP 复制栈顶公钥
        4: [签名, 公钥, 公钥哈希] // HASH160 取出栈顶公钥,压入它的哈希
        5: [签名, 公钥, 公钥哈希, 目标公钥哈希] // PUSHDATA 入栈目标公钥哈希
        6: [签名, 公钥] // EQUALVERIFY 取出栈顶两个哈希,确认它们等值,否则验证失败
        7: [TRUE] // CHECKSIG 取出栈顶的公钥和签名,验证交易,入栈检查结果
        // 栈顶为真值则验证成功

      2 PUSHDATA(公钥A) PUSHDATA(公钥B) PUSHDATA(公钥C) 3 CHECKMULTISIG
      // 首先运行解锁脚本
      0: [] // 初始状态:空堆栈
      1: [0] // 0 被压入栈顶
      2: [0, 签名D] // 0Z PUSHDATA 入栈第一个签名
      3: [0, 签名D, 签名E] // PUSHDATA 入栈第二个签名
      4: [0, 签名D, 签名E, 脚本] // PUSHDATA 入栈完整脚本
      // 复制堆栈后运行上锁脚本
      5: [0, 签名D, 签名E, 脚本哈希] // HASH160 取出栈顶脚本,压入它的哈希
      6: [0, 签名D, 签名E, 脚本哈希, 目标脚本哈希] // PUSHDATA 入栈目标脚本哈希
      7: [0, 签名D, 签名E, TRUE] // EQUAL 取出栈顶两个哈希,判断是否相等,压入检测结果
      // 取出栈顶结果,如果非真,则验证失败,否则运行原始脚本
      8: [0, 签名D, 签名E] // 准备运行原始脚本
      9: [0, 签名D, 签名E, 2] // 2 被压入栈顶
      10: [0, 签名D, 签名E, 2, 公钥A] // PUSHDATA 入栈第一个公钥
      11: [0, 签名D, 签名E, 2, 公钥A, 公钥B] // PUSHDATA 入栈第二个公钥
      12: [0, 签名D, 签名E, 2, 公钥A, 公钥B, 公钥C] // PUSHDATA 入栈第三个公钥
      13: [0, 签名D, 签名E, 2, 公钥A, 公钥B, 公钥C, 3] // 3 被压入栈顶
      14: [0, 签名D, 签名E, 2, 公钥A, 公钥B, 公钥C] // CHECKMULTISIG 先取出公钥数N(3)
      15: [0, 签名D, 签名E, 2] // 接着取出N(3)个公钥
      16: [0, 签名D, 签名E] // 再取出签名数M(2)
      17: [TRUE] // 接着取出M(2)个签名和数字0,根据交易验证签名,压入检查结果

      // 栈顶为真则验证成功
      
  1. BTC-分叉

    • fork的几种情况
    • 同时挖到矿,临时分叉 state fork
    • 分叉攻击 forking attack(deliberate fork)
    • 修改协议,有些节点不修改 protocal fork:根据协议修改的:
      • hard fork :例子:block size limit 1M字节 1个交易250字节,1000000/250=4000个交易/每个交易 4000/60/10=7 tx/sec。只要旧节点不更新软件,这个分叉就不会消失,所以叫硬分叉。实际的例子:以太坊:ETH 分叉为ETH 和 ETC ,为了防止回放,加上了一个chain ID
      • soft fork:新的协议下,有些合法的交易变得不合法了。旧节点不更新,白挖矿了,但不会产生永久的分叉。
        实际例子:当给域赋予一些新的意义时,coinbase(铸币域)前8字节可以作为extra nonce ,调整挖矿难度:4字节+8字节=2^96。
        比特币历史上的一个著名例子:P2SH:Pay to Script Hash 。旧节点只验证 redeem script是否正确,新节点才验证第二阶段的验证。
    • 小结:
      • soft fork:当超过算力51%的节点都更新了软件,就不会产生硬分叉。
      • hard fork:必须所有的节点更新软件,才不会产生永久性的分叉。
  2. BTC-问答

    • 转账交易不需要对方账户在线
    • 如果你账户的私钥丢失了,怎么办?私钥丢失了,账户的钱就取不出来了。著名例子:Mt.Gox,翻译为门头沟
    • 如果私钥泄漏了怎么办?尽快转账到自己的另外一个账户。
    • 如果转账的时候,写错了地址怎么办?没有办法,没法取消已经发布的交易
    • 如果转账的地址不存在,这是不友好的,因为需要一直存在UTXO中
    • 矿工偷nonce问题:别的矿工发布的nonce,其他矿工偷过来作为自己找到的,不能。因为有coinbase域中有矿工的收款地址,Merkle Tree就通不过。
    • 交易费不用知道矿工:因为total inputs>total outputs,差值就是交易费。
  3. BTC-匿名性 anonymity

    • pseudonymity
    • 多个公私钥对可能会关联在一起,分析比特币钱包的交易生成方式即可搞清楚关联方式
    • 资金转入转出都会引起注意,这是和实体世界相关联。
    • (研究) 信用卡数据公开,但隐私保护去除了姓名和性别,卡号等,但通过行为,比如什么时间买了什么东西,很快就可以将这个人和信用卡关联起来。比特币的所有交易都是公开的。
    • silk road(ebay for illegal drugs)比特币支付+TOR 洋葱路由 (网络层)。这个老板2,3年后被抓(几万个比特币都没有使用,旧金山被抓,可能是由于一台电脑上登陆了实际账户和虚拟账户)。
    • 如何提高匿名性?
      application layer(应用层保证匿名性:coin mixing 没有信用度很高的coin mixing服务。在线钱包:将大家的比特币混合)

    network layer(首先,保证网络层的匿名性:学术界有很多解决方案,一般是多路径转发的方法,TOR)

    • 零知识证明:是指一方(证明者)向另一方(验证者)证明一个陈述是正确的,而无需透露除该陈述是正确外的任何信息。
    • 零知识证明的数学基础是同态隐藏。
    • 不碰撞:x,y不同,E(x)和E(y)不同(逆否命题一定成立:如果E(x)=E(y),那么x=y)
    • 不可逆:给定E(x)的值,无法推出x的值 (类似hash函数的hiding property)
    • 同态运算:同态加法+同态乘法+扩展到多项式
    • 盲签原理:在不知道内容的情况进行签名
    • 零币和零钞:专门为匿名性设计的加密货币。协议层就融合了匿名化处理。
    • 零币:类似于混币处理。
    • 零钞:zk-SNARKs。但都没有解决和实体交互的匿名性问题。
  1. BTC-思考

    1. hash指针如何传播?实际使用时,其实没有指针,只有hash。那如何找到区块呢?区块链是存在key value的数据库level DB中。
    2. 区块恋:私钥分成两块,一人保存一块。问题是:降低了安全性,2^256 —-> 2^128;永久存储在UTXO中。可以用多重签名的方法-MULTISIG。
    3. 分布式共识:分布式系统中,理论上证明达成共识不可能的。为什么比特币能够绕过分布式共识的那些不可能结论?实际上的模型修改下,就不是理论上的模型了。比特币就是这样做的,不要被学术界的思维限制,不要被程序员的思维限制。
    4. 比特币的稀缺性:早期挖矿的收益高。货币总量固定不适合做货币,一个好的货币需要有通货膨胀功能。
    5. 量子计算:首先量子计算离实际使用还很远。而且这个对传统金融业的冲击更大,还有量子加密算法。地址(公钥—hash再转换)—->生成私钥,量子计算能从公钥算出来私钥。
      最好的做法:进行一次交易后,将地址中的钱全部转走,或者转给自己另一个账户,好处有二:增强了安全性;隐私保护。
      公钥最好也不要随便泄漏。
  2. 以太坊概述

    • 比特币:区块链1.0;以太坊:区块链2.0
    • 以太坊的改进:
    • 出块时间:10分钟—15秒,并设计了对应的共识协议GHOST协议
    • mining puzzle:导致挖矿设备的专业化(ASIC芯片的挖矿机,与去中心化的理念不符)。ASIC resistance。
    • 用权益证明代替工作量证明。proof of work —-> proof of stake。类似股份,投票
    • 增加了智能合约的支持:smart contract。
      去中心化的货币——>去中心化的合约,合同。
      BitCoin:decentralized currency。BTC 最小单位:Satoshi
      Ethereum:decentralized contract。ETH 最小单位:Wei
    • 去中心化的合同有什么好处?去中心化的货币有什么好处?跨国转账。
      技术上保证从一开始合同就不能违约。区块链的一个特点就是不可篡改。
  3. 以太坊的账户模式

    • 比特币的模型:基于交易;以太坊的模型:基于账户的模型account-based ledger。这个好处:double spending ,天然防御作用。弱点:replay attack
    • 普通外部账户(公私钥):externally owned account:balance(余额) nonce(计数器,使用账户的次数)
    • smart contract account(智能合约账户):不能主动发起交易,发起交易需要普通账户发起。balance nonce code storage
    • 为什么要创建以太坊?Vitalik创始人。比特币是基于交易的,隐私性比较好。智能合约:用稳定的身份,基于account的模型,保持稳定。
  4. 以太坊的数据结构:状态树

    • 账户地址到账户状态的映射:地址160bits,一般表示为40个16进制的数;状态:state。
    • hash表(键值对)?如果证明自己的余额,Merkle Tree。比特币基于交易的Merkle Tree,一个区块上限4000个,一般是几百个到几千个。而基于账户的以太坊,每创建一个账户,就会重新构建一个Merkle Tree,数量级大量增加。
      只维护一个Merkle Tree,Merkle Tree没有好的查找插入方法,Merkle Tree需要排序吗?不排序查找速度很慢,不排序导致状态不一致,各个全节点算出来的Merkle hash不一样,而比特币中是发布区块的节点唯一确定的。

    • trie(来自retrieval信息检索)字典前缀树: 字符串。
      branding factor

    • 特点1: 0-f 加一个结束标志符。地址为40个16进制数
    • 特点2:key值越长,查找的复杂度越大,
    • 特点3:hash表有可能有碰撞,trie不会出现碰撞,只要地址不一样,一定不一样
    • 特地4:不同的节点构造出来的trie结构是一样的。
    • 特点5:更新的局部性很好。因为只要更改局部的即可。
    • Patricia Tree/Trie 经过压缩的trie 路径压缩:好处是Tree的高度降低,内存访问速度增加。
    • 地址160bits,地址分布非常稀疏,目的是为了防止碰撞
    • MPT Merkle Patricia tree
    • 和PT的区别在于:加入了hash指针
    • Modified MPT:extension node branch node leaf node
    • 保存历史状态:因为智能合约的以太坊是图灵完备的,因此推算前一个状态是不可能的,无法形成回滚 roll back
    • 以太坊中有三个树:状态树(key values)=(地址,),交易树,收据树
    • 状态树:key-地址,value-序列化:RLP:Recursive Length Prefix (极简主义,序列化的方法) nested array of bytes
  5. 以太坊:交易树 收据树

    • bloom filter数据结构:支持高效查找:某个指定元素是否在这个集合中。(元素做hash,映射到一个向量中)
    • 轻节点:通过块头的Merkle hash过滤掉大多数,再到少部分中去找。
    • 以太坊的运行过程可以看作是一个交易驱动的状态机。状态:所有账户的状态,交易:每次发布区块时包含的交易。
    • 比特币也可以看作一个交易驱动的状态机。状态:UTXO
  6. 以太坊:共识机制 GHOST协议

    • motivation:以太坊的分叉很多(相比于比特币),那么矿池获得最长合法链的概率不成比例的增加,centralization bias。
    • GHOST协议:没有成为最长合法链的区块orphan block或者stale block,也有区块奖励。以太坊中称为uncle block。
    • Uncle block可以得到7/8✖️3ETH。包括Uncle block的区块链可以得到1/32✖️3+3,而且最多可以包括2个Uncle block。
    • 合法的Uncle block 最多7代,7/8,6/8,5/8,4/8,3/8,2/8。Uncle reward
    • 把Uncle block添加进来,要不要执行交易?不执行,可能和主链上的交易冲突。
    • 分叉后第二,三,个区块怎么办?以太坊规定:只要分叉第一个区块才能得到奖励。因为forking attack的代价便宜很多,因为攻击成了,就回滚达到攻击目的,如果不成就被招安得到奖励。
  7. ETH-挖矿算法(bug bounty)

    • Block chain is secured by mining
    • one cpu,one vote—-中本聪
    • 因此,后面的挖矿算法要保证 ASIC resistance,增加对puzzle求解对内存的需求 memory hard mining puzzle,怎么设计呢?著名的例子 LiteCoin:用的是scrypt,128K内存
    • 好处:增加了对内存的访问需求,memory-hard
    • 坏处:对轻节点也是memory-hard。
    • 而puzzle设计的原则:difficult to solve,but easy to verify。
    • LiteCoin和比特币的差别:1 puzzle难题不同 2 出快时间2分半,是比特币的四倍。除此之外,基本一样。
    • ethash(以太坊使用的puzzle):
    • 两个数据集 16M cache 1G dataset,DAG(定期增长)
    • 16M cache:seed 经过变换产生一个伪随机数,再hash产生下一个伪随机数。。。
    • 1G dataset:伪随机位置寻找256次,找到一个数放到第一个位置,
    • block header nonce 一次读取128个位置,计算得到一个位置,包括相邻元素也读取出来,循环64次,每次读取2个元素,因此是128个元素

    • 伪代码分析:每隔30000个块会重新生成seed(对原来的seed做hash值),并且利用新的seed生成新的cache。cache的初始大小为16M,每隔30000个块重新生成时增大初始大小的1/128—-128K。

    • 目前以太坊挖矿基本上是GPU,起到了ASIC resistance的作用。

  8. ETH-难度调整

    • 黄皮书和代码都有不一致的地方,这里以代码为依据
    • D(H)=max(D0,P(H)Hd+xs2)+epston P(H)Hd:父区块 D0=131072
    • 难度炸弹:PoW向PoS转换。工作量证明向权益证明转换。
    • 问题是PoS有很多问题不好解决,无法上线,而难度越大,出块时间越长,15秒—16秒—-17秒,因此,向后回调了300万个区块。

    • 以太坊的四个阶段:

    • Frontier
    • Homestead
    • Metropolis
      • Byzantium(难度回调在此阶段中,在EIP(Ethereum Improvement Proposal)中决定,同时把Block Reward 从5个ETH将为3个ETH) BIP(BitCoin Improvement Proposal)
      • Constantinople
  9. ETH-Proof of Stake

    • 比特币一个诟病:浪费电 KHW THW(Tero watt hours)
    • 比特币:每年能耗70THW,每个交易的能耗是1014KWH。比特币每年挖矿的总收入60亿美元
    • 以太坊:每年能耗20THW,每个交易的能耗是67KWH。因为出块时间短,虽然还有智能合约。每年挖矿的总收入50亿美元,费用是24亿美元

    • PoS:proof of stake

    • 挖矿-设备多-算力大-挖矿多-收益多:所以挖矿取决于钱,拼钱
    • virtual mining,相比较proof of work,好处有
      • 能耗更少,环境污染小,温室气体排放少
      • 不是加密货币的闭环,因为矿机是用加密货币之外的法币购买的。发动攻击,所需的资源可以从外部获得,比如购买矿机。比如AltCoin,对这种小币攻击很容易,而且致命性的,Infanticide。
      • 有的采用混合模型:也要挖矿,挖矿的难度和你持有币多少相关,持有币越多,挖矿难度越小。这个设计也有问题:持有币最多的人,挖矿最容易。有的币会锁定一段时间,Proof of Deposit
      • 基于权益证明有很多挑战:
        • 一 nothing at stake:上面链可以挖,下面链也可以挖矿
    • 以太坊中的权益证明协议是:Casper the friendly Finality Gadget(FFG):引入一个概念Validator,推动链达成共识,形成共识
      • two-phase commit:Prepare Message 2/3 Commit Message 2/3
      • 以太坊中权益证明:50个区块=1个epoch,连续两个epoch投票都是2/3,才算有效
      • 验证者,验证会得到奖励,跟挖矿得到奖励一样。相应的,不作为的验证者,没收部分保证金,乱作为的验证,没收全部保证金,销毁。
    • Finality是否可能被推翻?权益证明不成熟,工作量证明经历了历史的考验
    • EOS 柚子:采用的就是权益证明,DPOS共识协议:Delegated Proof of Stake:选举出一些超级节点,再投票。。。
    • 工作量证明的一些好处:提供了一种将电能转换为钱的方式。电不好存储和传输,偏远地区清洁能源的电,不好传输到电主网中,因此可以用挖矿将电能转换为比特币,存储和传输就容易了。
  10. ETH-智能合约(以太坊的精髓)

    • 什么是智能合约?是运行在区块链上的一段代码,代码的逻辑定义了合约的内容。
    • 智能合约的账户保存了合约当前的运行状态:
    • balance 当前余额
    • nonce 交易次数
    • code 合约代码
    • storage 存储,数据结构是一棵MPT
    • Solidity 是常用的语言,类似JavaScript
    • 强类型语言 address 特殊类型
    • 建议:construct 构造函数
    • 外部账户可以调用智能合约
    • 一个合约调用另一个合约的函数?
    • 直接调用
    • 代理调用 delegatecall()
    • fallback()函数
    • 不调用任何函数,就调用fallback函数,若没有这个函数,则抛出异常
    • 智能合约的创建和运行
    • 运行在EVM(Ethereum Virtual Machine), World Wide Computer 256位。比如:增加JVM,加强一致性。
    • 智能合约是个Turning-complete Programming Model
      • 出现死循环怎么办?没有办法,这个是Halting Problem,不是NPC问题(可以解的),复杂度是指数级。
    • 汽油费gas fee,由发起交易的人支付
    • EVM中不同指令消耗的汽油费是不一样的(比如hash运算gas fee高)
    • 错误处理
    • 会产生回滚,回到交易执行之前的状态
    • assert语句:判断内部条件
    • require语句:判断外部条件
    • revert语句:无条件抛出异常,回滚状态变动
    • 嵌套调用
    • 直接调用:会产生连锁回滚
    • call调用:就不会产生连锁回滚
    • 全节点维护三个数据结构:状态树,交易树,收据树。状态的修改都是在修改本地的数据结构。
    • 先执行再挖矿!执行完交易后,更新三个数据结构,更新3个roothash,再尝试nonce,挖矿。
    • gas fee是给那些发布智能合约的矿工的一种补偿,但如果没发布的矿工,什么补偿都没有,就是“陪太子读书”。
    • 有没有一些区块,不独立验证交易的合法性。这样会导致区块链的安全问题。因为区块链的安全性取决于每个全节点独立验证交易的安全性。而这些全节点不可能不验证交易的合法性,因为根hash值不对了,就没法发布区块了。(先执行交易,再更新三棵树)
    • 问题:智能合约的错误,要不要也发布到区块链中去?要!错误的交易也要发布到区块链中去,形成共识,才能获得汽油费。
    • 问题:智能合约支持多核并行处理吗?可以的。solidity不支持多线程。
    • 多线程:寄存器是自己的,大部分是共享的,多线程会导致访问内存的不确定,这个和以太坊是交易驱动的状态机相违背,因为所有全节点都要验证,因此状态的转换是确定的。
    • 三种函数 发起转账
    • transfer 会发生连锁回滚
    • send 返回false,不会发生连锁回滚
    • call.value(uint256 amount) 返回false,不会发生连锁回滚。区别:把剩下的所有汽油都发过去
    • auctionE nd() bid() 函数。
    • 重入攻击(Re-entrancy Attack):你调用的合约有可能再调用你这个合约,所以先清除状态,再执行操作
  11. ETH-TheDAO

    • DAO Decentralized Autonomous Organization 去中心化的自治组织
    • 2016年5月出现:The DAO。众筹,民主投票决定。
    • DAC Decentralized Autonomous Corporation
    • 取回资金:splitDAO childDAO 唯一路径:只能拆分成childDAO,取出来。
    • 拆分的理念:符合民主的理念,就是不是少数服从多数,少数也可以拆分出来。
    • 问题出现在splitDAO的代码实现上:先把余额清零,再转账。(重入攻击)子基金有28天的锁定期。
    • 出现两派:1.too big to fail 补救 2. code is law 不补就
    • 软件升级:软分叉。增加了一个规则:DAO相关的交易都是非法的交易,但这个有一个bug:非代码bug,而是功能bug,没有收取汽油费,因此导致攻击(不消耗汽油费,恶意节点不断产生这种交易,新升级的节点受不了都回到旧版本)
    • 通过软件升级的方法,把DAO智能合约上的所有资金强行转到新的智能合约上,这个新的智能合约只有一个功能:退钱,D币转换为以太币。硬分叉:因为旧矿工认为这个交易是非法交易。最后通过投票支持了硬分叉。
    • 硬分叉:新链是 ETH 旧链 ETC Ethereum Classic 上交易所。一直存活在现在。两条链同时存在有一个问题:重放攻击,新链上的交易可以放到旧链上,反之亦然。因此增加了ChainID。
    • 问题:为什么不能针对黑客账户进行退?而是都按照所有账户的方式处理。因为这个bug不可以修改,智能合约只能作废。
  12. ETH-反思

    • 智能合约其实就是自动执行的合约,Is smart contract really smart?
    • 反思1 Smart contract is anything but smart.
    • 反思2 Irrevocability is a double ledged sword
    • 反思3 nothing is irrevocable(18修正案—21修正案 大街上饮酒,车里的人都不能喝酒 是违法的 open container laws)
    • 反思4 Is solidity the right programming language? 语言设计:solidity语言,调用时,违法直觉,是调用fallback函数。有人建议:使用函数式语言。康奈尔大学 函数式编程语言 Ocaml,做的工作是:formal verification。形式化证明这个代码只能实现这个功能。
    • 智能合约的语言具有什么样的表达能力?图灵完备,还是中间语言。
    • 有可能的解决方法:模板
    • 开源的好处:大家监督,增加公信力。不容易产生漏洞。但为什么这么多人看着,还出现漏洞,有人称为Many eyeball fallacy。所以,开源的不一定安全。
    • What does decentralization mean?最后是投票,也有矿工留在旧链。
    • 分叉是去中心化的体现。
    • decentralized != distributed
    • 状态机 state machine 是为了容错!最早的应用场景是mission critical application;airtraffic control;stock exchange;space shuttle。以前这种情况下机器都很少,个位数。
    • 智能合约是用来编写控制逻辑的。
  13. ETH-美链 Beauty chain

    • 在美莲上做ICO。 Initial Coin Offering
    • 没有自己的区块链,代币的发行,转账都是通过调用智能合约中的函数来完成。
    • ERC 20是以太坊上发行代币的一个标准,规范了所有发行代币的合约应该实现的功能和遵循的接口 ERC Ethereum Request for Comments
    • 代码分析: uint256 amount = uint256(cnt) * _value. 溢出,amount 很小,但转账时依然很大,因此导致系统中凭空产生了很多的代币。

    • 反思1:应该检查溢出 比如:math库中,都是 a=b*c assert(a/c == b),加法减法都调用的是库,而乘法没有使用库。

  14. 总结(应用上)

    • 退款不是取消之前的交易,而是发起一个新的交易。
    • 法律保护?没有司法保护,美国信用卡在2个月内申诉,最多50美元的损失。比特币没有这个保护。
    • 比特币本来就没有必要和已有支付方式的竞争
    • 加密货币应该用在已有支付方式解决不是很好的场景。Internet使得信息传输很容易,支付则难很多。 World Wide Currency 支付和信息传播联系在一起。
    • 有人说:下一代互联网是Internet of value。Information can flow freely on the Internet,but payment cannot。趋势:价值交换和信息传播渠道相互融合。
    • 有人说:加密货币的支付效率很低。
    • 加密货币本来就不是和以前支付方式竞争
    • 随着区块链的技术发展,共识协议改进,支付效率不断提高:比特币每秒7个交易,有的货币号称每秒达到100万个交易
    • 最重要的一点:效率的好处应该在当前的历史环境下。电报Telegram在中国使用很长时间,因为没有更高效的方式。
    • 智能合约的质疑:为啥不用法律合同,自然语言编写,智能合约是用程序编写的。Software is eating the world
    • ATM机是物理世界的智能合约,ATM刚开始出现故障
    • 软件改变世界,这是一个大趋势
    • 但,智能合约也不能解决所有问题。Democracy is the worst form of Government except for all those other forms that have been tried from time to time
    • Is decentralization always a good thing? 去中心化不能解决所有问题,
  15. 敲重点

    • 不要被学术界的思维限制,不要被程序员的思维限制。
    • 推荐书单:货币金融学
    • code is law (代码写到区块链中,是不能被更改的)
  • 参考资料
  1. 《Bitcoin and Cryptocurrency Technologies A Comprehensive Introduction》
  2. 以太坊白皮书、黄皮书、源代码
  3. Sodility文档

关于区块链的一些整理 2019年12月

  • Blockchain(实现了一个带有token的区块链)

    • 本质:保存持续增加的记录的分布式数据库。
    • 问题:分布式数据中如何存储数据
      1. 如何增加数据
      2. 如何修改数据
      • 解决方案:增加和修改分离。
        • 如同记录log,不断记录新的数据,然后将这些数据记录下来
        • 也即是LinkedList(链表就是最简单的区块链结构)
    • 如何保存数据:数据和节点的管理和操作
      • 定义数据块
      • 定义数据块之间的关系
      • 添加数据块的功能
      • 节点之间的通讯
      • 节点之间同步数据
      • 对节点的控制能力
    • 区块的结构是什么
      1. index
      2. timestamp
      3. data
      4. hash
      5. preivious Hash
    • 如何保证数据不被篡改
      如何发现被篡改? SHA256(index+previousHash+timestamp+data)
      如何屏蔽这种情况? 都是
      如何改回来?
    • 如何创建第一个区块
      硬编码,创世快。
    • 如何创建一个新的块
      依次计算
    • 如何验证数据的有效性
      • 区块之间的索引是+1递增的
      • 当前区块的previous hash需要和之前区块的Hash相同
      • 区块自身的Hash需要正确
    • 区块分叉怎么办?
      选择最长的那个链
    • 节点之间如何通讯
      达成共识的三个能力:
      1. 当一个节点创建了一个区块,需要通知整个网络
      2. 当一个节点连接上了一个新的节点,需要主动询问对方最新的区块
      3. 当一个节点遇到一个新的区块,它会根据判断的结果向网络请求更多的区块(广播,类似gossip协议)
    • 如何控制节点
      对外接口
      查看节点的区块,添加区块,查看连通的节点,添加节点。
    • 系统的架构
      Blockchain:
      • HTTP接口(控制节点)
      • Websocket接口(和其他节点进行P2P通信)
    • 如何应对攻击

      • Proof-Of-Work原理:认的是计算能力,难题的解答过程就称为挖矿。(Hash的前n位数为0,Block中有一个nonce,不断增加nonce,直至达到难度条件)
    • 如何确定难度
      • 多久产生一个区块?bitcoin:10分钟;Ethereum:10-20秒
      • 多久调整一次难度?bitcoin:2016个区块;Ethereum:动态调整
    • 时间戳被篡改了怎么办?

      • 判断之前的block的时间戳之差是否大到一定程度
    • 低难度长链(恶意节点产生一个低难度的长链)

      • “中本聪共识”:中本聪提出:比较两条链,不能比较其长度,而是要比较其计算复杂度(hash算力)
  • 小结:如何应对攻击?

    • 难于计算,易于验证,因此寻找特定前缀SHA256成为一个很好的难题
    • 已经在代码中加入了难度,并且节点可以通过挖矿把区块添加到区块链中。
    • 如何交易?
      • 金融体系的核心概念:所有权+交易权
      • 如何证明你是你:私玥签名,公钥验证
    • 如何记录一次交易
      • 从哪里来:发送者地址(发起者比接受者多一个签名)
      • 到哪里去:接收者地址
      • 交易多少:数量
    • 如何唯一表示一次交易
      hash:SHA-256
    • 如何对交易进行签名(防止重放攻击)
    • 如何找到用户拥有的token
      查询交易,找到没有花掉的token,用这个进行交易
    • 如何更新未花费的数据信息
      当新的区块产生时,这个区块包含新的交易信息,因此,需要从新的区块中找到所有未花费的token的信息
    • 如何更新所有未花费的信息
    • 如何验证交易的有效性
      • 交易结构异常检查
      • 交易id异常检查
      • 同时判断token是否被花费掉(block中存有交易信息,所有未花费的存储在array中,更新这个array即可)
  • 区块链的token最初从哪里来
    系统给“挖矿”的矿工的奖励,奖励和区块是绑定的,保存这些奖励:用区块的id

    • 小结:交易中记录未花费的数量和主人。

    • 如何实现钱包?
      钱包的三个功能

      • 创建钱包(公钥表示钱包。先产生私钥,再用私钥产生公钥。私钥的存储需要注意安全)
      • 查看钱包的余额(未花费交易求和即可。filter地址相同的,map到amount,再求和—-很漂亮的写法)
      • 在钱包之间进行交易(eg,自己50—40给别人+10给自己。n对n的过程)
    • 如何使用钱包
      构建一个外部接口
    • 如何找别人帮忙:交易费
    • 如何保存未确认单的交易:交易池
    • 如何通知他人交易信息
      gossp协议。所以需要构建两个消息:查询交易池,反馈交易池。
    • 如何防止重放攻击
      • 签名
      • 交易不能被两次花费
    • 如何把未确认的交易放入区块中
      • 一个未确认交易已经加入新的区块
    • 一个未花费的交易在新的区块已经被花费掉
    • 小结 如何找别人帮忙
      找别人计算的包中附带一个50美元或者gas(以太坊中)
  • 如何实现用户界面

    • 查询区块和交易详细信息的接口
    • 查询特定地址详细信息的借口
  • Ethereum

    • Ethereum本质上是一个图灵机,通过编写协议来驱动状态的改变
    • 图灵机:状态和状态转移
    • 核心功能:所有权,交易,状态转移
    • 如何防止有人长时间占用节点?需要付费

    • 版本:go-Ethereum

    • solidity实现:能编译成EVM执行的ByteCode的高级语言
    • Mist:Ethereum的应用查看器
  • Blockchain(存储)—>Bitcoin(记账方式)—>Ethereum(计算)
    Blockchain(存储)—>Bitcoin(交易)—>Ethereum(contract实现的图灵计算)
  • 图灵机的本质
    计算机的本质就是一堆状态(数据),状态之间相互转换。
  • p2p和Bitchain,BTC,Ethereum的一个区别:部分副本(N=3)和全副本
  • 支撑区块链的核心是:人们对区块链的信心

  • Javascript语言:凡是能被JS写的,最终都被JS写。

  • 参考

    1. 如何实现区块链
    2. 如何实现以太坊Ethereum
  • 推荐书籍

    • “python 哲学”
    • “Ethereum 哲学”

《数学之美》 吴军 2017年12月

《数学之美》读书笔记思维导图byDSZ

《数学之美》读书笔记思维导图byDSZ

罗塞塔石碑

  • 自然语言处理的历史

    • 图灵测试 Turning Test:1950年,阿兰图灵《mind》
    • 60年的历史:
    • 1950-1970s:用电脑模拟人脑(证明是不成功的,弯路)
    • 1970s-至今:基于数学模型和统计
    • 1956年8月31日 John McCarthy, Marvin Minsky, Nathaniel Rochester, Claude Elwood Shannon, 达特矛斯会议
      Herbert Simon, Allen Newel
    • 1970s的基于统计方法的核心是:通信系统+隐马尔可夫模型
    • 基于有向图的统计模型:解决复杂度的句法分析
      • Frederick Jelinek领导:IBM-约翰霍普金斯系统
      • 米奇 马库斯领导:宾夕法尼亚大学
      • 统计语言模型:Frederick Jelinek,一个句子是否合理,就看它的可能性大小如何。
  • Andrey Markov 马尔科夫假设:任何一个词只和前面一个词有关

  • 训练统计语言模型的艺术在于解决好统计样本不足时的概率估计问题

  • 1953年 I.J.Good和Alan Turning: Good-Turning Estimate

  • 分词方法:查字典

  • 消除分词的二义性问题:1990年郭进博士(清华大学电子工程系):统计语言模型
    数学之美_读书笔记_消除分词的二义性

  • 雅格布森(Roman Jokobson)六个要素:发送者(信息源),信道,接收者,信息,上下文和编码。

  • 19世纪俄罗斯数学家马尔可夫(Andrey Markov),美国数学家鲍姆(Leonard E. Baum)于1960-70提出马尔可夫模型(Hidden Markov Model);对应的训练方法:鲍姆-韦尔奇算法。

    • 马尔可夫假设:

    • 马尔可夫链(马尔可夫过程):符合马尔可夫假设的随机过程。

    • 隐含马尔可夫模型三个基本问题:

      1. 给定一个模型,如何计算某个特定输出序列的概率?
        • Forword-Backward算法(Frederick Jelinek《Statistical Methods for Speech Recognition》)
      2. 给定一个模型和某个特定的输出序列,如何找到最可能产生这个输出的状态序列
        • 维特比算法
      3. 给定足够量的观测数据,如何估计隐含马尔可夫模型的参数
        image-20200115144740677
    • 仅仅通过大量观测得到的信号 $O1,O_2,O_3,\cdots$就能推算模型参数$P(S_t|S{t-1})$和$P(Qt|S{t})$,这类方法称为无监督的训练方法。其中主要使用的鲍姆-韦尔奇算法(Baum-Welch Algorithm)。这个过程也称为期望值最大化(Expectation Maximum),简称EM过程,EM过程保证算法一定能收敛到一个局部最优解。(凸函数:则可以获取全局最优解;目标函数:输出概率)

    • 解决翻译中的二义性问题(P68 互信息)

      • William Gale,Kenneth Church, David Yarowsky从大量文本中找出总统布什一起出现的互信息最大的一些词,看上下文中哪类相关的词多即可。

      • 相对熵(交叉熵):Kullbak-Leibler Divergence 用来衡量相关性,但和变量的互信息不同,它用来衡量两个取值为正数的函数的相关性。

      • 相对熵的三条结论:

        • 对于两个完全相同的函数,它们的相对熵等于零。

        • 相对熵越大,两个函数差异越大,反之,相对熵越小,两个函数的差异越小。

        • 对于概率分布或概率密度函数,如果取值均大于零,相对熵可以度量两个随机分布的差异性。

          为了让其对称,詹森和香农提出一种新的相对熵的计算方法:

      • Google自动问答系统:使用詹森-香农度量来衡量两个答案的相似性

    • 词频率-逆向文档频率(TF-IDF)

      • 贾里尼克从条件熵和相对熵出发,定义了一个称为语言模型复杂度(perplexity)的概念,直接衡量语言模型的好坏。
      • 李开复 Sphinx语音识别系统:若不用任何语言模型(即零元语言模型):复杂度997
        若(二元)语言模型只考虑前后词的搭配,不考虑搭配的概率,复杂度为60;考虑搭配的概率,复杂度为20。
      • Ref 斯坦福大学托马斯.科弗(Thomas Cover)《Elements of Information Theory》
    • 波尔L.Bahl 著名的语音识别Dragon公司创始人贝克夫妇Jim Baker & Janet Baker,解决最大熵迭代算法:达拉.皮垂(S.Della Pietra和V.Della Pietra)BCJR算法的另外两个提出者:库克(J.Cocke),拉维夫(J.Raviv)。第一个提出机器翻译统计模型:布朗(Peter Brown)、拉法特(John Laffety)

    • 语音识别问题:人工智能和模式匹配问题—->通信问题。
      贾尼尼克:两个隐含马尔可夫模型(声学模型+语言模型)
      霍普金斯大学:世界著名的CLSP(Center for Language and Speech Processing)
      Google 研究院院长诺威格(Peter Norvig),费尔南多.皮耶尔(Fernando Pereira)
      Google搜索质量第一技术负责人:阿米特.辛格(Amit Singhal)

    • 搜索的“道”:自动下载尽可能多的网页,建立快速有效的索引,根据相关性对网页进行公平准确的排序
      下载-索引-排序。
      最简单的索引结构是用一个很长的二进制数表示一个关键字是否出现在每篇文献中。对于互联网的搜索引擎来讲,每一个网页就是一个文献。

  • 网络爬虫:Web Crawlers,从任何一个网页出发,用图的遍历算法,自动访问到每一个网页并把它们存起来。
    世界上第一个网络爬虫是由麻省理工学院的学生马休.格雷(Matthew Gray)1993年写成,起名“互联网漫游者”(WWW Wanders)
    在网络爬虫中,使用一种“散列表”(Hash Table哈希表)而不是一个记事本,记录网页是否下载过的信息。

  • 网络爬虫的工程要点:

    1. 网络爬虫对网页遍历的次序:调度系统(Scheduler)优先级序列(Priority Queue)。BFS的成分多一些。
    2. 页面的分析和URL的提取:HTML方便提取,而用脚本语言(Javascript)写的网页不好提取,需要做浏览器内核的工程师来写网络爬虫的刷新程序。
    3. 记载哪些网页已经下载过的小本本—-URL表:采取散列表,解决散列表的通信问题
      首先,明确每台下载服务器的分工;
      其次,在明确分工的基础上,判断URL是否下载:批处理。
  • PageRank算法(网页排名算法)
    高明之处:将互联网当作一个整体看待。
    如果一个网页被很多其他网页所链接,说明它受到普遍的承认和信赖,那么它的排名高。
    A已知,B未知,待求。
    假定$Bi$是第i次迭代后的结果,那么$B_i=A \cdot B{i-1}$,初始假设:所有的网页排名都是$\frac{1}{N}$,即$B0=(\frac{1}{N},\frac{1}{N},\cdots,\frac{1}{N})$,最终$B_1,B_2,\cdots,B_i$会收敛,无限趋向于B,此时$B=B \times A$。当两次迭代的结果$B_i$和$B{i-1}$差异很小时,接近于零,停止迭代,算法结束。一般,10次左右迭代基本收敛。
    注:由于网页之间的链接的数量比互联网的规模非常稀疏。因此,计算网页的网页排名也需要对零概率或小概率事件进行平滑处理,网页的排名是一个一维向量。$Bi=[\frac{\alpha}{N}+(1-\alpha)A]\cdot B{i-1}$,$\alpha$是一个较小常数。

  • Amit Singhal, Matt Cutts, Martin Kaszkiel, 吴军四个人研究网络搜索中的作弊问题Spam。

  • 如何确定网页和查询的相关性
    TF(Term Frequency) 单文本词频
    在信息检索中,使用最多的权重是“逆文本频率指数” IDF(Inverse Document Frequency)

    IDF:一个特定条件下关键词的概率分布的交叉熵(Kullback-Leibler Divergen)
    相关性计算:$TF_1 \cdot IDF_1 + TF_2 \cdot IDF_2 + \dots + TF_N \cdot IDF_N$

  • 有限状态机和动态规划—-地图和本地搜索的核心技术
    基于概率的有限状态机
    前AT&T实验室的三位科学家,莫瑞(Mehryar Mohri),皮耶尔(Fernando Pereria),瑞利(Michael Rily):通用的基于概率的有限状态机C语言工具库。
    Google Now的引擎和有限状态的工具库,功能上完全等价。
    全球导航的关键算法是图论中的动态规划(Dynamic Programming)。

  • 新闻的自动分类(余弦定理)
    词汇表中有64000个单词,将对应TF-IDF值作为特征向量,用向量的角度来度量两个向量的相似性
    $cosA=\frac{b^2+c^2-a^2}{2bc} \Rightarrow cosA=\frac{}{|b|\cdot|c|} \Rightarrow cos\theta=\frac{x1y_1+x_2y_2+\dots+x{64000}y{64000}}{\sqrt{x_1^2+x_2^2+\dots+x{64000}^2} \cdot \sqrt{y1^2+y_2^2+\dots+y{64000}^2}}$

  • 自然语言处理过程中,最常见的两个分类问题:

    1. 将文本按主题分类(举例:介绍奥运会——>体育类)
    2. 将词汇表中的词按意思归类(各种运动的项目名称——>体育类):通过矩阵圆满一次性的解决。
  • 分类其实是一种聚类问题
    新闻——>实词——>数——>向量——>夹角
    矩阵运算中的奇异值分解(Singular Value Decomposition SVD)
    N个词,M篇文章,每行对应一篇文章,每列对应一个词。
    $A=\left[
    \begin{array}
    {ccc}
    a{11} \cdots a{1j} \cdots a{1N} \
    \cdots \
    a
    {i1} \cdots a{ij} \cdots a{iN} \
    \cdots \
    a{M1} \cdots a{Mj} \cdots a{MN} \
    \end{array}
    \right]$ 其中,$a
    {ij}$是第j个词在第i篇文章中出现的加权词频(比如TF-IDF)。
    奇异值分解,就是把这个大矩阵分解成三个小矩阵相乘。
    $A{1000000 \times 500000}=X{1000000 \times 100} B{100 \times 100} Y{100 \times 500000}$
    X是词进行分类的结果:每一行表示一个词,每一列表示一个语义相近的词类(语义类)

    Y是对文本的分类结果:每一列对应一篇文本,每一行对应一个主题
    B表示词的类和文章的类之间的相关性
    2017年 Google中国的张智威博士:奇异值分解的并行算法。
    $A{MN}=X{MM} \times B{MN} \times Y{NN}$ ,其中X为酉矩阵,Y为酉矩阵的共轭矩阵。(酉矩阵定义:与其共轭矩阵相乘等于单位阵的矩阵)

  • 奇异值分解步骤:

    1. 将A变换成一个双对角矩阵,计算量是$O(MN^2)$
    2. 将双对角矩阵变成奇异值分解的三个矩阵。
  • 信息指纹算法:梅森旋转算法(Mersenne Twister)、MD5、SHA-1。

  • 集合相同的判定:Google的工作:为了允许一定的容错能力,采用了一特定的信息指纹相似哈希(SimHash)。
    Google实验室项目,CopyCat项目:可以准确找出原文和转载的文章。

  • Youtube的反盗版、视频匹配:关键帧的提取和特征的提取;信息指纹表示关键帧;检测是否盗版类似于比较两个集合元素是否相同。

  • 计算权威度的步骤:

    1. 对网页每句话进行句法分析,找出涉及到主题的短语,以及对信息源的描述,获得了“提及”信息。
    2. 利用互信息,找到主题短语和信息源的相关性。
    3. 对主题短语进行聚合。
    4. 需要对一个网站中的网页进行聚合,比如把一个网站下面的网页按照子域或子目录进行聚类。
  • 最大熵(Maximum Entropy)模型:保留全部的不确定性,将风险降到最低。对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。

    • 匈牙利著名数学家、信息论最高奖得主希萨(I.Csiszar)证明,对任何一组不自相矛盾的信息,这个最大熵模型不仅存在,而且是唯一的。此外,它们都有一个非常简单的形式——指数函数。
    • 第一个在实际信息处理应用中验证了最大熵模型的优势是宾夕法尼亚大学马库斯教授的高徒拉纳帕提(Adwait Ratnaparkhi)。

    • 最原始的最大熵模型的训练方法:通用迭代算法GIS(Generalized Iterative Scaling):J.N.Darroch,D.Ratcliff 1970。

      1. 假定第零次迭代的初始模型为等概率的均匀分布。
      2. 用第N次迭代的模型来估算每种信息特征在训练数据中的分布,如果超过了实际的,就把相应的模型参数变小。否则变大。
      3. 重复步骤2直至收敛。
    • 改进迭代算法(IIS Improved Iterative Scaling)达拉皮垂孪生兄弟 1980:使最大熵模型的训练时间缩短了一到两个数量级。(世界上最成功的对冲基金Hedge Fund公司,文艺复兴技术公司Renaissance Technologies)
    • 小结:最大熵模型是唯一一种既能满足各个信息源的限制条件,又能保证平滑性的模型。但是,最大熵模型的计算量巨大,在工程上实现方法的好坏决定了实用与否。
  • 线性插值的模型比最大熵模型效果略差,但是能得到80%的收益。Google拼音输入法的个性化语言模型就是这么实现的。$P’(wi|w{i-1})=\lambda(w{i-1}) \cdot P_0(w_i|w{i-1}) + (1-\lambda(w{i-1})) \cdot P_0(w_i|w{i-1})$

  • 布莱尔:基于变换规则的学习方法(Transformation Rule Based Machine Learning)

  • 布隆过滤器:Burton Bloom
    电子邮件X,用8个不同的随机数产生器$(F_1,F_2,\cdots,F_8)$产生8个指纹$(f_1,f_2,\cdots,f_8)$,再用一个随机数产生器G把这个8个信息映射到1-16亿中的8个自然数$g_1,g_2,\cdots,g_8$,把这8个位置的比特位全部设置为1。
    应用:检测一个电子邮件是否在黑名单中?$Y\rightarrow s_1,s_2,\dots,s_8 \rightarrow8个比特位:t_1,t_2,\dots,t_8$,若Y在黑名单中,则$t_1,t_2,\dots,t_8$对应的8个比特值是1。

    • 布隆过滤器的识别问题:$(1-e^{-\frac{kn}{m}})^k$,m比特,含有n个元素。m=16,k=8,假阳性的概率为万分之五。
  • 贝叶斯网络:也称为信念网络(Belief Networks)
    使用贝叶斯网络必须先确定其拓扑结构,然后还要知道各个状态之间相关的概率。
    得到拓扑结构和这些参数的过程分别叫做结构训练和参数训练,统称训练。从理论上讲,它是一个NP(NP-Complete)完备问题。IBM华生实验室的茨威格博士(Geoffrey Zweig)和西雅图华盛顿大学的比尔默教授(Jeff Bilmer),完成了一个通用的贝叶斯网络的工具包。

    • 主题模型(Topic Model):用基于统计的模型分析文本,抽取概念,分析主题。Google的Rephil,文本分类:用贝叶斯网络建立一个文章、概念和关键词之间的联系。
    • 贝叶斯网络的训练:
      使用贝叶斯网络首先要确定它的结构。
      复杂一点的问题:无法人工给出结构,需要通过机器学习得到。
    • 例子:美国洛杉矶警察局 $P(l,t,c)$,$l,t,c$分别代表地点,时间和犯罪类型。
      $P(l,t,c|X)=\frac{P(l,t,c,X)}{P(X)}$,P(X):历史数据估算,X:人流,活动,天气,失业率。
      根据历史数据逐步提取各种特征:比如演出和偷盗的关系。
  • 条件随机场:非常灵活的用于预测的统计模型。

  • 维特比算法(Andrew Viterbi)是一个特殊但应用最广的动态规划算法。利用动态规划,可以解决任何一个图中的最短路径问题。维特比算法是一个针对特殊的图—-篱笆网络(Lattice)的有向图最短路径问题而提出的。
    之所以重要,是因为凡是使用隐含马尔可夫模型描述的问题,都可以用维特比算法解码。

    • $P(xi|x{i-1})$为状态的转移概率,$P(y_i|x_i)$为每个状态的产生概率
    • 首先,根据现有的模型,计算各个观测数据输入到模型中的计算结果,这个过程称为期望值计算过程(Expecation)或E过程;
    • 接下来,重新计算模型参数,以最大化期望值。这个过程称为最大化的过程(Maximization),或M过程。EM算法。
    • EM算法包括:隐含马尔可夫模型的训练方法:Baum-Welch算法;最大熵训练方法:GIS算法。
    • EM算法不一定获得全局最优解。若优化的目标函数是一个凸函数,则可以获得全局最优解。熵函数:是凸函数。余弦距离:不是凸函数。
  • 数学相关
    • 布尔代数对于数学的意义等同于量子力学对物理学的意义,它们将我们对世界的认识从连续状态扩展到离散状态。布尔代数非常简单,但是对数学和计算机发展的意义重大,它不仅把逻辑和数学合二为一,而且给了我们一个看待世界的全新视角,开创了今天数字化的时代。
    • 数据库的查询语句(SQL)支持各种复杂的逻辑组合,但是背后的基本原理是基于布尔运算的。
    • 离散数学是当代数学的一个重要分支,也是计算机科学的基础。它包括:数理逻辑(基于布尔运算),集合论,图论,近世代数四个分支。
      图论的开始:欧拉(Leonhard Euler)哥尼斯堡的七座桥。广度优先搜索 BFS Breadth-First Search,深度优先搜索 DFS Depth-First Search。
    • 数学模型的几个结论:
      1. 一个正确的数学模型应当在形式上是简单的。
      2. 一个正确的模型一开始可能还不如一个精雕细琢过的错误模型来的准确,但是,如果我们认定大方向是对的,就应该坚持下去。
      3. 大量准确的数据对研发很重要。
      4. 正确的模型也可能受到噪声干扰,而显得不准确。这时候不要以一种凑合的修正方法加以弥补,而是要找到噪声的根源,这也许能通往重大的发现。
  • 透过现象看本质

    • 信息的冗余是信息安全的保障
    • 语言的数据,称之为语料,尤其是双语或者多语的对照语料对翻译至关重要,它是从事机器翻译研究的基础。
    • “智能”有关的问题,都可以归结为一个多维空间进行模式分类的问题。
    • 人工神经网络:本质上是一种特殊的有向图。
    • 在人工神经网络中,需要设计的部分只有两个:
      • 一是它的结构。(网络分几层,每层几个节点,节点之间如何连接)
      • 二是非线性函数$f(\cdot)$的设计。(常用的指数函数)
    • 如何学习语言:(宾西尼亚大学的语言数据库(LDC)标准)
      • 语法规则(Grammar Rules)
      • 词性(Part of Speech)
      • 构词法(Morphologic)
    • Donald Knuth(图灵家得主)用计算机复杂度来衡量算法的耗时
    • 语言和编码的关系,算法和语法规则的关系:任何一种语言都是一种编码方式,而语言的语法规则是编解码的算法。
    • 几乎所有的自然语言处理问题都可以等价成通信的解码问题。
  • 人物
    1. 自然语言处理的关键人物:Frederick Jelinek和他领导的IBM华生实验室(T.J.Watson)
    2. Amit Singhal 做事哲学:帮助用户解决80%的问题,再慢慢解决剩下的20%问题,是在工业界成功的秘诀之一。
    3. 柯林斯:做事做到极致。工业界—->学术界。
  • 观点
    1. 小学生和中学生其实没必要花那么多时间读书,而他们的社会经验、生活能力以及在那时树立起的志向将帮助他们的一生。
    2. 中学阶段花很多时间比同伴多读的课程,上大学阶段用很短的时间读完。
    3. 学习和教育是持续一辈子的事情。
    4. 书本的内容可以早学,也可以晚学,但错过了成长阶段却是无法弥补的。
    5. 作者一直认为,一个人想要在自己的领域内做到世界一流,他的周围必须有非常多的一流人物。(why?带辩论思考)
    6. 追求术的人一辈子很辛苦,只有掌握了本质和精髓的人才游刃有余。
    7. 真正做好一件事没有捷径,离不开一万小时的专业训练和努力。
    8. 简单性和模块化是软件工程的基石
    9. 分布式和容错性是互联网的生命
  • 推荐书单
    1. 美籍俄裔物理学家:乔治伽莫夫《从一到无穷大》
    2. 罗曼罗兰《巨人三传》、《贝多芬传》、《米开朗基罗传》、《托尔斯泰传》
    3. 斯坦福大学 Daphne Koller:《Probabilistic Graphical Models: Principles and Techniques》

高级项目管理培训 2017年6月14日

高级项目管理笔记
高级项目管理笔记

主讲老师谢新华不仅告诉方法,更重要的是告诉怎么思考。

我的总结:

  1. 项目管理的方法论:分割和反馈。分割借鉴微积分的思想:分而治之,并集中火力突破,团队要分成小组,计划分割成多个里程碑。反馈是要有修正,其实就是学习的过程,不断改进自己的计划,不断前进,其实和人生道路的前进如此一致。
  2. 项目管理对待团队的核心:信任,分享,共同进步。一个好的产品交付时,不仅仅是交付一个产品,更是交付一个团队,团队中的每个人都得到提高和进步,甚至快速成长,这就是项目经理创造出氛围的意义。
  3. 其中的一些值得注意的观点:
    • 大人取于义,小人趋于利
    • 沟通代表着尊重
    • 只有更好的团队,没有更好的个人
    • 做事情:分解成单独的小任务,全力以赴解决,然后再返回重新解决另外一个或者一层任务
    • 决策的核心是取舍
    • 高级的含义:Senior,工作经验,管理创新。
    • 成本:直接成本;间接成本(不去干的损失)。
    • 所有的项目都是临时的。
    • 开会最重要的是:立规!

礼悟会员课程:“艾比克英语”创始人陈序讲座 2019年11月

听完了这个,觉得这个经验值一个亿。自己总结一下:

1
2
3
4
5
6
7
8
9
10
11
12
任何事情基本上是这个路径:方法对了,重复+练习。

3-7岁是语音敏感期。
输入:最重要的是输入,而且要是:可理解输入。
量要够:700-1000小时,小学毕业前。
自然拼读:有一个前提,要有600个单词的词汇量。
拼音和英语不能同时教。

RAZ分级阅读+口语会话:精读,输入要可理解式输入,跟读。
精听:用口语会话(比如 "sight word tales")作为学习材料。
关于写:听+跟读是基础,最重要的。写之前要有:前写作训练。
关于泛听:四年级之前不要泛听,所以英文动画片可以不看,英文歌曲也不是好的学习材料。

叩响英语学习大门(九个方面)

  1. 第二语言的习得关键期

    • 语言敏感期:3-7岁第二语言的获得能力最高。
    • 早期英语三年级到四年级之前没有达到阅读水平,其科研水平和技能获得能力较差,并一生存在困惑(心理学研究结果)
  2. 高效学习方法理论依据

    • 输入最重要:输入要足够,且有以下注意点。(kelasheng教授的输入假说)
      • 可理解输入:要孩子明白什么意思,不明白意思就是无效输入
      • 输入量要足够:长期的3-12岁中国孩子跟踪,700-1000小时。如果达到这个水平,就是北京重点小学的英语水平前十名
    • 加拿大司特钠教授的输出假说:输入和输出之间有一个推动性的东西,建立一个桥梁:这个桥梁就是跟读
    • 总结该英语学习方法:
      • 可理解的输入:听+跟读
      • 量化的输入累计:700-1000小时。同声翻译:练习2000小时。
      • 学习小组:指导听和读的方法
  3. 学习材料的选择
    • 第二语言的版本
    • 阅读绘本:英语学习机构的问题在于怎么使用,量化方法。分为:美国系列、英语系列和台湾系列。但一定要是分级阅读绘本。
    • 儿歌不适合:孩子不理解。
    • 动画片:本身不错,但精听不适合,孩子听不懂
    • 自然拼读:必须有一个前提条件,至少600的单词词汇量。
    • 阅读课程:听说读写综合起来。选择的是:美国的RAZ阅读绘本。
  4. 磨耳朵方法
    • 精听是关键
      比如“this” “these” “they” 容易混淆:可以读的长点。
      带有腔调的句子,比如sorry? 先上后下的语调等。有浊音等方法。
      四年级之前不要泛听。
      精听要用口语会话作为材料,用阅读绘本作为材料不好。(台湾学者实验:差4-6倍)
    • 重复多听
    • 精听累计时间
  5. 练嘴皮方法(跟读)
    • 模仿语音语调
      跟读,反复对比。
      好处:往深的学之后,就体现出非常大的好处,比如老外的连读很多。
    • 跟读方法
      值得注意的是:需要重复,因为要累计时间。
    • 重复跟读
    • 跟读累计时间
  6. 学习效果
  7. 父母陪伴与坚持
    • 家长陪伴介入非常重要,特别是小学一年级的时候。(包括数学、钢琴等,比如朗朗的爸爸就比朗朗厉害)
    • 家长可以解释意思,家长可以解释,因为懂得98%的意思才有效,可懂式输入
    • 情绪:有回应和反馈,令孩子感到情感的力量,这个任何老师都做不到。
  8. 学习小组指导
    • 效果好,要有好老师+好方法。
    • 误区:回家要有好方法,不仅仅是跟好老师(学习方法好)学习。
    • 好学校:好老师+好孩子。好孩子是好家长培养出来的。
    • 坚持打卡!一对一指导
  9. 课程体验要求和方法

外国孩子参加英语补习ESL,就可以参加本地孩子的英语学习。

视频访谈 “美国奥数总教练罗博深访谈” 2019年10月18日

  • 什么人能到最顶尖的地方?
    有兴趣,并坚持把自己的时间都放进去的人。例如硅谷附近的一些公立学校可以很push,也可以上名校,但他们到不了最顶尖的地方。
  • 他认为教育中的方法
    • 自己主动选择
    • 管理好自己的时间
  • 学习奥数的用力点和方法
    做题10分钟,先思考20分钟,想不通再去看答案中的一个关键概念,相当于一个提示,再思考。

书《为何家会伤人》 2019年10月

视频课程《Learning How to Learn》2017年9月22日

学会如何学习:帮助你掌握复杂学科的强大智力工具
Learn how to learn?
美国加州大学圣地亚哥分校
Dr. Barbara Oakley 芭芭拉 奥克兰
如何封装信息?
记忆技巧
对付拖延症
掌握困难科目的方法

第一周 什么是学习

集中思维和发散思维

  • 番茄学习法:集中精力25分钟,休息5分钟

Robert Bilder博士就创造力与问题解决能力进行的访谈

  • 性格最终会归结为5个方面(OCEAN)

    1. 开放性 O
    2. 责任心 C
    3. 外向性 E
    4. 随和性 A 有时候坚持自己的观点的人,创造力可能更好
    5. 神经质 N
  • 人的一生都在平衡别人的评价和自己的看法。比如作家对读者的反馈

  • 高效学习
    1. 语言学习型
    2. 图像学习型
    3. 十的次方训练 powers of ten 从更高的角度看待问题,从问题中抽身出来,思考为什么要这么做,思考问题的大局时什么样的
    4. 睡觉:可能允许神经网络自行组装,导致发现解决问题的办法。我们的潜意识可能是无价之宝。

《八步半轻松写作》作者达芙妮 www.publicationcoach.com

  1. 写作障碍的斗争
  2. 专注模式:编辑大脑;发散模式:创造或写作模式。活跃,清醒的发散思维来驾驭写作时的大脑,方法:思维导图法。写作前不要提纲,要创造,创造新的链接。
  3. 记忆的价值被忽视了。一位伟大的诗人说过,去记住一首诗歌,因为它能帮助你更加深入的理解其中隐含的深意。
  4. 写作时最大的一个错误:边写边改。APP:writeordie.com “不写就死”

Benny Lewis 爱尔兰多语种达人 全职语言黑客 memorise.com 助记法 APP:Anki

  • 计划七千英里横穿美国,已经走了两千英里
  • 错误:炫耀。方法:热爱文化,和会这门语言的人交流
  • 孩子们学习语言的优势:不怕罚错误
  • 自我实现的预言:在西班牙21岁我告诉我自己,我年龄大到不能学语言了。Henry Ford 不管你认为你行还是不行,你都是对的。你学不会语言的真正原因:你太相信这些借口了。
  • Skype 练习基础对话;24小时听无线电广播

第二周 组块

  • 组块化是一种思维的跃进,根据意义将信息碎片拼接起来,而新的逻辑整体让组块更容易记忆,同时更容易让组块整合到所学内容的大框架下
  • 只需要记住一个组块:我要穿衣服
  • 小组块—>大组块 将复杂的想法,动作和反应组成一个单独的组块
  • 数学或者科学问题:关注步骤之间的联系
  • 建立组块的一些基本方法:
    • 集中精力对组块化的信息
    • 对建立组块的对象有基本的了解:只有在自己实际操作和完全掌握的情况下建立起的神经模型,你才能做得到
    • 获取背景知识:明白什么时候用它,融合到框架中的位置
  • 能力错觉:
    • Recall:回顾知识,看看自己记住了多少,来巩固练习,再一次努力记住其中的核心思想
      • 回顾知识:不是简单的复述,而是通过回顾这个过程加深理解
    • 思维导图:画出概念之间的联系
    • 划线和高亮要谨慎!在空白处写笔记总结关键概念是一种很好的办法
      • 自测:确保你是不是真的学会了。
    • 在常规学习场所以外回顾材料会帮助你加深对材料的理解
  • 是什么激励了你?
    • 学习自己感兴趣的东西很简单
    • 神经递质是一种可以影响神经元如何回应其他神经元的化学物质
      • acetylcholine 乙?胆碱:集中精力学习时
      • dopamine 多巴胺:当接受到一个毫无预期的奖励时,神经元分泌出多巴胺。快感缺乏:缺少多巴胺。严重缺乏将导致帕金森症,最终导致紧张症,完全缺乏行动的病症
      • serotonin 血清素:有力的影响你的社交生活,
      • 杏仁核
      • 情绪同样重要
  • 组块库的价值
    • 增加头脑中组块的数量,有价值的信息
    • 帮助理解新概念:物理里学到的概念和商学里的组块概念类似;语言学习和计算机编程类似
    • 建立组块式图书馆:训练大脑不仅要认出一个特定的概念,还要认出概念的类别,以便你能够自如的知晓如何快速解决或处理你遇到的问题
    • 理清头绪或解决问题的两种途径:
      • 一是顺序性的一步步推理;
      • 二是通过整体性的直觉
    • The Law of Serendipity:Lady Luck favors the one who tries.机遇定律:幸运女神会眷顾努力之人
    • 第一个问题或者概念进入心理图书馆,第二个,第三个会逐渐容易
  • 过度学习,抑制,思维定势和交叉
    • 过度学习时有意义的,帮助使得行为自动化。但在某一阶段学会了一个基本概念,在这段时间内不断巩固它,并不能加强你所期许的
    • 集中精力在学习的困难部分:刻意训练(deliberate practice),通常是好学生和优秀学生的差别所在
    • 思维定势(Einstellung,德语,原义为思想模式):最开始的一个想法可能会阻碍你发现更棒的主意或者解决方法
    • 一个错误:在学会游泳前跳入水中。盲目的做作业,不看书,不上课,不看在线课程
    • 掌握一门新学科:不仅要学习基础组块;更要学会如何选择和应用不同的组块
    • 最佳学习方法:练习如何在需要不同技术和策略的问题以及情形中来回转换,这就是所谓的交替学习:能够帮助学习更加深入。
    • 练习和重复:帮助建立稳固的神经模式;交替学习:能让大脑更具灵活性和创造性。这样才会开始独立思考,在一个学科内交替学习,在不同学科内交替学习,更容易在不同领域的组块间创造联系。
  • MIT诺曼教授访谈
    • MIT 工程院,大学和中学的一个差别:必须是团队的一员
    • 挫败感:保持自我平衡,意识到自己当前的选择是合理的;
    • 休息很重要,太努力会伤害大脑,休息的方法是放空,关闭大脑的意识思维,让潜意识工作起来。
    • 系统性的获取信息,看,说,拼写。用不同的学习方式充盈自己。
    • 给别人解释的时候说明哪些是你自己真的懂了
  • 斯考特 杨(Scott Young)堪称学习的终极探险家 一年时间自学完成了MIT计算机科学四年的全部课程,专注于一年的旅行 学习西班牙语,葡萄牙语,汉语和汉语
    • 在四个国家各待三个月
    • 尽力做,比如做习题,遇到困难再解决
    • 自我解释:查德费曼传记,遇到困难,仔细研究,白纸给别人解释,或者不能准确表达自己的想法时,就是你没理解的地方。
    • 重中之重,是不能自欺欺人。
    • 类比方法。数学和理学全部是纯抽象的概念:比喻的方法:伏特类比盛水的管道等。
    • 挖掘学习的积极性:一点点学习提高兴趣
    • 从失败中学习
    • 制定明确的目标:尝试麻省理工学院的挑战;三个月学习一门语言
    • 有效利用网络资源:MIT公开课内容很丰富;15美元去亚马逊买教材做习题;
    • 通过少学来学到更多?集中精力,加大强度,自我检验反馈。学韩语花3-4小时每天,识字卡片,和老师对话这种高强度活动。
  • 艾米 阿尔康(Amy Alkon) 电台主持,记者,博客作者
    • 将专注模式和发散模式运用到写作和学习中去:利用碎片时间寻找灵感

第三周 拖延症和记忆

  • 拖延和上瘾有类似之处:短暂的兴奋。拖延的长期影响:看上去只是拖延了一件非常小的事情,但是日积月累拖延就会成为习惯,虽然看上去也可以很健康,但长期影响呢?
  • 僵尸意识无处不在:第一次倒车,组块的形成和习惯有关,习惯是我们的节能机制,节省能量。四个阶段:
    • 1.信号 Cue
    • 2.惯式 Routine
    • 3.奖励 Reward
    • 4.坚信 Belief
  • 利用习惯的神奇力量来避免拖延
    • 克服一个习惯的诀窍就是改变你对某个信号的反应,番茄工作法十分有效
    • 重置旧习惯的关键是制订一个计划
    • 计划完成时给自己一些奖励
    • 相信新的习惯能够奏效这一信念可以让你坚持下去
  • 应对生活和学习
    • 结果导向:记下本周重点工作列表;睡前在前一晚写下任务清单,征召僵尸帮你完成第二天列表的项目
    • 过程导向:在列表中穿插一些锻炼身体的任务,比如打扫卫生。
    • 完成目标的时间:下午5点之前。学习专家之一卡尔纽波特(Cal Newport)基本上他的整个学生生涯都在5点之前结束学习的,最后从MIT获得博士学位。
    • 一醒来就完成至少一个番茄时间:尽量先开始最重要且最讨厌的工作
  • 小结
    • Keep a planner journal 日积月累坚持
    • Commit yourself to certain routines and tasks each day 每天规定一些日常和任务
    • Delay rewards until you finish the task 有意识的把奖励留到完成任务之后
    • Watch for procrastination cues 留意诱发拖延的信号
    • Gain trust in your new system 对你的新体系产生依赖(尽力待在一个没有拖延诱发信号的新环境中,比如图书馆中的一个安静角落)
    • Have backup plans for when you still procrastinate 制订备用计划
    • Eat your frogs first 每天先处理困难的工作
  • 深入探索记忆
    • 出色的视觉体系和独特的神经系统有助于构建部分长时记忆
    • 大脑天生就擅长记忆不同地点的概况
    • 充分发挥视觉和空间记忆能力,你的记忆潜能就能可以得到极大提高
    • 祖先擅长记忆 “东西在哪” “外观如何”
    • 图像记忆与右脑的视觉空间中枢直接相连(例如f-flying = m-mule a-*)
    • 索引卡很有用:正面是索引,背面是具体内容,通过索引联想具体内容,多个卡片可以打乱,交叉记忆
    • 速记卡软件Anki
  • 什么是长期记忆(无笔记)

  • 创建有意义的小组和记忆宫殿的技巧(无笔记)
    -

  • 记忆总结
    • 学会更有原则并不失创造性的使用自己的记忆,这可以帮助集中注意力
    • 长时记忆:像存储仓库,将练习分成几天进行,有利于更好的强化记忆
    • 工作记忆:劣质黑板,上面的字迹难以久留
    • 高度视觉化和空间化的记忆系统:画面生动有趣,看,感受,倾听,嗅觉去体会你要记住的东西,连续数日的重复大有裨益
    • 创造有意义的意群来简化材料 把数字与年份或是其他你熟悉的东西联系起来
    • 宫殿记忆法:把记忆画面放在一个熟悉的场景中,有助于加强可视化记忆系统
    • 提供有效的方式去分类记忆,通过有一的分类和缩写,可以简化并将想要学习的内容组块化
    • 通过背诵你已经理解的材料,可以彻底的消化材料
    • 要巩固你的精神图书馆,你需要真正的掌握材料

ORID学习和实践 2018年06月28日

ORID是什么

  • Objective事实。 客观事实层次,就是你看到、听到、闻到、尝到、摸到,感触到的一切。
  • Reflective感受。 情绪感觉层次,就是你的喜怒哀乐,开心、兴奋、失望、恐惧、难受香菇等等。
  • Interpretive想法。 诠释层次, 就是你自己的理解,反思。
  • Decisional决定。 决定层次,就是你接下来的打算

ORID有什么用

ORID 以前主要用于会议讨论、培训。通过四个层次循序渐进的提问,引导回答者从事情的表象进行深层次的思    考,并最终作出行为的决策。  Xdite老师说,自从使用了ORID进行每日反思,自己再也不会犯以前那些一犯再犯的错误了,进步神速。

模版

Objective 客观

  • 关于今天的课程, 你记得什么?
  • 完成了什么?

Reflective 感受

  • 你要如何形容今天的情绪
  • 今天的高峰是什么?
  • 今天的低点是什么?

Interpretive 解释反思

  • 我们今天学到了什么?
  • 今天一个重要的领悟是什么?

Decisional 决定行动

  • 我们会如何用一句话形容今天的工作
  • 有哪些工作需要明天继续努力?

四个层次,层层递进,条理层次。
总的来说,就是描述:今天学习的状况,分享你的感受,接着反思,解释你学习的内容意义,最后做出决定,明天该如何改进学习。

ORID 升级版

Objective :全盘式的彻底扫描,

  • 有哪些人、事、物
  • 哪些场景让你印象深刻
  • 你观察到什么 ……

Reflective : 从上一层次扫描到的档案,提取自己的想法感受、有趣的,好玩的,怪异的,进一步整理自己的感觉

  • 哪些内容什么让你觉得惊讶、意外?有趣好笑?
  • 哪些内容让你感受鼓舞?很受感动?
  • 什么时候让你沮丧?让你特别难过?
  • 你的直觉反应是什么?
  • 你记得事情怎么发生的?
  • 事情发生时你的感想是什么? ……

Interpretive : 提取我们的感官和反应的——意义和重要性。同时可以提出问题,进一步去思考,进一步获得自己内心深处的观点及想法,尝试从不同的角度看待问题。

  • 有什么关键的转折点吗?
  • 自己到底在表达些什么?
  • 得到了什么新的知识?
  • 这里最有意义的是什么?
  • 为什么对我们很重要?

Decisional ——从众多想法萃取出一个结论, 最后呢?所以呢?打算怎么做?可以抛出结论式问题,或给一句话当作结论。促进自己内化或付诸行动。

  • 解答在哪里?
  • 明天,你会有什么不同行动?
  • 有什么要改变的?
  • 一句话总结要解决的问题
  • 总结提出的解法是什么
  • 要改变的行动是为了什么

实践

每天进行ORID讨论,可以自己进行,也可以和麦苗儿妈,麦苗儿一起进行,并记录下来。

效果和体会

参考

  1. 如何使用ORID总结学习,加快进步

幽门螺旋杆菌治疗 2016年10月21日

四联疗法 PPI+抗生素

  1. 阿莫西林 或青霉素类药物
  2. 克拉霉素 甲硝唑 或奥硝唑(效果没有甲硝唑理想)(甲硝唑的耐药性很高,最好再加用一个胶体果胶铋)
  3. 胶体果胶铋(保护胃黏膜)
  4. 奥美拉唑 (PPI,PPI就是质子泵抑制剂,主要用于抑制胃酸分泌的。)
  5. 雷贝拉唑钠 (抑酸剂在根除方案中起重要作用:PPI抑酸作用受药物作用强度、宿主参与PPI代谢的CYP2C19基因多态性等影响。选择作用稳定、疗效高、受CYP2C19基因多态性影响较小的PPI,如埃索美拉唑[54]、雷贝拉唑,可提高根除率[55])
    (使用前首先排除存在癌症的可能性;服用期间,定期进行血液检查及血液生化学如肝酶检查,发现异常停止用药,及时处理。肝功能损伤者慎用)
  • 早晨餐前
    一次1粒 1粒20mg 一天1次

  • 餐前:
    半小时 胶体果胶铋 1-2粒 每粒100mg 一日3次

  • 餐后:
    半小时 阿莫西林 1-2片 每片375mg,一日3次 (不超过14天)

  • 晚上睡觉前:

    奥美拉唑 一片 20mg (排除溃疡性胃癌的可能,因为会减轻其症状,耽误治疗)

    克拉霉素分散片 一片250mg 每12小时一次 连续服用 6-14日

Notice

1
2
3
4
此外,建议饮食规律、少食多餐;应细嚼慢咽,忌暴饮暴食;避免刺激性食物,忌烟戒酒、少饮浓茶咖啡及进食辛辣、过热和
粗糙食物;胃酸过低和有胆汁反流者,宜多吃瘦肉、禽肉、鱼、奶类等高蛋白低脂肪饮食;避免服用对胃有刺激性的药物
(如水杨酸钠、消炎痛、保泰松和阿斯匹林等);缓解精神紧张,保持情绪乐观,从而提高免疫功能和增强抗病能力;
注意劳逸结合,适当锻炼身体。

references

  1. 幽门螺杆菌感染

癌症相关 2013-08-04 12:00:00

updated: 2013-08-04 12:00:00


癌症相关的知识。

饮食注意

在美国,每25人中就有1人曾经或者正在患有癌症,不过接近7成的美国癌症患者确诊后都能活过5年。中国的数据不清楚,但是可以肯定的是,癌症病人也不少,确诊的癌症患者存活率很可能低于美国。
一旦确诊癌症,除了接受标准的治疗(比如手术及放化疗)之外,非常多的癌症患者会拼命寻找各种办法,包括饮食、保健品或运动锻炼等办法,希望癌症不会转移复发,希望自己健康,别英年早逝。很多人会有许多疑问,比如:我应该吃些什么?怎么吃?怎么运动锻炼?怎么保持体重?要不要吃保健品?要不要吃中药?估计许多医生也被问及这些问题,但是其实大多数医生(包括肿瘤科医生)并不十分关注,经常随便应付了事。目前也有非常多的对癌症患者的饮食和运动建议(来源自网络、书籍或家人朋友建议),可惜目前绝大多数建议并未被证实有效。
2012年美国医师协会找到了一群营养、运动及肿瘤生存方面的专家,综合评判了几乎所有的可靠的癌症相关的营养运动方面的临床研究,制定了针对癌症患者的营养及运动指南。我认为,这些指南是美国人民无私的拿非常多的资金(保守估计几十亿美元)及人力研究出来的结果,虽然人种不同,但也很有价值,值得学习。
首先,癌症患者必须明白:癌症除了有转移复发的风险,出现心血管疾病、骨质疏松及第二原发癌的风险也增加。合适的运动锻炼、饮食及体重管理可以减轻癌症治疗相关不良反应,改善患者生理功能、减轻乏力并改善生活质量,最重要的是,可以显著减少肿瘤的转移复发,尤其是在乳腺癌及肠癌患者,甚至可能减少高达40-50%的死亡风险。因此非常重要。

具体措施:

  1. 肿瘤患者的运动锻炼
    已经至少有20篇以上的前瞻观察性研究已经显示运动锻炼的患者有更低的肿瘤复发风险,目前的证据鼓励患者尽可能早的进行安全的运动锻炼,可以增加骨骼健康、肌肉强度,减少心血管疾病及骨质疏松风险,减少第二原发癌风险,即使在化疗及放疗过程中也可以依据体力状况进行低至中等强度的运动锻炼。
    运动方式如下:参考ACSM(美国运动医学联盟)2008年制定的美国运动指南,该指南建议患者必须并且尽快进行正常的运动锻炼:19到64岁之间的患者应至少每周进行150分钟以上的中等强度运动或者75分钟以上的高强度有氧运动,或是两者结合。每次运动持续的时间至少10分钟以上,最好持续于整周。成人应该进行力量训练,尽量包括所有主要的肌肉,每周至少2天。65岁以上的人群如果有能力也尽量遵循上述方式,如果慢性疾病限制运动,可以自行调整。
    什么是中等强度运动及高强度运动?
    中等强度运动(运动期间可以讲话,不能唱歌):在平地或者轻度倾斜的地面骑自行车,松土和修剪树木等园艺工作,少跑动的玩篮球、排球等,双打网球,快步走路,跳舞,水中的有氧运动等。
    高强度运动 (运动期间只能说几个简单的字):有氧运动舞蹈,骑车速度超过16公里/小时,快速跳舞,重度的体力运动(挖土和掘土),骑车上山,跳绳,空手道等,竞走、慢跑和快跑, 跑动很多的玩篮球或足球,快速游泳,单打网球。

2.饮食
AHA(美国心脏病协会)推荐了成人的营养构成食谱:脂肪:25-35%的热量,碳水化合物50-60%,蛋白10-35%的热量,最少0.8g/KG。
我推荐患者饮食如下:
禁止吸烟,限制饮酒。
低脂饮食:少吃油炸食品及油腻的食物。
少吃红肉:红肉主要是指猪肉及牛羊肉。
推荐富含omega-3脂肪酸的食物(比如鱼和坚果)。
推荐瘦肉、不带皮的家禽,蛋类,无脂或低脂牛奶产品,坚果,种子及豆类。
推荐全谷物饮食:富含多种复合物及抗氧化物,具有激素及抗氧化作用,影响脂类代谢,减少肿瘤发生及进展的风险,减少心血管疾病的风险。
推荐蔬菜及水果:蔬菜和水果含有很多营养成分有可能抑制肿瘤进展,例如必要的维生素及微量元素,生物植物化学成分及纤维。蔬菜水果含有热量较低,多食用有助于控制体重。推荐纯天然果汁及十字花科的蔬菜。
高糖饮食并不会增加肿瘤发生及进展。但是过多食用会引起其它营养元素摄入减少并引起体重增加。因此,建议限制使用含有过多糖的食物。
饮食补充剂(或称为保健品):包括各种维生素、微量元素、草药/植物、氨基酸等。比如:叶酸、硒、维生素C。必须谨慎使用,在使用之前,最好检测是否缺乏,一般的癌症患者并不建议使用饮食补充剂,尽量从食物中获取各种营养。
总结:禁烟限酒,推荐低脂、高蛋白及高蔬菜水果饮食,推荐全谷物饮食,推荐多食用鱼类及坚果,不建议食用过多的高糖、高脂及红肉。推荐植物油,不推荐动物油。保健品及中药需要非常谨慎的使用。

3.体重管理
达到及维持健康的体重是主要的目标。
健康体重,定义为BMI 18.5kg/m2至25Kg/m2。BMI定义:身高(公斤)除以体重(米)的平方。
建议患者每周测2次空腹时体重,即晨起后的体重,并计算BMI指数,然后调整饮食和运动量。

四、其它注意事项:

  1. 癌症患者的家庭成员也有较高的风险患有肿瘤,也鼓励遵从ACS的营养及运动指南,以预防癌症。
  2. 严重疲乏的时候不适合运动,体重进行性下降时不适合高强度运动。
  3. 活动障碍的患者,低强度的活动比较合适,比如伸展动作和缓慢的行走,并可缓慢增加强度。对于老年患者或是存在骨转移、骨质疏松、严重的关节炎及外周神经疾病的患者,必须更加小心注意平衡及安全
  4. 严重的贫血时患者应推迟锻炼,仅仅做些日常生活中的活动,直至贫血改善。
  5. 存在免疫缺陷时应当避免去健身馆或是公共泳池,直到白细胞计数恢复正常范围。完成骨髓移植的患者不应暴露于公众人群,至少要移植1年以后开始。
  6. 放疗过程中应当避免接触氯,比如禁止在游泳池游泳。
  7. 置有体内导管和营养管时应当不接触池塘、湖水及海水或其他有细菌的物质,以避免感染,导管相关肌肉应当避免抗阻力运动及剧烈运动,以免导管脱出。
  8. 合并多种或未受控制的并发症时,建议咨询医生后进行运动锻炼。

XELOX方案

1、 给药方案及时间安排:

1
2
3
4
5
奥沙利铂: 静脉滴注3小时,第1天;

卡培他滨: 口服,2次/天,第1~14天;

上述方案每3周重复1次。

2、 住出院程序:

1
2
3
4
5
患者以上一次化疗开始日期为准,向后推移3周,即为初步估计的下次化疗开始日期。在此日期之前4天,门诊就诊复查血常规,将化验结果送返病房,预约住院。病房医师会尽量为您按时安排入院化疗。

入院后当天,患者应空腹办理住院手续。入院后再次复查血常规及肝肾功能,若结果均正常,于住院当天下午可行化疗治疗。化疗第1天应严格遵守住院观察原则,不得请假回家。若患者无明显不适症状,可于第2日办理出院手续。因卡培他滨不良反应极小,患者可在家中服用。

若患者入院当天血液检查结果明显异常,如白细胞明显下降或转氨酶升高,则需要行升白治疗或保肝治疗。待治疗后复查白细胞和肝功能,结果回报正常后,方开始本次化疗。

3、 院外注意事项:

1
2
3
4
5
6
7
8
9
由于奥沙利铂报告的不良反应多有骨髓抑制、消化道反应、神经毒性反应,卡培他滨不良反应多为消化道症状及皮肤症状,故患者化疗间期在院外应密切关注病情变化,如有异常,及时就医。

a) 骨髓抑制:患者化疗间期时应密切关注白细胞波动情况。建议患者出院后每隔3~4日复查血常规,若发现白细胞低于4.0X109/L,或中心粒细胞低于1.5X109/L,应及时就诊,给予升白治疗。同时避免接触公共场所,以免发生严重全身感染。

b) 胃肠道反应:患者化疗期间可能出现恶心、呕吐等胃肠道反应,因此化疗间期建议患者饮食规律、清淡,以防出现恶心、呕吐等不适症状。若出现严重呕吐症状应及时就诊予补液治疗。

c) 神经毒性反应:主要表现为肢体末端感觉障碍或/和感觉异常。伴或不伴有痛性痉挛,通常此症状遇冷会激发。据报告,奥沙利铂所致的神经毒性发生率达85-95%。在治疗间歇期,症状通常会减轻,但随着治疗周期的增加,症状也会逐渐加重。若患者症状严重,且持续时间较长,应在下一次化疗时报告医师。医师会通过患者的具体情况,决定减量或暂停使用奥沙利铂。

d) 皮肤症状:约半数患者在服药期间出现皮肤症状,如麻木、感觉迟钝、感觉异常、麻刺感、无痛感或疼痛感,皮肤肿胀或红斑,脱屑、水泡或严重的疼痛。轻度不适患者可不予处理,但若患者皮肤严重,应在下一次化疗时报告医师。医师会通过患者的具体情况,决定是否暂时停用卡培他滨。

参考

  1. 北京肿瘤医院苏向前
  2. 肠癌
  3. 挂号网站
  4. 水木咨询

健康相关

看完吴清忠(《人体使用手册》作者)和梁冬(可搜索腾讯视频)的对话节目,有几点感受:

  1. 晚睡导致肝火旺,失眠就是睡觉晚导致的,睡觉晚导致肝火旺,互为因果,因此治疗失眠早睡即可,妈妈应该有体会。
  2. 慢性病都是长期生活习惯积累而成,得病的时候,身体的趋势是螺旋下降的,而养病的时候,需要做的是不断改善自己的习惯,调整自己的饮食和睡眠等等。
  3. 养病的时候,先提高自己的某一个器官,比如肾脏,然后再拉升水平最低的那个器官,所以生病一月,养病一年。(其实这个类比到处理人与人的关系,人与职业的关系,甚至投资理财都是这个道理)
  4. 有时候生小病是好事,解释是这样的:有时候我们没有能力去生病了,比如八个人吃东西,七个人肠胃都拉了,一个人不拉,不是这个人身体好,而是那个人没有能力生病了。
    这让我想到,幸福的反面不是痛苦,而是冷漠,我们能感受幸福说明很好,当我们对事情都没有兴趣,失去了心力,冷漠麻木的时候,我们的精神就生病了,需要慢慢养,改善自己的环境,调整自己的习惯,坚持下来,短时间不一定有效果,但长期下来就会发现进步很多了。
  5. 春天会有过敏性鼻炎,春天是治不好的,只有在下一个冬天注意保暖,才能治好。因为生病是有一定的时间长度的。

2019-04-12
吴清忠:长寿时代,健康快乐活到老

  1. 慢性病是一种生意,疾病不是这样治疗的,慢性病终身服药只是药厂的目标。
  2. 现代医学的问题:慢性病一直没有解决
  3. 痛风的解决:痛风是尿酸结晶,固体导致的。方法是:先把结晶变成液体(水肿),再把水排掉即可(这个药将时间减少到一天,不然自愈的情况就是需要躺几天,现在的问题是药把水排掉,结晶留下了,就会留下很大的结晶。这种治疗的真正意义是创造更多的治疗。问题是:水肿的意义:就是身体自愈的过程,需要产生水肿再将结晶清除掉,比如虾不让吃,也有可能这个虾才是治愈你疾病的药)
  4. 从人体设计者的角度考虑问题(中医速度),中医是治因不治果,人的生病一般是生活方式的问题,所以治疗方法一定是简单的(这点我认同,需要找到问题的原因,从根处解决)。
  5. 养生:就是进行自愈
  6. 很多药都是 阻止身体的自愈过程,所以这些药都是不对的。比如打喷嚏是身体自愈:排除寒气,而吃药就是不让人打喷嚏,而寒气就会留下来。
  7. 年轻人就要开始规划自己的退休时间。我们学习二十年为了三十年的工作,而我们退休后的时间呢?活到90岁,60岁眼睛就坏了,所以年轻时候就要注意身体,为退休人生的第二段生命做准备。
  8. 出院:是因为你对医院的贡献比较小,而不是因为你康复了。
  9. 古代人生病的问题:食物问题。我们现代人生病的问题:作息生活发生了改变,不睡觉的病:只有通过睡觉才能补回来。
  10. 根本解决疾病的方法:从人体设计的角度出发,怎么设计自己的身体,才能保证身体的健康。
  11. 中医最大的贡献:对器官的分类:有经络和无经络的器官。为什么没有一个经络是和大脑有关,因为大脑是最重要的器官,身体的维修:内部维修,经络就是用于内部维修的,没有经络的器官说明那个器官会生病,但不是那个器官的原因,病因一定在有经络的器官。比如:眼睛没有经络,而通过眼睛的有两条经络:小肠经,膀胱经,近视眼、黄斑脱落等就是前面的供给不够:小肠经的问题,青光眼则是内部的垃圾排不出去,膀胱经的问题。感冒:大便就不通,如果大便通了,说明到感冒末期了,大肠和肺是一起变化的。
  12. 经络是治疗脏腑的通道。
  13. 身体诊断:中医很简单,有两个指标:经络的平衡,有经络诊断仪器已基本研发出来。
  14. (三招:睡眠,敲胆经,按摩心包经。造血:睡觉+敲胆经),睡眠非常重要。近视眼和心脏有关。血氧充足才能启动修复机制。
    推荐书目:洛克菲洛医学:讲医学发展的历史