µÚÒ»£¬Ì¸Ì¸final, finally, finalizeµÄÇø±ð¡£
¡¡¡¡×î³£±»Îʵ½¡£¡¡¡¡
¡¡¡¡µÚ¶þ£¬Anonymous Inner Class (ÄäÃûÄÚ²¿Àà) ÊÇ·ñ¿ÉÒÔextends(¼Ì³Ð)ÆäËüÀ࣬ÊÇ·ñ¿ÉÒÔimplements(ʵÏÖ)interface(½Ó¿Ú)?¡¡¡¡
¡¡¡¡µÚÈý£¬Static Nested Class ºÍ Inner ClassµÄ²»Í¬£¬ËµµÃÔ½¶àÔ½ºÃ(ÃæÊÔÌâÓеĺÜÁýͳ)¡£¡¡¡¡
¡¡¡¡µÚËÄ£¬&ºÍ&&µÄÇø±ð¡£
¡¡¡¡Õâ¸öÎʵúÜÉÙ¡£¡¡¡¡
¡¡¡¡µÚÎ壬HashMapºÍHashtableµÄÇø±ð¡£
¡¡¡¡³£ÎÊ¡£¡¡¡¡
¡¡¡¡µÚÁù£¬Collection ºÍ CollectionsµÄÇø±ð¡£
¡¡¡¡ÄãǧÍò±ð˵һ¸öÊǵ¥ÊýÒ»¸öÊǸ´Êý¡£¡¡¡¡
¡¡¡¡µÚÆß£¬Ê²Ã´Ê±ºòÓÃassert¡£
¡¡¡¡API¼¶µÄ¼¼ÊõÈËÔ±ÓпÉÄÜ»áÎÊÕâ¸ö¡£¡¡¡¡
¡¡¡¡µÚ°Ë£¬GCÊÇʲô? ΪʲôҪÓÐGC?
¡¡¡¡»ù´¡¡£¡¡¡¡
¡¡¡¡µÚ¾Å£¬String s = new String("xyz");´´½¨Á˼¸¸öString Object?¡¡¡¡
¡¡¡¡µÚÊ®£¬Math.round(11.5)µÈì¶¶àÉÙ? Math.round(-11.5)µÈì¶¶àÉÙ?¡¡¡¡
¡¡¡¡µÚʮһ£¬short s1 = 1; s1 = s1 + 1;ÓÐʲô´í? short s1 = 1; s1 += 1;ÓÐʲô´í?
¡¡¡¡ÃæÊÔÌâ¶¼ÊǺܱä̬µÄ£¬Òª×öºÃÊÜ۵Ä×¼±¸¡£¡¡¡¡
¡¡¡¡µÚÊ®¶þ£¬sleep() ºÍ wait() ÓÐÊ²Ã´Çø±ð?
¡¡¡¡¸ãÏ̵߳Ä×î°®¡£¡¡¡¡
¡¡¡¡µÚÊ®Èý£¬JavaÓÐûÓÐgoto?
JAVAÏà¹Ø»ù´¡ÖªÊ¶
......
±¾ÎĽéÉÜJavaµÄBigDecimalÀàµÄÓ¦Óá£JavaÔÚjava.math°üÖÐÌṩµÄAPIÀàBigDecimal£¬ÓÃÀ´¶Ô³¬¹ý16λÓÐЧλµÄÊý½øÐо«È·µÄÔËËã¡£
BigDecimalÀà
Ë«¾«¶È¸¡µãÐͱäÁ¿double¿ÉÒÔ´¦Àí16λÓÐЧÊý¡£ÔÚʵ¼ÊÓ¦ÓÃÖУ¬ÐèÒª¶Ô¸ü´ó»òÕ߸üСµÄÊý½øÐÐÔËËãºÍ´¦Àí¡£JavaÔÚjava.math°üÖÐÌṩµÄAPIÀàBigDecimal£¬ÓÃÀ´¶Ô³¬¹ý16λÓÐЧλµÄÊý½øÐо«È·µÄÔËËã¡£±í5.7ÖÐÁгöÁËBigDecimalÀàµÄÖ÷Òª¹¹ÔìÆ÷ºÍ·½·¨¡£
±í5.7 BigDecimalÀàµÄÖ÷Òª¹¹ÔìÆ÷ºÍ·½·¨
¹¹ÔìÆ÷ Ãè Êö
BigDecimal(int)´´½¨Ò»¸ö¾ßÓвÎÊýËùÖ¸¶¨ÕûÊýÖµµÄ¶ÔÏó¡£
BigDecimal(double)´´½¨Ò»¸ö¾ßÓвÎÊýËùÖ¸¶¨Ë«¾«¶ÈÖµµÄ¶ÔÏó¡£
BigDecimal(long)´´½¨Ò»¸ö¾ßÓвÎÊýËùÖ¸¶¨³¤ÕûÊýÖµµÄ¶ÔÏó¡£
BigDecimal(String)´´½¨Ò»¸ö¾ßÓвÎÊýËùÖ¸¶¨ÒÔ×Ö·û´®±íʾµÄÊýÖµµÄ¶ÔÏó¡£
Ðø±í
·½ ·¨Ãè Êö
add(BigDecimal)BigDecimal¶ÔÏóÖеÄÖµÏà¼Ó£¬È»ºó·µ»ØÕâ¸ö¶ÔÏó¡£
subtract(BigDecimal)BigDecimal¶ÔÏóÖеÄÖµÏà¼õ£¬È»ºó·µ»ØÕâ¸ö¶ÔÏó¡£
multiply(BigDecimal)BigDecimal¶ÔÏóÖеÄÖµÏà³Ë£¬È»ºó·µ»ØÕâ¸ö¶ÔÏó¡£
divide(BigDecimal)BigDecimal¶ÔÏóÖеÄÖµÏà³ý£¬È»ºó·µ»ØÕâ¸ö¶ÔÏó¡£
toString()½«BigDecimal¶ÔÏóµÄÊýֵת»»³É×Ö·û´®¡£
doubleValue()½«BigDecimal¶ÔÏó ......
JavaÓïÑÔ»ù´¡ÖªÊ¶
³ÌÐòÔ±¶Ô³ÌÐòÖеĸ÷¸öÔªËØ¼ÓÒÔÃüÃûʱʹÓõÄÃüÃû¼ÇºÅ³ÆÎª±êʶ·û£¨identifier£©¡£
JavaÓïÑÔÖУ¬±êʶ·ûÊÇÒÔ×Öĸ£¬Ï»®Ïߣ¨_£©,ÃÀÔª·û($)¿ªÊ¼µÄÒ»¸ö×Ö·ûÐòÁУ¬ºóÃæ¿ÉÒÔ¸ú×Öĸ£¬Ï»®Ïߣ¬ÃÀÔª·û£¬Êý×Ö¡£
ÀýÈ磬identifier£¬userName£¬User_Name£¬_sys_val£¬ $changeΪºÏ·¨µÄ±êʶ·û£¬¶ø2mail room#£¬class Ϊ·Ç·¨µÄ±êʶ·û¡£
±£Áô×Ö
¾ßÓÐרÃŵÄÒâÒåºÍÓÃ;£¬²»Äܵ±×÷Ò»°ãµÄ±êʶ·ûʹÓã¬ÕâЩ±êʶ·û³ÆÎª±£Áô×Ö/¹Ø¼ü×Ö£¬ÏÂÃæÁгöÁËËùÓб£Áô×Ö£º
JavaÖеÄÊý¾ÝÀàÐÍ»®·Ö
javaÓïÑÔµÄÊý¾ÝÀàÐÍÓмòµ¥ÀàÐͺ͸´ºÏÀàÐÍ£º
¼òµ¥Êý¾ÝÀàÐͰüÀ¨£º¡¡ ¡¡¡¡¡¡
ÕûÊýÀàÐÍ£ºbyte£¬ short£¬ int£¬ long¡¡¡¡¡¡
¡¡¸¡µãÀàÐÍ£ºfloat£¬double¡¡¡¡¡¡¡¡¡¡
×Ö·ûÀàÐÍ£ºchar¡¡¡¡¡¡¡¡¡¡
²¼¶ûÀàÐÍ£ºboolean
¸´ºÏÊý¾ÝÀàÐͰüÀ¨£º¡¡¡¡¡¡¡¡¡¡class¡¡¡¡¡¡¡¡¡¡interface¡¡¡¡¡¡¡¡¡¡Êý×é
³£Á¿ºÍ±äÁ¿
³£Á¿£ºÓñ£Áô×ÖfinalÀ´ÊµÏÖ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
±äÁ¿£ºÊÇjava ³ÌÐòÖеĻù±¾´æ´¢µ¥Ôª£¬ËüµÄ¶¨Òå°üÀ¨±äÁ¿Ãû¡¢±äÁ¿ÀàÐͺÍ×÷ÓÃÓò¼¸¸ö²¿·Ö
±äÁ¿µÄ×÷ÓÃÓòÖ¸Ã÷¿É·ÃÎʸñäÁ¿µÄÒ»¶Î´úÂ룬ÉùÃ÷Ò»¸ö±äÁ¿µÄͬʱҲ¾ÍÖ¸Ã÷Á ......
±¾ÎÄÊ×ÏȽéÉÜjavaÁ¬½ÓoracleҪעÒâµÄ¼¸µã£¬È»ºó½éÉܼ¸ÖÖ³£ÓõÄÁ¬½Ó·½Ê½¡£
Ò»¡¢¼¸µã×¢Ò⣺
1¡¢ÔÚ¿Í»§¶ËÈí¼þ¿ª·¢ÖÐʹÓÃThinÇý¶¯³ÌÐò
ÔÚ¿ª·¢JavaÈí¼þ·½Ã棬OracleµÄÊý¾Ý¿âÌṩÁËËÄÖÖÀàÐ͵ÄÇý¶¯³ÌÐò£¬¶þÖÖÓÃÓÚÓ¦ÓÃÈí¼þ¡¢applets¡¢servletsµÈ¿Í»§¶ËÈí¼þ£¬ÁíÍâ¶þÖÖÓÃÓÚÊý¾Ý¿âÖеÄJava´æ´¢¹ý³ÌµÈ·þÎñÆ÷¶ËÈí¼þ¡£ÔÚ¿Í»§»ú¶ËÈí¼þµÄ¿ª·¢ÖУ¬ÎÒÃÇ¿ÉÒÔÑ¡ÔñOCIÇý¶¯³ÌÐò»òThinÇý¶¯³ÌÐò¡£OCIÇý¶¯³ÌÐòÀûÓÃJava±¾µØ»¯½Ó¿Ú£¨JNI£©£¬Í¨¹ýOracle¿Í»§¶ËÈí¼þÓëÊý¾Ý¿â½øÐÐͨѶ¡£ThinÇý¶¯³ÌÐòÊÇ´¿JavaÇý¶¯³ÌÐò£¬ËüÖ±½ÓÓëÊý¾Ý¿â½øÐÐͨѶ¡£½¨ÒéʹÓÃThinÇý¶¯³ÌÐò£¬ÒòΪͨ¹ý¶à´Î²âÊÔ·¢ÏÖ£¬ÔÚͨ³£Çé¿öÏ£¬ThinÇý¶¯³ÌÐòµÄÐÔÄܶ¼³¬¹ýÁËOCIÇý¶¯³ÌÐò¡£
2¡¢¹Ø±Õ×Ô¶¯Ìá½»¹¦ÄÜ£¬Ìá¸ßϵͳÐÔÄÜ
ÔÚµÚÒ»´Î½¨Á¢ÓëÊý¾Ý¿âµÄÁ¬½Óʱ£¬ÔÚȱʡÇé¿öÏ£¬Á¬½ÓÊÇÔÚ×Ô¶¯Ìύģʽϵġ£ÎªÁË»ñµÃ¸üºÃµÄÐÔÄÜ£¬¿ÉÒÔͨ¹ýconn.setAutoCommit(false)¹Ø±Õ×Ô¶¯Ìá½»¹¦ÄÜ¡£Ò»µ©¹Ø±ÕÁË×Ô¶¯Ìá½»¹¦ÄÜ£¬ÎÒÃǾÍÐèҪͨ¹ýµ÷ÓÃConnectionÀàµÄcommit()ºÍrollback()·½·¨À´È˹¤µÄ·½Ê½¶ÔÊÂÎñ½øÐйÜÀí¡£
3¡¢¼¸ÖÖ²Ù×÷sqlµÄ¶ÔÏó£ºStatement,PreparedStatement,CallableStatement
& ......
// 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 {
M ......
ͨ³££¬¶àÏß³ÌÖ®¼äÐèҪе÷¹¤×÷¡£ÀýÈ磬ä¯ÀÀÆ÷µÄÒ»¸öÏÔʾͼƬµÄÏß³ÌdisplayThreadÏëÒªÖ´ÐÐÏÔʾͼƬµÄÈÎÎñ£¬±ØÐëµÈ´ýÏÂÔØÏß³ÌdownloadThread½«¸ÃͼƬÏÂÔØÍê±Ï¡£Èç¹ûͼƬ»¹Ã»ÓÐÏÂÔØÍ꣬displayThread¿ÉÒÔÔÝÍ££¬µ±downloadThreadÍê³ÉÁËÈÎÎñºó£¬ÔÙ֪ͨdisplayThread“ͼƬ׼±¸Íê±Ï£¬¿ÉÒÔÏÔʾÁË”£¬Õâʱ£¬displayThread¼ÌÐøÖ´ÐС£
¡¡
¡¡
¡¡¡¡ÒÔÉÏÂß¼¼òµ¥µÄ˵¾ÍÊÇ£ºÈç¹ûÌõ¼þ²»Âú×㣬ÔòµÈ´ý¡£µ±Ìõ¼þÂú×ãʱ£¬µÈ´ý¸ÃÌõ¼þµÄÏ߳̽«±»»½ÐÑ¡£ÔÚJavaÖУ¬Õâ¸ö»úÖÆµÄʵÏÖÒÀÀµÓÚwait/notify¡£µÈ´ý»úÖÆÓëËø»úÖÆÊÇÃÜÇйØÁªµÄ¡£ÀýÈ磺
¡¡¡¡
¡¡¡¡synchronized(obj) {
¡¡¡¡ while(!condition) {
¡¡ ¡¡obj.wait();
¡¡¡¡ }
¡¡¡¡
obj.doSomething();
¡¡¡¡}
¡¡¡¡
¡¡¡¡
µ±Ïß³ÌA»ñµÃÁËobjËøºó£¬·¢ÏÖÌõ¼þcondition²»Âú×㣬ÎÞ·¨¼ÌÐøÏÂÒ»´¦Àí£¬ÓÚÊÇÏß³ÌA¾Íwait()¡£
¡¡¡¡
¡¡¡¡ÔÚÁíÒ»Ïß³ÌBÖУ¬Èç¹ûB¸ü¸ÄÁËijЩÌõ¼þ£¬Ê¹µÃÏß³ÌAµÄconditionÌõ¼þÂú×ãÁË£¬¾Í¿ÉÒÔ»½ÐÑÏß³ÌA£º
¡¡synchronized(obj) {
¡¡¡¡condition = true;
¡¡¡¡obj.notify();
¡¡
¡¡}
¡¡¡¡
¡¡
¡¡ÐèҪעÒâµÄ¸ÅÄîÊÇ£º
¡¡# µ÷ÓÃobjµÄwait(), notify()·½·¨Ç°£¬±ØÐë»ñµÃobjËø£¬Ò²¾ÍÊDZØÐëд ......