100个Java经典例子(41-50)初学者的利器高手的宝典JavaSE
2011-11-02 00:06
666 查看
package test41; import java.io.*; /** * Title: 运行系统命令 * Description:运行一个系统的命令,演示使用Runtime类。 * Filename: CmdExec.java */ public class CmdExec { /** *方法说明:构造器,运行系统命令 *输入参数:String cmdline 命令字符 *返回类型: */ public CmdExec(String cmdline) { try { String line; //运行系统命令 Process p = Runtime.getRuntime().exec(cmdline); //使用缓存输入流获取屏幕输出。 BufferedReader input = new BufferedReader (new InputStreamReader(p.getInputStream())); //读取屏幕输出 while ((line = input.readLine()) != null) { System.out.println("java print:"+line); } //关闭输入流 input.close(); } catch (Exception err) { err.printStackTrace(); } } /** *方法说明:主方法 *输入参数: *返回类型: */ public static void main(String argv[]) { new CmdExec("myprog.bat"); } }
package test43; import java.io.*; import java.net.*; /** * Title: 简单服务器客户端 * Description: 本程序是一个简单的客户端,用来和服务器连接 * Filename: SampleClient.java */ public class SampleClient { public static void main(String[] arges) { try { // 获取一个IP。null表示本机 InetAddress addr = InetAddress.getByName(null); // 打开8888端口,与服务器建立连接 Socket sk = new Socket(addr, 8888); // 缓存输入 BufferedReader in = new BufferedReader(new InputStreamReader(sk .getInputStream())); // 缓存输出 PrintWriter out = new PrintWriter(new BufferedWriter( new OutputStreamWriter(sk.getOutputStream())), true); // 向服务器发送信息 out.println("你好!"); // 接收服务器信息 System.out.println(in.readLine()); } catch (Exception e) { System.out.println(e); } } }
package test43; import java.net.*; import java.io.*; /** * Title: 简单服务器服务端 * Description: 这是一个简单的服务器端程序 * Filename: SampleServer.java */ public class SampleServer { public static void main(String[] arges) { try { int port = 8888; // 使用8888端口创建一个ServerSocket ServerSocket mySocket = new ServerSocket(port); // 等待监听是否有客户端连接 Socket sk = mySocket.accept(); // 输入缓存 BufferedReader in = new BufferedReader(new InputStreamReader(sk .getInputStream())); // 输出缓存 PrintWriter out = new PrintWriter(new BufferedWriter( new OutputStreamWriter(sk.getOutputStream())), true); // 打印接收到的客户端发送过来的信息 System.out.println("客户端信息:" + in.readLine()); // 向客户端回信息 out.println("你好,我是服务器。我使用的端口号: " + port); } catch (Exception e) { System.out.println(e); } } }
package test44; // 文件名:moreServer.java import java.io.*; import java.net.*; /** * Title: 多线程服务器 * Description: 本实例使用多线程实现多服务功能。 * Filename: */ class moreServer { public static void main (String [] args) throws IOException { System.out.println ("Server starting...\n"); //使用8000端口提供服务 ServerSocket server = new ServerSocket (8000); while (true) { //阻塞,直到有客户连接 Socket sk = server.accept (); System.out.println ("Accepting Connection...\n"); //启动服务线程 new ServerThread (sk).start (); } } } //使用线程,为多个客户端服务 class ServerThread extends Thread { private Socket sk; ServerThread (Socket sk) { this.sk = sk; } //线程运行实体 public void run () { BufferedReader in = null; PrintWriter out = null; try{ InputStreamReader isr; isr = new InputStreamReader (sk.getInputStream ()); in = new BufferedReader (isr); out = new PrintWriter ( new BufferedWriter( new OutputStreamWriter( sk.getOutputStream ())), true); while(true){ //接收来自客户端的请求,根据不同的命令返回不同的信息。 String cmd = in.readLine (); System.out.println(cmd); if (cmd == null) break; cmd = cmd.toUpperCase (); if (cmd.startsWith ("BYE")){ out.println ("BYE"); break; }else{ out.println ("你好,我是服务器!"); } } }catch (IOException e) { System.out.println (e.toString ()); } finally { System.out.println ("Closing Connection...\n"); //最后释放资源 try{ if (in != null) in.close (); if (out != null) out.close (); if (sk != null) sk.close (); } catch (IOException e) { System.out.println("close err"+e); } } } }
package test44; //文件名:SocketClient.java import java.io.*; import java.net.*; class SocketThreadClient extends Thread { public static int count = 0; // 构造器,实现服务 public SocketThreadClient(InetAddress addr) { count++; BufferedReader in = null; PrintWriter out = null; Socket sk = null; try { // 使用8000端口 sk = new Socket(addr, 8000); InputStreamReader isr; isr = new InputStreamReader(sk.getInputStream()); in = new BufferedReader(isr); // 建立输出 out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sk .getOutputStream())), true); // 向服务器发送请求 System.out.println("count:" + count); out.println("Hello"); System.out.println(in.readLine()); out.println("BYE"); System.out.println(in.readLine()); } catch (IOException e) { System.out.println(e.toString()); } finally { out.println("END"); // 释放资源 try { if (in != null) in.close(); if (out != null) out.close(); if (sk != null) sk.close(); } catch (IOException e) { } } } } // 客户端 public class SocketClient { @SuppressWarnings("static-access") public static void main(String[] args) throws IOException, InterruptedException { InetAddress addr = InetAddress.getByName(null); for (int i = 0; i < 10; i++) new SocketThreadClient(addr); Thread.currentThread().sleep(1000); } }
package test45; import java.net.*; import java.io.*; /** * Title: 使用SMTP发送邮件 * Description: 本实例通过使用socket方式,根据SMTP协议发送邮件 * Copyright: Copyright (c) 2003 * Filename: sendSMTPMail.java */ public class sendSMTPMail { /** *方法说明:主方法 *输入参数:1。服务器ip;2。对方邮件地址 *返回类型: */ public static void main(String[] arges) { if (arges.length != 2) { System.out.println("use java sendSMTPMail hostname | mail to"); return; } sendSMTPMail t = new sendSMTPMail(); t.sendMail(arges[0], arges[1]); } /** *方法说明:发送邮件 *输入参数:String mailServer 邮件接收服务器 *输入参数:String recipient 接收邮件的地址 *返回类型: */ public void sendMail(String mailServer, String recipient) { try { // 有Socket打开25端口 Socket s = new Socket(mailServer, 25); // 缓存输入和输出 BufferedReader in = new BufferedReader(new InputStreamReader(s .getInputStream(), "8859_1")); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s .getOutputStream(), "8859_1")); // 发出“HELO”命令,表示对服务器的问候 send(in, out, "HELO theWorld"); // 告诉服务器我的邮件地址,有些服务器要校验这个地址 send(in, out, "MAIL FROM: <213@qq.com>"); // 使用“RCPT TO”命令告诉服务器解释邮件的邮件地址 send(in, out, "RCPT TO: " + recipient); // 发送一个“DATA”表示下面将是邮件主体 send(in, out, "DATA"); // 使用Subject命令标注邮件主题 send(out, "Subject: 这是一个测试程序!"); // 使用“From”标注邮件的来源 send(out, "From: riverwind <213@qq.com>"); send(out, "\n"); // 邮件主体 send(out, "这是一个使用SMTP协议发送的邮件!如果打扰请删除!"); send(out, "\n.\n"); // 发送“QUIT”端口邮件的通讯 send(in, out, "QUIT"); s.close(); } catch (Exception e) { e.printStackTrace(); } } /** *方法说明:发送信息,并接收回信 *输入参数: *返回类型: */ public void send(BufferedReader in, BufferedWriter out, String s) { try { out.write(s + "\n"); out.flush(); System.out.println(s); s = in.readLine(); System.out.println(s); } catch (Exception e) { e.printStackTrace(); } } /** *方法说明:重载方法。向socket写入信息 *输入参数:BufferedWriter out 输出缓冲器 *输入参数:String s 写入的信息 *返回类型: */ public void send(BufferedWriter out, String s) { try { out.write(s + "\n"); out.flush(); System.out.println(s); } catch (Exception e) { e.printStackTrace(); } } }
package test46; import java.io.*; import java.net.*; /** * Title: SMTP协议接收邮件 * Description: 通过Socket连接POP3服务器,使用SMTP协议接收邮件服务器中的邮件 * Filename: */ class POP3Demo { /** *方法说明:主方法,接收用户输入 *输入参数: *返回类型: */ @SuppressWarnings("static-access") public static void main(String[] args){ if(args.length!=3){ System.out.println("USE: java POP3Demo mailhost user password"); } new POP3Demo().receive(args[0],args[1],args[2]); } /** *方法说明:接收邮件 *输入参数:String popServer 服务器地址 *输入参数:String popUser 邮箱用户名 *输入参数:String popPassword 邮箱密码 *返回类型: */ public static void receive (String popServer, String popUser, String popPassword) { String POP3Server = popServer; int POP3Port = 110; Socket client = null; try { // 创建一个连接到POP3服务程序的套接字。 client = new Socket (POP3Server, POP3Port); //创建一个BufferedReader对象,以便从套接字读取输出。 InputStream is = client.getInputStream (); BufferedReader sockin; sockin = new BufferedReader (new InputStreamReader (is)); //创建一个PrintWriter对象,以便向套接字写入内容。 OutputStream os = client.getOutputStream (); PrintWriter sockout; sockout = new PrintWriter (os, true); // true for auto-flush // 显示POP3握手信息。 System.out.println ("S:" + sockin.readLine ()); /*-- 与POP3服务器握手过程 --*/ System.out.print ("C:"); String cmd = "user "+popUser; // 将用户名发送到POP3服务程序。 System.out.println (cmd); sockout.println (cmd); // 读取POP3服务程序的回应消息。 String reply = sockin.readLine (); System.out.println ("S:" + reply); System.out.print ("C:"); cmd = "pass "; // 将密码发送到POP3服务程序。 System.out.println(cmd+"*********"); sockout.println (cmd+popPassword); // 读取POP3服务程序的回应消息。 reply = sockin.readLine (); System.out.println ("S:" + reply); System.out.print ("C:"); cmd = "stat"; // 获取邮件数据。 System.out.println(cmd); sockout.println (cmd); // 读取POP3服务程序的回应消息。 reply = sockin.readLine (); System.out.println ("S:" + reply); if(reply==null) return; System.out.print ("C:"); cmd = "retr 1"; // 将接收第一丰邮件命令发送到POP3服务程序。 System.out.println(cmd); sockout.println (cmd); // 输入了RETR命令并且返回了成功的回应码,持续从套接字读取输出, // 直到遇到<CRLF>.<CRLF>。这时从套接字读出的输出就是邮件的内容。 if (cmd.toLowerCase ().startsWith ("retr") && reply.charAt (0) == '+') do { reply = sockin.readLine (); System.out.println ("S:" + reply); if (reply != null && reply.length () > 0) if (reply.charAt (0) == '.') break; } while (true); cmd = "quit"; // 将命令发送到POP3服务程序。 System.out.print (cmd); sockout.println (cmd); } catch (IOException e) { System.out.println (e.toString ()); } finally { try { if (client != null) client.close (); } catch (IOException e) { } } } }
package test47; import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; /** * Title: 使用javamail发送邮件 Description: 演示如何使用javamail包发送电子邮件。这个实例可发送多附件 Filename: * Mail.java */ public class Mail { String to = "";// 收件人 String from = "";// 发件人 String host = "";// smtp主机 String username = ""; String password = ""; String filename = "";// 附件文件名 String subject = "";// 邮件主题 String content = "";// 邮件正文 @SuppressWarnings("unchecked") Vector file = new Vector();// 附件文件集合 /** *方法说明:默认构造器 输入参数: 返回类型: */ public Mail() { } /** *方法说明:构造器,提供直接的参数传入 输入参数: 返回类型: */ public Mail(String to, String from, String smtpServer, String username, String password, String subject, String content) { this.to = to; this.from = from; this.host = smtpServer; this.username = username; this.password = password; this.subject = subject; this.content = content; } /** *方法说明:设置邮件服务器地址 输入参数:String host 邮件服务器地址名称 返回类型: */ public void setHost(String host) { this.host = host; } /** *方法说明:设置登录服务器校验密码 输入参数: 返回类型: */ public void setPassWord(String pwd) { this.password = pwd; } /** *方法说明:设置登录服务器校验用户 输入参数: 返回类型: */ public void setUserName(String usn) { this.username = usn; } /** *方法说明:设置邮件发送目的邮箱 输入参数: 返回类型: */ public void setTo(String to) { this.to = to; } /** *方法说明:设置邮件发送源邮箱 输入参数: 返回类型: */ public void setFrom(String from) { this.from = from; } /** *方法说明:设置邮件主题 输入参数: 返回类型: */ public void setSubject(String subject) { this.subject = subject; } /** *方法说明:设置邮件内容 输入参数: 返回类型: */ public void setContent(String content) { this.content = content; } /** *方法说明:把主题转换为中文 输入参数:String strText 返回类型: */ public String transferChinese(String strText) { try { strText = MimeUtility.encodeText(new String(strText.getBytes(), "GB2312"), "GB2312", "B"); } catch (Exception e) { e.printStackTrace(); } return strText; } /** *方法说明:往附件组合中添加附件 输入参数: 返回类型: */ public void attachfile(String fname) { file.addElement(fname); } /** *方法说明:发送邮件 输入参数: 返回类型:boolean 成功为true,反之为false */ public boolean sendMail() { // 构造mail session Properties props = System.getProperties(); props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { // 构造MimeMessage 并设定基本的值 MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress(from)); InternetAddress[] address = { new InternetAddress(to) }; msg.setRecipients(Message.RecipientType.TO, address); subject = transferChinese(subject); msg.setSubject(subject); // 构造Multipart Multipart mp = new MimeMultipart(); // 向Multipart添加正文 MimeBodyPart mbpContent = new MimeBodyPart(); mbpContent.setText(content); // 向MimeMessage添加(Multipart代表正文) mp.addBodyPart(mbpContent); // 向Multipart添加附件 Enumeration efile = file.elements(); while (efile.hasMoreElements()) { MimeBodyPart mbpFile = new MimeBodyPart(); filename = efile.nextElement().toString(); FileDataSource fds = new FileDataSource(filename); mbpFile.setDataHandler(new DataHandler(fds)); mbpFile.setFileName(fds.getName()); // 向MimeMessage添加(Multipart代表附件) mp.addBodyPart(mbpFile); } file.removeAllElements(); // 向Multipart添加MimeMessage msg.setContent(mp); msg.setSentDate(new Date()); // 发送邮件 Transport.send(msg); } catch (MessagingException mex) { mex.printStackTrace(); Exception ex = null; if ((ex = mex.getNextException()) != null) { ex.printStackTrace(); } return false; } return true; } /** *方法说明:主方法,用于测试 输入参数: 返回类型: */ public static void main(String[] args) { Mail sendmail = new Mail(); sendmail.setHost("smtp.sohu.com"); sendmail.setUserName("du_jiang"); sendmail.setPassWord("31415926"); sendmail.setTo("dujiang@sricnet.com"); sendmail.setFrom("du_jiang@sohu.com"); sendmail.setSubject("你好,这是测试!"); sendmail.setContent("你好这是一个带多附件的测试!"); // Mail sendmail = new // Mail("dujiang@sricnet.com","du_jiang@sohu.com","smtp.sohu.com","du_jiang","31415926","你好","胃,你好吗?"); sendmail.attachfile("c:\\test.txt"); sendmail.attachfile("DND.jar"); sendmail.sendMail(); } }// end
package test48; import javax.mail.*; import javax.mail.internet.*; import java.util.*; import java.io.*; /** * Title: 使用JavaMail接收邮件 * Description: 实例JavaMail包接收邮件,本实例没有实现接收邮件的附件。 * Filename: POPMail.java */ public class POPMail{ /** *方法说明:主方法,接收用户输入的邮箱服务器、用户名和密码 *输入参数: *返回类型: */ public static void main(String args[]){ try{ String popServer=args[0]; String popUser=args[1]; String popPassword=args[2]; receive(popServer, popUser, popPassword); }catch (Exception ex){ System.out.println("Usage: java com.lotontech.mail.POPMail"+" popServer popUser popPassword"); } System.exit(0); } /** *方法说明:接收邮件信息 *输入参数: *返回类型: */ public static void receive(String popServer, String popUser, String popPassword){ Store store=null; Folder folder=null; try{ //获取默认会话 Properties props = System.getProperties(); Session session = Session.getDefaultInstance(props, null); //使用POP3会话机制,连接服务器 store = session.getStore("pop3"); store.connect(popServer, popUser, popPassword); //获取默认文件夹 folder = store.getDefaultFolder(); if (folder == null) throw new Exception("No default folder"); //如果是收件箱 folder = folder.getFolder("INBOX"); if (folder == null) throw new Exception("No POP3 INBOX"); //使用只读方式打开收件箱 folder.open(Folder.READ_ONLY); //得到文件夹信息,获取邮件列表 Message[] msgs = folder.getMessages(); for (int msgNum = 0; msgNum < msgs.length; msgNum++){ printMessage(msgs[msgNum]); } }catch (Exception ex){ ex.printStackTrace(); } finally{ //释放资源 try{ if (folder!=null) folder.close(false); if (store!=null) store.close(); }catch (Exception ex2) { ex2.printStackTrace(); } } } /** *方法说明:打印邮件信息 *输入参数:Message message 信息对象 *返回类型: */ public static void printMessage(Message message){ try{ //获得发送邮件地址 String from=((InternetAddress)message.getFrom()[0]).getPersonal(); if (from==null) from=((InternetAddress)message.getFrom()[0]).getAddress(); System.out.println("FROM: "+from); //获取主题 String subject=message.getSubject(); System.out.println("SUBJECT: "+subject); //获取信息对象 Part messagePart=message; Object content=messagePart.getContent(); //附件 if (content instanceof Multipart){ messagePart=((Multipart)content).getBodyPart(0); System.out.println("[ Multipart Message ]"); } //获取content类型 String contentType=messagePart.getContentType(); //如果邮件内容是纯文本或者是HTML,那么打印出信息 System.out.println("CONTENT:"+contentType); if (contentType.startsWith("text/plain")|| contentType.startsWith("text/html")){ InputStream is = messagePart.getInputStream(); BufferedReader reader=new BufferedReader(new InputStreamReader(is)); String thisLine=reader.readLine(); while (thisLine!=null){ System.out.println(thisLine); thisLine=reader.readLine(); } } System.out.println("-------------- END ---------------"); }catch (Exception ex){ ex.printStackTrace(); } } }
package test49; import java.io.*; import java.net.*; /** * Title: 获取一个URL文本 * Description: 通过使用URL类,构造一个输入对象,并读取其内容。 * Filename: getURL.java */ public class getURL{ public static void main(String[] arg){ if(arg.length!=1){ System.out.println("USE java getURL url"); return; } new getURL(arg[0]); } /** *方法说明:构造器 *输入参数:String URL 互联网的网页地址。 *返回类型: */ public getURL(String URL){ try { //创建一个URL对象 URL url = new URL(URL); //读取从服务器返回的所有文本 BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); String str; while ((str = in.readLine()) != null) { //这里对文本出来 display(str); } in.close(); } catch (MalformedURLException e) { } catch (IOException e) { } } /** *方法说明:显示信息 *输入参数: *返回类型: */ private void display(String s){ if(s!=null) System.out.println(s); } }
package test50; import java.io.*; /** * Title: 客户请求分析 * Description: 获取客户的HTTP请求,分析客户所需要的文件 * Filename: Request.java */ public class Request{ InputStream in = null; /** *方法说明:构造器,获得输入流。这时客户的请求数据。 *输入参数: *返回类型: */ public Request(InputStream input){ this.in = input; } /** *方法说明:解析客户的请求 *输入参数: *返回类型:String 请求文件字符 */ public String parse() { //从Socket读取一组数据 StringBuffer requestStr = new StringBuffer(2048); int i; byte[] buffer = new byte[2048]; try { i = in.read(buffer); } catch (IOException e) { e.printStackTrace(); i = -1; } for (int j=0; j<i; j++) { requestStr.append((char) buffer[j]); } System.out.print(requestStr.toString()); return getUri(requestStr.toString()); } /** *方法说明:获取URI字符 *输入参数:String requestString 请求字符 *返回类型:String URI信息字符 */ private String getUri(String requestString) { int index1, index2; index1 = requestString.indexOf(' '); if (index1 != -1) { index2 = requestString.indexOf(' ', index1 + 1); if (index2 > index1) return requestString.substring(index1 + 1, index2); } return null; } }
package test50; import java.io.*; /** * Title: 发现HTTP内容和文件内容 * Description: 获得用户请求后将用户需要的文件读出,添加上HTTP应答头。发送给客户端。 * Filename: Response.java */ public class Response{ OutputStream out = null; /** *方法说明:发送信息 *输入参数:String ref 请求的文件名 *返回类型: */ @SuppressWarnings("deprecation") public void Send(String ref) throws IOException { byte[] bytes = new byte[2048]; FileInputStream fis = null; try { //构造文件 File file = new File(WebServer.WEBROOT, ref); if (file.exists()) { //构造输入文件流 fis = new FileInputStream(file); int ch = fis.read(bytes, 0, 2048); //读取文件 String sBody = new String(bytes,0); //构造输出信息 String sendMessage = "HTTP/1.1 200 OK\r\n" + "Content-Type: text/html\r\n" + "Content-Length: "+ch+"\r\n" + "\r\n" +sBody; //输出文件 out.write(sendMessage.getBytes()); }else { // 找不到文件 String errorMessage = "HTTP/1.1 404 File Not Found\r\n" + "Content-Type: text/html\r\n" + "Content-Length: 23\r\n" + "\r\n" + "<h1>File Not Found</h1>"; out.write(errorMessage.getBytes()); } } catch (Exception e) { // 如不能实例化File对象,抛出异常。 System.out.println(e.toString() ); } finally { if (fis != null) fis.close(); } } /** *方法说明:构造器,获取输出流 *输入参数: *返回类型: */ public Response(OutputStream output) { this.out = output; } }
package test50; import java.io.*; import java.net.*; /** * Title: WEB服务器 * Description: 使用Socket创建一个WEB服务器,本程序是多线程系统以提高反应速度。 * Filename: WebServer.java */ class WebServer { public static String WEBROOT = "";//默认目录 public static String defaultPage = "index.htm";//默认文件 public static void main (String [] args) throws IOException {//使用输入的方式通知服务默认目录位置,可用./root表示。 if(args.length!=1){ System.out.println("USE: java WebServer ./rootdir"); return; }else{ WEBROOT = args[0]; } System.out.println ("Server starting...\n"); //使用8000端口提供服务 ServerSocket server = new ServerSocket (8000); while (true) { //阻塞,直到有客户连接 Socket sk = server.accept (); System.out.println ("Accepting Connection...\n"); //启动服务线程 new WebThread (sk).start (); } } } /** * Title: 服务子线程 * Description: 使用线程,为多个客户端服务 * Filename: */ class WebThread extends Thread { private Socket sk; WebThread (Socket sk) { this.sk = sk; } /** *方法说明:线程体 *输入参数: *返回类型: */ public void run () { InputStream in = null; OutputStream out = null; try{ in = sk.getInputStream(); out = sk.getOutputStream(); //接收来自客户端的请求。 Request rq = new Request(in); //解析客户请求 String sURL = rq.parse(); System.out.println("sURL="+sURL); if(sURL.equals("/")) sURL = WebServer.defaultPage; Response rp = new Response(out); rp.Send(sURL); }catch (IOException e) { System.out.println (e.toString ()); } finally { System.out.println ("Closing Connection...\n"); //最后释放资源 try{ if (in != null) in.close (); if (out != null) out.close (); if (sk != null) sk.close (); } catch (IOException e) { } } } }
相关文章推荐
- 100个Java经典例子(41-50)初学者的利器高手的宝典JavaSE
- 100个Java经典例子(41-50)初学者的利器高手的宝典JavaSE
- 100个Java经典例子--初学者的利器高手的宝典JavaSE
- 100个Java经典例子(1-10)初学者的利器高手的宝典JavaSE
- 100个Java经典例子(11-20)初学者的利器高手的宝典JavaSE
- java--100个Java经典例子(11-20)初学者的利器高手的宝典JavaSE
- 100个Java经典例子(1-10)初学者的利器高手的宝典JavaSE
- 100个Java经典例子(21-30)初学者的利器高手的宝典JavaSE
- java--100个Java经典例子(21-30)初学者的利器高手的宝典JavaSE
- 100个Java经典例子(31-40)初学者的利器高手的宝典JavaSE
- java--100个Java经典例子(1-10)初学者的利器高手的宝典JavaSE
- 100个Java经典例子(11-20)初学者的利器高手的宝典JavaSE
- 100个Java经典例子(21-30)初学者的利器高手的宝典JavaSE
- 100个Java经典例子(1-10)初学者的利器高手的宝典JavaSE
- 100个Java经典例子(51-60)初学者的利器高手的宝典JavaSE
- 100个Java经典例子(31-40)初学者的利器高手的宝典JavaSE
- Java经典基础练习41-50
- JAVA之——经典算法50题
- 一个经典例子让你彻彻底底理解java回调机制
- 一个经典例子让你彻彻底底理解java回调机制