朱杰兵blog

          jonhney'blog
          posts - 140, comments - 1, trackbacks - 0, articles - 0

          sql

          兩張關(guān)聯(lián)表,刪除主表中已經(jīng)在副表中沒有的信息
          delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

          刪除重復(fù)記錄
          delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

          posted @ 2015-03-12 13:53 朱杰兵 閱讀(91) | 評(píng)論 (0)編輯 收藏

          String,StringBuffer和StringBuilder

              這個(gè)問題也比較常見。在進(jìn)行字符串拼接處理的時(shí)候,String通常會(huì)產(chǎn)生多個(gè)對(duì)象,而且將多個(gè)值緩存到常量池中。例如:

              String a=“a”;

              String b=“b”;

              a=a+b;

              這種情況下jvm會(huì)產(chǎn)生“a”,“b”,“ab”三個(gè)對(duì)象。而且字符串拼接的性能也很低。因此通常需要做字符串處理的時(shí)候盡量采用StringBuffer和StringBuilder來。



          ArrayList和LinkedList的選擇

              這個(gè)問題比較常見。通常程序員最好能夠?qū)ist的使用場(chǎng)景做出評(píng)估,然后根據(jù)特性作出選擇。ArrayList底層是使用數(shù)組實(shí)現(xiàn)的,因此隨機(jī)讀取數(shù)據(jù) 會(huì)比LinkedList快很多,而LinkedList是使用鏈表實(shí)現(xiàn)的,新增和刪除數(shù)據(jù)的速度比ArrayList快不少。



          包裝類和基本類型的選擇

              在代碼中,如果可以使用基本數(shù)據(jù)類型來做局部變量類型的話盡量使用基本數(shù)據(jù)類型,因?yàn)榛绢愋偷淖兞渴谴娣旁跅V械模b類的變量是在堆中,棧的操作速度比堆快很多

          posted @ 2015-03-11 09:33 朱杰兵 閱讀(121) | 評(píng)論 (0)編輯 收藏

          第一步:
          去除eclipse的JS驗(yàn)證:
          將windows->preference->Java Script->Validator->Errors/Warnings->
          Enable Javascript Sematic validation前面的勾去掉;

          第二步:
          右鍵項(xiàng)目 -> properties -> Builders 去掉JavaScript Validator 前面的勾

          posted @ 2015-03-10 11:41 朱杰兵 閱讀(1957) | 評(píng)論 (0)編輯 收藏

          window.open 中文亂碼問題
          JS中使用window.open("url param="+paramvalue)傳遞參數(shù)出現(xiàn)亂碼,提交的時(shí)候,客戶端瀏覽器URL中顯示參數(shù)是正確的,但是傳到了服務(wù)器端是是亂碼。這種情況下需要在客戶端對(duì)該參數(shù)進(jìn)行編碼,然后在服務(wù)器端解碼即可。

          1、JS客戶端編碼

          var selStr=document.getElementsByName('selStr')[0].value;
              selStr=encodeURI(encodeURI(selStr));
              window.open('printWindow.do bm=j&selStr='+selStr+'');

          注意:編碼的時(shí)候需要使用兩次encodeUri,寫一個(gè)就是????號(hào),寫兩個(gè)則輸出: %4d%5a這種

          2、服務(wù)器端解碼:

          String tempSelStrs=request.getParameter("selStr").toString();

          String selStr=java.net.URLDecoder.decode(tempSelStrs,"UTF-8");

          posted @ 2015-03-07 17:35 朱杰兵 閱讀(1313) | 評(píng)論 (0)編輯 收藏

          當(dāng)eclipse已經(jīng)安了一個(gè)tomcat,再安多個(gè)的時(shí)候,new server   ,
          server location選擇第三個(gè) use custom location (does not modify tomcat installation)
          右面的ports 三個(gè)都改成跟已有的tomcat端口不一樣

          posted @ 2015-03-05 17:20 朱杰兵 閱讀(172) | 評(píng)論 (0)編輯 收藏

          1. ps -ef | grep tomcat  查看進(jìn)程
          2. kill -9   xxx  殺掉指定的進(jìn)程
          3.  cd /...  到bin目錄  
          4../startup.sh & tail -f ../logs/catalina.out   或者

          ./catalina.sh run

          (這樣有個(gè)問題,當(dāng)關(guān)閉客戶端的時(shí)候,服務(wù)也會(huì)停掉)

          解決辦法,在bin目錄下執(zhí)行完./startup.sh   后,緊接著 在執(zhí)行 tail -f ../logs/catalina.out  速度要快,不然看不到日志



          進(jìn)到logs下
          rm -rf catalina.out
          ../bin/startup.sh
          tail -f catalina.out

          posted @ 2015-03-05 17:16 朱杰兵 閱讀(135) | 評(píng)論 (0)編輯 收藏

          1. import com.alibaba.fastjson.JSONObject;  
          2.   
          3.   
          4. /** 
          5.  * Created by wangzhenfei on 14-4-15. 
          6.  */  
          7. public class FastJsonTest {  
          8.     public static void main(String[] args){  
          9.         String jsonStr = "{\"JACKIE_ZHANG\":\"張學(xué)友\",\"ANDY_LAU\":\"劉德華\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ;  
          10.   
          11.   
          12.         //做5次測(cè)試  
          13.         for(int i=0,j=5;i<j;i++)  
          14.         {  
          15.            JSONObject jsonObject = JSONObject.parseObject(jsonStr) ;  
          16.            for(java.util.Map.Entry<String,Object> entry:jsonObject.entrySet()){  
          17.                System.out.print(entry.getKey()+"-"+entry.getValue()+"\t");  
          18.            }  
          19.             System.out.println();//用來?yè)Q行  
          20.         }  
          21.     }  
          22. }  

          運(yùn)行結(jié)果:
          1. LIMING-黎明 Aaron_Kwok-郭富城JACKIE_ZHANG-張學(xué)友ANDY_LAU-劉德華  
          2. Aaron_Kwok-郭富城 ANDY_LAU-劉德華LIMING-黎明JACKIE_ZHANG-張學(xué)友  
          3. Aaron_Kwok-郭富城 JACKIE_ZHANG-張學(xué)友ANDY_LAU-劉德華LIMING-黎明  
          4. LIMING-黎明 ANDY_LAU-劉德華JACKIE_ZHANG-張學(xué)友Aaron_Kwok-郭富城  
          5. JACKIE_ZHANG-張學(xué)友 LIMING-黎明ANDY_LAU-劉德華Aaron_Kwok-郭富城  


          解決辦法:定義為JSONArray,代碼如下:

          1. import com.alibaba.fastjson.JSONArray;  
          2.   
          3. /** 
          4.  * Created by wangzhenfei on 14-4-15. 
          5.  */  
          6. public class FastJsonTest {  
          7.     public static void main(String[] args){  
          8.         String jsonStr = "[{\"JACKIE_ZHANG\":\"張學(xué)友\"},{\"ANDY_LAU\":\"劉德華\"},{\"LIMING\":\"黎明\"},{\"Aaron_Kwok\":\"郭富城\"}]" ;  
          9.         //做5次測(cè)試  
          10.         for(int i=0,j=5;i<j;i++)  
          11.         {  
          12.             JSONArray jsonArray = JSONArray.parseArray(jsonStr);  
          13.   
          14.            for(int k=0;k<jsonArray.size();k++){  
          15.                System.out.print(jsonArray.get(k) + "\t");  
          16.            }  
          17.             System.out.println();//用來?yè)Q行  
          18.         }  
          19.     }  
          20. }  

          運(yùn)行結(jié)果為:
          1. {"JACKIE_ZHANG":"張學(xué)友"} {"ANDY_LAU":"劉德華"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}  
          2. {"JACKIE_ZHANG":"張學(xué)友"} {"ANDY_LAU":"劉德華"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}  
          3. {"JACKIE_ZHANG":"張學(xué)友"} {"ANDY_LAU":"劉德華"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}  
          4. {"JACKIE_ZHANG":"張學(xué)友"} {"ANDY_LAU":"劉德華"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}  
          5. {"JACKIE_ZHANG":"張學(xué)友"} {"ANDY_LAU":"劉德華"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}  


          如果就想要定義為JSONObject,而不是JSONArray,可以選用其他JSON解析器,個(gè)人推薦使用google的gson,文檔明顯比fastjson好很多(從這里可以看出阿里巴巴和谷歌的差距):

          1. import com.google.gson.JsonElement;  
          2. import com.google.gson.JsonObject;  
          3. import com.google.gson.JsonParser;  
          4.   
          5. /** 
          6.  * Created by wangzhenfei on 14-4-15. 
          7.  */  
          8. public class FastJsonTest {  
          9.     public static void main(String[] args){  
          10.         String jsonStr = "{\"JACKIE_ZHANG\":\"張學(xué)友\",\"ANDY_LAU\":\"劉德華\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ;  
          11.         //做5次測(cè)試  
          12.         for(int i=0,j=5;i<j;i++)  
          13.         {  
          14.             JsonObject jsonObject = (JsonObject) new JsonParser().parse(jsonStr);  
          15.             for(java.util.Map.Entry<String,JsonElement> entry:jsonObject.entrySet()){  
          16.                 System.out.print(entry.getKey()+"-"+entry.getValue()+"\t");  
          17.             }  
          18.             System.out.println();//用來?yè)Q行  
          19.         }  
          20.     }  
          21. }  

          運(yùn)行結(jié)果:
          1. JACKIE_ZHANG-"張學(xué)友"  ANDY_LAU-"劉德華"  LIMING-"黎明" Aaron_Kwok-"郭富城"      
          2. JACKIE_ZHANG-"張學(xué)友"  ANDY_LAU-"劉德華"  LIMING-"黎明" Aaron_Kwok-"郭富城"      
          3. JACKIE_ZHANG-"張學(xué)友"  ANDY_LAU-"劉德華"  LIMING-"黎明" Aaron_Kwok-"郭富城"      
          4. JACKIE_ZHANG-"張學(xué)友"  ANDY_LAU-"劉德華"  LIMING-"黎明" Aaron_Kwok-"郭富城"      
          5. JACKIE_ZHANG-"張學(xué)友"  ANDY_LAU-"劉德華"  LIMING-"黎明" Aaron_Kwok-"郭富城"      

          posted @ 2015-02-27 18:52 朱杰兵 閱讀(124) | 評(píng)論 (0)編輯 收藏

          lamp(Web應(yīng)用軟件)

          Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一組常用來搭建動(dòng)態(tài)網(wǎng)站或者服務(wù)器的開源軟件,本身都是各自獨(dú)立的程序,但是因?yàn)槌1环旁谝黄鹗褂茫瑩碛辛嗽絹碓礁叩募嫒荻龋餐M成了一個(gè)強(qiáng)大的Web應(yīng)用程序平臺(tái)。

          Apache是LAMP架構(gòu)最核心的Web Server,開源、穩(wěn)定、模塊豐富是Apache的優(yōu)勢(shì)。但Apache的缺點(diǎn)是有些臃腫,內(nèi)存和CPU開銷大,性能上有損耗,不如一些輕量級(jí)的Web 服務(wù)器(例如nginx)高效,輕量級(jí)的Web服務(wù)器對(duì)于靜態(tài)文件的響應(yīng)能力來說遠(yuǎn)高于Apache服務(wù)器。

          posted @ 2015-02-12 08:55 朱杰兵 閱讀(93) | 評(píng)論 (0)編輯 收藏

          很多登錄功能上都有個(gè)“記住密碼”的功能,其實(shí)無非就是對(duì)cookie的讀取。

          下面展示這個(gè)功能的代碼,原作者已無法考究。。。。

          測(cè)試方法:直接輸入賬號(hào)密碼,提交后,刷新頁(yè)面,再輸入同樣的賬號(hào),就可以顯示

          <!DOCTYPE HTML>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <title>js COOKIE 記住帳號(hào)或密碼</title>
          <script type="text/javascript">
              window.onload=function onLoginLoaded() {
                  if (isPostBack == "False") {
                      GetLastUser();
                  }
              }
               
              function GetLastUser() {
                  var id = "49BAC005-7D5B-4231-8CEA-16939BEACD67";//GUID標(biāo)識(shí)符
                  var usr = GetCookie(id);
                  if (usr != null) {
                      document.getElementById('txtUserName').value = usr;
                  } else {
                      document.getElementById('txtUserName').value = "001";
                  }
                  GetPwdAndChk();
              }
              //點(diǎn)擊登錄時(shí)觸發(fā)客戶端事件
               
              function SetPwdAndChk() {
                  //取用戶名
                  var usr = document.getElementById('txtUserName').value;
                  alert(usr);
                  //將最后一個(gè)用戶信息寫入到Cookie
                  SetLastUser(usr);
                  //如果記住密碼選項(xiàng)被選中
                  if (document.getElementById('chkRememberPwd').checked == true) {
                      //取密碼值
                      var pwd = document.getElementById('txtPassword').value;
                      alert(pwd);
                      var expdate = new Date();
                      expdate.setTime(expdate.getTime() + 14 * (24 * 60 * 60 * 1000));
                      //將用戶名和密碼寫入到Cookie
                      SetCookie(usr, pwd, expdate);
                  } else {
                      //如果沒有選中記住密碼,則立即過期
                      ResetCookie();
                  }
              }
               
              function SetLastUser(usr) {
                  var id = "49BAC005-7D5B-4231-8CEA-16939BEACD67";
                  var expdate = new Date();
                  //當(dāng)前時(shí)間加上兩周的時(shí)間
                  expdate.setTime(expdate.getTime() + 14 * (24 * 60 * 60 * 1000));
                  SetCookie(id, usr, expdate);
              }
              //用戶名失去焦點(diǎn)時(shí)調(diào)用該方法
               
              function GetPwdAndChk() {
                  var usr = document.getElementById('txtUserName').value;
                  var pwd = GetCookie(usr);
                  if (pwd != null) {
                      document.getElementById('chkRememberPwd').checked = true;
                      document.getElementById('txtPassword').value = pwd;
                  } else {
                      document.getElementById('chkRememberPwd').checked = false;
                      document.getElementById('txtPassword').value = "";
                  }
              }
              //取Cookie的值
               
              function GetCookie(name) {
                  var arg = name + "=";
                  var alen = arg.length;
                  var clen = document.cookie.length;
                  var i = 0;
                  while (i < clen) {
                      var j = i + alen;
                      //alert(j);
                      if (document.cookie.substring(i, j) == arg) return getCookieVal(j);
                      i = document.cookie.indexOf(" ", i) + 1;
                      if (i == 0) break;
                  }
                  return null;
              }
              var isPostBack = "<%= IsPostBack %>";
               
              function getCookieVal(offset) {
                  var endstr = document.cookie.indexOf(";", offset);
                  if (endstr == -1) endstr = document.cookie.length;
                  return unescape(document.cookie.substring(offset, endstr));
              }
              //寫入到Cookie
               
              function SetCookie(name, value, expires) {
                  var argv = SetCookie.arguments;
                  //本例中l(wèi)ength = 3
                  var argc = SetCookie.arguments.length;
                  var expires = (argc > 2) ? argv[2] : null;
                  var path = (argc > 3) ? argv[3] : null;
                  var domain = (argc > 4) ? argv[4] : null;
                  var secure = (argc > 5) ? argv[5] : false;
                  document.cookie = name + "=" + escape(value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : "");
              }
               
              function ResetCookie() {
                  var usr = document.getElementById('txtUserName').value;
                  var expdate = new Date();
                  SetCookie(usr, null, expdate);
              }
          </script>
          </head>
          <body>
          <form id="form1">
            <div> 用戶名:
              <input type="text" ID="txtUserName" onblur="GetPwdAndChk()">
              <input type="password" ID="txtPassword">
              密碼:
              <input type="checkbox" ID="chkRememberPwd" />
              記住密碼
              <input type="button" OnClick="SetPwdAndChk()" value="進(jìn)入"/>
            </div>
          </form>
          </body>
          </html>

          posted @ 2015-01-31 13:48 朱杰兵 閱讀(123) | 評(píng)論 (0)編輯 收藏

               摘要: settings.xml文件會(huì)指定倉(cāng)庫(kù)文件地址。  閱讀全文

          posted @ 2015-01-27 15:48 朱杰兵 閱讀(104) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共14頁(yè): First 上一頁(yè) 6 7 8 9 10 11 12 13 14 下一頁(yè) 
          主站蜘蛛池模板: 收藏| 西宁市| 板桥市| 土默特右旗| 元江| 静宁县| 卓资县| 遵义县| 独山县| 孝义市| 上犹县| 长丰县| 海口市| 大关县| 吴旗县| 镶黄旗| 昌图县| 太原市| 绩溪县| 镇赉县| 孙吴县| 丰台区| 商洛市| 团风县| 海伦市| 和静县| 宜宾市| 仪征市| 五寨县| 茶陵县| 邳州市| 通海县| 衡水市| 崇义县| 澄迈县| 富民县| 阿瓦提县| 永和县| 盘锦市| 鹤岗市| 白城市|