Java
文章平均质量分 71
iteye_7202
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HashMap的实现原理
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删...原创 2014-07-23 09:17:11 · 107 阅读 · 0 评论 -
java 双重加锁及单例模式
单例创建模式是一个通用的编程习语。和多线程一起使用时,必需使用某种类型的同步。在努力创建更有效的代码时,Java 程序员们创建了双重检查锁定习语,将其和单例创建模式一起使用,从而限制同步代码量。然而,由于一些不太常见的 Java 内存模型细节的原因,并不能保证这个双重检查锁定习语有效。它偶尔会失败,而不是总失败。此外,它失败的原因并不明显,还包含 Java 内存模型的一些隐秘细节。这些事实将导致...原创 2014-08-25 18:02:59 · 427 阅读 · 0 评论 -
Java内部类的使用小结
内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。*内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)。 注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inner的内...原创 2014-08-13 21:45:38 · 93 阅读 · 0 评论 -
java sleep和wait的区别和联系
第一种解释:功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁. 还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.第二种解释:sleep是Thr...原创 2014-08-10 20:46:07 · 207 阅读 · 0 评论 -
java 字节流与字符流的区别
转自:http://blog.youkuaiyun.com/cynhafa/article/details/6882061字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示。下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符...原创 2014-08-10 16:34:00 · 106 阅读 · 0 评论 -
java 接口和抽象类的区别
1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。 2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义...原创 2014-08-10 16:15:02 · 97 阅读 · 0 评论 -
java反射机制的作用
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 Java反射机制主要提供了以下功能: a)在运行时判断任意一个对象所属的类;b)在运行时构造任意一个类的对象;c)在运行时判断任意一个类所具有的成员变量和方法;...原创 2014-08-10 14:29:29 · 149 阅读 · 0 评论 -
Java内存泄露的理解与解决
转自:http://henryyang.iteye.com/blog/1188328 Java内存管理机制在C++ 语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露。 Java 语言对内存管理做了自己的优化,这就是垃圾回收机制。 Jav...原创 2014-08-08 19:58:21 · 122 阅读 · 0 评论 -
Java的内存泄漏
转自: http://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak/ 问题的提出Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的...原创 2014-08-08 19:36:18 · 96 阅读 · 0 评论 -
JAVA多线程和并发基础面试问答
多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。(校对注:非常赞同这个观点)Java多线程面试问题1. 进程和线程之间有什么不同?一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。...原创 2014-09-01 22:56:37 · 93 阅读 · 0 评论 -
HeadFirst 设计模式 读书笔记
要依赖抽象,不要依赖具体类1. 抽象工厂模式 2. 单例模式 为什么全局变量不能保证只有一个实例? 3. HeadFirst 设计模式 命令模式 P205 public class GarageDoorOpenCommand implements Command { GarageDoor mGarage...2013-02-13 00:47:01 · 150 阅读 · 0 评论 -
java softReference 详解
ListView的ListAdapter的getView方法中, bitmap可以使用SoftReference来重新获取那些尚未被回收的Java对象的引用,必将减少不必要的访问,大大提高程序的运行速度,同时缓解加载过多的图片造成了内存压力。下面是从网上找到的SoftReference的一篇解释的比较详细的文章,学习学习。 转自: http://www.cnblogs.com...原创 2013-02-10 22:19:32 · 228 阅读 · 0 评论 -
Java Classloader机制解析
做Java开发,对于ClassLoader的机制是必须要熟悉的基础知识,本文针对Java ClassLoader的机制做一个简要的总结。因为不同的JVM的实现不同,本文所描述的内容均只限于Hotspot Jvm.本文将会从JDK默认的提供的ClassLoader,双亲委托模型,如何自定义ClassLoader以及Java中打破双亲委托机制的场景四个方面入手去讨论和总结一下。JDK默认Cl...原创 2015-07-14 14:14:47 · 198 阅读 · 0 评论 -
ant编译java报“非法字符: \65279 ”错误的解决方法
这是因为文件的编码是UTF-8 BOM,需要改成UTF-8,有很多方式:1. 使用edit plus 另存为 UTF-8的2. 编程替换文件开始的BOM的标记: http://hy3112.iteye.com/blog/771315...2013-09-11 21:25:53 · 112 阅读 · 0 评论 -
ubuntu下安装jdk 1.6
1.在Oracle官网下载jdk-6u35-linux-i586.bin 2.将该文件修改为可执行文件,如chmod 777 jdk-6u35-linux-i586.bin 3.执行该文件,如sudo ./jdk-6u35-linux-i586.bin 4.安装完毕后,则需配置系统环境 sudo gedit /etc/environment。我的配置如下(绿...原创 2013-07-28 00:14:09 · 109 阅读 · 0 评论 -
什么是java序列化,如何实现java序列化?
Java 串行化技术可以使你将一个对象的状态写入一个Byte 流里,并且可以从其它地方把该Byte 流里的数据读出来,重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库、文件等系统里。Java的串行化机制是RMI、EJB等技术的技术基础。用途:利用对象的串行化实现保存应用程序的当前工作状态,下次再启动的时候将自动地恢复到上次执行的状态。序列化就是一种...原创 2013-07-14 19:51:15 · 108 阅读 · 0 评论 -
java之弱引用、软引用、虚引用
Java 2 平台引入了 java.lang.ref 包,其中包括的类可以让您引用对象,而不将它们留在内存中。这些类还提供了与垃圾收集器(garbage collector)之间有限的交互。 1.先“由强到弱”(只的是和垃圾回收器的关系)明确几个基本概念: strong references是那种你通常建立的reference,这个reference就是强可及的。这个不...原创 2013-07-12 15:21:17 · 273 阅读 · 0 评论 -
java.io.StreamCorruptedException解决方案
序列化和反序列化的过程中,我们会用到ObjectOutputStream和ObjectInputStreamObjectOutputStream用于将对象系列化,它可以把一个对象用二进制的方式表示,可以把一个对象通过ObjectInputStream进行还原。这在网络环境下是非常有用的。可以把一个object通过二进制流在网络上进行传播。 通过代码说话吧:ObjectOutpu...原创 2013-07-03 14:52:01 · 2390 阅读 · 0 评论 -
Hashtable与ConcurrentHashMap差别
Hashtable与ConcurrentHashMap区别相同点: Hashtable 和 ConcurrentHashMap都是线程安全的,可以在多线程环境中运行; key跟value都不能是null区别: 两者主要是性能上的差异,Hashtable的所有操作都会锁住整个对象,虽然能够保证线程安全,但是性能较差; ConcurrentHashMap内部使用Segment数组,每个...原创 2014-09-06 00:00:47 · 137 阅读 · 0 评论 -
ThreadLocal的正确用法
用法一:在关联数据类中创建private static ThreadLocalThreaLocal的JDK文档中说明:ThreadLocal instances are typically private static fields in classes that wish to associate state with a thread。如果我们希望通过某个类将状态(例如用户ID、事务...原创 2014-09-13 23:52:19 · 141 阅读 · 0 评论 -
Java多线程总结之由synchronized说开去
转自: http://hellosure.iteye.com/blog/1121157 最重要一条: synchronized是针对对象的隐式锁使用的,注意是对象! 举个小例子,该例子没有任何业务含义,只是为了说明synchronized的基本用法: Java代码 Class MyClass(){ synchronized void myFuncti...原创 2014-09-14 13:11:27 · 103 阅读 · 0 评论 -
详解sleep和wait的区别
转自:http://www.cnblogs.com/DreamSea/archive/2012/01/16/2263844.html 有改动 sleep()方法 sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会; sleep()是Thread类的Static(静...原创 2014-09-15 22:16:39 · 130 阅读 · 0 评论 -
如何停止一个正在运行的java线程
转自:http://ibruce.info/2013/12/19/how-to-stop-a-java-thread/ 与此问题相关的内容主要涉及三部分:已废弃的Thread.stop()、迷惑的thread.interrupt系列、最佳实践Shared Variable。 已废弃的Thread.stop()@Deprecatedpublic final void s...原创 2014-09-15 22:33:41 · 237 阅读 · 0 评论 -
Java Thread 总结
转自:http://www.cnblogs.com/DreamSea/archive/2012/01/11/JavaThread.html Ø线程的概述(Introduction)线程是一个程序的多个执行路径,执行调度的单位,依托于进程存在。 线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈,是在建立线程时由系统分配的,主要用来保存线程内部所...原创 2014-09-15 22:39:19 · 141 阅读 · 0 评论 -
深入理解Java内存模型之系列篇
转自:http://blog.youkuaiyun.com/ccit0519/article/details/11241403原文:http://www.infoq.com/cn/articles/java-memory-model-1?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent...原创 2014-09-16 11:16:59 · 120 阅读 · 0 评论 -
Java中ArrayList和LinkedList区别
转自:http://pengcqu.iteye.com/blog/502676 一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 ...原创 2014-09-17 18:48:07 · 103 阅读 · 0 评论 -
java并发编程-Executor框架
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为: 并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后在提交给一个Executor执行,Execu...原创 2014-10-01 23:40:08 · 135 阅读 · 0 评论 -
java中volatile关键字的含义
转自:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html 在 java 垃圾回收整理一文中,描述了jvm运行时刻内存的分配。其中有一个内存区域是jvm虚拟机栈,每一个线程运行时都有一个线程栈,线程栈保存了线程运行时候变量值信息。当线程访问某一个对象时候值的时候,首先通过对象的引用找到对应在堆内存的变量的值,然后把...原创 2014-10-03 22:39:31 · 161 阅读 · 0 评论 -
java 垃圾回收总结
转自:http://www.cnblogs.com/aigongsi/archive/2012/04/06/2434771.html Java与C,C++有很大的不同就是java语言开发者不需要关注内存信息,不会显式的直接操作内存,而是通过JVM虚拟机来实现。Java虚拟机运行的时候内存分配图如下图: JVM虚拟机栈:一个是线程独有的,每次启动一个线程,就创建一个jvm虚...原创 2014-10-03 22:47:22 · 143 阅读 · 0 评论 -
Java中System.loadLibrary() 的执行过程
转自:http://my.oschina.net/wolfcs/blog/129696 System.loadLibrary()是我们在使用Java的JNI机制时,会用到的一个非常重要的函数,它的作用即是把实现了我们在Java code中声明的native方法的那个libraryload进来,或者load其他什么动态连接库。算是处于好奇吧,我们可以看一下这个方法它的实现,即执行流程。...原创 2014-10-10 11:45:26 · 965 阅读 · 0 评论 -
open jdk源码下载地址
OpenJDK 和Oracle JDK 共用了大量相同的代码,在性能、功能和执行逻辑上都和Oracle JDK非常一致,由于 现在Oracle JDK是闭源的,我们可以下载Open JDK的源码来研究,地址是:https://jdk7.java.net/source.html...2014-10-13 23:19:21 · 164 阅读 · 0 评论 -
JVM必备指南
本文由 ImportNew - xiafei 翻译自 anturis转自:http://www.importnew.com/13556.html 简介Java虚拟机(JVM)是Java应用的运行环境,从一般意义上来讲,JVM是通过规范来定义的一个虚拟的计算机,被设计用来解释执行从Java源码编译而来的字节码。更通俗地说,JVM是指对这个规范的具体实现。这种实现基于严格的指令集和全...原创 2014-11-01 11:20:26 · 308 阅读 · 0 评论 -
JVM Internals
This article explains the internal architecture of the Java Virtual Machine (JVM).The following diagram show the key internal components of a typical JVM thatconforms to The Java Virtual Mac...原创 2014-12-05 11:04:26 · 183 阅读 · 0 评论 -
Java中byte的符号位(转)
在Java中byte类型是有符号的,而Java中又没有提供无符号的byte类型,因此在其表示范围为-128-127之间。而这样对于一些I/O处理程序来说需要对考虑符号位问题,通常的做法可能是: int unsignedByte = signedByte >=0 ? signedByte : signedByte + 256; 这里我们发现,由于byte的符号位的...原创 2010-12-12 21:35:08 · 154 阅读 · 0 评论 -
什么是静态语言与动态语言
1.静态语言与动态语言 静态语言:静态类型语言的类型判断是在运行前判断(如编译阶段),比如C#就是一个静态类型语言。 动态语言:是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变 化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言。 ...原创 2011-06-10 23:40:05 · 376 阅读 · 0 评论 -
Java虚拟机的 10 年
转自 http://www.blogjava.net/duffblog/articles/66677.htmlJava虚拟机的起源与构造 当我们说到“Java”这个词的时候,指的是四个相互关联的概念:Java语言、Java API、Java Class文件格式、Java虚拟机。整个Java体系是基于Java 虚拟机构造的,正因为如此,才能实现Java的安全性和网络移动性。Java并非是第一个采...原创 2011-06-17 20:39:51 · 89 阅读 · 0 评论 -
Java语言类型安全
Java是强类型的语言。这意味着Java编译器会对代码进行检查,以确定没一次赋值,每一次方法的调用是符合类型的。如果有任何不相符合的情况,Java编译器就会给出错误。 类型检查是基于这样一个简单的事实:每一变量的声明都给这个变量一个类型;每一个方法包括构造器的声明都给这个方法的特征。这样一来,Java编译器可以对任何的表达式推断出一个明显类型,Java编译器可以基于明显类型对类型进...2011-06-20 13:52:31 · 210 阅读 · 0 评论 -
Java运行时异常与一般异常的异同
Java提供了两类主要的异常:runtime exception和checked exception。checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。 但是另外一种异常:runt...原创 2011-07-21 20:54:51 · 100 阅读 · 0 评论 -
Java虚拟机 和 java虚拟机下的进程
转自:http://blog.youkuaiyun.com/zyxnetxz/article/details/4681942 一、什么是Java虚拟机 当你谈到Java虚拟机时,你可能是指: 1、抽象的Java虚拟机规范 2、一个具体的Java虚拟机实现 3、一个运行的Java虚拟机实例二、Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任...原创 2011-07-22 22:17:06 · 526 阅读 · 0 评论 -
Java并发之生产者消费者
这个例子有点局限,消费者每次只能等生产者生产了n个Q后消费完这n个。 package com.test;class Q { int n; boolean valueSet = false; //Q的value是不是已经设置过了 synchronized int get() { if(!valueSet) try { wait();...2011-07-24 15:10:20 · 69 阅读 · 0 评论
分享