`
crazy木木木
  • 浏览: 51491 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
二、对于处于sleep,join等操作的线程,如果被调用interrupt()后,会抛出InterruptedException,然后线程的中断标志位会由true重置为false,因为线程为了处理异常已经重新处于就绪状态。 我在运行thinking in java里中断的例子时,一直都很奇怪为什么在catch(InterruptedException e)的处理段里,thead.isInterrupted()返回的都是false,原来是已被重置。   四、不可中断的操作,包括进入synchronized段以及Lock.lock(),inputSteam.read()等,调用interru ...
最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。 下面是参考网络资源总结的一些在Java编程中尽可 ...

ArrayList源代码详解

    博客分类:
  • java
看remove方法的底层实现: public E remove(int index){ RangeCheck(int index);//判断是否越界 modCount++; E oldValue = (E)elementData[index];//获得删除的元素 int numMoved = size-index-1;//得到删除元素后面的元素个数 if(numMoved >0) System.arraycopy(elementData,index+1,elementData,index,numMoved );//把后面的 ...
上次去某大公司面试,问到了equals方法和hashCode()方法,现在总结一下 1,equals方法: 1,自反性,x.equals(x);为true,前提是X不为空 2,对称性,如果x.equals(y)为true,则y.equals(x)也为true 3,传递性,如果x.equals(y)为true,且y.equals( ...
刚开始认为使用了ConcurrentLinkedQueue类之后意味着不需要自己进行任何同步或加锁操作,查了下资料,如果直接使用它提供的函数,比如:queue.add(obj); 或者 queue.poll(obj);,这样我们自己不需要做任何同步。但如果是非原子操作,比如:    if(!queue.isEmpty()) {      queue.poll(obj);     }  我们很难保证,在调用了isEmpty()之后,poll()之前,这个queue没有被其他线程修改。所以对于这种情况,我们还是需要自己同步:  synchronized(queue) {       if(!queu ...

一些定时器的介绍

    博客分类:
  • java
在程序中经常有建立定时异步任务的需求,下面介绍几种实现方法:1,使用spring quartz定时器Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在Spring中怎样配置Quartz。首先,定义一个执行定时异步 ...
上次去某大公司面试,问到了equals方法和hashCode()方法,现在总结一下 1,equals方法: 1,自反性,x.equals(x);为true,前提是X不为空 2,对称性,如果x.equals(y)为true,则y.equals(x)也为true 3,传递性,如果x.equals(y)为true,且y.equals(z)为true,则x.equals(z)为true 4,一致性,x.equals(y)的第一次调用为true,那么x.equals(y)的第2次,3次。。。n次也为true,前提是在这个比较过程中x与y的值没有被修改 5,x.equals(null)为fals ...

LinkedList源码详解

    博客分类:
  • java
LinkedList底层是用双向链表实现的; 下面看其构造方法: public LinkecList(){ header.next=header.previous=header; } 此处构造了双向链表的一个头节点。 再看一下header的定义: private transient Entry<E> header = new Entry<E>(null, null, null); 然后在看Entry private static class Entry<E> { E element; Entry<E> next; ...
对于add(int index,object o);该方法在特定位置插入元素,底层数组的元素都往后面移动一位,代价相当高,同理remove(int index)   对于ArrayList构造方法源代码详解: public ArrayList(){ this(10);//调用子类带参数的构造方法 } public ArrayList(int initialCapacity){ super(); if(initialCapacity<0){ //抛出异常 } this.elementData=new Object( ...
int a=10,b=5; 互换: a=a+b; b=a-b; a=a-b;
由于刚刚开始搞ibatis,犯了几个低级的错误:参考了下http://jun1986.iteye.com/blog/1150606的帖子,得出结论如下: 1.User.xml中,必须要定义namespace 2. 使用时要这样.queryForObject("namespace.id名",object/parameterObject);  
endLogTimeDate = “2012-05-22 17:10:46” startLogTimeDate = “2012-05-22 17:10:46” var endLogTimeDate = new Date(Date.parse(endLogTime.replace(/-/g, "/"))); var startLogTimeDate = new Date(Date.parse(startLogTime.replace(/-/g, "/"))); 日期的操作: endLogTimeDate .getYear(); //获 ...
刚用SimpleDateFormat时犯了一个低级错误,导致我调试了一个晚上,真是无语 错误语句如下: SimpleDateFormat sd = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss"); 竟然没注意到,后来经人提醒才恍然大悟,如下: SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
为了打出个sql语句搞了半天,后来参考了下http://ganlanshu.iteye.com/blog/339746这个帖子,终于搞定 在log4j.properties加上 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.logger.com.ibatis=deb ...
Global site tag (gtag.js) - Google Analytics