2017年9月

安卓按钮的四大点击事件整理
首先写一下xml文件

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/editText1"
    android:text="拨号" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/button1"
    android:layout_marginTop="14dp"
    android:text="button1" />

<Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/button2"
    android:layout_alignBottom="@+id/button2"
    android:layout_marginLeft="26dp"
    android:layout_toRightOf="@+id/button2"
    android:text="button2" />

<Button
    android:id="@+id/button4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/button3"
    android:layout_alignBottom="@+id/button3"
    android:layout_marginLeft="18dp"
    android:layout_toRightOf="@+id/button3"
    android:text="button3" />

<Button
    android:onClick="click"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignRight="@+id/button3"
    android:layout_below="@+id/button3"
    android:layout_marginTop="62dp"
    android:text="test" />

点击事件
【1】定义一内部类去实现按钮的点击事件

public class MainActivity extends ActionBarActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载一个布局
        setContentView(R.layout.activity_main);
        //找到按钮
        Button btn_call = (Button) findViewById(R.id.button1);
        //给button按钮设置一个点击事件
        btn_call.setOnClickListener(new MyClickListener());
    }
    //定义一个类去实现   按钮需要的接口类型
    private class MyClickListener implements OnClickListener{
        
        //当按钮被点击的时候调用
        @Override
        public void onClick(View v) {
            System.out.println("我被点击了");
            }
        }
    }    
}

【2】通过匿名内部类去实现

public class MainActivity extends ActionBarActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载一个布局
        setContentView(R.layout.activity_main);
        //找到按钮
        Button btn_call = (Button) findViewById(R.id.button1);
        //给button按钮设置一个点击事件
        btn_call.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                System.out.println("按钮被点击了");
            }
        });
    }    
}

【3】让当前类实现OnClickListener接口类型(用于布局里面有很多按钮需要被点击的时候)

public class MainActivity extends ActionBarActivity implements OnClickListener {    
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 加载一个布局
        setContentView(R.layout.activity_main);
        
        // 找到按钮
        Button btn_call = (Button) findViewById(R.id.button1);
        Button btn_call1 = (Button) findViewById(R.id.button2);
        Button btn_call2 = (Button) findViewById(R.id.button3);
        Button btn_call3 = (Button) findViewById(R.id.button4);
        // 给button按钮设置一个点击事件
        // 按钮的第三种点击事件
        btn_call.setOnClickListener(this);
        btn_call1.setOnClickListener(this);
        btn_call2.setOnClickListener(this);
        btn_call3.setOnClickListener(this);
    }

    // 当点击按钮的时候执行
    public void onClick(View v) {
        // 具体判断点击的哪个按钮
        switch (v.getId()) {
        case R.id.button1:
            System.out.println("1按钮被点击了");
            break;
        case R.id.button2:
            System.out.println("2按钮被点击了");
            break;
        case R.id.button3:
            System.out.println("3按钮被点击了");
            break;
        case R.id.button4:
            System.out.println("4按钮被点击了");
            break;

        default:
            break;
        }
    }
}

【4】在按钮的布局上加上一个onClick属性 在Activity里面定义一个方法 方法名和属性名相同(适合自己做一些demo)

public class MainActivity extends ActionBarActivity  {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 加载一个布局
        setContentView(R.layout.activity_main);
    }
    //声明一个方法  方法名和你要点击的这个按钮  在布局中的onClick属于一样
    public void click(View v) {
        System.out.println("按钮被点击了");
    }

    }

}







配置环境

想要在电脑的任意位置使用adb命令就需要配置环境变量
右击“此电脑”->选择“属性”->选择“高级系统设计”->选择“高级”->选择“环境变量”->找到"path"
QQ截图20170924091227.png
选中"path"之后->点击“编辑”->选择“新建”
QQ截图20170924091323.png
填入adb的路径即可
QQ截图20170924091355.png
最后确认退出即可

常见命令

1. adb kill-server  关闭adb服务进程。
2. adb start-server  开启服务
3.adb install [-r] [-s]  <应用名>  
    这个命令将指定的apk文件安装到设备上.
   -r 强制安装(在某些情况下可以已有些应用程序在运行或不可写,可加上此参数强制安装)
   -s 将apk文件安装在SD-Card
4.adb uninstall [-k] <应用的包名>    卸载应用
   -k 参数,为卸载软件但是保留配置和缓存文件.
5.adb shell  进入手机终端
6.adb push <本地路径> <远程路径>    用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)
7.adb pull <远程路径> <本地路径>    用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑



在定义了一个类去实现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;
    }
}