《小狗钱钱》by Bodo Schafer
缘起在《无人知晓》第三期播客《孟岩对话张奔斗》中,奔斗老师提到在投资相关的书籍挑选上,他取了多个书单中都推荐的那部分。所以我就写了这个小程序去统计推荐率比较高的书籍。在16篇推荐投资书籍的文章中,排名前几的有这些: 书名 推荐分/16 小狗钱钱 11 聪明的投资者 9 富爸爸,穷爸爸 9 漫步华尔街 8 证券分析 6 股票作手回忆录 6 … … 正如你所见,我们在网上搜到的大部分投资理财书籍相关文章都会推荐《小狗钱钱》。 《小狗钱钱》还有第二册,与第一册培养财商不一样,第二册着重于待人接物上。 读书笔记《小狗钱钱》讲述了一个小女孩吉娅和她的小狗钱钱的故事。一次偶然的情况下,吉娅救下了受伤的小狗钱钱,可是,正是这只小狗,改变了吉娅和她家人们的生活。吉娅家刚刚换完房子,爸爸的生意却突然遇冷,全家经济变得紧张了,吉娅的一些愿望也变得更加遥远了。在钱钱的帮助下,吉娅订立自己的梦想相册和梦想储蓄罐,利用空余时间工作增加零花钱收入。同时在金先生、陶穆太太等人的帮助下学习了越来越多的理财知识。最终呢,吉娅达成了自己的愿望,家里的财务问题也得倒了解 ...
Hexo 资源路径优化
What’s hexo? Hexo is a fast, simple and powerful blog framework. You write posts in Markdown (or other markup languages) and Hexo generates static files with a beautiful theme in seconds. 问题在开始用 Hexo 写博客之后,就一直被它引用图片的方式所困扰。就是必须以 source 为根目录的方式引用,比方说: 1234567.├── source│ ├── _posts│ │ └── helloworld.md│ └── img│ └── cover.jpg. 在 helloworld.md 里需要通过 ![alt txt](/img/cover.jpg) 来引用 cover.jpg,否则编译出的 html 就无法显示图片。而在编辑器内我更习惯 ../img/cover.jpg 的方式饮用图片。 Hexo 的引用方式会导致编辑器内预览时无法显示图片,而且这种引用方式也 ...
《MapReduce: Simplified Data Processing on Large Clusters》
什么是 MapReduceMapReduce 是一种通用的编程模型,应用并行在计算机集群上完成大数据处理/计算任务。Google 在 2003 年发表了 《MapReduce: Simplified Data Processing on Large Clusters》,向业界介绍了 MapReduce 编程模型,MapReduce 与 GFS(MIT 6.824 Lec 3)、BigTable 并称为 Google 的“三驾马车”,支撑了 Google 众多计算任务,比如分词、倒排索引等。 MapReduce 出现之前,这些计算任务都需要处理大量输入、计算节点管理以及容错,处理这些问题的代码反而比实际计算任务的更多,即使这些计算操作通常并不复杂。受 Lisp 等函数式编程语言的 map 和 reduce 原语启发,Google 想到了将计算任务整体划分成 map 和reduce 两个阶段,简化计算模型,同时对计算逻辑隐藏并行、容错、复杂均衡等的复杂性。 不过 Google 并没有开源他们的 MapReduce 实现,幸运的是 Hadoop 项目提供了 MapReduce 的开 ...
Go Plugin 学习
最近在做 MIT 6.824 Lab 1 的时候发现提供的代码中用到了 Go 的插件系统,所以就趁着这个机会简单学习了一下 Go plugin package。 静态链接库与动态链接库写过 C/C++ 的应该对这个非常熟悉,不是编译时遇到 ld fail,就是运行时遇到 dyld fail,ld 和 dyld 就分别对应了静态链接和动态链接过程。那静态链接与动态链接有什么差异,各自又有什么优缺点呢? 首先不管是静态链接库还是动态链接库,它们都是由程序依赖的外部函数、变量(统称 symbol)组成。静态链接时,链接器(ld)将程序和静态库打包到一个可执行文件,同时将 symbol 解析成对应的地址(address),这个可执行文件可以单独运行;相反地,动态链接就是不把动态库和程序打包成一个可执行文件,将 symbol 的解析延迟到运行时,再由 dyld 完成 symbol 到 address 的解析,不过需要提供动态库才可以运行程序。 对应的优缺点也非常明显了,首先静态链接会把静态库和程序打包成一个可执行文件,产物体积相对较大,且相同的静态库代码不同进程之间无法共享,内存占用较 ...
《你尽力了吗?》by scz
前段时间刷即刻刷到即友分享这篇文章(即刻现在依然是我发现新鲜有趣信息的主要来源),”你尽力了吗?“在 20 年后的今天依然能够直击人心。 下面是帖子内容 发信人: cloudsky (小四), 信区: Security标 题: 你尽力了吗发信站: 武汉白云黄鹤站 (Mon Apr 17 19:52:54 2000), 站内信件 很多人问如何入门如何入门,我却不知道要问的是入什么门。很少把某些好文章耐心从头看完,我这次就深有体会。比如袁哥的 sniffer 原理,一直以为自己对 sniffer 原理很清楚的,所以也就不曾仔细看过袁哥的这篇。后来有天晚上和袁哥讨论,如何通过端口读写直接获取 mac 地址,为什么 antisniff 可以获得真正的 mac 地址,而不受更改mac地址技术的影响,如何在 linux 下获得真正的 mac 地址。我一直对 linux 下的端口读写心存疑虑,总觉得在保护模式下的端口都做了内存映象等等。结果袁哥问了我一句,你仔细看我写的文章没有,我楞,最近因为要印刷月刊,我整理以前的很多文档,被迫认真过滤它们,才发现袁哥的文章让我又有新认识。 再后来整理到 tt ...
mmap 学习
mmap 是什么mmap 是 Unix/Linux 提供的系统调用,所以 RTFM(read the fucking manpage): allocate memory, or map files or devices into memory. 介绍非常简单,就是分配一块内存或将文件或设备映射到一块内存中。不管是分配内存还是进行文件映射,执行完 mmap 后都会得到一个指向一块内存(虚拟地址空间)的指针,通过这个指针,能够以直接访问内存的方式读写文件或设备。 mmap 怎么用mmap 的函数声明是: 1void mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset) 函数执行成功返回指向内存的指针,失败则返回 MAP_FAILED (((void *)-1))。 addr:用于确定映射内存区域的起始地址,需要是页大小的整数倍,不过实际返回的指针指向并不一定等于该值,具体的行为还和是否在 flags 中指定 MAP_FIXED 相关: addr flags 说明 0 f ...
财务分析与决策
清华大学肖星教授财务公开课笔记。 财务报表公司三项活动:经营、投资、融资。 资产负债表 资产 = 负债 + 权益权益 = 资产 - 负债负债 = 资产 - 权益 :在经济学概念上不成立,去除股东权益后公司变成债权人的了。 资产与费用的异同:同:都需要付出一笔资金。异:如果在未来可以换来一个有用的东西,就是资产,如果什么都没留下,则是费用。 待摊费用:随着时间流逝或经营活动,逐渐发生的费用。 待摊费用很有意思。 流动资产与固定资产的区别在于变现的能力。 固定资产要满足使用时间长、价值高这两项条件。 员工/人的所有权不归公司所有,所以也无法体现在报表里,否则就是奴隶制了。 棒球俱乐部会花巨额引入球星,这项费用就是一个待摊费用,这时人,更准确地是人的某项所有权,就变成了一项资产体现在报表里。 资产的价值购买成本/历史成本 or 当前市价/公允价值? 历史成本原则:如果资产升值了,忽略,如果减值,则扣除减值部分。 公允价值原则:当市场价格特别客观(交易活跃)时,使用当前市价记录,典型资产有股票、债券等金融 ...
《国富论》读书笔记
作品信息作者:亚当·斯密阅读平台:微信读书豆瓣链接:https://book.douban.com/subject/3725829 微信读书搜索“国富论”,排名第一结果的电子书章节划分有些问题,可以选择排名第二的搜索结果。 简介 摘抄于微信读书 《国富论》又名《国民财富的性质和原因的研究》。 摘要&笔记全书共分5篇,每一篇都能拿出来单独成书。 第一篇:论增进劳动生产力的因素,及分配劳动生产物给各个阶层的自然顺序 共12章,已读7章 分工分工出现以后,劳动生产力得到了极大的增进。 🌰 :即使是扣针这种简单的商品,也需要比较复杂的工序:抽丝、拉直、切截、削尖、打磨等,大大小小18道工序。如果由一个人完成所有工序,可能一天一枚扣针生产不出来。 富裕国家的有着较高的产业和劳动生产力的增进水平,各行各业的分工水平也相对比较高。农业因季节、天气的原因,不可能形成完全的分工,所以农业的劳动生产力增进总是跟不上制造业(农村人口不可能靠耕种过上小康生活)。 分工能增进劳动生产力的原因有三: 劳动者因为专业而掌握了技巧。 免除了由一种工作转到另一种工作所带来的时间损失(时间、地点、 ...
AppStartup 源码阅读
App Startup 介绍&使用官方介绍 App Startup 是一个启动期间优化组件/库初始化的库: Streamline startup sequences and explicitly set the order of initialization. Instead of defining separate content providers for each component you need to initialize, App Startup allows you to define component initializers that share a single content provider. This can significantly improve app startup time. 介绍里提到了 ContentProvider,ContentProvider 会在应用启动(Application#onCreate 之前)初始化并回调 onCreate。基于此,很多三方库就会自定义 ContentProvider 并在 onCre ...
Java SPI 原理
SPISPI(Service Provider Interface) 是 JDK 6(1.6)引入的一种服务发现机制,这里 Service 通常是一个 interface 或 class,它定义了用户所能访问的接口; Provider 通常是 Service 实现类、子类或者定义了 provider 静态方法的任意类(JDK 9)。 面向对象程序设计中,推荐模块之间基于接口,而不是具体的实现类进行交互,避免暴露具体的实现类及其装配过程(SOLID原则)。但如果只从程序设计角度看,还不足以支撑 JDK 引入 SPI,毕竟面向接口编程也不是什么难事,况且 SPI 还会有反射带来的性能损耗。分析 JDK 内置 SPI 的原因,可以从 JDK 内置的支持 SPI 的包去分析: Driver:JDBC 4.0 开始支持 SPI,用户无需手动调用 Class.forName("oracle.jdbc.driver.OracleDriver") 注册驱动。 PersistenceProvider:JPA 服务接口。 LocaleServiceProvider:获取地区相关信息 ...