少年阿賓

          那些青春的歲月

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

          #

          1、
          #!/bin/bash
          mysql -u* -h* -p* <<EOF
              Your SQL script.
          EOF
          2、準備一個sql腳本,如update.sql,然后執行如下命令:

          mysql -uroot -ppassword < update.sql
          3、
          mysql -Dftp -uroot -proot -e"select user FROM users" >users.txt
          catfilename="users.txt"

          for i in `cat $catfilename`;
          do
            
                  echo "$i"
             
          done
          4、
          echo "select user FROM ftp.users" | mysql -u root -proot

          5、使用mysql參數的方法
          mysql -u$user -p$pass -D $db -e "select host from user;"
          6、忽略mysql列名
            #!/bin/bash
          MYSQL=mysql #選用mysql程序
          USER=root #設定用戶名
          PASSWORD="123456" #設定數據庫的用戶密碼
          DB=eucalyptus_auth #選定需要的數據庫

          COMMAND="select auth_user_query_id, auth_user_secretkey from auth_users where auth_user_name=\"admin\" " #查找需要的數據sql語句
          declare count=`$MYSQL -u${USER} -p${PASSWORD} -D ${DB} -e "${COMMAND}" --skip-column-name` #執行mysql的查詢,并將其記錄到count中
          for list in $count
          do
          echo " the item is $list"
          done #讀取得到的數據
          7、取出數據表里面的一行的第一列
          #!/bin/sh
          HOST="192.168.111.11"
          PORT="3306"
          USERNAME="root"
          PWD="root"
          DBNAME="abin"
          TNAME="city"
          select_sql="select * from ${TNAME}"
          mysql -h${HOST} -P${PORT} -u${USERNAME} -p${PWD} ${DBNAME} -e "set names utf8; ${select_sql}" --skip-column-name| while read line;
          do
                  midd=`echo "$line" | awk '{print $1}'`;
                  echo ${midd};
          done;
          ~              
          8、
           mysql database -u $user -p $password -e "SELECT A, B, C FROM table_a"|while read a b c
          do
          echo $a $b $c
          don 
          9、
           exec 8<>file
          mysql database -u $user -p $password -e "SELECT A, B, C FROM table_a"
          while read a b c
          do
          echo $a $b $c
          done<&8 

          10、
          #!/bin/sh
          HOST="localhost"
          PORT="3306"
          USERNAME="root"
          PWD=""
          DBNAME="abin"
          CITYNAME="city"
          BNAME="bussiness"
          HNAME="height"
          parameter=$1
          type=$2
          echo "parameter=${parameter},type=${type}"
          select_sql="select * from ${CITYNAME} t where t.code='${parameter}'"
          mysql -h${HOST} -P${PORT} -u${USERNAME} -p${PWD} ${DBNAME} -e "set names utf8; ${select_sql}" --skip-column-name| while read a b c;
          do
                  id=${a};
                  echo "id=${id}"
                  if [ $type = 1 ];then
                          echo "type=${type},id=${id}"
                          bus_sql="select * from ${BNAME} t where t.ccode=${id}"
                          mysql -h${HOST} -P${PORT} -u${USERNAME} -p${PWD} ${DBNAME} -e "set names utf8; ${bus_sql}" --skip-column-name | while read d e f g;
                          do
                                  echo "bussiness=${e},city_code=${g},bussiness_code=${f}"
                          done
                  elif [ $type = 2 ];then
                          echo "type=${type},id=${id}"
                          hei_sql="select * from ${HNAME} t where t.ccode=${id}"
                          mysql -h${HOST} -P${PORT} -u${USERNAME} -p${PWD} ${DBNAME} -e "set names utf8; ${hei_sql}" --skip-column-name | while read h i j k;
                          do
                                  echo "sex=${i},height=${j},city_code=${k}"
                          done
                  else
                          echo "others"
                  fi;
          done


















          posted @ 2015-01-10 22:04 abin 閱讀(865) | 評論 (0)編輯 收藏

          以 MySQL 為例:
          mysql -e "select * from tbl" while read line ; do echo "$line" done


          posted @ 2015-01-10 21:08 abin 閱讀(977) | 評論 (0)編輯 收藏

          在linux下用shell腳本讀取mysql結果集中值的二種方法,按行讀取sql結果,將sql執行結果讀取到shell變量中,然后讀取。

          shell腳本讀取mysql結果集的值

          按行讀取sql結果:

          while read -a row

          do

           echo "..${row[0]}..${row[1]}..${row[2]}.."

          done < <(echo "SELECT A, B, C FROM table_a"

           mysql database -u $user -p $password)

          將sql執行結果讀取到shell變量中:

          while read a b c

          do

           echo "..${a}..${b}..${c}.."

          done < <(echo "SELECT A, B, C FROM table_a"

           mysql database -u $user -p $password)





          posted @ 2015-01-10 21:06 abin 閱讀(3671) | 評論 (0)編輯 收藏

          經常要在shell下查詢數據庫的東西,數據庫有中文,shell顯示就是亂碼,有幾個方法看看結果
          首先linux中文字體要安裝,這個自己裝,數據庫的字符集要支持中文,我的支持啊,然后就是在寫shell的時候的問題了
          mysql -u root -p  --default-character-set=utf8 db -e "select * from tb where A=10;"
          這個顯示的就是亂碼
          mysql -u root -p db -e "set names utf8 ;select * from tb where A=10;"
          這個還是亂碼
          mysql -u root -p db -e "set names Latin1 ;select * from tb where A=10;"
          這個也是亂碼
          mysql -u root -p db -e "set names gbk ;select * from tb where A=10;"
          最后這個卻顯示中文了!!!!





          http://wdegang.blog.51cto.com/134120/1137929
          posted @ 2015-01-10 20:58 abin 閱讀(631) | 評論 (0)編輯 收藏

          1、接收linuxshell控制臺輸入的字符串參數:
          #!/bash/bin
          parameter=$1
          if [ $parameter = "a" ];then
                  echo "equals"
          elif [ $parameter = "b" ];then
                  echo "not"
          else
                  echo "kong"
          fi
          2、接收linuxshell控制臺輸入的數字參數:
          #!/bash/bin
          parameter=$1
          if [ $parameter = 1 ];then
                  echo "input is $parameter"
          elif [ $parameter = 2 ];then
                  echo "input is $parameter"
          else
                  echo "input is other: $parameter"
          fi


          3、接收linuxshell控制臺輸入的時間參數:











          posted @ 2015-01-10 19:19 abin 閱讀(609) | 評論 (0)編輯 收藏

          為什么ImmutableMap是不可變集合,是線程安全的?
          首先介紹一下基本概念,什么事immutable

          何為Immutable對象?

          簡單地說,如果一個對象實例不能被更改就是一個Immutable的對象,Java SDK提供的大量值對象,比如String等都是Immutable的對象。

          如何使對象Immutable?

          按照Effective Java的說明,需要滿足下面幾條規則:

          • 保證類不能被繼承 - 為了避免其繼承的類進行mutable的操作
          • 移調所有setter/update等修改對象實例的操作
          • 保證所有的field是private和final的

          不可變對象(immutable objects),后面文章我將使用immutable objects來代替不可變對象!

          那么什么是immutable objects?什么又是mutable Objects呢?

          immutable Objects就是那些一旦被創建,它們的狀態就不能被改變的Objects,每次對他們的改變都是產生了新的immutable的對象,而mutable Objects就是那些創建后,狀態可以被改變的Objects.

          舉個例子:String和StringBuilder,String是immutable的,每次對于String對象的修改都將產生一個新的String對象,而原來的對象保持不變,而StringBuilder是mutable,因為每次對于它的對象的修改都作用于該對象本身,并沒有產生新的對象。

          但有的時候String的immutable特性也會引起安全問題,這就是密碼應該存放在字符數組中而不是String中的原因!

          immutable objects 比傳統的mutable對象在多線程應用中更具有優勢,它不僅能夠保證對象的狀態不被改變,而且還可以不使用鎖機制就能被其他線程共享。

          實際上JDK本身就自帶了一些immutable類,比如String,Integer以及其他包裝類。為什么說String是immutable的呢?比如:java.lang.String 的trim,uppercase,substring等方法,它們返回的都是新的String對象,而并不是直接修改原來的對象。

          如何在Java中寫出Immutable的類?

          要寫出這樣的類,需要遵循以下幾個原則:

          1)immutable對象的狀態在創建之后就不能發生改變,任何對它的改變都應該產生一個新的對象。

          2)Immutable類的所有的屬性都應該是final的。

          3)對象必須被正確的創建,比如:對象引用在對象創建過程中不能泄露(leak)。

          4)對象應該是final的,以此來限制子類繼承父類,以避免子類改變了父類的immutable特性。

          5)如果類中包含mutable類對象,那么返回給客戶端的時候,返回該對象的一個拷貝,而不是該對象本身(該條可以歸為第一條中的一個特例)

          當然不完全遵守上面的原則也能夠創建immutable的類,比如String的hashcode就不是final的,但它能保證每次調用它的值都是一致的,無論你多少次計算這個值,它都是一致的,因為這些值的是通過計算final的屬性得來的!


          有時候你要實現的immutable類中可能包含mutable的類,比如java.util.Date,盡管你將其設置成了final的,但是它的值還是可以被修改的,為了避免這個問題,我們建議返回給用戶該對象的一個拷貝,這也是Java的最佳實踐之一。
          使用Immutable類的好處:
          1)Immutable對象是線程安全的,可以不用被synchronize就在并發環境中共享

          2)Immutable對象簡化了程序開發,因為它無需使用額外的鎖機制就可以在線程間共享

          3)Immutable對象提高了程序的性能,因為它減少了synchroinzed的使用

          4)Immutable對象是可以被重復使用的,你可以將它們緩存起來重復使用,就像字符串字面量和整型數字一樣。你可以使用靜態工廠方法來提供類似于valueOf()這樣的方法,它可以從緩存中返回一個已經存在的Immutable對象,而不是重新創建一個。

          immutable也有一個缺點就是會制造大量垃圾,由于他們不能被重用而且對于它們的使用就是”用“然后”扔“,字符串就是一個典型的例子,它會創造很多的垃圾,給垃圾收集帶來很大的麻煩。當然這只是個極端的例子,合理的使用immutable對象會創造很大的價值。



          Guava提供的ImmutableMap是一個支持多線程環境下面的安全的Map,同時效率也是很高的Key-Value集合,為什么他就是安全的呢。
              先看下面例子:
                  ImmutableMap.Builder<String, Object> request = ImmutableMap.builder();
                  request.put("one","1");
                  request.put("two","2");
                  request.put("three","3");
                  Map<String, Object> map = request.build();
                  
                  讓我們首先從Builder<T,T>入手進行分析

           public static class Builder<K, V> {
              TerminalEntry<K, V>[] entries;
              int size;


           public ImmutableMap<K, V> build() {
                switch (size) {
                  case 0:
                    return of();
                  case 1:
                    return of(entries[0].getKey(), entries[0].getValue());
                  default:
                    return new RegularImmutableMap<K, V>(size, entries);
                }
              }

          }

          上面的
           ImmutableMap.Builder<String, Object> request = ImmutableMap.builder();
          這個實例創建的時候,只是創建了一個空的對象。
          那么實際效用的是build()
            @SuppressWarnings("unchecked")
              Builder(int initialCapacity) {
                this.entries = new TerminalEntry[initialCapacity];
                this.size = 0;
              }


























                   


          posted @ 2015-01-08 19:47 abin 閱讀(5116) | 評論 (0)編輯 收藏

          沒事干,寫點小東西,練練手(Java <T> T):

          import java.util.List;
          import java.util.concurrent.CopyOnWriteArrayList;
          public class GenericsTest {
          public static void main(String[] args) {
          String[] arr = new String[]{"1","2","3","4"};
          List<String> list = get(arr);
          System.out.println("list= "+list);
          String result = transfer(true, "abin", "lee");
          System.out.println("result= "+result);
          }
          public static <T> List<T> get(T... t){
          List<T> list = new CopyOnWriteArrayList<T>();
          for(T s:t){
          list.add(s);
          }
          return list;
          }
          public static <T> T transfer(boolean flag,T first,T second){
          T t = flag ? first : second;
          return t;
          }
          }
          posted @ 2015-01-08 16:59 abin 閱讀(420) | 評論 (0)編輯 收藏

          在windows下 :

              啟動:

                  1.cd c:/mysql/bin

                  2.mysqld --console

              關閉:

                  1.cd c:/mysql/bin

                  2.mysqladmin -uroot shutdown

           

             還可以:

                  啟動:

                  1.cd c:/mysql/bin

                  2.net start mysql5

              關閉:

                  1.cd c:/mysql/bin

                  2.net stop mysql5

           

           

          在linux下:

              采用netstat -nlp查看mysql服務的狀態

           

              命令行方式:

                  開啟  ./mysqld_safe &

                  關閉  mysqladmin -uroot shutdown

           

              rpm方式安裝的

                  開啟  service mysql start

                  關閉  service mysql stop

           

            在命令行啟動mysql時,如不加"--console",啟動、關閉信息不在界面中顯示,而是記錄在安裝目錄下的data目錄里,文件名一般是hostname.err,通過此文件查看mysql的控制臺信息。

          posted @ 2015-01-07 13:13 abin 閱讀(400) | 評論 (0)編輯 收藏

          innodb作為事務型數據庫的首選引擎,支持ACID事務,支持行級鎖定,支持外鍵。并且InnoDB默認地被包含在MySQL二進制分發中,已經成為絕大多數OLTP系統的直選存儲引擎。

          索引作為數據庫開發的一個重要方面,對于訪問性能以及能否支持高并發,高tps的應用,起著決定性作用。Innodb存儲引擎支持B+樹索引以及自適應哈希索引,其中后者是由innodb引擎根據表的使用情況自動生成,無法進行人為創建。

          B+樹索引是目前關系型數據庫中最常見最有效的索引,是基于二分查找而形成的一棵平衡術結構。我們來逐步了解。
          MySQL就普遍使用B+Tree實現其索引結構

          索引的主要作用:
          1、快速定位記錄
          2、避免排序和使用臨時表
          3、可以將隨機IO變為順序IO




          posted @ 2015-01-06 22:58 abin 閱讀(371) | 評論 (0)編輯 收藏

          分布式領域CAP理論,
          Consistency(一致性), 數據一致更新,所有數據變動都是同步的
          Availability(可用性), 好的響應性能
          Partition tolerance(分區容錯性) 可靠性
          定理:任何分布式系統只可同時滿足二點,沒法三者兼顧。
          忠告:架構師不要將精力浪費在如何設計能滿足三者的完美分布式系統,而是應該進行取舍。
          關系數據庫的ACID模型擁有 高一致性 + 可用性 很難進行分區:
          Atomicity原子性:一個事務中所有操作都必須全部完成,要么全部不完成。
          Consistency一致性. 在事務開始或結束時,數據庫應該在一致狀態。
          Isolation隔離層. 事務將假定只有它自己在操作數據庫,彼此不知曉。
          Durability. 一旦事務完成,就不能返回。
          跨數據庫事務:2PC (two-phase commit), 2PC is the anti-scalability pattern (Pat Helland) 是反可伸縮模式的,JavaEE中的JTA事務可以支持2PC。因為2PC是反模式,盡量不要使用2PC,使用BASE來回避。
          BASE模型反ACID模型,完全不同ACID模型,犧牲高一致性,獲得可用性或可靠性:
          Basically Available基本可用。支持分區失敗(e.g. sharding碎片劃分數據庫)
          Soft state軟狀態 狀態可以有一段時間不同步,異步。
          Eventually consistent最終一致,最終數據是一致的就可以了,而不是時時高一致。
          BASE思想的主要實現有
          1.按功能劃分數據庫
          2.sharding碎片 
          BASE思想主要強調基本的可用性,如果你需要High 可用性,也就是純粹的高性能,那么就要以一致性或容錯性為犧牲,BASE思想的方案在性能上還是有潛力可挖的。
          現在NoSQL運動豐富了拓展了BASE思想,可按照具體情況定制特別方案,比如忽視一致性,獲得高可用性等等,NOSQL應該有下面兩個流派:
          1. Key-Value存儲,如Amaze Dynamo等,可根據CAP三原則靈活選擇不同傾向的數據庫產品。
          2. 領域模型 + 分布式緩存 + 存儲 (Qi4j和NoSQL運動),可根據CAP三原則結合自己項目定制靈活的分布式方案,難度高。
          這兩者共同點:都是關系數據庫SQL以外的可選方案,邏輯隨著數據分布,任何模型都可以自己持久化,將數據處理和數據存儲分離,將讀和寫分離,存儲可以是異步或同步,取決于對一致性的要求程度。
          不同點:NOSQL之類的Key-Value存儲產品是和關系數據庫頭碰頭的產品BOX,可以適合非Java如PHP RUBY等領域,是一種可以拿來就用的產品,而領域模型 + 分布式緩存 + 存儲是一種復雜的架構解決方案,不是產品,但這種方式更靈活,更應該是架構師必須掌握的。 



          http://www.jdon.com/37625
          posted @ 2014-12-28 22:51 abin 閱讀(364) | 評論 (0)編輯 收藏

          僅列出標題
          共50頁: First 上一頁 6 7 8 9 10 11 12 13 14 下一頁 Last 
          主站蜘蛛池模板: 武定县| 霍邱县| 互助| 忻城县| 额敏县| 镇雄县| 白银市| 密山市| 大姚县| 老河口市| 汕头市| 大同县| 中牟县| 铁岭县| 蒙城县| 万源市| 会东县| 民乐县| 岐山县| 酉阳| 花莲市| 通辽市| 文成县| 大田县| 逊克县| 宁安市| 桃园县| 巧家县| 井冈山市| 尉氏县| 调兵山市| 阿巴嘎旗| 农安县| 宁河县| 清远市| 金寨县| 西畴县| 昔阳县| 高唐县| 甘谷县| 九台市|