<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    march alex's blog
    hello,I am march alex
    posts - 52,comments - 7,trackbacks - 0
    Client端:

    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.Scanner;

    public class ChatClient {
        
    private static final String SERVER_IP = "127.0.0.1";
        
    private static final int SERVER_PORT = 8888;
        
        Socket socket 
    = null;
        DataOutputStream dos 
    = null;
        DataInputStream dis 
    = null;
        
    private boolean bConnected = false;

        
    private static Scanner in = new Scanner(System.in);
        
    private static String hostInfo = null;

        Thread tRecv 
    = new Thread(new RecvThread());

        
    public static void main(String[] args) {
            
    new ChatClient().launch();
        }

        
    public void launch() {
            connect();
            tRecv.start();
        }

        
    public void connect() {
            
    try {
                socket 
    = new Socket(SERVER_IP, SERVER_PORT);
                dos 
    = new DataOutputStream(socket.getOutputStream());
                dis 
    = new DataInputStream(socket.getInputStream());
                bConnected 
    = true;

                InetAddress addr 
    = InetAddress.getLocalHost();
                String ip 
    = addr.getHostAddress().toString();// 獲得本機IP
                String address = addr.getHostName().toString();// 獲得本機名稱
                hostInfo = ip + "\t" + address + "\tconnected.";
                System.out.println(hostInfo);
                dos.writeUTF(hostInfo);
                dos.flush();
            } 
    catch (UnknownHostException e) {
                e.printStackTrace();
            } 
    catch (IOException e) {
                e.printStackTrace();
            }
        }

        
    public void disconnect() throws IOException {
            
    try {
                dos.close();
                dis.close();
                socket.close();
            } 
    catch (IOException e) {
            }
        }

        
    private class RecvThread implements Runnable {
            
    public void run() {
                
    while (bConnected) {
                    
    try {
                        
    if (in.hasNext()) {
                            String talk 
    = in.nextLine();
                            
    if (talk.equals("quit")) {
                                disconnect();
                                bConnected 
    = false;
                                
    break;
                            }
                            dos.writeUTF(talk);
                            dos.flush();
                        }
                        String talk 
    = dis.readUTF();
                        System.out.println(talk);
                    } 
    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    server端:
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.EOFException;
    import java.io.IOException;
    import java.net.BindException;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.ArrayList;
    import java.util.List;

    public class ChatServer {
        
    boolean started = false;
        ServerSocket ss 
    = null;
        
        List
    <Client> clients = new ArrayList<Client>();
        
        
    public static void main(String[] args) {
            
    new ChatServer().start();
        }
        
        
    public void start() {
            
    try {
                ss 
    = new ServerSocket(8888);
                started 
    = true;
            } 
    catch (BindException e) {
                System.err.println(
    "port in use.please stop program using this port and restart.");
                System.exit(
    0);
            } 
    catch (IOException e) {
                e.printStackTrace();
            }
            
            
    try {
                
    while(started) {
                    Socket s 
    = ss.accept();
                    Client c 
    = new Client(s);
                    
    // System.out.println("a client connected.");
                    new Thread(c).start();
                    clients.add(c);
                }
            } 
    catch (IOException e) {
                e.printStackTrace();
            } 
    finally {
                
    try {
                    ss.close();
                } 
    catch (IOException e) {
                    e.printStackTrace();
                }
            }
            
        }
        
        
    class Client implements Runnable {
            
    private Socket s;
            
    private DataInputStream dis = null;
            
    private DataOutputStream dos = null;
            
    private boolean bConnected = false;
            
            
    public Client(Socket s) {
                
    this.s = s;
                
    try {
                    dis 
    = new DataInputStream(s.getInputStream());
                    dos 
    = new DataOutputStream(s.getOutputStream());
                    bConnected 
    = true;
                } 
    catch (IOException e) {
                    e.printStackTrace();
                }
            }
            
            
    public void send(String str) {
                
    try {
                    dos.writeUTF(str);
                    dos.flush();
                } 
    catch (IOException e) {
                    clients.remove(
    this);
                    System.out.println(
    "a client quit.");
                    
    //e.printStackTrace();
                }
            }
            
            
    public void run() {
                
    try {
                    
    while(bConnected) {
                        String str 
    = dis.readUTF();
                        solveTalk(str);
                    }    
                } 
    catch (EOFException e) {
                    System.out.println(
    "Client closed!");
                } 
    catch (IOException e) {
                    e.printStackTrace();
                } 
    finally {
                    
    try {
                        
    if(dis != null) dis.close();
                        
    if(dos != null) dos.close();
                        
    if(s != null) {
                            s.close();
                            s 
    = null;
                        }
                    } 
    catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }
            }
            
            
    private void solveTalk(String talk) {
                System.out.println(talk);
                
    for(int i=0;i<clients.size();i++) {
                    Client c 
    = clients.get(i);
                    c.send(talk);
                }
            }
        }
        
    }
    posted @ 2015-08-18 10:03 marchalex 閱讀(364) | 評論 (0)編輯 收藏

    import java.io.BufferedInputStream; 
    import java.io.BufferedReader; 
    import java.io.IOException; 
    import java.io.InputStreamReader; 
    import java.util.regex.Matcher; 
    import java.util.regex.Pattern; 
     
    public class RegexTestHarnessV4 { 
     
        
    public static void main(String[] args) throws IOException { 
            BufferedReader br 
    = new BufferedReader( 
                    
    new InputStreamReader(new BufferedInputStream(System.in)) 
                ); 
            
    while (true) { 
                System.out.print(
    "\nEnter your regex: "); 
                Pattern pattern 
    = Pattern.compile(br.readLine()); 
                System.out.print(
    "Enter input string to search: "); 
                Matcher matcher 
    = pattern.matcher(br.readLine()); 
                
    boolean found = false
                
    while (matcher.find()) { 
                    System.out.println(
    "I found the text \"" + matcher.group() + 
                            "\" starting at index " + matcher.start() + 
                            " and ending at index " + matcher.end() + 
                            
    "."); 
                    found 
    = true
                } 
                
    if (!found) { 
                    System.out.println(
    "No match found."); 
                } 
            } 
        } 
    }


    樣例:

    Enter your regex: [0-9]+
    Enter input string to search: fdsdffd9090fd
    I found the text "9090" starting at index 7 and ending at index 11.

    Enter your regex: class="fav-num[^"]*"[^>]*>[^<]*
    Enter input string to search: <i class="litb-icon-fav-on"></i><i class="litb-icon-fav-off"></i><span class="fav-num">(151)</span>
    I found the text "class="fav-num">(151)" starting at index 71 and ending at index 92.

    資料:
    http://blog.csdn.net/yaerfeng/article/details/28855587
    posted @ 2015-08-12 13:58 marchalex 閱讀(317) | 評論 (0)編輯 收藏
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;

    public class GoogleFinderNew {
        
        
    private static String address = "https://www.google.com.hk/search?hl=en&q=";
        
    private static String query = "";
        
    private static String charset = "UTF-8";
        
        
    private static List<String> useragentList = new ArrayList<String>();
        
        
    private static void initUserAgentList(String filename) throws IOException {
            BufferedReader reader 
    = new BufferedReader(new FileReader(filename));  
            String line 
    = null;
            
    while((line = reader.readLine()) != null){
                useragentList.add(line.trim());
            }
            reader.close();
            
    return;
        }
        
        
    private static List<String> getpages(URL url) throws IOException {
            HttpURLConnection urlConnection 
    = (HttpURLConnection) url.openConnection();
            BufferedReader reader 
    = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            String line;
            String ans 
    = "";
            
    while ((line = reader.readLine()) != null){
                 ans 
    += line + "\n";
            }
            
    int st = -1, ed = 0;
            List
    <String> pagesList = new ArrayList<String>();
            
            
    while((st = ans.indexOf("<h3 class=\"r\"><a href=\"", ed)) != -1) {
                ed = ans.indexOf("\"", st+23);
                //System.out.println(ans.substring(st+23, ed));
                pagesList.add(ans.substring(st+23, ed));
            }
            
    return pagesList;
        }
        
        
    public static void main(String[] args) throws MalformedURLException, IOException, InterruptedException {
            
            Scanner in 
    = new Scanner(System.in);
            String askurl 
    = in.nextLine();
            query 
    = in.nextLine();
            
            initUserAgentList(
    "D:\\useragent.txt");
            
            
    //System.setProperty("http.agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.9 Safari/525.19");
            
            
    int pages = 10;
            
            
    for(int i=0;i<pages;i++) {
                System.out.println((i
    +1+ " ..");
                
                
    int index = (int)(useragentList.size()*Math.random());
                
    if(index == useragentList.size()) index --;
                String theUserAgent 
    = useragentList.get(index);
                
                System.setProperty(
    "http.agent", theUserAgent);
                
                String urlString 
    = address + URLEncoder.encode(query, charset);
                
    if(i != 0) urlString += "&start=" + i + "0";
                
    //System.out.println(urlString);
                List<String> list = getpages(new URL(urlString));
                
    for(String page : list) {
                    
    if(page.contains(askurl)) {
    //                if(page.equals(askurl)) {
                        System.out.println(askurl + " found in the " + (i+1+ " th page.");
                        System.out.println(page);
                        
    return;
                    }
                }
                
    int extraTime = 0//(int)(3000 * Math.random());
                Thread.sleep(1000 + extraTime);
            }
            
            System.out.println(
    "can't find " + askurl + " in the first " + pages + " pages.");
        }
    }
    posted @ 2015-07-29 16:41 marchalex 閱讀(267) | 評論 (0)編輯 收藏
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.util.List;
    import java.util.Scanner;
    import java.util.StringTokenizer;

    import com.google.gson.Gson;



    public class GoogleFinder {
        
        
    public static void main(String[] args) throws IOException, InterruptedException {
            
            String address 
    = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=";
            String query 
    = "";
            String charset 
    = "UTF-8";
            
            Scanner in 
    = new Scanner(System.in);
            String targeturl 
    = in.nextLine();
            query 
    = in.nextLine();
            
            
    for(int i=0;i<125;i++) {
                
                URL url 
    = new URL(address + URLEncoder.encode(query, charset) + "&start=" + i);
                
                
    //System.out.println(url);
                Reader reader = new InputStreamReader(url.openStream(), charset);
                GoogleResults results 
    = new Gson().fromJson(reader, GoogleResults.class);
                
                
    for(int t=0;t<30;t++) {
                    System.out.print(
    ".");
                    Thread.sleep(
    2000);
                } System.out.println(
    "");
                
                
    for(int j=0;j<4;j++) {

                    String ss 
    = results.getResponseData().getResults().get(j).getUrl().toLowerCase();
                    
    if(ss.contains(targeturl)) {
                        System.out.println(ss);
                        System.out.println(results.getResponseData().getResults().get(j).getTitle());
                        System.out.println(
    "Found in the " + (i*4+j+1+ " th");
                        
    return;
                    }
                }
                System.out.println(
    "" + ((i+1)*4+ " pages found.");
            }
            
            System.out.println(
    "Can find " + targeturl + " in the first 500 pages");
            
        }
    }


    class GoogleResults {

        
    private ResponseData responseData;

        
    public ResponseData getResponseData() {
            
    return responseData;
        }

        
    public void setResponseData(ResponseData responseData) {
            
    this.responseData = responseData;
        }

        
    public String toString() {
            
    return "ResponseData[" + responseData + "]";
        }

        
    static class ResponseData {
            
    private List<Result> results;

            
    public List<Result> getResults() {
                
    return results;
            }

            
    public void setResults(List<Result> results) {
                
    this.results = results;
            }

            
    public String toString() {
                
    return "Results[" + results + "]";
            }
        }

        
    static class Result {
            
    private String url;
            
    private String title;

            
    public String getUrl() {
                
    return url;
            }

            
    public String getTitle() {
                
    return title;
            }

            
    public void setUrl(String url) {
                
    this.url = url;
            }

            
    public void setTitle(String title) {
                
    this.title = title;
            }

            
    public String toString() {
                
    return "Result[url:" + url + ",title:" + title + "]";
            }
        }
    }

    posted @ 2015-07-29 14:16 marchalex 閱讀(285) | 評論 (0)編輯 收藏
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;

    public class GoogleFinderNew {
        
        
    private static String address = "https://www.google.com.hk/search?hl=en&q=";
        
    private static String query = "";
        
    private static String charset = "UTF-8";
        
        
    private static void test() {
            String ans 
    = "abc<h3>helloworld</h3>hehe<h3>nicetomeetyou</h3>";
            
    int st = ans.indexOf("<h3>");
            
    int ed = ans.indexOf("</h3>");
            System.out.println(st 
    + "   " + ed);
            System.out.println(ans.substring(st
    +4, ed));
        }
        
        
    private static List<String> getpages(URL url) throws IOException {
            HttpURLConnection urlConnection 
    = (HttpURLConnection) url.openConnection();
            BufferedReader reader 
    = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            String line;
            String ans 
    = "";
            
    while ((line = reader.readLine()) != null){
                 ans 
    += line + "\n";
            }
            
    int st = -1, ed = 0;
            List
    <String> pagesList = new ArrayList<String>();
            
            
    while((st = ans.indexOf("<h3 class=\"r\"><a href=\"", ed)) != -1) {
                ed = ans.indexOf("\"", st+23);
                //System.out.println(ans.substring(st+23, ed));
                pagesList.add(ans.substring(st+23, ed));
            }
            
    return pagesList;
        }
        
        
    public static void main(String[] args) throws MalformedURLException, IOException, InterruptedException {
            
            Scanner in 
    = new Scanner(System.in);
            String askurl 
    = in.nextLine();
            query 
    = in.nextLine();
            
            System.setProperty(
    "http.agent""Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11");
            
            
    int pages = 100;
            
            
    for(int i=0;i<pages;i++) {
                System.out.println((i
    +1+ " ..");
                String urlString 
    = address + URLEncoder.encode(query, charset);
                
    if(i != 0) urlString += "&start=" + i + "0";
                
    //System.out.println(urlString);
                List<String> list = getpages(new URL(urlString));
                
    for(String page : list) {
                    
    if(page.contains(askurl)) {
    //                if(page.equals(askurl)) {
                        System.out.println(askurl + " found in the " + (i+1+ " th page.");
                        System.out.println(page);
                        
    return;
                    }
                }
                Thread.sleep(
    1000);
            }
            
            System.out.println(
    "can't find " + askurl + " in the first " + pages + " pages.");
        }
    }
    posted @ 2015-07-29 14:16 marchalex 閱讀(307) | 評論 (0)編輯 收藏

    圖片放在D:/pic/的p1.png,p2.png,p3.png,臺詞在D盤的lines.txt

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.util.StringTokenizer;

    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JPanel;


    public class GameFrame extends JFrame {
        
        private static final int Width = 1000;
        private static final int Height = 600;
        private static JFrame frame = null;
        private static String content = null;
        
        public GameFrame() throws Exception {
            frame = new JFrame("");
            frame.setLocationRelativeTo(null);
            frame.setSize(Width, Height);
            frame.setLocation(100, 30);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
            
            BufferedReader reader = new BufferedReader(new FileReader("D:\\lines.txt"));
            while((content=reader.readLine())!=null) {
                JPanel panel = new GamePanel();
                panel.setBounds(0, 0, Width, Height);
                frame.getContentPane().add(panel);
                frame.setVisible(true);
                Thread.sleep(1000);
            }
        }
        
        class GamePanel extends JPanel {
            public void paint(Graphics g) {
                super.paint(g);
                ImageIcon icon = new ImageIcon("D:\\pic\\bg.jpg");
                g.drawImage(icon.getImage(), 0, 0, Width, Height, this);
                g.setFont(new Font("", Font.PLAIN, 50));
                StringTokenizer st = new StringTokenizer(content);
                String name = st.nextToken();
                if(name.equals("end")) {
                    g.setColor(Color.WHITE);
                    g.drawString("end", 470, 300);;
                } else { 
                    if(name.equals("p1")) {
                        icon = new ImageIcon("D:\\pic\\p1.png");
                        g.drawImage(icon.getImage(), 100, 50, 200, 300, this);
                        String words = st.nextToken();
                        g.setColor(Color.CYAN);
                        g.drawString(words, 100, 450);
                    } else if(name.equals("p2")) {
                        icon = new ImageIcon("D:\\pic\\p2.png");
                        g.drawImage(icon.getImage(), 700, 50, 200, 300, this);
                        String words = st.nextToken();
                        g.setColor(Color.PINK);
                        g.drawString(words, 500, 450);
                    } else if(name.equals("p3")) {
                        icon = new ImageIcon("D:\\pic\\p3.png");
                        g.drawImage(icon.getImage(), 450, 50, 200, 300, this);
                        String words = st.nextToken();
                        g.setColor(Color.GREEN);
                        g.drawString(words, 450, 450);
                    }
                }
            }
        }
        
        public static void main(String[] args) throws Exception {
            new GameFrame();
        }
    }
    posted @ 2015-06-08 15:59 marchalex 閱讀(295) | 評論 (0)編輯 收藏
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;

    import javax.swing.JFrame;
    import javax.swing.JPanel;


    public class FrameWork extends JFrame {
        
        private static final double pi = Math.acos(-1.0);
        private static final int Width = 1100;
        private static final int Height = 650;
        private static JFrame frame = null;
        private static int the_time = -1095;
        
        public FrameWork() {
            frame = new JFrame("Frame");
            frame.setLocationRelativeTo(null);
            frame.setSize(Width, Height);
            frame.setLocation(100, 30);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
            
            for(int i=0;i<1000;i++) {
            JPanel panel = new ImagePanel();
            panel.setBounds(0, 0, Width, Height);
            frame.getContentPane().add(panel);
            frame.setVisible(true);
            the_time +=5;
            }
        }
        
        class ImagePanel extends JPanel {
            public void paint(Graphics g) {
                super.paint(g);
                g.setColor(Color.WHITE);
                g.fillRect(0, 0, Width, Height);
                
                if(the_time < 0) {
                    g.setColor(Color.BLACK);
                    g.setFont(new Font("MS UI Gothic", Font.PLAIN, 50));
                    g.drawString(""+(-the_time/100), 50, 50);
                }
                
                int[] x = {500, 550, 150, 300, 800, 850, 950, 100};
                int[] y = {500, 250, 200, 100, 190, 300, 450, 420};
                g.setColor(Color.GRAY);
                for(int i=0;i<8;i++)
                    for(int j=i+1;j<8;j++) {
                        g.drawLine(x[i], y[i], x[j], y[j]);
                    }
                int[][] d = new int[8][8];
                for(int i=0;i<8;i++)
                    for(int j=0;j<8;j++)
                        d[i][j] = (int)Math.sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
                int[] start = new int[8];
                start[0] = 0;
                for(int i=1;i<=4;i++) start[i] = start[i-1] + d[i-1][i];
                int d_long = 0;
                for(int i=1;i<8;i++) if(d[0][i] > d_long) d_long = d[0][i];
                int end_time = start[4] + d[0][4] + d_long;
                if(the_time <= 0) g.setColor(Color.YELLOW);
                else if(the_time > end_time-d_long) g.setColor(Color.RED);
                else g.setColor(Color.ORANGE);
                g.fillRect(x[0]-15, y[0]-30, 30, 30);
                g.setColor(Color.BLACK);
                g.drawRect(x[0]-15, y[0]-30, 30, 30);
                if(the_time <= 0) g.setColor(Color.YELLOW);
                else if(the_time > end_time-d_long) g.setColor(Color.RED);
                else g.setColor(Color.ORANGE);
                g.fillOval(x[0]-30, y[0]-20, 60, 40);
                g.setColor(Color.BLACK);
                g.drawOval(x[0]-30, y[0]-20, 60, 40);
                for(int i=1;i<=4;i++) {
                    if(the_time <= start[i]) g.setColor(Color.BLUE);
                    else g.setColor(Color.darkGray);
                    g.fillRect(x[i]-15, y[i]-15, 30, 30);
                    g.setColor(Color.BLACK);
                    g.drawRect(x[i]-15, y[i]-15, 30, 30);
                }
                for(int i=5;i<8;i++) {
                    g.setColor(Color.GREEN);
                    g.fillOval(x[i]-15, y[i]-15, 30, 30);
                    g.setColor(Color.BLACK);
                    g.drawOval(x[i]-15, y[i]-15, 30, 30);
                }
                for(int i=0;i<5;i++) {
                    if(the_time > start[i]) {
                        int left_time = the_time - start[i];
                        for(int j=0;j<8;j++) {
                            if(i == j) continue;
                            if(d[i][j] > left_time) {
                                int xx = x[i] + (int)((double)(x[j]-x[i])*left_time/(double)d[i][j]);
                                int yy = y[i] + (int)((double)(y[j]-y[i])*left_time/(double)d[i][j]);
                                g.setColor(Color.CYAN);
                                g.fillOval(xx-5, yy-5, 10, 10);
                            }
                        }
                    }
                }
                if(the_time>end_time-d_long) {
                    for(int i=1;i<8;i++) {
                        int left_time = the_time - end_time + d_long;
                        if(left_time > d[0][i]) {
                            if(i>4) {
                                g.setColor(Color.RED);
                                g.fillOval(x[i]-15, y[i]-15, 30, 30);
                                g.setColor(Color.BLACK);
                                g.drawOval(x[i]-15, y[i]-15, 30, 30);
                            } else {
                                g.setColor(Color.RED);
                                g.fillRect(x[i]-15, y[i]-15, 30, 30);
                                g.setColor(Color.BLACK);
                                g.drawRect(x[i]-15, y[i]-15, 30, 30);
                            }
                        } else {
                            int xx = x[0] + (int)((double)(x[i]-x[0])*left_time/(double)d[0][i]);
                            int yy = y[0] + (int)((double)(y[i]-y[0])*left_time/(double)d[0][i]);
                            g.setColor(Color.RED);
                            g.fillOval(xx-5, yy-5, 10, 10);
                        }
                    }
                }
                g.setColor(Color.WHITE);
                g.setFont(new Font("MS UI Gothic", Font.PLAIN, 30));
                for(int i=1;i<=4;i++) {
                    g.drawString(""+i, x[i]-7, y[i]+7);
                }
            }
        }
        
        public static void main(String[] args) {
            new FrameWork();
        }
    }
    posted @ 2015-06-08 01:55 marchalex 閱讀(239) | 評論 (0)編輯 收藏
    運行此程序需要添加一個jar包下載地址
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.util.StringTokenizer;

    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;


    public class FileToExcel {
        
        public static void main(String[] args) throws Exception {
            writeToExcel("D:\\output.txt", "D:\\output.xls");
            System.out.println("finished!");
        }
        
        public static void writeToExcel(String inFile, String outExcel) throws Exception {
            
            
            //打開文件   
            WritableWorkbook book= Workbook.createWorkbook(new File(outExcel));   
            //生成名為“第一頁”的工作表,參數0表示這是第一頁   
            WritableSheet sheet=book.createSheet("第一頁",0);   
            //在Label對象的構造子中指名單元格位置是第一列第一行(0,0)   
            
    //以及單元格內容為test   
            
    //Label label=new Label(0,0,"測試");   
            
    //將定義好的單元格添加到工作表中   
            
    //sheet.addCell(label);    
            
    //jxl.write.Number number = new jxl.write.Number(1,0,789.123);   
            
    //sheet.addCell(number);   
            
    //jxl.write.Label s=new jxl.write.Label(1, 2, "三十三");  
            
    //sheet.addCell(s);   
            
    //寫入數據并關閉文件 
            
            Label label = null;
            
            String s1 = readFile(inFile);
            
            StringTokenizer st1 = new StringTokenizer(s1, "\n");
            for(int i=0;st1.hasMoreElements();i++) {
                String s2 = st1.nextToken();
                StringTokenizer st2 = new StringTokenizer(s2, " \t");
                for(int j=0;st2.hasMoreElements();j++) {
                    String s = st2.nextToken();
                    label=new Label(j,i, "" + s);
                    sheet.addCell(label);  
                }
            }
            
            
            book.write();   
            book.close(); //最好在finally中關閉,此處僅作為示例不太規范  
            
        }
        
        private static String readFile(String filename) throws Exception {
            BufferedReader reader = new BufferedReader(new FileReader(filename));
            String ans = "", line = null;
            while ((line = reader.readLine()) != null) {
                ans += line + "\r\n";
            }
            reader.close();
            return ans;
        }
        
    }
    posted @ 2015-04-15 22:11 marchalex 閱讀(410) | 評論 (0)編輯 收藏
    運行此程序需要添加一個jar包下載地址
    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.text.DecimalFormat;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Date;
    import java.util.List;



    import java.util.StringTokenizer;
     






    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFDateUtil;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;

     

    public class ExcelToFile {
        public static void main(String[] args) throws Exception {
            solve("D:\\input.xls", "D:\\output.txt");
            System.out.println("finished!");
        }
        
        private static String readFile(String filename) throws Exception {
            BufferedReader reader = new BufferedReader(new FileReader(filename));
            String ans = "", line = null;
            while ((line = reader.readLine()) != null) {
                ans += line + "\r\n";
            }
            reader.close();
            return ans;
        }
        
        private static void writeFile(String content, String filename)
                throws Exception {
            BufferedWriter writer = new BufferedWriter(new FileWriter(filename));
            writer.write(content);
            writer.flush();
            writer.close();
        }

        private static void solve(String xls_name, String outfile) throws Exception {

            String ans = "";
            File file = new File(xls_name);
            String[][] result = getData(file, 2);
            int rowLength = result.length;

            for(int i=0;i<rowLength;i++) {   
               for(int j=0;j<result[i].length;j++) {
                  ans += result[i][j]+" ";
               }
               ans += "\r\n";
            }
            writeFile(ans, outfile);
        }

        /**
         * 讀取Excel的內容,第一維數組存儲的是一行中格列的值,二維數組存儲的是多少個行
         * 
    @param file 讀取數據的源Excel
         * 
    @param ignoreRows 讀取數據忽略的行數,比喻行頭不需要讀入 忽略的行數為1
         * 
    @return 讀出的Excel中數據的內容
         * 
    @throws FileNotFoundException
         * 
    @throws IOException
         
    */

        public static String[][] getData(File file, int ignoreRows)
               throws FileNotFoundException, IOException {
           List<String[]> result = new ArrayList<String[]>();
           int rowSize = 0;
           BufferedInputStream in = new BufferedInputStream(new FileInputStream(
                  file));
           // 打開HSSFWorkbook
           POIFSFileSystem fs = new POIFSFileSystem(in);
           HSSFWorkbook wb = new HSSFWorkbook(fs);
           HSSFCell cell = null;
           for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
               HSSFSheet st = wb.getSheetAt(sheetIndex);
               // 第一行為標題,不取
               for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) {
                  HSSFRow row = st.getRow(rowIndex);
                  if (row == null) {
                      continue;
                  }
                  int tempRowSize = row.getLastCellNum() + 1;
                  if (tempRowSize > rowSize) {
                      rowSize = tempRowSize;
                  }
                  String[] values = new String[rowSize];
                  Arrays.fill(values, "");
                  boolean hasValue = false;
                  for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {
                      String value = "";
                      cell = row.getCell(columnIndex);
                      if (cell != null) {
                         // 注意:一定要設成這個,否則可能會出現亂碼
                         cell.setEncoding(HSSFCell.ENCODING_UTF_16);
                         switch (cell.getCellType()) {
                         case HSSFCell.CELL_TYPE_STRING:
                             value = cell.getStringCellValue();
                             break;
                         case HSSFCell.CELL_TYPE_NUMERIC:
                             value = String.format("%.2f", cell.getNumericCellValue());
                             if (HSSFDateUtil.isCellDateFormatted(cell)) {
                                 Date date = cell.getDateCellValue();
                                 if (date != null) {
                                     value = new SimpleDateFormat("yyyy-MM-dd")
                                           .format(date);
                                } else {
                                    value = "";
                                }
                             } else {
                                value = new DecimalFormat("0").format(cell
                                       .getNumericCellValue());
                             }
                             break;
                         case HSSFCell.CELL_TYPE_FORMULA:
                             // 導入時如果為公式生成的數據則無值
                             if (!cell.getStringCellValue().equals("")) {
                                value = cell.getStringCellValue();
                             } else {
                                value = cell.getNumericCellValue() + "";
                             }
                             break;
                         case HSSFCell.CELL_TYPE_BLANK:
                             break;
                         case HSSFCell.CELL_TYPE_ERROR:
                             value = "";
                             break;
                         case HSSFCell.CELL_TYPE_BOOLEAN:
                             value = (cell.getBooleanCellValue() == true ? "Y"
                                    : "N");
                             break;
                         default:
                             value = "";
                         }
                      }
                      if (columnIndex == 0 && value.trim().equals("")) {
                         break;
                      }
                      values[columnIndex] = value.trim();
                      hasValue = true;
                  }
                  if (hasValue) {
                      result.add(values);
                  }
               }
           }
           in.close();
           String[][] returnArray = new String[result.size()][rowSize];
           for (int i = 0; i < returnArray.length; i++) {
               returnArray[i] = (String[]) result.get(i);
           }
           return returnArray;
        }

    }
    posted @ 2015-04-15 21:57 marchalex 閱讀(217) | 評論 (0)編輯 收藏
    RandomRectangles類中的X、Y和n分別代表生成舉行的橫坐標范圍、縱坐標范圍和個數。
    FrameWork類用于演示。

    RandomRectangle.java

    public class RandomRectangles {
        private static final int maxn = 1010;
        private static double[] x = new double[maxn];
        private static double[] y = new double[maxn];
        private static double[] w = new double[maxn];
        private static double[] h =new double[maxn];
        private static double[] xmax = new double[maxn];
        private static double[] ymax = new double[maxn];
        private static double[] xx = new double[maxn];
        private static double[] yy = new double[maxn];
        private static double X = 1000;
        private static double Y = 600;
        private static int n = 2;
        private static double[][] ans = new double[n][4];
        private static int cmp(int i, int j) {
            if(y[i] < y[j] || y[i] == y[j] && x[i] < x[j]) return -1;
            return 1;
        }
        private static void sort(int l, int r) {
            if(l == r) return;
            int mid = (l + r) >> 1;
            sort(l, mid);
            sort(mid+1, r);
            int i = l, j = mid + 1, k = l;
            while(i <= mid || j <= r) {
                if(i > mid) {
                    xx[k] = x[j];
                    yy[k++] = y[j++];
                }
                else if(j > r) {
                    xx[k] = x[i];
                    yy[k++] = y[i++];
                }
                else if(cmp(i,j) == -1) {
                    xx[k] = x[i];
                    yy[k++] = y[i++];
                }
                else {
                    xx[k] = x[j];
                    yy[k++] = y[j++];
                }
            }
            for(i=l;i<=r;i++) {
                x[i] = xx[i];
                y[i] = yy[i];
            }
            return;
        }
        private static boolean create_points() {
            for(int i=0;i<n;i++) {
                xmax[i] = X;
                ymax[i] = Y;
                x[i] = Math.random() * X;
                y[i] = Math.random() * Y;
            }
            sort(0, n-1);
            for(int i=0;i<n-1;i++) {
                if(y[i] == y[i+1] && x[i] == x[i+1]) return false;
            }
            return true;
        }
        public static double[][] getData() {
            while(true) {
                if(create_points() == truebreak;
            }
            for(int i=0;i<n-1;i++) {
                if(y[i] == y[i+1]) xmax[i] = x[i];
            }
            for(int i=0;i<n;i++) {
                w[i] = Math.random() * (xmax[i] - x[i]);
                for(int j=i+1;j<n;j++) {
                    if(x[j] >= x[i] && x[j] <= x[i]+w[i]) {
                        ymax[i] = y[j];
                        break;
                    }
                }
                h[i] = Math.random() * (ymax[i] - y[i]);
                for(int j=i+1;j<n;j++) {
                    if(x[j] < x[i] && y[j] >= y[i] && y[j] <= y[i]+h[i]) {
                        xmax[j] = xmax[j] < x[j] ? xmax[j] : x[j];
                    }
                }
            }
            for(int i=0;i<n;i++) {
                ans[i][0] = x[i];
                ans[i][1] = y[i];
                ans[i][2] = w[i];
                ans[i][3] = h[i];
            }
            return ans;
        }
        public static void main(String[] args) {
            ans = getData();
            System.out.println(ans[2][2]);
        }
    }

    FrameWork.java
    import java.awt.Color; import java.awt.FlowLayout;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.image.BufferedImage;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;

    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;


    public class FrameWork extends JFrame {
        
        private static final double pi = Math.acos(-1.0);
        private static final int Width = 1200;
        private static final int Height = 800;
        private static JFrame frame = null;
        
        
        public FrameWork() {
             setDefaultCloseOperation(EXIT_ON_CLOSE);
             setLocationRelativeTo(null);
             setSize(Width, Height);
             setResizable(false);
             getContentPane().setLayout(null);
             JPanel panel = new ImagePanel();
             panel.setBounds(0, 0, Width, Height);
             getContentPane().add(panel);
             setVisible(true);
        }
        
        class ImagePanel extends JPanel {
            public void paint(Graphics g) {
                super.paint(g);
                g.setColor(Color.white);
                g.fillRect(0, 0, Width, Height);
                g.setColor(Color.black);
                double[][] ans = RandomRectangles.getData();
                for(int i=0;i<ans.length;i++) {
                    double x0 = ans[i][0];
                    double y0 = ans[i][1];
                    double x1 = x0 + ans[i][2];
                    double y1 = y0 + ans[i][3];
                    System.out.println(x0 + " " + y0 + " " + x1 + " " + y1);
                }
                for(int i=0;i<ans.length;i++)
                    g.drawRect((int)ans[i][0], (int)ans[i][1], (int)ans[i][2], (int)ans[i][3]);
            }
        }
        
        public static void main(String[] args) {
            new FrameWork();
        }
    }
    posted @ 2015-04-15 20:27 marchalex 閱讀(367) | 評論 (0)編輯 收藏
    線段樹是一種二叉樹結構,能夠在O(logn)時間復雜度之內實現對數組中某一區間的增刪改查的操作。
    關于線段樹的詳細解釋
    今天我們涉及的是線段樹的單點更新以及區間查詢功能。
    我們以HDU上面的敵兵布陣為例。
    題目描述:
    C國的死對頭A國這段時間正在進行軍事演習,所以C國間諜頭子Derek和他手下Tidy又開始忙乎了。A國在海岸線沿直線布置了N個工兵營地,Derek和Tidy的任務就是要監視這些工兵營地的活動情況。由于采取了某種先進的監測手段,所以每個工兵營地的人數C國都掌握的一清二楚,每個工兵營地的人數都有可能發生變動,可能增加或減少若干人手,但這些都逃不過C國的監視。
    中央情報局要研究敵人究竟演習什么戰術,所以Tidy要隨時向Derek匯報某一段連續的工兵營地一共有多少人,例如Derek問:“Tidy,馬上匯報第3個營地到第10個營地共有多少人!”Tidy就要馬上開始計算這一段的總人數并匯報。但敵兵營地的人數經常變動,而Derek每次詢問的段都不一樣,所以Tidy不得不每次都一個一個營地的去數,很快就精疲力盡了,Derek對Tidy的計算速度越來越不滿:"你個死肥仔,算得這么慢,我炒你魷魚!”Tidy想:“你自己來算算看,這可真是一項累人的工作!我恨不得你炒我魷魚呢!”無奈之下,Tidy只好打電話向計算機專家Windbreaker求救,Windbreaker說:“死肥仔,叫你平時做多點acm題和看多點算法書,現在嘗到苦果了吧!”Tidy說:"我知錯了。。。"但Windbreaker已經掛掉電話了。Tidy很苦惱,這么算他真的會崩潰的,聰明的讀者,你能寫個程序幫他完成這項工作嗎?不過如果你的程序效率不夠高的話,Tidy還是會受到Derek的責罵的.
    Java代碼:
    import java.io.*;

    public class Main {
        private static final int maxn = 50050;
        private static long[] sum = new long[maxn<<2];
        private static long[] a = new long[maxn];
        
        private static void pushup(int rt) {
            sum[rt] = sum[rt<<1] + sum[rt<<1|1];
        }
        private static void build(int l, int r, int rt) {
            if(l == r) {
                sum[rt] = a[l];
                return;
            }
            int mid = (l + r) >> 1;
            build(l, mid, rt<<1);
            build(mid+1, r, rt<<1|1);
            pushup(rt);
        }
        private static void add(int pos, long value, int l, int r, int rt) {
            if(l == r) {
                sum[rt] += value;
                return;
            }
            int mid = (l+r) >> 1;
            if(pos <= mid) add(pos, value, l, mid , rt<<1);
            else add(pos, value, mid+1, r, rt<<1|1);
            pushup(rt);
        }
        private static long query(int L, int R, int l, int r, int rt) {
            if(L <= l && r <= R) return sum[rt];
            int mid = (l + r) >> 1;
            long ans = 0;
            if(L <= mid) ans += query(L, R, l, mid, rt<<1);
            if(R > mid) ans += query(L, R, mid+1, r, rt<<1|1);
            return ans;
        }
        public static void main(String[] args) throws IOException {
            int T, n, cas = 1;
            StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
            PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
            in.nextToken();
            T = (int)in.nval;
            while(T > 0) {
                T --;
                out.println("Case " + cas + ":");
                cas ++;
                in.nextToken();
                n = (int)in.nval;
                for(int i=1;i<=n;i++) {
                    in.nextToken();
                    a[i] = (long)in.nval;
                }
                build(1, n, 1);
                while(true) {
                    in.nextToken();
                    String order = (String)in.sval;
                    if(order.equals("End")) break;
                    else if(order.equals("Query")) {
                        in.nextToken();
                        int L = (int)in.nval;
                        in.nextToken();
                        int R = (int)in.nval;
                        long ans = query(L, R, 1, n, 1);
                        out.println(ans);
                    } else if(order.equals("Add")) {
                        in.nextToken();
                        int pos = (int)in.nval;
                        in.nextToken();
                        long val = (long)in.nval;
                        add(pos, val, 1, n, 1);
                    } else if(order.equals("Sub")) {
                        in.nextToken();
                        int pos = (int)in.nval;
                        in.nextToken();
                        long val = -(long)in.nval;
                        add(pos, val, 1, n, 1);
                    }
                }
            }
            out.flush();
        }
    }
    posted @ 2015-03-26 08:19 marchalex 閱讀(464) | 評論 (0)編輯 收藏
    <!-- JSP中的指令標識 -->
    <%@ page language="java" contentType="text/html;charset=gb2312" %>
    <%@ page import="java.util.Date" %>
    <!-- HTML標記語言 -->
    <html>
        <head><title>JSP頁面的基本構成</title></head>
        <body>
            <center>
    <!-- 嵌入的Java代碼 -->
        <% String today = new Date().toLocaleString(); %>
    <!-- JSP表達式 -->
        今天是:<%=today %>
    <!-- HTML標記語言 -->
            </center>
        </body>
    </html>
    JSP中的指令標識:利用JSP指令可以使服務器按照指令的設置來執行和設置在整個JSP頁面范圍內有效的屬性。
    HTML標記語言:HTML標記在JSP頁面中作為靜態的內容,瀏覽器將會識別這些HTML標記并執行。
    嵌入的Java代碼片段:通過向JSP頁面中嵌入Java代碼,可以使頁面生成動態的內容。
    JSP表達式:JSP表達式主要用于數據的輸出。它可以向頁面輸出內容以顯示給用戶,還可以用來動態地指定HTML標記中屬性的值。
    posted @ 2015-03-24 14:03 marchalex 閱讀(179) | 評論 (0)編輯 收藏
    功能:通過按鈕打開一個新窗口,并在新窗口的狀態欄中顯示當前年份。
    (1)在主窗口中應用以下代碼添加一個用于打開一個新窗口的按鈕:
    <input name="button" value="打開新窗口" type="button" onclick="window.open('newWindow.jsp', '', 'width=400, height=200, status=yes')">
    (2)創建一個新的JSP文件,名稱為newWindow.jsp,在該文件中添加以下用于顯示當前年份的代碼:
    <script language="javascript">
    var mydate = new Date();
    var year = "現在是:" + mydate.getFullYear() + "年!";
    document.write(year);
    </script>
    posted @ 2015-03-24 13:35 marchalex 閱讀(263) | 評論 (0)編輯 收藏
    1.事件概述
    JavaScript與Web頁面之間的交互時通過用戶操作瀏覽器頁面時觸發相關事件來實現的。例如:
    在頁面載入完畢時,將處罰load(載入)事件;
    當用戶單擊按鈕時,將觸發按鈕的click事件等。
    用戶響應某個事件而執行的處理程序稱為事件處理程序。例如:
    當用戶單擊按鈕時,將觸發按鈕的事件處理程序onClick。
    事件處理程序的兩種分配方式
    (1)在JavaScript中分配事件處理程序
    例:
    <img src="http://gi3.md.alicdn.com/bao/uploaded/i3/TB1tlxaHpXXXXXtaXXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg" id="aimage">
    <script language="javascript">
    var img = document.getElementById("aimage");
    img.onclick 
    = function() {
        alert('單擊了圖片');
    }
    </script>
    在頁面中加入上面的代碼并運行,則當單擊圖片aimage時,將彈出“單擊了圖片”對話框。
    在JavaScript中分配時間處理程序時,事件處理程序名稱必須小寫,才能正確響應事件。
    (2)在HTML中分配事件處理程序
    例:
    <img src="http://gi3.md.alicdn.com/bao/uploaded/i3/TB1tlxaHpXXXXXtaXXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg" onclick="alert('單擊了圖片');">
    2.事件類型
    UI事件:如load、unload、error、resize、scroll、select、DOMActive,是用戶與頁面上的元素交互時觸發的。
    焦點事件:如blur、DOMFocusIn、DOMFocusOut、focus、focusin、focusout,在元素獲得或失去焦點的時候觸發,這些事件當中,最為重要的是blur和focus,有一點需要引起注意,這一類事件不會發生冒泡!
    鼠標與滾輪事件:如click、dblclick、mousedown、mouseenter、mouseleave、mousemove、mouseout、mouseover、mouseup,是當用戶通過鼠標在頁面執行操作時所觸發的。
    滾輪事件:mousewheel(IE6+均支持)、DOMMouseScroll(FF支持的,與mousewheel效果一樣)。是使用鼠標滾輪時觸發的。
    文本事件:textInput,在文檔中輸入文本觸發。
    鍵盤事件:keydown、keyup、keypress,當用戶通過鍵盤在頁面中執行操作時觸發。
    合成事件:DOM3級新增,用于處理IME的輸入序列。所謂IME,指的是輸入法編輯器,可以讓用戶輸入在物理鍵盤上找不到的字符。compositionstart、compositionupdate、compositionend三種事件。
    變動事件:DOMsubtreeModified、DOMNodeInserted、DOMNodeRemoved、DOMAttrModified、DOMCharacterDataModified等,當底層DOM結構發生變化時觸發。IE8-不支持。
    變動名稱事件:指的是當元素或者屬性名變動時觸發,當前已經棄用!
    對于事件的基本類型,隨著HTML5的出現和發展,又新增了HTML5事件、設備事件、觸摸事件、手勢事件等各種事件。
    posted @ 2015-03-24 10:58 marchalex 閱讀(196) | 評論 (0)編輯 收藏
    在JSP中引入JavaScript
    1.在頁面中直接嵌入JavaScript
    <script language="javascript">...</script>
    2.連接外部JavaScript
    <script language="javascript" src="sample.js"></script>
    變量的聲明用var
    var variable;
    var variable = value;
    寫的函數
    document.write(str);
    函數的定義
    function functionName([parameter1, parameter2, ...]) {
    statements
    [return expression]
    }
    元素的獲取
    document.getElementById(id);
    posted @ 2015-03-24 09:50 marchalex 閱讀(137) | 評論 (0)編輯 收藏
    Vector類常用方法:
    add(int index, Object element);
    addElementAt(Object obj, int index);
    size();
    elementAt(int index);
    setElementAt(Object obj, int index);
    removeElementAt(int index);
    Vector類實例:實現創建空的Vector對象,并向其添加元素,然后輸出所有元素。
    <%@ page import="java.util.*" %>
    <%
        Vector v = new Vector(); //創建空的Vector對象
        for(int i=0;i<3;i++) {
            v.add(new String("福娃" + i));
        }
        v.remove(1); //移除索引位置為1的元素
        
    //顯示全部元素
        for(int i=0;i<v.size();i++) {
            out.println(v.indexOf(v.elementAt(i))+": "+v.elementAt(i));
        }
    %>

    顯示結果為:
    0: 福娃0 1: 福娃2 

    posted @ 2015-03-23 11:03 marchalex 閱讀(185) | 評論 (0)編輯 收藏
    Java容器之ArrayList類
    List集合的實例化:
    List<String> l = new ArrayList<String>(); //使用ArrayList類實例化List集合
    List<String> l2 = new LinkedList<String>(); //使用LinkedList類實例化List集合
    ArrayList常用方法:
    add(int index, Object obj);
    addAll(int, Collection coll);
    remove(int index);
    set(int index, Object obj);
    get(int index);
    indexOf(Object obj);
    lastIndexOf(Object obj);
    listIterator();
    ListIterator(int index);
    ArrayList示例:實現創建空的ArrayList對象,并向其添加元素,然后輸出所有元素。
    <%@ page import="java.util.*" %>
    <%
        List<String> list = new ArrayList<String>();
        for(int i=0;i<3;i++) {
            list.add(new String("福娃" + i));
        }
        list.add(1, "后添加的福娃");
        //輸出所有元素
        Iterator<String> it = list.iterator();
        while(it.hasNext()) {
            out.println(it.next());
        }
    %>

    輸出結果為:
    福娃0 后添加的福娃 福娃1 福娃2 

    LinkedList類的用法與ArrayList類類似。
    posted @ 2015-03-23 10:57 marchalex 閱讀(159) | 評論 (0)編輯 收藏
    JSP顯示時間的小應用,用于顯示時間并對不同時間顯示不同提示。
    如:我在寫這篇博客時打開的效果如下:
    溫馨提示!
    現在時間為:2015-03-23 10:17:28
    午休時間!正午好時光!
    代碼:
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.util.Date,java.text.*" %>
    <%
        Date nowday = new Date(); //獲取當前時間
        int hour = nowday.getHours(); //獲取日期中的小時
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //定義日期格式化對象
        String time = format.format(nowday); //將指定日期格式化為“yyyy-MM-dd HH:mm:ss”形式
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>獲取當前時間的JSP程序</title>
    </head>
    <body>
        <center>
            <table border="1" width="300">
                <tr height="30"><td align="center">溫馨提示!</td></tr>
                <tr height="80"><td align="center">現在時間為:<%= time %></td></tr>
                <tr height="70">
                    <td align="center">
                    <!-- 以下為嵌入到HTML中的Java代碼,用來生成動態的內容  -->
                    <%
                        if(hour >= 24 && hour < 5)
                            out.print("現在是凌晨!時間還很早,再睡一會兒吧!");
                        else if(hour >= 5 && hour < 10)
                            out.print("早上好!新的一天即將開始,您準備好了嗎?");
                        else if(hour >= 10 && hour < 13) 
                            out.print("午休時間!正午好時光!");
                        else if(hour >= 13 && hour < 18)
                            out.print("下午繼續努力工作吧!");
                        else if(hour >= 18 && hour < 24)
                            out.print("已經是深夜了,注意休息哦!");
                    %>
                    </td>
                </tr>
            </table>
        </center>
    </body>
    </html>
    posted @ 2015-03-23 10:19 marchalex 閱讀(217) | 評論 (0)編輯 收藏
    Crawler類能夠通過寬度優先搜索不斷地抓取網站上的url。
    這里需要用到FileHelper類的writeFile方法用于寫入文件。
    代碼如下:
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.Queue;


    public class Crawler {
        
        private static HashMap<String, Integer> map = new HashMap<String, Integer>();
        private static int count = 0;
        private static int max_count = 200000;
        
        public static String[] getLinks(String content) {
            HashMap<String, Integer> map = new HashMap<String, Integer>();
            int len = content.length();
            
            for(int i=0;i+9 < len;i++) {
                if(content.substring(i, i+8).equals("\"http://") || content.substring(i, i+9).equals("\"https://")) {
                    String ss = new String();
                    for(int j=i+1;j<len && content.charAt(j) != '\"';j++) ss += content.charAt(j);
                    if(map.containsKey(ss)) continue;
                    map.put(ss, new Integer(1));
                }
            }
            int N = map.size();
            String[] ans = new String[N];
            Iterator<String> iter = map.keySet().iterator();
            int cnt = 0;
            while (iter.hasNext()) {
                String key = iter.next();
                ans[cnt++] = key;
            }
            return ans;
        }
        
        private static boolean isPictureUrl(String url) {
            int len = url.length();
            if(url.substring(len-4, len).equals(".jpg") 
                    || url.substring(len-4, len).equals(".png") 
                    || url.substring(len-4, len).equals(".gif"))
                return true;
            return false;
        }
        
        public static void bfs(String u, String filename) {
            String ans = "";
            Queue<String> queue = new LinkedList<String>();
            map.put(u, new Integer(1));
            count ++;
            queue.offer(u);
            while ((u = queue.poll()) != null) {
                System.out.println("digging in " + u);
                System.out.println("have digged " + count + " pages now");
                String content;
                try {
                    content = URLAnalysis.getContent(u);
                    String[] res = getLinks(content);
                    int n = res.length;
                    for (int i = 0; i < n; i++) {
                        String v = res[i];
                        if (map.containsKey(v))
                            continue;
                        count ++;
                        ans += v + "\n";
                        map.put(v, new Integer(1));
                        if(false == isPictureUrl(v))
                            queue.offer(v);
                    }
                    if(count >= max_count) break;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            try {
                FileHelper.writeFile(ans, filename);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        
        
        public static void main(String[] args) {
            bfs("http://www.163.com", "D:\\test321\\urls.txt");
        }
    }

    下面是部分輸出內容:
    http://
    http://focus.news.163.com/15/0319/10/AL2INPO400011SM9.html
    http://lady.163.com/15/0317/14/AKTR681900264IJ2.html
    http://dajia.163.com/article/147.html#AL1GT1GU0095004J
    http://xf.house.163.com/qhd/search/0-0-0-0-0-0-0-0-1.html
    http://rd.da.netease.com/redirect?t=mwGQ3t&p=EA7B9E&target=http%3A%2F%2Fwww.kaola.com
    http://tech.163.com/15/0321/07/AL7C7U3R000915BF.html
    http://yuedu.163.com/book_reader/b39efe40b81843a8ac4eabdd3b756d92_4/cd59ff87a38e48eba21b312c4d26f2c7_4?utm_campaign=163ad&utm_source=163home&utm_medium=tab_1_2_7
    http://v.163.com/special/opencourse/financialmarkets.html
    http://paopao.163.com/schedule/show?pageId=4050&utm_source=163&utm_medium=wytab01&utm_campaign=warmup
    http://xf.house.163.com/zz/search/0-0-0-0-0-0-0-0-1.html
    http://sports.163.com/15/0321/10/AL7MA69F00052UUC.html
    http://ent.163.com/15/0321/01/AL6NG0GI00031H2L.html
    http://img2.cache.netease.com/lady/2014/3/1/201403012352473e66b.jpg
    http://love.163.com/?vendor=163.navi.icon&utm_source=163.com&utm_campaign=163navi
    http://caipiao.163.com/#from=www
    http://money.163.com/15/0321/08/AL7GDD1L00253B0H.html
    http://yichuangqingshu.lofter.com/post/21d053_641bd4b?act=qbwysylofer_20150101_01
    http://img4.cache.netease.com/tech/2015/3/21/20150321095714dd3c3.jpg
    http://m.163.com/iphone/index.html
    http://yuanst.blog.163.com/blog/static/186229043201522084612809/
    http://lady.163.com/15/0320/00/AL42J3UD00264OCL.html
    http://w.163.com/15/0320/15/AL5MBP6J00314C3U.html
    http://vhouse.163.com/1421889369882.html
    http://img2.cache.netease.com/edu/2015/3/20/2015032017293274fa5.jpg
    posted @ 2015-03-21 16:59 marchalex 閱讀(408) | 評論 (0)編輯 收藏
    主站蜘蛛池模板: 亚洲va精品中文字幕| 男人j进入女人j内部免费网站 | 亚洲国产成人无码av在线播放| 国产一区二区三区免费在线观看 | 久99精品视频在线观看婷亚洲片国产一区一级在线 | 免费中文字幕视频| 亚洲成a人片在线观看播放| 伊人久久大香线蕉亚洲| 日韩一级视频免费观看| 一色屋成人免费精品网站| 日本免费人成网ww555在线| 五月天婷婷免费视频| 色偷偷噜噜噜亚洲男人| 久久亚洲精品专区蓝色区| 自怕偷自怕亚洲精品| 久久精品国产亚洲夜色AV网站| 亚洲精品国产综合久久一线| 日韩免费无砖专区2020狼| 最近中文字幕免费mv视频7| 亚洲一区二区三区免费在线观看| 美女视频黄的免费视频网页| 久久久受www免费人成| av网站免费线看| 视频免费1区二区三区| 日本高清不卡中文字幕免费| 亚洲国产成人综合精品| 亚洲中文字幕无码中文| 国产亚洲sss在线播放| 亚洲精品二三区伊人久久| 亚洲制服丝袜中文字幕| 精品久久亚洲中文无码| 日本亚洲免费无线码| 亚洲日日做天天做日日谢| jiz zz在亚洲| 亚洲精品天堂成人片AV在线播放| 亚洲va久久久久| 久久久久亚洲精品无码网址色欲| 亚洲精品宾馆在线精品酒店| 精品久久久久久久久亚洲偷窥女厕| 亚洲av永久无码天堂网| 美女视频黄频a免费|