多总结和学习的几篇文章

多考虑,夯实基础

1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
  如果作用于引用类型的变量,则比较的是所指向的对象的地址

2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量
  如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
  诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。


[http://blog.csdn.net/wuxinliulei/article/details/11095447]

1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 
2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。) 
3. 堆:存放所有new出来的对象。 
4. 静态域:存放静态成员(static定义的) 
5. 常量池:存放字符串常量和基本类型常量(public static final)。 
6. 非RAM存储:硬盘等永久存储空间 

http://blog.csdn.net/jason0539/article/details/23297037/

单例模式有以下特点:
1、单例类只能有一个实例。[私有化无参构造器]
2、单例类必须自己创建自己的唯一实例。[私有静态全局变量]
3、单例类必须给所有其他对象提供这一实例。[静态方法_类直接访问_要求属性也是静态的]

//懒汉式单例类.在第一次调用的时候实例化自己   
public class Singleton { 
   
    private Singleton (){}  
   
    private static class LazyHolder {    
       private static final Singleton INSTANCE = new Singleton();    
    }    
      
    public static final Singleton getInstance() {    
       return LazyHolder.INSTANCE;    
    }    
} 

//饿汉式单例类.在类初始化时,已经自行实例化   
public class Singleton1 {  
    private Singleton1() {}  
    private static final Singleton1 single = new Singleton1();  
    //静态工厂方法   
    public static Singleton1 getInstance() {  
        return single;  
    }  
} 

//类似Spring里面的方法,将类名注册,下次从里面直接获取。  
public class Singleton3 { 
    private static Map<String,Singleton3> map = new HashMap<String,Singleton3>();  	
    static{  
        Singleton3 single = new Singleton3();  
        map.put(single.getClass().getName(), single);  
    }  	
    //保护的默认构造子  
    protected Singleton3(){}  	
    //静态工厂方法,返还此类惟一的实例  
    public static Singleton3 getInstance(String name) {  
        if(name == null) {  
            name = Singleton3.class.getName();  
            System.out.println("name == null"+"--->name="+name);  
        }  
        if(map.get(name) == null) {  
            try {  
                map.put(name, (Singleton3) Class.forName(name).newInstance());  
            }  catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
        return map.get(name);  
    }     
    public static void main(String[] args) {  
        Singleton3 single3 = Singleton3.getInstance(null);   
    }  
}  

Java 多线程设置线程超时时间之 Callable接口和Future接口
[http://blog.csdn.net/li12412414/article/details/54577034]

在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现。 
Future接口是Java标准API的一部分,在java.util.concurrent包中。Future接口是Java线程Future模式的实现,可以来进行异步计算。
Future模式可以这样来描述:我有一个任务,提交给了Future,Future替我完成这个任务。期间我自己可以去做任何想做的事情。
一段时间之后,我就便可以从Future那儿取出结果。就相当于下了一张订货单,一段时间后可以拿着提订单来提货,这期间可以干别的
任何事情。其中Future 接口就是订货单,真正处理订单的是Executor类,它根据Future接口的要求来生产产品。
Future接口提供方法来检测任务是否被执行完,等待任务执行完获得结果,也可以设置任务执行的超时时间。这个设置超时的方法就是实现Java程序执行超时的关键。
Future接口是一个泛型接口,严格的格式应该是Future<V>,其中V代表了Future执行的任务返回值的类型。 Future接口的方法介绍如下:
boolean cancel (boolean mayInterruptIfRunning) 取消任务的执行。参数指定是否立即中断任务执行,或者等等任务结束
boolean isCancelled () 任务是否已经取消,任务正常完成前将其取消,则返回 true
boolean isDone () 任务是否已经完成。需要注意的是如果任务正常终止、异常或取消,都将返回true
V get () throws InterruptedException, ExecutionException  等待任务执行结束,然后获得V类型的结果。InterruptedException 线程被中断异常, 
ExecutionException任务执行异常,如果任务被取消,还会抛出CancellationException
V get (long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException 同上面的get功能一样,多了设置
超时时间。参数timeout指定超时时间,uint指定时间的单位,在枚举类TimeUnit中有相关的定义。如果计算超时,将抛出TimeoutException


RabbitMQ 收发消息

https://www.cnblogs.com/kaituorensheng/p/6591581.html

















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值