若若's profile芳草天涯PhotosBlogListsMore ![]() | Help |
|
|
October 11 C++批量修改文件名从驴子上拖cd,最恼火就是乱七八糟的文件名和专门存放文件名的文本文件闹分裂。
索性写个程序,从txt读取文件名列表,然后修改文件夹下所有文件的文件名。
小程序仅限mp3文件。
1 #include "stdafx.h"
2 #include <afx.h> 3 #include <iostream> 4 #include <fstream> 5 #include <string> 6 using namespace std; 7 8 int RenameFromTXT(string InputFolderPath, string InputTXTName) 9 { 10 int result=-1; 11 CString cstr, CNewName; 12 string str, OldName, NewName; 13 CFileFind finder; 14 CString FolderPath = InputFolderPath.c_str(); 15 bool ifFind = finder.FindFile(FolderPath + "*.mp3"); 16 17 if(ifFind == false){ 18 cout<<"Folder not found!"<<endl; 19 return -1; 20 } 21 22 ifstream inputNewName(InputTXTName.c_str()); 23 if(!inputNewName){ 24 cout<<"TXT-file not found!"<<endl; 25 return -1; 26 } 27 28 while(ifFind) 29 { 30 ifFind = finder.FindNextFile(); 31 cstr = finder.GetFilePath(); 32 USES_CONVERSION; 33 OldName = W2A(cstr); 34 cout<<"old path: "<<OldName.c_str()<<endl; 35 getline(inputNewName, str); 36 cout<<"new name: "<<str.c_str()<<endl; 37 cstr = FolderPath + str.c_str(); 38 CNewName = cstr + ".mp3"; 39 NewName = W2A(CNewName); 40 cout<<"new path: "<<NewName<<endl; 41 result = rename(OldName.c_str(), NewName.c_str()); 42 if( result == 0) 43 cout<<"File successfully renamed!"<<endl; 44 else{ 45 cout<<"Error renaming file: Permission denied"<<endl; 46 cout<<"The new filename may contain \ / : ? \" < > |"<<endl; 47 return -1; 48 } 49 cout<<endl; 50 result=-1; 51 } 52 finder.Close(); 53 inputNewName.close(); 54 return 0; 55 } 56 57 int main(int argc, char **argv) 58 { 59 string input1 = "D:\\Musik\\V.A.-.[Eurovision.Song.Contest.Moscow.2009.(2CD).(2009)].专辑.(MP3)\\"; 60 string input2 = "D:\\Musik\\NewNameList.txt"; 61 RenameFromTXT(input1, input2); 62 63 system("pause"); 64 return 0; 65 } main中调用时,只要输入待改文件名的文件夹路径,和存放新名字的文本文件路径和名字就行。 其中NewNameList.txt内容格式如下: 101. Susanna Georgi — Le Teva Decisio (Get A Life) [Andorra]
102. Kejsi Tola — Carry Me In Your Dreams [Albania] 103. Inga & Anush — Jan Jan [Armenia] 104. AySel & Arash — Always [Azerbaijan] 105. Regina — Bistra Voda [Bosnia & Herzagovina] 106. Copycat — Copycat [Belgium] 107. Krasimir Avramov — Illusion [Bulgaria] 108. Petr Elfimov — Eyes That Never Lie [Belarus] 109. Lovebugs — Highest Heights, The [Switzerland] 110. Christina Metaxa — Firefly [Cyprus] 111. Gipsy.cz — Aven Romale [Czech Republic] 112. Alex Swings Oscar Sings! — Miss Kiss Kiss Bang [Germany] 113. Brinck — Believe Again [Denmark] 114. Urban Symphony — Randajad [Estonia] 115. Soraya — La Noche Es Para Mi (The Night Is For Me) [Spain] 116. Waldo's People — Lose Control [Finland] 117. Patricia Kaas — Et S'il Falliat Le Faire [France] 118. Jade Ewen — It's My Time [United Kingdom] 119. Sakis Rouvas — This Is Our Night [Greece] 120. Igor Cukrov feat. Andrea — Lijepa Tena (Beautiful Tena) [Croatia] 121. Zoli Adok — Dance With Me [Hungary] 201. Sinead Mulvey & Black Daisy — Et Cetera [Ireland] 202. Noa & Mira Awad — There Must Be Another Way [Israel] 203. Yohanna — Is It True [Iceland] 204. Sasha Son — Love [Lithuania] 205. Intars Busulis — Probka [Latvia] 206. Nelly Ciobanu — Hora Din Moldova (Dancing Moldova) [Moldova] 207. Andrea Demirovic — Just Get Out Of My Life[Montenegro] 208. Next Time — Neshto Shto Ke Ostane [FYR Macedonia] 209. Chiara — What If We [Malta] 210. Toppers — Shine [Netherlandsnew wave Eurovision 2009 mix] 211. Alexander Rybak — Fairytale [Norway] 212. Lidia Kopania — I Don't Wanna Leave [Poland] 213. Flor-De-Lis — Todas As Ruas Do Amor [Portugal] 214. Elena — Balkan Girls, The [Romania] 215. Marko Kon & Milaan — Cipela [Serbia] 216. Anastasia Prikhodko — Mamo [Russia] 217. Malena Ernman — La Voix [Sweden] 218. Nela Pociskova & Kamil Mikulcik — Let' Tmou [Slovakia] 219. Quartissimo — Love Symphony [Slovenia] 220. Hadise — Dum Tek Tek [Turkey] 221. Svetlana Loboda — Be My Valentine! (Anti-crisis Girl) [Ukraine]
一秒钟全改了,很爽 October 03 C++编程思想(2nd卷一):函数重载与默认参数在C++中,struct和class唯一的不同之处就在于,struct默认为public,而class默认为private。
September 30 不会创新因循守旧的神经网现在最大的问题就是神经网络不会创新,只会在原有的类的基础上进行分类。想要教他创新,结果却很不理想。。。
1 ////////////////////////////////////////////////////////////////////////// 2 // File Name: pnn.cpp 3 // Author: Ruoruo(du#in.tum.de) 4 ////////////////////////////////////////////////////////////////////////// 5 #include "stdafx.h" 6 #include "cv.h" 7 #include "highgui.h" 8 #include <ml.h> 9 #include <time.h> 10 #include <ctype.h> 11 #include <vector> 12 #include <math.h> 13 #include <iostream> 14 using namespace std; 15 16 static CvScalar colors[] = 17 { 18 {{0,0,255}}, 19 {{0,128,255}}, 20 {{0,255,255}}, 21 {{0,255,0}}, 22 {{255,128,0}}, 23 {{255,255,0}}, 24 {{255,0,0}}, 25 {{255,0,255}} 26 }; 27 28 int main( int argc, char** argv ) 29 { 30 vector<float> point; 31 vector<float> result; 32 33 float p[10] = { 1.3, 2.7, 34 1.5, 3.0, 35 1.7, 2.8, 36 1.6, 2.6, 37 1.2, 2.9 }; 38 float res[5] = { 0,0,0,0,0 }; 39 int i; 40 for(i=0; i<10; i++) 41 { 42 point.push_back(p[i]); 43 if(i<5) result.push_back(res[i]); 44 } 45 46 CvMat* input = cvCreateMat( 5, 2, CV_32FC1 ); 47 cvInitMatHeader( input, 5, 2, CV_32FC1, p ); 48 CvMat* output = cvCreateMat( 5, 1, CV_32FC1 ); 49 cvInitMatHeader( output, 5, 1, CV_32FC1, res ); 50 IplImage* img = cvCreateImage(cvSize(450, 450), IPL_DEPTH_8U, 3); 51 img->origin = 1; 52 for(i= 0; i<5; i++) 53 { 54 cvCircle(img, cvPoint((int)(p[i*2]*100), (int)(p[i*2+1]* 100)), 5, colors[(int)res[i]%8], 1, CV_AA, 0); 55 } 56 57 int layer_num[3] = { 2, 4, 1 }; 58 CvMat* layer_size = cvCreateMatHeader( 1, 3, CV_32S ); 59 cvInitMatHeader( layer_size, 1, 3, CV_32S, layer_num ); 60 CvANN_MLP pnn; 61 pnn.create( layer_size, CvANN_MLP::SIGMOID_SYM, 1, 1 ); 62 CvANN_MLP_TrainParams params; 63 params.term_crit = cvTermCriteria( CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, \ 64 300, 0.0000001 ); 65 params.train_method = 0; 66 params.bp_dw_scale = 0.1; 67 params.bp_moment_scale = 0.1; 68 cout<<"begin training "<<endl;69 pnn.train( input, output, 0, 0, params ); 70 cout<<"end training "<<endl;71 pnn.save( "pNN_DATA.xml" ); 72 73 //begin to test ![]() 74 float testp[24] = { 1.4, 2.75, 75 4.3, 0.2, 76 4.2, 4.3, 77 1.45, 2.85, 78 4.2, 0.4, 79 4.1, 4.0, 80 4.3, 0.5, 81 4.0, 4.2, 82 1.5, 2.7, 83 4.1, 4.2, 84 1.6, 2.7, 85 4.0, 0.3 }; 86 /*float testp[24] = { 1.4, 2.75, 87 4.3, 0.2, 88 4.2, 4.3, 89 1.45, 2.85, 90 4.25, 0.3, 91 4.25, 4.25, 92 3.5, 1.2, 93 3.0, 3.7, 94 4.0, 2.7, 95 0.2, 0.2, 96 2.8, 2.7, 97 2.7, 2.8 };*/ 98 CvMat* test_point = cvCreateMat( 1, 2, CV_32FC1 ); 99 CvMat* test_result = cvCreateMat( 1, 1, CV_32FC1 ); 100 CvFont font; 101 double hScale=0.5; 102 double vScale=0.5; 103 int lineWidth=1; 104 cvInitFont(&font, CV_FONT_HERSHEY_COMPLEX|CV_FONT_ITALIC, hScale,vScale,0,lineWidth); 105 106 for(i= 0; i<12; i++) 107 { 108 cvSetReal2D( test_point, 0, 0, testp[2*i] ); 109 cvSetReal2D( test_point, 0, 1, testp[2*i+1] ); 110 pnn.predict(test_point, test_result); 111 cout<<cvmGet(test_result,0,0)<<endl; 112 113 float delta = 1; 114 int best_class = 0; 115 int max_class = 0; 116 for(int ii=0; ii<result.size(); ii++){ 117 if(fabs(cvmGet(test_result,0,0) - (float)result[ii])<delta){ 118 delta = fabs(cvmGet(test_result,0,0) - (float)result[ii]); 119 best_class = result[ii]; 120 } 121 if(result[ii]>=max_class) 122 max_class = result[ii]; 123 } 124 125 point.push_back(testp[2*i]); 126 point.push_back(testp[2*i+1]); 127 128 if( delta>0.06 ){ 129 int new_result = max_class+1; 130 cvmSet( test_result,0,0,new_result ); 131 result.push_back((float)new_result ); 132 } 133 else{ 134 cvmSet( test_result,0,0,best_class ); 135 result.push_back((float)best_class ); 136 } 137 138 int new_point_size = point.size(); 139 int new_result_size = result.size(); 140 141 CvMat* input = cvCreateMat( new_result_size, 2, CV_32FC1 ); 142 CvMat* output = cvCreateMat( new_result_size, 1, CV_32FC1 ); 143 144 for(int ii=0; ii<new_result_size; ii++) 145 { 146 cvmSet( input, ii, 0, point[2*ii]); 147 cvmSet( input, ii, 1, point[2*ii+1]); 148 cvmSet( output, ii, 0, result[ii]); 149 } 150 //cout<<"begin training again "<<endl;151 pnn.train( input, output, 0, 0, params ); 152 //cout<<"end training "<<endl;153 154 cvCircle( img, cvPoint((int)(testp[i*2]*100), (int)(testp[i*2+1]* 100)), 0, colors[(int)cvmGet(test_result,0,0)%8], 10, CV_AA, 0 ); 155 156 char buffer[10]; 157 _itoa(i,buffer,10); 158 string point_id(buffer); 159 cvPutText(img, point_id.c_str(), cvPoint(testp[2*i]*100,testp[2*i+1]*100), &font, cvScalar(255,255,255)); 160 161 cout<<i<<": "<<"("<<testp[i*2]<<", "<<testp[i*2+1]<<")"<<"\t"<<cvmGet(test_result,0,0)<<endl; 162 } 163 164 cvNamedWindow( "Coordinates" , 1 ); 165 cvShowImage( "Coordinates" ,img); 166 167 cvWaitKey( 0 ); 168 169 cvDestroyWindow("Coordinates"); 170 cvReleaseImage(&img); 171 172 return 0; 173 } 明明右下角四个点是一类,应该同色。显然点6和11分类错误了,6变成了第3个新类而11变成了第4个新类。或许类的名字对内部计算有很大影响,但目前还没有更好的办法,总之我这个循循善诱谆谆教诲的算法很垃圾就对了。。。 最近压力好大 = = September 27 C++的文件读写操作练习捡基础捡基础 = =|||
#include <iostream>
#include <fstream> #include <string> #define WordByWord 1
#define LineByLine 2 void ReadAndShow( string fname, int flag ) { ifstream fin( fname.c_str() ); int i = 1; string s; if( !fin ) { cout<<"File dose not exist!"<<endl; exit(-1); } if( flag == WordByWord) { while( fin>>s ){ cout<<i<<". word: "<<s<<endl; i++; } } else if( flag == LineByLine ) { while( getline(fin, s) ){ cout<<i<<". line: "<<s<<endl; i++; } } else { cout<<"Error: The second argument should be 1 or 2."<<endl; exit(-1); } cout<<endl; fin.close(); } int main() { string filename = "data.txt"; ofstream fout( filename.c_str() ); fout<<"Ich schreibe irgendwas hier,"<<endl; fout<<"um zu testen."<<endl; fout.close(); ReadAndShow( filename, WordByWord );
ReadAndShow( filename, LineByLine );
return 0 ; } 输出结果:
![]() August 02 翻译有关OpenCV海尔训练——(四)训练样本1.海尔训练
2.生成XML文件
翻译有关OpenCV海尔训练——(三)创建样本1.创建训练样本 createtrainsamples.pl的输入格式为:
createtestsamples.pl的输入格式为:
举例:
翻译有关OpenCV海尔训练——(二)创建样本(参考)我们可以使用createsamples utility(\bin\createsamples.exe)创建训练样本,并且测试它们。以下是选项列表:
1. 由一个样本创建多个样本 -img <one_positive_image> 例如:
这个例子由一个正样本生成数量为<num>的多个样本。值得注意的是,只有前<num>个在<collection_file_of_negatives>中负样本会被采用。
它可以通过find命令来创建:
比如:
2. 由多个样本创建训练样本 -info <description_file_of_samples> 例如:
3.创建测试样本 开启条件:选项-img, -bg和-info被初始化。 -img <one_positive_image> 这里-w和-h被用作确定嵌入在测试样本中的正样本的最小尺寸。
4.显示样本 开启条件:选项-vec被初始化。例如:
July 31 翻译有关OpenCV海尔训练——(一)数据准备作者:Naotoshi Seo OpenCV给我们提供了很多训练分类器的方法和程序。对于人脸检测的分类器训练叫做海尔训练,我们可以用这些方法创建我们自己的分类器。 (一)数据准备:
May 06 念想之间 尘埃落定我把钥匙卡在门旁一照,“滴——”一响,推门进屋。直映入眼的是实验室的凌乱。电脑拥挤地排列着,桌上摊着纸笔鼠标垫和乱七八糟的线甚至是刀叉,小机器人安静地站在电脑之间,一抬头便是窗外死角处又细又高尚未长成努力撑着叶子随风摇动的树苗……这样的不华丽不整洁却能突然间令我兴奋不已。就好像一下子回到了几年前,老爸的电子楼实验室,那散着横七竖八的板子元件电烙铁以及电线的拼接起来的桌子,一两本或熟悉或新鲜的教材书籍,老旧而反应迟钝的电脑,落着尘埃的键盘和其上用得油光的按键,窗外月色下的瘦削的没有叶子的细长花枝,还有那花枝顶上安静站立着的洁白的玉兰花……输入用户名和密码登陆,同样的一层薄灰的键盘,同样的干净发白的按键,同样的原始朴实的Windows界面。很好,这就是我想要的,并不枝繁叶茂但载满回忆的角落。 April 22 摘录:详解费米能级IC1第一堂课上得晕乎乎的,居然还冒出一个完全陌生的名词——费米能级。 找篇详解,还是很晕@_@ 举个例子,一小学由一班学生,学生人数为50人,班上所提供的座位 有60个.老师以学生的身高进行座位的分配.经分配后,班上身高较 高的学生将配往后座,而且经分配后,班上将留下10个空位.这是一 般我们小时候常经历的生活经验.电子在原子内分布的情形与分布 的规则,与上面这个例子十分的相似.电子的能级,好比是例子里的 座位;而电子的能量,则好比是例子里学生身高.能量较高的电子, 就好像是身高较高的学生一般,将占往高位的能级(即例子里的后 座),并使低位能的能级留下空缺(即空位).因为材料的导电性与位 于导带的导电电子密度(或数量)有关,为了了解这一点,我们势必 要先了解电子的量子状态分布(如例子里的座位分配),及电子的能 量分布(即学生的身高分布)后,才能让我们掌握有多少自由电子位 于导带内(即有多少身高较高的学生能坐在后座).在材料科学上, 我们通常称前者(即电子的量子状态分布)为状态密度(Density of Status),以N(E)表示;后者(即电子的能量分布)称为费米 在绝对温度零度(0 k)时,原子内电子所能占住的最高能级的能 量". 也就是说,在0 k时,所有低于Ef的能级将完全为电子所占满, 而高于Ef的能级则完全空着,当物体所在的环境温度高于0 k后,虽 然大多数的电子依然处于低能级上,但是一小部分的电子将因环境 所提供的能量,而开始转往较高的能级,使电子的分布不再局限于 Ef的下方,至于费米函数,则可以定义为:" 当物体所在的环境温度 高于绝对零度时,在能量为Ef的能级上,发现电子的几率为50%", 发表用户:电子狂客 发表时间:2006-7-3 10:18:55 December 03 金木月·JSP
只有这学期才有效的网址:http://dbpra.in.tum.de:8080/dbpra01/aufgabe61.html
November 27 Trouble Is A Friend目光呆滞地在图书馆等下节课,大脑罢工,只好写点儿中文缓解缓解。 两天熬夜,编程编到三点,洋洋洒洒十多页,先后改版九次。在要交最终版本的时候,一直不吭声的Tobi自说自话要交自己的版本。三个组都是按照我的设计做的,你最后一刻要我们都用你的?要用你的你也早点儿弄好。四点钟一封邮件给我,要我们推翻重做五个小时内搞定算啥?就算你弄不好也把想法给我们说一下或者怎么都行。我吐血弄好了你又看不上。玛丽的邻居。不理他。自己给奥胖又交了一份。奥胖表示理解。看来分队历年都有矛盾。不过我看今年至少二队比我们高效得多。 我们一队,越南人很沉默,突尼斯人啥都不做,德国人拖,中国人蚂蚁热锅…… 一个混乱无序的组织,合起来毫无意义。 今天小测验,SQL轻松搞定,而且觉得题目很二极管里通电流——iDio(de)t。JDBC由于寄望于可以看书,没背。奥胖提示了十分钟,脑子始终是一片空白,本来就没啥在里头,结果无奈打回下周重测。苍天大地,明天还要交JSP大作业…… 在地铁里啃面包,悲伤一阵,烦躁一阵,最终还是平静了。痛苦的情绪,源于太计较自己的付出,而忽略了潜在的所得。如果不是写了这十几页的程序,SQL查询语句怎会信手拈来? 让交作业期限来得更猛烈些吧!Trouble is a friend.
Lenka - Trouble Is A Friend Trouble will find you no mater where you go, oh oh. Trouble is a friend but trouble is a foe, oh oh. So don't be alarmed if he takes you by the arm. He's there in the dark, September 19 LV初学笔记不要误会。LV是LabVIEW,虚拟仪器。我用的是8.5,Demo版,试用30天,到处找不到注册机,说起来勉强也算个奢侈品? 话说回来,用图片来编程还真是第一次见,编起程来像画画,或者拼图,或者搭积木?总而言之,很好玩。其实一开始就被迷住了,谁曾想一个for循环能用一个框框来表达?编一个子程序还要为这个子程序配一幅画?简直是天方夜谭!只不过,讲这个故事的是个土耳其人,将就将就了。于是我想,就算才疏学浅不能跟着他干,学学这个东西也是好的。 趁新鲜写点记录,以备后用。没装中文版的,专业词语只好乱用了。
基本先这样。做了个不伦不类的东东:把10秒声音换成华氏或者摄氏度,显示图像并显示最大最小值,算出均值,存档,再读档,以图像显示,对照检验。没办法没有温度传感器。冷。哆嗦一下。 July 11 Java其实时间过得一点儿也不快,想起去年初春的程序考试,那时身边的人留下的浮光掠影,忽然有种恍若隔世的错觉…… 拼了老命,如果不出意外,能拿下了GRV的Bonus了。70%,也算是一个记录。Tutor Guenther很nett,很负责,也很牛,计算机电子双硕士,腾不出时间加给我们。下周除了上TÜ的时间空,其他时间全有考试。听他说了一堆日期后,我们眩晕地选择放弃,只好委屈THEO考试了。Guenther出的Zusatzaufgaben,相当好,比Leitung的好很多,很满足地做了3个小时,有爽的感 房子下来了,去看了看我的前房东,一位很nett的德国MM,朝东的窗口远望能及郁郁森森的英国花园和若隐若现的阿尔卑斯,不禁又想起Michi同学糟糕的厨艺和馋嘴的肚皮。一年而已,物是人非,沧海桑田。 曾经看见一个刻苦的人写道:“那些岁月,我每天用17个小时读书。”这究竟是什么概念啊!尽了我最大的努力,每天十个小时已经是极限!今晚回家的路上一路眩晕,似乎木木刚做了三三三个腹部绕杠。当然我这儿可能是低血糖。。。 下午吃了一支很有意思的Ice——MI楼里卖的和路雪,名字叫Java,牛奶巧克力夹着浓浓香草……如今的我不会去想那遥远的印度尼西亚爪哇岛上的可可,而是做梦着吃了Java能变得聪明一点。毕竟考试之际,内心深处需要一点自我解嘲。 February 19 终于又灭了一门 咔咔~趁着新鲜回忆题目下下,有同学要考~ 这门课叫MMK1,Mensch-Maschine-Kommunikation 1。 75分钟,总共4个Aufgabe。 1,给出一套公寓的平面图,有A~I个房间,互相连通。消防员救火需要将房间遍历。画出Suchbaum;每个房间都有Kosten,就是它在格子图上的大小,要用heuristische Suche找出Kosten最小的遍历顺序;有个小孩在E房间,妈妈在F房间,消防员找到他们的最段路径用什么算法。 2,共有75个魔法咒语,用HMM区分,需要多少HMMs;给出一句咒语,四个T的o,以及A-Matrix、B-Matrix、e和v,根据A判断该HMM的类型;画Trellis图;用Vorwaerts算法算p(o|拉姆达);Viterbi。。。几个老套不说了,昨天和HMM熬夜大战三百回合,见到此题,分外亲切。 3,已知一Aussage=T,求T的否定,KNF,证明其Gueltigkeit,填写真值表;仨人讨论谁吃了蛋糕,每个人说一句话,写成Praedikatenlogik,从而得出谁吃了蛋糕。。。除了弱智的真值表我给弄错了,其他都简单死,没有任何技术含量,怨念的真值表啊,看来我不适合当体力劳动者。。。 4,弄了半天也没搞清题目啥意思(心里在想怎么老师还没报剩15分钟,教室又没钟,我那个急啊乱啊。其实前面做得确实快得出乎我意料了),就看到要算Luminanznormierung,于是就算,算好了在Farbtafel里标注一下;还问了另外有个Farbe的坐标,是不是很重要等;要画出Staebchen和Zapfen的分布图和Hoerflaeche图,前者幸好带的纸上有,对于后者我只有囧了,谁没事儿干研究这破图啊,于是开始愤恨让带纸进考场的bt制度,向将所有讲义和练习答案挤着打印在两张纸上的人致敬,囧rz。。。 还有些啥边边角角的问题,记不周全了。反正就75分钟,埋头抓狂似地写,很猛很暴力。。。除了真的无能为力的,其他都涂鸦满了。其实已经比以前进步些了,不然说不定还没找到感觉就收卷了。。嗯,满意ing。。
吃了两天的百服宁,勉强维持鼻子还能出气进气,坚持熬了两夜,昨天甚至都没吃米,导致考完路过某餐馆么忍住进去fb了一把。为啥老把自己弄得这么惨啊,好像考不出会死人一样。。赖到补考,或者递病假条,绝望的时候都想过,也只不过想想,没有理由找借口的。于是憋着一口气,拼命织啊拼命织,在临刑前把十一件荨麻外衣扔给十一天鹅,就不用死啦~(为我的抱佛脚找到一件童话般的美丽外衣= =|||) February 06 with SQL给大家拜个早年~create view 鼠年大吉 as
February 05 扔点东西自己看(二)——操作系统中文资料大杂烩
硬链接文件和原文件指向同样的数据,两者就像科隆一样,inode号也相同,当删除原文件时,硬链接文件仍然存在有效。但硬链接文件不同于文件的复制。应该说硬链接文件的产生只是原文件所在目录文件的内容发生改变,原文件的数据并没有得到复制,而复制文件,磁盘上有两份数据。简单说,硬链接就是一个类似于别名的概念。当原来的名字没有了,别名照样可以使用。
软连接也叫符号连接,他只是对源文件在新的位置建立一个“快捷(借用一下wondows常用词)”,所以,当源文件删除时,符号连接的文件将成为无源之水->仅仅剩下个文件名了,当然删除这个连接,也不会影响到源文件,但对连接文件的使用、引用都是直接调用源文件的。
在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片.时间片的大小从几ms到几百ms.当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片.这样就可以保证就绪队列中的所有进程,在一给定的时间内,均能获得一时间片的处理机执行时间.
NTFS 中包含一个称为主文件表 (MFT) 的文件。MFT 是一个映射磁盘中储存的所有对象的索引文件。在 MFT 中,NTFS 磁盘上的每个文件(包括 MFT 自身)至少有一映射项。MFT 中的各项包含如下数据: 大小、时间及时间戳、安全属性和数据位置。一但 MFT 产生碎片,磁盘碎片整理程序无法对其进行碎片整理。但是,由于可以持续使用 MFT 来存取磁盘上所有的其它文件,因此它也会逐渐形成碎片,从而导致磁盘存取时间加长,降低磁盘性能。NTFS 通过保留 1/8 的磁盘空间留作 MFT 专用而将此影响降至最低。磁盘的此区域(称为 MFT 区域)尽可能在 MFT 增加时保持其连续性。
i-node你可以理解成一个大楼。
i-node用光了,不能增加,除非format的时候制定。。 i-node你可以理解成一个大楼。 如果这个楼房建筑的时候,就是100户,只能卖100套房子,住100户人家,没家4室二厅,200平米。。当来了101户人的时候,虽然没家人家200平米,但是也只是人家自己住。不能让其他人住了。。 如果你建立楼房的时候,都是小户型,同样建筑面积200×100平米,但是你每个户型都是100平米的小房间,就可以住200户人家了。。 这个东西,是你盖房子的时候决定的。以后不允许你在顶楼上再加盖了。。 系统的i-noode也是这个意思。。 创建文件系统的时候,就定义了i-noode的个数。计算机是通过i-noode来管理文件系统的。。 When a file system is created, data structures that contain information about files are created. Each file has an inode and is identified by an inode number (often "i-number" or even shorter, "ino") in the file system where it resides. Inodes store information on files such as user and group ownership, access mode (read, write, execute permissions) and type of file. There is a fixed number of inodes, which indicates the maximum number of files each filesystem can hold.
POSIX,准确的说,是POS,是一套标准,是由IEEE(Institute of Electrical and Electronic Engineering)开发的,并由ANSI(American National Standards Institute)和ISO(International Standards Organisation)标准化。
因为UNIX API 几乎可以作为编写真正可移植软件的硬件无关标准,所以最初的IEEE所标称的“可移植操作系统标准”(Portable Operation System Standard)的POS很快被大家加了后缀变成了“POSIX”,缩写为POSIX是为了读音更像Unix。
POSIX标准定义了操作系统应该为应用程序提供的接口:系统调用集。
Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。 摘自:大学生网络联盟
计算元素叫同步元素(T元),用方框表示;存储元素叫异步元素(S元),用圆形表示。 关系只有边(T,S)和(S,T),没有(T,T)和(S,S)边。即同步元素周围是异步元素,而异步元素周围一定是同步元素;边有方向;边里流动着的是消息,消息即数据。 同步元素T是无状态元素,其内部实现就是一个用函数表示的加工。元素有n条输入边和m条输出边,且n、m >= 1,即至少有一条输入边和一条输出边。虽然元素内部的函数有确定的终生不变的输入参数和输出参数,但元素边的数量以及边中的消息却是可以随外界而变化的,但是一定保持输入边和输出边里的消息里含有的数据符合函数要求、且总质量不变。 同步元素T的同步是指同步元素周围的所有n+m条消息,要么同时发生,要么同时不发生,并且称这n+m条消息的同步为“一次执行”。即保证一次执行的原子性。 异步元素P也有n条输入边和m条输出边,且n+m >= 1,即至少有一条输入边或者一条输出边。异步元素总是被动地为同步元素提供或接受消息,一次一条。 元素的邻居、及其间的消息,都是由系统定义,与元素自身无关。但要求元素能够接收和发出这些消息。元素的邻居数量、及其重要性不是一成不变的,在不同的应用环境里,可以有很大差别,如同人类的朋友关系。 同步元素是一个消息加工系统,即现实世界里的加工厂或者计算机里的函数,叫“变迁”。异步元素就是一个消息存储系统,即现实世界里的仓库或者计算机里的数据存储系统,叫“库所”。 Petri网是一个“自分解(解构、析构)”和“自组合(重组、重构)”的系统模型,即同步元素和异步元素都可以是另外一个Petri网系统。但其原子元素必须是计算机里的函数或者数据存储系统,即软件构件系统(software components system)或者软件存储系统(software storages system)。 补充:Petri网就是把一个个封闭的图灵机系统用消息传递联系成为一个整体的“虚拟社会”的。Petri网把所有的软件系统统统分成两类:1类是计算元素的软件构件,如dll文件,是函数集合,负责消息处理和转换。因为计算元素不存储任何中间状态,所以必需立即把处理结果再用消息传递出去,因而叫又同步元素。另1类是存储元素的软件应用系统,用于加工并保存消息中的有用数据。存储元素可以按照应用逻辑的要求保存或者提供(而不是同时既保存又提供)消息里的用户数据,因而又叫异步元素。所有软件系统要么属于计算元素,要么属于存储元素,没有第3类,不可能有既是计算元素同时又是存储元素的软件系统。 Petri网模型没有全局状态,也没有任何的中央控制,可以无限扩展。系统的每一个元素只与其周围邻居发生着关系,Petri网就是一个完全分布的P2P网络,如同Gnutella协议。
出自:http://www.cnblogs.com/luohuarenduli/archive/2007/04/28/731160.aspx
ps. 谢谢筒子们关心,某就素考前焦虑综合症,从小学期末大考开始到现在都介样,么虾米出息 = = pps. 收到杰小妹滴片片,稍待日后闲暇之时再叙音乐及松鼠等有关事宜,钦此。 December 17 很白痴的发现
出现颤抖横条纹的显示器,一定是显像管式而非液晶,而前者的工作原理就是奇偶行交错半屏半屏地刷新,由于速率太快,人的肉眼无法察觉。而摄像头帧数的刷新率又远远小于显像管显示器的刷新率。。。 火星人就是火星人,俺承认俺的天线很壮硕。。。。。。。 December 15 看图说话·生活之不完全手册贴点照片,给老爸老妈和国内的朋友们看下~ 早上从学生城的地铁站出发,去Garching上课。 从Garching的地铁站出来。 上完课又去Garching地铁站赶地铁,去本部。 本部的阶教里听电子课,信号与系统,老师用的是Matlab。 上完课去食堂,穿越本部校区。 有鸡腿有土豆有蔬菜还有汤,有史以来最合算的一顿:2,35欧~ 绕道去图书馆,Lidl超市那里,马路对面的小狗期待主人快点购物归来。 图书馆里的自动售货机,还卖热饮咖啡,困了就会过来烧钱。。。 高峰时期箱子都上锁了,认真的人挺多。 图书馆的Reading Room,置身其中仿佛有种归属感。 回家已是入夜,看见白天安静的电子楼在开Party……
(照片不是一天之内照的,有组合,以后有机会还会添加……) December 11 执着现在是凌晨一点了。好容易把明天演讲的东西都弄完,呆坐着看着时间一分一秒在流逝。 下午跟Betreuer见了演讲前最后一面,我告诉他,我发现发给我的参考资料上有个大错误,直接会影响结果。他看了也很无奈。但是要算出正确答案,看起来还真不是几个小时能搞定的。我问他教授有没有看过这个算法?他说没。我说那就把式子写对,结果还是照抄原来的就好了。正当我自鸣得意的时候,Betreuer却大揺其头。他说不行不行,发现错误是件好事,实在不行就说时间不够了来不及算出正确答案,但是那篇论文中的错误一定要说出来。 突然觉得好惭愧……当我不知觉中把学习当成任务的时候,当我把付出努力的最终目标视作一个分数的时候,当我为了这个数字符号甚至变得都有点不择手段的时候,德国人是怎么做的?回首在国内读大学的时候,越来越会算计怎么去跟老师套近乎好让老师透题,算计哪门课权重高好好考试拉学分,然后,最后,算计奖学金……学习变成了纯功利性的追逐……如果我在国内演讲,绝对不可能会冒着“虽然发现错了,可是我也不知道正确答案是什么”导致拿不到好分的风险而去拆穿资料中证明的错误。可是这里的Betreuer不让我这么做。 只见他抓起笔来就在纸上抓狂似的算……式子又套式子的递归方程组,我还真是不知道究竟该从何下笔。 随后我去上另一门课,可是我那Betreuer的话总是在脑海里萦回,上完课回家我也抓起笔来狂算,用了十几组数据终于推导出规律,解出了递归方程组。幸好,虽然资料里的中间步骤错了,但结果并不影响结论。打开邮件,Betreuer在我上课的时候就把他自己算的结果发给了我,对照我自己的一看,果然没错。 治学严谨、对真理执着的追求,我不想用“迂腐”来形容他们,这正是中国人所欠缺的。 |
|
|