少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

          #

          posted @ 2013-10-18 22:43 abin 閱讀(394) | 評論 (0)編輯 收藏

          數據類型                   大小(二進制位數)                 范圍                                                                                 默認值 

          byte(字節) 8 -128 - 127 0
          shot(短整型) 16 -32768 - 32768 0
          int(整型) 32 -2147483648-2147483648 0
          long(長整型) 64 -9233372036854477808-9233372036854477808 0
          float(浮點型) 32 -3.40292347E+38-3.40292347E+38 0.0f
          double(雙精度) 64 -1.79769313486231570E+308-1.79769313486231570E+308 0.0d
          char(字符型) 16 ‘ \u0000 - u\ffff ’ ‘\u0000 ’
          boolean(布爾型)      1                   true/false                                                                                                 false


          JAVA基本數據類型所占字節數是多少?

          byte     1字節               
          short    2字節               
          int      4字節               
          long     8字節               
          char     2字節(C語言中是1字節)可以存儲一個漢字
          float    4字節               
          double   8字節               
          boolean  false/true(理論上占用1bit,1/8字節,實際處理按1byte處理)       
          JAVA是采用Unicode編碼。每一個字節占8位。你電腦系統應該是 32位系統,這樣每個int就是 4個字節
          其中一個字節由8個二進制位組成

          Java一共有8種基本數據類型(原始數據類型):     
          類型 存儲要求 范圍(包含) 默認值 包裝類
          整 int 4字節(32位) -231~ 231-1 0 Integer
          數 short 2字節(16位) -215~215-1 0 Short
          類 long 8字節(64位) -263~263-1 0 Long
          型 byte 1字節(8位) -27~27-1 0 Byte
          浮點 float 4字節(32位) -3.4e+38 ~ 3.4e+38 0.0f Float
          類型 double 8字節(64位) -1.7e+308 ~ 1.7e+308 0 Double
          字符 char 2字節(16位) u0000~uFFFF(‘’~‘?’) ‘0’ Character
          (0~216-1(65535))
          布爾 boolean 1/8字節(1位) true, false FALSE Boolean



          在移動開發中由于移動設備內存的局限性,往往需要考慮使用的數據類型所占用的字節數。下面簡單介紹下Java中幾種基本數據類型,以加深記憶。
          在Java中一共有8種基本數據類型,其中有4種整型,2種浮點類型,1種用于表示Unicode編碼的字符單元的字符類型和1種用于表示真值的boolean類型。(一個字節等于8個bit)

          1.整型
          類型              存儲需求     bit數    取值范圍      備注
          int                 4字節           4*8 
          short             2字節           2*8    -32768~32767
          long              8字節           8*8
          byte              1字節           1*8     -128~127

          2.浮點型
          類型              存儲需求     bit數    取值范圍      備注
          float              4字節           4*8                  float類型的數值有一個后綴F(例如:3.14F)
          double          8字節           8*8                       沒有后綴F的浮點數值(如3.14)默認為double類型

          3.char類型
          類型              存儲需求     bit數     取值范圍      備注
          char              2字節          2*8

          4.boolean類型
          類型              存儲需求    bit數    取值范圍      備注
          boolean        1字節          1*8      false、true


          補充:Java有一個能夠表示任意精度的算書包,通常稱為“大數值”(big number)。雖然被稱為大數值,但它并不是一種Java類型,而是一個Java對象。

          如果基本的整數和浮點數精度不能夠滿足需求,那么可以使用java.math包中的兩個很有用的類:BigIntegerBigDecimal(Android SDK中也包含了java.math包以及這兩個類)這兩個類可以處理包含任意長度數字序列的數值。BigInteger類實現了任意精度的整數運算,BigDecimal實現了任意精度的浮點數運算。具體的用法可以參見Java API。

          http://blog.csdn.net/witsmakemen/article/details/8974200

          int常見為4個字節,跟操作系統有關系。
          turbo c(以及Turbo c的一些衍生編譯器,他們用的一套編譯程序)是dos時代的編譯器,是上世紀80年代的產物,嚴重過時,屬于老掉牙的產品,他們編譯出來的程序是16位操作系統dos下的程序,所以長度為16位,即兩個字節。windows為了兼容dos,所以turbo c生成的文件也可以在windows中運行。
          其他一般就都是4個字節了。
          操作系統16位的時候,int 2字節,操作系統32位的時候,int 4字節,由于32位系統之前占主流地位,實際現在就算是64位系統,出于兼容性考慮,int也是4字節的



          posted @ 2013-10-18 22:31 abin 閱讀(8606) | 評論 (0)編輯 收藏

          文件上傳方面的: plupload+fastdfs   plupload負責上傳,fastdfs 負責存儲
          posted @ 2013-09-26 09:24 abin 閱讀(366) | 評論 (0)編輯 收藏

           二叉樹相關的問的比較多
          二分查找
          treemap和某些數據庫索引的的底層是紅黑樹
          鏈表的相交和閉環
           針對二叉樹,比如分層遍歷,找最近父節點
          在字符串中找回文串,數組中尋找重復的數字或相鄰之和的最大串
           紅黑樹不就是B樹么
           如果沒有遇到專業考算法的公司,只能說還沒面試過牛公司,就相當于編程感覺不到數據結構,相當于編程還沒入門
           是對稱二叉B樹
          還是有點不一樣,是其子集,誤導你了
          posted @ 2013-09-24 08:50 abin 閱讀(439) | 評論 (0)編輯 收藏

             try {
                      response.setContentType("application/vnd.ms-excel;charset=UTF-8");
                      response.setHeader("Content-Disposition", "attachment; filename=" +teamQuery.getTeamId()+ new String(" 項目銷量.xls".getBytes("gbk"), "iso8859-1"));
                      Boolean flag = manteamService.downFile(teamQuery,response.getOutputStream());
                      if (flag) {
                          resutMap.put("success", true);

                      }

                  } catch (UnsupportedEncodingException e) {
                      e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                  } catch (IOException e) {
                      e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                  }
          一定要有response.getOutputStream()
          posted @ 2013-09-21 16:06 abin 閱讀(614) | 評論 (0)編輯 收藏

          百度
          T2:7k~10k
          T3:11k~13k
          T4:14k~16k
          T5:16k~20k
          T6:20k~25k
          posted @ 2013-09-16 16:41 abin 閱讀(638) | 評論 (0)編輯 收藏

          年青代=新生代(eden space)+2個survivor
          年青代用來存放新近創建的對象,尺寸隨堆大小的增大和減小而相應的變化,默認值是保持為堆大小的1/15,可以通過-Xmn參數設置年青代為固定大小,也可以通過-XX:NewRatio來設置年青代與年老代的大小比例,年青代的特點是對象更新速度快,在短時間內產生大量的“死亡對象”。
          年輕代的特點是產生大量的死亡對象,并且要是產生連續可用的空間, 所以使用復制清除算法和并行收集器進行垃圾回收.     對年輕代的垃圾回收稱作初級回收 (minor gc)

          初級回收將年輕代分為三個區域,  一個新生代 , 2個大小相同的復活代,  應用程序只能使用一個新生代和一個復活代, 當發生初級垃圾回收的時候,gc掛起程序, 然后將新生代和復活代中的存活對象復制到另外一個非活動的復活代中,然后一次性清除新生代和復活代,將原來的非復活代標記成為活動復活代.    將在指定次數回收后仍然存在的對象移動到年老代中, 初級回收后,得到一個空的可用的新生代.
          posted @ 2013-09-07 19:09 abin 閱讀(9639) | 評論 (4)編輯 收藏

          昨天,看一個build Standalone中databrusher的一個腳本,發現一個Java類似乎沒有在classpath中,好像也可一直運行了。很疑惑,問了對應的開發同學,然后自己好好看了下它的代碼,才知道了原理。
          命令是:$JAVA_HOME/bin/java $JAVA_OPTS com.alibaba.standalone.AppStartor com.alibaba.intl.standalone.databrusher.Startor "$main_class" "$signal_file" "$recivers"
          原理是:Java根據classpath找到,com.alibaba.standalone.AppStartor這個class,運行這個class,會啟動一個classloader來加載com.alibaba.intl.standalone.databrusher.Startor(在里面會指定到WORLDS-INF目錄下加載類),然后com.alibaba.intl.standalone.databrusher.Startor會啟動對應的"$main_class".
          然后,花了挺多時間好好看了一下Java的classloader,了解一下其中的原理和看了下代碼。下面也簡單總結一下吧。
          java虛擬機是由sun.misc.Launcher來初始化的,也就是java(或java.exe)這個程序來做的.虛擬機按以下順序搜索并裝載所有需要的類:
            1,引導類:組成java平臺的類,包含rt.jar和i18n.jar等基礎jar包中的類.
            2,擴展類:使用java擴展機制的類,都是位于擴展目錄($JAVA_HOME/jre/lib/ext)中的.jar檔案包.
            3,用戶類:開發者定義的類或者沒有使用java擴展機制的第三方產品.你必須在命令行中使用-classpath選項或者使用CLASSPATH環境變量來確定這些類的位,或者自己寫ClassLoader加載。
          Java的class loader的大致情況如下圖所示:
          http://renyongjie668.blog.163.com/prevPhDownload.do?host=renyongjie668&albumId=197449439&photoId=6568564371
          bootstrap classloader -->extension classloader-->system classloader
          虛擬機一啟動,會先做一些初始化的動作。一旦初始化動作完成之后,就會 產生第一個類別加載器,即所謂的Bootstrap Loader,Bootstrap Loader 是由C++ 所撰寫而成,這個Bootstrap Loader所做的初始工作中,除了也做一些基本的初始化動作之外,最重要的就是加載定義在sun.misc 命名空間底下的Launcher.java 之中的ExtClassLoader( 因為是inner class ,所以編譯之后會變成Launcher$ExtClassLoader.class) ,并設定其Parent 為null,代表其父加載器為Bootstrap Loader 。然后Bootstrap Loader ,再要求加載定義于sun.misc 命名空間底下的Launcher.java 之中的AppClassLoader( 因為是inner class,所以編譯之后會變成Launcher$AppClassLoader.class) ,并設定其Parent 為之前產生的ExtClassLoader 實例。
          a. Bootstrap ClassLoader/啟動類加載器
          主要負責java_home/jre/lib目錄下的核心 api 或 -Xbootclasspath 選項指定的jar包裝入工作.
          b. Extension ClassLoader/擴展類加載器
          主要負責java_home/jre/lib/ext目錄下的jar包或 -Djava.ext.dirs 指定目錄下的jar包裝入工作
          c. System ClassLoader/系統類加載器
          主要負責java -classpath/-Djava.class.path或$CLASSPATH變量所指的目錄下的類與jar包裝入工作.(這里需要說明的是,如果$CLASSPATH為空,jdk會默認將被運行的Java類的當前路徑作為一個默認的$CLASSPATH,一但設置了$CLASSPATH變量,則會到$CLASSPATH對應的路徑下去尋找相應的類,找不到就會報錯。這個結論,我已經經過測試,并且看了下類加載器中源代碼)
          d. User Custom ClassLoader/用戶自定義類加載類(java.lang.ClassLoader的子類)在程序運行期間, 通過java.lang.ClassLoader的子類動態加載class文件, 體現java動態實時類裝入特性.
          為了有更多的了解,寫了個簡單的Java程序對前面三種classloader能加載類的路徑及其parent類進行了測試。代碼如下:
          import java.net.URL;
          import java.net.URLClassLoader;
           /**
           * @className: IClassLoader
           * @description: 測試三種classloader加載類的路徑,及其parent
           * @author: 笑遍世界
           * @createTime: 2010-11-17 下午07:33:40
           */
          public class IClassLoader {
              public static void main(String[] args) {
          //        測試bootstrap classloader 的類加載路徑
                  URL[] urls=sun.misc.Launcher.getBootstrapClassPath().getURLs();
                  for (int i = 0; i < urls.length; i++) {
                    System.out.println(urls[i].toExternalForm());
                  }
                 
          //        測試extension classloader 的類加載路徑,先打印一個路徑,再打印出其parent,然后再打印出類加載路徑中的所有jar包
                  System.out.println("-------------------------------------");
                  System.out.println(System.getProperty("java.ext.dirs"));
                  ClassLoader extensionClassloader=ClassLoader.getSystemClassLoader().getParent();
                  System.out.println("the parent of extension classloader : "+extensionClassloader.getParent());
                  System.out.println("extension classloader can use thess jars:");
                  URL[] extURLs = ((URLClassLoader)ClassLoader.getSystemClassLoader().getParent()).getURLs();
                  for (int i = 0; i < extURLs.length; i++) {
                         System.out.println(extURLs[i]);
                  }       
                 
          //      測試system classloader 的類加載路徑,其實也就時classpath的路徑,并打印出它的parent
                  System.out.println("-------------------------------------");
                  System.out.println(System.getProperty("java.class.path"));
                  System.out.println(ClassLoader.getSystemResource(""));
                  ClassLoader systemClassloader=ClassLoader.getSystemClassLoader();
                  System.out.println("the parent of system classloader : "+systemClassloader.getParent());
              }
          }

          本機(linux+jdk1.5)運行結果如下:
          file:/usr/ali/java/jre/lib/rt.jar
          file:/usr/ali/java/jre/lib/i18n.jar
          file:/usr/ali/java/jre/lib/sunrsasign.jar
          file:/usr/ali/java/jre/lib/jsse.jar
          file:/usr/ali/java/jre/lib/jce.jar
          file:/usr/ali/java/jre/lib/charsets.jar
          file:/usr/ali/java/jre/classes
          -------------------------------------
          /usr/ali/java/jre/lib/ext
          the parent of extension classloader : null
          extension classloader can use thess jars:
          file:/usr/ali/java/jre/lib/ext/emma.jar
          file:/usr/ali/java/jre/lib/ext/localedata.jar
          file:/usr/ali/java/jre/lib/ext/dnsns.jar
          file:/usr/ali/java/jre/lib/ext/sunpkcs11.jar
          file:/usr/ali/java/jre/lib/ext/sunjce_provider.jar
          -------------------------------------
          .:/usr/ali/java/lib/dt.jar:/usr/ali/java/lib/tools.jar
          file:/home/master/workspace/2010_11/bin/
          the parent of system classloader :  sun.misc.Launcher$ExtClassLoader@1a5ab41
          //ps:當前路徑.即是/home/master/workspace/2010_11/bin/



          關于Java的classloader其原理還是需要好好理解才能清楚的,僅通過一天的了解,記錄為上面那么多吧。更多詳細信息,可以參考如下資料:
          http://snandy.javaeye.com/blog/307083
          http://haofenglemon.javaeye.com/blog/426382
          http://blog.csdn.net/zdwzzu2006/archive/2008/04/05/2253982.aspx
          http://wuquanyin1011.javaeye.com/blog/703842
          http://hi.baidu.com/yangzhibin_bai/blog/item/78846cce1cb86b0992457ead.html
          http://www.aygfsteel.com/clraychen/archive/2008/02/20/180868.html



          posted @ 2013-09-07 15:43 abin 閱讀(857) | 評論 (0)編輯 收藏

          第一種:最基本的作為一個本本分分的函數聲明使用。
          <%@ page language="java" contentType="text/html; charset=UTF-8"
              pageEncoding="UTF-8"%>
          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <html>
          <head>
          <title>Validate Page</title>
          </head>
          <script type="text/javascript">
          function validate(abin){
              var lee=function(parameter){
                  return 'hello,'+abin;
              }(abin);
              document.getElementById("spanId").innerHTML=lee;
          }
          </script>

          <body>
              <div id="divId" class="divs">
                  <input id="button" type="button" value="請猛擊" onclick="validate('varyall')"/>
              </div>
              <br/>
              <span id="spanId" class="spans"></span>
          </body>
          </html>
           


          第二種:
          <%@ page language="java" contentType="text/html; charset=UTF-8"
              pageEncoding="UTF-8"%>
          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<html>
          <head>
          <title>Validate Page</title>
          </head>
          <script type="text/javascript">
          var validate=function(abin){
              var lee=function(parameter){
            return 'hello,'+parameter;
           }(abin);
           document.getElementById("spanId").innerHTML=lee;
          };
          </script>
          <body>
           <div id="divId" class="divs">
            <input id="button" type="button" value="請猛擊" onclick="validate('varyall')"/>
           </div>
           <br/>
           <span id="spanId" class="spans"></span>
          </body>
          </html>


          第三種:

          <%@ page language="java" contentType="text/html; charset=UTF-8"
              pageEncoding="UTF-8"%>
          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
          <html>
          <head>
          <title>Validate Page</title>
          </head>
          <script type="text/javascript">
          var validate=new Function("abin",
            "var lee=function(parameter){return 'hello,'+parameter;}(abin);document.getElementById('spanId').innerHTML=lee;");
          </script>
          <body>
           <div id="divId" class="divs">
            <input id="button" type="button" value="請猛擊" onclick="validate('who')"/>
           </div>
           <br/>
           <span id="spanId" class="spans"></span>
          </body>
          </html>


          語言只是把具體的算法實現出來而已。據我了解的排序算法11-13種。排序算法嘛 主要就是個思想而已。不同的算法時間復雜度不一樣,空間復雜度也不一樣,當然執行的效率也不一樣。當然采用哪種算法還取決于你要實現什么樣的功能。就好比說:要同時盡快的找出最大最小,或者盡快的找出最值的位置等等。
          冒泡排序(bubble sort) — O(n2)
          雞尾酒排序 (Cocktail sort, 雙向的冒泡排序) — O(n2)
          插入排序 (insertion sort)— O(n2)
          桶排序 (bucket sort)— O(n); 需要 O(k) 額外 記憶體
          計數排序 (counting sort) — O(n+k); 需要 O(n+k) 額外 記憶體
          歸并排序 (merge sort)— O(n log n); 需要 O(n) 額外記憶體
          原地歸并排序 — O(n2)
          二叉樹排序 (Binary tree sort) — O(n log n); 需要 O(n) 額外記憶體
          鴿巢排序 (Pigeonhole sort) — O(n+k); 需要 O(k) 額外記憶體
          基數排序 (radix sort)— O(n·k); 需要 O(n) 額外記憶體
          Gnome sort — O(n2)
          Library sort — O(n log n) with high probability, 需要 (1+ε)n 額外記憶體不穩定
          選擇排序 (selection sort)— O(n2)
          希爾排序 (shell sort)— O(n log n) 如果使用最佳的現在版本
          Comb sort — O(n log n)
          堆排序 (heapsort)— O(n log n)
          Smoothsort — O(n log n)
          快速排序 (quicksort)— O(n log n) 期望時間, O(n2) 最壞情況; 對於大的、亂數串列一般相信是最快的已知排序
          posted @ 2013-09-05 19:49 abin 閱讀(520) | 評論 (0)編輯 收藏

          僅列出標題
          共50頁: First 上一頁 9 10 11 12 13 14 15 16 17 下一頁 Last 
          主站蜘蛛池模板: 皋兰县| 徐州市| 澄江县| 定陶县| 手游| 石楼县| 革吉县| 扎赉特旗| 新邵县| 峨眉山市| 广平县| 贞丰县| 江津市| 曲水县| 波密县| 华坪县| 武威市| 阿瓦提县| 惠水县| 泰顺县| 陵川县| 新兴县| 界首市| 宕昌县| 南召县| 乌鲁木齐市| 白山市| 晋宁县| 武冈市| 如皋市| 威远县| 深州市| 常宁市| 彰化县| 高平市| 永新县| 什邡市| 会泽县| 平武县| 焉耆| 邯郸市|