<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

    #

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

    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參數(shù)的方法
    mysql -u$user -p$pass -D $db -e "select host from user;"
    6、忽略mysql列名
      #!/bin/bash
    MYSQL=mysql #選用mysql程序
    USER=root #設(shè)定用戶名
    PASSWORD="123456" #設(shè)定數(shù)據(jù)庫的用戶密碼
    DB=eucalyptus_auth #選定需要的數(shù)據(jù)庫

    COMMAND="select auth_user_query_id, auth_user_secretkey from auth_users where auth_user_name=\"admin\" " #查找需要的數(shù)據(jù)sql語句
    declare count=`$MYSQL -u${USER} -p${PASSWORD} -D ${DB} -e "${COMMAND}" --skip-column-name` #執(zhí)行mysql的查詢,并將其記錄到count中
    for list in $count
    do
    echo " the item is $list"
    done #讀取得到的數(shù)據(jù)
    7、取出數(shù)據(jù)表里面的一行的第一列
    #!/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 閱讀(862) | 評論 (0)編輯 收藏

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


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

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

    shell腳本讀取mysql結(jié)果集的值

    按行讀取sql結(jié)果:

    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執(zhí)行結(jié)果讀取到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 閱讀(3668) | 評論 (0)編輯 收藏

    經(jīng)常要在shell下查詢數(shù)據(jù)庫的東西,數(shù)據(jù)庫有中文,shell顯示就是亂碼,有幾個方法看看結(jié)果
    首先linux中文字體要安裝,這個自己裝,數(shù)據(jù)庫的字符集要支持中文,我的支持啊,然后就是在寫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 閱讀(626) | 評論 (0)編輯 收藏

    1、接收linuxshell控制臺輸入的字符串參數(shù):
    #!/bash/bin
    parameter=$1
    if [ $parameter = "a" ];then
            echo "equals"
    elif [ $parameter = "b" ];then
            echo "not"
    else
            echo "kong"
    fi
    2、接收linuxshell控制臺輸入的數(shù)字參數(shù):
    #!/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控制臺輸入的時間參數(shù):











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

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

    何為Immutable對象?

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

    如何使對象Immutable?

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

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

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

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

    immutable Objects就是那些一旦被創(chuàng)建,它們的狀態(tài)就不能被改變的Objects,每次對他們的改變都是產(chǎn)生了新的immutable的對象,而mutable Objects就是那些創(chuàng)建后,狀態(tài)可以被改變的Objects.

    舉個例子:String和StringBuilder,String是immutable的,每次對于String對象的修改都將產(chǎn)生一個新的String對象,而原來的對象保持不變,而StringBuilder是mutable,因?yàn)槊看螌τ谒膶ο蟮男薷亩甲饔糜谠搶ο蟊旧恚]有產(chǎn)生新的對象。

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

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

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

    如何在Java中寫出Immutable的類?

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

    1)immutable對象的狀態(tài)在創(chuàng)建之后就不能發(fā)生改變,任何對它的改變都應(yīng)該產(chǎn)生一個新的對象。

    2)Immutable類的所有的屬性都應(yīng)該是final的。

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

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

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

    當(dāng)然不完全遵守上面的原則也能夠創(chuàng)建immutable的類,比如String的hashcode就不是final的,但它能保證每次調(diào)用它的值都是一致的,無論你多少次計算這個值,它都是一致的,因?yàn)檫@些值的是通過計算final的屬性得來的!


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

    2)Immutable對象簡化了程序開發(fā),因?yàn)樗鼰o需使用額外的鎖機(jī)制就可以在線程間共享

    3)Immutable對象提高了程序的性能,因?yàn)樗鼫p少了synchroinzed的使用

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

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



    Guava提供的ImmutableMap是一個支持多線程環(huán)境下面的安全的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>入手進(jìn)行分析

     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();
    這個實(shí)例創(chuàng)建的時候,只是創(chuàng)建了一個空的對象。
    那么實(shí)際效用的是build()
      @SuppressWarnings("unchecked")
        Builder(int initialCapacity) {
          this.entries = new TerminalEntry[initialCapacity];
          this.size = 0;
        }


























             


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

    沒事干,寫點(diǎn)小東西,練練手(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 閱讀(415) | 評論 (0)編輯 收藏

    在windows下 :

        啟動:

            1.cd c:/mysql/bin

            2.mysqld --console

        關(guān)閉:

            1.cd c:/mysql/bin

            2.mysqladmin -uroot shutdown

     

       還可以:

            啟動:

            1.cd c:/mysql/bin

            2.net start mysql5

        關(guān)閉:

            1.cd c:/mysql/bin

            2.net stop mysql5

     

     

    在linux下:

        采用netstat -nlp查看mysql服務(wù)的狀態(tài)

     

        命令行方式:

            開啟  ./mysqld_safe &

            關(guān)閉  mysqladmin -uroot shutdown

     

        rpm方式安裝的

            開啟  service mysql start

            關(guān)閉  service mysql stop

     

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

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

    innodb作為事務(wù)型數(shù)據(jù)庫的首選引擎,支持ACID事務(wù),支持行級鎖定,支持外鍵。并且InnoDB默認(rèn)地被包含在MySQL二進(jìn)制分發(fā)中,已經(jīng)成為絕大多數(shù)OLTP系統(tǒng)的直選存儲引擎。

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

    B+樹索引是目前關(guān)系型數(shù)據(jù)庫中最常見最有效的索引,是基于二分查找而形成的一棵平衡術(shù)結(jié)構(gòu)。我們來逐步了解。
    MySQL就普遍使用B+Tree實(shí)現(xiàn)其索引結(jié)構(gòu)

    索引的主要作用:
    1、快速定位記錄
    2、避免排序和使用臨時表
    3、可以將隨機(jī)IO變?yōu)轫樞騃O




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

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



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

    僅列出標(biāo)題
    共50頁: First 上一頁 6 7 8 9 10 11 12 13 14 下一頁 Last 
    主站蜘蛛池模板: 亚洲三级高清免费| 久久国产乱子伦精品免费午夜| 在线看免费观看AV深夜影院| 亚洲国产av一区二区三区丶| 免费电影在线观看网站| 福利片免费一区二区三区| 浮力影院亚洲国产第一页| 久久精品无码精品免费专区| 亚洲免费视频观看| 全黄性性激高免费视频| 9久热这里只有精品免费| 久久亚洲精品成人av无码网站| 在线观看视频免费国语| 一级毛片在线完整免费观看| 亚洲日本在线看片| 最近2019中文字幕mv免费看| 特级做a爰片毛片免费看| 亚洲AV永久无码精品一百度影院| 日韩中文字幕精品免费一区| 国产AV无码专区亚洲AV麻豆丫| 青青草原亚洲视频| 四虎免费影院ww4164h| eeuss影院ss奇兵免费com| 色噜噜亚洲男人的天堂| 亚洲精品视频免费| 无码囯产精品一区二区免费| 视频一区在线免费观看| 亚洲fuli在线观看| 亚洲日本在线观看| 亚洲精品狼友在线播放| 亚洲精品成人区在线观看| 卡一卡二卡三在线入口免费| 免费国产成人高清在线观看网站| 久草免费手机视频| 爱丫爱丫影院在线观看免费| 看亚洲a级一级毛片| 亚洲一级高清在线中文字幕| 亚洲神级电影国语版| 亚洲AV成人一区二区三区AV| 91麻豆国产自产在线观看亚洲| 四虎成人精品一区二区免费网站|