publicstaticvoidmain(String[]args){
newPermutation('a','d').start();
}
publicPermutation(charinitial,charlast){
this.initial=initial;
this.last=last;
for(charc=this.initial;c<=this.last;c++){
chars.add(c);
}
}
publicvoidstart(){
next(chars,newArrayList
());
}
privatevoidnext(Listunused,Listused){
if(unused.isEmpty()){
System.out.println(used);
}else{
for(inti=0;i Listcur=newArrayList(unused);
ListcurUsed=newArrayList(used);
curUsed.add(cur.remove(i));
next(cur,curUsed);
}
}
}
}
字符函数:
lower转小写selectlower('SQLPLUS')fromdual;-->对纯字符串处理的时候
upper转大写selectupper('sqlplus')fromdual;
initcap首字符大写selectinitcap('tarena')fromdual;
concat连接字符串selectconcat(first_name,last_name)froms_emp;等效于||
substr求子串selectsubstr('tarenasd0603',1,6)fromdual;(取前六个字符)selectsubstr('tarenasd0603',-2)fromdual;(取后两个字符)
length求字符长度
数值函数:
round函数(四舍五入)selectround(45.935,2)fromdual;不带参数时默认为0位小数
trunc函数(截取,不管后面的数字)selecttrunc(45.995,1)fromdual;
selectavg(nvl(commission_pct,0))froms_emp;
distinct去除重复
第一范式:最简单的一种建方式,一张表只有一个主键。
第二范式:表的自连接存在原因,一张表,学生表中也有班级的信息。
第三范式:表连接存在的原因,两张表,其中一张表引用其他一张表。
52、请说出你所知道的线程同步的方法。
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
56、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?