石頭JAVA擺地攤兒

          JAVA所有的討論-要一點一點的進步

            BlogJava :: 首頁 ::  :: 聯系 ::  :: 管理 ::
            30 隨筆 :: 0 文章 :: 11 評論 :: 0 Trackbacks

          1.
          ......代碼段......
          <script language="javascript">
          alert("數據插入成功");
          </script>
          <%response.sendRedirect("adddoc.jsp");%>
          </body>  
          </html>
          以前我的意途是彈出一個對話框后再sendRedirect,因為JSP是在服務器端執行,所以必須這樣:
          <script language=javascript>
          alert("數據插入成功");
          location.href="adddoc.jsp";
          </script>

          2.
          select * from table1 where ghy1 like '[a-z]'

          這個語句查詢A-Z的單個字母

          如果一個人的名字是AA,,ZZ就查詢不出來,何解:
          select * from table1 where left(ghy1,1) between 'a' and 'z'
          select * from table1 where ghy1 like '[a-z]%'


          3.
          隨機抽取記錄:
          select top n * from tablename order by newid()

          4.
          使文本框和密碼框高度一致:
          <input type="text" style="height=20.0pt"><input type="password" style="height=20.0pt">

          5.
          文本域插入數據庫時有特殊符號可以這樣:
          prep = conn.prepareStatement("insert into table values(?)");
          prep.setString(1, request.getParameter("text"));
          //這樣無論有什么特殊字符都自動搞掂,無需轉換


          6.
          截取字符串函數,對網頁中顯示超長文字截短時使用:
          **
             * 將字符串截短,取前n個字符,英文算半個字符。
             * @param orignalString 原字符串
             * @param length 長度
             * @param chopedString 超過部分的表示字符串
             * @return 截取的字符串
             */
            public static String chop(String orignalString,int length,String chopedString) {
              if (orignalString==null||orignalString.length()==0) {
                return orignalString;
              }
              orignalString=orignalString.replaceAll(" "," ");
              if (orignalString.length()<length) {
                return orignalString;
              }
              StringBuffer buffer=new StringBuffer(length);
              length=length*2;
              int count=0;
              int stringLength=orignalString.length();
              int i=0;
              for (;count<length&&i<stringLength;i++) {
                char c=orignalString.charAt(i);
                if (c<'\u00ff') {
                  count++;
                } else {
                  count+=2;
                }
                buffer.append(c);
              }
              if (i<stringLength) {
                buffer.append(chopedString);
              }
              return buffer.toString();
            }

          7.
          產生不大于X的數并且這個數大于Y
          X-(X-Y)*Math.random()

          8.
          一個初始化的基本概念:
          class Test{
             int i ; //class 的成員
             public void test() {
                 System.out.println(i);//編譯通過
                 int j ;               //不是class的成員,必須手動初始化
                 System.out.println(j); //失敗 
             }
          }


          9.
          頁面上有一錨點,點擊按鈕去定位到錨點
           <input  type=button  onclick=  "window.location.href  =  '#anchorName'  "  >

          10.
          在JSP文件中的<%%>中怎么“大語句段”注釋?
          <%--  
          --%  >


          11.
          使table列寬固定:
          <table  style=  "word-break:break-all  "  >  

          12.
          關于抽象類的一些解釋:
          http://community.csdn.net/Expert/TopicView2.asp?id=4645044&datebasetype=now

          13.
          我喜歡這個鏈接:
          http://topic.csdn.net/

          14.
          區別:
          HASHSET:  
                 此類實現  Set  接口,由哈希表(實際上是一個  HashMap  實例)支持。它不保證集合的迭代順序;特別是它不保證該順序恒久不變。此類允許使用  null  元素。  
                 此類為基本操作提供了穩定性能,這些基本操作包括  add、remove、contains  和  size,假定哈希函數將這些元素正確地分布在桶中。對此集合進行迭代所需的時間與  HashSet  實例的大小(元素的數量)和底層  HashMap  實例(桶的數量)的“容量”的和成比例。因此,如果迭代性能很重要,則不要將初始容量設置得太高(或將加載因子設置得太低)。  
                 注意,此實現不是同步的。  如果多個線程同時訪問一個集合,而其中至少一個線程修改了該集合,那么它必須  保持外部同步。這通常是通過對自然封裝該集合的對象執行同步操作來完成的。如果不存在這樣的對象,則應該使用  Collections.synchronizedSet  方法來“包裝”集合。最好在創建時完成這一操作,以防止對  HashSet  實例進行意外的不同步訪問:    
                             Set  s  =  Collections.synchronizedSet(new  HashSet(...));  
                 此類的  iterator  方法返回的迭代器是快速失敗  的:在創建迭代器之后,如果對集合進行修改,除非通過迭代器自身的  remove  方法,否則在任何時間以任何方式對其進行修改,Iterator  都將拋出  ConcurrentModificationException。因此,面對并發的修改,迭代器很快就會完全失敗,而不冒將來在某個不確定時間發生任意不確定行為的風險。    
                 注意,迭代器的快速失敗行為無法得到保證,因為一般來說,不可能對是否出現不同步并發修改做出任何硬性保證。快速失敗迭代器在盡最大努力拋出  ConcurrentModificationException。因此,為提高這類迭代器的正確性而編寫一個依賴于此異常的程序是錯誤做法:迭代器的快速失敗行為應該僅用于檢測程序錯誤。
           
           
          HASHMAP:  
                 基于哈希表的  Map  接口的實現。此實現提供所有可選的映射操作,并允許使用  null  值和  null  鍵。(除了不同步和允許使用  null  之外,HashMap  類與  Hashtable  大致相同。)此類不保證映射的順序,特別是它不保證該順序恒久不變。    
                 此實現假定哈希函數將元素正確分布在各桶之間,可為基本操作(get  和  put)提供穩定的性能。迭代集合視圖所需的時間與  HashMap  實例的“容量”(桶的數量)及其大小(鍵-值映射關系數)的和成比例。所以,如果迭代性能很重要,則不要將初始容量設置得太高(或將加載因子設置得太低)。    
                 HashMap  的實例有兩個參數影響其性能:初始容量  和加載因子。容量  是哈希表中桶的數量,初始容量只是哈希表在創建時的容量。加載因子  是哈希表在其容量自動增加之前可以達到多滿的一種尺度。當哈希表中的條目數超出了加載因子與當前容量的乘積時,通過調用  rehash  方法將容量翻倍。    
                 通常,默認加載因子  (.75)  在時間和空間成本上尋求一種折衷。加載因子過高雖然減少了空間開銷,但同時也增加了查詢成本(在大多數  HashMap  類的操作中,包括  get  和  put  操作,都反映了這一點)。在設置初始容量時應該考慮到映射中所需的條目數及其加載因子,以便最大限度地降低  rehash  操作次數。如果初始容量大于最大條目數除以加載因子,則不會發生  rehash  操作。    
                 如果很多映射關系要存儲在  HashMap  實例中,則相對于按需執行自動的  rehash  操作以增大表的容量來說,使用足夠大的初始容量創建它將使得映射關系能更有效地存儲。    
                 注意,此實現不是同步的。如果多個線程同時訪問此映射,而其中至少一個線程從結構上修改了該映射,則它必須  保持外部同步。(結構上的修改是指添加或刪除一個或多個映射關系的操作;僅改變與實例已經包含的鍵關聯的值不是結構上的修改。)這一般通過對自然封裝該映射的對象進行同步操作來完成。如果不存在這樣的對象,則應該使用  Collections.synchronizedMap  方法來“包裝”該映射。最好在創建時完成這一操作,以防止對映射進行意外的不同步訪問,如下所示:  
                     Map  m  =  Collections.synchronizedMap(new  HashMap(...));  
                 由所有此類的“集合視圖方法”所返回的迭代器都是快速失敗  的:在迭代器創建之后,如果從結構上對映射進行修改,除非通過迭代器自身的  remove  或  add  方法,其他任何時間任何方式的修改,迭代器都將拋出  ConcurrentModificationException。因此,面對并發的修改,迭代器很快就會完全失敗,而不冒在將來不確定的時間任意發生不確定行為的風險。    
                 注意,迭代器的快速失敗行為不能得到保證,一般來說,存在不同步的并發修改時,不可能作出任何堅決的保證。快速失敗迭代器盡最大努力拋出  ConcurrentModificationException。因此,編寫依賴于此異常程序的方式是錯誤的,正確做法是:迭代器的快速失敗行為應該僅用于檢測程序錯誤。
              
          ---------------------------------------------------------
          HashSet(散列表):  它實現了Set接口,也就意味著它的元素不能有重復值出現。并且在HashSet中沒有get()方法,但可以通過iterator()來實現。要注意的是假如要在HasSet中存放一些對象,那么你得重定義hashCode()與equals()二個方法來保不可以存放相同的內容的元素。對于hashcode()所返回的值,hashset用它來計算(通過特定的函數)該對象在內存中的存放位置;后者主要用來判斷二個對象的內容是否相等而返回對應的boolen型。  
           
           
          HashMap:  主要特點是存放的一個鍵值對,一些有用的方法是可返回視圖(我覺得可以把它理解為一個集合)如:keyset(),values(),entyset()等。  


          15.
          還是區別:
           

          Collection是List  Set的父接口,List是有序的,而Set中元素都是不能重復的;和Map接口搞清楚后,然后記住有什么樣的數據結構  就有什么樣的實現類,比如ArrayList,數組鏈表是由數組后推而成,可以使用LIST的接口操作這個鏈表,但是確有數組的特性(存取效率高),有堆棧的數據結構,就有Stack,有樹結構,就有Tree,有散列表,就有Hashtable

          16.
          動態下拉表單:
          <TR>
          <TD><bean:message key="user.jsp.deid"/></TD>
          <TD>
          <SELECT name="deid">
          <logic:iterate id="depart" name="departarray1" >
          <option value="<bean:write name="depart" property="deId"/>">
          <bean:write name="depart" property="deName"/>
          </option>
          </logic:iterate>
          </SELECT>
          </TD>
          </TD>
          </TR>

          ---------------------------------------
          <html:select property="personnelId">
          <html:option value="">請選擇</html:option>
          <html:options collection="personList" property="personId" labelProperty="personName"/>
          </html:select>
          html:options自動幫你迭代personList中的內容,前提是personList是Collection類型的,而且封裝的是一個包含personId,personName屬性的對象
          property顯示的是value,labelProperty顯示的是頁面看到的內容


          17.
          Set接口中重寫hashCode()會提高性能?
          建議給自己寫得class全部加上一個hashCode,否則會使用object的hashcode,全都一樣,會導致很多問題。記得《Effective java》中有一條就是:如果你寫了equals,必須要寫hashcode,我的一位大佬講equals調用前會先比較hashcode,若hashcode不相等則不會比較。set是不允許重復的,這意味著你加入set中的數據會和set中已有的數據進行比較,所以,一定要寫hashcode,這樣才能加快比較速度。hashcode也要寫得好點,盡量避免碰撞

          18.
          在Struts技術中,“超級鏈接”使用ForwardAction類進行實現
          三個必須有的屬性path parameter type
          例:
          <action  path="/viewsignin"  parameter="/security/signin.jsp" type="org.apache.struts.actions.ForwardAction"/>


          19.
              Date now=new Date();
              Timestamp ts = new Timestamp(now.getTime());
              ps.setTimestamp(8, ts);
              ps.executeUpdate();
          往數據庫中插入日期方法

          20.
          <td height="50" align="left" valign="top" style="position:relative"><div id="Layer2" style="position:absolute; width:132px; height:38px; z-index:2; left: 472px;">sdafasdf</div></td>

          21.
          驗證郵箱格式的正則表達式(Struts)

           public ActionErrors validate(ActionMapping actionMapping,
                                           HttpServletRequest httpServletRequest) {
                  String style =
                          "^[a-zA-Z][a-zA-Z0-9._-]*@([a-zA-Z0-9-_]+\\.)+(com|gov|net|com\\.cn|edu\\.cn)$";
                  Pattern ptt = Pattern.compile(style);
                  Matcher mch=ptt.matcher(email);
                  ActionErrors errors = new ActionErrors();
                  if ((name == null || name.equals(""))) {
                      ActionError error = new ActionError("error.name");
                      errors.add("name", error);
                  } else
                  if (!mch.matches()) {
                      ActionError error = new ActionError("error.email");
                      errors.add("email", error);
                  }
                  return errors;
              }

          22.
          自動隔行換背景的css
          tr{
          background-color:expression(rowIndex%2?'#ffffcc':'')
          }

          23.
          SQL Server計算年齡,想象中簡單,其實很難:
           declare   @Birtyday   smalldatetime  
            set   @Birtyday   ='2000-11-27'  
            --set   @Birtyday   =getdate()  
            select   datediff(year,@Birtyday,getdate())  
                          -   case   when   datediff(day,dateadd(year,datediff(year,@Birtyday,getdate()),@Birtyday),getdate())   >=   0   then   0      else   1   end  

          24.
          SmoothGallery 2.0在IE6中521行出錯,改正FIX如下:

          changed code from:
          function startGallery() { var myGallery = new gallery($('myGallery'), { timed: true }); } window.onDomReady(startGallery);

          changed code to:
          function startGallery() { var myGallery = new gallery($('myGallery'), { timed: true, embedLinks:false, textShowCarousel:'Show Gallery'}); myGallery.showCarousel(); } window.addEvent('domready',startGallery);


          25.
          sc create svn binpath= "C:\svn-win32-1.4.6\svn-win32-1.4.6\bin\svnserve.exe --service -r G:\svnproject" displayname= "Subversion Server" depend= Tcpip start= auto

          26.
          HTML標記的權重是1,CLASS的權重是10,ID的權重是100,繼承的權重為0 
          posted on 2006-07-05 10:57 石頭JAVA擺地攤兒 閱讀(441) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 昌都县| 沂源县| 信阳市| 柏乡县| 东平县| 齐河县| 德保县| 新野县| 乐昌市| 金门县| 邛崃市| 盐城市| 清苑县| 岫岩| 宣汉县| 常熟市| 玉门市| 田阳县| 金华市| 白河县| 河北区| 灌云县| 阆中市| 石河子市| 社旗县| 柳州市| 南川市| 五指山市| 盐亭县| 盐池县| 台南县| 秦安县| 宁陕县| 平武县| 凤凰县| 巴彦县| 台南县| 招远市| 贵德县| 漳州市| 武胜县|