Java
文章平均质量分 82
zqlee808qa
有梦想并为之奋斗的普通青年
展开
-
Future、FutureTask浅析
Futurer多用于耗时线程的计算,主线程可以在完成自己的任务后,再去查询该Future是否执行完毕并获取结果。他有一个回调函数protected void done(),当任务结束时,该回调函数会被触发。因此,只需重载该函数,即可实现在线程刚结束时就做一些事情。Future可对具体的调度任务的执行结果进行查看,最为关键的是它可以检查对应的任务是否已经完成(isDone),也可以阻塞在get方原创 2015-11-12 23:03:20 · 355 阅读 · 1 评论 -
当你输入一个网址的时候,实际会发生什么?
当你输入一个网址的时候,实际会发生什么? 原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文转载 2015-11-12 23:03:27 · 369 阅读 · 0 评论 -
自我实现ArrayList
面试者经常遇到集合类源码的问题。我们不求将所有的细节都记住,但ArrayList与LinkedList比较、add、get、remove、扩容、及相关时间复杂度等核心思想要说得一清二楚。ArrayList底层用数组实现,可以快速访问某一节点的值,但插入删除会调用System.arraycopy方法,数组容量不够时需进行扩容,扩容采用新的大数组取代旧的数组。 public class原创 2015-11-12 23:02:54 · 402 阅读 · 1 评论 -
Date、String.format常见用法
Date类常见用法:获取当天日期: SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); //获取simpleformat Calendar calendar = Calendar.getInstance();// 通过getInstance方法获取Calendar实例原创 2015-11-12 11:11:10 · 413 阅读 · 0 评论 -
ThreadLocal源码浅析
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。 另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作来创建的原创 2015-11-12 23:03:17 · 327 阅读 · 0 评论 -
java内部类总结
内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。 内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)。注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出原创 2016-01-05 13:44:02 · 272 阅读 · 0 评论 -
自我实现HashMap
面试官要你自己实现HashMap,无非就是考查对JDK中HashMap的理解。Thinking in JAVA中的 SlowHashMap就不要记了,直接参考JDK写代码吧。HashMap以键值对的方式存储数据,数据结构可理解为“链表的数组”。通过插入元素key值的hashcode和自带的hash算法决定元素的存储位置,发生hash冲突则在此节点下拉一个二元组链表,依次比较链表中的key是否与原创 2015-11-12 23:02:52 · 319 阅读 · 0 评论 -
好博客要记录:对象的强、软、弱和虚引用
对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 ⑴强引用(StrongReference)强引用是使用转载 2015-11-12 23:03:02 · 234 阅读 · 0 评论 -
好博客要记录:JVM分代垃圾回收策略的基础概念
JVM分代垃圾回收策略的基础概念由于不同对象的生命周期不一样,因此在JVM的垃圾回收策略中有分代这一策略。本文介绍了分代策略的目标,如何分代,以及垃圾回收的触发因素。文章总结了JVM垃圾回收策略为什么要分代,如何分代,以及垃圾回收的触发因素。为什么要分代分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集转载 2015-11-12 23:02:57 · 272 阅读 · 0 评论 -
经典问题之生产者-消费者问题——Lock实现
经典问题之生产者-消费者问题——Lock实现。package com.lzq.newInterview;import java.util.LinkedList;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;原创 2015-11-12 23:03:12 · 652 阅读 · 0 评论 -
好博客要记录:java中关键字volatile的作用
在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄存器)。为了性能,一个线程会在自己的memory中保持要访问的变量的副本。这样就会出现同一个变量在某个瞬间,在一个线程的memory中的值可能与另外一个线程memory中的值,或者main memory中的值不一致的情况。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的转载 2015-11-12 23:03:04 · 246 阅读 · 0 评论 -
好博客要记录:ConcurrentHashMap之实现细节
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁,我和面试官也因此发生了冲突,结果可想而知。还是闲话少说,通过仔细阅读源代码转载 2015-11-12 23:03:07 · 265 阅读 · 0 评论 -
好博客要记录:HTTP中Get与Post的区别
原文地址:http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资转载 2015-11-12 23:03:32 · 279 阅读 · 0 评论 -
基于LinkedBlockingQueue源码自我实现阻塞队列
LinkedBlockingQueue是一个阻塞的、线程安全的、由链表实现的双向队列,和ArrayBlockingQueue一样,是最普通也是最常用的阻塞队列。现基于LinkedBlockingQueue源码自我实现一个单向的、简化版的LinkedBlockingQueue.package com.lzq.newInterview;import java.util.concurre原创 2015-11-12 23:03:35 · 378 阅读 · 1 评论 -
常用的Java文件操作
//1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if (!myFolderPath.exists()) { myFolderPath.mkdir(); } } catch (Exception转载 2016-01-06 17:33:52 · 352 阅读 · 0 评论