#
1.windows cygwin 版本
find . -type d|
du |
gawk '{if($1=="0"){print $2}}' | #我這使用 cygwin判斷 $1==0 ,如果使用 linux 那就 $1=="4"
sort -ru |
gawk '{system("rmdir "$0)}'
2.linux 版本(其實,這個太不嚴謹!)
find . -type d|
du -S |
gawk '{if($1=="4"){print $2}}' |
sort -ru |
gawk '{system("rmdir "$0)}'
3.shell + python
查找 文件夾大小py,參考: 獲取文件夾大小的python代碼
#!/bin/python
import os,sys
from os.path import join, getsize
def getdirsize(dir):
size = 0L;
for root, dirs, files in os.walk(dir):
size += sum([ getdirsize(join(root,dname)) for dname in dirs ]);
size += sum([getsize(join(root, name)) for name in files]);
return size;
dir_path=sys.argv[1];
filesize = getdirsize(dir_path);
print dir_path,"\t",filesize ;
shell
find . -type d -exec python getDirSize.py {} \;|
sort -ru |
gawk '{if($2=="0"){print $1}}' |
gawk '{system(" rmdir "$0)}'
find . -type d #查找文件夾
du #文件夾大小
gawk '{if($1=="0"){print $2}}' #文件夾為 0 輸出
sort -ru #為刪除準備( 比如 文件夾 ./t1 空 ./t1/t11 空 。排序為 先 ./t1/t11 后 ./t1 。這刪除就不會錯 )
gawk '{system("rmdir "$0)}' #野蠻的刪除
其他:
結合sort -u 可以找出最小或最大 幾個文件
#!python
# python this.py /home/xj_liukaiyi/imusic/ ".*128kbps\/.*\.mp3"
import os,sys,re
from os.path import join, getsize
def getdirsize(dir,refile):
for root, dirs, files in os.walk(dir):
for dname in dirs :
getdirsize(join(root,dname),refile)
for name in files :
ffname=join(root,name)
if re.search(refile,ffname):
print "%09d\t%s" % (getsize(ffname),ffname)
dir_path=sys.argv[1];
file_re=sys.argv[2];
filesize = getdirsize(dir_path,file_re);
比如 日志,和shell運行
#!/bin/perl -w
use Time::Local;
my $log_input_file="~/log";
sub set_log_input_file{
$log_input_file=$_[0];
}
#&perl_log("tt","/home/xj_liukaiyi/log");
sub perl_log{
my $log_msg=shift @_;
print $log_msg,"\n";
system 'ttmp1=$(date +%Y-%k-%d);ttmp2=$(date +%M:%S);echo "$ttmp1 $ttmp2:'."$log_msg".'" >>'.$log_input_file;
}
#&system_util("xls -l","~/log");
sub system_util{
my $comm=shift @_;
my @return=system $comm;
if ( $return[(@return-1)] == 0 ) {
&perl_log("[success]".$comm,$log_input_file);
}else{
&perl_log("[error]".$comm,$log_input_file);
}
return $return[(@return-1)];
}
1;
excel 讀取util
require("/home/xj_liukaiyi/src/perl/excel/excelUtil.pl");&parse_excel("2w.xls","歌曲列表","&read_wlh);
#!/bin/perl -w
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtUnicode;
use Encode;
use Unicode::Map();
my $Map = new Unicode::Map("GB2312");
my $excelCODE='gb2312';
my $coslCODE='utf8';
my %parseCache ;
my %writeCache ;
my $oFmtJ = Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map =>$excelCODE);
my $oExcel = new Spreadsheet::ParseExcel;
#
#&parse_excel("all4.xls","樂撲","&read_lp);
# sub read_lp{ $_[1 .. 2.3 ] }
sub parse_excel{
my $sExcelName=shift;
my $sSheetName=shift;
my $action_fun=shift;
my($iR, $iC, $oWkS,$oWkC);
#開啟 excel
my $oBook = $oExcel->Parse($sExcelName,$oFmtJ);
#根據 sheet 名稱匹配
for(my $iSheet=0; $iSheet < $oBook->{SheetCount} ; $iSheet++){
my $t_oWkS = $oBook->{Worksheet}[$iSheet];
my $sWkSName=encode($coslCODE,decode($excelCODE,$t_oWkS->{Name} ));
if($sWkSName=~/$sSheetName/){
$oWkS=$t_oWkS;
last;
}
}
for(my $iR = $oWkS->{MinRow} ;
defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ;
$iR++){
my @arr_row;
for(my $iC = $oWkS->{MinCol} ;
defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ;
$iC++){
$oWkC=$oWkS->{Cells}[$iR][$iC];
my $col_value="";
$col_value=encode($coslCODE,decode($excelCODE,$oWkC->Value) ) if ($oWkC) ;
push(@arr_row,$col_value);
}
push(@arr_row,$iR);
$action_fun->(@arr_row);
}
}
#使用 demo
find . -maxdepth 1 -name "*xls" -exec perl -e '
require("/home/xj_liukaiyi/src/perl/excel/excelUtil.pl");
my $file=$ARGV[0];
sub myRead{
my $str="";
foreach$tmp(@_){
$str+"$tmp\t";
}
system "echo $str >> $file.data";
}
&parse_excel("$file",0,\&myRead);
print "$file\n";
' {} \;
/usr/bin/convmv -r -f UTF-8 -t GBK --notest --lowmem .
文件屬性查看:
file test.mp3
>>test.mp3: MP3, 128 kBits, 44.1 kHz, JStereo
ffmpeg -i test.mp3
>>Input #0, mp3, from 'test.mp3':
Duration: 00:04:31.26, start: 0.000000, bitrate: 128 kb/s
Stream #0.0: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s
At least one output file must be specified
lame :linux 其他格式轉 mp3 工具 ;
位數 --abr 16/8/4
聲道 -m s/m
采樣率 --resample 16/44.1..
碼率/比特率 -b 128/64
lame --resample 16 --abr 16 -m s -b 128 test.mp3 07_128.mp3
ffmpeg : linux 視頻音頻處理
*位數
采樣率 -ar
聲道 -ac 1/2
碼率/比特率 -ab 32/218 <acc>
ffmpeg -i test.mp3 -ar 44100 -ac 2 -ab 32 18_32.aac
<wav>
ffmpeg -i test.mp3 -ar 22050 -ac 1 -ab 32 _32.wav
<wma>
ffmpeg -y -i test.mp3 -acodec wmav2 -ar 44100 -ac 2 -ab 32000 24.wma
sox : linux 開源音頻轉換(只支持開源格式).
<vox_2>
ffmpeg -y -i test.mp3 -acodec pcm_alaw -ar 4000 -ac 1 -ab 32000 22_tmp.wav
sox 22_tmp.wav -r 8000 22.vox
cvs -> root project
到需要掛載到 eclipes的目錄下
1.dos>mvn eclipes:eclipes
2.dos>mvn package
3.eclipes> import > General .. > Existing projectint .... > (所需要 子工程)
工具小腳本
#!/bin/perl
use File::Find;
use Log::FileSimple;
#use strict;
#use warnings;
# 說明:
# 遍歷出 "/cygdrive/c/Documents and Settings/Administrator/"
# 滿足 "^.*\.txt$" 添加文件
# 并運行 "ls -l $fileAllName "
# 運行日志 ./log
#
# perl this.pl
# "ls -l $fileAllName "
# "/cygdrive/c/Documents and Settings/Administrator/"
# "^.*\.txt$"
# ./log
#
# run_comm 參數1 替換說明:
# $filePath 為輸入參數2,遍歷根目錄 "/cygdrive/c/Documents and Settings/Administrator/"
# $fileAllName 為當前遍歷,滿足正則條件的 全路徑+文件名
# $logicFileAllName 為當前遍歷,滿足正則條件的 邏輯路徑+文件名
# $logicFilePath 為當前遍歷,邏輯路徑
# $logicFileName 文件名稱
# $logicFileExp 文件后綴
# (test.txt 文件
# $logicFileName 為 test
# $logicFileExp 為 txt
# )
my $run_comm=$ARGV[0];
my $file_path=$ARGV[1];
my $file_find_rex=$ARGV[2];
my $logfile=$ARGV[3];
my $log = new Log::FileSimple(name=> 'Log::FileSimple logs',
file => "$logfile",
mask => -1,
autoflush => 0,
);
sub fileThumb{
eval{
$_tmp_run_comm=$run_comm ;
if( /$file_find_rex/ ){
$fileNum++;
$_tmp_run_comm=~s/\$filePath/$file_path/g;
my $_file_all_name=$File::Find::name;
$_tmp_run_comm=~s/\$fileAllName/$_file_all_name/g;
my $_logic_file_all_name=$_file_all_name;
$_logic_file_all_name=~s/$file_path//g;
$_logic_file_all_name=~s/^\s*\.//g;
$_tmp_run_comm=~s/\$logicFileAllName/\.\/$_logic_file_all_name/g;
if($_logic_file_all_name=~/^(.*)\/([^\/]*)\.([^\.]*)$/){
my $_logic_file_path=$1;
my $_logic_file_name=$2;
my $_logic_file_exp=$3;
$_tmp_run_comm=~s/\$logicFilePath/\.\/$_logic_file_path/g;
$_tmp_run_comm=~s/\$logicFileName/$_logic_file_name/g;
$_tmp_run_comm=~s/\$logicFileExp/$_logic_file_exp/g;
}
#print $_tmp_run_comm,"\n";
my @return=eval{system("$_tmp_run_comm 2>&1 \|echo \$\? ")};
if ( $return[(@return-1)] != 0 ) {
$log->log(message=>"success($fileNum):$_file_all_name");
}else{
$log->log(message=>"error($fileNum):$_file_all_name");
}
}
}
}
find(\&fileThumb,$file_path);
可能最簡單的 soap 哦!
服務器為 java tomcat
下載服務器:http://www.apache.org/dist/ws/
axis/ 為java
axis-c/ 為 c
1.我這下載的 axis 1_4 版本 ,解壓 /webapps/axis 放到 tomcat 的webapps
啟動tomcat(這就不修改任何,如有需要 該 web.xml 等配置了) 參考 >>
blog 主 還有很多介紹 axis 大家可以 看看 日志 > 其下的 "學習"
直接寫個文件 HelloWorld.jws 放到 %TOMCAT_HOME%"webapps"axis
public class HelloWorld {
public String sayHello() {
return "HELLO soap!";
}
}
等不及 可以使用 看看
http://127.0.0.1:8080/axis/HelloWorld.jws?method=sayHello
結果 :
<soapenv:Envelope>
<soapenv:Body>
<sayHelloResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<sayHelloReturn xsi:type="xsd:string">HELLO soap!</sayHelloReturn>
</sayHelloResponse>
</soapenv:Body>
</soapenv:Envelope>
客戶段
perl cpan >> install SOAP::Lite
#!perl -w
use SOAP::Lite;
print SOAP::Lite
-> proxy('http://127.0.0.1:8080/axis/HelloWorld.jws')
-> uri('http://127.0.0.1:8080/axis/HelloWorld.jws')
-> sayHello()
-> result;
結果: HELLO soap!
安裝參考:
http://www.cnblogs.com/cerxp/archive/2008/04/22/1165620.html
相對 memcached 增強的功能:
1. 墜機后,“緩存”初始化回到斷電前
2. 支持同步(可看成集群) Memcachedb 簡單使用
代價:
比 memcached 慢 15%
參考:http://swik.net/Jabber-linux/Jabber+XMPP+resource/memcachedb%E7%9A%84%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/b1odq
看看我這張 web 系統架構圖,那就知道 使用統一存儲格式的好處了。
在這種結構中你就單純使用 java ,或 php 某一種單一語言描述格式,存儲你集群交互的數據嗎!?使用ProtocolBuffers 吧, Google 已經有 現成的api來幫你擴展了。
參考:http://blog.csdn.net/lcj8/archive/2009/02/17/3900157.aspx

作為 Memcached 就是為集群使用,那么作為在緩存存儲的數據我想也應該適用與各種環境,這時候 數據結構協議 Google ProtocolBuffers
參考:http://code.google.com/apis/protocolbuffers/docs/overview.html
其他語言:http://code.google.com/p/protobuf/wiki/OtherLanguages
(可適用與多種語言,
javascript 讀取緩存中的數據 ,你可以想象下你的 web服務開發 的將來!)
目前學習perl 中 就先上個這的代碼:
參考:
http://search.cpan.org/~gariev/Google-ProtocolBuffers-0.08/lib/Google/ProtocolBuffers.pm#___top
#!/bin/perl -w
use Cache::Memcached;
use Google::ProtocolBuffers;
#開啟 memd
my $memd = new Cache::Memcached{servers => ['10.0.2.15:11211'] };
#聲明 緩存 存儲 protocol 格式
my $key='test';
Google::ProtocolBuffers->parse("
message Person{
required int32 id =1;
required string name =2;
}
",{create_accessors=>1});
my $data=Person->encode({
id=>123,
name=>'liukaiyi'
});
#緩存存儲
$memd->add($key =>$data,3600);
#######################################################################
my $memd = new Cache::Memcached{servers => ['10.0.2.15:11211'] };
my $person;{
#從緩存中取出
$person = Person->decode($memd->get($key));
}
print $person->id,"-",$person->name;
結果:
123-liukaiyi
這大體上可以看出,服務器端口緩存技術。
memcached 官方:http://www.danga.com/memcached/
安裝前,先安裝 libevent
其上為 linux 軟件一般安裝,看他們readme文檔
$>memcached -d -u nobody -m 512 127.0.0.1 -p 11211
如果有異常,
ln -s /usr/local/lib/libevent-1.4.so.2 /lib/libevent-1.4.so.2
參考 http://blog.chinaunix.net/u2/70049/showart_1665279.html
我這就使用 perl 語言了,
其他語言參考 http://code.google.com/p/memcached/wiki/Clients
perl 使用 cpan> install Cache::Memcached ;#會使用 perl 我就不說了
代碼說明:不停對 key 為test 的值進行遞增
#!/bin/perl -w
use Cache::Memcached;
my $memd = new Cache::Memcached{servers => ['127.0.0.1:11211'] };
my $key = 'test';
$memd->add($key => 1,3600) or warn 'Alread added';
while(1){
print $memd->get($key),"\n";
$memd->incr($key) or warn 'FAIL!';
}
使用 telnet 127.0.0.1 11211
$> get test
VALUE test 0 2
97 #這就是我們遞增的值,當然你使用什么語言取都是一樣的
END
|