二、问答(4×10分)
1. 在网络信息爆炸的时代,搜索引擎扮演着越来越重要的角色,当人们想要从网上获取全面、详尽的信息,只需要在搜索框里输入几个关键词便能获取所需。请从计算机网络原理的角度简要描述一下用户从提交关键词到结果的展现这一过程中都发生了哪些事情。
2. 你认为一个优秀的文件系统需要具备哪些要素?
3. 日志切分在运维中扮演着重要角色,日志切换工具通常从一个管道文件读取日志内容,并以小时、或天、或星期等单位将日志内容保存到不同的文件中。请使用任意脚本实现一个简单的日志切分工具。
该工具的调用参数为:日志文件的路径 保存路径前缀 时间格式后缀
举例说明:
./cronolog.sh /var/log/something.log /tmp/saved_log/my.log %Y%m%d(为时间命令date支持的参数,%Y为年,%m为月,%d为日)
执行后,该脚本会一直运行并不断读取/var/log/something.log中的内容 ,把每一天的日志信息分别保存到如下日志中:
……
/tmp/saved_log/my.log.20090501
/tmp /saved_log/my.log.20090502
/tmp /saved_log/my.log.20090503
……
4. 给1~N的每一个数字标记一种颜色,使得其中任意两个数字A,B,如果A可以整除B,则A和B必须标记不同的颜色,要求所使用的颜色最少,并得到1~N的每一个数字所标记的颜色(用数字表示)。请编写程序解决这个问题。
例子:
输入:(1 <= N <=10000)
16
输出:
5
编号:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
颜色:1 2 2 3 2 3 2 4 3 3 2 4 2 3 3 5
1Answer:
网络编程方面的知识。
封装,发送,等待处理,接收,解析。
http://www.networkdictionary.cn/ask/5-20080528-7644
在索引数据库中搜索。
搜索的处理过程是对用户的搜索请求进行满足的过程,当用户输入关键词搜索后,通过提交查询请求给“查询服务器”(通过建立socket,然后向服务器提交请求),搜索服务器对应关键词字典,把搜索关键词转化为wordID,然后在标引库中得到docID列表,对docID列表进行扫描和wordID的匹配,从网页“索引数据库”中找到符合该关键词的所有相关网页。
对搜索结果进行处理排序。
所有相关网页针对该关键词的相关信息在索引库中都有记录,“网页评级”把查询请求和链接信息结合起来对搜索结果进行相关度的评价,通过“查询服务器”按照相关度进行排序,返回前K篇结果(不同的搜索引擎每页的搜索结果数不同)返回给用户。
2Answer:
需要注意高性能(读写速度及获取速度)、可靠性(数据一致性,健壮性),扩展性。
参考http://www.itmop.com/network/system/linux/0803544.html
http://blog.chinaunix.net/u3/94683/showart_1955952.html
一个优秀的文件系统,应该具备: 超级块,i节点,目录块,数据块,间接块,并允许文件中产生孔。
3Answer:
http://bbs3.chinaunix.net/archiver/tid-1472916.html
运行方式:
1) test /log /tmp %Y%m
2) test /log /tmp %Y%m%d
因不好确定文件名,就随便用了下find命令查找最近1天内修改的*.log文件当作源文件。
[quote]
#!/bin/sh
usage="$0 <logPath> <SavePath> <logDateFormat>"
if [ $# -ne 3 ]; then
echo "$usage"
exit -1
fi
logPath=$1
savePath=$2
format=$3
if [ ${logPath:0:1} != "/" -a ${savePath:0:1} != "/" ]
then
echo "--path must begin with /."
exit -1
fi
if [ ! -d "$logPath" ]; then
echo "--path $logPath is not exists."
exit -1
fi
if [ ! -d "$savePath" ]; then
mkdir -p $savePath
fi
tmpFormat=${format//%/ %}
for tmp in $tmpFormat;do
if [ $(man date|grep "^ *$tmp"|wc -l) -lt 1 ]; then
echo "--not support date format $tmp"
exit -1
fi
done
find $logPath -mtime -1 -type f -name "*.log"|while read file
do
logFile=${file##*/}
tail -f $logPath/$logFile |cat >>$savePath/$logFile.$(date +$format) &
done 2>/dev/null
4Answer:
http://topic.youkuaiyun.com/u/20090604/19/B60BB1D2-EC6A-4384-B082-D58D9313A521.html
用动规做
算法思想:(是你的输出提醒的我)
对于数字 N : 它的 颜色标号 为 MAX{ 所有因子的颜色标号 } + 1
举例:
对于质数 13 因子只有 1 13 而13是本身,1的标号为 1 所以为2
对于合数 16 因子 2 4 8 ,最大的因子标号是 8的4 所以为 5
如此建立一个 一张2维表就可以
找到因子 查询因子的颜色标号 取最大 + 1作为自己的标号 就OK
自己:
#include "head.h"
#define M 100
void FillColor()
{
int color[M];
int i;
int j;
int max=16;
color[1]=1;
for(i=2;i<=max;i++)
{
for(j=i-1;j>0;j--)
{
if(i%j==0)
{
color[i]=color[j]+1;
break;
}
}
}
for(i=1;i<=max;i++)
printf("%3d",color[i]);
printf("/n");
}
void main()
{
FillColor();
}