
Java核心技术
iteye_7465
这个作者很懒,什么都没留下…
展开
-
JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构...
当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构:bootstrap classloaderextension classloadersystem classloaderbootstrap classloader - 引导(也称为原始)类加载器,它负责加载Java的核心类。在Sun的JVM中,在执行java的命令中使用-Xbootcl...原创 2008-07-10 18:06:47 · 172 阅读 · 0 评论 -
线程运行栈信息的获取
线程运行栈信息的获取 一、问题的引入 我们在Java程序中使用日志功能(JDK Log或者Log4J)的时候,会发现Log系统会自动帮我们打印出丰富的信息,格式一般如下: [运行时间] [当前类名] [方法名] INFO: [用户信息] 具体例子如Tomcat启动信息: Jul 9, 2004 11:22:41 AM org.apache.coyote.http11.Http11Protocol ...原创 2011-03-24 17:23:42 · 234 阅读 · 0 评论 -
java序列化——Serializable
类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成byte流,这样日后要用这个对象时候,你就能把这些byte数据恢复出来,并据此重新构建那...原创 2011-03-15 23:17:33 · 141 阅读 · 0 评论 -
Java aio(异步网络IO)初探
按照《Unix网络编程》的划分,IO模型可以分为:阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO,按照POSIX标准来划分只分为两类:同步IO和异步IO。如何区分呢?首先一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作,同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO,因此阻塞IO、非阻塞IO、IO服用、信号驱动IO都是同步IO...原创 2011-03-11 16:34:19 · 528 阅读 · 0 评论 -
JAVA NIO 简介
1. 基本 概念 IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。 所有语言运行时系统提供执行 I/O 较高级别的工具。 (c 的 printf scanf,java 的面向对象封装 ) 2. Java 标准 io 回顾 Java 标准 IO 类库是 io 面向对象的一种抽象。基于本地方...原创 2011-03-11 13:38:37 · 113 阅读 · 0 评论 -
[字节码系列]ObjectWeb ASM构建Method Monitor
在前面的篇章中,我们看到Java Instrutment的强大能力,本篇,我们将介绍如何使用ObjectWeb ASM的字节码增强能力构建Method Monitor 1.什么是ObjectWeb ASM ObjectWeb ASM是轻量级的Java字节码处理框架。它可以动态生成二进制格式的stub类或其他代理类,或者在类被JAVA虚拟机装入内存之前,动态修改...原创 2011-03-08 18:08:47 · 178 阅读 · 0 评论 -
深入了解Java ClassLoader、Bytecode 、ASM、cglib
一、Java ClassLoader 1,什么是ClassLoader 与 C 或 C++ 编写的程序不同,Java 程序并不是一个可执行文件,而是由许多独立的类文件组成,每一个文件对应于一个 Java 类。 此外,这些类文件并非立即全部都装入内存,而是根据程序需要装入内存。ClassLoader 是 JVM 中将类装入内存的那部分。 而且,Java ClassLoader 就是用 Java 语言...原创 2011-03-08 16:35:40 · 101 阅读 · 0 评论 -
深入JVM锁机制
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。 数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CP...原创 2011-09-19 01:00:41 · 160 阅读 · 0 评论 -
WeakHashMap相关
本文将深入地介绍关于引用对象(Reference Objects)的知识。基本上说,引用对象提供了一种对象间接引用所需内存的方式,这些引用对象保存在一个引用对象中(类ReferenceQuene),它监视这些引用对象使得其可以访问。基于这种类型的引用对象,垃圾回收器能够释放内存,而一般的对象引用则可能无法释放。在Java中,有四种类型的对象引用。常用的是直接引用,如: Object obj = n...原创 2009-09-10 11:38:47 · 84 阅读 · 0 评论 -
java 高并发 ReentrantLock -- 可重入的锁
ReentrantLock -- 可重入的锁可重入锁指在同一个线程中,可以重入的锁。当然,当这个线程获得锁后,其他线程将等待这个锁被释放后,才可以获得这个锁。构造器:ReentrantLock(boolean fair): 布尔值用来表示,创建的这个锁是公平的锁,还是自由竞争的锁。所谓公平的锁,是指,各个希望获得所得线程获得锁的顺序是按到达的顺序获得,还是自由竞争获得。通常的使用方...原创 2011-03-30 08:09:32 · 130 阅读 · 0 评论 -
Java对象的强引用、软引用、弱引用和虚引用
在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再把它捡回来使用就不可能了。 但有时候情况并不这么简单,你可能会遇到类似鸡肋一样的物品,食之无味,弃之可惜。这种物...原创 2011-04-01 08:39:05 · 129 阅读 · 0 评论 -
非阻塞算法-ReentrantLock代码剖析之ReentrantLock.lock
ReentrantLock是java.util.concurrent.locks中的一个可重入锁类。在高竞争条件下有更好的性能,且可以中断。深入剖析ReentrantLock的源码有助于我们了解线程调度,锁实现,中断,信号触发等底层机制,实现更好的并发程序。 以下代码出自JDK1.6 先来看ReentrantLock最常用的代码lockJava代码 public void...原创 2011-04-15 13:59:54 · 202 阅读 · 0 评论 -
CyclicBarrier与CountDownLatch、栅栏与计数器
在多线程设计中,我猜常常会遇到线程间相互等待以及某个线程等待1个或多个线程的场景,比如多线程精密计算和大量数据处理,这里写下我自己的体会和理解。 我想应该有很多办法,如果是简单的1:1关系,那么可以wait()和notify()解决,就像一把锁和一把钥匙;如果是1:N关系,这个1就需要关心N的所有状态了,最笨的办法是1可以去查看N当前的状态,轮询询问工作是否做完。而好点的办法...原创 2011-04-15 10:39:30 · 93 阅读 · 0 评论 -
Java KeyStore
简介Java自带的keytool工具是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。 keytool 将密钥和证书储存在一个所谓的密钥仓库(keystore)中。缺省的密钥仓库实现将密钥仓库实现为一个文件。它用口令来保护私钥。Ja...原创 2011-04-13 17:17:29 · 192 阅读 · 0 评论 -
Security Managers and the JavaTM 2 SDK
The original Link : http://download.oracle.com/javase/1.4.2/docs/guide/security/smPortGuide.htmlSecurity Managers and the JavaTM 2 SDKLast Modified: 1 May, 2001 IntroductionThis doc...原创 2011-04-12 13:37:12 · 141 阅读 · 0 评论 -
Something about SecurityManager
The Java Security was made up of ClassLoader, Class file inspection, built-in security and securityManager.The built-in security includes safely type cast, structural memory access, GC, bound check of...原创 2011-04-12 13:33:00 · 106 阅读 · 0 评论 -
Using the Java SecurityManager with Tomcat
Why use a SecurityManager?The Java SecurityManager is what allows a web browser to run an applet in its own sandbox to prevent untrusted code from accessing files on the local system, connecting to ...原创 2011-04-12 13:30:59 · 121 阅读 · 0 评论 -
Java安全管理器(Security Manager)(
转载自: http://blog.sina.com.cn/s/blog_4b00fd1b0100c9ef.html 每个Java应用都可以有自己的安全管理器,它是防范恶意攻击的主要安全卫士。安全管理器通过执行运行阶段检查和访问授权,以实施应用所需的安全策略,从而保护资源免受恶意操作的攻击。实际上,安全管理器根据Java安全策略文件决定将哪组权限授予类。然而,当不可信的类和第...原创 2011-04-11 14:54:00 · 162 阅读 · 0 评论 -
Java对象的强、软、弱和虚引用(1)
本文介绍Java对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。 1.Java对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高...原创 2011-04-01 08:44:22 · 117 阅读 · 0 评论 -
java 正则表达式 非捕获组(特殊构造)Special Constructs(Non-Capturing)
针对Java API文档中的正则表达式关于特殊构造(非捕获组)的说明,例如: 1.(?:X) X, as a non-capturing group 2.(?idmsux-idmsux) Nothing, but turns match flags on - off 3.(?idmsux-idmsux:X) X, as a non-capturing group with the given...原创 2011-06-20 23:15:46 · 133 阅读 · 0 评论 -
Java文件映射[mmap]揭秘
前言相信现在做Java的人没有人不用NIO来进行IO相关的操作了吧。这个新的IO类库[虽然现在已经不新了]为我们带来了基于块的IO处理方式,通过预定义的Buffer,我们可以更高效地完成IO操作。在NIO中,我比较关注的是一个成为mmap的文件映射功能,其特点是可以把文件的一部分或全部映射到内存中,之后我们就可以通过MappedBuffer对内存进行操作,而操作的...原创 2011-06-08 20:10:26 · 182 阅读 · 0 评论 -
native , synchronized
native , synchronized JAVA中native方法@与羊共舞的狼 Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操 作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。 可以将native方法比作Java程序同C程序的接口,其实现步骤: 1、在Java中声明native()方法,然后...原创 2008-07-10 19:36:48 · 144 阅读 · 0 评论 -
Native Method
今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解。一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C...原创 2008-07-10 19:36:15 · 105 阅读 · 0 评论 -
Java对象池技术的原理及其实现
public class ObjectPool { private ParameterObject paraObj;//该对象池的属性参数对象 private Class clsType;//该对象池中所存放对象的类型 private int currentNum = 0; //该对象池当前已创建的对象数目 private Object currentObj;//该对象池当前可以借出的对象 pri...原创 2008-07-10 19:26:59 · 100 阅读 · 0 评论 -
Java的多进程运行模式分析
一般我们在java中运行其它类中的方法时,无论是静态调用,还是动态调用,都是在当前的进程中执行的,也就是说,只有一个java虚拟机实例在运行。而有的时候,我们需要通过java代码启动多个java子进程。这样做虽然占用了一些系统资源,但会使程序更加稳定,因为新启动的程序是在不同的虚拟机进程中运行的,如果有一个进程发生异常,并不影响其它的子进程。 在Java中我们可以使用两种方法来实现这种要求。最简...原创 2008-07-10 19:26:24 · 84 阅读 · 0 评论 -
线程的同步
五、线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。 由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是 synchronized 关键字,它包括两种用法:synchronized 方法和...原创 2008-07-10 19:25:58 · 118 阅读 · 0 评论 -
线程模型
所以,我们需要一个确定数量的线程在JVM中运行,这样就需要了解“线程池”(ThreadPool)的概念。线程池在多线程程序设计中是比不可少的,而且初学者不太容易掌握,下面通过对线程池的介绍,结合第3和第4个程序,引出两种常用的线程池模型。 第一种实现线程池的方法是:创建一个”池“,在”池“中增加要处理的数据对象,然后创建一定数量的线程,这些线程对”池“中的对象进行处理。当”池“是空的时候,每...原创 2008-07-10 19:23:47 · 106 阅读 · 0 评论 -
java.util下的Timer,TimerTask和quartz的比较
java.util下的Timer,TimerTask和quartz的比较2007-02-12 16:49 Java 中已经有一个 timer 类可以用来进行执行计划,定时任务。我们所要做的只是继承 java.util.TimerTask 类。如下所示: package com.yourcompany.scheduling; import java.util.Cale...原创 2008-07-10 18:28:07 · 132 阅读 · 0 评论 -
Timer,TimerTask简单讲解
Edition 1J2SE 1.3 里有一项新的改进,那就是提供了一个可以更简单的实现多任务调度执行的定时器类,调度由一个后台线程完成。 MIDP 同样也包含了这一改进,使得 J2ME 开发人员从中受益。J2ME 提示了两个类用来定义和调试任务, 他们分别是 TimerTask 和 Timer。TimerTask 是用户定义的需要被调度的所有任务的抽象基类。Timer 类在任务执行的时候负责创建...原创 2008-07-10 18:22:44 · 132 阅读 · 0 评论 -
经典:Java及相关字符集编码问题研究
1. 概述本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等。在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687"。注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示"。2. 编码基本知识最早的编码是...原创 2008-07-10 19:40:42 · 82 阅读 · 0 评论 -
Java48个关键字速查表
Java语言一共使用了48个保留关键字,他们主要可以分为如下几类。 +访问控制 private 私有, protected 保护, public 共享. +类、方法和变量修饰符 abstract 摘要, class 类, extends 扩允, final 结局, implements 工具, interface 接口, native 本地, new 新, static 静态, ...原创 2008-07-10 19:42:36 · 145 阅读 · 0 评论 -
原创 java的Mmap二三事
转自 :http://blog.youkuaiyun.com/kabini/archive/2009/04/07/4053750.aspx 先说些题外话,Java的内存管理一直是让人又爱又恨玩意。学生时代写Java程序主要考虑的只是实现算法、完成功能,偶尔碰到OutofMemory也是递归搞成死循环。什么垃圾回收、内存管理统统交给JVM去烦恼。上班之后再用J...原创 2011-06-08 19:46:02 · 434 阅读 · 0 评论 -
构建一个更好的 HashMap
转自:http://www.ibm.com/developerworks/cn/java/j-jtp08223/Java 理论与实践: 构建一个更好的 HashMapConcurrentHashMap 如何在不损失线程安全的同时提供更高的并发性 <noscript></noscript><n...原创 2009-06-12 11:00:56 · 90 阅读 · 0 评论 -
Java SE 6 新特性: JMX 与系统管理
2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马)。跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不错的提升。与 Tiger 在 API 库方面的大幅度加强相比,虽然 Mustang 在 API 库方面的新特性显得不太多,但是也提供了许多实用和方便的功能:在脚本,WebServ...原创 2009-05-21 14:53:11 · 86 阅读 · 0 评论 -
JMX架构的了解
JMX应该说是关于网络应用管理的的框架,如果你开发了一个比较复杂的系统,无疑你要提供这个系统的自身管理 系统,JMX更多应用是体现在Server上,如果你要使用java开发一个自己Server或复杂的应用系统,那么推荐你基于JMX架构来开发, JBoss 3.0 weblogic等就是基于JMX开发的符合J2EE规范的服务器软件。 了解JMX可以使你深入了解J2EE服务器, 为什么我们平时说 ...原创 2009-05-21 12:50:42 · 86 阅读 · 0 评论 -
JNDI全攻略之(二)
关键字:JNDI,J2EE,Java,命名和目录接口,Java Naming and Directory Interface摘要:本文详细介绍了JNDI的目录相关内容,并以DNS Service Provider为例进行了示例代码的演示.本文为系列文章的第二篇,JNDI的基础内容请见本系列的第一篇总述:目录(Directory)可看作是对命名(Naming)的一个扩充,一个目录对象不仅...原创 2009-05-07 14:10:08 · 139 阅读 · 0 评论 -
JNDI全攻略之(一)
关键字:JNDI,J2EE,Java,命名和目录接口,Java Naming and Directory Interface摘要:本文详细介绍了JNDI的架构与实现,JNDI的工作原理,并给出了具体代码,帮助读者更理解J2EE主要常用技术---JNDI.本文为系列文章的第一篇,其它相关文章会在近期推出。 名词解释 jndi是Java 命名和目录接口(Jav...原创 2009-05-07 14:07:43 · 172 阅读 · 0 评论 -
面向方面编程的Annotation简介
Annotation概述 首先让我们给出这两项技术的一个概述。Annotation是JDK5.0的新功能,它在JSR-175规范中有详细定义。它们允许您以安全的方法定义元数据并应用到类,方法,构造程序,字段或参数中。对于你们中熟悉XDoclet的人来说,Annotation将非常直观,您可以用来声明标签以产生代码。两者的主要不同是Annotation是Java语言的一部分而XDoclet标...原创 2008-10-08 11:17:28 · 126 阅读 · 0 评论 -
JAVA String.format 方法使用介绍
转载自:http://blog.youkuaiyun.com/andycpp/archive/2007/08/18/1749700.aspx 在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是...原创 2008-07-12 17:03:59 · 80 阅读 · 0 评论 -
java 安全沙箱模型详解
起到第一道安全保障作用的”双亲委派类加载模型”双亲委派方式的类加载,指的是优先从顶层启动类加载器开始,自顶向下的方式加载类的模型(参见第一条类装载器体系结构)。这种模型的好处是,底层的类装载器装载的类无法与顶层类装载器装载的类相互调用。哪怕是同包下的类,只要他们不属于同一类装载器,都是相互隔绝的。这对一些有安全隐患的类起到了安全隔离的作用。使它不能冒充系统类来破坏程序正常运作。此外,不...原创 2011-04-18 16:29:18 · 96 阅读 · 0 评论