- 浏览: 158076 次
- 性别:
- 来自: 北京
最新评论
-
szxiaoli:
都打不开呀,
240个jQuery实现AJAX插件 -
Corwen:
class要声明为final 不一定需要这个吧
不可变对象,深层次克隆等总结 -
chengqianl:
厉害 形象
大部分领导都是屁眼而已 -
xiangzi21:
m. show engies; --->应该是show ...
Mysql中show的用法 -
fromaust:
可以用inverse="true"来解决这 ...
[转]hibernate n+1问题
文章列表
构造函数中调用其他的方法会产生的问题
- 博客分类:
- java基础
看代码
class Base{
private int val;
//构造函数,调用lookup()方法
Base() {
val = lookup();
}
public int lookup() {
return 5;
}
public int value(){
return val;
}
}
//子类,继承父类,并重写lookup()方法
class ...
前面有篇自己总结的文章,是用final方法标注引用的,引用为final,表名这个引用只能指向这个对象,不能改变,但是对象本身可以变,java没有关键字来帮你实现不可变对象,必须自己写实现方法(thinking in java上面说“读者可以自己想”)。
不可变对象的几个基本原则:
1.class要声明为final
2.所有属性都声明为private访问权限
3.只提供get方法,不提供set方法
4.提供构造方法,并且在构造方法中初始化所有你想初始化的数据
5.类中有组合情况发生时,从get方法得到组合对象之前,先克隆这个对象。
6.组合对象传递给构造函数的时候,也要先克隆一份。
...
想了好久,还是要写个计划,要不也不太好规划09年这1年。
java基础占了很大的比重,什么时候强调基础都不为过,何况自己的基础也不是那么稳固,看了看网上推荐的几本书,读了一本,感觉很不错,把剩下的都买了,准备全部读了,好好巩固自己的基础,thinking虽然已经看过2遍,但是仍未能完全领悟,有时间再抽出时间再看一遍。
Hibernate和Linux完全是为了自己做东西而打的基础,这个想在下半年开始进行,期间可能要做一个企业级应用,会有导出Excel表,估计会有些酬劳。
摄影是兴趣爱好,一定不能放下。
- 2009-01-12 23:16
- 浏览 1111
- 评论(6)
数组的使用可以被证明为是相当快的,这里指的是与ArrayList的比较,但是array不能伸缩,上来就要固定长度,这个是它的局限性,也是它速度快的原因。
ArrayList可以变换长度,会自动帮你扩展,现在想一下,它是怎么扩展的呢?很容易想到,它就是新建一个数组,把现有的东西复制到一个这个更大的数组中去,实现的,这样的效率极其低下。 引用array在某些时候的表现,可能比ArrayList快上10倍---
Peter hagger
有个问题,我事先要是不知道长度呢,我怎么定,可能会想,我估个值,尽可能大,就行了,这样的做法虽然浪费了许多空间,但是引用性能上的收益可能超过 ...
集合的迭代,在多数情况下,咱们想都不想,就会用下面这种
public void iterList(List<Integer> list){
Iterator<Integer> iter = list.iterator();
int total = 0;
while(iter.hasNext())
total+=iter.next();
}
而很少会这样做:
public void getList(List<Integer> list){
int size = list.size();
int to ...
程序中的变量有3种,局部变量,实例变量,类变量,他们在使用时,哪种效率最高呢,看下面的例子
public class StackTest
{
private int intValue;
private static int staticValue;
public static final int times = 1000000000;
public static void main(String[] args)
{
StackTest s = new StackTest();
long start = System.currentTimeM ...
几种拼接字符串的效率问题
- 博客分类:
- java基础
每次拼接字符串的时候用习惯了String,从来没想过用其他的class,最近看了看java性能的一些介绍书籍,很多东西以前都没想到,哎,还是经验太少。
拼接字符串,大致有3个class可以用,他们是String, StringBuffer,StringBuilder, StringBuilder是1.5中来代替StringBuffer的,我用的检验方法很简单,
就是 long start = System.currentTimeMillis();
//code here...
long end = System.currentTimeMillis();
lo ...
只有传值!!
import java.awt.Point;
public class PassByValue
{
public static void main(String[] args)
{
Point p = new Point(0,0);
int i=10;
System.out.println("修改之前是: p="+p+"i="+i);
modifyPoint(p, i);
System.out.println("修改完是: p= ...
C:printf("新年快乐!")
C++:cout<<"新年快乐!"
C#:System.Console.WriteLine("新年快乐!")
Java:System.out.println("新年快乐!")
JScript:alert("新年快乐!")
ASP:Response.Write "新年快乐!"
PHP:echo "新年快乐!"
VB:Msg("新年快乐!")
VBScript:MsgBox "新年快 ...
- 2009-01-01 22:52
- 浏览 900
- 评论(0)
8.spring的MVC框架
以前一直是用spring的mvc开发,但是是别人搭建的,自己也不是很懂,就在那用,也就是程序员最悲哀的事情,会用,不懂原理,一离开人家写的框架,自己就像不会编程似的,现在看了spring这本书,一下就明白了原来前辈们写的spring框架的东西,还是因为自己没去学习的缘故。
我自己的这份总结写的很快,中间很多如acegi安全框架,RMI远程服务,还有企业级应用,这些我暂时都还用不上,所以就没去看。我认为spring最重要的就是装配bean,理解ioc,aop,以及它的MVC(当然你要喜欢这个MVC),总共5-6章知识就够了,现在就来写spring的m ...
事务创建时或者是现有事务可以使用所定义的传播规则 Spring提供几种传播规则供选择
1.传播行为
PROPAGATION_MANDATORY:表示该方法必须运行在一个事务中。如果当前没有事务正在发生,将抛出一个异常。
PROPAGATION_NESTED:表示如果 ...
7.spring中的事务
事务,确实是一个极为抽象的概念,我理解为就是一个连续的东西,保证在其中的行为要么全完成,要么全部回滚,什么都没发生一样。
确保数据和资源永远不会处在一种不一致的状况下。
描述事务的4个概念:原子性,一致性,隔离性,持久性。这个在哪里都有解释,只要自己理解了,就行了。spring的事务就像他对持久化的支持一样,基本上都是委托给第3方了,具体说:就是委托给第3方提供的事务管理器了。事物经常用在关于数据库的操作上,所以spring支持的有jdbc,jdo,jpa,hibernate等,事务管理器可选的非常多,不过他们都是默默的提供事务,只要和sprin ...
6.自动代理aop
自动代理能够让切面的切点定义来决定哪个Bean需要代理,不需要为特定的bean创建代理了。共2种自动代理,spring提供的和aspectJ提供的。
为了使用spring提供的自动代理,要在xml中声明
<!--spring声明的自动代理,它会被自动识别-->
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
这样声明,配置文件就不用声明 audienceP ...
5.实现aop的例子
1.首先先来点预备类,咱定义一个表演的接口,代码如下:
public interface Perform {
void perform();
}
就一个方法,表演节目,然后再定义2个实现类,ShowBoy和ShowGirl
public class ShowBoy implements Perform{
public void perform() {
System.out.println("表演街舞");
}
}
public class ShowGirl im ...
1.我所知道的aop
初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等。一下子让你不知所措,心想着:怪不得很多人都和我说aop多难多难。当我看进去以后,我才发现:它就是一些java基础上的朴实无华的应用,包括ioc,包括许许多多这样的名词,都是万变不离其宗而已。
2.为什么用aop
1就是为了方便,看一个国外很有名的大师说,编程的人都是“懒人”,因为他把自己做的事情都让程序做了。用了aop能让你少写很多代码,这点就够充分了吧
2就是为了更清晰的逻辑,可以让你的业务逻辑去关注自己本身的业务,而不去想一些其他的事情,这些其他的 ...