ÕªÒª£º Ëæ×ÅÒµÎñµÄ¿ìËÙÔö³¤£¬Ò»¸öÏßÉϽ»Ò×ϵͳÔÚÓÐÏÞµÄʱ¼äÄÚ£¬²»µ«ÐèҪά³ÖÏßÉÏϵͳµÄÎȶ¨£¬»¹ÒªÖ§³ÅÐÂÐèÇóµÄ¿ª·¢£¬·ñÔò½«ÓÉÓÚ¼¼ÊõÖ§³Å²»Àû´íʧҵÎñ·¢Õ¹¹Ø¼üʱ¼ä´°¿Ú¡£±¾ÎÄ·ÖÏíÁËÒ»´Î´ÓÆóÒµ¼¶¼Ü¹¹µ½»¥ÁªÍø¼Ü¹¹Ç¨ÒƵŤ³Ìʵ¼ù¡£
Òò¹¤×÷±ä¶¯½ÓÊÖÁËÒ»¸öÔÆÆ½Ì¨¸ÄÔìÏîÄ¿£¬¸ÃÏîÄ¿ÊôÓÚ¼º¾ÉÏÏßÇÒÿÔÂÓдóÁ¿½»Ò×¶©µ¥µÄÔÆÆ½Ì¨£¬Ö®Ç°²ÉÓõÄÊÇSpringMVC+Hibernate+FreeMarker+MySql¼Ü¹¹£¬¼¯webǰ¶ËºÍ½Ó¿ÚΪһÌå¡£¾¹ý¶ÔÒµÎñÔö³¤Ç÷ÊÆµÄÆÀ¹À£¬Ô¤¼Æ½«ÔÚÊýÔÂÖ®ºóÎÞ·¨Ö§³ÅÔÓÐÒµÎñµÄÔö³¤¡£
µ±Ç°¼Ü¹¹Ö÷Òª´æÔÚÈçÏÂÎÊÌ⣺
1¡¢À©Õ¹Î¬»¤À§ÄÑ
2¡¢ÐÔÄÜÖð½¥»ºÂý¡£
Ëæ×ÅÒµÎñµÄ¿ìËÙÔö³¤±ÆÆÈÎÒÃǶÔÏÖÓмܹ¹½øÐÐÖØ¹¹¡£ÓÉÓÚÊÇÏßÉϽ»Ò×ϵͳ£¬Áô¸öÎÒÃǸÄÔìµÄʱ¼ä·Ç³£ÓÐÏÞ£¬²»µ«ÐèҪά³ÖÏßÉÏϵͳµÄÎȶ¨»¹ÒªÖ§³ÅÐÂÐèÇóµÄ¿ª·¢£¬·ñÔò½«ÓÉÓÚ¼¼ÊõÖ§³Å²»Àû´íʧҵÎñ·¢Õ¹¹Ø¼üʱ¼ä´°¿Ú£¬»ùÓÚÎñʵµÄÔÔòÎÒÃÇÖÆ¶¨Èçϲ½Öè½øÐÐÖ𲽸ÄÔì¡£
Ò»¡¢È¥hibernateÇ¨ÒÆÖÁmybatis
´ÓhibernateÇ¨ÒÆÖÁmybatis£¬ DAO²ã»ù±¾ÉÏÐèÒªÖØÐ´Ò»±é£¬ÆäÖÐÖ÷Òª¹¤×÷Á¿ÎªÀí½âÔhibernate
DAO²ãÂß¼²¢·Òë³Ésql£¬Ö÷ÒªÊÇϸÐĻÆäÖÐÐèҪעÒâµÄÊÇmybatis¶¯Ì¬±íÃûµÄ´«È룬ÐèÒª½«mapperµÄstatementTypeÀàÐÍÐÞ¸ÄΪSTATEMENT£¬²¢½«SQLÓï¾äÖÐ#{}¶¼¸ÄΪ${}¡£ÔÚʹÓÃ${}´«²Î¹ý³ÌÖУ¬ÐèÒªÌØ±ð×¢ÒâSQL×¢Èë¹¥»÷ΣÏÕ¡£Ò»°ã»áÔÚSpringMVC²ã½«Ãô¸Ð×Ö·ûתÒå¡£±ÈÈç
">" Óá°>¡±±íʾ£¬ÍøÉÏÓкܶà·â×°º¯Êý£¬»òÕßapache common
lang°üµÄStringEscapeUtils.escapeHtml()¡£
¶þ¡¢È¡µôsqlÖ®¼äµÄ±í¹ØÁª
È¥µôsqlÖ®¼äµÄ±í¹ØÁª£¬´«Í³¹ØÏµÐÍÊý¾Ý¿âÀíÂÛÖеÄÈý·¶Ê½ÔÚ»¥ÁªÍøµÄÊý¾Ý¿âÄ£ÐÍÖÐÊDz»ÊÊÓõģ¬Ö÷ÒªÔì³ÉµÄÎÊÌâÊÇÎÞ·¨½øÐзֱí·Ö¿â¡£Õâ¾ÍÒªÇóËùÓÐdao·½·¨±ØÐë±£³Öµ¥±í²Ù×÷¡£
±£³Öµ¥±í²Ù×÷Ϊ·Ö±í¸ÄÔìµì¶¨Á˸ÄÔì»ù´¡¡£
Èý¡¢Service²ã¶ÔÔ×ÓDAOÒµÎñÂß¼½øÐÐ×é×°
ÔÚÈ¡µô±í¹ØÁªºóÐèÒª¸ÄÔìËùÓÐʵÌå½á¹¹¡£Ê×ÏÈÈ¡µôʵÌåÖ®¼äµÄÒ»¶ÔÒ»£¬¶à¶ÔÒ»£¬¶à¶Ô¶à¹ØÁª¹ØÏµ£¬½«ÊµÌåÖ®¼äµÄÒýÓùØÏµÐÞ¸ÄΪ¶ÔʵÌåIDµÄÒýÓá£Í¬Ê±ÎªÁËÉϲ㷽±ãʹÓÃÐèÒªÒýÈëÒµÎñBO¶ÔÏó£¬ÔÚservice²ãµ÷Óöà¸öÔ×ÓµÄdao·½·¨²¢×é×°³ÉÒµÎñBO¶ÔÏó¡£
ËÄ¡¢·Ö±í
ÔÚµ¥ÕÅ±í³¬¹ý2000ÍòÌõ¼Ç¼ºó£¬mysqlµÄ²éѯÐÔÄÜ¿ªÊ¼½µµÍ£¬±í±ä¸ü×ֶεȴýʱ¼äÂþ³¤¡£·Ö±íºóÌáÉýÐÔÄܺÍÀ©Õ¹ÐÔºóÓÖ´øµãÒÔÏÂÎÊÌ⣺
·ÓɲßÂÔµÄÑ¡Ôñ¡£
ÈçºÎ¸ù¾ÝÖ÷¼ü¡¢¶©µ¥ºÅµÈ·Óɵ½ÕýÈ·µÄ±í¡£
·Ö±íºó·ÖÒ³²éѯ
ÈçºÎ±£Ö¤ÉÏÏߺó·Ö±íÊý¾Ýƽ»¬´ÓÀÏ¿â¹ý¶Éµ½Ð¿⡣
1¡¢Â·ÓɲßÂÔµÄÑ¡Ôñ
Ê×ÏÈ£¬ÎÒÃǶÔÊý¾Ý¿âÖÐËùÓеıí¼Ç¼½øÐзÖÎö£¬Í³¼ÆÃ¿ÕűíµÄÊý¾ÝÁ¿´óС¡£¾¹ýͳ¼ÆºóÎÒÃÇ·¢ÏÖËæ×ÅÒµÎñµÄÔö³¤ÒµÎñÊý¾ÝÒ²»á¿ìËÙ½øÐÐÔö³¤µÄ±íÖ÷ҪΪ¶©µ¥±í¡¢¶©µ¥Ã÷ϸ±í¡£ÆäËüµÄ±íÔÚ½üÁ½ÄêÄÚ²¢²»»áËæ×ÅÒµÎñµÄÔö³¤¶ø¿ìËÙÔö³¤¡£ËùÒÔÖ»ÐèÒª¶Ô¶©µ¥±í¡¢¶©µ¥Ã÷ϸ±í½øÐвð·Ö¡£
·ÓɲßÂÔÑ¡Ôñ²»¿ÉÄÜ×öµ½ÍêÃÀ£¬ÊÀ½ç±¾À´Ò²ÊDz»ÍêÃÀµÄ£¬¹Ø¼üÊÇÔÚºÏÊʵĽ׶ÎÑ¡ÔñºÏÊʵIJßÂÔ£¬¼´ÄÜÂú×ãÉÌÒµÕ½ÂÔʱ¼ä´°¿ÚµãÓÖÄÜÔÚ×·Çó¼¼ÊõÍêÃÀÐÍÖÐѰÕÒÆ½ºâµã¡£ÎÒÃÇÔ¤²âÁËÒµÎñ½ü5ÄêµÄ·¢Õ¹Ä¿±êΪÏÖÓÐÒµ5±¶µÄÔö³¤£¬·¢ÏÖ°´Ô½øÐвð·Ö¿ÉÒÔ±£Ö¤Ã¿ÔÂÊý¾ÝÁ¿¾ùµÍÓÚ2000ÍòÌõ£¬»ùÓÚÎñʵµÄÔÔòÎÒÃÇÑ¡ÔñÁ˰´Ô½øÐзֱíµÄ·ÓɲßÂÔ¡£
¾¹ý¶à·½Ã濼ÂÇÔÚÄܹ»¼æ¹ÌЧÂʺͽµµÍ¸ÄÔ츴ÔӶȵÄ˼·Ìá³öÀÏÊý¾ÝÀϰ취£¬ÐÂÊý¾Ýа취¡£ÀÏÊý¾ÝÖеÄÖ÷¼ü¼º¾Éú³É£¬Èç¹û°´ÐµÄÖ÷¼ü²ßÂÔÖØÐÂÉú³É£¬»áÇ£³¶µ½ËùÓйØÁª±íÖеÄID¶¼ÐèÒª½øÐÐÌæ»»£¬ÕâÑù»áÔö¼Ó¸ÄÔìµÄ¸´ÔӶȺ͹¤×÷Á¿£¬ËùÒÔ×îÖÕ¿¼Âǽ«ÐÂÊý¾Ý°´ÕÕеÄÖ÷¼üÉú³É²ßÂÔ½øÐÐÉú³É¡£µ±°´Ô·ֱíÈÔ²»ÄÜÂú×ãÒµÎñÖ§³ÖÒªÇóʱ£¬¿ÉÒÔÔÙ´ÎÒÔÈÕÐÅÏ¢¼ÆËã¸üϸÁ£¶ÈµÄ²ð·Ö²ßÂÔ£¬ÀýÈç¿É°´ÖÜΪµ¥Î»½øÐбíÕÛ·Ö¡£
2¡¢¸ù¾ÝÖ÷¼ü»ò¶©µ¥ºÅÑ¡ÔñÕýÈ·µÄ±í
Ö÷¼üµÄÉú³ÉËã·¨ ×ÔÔöIDµÄÉú³É£¬²Î¿¼twitter SnowflakeËã·¨

ÔÚJavaÓïÑÔϵͳÖУ¬¿ÉÒÔͨ¹ýLongÀ´±íʾÖ÷¼ü£¬LongÀàÐͰüº¬64¸ö룬ÕýºÃ¿ÉÒÔ´æ´¢¸ÃID£¬ 1ÖÁ41λµÄ¶þ½øÖÆÊýÖµÓÃÀ´±íʾÈÕÆÚʱ¼ä´Á£¬43ÖÁ53λ¿ÉÒÔ±íʾ1024̨Ö÷»ú£¬ÎÒÃÇ¿ÉÒÔΪÿ̨API·þÎñÆ÷·ÖÅäÒ»¸ö¹¤×÷»úÆ÷ID£¬43ÖÁ55λ¿ÉÒÔÉú³ÉÏß³ÌΨһµÄÐòÁкš£Ô¤ÁôµÄ¹¤×÷»úÆ÷ID¿ÉÒÔ×÷ΪÄϱ±Ë«»î»ú·¿µÄ·ÓÉÅжÏÌõ¼þ£¬Èç1,2,3,4ºÅ¹¤×÷»úÆ÷ID·Óɵ½±±»ú·¿API·þÎñÆ÷£¬5,6,7,8¹¤×÷»úºÅID·Óɵ½ÄÏ»ú·¿API·þÎñÆ÷¡£

µ±°´¶©µ¥ºÅ²éѯʱϵͳÊ×Ïȸù¾Ý¶©µ¥ºÅ³¤¶ÈµÄ²»Í¬£¬À´Ñ¡ÔñÊÇ·Óɵ½ÐµÄÇзֶ©µ¥±í£¬»¹ÊÇ·Óɵ½Ô¶©µ¥±í¡£ÒòΪÐÂÖ÷¼üID»á°üº¬ÈÕÆÚÐÅÏ¢£¬ÏµÍ³»á¸ù¾ÝÖ÷¼ü½â¶Á³öÈÕÆÚÐÅÏ¢£¬¸ù¾ÝÔ·ݵIJ»Í¬À´Ñ¡Ôñ¸ÃÊý¾Ý¿â¶ÔÓ¦µÄÔÂ·Ý±í£¬Èç¹û¶ÁÈ¡²»³öÈÕÆÚÐÅÏ¢¾Í¿ÉÒÔÅжϳöΪԶ©µ¥±í¡£
3¡¢ÈçºÎ±£Ö¤ÉÏÏߺó·Ö±íÊý¾Ýƽ»¬´ÓÀϱí¹ý¶Éµ½Ð±í
Ê×ÏÈϵͳÅäÖÃͳһµÄ·Ö±íÇиîʱ¼ä¹«¹²±äÁ¿£¬ÔÚ²åÈë¶©µ¥Ê±ÏÈÅжÏÊÇ·ñÔÚ·Ö±íÇл»Ê±¼äµã֮ǰ£¬Èç¹ûÔÚ·Ö±íÇл»Ê±¼äµã֮ǰÔò½«¶©µ¥Êý¾Ý²åÈëµ½ÀÏ±í£¬·ñÔò½«¶©µ¥Êý¾Ý°´µ±Ç°Ô·ݲ»Í¬²åÈ뵽еIJð·ÖÔÂ±í¡£
4¡¢·Ö±íºó·ÖÒ³²éѯ
ÔÚ¶©µ¥·Ö±íºó´æÔÚµÄÖ÷ÒªÄѵãÊÇ·Ö±íºóÊý¾ÝµÄ·ÖÒ³²éѯ²Ù×÷¡£¼ÙÉèÒÔ2016-07-26 00:00:01 ¿ªÊ¼°´ÔÂ·Ö±í£¬²éѯ2016-05-01
00:00:01ÖÁ2016-09-11 12:00:05ÆÚ¼äµÄËùÓж©µ¥·Ö½âΪÈçϼ¸²½£º
£¨1£©Í¨¹ý¿ªÊ¼Ê±¼ä¡¢½áÊøÊ±¼ä¡¢·Ö±íʱ¼ä¼ÆËã³öÐèÒªµÄ·ÓÉÐÅÏ¢¼¯ºÏ¡£
a.¸ñʽ:±íÃû|ÆðʼÈÕÆÚ|½áÊøÈÕÆÚ
b.·Óɼ¯ºÏ£º
Order|2016-05-01 00:00:01|2016-07-26 00:00:01
Order_2016_07|2016-07-26 00:00:01|2016-07-01
23:59:59
Order_2016_08|2016-08-01 00:00:01|2016-08-31
23:59:59
Order_2016_09|2016-09-01 00:00:01|2016-09-11
23:59:59 |
£¨2£©°´·ÖÒ³ÐÅÏ¢£¨pageNo,pageSize£©¼°Â·ÓÉÐÅÏ¢¼¯ºÏ²éѯ¶©µ¥»ù±¾ÐÅÏ¢¼¯ºÏ¡£
a.±éÀú·Óɼ¯ºÏ·µ»Ø×ܼǼÊý¼°±í¸ÅÀ¨ÐÅÏ¢¼¯ºÏ¡£
i. ±í¸ÅÀ¨ÐÅÏ¢¶¨Ò壺±íÃû¡¢ÆðʼÐÐÊý¡¢¼Ç¼Êý¡¢Â·ÓÉÐÅÏ¢£»
ii. ±í¸ÅÀ¨ÐÅÏ¢¼¯ºÏ£º
Order¡¢1¡¢137¡¢Order|2016-05-0100:00:01|2016-07-26 00:00:01 Order_2016_07¡¢137¡¢10¡¢Order_2016_07|2016-07-2600:00:01 |2016-07-01 23:59:59 Order_2016_08¡¢147¡¢32¡¢2016-08-0100:00:01|2016-08-31 23:59:59 Order_2016_09¡¢179¡¢10¡¢2016-09-0100:00:01|2016-09-11 23:59:59 |
iii. ·½·¨ÃèÊö:
private RouteTableResult getRouteTableResult (OrderSearchModel searchModel,List<String> routeTables) {
Integer sumRow = new Integer(0);
Map<String, RouteTable> routeTableCountMap
= new TreeMap<String,RouteTable>();
RouteTableResult routeTableResult = new RouteTableResult();
for (String routeTable : routeTables) {
String[] routeTableArray = routeTable.split("\\|");
if (routeTableArray.length == 3) {
String tableName =getTableByRouteTableAndSetSearchModel(searchModel,
routeTableArray);
Integer orderCount = ticketOrderDao.searchOrderCount(tableName,searchModel);
Integer startIndex = sumRow.intValue();
RouteTable routeInfo = new RouteTable(startIndex,
orderCount, routeTable);
routeTableCountMap.put(tableName, routeInfo);
sumRow += orderCount;
}
}
routeTableResult.setRouteTableCountMap(routeTableCountMap);
routeTableResult.setSumRow(sumRow);
returnrouteTableResult;
} |
b.¸ù¾Ý·ÖÒ³ÐÅÏ¢£¬²éѯ³ö¸Ã·ÖÒ³ÐèÒª¿çÔ½µÄ±í·ÓÉÐÅÏ¢¼¯ºÏ£¬¾ßÌåËã·¨ÈçÏ£º
i. ±éÀú¸ÅÀ¨ÐÅÏ¢¼¯ºÏ
ii. µ±¿ªÊ¼ÐкͽáÊøÐÐÓ뵱ǰ·ÓÉÇø¼äÓн»¼¯Ôò˵Ã÷ÓÐÊý¾ÝÔڸñíÄÚ²¢½«¸Ã±í¼ÓÈë±éÀú·Óɼ¯ºÏ£»
iii. Èç¹û·ÓɱíÐÅÏ¢¼¯ºÏÖÐÓÐÊý¾ÝÇÒ²»Âú×ãÉÏÊöÌõ¼þÔòÍ˳ö£»
iv. ·µ»ØÐèÒª¿çÔ½µÄ±í·ÓÉÐÅÏ¢¼¯ºÏ£»
v. ·½·¨ÃèÊö£º
private List<String> getRouteTables (OrderSearchModel searchModel,Map<String,RouteTable> routeTableCountMap) {
List<String> routeTableInfoList = new
ArrayList<String>();
Integer startIndex = (searchModel.getPageNo()
- 1) * searchModel.getPageSize();
Integer endIndex = startIndex + searchModel.getPageSize()
-1;
for (Entry<String, RouteTable> entry :
routeTableCountMap.entrySet()) {
RouteTable routeTable = entry.getValue();
//µ±¿ªÊ¼ÐкͽáÊøÐÐÓëµ±¼ä·ÓÉÇøÓн»¼¯
if( !(startIndex > routeTable.getEndIndex())
&& !(endIndex < routeTable.getStartIndex())){
routeTableInfoList.add(routeTable.getRouteInfo());
//Èç¹û·ÓɱíÐÅÏ¢¼¯ºÏÖÐÓÐÊý¾ÝÇÒ²»Âú×ãÉÏÊöÌõ¼þÔòÍ˳ö
}elseif (routeTableInfoList.size()>0) {
break;
}
}
returnrouteTableInfoList;
} |
c.²éѯ¸Ã·ÖÒ³ÏµĶ©µ¥ÁÐ±í£¬¾ßÌåËã·¨ÈçÏ£º
i.Ê×ÏÈÉèÖÃ×îºóÒ»´Î±éÀúµÄ±íΪÐèÒª¿çԽ·ÓÉÐÅÏ¢¼¯ºÏµÄµÚÒ»ÕÅ±í£»
ii.ÉèÖüº¶ÁÌõÊýreadCountµÈÓÚ0£»
iii.±éÀúÐèÒª¿çԽ·ÓÉÐÅÏ¢¼¯ºÏ£»
iv. ¸ù¾Ý·ÓÉÐÅÏ¢·µ»Ø±íÃû¼°ÉèÖÃËÑË÷Ìõ¼þ£»
v. ¸ù¾Ý±íÃû»ñȡ·ÓɸÅÒªÐÅÏ¢£»
vi.¼ÆË㿪ʼÐкţ¬Èç¹ûµ±Ç°±íÃûºÍ×îºó±éÀúµÄ±íÃûÏàͬ£¬Ôò¿ªÊ¼ÐкŵÈÓÚ(µ±Ç°µÄÒ³Êý-1)*ÔÇëÇóÒ³Ãæ´óС(originalPageSize)-µ±Ç°±í·ÓɸÅÒªÐÅÏ¢ÆðʼÐУ¬·ñÔò¿ªÐкÅÉèÖÃΪ0£»
vii. ¼ÆËãµ±Ç°Ò³Ãæ´óСpageSizeΪÔÇëÇóÒ³Ãæ´óС(originalPageSize) ¨C
¼º¶ÁÌõÊý(readCount)£»
viii. ÉèÖÃËÑË÷Ìõ¼þÆðʼÐкš¢µ±Ç°Ò³Ãæ´óС£»
ix.ÉèÖÃ×îºóÒ»´Î±éÀúµÄ±íΪµ±Ç°±í£»
x.¸ù¾Ýµ±Ç°±íÃû¡¢ËÑË÷Ìõ¼þµ÷ÓÃdao·µ»Ø¶©µ¥»ù±¾ÐÅÏ¢ÁÐ±í£¬²¢¼ÓÈë¶©µ¥×ÜÁÐ±í¼¯ºÏ£»
xi.¼º¶ÁÊýÔö¼Óµ±Ç°¶©µ¥Áбí´óС£»
xii. Èç¹û¼º¶ÁÊý´óÓÚµÈÓÚÔÇëÇóÒ³Ãæ´óСÔòÌø³öÑ»·£¬·ñÔò¼ÌÐøÑ»·£»
xiii.·µ»Ø¶©µ¥×ÜÁÐ±í¼¯ºÏ£»
xiv. ·½·¨ÃèÊö£º
private List<Order> getOrderListByRoutePageTable (OrderSearchModelsearchModel,
Integer originalPageSize, Map<String, RouteTable>
routeTableCountMap,
List<String> routePageTables) {
Integer readCount = 0;
List<Order> orderList = new ArrayList<Order>();
if (routePageTables != null && routePageTables.size()
> 0) {
String[] routeTableArrayFirst = routePageTables.get(0).split("\\|");
String lastTableName = null ;
if (routeTableArrayFirst.length == 3) {
lastTableName = routeTableArrayFirst[0];
}
for (String routeTable : routePageTables) {
String[] routeTableArray = routeTable.split("\\|");
if (routeTableArray.length != 3) {
break;
}
String tableName = getTableByRouteTableAndSetSearchModel(searchModel,
routeTableArray);
RouteTable routeTableInfo = routeTableCountMap.get(tableName);
Integer startRow = 0;
if( tableName.equals(lastTableName)){
startRow = (searchModel.getPageNo()-1)*originalPageSize
- routeTableInfo.getStartIndex();
}
Integer pageSize = originalPageSize - readCount;
searchModel.setStartRow(startRow);
searchModel.setPageSize(pageSize);
lastTableName = tableName;
List<Order> orderListPage = orderDao.searchOrderList(tableName,searchModel);
orderList.addAll(orderListPage);
readCount += orderListPage.size();
if (readCount.intValue() >= originalPageSize)
{
break;
}
}
}
returnorderList;
} |
£¨3£©¸ù¾ÝOrder¼¯ºÏ×é×°OrderBo¼¯ºÏ
£¨4£©¸ù¾Ý·µ»ØµÄ×ÜÊý¼°·ÖÒ³ÐÅÏ¢×é×°·ÖÒ³½á¹û
Îå¡¢mysqlÖ÷´Ó·ÖÀë¡¢ÒýÈëÈý¼¶»º´æ
ΪÁËÌá¸ßÐÔÄÜ£¬Ê×ÏÈÅäÖÃmysqlÖ÷´Ó·ÖÀ룬ͨ¹ýSpring¶àÊý¾ÝÔ´À´ÊµÏÖ¶¯Ì¬Çл»¡£Èý¼¶»º´æÖ÷Òª·ÖΪ£º£¨1£©¡¢Ï̼߳¶£ºµ±Í¬Ò»Ïß³ÌÇëÇóʱ£¬Ï̼߳¶»º´æ°ó¶¨ÔÚÏ̼߳äThreadLocal±äÁ¿ÉÏ£¬¿ÉÒÔ½µµÍÏ̼߳äÇл»Ôì³ÉµÄʱ¼ä¿ªÏú¡£(2)¡¢½ø³Ì¼¶£º½ø³Ì¼¶»º´æÔÚͬһjvmÖй²Ïí»º´æ£¬¼õËÙÉÙ¿ç½ø³Ì¼äÍøÂ翪Ïú¡££¨3£©¡¢¿ç½ø³ÌµÄ¼¯ÖÐʽ»º´æ£ºÒ»°ãʹÓÃredis¡¢memcacheÄڴ滺´æÀ´½µµÍ¶ÔÊý¾Ý¿âϵͳµÄ³å»÷¡£ÔÚ×öÍêÒÔÉÏÓÅ»¯ºó£¬ÎÒÃǵĽӿÚÏìÓ¦ËÙ¶ÈÌá¸ßÁ˽ü5±¶¡£
Áù¡¢½áÊøÓï
¹ØÓÚ·Ö²¼Ê½·þÎñ»¯¡¢ÒìµØÄϱ±»ú·¿Ë«»î£¬ÕâÀïÁô¸ö×÷Òµ£¬ÈÕºó³ÉÎĺʹó¼Ò·ÖÏí¡£ |