• Python编译成Pyc和Pyo文件

    什么是pyc文件和pyo文件

    pyc文件是Python的字节码(byte code)文件,是一种二进制文件。pyc文件跨平台,由python的虚拟机加载执行。pyc文件与Python的版本有关,不同版本的Python编译出的pyc文件不同。

    pyo文件是优化(optimize)后的字节码文件。

    编译成pyc文件

    可以在命令行执行以下命令来将Python源码文件编译成pyc文件:

    python -m py_compile $filename
    

    其中,$filename是要编译的Python源码文件名。

    也可以编写一下脚本来将Python源码文件编译成pyc文件:

  • C和C++中的sleep函数

    sleep这一功能在不同的编译器中实现不同,API也有差别。

    GCC编译器的实现

    GCC编译器中,sleep定义在<unistd.h>中。函数原型:

    /* The sleep() function is, perhaps, the most commonly used of all the
     * process/thread suspension APIs; it provides support for specification
     * of suspension periods ranging from 1 second to ~136 years.  (However,
     * POSIX recommends limiting the maximum period to 65535 seconds, to
     * maintain portability to platforms with only 16-bit ints).
     */
    unsigned _cdecl __MINGW_NOTHROW sleep( unsigned );
    

    注意,在GCC的实现中,sleep的单位为秒(second)。

  • Haskell GHCi使用

    What’s GHC ?

    GHC(Glasgow Haskell Compiler): an interactive and batch compilation system for the Haskell 98 language.

    GHC has two main components: an interactive Haskell interpreter (also known as GHCi), and a batch compiler, described throughout. In fact, GHC consists of a single program which is just run with different options to provide either the interactive or the batch system.

    What’s GHCi ?

    GHCi是一个GHC的交互式环境,在GHCi中可以交互式地求得对Haskell表达式的值,Haskell程序也可以在GHCi中被解释。GCHi还包含了一个交互式的Haskell调试器。

    GHCi的常用命令:

  • C语言中的函数指针

    函数指针是C语言的灵魂之一,基于C语言实现的面向对象,底层都以函数指针为基础。

    函数指针的定义

    C语言中,可以通过以下方式定义函数指针:

    type (*fn)(args)
    

    其中,fn为指针变量名,type为指针所指向的函数的返回值类型,args为指针所指向的函数的参数列表。可以通过&运算符对函数指针赋值,通过(*fn)()的方式调用。举例:

  • C和C++中的回调函数

    回调函数(Callback Functions)

    回调函数是指一个通过函数指针调用的函数。回掉函数不是由该函数的实现方法直接调用,而是在特定时间或条件发生时由另一方调用的,用于对该事件或条件进行响应。

    回调函数的简单实现

    C和C++中,可以通过函数指针的方式实现回调函数。如下例:

  • Grep

    指定要搜索的单词

    grep -w "word"
    

    搜索以特定字符串开头的单词

    grep '\<word'
    

    搜索以特定字符串结尾的单词

    grep 'word\>'
    

    搜索以特定字符串开头的行

  • Python Decorator

    Decorator, 装饰器。Decorator的用途在于允许在函数和类中嵌入或者修改代码。

    classmethod and staticmethod

    staticmethod(function)
    

    这将返回一个function的静态方法。把类的一个方法的声明为静态方法,具体用法如下:

    class C:
        @staticmethod
        def f(arg1, arg2, ...): ...
    

    或者

    class C:
        def f(arg1, arg2, ...): ...
        f = staticmethod(f)
    
  • C语言控制台程序光标位置与文字颜色

    Windows平台

    控制光标定位

    Windows环境下可以通过调用WIN32 API来实现光标定位,具体实现如下:

    #include <windows.h>
    void gotoxy(int x, int y) {
        COORD cursorPosition;
        cursorPosition.X = x;
        cursorPosition.Y = y;
        // COORD cursorPosition = {x, y};
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cursorPosition);
    }
    

    注意:X, Y 的值都是从 0 开始的。

  • Manacher算法

    Manacher算法是一个用来求解最长回文子串(Longest Palindromic Substring)的高效算法。其核心是在枚举回文字串的中心位置,并在计算其对应的回文子串时充分前 面的已经算出来的结果。

  • 树的最长路径

    树的最长路问题是一类求解树上两点之间最长距离的问题。针对此问题,有这样两类算法:DFS求解和树形DP。本文将以 HihoCoder 1050 : 树中的最长路 一题为例, 详细阐述这两种解法。


Subscribe via RSS