`
xm_king
  • 浏览: 395864 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
Group-logo
Spring技术内幕读书笔...
浏览量:15721
社区版块
存档分类
最新评论
文章列表
在Java方法调用的过程中,JVM是如何知道调用的是哪个类的方法源代码? 这里面到底有什么内幕呢? 这篇文章我们就将揭露JVM方法调用的静态(static binding) 和动态绑定机制(auto binding) 。     ★ 静态绑定机制 Java代码   //被调用的类   package hr.test;   class Father{         public static void f1(){                 System.out.println("Father— f1()");      ...
      在Java中,static和final是使用频率非常高的关键字,之前也简单地用过static和final,但是始终觉得没有从深层次上理解这两个关键字。本文将从class文件和类的初始化机制出发理解这两个关键字。 一、编译时常量:      很多人包括我最开始有这种误解,是不是被final修饰的变量就是编译时常量呢,非也。顾名思义,编译时常量是指变量在编译期间就可以确定了,下面我举两个例子说明一下什么是编译时常量。 public class Test{ public final int a=100; }  看一下,编译之后的class文件:       此时,变量 ...
1、单一职责原则(SRP):      就一个类而言,应该仅有一个引起它变化的原因 。        我们在编程的时候,经常会给一个类添加各种各样的功能,如果一个类承担的职责过多,就相当于把这些职责耦合在了一起,一个职责的变化可能会削弱或者一直这个类完成其他职责的能力,这种耦合会导致脆弱的设计。在SRP中,将 职责 定义为“引起变化的原因”。如果有多于一个的动机改变一个类,这个类就有多于一个职责,这时候就应该考虑类的职责分离。         在设计中为每一种职责设计一个类,SRP是最简单、也是需要考虑最多的原则,实际上,软件设计真正要做的许多内容,就是发现职责并把那 ...
1、 为mysqld增加一个登录用户和组: groupadd mysql useradd -g mysql mysql 2、下载MySQL的源码,mysql-*.*.**.tar.gz,我下载的是mysql-5.0.40.tar.gz 3、检测环境并指定安装目录以及数据库文件存放路径: ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/var 4、编译:make 5、安装:make install 6、拷贝MySQL的配置文件到/etc/my.cnf,/etc/my.cnf是MySQL默认 ...
       本文受http://pt.alibaba-inc.com/wp/dev_related_969/hashmap-result-in-improper-use-cpu-100-of-the-problem-investigated.html 的启发,引用了其中的思想,对此表示感谢。          来到杭州实习有一段日子了,很长时间都没有更新博客了 ...
     线程创建后,可以执行start()方法启动线程,根据线程任务的特性和线程之间的协调性要求,需要对线程进行控制。对线程的控制通常是通过调用Thread对象的方法实现的,主要有sleep()、suspend()、resume()、join()、interrupt()和stop ...
       DataSource 对象所表示的物理数据源的连接。作为 DriverManager 工具的替代项。DataSource能提供最高性能的对数据库的并发访问,数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用。          数据源提供了一种简单获取数据库连接的方式,并能在内部通过一个池的机制来复用数据库连接,这样就大大减少了创建数据库连接的次数,提高了系统性能。下面,我们自己动手实现个精简的数据源,代码如下: public class MyDataSource { private LinkedList<Connec ...
在学习JDBC的时候,通常有两种方式去注册数据库驱动程序(这里采用MySQL数据库),分别为: DriverManager.registerDriver(new Driver()); Class.forName("com.mysql.jdbc.Driver");  那么这两种方式有什么异同呢?首先我们到DriverManager中去看一下, public static synchronized void registerDriver(java.sql.Driver driver) throws SQLException { if (!initi ...
     本文可看成是对Doug Lea Scalable IO in Java 一文的翻译。      当前分布式计算 Web Services盛行天下,这些网络服务的底层都离不开对socket的操作。他们都有一个共同的结构: 1. Read request 2. Decode request 3. Process service 4. Encode reply ...
Spring 的 Bean Bean 是 Spring 装配的组件模型,一切实体类都可以配置成一个 Bean ,进而就可以在任何其他的 Bean 中使用,一个 Bean 也可以不是指定的实体类,这就是抽象 Bean 。 在 Spring 中有两个最基本、最重要的包,即 org.springframework.beans 和 org.springframework.context ,在这两个包中,为了实现无侵入式的框架,代码中大量地使用了 Java 中的反射机制,通过动态调用来避免硬编码,为 Spring 反向控制提供了基础保证,在 ...
近年来,在 JAVA 社区中风起轻量级框架的热潮,“让 J2EE 开发变得简单”,几乎每个月就会有新的轻量级容器出现,这些轻量级容器能够较好地帮助开发者快速地将不同的组件组成一个应用程序,在这些轻量级容器的背后都有一个共同的装配模式,那就是“反向控制”,也就是 IOC ,英文全称是“ Inversion of Control ”。 Spring 的核心是个轻量级 (LightWeight) 的容器 (Container) ,它是实现 IOC(Inversion of Control) 容器和非侵入性 (No intrusive) 的框架, Spring ...
Spring AOP 二代 在 Spring AOP 第一代中, AOP 的 Advice 必须实现特定接口,而配置设置依赖于 XML 的繁琐设置。在 Spring2.0 之后,对于 AOP 功能的实现与设置新增了两种方法:一种是基于 XML Schema 的设置;一种是基于 Annotation 的支持。两种方式对于 AOP 在使用上的简化都有极大地帮助。而且 Advice 不用再实现任何其他特定的接口。 基于XML Schema的前置通知 在这里以实际的例子说明 Spring2.x 在 AOP 的实现和设置上的改变 ...
Spring AOP 一代 在我们详细讨论 Spring AOP 实现的细节之前,我们先给出一个简单的实例为 Spring AOP 的讨论开个头: 我们先编写一个简单输出“ World ”的类,如下所示: public class MessageWriter public void writeMessage(){ System.out.print("world"); } } 这个 MessageWriter 再简单不过了,它只有一个用以打印“ World ”到标准输 ...
引子 在过去的几年里, AOP( 面向方面编程 ) 已成为 Java 领域的热门话题,对 JAVA 开发人员来说,现在已经能够找到许多关于 AOP 的文章、讨论和实现了。 AOP 通常被称为实现横切关注点的工具,这意味着你可以使用 AOP 来将独立的逻辑片段模块化,也就是我们熟知的关注点,并将这些关注点应用于应用程序的多个地方。 AOP 和 OOP 并不相互抵触,它们是可以相辅相成的两个设计模型, Spring AOP 是实现 AOP ...
      Thinking In Java里面的说法(唯一正确的说法): 如果定义一个匿名内部类,并且希望它使用一个在其外部定的对象,那么编译器会要求其参数引用是final 的。 public class Tester { public static void main(String[] args) { ...
Global site tag (gtag.js) - Google Analytics