JAVA初高級(jí)經(jīng)典小程序_第1頁(yè)
JAVA初高級(jí)經(jīng)典小程序_第2頁(yè)
JAVA初高級(jí)經(jīng)典小程序_第3頁(yè)
JAVA初高級(jí)經(jīng)典小程序_第4頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1.編寫(xiě)程序,判斷給定的某個(gè)年份是否是閏年。閏年的判斷規(guī)則如下:(1)若某個(gè)年份能被4整除但不能被100整除,則是閏年。(2)若某個(gè)年份能被400整除,則也是閏年。從命令行接受一個(gè)參數(shù)年份,計(jì)算此年份是否為閏年?importjava.util.*;publicclassHao4{publicstaticvoidmain(Stringargs[]){Scannerscan=newScanner(System.in);System.out.print("輸出數(shù)據(jù):intnum=scan.nextlntf);print(num);)publicstaticvoidprint(intnum){if(num%4==0&&(num%100)!=0||num%400==0){System.out.println("今年是閏年:"+num);)else{System.out.println("今年不是閏年:"+num);))};2.給定一個(gè)百分制的分?jǐn)?shù),輸出相應(yīng)的等級(jí)。90分以上 A級(jí)80~89 B級(jí)70~79 C級(jí)60~69 D級(jí)60分以下 E級(jí)importjava.util.*;publicclassHaoll{publicstaticvoidmain(Stringargs[]){Scannerscan=newScanner(System.in);while(true){System.out.print("輸出數(shù)據(jù):");intnum=scan.nextlnt();print(num);}}publicstaticvoidprint(intnum){intnuml=num/10;switch(numl){case10:System.out.println("A級(jí)");break;case9:System.out.println("A級(jí)");break;case8:System.out.println(HB級(jí)”);break;case7:System.out.println("C級(jí)");break;case6:System.out.println("D^");break;default:System.out.println("E級(jí)”);)}};3.編寫(xiě)程序求1+3+5+7+……+99的和值。publicclassHao4(publicstaticvoidmain(Stringargs[]){System.out.println(print(50));}publicstaticintprint(intnum){if(num==l){return1;)intnuml;numl=num*2-l;returnnuml+print(num-l);|「練習(xí)一:利用for循環(huán)打印9*9表?1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81publicclassIIao4{publicstaticvoidmain(Stringargs[]){for(inti=l;i<=9;i++){for(intj=l;j<=i;j++){System,out.print(j+/z**+i+*=*+i*j+*");)System,out.print('\n");練習(xí)七:求2/1+3/2+5/3+8/5+13/8前20項(xiàng)之和?publicclassHao4(publicstaticvoidmain(Stringargs[]){doublex=2.0;doubley=1.0;doublesum=0.0;for(inti=0;i<20;i++){sum+=x/y;y=x;x+=y;}System.out.println(sum);)}練習(xí)ハ:利用程序輸出如下圖形:*************************publicclassHao4(publicstaticvoidmain(Stringargs[]){for(inti=l;i<8;i++){intk=l;if(i<5){k=2*i-l;}else{k=13-2*i;|for(intj=l;j<=k;j++){System.out.print("*");)System.out.println();)}}.定義ー個(gè)int型的ー維數(shù)組,包含10個(gè)元素,分別賦ー些隨機(jī)整數(shù),然后求出所有元素的最大值,最小值,平均值,和值,并輸出出來(lái)。publicclassHao4(publicstaticvoidmain(Stringargs[]){intarr[]=newint[10];for(inti=O;i<arr.length;i++){arr[i]=(int)(100*Math.random());System.out.print(arr[i]+'*n);}System.out.println();intmax=arr[0];intmin=arr[0];intsum=0;for(inti=O;i<arr.length;i++){if(max<arr[i]){max=arr[i];}if(min>arr[i]){min=arr[i];)sum+=arr[i];}System.out.println("MAX="+max+"/MIN="+min+"/SUM=,,+sum+',/avg=',+sum/10);)).定義ー個(gè)int型的一維數(shù)組,包含10個(gè)元素,分別賦值為廣10,然后將數(shù)組中的元素都向前移ー個(gè)位置,即,a[0]=a[l],a[l]=a[2],...最后ー個(gè)元素的值是原來(lái)第一個(gè)元素的值,然后輸出這個(gè)數(shù)組。publicclassHaoll{publicstaticvoidmain(Stringargs[]){int[]a={1,2,3,4,5,6,7,8,9,10};inttemp=a[0];for(inti=O;i<a.length-l;i++){a[i]=a[i+l];System.out.print(a[i]+"");)System.out.println(temp);}}.定義ー個(gè)int型的ー維數(shù)組,包含40個(gè)元素,用來(lái)存儲(chǔ)每個(gè)學(xué)員的成績(jī),循環(huán)產(chǎn)生40個(gè)。?100之間的隨機(jī)整數(shù),將它們存儲(chǔ)到ー維數(shù)組中,然后統(tǒng)計(jì)成績(jī)低于平均分的學(xué)員的人數(shù),并輸出出來(lái)。publicclassHao6(publicstaticvoidmain(Stringargs[]){intarr[]=newint[40];for(inti=0;i<40;i++){arr[i]=(int)(100*Math.random());System.out.print(arr[i]+"");)System.out.println();intsum=0;for(inti=0;i<40;i++){sum+=arr[i];)System.out.println(sum/40);intn=0;for(inti=0;i<40;i++){if(arr[i]<(sum/40)){System.out.print(arr[i]+"");n++;))System.out.println();System.out.println(n);)).(選做)承上題,將這40個(gè)成績(jī)按照從髙到低的順序輸出出來(lái)。importjava.util.*;publicclassHao9{publicstaticvoidmain(Stringargs[]){intarr[]=newint[40];for(inti=0;i<40;i++){arr[i]=(int)(100*Math.random());Arrays.sort(arr);System.out.print(arr[i]+"");System.out.println();intb[]=newint[40];for(inti=0;i<40;i++){b[i]=arr[39-i];System.out.print(b[i]+"");)))5編寫(xiě)程序,將一個(gè)數(shù)組中的元素倒排過(guò)來(lái)。例如原數(shù)組為1,2,3,4,5;則倒排后數(shù)組中的值為5,4,3,2,1〇方法一:publicclassHao9(publicstaticvoidmain(Stringargs[]){intarr[]={1,2,345,6};for(inti=0;i<6;i++){System.out.print(arr[i]+"");)System.out.println();intb[]=newint[6];for(inti=0;i<6;i++){b[i]=arr[5-i];System.out.print(b[i]+"");})}方法—.:publicclassHao8{publicstaticvoidmain(Stringargs[]){intarr[]=newint[10];for(inti=0;i<10;i++){arr[i]=(int)(100*Math.random());System.out.print(arr[i]+nn);)fun(arr);System.out.printin();print(arr);publicstaticvoidfun(intx[]){inthead=0;inttail=x.length-1;intcenter=x.length/2;for(inti=0;i<center;i++){inttemp;temp=x[head];x[head]=x[tail];x[tail]=temp;head++;tail--;))publicstaticvoidprint(intx[]){for(inti=0;i<x.length;i++){System.out.print(x[i]+n");)}}6,要求定義ー個(gè)int型數(shù)組a,包含100個(gè)元素,保存100個(gè)隨機(jī)的4位數(shù)。再定義ー個(gè)int型數(shù)組b,包含10個(gè)元素。統(tǒng)計(jì)a數(shù)組中的元素對(duì)10求余等于〇的個(gè)數(shù),保存到b[〇]中:對(duì)10求余等于1的個(gè)數(shù),保存到b[l]中,依此類(lèi)推。publicclassHaol3{publicstaticvoidmain(Stringargs[]){inta[]=newint[100];for(inti=0;i<100;i++){a[i]=(int)(10000*Math.random());System.out.print(a[i]+"n);}System.out.println();intb[]=newint[10];intk,sum;for(intj=0;j<b.length;j++){for(k=0zsum=0;k<a.length;k++){if((a[k]%10)==j)sum++;}b[j]=sum;System.out.println(sum);}}|1;把數(shù)組中intaロ={1,3,0,1,4,0,0,2,1,5,0,1,0,0,2,3,6,4,0,0};的所有的零元素都去掉,并且定義一個(gè)新的數(shù)組把新組成的數(shù)組放入里面publicclassHaol4publicstaticvoidmain(Stringargs[]){inta[]={1,3,0,1,4,0,0,2」,5,0,1,0,0,2,3,6,4,0,0上intb[]=newint[print(a)];fun(a,b);revear(b);)publicstaticintprint(inta[]){intcount=0;for(inti=O;i<a.length;i++){if(a[i]!=O)(count++;})returncount;}publicstaticvoidfun(inta[],intb[]){intfoot=0;for(inti=O;i<a.length;i++){if(a[i]!=O){b[foot++]=a[i];)})publicstaticvoidrevear(intx[]){for(inti=O;i<x.length;i++){System.out.print(x[i]+"H);}})2:兩個(gè)數(shù)組A:1,7,9,11,13,15,17,19數(shù)組B:2,4,6,8,10兩個(gè)數(shù)組合并成一個(gè),并且按升序排列publicclassHaol4|publicstaticvoidmain(Stringargs[]){intsl[]=newint[]{1,3,5,7,9,13,15,17,19};ints2[]=newintロ{2,4,6,8,10};intc[]=contact(sl,s2);java.util.Arrays.sort(c);print(c);publicstaticint[]contact(inta[],intbロ){〃注意這句話的定義方式intc[]=newint[a.length+b.length];System.arraycopy(a,0,c,0,a.length);〃方法的引用,注意起始點(diǎn)System.arraycopy(b,0,c,a.length,b.length);returnc;)publicstaticvoidprint(intx[]){for(inti=O;i<x.length;i++){System.out.print(x[i]+"*');}}}7,定義ー個(gè)20*5的二維數(shù)組,用來(lái)存儲(chǔ)某班級(jí)20位學(xué)員的5門(mén)課的成績(jī);這5門(mén)課按存儲(chǔ)順序依次為:coreC++,coreJava,Servlet,JSP和EJB。(1)循環(huán)給ニ維數(shù)組的每ー個(gè)元素賦0?100之間的隨機(jī)整數(shù)。(2)按照列表的方式輸出這些學(xué)員的每門(mén)課程的成績(jī)。(3)要求編寫(xiě)程序求每個(gè)學(xué)員的總分,將其保留在另外一個(gè)ー維數(shù)組中。(4)要求編寫(xiě)程序求所有學(xué)員的某門(mén)課程的平均分。publicclassHao9{publicstaticvoidmain(Stringargs[]){inta[][]=newint[20][5];intb[]=newint[20];intc[]=newint[5];System,out.printin("學(xué)生成績(jī)"+"\tcoreC++”+"n+ncoreJava11+nn+nServletn+n”+”JSP”+” H+nEJBn+n”+”總分“);for(inti=0;i<a.length;i++){intsum=0;for(intj=O;j<a[i].length;j++){a[i][j]=(int)(100*Math.random());sum+=a[i][j];System,out.print(H\tn+n ”+a[i][j]);//記住制表符的運(yùn)用”ヽt”注意應(yīng)該怎樣賦值數(shù)據(jù))b[i]=sum;System.out.printin("\t"+" "+b[i]);//計(jì)算完了第一行的數(shù)據(jù)然后再換行;System.out.printin();)System,out.print(n 平均分 ”);intsuml=0;for(inti=0;i<c.length;i++){for(intj=0;j<a.length;j++){suml+=a[j][i];

suml=suml/b.length;System.out.print(suml+n\t n);//制表符的應(yīng)用好好看看放前面還是放后面?有規(guī)矩)5,寫(xiě)一個(gè)方法用來(lái)生成一個(gè)整形數(shù)組,該方法返回一個(gè)!nt[]類(lèi)型,需要一個(gè)int型參數(shù),數(shù)組的大小由傳進(jìn)來(lái)的參數(shù)決定。importjava.util.Scanner;publicclassHao9{publicstaticvoidmain(Stringargs[]){Scannerscan=newScanner(System.in);System,out.print("輸出數(shù)據(jù):");inti=scan.nextlnt();print(i);}publicstaticvoidprint(inti){inta[]=newint[i];for(intj=0;j<i;j++){a[j]=(int)(100*Math.random());System.out.print(a[j]+nn);例題:每人有一輛車(chē)關(guān)系的表示(代碼連)classMember{privateintnum;privateStringname;privateCarcar;publicMember(intnumzStringname){this.num=num;=name;}publicStringgetMemberl(){return”編號(hào)”+this.num+“,”+“姓名”+;}publicCargetCar(){returncar;}publicvoidsetCar(Carcar){this.this.carcar;classCar{privateStringname;privateMembermember;publicCar(Stringname){=name;}publicStringgetCarl(){return”車(chē)名”+;}publicMembergetMember(){returnmember;)publicvoidsetMember(Membermember){this.member=member;}}publicclassHaol3{publicstaticvoidmain(Stringargs[]){Membermem=newMember(1,"xiaozhamg");Carcar=newCar("hake");mem.setCar(car);car.setMember(mem);System.out.printin(mem.getMemberl());System.out.printin(mem.getCar().getCarl());})某公司的雇員分為以下若干類(lèi):Employee:這是所有員エ總的父類(lèi),屬性:員エ的姓名和生日月份。方法:getSalary(intmonth)根據(jù)參數(shù)月份來(lái)確定工資,如果該月員エ過(guò)生日,0則公司會(huì)額外獎(jiǎng)勵(lì)100元。SalariedEmployee:Employee的子類(lèi),拿固定工資的員エ。屬性:月薪HourlyEmployee:Employee的子類(lèi),按小時(shí)拿エ資的員エ,每月工作超出160小時(shí)的部分按照1?5倍工資發(fā)放屬性:每小時(shí)的工資、每月工作的小時(shí)數(shù)SalesEmployee:Employee的子類(lèi),銷(xiāo)售人員,エ資由月銷(xiāo)售額和提成率決定0屬性:月銷(xiāo)售額、提成率BasePlusSalesEmployee:SalesEmployee的子類(lèi),有固定底薪的銷(xiāo)售人員,エ資由底薪加上銷(xiāo)售提成部分 屬性:底薪。importjava.util.*;classEmployeeprivateStringname;privateintbirth;publicEmployee(Stringnamejntbirth){=name;this.birth=birth;}publicvoidsetName(Stringname){=name;|publicStringgetName(){return;}publicvoidsetMonthl(intbirth){this.birth=birth;}publicintgetMonthl(){returnthis.birth;}publicdoublegetSalary(intmonth){if(month==birth){return100;}elsereturn0;}}classSalariedEmployeeextendsEmployee(privateintsalary;publicSalariedEmployee(Stringnamejntbirthjntsalary){super(name,birth);this.salary=salary;)publicvoidsetSalaryl(intsalary){this.salary=salary;}publicintgetSalaryl(){returnthis.salary;}publicdoublegetSalary(intmonth){returnthis.salary+super.getSalary(month);}}classHourlyEmployeeextendsEmployee(privateinthours;privatedoubleincome;publicHourlyEmployee(Stringnamejntbirthjnthours,doubleincome){super(name,birth);this.hours=hours;this.income=income;}publicvoidsetHours(inthours){this.hours=hours;}publicintgetHours(){returnthis.hours;}publicvoidsetlncome(doubleincome){this.income=income;}publicdoublegetlncome(){returnthis.income;}publicdoublegetSalary(intmonth){if(hours>160){returnthis.income*(hours-160)*1.5+super.getSalary(month)+160*this.income;}else{returnhours*this.income+super.getSalary(month);)}}classSalesEmployeeextendsEmployee(privateintxiaoshoue;privatedoubleticheng;publicSalesEmployee(Stringnamejntbirthjntxiaoshoue,doubleticheng){super(name,birth);this.xiaoshoue=xiaoshoue;this.ticheng=ticheng;)publicvoidsetXiaoshoue(intxiaoshoue){this.xiaoshoue=xiaoshoue;}publicintgetXiaoshoue(){returnthis.xiaoshoue;}publicvoidsetTicheng(doubleticheng){this.ticheng=ticheng;returnthis.ticheng;)publicdoublegetSalary(intmonth){returnthis.xiaoshoue*ticheng+xiaoshoue+super.getSalary(month);}}classBasePlusSalesEmployeeextendsSalesEmployee(privateintbaseincome;publicBasePlusSalesEmployee(Stringnamejntbirthjntxiaoshoue.doubletichengjntbaseincome){super(name,birth,xiaoshoue,ticheng);this.baseincome=baseincome;}publicvoidsetBaselncome(intbaseincome){this.baseincome=baseincome;}publicintgetBaselncome(){returnthis.baseincome;}publicdoublegetSalary(intmonth){returnbaseincome+super.getSalary(month);)}publicclassHao6{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);while(true){System.out.printin("輸入月份:");intmonth=scan.nextlnt();Employee[]arr=newEmployee[5];arr[0]=newEmployee("小ーッ1);arr[l]=newSalariedEmployee(“小二”,3,5000);arr[2]=newHourlyEmployee(“小三”,5,170,20);arr[3]=newSalesEmployee(“小四”,6,10000,0.2);arr[4]=newBasePlusSalesEmployee("小五”,8,2000,0.3,1000);for(inti=0;i<arr.length;i++){System.out.println("姓名:"+arr[i].getName()+""+"收入:"+arr[i].getSalary(month));))})1.寫(xiě)ー個(gè)形狀接口Shape有兩個(gè)方法一個(gè)求周長(zhǎng),ー個(gè)求面積.寫(xiě)ー個(gè)長(zhǎng)方形類(lèi)Rect繼承于形狀類(lèi)增加屬性長(zhǎng)和寬分別去覆蓋求周長(zhǎng)和求面積的方法.寫(xiě)ー個(gè)圓形類(lèi)Circle增加屬性半徑分別去覆蓋求周長(zhǎng)和求面積的方法寫(xiě)ー個(gè)測(cè)試類(lèi),在測(cè)試類(lèi)中分別創(chuàng)建不同的對(duì)象放入進(jìn)ー個(gè)Shape數(shù)組中進(jìn)行,循環(huán)數(shù)組中的元素求周長(zhǎng)和面積interfaceShape{publicvoidmianjif);publicvoidzhouchang();}classYuanimplementsShape{privateintr;publicYuan(intr){this.r=r;}publicvoidmianji(){System.out.println("所求的面積是:"+Math.PI*r*r);)publicvoidzhouchang(){System.out.println("所求的周長(zhǎng)是:"+Math.Pド2*r);}|classChangfangxingimplementsShape(privateintchang;privateintkuan;publicChangfangxing(intchang,intkuan){this.chang=chang;this.kuan=kuan;)publicvoidmianji(){System.out.printin("所求的面積是:"+chang*kuan);}publicvoidzhouchang(){System.out.println("所求的周長(zhǎng)是:"+2*(chang+kuan));}}publicclassHaol3publicstaticvoidmain(Stringargs[]){Shape[]shape=newShape[2];shape[0]=newYuan(2);shape[l]=newChangfangxing(2,3);for(inti=0;i<2;i++){shape[i].mianji();shape[i].zhouchang();}}}1,定義一個(gè)接口Assaultable(可攻擊的),該接口有一個(gè)抽象方法attack。。2,定義一個(gè)接口Mobile(可移動(dòng)的),該接口有一個(gè)抽象方法move()。3,定義一?個(gè)抽象類(lèi)Weapon,實(shí)現(xiàn)Assaultable接口和Mobile接口,但并沒(méi)有給出具體的實(shí)現(xiàn)方法.4,定義3個(gè)類(lèi):Tank,Flighter,WarShip都繼承自Weapon,分別用不同的方式實(shí)現(xiàn)Weapon類(lèi)中的抽象方法。5,寫(xiě)ー個(gè)類(lèi)Army,代表ー支軍隊(duì),這個(gè)類(lèi)有一個(gè)屬性是Weapon數(shù)組w(用來(lái)存儲(chǔ)該軍隊(duì)所擁有的所有武器);該類(lèi)還提供一個(gè)構(gòu)造方法,在構(gòu)造方法里通過(guò)傳ー個(gè)int類(lèi)型的參數(shù)來(lái)限定該類(lèi)所能擁有的最大武器數(shù)量,并用這ー大小來(lái)初始化數(shù)組w。該類(lèi)還提供ー個(gè)方法addWeapon(Weaponwa),表示把參數(shù)wa所代表的武器加入到數(shù)組w中〇在這個(gè)類(lèi)中還定義兩個(gè)方法attackAII()和moveAII(),讓w數(shù)組中的所有武器攻擊和移動(dòng)。6,寫(xiě)ー個(gè)主方法去測(cè)試以上程序.interfaceAssaultable{publicvoidattack。;}interfaceMobile{publicvoidmove();}abstractclassWeaponimplementsAssaultable,Mobile(}classTankextendsWeapon{publicvoidattack(){System.out.println("坦克攻擊ッ)publicvoidmove(){System.out.printin("坦克移動(dòng))}|classFeijiextendsWeaponpublicvoidattack(){System.out.println("飛機(jī)攻擊ッ;}publicvoidmove(){System.out.pHntln("飛機(jī)移動(dòng)ッ;})classZhanjianextendsWeapon(publicvoidattack(){System.out.printinジ戰(zhàn)艦攻擊つ;)publicvoidmove(){System.out.println(“戰(zhàn)艦移動(dòng)ッ;})classArmy(publicWeaponw[];intn=0;publicArmy(intmax){w=newWeapon[max];)publicvoidaddWeapon(Weaponwa){if(n<w.length){w[n]=wa;n++;}else{System.out.println("這是武器的最大值”);}}publicvoidattackAII(){for(inti二〇;i<3;i++){w[i].attack();)}publicvoidmoveAII(){for(inti=0;i<3;i++){w[i].move();publicclassHaol4publicstaticvoidmain(Stringargs[]){Armya=newArmy(3);a.addWeapon(newTank());a.addWeapon(newFeiji());a.addWeapon(newZhanjian(J);a.attackAII();a.moveAII();)}1:LinkedList:使用LinkedList實(shí)現(xiàn)堆棧的原理:后進(jìn)先出classMyStack{privateLinkedListIk=newLinkedList();publicvoidpush(Objectobj){}publicvoidpop(){))importjava.util.LinkedList;classStack{privateLinkedListIk=newLinkedList();publicvoidpush(Objectobj){Ik.addFirst(obj);}publicObjectpop(){returnIk.pollFirst();)}publicclassHao24{publicstaticvoidmain(Stringargs[]){Stackh=newStack();h.push(nfn);h.push(ndn);h.push(”s");h.push(nen);h.push(nan);System.out.printin(h.pop());System.out.printin(h.pop());System.out.printin(h.pop());System.out.printin(h.pop());System.out.printin(h.pop());}}關(guān)于SET的ー個(gè)程序的總結(jié)包括排序輸出中的原則的定義equalshashcode的寫(xiě)法importjava.util.Collections;importjava.util.Comparator;importjava.util.HashSet;importjava.util.Iterator;importjava.util.Set;importjava.util.TreeSet;publicclassTest7{publicstaticvoidmain(Stringargs[]){TreeSett=new立生星^();//定義ー個(gè)集合t用來(lái)放東西還要注意定義的集合是按什么排的就像柜『籃『不同的裝東西的集合Teachertl=newTeacher("xiaoren",1フ8);//定義集合t中所放的東西是什么Teachert2=newTeacher("xiaofab",12);Teachert3newTeacher("xiaoda",145);Teachert3Teachert4=newTeacher("xiaosf",78);TeacherTeachert5newTeacher(nxiaorenHz18);Teachert5Teachert6=newTeacher(Hxiaoag*\148);Teachert7=newTeacher(nxiaoadhnz58);t.add(tl).;〃把定義的東西放到所定義的集合t屮t.add(t2);t.add(t3);t.add(t4);t.add(t5);t.add(t6);t.add(t7);Iteratorit=t.iterator();//注意:是對(duì)集合t進(jìn)行迭代處理while(it.hasNext()){System.out.printin(it.next());}}レ/下面開(kāi)始定義不同東西的應(yīng)該按什么順序放和取出classTeacherimplementsComparably]//首先Teacher繼承了Comparable的比較關(guān)系自己規(guī)定是按什么進(jìn)行比較的排序的privateStringname;//對(duì)Teacher的各個(gè)屬性進(jìn)行封裝privateintage;publicTeacher(Stringname,intage){=name;this.age=age;publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;publicintgetAge(){returnage;publicvoidsetAge(intage){this.age=age;}publicStringtoString(){return"Teacher[age=H+age+”,name="+name+"]";}publicintcompareTo(Objecto){//此題規(guī)定了是按照年齡大小進(jìn)彳了比較if(〇instanceofTeacher){//確定是不是自己定義的Teacher類(lèi),;Teachert=(Teacher)。;//如果是則進(jìn)行強(qiáng)制轉(zhuǎn)換returnthis.age-t.age;//返回自己的定義規(guī)則}elsereturn0;publicbooleanequals(Objectobj){//因?yàn)槭怯玫膕et此時(shí)對(duì)象中イ;能有相同的但是還要規(guī)定你按照什么原則判斷他們相同所以要用到equalshashcodei£(obj==nun){//首先判斷是イ;是為空值若是則返回falsereturnfalse;}elseif(obj==this){//再次判斷是不是兩個(gè)對(duì)象的地址是不是相同若是則返回truereturntrue;}elseif(objinstanceofTeacher){//最后確定是不是Teacher類(lèi)型的若是Teachert=(Teacher)obj;//如果是則進(jìn)行強(qiáng)制轉(zhuǎn)換return.equals()〃/返回自己的定義的規(guī)則就是兩個(gè)對(duì)象的名字相同則兩個(gè)對(duì)象就算相同}elsereturnfalse;}publicinthashCode(){//哈希碼值的判斷return1;3:Mapmap=newHashM叩〇;map.putC'l'V'b");map.putC'Z'V'a");map.putC'3";,dH);m叩.put(“4",“c");對(duì)以上HashMap進(jìn)行排序importjava.util.Arrays;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util.Set;publicclassRen4{publicstaticvoidmain(String[]args){Mapmap=newHashMap();//map.put("54"/"a");//map.put(“15ヴd”);map.put(“52ヴs”);map.put(“65”,”g”);Object[]set=m叩.keySet().toArray();〃定義ー個(gè)數(shù)組把map中的key值放到這個(gè)數(shù)組中。注意m叩.keyset。的返回值是SET型的而SET型有個(gè)方法可以返回?cái)?shù)組形式Arrays.sort(set); 〃返回全部的key并且把他放在set集合中for(inti=O;i<set.length;i++){System.out.println(map.get(set[i]));}}}〃此題的注意點(diǎn)是:要怎樣說(shuō)取出key并且把他進(jìn)行排序按照key的順序輸出出來(lái)4:獲取Person類(lèi)中所有的String類(lèi)型的成員變量,針對(duì)以下引用Personty=newPerson(,'tye2"/100,"gem");將String類(lèi)型的屬性值中含有e改寫(xiě)為BSystem.out.println(ty);tyB2100gBm思路:.獲取Person類(lèi)中所有屬性.判斷所有屬性中哪些是String類(lèi)型.獲得String類(lèi)型的屬性中針對(duì)ty引用所對(duì)應(yīng)的值.將e替換為Bimportjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;interfaceGood{publicStringgetName();publicintgetCount();publicfloatgetPrice();}classsupermarket{privateListallGoods;publicsupermarket(){this.allGoods=newArrayList();}publicvoidadd(Goodgood){this,allGoods.add(good);}publicvoidremove(Goodgood){this,allGoods.remove(good);}publicListsearch(Stringkey){Listtemp=newArrayList();Iteratorit=this.allGoods.iterator();while(it,hasNext()){Goodg=(Good)it.next();if(g.getName().indexOf(key)==1){temp.add(g);)}returntemp;}publicListgetAHGoods(){returnthis.allGoods;abstractclassBooksimplementsGood{privateStringname;privateintcount;privatefloatprice;publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}publicintgetCount(){returncount;}publicvoidsetCount(intcount){this.count=count;)publicfloatgetPrice(){returnprice;}publicvoidsetPrice(floatprice){this.price=price;}publicBooks(){@OverridepublicStringtoString(){returnnBooks[count=n4-count+”,name="+name+",price="+price+丁;)publicBooks(Stringname,intcount,floatprice){super();=name;this.count=count;this.price=price;}@OverridepublicinthashCode(){return.hashCode()+newInteger(this.count).hashCode()+newFloat(this.price).hashCode();}@Overridepublicbooleanequals(Objectobj){if(obj==null){returnfalse;}if(this==obj){returntrue;}if(objinstanceofBooks){returntrue;)Booksb=(Books)obj;if(.equals()&&b.count==this.count&&b.price==this.price)returntrue;returntrue;publicclassSuperMark{publicstaticvoidmain(Stringargs[]){supermarketsu=newsupermarket();su.add(newBooks("java”,12,32.05f));}}附錄資料:java處理高并發(fā)高負(fù)載類(lèi)網(wǎng)站的優(yōu)化方法java處理高并發(fā)高負(fù)載類(lèi)網(wǎng)站中數(shù)據(jù)庫(kù)的設(shè)計(jì)方法(java教程,java處理大量數(shù)據(jù)ノava高負(fù)載數(shù)據(jù))一:高并發(fā)高負(fù)載類(lèi)網(wǎng)站關(guān)注點(diǎn)之?dāng)?shù)據(jù)庫(kù)沒(méi)錯(cuò),首先是數(shù)據(jù)庫(kù),這是大多數(shù)應(yīng)用所面臨的首個(gè)SPOFo尤其是Web2.0的應(yīng)用,數(shù)據(jù)庫(kù)的響應(yīng)是首先要解決的。一般來(lái)說(shuō)MySQL是最常用的,可能最初是ー個(gè)mysql主機(jī),當(dāng)數(shù)據(jù)增加到100萬(wàn)以上,那么,MySQL的效能急劇下降。常用的優(yōu)化措施是M-S(主一從)方式進(jìn)行同步復(fù)制,將查詢(xún)和操作和分別在不同的服務(wù)器上進(jìn)行操作。我推薦的是M-M-Slaves方式,2個(gè)主Mysql,多個(gè)Slaves,需要注意的是,雖然有2個(gè)Master,但是同時(shí)只有!個(gè)是Active,我們可以在一定時(shí)候切換。之所以用2個(gè)M,是保證M不會(huì)又成為系統(tǒng)的SPOF.Slaves可以進(jìn)ー步負(fù)載均衡,可以結(jié)合LVS,從而將select操作適當(dāng)?shù)钠胶獾讲煌膕laves上。以上架構(gòu)可以抗衡到ー定量的負(fù)載,但是隨著用戶(hù)進(jìn)ー步增加,你的用戶(hù)表數(shù)據(jù)超過(guò)1千萬(wàn)這時(shí)那個(gè)M變成了SPOF。你不能任意擴(kuò)充Slaves,否則復(fù)制同步的開(kāi)銷(xiāo)將直線上升,怎么辦?我的方法是表分區(qū),從業(yè)務(wù)層面上進(jìn)行分區(qū)。最簡(jiǎn)單的,以用戶(hù)數(shù)據(jù)為例。根據(jù)一定的切分方式,比如id,切分到不同的數(shù)據(jù)庫(kù)集群去。全局?jǐn)?shù)據(jù)庫(kù)用于meta數(shù)據(jù)的查詢(xún)。缺點(diǎn)是每次查詢(xún),會(huì)增加一次,比如你要查ー個(gè)用戶(hù)nightsailer,你首先要到全局?jǐn)?shù)據(jù)庫(kù)群找到nightsailer對(duì)應(yīng)的clusterid,然后再到指定的cluster找到nightsailer的實(shí)際數(shù)據(jù)。每個(gè)cluster可以用m-m方式,或者m-m-slaves方式。這是ー個(gè)可以擴(kuò)展的結(jié)構(gòu),隨著負(fù)載的增加,你可以簡(jiǎn)單的增加新的mysqlcluster進(jìn)去。需要注意的是:1、禁用全部auto_increment的字段2、id需要采用通用的算法集中分配3、要具有ヒ匕較好的方法來(lái)監(jiān)控mysql主機(jī)的負(fù)載和服務(wù)的運(yùn)行狀態(tài)。如果你有30臺(tái)以上的mysql數(shù)據(jù)庫(kù)在跑就明白我的意思了。4、不要使用持久性鏈接(不要用pconnect),相反,使用sqlrelay這種第三方的數(shù)據(jù)庫(kù)鏈接池,或者干脆自己做,因?yàn)閜hp4中mysql的鏈接池經(jīng)常出問(wèn)題。二:高并發(fā)高負(fù)載網(wǎng)站的系統(tǒng)架構(gòu)之HTML靜態(tài)化其實(shí)大家都知道,效率最高、消耗最小的就是純靜態(tài)化,所以我們盡可能使我們的網(wǎng)站上的頁(yè)面采用靜態(tài)頁(yè)面來(lái)實(shí)現(xiàn),這個(gè)最簡(jiǎn)單的方法其實(shí)也是最有效的方法。但是對(duì)于大量?jī)?nèi)容并且頻繁更新的網(wǎng)站,我們無(wú)法全部手動(dòng)去挨個(gè)實(shí)現(xiàn),于是出現(xiàn)了我們常見(jiàn)的信息發(fā)布系統(tǒng)CMS,像我們常訪問(wèn)的各個(gè)門(mén)戶(hù)站點(diǎn)的新聞?lì)l道,甚至他們的其他頻道,都是通過(guò)信息發(fā)布系統(tǒng)來(lái)管理和實(shí)現(xiàn)的,信息發(fā)布系統(tǒng)可以實(shí)現(xiàn)最簡(jiǎn)單的信息錄入自動(dòng)生成靜態(tài)頁(yè)面,還能具備頻道管理、權(quán)限管理、自動(dòng)抓取等功能,對(duì)于ー個(gè)大型網(wǎng)站來(lái)說(shuō),擁有一套高效、可管理的CMS是必不可少的。除了門(mén)戶(hù)和信息發(fā)布類(lèi)型的網(wǎng)站,對(duì)于交互性要求很高的社區(qū)類(lèi)型網(wǎng)站來(lái)說(shuō),盡可能的靜態(tài)化也是提高性能的必要手段,將社區(qū)內(nèi)的帖子、文章進(jìn)行實(shí)時(shí)的靜態(tài)化,有更新的時(shí)候再重新靜態(tài)化也是大量使用的策略,像Mop的大雜蛤就是使用了這樣的策略,網(wǎng)易社區(qū)等也是如此。 同時(shí),html靜態(tài)化也是某些緩存策略使用的手段,對(duì)于系統(tǒng)中頻繁使用數(shù)據(jù)庫(kù)查詢(xún)但是內(nèi)容更新很小的應(yīng)用,可以考慮使用html靜態(tài)化來(lái)實(shí)現(xiàn),比如論壇中論壇的公用設(shè)置信息,這些信息目前的主流論壇都可以進(jìn)行后臺(tái)管理并且存儲(chǔ)再數(shù)據(jù)庫(kù)中,這些信息其實(shí)大量被前臺(tái)程序調(diào)用,但是更新頻率很小,可以考慮將這部分內(nèi)容進(jìn)行后臺(tái)更新的時(shí)候逬行靜態(tài)化,這樣避免了大量的數(shù)據(jù)庫(kù)訪問(wèn)請(qǐng)求高并發(fā)。網(wǎng)站HTML靜態(tài)化解決方案當(dāng)ー個(gè)Servlet資源請(qǐng)求到達(dá)WEB服務(wù)器之后我們會(huì)填充指定的JSP頁(yè)面來(lái)響應(yīng)請(qǐng)求:HTTP請(qǐng)求一一Web服務(wù)器一一Servlet—業(yè)務(wù)邏輯處理一訪問(wèn)數(shù)據(jù)ー填充JSPー響應(yīng)請(qǐng)求HTML靜態(tài)化之后:HTTP請(qǐng)求一一Web服務(wù)器一一Servlet-HTML-響應(yīng)請(qǐng)求靜態(tài)訪求如下Servlet:publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,lOException{if(request.getParameter(nchapterIdn)!=null){StringchapterFileName ="bookChapterRead_n+request.getParameter(nchapterId")+".htmr;StringchapterFilePath=getServletContext().getRealPath(ソ")+chapterFileName; FilechapterFile=newFile(chapterFilePath);if(chapterFile.exists()){response.sendRedirect(chapterFileName);return;}//如果有這個(gè)文件就告訴瀏覽器轉(zhuǎn)向 INovelChapterBiznovelChapterBiz=newNovelChapterBizImpl(); Novelchapternovelchapter=novelChapterBiz.searchNovelChapterById(Integer.parseInt(request.getParameter("chapterld")));/Z章節(jié)信息 intlastPageld=novelChapterBiz.searchLastCHapterId(novelChapter.getNovelId().getId(),novelChapter.getldO); int nextPageld =novelChapterBiz.searchNextChapterId(novelChapter.getNovelId().getId(),novelChapter.getId()); request.setAttribute("novelChapter",novelchapter); request.setAttribute("lastPageld",lastPageld); request.setAttribute("nextPageId",nextPageld); newCreateStaticHTMLPage().createStaticHTMLPage(request,response,getServletContext(), chapterFileName,chapterFilePath,"/bookRead.jsp");}}生成HTML靜態(tài)頁(yè)面的類(lèi):package com.jb.y2t034.thefifth.web.servlet; importjava.io.ByteArrayOutputStream;importjava.io.FileOutputStream;import java.io.IOException; importjava.io.OutputStreamWriter;import java.io.PrintWriter; importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpServletResponseWrapper;/***創(chuàng)建HTML靜態(tài)頁(yè)面?功能:創(chuàng)建HTML靜態(tài)頁(yè)面*時(shí)間:2009年1011日?地點(diǎn):home*@authormavk**/publicclassCreateStaticHTMLPage{ /** *生成靜態(tài)HTML頁(yè)面的方法 ?@paramrequest請(qǐng)求對(duì)象*@paramresponse響應(yīng)對(duì)象?@paramservletContextServlet上下文@paramfileName文件名稱(chēng) *@paramfileFullPath文件完整路徑 ?*@throws@paramjspPath需要生成靜態(tài)文件的JSP路徑(相對(duì)即可)*@throwslOException*@throwsServletException*/publicvoidcreateStaticHTMLPage(HttpServletRequest request,HttpServletResponseresponse,ServletContextservletContext,StringfileName,StringfileFullPath,StringjspPath)throwsServletException,IOException{response.setContentType("text/html;charset=gb2312");〃設(shè)置HTML結(jié)果流編碼(即HTML文件編碼)RequestDispatcherrd=servletContext.getRequestDispatcher(jspPath);/Z得至リJSP資源finalByteArrayOutputStreambyteArrayOutputStream=newByteArrayOutputStream();//用于從ServletOutputStream中接收資源 finalServletOutputStreamservletOuputStream=newServletOutputStream(){/Z用于從HttpServletResponse中接收資源 publicvoidwrite(byte[]b,intoff,intlen){ byteArrayOutputStream.write(b, off,len); } publicvoidwrite(intb){ byteArrayOutputStream.write(b);} };finalPrintWriterprintwriter=newPrintWriter(new〇utputStreamWriter(byteArrayOutputStream));〃把轉(zhuǎn)換字節(jié)流轉(zhuǎn)換成字符流 HttpServletResponseHttpServletResponse=newHttpServletResponseWrapper(response){//用于從response獲取結(jié)果流資源(重寫(xiě)了兩個(gè)方法) publicServletOutputStreamgetOutputStream(){ returnPrintWriterpublicservletOuputStream;PrintWriterpublicgetWriter(){ returnprintwriter; } }; rd.include(request,httpServletResponse);〃發(fā)送結(jié)果流 printWriter.flush。ノ/刷新緩沖區(qū),把緩沖區(qū)的數(shù)據(jù)輸出 FileOutputStreamfileOutputStream=newFileOutputStream(fileFullPath);byteArrayOutputStream.writeTo(fileOutputStream);//把byteArrayOuputStream中的資源全部寫(xiě)入到fileOuputStream中file〇utputStream.close();〃關(guān)閉輸出流,并釋放相關(guān)資源 response.sendRedirect(fileName);〃發(fā)送指定文件流到客戶(hù)端}}三:高并發(fā)高負(fù)載類(lèi)網(wǎng)站關(guān)注點(diǎn)之緩存、負(fù)載均衡、存儲(chǔ)緩存是另ー個(gè)大問(wèn)題,我一般用memcached來(lái)做緩存集群,一般來(lái)說(shuō)部署!0臺(tái)左右就差不多(10g內(nèi)存池),需要注意一點(diǎn),千萬(wàn)不能用使用swap,最好關(guān)閉linux的sw叩。負(fù)載均衡/加速可能上面說(shuō)緩存的時(shí)候,有人第一想的是頁(yè)面靜態(tài)化,所謂的靜態(tài)html,我認(rèn)為這是常識(shí),不屬于要點(diǎn)了。頁(yè)面的靜態(tài)化隨之帶來(lái)的是靜態(tài)服務(wù)的負(fù)載均衡和加速。我認(rèn)為しighttped+Squid是最好的方式了。LVS< >lighttped====>squid(s)====lighttpd上面是我經(jīng)常用的。注意,我沒(méi)有用apache,除非特定的需求,否則我不部署apache,因?yàn)槲乙话阌胮hp-fastcgi酉己合lighttpd,性能比apache+mod_php要強(qiáng)很多。squid的使用可以解決文件的同步等等問(wèn)題,但是需要注意,你要很好的監(jiān)控緩存的命中率,盡可能的提高的90%以上。squid和lighttped也有很多的話題要討論,這里不贅述。存儲(chǔ)存儲(chǔ)也是ー個(gè)大問(wèn)題,ー種是小文件的存儲(chǔ),比如圖片這類(lèi)。另ー種是大文件的存儲(chǔ),比如搜索引擎的索引,一般單文件都超過(guò)2g以上。小文件的存儲(chǔ)最簡(jiǎn)單的方法是結(jié)合!ighttpd來(lái)進(jìn)行分布。或者干脆使用Redhat的GFS,優(yōu)點(diǎn)是應(yīng)用透明,缺點(diǎn)是費(fèi)用較高。我是指你購(gòu)買(mǎi)盤(pán)陣的問(wèn)題。我的項(xiàng)目中,存儲(chǔ)量是2-10Tb,我采用了分布式存儲(chǔ)。這里要解決文件的復(fù)制和冗余。這樣每個(gè)文件有不同的冗余,這方面可以參考google的gfs的論文。大文件的存儲(chǔ),可以參考nutch的方案,現(xiàn)在已經(jīng)獨(dú)立為hadoop子項(xiàng)目。(你可以googleit)其他:此外,passport等也是考慮的,不過(guò)都屬于ヒ匕較簡(jiǎn)單的了。四:高并發(fā)高負(fù)載網(wǎng)站的系統(tǒng)架構(gòu)之圖片服務(wù)器分離大家知道,對(duì)于Web服務(wù)器來(lái)說(shuō),不管是Apache.IIS還是其他容器,圖片是最消耗資源的,于是我們有必要將圖片與頁(yè)面逬行分離,這是基本上大型網(wǎng)站都會(huì)采用的策略,他們都有獨(dú)立的圖片服務(wù)器,甚至很多臺(tái)圖片服務(wù)器。這樣的架構(gòu)可以降低提供頁(yè)面訪問(wèn)請(qǐng)求的服務(wù)器系統(tǒng)壓カ,并且可以保證系統(tǒng)不會(huì)因?yàn)閳D片問(wèn)題而崩潰,在應(yīng)用服務(wù)器和圖片服務(wù)器上,可以進(jìn)行不同的配置優(yōu)化,比如叩ache在配置ContentType的時(shí)候可以盡量少支持,盡可能少的LoadModule,保證更高的系統(tǒng)消耗和執(zhí)行效率。利用Apache實(shí)現(xiàn)圖片服務(wù)器的分離緣由:起步階段的應(yīng)用,都可能部署在ー臺(tái)服務(wù)器上(費(fèi)用上的原因)第一個(gè)優(yōu)先分離的,肯定是數(shù)據(jù)庫(kù)和應(yīng)用服務(wù)器。第

二個(gè)分離的,會(huì)是什么呢?各有各的考慮,我所在的項(xiàng)目組重點(diǎn)考慮的節(jié)約帶寬,服務(wù)器性能再好,帶寬再高,并發(fā)來(lái)了,也容易撐不住。因此,我這篇文章的重點(diǎn)在這里。這里重點(diǎn)是介紹實(shí)踐,不一定符合所有情況,供看者參考吧,環(huán)境介紹:WEB應(yīng)用服務(wù)器:4CPU雙核2G,內(nèi)存4G部署:Win2003/ApacheHttpServer2.1/Tomcat6數(shù)據(jù)庫(kù)服務(wù)器:4CPU雙核2G,內(nèi)存4G部署:Win2003/MSSQL2000步驟:步驟ー:增加2臺(tái)配置為:2CPU雙核2G,內(nèi)存2G普通服務(wù)器,做資源服務(wù)器部署:Tomcat6,跑了一個(gè)圖片上傳的簡(jiǎn)單應(yīng)用,(記得指定web.xml的〈distributable/〉),并指定域名為resl.***.com,res2.***.com,采用ajp協(xié)議步驟二:修改Apachehttpd.conf配置原來(lái)應(yīng)用的文件上傳功能網(wǎng)址為:1、/fileupload.html2、7otherupload.html在httpd.conf中增加如下配置<VirtualHost*:80>ServerAdminwebmaster@***.comProxyPass/fileupload.htmlbalancer://rescluster/fileuploadlbmethod=byrequestsstickysession=JSESSIONID nofailover=Off timeout=5maxattempts=3 ProxyPass /otherupload.htmlbalancer://rescluster/otherupload.html lbmethod=byrequestsstickysession=JSESSIONID nofailover=Off timeout=5maxattempts=3#<!—負(fù)載均衡—> <Proxybalancer://rescluster/>BalancerMemberajp://resl.***.com:8009smax=5max=500 ttl=120 retry=300loadfactor=100route=tomcatlBalancerMemberajp://res2.***.com:8009smax=5max=500ttl=120retry=300loadfactor=100max=500ttl=120retry=300loadfactor=100route=tomcat2</Proxy></VirtualHost>步驟三,修改業(yè)務(wù)邏輯:所有上傳文件在數(shù)據(jù)庫(kù)中均采用全url的方式保存,例如產(chǎn)品圖片路徑存成:http://resH.com/upload/20090101/productl20302005.jpg現(xiàn)在,你可以高枕無(wú)憂了,帶寬不夠時(shí),增加個(gè)幾十臺(tái)圖片服務(wù)器,只需要稍微修改一下叩ache的配置文件,即可。五:高并發(fā)高負(fù)載網(wǎng)站的系統(tǒng)架構(gòu)之?dāng)?shù)據(jù)庫(kù)集群和庫(kù)表散列大型網(wǎng)站都有復(fù)雜的應(yīng)用,這些應(yīng)用必須使用數(shù)據(jù)庫(kù),那么在面對(duì)大量訪問(wèn)的時(shí)候,數(shù)據(jù)庫(kù)的瓶頸很快就能顯現(xiàn)出來(lái),這時(shí)一臺(tái)數(shù)據(jù)庫(kù)將很快無(wú)法滿足應(yīng)用,于是我們需要使用數(shù)據(jù)庫(kù)集群或者庫(kù)表散列。 在數(shù)據(jù)庫(kù)集群方面,很多數(shù)據(jù)庫(kù)都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是類(lèi)似的方案,您使用了什么樣的DB,就參考相應(yīng)的解決方案來(lái)實(shí)施即可。 上面提到的數(shù)據(jù)庫(kù)集群由于在架構(gòu)、成本、擴(kuò)張性方面都會(huì)受到所采用DB類(lèi)型的限制,于是我們需要從應(yīng)用程序的角度來(lái)考慮改善系統(tǒng)架構(gòu),庫(kù)表散列是常用并且最有效的解決方案。我們?cè)趹?yīng)用程序中按照業(yè)務(wù)和應(yīng)用或者功能模塊將數(shù)據(jù)庫(kù)逬行分離,不同的模塊對(duì)應(yīng)不同的數(shù)據(jù)庫(kù)或者表,再按照一定的策略對(duì)某個(gè)頁(yè)面或者功能進(jìn)行更小

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論