
java
文章平均质量分 76
edgar_01112
这个作者很懒,什么都没留下…
展开
-
java异常总结
1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。转载 2015-11-03 19:40:45 · 1769 阅读 · 0 评论 -
垃圾收集算法
转自:http://my.oschina.net/winHerson/blog/1143911. 标记 - 清除算法 标记清除算法是最基础的收集算法,其他收集算法都是基于这种思想。标记清除算法分为“标记”和“清除”两个阶段:首先标记出需要回收的对象,标记完成之后统一清除对象。它的主要缺点:①.标记和清除过程效率不高 。②.标记清除之后会产生大量不连续的内存碎片。转载 2016-05-10 15:53:13 · 435 阅读 · 0 评论 -
Java对象的序列化和反序列化 克隆
转自:http://www.cnblogs.com/xdp-gacl/p/3777987.html一、序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。转载 2016-05-10 09:12:03 · 388 阅读 · 0 评论 -
java中的基本数据类型一定存储在栈中吗?
首先说明,"java中的基本数据类型一定存储在栈中的吗?”这句话肯定是错误的。栈:虚拟机栈:执行java方法是分配的内存模型。方法运行分配一个栈帧用于存放局部变量表,操作数栈、动态链接、方法出口等信息。。局部变量表存放了编译期可知的各种基本数据类型、对象引用类型,存放了指向实际对象的地址或者句柄位置 下面让我们一起来分析一下原因: 基本数据类型是放在栈中还是放在堆中,这原创 2016-05-10 10:06:52 · 2575 阅读 · 1 评论 -
对象的访问定位
出处: http://blog.youkuaiyun.com/kai_wei_zhang/article/details/8239537Object obj = new Object();“object obj"这部分的语义将会映射到Java(虚拟机)栈的本地变量表,作为一个reference类型数据出现而"new Object” 这部分的语义将反映到Java堆中,形成转载 2016-05-10 10:14:02 · 361 阅读 · 0 评论 -
JVM之GCRoots
《深入JVM之GCRoots》堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆回收之前,第一件事情就是要确定这些对象哪些还“存活”着,哪些对象已经“死去”(即不可能再被任何途径使用的对象)1.引用计数算法很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器减1;任何时刻计数器都为0的对象就是不可能再原创 2016-05-11 09:01:29 · 9395 阅读 · 0 评论 -
java 工程师 基础知识总结
1 Java基础 1.1 Collection和Map(1)掌握Collection和Map的继承体系。(2)掌握ArrayList、LinkedList、Vector、Stack、PriorityQueue、HashSet、LinkedHashSet、TreeSet、HashMap、LinkedHashMap、TreeMap、WeakHashMap、EnumMap、Tr转载 2016-05-12 14:32:41 · 545 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
Java并发编程:Callable、Future和FutureTask http://www.cnblogs.com/dolphin0520/p/3949310.htmlJava并发编程:Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式转载 2016-05-25 13:13:48 · 343 阅读 · 0 评论 -
java进阶书籍推荐(不包括基础)
个人认为看书有两点好处:能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资料对着书上的代码自己敲的时候方便“看完书之后再次提升自我的最好途径是看一些相关的好博文“,我个人认为这是学习的第二步,因为一本书往往有好几百页,好的博文是自己看书学习之后的一些总结和提炼,对于梳理学习的内容很有好处,当然这里不是说自己的学习方法,就不再扯下去了。转载 2016-05-12 14:51:51 · 19317 阅读 · 4 评论 -
欢迎使用优快云-markdown编辑器
字符串的组合: 给一个字符串,比如ABC, 把所有的组合,即:A, B, C, AB, AC, BC, ABC, 都找出来。 解题思路: 假设我们想在长度为n的字符串中求m个字符的组合。我们先从头扫描字符串的第一个字符。针对第一个字符,我们有两种选择:一是把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符;二是不把这个字符放到组合中去,接下来我们需要在剩下的n-1个字原创 2016-05-06 15:22:01 · 681 阅读 · 0 评论 -
N皇后的问题
N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行、同一列、同一斜线上的皇后都会自动攻击)import org.junit.Test;/** * @author Administrator *递归逐行放置n皇后,可以避开条件 “整个第i行的位置都不能放置” *利用一个数组record来保存已经放置的皇后位置,假设数组为record re原创 2016-05-06 21:49:42 · 808 阅读 · 0 评论 -
java并发编程实战 ThreadLocal
另一篇博文:Hibernet中的ThreadLocal使用 http://www.cnblogs.com/gnivor/p/4440776.html本文参考:http://blog.youkuaiyun.com/lufeng20/article/details/24314381http://www.cnblogs.com/chenying99/articles/3405161.html转载 2016-05-19 15:30:44 · 931 阅读 · 0 评论 -
java并发-ReentrantLock的lock和lockInterruptibly的区别
ReentrantLock的加锁方法Lock()提供了无条件地轮询获取锁的方式,lockInterruptibly()提供了可中断的锁获取方式。这两个方法的区别在哪里呢?通过分析源码可以知道lock方法默认处理了中断请求,一旦监测到中断状态,则中断当前线程;而lockInterruptibly()则直接抛出中断异常,由上层调用者区去处理中断。 1 lock操作转载 2016-05-20 21:50:36 · 475 阅读 · 0 评论 -
java 并发SynchronousQueue
介绍介绍Java 6的并发编程包中的SynchronousQueue是一个没有数据缓冲的BlockingQueue,生产者线程对其的插入操作put必须等待消费者的移除操作take,反过来也一样。不像ArrayBlockingQueue或LinkedListBlockingQueue,SynchronousQueue内部并没有数据缓存空间,你不能调用peek()方法来看队列中是否转载 2016-05-20 22:22:41 · 1563 阅读 · 0 评论 -
多线程之 线程安全与非线程安全
多线程之 线程安全与非线程安全 ArrayList和Vector有什么区别? HashMap和HashTable有什么区别? StringBuilder和StringBuffer有什么区别? 这些都是Java面试中常见的基础问题。面对这样的问题,回答是:ArrayList是非线程安全的,Vector是线程安全的;HashMap是非线程安全的,HashTabl转载 2016-06-25 21:55:28 · 573 阅读 · 0 评论 -
structs2 运行流程分析
相关的API:ActionMapping:Simple class that holds the action mapping information used to invoke a Struts action. The name and namespace are requiredActionMapper:When given an HttpServletRequest, the原创 2016-06-14 19:15:03 · 490 阅读 · 0 评论 -
HashMap的数据结构
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。转载 2016-06-20 11:06:26 · 398 阅读 · 0 评论 -
java并发之队列同步器
、注:仅根据自己的理解整理的零碎知识点(慢慢补充)java中同步锁的实现依赖于内部的队列同步器,通过继承实现队列同步器获取同步状态和释放同步状态的方法。队列同步器内部通过一个int成员变量state来表示同步的状态 占有还是释放(包括共享和独占),当线程获取同步状态失败时当前线程被构造成一个节点加入到同步器的FIFO队列中,同时阻塞当前线程,当同步状态释放时会把首节点的线程唤醒使其再次尝原创 2018-01-13 16:24:02 · 386 阅读 · 0 评论 -
java comparator和comparable
有两种方式可以进行集合排序 :集合中对象的所属类实现了 java.lang.Comparable 接口为集合指定比较器 java.lang.Comparator 的实现类1. java.lang.Comparablepublic interface Comparable 接口强行对实现它的每个类的对象进行整体排序。 -- 自然排序。类的compareTo称为自然比较方法。这转载 2016-02-24 10:33:22 · 358 阅读 · 0 评论 -
java运行内存分配
Java的内存主要包含4块,即heap(堆内存)、stack(栈内存)、datasegment(静态变量或是常量存放区)、codesegment(方法区) 栈:存取速度快,存放一些基本类型的变量或对象的引用变量。主要用来执行程序的。 堆: 存取速度慢,通过New()方法来创建的对象或数组。主要用来存放对象的。 静态常量区:存放的是静态变量(类变量)或是常量转载 2016-01-04 09:10:57 · 1416 阅读 · 1 评论 -
抽象类和接口的区别、为什么用抽象类。
网上再学习了一次,在这里记下看到各位大虾的金言。 一、抽象类: 在面向对象领域,抽象类主要用来进行类型隐藏。那什么是类型隐藏呢?我们可以构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。好比,动物是一个抽象类,人、猴子、老虎就是具体实现的派生类,我们就可以用动物类型来隐藏人、猴子和转载 2016-01-03 14:18:12 · 427 阅读 · 0 评论 -
Java程序员应该了解的10个面向对象设计原则
Java程序员应该了解的10个面向对象设计原则 Java编程最基本的原则就是要追求高内聚和低耦合的解决方案和代码模块设计。查看Apache和Sun的开放源代码能帮助你发现其他Java设计原则在这些代码中的实际运用。面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大转载 2015-10-19 18:29:03 · 342 阅读 · 0 评论 -
JAVA 堆栈 堆 方法区 静态区 final static 内存分配
Java栈与堆堆:顺序随意栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动转载 2015-10-19 18:42:48 · 548 阅读 · 0 评论 -
java ==与 equals
Object类中的equals方法用于检测一个对象是否等于另一个对象。在Object类中,这个方法判断两个对象是否具有相同的引用,如果两个对象具有相同的引用,它们一定是相等的。从这点上看,将其作为默认操作也是合乎情理的。然而,对于多数类类说,这种判断并没有什么意义,例如,采用这种方式比较两个PrintStream是否相等就完全没有意义。然而,经常需要检测两个对象状态的相等性,如果两个对象的转载 2015-10-19 18:53:35 · 296 阅读 · 0 评论 -
从JVM内存管理的角度谈谈静态方法和静态属性 和 java对象引用与JVM自动内存管理
试着从JVM的内存管理原理的角度来谈一下静态方法和静态属性的问题,不对的地方请指正。 (joezheng123.javaeye.com/blog/264695)JVM的内存分为两部分:stack和heap :stack(栈)是JVM的内存指令区。stack管理很简单,push一定长度字节的数据或者指令,stack指针压栈相应的字节位移;pop一定字节长度数据或者指令,sta转载 2015-10-19 19:06:17 · 373 阅读 · 0 评论 -
父类引用指向子类
父类应用指向子类对象指的是:父类Animal,子类 Cat,Dog。其中Animal可以是接口或类,Cat和Dog是继承或实现Animal的子类。Animal animal= new Cat();声明的为父类,实际指向的是子类对象。我们先从内存角度理解。假设Aninal父类,它里面的变量需要占用1M,它的子类Dog和Cat,需要占用0.5M内存。通过代码看内转载 2015-10-20 20:41:07 · 691 阅读 · 0 评论 -
Java对象初始化
这是一道阿里巴巴的关于Java对象初始化的面试题,堪称经典,代码很简单(编写格式做了些修改),但是需要面试者对Java中对象初始化有一个透彻的认识,那么通过这道面试题,对我有点启发,所以希望在这里分享给大家,希望能给迷惘的初学者一起指引,下面我们直入主题,先看看代码:[java] view plaincopyprint?public转载 2015-10-20 22:06:32 · 336 阅读 · 0 评论 -
java中重载与重写的区别
首先我们来讲讲:重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。 (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过转载 2015-10-20 22:21:22 · 432 阅读 · 0 评论 -
java 静态导入 import static
要使用静态成员(方法和变量)我们必须给出提供这个静态成员的类。 使用静态导入可以使被导入类的静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。 静态导入也是JDK5.0引入的新特性,下面以实例来说明静态导入的用法: 比如先在一个包中定义一个这样的类: package com.example.learnjava;pub转载 2015-10-21 10:26:06 · 388 阅读 · 0 评论 -
java向前引用
所谓向前引用,就是在定义类、接口、方法、变量之前使用它们,例如,12345678class MyClass{ voidmethod() { System.out.println(myvar); } String myvar ="var val转载 2015-10-20 22:04:30 · 357 阅读 · 0 评论 -
foreach语句
从Java5起,在Java中有了for-each循环,可以用来循环遍历collection和array。For each循环允许你在无需保持传统for循环中的索引,或在使用iterator /ListIterator时无需调用while循环中的hasNext()方法就能遍历collection。Java中,for-each循环简化了任何Collection或array的遍历过程,但并不是每转载 2015-11-07 10:50:57 · 375 阅读 · 0 评论 -
Java中Comparable和Comparator接口的区别
本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧。Comparable 简介Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口转载 2015-11-14 10:11:02 · 421 阅读 · 0 评论 -
方法综述
接口Interface1. 接口中的成员变量默认都是public、static、final类型的,必须被显式初始化2. 接口中的方法默认都是public、abstract类型的。3. 接口中只能包含public、static、final类型的成员变量和public、abstract类型的成员方法。4. 接口没有构造方法,不能被实例化,在接口中定义构造方法是非法的。5.转载 2015-10-30 09:14:04 · 452 阅读 · 0 评论 -
内部类继承
定义一个内部类时,这个内部类会有一个隐式引用(implicit reference)指向外部类的实例。例如下面的代码:[java] view plaincopyprint?class WithInner { class Inner {} } class WithInner { class Inner {}}其实,内部类Inner转载 2015-10-30 14:08:59 · 325 阅读 · 0 评论 -
java匿名内部类
匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示: new 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它转载 2015-11-24 12:38:37 · 286 阅读 · 0 评论 -
java中按值传递与引用传递
前天在做系统的时候被Java中参数传递问题卡了一下,回头查阅了相关的资料,对参数传递问题有了新的了解和掌握,但是有个问题感觉还是很模糊,就是Java中到底是否只存在值传递,因为在查阅资料时,经常看到有人说Java只有值传递,但有人说既有值传递,也有引用传递,对于两个观点个人觉得应该是站的角度不同而得出两个不同的说法,其实两个说法其中的原理是一样的,只要咱们懂得其中的原理,那么至于叫什么也就无所谓了原创 2015-11-18 14:58:35 · 400 阅读 · 0 评论 -
java 字节流和字符流的区别
java 字节流和字符流的区别 转载转载自:http://blog.youkuaiyun.com/cynhafa/article/details/6882061java 字节流和字符流的区别字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通转载 2015-11-18 16:06:53 · 271 阅读 · 0 评论 -
Java 编译时与运行时
在开发和设计的时候,我们需要考虑编译时,运行时以及构建时这三个概念。理解这几个概念可以更好地帮助你去了解一些基本的原理。下面是初学者晋级中级水平需要知道的一些问题。Q.下面的代码片段中,行A和行B所标识的代码有什么区别呢?public class ConstantFolding { static final int number转载 2016-01-03 09:12:36 · 429 阅读 · 0 评论