编程珠玑笔记(2)–啊哈!算法(I)

  • 问题A
  •   给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数(在文件中至少缺失一个这样的整数)。在具有足够内存的情况下,如何解决该问题?如果有几个外部的“临时”文件可用,但是仅有几百字节的内存,又该如何解决该问题?

  • 解答
  •   我们从表示每个整数的32位的视角来考虑二分搜索。算法的第一趟(最多)读取40亿个输入整数,并把起始位为0的整数写入一个顺序文件,把起始位为1的整数写入另一个顺序文件。在这两个文件中,有一个文件最多包含20亿个整数,我们接下来将该文件用作当前输入并重复探测过程,但这次探测的是第二个位。如果原始的输入文件包含n个元素,那么第一趟将读取n[……]

    Read more

    编程珠玑笔记(1)–开篇

  • 作者在书中经过与友人的讨论后对问题的准确描述
    • 输入:一个最多包含n个正整数的文件,每个数都小于n,其中n=107。如果在输入文件中有任何整数重复出现就是致命错误。没有其他数据与该整数相关联。
      输出:按升序排列的输入整数的列表。
      约束:最多有(大约)1MB的内存空间可用,有充足的磁盘存储空间可用。运行时间最多几分钟,运行时间为10秒就不需要进一步优化了。
  • 实现算法:
  • /* prase 1: initialize set to empty */
      for i = [0,n)
        bit[i] = 0
    /* prase 2: insert present elements into t[......]

    Read more

    Metapost绘图入门

    本篇内容主要参考网上流传的Alpha Huang的LATEX Notes v1.24文档

    • 介绍

    METAPOST是一种图形绘制工具,由Knuth的学生John D. Hobby于1989年开始设计。其主要优点是输出的是EPS,而且支持彩色。Knuth声称自己画图时只用METAPOST。

    • 准备工作

    用户需要将METAPOST的源文件(.mp)用一个命令程序mpost编译为一种特殊的EPS,也称作MPS,然后再把MPS插入LATEX源文件中使用。

    一个METEPOST源文件可以包含多个图形,一般形式如下。每条语句以分号“;”结尾,注释行以百分号结尾。

    beginfig(1);[......]

    Read more

    免密码,用别名登录ssh

    【来自春哥早先的资料,表示感谢。】

    1.生成密钥对

    $ ssh-keygen -t rsa
    一路回车
    $ cd ~/.ssh
    $ ls
    可以看到生成了id_rsa.pub, id_rsa。
    

    2.把公钥传到服务器上

    $ ssh-copy-id -i id_rsa.pub linhan@202.38.xx.xx
    输入密码
    

    3.测试无密码登录

    $ ssh linhan@202.38.xx.xx
    应该不需要密码
    

    4.配置别名

    $ cd ~/.ssh
    $ vi config
    输入如下内容:
    
    GSSAPIAuthentication no
    host scc
    hostname 202[......]

    Read more

    Ubuntu 配置笔记

            系统不折腾了,隔一段时间就忘了;或者又出来新的玩意儿,一切又要从头开始 Google。没办法,好记性不如烂笔头,继续记录折腾系统的过程。

  • Ubuntu 文字界面登陆
  •         要求很简单,就是关掉X。这是我在安装 nVIDIA 显卡驱动时遇到的一个需求。提供两种方法实现。

    I. 编辑 grub 启动项,向 linux 一行中增加text选项。如:
    linux /boot/vmlinuz-3.8.0-19-generic root=UUID=5e829371-70f9-4ffa-a735-0a19a1fe27c1 ro quite splash text $vt_han[......]

    Read more

    Linux 下裁剪pdf文件白边的简单命令

            手机上阅读pdf文件十分方便,但手机屏幕相对比较小,要使得字体看起来比较舒服,就要横屏,还要把页面放大到只显示中间文本内容,而两侧的白边到屏幕外面去的程度。可是这样在滑动翻页的时候常常会左右移动,大大影响阅读体验,让人直想回到电脑屏幕上去看。这里找到一个裁剪pdf白边的小技巧,对非扫描类文档试验过,效果很好。相信这个方法对于小尺寸平板也是有很大用处的,对于操作不太方便的e-ink屏电子书就更不用说了,绝对杀手级,体验华丽丽地提高一个层次。
    主要操作步骤如下。

    • 裁剪白边
    • 命令很简单:

      $ pdfcrop input.pdf output.pdf
      

      如果要稍微留一点白边[……]

    Read more

    Ubuntu修改gcc版本

            经常在Linux系统上编译开源软件,有时候会发现一些奇怪的编译错误,百搜不得其解。这种情况往往与当前主机的特定配置有关,最常见的是编译器的版本差异。所以,学会在同一平台上管理使用不同版本编译器是很重要的。本文就是在ubuntu 12.10系统上安装使用gcc4.4的实例。

  • 安装 gcc4.4,g++4.4
  • $ sudo apt-get install gcc-4.4
    $ sudo apt-get install g++-4.4
    
  • 查看当前配置情况,在 /usr/bin 目录下:
  • $ ls[......]

    Read more

    Latex笔记-基本布局

    • 目录改用中文标题并且居中
    • \renewcommand{\contentsname}{\centerline{~}}
      
    • 中英文摘要
    • \renewcommand\abstractname{\Large{摘要}}
      \begin{abstract}
      中文摘要
      \end{abstract}
      \renewcommand\abstractname{\Large{Abstract}}
      \begin{abstract}
      英文摘要
      \end{abstract}
      
    • 中文日期
    • \renewcommand\today{\number\year\number\month\number\da[......]

    Read more

    IPMI 管理工具小记

  • 安装 ipmitool
  • # yum install ipmitool
    # apt-get install ipmitool
    
  • 内核加载
  • # modprobe ipmi_msghandler
    # modprobe ipmi_devintf
    # modprobe ipmi_si
    

    DELL的<channel_no>是1,HP的是2,超微的是1。

  • IPMI 访问–几个厂商的默认用户名和密码
  • 联想: albert admin
    超微: ADMIN ADMIN
    泰安的主板: root superuser
    浪潮: root superuser
    
  • 查看 IPMI 用户
  • $[......]

    Read more