分类: 感悟

  • Effective STL 读后感

    这本书的全名叫《Effective STL — 50条有效使用STL的经验》,书其实已经有点历史了,Meyers在2001年时给它写的前言,如今已经2022了。

    正如上面所说,因为这本书已经有些年头了,如果你已经是C++11、14、17、20的使用者,可以把第6章函数子、函数子类、函数及其他的内容快速带过看,因为std::functional以及lambda函数已经让C++函数类支持有了显著提升。

    简略写一下对我而言有用的一些经验:

    第12条:切勿对STL容器的线程安全性有不切实际的依赖
    1. 多线程读是安全的
    2. 多线程对不同容器做写入是安全的
    第14条:使用reserve来避免不必要的重新分配

    尽管我认为这应该是C++ Engineer的常识了,不过还是有好多小朋友不知道这个点。

    第23条:考虑用排序的vector代替关联容器

    可以详细看一下。我觉得根本问题是map类的容器对cache不是很友好。连续内存访问总是很香的。

    第25条:熟悉非标准的散列容器

    写书的时候还没有stl::unordered_map。不过即便放2022年,我也觉得可以看看STL之外的散列容器实现,比如robin-hood-hashing。曾经用过比较坑的一个容器是boost::flat_map,千万别认为它是O(1)的实现。

    第31条:了解各种与排序有关的选择

    <algorithm>头文件里有很多宝藏,在选择自己实现之前,最好看看STL有没有帮你写好了轮子。

    第32条:如果确实需要删除元素,则需要在remove这一类算法之后调用erase

    曾经有个说法是std::move does not actually move anything, 对于std::remove也有点类似。

    第44条:容器的成员函数优先于同名的算法

    如题。

    第47条:避免产生“直写型”(write-only)的代码

    工程上非常中肯的一条经验。如果没有特殊原因(如及其苛刻的性能要求),尽量不要写出非常难懂的代码,不然几个月乃至几年之后你来调试自己写的代码时也会骂娘。

    代码被阅读的次数远远大于它被编写的次数

  • 2021阅读书单

    2021年看起来是放羊的一年,不知不觉阅读的时间减少了。

    对冲之王:华尔街量化投资传奇

    这本书当成小说来看挺不错的,讲的是华尔街(早期)的一些名角的发家史。这些人相互之间也有联系,书中很好地把他们串了起来。那么到底金融是不是赌博呢?看完我又感觉到了一丝矛盾。

    另外,回想起这本书,也推荐一部华尔街主题的电影——《大空头》。

    推荐指数:4/5

    雪人

    血腥、暴力、一丁点色情。这部悬疑小说看的时候会让人停不下来,疑云在最后一刻才得以破开。书中对于作案手法及过程描述的非常详细,看的有点瘆人…

    此外这本书是我今年在Kindle (硬件)上看的唯一一本书,依然觉得Kindle目前还是只适合看小说,带有图片或者代码的书本还是iPad靠谱。

    推荐指数:5/5

    区块链:通往资产数字化之路

    这本书居然是OREILLY出版。一本非常科普性质的书,如果对区块链的概念一无所知的话还是推荐阅读的,说它是技术书也勉强吧,里面还是有一丁点代码的。老实说看完这本书,我的资产数字化之路还是一样坎坷。

    推荐指数:3/5

    市场微观结构——理论与中国经验

    好像是某“内部”人士写的一本书,讲了一些A股市场相比于国际市场在微观结构上特殊的地方,有一些实证研究,分上下两篇:理论基础、中国经验。下篇看起来能了解一些大陆市场的“发家史”,这本书虽然有点老了,但里面的市场特征有些在现如今还是能关注到的。

    推荐指数:4/5

    此外,以下是正在阅读的书…

    Trades, Quotes and Prices: Financial Markets Under the Microscope

    这本书从非常量化的角度在解析市场微观结构,由浅及深。每一个章节的逻辑(看到目前)基本上是做一些假设,然后推导公式,最后会结合演算结果于实证。读起来需要一些高等数学或线性代数的知识,于我而言阅读起来还是有些吃力的,需要1小时或以上的连续阅读时间,不然下次读的时候”恢复现场”就得好久。

    尽管如此,全书的结构条理是很清晰的,图表排版的也很翔实。

    进度20%,推荐指数:4/5(啃起来有点吃力)

    深入Linux内核架构

    买过实体书里最厚的一本。这本书我是挑感兴趣的章节看的,对于Linux的方方面面写的算是详尽了,各个组件几乎都有涉及。对于复杂的概念逻辑或是结构,都能给出简明清晰的图来解释。现在想来这本书我应该早两年就开始看的,里面一些设计理念,在其他软件设计的场景里是通用的。

    进度:35%,推荐指数:5/5

  • 更换到WordPress博客平台

    这可能是我逐渐衰老的标志,因为Typecho是一个好的东西,但是和WordPress平台的定位明显是有区别的。

    Typecho的一切都特别的简洁,对于喜欢稍加钻研的Coder其实是很不错的选择。Typecho提供了一个很稳定的脚手架,但是脚手架上的东西得自己找或者自己搭。约一年的使用,每当我需要什么新功能的时候,我都需要去Google搜一下,然后搜到的东西有60%概率是不能立即使用的,这让我没办法在时间有限的情况下去关注我想要提供的内容。但是存在即合理,这个特性(bug / feature?)让Typecho的用户享受到了很多DIY的乐趣,我是其中之一。

    WordPress一向因为繁杂、体量大而被诟病,但不可否认的是当我想要什么功能的时候,我总能以比较快的速度找到相应的插件。这可能就是生态的力量,尽管很繁杂并且各种条条框框,但是稳定的代码支持和社区支持能够给“想集中精力在内容创作”上的人一个安全感。

    特此写一篇文章,是因为我突然意识到WordPress和Typecho是两种范式(Paradigm),可以迁移到很多地方。

    另外,推荐一下过程中使用的很好的Typecho插件ByeTyp。SQLite用户记得不要使用它的“最新“release (tag=1.4)版本,而是直接用最新的代码,不然会有SQL Query Error。