- 博客(45)
- 资源 (1)
- 收藏
- 关注
原创 Java动态绑定机制的内幕(转载)
在Java方法调用的过程中,JVM是如何知道调用的是哪个类的方法源代码? 这里面到底有什么内幕呢? 这篇文章我们就将揭露JVM方法调用的静态(static binding) 和动态绑定机制(auto binding) 。 ★ 静态绑定机制 Java代码 //被调用的类 package hr.test; class Father{ ...
2011-05-19 22:45:01
503
Static和Final的深度理解
在Java中,static和final是使用频率非常高的关键字,之前也简单地用过static和final,但是始终觉得没有从深层次上理解这两个关键字。本文将从class文件和类的初始化机制出发理解这两个关键字。一、编译时常量: 很多人包括我最开始有这种误解,是不是被final修饰的变量就是编译时常量呢,非也。顾名思义,编译时常量是指变量在编译期间就可以确定了,下面我举两...
2011-05-19 10:57:45
206
面向对象设计原则-《敏捷软件开发》笔记
1、单一职责原则(SRP): 就一个类而言,应该仅有一个引起它变化的原因。 我们在编程的时候,经常会给一个类添加各种各样的功能,如果一个类承担的职责过多,就相当于把这些职责耦合在了一起,一个职责的变化可能会削弱或者一直这个类完成其他职责的能力,这种耦合会导致脆弱的设计。在SRP中,将职责定义为“引起变化的原因”。如果有多于一个的动机改变一个类,这...
2011-04-14 19:44:09
189
Linux环境下源码安装MySQL的详细步骤
1、 为mysqld增加一个登录用户和组:groupadd mysqluseradd -g mysql mysql2、下载MySQL的源码,mysql-*.*.**.tar.gz,我下载的是mysql-5.0.40.tar.gz3、检测环境并指定安装目录以及数据库文件存放路径:./configure --prefix=/usr/local/mysql --localstated...
2011-04-12 22:32:36
263
HashMap 死循环的探究
本文受http://pt.alibaba-inc.com/wp/dev_related_969/hashmap-result-in-improper-use-cpu-100-of-the-problem-investigated.html的启发,引用了其中的思想,对此表示感谢。 来到杭州实习有一段日子了,很长时间都没有更新博客了,前几天,闲来无事,...
2011-03-14 21:44:34
262
Java并发编程实践之线程的基本控制
线程创建后,可以执行start()方法启动线程,根据线程任务的特性和线程之间的协调性要求,需要对线程进行控制。对线程的控制通常是通过调用Thread对象的方法实现的,主要有sleep()、suspend()、resume()、join()、interrupt()和stop方法。一般情况下方法的调用会引起线程状态的转变。1、使用Sleep暂停执行 Thread.sleep(...
2011-01-17 16:21:41
120
自己动手写DataSource
DataSource 对象所表示的物理数据源的连接。作为 DriverManager 工具的替代项。DataSource能提供最高性能的对数据库的并发访问,数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用。 数据源提供了一种简单获取数据库连接的方式,并能在内部通过一个池的机制来复用数据库连接,这样就大大减少了创建数据...
2010-11-02 13:09:14
476
DriverManager和Class.forName()的异同
在学习JDBC的时候,通常有两种方式去注册数据库驱动程序(这里采用MySQL数据库),分别为:DriverManager.registerDriver(new Driver());Class.forName("com.mysql.jdbc.Driver"); 那么这两种方式有什么异同呢?首先我们到DriverManager中去看一下, public static sy...
2010-10-30 12:48:53
294
原创 Reactor模式和NIO(转载)
本文可看成是对Doug Lea Scalable IO in Java一文的翻译。 当前分布式计算 Web Services盛行天下,这些网络服务的底层都离不开对socket的操作。他们都有一个共同的结构: 1. Read request 2...
2010-10-20 14:17:49
115
Spring Bean的概念
Spring的BeanBean是Spring装配的组件模型,一切实体类都可以配置成一个Bean,进而就可以在任何其他的Bean中使用,一个Bean也可以不是指定的实体类,这就是抽象Bean。在Spring中有两个最基本、最重要的包,即org.springframework.beans和org.sprin...
2010-10-01 19:36:45
178
Spring IOC 基础
近年来,在JAVA社区中风起轻量级框架的热潮,“让J2EE开发变得简单”,几乎每个月就会有新的轻量级容器出现,这些轻量级容器能够较好地帮助开发者快速地将不同的组件组成一个应用程序,在这些轻量级容器的背后都有一个共同的装配模式,那就是“反向控制”,也就是IOC,英文全称是“Inversion ofControl”。Spring的核心是个轻量级(Li...
2010-10-01 19:28:58
99
Spring AOP 学习笔记-Springle 二代
Spring AOP 二代在Spring AOP第一代中,AOP的Advice必须实现特定接口,而配置设置依赖于XML的繁琐设置。在Spring2.0之后,对于AOP功能的实现与设置新增了两种方法:一种是基于XML Schema的设置;一种是基于Annotation的支持。两种方式对于AOP在使用上的简化都...
2010-09-30 15:30:37
160
Spring AOP 学习笔记-Springle 一代
Spring AOP 一代在我们详细讨论Spring AOP实现的细节之前,我们先给出一个简单的实例为Spring AOP的讨论开个头:我们先编写一个简单输出“World”的类,如下所示:public class MessageWriter public void writeMessage(){ ...
2010-09-30 15:17:08
144
Spring AOP 学习笔记-引子
引子在过去的几年里,AOP(面向方面编程) 已成为Java领域的热门话题,对JAVA开发人员来说,现在已经能够找到许多关于AOP的文章、讨论和实现了。AOP通常被称为实现横切关注点的工具,这意味着你可以使用AOP来将独立的逻辑片段模块化,也就是我们熟知的关注点...
2010-09-30 14:37:29
136
Java的局部内部类以及final类型的参数和变量
Thinking In Java里面的说法(唯一正确的说法): 如果定义一个匿名内部类,并且希望它使用一个在其外部定的对象,那么编译器会要求其参数引用是final 的。 public class Tester { public static void main(String[] args) { A a = new A(); ...
2010-09-27 15:52:47
117
MySQL事务隔离级别详解
SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称...
2010-09-24 23:27:29
1638
JAVA NIO 实例
最近一直在忙着JAVA NIO的知识,花了一下午的时间,总算写出了一个可以运行的程序,废话少说,上代码!import java.io.IOException;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.nio.ByteBuffer;import java....
2010-09-18 03:32:19
246
原创 重载与覆盖区别
重载与覆盖区别 有时候,类的同一种功能有多种实现方式,到底采用那种实现方式,取决于调用者给定的参数。例如 杂技师能训练动物,对于不同的动物有不同的训练方式。 public void train (Dog dog){ //训练小狗站立,排队,做算数 } public void train(Monkey monkey){ //训练猴子骑自行车等 } 再...
2010-09-16 23:40:41
226
原创 JAVA模拟线程池
线程池就像数据库连接池一样,是一个对象池。所有的线程对象都有一个共同的目的,那就是为了提高对象的使用率,从而达到提高程序效率的目的。比如对于Servlet,它被设计为多线程的(如果它是单线程的,你就可以想象,当1000个人同时请求一个页面时,在第一个人获得请求结果之前,其它999个人都在郁闷地等待),如果为每个用户的每一次请求都创建一个新的线程对象来运行的话,系统就会在创建线程和销毁...
2010-09-14 15:28:01
329
原创 爱情和计算机的关系
以下是一位女生发给我的,挺有意思,也挺有道理的,贴出来一起欣赏一下。 有的男人就像Windows,虽然很优秀,但是安全隐患太大。 有的男人就像Linux,他条件很好,然而不是谁都能玩的起。 有的男人就像C#,长得很帅,但是没能力。 有的男人就像C++,他会默默的为你做很多的事情。 有的男人就像JAVA,只需一点付出就会为你到处服务。 有的男人就像JAV...
2010-09-03 20:54:57
353
让自己的生命有意义
看着窗外的天,突然亮了,就像我们的青春,突然就没了…… 不管你是否准备好,有一天一切都会结束。不再有旭日东升,不再有灿烂白昼,不再有一分一秒的光阴。你收藏的一切,不论是弥足珍贵的还是已经忘记的,都将留给别人。你的财富、名望和世俗的权利都将变成细枝末节的事情,不管你拥有的还是亏欠的,都不再重要。你的嫉恨、冤仇、挫败和妒嫉之心终将消失。同样,你的希望、雄心、计划和未竟之事...
2010-08-31 23:32:50
139
原创 HashCode和equals方法深度分析
在往HashSet集合中放数据的时候,由于HashSet底层是用HashMap中的Key属性存储的,所以是不能重复的,那他如何判断其不是重复的元素呢.这个时候他判断有两步. 1.调用元素的hashcode方法,判断两对象的hashCode是否相等,如果不相等,则认为两对象不相等,结束.如果相等,则转入equals方法进行判断. ...
2010-08-31 22:51:47
103
原创 [转]Java编码浅析
Java与Unicode: Java的class文件采用utf8的编码方式,JVM运行时采用utf16。Java的字符串是unicode编码的。总之,Java采用了unicode字符集,使之易于国际化 Java支持哪些字符集: 即Java能识别哪些字符集并对它进行正确地处理? 查看Charset类,最新的JDK支持1...
2010-08-29 16:09:49
99
原创 java final变量(转)
final变量定义: 变量一经初始化就不能指向其它对象。指向的存储地址不可修改,但指向的对象本身是可以修改的。 先说final变量初始化: 很多文章都这么说:其初始化可以在两个地方,一是其定义处,二是在构造函数中,两者只能选其一。胡说八道! final变量可以在任何可以被始化的地方被始化,但只能被初始化一次。一旦被初始化后...
2010-08-26 14:47:56
239
原创 JAVA中方法和变量在继承中的覆盖和隐藏
关键字: java继承 方法覆盖 方法隐藏 我们知道,在JAVA中,子类可以继承父类,如果子类声明的方法与父类有重名的情况怎么办,大伙儿都知道要是重写,但是实际上这又分为两种情况,就是方法和变量在继承时的覆盖和隐藏问题,这些概念性的东西看似无聊,但是在面试或者是SCJP认证题中围绕这些是会经常碰到的,所以这里来讨论下 首先我们来看...
2010-08-24 13:07:21
112
原创 java静态方法能否被重写
JAVA静态方法形式上可以重写,但从本质上来说不是JAVA的重写。因为静态方法只与类相关,不与具体实现相关,声明的是什么类,则引用相应类的静态方法(本来静态无需声明,可以直接引用),看下例子: class Base{ static void a( ){System.out.println("A"); } void b...
2010-08-24 11:52:33
660
原创 StringBuffer可变String不可变的真正原因
String和StringBuffer都是finall类,他们生成的对象在堆中都是不可变的,在他们内部都是靠属性char数组实现的,那为什么StringBuffer可以在对象中追加字符串呢?呵呵,因为String中的char数组是finall的,也就是常量,是不可改变的,而StringBuffer继承自抽象类AbstractStringBuilder,他的内部实...
2010-08-23 19:19:25
459
原创 char、varchar和varchar2的区别
1. CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。 2.CHAR的效率比VARCHAR2的效率稍高。 3.目前V...
2010-08-11 19:17:06
892
WebService基本概念
从表面上来看,Web Service就是一个应用程序,它向外界暴露了一个能够通过Web进行调用的API。这就是说,能够使用编程的方法通过Web调用来实现某个功能的应用程序。从深层次上看,Web Service是一种新的Web应用程序分支,它们是自包含、自描述和模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过web来调用。Web Service是基于网络的、分布式的模块化...
2010-06-22 14:50:45
83
原创 数据库设计准则
引言 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。 设计范式是不是很难懂呢?非也,大学教材上给我们一堆数学公式我们当然看...
2010-06-20 08:35:19
197
原创 ANT笔记(二)
四、 生成一个简单的JAVA项目1. 简介 现在已经清楚了Ant生成文件的格式,并了解了如何定义属性和依赖关系以及如何运行Ant,下面可以开始为一个基本的JAVA项目构建一个生成环境了。这将包括学习用于编译源代码和组合JAR文件的Ant...
2010-06-09 09:01:14
135
原创 ANT笔记(一)
一、 Ant是什么? Apache Ant是一个Java的生成工具。据最初的创始人James Duncan Davidson介绍,这个工具的名称是another neat tool(另一个整洁的工具)的首字母缩写。生成工具在软件开发中用来将源代码和其他输入文...
2010-06-09 08:59:17
136
原创 Java的反射机制和动态代理
运行时信息(RunTime Type Information,RTTI)使得你可以在程序运行时发现和使用类型信息。RTTI主要用来运行时获取向上转型之后的对象到底是什么具体的类型。Class对象 JAVA使用Class对象来执行RTTI。每个类都有一个Class对象,它用来创建这个类的所有对象,反过来说,每个类的所有对象都会关联同一个Class对象(对于数组来说,维数...
2010-06-09 08:29:31
139
JNDI和Java RMI远程调用(二)
利用JNDI定位资源JNDI提供了一套标准的接口来定位资源(用户、网络、机器、对象和服务等),比如可以利用JNDI在局域网上定位一台打印机,也可以用JNDI来定位数据库服务或一个远程Java对象。JNDI在Java EE中使用十分广泛;包括EJB、RMI-IIOP...
2010-06-07 21:22:10
434
原创 查询XML之路--XPath(三)
XPath语法提要学习XPath时应记住下述要领:分布定位,看清上下文。XPath定位分多个步骤进行,每个步骤都有单独的上下文环境。一、 多个定位步骤组合成为一个XML路径由于XML文档是层次型的结构,不像关系型数据库可以根据主键索引一步到位,所以,XPath分步定位元素,每步称为一个“定位步骤(Location step)”。定位步骤主要有两种:串联的定位步骤和并联的定位步...
2010-06-07 15:56:29
186
原创 查询XML之路--XPath(二)
这一节中,我们将继续了解以下XPath的基本概念1、 层次结构在图 1的XPath”/文件系统/目录/目录/文件”中,按照斜杠的划分,可一层一层地递进解读该路径的含义:(1) Xpath表达式最前面的斜杠“/”:表示匹配XML文档的根节点(注意根节点是文档节点,不是根元素,文档节点包含XML声明、DOCTYPE声明、顶层的处理指令、顶层注释和根元素节点),根节点是XML节点树...
2010-06-07 15:54:08
147
原创 查询XML之路--XPath(一)
在查询XML文档的深层次节点时,采用文档对象模型(Document Object Model,DOM)的编程方法需要大量的编码,处理起来颇为不便。一旦改动文档的结构,需要相应改动节点中导航的DOM代码,这类维护工具无疑是枯燥和低效的。为了减轻查询、维护文档代码的工作量,提供一个简洁有效地查询XML文档的途径,万维网联合会 提出了XML路径语言(XML Path Lanager,XPath)规范。...
2010-06-07 15:41:51
205
原创 Java开发者的十大戒律
有许多标准和实践准则可适用于Java开发者,但此处要说的,是每个Java开发者需坚守的基本原则。 一、为代码加注释。虽然每个人都知道这点,但有时却不自觉忘了履行,今天你“忘了”加注释了吗?虽然注释对程序的功能没什么“贡献”,但过一段时间,比如说两星期之后或者更长,回过头来看看自己的代码,说不定已经记不住它是干什么的了。如果这些代码是你个人的,那还算是走运了,不幸的是,当然了,大多数时候都...
2010-06-07 12:04:49
90
JNDI和Java RMI远程调用(一)
对于Java EE开发来说,Java RMI和JNDOI是两个非常重要的特性。RMI提供了远程调用的特性,而JNDI为应用程序提供了命名和目录服务,对于没有开发过大型项目的人来说,这些概念可能很陌生,那么为什么Java EE需要JNDI和RMI呢,这源于企业级开发的需要。分布式结构有...
2010-06-07 11:32:04
1018
Java方法继承、方法重载、方法覆盖小总结
Java方法继承、方法重载、方法覆盖小总结1、方法继承:利用extends关键字一个方法继承另一个方法,而且只能直接继承一个类。 *当Sub类和Base类在同一个包时Sub类继承Base类中的public/protected/默认级别的变量个方法 *在不同包时继承public/protected级别的变量和方法。2、方法重载:如果有...
2010-03-17 14:59:26
86
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人