- 浏览: 253787 次
- 性别:
- 来自: 上海
最新评论
-
探索者_技术:
不错 讲解的比较详细
Java 执行过程详解 - JVM 生命周期 -
besterzhao:
学习了
关于 sun.misc.Unsafe -
lliiqiang:
属性变量被设定为不可更改的,外界传递的对象复制一份再保存到对象 ...
不可变类(immutable class) -
xunke515:
有启发.感谢
Java System 类详解 - in, out, err -
bo_hai:
你说没错。问题是:怎么样把ClassA中的事务传播到Class ...
Spring 事务在多线程环境下的传播
文章列表
java.lang.System类应该说是JDK提供的一个很好的工具类。这个类设计成final,就是不让你继承。不提供构造函数,就是说不让你实例化。它却给我们提供了很多有用的方法和属性。
System 类提供了标准输入(in),输出(out)和错误(err)流。
...
一般谈到函数的参数传递的时候都会想到值传递和引用传递。看看本文的例子就会很清楚了。
public class MethodParameter {
public static void main(String[] args) {
String str = "Hello";
char[] c = new char[] { 'W', 'o', 'r', 'l', 'd' };
StringBuffer sb = new StringBuffer("Jacky");
changeAddr(str, c, sb);
Sys ...
Dependency Mechanism
Java项目开发中肯定需要大量的jar文件,也就是说你要依赖很多已经开发好的jar包。尤其是你要依赖很多开源的东东。有没有感到很迷糊,经常不知道要用到哪些,干脆全部拿来。多么希望用多少来多少,还不用我 ...
都说maven很好很强大,我就在想为什么呢?今天不妨认识一下她。
maven本身的意思是“专家”,大概是告诉人们我很牛。哈哈。我们先看看这个专家的想法:
Philosophy, 哲学
一提到maven,你准想到ant,老想和这个build元老级工具比一比谁牛。可以maven却不想和ant比肩。他的目标更远大。ant确实是一个很强大的build工具箱,而maven不想成为第二个。他的想法是想基于模式来建立一个基础架构,这个架构具有可视性,可重用性,可维护性,易于理解等特性。
这些“性”似乎是我们开发和项目管理中希望做到有很难做到的。停下来,让大脑想一会,你在项目开发中遇到了什么问题:
每天都在c ...
不可变类,顾名思义就是说类的实例是不可被修改的。实例的信息是在创建的时候提供,并且在整个生命周期中都不可改变。
大家都知道Java的String类是immutable。其实primary的包装类都是immutable的。那么如果让你设计和immutable的class要怎么做呢?
immutable 也就是不变的意思。不可改变的。怎么样让一个类的对象不变呢?
第一你肯定想到,这个类不能被继承,于是class 前面要加 final。这是最直接的办法,也是最简单的办法,但是当你将来想对它扩展的时候就做不到了。也许你想在他的基础上定义一个子类也是immutable的。这时候你可以不再class 前面加 ...
ORM其实有两个方面,一个是静态的mapping,也就是结构化的关系。一个对象与一张或者多张表怎么样对应。
还有一个方面就是动态关系。在应用中创建,查询,修改一些对象的时候,这些变化如何同步到到DB里面去,反过来,
DB的数据如果变了,怎么样反映到应用中的对象中来。换句话说,是内存中的对象是如何与DB里面的数据同步的。
关于如何mapping,使用hibernate的人都应该懂得,只是另一个动态的方面,初学者不重视,也不在意。不过会经常遇到一些问题,
抱怨hibernate复杂。我今天就和大家分享一下我的学习和理解。
首先理解一个概念,持久化上下文(persistence context), ...
新技术的采用,在提高工作效率的同事也往往会给用户带来新的学习负担。一起是非计算机行业的用户,试用软件是,学习成本一般比较高。这也就是我们提高友好性的内在需求之一。
引用
The key principle for maximizing usability is to employ iterative design, which progressively refines the design through evaluation from the early stages of design. The evaluation steps enable the designers and deve ...
异常是一个很普通,但是很难把握和运用的工具。首先看看异常的种类:
The basic philosophy of Java is that "badly formed code will not be run."
基于很多原因,我们的程序中可能会发生一些错误,有可能是外界的输入错误导致的,有可能是程序内部编写错误导致的。好在现在的IDE比如Eclipse能帮我们进行一些关键字,程序格式以及类型错误方面的变异性错误的检查,使我们在编写程序的时候就能及时发现并且纠正我们的编写错误。但是IDE不能发现所有的错误。有些错误是有可能在运行时才会发生的,比如下面一段代码:
publi ...
如何做好本职工作?
我们都有Manager或Leader,有的人(Leader)还有下属(Team Member)。
日常工作总结起来,有一下几个方面:
1. 任务 (Task)
2. 汇报 (Report)
3. 沟通 (Communication)
我们经常会拿到老板给的一个任务。你如何开始这项工 ...
IO可算是jdk的一个很基本的东西了,所以打算整理一下我对IO的学习和理解。
IO,当然就是Input和Output的简写,分别代表了读和写两个方面。
流的引入,使我们可以形象的认为数据就像流水一般在各种是被间流走,而不必理会沟渠是怎么铺设的。我们只要关注怎么控制这些字节或者字符的流动就好了。
InputStream & OutputStream
这两个类代表了字节流的输入和输出。他们是两颗大树的树根,就像一对夫妻一样,下面都有一群子孙。查看附图。
装饰模式 Decorator design pattern
在深入了解这些子类之前,得先了解一下装饰模式,jdk就是采用这种模式来 ...
Cache主要是为了提高系统的性能的。HIbernate由于直接JDBC的一个方面就是因为它的缓冲机制。Hibernate有两级缓存。
第一级缓存就是事务级缓存。很重要也是必须的。这一级缓存的对象是在persistence context中缓存的持久化对象。这级缓存可以保证对应于数据库同一行的对象只有一个实例。因此不存在并发的问题。
第二级缓存是进程级别的缓存。这里缓存的对象为同一个session factory生成的所有persistence context共享。因为是多线程共享,所以存在并发的问题。同一个对象在不同的persistence context里也是不同的copy。基于并发的原因, ...
我准备从performance的角度出发,发掘一个JavaEE系统中的设计问题。第一步就要构建一个目标系统,用来压力测试。
第一步准备考验我的DB功底
平台准备用mysql+jdbc构建一个大数据量DB。测试数据库以及sql的与性能相关的设计。
1. 首先安装mysql server
2. 创建sample db
3. 创建一张新闻表 news
create table news (id bigint not null auto_increment unique primary key, title varchar(512), content longtext, author varch ...
程序是可以被证明是正确的吗?测试算是证明程序的正确性吗?
我认为测试只是可以证明或者验证计算机程序是按照我们的意图和期望工作的。但是我们的意图和期望是不是正确的呢?是不是有矛盾的呢?这个是不是可以用数学的方法加以证明呢?
雷蒙德(译者注: 论文<<大教堂和市
集>>的作者, 著名的黑客社区理论家)的话: "Lisp语言值得学习。当你学会Lisp之后, 你
会拥有深刻的体验。就算你平常并不用Lisp编程, 它也会使你成为更加优秀的程序员"
作为一名 Java™ 程序员,如果您花一点时间研究 Lisp 这座被人遗忘的黄金之城,就会发现许多能够改进编码方式的技术。
基本上,Lisp 是一门关于列表的语言。Lisp 中的一切内容(从数据到组成应用程序的代码)都是列表。每个列表都由一些原子 和列表组成。数字就是原子。
Lisp 提供用于迭代的编码结构,但递归是更受欢迎的列表 ...
快速排序是最常用的一种排序,因为它可以取得比较好的平均性能。快速排序是一种递归算法。采用了分而治之的思想。
它的核心步骤是:
1. 把一个序列分成左右两个部分,要求左边的数都比分界点小或相等,右边的数都比分界点的数大。
2. 对步骤1分出来的左右两个部分同样执行1到2的步骤。
那么如何把一个序列分成两个部分呢?设定两个指针i和j,还要设定一个初始比较值x。可以取序列最后的值为x。i左边的都比x小。j是迭代指针,从序列开头到倒数第二个数开始迭代:
1. 如果j指向的值比x大,j下移一位,i不动
2. 如果j指向的值比x小,把i下移一位,再把i和j指向的值交换。然后j下移一位
3. 最后把最后的值 ...