一、動態鏈接庫與靜態鏈接庫的區別( 靜態鏈接庫是.lib格式的文件,一般在工程的設置界面加入工程中,程序編譯時會把lib文件的代碼加入你的程序中因此會增加代碼大小,你的程序一運行lib代碼強制被裝入你程序的運行空間,不能手動移除lib代碼。
動態鏈接庫是程序運行時動態裝入內存的模塊,格式*.dll,在程序運行時可以隨意加載和移除,節省內存空間。
在大型的軟件項目中一般要實現很多功能,如果把所有單獨的功能寫成一個個lib文件的話,程序運行的時候要佔用很大的內存空間,導致運行緩慢;但是如果將功能寫成dll文件,就可以在用到該功能的時候調用功能對應的dll文件,不用這個功能時將dll文件移除內存,這樣可以節省內存空間。)
二。百度腳本筆試題:
1.寫腳本實現,可以用shell、perl等。在目錄/tmp下找到100個以abc開頭的文件,然後把這些文件的第一行保存到文件new中。
#!/bin/sh
for filename in `find /tmp -type f -name "abc*"|head -n 100`
do
sed -n '1p' $filename>>new
done
註釋:第一,用到了find命令,其中-type f表示選取普通文件,-name用於設定文件名;第二,head -n 100命令用於取出前100項。第三,sed -n ‘1p’用於取出文件的第一行內容。第四,>>new表示追加到文件new中。
2. 寫腳本實現,可以用shell、perl等。把文件b中有的,但是文件a中沒有的所有行,保存爲文件c,並統計c的行數。【本人不懂perl,理解不動,哈哈~】
[rocrocket@wupengchong shellstudy]$ cat roc.pl
#!/usr/bin/perl -w
open B,"<b" or die "b error.($!)";
open C,">c" or die "c error.($!)";
my $find=0;
my ($myb,$mya);
while(<B>){
$find=0;
chomp($myb=$_);
print "B ",$myb,"/n";
open A,"<a" or die "a error.($!)";
while(<A>){
chomp($mya=$_);
print "A ",$mya,"/n";
if($mya=~/$myb/){
$find=1;
print "FIND!/n";
}
}
if($find==0){
print C $myb,"/n";
}
}
close A;
close B;
close C;
$linenum=`cat c|wc -l`;
print "c line count:",$linenum;