随笔1
package test;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class MainCalcuate {private static List<Integer> list = new ArrayList<Integer>();//用于存放左边一组数据private static List<Integer> leftList = new ArrayList<Integer>();//用于存放右边一组数据private static List<Integer> rightList = new ArrayList<Integer>();//统计左边集合的和private static int leftValue = 0;//统计右边集合的和private static int rightValue = 0;public static void doMain(int arry[]) {for(int i=0;i<arry.length;i++){list.add(arry[i]); }Collections.shuffle(list);//System.out.println(list);while(list.size()!=0){balance(leftValue,rightValue);}//System.out.println(leftList + "=" + leftValue);//System.out.println(rightList + "=" + rightValue);MyReduce.myJDBCInsert(leftValue, rightValue, leftList.toString() ,rightList.toString());leftValue = 0;rightValue = 0;leftList.removeAll(leftList);rightList.removeAll(rightList);}//核心算法public static void balance(int left,int right){int x = list.remove(0);if(x+left>x+right){rightList.add(x);rightValue = rightValue+x;}else{leftList.add(x);leftValue = leftValue+x;}}}package test;import java.util.Random;public class MainProgram implements Runnable{//假设数值范围为1-10private static final int number = 10;//数组大小private static final int arrayNumber = 10;private static int count = 0;private static final int arry[] = getArry();public void run() {/**数字越大,答案越多,成功率也越高*/while(count!=(arrayNumber*2)){MainCalcuate.doMain(arry);count++;}}public static int[] getArry(){//随机生成1-10之间的十个数int arry[] = new int[arrayNumber];for(int i=0;i<arrayNumber;i++){arry[i] = new Random().nextInt(number)+1;}return arry;}public static void main(String[] args) {Thread t = new Thread(new MainProgram());t.start();}}package test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;public class MyReduce {public static void myJDBCInsert(int left,int right,String leftArry,String rightArry){try{Class.forName("com.mysql.jdbc.Driver");String URL="jdbc:mysql://localhost:3306/test"; String Username="root"; String Password=""; Connection conn=DriverManager.getConnection(URL,Username,Password);String sql = "insert into test(LEFTVALUE,RIGHTVALUE,LEFTARRY,RIGHTARRY) values(?,?,?,?)";PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setInt(1,left);pstmt.setInt(2,right);pstmt.setString(3,leftArry);pstmt.setString(4,rightArry);pstmt.executeUpdate();pstmt.close();conn.close();}catch(Exception e){e.printStackTrace();}}public static void myJDBCAnaly(){try{Class.forName("com.mysql.jdbc.Driver");String URL="jdbc:mysql://localhost:3306/test"; String Username="root"; String Password=""; Connection conn=DriverManager.getConnection(URL,Username,Password);String sql = "SELECT test.LEFTARRY,test.RIGHTARRY " + "FROM test " + "WHERE ABS(test.LEFTVALUE-test.RIGHTVALUE)" + "=(SELECT MIN(ABS(test.LEFTVALUE-test.RIGHTVALUE)) " + "FROM test)";PreparedStatement pstmt = conn.prepareStatement(sql);ResultSet rs = pstmt.executeQuery();while(rs.next()){System.out.print(rs.getString("LEFTARRY")+"=");System.out.println(rs.getString("RIGHTARRY"));}pstmt.close();conn.close();}catch(Exception e){e.printStackTrace();}}public static void deleteDB(boolean flag){if(flag){try{Class.forName("com.mysql.jdbc.Driver");String URL="jdbc:mysql://localhost:3306/test"; String Username="root"; String Password=""; Connection conn=DriverManager.getConnection(URL,Username,Password);String sql = "delete from test";PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.executeUpdate();pstmt.close();conn.close();}catch(Exception e){e.printStackTrace();}}}public static void main(String[] args) {MyReduce.myJDBCAnaly();deleteDB(true);}}/*Navicat MySQL Data TransferSource Server : mysqlSource Server Version : 50610Source Host : localhost:3306Source Database : testTarget Server Type : MYSQLTarget Server Version : 50610File Encoding : 65001Date: 2013-10-24 16:34:51*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `test`-- ----------------------------DROP TABLE IF EXISTS `test`;CREATE TABLE `test` ( `key` int(11) NOT NULL AUTO_INCREMENT, `LEFTVALUE` int(11) NOT NULL, `RIGHTVALUE` int(11) NOT NULL, `LEFTARRY` varchar(255) NOT NULL, `RIGHTARRY` varchar(255) NOT NULL, PRIMARY KEY (`key`)) ENGINE=InnoDB AUTO_INCREMENT=262 DEFAULT CHARSET=latin1;-- ------------------------------ Records of test-- ----------------------------
package test;public class Test {private static int count = 1000;public synchronized static int add(){return count--;}public static void main(String[] args){for(int i=0;i<4;i++){new Thread(){public void run(){while(true){System.out.println(Thread.currentThread()+":"+add());try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}.start();}}}