快速排序
public class Quick{
public void sort (int arry[],int low,int high){
int l=low;
int h=high;
int key=arry[low];
while(l<h){
while(l<h&&arry[h]>=key){
h--;
}
if(l<h){
int temp=arry[h];
arry[h]=arry[l];
arry[l]=temp;
l++;
}
while(l<h&&arry[l]<=key){
l++;
}
if(l<h){
int temp=arry[h];
arry[h]=arry[l];
arry[l]=temp;
h--;
}
}
if (l>low) {
sort(arry,low,l-1);
}
if (h>high) {
sort(arry,l+1,high);
}
}
汉诺塔
class Hanoi{
public void hanoi(int n,char origin,char assist,char destination){
if (n==1) {
move (origin,destination);
}
else{
hanoi(n-1,origin,destination,assist);//初始n-1移动到借用塔
move (origin,destination);//剩下一个移动到目标
hanoi(n-1,assist,origin,destination);//借用塔n-1移动到目标
}
}
private void move (char origin,char destination)
{
System.out.println("Direction:" + origin + "--->" + destination);
}
public static void main(String[] args){
Hanoi hanoi=new Hanoi();
hanoi.hanoi(3,'A','B','C');
}
}
单例模式
class Singleton{
private static volatile Singleton single=null;
public static Singleton getInstance(){
if(single==null){
synchronized (Singleton.class){
if (single==null) {
single=new Singleton();
}
}
}
return single;
}
}
数据库事务
数据库事物的概念
事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。
事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。
四个特征:
原子性:原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性:如果事务执行之前数据库是一个完整的状态,那么事务结束后,无论事务是否执行成功,数据库仍然是一个完整的状态。(数据库的完整状态:当一个数据库中的所有的数据都符合数据库中所定义的所有约束,此时可以称数据库是一个完整的状态。)
隔离型:多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。
持久性:指一个事务一旦被提交,他对数据库的影响是永久性的。
例子:
账户A给账户B转100元,账户A执行减100元操作,账户B因为故障无法执行加100元操作,此时事物失败,操作回滚,账户A减去的100元重新加了回去。