??xml version="1.0" encoding="utf-8" standalone="yes"?>
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ListMap {
/**
* @param args
* <br>
* @exception 例外
* @since 1.0.0
*/
public static void main(String[] args) {
Map maps = new HashMap();
maps.put("5", "a");
maps.put("4", "b");
maps.put("3", "c");
maps.put("2", "d");
maps.put("7", "e");
maps.put("1", "f");
List list = new ArrayList();
System.out.println(maps);
Object[] o = ((HashMap) maps).keySet().toArray();
Arrays.sort(o);
int maxKey = Integer.parseInt((String)o[o.length - 1]);
for (int i = 1; i <= maxKey; i++) {
if (maps.containsKey(String.valueOf(i))) {
list.add(maps.get(String.valueOf(i)));
} else {
list.add(maps.get(""));
}
}
System.out.println(list);
}
}
在Java中,this通常指当前对象,super则指父类的。当你想要引用当前对象的某种东西Q比如当前对象的某个ҎQ或当前对象的某个成员,你便 可以利用this来实现这个目的,当然Qthis的另一个用途是调用当前对象的另一个构造函敎ͼq些马上p讨论。如果你惛_用父cȝ某种东西Q则? super莫属。由于this与super有如此相似的一些特性和与生俱来的某U关p,所以我们在q一块儿来讨论,希望能帮助你区分和掌握它们两个?/p>
在一般方法中
最普遍的情况就是,在你的方法中的某个Ş参名与当前对象的某个成员有相同的名字Q这时ؓ了不至于hQ你侉K要明用this关键字来指明你要使用? 个成员,使用Ҏ?#8220;this.成员?#8221;Q而不带this的那个便是Ş参。另外,q可以用“this.Ҏ?#8221;来引用当前对象的某个ҎQ但q时this ׃是必ȝ了,你可以直接用Ҏ名来讉K那个ҎQ编译器会知道你要调用的是那一个。下面的代码演示了上面的用法Q?br />
public class DemoThis{
private String name;
private int age;
DemoThis(String name,int age){
setName(name); //你可以加上this来调用方法,像这Pthis.setName(name);但这q不是必ȝ
setAge(age);
this.print();
}
public void setName(String name){
this.name=name;//此处必须指明你要引用成员变量
}
public void setAge(int age){
this.age=age;
}
public void print(){
System.out.println("Name="+name+" Age="+age);//在此行中q不需要用thisQ因为没有会Dh的东?br />
}
public static void main(String[] args){
DemoThis dt=new DemoThis("Kevin","22");
}
}
q段代码很简单,不用解释你也应该能看明白。在构造函C你看到用this.print(),你完全可以用print()来代替它Q两者效果一栗下面我们修改这个程序,来演Csuper的用法?/p>
class Person{
public int c;
private String name;
private int age;
protected void setName(String name){
this.name=name;
}
protected void setAge(int age){
this.age=age;
}
protected void print(){
System.out.println("Name="+name+" Age="+age);
}
}
public class DemoSuper extends Person{
public void print(){
System.out.println("DemoSuper:");
super.print();
}
public static void main(String[] args){
DemoSuper ds=new DemoSuper();
ds.setName("kevin");
ds.setAge(22);
ds.print();
}
}
在DemoSuper中,重新定义的printҎ覆写了父cȝprintҎQ它首先做一些自q事情Q然后调用父cȝ那个被覆写了的方法。输出结果说明了q一点:
DemoSuper:
Name=kevin Age=22
q样的用方法是比较常用的。另外如果父cȝ成员可以被子c访问,那你可以像用this一样用它Q用“super.父类中的成员?#8221;的方式,但常怽q不是这h讉K父类中的成员名的?/p>
在构造函C
构造函数是一U特D的ҎQ在对象初始化的时候自动调用。在构造函CQthis和super也有上面说的U种使用方式Qƈ且它q有Ҏ的地方,L下面的例子:
class Person{
public static void prt(String s){
System.out.println(s);
}
Person(){
prt("A Person.");
}
Person(String name){
prt("A person name is:"+name);
}
}
public class Chinese extends Person{
Chinese(){
super(); //调用父类构造函敎ͼ1Q?br />
prt("A chinese.");//(4)
}
Chinese(String name){
super(name);//调用父类h相同形参的构造函敎ͼ2Q?br />
prt("his name is:"+name);
}
Chinese(String name,int age){
this(name);//调用当前h相同形参的构造函敎ͼ3Q?br />
prt("his age is:"+age);
}
public static void main(String[] args){
Chinese cn=new Chinese();
cn=new Chinese("kevin");
cn=new Chinese("kevin",22);
}
}
在这D늨序中Qthis和super不再是像以前那样?#8220;.”q接一个方法或成员Q而是直接在其后跟上适当的参敎ͼ因此它的意义也就有了变化?
super后加参数的是用来调用父类中具有相同Ş式的构造函敎ͼ??处。this后加参数则调用的是当前具有相同参数的构造函敎ͼ?处。当Ӟ?
Chinese的各个重载构造函CQthis和super在一般方法中的各U用法也仍可使用Q比?处,你可以将它替换ؓ“this.prt”(因ؓ?
l承了父cM的那个方法)或者是“super.prt”Q因为它是父cM的方法且可被子类讉KQ,它照样可以正运行。但q样g有点画蛇添的味道
了?/p>
最后,写了q么多,如果你能?#8220;this通常指代当前对象Qsuper通常指代父类”q句话牢记在心,那么本篇便达C目的Q其它的你自会在以后的编E实践当中慢慢体会、掌握。另外关于本中提到的承,请参阅相关Java教程
猪肝是猪体内最大的毒物中{站解毒器官,各种有毒的代谢物和混入食料中的某些有毒物质如农药等Q都会聚集在肝脏中,q被它解毒、排泄,或经它化学加工后q送至肾脏Q从便中排出?
|
׃猪肝中有毒的血液是分散存留在数以万计的肝血H中Q因此,买回猪肝后要在自来水龙头下冲z一下,然后|于盆内1?时消除D血。注意水要完全浸没猪肝。若猪肝急烹饪,则可视其大小切成4?块,|盆中轻Lz一下,然后盛入|篮中在自来水下冲洗q净卛_?/font>
另外Q炒猪肝不要一x嫩,否则Q既不能有效LQ又不能杀ȝ菌、寄生虫c?/font>
Q.安装
QPndow?
QP默认安装时不安装QテQ组Ӟ需要手工添加安装。进入控刉板,扑ֈ“dQ删除程?#8221;Q打开后选择“dQ删除Dindowslg”Q在弹出?
“QPndows组件向?#8221;H口中,?#8220;Qnternet信息服务QテQSQ?#8221;w中。在该选项前的“√”背景色是灰色的,q是因ؓQPndow?
QP默认q不安装QTQ服务组件。再点击右下角的“详细信息”Q在弹出?#8220;Qnternet信息服务QテQSQ?#8221;H口中,扑ֈ“文g传输协议QuQ_Q服
?#8221;Q选中后确定即可?br />
安装完后需要重启。Dindows QTQ2Q0Q和QPndow?QP的安装方法相同?/p>
Q.讄
电脑?
启后QuQ_服务器就开始运行了Q但q要q行一些设|。点?#8220;开?#8594;所有程?#8594;理工具→Qnternet信息服务”Q进?#8220;Qnternet信息服务”
H口后,扑ֈ“默认QTQ站?#8221;Q右击鼠标,在弹出的右键菜单中选择“属?#8221;。在“属?#8221;中,我们可以讄QTQ服务器的名U、テQ、端口、访问̎戗?
QTQ目录位|、用戯入uQ_时接收到的消息等?/p>
Q)QTQ站点基本信?br /> q入“QTQ站?#8221;选项卡,其中?#8220;描述”选项QTQ站点的名称Q用来称g的服务器Q可以随意填Q比?#8220;我的 站”Q?#8220;QP地址”为服务器的テQͼpȝ默认?#8220;全部未分配 ”Q一般不L动,但如果在下拉列表框中有两个或两个以上的テQ地址Ӟ最好指定ؓ公网 QPQ?#8220;Q_EQ端?#8221;一般仍设ؓ默认的2Q端口;“q接”选项用来讄允许同时q接服务器的用户最大连接数Q?#8220;q接时”用来讄一个等待时_如果q接 到服务器的用户在U的旉过{待旉而没有Q何操作,服务器就会自动断开与该用户的连接?/p>
Q)讄账户及其权限
很多QTQ站炚w要求用户输入用户名和密码才能dQ这个用户名和密码就叫̎戗不同用户可使用相同的̎戯问站点,同一个站点可讄多个账户Q每个̎户可拥有不同的权限,如有的可以上传和下蝲Q而有的则只允怸载?/p>
Q)安全讑֮
q?
?#8220;安全账户”选项卡,?#8220;允许匿名q接”?#8220;仅允许匿名连?#8221;两项Q默认ؓ“允许匿名q接”Q此ӞuQ_服务器提供匿名登录?#8220;仅允许匿名连?#8221;是用?
防止用户使用有管理权限的账户q行讉KQ选中后,即是AdministratorQ管理员Q̎号也不能dQuQ_只能通过服务器进?#8220;本地讉K”来管
理。至?#8220;QTQ站Ҏ作员”选项Q是用来d或删除本QTQ服务器h一定权限的账户。テQS与其他专业的QTQ服务器软g不同Q它ZQPndow?
用户账号q行账户理Q本wƈ不能随意讑֮QTQ服务器允许讉K的̎P要添加或删除允许讉K的̎P必须先在操作pȝ自带?#8220;理工具”中的“计算机管
?#8221;中去讄QPndows用戯̎P然后再通过“安全账户”选项卡中?#8220;QTQ站Ҏ作员”选项d或删除。但对于QPndow?
Q0Q0和Dindows QP专业版,pȝq不提供“QTQ站Ҏ作员”账户d与删除功能,只提供Administrator一个管理̎受?br />
提示Q匿名登录一般不要求用户输入用户名和密码卛_d成功Q若需要,可用“anonymou?#8221;作ؓ用户名,以Q意电子邮件地址为密码来d?/p>
Q)讄用户d目录
最后设|uQ_ȝ录(即用L录uQ_后的初始位置Q,q入“ȝ?#8221;选项卡,?#8220;本地路径”中选择好uQ_站点?
根目录,q设|该目录的读取、写入、目录访问权限?#8220;目录列表样式”?#8220;QNQ”?#8220;QSQDQS”的区别在于:假设G\Qtp设为站Ҏ目录Q则
当用L录uQ_后,前者会使主目录昄?#8220;Q?#8221;Q后者显CZؓ“QQ|utp”?br />
讄完成后,QTQ服务器q真正建成了。如果前面テQ地址?
Q1Q.Q.Q.Q,则用户用uQ_客户端YӞ用来dQTQ服务器的上传/下蝲软gQ如QuteQTQ、ulashQQ等Q如无特别说明,本文?
所UuQ_客户端Y件均以EuteuQ_ Qͽ?
Q.Qؓ例)ӞL处填Q1Q.Q.Q.Q,端口填2Q,此服务器的地址表述为:ftpQ/Q1Q.Q.Q.QQ1。テQS虽然安装单,讄较简
便,但功能不强,理也很ȝQ尤其是q新Z个基本的授权讉K账户都要q行J杂的设|,而且QテQxw的安全性也比较差,Ҏ受到诸如“U色代码”{专
门针对テQS漏洞q行d的病毒R袭,因而很多h都喜Ƣ用第三方的uQ_服务器Y件来架设?/p>
二、用QIrvQU{第三方QTQ服务器软g架设
除テQS外,q有很多QTQ服务器软g可以架设Q如QPQuQ_、ProQtpd?
QIrvQU{,但大部分只适用于Unix、LinuxpȝQ如果用DindowspȝQ强烈推荐用Serv-QcServ-Q(下蝲地址Q?
http/QwwwQnewhua.com/QTQͼervUQhtmQ含汉化包)是一U被q泛q用的uQ_服务器端软gQ支持Dindows
QxQ9x/QeQNQ_Q0Q0{全QPndows系列。它安装单,功能强大Q可以用同一个テQ设定多个uQ_服务器、限定登录用L权限、登录主?
录及I间大小、支持远E登录管理等Q适合l大部分个h自徏QTQ的需要?/p>
Q.安装
QIrvQU的安装比QテQ单。先执行英文原版安装文gQ按提示一?#8220;QIQT”卛_。要注意的是Q在选择安装目录Ӟ最好?
择安装在一个非pȝ盘里Q以免将来系l发生异常时q要重新q行账号{的讄。然后执行汉化文Ӟ选择原版安装目录Q一?#8220;下一?#8221;卛_完成安装?/p>
Q.讄
与テQS不同QServ-Q在W一ơ运行时会以向导的方式一步一步地提示用户q行讄Q整个过E不过五分钟,非常人性化。ؓ了方
便说明,先假设我们要架设一个固定テQCؓQ1Q.Q.Q.Q,端口为2Q,根目录绝对\径ؓQQ|utpQ允许匿名访问和拥有一个用户名为dys、密码ؓ
syd、管理̎户名?#8220;QyQt?#8221;的公|uQ_服务器。运行Serv-Q,弹出向导H口Q依ơ设|如下选项Q?br />
Q)“您的QP地址”Q这里我们填入2Q8Q1Q1Q1Q如果你是AQSQ等方式拨号上网Q拥有的是动态テQ或者不知道本机QPQ此处请留空?br />
Q)“域名”Q就是该QTQ站点的名称Q可以随意取名,q里填入“QyQt?#8221;?br />
Q)“匿名账号”Q决定该QTQ站Ҏ否允许匿名用戯问。选择“?#8221;?br />
Q)“匿名ȝ?#8221;Q设|匿名用L录站点后所处的目录位置。输?#8220;QQ|utp”?br />
Q)
“锁定于主目录”Q假讑֜“匿名ȝ?#8221;中设|匿名用L录后所处的目录位置?#8220;QQ|utpQ|uest”Q那么,选择“?#8221;后,当匿名用L录uQ_
后,p锁定在G\Qtp\Quest目录下Q只能查看Guest目录里的内容Q不能进入上U目?#8220;Qt?#8221;Q同时该目录在uQ_客户端Y件中昄?
“Q?#8221;Q如果未被锁定,则会完整昄?#8220;QQ|utpQ|uest”。这里选择“?#8221;?br />
Q)“命名的̎?#8221;Q决定是否要创徏有一定管理权限的账户。这里?#8220;?#8221;?br />
Q)“账号名称”Q就是具有一定管理权限的账户d名称。填?#8220;dy?#8221;?br />
Q)“账号密码”Q设|̎Ld密码。输?#8220;sy?#8221;?br />
Q)“ȝ?#8221;Q与“匿名ȝ?#8221;一P用来讄理账户d后所处的目录位置。输?#8220;QQ|utp”?br />
Q0Q?#8220;锁定于主目录”Q选择“?#8221;?br />
Q1Q?#8220;理员权?#8221;Q用来设|管理̎L理权限U别。这里?#8220;无权?#8221;Q后面再详述?br />
讄完成Q地址为:ftpQ/Q1Q.Q.Q.QQ1的uQ_服务器就架设成功了。最后可用EuteuQ_分别以匿名和dys的账户d验证?br />
提示Q以上这些设|ƈ非最l设定,你还可以在Serv-Q主界面中随时修攏V?/p>
Q.用同一个テQ架讑֤个uQ_服务?br /> 如果带宽允许的话Q你q可利用同一个テQ轻松架讑֤个服务器。在QIrvQU中,?#8220;本地服务?#8221;?#8220;?#8221;中的每个QTQ服务器UCؓ“?#8221;Q刚才创建的“QyQt?#8221;服务器就是一个名?#8220;QyQt?#8221;的域。要架设多个服务器,实际上就是创建多个拥有不同端口的域而已?br /> ? ?#8220;?#8221;Q?#8220;新徏?#8221;Q在弹出的向g参照“QyQt?#8221;q行讄Q只是在端口处一定不要与已经创徏?#8220;?#8221;的端口或被其他系l服务占用的端口冲突? 可。如果填入2Q,则此服务器的地址是Qftp/Q2Q8Q1Q1Q12Q。依此而ؓQ就可以架设多个QTQ服务器了?/p>
三、用动态テQ域名解析Y件架设拥有固定域名的QTQ服务器
在上面的介绍中,我们假设的是该服务器拥有Q1Q.Q.Q.Q的固定QPQ而事实上Q大部分x设个人uQ_的用户通常都是用AQSQ等方式拨号上网。由于每ơ拨号上|后被分配到的テQ地址都不相同Q那q是否就意味着不能架设QTQ服务器呢?
有两个解军_法:一是在刚才向导中的“您的QP地址”中留I,然后完成其它向导讄。进入Serv-Q主界面Q先点击菜单栏上?#8220;帮助→本机QP? 址”Q将本机QP地址复制Q再通过其他途径告知每个用户。每拨号上网一ơ就重复此操作一ơ;二是到网上下载安装一个动态テQ域名解析YӞ如国外的 QNQIQo、国内的q壟뀁8QテQ等Q此cY件不本机的QP如何变化都能一个固定域名自动解析到本机QP上。这P用户只要输入q个固定域名? QTQ地址可以访问到你的服务器。很明显Q第一U方法相当麻烦,需要你有极大的耐心Q第二种q当简便,用户只要C此域名而不用管QP是否变化。美? 不的是Q目前绝大部分此cY仉要付Ҏ册才能永久用,不注册只能免费用3Q天?br /> 我们以8QテQCؓ例,来了解它的设|?/p>
假设我们要申请一个域名:dys2Q8Qip.com。首先如前文所q用QIrvQUQテQS和其他uQ_服务器Y件亦可)架设好uQ_服务器,注意?#8220;您的QP地址”处留I,然后刎ͽttpQ/www.Q8ipQnetM载ƈ安装Q8QP标准版?br />
Q8QP
需要付Ҏ册才能拥有一个永久域名,如果免费注册则仅能试用1Q天。运行8QテQ标准版客户端,会弹|窗口。要获得一个域名,需要先注册。在“基本?
?#8221;中,依次填写好用L录名、有效电子邮件地址、密码和联系电话Q接下来p选择你的域名Q在“域名资料”中,“域名”框填入dysQ,“域名后缀”?
拉框里选择“Q8ipQcom”Q这Ӟ下方?#8220;你的完整域名?#8221;会显CZؓdys2Q8Qip.com,认无误后,?#8220;注册”按钮注册。如果注册的用户
名或甌的域名已l被其他用户注册q,软g会做出相应的提示Q修改后再次注册卛_。注册成功后Q在“执行状?#8221;中会昄“注册成功Q用PQ:
xxxxxxxx”Q记下用PQ,以备来~费或需要技术支持之用。最后要点击“装蝲”按钮刚刚申h功的账户信息装蝲xZ?/p>
getProtocol(),getServletPath(), getContentLength(), getMethod(), getRemoteAddr(), getRemoteHost(), getServerName(), getParameterName()