Currently browsing category

学习笔记

ACM 题目解答:统计方案

Description
在一无限大的二维平面中,我们做如下假设:
1、每次只能移动一格;
2、不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走);
3、走过的格子立即塌陷无法再走第二次。
求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)。
Input
首先给出一个正整数C,表示有C组测试数据。
接下来的C行,每行包含一个整数n(n< =20),表示要走n步。 Output 请编程输出走n步的不同方案总数; 每组的输出占一行。 阅读全文 “ACM 题目解答:统计方案” »

ACM 题目解答:寄居蟹与海葵

Description
寄居蟹与海葵是一对合作互助的共栖伙伴。海葵是寄居蟹最称职的门卫。它用有毒的触角去蜇那些敢来靠近它们的所有动物,保护寄居蟹。而寄居蟹则背着行动困难的海葵,四出觅食,有福同享。
但并不是所有寄居蟹和海葵都可以做搭档的。那就要看海葵的身体是不是符合寄居蟹的螺壳。
海葵的身体是有褶皱的,而寄居蟹的螺壳同样凹凸不平,我们可以用一个大写字母组成的字符串来表示它们的高低程度,其中A代表0,B代表1,依次类推。我们称两者相加等于25的就算是吻合,比如A和Z相吻合,B与Y吻合,依次类推。
只要海葵身体的部分序列与寄居蟹外壳的序列相吻合,就称他们可以一起生活。
阅读全文 “ACM 题目解答:寄居蟹与海葵” »

ACM 题目解答:FILE MAPPING

Description

It is often helpful for computer users to see a visual representation of the file structure on their computers. The “explorer” in Microsoft Windows is an example of such a system. Before the days of graphical user interfaces, however, such visual representations were not possible. The best that could be done was to show a static “map”of directories and files, using indentation as a guide to directory contents. For example:

ROOT
|	DIR1
|       File1
|	File2
|	File3
|	DIR2
|	DIR3
|	File1
File1
File2

This shows that the root directory contains two files and three subdirectories. The first subdirectory contains 3 files, the second is empty and the third contains one file.
阅读全文 “ACM 题目解答:FILE MAPPING” »

DigitalOcean 网速测试

AWS 一年免费的 micro instance 就快要到期了, 但是国内访问 AWS 的速度太慢了,所以不想继续使用 AWS。打算换一个 VPS。

在 Twitter 上看见 Anthony 在派发代金券,于是要了一张。

Digital Ocean 提供纽约、新加坡、荷兰三个地区的主机。
我依次在三个地区建一个主机,分别测试从国内访问它们的速度,并与 AWS 的悉尼主机进行比较。
阅读全文 “DigitalOcean 网速测试” »

Effective Java: 使用静态工厂方法

这是 Effective Java 的第一节的标题。本文更多的是摘译该节的内容。

什么是静态工厂方法(static factory methods)

static factory methods 翻译过来就是静态工厂方法。它并不是 GOF 提的设计模式中的一个设计模式。
我们看下面的例子(摘自JDK 1.7)。

public final class Boolean implements java.io.Serializable,
        Comparable<boolean> {

    public static final Boolean TRUE = new Boolean(true);
    public static final Boolean FALSE = new Boolean(false);
        
    public static Boolean valueOf(boolean b) {
        return (b ? TRUE : FALSE);
    }
}</boolean>

我们要获取一个 Boolean 的一个对象,可以使用构造函数 new Boolean(true) 也可以使用里面的静态方法 Boolean.valueOf(true),后者便是静态工厂方法。
阅读全文 “Effective Java: 使用静态工厂方法” »

Linux Ext4 文件系统对 MySQL 性能的影响

最近要做一个 MySQL 数据库迁移,就是将一个 MySQL 中的数据迁移到另外一个 MySQL 数据库中。我们碰到了一个 Ext4 文件系统 barrier 的问题。Linux Ext4 文件系统默认开启了 barrier,我们可以在 man mount 里看到下面的这段话

The ext4 filesystem enables write barriers by default.

默认开启的 barrier=1 会极大的影响 MySQL 的性能,约三倍左右。
我做了一个实验测试 barrier=1 对 MySQL 性能的影响。
阅读全文 “Linux Ext4 文件系统对 MySQL 性能的影响” »

Ubuntu 安装备忘录

新年回来开工第一天就遇到电脑故障,使用有线网络上网的时候,丢包率达到 80%,严重影响到上网速度。最后弄啊弄居然把 Ubuntu 桌面给弄坏了。纠结的,既然无法启动了,那就使用杀手锏了:重装 ^_^
这里记录安装的整个过程,以后就不用到处 google 找教程了。

硬盘安装 Ubuntu
  1. 下载最新的 Ubuntu iso 镜像,放在一个空余的分区。(我用的是 NTFS 的分区,未试验是否可以使用 Ext4)
  2. 重启系统,进入 Grub2 引导界面,按 C 进入手动引导界面
  3. 输入下面的命令
    insmod loopback
    loopback loop (hd1,msdos5)/ubuntu.iso
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu.iso 
    initrd (loop)/casper/initrd.lz
    boot
  4. 引导 ISO 镜像之后,按照提示安装 Ubuntu

阅读全文 “Ubuntu 安装备忘录” »

一键快速配置 VIM

每次有新的服务器,或者换新的电脑的时候,配置 VIM 总是很麻烦。不管是一步一步的配置,还是拷贝原有的配置文件,都不是很便捷。有时候要拷贝配置文件的时候,还会发现找不到原来用的配置文件了。

在网上看到一个 Gist。本来挺好用的,但是这个 gist 链接坏掉了,无法打开。不过还好的是自己有个备份,所以稍微做了一下修改保存到自己的 Github repo 里:https://github.com/hellojinjie/vimrc

只要在 bash 里切换当前目录到主目录运行下面命令

curl https://raw.github.com/hellojinjie/vimrc/master/vim.sh | sh

就可以一键完成 VIM 的配置。

如果你对这个配置也感兴趣的话,欢迎 fork,并做适合自己的修改。