insertion-sort,c语言实现

100年没有写过c语言了。最近觉得有必要把它捡起来。个人认为,C这样的语言,天生就是用来操纵数据结构,摆弄算法的。语法并不难,关键是把数据结构和算法捡起来。先从算法中最常见的,排序算法开始。下面是一个插入排序算法的实现:

/*
 ============================================================================
 Name        : insertion_sort.c
 Author      : ThinkingQuest
 Description : insertion-sort
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>

#define LENGTH(s) (sizeof(s) / sizeof(int))

void printArray(int* array, int size);
void sortArray(int* array, int size);

int main(void) {
	int array[] = {10, 4, 6, 1, 5, 3, 2, 7};

	unsigned long int length = LENGTH(array);
	sortArray(array, length);
	printArray(array, length);

	return EXIT_SUCCESS;
}

void sortArray(int* array, int size) {
    if (size <= 1) {
    	return;
    }

    int i;
    for (i = 1; i < size; i++) {
    	int key = array[i];
    	int j = i - 1;
    	while (array[j] > key && j >= 0) {
    		array[j + 1] = array[j];
    		j--;
    	}
    	array[j + 1] = key;
    }
}

void printArray(int* array, int size) {
	int i;
	for (i = 0; i < size; i++) {
		printf("%d, ", array[i]);
	}
	puts("n");
}

(全文完)

使用jdbc,如何正确的在mysql中使用utf8mb4编码

utf8编码时不支持emoji表情的。要使用emoji表情,就需要用utf8mb4编码。 在客户端使用jdbc的情况下,如何正确的使用utf8mb4?

应该在服务端配置character-set-server=utf8mb4, 在Connector/J的连接参数中,不要加characterEncoding参数。 不加这个参数时,默认值就时autodetect。

需要使用emoji的字段设置类型为:
`user_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

参考: http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-charsets.html

(全文完)

linux中的sort

sort -t ‘,’ -g -k2 testsort.file

-t参数用于指定分隔符。如果不指定,默认为tab符和空格。
-g用于指定用数字排序,而不是作为文本排序。(比如34小于123,如果按文本排序,则是123小于34)
-k2指定按照第2列排序。 (列的分隔就时-t参数指定的)

如果需要倒序,可以加上-r参数。 如果要输出到文件而不是在控制台打印,可以加上“-o 目标文件”。

linux中的awk

每次要用awk时,总会想不起来它的写法和参数的格式。每次都要现查。这里记录一下。
awk是一个很复杂的工具,它的格式和参数很复杂。 在这里我只记录自己使用到的情形,以便以后查阅备忘。
之所以不去记录它的完整参数和用法,是因为发现许多人写的博客中有完整的用法,在那复杂的用法中,也许只有1%是我会用的。这道理很类似,我们可以man awk看到完整的用法,但是我却需要很长时间从man那全面的对awk的介绍中找出我所需要的这么一个最简答,最常用的用法。

more mcp_qd_http_access.log | awk -F ‘|’ ‘$9==0{print $7 “t” $8}’

我有一个日志文件,以|分割多列字段。
awk的-F参数用以设置字段之间的分隔符。 -F ‘分隔符’是可选的。
其后的”中是command。前部分的$9==0是判定,只有当第9列的值为0时,才执行后边的指令。
指令放在{}中。 这里时打印除了第7和第8列。 (这里的序列不是从0开始的, $0代表的时整个这一行的文本)。

(全文完)