java
Cabinathor
这个作者很懒,什么都没留下…
展开
-
Java锁机制
内置锁 Java提供了一种内置的锁机制来支持原子性:同步代码块(synchronized 关键字 ),同步代码块包含两部分:一个作为锁的对象的引用,一个作为由这个锁保护的代码块。synchronized { //代码块} 每个Java对象都可以用做一个实现同步的锁,这些锁被秒为内置锁(Intrinsic Lock)或监视锁(Monitor原创 2015-09-02 13:26:54 · 528 阅读 · 0 评论 -
final - finally - finalize
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。一般,当一个类设计完美或者不需要被继承才用于修饰类,或者一个工具类也可以被申明为final。一个类为final,意味着其内部的方法都是final的。将方法声明为final,则方法在子类中不能被重写,表示这个方法很重原创 2015-09-10 14:11:08 · 361 阅读 · 0 评论 -
JVM 垃圾收集算法
跟踪收集器跟踪收集器采用的为集中式的管理方式,全局记录对象之间的引用状态,执行时从一些列GC Roots的对象做为起点,从这些节点向下开始进行搜索所有的引用链,当一个对象到GC Roots 没有任何引用链时,则证明此对象是不可用的。下图中,对象Object6、Object7、Object8虽然互相引用,但他们的GC Roots是不可到达的,所以它们将会被判定为是可回收的对象。转载 2015-07-26 16:31:47 · 318 阅读 · 0 评论 -
Hibernate-继承映射
一、继承映射 继承是面向对象很重要的特性,它实现了代码的服用,在关系模型中同样也有继承关系,这种继承关系其实可以看做是一种枚举关系,一种类型中可以枚举出很多子类型,这些子类型和父对象形成了继承关系,能够对其进行枚举的大部分都可以看做是一种继承映射,所以这种枚举关系可以看做是继承映射,例如动物就是一种抽象类,它是其它动物猪、猫等的父类,它们之间就是一种继承关系,如下图转载 2015-09-05 15:55:52 · 356 阅读 · 0 评论 -
ThreadLocal 总结
基本概念Java中,多线程并发控制有多种方式,一种是实用synchronized关键字,互斥访问关键代码;另一种是实用CAS思路,进行乐观的并发。关于并发控制,下文会提到。synchronized是采用加锁的办法控制并发;CAS是先假设可以并发,当发现数据脏读的时候,回滚执行,比如AtomicInteger。这里提供了一种新的思路hreadLocal。ThreadLocal为每个使用该变量原创 2015-08-14 15:21:00 · 370 阅读 · 0 评论 -
Java 异常处理机制
1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。转载 2015-08-04 21:04:46 · 403 阅读 · 0 评论 -
Java 反射机制原理
了解一下Java的反射机制。反射的概念反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提 出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中 LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。最近,原创 2015-08-03 21:22:43 · 772 阅读 · 0 评论 -
java框架集合
转自:http://www.cnblogs.com/im/archive/2008/09/09/1287905.html常见JAVA框架 Spring Framework 【Java开源JEE框架】Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spri转载 2015-08-30 20:59:12 · 502 阅读 · 0 评论 -
Hession
原文点这里。Hession是什么 Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能,实现面向对象的消息通信,相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,适合于发送二进制数据。 一般的RMI是一组用户开发分布式应用程序的API,其远程调用和返回值采用java自身的序列化机制,通过Java远程方法协议(转载 2015-08-29 17:30:15 · 1495 阅读 · 0 评论 -
RMI * Hessian * Burlap * Httpinvoker * WebService
综述本文比较RMI、Hessian、Burlap、Httpinvoker、WebService5这种通讯协议的在不同的数据结构和不同数据量时的传输性能。RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础; 但它只能用于JAVA程序之间的通讯。Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口; 协议的规范公开,可以用转载 2015-08-29 17:06:29 · 479 阅读 · 0 评论 -
Servlet
Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求。尽管Servlet可以响应任意类型的请求,但是它们使用最广泛的是响应web方面的请求。 Servlet必须部署在Java servlet容器才能使用。虽然很多开发者都使用Java Server Pages(JSP)和Java Server Faces(JSF)等Servlet框架,但是这些技术都转载 2015-08-30 20:52:05 · 337 阅读 · 0 评论 -
CAS 与 JAVA
CAS无锁编程 / lock-free / 非阻塞同步无锁编程,即不使用锁的情况下实现多线程之间的变量同步,所以也叫非阻塞同步(Non-blocking Synchronization),这样线程就没有阻塞了。实现非阻塞同步的方案称为无锁编程算法( Non-blocking algorithm)。Lock实现的线程同步的问题使用lock实现线程同步有很多缺点:* 产原创 2015-08-14 17:26:56 · 374 阅读 · 0 评论 -
java中volatile关键字的剖析
原文来自博客园:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.htmlvoli转载 2014-05-03 10:51:16 · 519 阅读 · 0 评论 -
Hibernate 基础知识
整体流程 1:通过configuration来读cfg.xml文件 2:得到SessionFactory 工厂 3:通过SessionFactory 工厂来创建Session实例 4:通过Session打开事务 5:通过session的api操作数据库 6:事务提交 7:关闭连接 为什么要用: 1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁原创 2015-08-12 13:49:10 · 327 阅读 · 0 评论 -
hibernate-缓存说明
本文整理了网上关于Hibernate二级缓存的几篇文章。一般来讲ORM中的缓存分为以下几类事务级缓存 在当前事务范围内的数据缓存.就Hibernate来讲,事务级缓存是基于Session的生命周期实现的,每个Session内部会存在一个数据缓存,它随着 Session的创建而存在,随着Session的销毁而灭亡,因此也称为Session Level Cache.应用级缓存原创 2015-08-13 10:45:14 · 326 阅读 · 0 评论 -
Java和C++的区别
JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继承,多态)。而由于C++为了照顾大量的C语言使用者, 而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。 Java转载 2015-08-21 19:40:33 · 253 阅读 · 0 评论 -
Map线程安全
在Java类库中出现的第一个关联的集合类是Hashtable,它是JDK 1.0的一部分。Hashtable提供了一种易于使用的、线程安全的、关联的map功能,这当然也是方便的。然而,线程安全性是凭代价换来的——Hashtable的所有方法都是同步的。 此时,无竞争的同步会导致可观的性能代价。Hashtable的后继者HashMap是作为JDK1.2中的集合框架的一部分出现的,它通过提供一转载 2015-09-06 14:16:48 · 882 阅读 · 0 评论 -
Java 多线程总结
简单的多线程一般简单的多线程主要是继承Thread或者实现Runnable接口,具体如下。直接继承Thread类 直接继承Thread类并且覆盖重写run方法,然后new出此类使用start方法启动线程如下:public class MyThread extends Thread { @Override public void run() {原创 2015-08-14 11:01:13 · 481 阅读 · 0 评论 -
Java之Object.WAIT()
Java中,Object自身实现了如下方法:Java中,每个对象都有wait和notify成员函数,他们是Java的native方法。本文将对这两个方法的使用进行描述。先看例子:public class Cabinathor { static String local = "local"; static boolean letT1 = false; static Thre原创 2015-09-03 10:50:02 · 4632 阅读 · 1 评论 -
Java输入输出流
1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 Java.io是大多数面向数据流的输入/输出类的主要软件包。转载 2015-10-12 16:28:40 · 425 阅读 · 0 评论 -
Java 序列化详解
1、java序列化简介序列化就是指对象通过写出描述自己状态的数值来记录自己的过程,即将对象表示成一系列有序字节,java提供了将对象写入流和从流中恢复对象的方法。对象能包含其它的对象,而其它的对象又可以包含另外的对象。JAVA序列化能够自动的处理嵌套的对象。对于一个对象的简单域,writeObject()直接将其值写入流中。当遇到一个对象域时,writeObject()被再次调用,如果这个转载 2015-08-04 15:42:54 · 464 阅读 · 0 评论 -
ASM-java字节码控制框架
首先,介绍ASM:随着 AOP(Aspect Oriented Programming)的发展,代码动态生成已然成为 Java 世界中不可或缺的一环。本文将介绍一种小巧轻便的 Java 字节码操控框架 ASM,它能方便地生成和改造 Java 代码。著名的框架,如 Hibernate 和 Spring 在底层都用到了 ASM。比起传统的 Java 字节码操控框架,BC转载 2015-10-12 10:23:44 · 1129 阅读 · 0 评论 -
ASM实践
ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息后,能够改变类行为原创 2015-10-12 10:31:21 · 793 阅读 · 0 评论 -
java 类加载机制
本文针对Java ClassLoader的机制做一个简要的总结。因为不同的JVM的实现不同,本文所描述的内容均只限于Hotspot Jvm.本文将会从JDK默认的提供的ClassLoader,双亲委托模型,如何自定义ClassLoader以及Java中打破双亲委托机制的场景四个方面入手去讨论和总结一下。JDK默认ClassLoaderJDK 默认提供了如下几种Class原创 2015-08-03 21:58:05 · 548 阅读 · 0 评论 -
Java8 特性
Lambda表达式Lambda表达式的优点就是十分简洁,原来5行代码现在一行可以实现,而且可读性强。下面是官方文档Lambda Quick Start的一个例子:public class RunnableTest { /** * @param args */ public static void main(String[] args)转载 2015-10-22 19:25:29 · 514 阅读 · 0 评论 -
Java反射实践
先看下面简单的例子,对反射有些映像。class:import java.lang.reflect.Constructor; /** * 这个例子中,无参构造函数是私有的,但反射可以调用,说明了反射打破了类的访问性。 * 另一方面,newInstance方法反射依赖无参构造函数,如果沒有无参构造函数,就不能使用这个方法。 * 但仍然可以获取所有构造函数后调用,不过奇怪的是,这种原创 2015-10-06 21:37:34 · 456 阅读 · 0 评论 -
Java 创建对象方法
Java创建对象的方法有多种,常见基本如下:1、用new语句创建对象,这是最常见的创建对象的方法。2、通过工厂方法返回对象,如:String str = String.valueOf(23); 3、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。 Object原创 2015-08-04 13:28:55 · 677 阅读 · 0 评论 -
java的一些原则
1.可变性最小不可变类指其实例在创建的时候,各个域被赋值,而整个生命周期,域的值不可改变或不会改变。不可变类有很多优点:主要是对象简单,因为每个实例只有一种状态;最主要的优点是不可变类是线程安全的,不需要同步。但缺点是不可变类对于没一种状态,必须单独维护一个对象,尤其大对象或者很多对象需要创建的场景,不可变类表就有些“重”了。对于不可变类,要求:1.不提供mutator,即setter方法原创 2015-10-02 15:58:59 · 584 阅读 · 0 评论 -
juc.Executor实现原理
一、数据结构与线程构造方法ThreadPoolExecutor线程池的数据结构:1.线程池需要支持多个线程并发执行,因此有一个线程集合Collection来执行线程;2.涉及任务的异步执行,因此需要有一个集合来缓存任务队列Collection;3.在多个线程之间协调多个任务,那么就需要一个线程安全的任务集合,同时还需要支持阻塞、超时操作,那么BlockingQueue是必不转载 2015-10-19 21:04:31 · 924 阅读 · 0 评论 -
JAVA 有点儿冷
简单的一些不怎么用的java知识总结。1.Double类型java浮点数分3类,正无穷大(Double.POSITIVE_INFINITY),负无穷大(Double.NEGATIVE_INFINITY)和非数字(Double.NaN)。判断用Double.is*** 静态方法。2. UTF-16java中,用UTF-16编码字符。对于我们常用的所谓的基本的多语言级别的代码,原创 2014-12-13 22:14:02 · 764 阅读 · 0 评论 -
URI in java
java.net.URIRepresentsa Uniform Resource Identifier (URI) reference. Asidefrom some minor deviations noted below, an instance of this class represents aURI reference as defined byRFC 2396:Unifor原创 2015-09-14 14:36:51 · 717 阅读 · 0 评论 -
JVM垃圾回收及调优总结
原文地址:http://my.oschina.net/shootercn/blog/15393一、相关概念基本回收算法引用计数(Reference Counting)比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep)此算法执转载 2015-09-06 11:14:44 · 479 阅读 · 0 评论 -
StringTokenizer
StringTokenizer是一个用来分隔String的应用类,即split。1.构造函数public StringTokenizer(String str)public StringTokenizer(String str, String delim)public StringTokenizer(String str, String delim, boolean returnD转载 2015-08-26 13:34:21 · 351 阅读 · 0 评论 -
HashMap和ArrayList如何扩容
Java中最长用的是HashMap和ArrayList两种集合,这里介绍他们是如何扩容的。HashMap初始化1.直接初始化/** * Constructs an empty HashMap with the default initial capacity * (16) and the default load factor (0.75). */原创 2015-08-25 16:50:57 · 5872 阅读 · 0 评论 -
反编译器 java
http://bbs.csdn.net/topics/390263414转载 2014-09-13 11:34:56 · 460 阅读 · 0 评论 -
JPA注解简介
@Entity 作用:设置一个类为实体类原创 2014-11-24 16:10:45 · 722 阅读 · 0 评论 -
RandomAccessFile 和 FileChannel【memory-mapped files】
From : http://blog.csdn.net/akon_vm/article/details/7429245RandomAccessFileRandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。但是该类仅限于操作文件。Rando转载 2014-10-10 10:42:30 · 856 阅读 · 0 评论 -
Extjs多表单合并提交【含文件,含数组】
Ext中将多个表单he原创 2014-08-18 13:57:10 · 1443 阅读 · 1 评论 -
HTTP 状态代码及其定义
from : http://www.cnblogs.com/kunhony/archive/2006/06/16/427305.html所有 HTTP 状态代码及其定义。 代码 指示 2xx 成功 200 正常;请求已完成。 201 正常;紧接 POST 命令。 202 正常;已接受用于处理,但处理尚未完成。 203 正常;部分信息 — 返回的信转载 2014-09-29 15:13:29 · 402 阅读 · 0 评论 -
Java synchronized详解
from: http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html第一篇:使用synchronized在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题。在Java中内置了语言级的同步原语--synchronized,这也大大简化了Java中多线程同步的使用。我们首先编写一个转载 2014-09-28 10:44:46 · 371 阅读 · 0 评论