`
文章列表
本文通过分析 Java 动态代理的机制和特点,解读动态代理类的源代码,并且模拟推演了动态代理类的可能实现,向读者阐述了一个完整的 Java 动态代理运作过程,希望能帮助读者加深对 Java 动态代理的理解和应用。 本文的标签: 1, aop, dynamic, java, proxy, 动态代理, 动态代理机制分析及扩展, 动态代理机制分析及扩展,第, 部分 标记本文! 引言 Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程中,开发人员 ...
synchronized(class)很特别,它会让另一个线程在任何需要获取class做为monitor的地方等待.class与this做为不同的监视器可以同时使用,不存在一个线程获取了class,另一个线程就不能获取该class的一切实例.   根据下面的代码自行修改,分别验证下面的几种情况: synchronized(class)synchronized(this)->线程各自获取monitor,不会有等待.synchronized(this)synchronized(this)->如果不同线程监视同一个实例对象,就会等待,如果不同的实例,不会等待.synchronized(class ...
在创建一个bean定义(通常为XML配置文件)时,你可以简单的将其理解为:用以创建由该bean定义所决定的实际对象实例的一张“处方(recipe)”或者模板。就如class一样,根据一张“处方”你可以创建多个对象实例。 你不仅可以 ...
基本的使用方法是:(1) <bean id="propertyConfigurerForAnalysis" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>classpath:/spring/include/dbQuery.properties</value> < ...
原来 jsp页面是这样     var grpname = "超级用户"; var url = "/xx.action?grpname="+grpname;   传到action去是这样处理     String grpname = getRequest().getParameter("grpname");    grpname = new String(grpname.getBytes("iso-8859-1"),"utf-8");   tomcat下完全可以,不过在webl ...
ALTER SESSION SET NLS_SORT=''; 排序影响整个会话 Oracle9i之前,中文是按照二进制编码进行排序的。           在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值             SCHINESE_RADICAL_M   按照部首(第一顺序)、笔划(第二顺序)排序             SCHINESE_STROKE_M   按照笔划(第一顺序)、部首(第二顺序)排序             SCHINESE_PINYIN_M   按照拼音排序 oracle9i中新增了按照拼音、部首、笔画排序功能拼音 SE ...
Spring框架的核心就是控制反转(Inversion of Control)和依赖注入(Dependency Injection),通过这两方面来实现松耦合。 使用IoC,对象是被动的接受依赖类,而不是自己主动的去找。容器在实例化的时候主动将它的依赖类注入给它。可以这样理解:控制反转将类的主动权转移到接口上,依赖注入通过xml配置文件在类实例化时将其依赖类注入。通过下面的实例来逐步的理解: 首先假设有一个需求,类Business需要调用类Dependency的方法f(),按照日常的做法,得到下面的代码://**类Dependency**public class Dependency {pu ...
synchronized原语和ReentrantLock在一般情况下没有什么区别,但是在非常复杂的同步应用中,请考虑使用ReentrantLock,特别是遇到下面2种需求的时候。 1.某个线程在等待一个锁的控制权的这段时间需要中断 2.需要分开处理一些wait-notify,ReentrantLock里面的Condition应用,能够控制notify哪个线程 3.具有公平锁功能,每个到来的线程都将排队等候 下面细细道来…… 先说第一种情况,ReentrantLock的lock机制有2种,忽略中断锁和响应中断锁,这给我们带来了很大的灵活性。比如:如果A、B2个线程去竞争锁,A线程得到了锁,B线程等 ...
在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。本文将对常用的转换方法进行一个总结。常用的方法有Object.toString(),(String)要转换的对象,String.valueOf(Object)等。下面对这些方法一一进行分析。 方法1:采用 Object.toString()方法 请看下面的例子:       Object object = getObject(); System.out.println(object.toString()); 注1 在这种使用方法中,因为java.lang.Object类里已有public方法.toString(), ...
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。  2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。  3. Java中的数据类型有两种。  一种是基本类型(primitive types), 共有8种,即int, shor ...
大概如下: 查询出部门的最低工资的userid 号 表结构: D号 工资 部门 userid salary dept 1 2000 1 2 1000 1 3 500 2 4 1000 2 有一个高人给出了一种答案: SELECT MIN (salary) OVER (PARTITION BY dept ) salary, dept FROM ss 运行后得到: 1000 1 1000 1 500 ...
select 2*3 from dual; --求年薪 select ename,sal, sal*12 from emp; --别名 select ename,sal, sal*12 as "年薪" from emp; select ename,sal, sal*12 "年薪" from emp; --员工一年总收入 select * from emp; select ename,sal, sal*12+comm as "年总收入" from emp; --注意:含有任何null值的数学表达 ...
1.指定了自己的javaEncoding <servlet>         <servlet-name>jsp</servlet-name>         <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>         <init-param>             <param-name>fork</param-name>             <param-value>false</ ...
一直以来都是用javax.mail来写email发送,看了spring的javamail之后才知道javax.mail臃肿繁杂。下面总结一下spring javamail的应用:首先导入使用jar包:activation.jar,commons-logging-1.0.4.jar,mail.jar,spring.jar   1、使用xml配置javamail:在classpath ...
什么是backbone backbone不是脊椎骨,而是帮助开发重量级的javascript应用的框架。 主要提供了3个东西:1、models(模型) 2、collections(集合) 3、views(视图) backbone.js文件本身很小,压缩后只有5.3KB,作为一个框架级别的核心JS文件,这个数字很可怕。 除此之外,这个JS还必须依赖于另一个JS文件:underscore.js(包含许多工具方法,集合操作,js模板等等)。   简介 用Backbone.Model表示应用中所有数据,models中的数据可以创建、校验、销毁和保存到服务端。 当models中值被改变时自 ...
Global site tag (gtag.js) - Google Analytics