afunms

          My Software,My Dream—Forge a more perfect NMS product.

          #

          研究portal的實(shí)現(xiàn)

          研究Java來(lái)實(shí)現(xiàn)Portal。


          1) Dynamic Include
          首先,我們采用最簡(jiǎn)單的思路,我們用100個(gè)JSP文件(1.jsp, 2.jsp, 3.jsp, … 100.jsp等),代表100個(gè)Portlet。
          用戶頁(yè)面MyPage.jsp包含用戶選定的多個(gè)Portlet。
          現(xiàn)在,假設(shè)用戶選取的Portlet為1.jsp, 3.jsp, 7.jsp等3個(gè)Portlet,那么我們?nèi)绾卧贛yPage.jsp中顯示這些Portlet?最直觀的做法是,用jsp:include。比如:
          <table>
          <tr><td>
          <jsp:include page=”1.jsp” />
          </td></tr>
          <tr><td>
          <jsp:include page=”3.jsp” />
          </td></tr>
          <tr><td>
          <jsp:include page=”7.jsp” />
          </td></tr>
          </table>
          由于<jsp:include>只能指定固定的jsp文件名,不能動(dòng)態(tài)指定jsp文件名。我們需要把<jsp:include>翻譯為Java code – RequestDispatcher.include();
          下面我們換成這種寫法。
          Java代碼
          <table>  
          <tr><td>  
          <% request.getRequestDispatcher(”1.jsp”).include(request, response); />  
          </td></tr>  
          <tr><td>  
          <% request.getRequestDispatcher(”3.jsp”).include(request, response); />  
          </td></tr>  
          <tr><td>  
          <% request.getRequestDispatcher(”7.jsp”).include(request, response); />  
          </td></tr>  
          </table> 

          <table>
          <tr><td>
          <% request.getRequestDispatcher(”1.jsp”).include(request, response); />
          </td></tr>
          <tr><td>
          <% request.getRequestDispatcher(”3.jsp”).include(request, response); />
          </td></tr>
          <tr><td>
          <% request.getRequestDispatcher(”7.jsp”).include(request, response); />
          </td></tr>
          </table>

          進(jìn)一步改進(jìn)MyPage.jsp。
          Java代碼
          <% String[] fileNames = {“1.jsp”, “3.jsp”, “7.jsp”}; %>  
          <table>  
          <% for(int i = 0; i < fileNames.length; i++) {  
            String fileName = fileName s[i]; %>  
          <tr><td>  
          <% request.getRequestDispatcher(fileName).include(request, response); />  
          </td></tr>  
          <% } // end for %>  
          </table> 


          其中的fileNames的內(nèi)容可以各種各樣,只要RequestDispatcher能夠處理。
          比如Velocity,fileNames = {“1.vm”, “3.vm”, “7.vm”};
          比如URL,fileNames = {“/portlet1.do”, “/portlet3.do”, “/portlet4.do”};
          我們可以看到,如果我們從用戶配置中讀取fileNames的內(nèi)容,這就是一個(gè)簡(jiǎn)單的Portal實(shí)現(xiàn)。
          Java代碼
          <% String[] fileNames = (String[])session.getAttribute(“portlets.config”); %>  
          <table>  
          <% for(int i = 0; i < fileNames.length; i++) {  
            String fileName = fileNames[i]; %>  
          <tr><td>  
          <% request.getRequestDispatcher(fileName).include(request, response); />  
          </td></tr>  
          <% } // end for %>  
          </table> 


          2) Portlet Interface
          下面我們來(lái)擴(kuò)展這個(gè)例子。
          假設(shè)每個(gè)Portlet都規(guī)定實(shí)現(xiàn)一個(gè)Portlet接口。
          Java代碼
          interface Portlet {  
            void render(request, response);  
          };  
           
          MyPage.jsp如下:  
           
          <% String[] portletClassNames = (String[])session.getAttribute(“portlets.config”); %>  
          <table>  
          <% for(int i = 0; i < portletClassNames.length; i++) {  
            String className = portletClassNames[i];  
            Portlet portlet = (Portlet)Class.forName(className).newInstance(); %>  
          <tr><td>  
          <% portlet. render (request, response); />  
          </td></tr>  
          <% } // end for %>  
          </table>  
           
          Portlet類的示例代碼如下:  
          public class Portlet7{  
            public void render(request, response){  
              request.getRequestDispatcher(“7.jsp”).include(request, response);  
            }  
          }; 

          interface Portlet {
            void render(request, response);
          };

          MyPage.jsp如下:

          <% String[] portletClassNames = (String[])session.getAttribute(“portlets.config”); %>
          <table>
          <% for(int i = 0; i < portletClassNames.length; i++) {
            String className = portletClassNames[i];
            Portlet portlet = (Portlet)Class.forName(className).newInstance(); %>
          <tr><td>
          <% portlet. render (request, response); />
          </td></tr>
          <% } // end for %>
          </table>

          Portlet類的示例代碼如下:
          public class Portlet7{
            public void render(request, response){
              request.getRequestDispatcher(“7.jsp”).include(request, response);
            }
          };

          上述代碼是Portal顯示Portlet的核心流程的一個(gè)簡(jiǎn)化版本。
          JSR168 Portlet規(guī)范里面定義了真正的Portlet接口定義。

          posted @ 2011-08-28 12:29 afunms 閱讀(214) | 評(píng)論 (0)編輯 收藏

          揭陽(yáng)topo

          去年在揭陽(yáng)痛苦了三天三夜也沒(méi)把拓?fù)渥龀鰜?lái),今天有機(jī)會(huì)再次在同一環(huán)境下測(cè)試程序。
          與去年相比,產(chǎn)品的成熟度有較大提高。我也基本搞清楚H3C各型號(hào)FDB數(shù)據(jù)的獲取方法。
           
          拓?fù)浒l(fā)現(xiàn)結(jié)果
            開(kāi)始時(shí)間 結(jié)束時(shí)間 耗時(shí)
          1 2011-07-15 16:01:33 2011-07-15 16:08:03 6分鐘30秒
          發(fā)現(xiàn)設(shè)備
            IP地址 名稱 型號(hào) 類型
          1 10.46.129.100 jygaj7510E hh3c-s7510E 路由交換機(jī)
          2 10.46.129.111 jygaj4507 cat4507 路由交換機(jī)
          3 10.46.131.146 JieXiDaDui hh3c-s5500-28C-EI 路由交換機(jī)
          4 10.46.159.51 JYSJ_5500 hh3c-s5500-28C-EI 路由交換機(jī)
          5 10.46.131.150 HuiLaiDaDui hh3c-s5500-28C-EI 路由交換機(jī)
          6 10.46.131.138 YuHuDaDui hh3c-s5500-28C-EI 路由交換機(jī)
          7 10.46.131.193 HuiLaiGaoSuDaDui hh3c-s5500-28C-EI 路由交換機(jī)
          8 10.46.131.169 RongChengDaDui hh3c-s5500-28C-EI 路由交換機(jī)
          9 10.46.131.190 JiaoJingZhiDui hh3c-S7503E-S 路由交換機(jī)
          10 10.46.131.158 JieDongGaoSuDaDui hh3c-s5500-28C-EI 路由交換機(jī)
          11 10.46.131.1 DongShanDaDui hh3c-s5500-28C-EI 路由交換機(jī)
          12 10.46.131.202 PuHuiGaoSuDaDui hh3c-s5500-28C-EI 路由交換機(jī)
          13 10.46.131.118 PuHuiGaoSu2Donggang hh3c-s5100-24P-SI 路由交換機(jī)
          14 10.46.131.166 GuiLingKaoChang hh3c-s5100-24P-SI 路由交換機(jī)
          15 10.46.130.128 jiedong hh3c-S7503E-S 路由交換機(jī)
          16 10.46.131.10 RongXinZhongDui hh3c-s5100-24P-SI 路由交換機(jī)
          17 10.46.131.170 JinXianZhongDui hh3c-s5100-24P-SI 路由交換機(jī)
          18 10.46.150.96 puning hh3c-S7503E-S 路由交換機(jī)
          19 10.46.155.160 huilai s3328 交換機(jī)
          20 10.46.157.65 rongcheng hh3c-s5500-28C-EI 路由交換機(jī)
          21 10.46.155.130 AoJiang hh3c-S5120-28P-SI 路由交換機(jī)
          22 10.46.155.178 KuiFeng hh3c-S5120-28P-SI 路由交換機(jī)
          23 10.46.155.226 ZhouTian hh3c-S5120-28P-SI 路由交換機(jī)
          24 10.46.155.242 DongLong hh3c-S5120-28P-SI 路由交換機(jī)
          25 10.46.156.82 HeLin hh3c-S5120-28P-SI 路由交換機(jī)
          26 10.46.155.62 XianKanShouSuo hh3c-S5120-28P-SI 路由交換機(jī)
          27 10.46.131.6 YuQiaoZhongDui s2326TP 路由交換機(jī)
          28 10.46.136.18 jiexi hh3c-S7503E-S 路由交換機(jī)
          29 10.46.131.126 PuHuiGaosu_1_zd_xichang hh3c-s5100-24P-SI 路由交換機(jī)
          30 10.46.135.249 jygaj3560A catalyst3560G24TS 交換機(jī)
          31 10.46.129.226 jieyang_3640 cisco3640 路由交換機(jī)
          32 10.46.159.100 puhua hh3c-s5100-24P-EI 路由交換機(jī)
          33 10.46.159.40 dananshan hh3c-s5100-24P-EI 路由交換機(jī)
          34 10.46.155.210 10.46.155.210 hh3c-S5120-28P-SI 路由交換機(jī)
          35 10.46.141.64 yuhu hh3c-s5500-28C-EI 路由交換機(jī)
          36 10.46.133.64 dongshan-master hh3c-s5500-28C-EI 路由交換機(jī)
          37 10.46.149.30 shuishangpaichusuo hh3c-s5100-24P-EI 路由交換機(jī)
          38 10.46.146.99 jingxiao hh3c-s5500-28C-EI 路由交換機(jī)
          39 10.46.135.44 kanshousuo hh3c-s5100-24P-EI 路由交換機(jī)
          40 10.46.135.8 tejing hh3c-s5100-24P-EI 路由交換機(jī)
          合計(jì):40臺(tái)
          發(fā)現(xiàn)子網(wǎng)
            子網(wǎng)地址 子網(wǎng)掩碼
          1 10.46.128.0 255.255.224.0
          2 10.46.128.112 255.255.255.248
          3 10.46.128.120 255.255.255.248
          4 10.46.128.128 255.255.255.248
          5 10.46.128.136 255.255.255.248
          6 10.46.128.16 255.255.255.248
          7 10.46.128.160 255.255.255.248
          8 10.46.128.176 255.255.255.248
          9 10.46.128.184 255.255.255.248
          10 10.46.128.192 255.255.255.248
          11 10.46.128.200 255.255.255.248
          12 10.46.128.208 255.255.255.240
          13 10.46.128.224 255.255.255.248
          14 10.46.128.232 255.255.255.248
          15 10.46.128.248 255.255.255.248
          16 10.46.128.8 255.255.255.248
          17 10.46.129.0 255.255.255.0
          18 10.46.130.0 255.255.255.0
          19 10.46.131.0 255.255.255.252
          20 10.46.131.100 255.255.255.252
          21 10.46.131.116 255.255.255.252
          22 10.46.131.12 255.255.255.252
          23 10.46.131.124 255.255.255.252
          24 10.46.131.128 255.255.255.252
          25 10.46.131.136 255.255.255.252
          26 10.46.131.140 255.255.255.252
          27 10.46.131.144 255.255.255.252
          28 10.46.131.148 255.255.255.252
          29 10.46.131.156 255.255.255.252
          30 10.46.131.164 255.255.255.252
          31 10.46.131.168 255.255.255.252
          32 10.46.131.172 255.255.255.252
          33 10.46.131.176 255.255.255.252
          34 10.46.131.180 255.255.255.252
          35 10.46.131.188 255.255.255.252
          36 10.46.131.192 255.255.255.252
          37 10.46.131.196 255.255.255.252
          38 10.46.131.200 255.255.255.252
          39 10.46.131.240 255.255.255.252
          40 10.46.131.244 255.255.255.252
          41 10.46.131.248 255.255.255.248
          42 10.46.131.4 255.255.255.252
          43 10.46.131.8 255.255.255.252
          44 10.46.131.80 255.255.255.252
          45 10.46.131.88 255.255.255.252
          46 10.46.131.92 255.255.255.252
          47 10.46.131.96 255.255.255.252
          48 10.46.132.0 255.255.255.0
          49 10.46.133.0 255.255.255.0
          50 10.46.134.0 255.255.255.0
          51 10.46.135.0 255.255.255.0
          52 10.46.135.128 255.255.255.128
          53 10.46.135.32 255.255.255.224
          54 10.46.135.64 255.255.255.192
          55 10.46.136.0 255.255.255.252
          56 10.46.136.100 255.255.255.252
          57 10.46.136.108 255.255.255.252
          58 10.46.136.136 255.255.255.252
          59 10.46.136.16 255.255.255.252
          60 10.46.136.20 255.255.255.252
          61 10.46.136.200 255.255.255.252
          62 10.46.136.32 255.255.255.252
          63 10.46.137.0 255.255.255.0
          64 10.46.138.0 255.255.255.0
          65 10.46.139.0 255.255.255.224
          66 10.46.139.128 255.255.255.224
          67 10.46.139.192 255.255.255.240
          68 10.46.139.232 255.255.255.248
          69 10.46.139.240 255.255.255.240
          70 10.46.139.32 255.255.255.224
          71 10.46.139.64 255.255.255.192
          72 10.46.140.0 255.255.255.0
          73 10.46.141.0 255.255.255.128
          74 10.46.141.128 255.255.255.128
          75 10.46.142.0 255.255.255.240
          76 10.46.142.128 255.255.255.224
          77 10.46.142.16 255.255.255.240
          78 10.46.142.160 255.255.255.224
          79 10.46.142.192 255.255.255.224
          80 10.46.142.224 255.255.255.224
          81 10.46.142.32 255.255.255.240
          82 10.46.142.64 255.255.255.192
          83 10.46.143.0 255.255.255.192
          84 10.46.143.128 255.255.255.224
          85 10.46.143.160 255.255.255.224
          86 10.46.143.192 255.255.255.192
          87 10.46.143.64 255.255.255.224
          88 10.46.143.96 255.255.255.224
          89 10.46.144.0 255.255.255.224
          90 10.46.144.112 255.255.255.240
          91 10.46.144.128 255.255.255.240
          92 10.46.144.144 255.255.255.240
          93 10.46.144.160 255.255.255.240
          94 10.46.144.176 255.255.255.240
          95 10.46.144.224 255.255.255.240
          96 10.46.144.240 255.255.255.240
          97 10.46.144.64 255.255.255.224
          98 10.46.144.96 255.255.255.240
          99 10.46.145.0 255.255.255.240
          100 10.46.145.128 255.255.255.240
          101 10.46.145.144 255.255.255.240
          102 10.46.145.16 255.255.255.240
          103 10.46.145.160 255.255.255.240
          104 10.46.145.176 255.255.255.240
          105 10.46.145.192 255.255.255.240
          106 10.46.145.208 255.255.255.240
          107 10.46.145.224 255.255.255.240
          108 10.46.145.32 255.255.255.240
          109 10.46.145.48 255.255.255.240
          110 10.46.145.64 255.255.255.240
          111 10.46.145.80 255.255.255.240
          112 10.46.145.96 255.255.255.240
          113 10.46.146.0 255.255.255.0
          114 10.46.147.0 255.255.255.0
          合計(jì):114個(gè)
          發(fā)現(xiàn)鏈路
            名稱
          1 jygaj7510E[GigabitEthernet0/0/28]--JieXiDaDui[GigabitEthernet1/0/24]  
          2 jygaj7510E[GigabitEthernet0/0/24]--JiaoJingZhiDui[GigabitEthernet1/0/39]  
          3 JiaoJingZhiDui[GigabitEthernet1/0/6]--DongShanDaDui[GigabitEthernet1/0/21]  
          4 jygaj7510E[GigabitEthernet0/0/26]--JieDongGaoSuDaDui[GigabitEthernet1/0/24]  
          5 jygaj7510E[GigabitEthernet0/0/30]--RongChengDaDui[GigabitEthernet1/0/24]  
          6 jygaj7510E[GigabitEthernet0/0/27]--HuiLaiDaDui[GigabitEthernet1/0/24]  
          7 jygaj7510E[GigabitEthernet0/0/39]--JYSJ_5500[GigabitEthernet1/0/1]  
          8 jygaj7510E[GigabitEthernet0/0/29]--YuHuDaDui[GigabitEthernet1/0/24]  
          9 jygaj7510E[GigabitEthernet0/0/25]--HuiLaiGaoSuDaDui[GigabitEthernet1/0/24]  
          10 jygaj7510E[GigabitEthernet0/0/40]--jygaj4507[GigabitEthernet3/32]  
          11 jygaj4507[GigabitEthernet3/26]--jieyang_3640[FastEthernet2/0]  
          12 jygaj7510E[GigabitEthernet0/0/6]--rongcheng[GigabitEthernet1/0/24]  
          13 jygaj7510E[GigabitEthernet0/0/32]--PuHuiGaoSuDaDui[GigabitEthernet1/0/24]  
          14 jygaj7510E[GigabitEthernet0/0/4]--jiexi[GigabitEthernet1/0/24]  
          15 jygaj7510E[GigabitEthernet0/0/7]--yuhu[GigabitEthernet1/0/24]  
          16 jygaj7510E[GigabitEthernet0/0/5]--dongshan-master[GigabitEthernet1/0/24]  
          17 jygaj7510E[GigabitEthernet0/0/3]--puning[GigabitEthernet1/0/40]  
          18 jygaj7510E[GigabitEthernet0/0/1]--jiedong[GigabitEthernet1/0/24]  
          19 jygaj7510E[GigabitEthernet0/0/13]--jingxiao[GigabitEthernet1/0/24]  
          20 DongShanDaDui[GigabitEthernet1/0/23]--YuQiaoZhongDui[Vlanif3]  
          21 huilai[Ethernet0/0/8]--HeLin[GigabitEthernet1/0/24]  
          22 JYSJ_5500[GigabitEthernet1/0/6]--shuishangpaichusuo[GigabitEthernet1/0/24]  
          23 JYSJ_5500[GigabitEthernet1/0/3]--puhua[GigabitEthernet1/0/24]  
          24 JYSJ_5500[GigabitEthernet1/0/5]--tejing[GigabitEthernet1/0/24]  
          25 RongChengDaDui[GigabitEthernet1/0/22]--RongXinZhongDui[GigabitEthernet1/0/24]  
          26 JYSJ_5500[GigabitEthernet1/0/2]--dananshan[GigabitEthernet1/0/24]  
          27 JYSJ_5500[GigabitEthernet1/0/4]--kanshousuo[GigabitEthernet1/0/24]  
          28 huilai[Ethernet0/0/7]--DongLong[GigabitEthernet1/0/24]  
          29 huilai[Ethernet0/0/5]--KuiFeng[GigabitEthernet1/0/20]  
          30 RongChengDaDui[GigabitEthernet1/0/21]--JinXianZhongDui[GigabitEthernet1/0/24]  
          31 huilai[Ethernet0/0/2]--ZhouTian[GigabitEthernet1/0/24]  
          32 huilai[Ethernet0/0/3]--10.46.155.210[GigabitEthernet1/0/24]  
          33 huilai[Ethernet0/0/6]--AoJiang[GigabitEthernet1/0/24]  
          34 huilai[Ethernet0/0/1]--XianKanShouSuo[GigabitEthernet1/0/24]  
          35 JiaoJingZhiDui[GigabitEthernet1/0/40]--GuiLingKaoChang[GigabitEthernet1/0/24]  
          36 jygaj7510E[GigabitEthernet0/0/48]--jygaj3560A[GigabitEthernet0/27]  
          37 jygaj7510E[GigabitEthernet0/0/2]--huilai[Ethernet0/0/24]  
          38 JiaoJingZhiDui[GigabitEthernet1/0/8]--PuHuiGaoSu2Donggang[GigabitEthernet1/0/2]  
          39 JiaoJingZhiDui[GigabitEthernet1/0/7]--PuHuiGaosu_1_zd_xichang[GigabitEthernet1/0/24]  
          40 jygaj4507[GigabitEthernet3/21]--jygaj3560A[GigabitEthernet0/22]  
          合計(jì):40條


          posted @ 2011-07-15 22:53 afunms 閱讀(449) | 評(píng)論 (1)編輯 收藏

          JBPM流程展現(xiàn)改進(jìn)

          1.在連線加上文字
          2.換了圖標(biāo)




          posted @ 2011-05-30 10:52 afunms 閱讀(197) | 評(píng)論 (0)編輯 收藏

          JBPM流程展現(xiàn)

               摘要: Flex開(kāi)發(fā)的JBPM流程展現(xiàn)器 ---JBPM流程定義XML---- Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?xml version="1.0" encoding="UTF-8"?><proces...  閱讀全文

          posted @ 2011-05-28 17:07 afunms 閱讀(381) | 評(píng)論 (0)編輯 收藏

          2.INTRODUCTION TO IT SERVICE MANAGEMENT

          IT Service Management Objectives
          ITIL is a Best Practice Framework used …..
          1.To align IT services with the current and future needs
             of the business and its Customers
          2.To develop the quality of the IT services delivered
          3.To reduce the long term cost of service provision

          Why Service Management
          1.Increasing IT visibility and Reliance
          2.Increasing demand from Business to deliver effective
             IT solutions/services (Cost Effective)
          3.Increasing complexity of IT infrastructure and processes
          4.Increasing competition
          5.Increasing pressure to realise return on investment

          Considerations
          1.Do not be over ambitious
          2.Consider what elements already exist, are in use and effective
          3.Identify what can be re-used or needs to be developed
          4.Adapt the guidelines to meet your requirements

          Process Improvement Model
          Process Improvement Stages
          1.Process improvement definition
          2.Communication
          3.Planning
          4.Implementation
          5.Review and Audit

          ITIL Service Management
          Service Support
             Day to day operational support of IT services
          Service Delivery
             Long term planning and improvement of IT service provision

          Key Definitions
           Customer: recipient of a service: usually the Customer management   
                           has responsibility for the funding of the service.
           Provider: the unit responsible for the provision of IT service.
           Supplier:  a third party responsible for supplying or supporting    
                         underpinning elements of the IT service.
           User: the person using the service on a daily basis.

          IT Service Management Overview




          posted @ 2011-05-02 09:37 afunms 閱讀(203) | 評(píng)論 (0)編輯 收藏

          1.Introduction

          ITIL Service Management Foundation

          Course Objectives

          1.To introduce ITIL As Best Practice framework
            Terms, Definitions, Phrases
          2.Gain an understanding of the essential ITIL processes and how they relate
            to each other,in order to support and deliver a quality IT service

          Course Content – Day 1
          1.Introduction
          2.Introduction to IT Service Management
          3.Service Desk
          4.Configuration Management
          5.Incident Management
          6.Problem Management
          7.Change Management
          8.Release Management

          Course Content – Day 2
          1.Service Level Management
          2.Financial Management for IT Services
          3.Capacity Management
          4.IT Service Continuity Management
          5.Availability Management

          ITIL Overview
          1.ITIL is a Best Practice Framework
          2.Integrated into OGC and BSI guidance
          3.ITIL Philosophy – Scaleable Process driven approach
          4.Key Objective 1
          5.Align IT services with the Current and Future needs of the business and its Customers
          6.Key Objective 2
          7.To improve Quality of the services delivered
          8.Key Objective 3
          9.Reduce long term Cost of service provision


          Introduction to Service Management
          The Service Desk
          Configuration Management
          Incident Management
          Problem Management
          Change Management
          Release Management

          posted @ 2011-05-01 09:11 afunms 閱讀(166) | 評(píng)論 (0)編輯 收藏

          Tomcat服務(wù)器IP沖突

          啟動(dòng)Tomcat后,服務(wù)器IP沖突或IP地址改變會(huì)導(dǎo)致以下錯(cuò)誤:


              I/O exception (java.net.ConnectException)

          caught when processing request: Connection timed out: connect

           

              Retrying request

          posted @ 2011-02-24 13:57 afunms 閱讀(303) | 評(píng)論 (0)編輯 收藏

          正則表達(dá)式中轉(zhuǎn)義字符

          除 .$ ^ { [ ( | ) * + ? \ 外,其他字符與自身匹配。

          點(diǎn)的轉(zhuǎn)義:.  ==> \\u002E
          美元符號(hào)的轉(zhuǎn)義:$  ==> \\u0024
          乘方符號(hào)的轉(zhuǎn)義:^  ==> \\u005E
          左大括號(hào)的轉(zhuǎn)義:{  ==> \\u007B
          左方括號(hào)的轉(zhuǎn)義:[  ==> \\u005B
          左圓括號(hào)的轉(zhuǎn)義:(  ==> \\u0028
          豎線的轉(zhuǎn)義:| ==> \\u007C
          右圓括號(hào)的轉(zhuǎn)義:) ==> \\u0029
          星號(hào)的轉(zhuǎn)義:*  ==> \\u002A
          加號(hào)的轉(zhuǎn)義:+  ==> \\u002B
          問(wèn)號(hào)的轉(zhuǎn)義:?  ==> \\u003F
          反斜杠的轉(zhuǎn)義:\ ==> \\u005C

          test:

           public static void main(String[] args){
               Pattern p 
          = Pattern.compile("/\\u002A\\s{1,5}\\d{0,4}\\s{1,5}\\u002A/");
               Matcher m 
          = p.matcher("/* 1369 */");
               System.out.println(m.find());    
           }

          結(jié)果為true

          posted @ 2011-01-29 09:34 afunms 閱讀(3448) | 評(píng)論 (0)編輯 收藏

          log4j

          轉(zhuǎn)http://dev.csdn.net/htmls/21/21291.html
          log4j雖然用了很久,其實(shí)一直沒(méi)搞清楚。今天認(rèn)真學(xué)習(xí)了。

          1.簡(jiǎn)介
          程序開(kāi)發(fā)環(huán)境中的日志記錄是由嵌入在程序中以輸出一些對(duì)開(kāi)發(fā)人員有用信息的語(yǔ)句所組成。例如,跟蹤語(yǔ)句(trace),結(jié)構(gòu)轉(zhuǎn)儲(chǔ)和常見(jiàn)的System.out.println或printf調(diào)試語(yǔ)句。log4j提供分級(jí)方法在程序中嵌入日志記錄語(yǔ)句。日志信息具有多種輸出格式和多個(gè)輸出級(jí)別。

          使用一個(gè)專門的日志記錄包,可以減輕對(duì)成千上萬(wàn)的System.out.println語(yǔ)句的維護(hù)成本,因?yàn)槿罩居涗浛梢酝ㄟ^(guò)配置腳本在運(yùn)行時(shí)得以控制。log4j維護(hù)嵌入在程序代碼中的日志記錄語(yǔ)句。通過(guò)規(guī)范日志記錄的處理過(guò)程,一些人認(rèn)為應(yīng)該鼓勵(lì)更多的使用日志記錄并且獲得更高程度的效率。

          2.安裝
          為了使用我們即將要安裝的日志記錄工具,還必須要設(shè)置操作環(huán)境,只有這樣,工具才能知道從哪里找到它所需要的信息,并且操作系統(tǒng)知道從哪里找到這個(gè)工具。那么,怎樣做呢?實(shí)際上,它要求更改操作環(huán)境。我有一些這方面的資格文檔。 Configuring A Windows Working Environment 和 Configuring A Unix Working Environment.

          從 http://jakarta.apache.org/log4j/docs/download.html下載log4j發(fā)行版。

          解壓存檔文件到合適的目錄中。

          添加文件 dist/lib/log4j-1.2.6.jar 到 CLASSPATH 環(huán)境變量中。

          3.log4j的基本概念
          使用log4j大概涉及3個(gè)主要概念:

          公共類 Logger

          Logger 負(fù)責(zé)處理日志記錄的大部分操作。

          公共接口 Appender

          Appender 負(fù)責(zé)控制日志記錄操作的輸出。

          公共抽象類Layout

          Layout 負(fù)責(zé)格式化Appender的輸出。

          3.1.Logger
          日志記錄器(Logger)是日志處理的核心組件。log4j具有5種正常級(jí)別(Level)。 日志記錄器(Logger)的可用級(jí)別Level (不包括自定義級(jí)別 Level), 以下內(nèi)容就是摘自log4j API (http://jakarta.apache.org/log4j/docs/api/index.html):

          static Level DEBUG

          DEBUG Level指出細(xì)粒度信息事件對(duì)調(diào)試應(yīng)用程序是非常有幫助的。

          static Level INFO

          INFO level表明 消息在粗粒度級(jí)別上突出強(qiáng)調(diào)應(yīng)用程序的運(yùn)行過(guò)程。

          static Level WARN

          WARN level表明會(huì)出現(xiàn)潛在錯(cuò)誤的情形。

          static Level ERROR

          ERROR level指出雖然發(fā)生錯(cuò)誤事件,但仍然不影響系統(tǒng)的繼續(xù)運(yùn)行。

          static Level FATAL

          FATAL level指出每個(gè)嚴(yán)重的錯(cuò)誤事件將會(huì)導(dǎo)致應(yīng)用程序的退出。

          另外,還有兩個(gè)可用的特別的日志記錄級(jí)別: (以下描述來(lái)自log4j API http://jakarta.apache.org/log4j/docs/api/index.html):

          static Level ALL

          ALL Level是最低等級(jí)的,用于打開(kāi)所有日志記錄。

          static Level OFF

          OFF Level是最高等級(jí)的,用于關(guān)閉所有日志記錄。

          日志記錄器(Logger)的行為是分等級(jí)的。如下表所示:

          圖.日志輸出等級(jí)


          日志記錄器(Logger)將只輸出那些級(jí)別高于或等于它的級(jí)別的信息。如果沒(méi)有設(shè)置日志記錄器(Logger)的級(jí)別,那么它將會(huì)繼承最近的祖先的級(jí)別。因此,如果在包c(diǎn)om.foo.bar中創(chuàng)建一個(gè)日志記錄器(Logger)并且沒(méi)有設(shè)置級(jí)別,那它將會(huì)繼承在包c(diǎn)om.foo中創(chuàng)建的日志記錄器(Logger)的級(jí)別。如果在com.foo中沒(méi)有創(chuàng)建日志記錄器(Logger)的話,那么在com.foo.bar中創(chuàng)建的日志記錄器(Logger)將繼承root 日志記錄器(Logger)的級(jí)別,root日志記錄器(Logger)經(jīng)常被實(shí)例化而可用,它的級(jí)別為DEBUG。

          有很多方法可以創(chuàng)建一個(gè)日志記錄器(Logger),下面方法可以取回root日志記錄器:

          Logger logger = Logger.getRootLogger();
           

          還可以這樣創(chuàng)建一個(gè)新的日志記錄器:

          Logger logger = Logger.getLogger("MyLogger");
           

          比較常用的用法,就是根據(jù)類名實(shí)例化一個(gè)靜態(tài)的全局日志記錄器:

          static Logger logger = Logger.getLogger(test.class);
           

          所有這些創(chuàng)建的叫"logger"的日志記錄器都可以用下面方法設(shè)置級(jí)別:

          logger.setLevel((Level)Level.WARN);
           

          可以使用7個(gè)級(jí)別中的任何一個(gè); Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR, Level.FATAL, Level.ALL and Level.OFF.

          3.2.Appender
          Appender 控制日志怎樣輸出。下面列出一些可用的Appender(log4j API中所描述的 http://jakarta.apache.org/log4j/docs/api/index.html):

          ConsoleAppender:使用用戶指定的布局(layout) 輸出日志事件到System.out或者 System.err。默認(rèn)的目標(biāo)是System.out。

          DailyRollingFileAppender 擴(kuò)展FileAppender,因此多個(gè)日志文件可以以一個(gè)用戶選定的頻率進(jìn)行循環(huán)日志記錄。

          FileAppender 把日志事件寫入一個(gè)文件

          RollingFileAppender 擴(kuò)展FileAppender備份容量達(dá)到一定大小的日志文件。

          WriterAppender根據(jù)用戶的選擇把日志事件寫入到Writer或者OutputStream。

          SMTPAppender 當(dāng)特定的日志事件發(fā)生時(shí),一般是指發(fā)生錯(cuò)誤或者重大錯(cuò)誤時(shí),發(fā)送一封郵件。

          SocketAppender 給遠(yuǎn)程日志服務(wù)器(通常是網(wǎng)絡(luò)套接字節(jié)點(diǎn))發(fā)送日志事件(LoggingEvent)對(duì)象。

          SocketHubAppender 給遠(yuǎn)程日志服務(wù)器群組(通常是網(wǎng)絡(luò)套接字節(jié)點(diǎn))發(fā)送日志事件(LoggingEvent)對(duì)象。

          SyslogAppender給遠(yuǎn)程異步日志記錄的后臺(tái)精靈程序(daemon)發(fā)送消息。

          TelnetAppender 一個(gè)專用于向只讀網(wǎng)絡(luò)套接字發(fā)送消息的log4j appender。

          還可以實(shí)現(xiàn) Appender 接口,創(chuàng)建以自己的方式進(jìn)行日志輸出的Appender。

          3.2.1.使用ConsoleAppender
          ConsoleAppender可以用這種方式創(chuàng)建:

          ConsoleAppender appender = new ConsoleAppender(new PatternLayout());
           

          創(chuàng)建了一個(gè)控制臺(tái)appender,具有一個(gè)默認(rèn)的PatternLayout。它使用了默認(rèn)的System.out 輸出。

          3.2.2.使用FileAppender
          FileAppender可以用這種方式創(chuàng)建:

                    FileAppender appender = null;
                    try {
                       appender = new FileAppender(new PatternLayout(),"filename");
                    } catch(Exception e) {}
                 
           

          上面用到的構(gòu)造函數(shù):

          FileAppender(Layout layout, String filename)
                    實(shí)例化一個(gè)FileAppender并且打開(kāi)變量"filename"指定的文件。
                 
           

          另一個(gè)有用的構(gòu)造函數(shù)是:

          FileAppender(Layout layout, String filename, boolean append)
                    實(shí)例化一個(gè)FileAppender并且打開(kāi)變量"filename"指定的文件。
                 
           

          這個(gè)構(gòu)造函數(shù)還可以選擇是否對(duì)指定的文件進(jìn)行追加的方式輸出。如果沒(méi)有指定值,那么默認(rèn)的方式就是追加。

          3.2.3.使用WriterAppender
          WriterAppender可以用這種方式創(chuàng)建:

                    WriterAppender appender = null;
                    try {
                      appender = new WriterAppender(new PatternLayout(),new FileOutputStream("filename"));
                    } catch(Exception e) {}
                 
           

          這個(gè)WriterAppender使用的構(gòu)造函數(shù)帶有PatternLayout和OutputStream參數(shù),在這種情況下, FileOutputStream用于向一個(gè)文件輸出。當(dāng)然,它還具有其他可用的構(gòu)造函數(shù)。

          3.3.Layout
          Appender必須使用一個(gè)與之相關(guān)聯(lián)的 Layout,這樣它才能知道怎樣格式化它的輸出。當(dāng)前,log4j具有三種類型的Layout:

          HTMLLayout 格式化日志輸出為HTML表格。

          PatternLayout 根據(jù)指定的 轉(zhuǎn)換模式格式化日志輸出,或者如果沒(méi)有指定任何轉(zhuǎn)換模式,就使用默認(rèn)的轉(zhuǎn)換模式。

          SimpleLayout 以一種非常簡(jiǎn)單的方式格式化日志輸出,它打印級(jí)別 Level,然后跟著一個(gè)破折號(hào)“-“ ,最后才是日志消息。

          3.4.基本示例
          3.4.1.SimpleLayout和 FileAppender
          這里是一個(gè)非常簡(jiǎn)單的例子,程序?qū)崿F(xiàn)了SimpleLayout和FileAppender:

          import org.apache.log4j.Level;
          import org.apache.log4j.Logger;
          import org.apache.log4j.SimpleLayout;
          import org.apache.log4j.FileAppender;
          public class simpandfile {
             static Logger logger = Logger.getLogger(simpandfile.class);
             public static void main(String args[]) {
                SimpleLayout layout = new SimpleLayout();
                FileAppender appender = null;
                try {
                   appender = new FileAppender(layout,"output1.txt",false);
                } catch(Exception e) {}
                logger.addAppender(appender);
                logger.setLevel((Level) Level.DEBUG);
                logger.debug("Here is some DEBUG");
                logger.info("Here is some INFO");
                logger.warn("Here is some WARN");
                logger.error("Here is some ERROR");
                logger.fatal("Here is some FATAL");
             }
          }
                 
           

          你可以下載: simpandfile.java。 還可以查看它的輸出: output1.txt.

          3.4.2.HTMLLayout和 WriterAppender
          這里是一個(gè)非常簡(jiǎn)單的例子,程序?qū)崿F(xiàn)了 HTMLLayout和WriterAppender:

          import java.io.*;
          import org.apache.log4j.Level;
          import org.apache.log4j.Logger;
          import org.apache.log4j.HTMLLayout;
          import org.apache.log4j.WriterAppender;
          public class htmlandwrite {
             static Logger logger = Logger.getLogger(htmlandwrite.class);
             public static void main(String args[]) {
                HTMLLayout layout = new HTMLLayout();
                WriterAppender appender = null;
                try {
                   FileOutputStream output = new FileOutputStream("output2.html");
                   appender = new WriterAppender(layout,output);
                } catch(Exception e) {}
                logger.addAppender(appender);
                logger.setLevel((Level) Level.DEBUG);
                logger.debug("Here is some DEBUG");
                logger.info("Here is some INFO");
                logger.warn("Here is some WARN");
                logger.error("Here is some ERROR");
                logger.fatal("Here is some FATAL");
             }
          }
                 
           

          你可以下載: simpandfile.java. 還可以查看它的輸出:output1.txt.

          3.4.3.PatternLayout和 ConsoleAppender
          這里是一個(gè)非常簡(jiǎn)單的例子,程序?qū)崿F(xiàn)了PatternLayout和ConsoleAppender:

          import org.apache.log4j.Level;
          import org.apache.log4j.Logger;
          import org.apache.log4j.PatternLayout;
          import org.apache.log4j.ConsoleAppender;
          public class consandpatt {
             static Logger logger = Logger.getLogger(consandpatt.class);
             public static void main(String args[]) {
                // Note, %n is newline
                String pattern =  "Milliseconds since program start: %r %n";
                       pattern += "Classname of caller: %C %n";
                       pattern += "Date in ISO8601 format: %d{ISO8601} %n";
                       pattern += "Location of log event: %l %n";
                       pattern += "Message: %m %n %n";
               
                PatternLayout layout = new PatternLayout(pattern);
                ConsoleAppender appender = new ConsoleAppender(layout);
                logger.addAppender(appender);
                logger.setLevel((Level) Level.DEBUG);
                logger.debug("Here is some DEBUG");
                logger.info("Here is some INFO");
                logger.warn("Here is some WARN");
                logger.error("Here is some ERROR");
                logger.fatal("Here is some FATAL");
             }
          }
                 
           

          你可以下載:simpandfile.java. 還可以查看它的輸出: output2.txt.

          4.使用外部配置文件
          Log4j經(jīng)常與外部日志文件聯(lián)合使用,這樣很多可選項(xiàng)不必硬編碼在軟件中。使用外部配置文件的優(yōu)點(diǎn)就是修改可選項(xiàng)不需要重新編譯程序。唯一的缺點(diǎn)就是,由于用到io 指令,速度稍微有些減慢。

          有兩個(gè)方法可以用來(lái)指定外部配置文件:文本文件或者XML文件。既然現(xiàn)在所有事情都寫成XML文件,那么該教程就重點(diǎn)講解XML文件方法,但是也包含相關(guān)文本文件的例子。首先,看看下面的XML配置文件示例:

          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
          <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
                 
            <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
              <layout class="org.apache.log4j.SimpleLayout"/>
            </appender>
            <root>
              <priority value ="debug" />
              <appender-ref ref="ConsoleAppender"/>
            </root>
          </log4j:configuration>
             
           

          文件以標(biāo)準(zhǔn)的XML聲明作為開(kāi)始,后面跟著指出DTD(文檔類型定義)的DOCTYPE聲明,它定義了XML文件的結(jié)構(gòu),例如,什么元素可以嵌入在其他元素中等等。上面文件在log4j發(fā)行版的src/java/org/apache/log4j/xml目錄中。 接著看看封裝所有元素的 log4j:configuration 元素,它在DOCTYPE聲明中被指定為根元素。嵌入在根元素中有兩個(gè)結(jié)構(gòu):

            <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
              <layout class="org.apache.log4j.SimpleLayout"/>
            </appender>     
             
           

          這里創(chuàng)建一個(gè)名叫"ConsoleAppender"的 Appender,注意,你可以選擇任何名字,該示例之所以選擇"ConsoleAppender",完全是為了示例的設(shè)計(jì)。接著這個(gè)appender類以全名形式給出,經(jīng)常用規(guī)范(fully qualified)類名。 Appender必須具有一個(gè)指定的 name和class。嵌入在 Appender之內(nèi)的是 layout元素,這里它被指定為SimpleLayout。 Layout 必須具有一個(gè) class屬性。

            <root>
              <priority value ="debug" />
              <appender-ref ref="ConsoleAppender"/>
            </root>     
             
           

          root元素必須存在且不能被子類化。示例中的優(yōu)先級(jí)被設(shè)置為"debug",設(shè)置appender飽含一個(gè)appender-ref元素。還有更多的屬性或元素可以指定。查看log4j發(fā)行版中的src/java/org/apache/log4j/xml/log4j.dtd以了解關(guān)于XML配置文件結(jié)構(gòu)的更多信息。可以用下面這種方法把配置信息文件讀入到Java程序中:

          DOMConfigurator.configure("configurationfile.xml");
             
           

          DOMConfigurator 用一棵DOM樹(shù)來(lái)初始化log4j環(huán)境。這里是示例中的XML配置文件:plainlog4jconfig.xml。這里是執(zhí)行該配置文件的程序: files/externalxmltest.java:

          import org.apache.log4j.Logger;
          import org.apache.log4j.xml.DOMConfigurator;
          public class externalxmltest {
             static Logger logger = Logger.getLogger(filetest.class);
             public static void main(String args[]) {
                DOMConfigurator.configure("xmllog4jconfig.xml");
                logger.debug("Here is some DEBUG");
                logger.info("Here is some INFO");
                logger.warn("Here is some WARN");
                logger.error("Here is some ERROR");
                logger.fatal("Here is some FATAL");
             }
          }
             
           

          這里是一個(gè)實(shí)現(xiàn)帶有PatternLayout的FileAppender的日志記錄器Logger的XML配置文件:

          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
          <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
                 
            <appender name="appender" class="org.apache.log4j.FileAppender">
              <param name="File" value="Indentify-Log.txt"/>
              <param name="Append" value="false"/>
              <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d [%t] %p - %m%n"/>
              </layout>
            </appender>
            <root>
              <priority value ="debug"/>
              <appender-ref ref="appender"/>
            </root>
          </log4j:configuration>
             
           

          你可以從這里下載示例: xmllog4jconfig2.xml。 想要得到更多的使用XML文件配置log4j環(huán)境的例子,請(qǐng)查看log4j發(fā)行版的目錄src/java/org/apache/log4j/xml/examples/ 。

          這就是上面討論的文本文件形式的配置文件:

          # initialise root logger with level DEBUG and call it BLAH
          log4j.rootLogger=DEBUG, BLAH
          # add a ConsoleAppender to the logger BLAH
          log4j.appender.BLAH=org.apache.log4j.ConsoleAppender
          # set set that layout to be SimpleLayout
          log4j.appender.BLAH.layout=org.apache.log4j.SimpleLayout
             
           

          從這里可以下載: plainlog4jconfig.txt。這就是執(zhí)行該配置文件的程序:

          import org.apache.log4j.Logger;
          import org.apache.log4j.PropertyConfigurator;
          public class externalplaintest {
             static Logger logger = Logger.getLogger(externalplaintest.class);
             public static void main(String args[]) {
                PropertyConfigurator.configure("plainlog4jconfig.xml");
                logger.debug("Here is some DEBUG");
                logger.info("Here is some INFO");
                logger.warn("Here is some WARN");
                logger.error("Here is some ERROR");
                logger.fatal("Here is some FATAL");
             }
          }
             
           

          你可以下載使用該配置文件的示例: externalplaintest.java。想要獲得更多的使用文本文件配置log4j環(huán)境的例子,請(qǐng)查看log4j發(fā)行版中的目錄examples。

          使用外部配置文件的例子就簡(jiǎn)單的討論到這里,現(xiàn)在應(yīng)該可以肯定你已經(jīng)有能力獨(dú)立學(xué)習(xí)更多的log4j發(fā)行版和測(cè)試版中提供的例子。

           

          posted @ 2011-01-28 10:14 afunms 閱讀(251) | 評(píng)論 (0)編輯 收藏

          snmp4j中文亂碼問(wèn)題

          snmp4j遇到中文直接轉(zhuǎn)成16進(jìn)制字符串,網(wǎng)上有些解決辦法,試過(guò)之后,亂碼問(wèn)題是解決了,卻帶來(lái)意想不到的副作用。
          研究之后,還是自己寫一個(gè)方法,把16進(jìn)制字符串轉(zhuǎn)成正常的字符串。
          /**
               * 解決snmp4j中文亂碼問(wèn)題
               
          */

              
          public static String getChinese(String octetString){
                  
          try{
                      String[] temps 
          = octetString.split(":");
                      
          byte[] bs = new byte[temps.length];
                      
          for(int i=0;i<temps.length;i++)
                          bs[i] 
          = (byte)Integer.parseInt(temps[i],16);
                  
                      
          return new String(bs,"GB2312");
                  }
          catch(Exception e){
                      
          return null;
                  }

              }

          posted @ 2011-01-19 09:40 afunms 閱讀(2011) | 評(píng)論 (1)編輯 收藏

          華為交換機(jī)fdb表的四種可能

           

          華為交換機(jī)FDB表四種取值方式:

          1.     bridge.mib


           

          getTable(dot1dTpFdbAddress,dot1dTpFdbPort)

          2.q-bridge.mib


          getTable(dot1dTpFdbAddress,dot1dTpFdbPort)

          3.     huawei-l2mam.mib

           walk(hwDynFdbPort)

           4.     huawei-lswmam.mib

           


           

          posted @ 2010-12-28 12:29 afunms 閱讀(2056) | 評(píng)論 (1)編輯 收藏

          tomcat把日志輸出到文本文件

          • 在Linux系統(tǒng)中,Tomcat 啟動(dòng)后默認(rèn)將很多信息都寫入到catalina.out 文件中,我們可以通過(guò)tail -f catalina.out 來(lái)跟蹤Tomcat 和相關(guān)應(yīng)用運(yùn)行的情況。 在windows下,我們使用startup.bat啟動(dòng)Tomcat以后,會(huì)發(fā)現(xiàn)catalina日志與Linux記錄的內(nèi)容有很大區(qū)別,大多信息只輸出到屏幕而沒(méi)有記錄到catalina.out里面。
          • 本文的內(nèi)容就是要實(shí)現(xiàn)在windows下,將相關(guān)的控制臺(tái)輸出記錄到后臺(tái)的catalina.out文件中以便將來(lái)查看。
          • 關(guān)于在Windows2003下如何實(shí)現(xiàn)類似Linux下tail命令功能的方法,請(qǐng)見(jiàn)讓windows也擁有tail功能一文

          把控制臺(tái)的信息輸出到%CATALINA_BASE%\logs\catalina.out里:
          一、修改startup.bat中
          call "%EXECUTABLE%" start %CMD_LINE_ARGS%

          call "%EXECUTABLE%" run %CMD_LINE_ARGS%
          二、修改catalina.bat中
          rem Execute Java with the applicable properties
          if not "%JPDA%" == "" goto doJpda
          if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity
          %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
          goto end
          :doSecurity
          %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
          goto end
          :doJpda
          if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda
          %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=n %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
          goto end
          :doSecurityJpda
          %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=n %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
          goto end

          為:

          rem Execute Java with the applicable properties
          if not "%JPDA%" == "" goto doJpda
          if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity
          %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% >> %CATALINA_BASE%\logs\catalina.out
          goto end
          :doSecurity
          %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% >> %CATALINA_BASE%\logs\catalina.out
          goto end
          :doJpda
          if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda
          %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=n %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% >> %CATALINA_BASE%\logs\catalina.out
          goto end
          :doSecurityJpda
          %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=n %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% >> %CATALINA_BASE%\logs\catalina.out
          goto end

          posted @ 2010-12-27 12:32 afunms 閱讀(3086) | 評(píng)論 (1)編輯 收藏

          NDP,NTDP

          NDP Neighbor Discovery Protocol  鄰居發(fā)現(xiàn)協(xié)議
          NTDP Network Topology Discovery Protocol  網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)協(xié)議

                  NDP(Neighbor Discovery Protocol)是用來(lái)發(fā)現(xiàn)鄰接點(diǎn)相關(guān)信息的協(xié)議。支持設(shè)備都維護(hù)NDP鄰居信息表,表項(xiàng)是可以老化的。當(dāng)老化時(shí)間到,自動(dòng)刪除相應(yīng)的表項(xiàng)。同時(shí),用戶可以清除當(dāng)前的NDP 信息以重新收集鄰接信息。
            NTDP(Neighbor Topology Discovery Protocol)是用來(lái)收集網(wǎng)絡(luò)拓?fù)湫畔⒌膮f(xié)議。NTDP 為集群管理提供可加入集群的設(shè)備信息,收集指定跳數(shù)內(nèi)的交換機(jī)的拓?fù)湫畔ⅰDP 為NTDP 提供鄰接表信息,NTDP 根據(jù)鄰接信息發(fā)送和轉(zhuǎn)發(fā)NTDP 拓?fù)涫占?qǐng)求,收集一定網(wǎng)絡(luò)范圍內(nèi)每個(gè)設(shè)備的NDP 信息和它與所有鄰居的連接信息。收集完這些信息后,管理設(shè)備或者網(wǎng)管可以根據(jù)需要使用這些信息,完成所需的功能。當(dāng)成員設(shè)備上的NDP 發(fā)現(xiàn)鄰居有變化時(shí),通過(guò)握手報(bào)文將鄰居改變的消息通知管理設(shè)備,管理設(shè)備可以啟動(dòng)NTDP 進(jìn)行指定拓?fù)涫占?,從而使NTDP 能夠及時(shí)反映網(wǎng)絡(luò)拓?fù)涞淖兓?br />


           

          posted @ 2010-12-03 11:47 afunms 閱讀(263) | 評(píng)論 (0)編輯 收藏

          用福建地名組成的祝福

          生活如永定;價(jià)值如連城;
          幸福如龍海;長(zhǎng)壽比東山;  
          身體要永泰;事業(yè)定長(zhǎng)泰;  
          生意擬建甌;道路登上杭;  
          快樂(lè)永長(zhǎng)樂(lè);笑容如石獅;  
          人生愿福安;命運(yùn)靠德化;
          運(yùn)氣至將樂(lè);財(cái)氣沖云霄;  
          愛(ài)情似羅源;緣份聚浦城;  
          佳人倚屏南;秋眸透閩清;  
          生活悠寧德;穩(wěn)定勝龍巖;  
          閑來(lái)學(xué)仙游;累了歇閩候;  
          悠然過(guò)連江;漫步武夷山;  
          春天踏漳浦;夏季潛安溪;  
          秋來(lái)往南靖;冬至望建陽(yáng);   
          客家祖長(zhǎng)汀;土樓崇華安;  
          景美嘆松溪;水幽贊尤溪;  
          世世祈詔安;代代久惠安;  
          居住乃福州;屋建依晉江;  
          家廣置莆田;戶望有霞浦;  
          雄偉大廈門;門奢贏金門;  
          飲水來(lái)泉州;想吃去沙縣;  
          耕種有大田;豐收看古田;  
          心靜能三明;神怡時(shí)南平;  
          大力舉福鼎;脾性當(dāng)平和;  
          人心慈平潭;量大自福清;  
          心靜照明溪;為人切清流;  
          日子挺順昌;滋潤(rùn)有光澤;  
          國(guó)盛須政和;民心盼永定;  
          亂世用武平;盛世民柘榮;  
          健康學(xué)邵武;產(chǎn)業(yè)富連城;  
          父母長(zhǎng)壽寧;家人常泰寧;  
          交友圓周寧;諸事全寧化;  
          祈兄弟永安;禱愛(ài)人永春;  
          祝親戚漳平;愿朋友南安;  
          風(fēng)物滿漳州;寶地屬福建!

          posted @ 2010-12-02 11:45 afunms 閱讀(157) | 評(píng)論 (0)編輯 收藏

          問(wèn)題進(jìn)展

           

          經(jīng)過(guò)對(duì)揭陽(yáng)數(shù)據(jù)的研究,我終于找到問(wèn)題的根源。

          1. 對(duì)路由的發(fā)現(xiàn),以前的代碼有點(diǎn)問(wèn)題。又找出以前的論文,明確一下算法。

          2. 揭陽(yáng)設(shè)備路由表的nextHop全是VLAN。所以,這不是H3C或Cisco的問(wèn)題。如果cisco這樣設(shè)置,如果沒(méi)有CDP,目前的程序一樣得不出正確的結(jié)果。

          3. 比較吃驚或者奇怪的是,H3C的設(shè)備有支持Bridge.mib,有的支持Q-brideg.mib,而有的二者都有。

          4. 另一個(gè),H3C的設(shè)備比較奇怪的是,它的bridge-mac不會(huì)出現(xiàn)在任何交換機(jī)的fdb表。因此,通用的二層鏈路發(fā)現(xiàn)算法無(wú)法運(yùn)用。

          5. 因?yàn)?,所以我只能從路由表進(jìn)行發(fā)現(xiàn),對(duì)于nextHop是VLAN,必須轉(zhuǎn)成物理接口,然后用排除法(這個(gè)算法與通用二層鏈路算法有點(diǎn)類似,只是不用依賴bridge-mac)判斷這條鏈路是否是真實(shí)的物理鏈路。

              6. 根據(jù)5,修改了發(fā)現(xiàn)程序,對(duì)現(xiàn)在數(shù)據(jù)進(jìn)行“發(fā)現(xiàn)”,得到了正確結(jié)果!

          posted @ 2010-04-12 20:11 afunms 閱讀(318) | 評(píng)論 (2)編輯 收藏

          僅列出標(biāo)題
          共25頁(yè): 上一頁(yè) 1 2 3 4 5 6 7 8 9 下一頁(yè) Last 

          My Links

          News

          留言簿(18)

          隨筆檔案

          相冊(cè)

          搜索

          最新評(píng)論

          閱讀排行榜

          主站蜘蛛池模板: 比如县| 岳阳市| 大连市| 天等县| 石林| 玛曲县| 莆田市| 武山县| 常宁市| 永靖县| 安图县| 上犹县| 龙川县| 监利县| 太白县| 古浪县| 凯里市| 海原县| 南部县| 思南县| 上高县| 辽阳市| 涿鹿县| 海原县| 安阳市| 乌拉特前旗| 广饶县| 南充市| 海门市| 秦安县| 无棣县| 吴桥县| 舞钢市| 鄂托克旗| 平南县| 永寿县| 兴海县| 扎兰屯市| 安远县| 万载县| 开封市|