字符串匹配算法


字符串匹配算法是一个经常使用的算法。具体地说,字符串匹配的任务是:给定一个待搜索的字符串(往往较长,通常称为 haystack),以及一个想要搜索的字符串(往往较短,通常称为 needle),查找 needlehaystack 中出现的第一个位置(从 0 开始)。如果不存在,则返回 -1

特别的,当 needle 为空字符串时,应该返回什么值呢?在 C 语言的 strstr() 以及 Java 的 indexOf() 定义中,此情况下的返回值为0

阅读更多  

  改装 PowerShell


作为 Windows 下的终端, PowerShell 一直以来都显得不太好用, 简陋的背景, 不好看的字体, 难用的命令.

而 PowerShell 事实上还算一款较为强大的命令行工具, 今天就来将其改装成为真正的生产力工具.

主要涉及: 字体, 颜色, 终端, oh-my-posh, PSReadLine

阅读更多  

  Makefile 入门


在 Linux( Unix )环境下使用 GNU 的 make 工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为 Makefile 文件的编写。

所要完成的 Makefile 文件描述了整个工程的编译、连接等规则。其中包括:

  • 工程中的哪些源文件需要编译以及如何编译
  • 需要创建哪些库文件以及如何创建这些库文件
  • 如何最后产生我们想要的可执行文件。

尽管看起来可能是很复杂的事情,但是为工程编写 Makefile 的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个(通常对于一个工程来说会是多个)正确的 Makefile。编译整个工程你所要做的事就是在 shell 提示符下输入 make 命令。整个工程完全自动编译,极大提高了效率。

make 是一个命令工具,它解释 Makefile 中的指令。在 Makefile 文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像 C 语言有自己的格式、关键字和函数一样。而且在 Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。Makefile 在绝大多数的 IDE 开发环境中都在使用,已经成为一种工程的编译方法。

阅读更多  

  Python 中的魔术方法

Python 中有一种比较特别的类方法, 通常使用双下划线包裹着方法的名称, 被称为魔术方法.

英文也称为 magic method 或者 dunder method

阅读更多