首页
归档
友情链接
关于
Search
1
在wsl2中安装archlinux
136 阅读
2
nvim番外之将配置的插件管理器更新为lazy
98 阅读
3
2018总结与2019规划
69 阅读
4
从零开始配置 vim(15)——状态栏配置
58 阅读
5
PDF标准详解(五)——图形状态
46 阅读
软件与环境配置
博客搭建
从0开始配置vim
Vim 从嫌弃到依赖
linux
Emacs
MySQL
Git与Github
AndroidStudio
cmake
读书笔记
编程
PDF 标准
从0自制解释器
qt
C/C++语言
Windows 编程
Python
Java
算法与数据结构
PE结构
Thinking
FIRE
菜谱
登录
Search
标签搜索
c++
c
学习笔记
windows
文本操作术
编辑器
NeoVim
Vim
win32
VimScript
emacs
linux
elisp
文本编辑器
Java
读书笔记
反汇编
OLEDB
数据库编程
数据结构
Masimaro
累计撰写
331
篇文章
累计收到
31
条评论
首页
栏目
软件与环境配置
博客搭建
从0开始配置vim
Vim 从嫌弃到依赖
linux
Emacs
MySQL
Git与Github
AndroidStudio
cmake
读书笔记
编程
PDF 标准
从0自制解释器
qt
C/C++语言
Windows 编程
Python
Java
算法与数据结构
PE结构
Thinking
FIRE
菜谱
页面
归档
友情链接
关于
搜索到
331
篇与
的结果
2025-10-08
读《哈利布朗永久投资组合》
作为一个普通的尝试投资的新手,我希望不用择时买入或者卖出、不用预测经济的走势,也不用看公司财报,搜集公司信息,不用尝试理解企业经营也能做到跑赢通胀?有没有一种投资方式对投资者没有什么要求只要按计划执行就可以获得不错的收益,跑赢通胀呢?还真有这种方式,这就是哈利布朗上世纪提出的永久投资组合。这部书详细介绍了永久投资组合的逻辑以及各种资产是如何应对不同的经济状况,更好的是书中也提供了具体的实践方式甚至推荐了一些投资品种,这对于想实践永久投资组合的新手小白来说是一本即介绍理论,又给出实际操作的好书永久投资组合好就好在一不用择时、二不用预测未来、三对于任何经济状况都有对应的资产来获取收益。理论简介永久投资组合简单来说就是将资产分为:25%的现金、25%的黄金、25%的债券和25%的股票。它们是怎么有机的组合以达到在各个经济状况下都能有收益呢?哈利布朗认为经济状况可以分为:繁荣期、衰退期、通货膨胀和通货紧缩这几个时期。在经济的各个时期,总有资产会上涨或者下跌,也就是我们常说的东边不亮西边亮。在各种经济状况下利好的资产如下表所示经济状况利好资产繁荣期股票+债券衰退期现金通货膨胀黄金通货紧缩现金+债券开始时按照每种25%的比例买入各种资产,随着时间的推移各种资产的涨跌幅度不同最终会偏离这个比例,当我们进行再平衡时就是在卖出高估的品种,买入低估品种,最终随着时间的推移,经济在这四种情况下不断的循环,我们也间接的不断低买高卖,最终获得不错的收益根据回测美国市场,永久投资组合在过去的40年间获得了年均9%以上的收益,书中没有提到最大回撤多少,但是比各种单一资产的回撤要低得多。购买各种资产股票对于股票来说,因为永久投资组合不对未来做预测仅仅期望获取股票市场的平均收益,那么投资股票市场就是买入能代表整个股市的指数基金。对于美国市场来说,可以购买纳斯达克指数或者标普500指数。对于国内的投资者我认为可以购买沪深300或者中证500指数。是否要购买能代表其他国家股市的指数基金呢?作者认为美国股票市场包括那些约占世界经济产值一半的公司,也就是说全球最赚钱的公司都在美国股市,所以永久投资组合不必要关注美国以外的指数。最为国内的投资者也可以考虑把国内的指数基金换成纳斯达克100指数和标普500指数。如果实在是怕美股崩盘了想要投资一下其他国家的股市可以考虑其他国家的股票指数占整个投资组合的5%~10%债券对于债券来说,作者只推荐美国的20~30年长期债券。可以在银行柜台直接买入长期国债或者直接投资于购买了长期国债的指数基金。需要注意的是,如果自己直接购买债券的话当某个债券的品种到期时间小于20年话要卖掉小于20年的债券然后再次购买25~30年到期的债券。以下是上述过程的步骤:(1)购买25~30年期的美国长期国债;(2)持有债券,直到它有20年的到期时间(意思是它在你的账户中会支付给你5~10年的利息);(3)卖出20年期债券,并在必要的时候利用该收益购买新的25~30年期债券;(4)适当地重复这一过程,以维持你的资产配置。如果购买的是拥有长期债券的指数基金,这个步骤通常由基金经理来帮你完成。作为个人投资者在国内银行柜台最长只能买到7到10年期的国债,甚至有时候还抢不到。30年期国债因为主要不是为个人投资者发行的,所以基本抢不到。而在证券交易所直接购买30年期国债会有资金要求。而场外的基金我只能找到7~10年国开债。所以如果想要实践关于持有30年期国债的投资我觉得可以考虑30年期国债指数的ETF黄金对于黄金,作者推荐直接购买实物黄金,并且推荐在全球各个国家和商业银行购买实物黄金并且分散保存到各个银行的保险柜中,用于分散风险。作者不推荐纸黄金这种基金或者合约。作为国内的投资者我们可以去银行柜台买入黄金并存储到银行的保险柜中。永久投资组合需要抵御各种风险,包括经济、政治等等因素所以对于黄金这种贵金属来说比较严谨和讲究安全,在国内来说其实我们无法实践这种方式,更多的还是购买黄金etf或者相关的基金现金现金这里指的不是真实拿在手上的纸币,而是买入一些方便变现的资产,例如活期存款、货币基金、国债逆回购。再平衡再平衡是重要的操作,是间接的实现低买高卖的一种方式。书中作者根据回测数据得出结论:根据阈值触发再平衡策略是收益最高的做法。并且在这种方式下操作频率为每2~3年一次。我们提前给每种资产设置一个涨幅的阈值,只要达到这个值就触发一次再平衡。例如书中推荐只要某一个资产通过上涨价值占比达到35%或者因为下跌占比达到15%就触发一次再平衡。一些实操的问题书中也考虑到实际操作种的一些小问题。通过回答这些问题可以更方便我们理解和操作:资金是一次买入还是分批买入?作者认为等待是预测市场时机的一种委婉的说法,于永久投资组合不做预测只做应对的理念相悖。并且在长期持有的过程中,短暂的定投摊平成本的方式可能节约的成本可以忽略不记反而因为多次操作而损失手续费。并且如果预测错误反而会错失投资机会投资股票市场获得的股息如何操作一般的投资建议是股息复投收获更多的股票份额,但是永久投资组合不建议这么做,因为有可能股票当前处于高位,这样做会被迫追高;更好的做法是将股息放入现金部分,当现金部分超过35%,触发再平衡时再来进行操作新增资金怎么办?普通的投资者一般有一个稳定的工作,他们会将收入的一部分拿来进行投资,实行定投。对于这部分资金永久投资组合建议先放入现金部分,如果现金部分超过了25%,再投资买入其中表现最差的品种如何再平衡?触发了再平衡之后如何操作呢?书中给出几条原则:尽量用现金来补充完成再平衡尽量将资金投资到目前表现最差的品种当需要卖出的时候,优先卖出持有时间最长、收益最好的品种书中还提供了各种不同国家版本的永久投资组合,但是遗憾的是作者没有提供中国大陆的投资方式。书中一些笔记划线安全、稳定和简单。他强调,永久投资组合应该能够保护你,使你能自如地应对所有的经济前景,并保证获得稳定的回报,它还很容易实现大道至简,好的投资方式一定是安全稳定并且很容易复刻的真正的现实世界总是不可预期、不可知且出人意料的。它假定没有人可以预期未来,而且你的主要目标应该是用全天候的投资策略来保护你一生的财富永久投资的主旨就是不做预测只做应对如果你对于某项投资具有怀疑,或者是对于某种做法很是紧张时,尽可能采取最保守的做法就是把回测当作一个工具来证明和反驳一个策略,而不是机械地把过去的市场业绩投射到未来的市场中去投资者应该建立分散化投资组合的想法,立足点在于把资金投入到不同的资产中,这样就没有哪个单一灾难性事件可以对整个投资组合造成巨大损失真正的分散应该是分散投资与那些非正相关,甚至是负相关的资产未来永远都是未知数,而投资者却需要建立一个投资策略来加以应对。重要的是投资者应该完全理解,没有哪个经济学者、投资系统或者专家可以告诉你市场的下一步动态是什么。这点领悟形成了投资策略的基础在实施永久投资组合时,遵循基本策略比完美地执行更重要再好的策略也需要完善的执行现实是永久投资组合是设计用来在不腐败的经济体中发挥作用的挑选能真正给投资者带来实惠的投资市场很重要
2025年10月08日
1 阅读
0 评论
0 点赞
2025-09-28
读《巴菲特致股东的信》
之前看段永平问答录的时候他推荐看投资的书就看巴菲特写的东西,而这本《巴菲特致股东的信》是巴菲特每年写给伯克希尔股东信件的一个汇总,它按照一定的主题进行了汇编,包括了巴菲特对公司、管理、投资、以及一些政策的看法和意见。这部书关于美国投资税和会计方面的东西我没太看懂,我重点关注了巴菲特对于公司管理层和投资方面的内容,下面截取一些精彩的观点列举出来, 有的我会给出我自己的理解以及批注坚持与合适的人、合适的企业打交道,与人为善、良性互动、相濡以沫、相互尊重、相得益彰、交相辉映,这是巴菲特多年一直保持成功的关键在伯克希尔公司,我们通常会换位思考,设想如果我们自己处于股东的位置,应该得到什么样的信息,我们会从这样的角度向股东披露完整的报告看公司年报也是这样,看看公司是否愿意把投资者关心的内容毫无保留的披露出来;如果公司年报上遮遮掩掩,甚至有造假嫌疑就应该坚决排除芒格格和我都认为,CEO们预测公司增长速度,是骗人的和危险的。当然,他们是被分析师和公司自己的投资者关系部门怂恿裹挟着这么做。但他们应该拒绝,因为这样预测多了会招致麻烦。因为未来不可预测,过去的业界不代表未来。有时候过于关注所谓的预测反而会导致管理层为了实现预测目标开始不择手段,甚至造假。只要是好的生意就不愁未来没有业绩给投资者三个建议: 第一,小心那些展示弱会计的公司。如果一个公司没有费用选项,或养老金假设如天马行空,对于这样的公司要小心。当公司管理层在公开的方面使用低下的手段,那么他们在背后可能采用同样的手法。厨房里如果有蟑螂,绝不可能只有一只;第二,不知所云的注脚往往意味着靠不住的管理层。如果你看不懂财务报告中的某个注释或其他管理解释,这通常是因为CEO们不想让你明白;第三,对于那些大肆鼓吹盈利成长预测的公司保持警惕董事会的三种形式:第一种情形最为常见,董事会里没有控股股东。在这种情况下,我认为董事们的行为应该像那些缺席的股东一样,想方设法着眼于公司的长期利益;第二种情形存在于伯克希尔公司中,在这里,控股股东同时也是公司高管;第三种公司治理的情形发生在控股股东没有参与公司管理的情况下董事会是由股东选出来为股东利益负责拥有实际权力的机构;而管理层是由董事会选择来具体实行管理权力的。股票早期就是用来投资探险船的。按照这个理解,股东是直接投资探险船的,最终会分的获取的宝藏,而船上的船长应该是由股东选择出来来指定航向的。管理层则是执行的水手。第一种、第二种情况下股东参与公司的日常管理为了自己的利益而指定公司政策,肯定会以股东利益为优先。而第三种股东脱离与公司管理之外,有可能会造成管理层只顾自己利益而不顾股东;这给我的启示是在分析公司时需要考虑公司的管理层是否长期持有本公司的股票;是否发生过高管大量减持股票的情况芒格非常喜欢本·富兰克林的一句话:“一盎司的预防,胜过一磅的治愈。”但是,有时候,无论多少的治愈也无法弥补犯过的错误我们着眼于公司的经济前景,负责管理的人,我们支付的价格。我们心中没有想过什么时间和以什么价格去出售就是所谓的好的生意模式、好的管理、好的价格;有这三个因素在,买入之后长期持有,只要这三个方面不变就一直持有,而不在乎当前的股价;或者说买入卖出的决定因素一定不是股价的涨跌一个投资者如果想成功,必须将两种能力结合在一起,一是判断优秀企业的能力,一是将自己的思维和行为与市场中弥漫的极易传染的情绪隔离开来的能力在自己的能力圈投资,能力圈就是能看懂的生意。并且在投资时应该忽略短期市场的涨跌,买股票买的是公司不是股票本身的涨跌甚至也有时候,我们会以平价或低于价值的价格卖出一些持有的股票,因为,我们需要资金抓住低估更多的投资机会,或买入我们认为更为了解的股票好公司、好管理、好价格;这三个条件是相对的,卖出的理由可以是当前不满足这三个条件,也可以是有更好的投资机会。我们非常愿意持有任何股票,持有的期限是永远,只要公司的资产回报前景令人满意,管理层能力优秀且为人诚实,以及市场没有高估股市是一个不断重新定位的地方,在这里,钱会从活跃者手中流向耐心者手中。我们专注于寻找那些可以跨越的1英尺[插图]跨栏,而不是我们具有了跨越7英尺跨栏的能力。认清自己的能力圈比自己拥有多大的能力圈更重要。投资可以等待自己能力圈中的机会出现,一旦出现就要下重注。一生中这样的机会很多,重要的是机会来临时有本钱参与恐惧和贪婪,这是资本市场上时不时会爆发的两种具有超级传染性的病症,而且它们会一直存在;我们的目标很简单:在别人贪婪的时候恐惧,在别人恐惧的时候贪婪这里并不是说与大众相反的心态就是对的,而是说在能力圈范围内,在自己能承受损失的范围内贪婪投资者的整体回报,随着交易频率的上升而减少。这里巴菲特说,股票买卖是一个投资者卖给另一个投资者,交易时也是一个投资出钱,另一个投资者收钱。如果将拥有这家公司股票的所有投资者看作一个整体或者说看作一个家族的成员,那么随着交易的进行在这个家族中的整体财富并没有提升,因为交易之间付出的金钱都在家族内部流转,反而会因为频繁交易产生费用从而吞噬家族财富。对于拥有这家公司股票的这个家族来说最好的办法就是停止交易并安心拿公司回馈给股东的收益公司留存的每一美元,要为股东创造至少一美元市值这里谈的是分红;巴菲特认为分红与否也是一个机会成本的问题,是将利润分红产生的收益更大还是将利润用于再投资产生的收益更大;对于高速成长的公司来说再投资产生的收益更大,但是对于那些市场规模稳定,不需要进行大量再投资的公司而言给股东分红比随意扩张,乱花钱要好相比一家掌握在自私自利的管理层手中的公司,投资者应该给那些被证明关心股东利益的管理层手中的公司出更高的价如何回馈股东,一般是股息分红或者回购公司股票,也可以进行再投资。它们是一个机会成本的问题,应该优先选择那种能最大限度利用公司利润的方式。芒格和我认为回购的发生应该满足两个条件:首先,一家公司有充足的现金以备运营和流动性之需;其次,股价远低于保守计算的内在价值对于这种情况,巴菲特举了一个反例。有些公司选择在公司股价超过内在价值时回购,甚至不惜借钱回购,然后用回购的股票给公司管理层发放股票期权,这种行为严重损害了股东利益,相当于从股东钱包里面拿钱。所以对于回购股票的行为我们应该辩证的看,不是所有回购股票的都是好公司如果一些事情不值得做,也就不值得做好。这里巴菲特做了一个很形象的比喻,对于有些热衷于在垃圾股中淘金的投资者来说,就像在癞蛤蟆堆里寻找王子,可能稳了一堆癞蛤蟆也没有一个王子,找靠谱王子最好的方式还是在王子堆里找内在价值的定义也很简单:一个公司的内在价值是其存续期间所产生现金流的折现值。警惕那些油嘴滑舌,往你脑子里灌输幻象的顾问们,他们同时在往自己的口袋里装佣金。
2025年09月28日
2 阅读
0 评论
0 点赞
2025-09-25
Emacs折腾日记(三十一)——org mode入门
之前我介绍了Emacs相关配置以及对应的知识,主要包括:vim模式、编辑的优化、补全、代码跳转、调试等等,旨在将它打造成另一个vscode、也许是我技术能力有限,不仅在使用体验上赶不上vscode,在配置的简便化以及开箱即用的程度上都比不上。如果是使用Emacs仅仅因为它复杂一般人不那么容易学会,那么就有点装x的嫌疑了。我使用Emacs的原因主要有三点:高度自由、elisp语言的魅力以及org mode。可以说没有org mode我可能不会考虑Emacs。我认为 org mode是Emacs的灵魂也是目前市面上没有任何一款软件能替代的。什么是org mode、它与markdown相比有什么优势呢?本文将对org mode做一个入门的介绍什么是org mode实际上 Org mode 是一种轻量级标记语言,它与markdown、RST类似,但是功能上要比它们强得多,不仅可以用来完成日常的文章编写,还可以进行任务管理、项目规划、笔记收集整理等各种操作。并且配合elisp编程可以千变万化。作为一门标记语言org mode实际是十分容易的,它保存的文档以 .org 作为扩展名基本使用大纲大纲可以理解为多级的标题,了解markdown的肯定知道这个意思。一个 * 代表一级大纲,两个代表二级大纲,然后依次类推。对于大纲我们可以手动输入 *,可以使用Emacs提供的快捷键|快捷键|功能|备注|||在后面创建一个与光标所在位置同级的大纲|如果没有大纲则默认创建一个新的一级大纲||M-|降低当前大纲的等级|||M-|升高当前大纲的等级|||M-|将当前大纲及其内容整体向上移动|||M-|将当前大纲以及内容整体向下移动||大纲这部分有点像思维导图,我们可以将某些知识点以这种大纲的形式组织起来。有些思维导图软件可以点击某个模块将它的子模块隐藏起来,与这类似的,org mode也可以在大纲上按tab键来显示或者隐藏大纲底下的内容。我们可以定义和切换整个org 文档的大纲显示样式,它主要有三种Folded: 对于当前的大纲只显示大纲本身不显示其子大纲以及内容children: 只显示当前大纲的子大纲,不显示更下一级的内容subtree: 完全展开整个大纲代码块代码块放在 #+BEGIN_SRC 和 #+END_SRC 之间,在Emacs中有一个快捷键 <s <TAB> 来快速输入这个标识. 另外也可以在 后面接上 语言类型,例如下面是一段对应的c++代码#+BEGIN_SRC c++ int main(int argc, char* argv[]) { return 0; } #+END_SRC当我们进入到代码块中编写代码时它会开启对应语言的major mode,前面我们配置了c++ lsp 补全相关的内容也可以在编辑代码块时使用超链接超链接我们可以采用 [[<link url>][<text>]] 的语法,例如 [[https://www.baidu.com][百度一下,你就知道]]图片本地图片可以使用 file:/path/to/image.png 的形式来写上本地图片的位置,然后开启 iimage-mode 显示图片字体样式字体样式主要有:粗体:我们可以使用 ** 来包裹文字以便显示为粗体斜体: 可以使用 // 来包裹文字显示斜体下划线: 可以使用 一前一后两个 _ _来包裹文字将它显示为带下划线的样式删除线: 可以使用 + 前后包裹来显示为删除线其实org mode 与markdown一样都非常简单,日常写博客或者写文档的话,我觉得这些基本知识差不多就够用了。
2025年09月25日
4 阅读
0 评论
0 点赞
2025-09-21
读《段永平投资问答录》
这本书是段永平在各种公共场合回答网友的关于投资问题的一个汇总,里面包含了段永平关于投资方方面面的知识,下面是本书中我觉得书中比较有价值的部分买股票就是买公司、就是买公司未来现金流的折现大多数人认为买股票就是买未来的涨跌,低价买入高价卖出,因此出现了许多所谓的技术流派,这部分投资者热衷于分析k线图,分析市场行情,分析热点信息,试图预测市场未来的涨跌;而这里段永平却认为买公司股票赚的是未来企业盈利的钱,是否买一家公司的股票要看你是否原因成为公司合伙人,是否愿意买下一整个公司,假设在未来公司的股票无法再进行买卖是否还愿意持有。折现率实际上是相对于投资人的机会成本而言的。最低的机会成本就是无风险回报率,比如美国国债的利率钱在每个时间段都有不同的价值,现在的100元与未来的100元价值是不一样的。假设银行定期存款利率为2%,那么现在的100在1年后可能只值98元左右,因为用现在的98元存银行就可以在1年以后获取100元。也就是说资金是有时间成本的。所谓未来的折现就是使用一个折现率来计算未来公司现金流折现到现在大概值多少钱然后判断是否需要投资。所谓的折现率每个人用的算法都不一样,可以使用无风险利率也就是国债、可以使用通胀率、或者使用待投资公司所在行业的平均回报率。做对的事情在实际中往往就变成不对的事情不要做。我对做对的事情的看法是:发现错了马上改,不管多大的代价都是最小的代价这句话的本意是,对的事情就是买股票就是买公司、就是买公司未来现金流的折现;而不对的事就是看涨跌,关注价格。但是映射到做人和做事上也可以有不一样的理解。与其考虑把事做对,幻想着找到一件能成功的事去做,不如先常识不做某事。例如不撒谎、不沉迷享乐。可以给自己准备一个 do not list 的清单,时刻提醒自己不做清单上的事,相信时间的力量。如果长期不做不对的事,那么时间的复利会带给巨大的奖励巴菲特说知道自己能力圈有多大比能力圈有多大要重要的多。在这句话前面书中说,看不懂的不买、管理层不诚实的不买、价格贵的离谱的不买。能力圈也就是自己能不能真正看懂这家公司。虽然道理看起来很简单,但是实际上很多时候我们是不知道自己不知道,一旦问题超过我们的预期或者我们无力改变,这个时候我们才知道自己原来并不知道所以在做对的事情过程当中所犯的错误和因为做错的事情而带来的结果要严格区分开来这句话的本意是说,即使买的股票涨了,也要区分是靠追涨杀跌,靠K线、关注股价得来的还是靠买优质公司自身迎来的。如果不是走在买股票就是买公司、就是买公司未来现金流折现这条正确的道路上,那么未来肯定也会因为做错误的事亏掉当初赚的钱在自己懂的东西上投资最重要的就是能看到风险在哪结合前面说的能力圈的概念,自己懂就是知道自己这笔投资赚钱在哪,有可能亏在哪。结合机会与损失来确定是否值得投资。在下注投资的那一刻起未来发生的一切不说都在预料之内,未来短期的损失在自己的承受范围。一个是“做对的事情”,就是去找好公司,关注公司长远的未来;另一个是“如何把事情做对”,就是如何找到好公司,如何看到公司的未来。好业务、好管理、好价格好公司就是这三样;好业务就是这个公司现在赚钱、未来不管发生什么重大事件也不影响它赚钱、而且它赚钱的方式方法别的公司还学不来;好的管理层就是为公司股东利益考虑、诚实守信;好价格结合上面说的“在自己懂的东西上投资最重要的就是能看到风险在哪”,即使发生风险也能将损失降低到可控范围之内。在自己估值逻辑计算的价格之下。我觉得看财报最重要的就是剔除不想投的公司,不赚钱的生意多少营业额都是没用的这与我之前看的关于公司财报的书吻合、财报是用来排除企业的。看财报最重要的就是了解当前公司是否赚钱、而未来是否赚钱、是否有其他公司和重大事件能影响该公司赚钱这个需要长期的考察,靠自己对公司的了解,也就是懂公司未来现金流的意思是扣除了再投资以后的现金增加量。长期来讲未来现金流是最说明问题的有一类重资产公司,虽然每年能赚不少钱,但是需要大量投入、实际可用于分配的资金没多少。这类公司不合适投资,它们属于那种轻微的风险就能影响未来赚钱的公司“净资产收益率”是个很好的指标,可以用来排除那些你不喜欢的公司,但不能作为“核心指标”去决定你是否要投的公司。这个指标如果好的话,你首先要看的是债务;如果没有债务问题则马上要看文化,看这种获利是否可以持续。最后还是要回到“right business, right people, right price”。收益率高的公司当然是不错的,说明公司的盈利能力强。净资产收益率低的公司一般都不太好,但成长型公司的初期可能净资产收益率会很低。关键还是看你能不能看懂公司的未来(现金流)看图看线实际上就是看目前(这个时刻或时段)别人对股票的看法。所谓的价值投资者的心中是无图无线的!巴菲特说不想持有一支股票10年就不要拥有它10分钟;靠股价涨跌赚钱实际上是靠有人接盘,从其他投资者手中挣钱。将所有此类投资者看作一个整体,那么在这个整体之外是没有资金流入流出的,也就说这类投资方式没有产生任何有效的利润,就像一个人有多个股票账号,今年将这个账号中的股票卖给那个账号,明天将那个账号中的股票卖给这个账号,这个人虽然每个账号的盈利情况各不相同,但是这个人的总资产是维持不变的,而且频繁的交易就是在给券商送手续费。靠企业获取利润是实打实的利润,是企业将赚到的钱分一部分给投资者买股就是仿若买没有上市交易的企业,2、投资要用闲钱,(不是闲钱的就不能用),3、不看到十年就不投,(4、不懂的谈不上看到十年后,所以不懂的不会投),5、投资不等于长期持有,若有更好的标的,要换股。因为投资有机会成本,失去了不知何时再有当有人非要把金子按铜的价钱卖给你的时候,你是不需要勇气的,你只要确认那真的是金就行了(有可能其实是镀金的铁块或石头)。但是我有个理解,就是无论什么时候卖都不要和买的成本联系起来。卖的理由可能有很多,唯一不该用的理由就是“我已经赚钱了”。就像很多散户说的,回本就卖或者涨到多少就卖。这实际上还是没有看懂公司的未来,或者说还是在按照价格考虑买卖,因为恐惧未来会跌导致亏损所以常常卖飞,失去了未来赚钱的机会
2025年09月21日
1 阅读
0 评论
0 点赞
2025-09-18
Emacs 折腾日记(三十)——打造C++ IDE 续
上一篇博客中,我完成了C++ IDE初步工作,包括代码的高亮、折叠、跳转以及补全等工作。但是作为IDE来说功能还有点不够,就我个人而言作为IDE来说它还需要具备一键编译运行和调试功能。这篇文章就来记录我是如何实现上述功能的编译运行我使用的演示项目比较简单,它的文件结构如下:. ├── include │ └── head.h └── src ├── add.cpp ├── div.cpp ├── main.cpp ├── mult.cpp └── sub.cpp它分为两个目录分别保存头文件和源文件。其中头文件只有一个定义各个接口函数,而接口函数的实现就放到各自定义的cpp文件中。这里使用加减乘除的四则运算的实现来作为演示。这里我分别演示一下Make文件和CMake构建的项目是如何实现一键编译运行的。Make构建的项目针对上前面介绍的简单项目,我们可以写出如下的Makefile# 编译器设置 # 定义项目根目录 ROOT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) CXX := g++ CXXFLAGS := -Iinclude -Wall -Wextra -pedantic -std=c++11 -MMD -MP LDFLAGS := EXE_OUTPUT := $(ROOT_DIR)bin TARGET := $(EXE_OUTPUT)/app $(info TARGET = $(TARGET)) # 源文件和对象文件设置 SRC_DIR := src SRCS := $(wildcard $(SRC_DIR)/*.cpp) OBJ_DIR := $(ROOT_DIR)build/obj OBJS := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRCS)) DEPS := $(OBJS:.o=.d) # 默认目标(第一个目标) all: $(TARGET) # 链接生成可执行文件 $(TARGET): $(OBJS) @mkdir -p $(@D) $(CXX) $(LDFLAGS) $^ -o $@ # 编译源文件并生成依赖 $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp | $(OBJ_DIR) $(CXX) $(CXXFLAGS) -c $< -o $@ # 创建对象文件目录 $(OBJ_DIR): mkdir -p $@ # 包含自动生成的依赖关系 -include $(DEPS) # 清理生成的文件 clean: rm -rf $(TARGET) build .PHONY: all clean 上面我们定义了头文件路径为include 目录,并且规定了中间文件生成在 build/obj 中,最后定义了生成可执行程序在 bin/app 中对于编译来说,Emacs内置了 compile 命令,它会自动执行 make -k 命令,但是如果我在使用Emacs的过程中切换到了其他目录的话,还需要特别指定Makefile 所在的路径,对我来说我希望能在尽可能少输入参数的情况下完成同样的操作,不太希望每次都指定项目根目录,好在之前配置的projectile 插件帮助我们识别出来了项目的根目录。所以这里可以使用 projectile-compile-project 来自动指定根目录并编译。从上面的截图可以看到,flycheck 提示了几个错误,这是因为项目没有生成 compile_commands.json文件,所以lsp服务器无法跨文件分析,导致找不到头文件。原始的make 命令并不支持生成 compile_commands.json 文件,我们可以通过 bear 命令来完成这个工作,它的用法比较简单,只需要使用 bear -- <your-build-command> 即可, 对于使用make编译的项目来说 <your-build-command> 代表的就是 make 命令。我们需要考虑的一个问题是,如何将bear加入到编译命令中,也就是将它自动生成的 make -k 给替换掉,第二个问题是如果当前目录在其他目录下,如何保证 compile_commands.json 永远生成在根目录下Emacs中有一个变量 compile-command 保存了编译的命令,如果我们使用Emacs自带的compile来编译可以通过修改它来实现,而 projectile-compile-project 则是通过变量 projectile-project-compilation-cmd 来保存编译命令,默认是nil,对于使用 projectile 我们通过修改这个变量的值从而修改编译时使用的命令。另外既然 projectile 可以得到项目的根目录,我们就可以利用这个插件来获取项目的根目录,有了这些信息通过一个函数就可以重新生成一个编译命令(defun my/general-compile-command() (concat "bear --output " projectile-project-root "compile_commands.json" " -- make -k"))这个函数的代码非常简单,通过 projectile-project-root 来获取项目的根目录,然后通过字符串拼接的方式来得到编译命令生成 compile_commands.json 成功之后,我们重启 lsp 服务后可以看到错误都消失了,只有两个警告了了解了编译的一些情况,下面来看看如何在Emacs中执行生成的可执行程序。Emacs中可以使用 shell-command 来执行可执行 shell 命令。例如我们可以在项目的根目录下执行 shell-command ./bin/app。很明显如果每次都指定程序的路径是非常麻烦的事,我希望能有一个命令或者函数来自动执行可执行程序。但是Makefile构建的项目比较古老也灵活,Makefile中没有一个固定的方式或者写法来指定可执行程序的生成路径,也就是说没有一个通用的方式来根据Makefile获取可执行文件的路径。一种折中的方案就是针对每个项目都定义一个 execuable-path 的变量来指定可执行程序的路径,然后再通过elisp代码来根据这个变量执行程序(defun my/run-program() (interactive) (shell-command (concat projectile-project-root executable-path)))我们可以针对每个项目单独设置一个 executable-path 变量。Emacs会读取项目根目录中的 .dir-locals.el 文件,并且将文件中定义的变量作为项目的局部变量,所以我们只需要在该文件中定义好 executable-path 就可以了。我们可以通过命令 add-dir-local-variable 来往该文件中添加一个局部变量,也可以自己手写该文件实现这一操作添加完变量之后,项目根目录中的 .dir-locals.el 文件内容如下;;; Directory Local Variables -*- no-byte-compile: t -*- ;;; For more information see (info "(emacs) Directory Variables") ((c++-mode . ((executable-path . "bin/app"))))在重启Emacs之后,执行这个函数就可以做到一键运行了有了这些,我希望能将它们有机的组合起来,也就是说按下某个快捷键,这里我暂时定义为 <F7>。它直接同时执行编译和运行的操作。通过 C-<F7> 来完成重编译的操作。;; 重新编译 (defun my/rebuild-program () (interactive) (let ((root (file-name-as-directory (projectile-project-root)))) (shell-command (concat "make clean -C " root)) (setq compile-command (concat "bear --output " root "compile_commands.json" " -- make -k -C " root)) (compile compile-command))) ;; 绑定快捷键 (setq compilation-read-command nil) ;; 取消编译时确定命令行 (evil-define-key 'normal c++-mode-map (kbd "<f7>") #'projectile-compile-project) (evil-define-key 'normal c++-mode-map (kbd "C-<f7>") #'my/rebuild-program))) 这里的代码比较简单,对于编译来说只需要将之前执行的 projectile-compile-project 绑定到对应的快捷键;对于重编译,我通过函数 my/rebuild-program 来完成。这个函数主要操作是先执行 make clean 命令然后重新执行 make。在正式绑定快捷键之前,有一句 (setq compilation-read-command nil) 。projectile-compile-project 和 compile 命令都是交互式命令,执行时会首先显示对应的编译命令,需要用户手动执行回车确认命令,这句代码的意思是不取消它们需要确认的步骤,直接执行命令。本来我打算在重编译函数中也采用 projectile-compile-project 但是它这个交互式我一直取消不了,所以这里我直接采用 compile 指定根目录的方式来完成这个操作。如果想要绑定一键运行的操作也可以采用这个思路,将快捷键绑定到 my/run-program 函数中,这个函数也可以添加一个编译命令确保执行的是最新代码生成的可执行程序CMake工程CMakeLists.txt 文件内容如下:cmake_minimum_required(VERSION 3.15) set(CMAKE_CXX_STANDARD 11) project(test) # aux_source_directory(${PROJECT_SOURCE_DIR} source) file(GLOB source ${CMAKE_SOURCE_DIR}/src/*.cpp) include_directories(${CMAKE_SOURCE_DIR}/include) set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) add_executable(app ${source})这个CMakeLists.txt 文件中主要定义了编译使用到的源文件、头文件目录路径和生成的exe路径emacs 中有一个名为 cmake-ide 的包,它用于读取cmake配置中的各项参数并将参数传递到对应的包中,虽然用它可以很方便的针对cmake配置,但是它依赖rtags,并且没有支持lsp-mode。所以这里就淘汰它,还是想办法自己实现针对cmake来说,要生成 compile_commands.json 比较简单,我们可以在命令行中使用cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1也可以在cmake配置文件中,project命令之后添加set (CMAKE_EXPORT_COMPILE_COMMANDS ON)这里我采用将命令写到cmake文件中的方式。对于cmake 编译的过程主要由两个部分组成,首先是cmake构建项目生成Makefile,然后使用make 命令编译项目。我们要实现自动编译也需要模拟这两个命令。与上面类似,这里我只需要将 my/general-compile-command 函数做少许改动即可(defun my/cmake-general-compile-command () (concat "cmake -B " (projectile-project-root) "build -DCMAKE_BUILD_TYPE=Debug " (projectile-project-root) " && ln -sf " (projectile-project-root) "build/compile_commands.json " (projectile-project-root) "compile_commands.json" " && cmake --build " (projectile-project-root) "build --config Debug"))这个函数生成的命令主要完成三个工作,将构建编译生成的临时文件放到 build 目录下;因为生成的 compile_commands.json 文件也一起放在了 build 目录中,所以我加一个软链接到项目根目录的操作;最后就是执行编译操作了。至于重编译则于上面的步骤相似,cmake一般我习惯删除存放临时文件的build目录然后重新执行cmake构建。所以这里还是模拟这个过程(defun my/cmake-rebuild-program () (interactive) (let ((root (file-name-as-directory (projectile-project-root)))) (shell-command (concat "rm -rf " root "build")) (setq compile-command (my/cmake-general-compile-command)) (compile compile-command)))至于运行程序,我们还是可以采用上面介绍的指定程序生成路径的方式。也就是不管使用cmake或者Makefile 构建的工程都可以使用上面定义的 my/run-program 函数来运行程序调试作为IDE的一个重要或者说基础的功能,调试功能是必不可少的。emacs 自身支持使用gdb进行调试,我们可以执行 M-x gdb 来启动一个调试示例,这个时候我们一边通过gdb的调试命令来控制程序语句的执行一边观看代码的上下文。但是目前流行的方式是使用 dap 来调试程序,至于什么是dap,我在配置vim的时候已经介绍过了,这里就不再赘述了emacs 中有一个名为dap-mode 的插件通过这个插件可以实现dap相关的功能。因为在介绍vim配置的时候我使用的是vscode中的 cpptools插件,这里我打算也使用它来作为dap的调试后端,可以通过cpptools官方仓库 进行下载接着需要安装lldb-vscode,它是针对vscode的一个插件,我们可以在 官方仓库 中找到对应的下载包。下载完成之后可以直接解压到对应目录,这里我解压到 ~/.emacs.d/cpptools 目录中。此时对应的调试后端程序为 ~/.emacs.d/cpptools/extension/debugAdapters/bin/OpenDebugAD7。我们需要赋予它可执行的权限。在这些工作都做好之后,可以使用下面的代码来安装dap-mode(use-package dap-mode :ensure t :after (lsp-mode) :config (dap-auto-configure-mode) ; 可选:启用自动配置 (setq dap-cpptools-debug-program '("~/.emacs.d/cpptools/extension/debugAdapters/bin/OpenDebugAD7")) )我们可以通过命令 dap-debug-edit-template 创建一个调试的模板。对给出的模板做一些简单的修改(dap-register-debug-template "cpptools::Run Configuration" (list :type "cppdbg" :request "launch" :name "cpptools::Run Configuration" :MIMode "gdb" :program "${workspaceFolder}/bin/hello" :cwd "${workspaceFolder}" :environment [] :miDebuggerPath "/usr/bin/gdb")) 我们执行一下这个代码就会向Emacs注册一个调试的模板。接着直接调用 dap-debug 即可启动调试。虽然我们可以将上述注册的代码放到主配置文件中,但是其中的一些关键的字段,例如程序的位置,使用的环境变量,以及对应的调试参数都无法做到所有程序都统一,所以这里我觉得还是需要的时候直接修改就好了。dap-mode 的一些命令如下:dap-debug 和 dap-continue : 启动调试或者运行到下一个断点处dap-next : 执行下一句代码dap-step-in : 执行下一行代码并进入函数内部dap-step-out : 执行到函数返回dap-breakpoint-toggle : 创建或者删除端点我们可以对这些命令进行键位绑定(use-package dap-mode :ensure t :after (lsp-mode) :config (dap-auto-configure-mode) ; 可选:启用自动配置 (require 'dap-cpptools) (setq dap-cpptools-debug-program '("~/.emacs.d/cpptools/extension/debugAdapters/bin/OpenDebugAD7")) (evil-define-key 'normal dap-mode-map (kbd "<f10>") #'dap-next) (evil-define-key 'normal dap-mode-map (kbd "<f9>") #'dap-breakpoint-toggle) (evil-define-key 'normal dap-mode-map (kbd "<f5>") #'dap-debug) )这样我们可以使用上述快捷键来进行调试操作总结这篇文章花了好长时间才弄出来,主要是我对于emacs和lisp语言不太熟悉,中间在尝试编写一键运行和配置dap时耗费了大量的时候。最终我还是成功了,至少我完成我当初想要的一些ide的基本功能,当然在使用上还是比不过vscode,但是在折腾中总能找到一丝乐趣。本文中的配置仅仅经过我自己机器的检验,本来想弄的更加灵活更加接近vscode的体验,有一些我自己想要的功能还没加上,仅仅做了一个可用的玩具。但是我没有想到什么办法,而且这篇文章已经憋了好久了,再不写点东西出来我感觉马上就要放弃了,我想先弄点东西出来给自己一个激励,让我有动力继续深入学习一下Emacs的其他内容。等我多学了一点Emacs多写了一点elisp代码之后可能会对调试和编译方面的代码做一个大的更新。最后如果有读者觉得这篇文章写的有那么一点帮助,那将是我的荣幸,感谢读者在百忙之中能读完本文。
2025年09月18日
3 阅读
0 评论
0 点赞
2025-09-03
Ubuntu 20.04 安装gcc5.4 与 cmake3.16 编译环境
因为公司的编译环境使用的是Ubuntu 20.04 搭配 gcc5.4 和 cmake3.16。所以我也在自己的开发机上安装了配套的环境Ubuntu 就使用 WSL2 直接安装就行,编译环境因为Ubuntu 20.04 默认使用的是gcc 9的版本,所以配置起来还是需要稍微费点功夫的。这里记录一下有效的步骤防止后续又需要配置这套环境的时候满世界找因为gcc5.4 相对来说比较老了,这一版Ubuntu 的官方软件源仓库中没有,需要添加额外的软件源仓库我们可以选择先备份原始的软件源,然后将下列源添加到 /etc/apt/sources.list 文件的末尾deb http://archive.ubuntu.com/ubuntu xenial main universe然后执行sudo apt update && sudo apt upgrade更新软件源接着安装gcc 5.4 以及对应的32位环境支持sudo apt install -y gcc-5 g++-5 gcc-5-multilib g++-5-multilib sudo apt install -y libc6-dev-i386 lib32stdc++6 lib32gcc1默认情况下,ubuntu 20.04 中安装的gcc版本是9.0,如果我们自行安装了 gcc5.4,系统中会有多个gcc版本有时候会导致冲突,我们可以使用下面的命令来管理多个gcc版本# 配置备选版本 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50 # 切换版本(选 5.4 对应的编号) sudo update-alternatives --config gcc sudo update-alternatives --config g++此时使用 gcc --version 将会看到当前gcc的版本是5.4Ubuntu 20.04 官方的软件源中cmake的版本就是 3.16,所以对于cmake直接使用sudo apt install cmake
2025年09月03日
3 阅读
0 评论
0 点赞
2025-08-31
读 《动物农场》
故事发生在一个月黑风高的晚上,农场中德高望重的老猪“上校”在即将因为衰老而死去之前召集了农场中的众多动物,决定将它所获得的智慧传授给这些其他动物。农场中的动物劳作一生,却仅仅只能勉强活下去,温饱自然不能奢求,它们的一生只有受苦受难受奴役。但是这些并不是因为农场地穷土薄。这一切都是因为人类偷走了动物的劳动果实,人类不进行生产活动却获得了动物们辛勤劳作的产出。只有打倒人类,劳动成功就是自己的了,几乎在一夜之前就能变得富足、自由。“上校”也强调在赶走人类之后切不可落到去效仿人类,即使征服了人类,也不可将它们的恶习继承下来。最后动物们歌唱了《英格兰的生灵》“上校”在三天后就去世了,但是革命的种子在此就种下了了。教育和组织动物的职责落到了被认为动物中最聪明的猪身上,它们分别是雪球和拿破仑以及一只叫做吱嘎的小肥猪。吱嘎的最大本事就是将白的说成黑的。在动物中宣传革命理论也不是那么容易的,有些动物还是认为它们有义务支持农场主琼斯先生,并且认为“我们是琼斯先生养活的,要是他死了,我们就得饿死”。有一次琼斯忘记给动物喂食导致母牛擅自将饲料棚打开。动物们自行从料箱取食,这激怒了琼斯,在琼斯对着动物们拳打脚踢并且拿鞭子抽打动物的时候,动物们实在是忍无可忍,最终动物们决定反抗。在冲突中动物们最终取得胜利,并且将琼斯赶出了农场。在革命成功后,动物们将曾今琼斯用来奴役动物的马嚼子、鼻环、狗链、缰绳、眼罩等工具付之一炬。并且封锁了琼斯的房间,里面的酒、床等被视作堕落腐化的象征并且禁止任何动物进入。曾今领导革命的猪头头们将动物主义的原理精简为《七戒》写到大谷仓的外墙上:凡是用两条腿行走的都是敌人凡是用四条腿行走的或者长翅膀的都是朋友凡是动物不可穿衣服凡是动物不可睡床铺凡是动物不可饮酒凡是动物不可杀戮别的动物凡是动物一律平等最终这个庄园被命名为动物农场、由鸽子向外其他农场输出革命理论。在农场中诞生了九只小狗崽,拿破仑将它们从母亲身边带走,说是要对它们的教育负责,它将小狗崽放到阁楼中,并且对外仅仅隐蔽。在农场中发生了牛奶和苹果丢失的事件,不久之后发出了公告,牛奶和苹果被拌入猪食。别的动物对此颇有微词。但是吱嘎解释道“并不是猪们贪图享受,只是农场的组织部门需要猪们动用大脑,是脑力劳动,吃苹果喝牛奶只是为了补充脑力,更好的为动物们的福祉进行工作,更好的为了动物谋福利”。并且吱嘎还威胁到如果猪不能恪尽厥责,琼斯将会回来。动物对此就不再有异议了。雪球在日以继夜的研究做一种风车,有了风车动物们就可以有电力,有热水澡可以洗,并且也可以使用电力来转动磨盘减轻动物的劳动负担。在雪球向动物们发表它的政见鼓励动物们赞成建造风车时,拿破仑公开反对制造风车并且发动了政变。它利用之前收养教育的九条长大的小狗崽将雪球驱逐出动物农场。拿破仑掌权后,取消了每周日的民主碰头会,接着成立了一个专门的委员会来决定农场运作的所有事务,成员全都由猪担任,它自己担任委员会的主席。动物们在星期日上午聚在一起向农场的场旗致敬,唱《英格兰的生灵》,接受下达给它们的一周工作任务。但是不再有之前的民主讨论。雪球被驱逐的事虽然在动物圈中引起了一定的讨论但是吱嘎向动物们解释称雪球与琼斯勾结,最终还是以一句“同志们,你们也不希望琼斯回来吧”打消了动物们的疑虑。在雪球被驱逐的三周以后拿破仑决定要建造风车,对此吱嘎向动物们解释这是拿破仑的策略,表面上反对实际是一种迂回战术。在拿破仑当权的那一年动物们自始至终像奴隶一样干活,但是它们清楚的意识到它们干活主要是为了自己,而不是为了不劳而获,转世盗窃的人类。它们每周要工作60小时,这种劳动遵循自愿原则,但是按照多劳多得的原则,不参加加班的动物需要减去一半口粮。动物委员会宣布,它们将会与人类进行交易,动物们虽然有意见,但是在吱嘎的忽悠下也打消了疑虑。动物们在农场上看到拿破仑四肢着地却对着两脚站立的人类下达命令,一股自豪感在它们心中油然而生。在此之后猪们打开了之前封锁的琼斯的阁楼,并且住了进去。动物们虽有疑虑但是吱嘎说,作为动物农场的首脑部门需要一个安静的工作环境,住楼房比住猪圈更能体现伟大领袖的尊贵身份。并且猪们堂而皇之的谁在了人类的床上。动物们明明记得当初的《七戒》规定了凡是动物不可睡床铺。但是吱嘎却说“床的意思仅仅是睡觉的地方而已,戒律针对的是被单,我们已经把被单从农场主宅内的床上撤去,睡在上下两条毯子中间”。并且吱嘎说舒服的睡眠是为了更好的为动物服务,阻止琼斯将来回来。拿破仑为了与人类进行贸易宣布要从母鸡那里拿鸡蛋,并且规定母鸡每天需要产一定数量的鸡蛋,在母鸡进行反抗之后拿破仑宣布停止给母鸡饲料并且也禁止任何动物给母鸡哪怕一颗玉米粒,最终在有9只母鸡死亡的情况下终于停止了反抗。最终死亡的母鸡被埋葬,最终拿破仑宣布母鸡死于疾病。在这个时期风车建造失败了,但是拿破仑将这一切归咎于逃走的雪球并且将农场中发生的一系列不好的事都归咎于雪球,就这样雪球莫名其妙的背负了诸如偷吃谷物、打破鸡蛋、践踏苗床等等罪过,就像它的名字那样,它的罪过也像滚雪球一样越滚越大。哪怕它在反抗琼斯的斗争中身先士卒并且也为之负伤,这也被描述成它事先与琼斯勾结故意演戏。甚至在之后的批判中被认为是雪球一伙的几个动物被处决,墙上的《七戒》中“凡是动物不可杀戮别的动物”这一条也被修改为“凡动物不可杀戮别的动物,如果没有什么理由的话”。动物们付出了比过去更加辛苦的劳动但是仍然食不果腹,仍然生活在饥寒之中。每周日吱嘎总是会工具一串串的数字,从数字上来看各档粮食产量一直在增加,但是它们就是吃不饱。动物们宁愿少听点数字,多得到点吃的。在一段时间之后,其他动物也不能随便直呼拿破仑的名号,在任何时候需要称它为“我们的领袖拿破仑同志”。猪们同时也为它冠以“动物之父”、“人见愁”、“羊圈守护神”、“小鸭之友”的头衔。农场无论取得什么成绩都要归功于拿破仑英明的领导。《七戒》中“凡是动物一律平等”也被修改为“凡是动物一律平等,但是有的动物比其他动物更平等”。慢慢的《七戒》中“凡是动物不可饮酒”被修改为“凡是动物不可饮酒过量”。拿破仑与猪们也开始饮酒,并且将原来准备给动物们安度晚年的一块水果园改种大麦。后面经历过几次人类的反扑,动物中最任劳任怨,力气最大的马——拳击手在一次反抗人类侵略的战争种受伤了,但是它仍然为了建立风车辛苦劳作,终于在某一天它再也起不来了。拿破仑在得知此事之后吱嘎现身了,它对拳击手带来了来自拿破仑的慰问,同时代表拿破仑对拳击手表示了同情和关怀,他承诺会将拳击手送到医院接受治疗。但是在医院的车准备将拳击手拉走之时,它的好友驴子本杰明却发了疯的组织车子的离开,本杰明在后面狂追医院的车。动物们都十分惊讶本杰明的样子,它过去的形象是沉稳中带有点不谙世事,它似乎从来没有将什么事放在心上。在追车失败之后怒喝道“笨蛋,都是笨蛋!难道你们每瞧见车身上写的什么字?”在动物们惊诧的眼神中,本杰明公布了真相,这辆车并不是医院的车,而是屠马场的车。吱嘎回来之后虚构了拳击手在医院的场景,宣布拳击手在医院不治身亡的消息,并且说拳击手在临死之前告知农场的同志们“动物农场万岁、拿破仑万岁,拿破仑永远正确”。又过了几年之后,动物们都到了原来约定的退休时间但是似乎没有动物能真的退休。同时动物们还发现猪们开始用后退走路,前腿夹着一条鞭子。此时猪们似乎更像人了。此时年老的动物们发现动物农场中《七戒》的其他几条都消失了,只剩下一条“凡是动物一律平等,但是有的动物比其他动物更平等”。在夜晚,动物们趴在墙头发现拿破仑与人类正在饮酒。故事在这个高潮中结束了,最后的一句结束语写的十分震撼人心“敢情动物们从窗外朝里看,目光从猪移动到人,再从人移动到猪,又从猪移动到人,要分清哪张脸是猪,哪张脸是人已经不可能了!”本文是乔治奥威尔讽刺集权主义的反乌托邦小说,在阅读的过程中我见识到了一个屠龙者终成恶龙的故事,见识到了集权者对人民的愚弄,舆论的管控,以及它们可笑的面孔。这个故事中极权主义的框架又在他的另一本书《1984》中被发扬光大。
2025年08月31日
2 阅读
0 评论
0 点赞
2025-08-31
手撕包菜
首先调一个酸辣汁:小半勺盐小半勺糖两勺生抽半勺耗油半勺老陈醋一勺芝麻香油两勺清水8.小半勺的水淀粉制作:起锅烧油加入蒜片、姜片、葱段以及几段干辣椒倒入手撕的包菜进行翻炒倒入之前调好的料汁5.翻炒之后盛出
2025年08月31日
2 阅读
0 评论
0 点赞
2025-08-24
读 《博格论指数基金》
本书的作者,约翰博格是指数基金之父。本书主要在强调一个主题,那就是从长期来看普通投资者投资被动指数基金的收益要大于投资主动型基金,原因主要有以下几点:相对与主动基金来说,被动指数基金的费用更低,而低费用经过长年累月的积累将是一大笔钱,如果按照收益来算相当于每年多出1到2个百分点的收益长期打败市场很困难,可能在短暂的时间内收益会超过市场的平均收益,但是投资者长期来看能获得与市场相同的收益也十分的不容易主动基金的高收益只是暂时的,未来大部分主动基金最多只能获得市场的平均收益;主动基金短期内的高收益有可能是市场过热的假象,而且主动基金一旦表现良好会导致大量投资者涌入,而主动基金的投资规则不允许基金经理留存大量的现金,导致这些现金必须投入市场有可能会高位接盘,最终在市场震荡向下时给投资者带来损失通过以上几点可以得出结论,普通投资者最好的投资方式就是投资低成本的指数基金。本书的内容十分的简单,但是书中会将一些概念反复的说,并且引用各种名人点评来为这些观点进行论证,虽然可以提到可可信度,但是不免显得有些啰嗦,其实我读这本书主要希望看到作者从他的角度聊聊指数基金的一些常识以及挑选指数基金的方式,没有看到这些我有些失望,也是我不太喜欢这本书的一个原因。但是书中对于投资也给出了一些名言警句,值得反复阅读:股市中价值和价格的关系就像是遛狗时人和狗的关系。价格有时高于价值,有时低于价值,但迟早会回归价值忽略金融市场上的那些短期噪声,关注企业经营的长期状况。想要投资成功,就要摆脱股票价格的预期市场,融入企业的真实市场。当我们试图战胜市场的时候……为了战胜市场而耗费的成本,很有可能会让我们成为输家投资中,真正的钱是创造出来的—就像我们最初用汗水赚到的那笔钱一样,真正的财富不可能来自买卖,只能源于买入证券并长期持有,收取利息和红利,从而实现价值的增长。如果你面前出现了一顿貌似免费的午餐,除非你有足够有说服力的证据,否则它就不是免费的
2025年08月24日
1 阅读
0 评论
0 点赞
2025-08-17
读 《手把手教你读财报》
最近在研究股票投资相关的内容,研究公司阅读财报是必须要经历的步骤。我虽然读过一些财报方面的书,掌握了一些理论,但是一旦遇到真正的财报发现理论与现实还是有一些差距的。介绍财报的书上来就是三大报表:资产负债表、利润表和现金流量表。但是真实的财报不光有这些财务报表,还有重要事项提示、公司情况说明、董事会针对未来公司的一些说明等等。这些信息该如何理解,如何结合财务报表来看这些数据呢?并且公司的财务报表中的科目与之前教科书上的说法有些不太一样。我急需一本能结合具体财报来讲解如何阅读财报、如何根据财报来评估公司的书,碰巧这本《手把手教你读财报》满足我的需求作者在副标题就开门见山的说,财报是用来排除企业的,财报不合格,不清晰的,或者对财报有疑问的应该优先排除利用财报排除企业优秀的企业各有各的优点,而垃圾企业的财报却有一些相似。我们通过阅读财报能首先排除一些不值得投资的企业,根据本书的内容,财报有问题的企业大致有下面的一些问题:无法按时发布年报第三方独立的会计事务所未出示标准无保留意见资产无法核算,例如书中举例养鱼池中的鱼鳖无法核算只能通过进货的发票来计算,存在大量的造假空间跨界开展业务的,比如原来是做食品行业的,最近看到ai比较火慢慢转入到ai行业公司突然改变会计政策,例如改变折旧计算的规则或者更改会计事务所账上没几个钱还容忍其他企业长时间欠款存货周转期变长但是伴随着营业额增加存货在销售额未增加的情况下大量增加,有可能是货卖不出去了公司的利润主要来自于偶然的营业外收入长时间经营现金流为负的需要持续大量现金投入才能产生利润的企业,虽然看着利润或者经营性现金流很多,但是扣除来年的投入实际没剩多少在建工程持续投入增大并且长时间没有看到回报管理层变化巨大,董事会集体辞职优秀企业的财报特征“其他应收款”和“其他应付款”科目涉及金额极小,甚至为零有息负债率低。(原则上说,如果有息负债率超过总资产的60%,企业算比较激进)轻资产公司优于重资产公司。【“当年税前利润总额/生产资产”,得出的比值如果显著高于社会平均资本回报率(按银行贷款标准利率的两倍毛估),则属于“轻公司”,反之则属于重公司。】选择高毛利率的企业。一般来说,毛利率能保持在40%以上的企业,通常都具有某种持续竞争优势。费用(销售费用、管理费及正的财务费用之和)能够控制在毛利润的30%以内,就算是优秀的企业了;费用超过70%的企业关注价值不大。如果只用一个指标来衡量企业的优劣,净资产收益率(ROE)是首选企业现金流肖像中,选择“老母鸡型”和“奶牛型”这两类重点关注。(老母鸡型企业:经营活动的现金流有流入、投入活动的现金流入、融资活动的现金流流出,一般这类企业可以靠经营挣钱并且在通过股利分红来回馈股东或者还债;奶牛型企业:经营活动的现金流流入、投资活动的现金流流出、融资活动的现金流流出;这类企业经营不错并且有计划增加投资来扩大生产以其未来有更好的营业收入,并且融资活动的现金流流出说明在还债或者回馈股东)虽然我总结一些特征,并不是说要严格按照这个标准来筛选企业,按照本书副标题——财报是用来排除企业的,在阅读财报的时候应该假设这份财报有问题带着怀疑的眼光来看,对每个数据多留点心,稍微有疑问的应该去财报中尝试找到解释,一旦发现解释不了或者你不信任财报中给出的解释,那么它就属于垃圾企业,不值得投资
2025年08月17日
1 阅读
0 评论
0 点赞
1
2
...
34