颜林林的“左耳听风ARTS”打卡记录

ARTS第十六周(2020年1月6日~12日)

2020-01-06

Algorithm

LeetCode题库

编号 难度 题目 我的解答 执行用时 内存消耗 排名
59 中等 螺旋矩阵 II 200106-1.cpp 4 ms 8.7 MB 92.79%
60 中等 第k个排列 200106-1.cpp 100 ms 8.2 MB 21.30%
61 中等 旋转链表 200106-1.cpp 12 ms 9 MB 63.86%
62 中等 不同路径 200107-1.cpp 0 ms 8.2 MB 100.00%
63 中等 不同路径 II 200107-1.cpp 8 ms 9.1 MB 45.88%
64 中等 最小路径和 200107-1.cpp 8 ms 10.4 MB 89.43%
65 困难 有效数字 200108-1.cpp 4 ms 8.2 MB 87.72%
66 简单 加一 200108-1.cpp 0 ms 8.6 MB 100.00%
67 简单 二进制求和 200108-1.cpp 0 ms 8.7 MB 100.00%
68 困难 文本左右对齐 200108-1.cpp 8 ms 9.1 MB 22.76%

Review

CMake使用技巧

链接文章: Funky CMake

这一篇文章里,给出了作者从实践中得来的一些关于CMake的非正统使用技巧。主要是利用CMake提供的一些基础支持,用于方便地做第三方支持库的获取、编译、部署应用。

CMake定义了自己的一套语法,用来在不同操作系统平台下,生成对应的make,从而实现跨平台的编译环境构建。相关的一些参考学习文章链接:

Tip

shell命令的并行执行

  • 方式1 - 后台执行

    1
    2
    3
    4
    
    $ command-1 &  # 后台执行第一个命令
    $ command-2 &  # 后台执行第二个命令
    $ jobs  # 查看后台命令列表
    $ wait  # 等待后台命令结束
    
  • 方式2 - 开多个终端

    可选工具:

  • 方式3 - GNU parallel

    这是本次技巧总结的重点,它提供了非常灵活的运行方式,来帮助用户组合出多个命令,并且并行执行它们:

    1
    2
    
    $ cat > commands.txt     # 通过各种方式生成一系列命令,每行一个命令
    $ parallel commands.txt  # 并行执行这些命令
    

    输入的也可以是参数,然后被追加到同一个命令后面,例如:

    1
    
    $ find . -name '*.html' | parallel gzip --best
    

    或者,也可以命令行直接指定多个参数(使用:::),让其逐个枚举并生成需要并行的命令:

    1
    
    $ parallel gzip --best ::: *.html
    

    参考:Manpage of GNU parallel

  • 方式4 - seqpipe

    https://github.com/yanlinlin82/seqpipe/

    这是我自己开发的流程框架工具。其主要目的是为了记录详细的运行命令行参数及日志。在未正式发布的第5、6版本中,我仿照GNU parallel写了一些最基本的并行支持,后续考虑参考GNU parallel和其他类似工具,提供各种更灵活简便的使用方式。

Share

命令行下的数据分析工具

分享文章:An Introduction To Data Science On The Linux Command Line

这篇文章介绍了常用了Linux命令行,大多数都是我平时经常在使用的,对于很多数据清洗过程,的确很方便。

此外,为了扩展上述命令,更简便地处理TSV(TAB separated values)格式文件,以及对Excel的输入输出等功能,我还开发了一个tsv工具,并在实践过程中,不断完善其功能。

高效Linux命令行

分享公众号文章:15个相见恨晚的 Linux 神器,你可能一个都没见过

这些Linux工具的确对已有被替代工具,在效率和易用性上,做了大量的优化,值得尝试并引入日常使用。