Halt in Air

Lay burdens down and travel light!

《巴菲特传》摘要

作为股神,国外有关巴菲特的书非常多,国内也引进了不少,这本《巴菲特传》是由一位《华尔街日报》的财经记者罗杰•洛温斯坦写的。 巴菲特成功的四个主要因素 丰富的商业经验 巴菲特其实并不是一个单纯的投资者,而是他还是一个生意人,还是企业的经营者和管理者。这种独特的交叉性经验是他取得巨大成功的最重要因素。 选择最好的投资老师 二十多岁的巴菲...

《穷查理宝典:查理芒格的智慧箴言录》摘要

查理芒格是股神沃伦巴菲特的合伙人,是巴菲特的长期密切合作的拍档,巴菲特的所有投资都要参考芒格的意见。微软创始人比尔盖茨甚至夸赞说,“查理芒格是他遇到过的最渊博的思想家”。 查理芒格的三个核心思维方法 多元思维模型 查理芒格认为,现实世界的种种问题,很少是正好落在某一个学科的界限里面的,而往往是横跨多个学科的。为避免“铁锤人综合症”,多学科的学习就非常重要。芒格和巴菲特搞投资,靠的就是这...

NFA 与 hyperscan

1. 引言 正则表达式和 NFA (Nondeterministic Finite Automata,非确定有限状态自动机)是形式语言的两种不同的抽象表达方式。在诸如文本编辑器的高级“查找和替换”以及许多编程语言中,人们都习惯使用正则表达式来表示字符串的匹配模式。然而,当计算机执行匹配程序时,NFA 却是更加适合的一种格式。 Hyperscan 作为一款正则表达式匹配引擎,其核心部分是对...

认识 Hyperscan

basic knownledge of Hyperscan

1. 引言 项目上考虑使用 Hyperscan 优化匹配性能,因此做一些了解及记录。 Hyperscan 是 Intel 推出的一款专注于高性能的多模、流式匹配的正则表达式引擎。其 C API 主要包含 编译(Compilation) 和 扫描(Scanning) 两部分,源码可从 GitHub Repo 下载。 2. 编译 Hyperscan 编译器将传入的正则表达式转换成模式数据...

Manacher’s Algorithm

Linear Time Longest Palindromic Substring

1. 概述 回文子串也是字符串相关的常见题目。本文介绍一种时间复杂度为 O(n) 的最长回文子串算法。 2. 蛮力算法 先介绍一种简单思路。 给定长度为 n 的字符串,则其潜在的回文子串的中点有 2n-1 个位置,第1个字符处,第1、2个字符间、第2个字符处。。。第 n 个字符处。顺序考察每个中点,向左右做匹配扩展,记录当前最长的子串及其长度。 该算法的时间复杂度为 O(n^2),...

在 PostgreSQL 查找结果中添加序列号

add sequence number in postgresql select list

问题描述 需要在 PostgreSQL 的查询结果中添加一个递增的序列号。 解决方案 调用内置窗口函数 在网上找到了内置窗口函数 row_number() 可以解决该问题。 函数处理的行的集合可以称之为一个窗口(window)。row_number() 函数可以为窗口中的每一行分配一个唯一整数,语法如下: ROW_NUMBER() OVER( [PARTITION BY c...

字符串匹配算法小结

simple implementation of KMP, BM, Horspool, Sunday Algorithm

1. 概述 经常碰到类似这样的问题,要求找出文本 T[1..n]=abaabaabc 中模式 P[1..m]=abaabc 的出现/有效位移。汇总网上常用算法做一些记录。 2. 朴素算法 最简单直接的想法,就是对 n+m-1 个可能的每一个有效位移 s 检查是否满足条件 P[1..m]=T[s+1..s+m]。 func NaiveStringMatch(T,P string) []...

认识 DPDK

understand the theory of DPDK

1. 引言 项目上选用 dpdk 收包,因此对其做个初步了解,特此记录。 DPDK 全称 Data Plane Development Kit,是 Intel 推出的高速数据包处理套件,依据官方性能测试报告 DPDK 17.05 Intel NIC Performance Report ,单核性能可达到如下程度: DPDK 主要提供以下4个库: 多核架构(multicore ...

认识 RCU

understand the theory of RCU

1. 简介 RCU( Read-Copy Update)是内核中以读为主场景下的一种同步机制。 不需要使用锁,可以支持单个 updater 和多个 reader 的并发。对于被RCU保护的共享数据结构, reader 不需要获得任何锁就可以访问它,但 updater 在访问它时首先拷贝一个副本,然后对副本进行修改,最后在适当的时机把指向原来数据的指针指向新的版本。 RCU 一个重要的概...