Java×Ô¶¨Òå¶àÏ̷߳þÎñÆ÷
// multi.MultiServer.java
package multi;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class MultiServer {
private int port = 8000;
private int backlog = 42;
private ServerSocket server_socket;
private ThreadPool threadPool;
private final int POOL_SIZE = 7;
public MultiServer()throws IOException{
server_socket = new ServerSocket();
server_socket.setReuseAddress(true);
server_socket.bind(new InetSocketAddress(port),backlog);
int system_cpu_total = Runtime.getRuntime().availableProcessors();
threadPool = new ThreadPool(POOL_SIZE * system_cpu_total);
System.out.println("--- server started! ---");
}
public void service(){
while(true){
try{
Socket socket = server_socket.accept();
threadPool.execute(new WorkHandler(socket));
} catch(Exception e){
e.printStackTrace();
}
}
}
public static void main(String[] args)throws Exception {
MultiServer server = new MultiServer();
server.service();
}
}
// multi.ThreadPool.java
package multi;
import java.util.LinkedList;
public class ThreadPool extends ThreadGroup{
private static int threadPoolId;
private boolean isClosed = false;
private LinkedList<Runnable> workQueue;
public ThreadPool(int poolSize){
super("ThreadPool-" + (threadPoolId++));
setDaemon(true);
workQueue = new LinkedList<Runnable>();
for(int i=0;i<poolSize;i++){
new WorkThread(this,i).start(); // Æô¶¯¹¤×÷ÕßÏß³Ì
}
}
public synchronized void execute(Runnable task){
if(isClosed){
throw new IllegalStateException("The " + getName()
+ " has closed!");
}
if(task != null){
workQueue.add(task);
// Ò»´ÎÖ»ÓÐÒ»¸öÏß³ÌÈ¡ÈÎÎñ[getTask() ±» synchronized ÐÞÊÎ]
// ËùÓд˴¦Ã»ÓÐʹÓÃnotifyAll();
Ïà¹ØÎĵµ£º
2010-03-10
×î½ü×öÏîÄ¿Óöµ½ÁËÒ»¸öÎÊÌ⣬ÐèÒª½«¿Í»§¶Ëµ½´¦µÄ¼ÓÃÜZIPѹËõ°üÖ±½Óµ¼È뵽ϵͳÖС£ÔÚÍøÉϲéÁËϹØÓÚZIP½âÃܵÄÎÊÌ⣬·¢ÏÖÁËwinzipaesÕâ¸ö¿ªÔ´ÏîÄ¿http://code.google.com/p/winzipaes £¬Õâ¸öÏîÄ¿ÐèÒªÒÀÀµbcprov-jdk14-145.jarÕâ¸ö¿ªÔ´°ü£¬Á½¸ö°üÁªºÏʹÓÿÉÒÔ½âÃÜAES -256Ëã·¨µÄ¼ÓÃÜÃÜÂë¡£
ÒòΪϵͳʹÓõÄÊÇJDK1.4 ......
Java¼¯ºÏ¿ò¼Üͼ
¡¡¡¡¼¯ºÏ½Ó¿Ú£º6¸ö½Ó¿Ú£¨¶ÌÐéÏß±íʾ£©£¬±íʾ²»Í¬¼¯ºÏÀàÐÍ£¬ÊǼ¯ºÏ¿ò¼ÜµÄ»ù´¡¡£
¡¡¡¡³éÏóÀࣺ5¸ö³éÏóÀࣨ³¤ÐéÏß±íʾ£©£¬¶Ô¼¯ºÏ½Ó¿ÚµÄ²¿·ÖʵÏÖ¡£¿ÉÀ©Õ¹Îª×Ô¶¨Ò弯ºÏÀà¡£
¡¡¡¡ÊµÏÖÀࣺ8¸öʵÏÖÀࣨʵÏß±íʾ£©£¬¶Ô½Ó¿ÚµÄ¾ßÌåʵÏÖ¡£
¡¡¡¡Ôںܴó³Ì¶ÈÉÏ£¬Ò»µ©ÄúÀí½âÁ˽ӿڣ¬Äú¾ÍÀí½âÁË¿ò¼Ü¡£ËäÈ»Äú×ÜÒª´´½ ......
¸ÄÒ»¸öÕâÑùµÄÌâÄ¿Õýʽ¸æËßÄ㣬ÎÒÖÕÓÚ¶¯ÊּǼһЩjavaµÄ±Ê¼ÇÁË¡£ÊµÔںܾÃûÓÐдjavaÁË¡£¹þ¹þ£¬²»ºÃÒâ˼£¬ÎªÁËflash ºǫ́ÓиöÖ§³Ö£¬java Õⲿ·Ö»¹ÊÇҪѧһµã£¬µ«²»ÊǺÜÖØµãѧ¡£Õⲿ·Ö¶«Î÷£¬ÎÒ²»ÊìϤ£¬Ò²ÔÚÂýÂý¼Ç¼¡£×Ô¼º¿´µÄ±Ê¼Ç£¬ËùÒÔÒªÊÇÄã²»ÊÇɵB£¬×îºÃ²»Òª¿´¡£
ÔÚ½ñÍíÁ·Ï°µÄʱºò£¬³¢ÊÔÈ¥Á¬½Ó¿É°®µÄ ......
±¾ÎĽéÉÜJavaµÄBigDecimalÀàµÄÓ¦Óá£JavaÔÚjava.math°üÖÐÌṩµÄAPIÀàBigDecimal£¬ÓÃÀ´¶Ô³¬¹ý16λÓÐЧλµÄÊý½øÐо«È·µÄÔËËã¡£
BigDecimalÀà
Ë«¾«¶È¸¡µãÐͱäÁ¿double¿ÉÒÔ´¦Àí16λÓÐЧÊý¡£ÔÚʵ¼ÊÓ¦ÓÃÖУ¬ÐèÒª¶Ô¸ü´ó»òÕ߸üСµÄÊý½øÐÐÔËËãºÍ´¦Àí¡£JavaÔÚjava.math°üÖÐÌṩµÄAPIÀàBigDecimal£¬ÓÃÀ´¶Ô³¬¹ý16λÓÐЧλµÄÊý½øÐо«È· ......
±¾ÎÄÊ×ÏȽéÉÜjavaÁ¬½ÓoracleҪעÒâµÄ¼¸µã£¬È»ºó½éÉܼ¸ÖÖ³£ÓõÄÁ¬½Ó·½Ê½¡£
Ò»¡¢¼¸µã×¢Ò⣺
1¡¢ÔÚ¿Í»§¶ËÈí¼þ¿ª·¢ÖÐʹÓÃThinÇý¶¯³ÌÐò
ÔÚ¿ª·¢JavaÈí¼þ·½Ã棬OracleµÄÊý¾Ý¿âÌṩÁËËÄÖÖÀàÐ͵ÄÇý¶¯³ÌÐò£¬¶þÖÖÓÃÓÚÓ¦ÓÃÈí¼þ¡¢applets¡¢servletsµÈ¿Í»§¶ËÈí¼þ£¬ÁíÍâ¶þÖÖÓÃÓÚÊý¾Ý¿âÖеÄJava´æ´¢¹ý³ÌµÈ·þÎñÆ ......