-----JDBC--------
package com.terac.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DBTest {
public static void main(String[] args) {
try {
String user = "user";
String password = "password";
String driver = "COM.ibm.db2.jdbc.net.DB2Driver";
//"oracle.jdbc.driver.OracleDriver";
//"com.mysql.jdbc.Driver";
//"org.postgresql.Driver";
String url = "jdbc:db2://localhost/a";
//"jdbc:oracle:thin:@localhost:1521:a";
//"jdbc:mysql://localhost/a";
//"jdbc:postgresql://localhost:5740/a";
String sql = "SELECT current timestamp FROM sysibm.sysdummy1";
//"SELECT sysdate FROM dual";
//"SELECT now()";
//"SELECT current_timestamp";
Class.forName(driver).newInstance();
Connection c = DriverManager.getConnection(url, user, password);
Statement stmt = c.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println(rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
------------
Class.forName("com.mysql.jdbc.Driver").newInstance();
con=DriverManager.getConnection("jdbc:mysql://192.168.0.73:3306/chancedb?user=root&password=1&useUnicode=true&characterEncoding=GB2312");
stmt=con.createStatement();
String upd="INSERT INTO Sample_test(employee_id, last_name, first_name, birth, sex, email) VALUES ("+employee_id+",'"+last_name+"','"+first_name+"','"+birth+"','"+sex+"','"+email+"')";
stmt.executeUpdate(upd);
stmt1=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String query="SELECT * FROM Sample_test";
rs=stmt1.executeQuery(query);
rs.last();
new_last_name=rs.getString("last_name");
new_first_name=rs.getString("first_name");
stmt.close();
stmt1.close();
con.close();
}
catch(SQLException sqle)
{
out.println("sqle=" +sqle);
}
finally
{
try{
if(con !=null)
{
con.close();
}
}
catch(SQLException sqle)
{
out.println("sqle="+sqle);
}
}
--------------事務處理------------
try{
conn=DriverManager.getConnection("..."); //連結資料庫
conn.setAutoCommit(false);//禁止自動提交事務
stmt = conn.Create....
String sql1 = "update useraccount set monery=monery-1000 where name='usename'";
String sql2 = "update sysaccount set monery=monery+1000 where name='sysname'";
stmt=conn.createStatement();
stmt.executeUpdate(sql1);
stmt.executeUpdate(sql2);
conn.commit(); //統一提交。
}catch(SQLException e){
conn.rollback(); //倘若其中一項sql操作失敗,就不會執行commit()方法,而是產生相應的sqlexception,此時就可以捕獲 異常程式碼塊中呼叫rollback()方法撤消事務。
e.printStackTrace();
}
finally{
if(stmt!=null){
stmt.close();
}
if(conn!=null){
stmt.close();
}
}
------死鎖例子-----
public class TestDeadLock implements Runnable {
public int flag = 1;
static Object o1 = new Object(), o2 = new Object();
public void run() {
System.out.println("flag=" + flag);
if(flag == 1) {
synchronized(o1) {
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
synchronized(o2) {
System.out.println("1");
}
}
}
if(flag == 0) {
synchronized(o2) {
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
synchronized(o1) {
System.out.println("0");
}
}
}
}
public static void main(String[] args) {
TestDeadLock td1 = new TestDeadLock();
TestDeadLock td2 = new TestDeadLock();
td1.flag = 1;
td2.flag = 0;
Thread t1 = new Thread(td1);
Thread t2 = new Thread(td2);
t1.start();
t2.start();
}
}
--------m2輸出為1000,鎖定的是方法,不是資源
public class TT implements Runnable {
int b = 100;
public synchronized void m1() throws Exception{
b = 1000;
Thread.sleep(5000);
System.out.println("b = " + b);
}
public void m2() {
System.out.println(b);
}
public void run() {
try {
m1();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
TT tt = new TT();
Thread t = new Thread(tt);
t.start();
Thread.sleep(1000);
tt.m2();
}
}
-----以下輸出b=2000(m1輸出);
public class TT implements Runnable {
int b = 100;
public synchronized void m1() throws Exception{
b = 1000;
Thread.sleep(5000);
System.out.println("b = " + b);
}
public void m2() throws Exception {
Thread.sleep(2500);
b = 2000;
}
public void run() {
try {
m1();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
TT tt = new TT();
Thread t = new Thread(tt);
t.start();
tt.m2();
}
}
-----給m2加鎖b=1000(m1輸出),對訪問資源的所有方法都得加鎖。m2必須得到鎖才能執行
可考慮隱式鎖
public class TT implements Runnable {
int b = 100;
public synchronized void m1() throws Exception{
b = 1000;
Thread.sleep(5000);
System.out.println("b = " + b);
}
public synchronized void m2() throws Exception {
Thread.sleep(2500);
b = 2000;
System.out.println(b);//2000
}
public void run() {
try {
m1();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
TT tt = new TT();
Thread t = new Thread(tt);
t.start();
tt.m2();
}
}
--------------生產者消費者問題---------------------
public class ProducerConsumer {
public static void main(String[] args) {
SyncStack ss = new SyncStack();
Producer p = new Producer(ss);
Consumer c = new Consumer(ss);
new Thread(p).start();
new Thread(p).start();
new Thread(p).start();
new Thread(c).start();
}
}
class WoTou {
int id;
WoTou(int id) {
this.id = id;
}
public String toString() {
return "WoTou : " + id;
}
}
class SyncStack {
int index = 0;
WoTou[] arrWT = new WoTou[6];
public synchronized void push(WoTou wt) {
while(index == arrWT.length) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notifyAll();
arrWT[index] = wt;
index ++;
}
public synchronized WoTou pop() {
while(index == 0) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notifyAll();
index--;
return arrWT[index];
}
}
class Producer implements Runnable {
SyncStack ss = null;
Producer(SyncStack ss) {
this.ss = ss;
}
public void run() {
for(int i=0; i<20; i++) {
WoTou wt = new WoTou(i);
ss.push(wt);
System.out.println("生產了:" + wt);
try {
Thread.sleep((int)(Math.random() * 200));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Consumer implements Runnable {
SyncStack ss = null;
Consumer(SyncStack ss) {
this.ss = ss;
}
public void run() {
for(int i=0; i<20; i++) {
WoTou wt = ss.pop();
System.out.println("消費了: " + wt);
try {
Thread.sleep((int)(Math.random() * 1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
----------------IO----------------------
import java.io.*;
public class TestTransForm2 {
public static void main(String args[]) {
InputStreamReader isr =
new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = null;
try {
s = br.readLine();
while(s!=null){
if(s.equalsIgnoreCase("exit")) break;
System.out.println(s.toUpperCase());
s = br.readLine();
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} //阻塞
--------------
import java.io.*;
public class TestDataStream {
public static void main(String[] args) {
ByteArrayOutputStream baos =
new ByteArrayOutputStream();
DataOutputStream dos =
new DataOutputStream(baos);
try {
dos.writeDouble(Math.random());
dos.writeBoolean(true);
ByteArrayInputStream bais =
new ByteArrayInputStream(baos.toByteArray());
System.out.println(bais.available());
DataInputStream dis = new DataInputStream(bais);
System.out.println(dis.readDouble());
System.out.println(dis.readBoolean());
dos.close(); dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
-----------編譯錯誤---------j無法傳進去
class Outer {
public static Object add(int j) {
return new Object() {
private int i = 11;
{
i += j;
System.out.println("i = "+i);
}
};
}
}
------------Socket網路程式設計--------------------
import java.io.*;
import java.net.*;
public class TestSockServer {
public static void main(String[] args) {
InputStream in = null;
OutputStream out = null;
try {
ServerSocket ss = new ServerSocket(5888);
Socket socket = ss.accept();
in = socket.getInputStream();
out = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
DataInputStream dis = new DataInputStream(in);
String s = null;
if((s=dis.readUTF())!=null) {
System.out.println(s);
System.out.println("from: "+socket.getInetAddress());
System.out.println("Port: "+socket.getPort());
}
dos.writeUTF("hi,hello");
dis.close();
dos.close();
socket.close();
} catch (IOException e) {e.printStackTrace();}
}
}
import java.net.*;
import java.io.*;
public class TestSockClient {
public static void main(String[] args) {
InputStream is = null; OutputStream os = null;
try {
Socket socket = new Socket("localhost",5888);
is = socket.getInputStream();
os = socket.getOutputStream();
DataInputStream dis = new DataInputStream(is);
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("hey");
String s = null;
if((s=dis.readUTF())!=null);
System.out.println(s);
dos.close();
dis.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {e.printStackTrace();}
}
}
-----------UDP-----------
import java.net.*;
import java.io.*;
public class TestUDPServer
{
public static void main(String args[]) throws Exception
{
byte buf[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
DatagramSocket ds = new DatagramSocket(5678);
while(true)
{
ds.receive(dp);
ByteArrayInputStream bais = new ByteArrayInputStream(buf);
DataInputStream dis = new DataInputStream(bais);
System.out.println(dis.readLong());
}
}
}
import java.net.*;
import java.io.*;
public class TestUDPClient
{
public static void main(String args[]) throws Exception
{
long n = 10000L;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeLong(n);
byte[] buf = baos.toByteArray();
System.out.println(buf.length);
DatagramPacket dp = new DatagramPacket(buf, buf.length,
new InetSocketAddress("127.0.0.1", 5678));
DatagramSocket ds = new DatagramSocket(9999);
ds.send(dp);
ds.close();
}
}
-------------------
public class ThreadTest {
private int j;
public static void main(String[] args) {
ThreadTest tt = new ThreadTest();
Increment inc = tt.new Increment();
Decement dec = tt.new Decement();
for(int i=0;i<2;i++) {
Thread t = new Thread(inc);
t.start();
t = new Thread(dec);
t.start();
}
}
private synchronized void inc() {
j++;
System.out.println(Thread.currentThread().getName()+"-inc "+j);
}
private synchronized void dec() {
j--;
System.out.println(Thread.currentThread().getName()+"-dec "+j);
}
class Increment implements Runnable {
public void run() {
for(int i = 0;i<100; i++) {
inc();
System.out.println(Thread.currentThread().getName()+"No."+i);
}
}
}
class Decement implements Runnable {
public void run() {
for(int i = 0;i<100; i++) {
dec();
System.out.println(Thread.currentThread().getName()+"No."+i);
}
}
}
}
------------0626列印MARK----
/**
用1、2、2、3、4、5這六個數字,用java寫一個main函式,列印出所有不同的排列,
如:512234、412345等,要求: "4 "不能在第三位, "3 "與 "5 "不能相連.
*/
import java.util.Iterator;
import java.util.TreeSet;
/**
* time 2011/03/18
* @author liuxingyu
*
*/
public class Travel_Graph {
private String[] b = new String[]{"1","2","2","3","4","5"};
private int n = b.length;
private boolean[] visited = new boolean[n];
private int[][] a = new int[n][n];
private String result ="";
private TreeSet<String> TreeSet = new TreeSet<String>();
private void start(){
for(int i = 0 ;i<n;i++){
for(int j=0; j<n ;j++){
if(i==j){
a[i][j]=0;
}else{
a[i][j]=1;
}
}
}
a[3][5]=0;
a[5][3]=0;
for(int i =0;i<n;i++){
this.depthFirstSearch(i);
}
Iterator<String> it = TreeSet.iterator();
while(it.hasNext()){
String string = (String)it.next();
if(string.indexOf("4")!=2){
System.out.println(string);
}
}
}
private void depthFirstSearch(int startIndex) {
visited[startIndex]=true;
result = result+b[startIndex];
if(result.length()==n){
TreeSet.add(result);
}
for(int j=0;j<n;j++){
if(a[startIndex][j]==1&& visited[j]==false){
depthFirstSearch(j);
}else{
continue;
}
}
result = result.substring(0,result.length()-1);
visited[startIndex]= false;
}
public static void main(String[] args) {
new Travel_Graph().start();
}
}