ÈȵãÌÖÂÛ£ºJava±à³Ì·ç¸ñµÄ¸Ä±ä
×î½üStephan SchmidtÔÚ²©¿ÍÖз¢±íÁËÌâΪ¡¶ÏÂÒ»´úJava±à³Ì·ç¸ñ¡·µÄÎÄÕ£¬²ûÊöÁËËûÑÛÖÐJava±à³Ì·ç¸ñµÄ¸Ä±ä£¬ÒÔ¼°Î´À´µÄ×ßÏò£ºÐí¶à¹«Ë¾ºÍ¿ª·¢ÈËÔ±ÕýÔÚ´ÓJavaתÏòÆäËû±à³ÌÓïÑÔ£ºRuby¡¢Python¡¢Groovy¡¢Erlang»òScalaµÈµÈ¡£²»¹ýÄã¿ÉÄÜ×ö²»µ½ÕâÒ» µã¡£¼´±ãÈç´Ë£¬ÄãÒ²¿ÉÒԸıäÄãµÄ±à³Ì·ç¸ñ£¬»ñÈ¡ÕâЩÐÂÓïÑÔµÄÓÅÊÆ¡£ÊÂʵÉÏ£¬ÔÚ¹ýÈ¥µÄ15ÄêÖУ¬Java±à³Ì·ç¸ñÒ²ÒѾÓÐÃ÷ÏԱ仯ÁË¡£
StephanÔÚÎÄÕÂÖÐÌá³öÁËÒÔϼ¸µã£º
¾¡¿ÉÄܵرê×¢final£ºÈÃËùÓж«Î÷²»¿É±ä£¬°Ñ±äÁ¿±êΪfinal¿ÉÒÔ×èÖ¹¸Ä±äËüµÄÖµ¡£ºÜ¶àʱºò£¬ÖØÐÂΪ±äÁ¿¸³Öµ»áÒýÈëbug£¬ÄãÓ¦¸ÃʹÓÃеıäÁ¿¡£³ý´ËÖ®Í⣬final¿ÉÒÔÌá¸ß´úÂëµÄ¿É¶ÁÐÔ¡£ÎÒÕë¶ÔÕâ¸ö»°Ì⻹д¹ýһƪÎÄÕ£º¡¶JavaÖÐËùÓбäÁ¿¶¼Ó¦¸ÃÊÇfinalµÄ¡·
ûÓÐsetter£ºÐí¶àJava³ÌÐòÔ±»á×ÔÈ»¶øÈ»µØΪÀàÖÐËùÓеÄ×ֶμÓÉÏsetter¡£Ë¼¿¼Ò»Ï£¬ÕæµÄÿ¸ö×ֶζ¼ÐèÒªÐÞ¸ÄÂ𣿸üºÃµÄ·½·¨ÊÇ´´½¨°üº¬¸Ä±äºó״̬µÄжÔÏó¡£´ËÍ⣬ҲÊÔ×ÅÈ¥³ýgetter£¬ÎÒÃÇÓ¦¸Ã×ñÑ“Tell, don’t ask”µÄ˼Ïë¡£
±ÜÃâʹÓÃÑ»·À´²Ù×÷List£º´Óº¯Êýʽ±à³ÌÄÇÀï»ñµÃµÄ¾Ñ飬ѻ·²¢²»ÊǽøÐм¯ºÏ²Ù×÷×îºÃ·½·¨¡£ÀýÈ磬ÎÒÃÇ¿ÉÒÔʹÓÃGoogle CollectionsÌṩµÄ¹ýÂ˹¦ÄÜ¡£
Predicate canDrinkBeer = new Predicate() {
public boolean apply(HasAge hasAge) {
return hasAge.isOlderThan( 16 );
}
};
List<Person> beerDrinkers = filter(persons, canDrinkBeer);
ʹÓõ¥ÐдúÂ룺JavaÊÇÒ»ÃÅ·±ÔÓ£¨noisy£©µÄÓïÑÔ£¬ÎÒÃÇÓ¦¸Ã±àд¸ü¾«È·µÄ´úÂë¡£³¢ÊÔ½«´úÂëдΪһÐС£ÀýÈ磺
public int add(int a, int b) { return a + b; }
ʹÓôóÁ¿½Ó¿Ú£ºÁìÓòÇý¶¯Éè¼ÆÒѾ´óÐÐÆäµÀ£¬Ò»¸öÓ¦¸Ã²ð·ÖΪ¶àÖÖ“½ÇÉ«”£¬¼´ÊµÏÖ¶àÖÖ½Ó¿Ú£¬Ìá¸ß¸´Óó̶ȡ£·½·¨Ó¦¸ÃÃæÏò“½ÇÉ«”£¬¶ø²»ÊÇÃæÏòÌض¨µÄÀà¡£ÎÒÔÚ¡¶²»ÒªÔÚJavaÖÐʹÓÃString¡·Ò»ÎÄÖÐÌÖÂÛÁ˸ü¶àÕâ·½ÃæµÄÄÚÈÝ¡£
ʹÓÃErlang·ç¸ñµÄ²¢·¢£ºJavaµÄ²¢·¢ÌØÐÔ£¨ÈçlockºÍsynchronized£©¹ýÓڵͶˣ¬ÄÑÒÔʹÓá£Erlang·ç¸ñµÄ²¢·¢ÊÇÒ»ÖÖ¸üºÃµÄ×ö·¨¡£Javaƽ̨ÉÏÒѾÓÐÁËAkkaºÍActorom¡£´ËÍ⣬Ҳ¿ÉÒÔʹÓÃjava.util.concurrentÖеÄJoin/ForkºÍÊý¾Ý½á¹¹½øÐбà³Ì¡£
ʹÓÃFluent Interface£ºFluent Interface¿ÉÒÔʹ´úÂë¸ü¶Ì£¬¸üÈÝÒ×±àд¡£Google CollectionsÖеÄMapMakerÊǸö²»´íµÄʾÀý£º
ConcurrentMap graphs = new MapMaker()
.concurrencyLevel(32)
.softKeys()
.weakValues()
.expiration(3
Ïà¹ØÎĵµ£º
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--ÿҳÏÔʾ¼Ç¼ÌõÊý
@currentpage int output,--µÚ¼¸Ò³
@orderid nvarchar(50),--Ö÷¼üÅÅÐò
@sort int,--ÅÅÐò·½Ê½£¬1±íʾÉýÐò£¬0±íʾ½µÐòÅÅÁÐ
......
Java NIO APIÏê½â
ÔÚJDK
1.4ÒÔÇ°£¬JavaµÄIO²Ù×÷¼¯ÖÐÔÚjava.ioÕâ¸ö°üÖУ¬ÊÇ»ùÓÚÁ÷µÄ×èÈû£¨blocking£©API¡£¶ÔÓÚ´ó¶àÊýÓ¦ÓÃÀ´Ëµ£¬ÕâÑùµÄAPIʹÓúܷ½
±ã£¬È»¶ø£¬Ò»Ð©¶ÔÐÔÄÜÒªÇó½Ï¸ßµÄÓ¦Óã¬ÓÈÆäÊÇ·þÎñ¶ËÓ¦Óã¬ÍùÍùÐèÒªÒ»¸ö¸üΪÓÐЧµÄ·½Ê½À´´¦ÀíIO¡£´ÓJDK 1.4Æð£¬NIO
API×÷Ϊһ¸ö»ùÓÚ»º³åÇø£¬²¢ÄÜÌṩ·Ç×èÈû(non-blo ......
Ò»ÖÖÊǼ̳Ð×ÔThreadÀà.Thread ÀàÊÇÒ»¸ö¾ßÌåµÄÀ࣬¼´²»ÊdzéÏóÀ࣬¸ÃÀà·â×°ÁËÏ̵߳ÄÐÐΪ¡£Òª´´½¨Ò»¸öỊ̈߳¬³ÌÐòÔ±±ØÐë´´½¨Ò»¸ö´Ó Thread Àർ³öµÄÐÂÀà¡£³ÌÐòԱͨ¹ý¸²¸Ç Thread µÄ run() º¯ÊýÀ´Íê³ÉÓÐÓõŤ×÷¡£Óû§²¢²»Ö±½Óµ÷Óô˺¯Êý£»¶øÊÇͨ¹ýµ÷Óà Thread µÄ start() º¯Êý£¬¸Ãº¯ÊýÔÙµ÷Óà run()¡£
&nb ......
ÔÚjava³ÌÐòÖУ¬ÍòÊÂÍòÎï½Ô¶ÔÏ󣬼´Ê¹ÊÇjava³ÌÐò±¾Éí£¬Ò²ÊÇÒ»¸ö¶ÔÏó
Ò»¡¢ReferenceÊDzÙ×ݶÔÏóÖ®Ô¿³×
cÓïÑÔÖÐÊÇʹÓÃÖ¸ÕëÀ´²Ù×ݶÔÏóµÄ£¬µ«ÊÇjavaÄØ£¿ÓõÄÊÇreferenceÀ´²Ù×ݶÔÏó£¬ÎÒÏ°¹ß°ÑËû½Ð×ö¾ä±ú£¬¾ä±úºÍ¶ÔÏóµÄ¹Øϵ¾ÍÏëÊǵçÊÓÒ£¿ØÆ÷ºÍµçÊÓ»ú ......
JavaµÄºËÐÄAPIÊǷdz£ÅÓ´óµÄ,Õâ¸ø¿ª·¢ÕßÀ´Ëµ´øÀ´Á˺ܴóµÄ·½±ã£¬¾³£ÈËÓÐÆÀÂÛ,javaÈóÌÐòÔ±±äɵ¡£
µ«ÊÇһЩÄÚÈÝÎÒÈÏΪÊDZØÐëÕÆÎյģ¬·ñÔò²»¿ÉÒÔÊìÁ·ÔËÓÃjava£¬Ò²²»»áʹÓþͺÜÄÑ°ìÁË¡£
1¡¢java.lang°üϵÄ80£¥ÒÔÉϵÄÀàµÄ¹¦ÄܵÄÁé»îÔËÓá£
2¡¢java.util°üϵÄ80£¥ÒÔÉϵÄÀàµÄÁé»îÔËÓã¬ÌرðÊǼ¯ºÏÀàÌåϵ¡¢Õý¹æ±í´ïʽ¡¢Ê±¼ä¡ ......