![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java技术笔记
gao_chun
这个作者很懒,什么都没留下…
展开
-
java设计模式学习 ----- 工厂方法模式(Factory Method)
工厂方法模式分为三种:普通工厂模式、多个工厂方法模式、静态工厂方法模式普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。:举例如下:(我们举一个发送邮件和短信的例子)首先,创建二者的共同接口:[java] view plaincopypublic interface Sender { public void Send(); } 其次,创建实现类原创 2015-08-23 13:29:34 · 2194 阅读 · 0 评论 -
java中的这几个问题你是否知道
问题一:我声明了什么! String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。 这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只原创 2014-06-04 10:19:51 · 2802 阅读 · 0 评论 -
java回调函数机制
一、 概述软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调、异步调用 。同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用; 回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口; 异步调用:一种类似消息或事件的机制,解决了同步阻塞的问题,它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。原创 2015-07-15 23:19:01 · 5631 阅读 · 4 评论 -
java中transient关键字简介
java中 transien 关键字我们都知道一个对象只要实现了 Serilizable 接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个的所有属性和方法都会自动序列化。 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序原创 2015-01-12 15:56:18 · 4935 阅读 · 1 评论 -
为什么在重写了equals()方法之后也必须重写hashCode()方法
我们都知道Java语言是完全面向对象的,在java中,所有的对象都是继承于Object类。Ojbect类中有两个方法equals、hashCode,这两个方法都是用来比较两个对象是否相等的。 对于值对象,==比较的是两个对象的值,对于引用对象,比较的是两个对象的地址。默认的equals方法同==,一般来说我们的对象都是引用对象,要重写equals方法。再举一个例子,现在有一个原创 2015-04-02 17:15:20 · 8519 阅读 · 0 评论 -
java中对象的引用(强引用、软引用、弱引用、虚引用)
java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。 在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直原创 2015-04-08 14:31:03 · 6148 阅读 · 0 评论 -
js中三个 === 的含义
"1"==1 返回 true"1"===1 返回 false"1"==true 返回 true "1"===true 返回 false原创 2014-07-09 15:49:26 · 5378 阅读 · 0 评论 -
java多线程之 ---- 线程同步
java多线程之线程同步线程同步定义:同步是指在同一时间段内只能运行一个线程。分类:同步方法、同步块。作用:安全解决共享问题。 同步块: 语法: synchronized (同步对象) { 需要同步的代码; }例子: public class ThreadDemo implements Runnable{ private int ticket = 5; p原创 2015-08-01 18:06:25 · 2219 阅读 · 0 评论 -
java多线程之 ---- 线程死锁
java多线程之线程死锁产生死锁的主要原因:因为系统资源不足。 进程运行推进的顺序不合适。 资源分配不当等。 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。 产生死锁的四个必要条件: 互斥条件:一个资源每次只能被一个进程使用。 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保原创 2015-08-01 17:12:34 · 2272 阅读 · 0 评论 -
Java设计模式概念
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真原创 2014-06-24 16:49:59 · 5758 阅读 · 0 评论 -
java设计模式学习 ----- 抽象工厂模式(Abstract Factory)
抽象工厂模式(Abstract Factory)工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。因为抽象工厂不太好理解,我们先看看图,然后就和代码,就比较容易理解。原创 2015-08-24 18:30:04 · 1263 阅读 · 0 评论 -
java设计模式学习 ----- 代理模式(Proxy)
代理模式(Proxy)其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法。先来看看关系图: 根据上文的阐述,代理模式就比较原创 2015-09-14 14:45:02 · 3106 阅读 · 0 评论 -
Java集合源码剖析(二)【HashMap、Hashtable】
HashMap源码剖析HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。 HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。 HashMap 实现了Serializable接口,因原创 2015-08-16 01:39:17 · 1970 阅读 · 0 评论 -
Java集合源码剖析(一)【集合框架概述、ArrayList、LinkedList、Vector】
Java集合框架Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。 Java集合类的整体框架如下: 从上图中可以看出,集合类主要分为两大类原创 2015-08-16 01:02:14 · 2234 阅读 · 0 评论 -
Java集合源码剖析(三)【TreeMap、LinkedHashmap】
TreeMap源码剖析前言 本文不打算延续前几篇的风格(对所有的源码加入注释),因为要理解透TreeMap的所有源码,对博主来说,确实需要耗费大量的时间和经历,目前看来不大可能有这么多时间的投入,故这里意在通过于阅读源码对TreeMap有个宏观上的把握,并就其中一些方法的实现做比较深入的分析。红黑树简介 TreeMap是基于红黑树实现的,这里只对红黑树做个简单的介绍,红黑树是一种特殊的原创 2015-08-17 09:47:00 · 2223 阅读 · 0 评论 -
java并发编程中常用的工具类 Executor
深入理解java执行器相关的类有:Executor ,Executors,ExecutorService。Executor分析Executor是一个接口,是用来执行 Runnable 任务的;它只定义一个方法- execute(Runnable command);执行 Ruannable 类型的任务。通过 Executor 管理 Thread 对象,可以简化编程。Executor在客户单和任务执行之间提供了一个中介层,通过中介来执行任务。Executor执行任务而无须管理任务的生命周期。因此,Exec原创 2015-04-17 13:29:25 · 7189 阅读 · 0 评论 -
java中String对象的长度
java中String的长度使用 Integer.MAX_VALUEInteger.MAX_VALUE = 2147483647 : String 和 StringBuffer 获得长度的方法: public int length() Returns the length of this string原创 2015-05-04 16:08:53 · 17738 阅读 · 0 评论 -
java中volatile关键字
synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同一时刻只能有一个线程能够用synchronized 修饰的方法 或者 代码块。volatile用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。volatile很容易被误用,用来进行原子性操作。原创 2015-04-17 14:10:35 · 6761 阅读 · 1 评论 -
java抽象类 与 接口
Java接口和Java抽象类的认识很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西,我实现它又有什么用呢?我从它那什么也得不到,除了一些方法名,我直接在具体类里加入这些方法不就行了吗? 为什么一定要有抽象类这个概念?为什么就不能把这个父类写成一个具体的类,子类再继承它不就可以了吗?何必弄一个抽象类出来,还要弄一些没有方法体的抽象方法,弄原创 2015-01-12 16:13:39 · 7156 阅读 · 0 评论 -
java.lang.Class.getDeclaredMethod()方法详解
java.lang.Class.getDeclaredMethod()方法用法注:方法返回一个Method对象,它反映此Class对象所表示的类或接口的指定已声明方法。描述java.lang.Class.getDeclaredMethod()方法返回一个Method对象,它反映此Class对象所表示的类或接口的指定已声明方法。name 参数是一个字符串,指定所需原创 2015-01-19 17:14:20 · 67115 阅读 · 5 评论 -
java 正则表达式验证
package com.fsti.icop.util.regexp;import java.util.regex.Matcher;import java.util.regex.Pattern;public final class RegExpValidatorUtils {/*** 验证邮箱* * @param 待验证的字符串* @return 如果是符合的字符串,返回 tru原创 2014-09-28 16:54:51 · 1835 阅读 · 0 评论 -
native关键字
今日在项目交接中,遇到了native关键词,又熟悉又陌生的感觉,反正以前是没常用到过这玩意。就查了点资料,对native是什么东西有了那么一点了解,总结下。native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他原创 2014-10-30 10:11:05 · 2140 阅读 · 0 评论 -
java中使用poi导出Excel详解
java当初把核心处理设成Unicode,带来的好处是代码适应了多语言环境。 然而由于老外的英语只有26个字母,有些情况下,一些程序员用8 位的byte处理, 一不小心就去掉了CJK的高位。或者是由于习惯在程序中采用硬编码,还有多种原因,使得许 多java应用在CJK的处理上很烦恼。还好 在POI HSSF中考虑到这个问题,可以设置encoding为双字节。 POI可以到www.a原创 2014-07-10 11:07:39 · 17821 阅读 · 1 评论 -
java测试方法运行时间 System.currentTimeMillis();
测试:效果:System.currentTimeMillis();currentTimeMillis()返回以毫秒为单位的当前时间,返回的是当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量)。注意,当返回值的时间单位是毫秒时,值的粒度取决于基础操作系统,并且粒度可能更大。例如,许多操作系统以几十毫秒为单位测原创 2015-01-16 16:46:20 · 73312 阅读 · 0 评论 -
java中去重机制
要了解更详细的原理,可以去了解Java中集合的机制,这里的主要原因就是要复写hashCode()方法和equals()方法贴下代码:原创 2014-07-15 17:50:07 · 5516 阅读 · 0 评论 -
java中String的21种用法
(构造函数必须new出来) * public String (char[] vaue) 将一个字符数组变成字符串(构造函数) * public String (char[] vaue,int offset,int count) 将制定范围内的字符数组变为字符串(构造函数) * public String (byte[],bytes)原创 2014-07-31 17:43:54 · 4842 阅读 · 0 评论 -
Java接口回调
java的接口回调,在android下用的是越来越多了,到底该怎么理解他呢? 好比是一个领导和一个下属,还有一个下属间谍三个人之间不清不楚的关系 1、下属有一个吃饭的事情……(定义接口)2、领导发表申明,说对下属的吃饭这件事感兴趣,并说了如果下属吃饭,他就怎么样怎么样,但是老板就是老板,总不能一直盯着下属所以……(实现接口,并实现处理监听事件的方法)原创 2014-07-18 15:18:26 · 7674 阅读 · 0 评论 -
浅谈newInstance()方法和new关键字
网上看到了一段工厂类是这么写的: public class SimpleFactory { @SuppressWarnings({ "unchecked", "rawtypes" }) public T getInstance(Class clazz) { try { return (T) clazz.newInstance(); } catch (Instanti原创 2015-04-02 17:12:23 · 10544 阅读 · 0 评论 -
new一个Object对象占用多少内存?
/*************************************************** * TODO: description . * @author: gao_chun * @since: 2015-4-2 * @version: 1.0.0 * @remark: 转载请注明出处 ************************原创 2015-04-02 17:01:47 · 6684 阅读 · 0 评论 -
关于java方法中Object... args参数的含义
关于java方法中Object... args参数的含义在阅读google发布的volley源码时,突然看到一个方法中存在这样的写法,如 :v(String format, Object... args)不明白什么意思,琢磨着为什么要这样写呢,跟Object[] args是一个意思吗?为什么用三个点代替呢?后来查阅了下文档,原来这是JDK1.5新增语法,新特性,动态参数或者是可变参数的原创 2014-12-31 14:01:24 · 26813 阅读 · 8 评论