The NoteBook of EricKong

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

          #

          Dijit 的類文件

          Dijit 的類也是一個 Dojo 類,所以 Dijit 類的聲明和定義也是用 dojo.declare 函數,如清單 10 和清單 13 所示。Dijit 類既然是 Dojo 類,自然也可以繼承其它類或被其它類所繼承。實際上,一個 Dijit 類區別于其它 Dojo 類最重要的一點是,Dijit 類都直接或間接地繼承于類 dijit._Widget,大部分的 Dijit 類通過 mixin 的方式繼承類 dijit._Templated,如清單 13 中的 [dijit._Widget,dijit._Templated]。

          讓我們回過頭來看看清單 13,清單 13 中,有一個屬性叫 templatePath,從名字就可以看出來,這個屬性指定了 template 文件的路徑。除了指定 template 文件的路徑外,也可以直接把 template 變成一個字符串放到類定義文件中,這種情況下,要用到的屬性就是 templateString 了。

          除了 templatePath 和 templateString 以外,還有很多擴展點可以根據實際需要重載,這些擴展點覆蓋了 dijit 的整個生命周期,具體列舉如下:

          constructor:

          constructor 會在設置參數之前被調用,可以在這里進行一些初始化的工作。Constructor 結束后,便會開始設置 Dijit 實例的屬性值,即把 dijit 標簽中定義的屬性值賦給 dijit 實例。

          postMixInProperties:

          如果你在你的 dijit 中重載這個函數,它會在 dijit 展現之前,并且在 dom 節點生成之前被調用。如果你需要在 dijit 展現之前,修改實例的屬性,可以在這里實現。

          buildRendering:

          通常情況下這個函數你不需要去重載,因為 _Templated 為在這里為你做好所有的事情,包括 dom 節點的創建,事情的連接,attach point 的設置。除非你要開發一套完全不一樣的模板系統,否則建議你不要重載這個函數。

          postCreate:

          這個函數會在 dijit 創建之后,子 dijit 創建之前被調用。

          startup:

          當你需要確保所有的子 dijit 都被創建出來了,你可以調用這個函數。

          destroy:

          會在 dijit 被銷毀時被調用,你可以在這里進行一些資源回收的工作

          posted @ 2014-12-05 17:06 Eric_jiang 閱讀(185) | 評論 (0)編輯 收藏

          1、mvn archetype:create -DgroupId=org.david.app -DartifactId=mywebapp -DarchetypeArtifactId=maven-archetype-webapp
          2、cd mywebapp
               mvn eclipse:eclipse
               導入eclipse工程
               (或者直接從eclipse中導入maven工程)
          3、添加servlet依賴
                  <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
              </dependency>
          4、添加源代碼目錄src/main/java
               將源代碼放在該目錄下。
          5、添加jetty插件
          <build>
             <finalName>mywebapp</finalName>
             <plugins>
                  <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                      <source>1.5</source>
                      <target>1.5</target>
                    </configuration>
                  </plugin>
                  <plugin>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>maven-jetty-plugin</artifactId>
                  </plugin>        
             </plugins>
          </build>
          6、用jetty調試(http://www.aygfsteel.com/alwayscy/archive/2007/06/01/118584.html)
          命令行:mvn jetty:run
          或者
          1、先來配置一個外部工具,來運行JETTY:
          選擇菜單Run->External Tools->External Tools ...在左邊選擇Program,再點New:
          配置Location為mvn完整命令行。定位到bin下的mvn.bat
          選擇Working Directory為本項目。
          Arguments填寫:jetty:run
          再點選Enviroment頁:加入MAVEN_OPTS變量,值為:
          -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8080,server=y,suspend=y
          其中,如果suspend=n 表示不調試,直接運行。address=8080為端口
          然后,點APPLY,再關閉本對話框。
          另外注意一點,好像external tool菜單項在java browering的perspective下才會出現。如果在java下看不見,可以切換下試試。
          啟動jetty
          2、調試應用
          點選run->debug...
          選中左樹中的Remote Java Application,再點New。
          選擇你的項目,關鍵是要填和之前設置外部工具時相同的端口號。
          posted @ 2014-12-02 16:37 Eric_jiang 閱讀(181) | 評論 (0)編輯 收藏

          1.震動

          先說簡單的,震動提示

          第一步,在AndroidManifest.xml 里聲明權限

           <uses-permissionandroid:name="android.permission.VIBRATE"/>

          第二步,獲得震動服務并啟動

           Vibrator vibrator = (Vibrator)activity.getSystemService(Context.VIBRATOR_SERVICE);

          vibrator.vibrate(newlong[]{300,500},0);

          經過以上兩步,就啟動震動了。上述代碼直接在程序中調用就可以了,這個是比較簡單的,比大象放冰箱要少一步。Vibrate()的參數網上能查到,看看就知道了。

          2.提示鈴聲

          第一步,1.準備一個音頻文件比如:beep.ogg。先把音頻文件導入到res/raw文件夾下,需要注意的是這個文件下的文件名必須是小寫,之后導入即可。

          第二步,為activity注冊的默認音頻通道。這個一般在onCreate()函數中注冊即可。

           activity.setVolumeControlStream(AudioManager.STREAM_MUSIC);

          第三步,檢查當前情景模式,確定不要是靜音。

          第四步,初始化MediaPlayer對象,指定播放的聲音通道為 STREAM_MUSIC,這和上面的步驟一致,指向了同一個通道。

           MediaPlayer mediaPlayer = new MediaPlayer();//這個我定義了一個成員函數

           mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

          第五步,注冊事件。當播放完畢一次后,重新指向流文件的開頭,以準備下次播放。

           mediaPlayer .setOnCompletionListener(newMediaPlayer.OnCompletionListener() {

                  @Override

          public voidonCompletion(MediaPlayer player) {

                  player.seekTo(0);

                  }

           });

          第六步,設定數據源,并準備播放

          AssetFileDescriptor file =activity.getResources().openRawResourceFd(

           R.raw.beep);

           try{

           mediaPlayer.setDataSource(file.getFileDescriptor(),

           file.getStartOffset(), file.getLength());

           file.close();

           mediaPlayer.setVolume(BEEP_VOLUME,BEEP_VOLUME);

           mediaPlayer.prepare();

           }catch (IOException ioe) {

           Log.w(TAG, ioe);

           mediaPlayer = null;

           }

          第七步,開始播放

          mediaPlayer.start();

           

          經過以上幾步,就可以實現手機的鈴聲了。

          posted @ 2014-11-25 13:38 Eric_jiang 閱讀(1299) | 評論 (0)編輯 收藏

              1.顯示調用方法
          • Intent intent=new Intent(this,OtherActivity.class);  //方法1
          • Intent intent2=new Intent();
          • intent2.setClass(this, OtherActivity.class);//方法2
          • intent2.setClassName(this, "com.zy.MutiActivity.OtherActivity");  //方法3 此方式可用于打開其它的應用
          • intent2.setComponent(new ComponentName(this, OtherActivity.class));  //方法4
          • startActivity(intent2);
           
          2.隱式調用方法(只要action、category、data和要跳轉到的Activity在AndroidManifest.xml中設置的匹配就OK
           
          3.跳轉到另一個Activity后,當返回時能返回數據
          • 在跳轉的Activity端,調用startActivityForResult(intent2, 1),跳轉到下一個Activity,其中第一個參數為傳入的意圖對象,第二個為設置的請求碼;
          • 跳轉到第二個Activity后,調用setResult(100, intent)方法可返回上一個Activity,其中第一個參數為結果碼,第二個為傳入的意圖對象;
          • 在第一個Activity通過onActivityResult()方法獲得返回的數據。
          posted @ 2014-11-25 13:20 Eric_jiang 閱讀(214) | 評論 (0)編輯 收藏

          PS:有的人安裝過程中遇到這個問題this computer meets the reauirements for HAXM,but....

          這個問題應該是CPU可能默認沒有開Vt,所以得去bios開了再說。進了bios找到virtual technology選項,選擇enable即可。


          android模擬器一直以來是它的一大敗筆,啟動需要很長時間,運行起來也超慢,雖說可以通過創建模擬器時更改參數,但速度還是不理想。所以,以前開發時,一直用真機調試,可它的接口又是那么的脆弱,用不了多久,就接觸不良了,這個問題一直困擾很多人。之前發現過一種方法,可以通過WIFI調試,但是需要有無線路由器,而且很多手機對這個支持不太好。前幾天同事分享了一種方法(API guid里面有講),可以讓模擬器在X86架構的機器上以原生的速度運行。

          方法很簡單:

          1.通過android sdk manager下載" Intel Hardware Accelerated Execution Manager",下載完成后,在SDK目錄中找到下載文件并安裝它。

          2.通過android sdk manager 下載 “Intel x86 Atom System Image

          3.創建Intel x86的模擬器

          下面就可以使用創建的這個x86的模擬器進行調試了,速度非常,我用的MacBook裝的WIN7,啟動模擬器只需要幾秒,運行APP速度跟我的三星I9001一樣流暢,需要注意的是:

          1.android sdk tools 至少要R17以上,android sdk API 至少要15

          2.自己的電腦要給力,我的模擬器給它分了2G的內存,所以速度特別

          不上圖了,下面是文檔地址:http://developer.android.com/tools/devices/emulator.html


          首先打開sdk manager,確定有x86的image。如下圖

          4.2只有ARM的image,所以不好使,還得用4.1.2的(2013年1月31日,4.2版本已有x86的image)


          然后下載一下intelHAXM

          然后進到sdk\extras\intel\Hardware_Accelerated_Execution_Manager去點擊exe,一路next安裝一下。


          為了確認是否開了,打開命令行 輸入

          sc query intelhaxm
          然后像下面State 是running就對了。


          CPU可能默認沒有開Vt,所以得去bios開了再說。


          然后建立AVD

          cpu/abi的地方記得選x86的

          然后下面的Hardware部分要new一下,搞出來GPU emulation 然后選擇yes

          更新了adt到21.0.1后,創建AVD的界面有些不同。如下圖,在Emulation Options里要選上Use Host GPU.

          然后就可以了,啟動AVD

          顯示HAX is working。

          posted @ 2014-11-24 11:46 Eric_jiang 閱讀(214) | 評論 (1)編輯 收藏

          用途

          顯示關于卷組的信息。

          語法

          lsvg [ -L ] [ -o ] |[ -n DescriptorPhysicalVolume ] | [ -i ] [ -l | -M | -p ] VolumeGroup ...

          描述

          lsvg 命令顯示關于卷組的信息。如果使用 VolumeGroup 參數,只顯示那個卷組的信息。如果不使用VolumeGroup 參數,顯示所有已定義的卷組名列表。

          當來自“設備配置”數據庫的信息不可用時,某些字段將會包含一個問號()替代丟失的數據。當對命令給出一個邏輯卷標識時,lsvg 命令試圖從描述區域獲得盡可能多的信息。

          注:要確定卷組的主數,請使用 ls -al /dev/VGName 命令。這個命令列出代表卷組的特殊設備文件。卷組主數與特殊的設備文件的主設備號相同。例如,對于名為 ha1vg 的卷組,請輸入如下命令:

          ls -al /dev/ha1vg

          該命令返回以下內容:

          crw-rw---- 1 root system 52, 0 Aug 27 19:57 /dev/ha1vg

          在本示例中,卷組主數是 52

          您可以使用基于 Web 的系統管理器(wsm)中的卷應用程序來更改卷組特性。您也可以使用“系統管理接口工具”(SMIT)smit lsvg 快速路徑來運行此命令。

          標志

          -L指定不等待獲取卷組鎖。

          注:如果要更改卷組,那么使用 -L 標志會帶來不可靠的日期。
          -p對于用 VolumeGroup 參數指定的組內的每個物理卷列出以下信息:
          Physical volume
          組內的一個物理卷。
          PVstate
          物理卷的狀態。
          Total PPs
          物理卷上的物理分區總數。
          Free PPs
          物理卷上的空閑物理分區數。
          Distribution
          物理卷的每節中分配的物理分區數:物理卷的外邊、外中、正中、內中和內邊。
          -l列出由 VolumeGroup 參數指定的組內的每個邏輯卷的以下信息:
          LV
          卷組內的一個邏輯卷。
          Type
          邏輯卷類型。
          LPs
          邏輯卷中的邏輯分區數。
          PPs
          邏輯卷使用的物理分區數。
          PVs
          邏輯卷使用的物理卷數。
          Logical volume state
          邏輯卷的狀態。Opened/stale 表示邏輯卷是打開的但包含的分區不是當前的。Opened/syncd 表示邏輯卷是打開和同步的。Closed 表示邏輯卷還沒有打開。
          Mount point
          邏輯卷的文件系統安裝點(如果適用)。
          -i從標準輸入中讀取卷組名。
          -M列出物理卷上的每個邏輯卷的以下字段:

          PVname:PPnum [LVname: LPnum [:Copynum] [PPstate]]
          PVname
          系統指定的物理卷名。
          PPnum
          物理分區號。物理分區號范圍為 1 到 1016。
          LVname
          分配的物理卷的邏輯卷名。邏輯卷名必須是系統范圍內唯一的名稱,它可以是 1 到 64 個字符。
          LPnum
          邏輯分區號。邏輯分區號的范圍為 1 到 64000。
          Copynum
          鏡像號。
          PPstate
          只有在非當前物理卷上的物理分區才顯示為舊文件。
          -n DescriptorPhysicalVolume由 DescriptorPhysicalVolume 變量指定描述符區域的訪問信息。由于使用 -n 標志訪問的信息沒有對該邏輯卷進行驗證,故這些信息可能不是當前信息。如果不使用 -n 標志,那么物理卷的描述符區域保留著最有效的訪問信息,因此顯示的信息是當前的。當使用這個標志時,卷組不一定是活動的。
          -o僅列出活動的卷組(那些變化的卷組)。一個活動的卷組是可以使用的卷組。

          如果不指定任何標志,則顯示以下信息:

          Volume group卷組名。卷組名在系統范圍內必須是唯一的并且可以是 1 到 15 個字符。
          Volume group state卷組狀態。如果使用 varyonvg 命令激活了卷組,那么卷組狀態是active/complete(表明所有物理卷是活動的)或 active/partial(表明某些物理卷不是活動的)。如果沒有用 varyonvg 命令激活卷組,那么卷組狀態是 inactive
          Permission訪問許可權:只讀讀寫
          Max LVs卷組中允許的邏輯卷的最大數目。
          LVs當前在卷組中的邏輯卷數。
          Open LVs當前打開的卷組內的邏輯卷數。
          Total PVs卷組內的物理卷的總數。
          Active PVs當前活動的物理卷數。
          VG identifier卷組標識。
          PP size每個物理分區的大小。
          Total PPs卷組內的物理分區的總數。
          Free PP沒有分配的物理分區數。
          Alloc PPs當前分配到邏輯卷的物理分區數。
          Quorum多數需要的物理卷數。
          VGDS卷組內的卷組描述符區域數。
          Auto-on在 IPL 上自動激活(yes 或 no)。
          Concurrent表明卷組狀態是“可并發的”或“不可并發的”。
          Auto-Concurrent“當前可用”卷組狀態是否在并發和非并發方式間自動改變的狀態。對于“不可并發的”卷組,缺省值為 Disabled。
          VG Mode卷組方式變化:“并發”或“非并發”。
          Node ID如果卷組在并發節點變化的當前節點的節點標識。
          Active Nodes使卷組變化的其它并發卷組節點的節點標識。
          Max PPs Per PV卷組允許的每個物理卷的物理分區的最大數目。
          Max PVs卷組允許的物理卷的最大數目。
          LTG size卷組的邏輯磁道組大小(千字節數)。
          BB POLICY卷組的壞塊重定位策略。
          SNAPSHOT VG如果快照卷組是活動的,則為快照卷組名,否則為快照卷組標識。
          PRIMARY VG如果原始卷組是活動的,則為快照卷組的原始卷組名,否則為原始卷組標識。

          示例

          1. 要顯示所有活動的卷組名,請輸入:
            lsvg -o
          2. 要顯示系統內的所有卷組名,請輸入:

            lsvg
          3. 要顯示關于 vg02 卷組的信息,請輸入:

            lsvg vg02

            顯示卷組 vg02 邏輯分區和物理分區的特性和狀態。

          4. 要顯示卷組 vg02 中的所有邏輯卷的名稱、特性和狀態,請輸入:
            lsvg -l vg02

          文件

          /usr/sbin包含 lsvg 命令駐留的目錄。

          相關信息

          chvg 命令、lspv 命令、lslv 命令、varyonvg 命令。

          AIX 5L Version 5.2 System Management Concepts: Operating System and Devices 中的 Logical Volume Storge Overview 解釋“邏輯卷管理程序”、物理卷、邏輯卷、卷組、組織、確保數據完整性和分配特性。

          有關安裝基于 Web 的系統管理器的信息,請參閱《AIX 5L V5.2 基于 Web 的系統管理器管理指南》中的『第 2 章:安裝基于 Web 的系統管理器』。

          AIX 5L Version 5.2 System Management Concepts: Operating System and Devices 中的 System Management Interface Tool(SMIT):Overview 解釋結構、主菜單和 SMIT 執行的任務。

          VG

            卷組 Volume Group (VG) 是計算機上的術語(操作系統的VG概念)
            一個VG是由許多物理分區組成的(可能來自多個物理卷或硬盤)。雖然這可能容易讓你認為一個VG就是由幾個硬盤組成的(例如/dev/hda和/dev/sda),但是更確切的說,它包含由這些硬盤提供的許多PE(物理分區 Physical Extents)。
            卷組 = VG (Volume Group)
            IBM將一組物理卷的集合稱為卷組
            卷組的操作:
            磁盤空間通常在一個卷組內分配
            AIX中的所有可用磁盤 - 當作一個組來使用
            可以export用于與其它的AIX系統連接 - 高可用性的HACMP
            系統的第一個VG 稱為rootvg
          posted @ 2014-11-21 14:30 Eric_jiang 閱讀(623) | 評論 (1)編輯 收藏

          MongoDB使用手冊

          一、安裝包下載地址

               http://www.mongodb.org/downloads

          二、服務器端使用

          LINUX版本:

          ①用tar -zxvf mongodb-linux-x86_64-1.2.4.tgz解壓開安裝包

          mkdir -p /data/db  創建目錄

          cd /data/db 進入db目錄下   然后創建mkdir m_data m_log

          ④進入mongodb解壓目錄的bin目錄下,用

          ./mongod -fork --dbpath=./data/db/m_data/ --logpath=./m_log.log  --logappend --port=27017 &  啟動服務器。

          WINDOW版本:

          執行如下命令啟動服務器:

          mongod --bind_ip 127.0.0.1 --logpath d:\data\logs --logappend --dbpath d:\data\db  --directoryperdb –install

          【注:將mongodb安裝成服務,裝該服務綁定到IP127.0.0.1,日志文件為d:\data\logs,以及添加方式記錄。數據目錄為d:\data\db。并且每個數據庫將儲存在一個單獨的目錄(--directoryperdb)】

          三、客戶端使用:

          LINUX版本:

          進入MongoDBbin目錄下,使用./mongo進入命令行行下 然后即可進行增刪改查等日常操作。

          WINDOW版本:

          進入mongodbbin目錄下,使用mongo.exe --host IP  --port 端口連接到MongoDB服務器上

          四、MongDB停止

          LINUX版本:

                如果在shell窗口下可以直接按“CTRL+C”,如果是作為后臺服務使用時,可以先使用  ps -ef |grep mongod查詢出服務器的pid,然后使用kill -9 pid    此處的Pid為查詢出的pid

          WINDOW版本:

                 如果在命令窗口下直接按“CTRL+C”,如果是作為系統服務來使用的話,需要到服務管理中停止服務或者在window管理器中終止進程。

          五、web版本的統計服務狀態

              使用http://IP(服務器IP:端口即可

          六、語法

          1、基本操作

          db.AddUser(username,password) 添加用戶

          db.auth(usrename,password) 設置數據庫連接驗證

          db.cloneDataBase(fromhost) 從目標服務器克隆一個數據庫

          db.commandHelp(name) returns the help for the command

          db.copyDatabase(fromdb,todb,fromhost) 復制數據庫fromdb---源數據庫名稱,todb---目標數據庫名稱,fromhost---源數據庫服務器地址

          db.createCollection(name,{size:3333,capped:333,max:88888}) 創建一個數據集,相當于一個表

          db.currentOp() 取消當前庫的當前操作

          db.dropDataBase() 刪除當前數據庫

          db.eval(func,args) run code server-side

          db.getCollection(cname) 取得一個數據集合,同用法:db['cname'] or

          db.getCollenctionNames() 取得所有數據集合的名稱列表

          db.getLastError() 返回最后一個錯誤的提示消息

          db.getLastErrorObj() 返回最后一個錯誤的對象

          db.getMongo() 取得當前服務器的連接對象get the server

          db.getMondo().setSlaveOk() allow this connection to read from then nonmaster membr of a replica pair

          db.getName() 返回當操作數據庫的名稱

          db.getPrevError() 返回上一個錯誤對象

          db.getProfilingLevel()

          db.getReplicationInfo() 獲得重復的數據

          db.getSisterDB(name) get the db at the same server as this onew

          db.killOp() 停止(殺死)在當前庫的當前操作

          db.printCollectionStats() 返回當前庫的數據集狀態

          db.printReplicationInfo()

          db.printSlaveReplicationInfo()

          db.printShardingStatus() 返回當前數據庫是否為共享數據庫

          db.removeUser(username) 刪除用戶

          db.repairDatabase() 修復當前數據庫

          db.resetError()

          db.runCommand(cmdObj) run a database command. if cmdObj is a string, turns it into {cmdObj:1}

          db.setProfilingLevel(level) 0=off,1=slow,2=all

          db.shutdownServer() 關閉當前服務程序

          db.version() 返回當前程序的版本信息

          2、數據集()操作

          db.test.find({id:10}) 返回test數據集ID=10的數據集

          db.test.find({id:10}).count() 返回test數據集ID=10的數據總數

          db.test.find({id:10}).limit(2) 返回test數據集ID=10的數據集從第二條開始的數據集

          db.test.find({id:10}).skip(8) 返回test數據集ID=10的數據集從0到第八條的數據集

          db.test.find({id:10}).limit(2).skip(8) 返回test數據集ID=1=的數據集從第二條到第八條的數據

          db.test.find({id:10}).sort() 返回test數據集ID=10的排序數據集

          db.test.findOne([query]) 返回符合條件的一條數據

          db.test.getDB() 返回此數據集所屬的數據庫名稱

          db.test.getIndexes() 返回些數據集的索引信息

          db.test.group({key:...,initial:...,reduce:...[,cond:...]})

          db.test.mapReduce(mayFunction,reduceFunction,<optional params>)

          db.test.remove(query) 在數據集中刪除一條數據

          db.test.renameCollection(newName) 重命名些數據集名稱

          db.test.save(obj) 往數據集中插入一條數據

          db.test.stats() 返回此數據集的狀態

          db.test.storageSize() 返回此數據集的存儲大小

          db.test.totalIndexSize() 返回此數據集的索引文件大小

          db.test.totalSize() 返回些數據集的總大小

          db.test.update(query,object[,upsert_bool]) 在此數據集中更新一條數據

          db.test.validate() 驗證此數據集

          db.test.getShardVersion() 返回數據集共享版本號

          3、MongoDB語法與現有關系型數據庫SQL語法比較

          MongoDB語法 MySql語法

          db.test.find({'name':'foobar'}) <==> select * from test where name='foobar'

          db.test.find() <==> select * from test

          db.test.find({'ID':10}).count() <==> select count(*) from test where ID=10

          db.test.find().skip(10).limit(20) <==> select * from test limit 10,20

          db.test.find({'ID':{$in:[25,35,45]}}) <==> select * from test where ID in (25,35,45)

          db.test.find().sort({'ID':-1}) <==> select * from test order by ID desc

          db.test.distinct('name',{'ID':{$lt:20}}) <==> select distinct(name) from test where ID<20

          db.test.group({key:{'name':true},cond:{'name':'foo'},reduce:function(obj,prev){prev.msum+=obj.marks;},initial:{msum:0}}) <==> select name,sum(marks) from test group by name

          db.test.find('this.ID<20',{name:1}) <==> select name from test where ID<20

          db.test.insert({'name':'foobar','age':25})<==>insert into test ('name','age') values('foobar',25)

          db.test.remove({}) <==> delete * from test

          db.test.remove({'age':20}) <==> delete test where age=20

          db.test.remove({'age':{$lt:20}}) <==> elete test where age<20

          db.test.remove({'age':{$lte:20}}) <==> delete test where age<=20

          db.test.remove({'age':{$gt:20}}) <==> delete test where age>20

          db.test.remove({'age':{$gte:20}}) <==> delete test where age>=20

          db.test.remove({'age':{$ne:20}}) <==> delete test where age!=20

          db.test.update({'name':'foobar'},{$set:{'age':36}}) <==> update test set age=36 where name='foobar'

          db.test.update({'name':'foobar'},{$inc:{'age':3}}) <==> update test set age=age+3 where

          name='foobar'

           

          4、 

           

          七、MongoDB主從復制介紹

          MongoDB的主從復制其實很簡單,就是在運行 主的服務器 上開啟mongod進程 時,加入參數--master即可,在運行從的服務 器上開啟mongod進程時,加入--slave --source 指定主即可,這樣,在主數據 庫更新時,數據被復制到從數據庫



          (這里日志 文件 和訪問 數據時授權用戶暫時不考慮 )

          下面我在單臺服務器上開啟2 deamon來模擬2臺服務器進行主從復制:

          $ mkdir m_master m_slave

          $mongodb/bin/mongod  --port  28018 --dbpath ~/m_master  --master  &

          $mongodb/bin/mongod  --port  28019 --dbpath ~/m_slave  --slave  --source   localhost:28018  &

          這樣主從服務器都已經啟動了,可以利用 netstat -an -t 查看2801828019端口 是否開放

          登錄主服務器:

          $ mongodb/bin/mongo --port 28018

          MongoDB shell version: 1.2.4-

          url: test

          connecting to: 127.0.0.1:28018/test

          type "help" for help

          > show dbs

          admin

          local

          test

          > use test

          switched to db test

          > show collections

          這里主上的test數據什么表都沒有,為空,查看從服 務器同樣也是這樣

          $ mongodb/bin/mongo --port 28019

          MongoDB shell version: 1.2.4-

          url: test

          connecting to: 127.0.0.1:28019/test

          type "help" for help

          > show dbs

          admin

          local

          test

          > use test

          switched to db test

          > show collections

          那么現在我們來驗證主從數據是否會像想象的那樣同步 呢?

          我們在主上新建表user

          > db  

          test

          >db.createCollection("user");

          > show collections           

          system.indexes

          user

          user已經存在了,而且test庫中還多了一個system.indexes用來存放索引的表



          到從服務器上查看test庫:

          > db  

          test

          > show collections           

          system.indexes

          User

          > db.user.find();

          服務器的test庫中user表已經存在,同時我還查了一下user表為空

          現在我們再來測試一下,向主服務器test庫的user表中插入一條數據

          > show collections           

          system.indexes

          user

          > db.user.insert({uid:1,name:"Falcon.C",age:25});

          > db.user.find();                               

          { "_id" : ObjectId("4b8226a997521a578b7aea38"), "uid" : 1, "name" : "Falcon.C", "age" : 25 }

          時我們查看從服務器的testuser表時會多出一條記錄來:

          > db.user.find();

          { "_id" : ObjectId("4b8226a997521a578b7aea38"), "uid" : 1, "name" : "Falcon.C", "age" : 25 }

          MongoDB 還有 Replica Pairs Master - Master

          參考地址:http://www.mongodb.org/display/DOCS/Master+Slave



          MongoDB一般情況下都可以支持主主復制,但是在大部分情況下官方不推薦使用

          運行 master - master的準備工作是:

          新建存放數據 庫文件 的路徑

          $mkdir mongodata/mm_28050 mongodata/mm_28051

          運行mongodb數據庫 ,一個端口 為:28050,一個為:28051

          $ mongodb/bin/mongod --port 28050 --dbpath ~/mongodata/mm_28050 --master --slave --source localhost:28051 > /dev/null &

          $ mongodb/bin/mongod --port 28051 --dbpath ~mongodata/mm_28051 --master --slave --source localhost:28050 > /dev/null &

          可以通過ps -ef|grep mongod netstat -an -t來檢查是否運行功能



          測試master - master模式

          $ mongodb/bin/mongo --port 28050

          MongoDB shell version: 1.2.4-

          url: test

          connecting to: 127.0.0.1:28050/test

          type "help" for help

          > show dbs

          admin

          local

          > db

          test

          > db.user.insert({_id:1,username:"Falcon.C",age:25,sex:"M"});

          > db.user.find();

          { "_id" : 1, "username" : "Falcon.C", "age" : 25, "sex" : "M" }

          > db.user.find();  //28051端口插入數據后,再來查詢,看數據是否同步

          { "_id" : 1, "username" : "Falcon.C", "age" : 25, "sex" : "M" }

          { "_id" : 2, "username" : "NetOne", "age" : 24, "sex" : "F" }

          $ mongodb/bin/mongo --port 28051

          MongoDB shell version: 1.2.4-

          url: test

          connecting to: 127.0.0.1:28051/test

          type "help" for help

          > db

          test

          > show collections         端口28050已經新建了一個user表并插入了一條數據,這里多出2

          system.indexes

          user

          > db.user.find();        //查詢表user發現數據已經同步

          { "_id" : 1, "username" : "Falcon.C", "age" : 25, "sex" : "M" }

          > db.user.insert({_id:2,username:"NetOne",age:24,sex:"F"});在此插入數據看數據是否雙向同步

          > db.user.find();  

          { "_id" : 1, "username" : "Falcon.C", "age" : 25, "sex" : "M" }

          { "_id" : 2, "username" : "NetOne", "age" : 24, "sex" : "F" }

          過以上開啟兩終端分別連接到2805028051端口,分別插入測試數據發現,一切正常,正如我們所想的那樣實現數據的雙向同步

           

          八、 

          posted @ 2014-11-19 18:28 Eric_jiang 閱讀(173) | 評論 (0)編輯 收藏

          MongoDB創建數據庫完全可以使用use

          如下:

          use mydb;

          這樣就創建了一個數據庫。

          這一步很重要如果什么都不操作離開的話 這個庫就會被系統刪除。

           

          驗證-------------------------------

          然后使用插入語句:

          db.user.insert({name:'tompig'});

          在使用下列命令查看

          show collections;      ---查看‘表’ 

          show dbs                   ---查看庫

          如圖操作:

           

          mongodb 刪除數據庫

          use mydb; 

           db.dropDatabase();

           

          mongodb刪除表 

          db.mytable.drop();

          posted @ 2014-11-19 12:58 Eric_jiang 閱讀(143) | 評論 (0)編輯 收藏

               摘要: 最后就是下面2個(這兩個版本不對就容易出現各種各樣的,雜七雜八的問題) 這里我就給出我所采用的版本spring-data-documentspring-data-commons有所改變所有版本必須要對應好下面是jar下載地址 http://www.springsource.org/spring-data/mongodb http://www.springsource.org/s...  閱讀全文
          posted @ 2014-11-18 19:52 Eric_jiang 閱讀(306) | 評論 (0)編輯 收藏

          db2數據庫還原命令
           
          1.備份的數據庫(olddb) 與要還原的數據(newdb)名不相同: 
          db2 restore db olddb into newdb; 
            www.2cto.com  
          2.當前目錄下存在多個備份文件.需要指定時間 
          db2 restore db olddb taken at 20120819175932 into newdb; 
           
          3.需要指定備份文件的目錄 
          db2 RESTORE DATABASE olddb FROM "/media/olddb.0.db2inst1.NODE0000.CATN0000.20120819175932.001" 
          TAKEN AT 20120819175932  INTO newdb; 
           
          4.需要指定newdb NEWLOGPATH路徑 
          db2 RESTORE DATABASE olddb FROM "/media/olddb.0.db2inst1.NODE0000.CATN0000.20120819175932.001" 
          TAKEN AT 20120819175932 NEWLOGPATH "/opt/log" WITH 2 BUFFERS BUFFER 1024 INTO newdb; 
           
          5.需要指定表空間的 
          1).創建文件夾 
          mkdir /home/db2inst1/db2space/newdb_sp0; 
          mkdir /home/db2inst1/db2space/newdb_sp1; 
          mkdir /home/db2inst1/db2space/newdb_sp2; 
          mkdir /home/db2inst1/db2space/newdb_sp3; 
          mkdir /home/db2inst1/db2space/newdb_sp4; 
          mkdir /home/db2inst1/db2space/newdb_sp5; 
          mkdir /home/db2inst1/db2space/newdb_sp6; 
           
          2).還原命令加入 redirect without rolling forward 
          db2 RESTORE DATABASE olddb FROM "/media/olddb.0.db2inst1.NODE0000.CATN0000.20120819175932.001" 
          TAKEN AT 20120819175932 NEWLOGPATH "/opt/log" WITH 2 BUFFERS BUFFER 1024 INTO newdb 
          redirect without rolling forward; 
           
          3).設置表空間目錄 
          SET TABLESPACE CONTAINERS FOR 0 IGNORE ROLLFORWARD CONTAINER OPERATIONS USING (PATH "/home/db2inst1/db2space/newdb_sp0"); 
          SET TABLESPACE CONTAINERS FOR 1 IGNORE ROLLFORWARD CONTAINER OPERATIONS USING (PATH "/home/db2inst1/db2space/newdb_sp1"); 
          SET TABLESPACE CONTAINERS FOR 2 IGNORE ROLLFORWARD CONTAINER OPERATIONS USING (PATH "/home/db2inst1/db2space/newdb_sp2"); 
          SET TABLESPACE CONTAINERS FOR 3 IGNORE ROLLFORWARD CONTAINER OPERATIONS USING (PATH "/home/db2inst1/db2space/newdb_sp3"); 
          SET TABLESPACE CONTAINERS FOR 4 IGNORE ROLLFORWARD CONTAINER OPERATIONS USING (PATH "/home/db2inst1/db2space/newdb_sp4"); 
          SET TABLESPACE CONTAINERS FOR 5 IGNORE ROLLFORWARD CONTAINER OPERATIONS USING (PATH "/home/db2inst1/db2space/newdb_sp5"); 
          SET TABLESPACE CONTAINERS FOR 6 IGNORE ROLLFORWARD CONTAINER OPERATIONS USING (PATH "/home/db2inst1/db2space/newdb_sp6"); 
           
          3).還原繼續.注意為olddb 
          RESTORE DATABASE olddb CONTINUE; 
           
          6.數據庫還原退回 
          db2 restore db 注意為olddb abort 
           
          7.還原后如果NEWLOGPATH 需要變更的 
          db2 UPDATE DB CFG FOR newdb USING NEWLOGPATH /db2/db2inst1/db2logpath 
          db2 UPDATE DB CFG FOR newdb  USING LOGFILSIZ 10001 
          db2 force applications all; 
          db2stop; 
          db2start; 
          posted @ 2014-11-18 12:17 Eric_jiang 閱讀(399) | 評論 (0)編輯 收藏

          僅列出標題
          共57頁: First 上一頁 5 6 7 8 9 10 11 12 13 下一頁 Last 
          主站蜘蛛池模板: 洛隆县| 余姚市| 乃东县| 九江县| 汤原县| 鲁山县| 满洲里市| 延安市| 安图县| 扎鲁特旗| 龙川县| 永德县| 保靖县| 永康市| 安泽县| 深泽县| 岳普湖县| 扎兰屯市| 高阳县| 汶川县| 会同县| 西丰县| 金秀| 北宁市| 衡阳县| 梅河口市| 北流市| 新绛县| 修文县| 江源县| 洛阳市| 渭南市| 承德县| 滕州市| 湘乡市| 大邑县| 靖边县| 精河县| 安吉县| 赤峰市| 泰来县|