1. 程式人生 > 其它 >百萬資料 mysql count(*)優化

百萬資料 mysql count(*)優化

狂神說Java

java預科篇

java三大版本:

  1. javaSE:標準版
  2. javaME
  3. javaEE:伺服器開發

JDK&JVM&JRE

  1. JDK:java開發者工具
  2. JVM:java虛擬機器
  3. JRE:java執行時環境

解釋型和編譯型語言:

  1. 解釋型:我們可以理解為翻譯(可以進行及時的翻譯)
  2. 編譯型:可以理解為出版社(只在第一次翻譯,後續更新,需要重新買書)

java屬於先編譯再解釋語言,先編譯產生了.class檔案,後續再進行解釋

java註釋

  1. 單行註釋//

  2. 多行註釋/**/

  3. javaDOC (一般用不到)

    /**
    * @author..
    */
    

java基礎篇

識別符號

  1. 關鍵字
  2. 識別符號(字母,數字,下劃線,$),數字不打頭

資料型別(8個)

  1. 基本資料型別

    • 整數

      • byte
      • int(常用)
      • longlong a = 10000L,後面新增L
    • 浮點數

      • floatfloat b = 1.22f,後面新增f
      • double(常用)
    • 字元char,用單引號

    • 布林值

      • true
      • false
  2. 引用資料型別

    • 物件
    • 介面

補充

  1. 進位制

    • 二進位制0b開頭

    • 八進位制0開頭

    • 十六進位制0x開頭

      //十進位制
      int a = 10;
      //二進位制
      int b = 0b10;
      //八進位制
      int c = 010;
      //十六進位制
      int d = 0x10;
      
  2. 字元

    • 字元其實也是數字,她們遵循unicode碼

      char c = 'a';
      System.out.printin((int)c)//得出的結果是一個數字
      
    • 轉義字元

      \t
      \n
      
  3. String

    • String是一個類

      String a = new String("hello world");
      String b = new String("hello world");
      //這邊a和b是不一樣的,主要是因為他這個是應用型別,所以記憶體地址發生了改變
      String sa = "hello world";
      String sb = "hello world";
      //這邊sa和sb是一樣的
      
  4. boolean

    • 不可以對布林值進行強制型別轉換
  5. 型別轉換

    • 高對低需要強制型別轉換
    • 低對高不用轉換

變數常量

  1. 變數

    • 區域性變數:就是在花括號裡,必須宣告賦值

    • 例項變數:在類裡面,不在方法裡面

      • 例項變數從屬於物件,如果不進行初始化,型別為預設值
      • 數值預設值:0/0.000
      • 布林值預設值:false
      • 除了基本資料型別:其他預設值都為null
    • 類變數變數型別 變數名字 = new 變數型別

      • Scanner scanner = new Scanner(System.in)
  2. 常量final

補充

  1. 所有變數,方法類名等都需要見名知意
  2. 類:大駝峰
  3. 區域性變數,方法名:小駝峰
  4. 常量:大寫字母+_ MAX_VALUE

操作符

  1. + - * / %

  2. ++ --

            int num1 = 1;
    //        ++在後面,那麼就是先賦值在++
    //        int num2 = num1++;
    //        上面的這行程式碼類似於
            int num2  = num1;
            num1 = num1+1;
    //        ++在前面,那麼我們就是先加一,再賦值給別人
    //        int num3 = ++num1;
    //        上面的程式碼就等同於
            num1 = num1+1;
            int num3 = num1;
            System.out.println("num1:"+num1);
            System.out.println("num2:"+num2);
            System.out.println("num3:"+num3);
    
  3. Math.pow(n,m)

  4. >,<.!=

  5. &&,||,!

  6. <<,>>

    //        >> <<
    //        << 左移,就相當於*2
    //        << 右移,就相當於/2
    //        這個就相當於2*8(2的3次方)
            System.out.println(2<<3);//16
    //        2*(2的四次方)
            System.out.println(2<<4);//32
    

補充

  1. 字串的連線+,和算術運算子+
//        字串連線符
//        注意位置
        int numa = 10;
        int numb  = 20;
        System.out.println(numa+numb);
//       下面兩個不要同的原因時,因為字串拼接
//        第一個,一開始就是字串,所以裡面所有的加號(+),就都是用於字串的拼接
        System.out.println(""+numa+numb);//1020
//        第二個,開始時,加號,從左往右,所以我們預設是進行數值累加,後面知道時字串,所以直接字串拼接
//        所以,第一個時加法,第二個時字串拼接
        System.out.println(numa+numb+"");//30
  1. 包機制

    我們可以簡單地將包理解為資料夾

java流程控制

scanner用於使用者的互動

Scanner scanner = new Scanner(System.in);
        if(scanner.hasNextLine()){
//            使用next方式進行接受
//            String str = scanner.next();
            String str2 = scanner.nextLine();
//            System.out.println("獲取到輸入:"+str);
            System.out.println("獲取到輸入:"+str2);
        }
  1. 我們一般用scanner.hasNextLine(),判斷使用者有沒有進行輸入

  2. 我們一般用scanner.nextLine(),獲取使用者的輸入

    • 我們一般不使用scanner.next()
    • 因為當中間有空格出現時,我們會自動捨棄掉空格後面的東西,獲取空格之前的東西
  3. 我們也可以對型別進行限制

    • 識別int整數scanner.nextInt()

    • 識別double小數scanner.nextDouble()

      //        請輸入整數
              System.out.println("請輸入整數");
      //        如果下面的是整數
              if(scanner.hasNextInt()){
      //            獲取搭配使用者的輸入
                  a = scanner.nextInt();
                  System.out.println("你輸入的是整數"+a);
              }else{
                  System.out.println(("你輸入的不是整數"));
              }
      
      //        請輸入小數
              System.out.println("請輸入小數");
              if(scanner.hasNextDouble()){
      //            獲取使用者輸入
                  b = scanner.nextDouble();
                  System.out.println("你輸入的是小數"+b);
              }else{
                  System.out.println("你輸入的不是小數");
              }
      
  4. 每次用完scanner都需要關閉scanner.close(),為了節省空間。