- 浏览: 256141 次
- 性别:
- 来自: 北京
-
最新评论
文章列表
EJB 中的 call-by-reference
- 博客分类:
- EJB
在项目中看到后台报了这个警告。分析之。
原因是组件接口中的参数为Node类型,而Node不是序列化。
EJB远程调用要求参数必须序列化。但是EJB还可以本地调用,其前提条件就是调用者和被调用着必须在一个JVM中,也就是在一个应 ...
java 的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器, ...
Java虚拟机运行时所管理的内存
- 博客分类:
- java
根据《java虚拟机规范》的规定,Java虚拟机运行时所管理的内存将会包括以下几个运行时数据区域:
1、程序计数器:顾名思义,其作用是作为当前线程所执行的字节码的行号指示器,它是线程私有的。
2、java虚拟机栈:它描述的是Java方法执行的内存模型,每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口等信息,每个方法的执行过程就对应着一个栈帧在虚拟机栈中从出栈到入栈的过程,它也是线程私有的。
3、本地方法栈:其与虚拟机栈类似,其区别在于虚拟机栈为执行JAVA方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的Native方法服务;需要注意 ...
转
JVM运行时数据区的内存模型由五部分组成:
【1】方法区
【2】堆
【3】JAVA栈
【4】PC寄存器
【5】本地方法栈
对于String s = "haha" ,它的虚拟机指令:
0: ldc "16; //String haha
2: astore_1
3: return
对于上面虚拟机指令,其各自的指令流程在《深入JAVA虚 ...
1.使用Hibernate的乐观锁机制时,在配置文件中,<version>标签必须紧跟在<id>之后,示例如下:<id>....<id>
<version>....<version>
2.RTTI与反射机制的区别。
RTTI实际是在java编译的时候进行的。它所依赖的class是已知的,是在当前工程里已经引入的jar。
而反射的意思是编译的时候还不确定是哪个,是什么class。只有在运行过程中才能确定。也就是说,是在实际运行时才载入jar,并且很可能这个jar是从外部得到的。
如: class c=C ...
java编程思想阅读笔记
- 博客分类:
- java
1.类的成员变量都会有默认的初始值。其中基本类型为其默认初始值,如 int 为0,float为0.0等。成员对象的默认之为null。
类中的方法内定义的局部变量都必须设定初始值,否则编译错误。
java中规定,内部类只能访问外部类中的成员变量,不能访问方法中定义的变量,如果要访问方法中的变量,就要把方法中的变量声明为final(常量)的,因为这样可以使变量全局化,就相当于是在外部定义的而不是在方法里定义的
2.在类的内部,变量定义的顺序决定了它的初始化顺序。即使变量定义分布在方法定义之间,他们仍旧会在任何方法(包括构造器)被调用之前得到初始化。P94
3.多态。向上转型与动态绑定。
4 ...
RTTI(run-time type indentfication)应该是所谓“传统的RTTI”。《Thinking in JAVA》上说JAVA的RTTI包括2种方式:传统的RTTI和反射,但感觉反射才是真正的“运行时”检查,而传统的是“静态”类型检查。因为传统的RTTI有3种形式,分别是upcasting and downcasting,literals以及instanceof或isInstance(),这些都是在编译时检查的,也就是要求在编译时,JVM就必须能访问到类的.class文件,我认为这根本不是运行时检查而是编译时检查。而Reflection是在运行时检查.class;比如:Cla ...
几种基本的数字正则表达式[转]
- 博客分类:
- XML
只能输入1个数字
表达式 ^\d$
描述 匹配一个数字
匹配的例子 0,1,2,3
不匹配的例子
只能输入n个数字
表达式 ^\d{n}$ 例如^\d{8}$
描述 匹配8个数字
匹配的例子 12345678,22223334,12344321
不匹配的例子
只能输入至少n个数字
表达式 ^\d{n,}$ 例如^\d{8,}$
描述 匹配最少n个数字
匹配的例子 12345678,123456789,12344321
不匹配的例子
只能输入m到n个数字
表达式 ^\d{ ...
1、配置hibernate:
1.1、配置hibernate的持久类文件中对应的字段为byte[]类型
2.2、配置hibernate的类映射文件中对应的字段type为
org.springframework.orm.hibernate3.support.BlobByteArrayType
2、配置spring:
2.1、配置nativeJdbcExtractor,如下:
<bean id="nativeJdbcExtractor" class="org.springframewo ...
转
Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据。
写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须使用cursor对blob进行操作,因而你在写入Blob之前,必须获得cursor才能进行写入,那么如何获得Blob的cursor呢?
这需要你先插入一个empty的blob,这将创建一个blob的cursor,然后你再把这个empty的blob的cursor用select查询出来,这样通过两步操作,你就获得了blob的cursor,可以真正的写入blob数据了。
看下面的JDBC的de ...
集合和引用就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java 对象放入数组中,只是把对象的引用放入数组中,每个数组元素都是一个引用变量。
.实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算法决定集合元素的存储位置,这样可以保证能快速存、取集合元素;对于 HashMap 而言,系统 key-value 当成一个整体进行处理,系统总是根据 Hash 算法来计算 key-value 的存储位置,这样可以保证能快速存、取 Map 的 key-value 对。
在介绍集合存储之前需要指出一点:虽然集合号 ...
一般大家都知道ArrayList和LinkedList的大致区别:
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references)。例如我们可以用ArrayList来存储一系列的String或者In ...
XMLHttpRequest工作原理
- 博客分类:
- javascript
XMLHttpRequest对象是当今所有AJAX和Web 2.0应用程序的技术基础。尽管软件经销商和开源社团现在都在提供各种AJAX框架以进一步简化XMLHttpRequest对象的使用;但是,我们仍然很有必要理解这个对象的详细工作机制。
一、 引言
...
Thread 学习(1)
- 博客分类:
- java
2、线程都可以设置名字,也可以获取线程的名字,连主线程也不例外。
3、获取当前线程的对象的方法是:Thread.currentThread();
4、在上面的代码中,只能保证:每个线程都将启动,每个线程都将运行直到完成。一系列线程以某种顺序启动并不意味着将按该顺序执行。对于任何一组启动的线程来说,调度程序不能保证其执行次序,持续时间也无法保证。
5、当线程目标run()方法结束时该线程完成。
6、一旦线程启动,它就永远不能再重新启动。只有一个新的线程可以被启动,并且只能一次。一个可运行的线程或死线程可以被重新启动。
7、线程的调度是JVM的一部分,在一个CPU的机器上上,实际 ...
我们知道Spring通过各种DAO模板类降低了开发者使用各种数据持久技术的难度。这些模板类都是线程安全的,也就是说,多个DAO可以复用同一个模板实例而不会发生冲突。
我们使用模板类访问底层数据,根据持久化技术的不同,模板类需要绑定数据连接或会话的资源。但这些资源本身是非线程安全的,也就是说它们不能在同一时刻被多个线程共享。
虽然模板类通过资源池获取数据连接或会话,但资源池本身解决的是数据连接或会话的缓存问题,并非数据连接或会话的线程安全问题。
按照传统经验,如果某个对象是非线程安全的,在多线程环境下,对对象的访问必须采用synchronized进行线程同步。但Spring的DAO模板 ...