???1.? 打印乘法口决表: Public static void main(String []args){ for(int i=1;i<10;i++)??{???????????????????? ?递归遍历某个目录sinosoft下的所有java文件? ?? public static void lisFile(String str){ 2. 给出一个JDBC操作的例子,指出不完善的地方,那个例子就不说了,下面列出一个常见的: ?public static void main(String args[]){ Connection con=null ; PreparedStatement psmt = null ; 3.SQL?也不难的,给了两个表,然后对两个表进行查询。问了主键,外键,索引有什么作用?? 外键的作用:最根本的就是 参照完整性约束,表间数据的完整性 ?? 衍生出来的作用就是?? 在参照完整性的原则下来表达多对一的关系。 索引的作用:第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。? ??? 4.还有 以Struts框架为例,向别人介绍MVC模式 Struts采用jsp作为MVC的视图,由ActionServlet具体指定的action动作类作为 控制器即MVC中的C,负责视图与模型之间的交互。控制器的每个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请 求映射为特定的JAVA类以进行相应的处理,控制器还指定下一个视图的位置。Struts中的模型主要指的就是javabean,它是模型的代表,主要封 装数据和业务逻辑。 control就是写的那些action/actionform,用来控制view和model之间的联系,获取参数,跳转页面。。。 5.都熟悉哪些应用服务器?我只知道 JBoss,Weblogic,Websphere,Oracle Application Server,Sun Application Server .? 1.???? Oracle表连接方式有哪些?请举例说明其中一种方式 嵌套循环连接,?排序合并连接,哈希连接,群集连接,笛卡尔连接 嵌套循环连接的内部处理的流程:1) Oracle 优化器根据基于规则RBO或基于成本CBO的原则,选择两个表中的一个作为驱动表,并指定其为外部表。2) Oracle 优化器再将另外一个表指定为内部表。3) Oracle从外部表中读取第一行,然后和内部表中的数据逐一进行对比,所有匹配的记录放在结果集中。4) Oracle读取外部表中的第二行,再和内部表中的数据逐一进行对比,所有匹配的记录添加到结果集中。5) 重复上述步骤,直到外部表中的所有纪录全部处理完。6) 最后产生满足要求的结果集。通过查询SQL语句的执行计划可以看出哪个表是外部表,哪个为内部表。如 select a.user_name,b.dev_nofrom user_info a, dev_info bwhere a.user_id = b.user_id;上面的表是外部表,即驱动表 2.???? sql语句中的exists和in有区别吗?语句优化有哪些方式? EXISTS:后面可以是整句的查询语句如:SELECT * FROM titles? 优化方法:(1)选择最有效率的表名顺序(只在基于规则的优化器中有效):(2)WHERE子句中的连接顺序:?(3)SELECT子句中避免使用‘*’: (4)减少访问数据库的次数:(6)使用DECODE函数来减少处理时间(7)整合简单,无关联的数据库访问:8)删除重复记录:?(9)用TRUNCATE替代DELETE:?。。。 3.???? 简述Spring事务管理方法,写出一种配置方式 Spring提供的编程式的事务处理 4.???? 用Java实现一个快速排序 public class QuickSort public class QuickSort { ?/** ??if (i < right) { ?/** } 5.???? 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人岁数,他说比第2个人大2岁。问第2个人岁数,他说比第1个人大2岁。最后问第一个人,他说是10岁。请问第五个人多大?(Java递归排序) ? ? 6.???? 给出abcdef用程序输出它们的全排列 package completeArray; 7.????? /*** 8.????? *??@author wanggang 9.????? *??@version 2008.9.4 10.? * */ 11.? public class Test {
??? for(int j=1;j<=i;j++){
???? System.out.print(j+"X"+i+"="+j*i +"\t") ;
???? if(i=j) System.out.println("\n");
???? }
????}
?}
??????? File file = new File(str);
??????? if(file.isDirectory()) {
??????????? File[] files = file.listFiles();
??????????? for(int i = 0; i < files.length; i++) {???????????????
??????????????? String filename = files[i].getName();
??????????????? if(filename.trim().toLowerCase().endsWith(".java")) {
??????????????????? System.out.print("files:? "+files[i].getName()+"\t") ;
??????????????? }
??????????????????? if(files[i].isDirectory()){
??????????????????????? String nn=files[i].getPath() ;
??????????????????????? lisFile(nn) ;
??????????????????? }?????????????
??????????? }
???????????
??????? }
??? }??????
??????? String url = "jdbc:microsoft:sqlserver://localhost:1433;database=NorthWind" ;
??????? String _uname = "dbtest" ;
??????? String _pwd = "889988" ;
???????
??????? try{
??????????? Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver") ;
??????????? System.out.println( "类实例化成功!" );
??????????? con = DriverManager.getConnection(url,_uname,_pwd) ;
???????????? psmt = con.prepareStatement("insert into test values(?,?)") ;
??????????? psmt.setString(1, "Jiang hua") ;
??????????? psmt.setString(2, "kyle@163.com") ;
??????????? psmt.executeUpdate() ;
??????????? psmt.setString(1, "Xu Fen") ;
??????????? psmt.setString(2, "su3@163.com") ;
??????????? psmt.executeUpdate() ;
??????? }catch(Exception fnot){
????????? fnot.printStackTrace() ;?
??????? }finally{
??????????? try{
??????????? psmt.close() ;
??????????? con.close() ;
??????????? }catch(Exception e){
??????????????? e.printStackTrace() ;
??????????? }
??????????? }
??? }??主键的作用:1)保证实体的完整性;
2)加快数据库的操作速度
3) 在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
第二,可以大大加快?数据的检索速度,这也是创建索引的最主要的原因。?
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。?
第四,在使用分组和排序?子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。?
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。?m:model? v:view c:control?
struts中的JSP页面是实现视图层的(view),这里不用多说,struts其实就是用来跳转这些页面,提起/输出JSP页面的参数。。
JavaBean类,也就是那个什么纯get/set方法的那个类是业务层的,就是上面所说的model,模型层;
下面的表是内部表
IN:后面只能是对单列:SELECT pub_id FROM titles?
Spring提供了几个关于事务处理的类:?
·TransactionDefinition //事务属性定义
·TranscationStatus //代表了当前的事务,可以提交,回滚。
·PlatformTransactionManager这个是spring提供的用于治理事务的基础接口,其下有一个实现的抽象类AbstractPlatformTransactionManager,我们使用的事务治理类例如DataSourceTransactionManager等都是这个类的子类。?
我们使用编程式的事务治理流程可能如下
1 声明数据源
2 声明一个事务治理类,例如DataSourceTransactionManager,HibernateTransactionManger,JTATransactionManager等
3 在我们的代码中加入事务处理代码:
TransactionDefinition td = new TransactionDefinition();
TransactionStatus ts = transactionManager.getTransaction(td);
try
{
//do sth
transactionManager.commit(ts);
}
catch(Exception e){transactionManager.rollback(ts);}
使用spring提供的事务模板TransactionTemplate
void add()
{
transactionTemplate.execute( new TransactionCallback(){
pulic Object doInTransaction(TransactionStatus ts)
{ //do sth}
}
}
TransactionTemplate也是为我们省去了部分事务提交、回滚代码;定义事务模板时,需注入事务治理对象.
Spring声明式事务处理
Spring声明式事务处理也主要使用了ioc,aop思想,提供了TransactionInterceptor拦截器和常用的代理类TransactionProxyFactoryBean,可以直接对组件进行事务代理。
使用TransactionInterceptor步骤
1.定义数据源,事务治理类
2.定义事务拦截器,sUCh as:
<bean id = "transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager"><ref bean="transactionManager"/></property>
<property name="transactionAttributeSource">
<value>
com.test.UserManager.*r=PROPAGATION_REQUIRED
</value>
</property>
</bean>
3.为组件声明一个代理类:ProxyFactoryBean
{
????public void qsort(int []a,int low,int high)
????{
????????if(low<=high)
????????{
????????????int i=low;
????????????int j=high+1;
????????????int mid=a[low];
????????????while(true)
????????????{
????????????????while(i+1<a.length&&a[++i]<mid);
????????????????while(j>0&&a[--j]>mid);
????????????????if(i>=j)break;
????????????????swap(a,i,j);
????????????}
????????????a[low]=a[j];
????????????a[j]=mid;
????????????qsort(a,low,j-1);
????????????qsort(a,j+1,high);
????????}
????}
????public void swap(int[]t,int a,int b)
????{
????????int temp=t[a];
????????t[a]=t[b];
????????t[b]=temp;
????????}
????public QuickSort()
????{
????????int[] t={2,3,5,1,4,6};
????????for(int i=0;i<t.length;i++)
????????System.out.println(t[i]);
????????qsort(t,0,t.length-1);
????????System.out.println("after sort");
????????for(int i=0;i<t.length;i++)
????????System.out.println(t[i]);
????}
????public static void main(String[]args)
????{
????????new QuickSort();
????}
}
? * 快速排序
? *?
? * @param strDate
? * @param left
? * @param right
? */
?public void quickSort(String[] strDate, int left, int right) {
??String middle;
??String tempDate;
??int i, j;
??i = left;
??j = right;
??middle = strDate[(i + j) / 2];
??do {
???while (strDate[i].compareTo(middle) < 0 && i < right)
????i++; // 找出左边比中间值大的数
???while (strDate[j].compareTo(middle) > 0 && j > left)
????j--; // 找出右边比中间值小的数
???if (i <= j) { // 将左边大的数和右边小的数进行替换
????tempDate = strDate[i];
????strDate[i] = strDate[j];
????strDate[j] = tempDate;
????i++;
????j--;
???}
??} while (i <= j); // 当两者交错时停止
???quickSort(strDate, i, right);
??}
??if (j > left) {
???quickSort(strDate, left, j);
??}
?}
? * @param args
? */
?public static void main(String[] args) {
??String[] strVoid = new String[] { "11", "66", "22", "0", "55", "22",
????"0", "32" };
??QuickSort sort = new QuickSort();
??sort.quickSort(strVoid, 0, strVoid.length - 1);
??for (int i = 0; i < strVoid.length; i++) {
???System.out.println(strVoid[i] + " ");
??}
?}
}public class test {
private int f(int age){
? for(int num=2;num<=5;num++)
? return?? f(age+2);
}
public static void main(String args[]){
? System.out.print(new test().f(5));
}
}