Tuesday, December 23, 2014

简单jsp教程--使用jdbc连接数据库

备注:jdbc是用来连接tomcat和mysql的,需要下载connector

1、首先在MySQL数据库中建立books数据库,再建book表。
然后插入数据。SQL语言如下:

create database books;

use books;
create table book(bookId varchar(50),bookName varchar(50),publisher varchar(100),price float,constraint pk_book primary key(bookId))
         
insert into book values('1001','An inconvenient truth','电子工业出版社',45.00);
insert into book values('1002','The satanic gases','电子工业出版社',49.00);
insert into book values('1003','Global climate change and wildlife','电子工业出版社',59.00);
insert into book values('1004','Environmental resource handbook','电子工业出版社',59.00);
insert into book values('1005','American heritage science dictionary','电子工业出版社',56.00);


2.新建sql.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"%>
<html>
<body>
以下是从MySQL数据库读取的数据:<hr>
<table border=0>
<tr><td>ID</td><td>书名</td><td>出版社</td><td>价格</td></tr>

<%
   Class.forName("com.mysql.jdbc.Driver").newInstance();
   Connection con=java.sql.DriverManager.getConnection("jdbc:mysql://192.168.1.8/books?

useUnicode=true&characterEncoding=GBK","root","1234");
   Statement stmt=con.createStatement();
    ResultSet rst=stmt.executeQuery("select * from book");
    while(rst.next())
    {
        out.println("<tr>");
        out.println("<td>"+rst.getString("bookId")+"</td>");
        out.println("<td>"+rst.getString("bookName")+"</td>");
        out.println("<td>"+rst.getString("publisher")+"</td>");
        out.println("<td>"+rst.getFloat("price")+"</td>");
        out.println("</tr>");
    }
    //关闭连接、释放资源
    rst.close();
    stmt.close();
    con.close();
    %>
</table>
</body>
</html>

we can get

以下是从MySQL数据库读取的数据:

ID书名出版社价格
1001An inconvenient truthBogdonoff & Rubin45.0
1002The satanic gasesRodale49.0
1003Global climate change and wildlifeCato Institute59.0
1004Environmental resource handbookWildlife Society59.0
1005American heritage science dictionaryHoughton Mifflin Book56.0

Sunday, December 21, 2014

快速排序实现

注:此快速排序取第一个值为pivot,把小于pivot的数放到左边,大于的放到右边

public class QuickSort {

public static void main(String[] args) {
int arr[]=new int[50];
for(int i=0;i<arr.length;i++)
arr[i]=(int)(Math.random()*100);
//int arr[]={ 49, 42, 36};
//..int arr[]={8,7,8,8};
//for(int i=0;i<arr.length;i++){
// System.out.print(arr[i]+" ");
//}
System.out.println();
quickSort(arr,0,arr.length-1);
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+", ");
}

}
public static void quickSort(int[] array,int start,int end){
int temp;

if(start>=end){return;}//大于号非常重要,如果没有,会导致index越界
if(start==end-1){        //base condition,两个数的比较,必须有
if(array[start]>array[end]){
temp=array[start];
array[start]=array[end];
array[end]=temp;
return;
}else
return;
}
int pivot=array[start];

int i=start+1;
int j=end;
while(i<j){
while(array[i]<=pivot&i!=end){//注意=很重要,否则无限循环
i++;
if(i==end&array[i]<pivot){
//非常重要,这是极端情况,考虑到如果pivot取的是最大值的情况
array[start]=array[end];
array[end]=pivot;
quickSort(array, start, i-1 );
return;
}
}
while(array[j]>=pivot&j!=start){
j--;
}
temp=array[j];
//i,j交换后需要交换回来,例如8(start),0,3,16(j),5(i),18,12,9    i=4,j=3
array[j]=array[i];
array[i]=temp;

}
temp=array[j];
array[start]=array[i];
array[j]=pivot;
array[i]=temp;
//System.out.println("j="+j+" start="+start);
quickSort(array, start, j-1 );
quickSort(array,j+1,end);

}
}
0, 1, 1, 2, 2, 3, 4, 15, 16, 17, 19, 22, 25, 27, 30, 36, 40, 41, 46, 46, 51, 53, 55, 55, 58, 59, 63, 64, 64, 65, 66, 66, 72, 73, 73, 74, 77, 78, 78, 78, 81, 81, 81, 86, 91, 92, 95, 99, 99, 99,