Java开发笔记
liuyi1207164339
这个作者很懒,什么都没留下…
展开
-
J2EE学习路线
第一部分JAVA语言基础知识。包括异常、IO流、多线程、集合类、数据库。(切记基础知识一定要时时刻刻巩固,注意,如果你是想以最快速度学习J2EE,关于Java中的Swing知识点,就只做了解) 要求:对java的封装,生命周期等有一定的了解; java基础语法------必须的异常------掌握try-catch-finally的使用 IO流------掌握字节流、字符流和对转载 2015-10-04 11:52:33 · 4218 阅读 · 0 评论 -
Java嵌套类
来自Java编程思想:如果不需要内部类对象与外围类对象之间有联系,那么可以将内部类声明为static。这通常称为嵌套类。要想理解static应用于内部类时的含义,就必须记住,普通的内部类对象隐式地保存了一个引用,指向创建它的外围类对象。然而,当内部类时static的时候,就不是这样了。嵌套类意味着:要创建嵌套类的对象,并不需要其外围对象。不能从嵌套类的对象中访问非静态的外围类对象。原创 2016-03-13 14:48:03 · 606 阅读 · 0 评论 -
String,StringBuffer与StringBuilder的区别及应用场景
转载自:http://www.findspace.name/easycoding/1090String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)深入说明简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对转载 2016-03-13 17:18:43 · 1379 阅读 · 0 评论 -
Java虚拟机学习之走进 Java
来自:http://wiki.jikexueyuan.com/project/java-vm/overwise.html概述Java 不仅仅是一门编程语言,它还是一个由一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器和大型机等各种场合。时至今日,Java 技术体系已经吸引了近千万软转载 2016-03-26 08:25:18 · 1067 阅读 · 0 评论 -
Java虚拟机学习之对象实例化分析
来自:http://blog.csdn.net/java2000_wl/article/details/8015105对象访问会涉及到Java栈、Java堆、方法区这三个内存区域。如下面这句代码:Object objectRef = new Object(); 假设这句代码出现在方法体中,"Object objectRef” 这部分将会反映到Ja转载 2016-03-25 19:21:31 · 866 阅读 · 0 评论 -
Java虚拟机学习之多态性实现机制——静态分派与动态分派
来自:http://wiki.jikexueyuan.com/project/java-vm/polymorphism.html方法解析Class 文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在 Class 文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址。这个特性给 Java 带来了更强大的动态扩展能力,使得可以在类运行期间才能确定某些转载 2016-03-26 09:46:10 · 682 阅读 · 0 评论 -
Java虚拟机学习之 代码编译和执行的整个过程
来自:http://wiki.jikexueyuan.com/project/java-vm/java-debug.htmlJava 代码编译是由 Java 源码编译器来完成,流程图如下所示:Java 字节码的执行是由 JVM 执行引擎来完成,流程图如下所示:Java 代码编译和执行的整个过程包含了以下三个重要的机制:Java 源码编译机制类转载 2016-03-26 08:33:30 · 2178 阅读 · 0 评论 -
Java虚拟机学习之类初始化
来自:http://wiki.jikexueyuan.com/project/java-vm/class-initialization.html类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的 Java 程序代码。虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化:遇到 new、getstatic、putstatic、invokestatic 这四条字转载 2016-03-25 22:52:57 · 413 阅读 · 0 评论 -
Java虚拟机学习之内存区域与内存溢出
来自:http://wiki.jikexueyuan.com/project/java-vm/storage.html内存区域Java 虚拟机在执行 Java 程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java 虚拟机规范将 JVM 所管理的内存分为以下几个运行时数据区:程序计数器、Java 虚拟机栈、本地方法栈、Java 堆、方法区。下面详细阐述各数据区所转载 2016-03-25 20:14:19 · 553 阅读 · 0 评论 -
Java虚拟机学习之加载机制
来自:http://wiki.jikexueyuan.com/project/java-vm/class-loading-mechanism.html类加载过程类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示:其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五转载 2016-03-25 21:25:39 · 428 阅读 · 0 评论 -
Java 语法糖
来自:http://wiki.jikexueyuan.com/project/java-vm/syntactic-sugar.html语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。Java 中最常用的语法糖主要有泛型、变长参数转载 2016-03-26 10:09:49 · 637 阅读 · 0 评论 -
Integer做WeakHashMap的Key应注意的问题
WeakHashMap使用弱引用来作为Map的Key,利用虚拟机的垃圾回收机制能自动释放Map中没有被使用的条目。但是WeakHashMap释放条目是有条件的:首先条目的Key在系统中没有强引用指向;另外,条目的释放是在垃圾回收之后第一次访问这个WeakHashMap时完成的。而当我们想要获取一个Integer对象时,为了利用Integer类本身的缓存,减少堆中Integer对转载 2016-03-23 22:03:58 · 1521 阅读 · 0 评论 -
Integer与int的种种比较你知道多少?
来自:http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为tru转载 2016-03-23 20:06:05 · 3799 阅读 · 0 评论 -
Java有了GC同样会出现内存泄露问题
来自:http://www.importnew.com/16173.html1.静态集合类像HashMap、Vector等的使用最容易出现内存泄露,这些静态变量的生命周期和应用程序一致,所有的对象Object也不能被释放,因为他们也将一直被Vector等应用着。Static Vector v = new Vector(); for (int i = 1; i<10转载 2016-03-18 17:17:51 · 1923 阅读 · 0 评论 -
深入理解Java回收机制
来源:http://www.importnew.com/16173.html一、垃圾回收机制的意义Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止转载 2016-03-18 19:57:24 · 1797 阅读 · 0 评论 -
Java初始化顺序
来自:Java编程思想了解包括继承在内的初始化全过程,以对所发生的一切有个全局的把握,是很有益的。请看下例:package org.easyliu.demo2.inittest;class Insect { private int i = 9; protected int j; Insect() { System.out.println("i = " + i原创 2016-03-20 15:30:38 · 1533 阅读 · 0 评论 -
Java并发编程:生产者消费者模式
生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者向空间里存放数据,而消费者取用数据。下面是代码实现:package com.easyliu.producerconsumer;import java.util.concurrent.LinkedBlockingQueue;public class ProducerConsumer原创 2016-03-19 21:18:10 · 864 阅读 · 0 评论 -
sleep和wait的区别
1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。sleep不出让转载 2016-03-09 22:05:25 · 470 阅读 · 0 评论 -
Java之把String对象作为方法的参数
参考自:http://blog.csdn.net/pony_maggie/article/details/44120045看一段代码:public class StringTest { public void StringPassTest(String s, String[] ss) { s = "abc"; ss[0] = "abc"; } public sta原创 2016-03-13 16:52:23 · 2724 阅读 · 1 评论 -
HashMap和Hashtable的区别
转载自:http://blog.csdn.net/java2000_net/archive/2008/06/05/2512510.aspx 我们先看2个类的定义public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable public转载 2016-03-11 19:09:28 · 342 阅读 · 0 评论 -
ConcurrentHashMap原理分析
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅转载 2016-03-11 19:54:27 · 421 阅读 · 0 评论 -
Vector,ArrayList,LinkedList,SynchronizedList
总体来说,Vector和ArrayList是一致的,实现的接口也是完全一样,内部的存储结构也基本一致【都是数组】,每个方法的实现也几乎相同。区别在于,Vector是线程安全的,每个方法都加了synchronized修饰符,而ArrayList没有。而且Vector是JDK1.0引入的,而ArrayList是JDK1.2引入的。==========================转载 2016-03-11 20:07:35 · 358 阅读 · 0 评论 -
线程安全的单例模式的几种实现方法分享
线程安全的单例模式实现有几种思路,个人认为第2种方案最优雅:饿汉式、借助内部类、普通加锁解决、双重检测,但要注意写法,如果单体模式继续扩展为N元单体模式,那就是对象池模式了。1、饿汉式单例public class Singleton { private final static Singleton INSTANCE = new Singleton(); privat转载 2016-03-11 18:36:01 · 1271 阅读 · 0 评论 -
Java虚拟机学习之G1收集器简介
来自百度百科:G1收集器G1收集器是Java虚拟机的垃圾收集器理论进一步发展的产物,它与前面的CMS收集器相比有两个显著的改进:一是G1收集器是基于“标记-整理”算法实现的收集器,也就是说它不会产生空间碎片,这对于长时间运行的应用系统来说非常重要。二是它可以非常精确地控制停顿,既能让使用者明确指定在一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒,具备了一些实时J转载 2016-04-19 15:37:04 · 751 阅读 · 0 评论