Welcome!

【顶】更新:固定链接

五月 12th, 2012

原来一直害怕更改固定链接之后,原来的文章会链接不上。可今天一更改才发现,基本上都可以访问。

原来的固定链接格式:/年/月/日/文章名称/

现在改成了:/read/文档数字.html

这样做的好处是:

  • 原来文章多了,每次都想文章名字会特别麻烦。
  • 现在这样的方式便于记忆。
  • 可能有利于SEO(利用伪静态,页面本身依旧是静态,只是对URL进行了重写)

当然,刚更改过来的这一段时间,可能会出现部分原链接无法访问。假如出现此类情况,请评论给我,我将解决。

Java选择题,试试你能得到多少分

五月 19th, 2012

提示:一共十道选择题,每道输入正确,将提示下一道题.若有一道输入错误,则退出程序,不再输出后面的题.

所有答案请以:大写英文字母,输入,否则将出错!

请直接在控制台运行下面的代码.

/*
 * 练习自定义类的使用
 * set,get方法的使用
 */
import java.util.Scanner;
public class Work {
	private String test;
	private String test1;
	private String test2;
	private String test3;
	private String test4;
	private String test5;
	private String test6;
	private String test7;
	private String test8;
	private String test9;
	//定义10道选题的编号

	public String  getTest(){
		return test;
	}

	public void setTest(String test){
		this.test=test;
	}
	///////////////////////////////////
	public String  getTest1(){
		return test1;
	}

	public void setTest1(String test1){
		this.test1=test1;
	}
	///////////////
	public String getTest2(){
		return test2;
	}
	public void setTest2(String test2){
		this.test2=test2;
	}

	//////////////////////

	public String getTest3(){
		return test3;
	}
	public void setTest3(String test3){
		this.test3 = test3;
	}

	/////////////////////////
	public String getTest4(){
		return test4;
	}
	public void setTest4(String test4){
		this.test4 = test4;
	}
	////////////////
	public String getTest5(){
		return test5;
	}
	public void setTest5(String test5){
		this.test5 = test5;
	}
	///////////////////
	public String getTest6(){
		return test6;
	}
	public void setTest6(String test6){
		this.test6 = test6;
	}
	///////////////////
	public String getTest7(){
		return test7;
	}
	public void setTest7(String test7){
		this.test7 = test7;
	}
	////////////////////
	public String getTest8(){
		return test8;
	}
	public void setTest8(String test8){
		this.test8 = test8;
	}
	////////////////////
	public String getTest9(){
		return test9;
	}
	public void setTest9(String test9){
		this.test9 = test9;
	}

	public static void main (String[]args){
		String no ; //定义选题的编号
		Work center = new Work ();//创建对象
		Scanner input = new Scanner (System.in);
		boolean answer = true ;//记录错误答案为真
		boolean an = true ; //记录正确答案为真
		System.out.println("一共十道选择题,每道输入正确,将提示下一道题.若有一道输入错误,则退出程序,不再输出后面的题");
		System.out.println("所有答案请以:大写英文字母,输入,否则将出错!");
		System.out.println("*************************************");
		center.setTest("1.下列不可作为java语言修饰符的是:");//使用set方法赋值
		center.setTest1("2.有一段java 应用程序,它的主类名是a1,那么保存它的源文件名可以是:");//使用set方法赋值
		center.setTest2("3.整型数据类型中,需要内存空间最少的是:");//同上
		center.setTest3("4. Java 类可以作为:");//同上
		center.setTest4("5.在创建对象时必须:");//同上
		center.setTest5("6.在调用方法时,若要使方法改变实参的值,可以:");//同上
		center.setTest6("7.Java中:");//同上
		center.setTest7("8.Java语言具有许多优点和特点,哪个反映了Java程序并行机制的特点?");//同上
		center.setTest8("9.下列关于break说法正确的是:");//同上
		center.setTest9("10.在类和对象中,错误的是:");//同上
		do {
	    System.out.println(center.getTest());//!使用get方法调用
		System.out.println("A) a1\tB) $1 \tC) _1\tD) 11");
		System.out.println("请选择:");
		no = input.next();//录入答案
		if ("D".equals(no)&&an){ //当答案正确时,an为真,继续下面的题
			System.out.println("恭喜回答正确!");
			System.out.println("您获得了:10分");
		} else { //当答案错误时answer为假,结束循环
			System.out.println("正确答案是:D");
			answer = false;
			break;
		}
		//下面的原理同上
		System.out.println(center.getTest1());
		System.out.println("A) a1.java\tB) a1.class\tC) a1\tD) 都对");
		System.out.println("请选择:");
		no = input.next();
		if ("A".equals(no)&&an){
			System.out.println("恭喜回答正确!");
			System.out.println("您获得了:20分");
		}else {
			System.out.println("正确答案是:A");
			answer = false;
			break;
		}
		System.out.println(center.getTest2());
		System.out.println("A) short\tB) long\tC) int\tD) byte ");
		System.out.println("请选择:");
		no = input.next();
		if ("D".equals(no)&&an){
			System.out.println("恭喜回答正确!");
			System.out.println("您获得了:30分");
		}else {
			System.out.println("正确答案是:D");
			answer = false;
			break;
		}
		System.out.println(center.getTest3());
		System.out.print("A) 类型定义机制\nB) 数据封装机制\nC) 类型定义机制和数据封装机制\nD) 上述都不对");
		System.out.println();
		System.out.println("请选择:");
		no = input.next();
		if ("C".equals(no)&&an){
			System.out.println("恭喜回答正确!");
			System.out.println("您获得了:40分");
		} else {
			System.out.println("正确答案是:C");
			answer = false;
			break;
		}
		System.out.println(center.getTest4());
		System.out.print("A) 先声明对象,然后才能使用对象\nB) 先声明对象,为对象分配内存空间,然后才能使用对象\nC) 先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象\nD) 上述说法都对");
		System.out.println();
		System.out.println("请选择:");
		no = input.next();
		if ("C".equals(no)&&an){
			System.out.println("恭喜回答正确!");
			System.out.println("您获得了:50分");
		}else {
			System.out.println("正确答案是:C");
			answer = false;
			break;
		}
		System.out.println(center.getTest5());
		System.out.print("A) 用基本数据类型作为参数\nB) 用对象作为参数\nC) A和B都对\nD) A和B都不对");
		System.out.println();
		System.out.println("请选择:");
		no = input.next();
		if ("B".equals(no)&&an){
			System.out.println("恭喜回答正确!");
			System.out.println("您获得了:60分");
		}else {
			System.out.println("正确答案是:B");
			answer = false;
			break;
		}
		System.out.println(center.getTest6());
		System.out.println("A) 一个子类可以有多个父类,一个父类也可以有多个子类\nB) 一个子类可以有多个父类,但一个父类只可以有一个子类\nC) 一个子类可以有一个父类,但一个父类可以有多个子类\nD) 上述说法都不对");
		System.out.println();
		System.out.println("请选择:");
		no = input.next();
		if ("B".equals(no)&&an){
			System.out.println("恭喜回答正确!");
			System.out.println("您获得了:70分");
		}else {
			System.out.println("正确答案是:B");
			answer = false;
			break;
		}
		System.out.println(center.getTest7());
		System.out.println("A) 安全性\tB) 多线性\tC) 跨平台\tD) 可移植");
		System.out.println("请选择:");
		no = input.next();
		if ("B".equals(no)&&an){
			System.out.println("恭喜回答正确!");
			System.out.println("您获得了:80分");
		}else {
			System.out.println("正确答案是:B");
			answer = false;
			break;
		}
		System.out.println(center.getTest8());
		System.out.print("A)break可以用在数组中\tB)break不是Java关键字\tC)break可以用在switch选择结构中\tD)break不能用于do-while循环中");
		System.out.println();
		System.out.println("请选择:");
		no = input.next();
		if ("C".equals(no)&&an){
			System.out.println("恭喜回答正确!");
			System.out.println("您获得了:90分");
		}else {
			System.out.println("正确答案是:C");
			answer = false;
			break;
		}
		System.out.println(center.getTest9());
		System.out.println("A)属性和方法缺一不可\tB)方法通常写在属性的下方\tC)当在main()主方法中使用另一个类时,可以直接使用\tD)一个属性和方法只有一个父类,一个父类可以有多个属性和方法");
		System.out.println();
		System.out.println("请选择:");
		no = input.next();
		if ("C".equals(no)&&an){
			System.out.println("恭喜回答正确!");
			System.out.println("您获得了,满分:100分!");
			an = false ;//正确答案为假,退出循环
			break;
		}else {
			System.out.println("正确答案是:D");
			answer = false;
			break;
		}
		}while(answer==false||an==false);//回答错误任何一道题,或者完整回答完都可以结束循环
		if (an==false){//完成10道题的回答,退出循环提示
			System.out.println("所有十道题目已经回答完毕,谢谢使用!");
		} else if (answer==false){//任意一道题回答错误,退出循环
			System.out.println("答案输入错误,程序退出!");
		}
		}
	}

练习:44

五月 19th, 2012

练习对自定义类,私有属性,类的多参方法的使用

  • 需要注意形参和实参的顺序,类型,个数一致,就掌握了带参方法的使用。
  • 初学时,用很少的几个参数即可,熟练了,可适度增加。不建议一开始就定义十个形参,那样可能会不知方向。
  • 示例代码:

    /*
     * 包含自定义类+私有属性+类的多参方法
     */
    public class NewTest{
    	private int num ;//定义数字编号,并私有化属性
    	private String name ;//定义名字
    	private String sex ;//定义性别
    	public NewTest (int num,String name,String sex){ //多参方法,!()内为形参_即形象参数!
    		this.num = num ; //this用于指定将参数里面的num赋给变量里面的num.
    		this.name=name;//同上
    		this.sex=sex;//同上
    	}
    
    	public void show (){ //无参方法用于输出
    		System.out.println("数字编号:"+num);
    		System.out.println("名字:"+name);
    		System.out.println("性别:"+sex);
    	}
    
    	public static void main (String[]args){
    		NewTest center = new NewTest (100,"sam","男");//创建对象,!定义实参_即实际参数!
    		center.show();//调用方法输出
    	}
    }

    练习:43

    五月 19th, 2012

    原题:
    /*
    * 创建季节类.
    * 根据输入1~12之间的数字,判断是春夏秋冬哪个季节。要求使用方法定义四个季节。
    * 书本255页第一题
    */

    参考代码:

    /*
     * 创建季节类.
     * 根据输入1~12之间的数字,判断是春夏秋冬哪个季节。要求使用方法定义四个季节。
     * 书本255页第一题
     */
    import java.util.Scanner;
    public class Season {
    	private String Spring;//属性:春
    	private String Summer;//属性:夏
    	private String Autumn;//属性:秋
    	private String Winter;//属性:冬
    	private int num ; //录入数字
    
    	public void show (){ //输出信息及结果
    		Scanner input = new Scanner (System.in);
    		System.out.println("请输入月份:");
    		num = input.nextInt(); //录入数字
    		if (num>=1&&num<=3){ //判断
    			Spring = "春"; //赋值
    			System.out.println(Spring);
    		} else if (num>=4&&num<=6){ //判断
    			Summer = "夏";
    			System.out.println(Summer);
    		} else if (num>=7&&num<=9){
    			Autumn = "秋";
    			System.out.println(Autumn);
    		} else if (num>=10&&num<=12){
    			Winter = "冬";
    			System.out.println(Winter);
    		} else { //输入其余数字,提示错误,并结束程序.
    			System.out.println("数字输入错误,程序退出!");
    		}
    	}
    	public static void main(String[] args) {
    		Season center = new Season();//创建对象
    		center.show();//调用方法
    	}
    }
    

    练习:42

    五月 19th, 2012

    原题:使用类的方式描述计算机。
    来自书本231页,第5题。

    参考代码如下:

    
    public class Computer {
        private String cpu ; //定义为cpu,并且使用private将其私有化
        private String Motherboard; //并且使用private将其私有化
        private String Display; //并且使用private将其私有化
        private String HardDisk;//并且使用private将其私有化
        private String Memory;//并且使用private将其私有化
    
        public Computer() { //定义super方法,调用父类的成员变量
            super();
        }
        public Computer(String cpu, String motherboard, String display,
                String hardDisk, String memory) { //使用了类的有参方法
            super();  //调用父类中的成员变量
            this.cpu = cpu;  //this方法用于指定引用父类中的
            /*
             * 该构造函数中必须使用this,this在方法体用来指向引用当前正在执行方法的那个对象实例,
             * this变量的类型总是为包含前执行方法的类,上例中,我们要区别参数name和成员变量name,
             * 写成name=name显然是不允许的,在参数或局部变量名与类成员变量同名的时候,由于参数或局部变量的优先级高,
             * 这样在方法体中参数名或局部变量名将隐藏同名的成员变量,因此,为了值名成员变量,你必须使用this显示地指明当前对象。
             */
            Motherboard = motherboard;
            Display = display;
            HardDisk = hardDisk;
            Memory = memory;
        }
        public String toString(){ //使用toString方法输出
            return "中央处理器:"+cpu+"\t主板:"+Motherboard+"\t显示器:\t"+Display+"\t硬盘:\t"+HardDisk+"\t内存:"+Memory;
        }
        public static void main(String[] args) {
            Computer center = new Computer ("i7","华硕H67","三星","希捷2TB","4G"); //这里是实参,必须与形参的数据类型,个数相同,顺序一致
            System.out.println(center);  //调用center直接输出
        }
    }
    

    练习:41

    五月 19th, 2012

    这个是老师布置的作业,第六个选项没有搞定。前几天一直卡在二重循环了,代码比较乱。还有一个是:假如输入的不是数字这个,我没有搞定。因为用了String数据类型,那么switch选择结构怎么处理?

    原题下载:

    老师布置的作业

    参考代码:

    import java.util.Scanner;
    public class Test45 {
    	public static void main(String[] args) {
    		Scanner input = new Scanner (System.in);
    		System.out.println("*********************************************");
    		System.out.println("*******欢迎进入图形的世界************");
    		System.out.println("*********************************************");
    		System.out.println("规则:输入1~6任意序号选择您需要的图案,输入0代表结束.com on!");
    		boolean sum = true; //判断条件为真
    		int num ; //定义选择菜单数字
    		do{
    			System.out.println("请选择您需要的图形:");
    			System.out.println("1.正方形");
    			System.out.println("2.左三角形");
    			System.out.println("3.右三角形");
    			System.out.println("4.倒三角形");
    			System.out.println("5.正三角形");
    			System.out.println("6.菱形");
    			System.out.println();
    			System.out.println("请选择序号:");
    			num = input.nextInt();
    			switch (num){
    			case 1 :
    				for (int i =1;i<=5;i++){
    					for (int j=1;j<=5;j++){
    						System.out.print("*");
    					}
    					System.out.println();
    				}
    				break;
    			case 2 :
    				//输出左三角形
    				//输出上方三角形
    				for (int c=0;c<=5;c++){//循环条件
    					for ( int a =5-c;a>0;a--){ //输出空格,从上到下依次是:4,3,2,1
    							System.out.print(" ");
    						}
    					for (int j=0;j<c;j++){//输出*号,从上到下依次是:1,2,3,4
    						System.out.print("*");
    					}
    						System.out.println();
    					}
    				//输出下方三角形
    			    for (int p=5-1;p>0;p--){ //下方三角形循环次数
    			    	for (int x=5-p;x>0;x--){//输出空格,从上到下依次是:1,2,3,4
    			    		System.out.print(" ");
    			    	}
    			    	for (int w=p;w>0;w--){//输出*号,从上到下依次是:4,3,2,1
    			    		System.out.print("*");
    			    	}
    			    	System.out.println();
    			    }
    				break;
    			case 3 :
    				//输出右三角形
    				//输出三角形的上半部分
    				for (int i=0;i<=5;i++){//循环条件
    					for (int c=1;c<=i;c++){//输出*号,不存在空格,省略一个循环条件(从上到下:1,2,3,4)
    						System.out.print("*");
    					}
    					System.out.println();
    					}
    				//输出三角形的下半部分
    				for (int a=1;a<=5;a++){ //循环条件
    					for (int b=5-a;b>0;b--){ //输出*号,不存在空格,省略一个循环条件(从上到下:4,3,2,1)
    						System.out.print("*");
    						}
    					System.out.println();
    				}
    				break;
    			case 4 :
    				//输出倒三角形
    				for (int i=5;i>0;i--){//循环条件
    					for (int k=1;k<=5-i;k++){//输出空格,从上到下依次是:0,1,2,3,4
    						System.out.print(" ");
    					}
    					for (int j=2*i-1;j>0;j--){//输出*号,从上到下依次是:9,7,5,3,1
    						System.out.print("*");
    					}
    					System.out.println();
    				}
    
    				break;
    			case 5 :
    				//输出正三角形
    				for (int i=1;i<=5;i++){//循环条件
    					for (int j=5-i;j>=0;j--){ //输出空格,从上到下依次是:5,4,3,2,1
    						System.out.print(" ");
    					}
    					for (int b=1;b<=2*i-1;b++){//输出*号,从上到下依次是:1,3,5,7,9
    						System.out.print("*");
    					}
    					System.out.println();
    				}
    				break;
    			case 6 :
    				//输出上方正三角形
    				for (int i=1;i<5;i++){ //循环条件
    					for (int j=5-i;j>0;j--){ //输出空格,从上到下依次是4,3,2,1
    						System.out.print(" ");
    					}
    					for (int b=1;b<=2*i-1;b++){//输出*号,从上到下依次是1,3,5,7
    						System.out.print("*");
    					}
    					System.out.println();
    				}
    				//输出下方倒三角形
    				for (int i=5;i>0;i--){//循环条件
    					for (int k=1;k<=5-i;k++){ //输出空格,依次是1,2,3,4
    						System.out.print(" ");
    					}
    					for (int j=2*i-1;j>0;j--){//输出*号,从上到下依次是5,3,1
    						System.out.print("*");
    					}
    					System.out.println();
    				}
    				break;
    				default:
    					sum = false ; //条件为假,结束循环
    					System.out.println("");
    				break;
    			}
    		} while (num!=0&&num<=6&&num>=1);
              if ( sum==false){ //条件为假输出下面这句话.
            	  System.out.println("对不起,只能输入1-6之间的序号,您的输入不符合要求,程序退出!");
              }
    	}
    }
    

    练习:40

    五月 16th, 2012

    * 假设当前时间是2011年5月12日10点11分00秒,编写一个CurrentTime类
    * 设置属性为该时间,定义show()方法显示该时间。
    来自书上231页,第3,4题。

    参考代码:

    /*
     * 假设当前时间是2011年5月12日10点11分00秒,编写一个CurrentTime类
     * 设置属性为该时间,定义show()方法显示该时间。
     */
    public class CurrentTime { //定义类
    	//定义属性
    	String CurTime ; //定义时间
    	//定义方法输出时间
         public void show (){
        	 System.out.println("当前时间是:"+CurTime);
         }
    
    	public static void main(String[] args) {
    		CurrentTime center = new CurrentTime ();
    		center.CurTime = "2011年5月12日10点11分00秒";//给属性赋值
    		center.show(); //调用方法输出结果
    	}
    
    }
    

    * 必须与CurrentTime类放在同一个包中
    * CurrentTime中CurTime的值改变为2011年5月12日10点11分30秒。编写一个Demo类,改变CurTime的值并输出

    参考源代码:

    /*
     * 必须与CurrentTime类放在同一个包中
     * CurrentTime中CurTime的值改变为2011年5月12日10点11分30秒。编写一个Demo类,改变CurTime的值并输出
     */
    public class Demo {
    	public static void main(String[] args) {
    		CurrentTime center = new CurrentTime ();//为CurrentTime类创建对象
    		center.CurTime= "2011年5月12日10点11分30秒"; //为CurTime赋新值
    		center.show(); //调用show方法输出
    
    	}
    
    }
    

    练习:39

    五月 16th, 2012

    老师要求张浩使用面向对象的思想编写一个计算器类(Calculator)
    可以实现两个整数的加,减,乘,除运算
    这是书本上的第231页,第2题

    参考代码如下:

    /*
     * 老师要求张浩使用面向对象的思想编写一个计算器类(Calculator)
     * 可以实现两个整数的加,减,乘,除运算
     * 这是书本上的第231页,第2题
     */
    import java.util.Scanner;
    public class Calculator {
    	//定义属性
         int Add; //加
         int Minus; //减
         int By ; //乘
         int InAddItion; //除
         int num,num1; //录入的2个数字
         int sum ; //选择计算方式
         //定义输出方法
         public void show() {
        	 Scanner input = new Scanner (System.in);
             System.out.println("请输入第1个整数:");
        	 num = input.nextInt();
        	 System.out.println("请输入第2个整数:");
        	 num1 = input.nextInt();
        	 System.out.println("*********************");
        	 System.out.println("1.加");
        	 System.out.println("2.减");
        	 System.out.println("3.乘");
        	 System.out.println("4.除");
        	 System.out.println();
        	 System.out.println("请选择:");
        	 sum = input.nextInt();
        	 System.out.println("*********************");
        	 switch (sum){
        	 case 1 : //计算加法
        		 Add = num+num1 ;
        		 System.out.println("结果是:"+Add);
        		 break;
        	 case 2 : //计算减法
        		 Minus = num-num1 ;
        		 System.out.println("结果是:"+Minus);
        		 break;
        	 case 3 : //计算乘法
        		 By = num*num1;
        		 System.out.println("结果是:"+By);
        		 break;
        	 case 4 : //计算除法
        		 InAddItion = num/num1;
        		 System.out.println("结果是:"+InAddItion);
        		 break;
        		 default: //switch的默认配置,数字小于1或者大于4输出错误,结束程序
        			 System.out.println("数字输入错误!程序结束!");
        		 break;
        	 }
    
         }
    
    	public static void main(String[] args) {
               Calculator center = new Calculator (); //定义对象
               center.show(); //输出show方法
    	}
    
    }

    练习:38

    五月 13th, 2012

    无原题,随意创建一个类,创建五个属性,同时定义五个方法。创建一个对象,调用方法并输出。

    源代码如下:

    
    /*
     * 定义类为 people (人)
     */
    public class people {
    
    	      /*
    	       * 属性
    	       */
              String School ;//去学校
              String Name; //名字
              int Old ; //年纪
              char Sex ; //性别
              double money ; //银行储蓄
    
              /*
               * 方法
               * 去学校,无返回值
               */
              public void School (){ 
    
              }
              /*
               * 年龄
               */
              public int Old (){
            	  return 20 ;
              }
              /*
               * 性别
               */
              public char Sex (){
            	  return '女' ;
              }
              /*
               * 名称
               */
    
              public String Name (){
            	  return "小芳" ;
              }
    
              /*
               * 银行存款
               */
    
              public Double money (){
            	  return 2000.00 ;
              }
    
              public static void main (String[]args){
            	  people center = new people ();//其中 center 可自由定义,需遵守java命名规则及规范
            	  System.out.println("姓名:"+center.Name());//例如:输出center.Name()的值的时候,会直接输出由 return 返回的值
            	  System.out.println("年龄:"+center.Old());
            	  System.out.println("性别:"+center.Sex());
            	  System.out.println("银行存款:"+center.money());
            	  System.out.println("去学校无返回值."+center.School);
            	  System.out.println("**************************************");
            	  System.out.println("老师说不提倡这样的写法,但今天第一次接触类和对象.(偶尔放肆一下,有益身心健康..)\n抽象之外倒觉得跟CSS和HTML文档的关系有点像.不过化学上面的分子和原子的概念比这个抽象的多了.\n第一次这么写,下次改!加油!!");
              }
    }
    

    Bluehost主机禁止PING

    五月 13th, 2012

    今天有个朋友不能访问我网站,于是我PING了一下,发现全国所有地方都不通。立马就觉得事情严重了,加之上次的断网事件。更添了几分惊恐,于是第一时间练习了Bluehost的客服,下面是于客服对话,中文是用Google翻译出来的,可能不准确,凑合看把。

    如果你也是Bluehost的主机,当主机不能访问的时候就别PING了,Bluehost的客服说禁止PING是因为安全原因。具体的咱也不知道,反正网站不能访问的时候,别PING了,亲。

     

    FIRST TIME SALE..: But I can not access the ping, in parts of the United States can not be accessed.
    但我不能访问PING,在美国部分地区不能访问。
    Alonzo:  ping is not allowed once you get to the *** data center
    PING是不允许的,一旦你得到的***数据中心
    FIRST TIME SALE..:  Now the server has been banned from the PING?
    现在服务器已经禁止从PING?
    Alonzo: yes..
    是的
    FIRST TIME SALE..:  How did the e-mail notification. . .I thought by the PING?Why ban the PING?
    如何没有e-mail通知。 。我想PING?为什么要禁止PING?
    Alonzo:  we do not allow you to ping the server for security reasons. All of your websites pull up just find in a web browser here.. in firefox
    我们不允许你ping通服务器出于安全原因。您的网站上拉在网页浏览器,只要找到……在Firefox

    无觅相关文章插件,快速提升流量