孙肖宁 发布的文章

在定义了一个类去实现OnClickListener接口的时候无法复写public void onClick(View v)方法,而是只能复写public void onClick(DialogInterface arg0, int arg1) 方法。
主要的原因就是导包的时候发生了错误,解决途径也很简单,只需要删除

import android.content.DialogInterface.OnClickListener;

然后重新导入

import android.view.View.OnClickListener;

配置目的

class文件(字节码文件)是java的运行文件,实现在任意目录下都可以执行某一目录下的class文件。

配置方法

1.永久性的环境变量,可在系统变量里添加环境变量

    变量名:CLASSPATH

    变量值:java类文件的目录

2.临时环境变量配置

set classpath=c:\

set classpath=c:\;

注意:可配置多路径set classpath=.;c:\;D:("."代表当前路径)

JVM查找类文件的顺序

如果没有配置classpath环境变量, JVM只在当前目录下查找要运行的类文件。

如果配置了classpath环境, JVM会先在classpath环境变量值的目录中查找要运行的类文件。

值的结尾处如果加上分号,那么JVM在classpath目录下没有找到要指定的类文件,会在当前目录下在查找一次。

值的结尾出如果没有分号,那么JVM在classpath目录下没有找到要指定的类文件,不会在当前目录下查找,即使当前目录下有,也不会运行。

建议:配置classpath环境变量时,值的结尾处不要加分号,如果需要访问当前目录可以用 “.”表示。

classpath与path的区别

path是系统用来指定可执行文件的完整路径,path是用来搜索所执行的可执行文件路径的,如果执行的可执行文件不在当前目录下,那就会依次搜索path中设置的路径;

classpath是指定你在程序中所使用的类(.class)文件所在的位置。

帮助命令man

获取指定命令的帮助

man ls

查看ls的帮助

man的级别
1:查看命令的帮助
2:查看可被内核调用的函数的帮助
3:查看函数和函数库的帮助
4:查看特殊文件的帮助(主要是/dev目录下的文件)
5:查看配置文件的帮助
6:查看游戏的帮助
7:查看其它杂项的帮助
8:查看系统管理员可用命令的帮助
9:查看和内核相关文件的帮助

查看命令拥有那个级别的帮助

man –f 命令
相当于

whatis  命令

举例:

man -5 passwd
man -4 null
man -8 ifconfig

查看和命令相关的所有帮助

man –k 命令
相当于

apropos 命令

选项帮助
命令 --help

获取命令选项的帮助

例如:

ls --help

shell内部命令帮助

help shell内部命令

获取shell内部命令的帮助

例如:

whereis  cd
#确定是否是shell内部命令
help cd
#获取内部命令帮助

详细命令帮助info

info 命令
-回车 :进入子帮助页面(带有*号标记)

-u    :进入上层页面
-n      :进入下一个帮助小节
-p        :进入上一个帮助小节
-q        :退出

什么是实型常量

实型常量又称实数或浮点数。

表现形式

实型常量有两种表现形式小数形式和指数形式。

  • 小数形式

小数形式是由整数部分、小数点、小数部分组成,其中整数部分或小数部分可以省略其中一个。小数形式是由数字和小数点组成的一种实数表示形式,例如0.123、.123、123.、0.0等都是合法的实型常量。(注意:小数形式表示的实型常量必须要有小数点,数的正负用前面的“+”(可以省略)号或“-”号来区分。)

  • 指数形式

    指数形式由尾数部分、小写字母e或大写字母E、指数部分组成。尾数部分可以是十进制数,指数部分是十进制的短整数(可以带“+”号或“-”号)。数的正负用前面的“+”(可以省略)号或“-”号来区分。指数形式的实数它的数值可以用公式计算:尾数*10指数。

实型常量书写

实型常量在一般的微型集中占用4个字节,不管是小数形式还是指数形式,它们的数值范围都是-1038~1038,有效数字是7位。书写一个实型常量时,要注意它的有效数字。例如,1.23456789和1.234567是相同的,因为实型常量的有效数字是7位,所以1.23456789中的后两位数字是无效的。一个实型常量可以赋给一个 float 型、double 型或 long double 变量。根据变量的类型截取实型常量中相应的有效位数字。

准备工作


1.云主机(系统为ubuntu server 14.04)

2.域名(可以没有,有的话需要备案)

3.ssh软件(Xshell 5)

安装jdk


Tale是用java语言编写的博客系统,因此必须先安装JDK8.

$ sudo add-apt-repository ppa:webupd8team/java

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

安装结束后,我们验证是否成功

$ java -version

显示jdk版本等信息,就是安装成功了。

安装 oracle-java8-set-default 包

$ sudo apt-get install oracle-java8-set-default

配置环境变量

$ export JAVA_HOME=/usr/lib/jvm/java-8-oracle
$ export JRE_HOME=/usr/lib/jvm/java-8-oracle/jre

下载并安装Tale


下载源码

$ wget http://7xls9k.dl1.z0.glb.clouddn.com/tale.zip
$ unzip tale.zip

通过java命令运行tale.jar文件

$ cd tale
$ java -jar tale-1.2.15jar(通过ls命令查看是什么就填写什么)

安装配置 Nginx


安装

sudo apt-get install Nginx

打开配置文件

sudo vi /etc/nginx/sites-available/default

修改配置文件

加入proxy_pass http://127.0.0.1:9000;其他的注释掉

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

    #root /usr/share/nginx/html;
    #index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            # try_files $uri $uri/ =404;
            proxy_pass http://127.0.0.1:9000;
            # Uncomment to enable naxsi on this location
            # include /etc/nginx/naxsi.rules
    }

}

重启Nginx

sudo service nginx restart

最后在执行

nohup java -jar (tale启动程序路径) > (输出信息文件) 2>&1

最后输入域名访问就可以安装了

java中一共有23种设计模式,单例模式是java中的一种设计模式,它是指在设计一个类时,需要保证在整个程序运行期间针对该类只存在一个实例对象。

实现方法

通过将构造函数私有化,避免其他程序过多建立该类对象(先禁止其他程序建立该类对象)。为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象。方便其他程序对自定义对象的访问,可以对外提供一些访问方式。

案例

懒汉式单例

描述:对象是方法被调用时,才初始化,也叫做对象的延时加载。
代码

class Single
{
    private static Single s = null;
    private Single(){}
    public static Single getInstance()
    {
        if(s==null)
        {
            synchronized(Single.class)
            {             
                if(s==null)
                    s = new Single();
            }
        }
        return s;
    }
}

饿汉式单例

描述:在类加载时就创建了对象
代码

class Single
{
    private static Single s = new Single();
    private Single(){}
    public static Single getInstance()
    {
        return s;
    }
}

java中,当子类重写父类的方法后,子类对象将无法访问父类被重写的方法,为了解决这一问题,在java中专门提供了一个super关键字用于访问父类的成员(成员变量、成员方法和构造方法)。

使用super关键字调用父类的成员变量和成员方法

方法:

super.成员变量
super.成员方法([参数1,参数2……])

注意:

  1. super不是引用类型,super中储存的不是内存地址。
  2. super代表的是当前子类对象中父类型特征。
  3. 子类和父类都有某个数据时,如果需要在子类中访问父类中的数据,需要使用super。
  4. super可以用在成员方法中,也可以用在构造方法中。
  5. super和this相同,都不能用在静态方法中。

使用super关键字调用父类的构造方法

方法:

super([参数1,参数2……])

注意:

  1. 通过super调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。
  2. 在子类的构造方法中一定会调用父类的某个构造方法,这时可以在子类的构造方法中通过super指定调用父类的哪个构造方法,如果没有指定,在实例化子类对象时,会自动调用父类无参的构造方法。
  3. 通过子类的构造方法去调用父类的构造方法,作用是给当前子类对象中的父类型特征赋值。
  4. super([参数1,参数2……])与this([参数1,参数2……])不能共存。

在java中,允许在一个类的内部定义类,这样的类称作内部类,这个内部类所在的类称作外部类。

内部类的访问规则

  1. 内部类可以直接访问外部类中的成员,包括私有。之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 外部类名.this
  2. 外部类要访问内部类,必须建立内部类对象。

访问格式

  • 成员内部类

1.当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中。可以直接建立内部类对象。
格式:

    外部类名.内部类名 变量名 = new 外部类名().new 内部类名();

2.当内部类在成员位置上,就可以被成员修饰符所修饰。
比如,

  • private:将内部类在外部类中进行封装。
  • 静态内部类

当内部类被static修饰后,只能直接访问外部类中的static成员。出现了访问局限。
注意:当内部类中定义了静态成员,该内部类必须是静态的。当外部类中的静态方法访问内部类时,内部类也必须是静态的。
格式:

外部类名.内部类名 变量名 = new 外部类名.内部类名();

当描述事物时,事物的内部还有事物,该事物用内部类来描述。
因为内部事务在使用外部事物的内容。

  • 方法内部类

内部类定义在局部时,
1.不可以被成员修饰符修饰
2.可以直接访问外部类中的成员,因为还持有外部类中的引用。但是不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量。

匿名内部类

1.匿名内部类其实就是内部类的简写格式。
2.定义匿名内部类的前提:内部类必须是继承一个类或者实现接口。
3.匿名内部类的格式: new 父类或者接口(){定义子类的内容}
4.其实匿名内部类就是一个匿名子类对象。可以理解为带内容的对象。
5.匿名内部类中定义的方法最好不要超过3个。