Java
文章平均质量分 81
flowciyu
SaaS
展开
-
Class文件结构
大家都知道,Java之所以如此受人喜欢,很大的原因是要规于它的跨平台性。“一次编写,到处运行”,Java诞生之时曾提出的著名的宣传口号,充分表达了软件开发人员对冲破平台界限的渴求。或许大部分程序员都认为Java虚拟机执行Java程序是一件理所当然和天经地义的事,但时至今日,商业机构和开源机构已经在Java语言之外发展出一大批在Java虚拟机之上运行的语言,如Clojure、Groovy、J转载 2013-03-31 10:57:25 · 1056 阅读 · 0 评论 -
图解Arraylist内存分配,以及底层实现,扩容性能分析
图解Arraylist内存分配,以及底层实现,扩容性能分析1:集合内存分配以及初始化过程图解2:源码解读ArrayList内部实现(数组结构)构造ArrayList的时候,默认初始化容量为10,保存容器为 Object[] elementData。向集合添加元素的时候,调用add方法,比如list.add("a");add方法做的操作是:elementData[原创 2013-05-20 23:21:17 · 7249 阅读 · 0 评论 -
透彻理解异常并合理使用异常
对于异常(Exception)的基本使用相信大家已经比较了解了。不了解的童鞋请参见博文:Java异常处理机制其实比较棘手的问题是什么场合用什么异常?checked异常还是runtime异常?是抛出异常还是捕获异常?下面举例来探讨一下这个问题;回顾异常处理机制:异常机制使程序中异常处理代码和正常业务代码分离,也就是把某些异常交给异常处理器去处理,不让JVM直接处理。JMV原创 2013-05-13 11:17:14 · 1435 阅读 · 0 评论 -
图解Java继承内存分配
图解Java继承内存分配继承的基本概念:(1)Java不支持多继承,也就是说子类至多只能有一个父类。(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。(4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员原创 2013-05-04 10:20:41 · 7312 阅读 · 7 评论 -
Java内部类与final关键字详解
详解Java内部类与final关键字内部类的几种创建方法:1、成员内部类class Outer{ private int i = 1; class Inner{ public void fun() {System.out.println("Outer I=" + i)} } } 2、方法内部类class Outer{ public void fu原创 2013-05-10 17:40:44 · 2983 阅读 · 0 评论 -
图解Java多态内存分配以及多态中成员方法的特点
图解Java多态内存分配以及多态中成员方法的特点Person worker = new Worker(); 子类实例对象地址赋值给父类类型引用变量。多态的体现。多态中成员方法的特点分析:【子类有,父类没有】编译失败!!!worker.startWork(); 为什么编译不通过呢?提示:找不到符号。因为引用变量worker是Person类型,在Person原创 2013-05-05 22:34:39 · 4463 阅读 · 6 评论 -
探讨i++跟++i
通常的理解:Java中,提起i++就知道是先赋值后自增,提起++i就知道是先自增后赋值,那么来看下面一段程序:public class Demo{ public static void main(String[] args) { int x = 0; for (int y = 0; y < 5; y++) { x = x++; System.out.println原创 2013-03-19 10:10:02 · 1141 阅读 · 0 评论 -
图解Java单例模式内存分配
图解Java单例模式内存分配1:虚拟机加载StaticDemo类,保存类型信息到方法区。2:通过保存在方法区的字节码,虚拟机开始main方法,main方法入栈。3:进入main方法第一条指令, Person.getInstance(); 首先虚拟机加载Person类到方法区,然后完成对Person类的初始化操作。疑问来了,类变量不是保存在方法原创 2013-05-03 22:52:18 · 2889 阅读 · 0 评论 -
浅谈Java中的数据类型以及面向对象
在汇编语言中,没有类型的划分,只有数据跟指令,当然这也是从程序的角度去理解,对CPU来说,一切都是数据。1:数据类型的概念啥子叫类型?它是抽象的,是对具有相同特征跟行为的对象的描述。万物皆对象,对于大自然中的万物,类型这个概念都是存在的。2:Java中的数据类型那对于数据来说,首先明白数据有大有小,有长有短,那么我们就用不同的类型来描述数据所能表示的大小。这样做有啥好处呢?可以原创 2013-04-14 08:50:50 · 1326 阅读 · 0 评论 -
图解Java对象初始化过程以及方法调用
图解Java对象初始化过程以及方法调用1:虚拟机加载OOPDemo类(省略详细加载过程(装载、链接、初始化)),提取类型信息(具体保存哪些类型信息查看博文:Java虚拟机体系结构),存储到方法区中,对应图中的绿色矩形区域。2:通过保存在方法区的字节码,虚拟机开始执行main方法,main方法入栈。图中箭头1方法压栈。3:进入main方法的第一条指令,ne原创 2013-05-02 12:17:45 · 3650 阅读 · 1 评论 -
带你实现一个简单的MyApacheTomcat,迷你并发服务器
Apache Tomcat,首先要明确他们之间的关系,Apache是web服务器,Tomcat是应用服务器(Servlet容器),可以认为是Apache的扩展,也就是说Servlet由Tomcat进行处理。现在我们要通过Socket技术实现Apache Web服务器的一些功能,比如:------->并发访问(应用线程池)------->处理GET请求------->处理POST请求原创 2013-05-28 17:06:57 · 1591 阅读 · 0 评论 -
HashSet、HashMap,散列表数据结构(哈希表)
HashSet、HashMap,散列表数据结构(哈希表)前几天介绍了ArrayList的底层实现以及对性能的简单分析。今天再来看看HashSet,HashMap。HashSet:很多开发者,初学者都知道HashSet无序,不可重复,线程非同步。底层是哈希表结构。但它是怎么做到的?什么是散列表数据结构(哈希表)?有什么特性?都清楚吗?不清楚继续往下看。它是原创 2013-06-06 14:14:51 · 4509 阅读 · 2 评论 -
Java异常处理机制
异常机制已经成为判断一门编程语言是否成熟的标准,异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。 Java异常机制主要依赖于try、catch、finally、throw、throws五个关键字。 1.try:它里面放置可能引发异常的代码 2.catch:后面对应异常类型和一个代码块转载 2013-05-11 21:07:41 · 1906 阅读 · 0 评论 -
ThreadPoolExecutor线程池的使用与理解
ThreadPoolExecutor线程池的使用与理解线程池的作用就是用尽可能少的线程来执行尽可能多的Runnable,以实现对线程的充分利用。从ThreadPoolExecutor类的构造方法说起:ThreadPoolExecutorpublic ThreadPoolExecutor(int corePoolSize, // 核心线程数原创 2013-05-26 17:44:47 · 3133 阅读 · 2 评论 -
为什么Java中byte类型的取值范围是-128~127
byte 长度是1字节,也就是8位,八位二进制数转换为十进制最大值是多少?是255。如果是unsigned byte 那么取值范围就是 0-255,而Java中的byte是有符号位的,第一位表示正负数,0代表正数,1代表负数。下面引用其它博友的解答并加以分析:博友解答:概念:负数的补码为其原码除符号位外取反然后总体加一步骤:1.确定byte是1个字节原创 2013-03-17 21:47:39 · 3096 阅读 · 0 评论 -
深入解析补码的意义
相信大家看到这个标题都不屑一顾,因为在任何一本计算机基础知识书的第一章都有他们的解释,但是在书上我们只能找到一些简单的定义,没次看过之后不久就忘了。最近论坛里有人问起这些概念,看到很多人的回复是以前看过现在忘了去看看某某书之类,很少有给出一个合理的解释。于是本人就开始思考(虽然上帝会发笑,我还是要思考。),于是得出了以下的结论。 数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是转载 2013-03-17 21:50:23 · 1101 阅读 · 0 评论 -
JVM:Java Virtual Machine,Java虚拟机。
JVM:Java Virtual Machine,Java虚拟机。 作用:由类装载器装载class字节码文件,通过执行引擎执行被装载类中方法中的指令。 生命周期:启动一个Java程序,就会创建一个虚拟机实例,该程序关闭,虚拟机实例随之消亡。 虚拟机实例通过调用某个初始类的main方法来运行一个Java程序原创 2013-03-31 10:37:20 · 1212 阅读 · 0 评论 -
JAVA虚拟机体系结构
JAVA虚拟机的生命周期 一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中。 Java虚拟机实例通过调用某个初始类的main()方法来转载 2013-03-19 09:47:46 · 1651 阅读 · 0 评论 -
Java引用介绍与应用
注:本文作者是阿里巴巴B2B的谢中富;一、前言前阵子在工作中遇到java.lang.Reference这个类,发现很多三方库中都用到这个类,如apache中的httpclient工具等,所以就找了一些资料了解了下。本文主要介绍Java中SoftReference、WeakReference、PhantomReference这三种引用类型的作用以及与GC的关系。之后引用ibm转载 2013-04-18 16:41:18 · 913 阅读 · 0 评论 -
Java抽象类和接口的区别(好长时间没看这种文章了)
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很转载 2013-05-02 06:25:23 · 801 阅读 · 0 评论 -
32种设计模式趣谈
创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应转载 2013-05-02 06:30:19 · 1128 阅读 · 0 评论 -
类和对象的初始化
上一篇博文简要分析了Java程序的执行流程,现在再来深入了解一下类和对象的初始化,下面是转载的博文,人家整理的不错,就拿来主义了,哈哈。类的生命周期:分为装载,链接,初始化 如图:1)装载:查找并装载类型的二进制数据2)连接:执行验证,准备,和解析(可选) a) 验证:确保导入类型正确 b) 准备:为类变量分配内存,并转载 2013-05-02 22:33:27 · 1217 阅读 · 0 评论 -
synchronized与ReentrantLock锁机制对比
多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和 volatile 。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是使它转载 2013-05-16 16:51:11 · 1133 阅读 · 0 评论 -
Java多线程要点分析总结
1:继承Thread类跟实现Runnable接口实现Runnable接口的优点:摆脱单继承的局限可以实现资源共享来看一下Thread类的部分源码:public class Thread implements Runnable { private Runnable target; // What will be run. public Thread(Runnable原创 2013-05-16 16:31:07 · 1282 阅读 · 0 评论 -
Executors工厂类创建线程池的底层实现
上一篇介绍了ThreadPoolExecutor的基本使用,现在再来看看Executors工厂类的基本使用与底层实现方式。三种创建线程池的工厂方法源码:// 无界线程池public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_原创 2013-05-26 21:01:34 · 1980 阅读 · 0 评论