`
文章列表

并发同步

一、单例模式与同步问题 下面的代码是懒汉式单例的获取实例的方法,会出现同步问题  可以使用同步方法来解决这个问题,但是效率比较低   也可以使用同步块来解决这个问题   饿汉式单例模式,两种实现方式如下图:   解决同步问题的一个方式就是在公共资源那种设置一个标志变量,根据标志变量来决定那个线程可以访问共享资源。                  
一、实现多线程的方法 1、继承Thread类,并重写run方法。启动线程,首先创建Thread子类,调用该类的start方法。ps:使用start方法并不一定马上启动线程,需要等待cpu调度。 2、实现runnable接口,重写run方法。启动线程的方法,创建这是角色,创建代理角色+真是角色引用,代理角色.start() 使用方法2:的好处 1、避免单继承 2、方便共享资源,例子如下: 下面的程序中,共享了Web12306类。 二、终止线程 使用表示终止线程,代码如下  三、阻塞线程 1、Thread.sleep(200);  被阻塞的线程不会释放资源 2、Thread. ...

javase_IO

一、字符流与字节流 字符流只能处理文字,字节流可以处理everything   二、字节流 1、输入流: InputStream  FileInputStream 必须确保文件存在   + BufferedInputStream 方法: read()   :一个字节读取 ,返回的字符unicode码read(byte[] b):一段一段读取,返回读取大小 2、输出流:OutputStream  FileOutputStream  文件不存在,内部创建  +BufferedOutputStream 方法: write(int b) :一个字节写出 write(byte[] b ...

容器

一、collection接口 1、实现了Iterable接口,可以使用迭代器 2、使用了泛型,因此只能存放引用类型 3、接口下的方法 详见api文档,这里只说一个方法 <T> T[] toArray(T[] a) Book[] tempArray =new Book[1];tempArray =list.toArray(tempArray);//toArray,他的作用是讲list内的内容转化成相应类型的数组       二、Collection接口的接口 list:允许重复、有索引、有序 set:不允许重复、无序   三、遍历方法   四 ...

编程小技巧

一、判断int类型的数字有几位 int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);     二、乘法运算的加速技巧 q*100 = q*(64+32+4) = q*2^6+q*2^5+q*2^2 = q<<6+q<<5+q<<2 ps:注意不要超出int的表述范围

常用类

一、File类 1、常量: * separator :  名称分隔符   * pathSeparator: 路径分隔符   2、构造器 File(String pathname) : 通过绝对路径或者相对路径,相对路径值得是项目的根目录 如下图所示: 根目录指的是Other   File(String parent, String child)  :根据父路径构造 File(File parent, String child)   ps:获取bin路径下配置文件inputstream的方法 类名.class.getResourceAsStream("/bin ...
一、自定义类型比较大些 1、类实现 java.lang.Comparable +重写 compareTo方法。 这种方法的特点是:与类耦合在一起,单一的排序规则   2、比较业务类 java.util.Comparator +重写compare方法 。这种方法的特点是:解耦,满足不同的多样化的排序规则   3、只有使用了以上两种方法才能调用java提供的排序算法. sort(List<T> list) 方法中的T必须实现java.lang.Comparable +重写 compareTo。因为,sort方法内部,会把T类型转化为Object类型,进行操作。当需要 ...

java数组

一、数组特点 1、数组的元素具有相同的数据类型 2、数组中元素位置有序放置 3、数组长度一旦确定不可改变   二、一维数组的声明   三、一位数组初始化 1、默认初始化 注意现在fArray中的元素都是null   2、静态初始化:声明的同时给定值,不指定长度 可以省略为: int[] arr2 ={1,2,3,4,5}; ps: 省略写法不能先声明,后赋值 int[] arr3 =null;arr3 ={1,2,3,4,5};//这样无法通过编译 完整写法 可以先声明,后赋值 int[] arr3 =null;arr3 =new int[]{ ...

异常练习

 1、发生ClassCastException,不能讲String类型转化成Integer   2、 发生ArrayIndexOutOfBoundsException,虽然catch在捕获异常,但是没有捕捉对。   3、    

java异常

一、异常的分类 ps: 1)Error是指使程序直接完蛋,没法在运行的问题。Exception是指这样一类问题,当这些问题发生时,虽然会有不好的影响,但是程序还是可以继续运行的。Error是失败,Exception是曲折。 2)CheckedException与RuntimeException的区别:  CheckedException是外因,RuntimeException是内因。 3)CheckedException在编译时要try一脚,或者是扔出去,RuntimeException要凭借经验增强代码的健壮性,将问题消灭在摇篮里。   二、异常产生的原因及处理方法 1 ...

内部类

一、内部类作用:便于访问外部类的私有信息  二、内部类分类 1、成员内部类 1)可以访问外部类的一切内容 2)不能声明 静态属性、静态方法 3)如果外部类和内部类有重名的成员内容,访问需要用:类名.this. 4)如果外部类和内部类有重名的静态内容,访问需用:类名.5)创建成员内部类         外部类名.内部类名 名字 = new 外部类名().new 内部类()   2、静态内部类 1)只能访问外部类的静态信息 2)可以声明一切 3)如果外部类与内部类有重名的静态内容 6)创建静态内部类对象         外部类名.内部类名 名字 = new 外部类名. ...

java接口

一、注意事项 1、接口内只能定义:全局常量和公用的抽象方法 全局常量:public static final 公共抽象方法:public abstract ps: 1)、声明的时候即使不写明,也会自动补全成这个样子。 2)、在重写方法的时候要注意符合重写的要求   二、类与类关系 * 1、依赖:局部变量(形参) * 2、关联: 属性 *    聚合 *    组合 * 3、继承 * 4、接口     三、空接口与克隆 java的空接口有:java.lang.Cloneable和java.io.Serializable 使用克隆创建对象,clone是Object类中的方 ...

抽象类

一、注意问题 1、不能实例化,但是,一定存在构造器,仅创建子类对象使用。并且可以存在多个构造器,含参数的不含参数的 2、抽象类 一定存在子类,否则没有实际意义 3、不能存在final 修饰符 4、具体类与抽象类可以定义的内容 具体类:成员变量  类变量  成员常量 类常量  静态块  构造块  构造器   成员方法 静态方法 抽象类:成员变量  类变量  成员常量 类常量  静态块  构造块  构造器   成员方法 静态方法 +抽象方法(0及以上)   二、抽象类与抽象方法的关系 1、抽象方法 一定存在于抽象类中,抽象类不一定包含抽象方法(抽象类中可以不定义抽象方法) 2、 ...

javase多肽

一、前提 继承+重写 +父类引用指向子类对象。 ps:当使用父类引用指向子类对象的时候,只能使用子类中的延续方法和重写方法。如果要使用新增方法必须进行强转。例如: QQ是Car的子类 Car car =new QQ(); QQ qq =(QQ)car;//只有这样才能调用QQ类的新增方法   二、多肽的常见方式 1、返回类型使用父类型 例如:简单工厂模式 2、形式使用父类型 public static  void test(Car car) 使用这种方法签名,调用的时候可以传各种车的子类   三、属性不能多肽 Car car = new QQ(); 打印car ...
一、final 1、final 修饰变量 必须确保值存在,值一旦确定不可改变          1)局部变量用等号赋值          2)成员常量赋值方法有三种:声明同时赋值、构造块、构造器          3)类常量赋值方法:声明同时赋值、静态块赋值 2、final 修饰 方法 ,表示该方法 不可被重写 3、final 修饰 类 ,表示该类 不可被继承   二、super关键字 1、super只能在子类内部使用,在子类外部无法使用super访问封装在子类对象内部的父类对象。 2、当访问权限允许的时候,super.属性的意思是明确调用父类的属性 。 3、super. ...
Global site tag (gtag.js) - Google Analytics