Archive for the ‘J2EE’ Category

JFreeChart核心类库介绍

以下内容包括了如何调整XY轴数值间隔 原文来自:http://hi.baidu.com/baileyfu/blog/item/8e75b212b47fea54f819b808.html


JFreeChart使用方法(代码备忘)

以下文章介绍JFreeChart的使用方法。 文章来源:http://hi.baidu.com/baileyfu/blog/item/8e75b212b47fea54f819b808.html


hibernate事务管理

1. 介绍数据库事务、事务隔离级别、悲观锁、乐观锁等概念。 2.数据库ACID特征: Atomic(原子性):指整个数据库事务是不可分割的工作单元。 Consistency(一致性):指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。 Isolation(隔离性):指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。 Durability(持久性):指的是只要事务成功结束,它对数据库所作的更新就必须永久保存下来。 3.数据库系统支持两种事务模式: 自动提交模式:每个SQL语句都是一个独立的事务,当数据库系统执行完一个SQL语句后,会自动提交事务。 手动提交模式:必须由数据库客户程序显示指定事务开始边界和结束边界。 4.MySQL中数据库表分为3种类型: INNODB、BDB和MyISAM,其中MyISAM不支持数据库事务。MySQL中create table 语句默认为MyISAM类型。 5.并发问题 对于同时运行的多个事务,当这些事务访问数据库中相同的数据时,如果没有采取必要的隔离机制,就会导致各种并发问题,这些并发问题可归纳为以下几类: A.第一类丢失更新:撤销一个事务时,把其他事务已提交的更新数据覆盖。 B.脏读:一个事务读到另一个事务为提交的更新数据。 C.幻读:一个事务读到另一个事务已提交的新插入的数据。 D.不可重复读:一个事务读到另一个事务已提交的更新数据。 E.第二类丢失更新:这是不可重复读中的特例,一个事务覆盖另一个事务已提交的更新数据。 6.数据库系统四种事务隔离级别 A.Serializable(串行化):一个事务在执行过程中完全看不到其他事务对数据库所做的更新。 B.Repeatable Read(可重复读):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,但是不能看到其他其他事务对已有记录的更新。 C.Read Commited(读已提交数据):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,而且能看到其他事务已经提交的对已有记录的更新。 D.Read Uncommitted(读未提交数据):一个事务在执行过程中可以拷打其他事务没有提交的新插入的记录,而且能看到其他事务没有提交的对已有记录的更新。 隔离级别 脏读 不可 重复读 幻象读 第一类丢失更新 第二类丢失更新 READ UNCOMMITED 允许 允许 允许 不允许 允许 READ COMMITTED 不允许 允许 允许 不允许 允许 REPEATABLE READ 不允许 不允许 允许 不允许 [...]


List中的remove使用注意

先来看API是怎样写的。 boolean remove(Object o) 从此列表中移除第一次出现的指定元素(如果存在)(可选操作)。如果列表不包含元素,则不更改列表。更确切地讲,移除满足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引 i 的元素(如果存在这样的元素)。如果此列表已包含指定元素(或者此列表由于调用而发生更改),则返回 true。 可以看到是用o.equals来判断是否删除的,在一般情况下使用都没有问题。但我有一次犯了一个错误。 有一个List<子类> list,我用 list.remve(父类对象);这样很明显是不行的,equals不了,所以就删除不了。 解决方法:1,是remove同一类对象 2,在父类覆盖equals方法,用instanceof来判断是不是子类,然后判断相等。 方法2较为麻烦。还是建议方法1。


选择排序算法(JAVA版)

选择排序和插入排序差不多,交换的次数减少。平均/最好/最坏时间复杂度是O(n2),是不稳定的排序算法。(插入排序是稳定排序算法) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /* * 选择排序:选择最小/大的放在前面,每一趟前几个按序排列 */ int[] selectSort(int[] arr) { for (int i = 0; i < arr.length – 1; i++) { int k = i; //和i后面的每一个比较,如果有比i小的记下下标k for (int j = i + 1; j < arr.length; [...]


快速排序算法(JAVA版)

快速排序是不稳定的排序方法,平均时间复杂度为O(nlogn),空间复杂度为O(logn),最差时是有序或基本有序时,算法退化为冒泡排序,时间复杂度是O(n2) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 /* * 快速排序:选一个值pivokey(一般是第一个),小于pivokey放在左边,大于pivokey放在右边,分成两个序列,递归直到low >= high * 步骤: * 1,设定两个指针low,high。初值是0和数组长度-1,指定关键字pivokey * 2,从high所指的位置向前找,找到一个比pivokey小的,和关键字交换值(arr[low] = arr[high]) * 3,从low所指的位置向后找,找到一个比pivokey大的,和关键字交换值 * 4,直到low>=high,把关键字赋值arr[low]=pivokey [...]