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

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

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

    Jcat
    寵辱不驚,閑看庭前花開花落~~
    posts - 173,comments - 67,trackbacks - 0
    純好人不用打:白羊

    沒人防:雙子(迷宮)、天平(卡妙的冰箱)、射手(迷宮)

    打死:巨蟹(紫龍)、山羊(紫龍自曝)、雙魚(阿瞬)、水瓶(冰河)

    沒打過,放水:獅子(星矢)、天蝎(冰河)、金牛(星矢)、處女(一輝)


    這樣看來紫龍是最NB的,一個人干掉2個,而且靠他師傅走后門天平不用打,還用天平的武器救了冰河。

    冰河和他師傅干了2仗
    冰河那段也挺NB,先是在天平被凍個半死,然后在天蝎被針扎個半死,最后到了水瓶還能把他師傅干掉
    冰河和他師傅是最體現實力的一仗,純實力對扣

    合著星矢誰也沒殺,就TM來打醬油的。。。
    posted @ 2011-10-21 14:29 Jcat 閱讀(562) | 評論 (1)編輯 收藏
    簡單過一遍,詳細的以后遇到慢慢研究。
    主要的更新在幾個方面:
    1. OUI的改進
    2. Oracle Restart
    3. ASM的增強!!!


    New Grid Infrastructure Installation Option
    ?1. 單點包括:ASM、listener和Oracle Restart(監控、管理并自動重啟各個組件)
    ?2. 集群包括:ASM、listener和Clusterware

    New Desktop and Server Class Options
    ?1. Desktop Class:適用于筆記本、臺式機
    ?2. Server Class:適用于服務器(功能上沒區別,多一些高級配置選項)

    Daylight Savings Time Upgrade of Timestamp with Timezone Data Type
    ?新的DBMS_DST包,優化對TIMESTAMP WITH TIMEZONE數據的管理

    SYSASM Privilege
    ?管理ASM需要SYSASM權限,旨在分清ASM管理和DB管理

    Fixup Scripts and Prerequisite Checks
    ?安裝前檢查時,如果遇到不符合要求的配置,OUI會對一些檢查項自動生成fixup腳本,用root執行就可以解決相應問題。

    New Tool to Configure Custom Installation Options
    ?OUI不在提供對單個組件的配置功能,如果需要只能用$ORACLE_HOME/bin/chopt命令行進行配置。我想Oracle的趨勢就是為了讓更多已經成熟的配置自動化,簡化使用。

    Deinstallation Tool
    ?OUI不再用來刪除oracle軟件,請使用$ORACLE_HOME/deinstall

    Intelligent Data Placement
    ?指定ASM磁盤的磁盤范圍,旨在將高頻訪問的數據放在HOT region(比如磁盤的外道)

    Oracle Automatic Storage Management Cluster File System (Oracle ACFS)
    ?為其它文件提供ASM的存儲功能

    Data Pump Export and Data Pump Import
    ?Data Pump兼容Export/Import

    Use Oracle Restart to Automatically Restart Your Database

    ?1. 針對單點環境
    ?2. 自動重啟又問題的組件,如:db instance、listener、asm instance

    New Method of Installing Oracle Automatic Storage Management
    ?以前,ASM的安裝是伴隨著DB的安裝;現在是伴隨著Software的安裝。
    ?其實,就是把ASM上升到一個軟件的高度(以前只是db的一個組件)

    SRVCTL Support for Single Instance Database in a Cluster
    ?SRVCTL統一管理單點(with Restart)和集群數據庫(with Clusterware)

    Deprecated in Oracle Database 11g Release 2
    ?不支持裸設備了:要么用文件系統、要么用ASM,說白了,企業環境就必須用ASM
    ?不支持Oracle Ultra Search(9i的一個什么鳥功能)






















    posted @ 2011-06-17 15:35 Jcat 閱讀(818) | 評論 (0)編輯 收藏
    重裝完系統,mysql不需要重裝,直接當綠色版使用,還更干凈

    //啟動MYSQL
    cd $MYSQL_HOME/bin
    D:\JAVA\MYSQL\mysql-5.1.53-win32\bin>mysqld --console??????
    110616? 1:26:26 [Note] Plugin 'FEDERATED' is disabled.
    InnoDB: The log sequence number in ibdata files does not match
    InnoDB: the log sequence number in the ib_logfiles!
    110616? 1:26:26? InnoDB: Database was not shut down normally!
    InnoDB: Starting crash recovery.
    InnoDB: Reading tablespace information from the .ibd files...
    InnoDB: Restoring possible half-written data pages from the doublewrite
    InnoDB: buffer...
    110616? 1:26:26? InnoDB: Started; log sequence number 0 44233
    110616? 1:26:27 [Note] Event Scheduler: Loaded 0 events
    110616? 1:26:27 [Note] mysqld: ready for connections.
    Version: '5.1.53-community'? socket: ''? port: 3306? MySQL Community Server (GPL
    )

    //簡單使用

    mysql> show databases;
    +--------------------+
    | Database?????????? |
    +--------------------+
    | information_schema |
    | mysql????????????? |
    | test?????????????? |
    +--------------------+
    3 rows in set (0.03 sec)

    mysql> use mysql
    Database changed

    mysql> show tables;
    +---------------------------+
    | Tables_in_mysql?????????? |
    +---------------------------+
    | columns_priv????????????? |
    | db??????????????????????? |
    | event???????????????????? |
    | func????????????????????? |
    | general_log?????????????? |
    | help_category???????????? |
    | help_keyword????????????? |
    | help_relation???????????? |
    | help_topic??????????????? |
    | host????????????????????? |
    | ndb_binlog_index????????? |


    登陸
    D:\JAVA\MYSQL\mysql-5.1.53-win32\bin>mysql.exe -uroot
    創建數據庫
    mysql> create database testdb;




    posted @ 2011-06-16 01:40 Jcat 閱讀(932) | 評論 (1)編輯 收藏
    --主鍵是非分區索引,也可以看作是全局
    create table test_par1
    (
    ? tdate?? varchar2(8) primary key
    )
    partition by range ( tdate )
    (
    ???? partition p1 values less than ('20090201'),
    ???? partition p2 values less than ('20090301'),
    ???? partition pm values less than (MAXVALUE) ?
    ) tablespace test;


    --主鍵是分區索引
    create table test_par2
    (
    ? tdate?? varchar2(8)
    )
    partition by range ( tdate )
    (
    ???? partition p1 values less than ('20090201'),
    ???? partition p2 values less than ('20090301'),
    ???? partition pm values less than (MAXVALUE) ?
    ) tablespace test;

    create index i_tdate2 on test_par2(tdate) local;

    alter table test_par2 add constraint pk_tdate2 primary key(tdate);



    --查看test_par2的DDL
    select dbms_metadata.get_ddl( 'TABLE', 'TEST_PAR2' ) from dual;
    --整理如下
    create table test_par3
    (
    ? tdate?? varchar2(8),
    ? constraint pk_tdate3 primary key (tdate) using index local
    )
    partition by range ( tdate )
    (
    ???? partition p1 values less than ('20090201'),
    ???? partition p2 values less than ('20090301'),
    ???? partition pm values less than (MAXVALUE) ?
    ) tablespace test;


    這個案例也告訴我們,在做DDL時,盡量還是顯示的寫出屬性,一些簡易語法會引起不可知的定義。最后都用 get_ddl 再查一下,這才是Oracle真正執行的DDL。
    posted @ 2010-09-15 15:26 Jcat 閱讀(1285) | 評論 (0)編輯 收藏
    列出所有實例
    [db2inst1@dcm ~]$ db2ilist
    db2inst1

    列出當前實例下的所有數據庫

    [db2inst1@dcm ~]$ db2 list db directory

    ?System Database Directory

    ?Number of entries in the directory = 1

    Database 1 entry:

    ?Database alias?????????????????????? = SAMPLE
    ?Database name??????????????????????? = SAMPLE
    ?Local database directory???????????? = /home/db2inst1
    ?Database release level?????????????? = d.00
    ?Comment????????????????????????????? =
    ?Directory entry type???????????????? = Indirect
    ?Catalog database partition number??? = 0
    ?Alternate server hostname??????????? =
    ?Alternate server port number???????? =

    啟動實例
    [db2inst1@dcm ~]$ db2start
    07/09/2010 14:24:36???? 0?? 0?? SQL1063N? DB2START processing was successful.
    SQL1063N? DB2START processing was successful.

    連接到數據庫
    [db2inst1@dcm ~]$ db2 connect to sample

    ?? Database Connection Information

    ?Database server??????? = DB2/LINUX 9.7.1
    ?SQL authorization ID?? = DB2INST1
    ?Local database alias?? = SAMPLE

    執行SQL
    [db2inst1@dcm ~]$ db2
    db2 => select * from staff where dept=20

    ID???? NAME????? DEPT?? JOB?? YEARS? SALARY??? COMM??? ?
    ------ --------- ------ ----- ------ --------- ---------
    ??? 10 Sanders?????? 20 Mgr??????? 7? 98357.50???????? -
    ??? 20 Pernal??????? 20 Sales????? 8? 78171.25??? 612.45
    ??? 80 James???????? 20 Clerk????? -? 43504.60??? 128.20
    ?? 190 Sneider?????? 20 Clerk????? 8? 34252.75??? 126.50

    ? 4 record(s) selected.

    退出
    db2 => quit
    DB20000I? The QUIT command completed successfully.

    斷開連接(不斷開就不能db2stop)
    [db2inst1@dcm ~]$ db2 connect reset
    DB20000I? The SQL command completed successfully.

    關閉實例
    [db2inst1@dcm ~]$ db2stop
    07/09/2010 14:29:32???? 0?? 0?? SQL1064N? DB2STOP processing was successful.
    SQL1064N? DB2STOP processing was successful.

    posted @ 2010-07-09 14:32 Jcat 閱讀(254) | 評論 (0)編輯 收藏
    最近初探了一下DB2,發現關于“數據庫”、“實例”的概念及其關系容易把人弄暈,這里小小總結一下,并把Oracle也拉進來一起整。
    另外,發現Oracle和IBM老搞一些理論上就針鋒相對的事情,如RAC vs DPF (database partitioning feature),很是有趣。



    基本概念還是相同的
    數據庫軟件(下面簡稱軟件:軟件本身,一臺主機安裝一套就可以了。(拋開你故意在一臺服務器上安裝2遍Oracle/DB2這種不正常思維)

    實例:數據庫軟件啟動后的“進程+內存”
    軟件+實例的關系:一臺電腦只需要按照一套QQ(軟件),但是我們可以多用戶登錄(實例)。換到哲學的角度,就是抽象和具體的關系。
    數據庫(狹義,下面簡稱:一堆文件(數據文件、控制文件、日志文件、參數文件)
    它和軟件的區別:軟件是廠商賣給你的東西;是你自己的東西(業務、應用)
    它和實例的關系:用戶需要借助實例(所提供的各種手段)來訪問
    就相當于是QQ聊天記錄

    最后:數據庫(廣義)= 軟件 + 實例 + 庫
    一臺服務器(即一套數據庫軟件)可以建多個實例,多個庫,且互不相干


    體系結構的不同之處
    Oracle? 實例和庫一一對應
    DB2???? 一個實例可以掛多個庫


    高級情況(簡單提一下,以后再慢慢研究)
    Oracle:RAC一個庫被多個實例掛
    DB2:DPF一個實例多個庫
    在數據庫集群模式設計方面,有Share everything架構和Share nothing架構,前者以ORACLE RAC為代表,IBM DB2 Purescale為挑戰者;后者以IBM DB2 DPF為代表。

    posted @ 2010-07-08 18:26 Jcat 閱讀(426) | 評論 (0)編輯 收藏
    行鏈接:
    1. 一條記錄的大小大于block size,則產生行鏈接
    2. 容易發生在比較大的行上
    3. 因為行鏈接是由db_block_size不夠大引起的,所以對已有的行鏈接是無法清除的
    4. 9i以后,可以對不同的表空間設置不同的db_block_size,可以將一些特殊的寬表放在大block size的表空間

    例子:
    表空間block size為8k(8192),因為數據塊頭也要占一定空間,所以如下例,實際只能放7948的數據,一旦超過,就產生行鏈接

    --無
    create table test7948(a char(2000),b char(2000),c char(2000),d char(1948))
    tablespace test;

    insert into test7948 values('a','b','c','d');
    commit;

    --有
    create table test7949(a char(2000),b char(2000),c char(2000),d char(1949))
    tablespace test;

    insert into test7949 values('a','b','c','d');
    commit;



    行遷移:
    1. 本來是放的下的
    2. 因為更新使row size變大了,一個block里又不足以放下增加的空間(PCTFREE相關),則產生行遷移
    3. 容易發生在PCTFREE較小,對類似varchar類型的update又很多的表上
    4. 無法避免,但通過把數據導出導入進行清除

    例子:
    --無
    create table test7948_vchar(a char(2000),b char(2000),c char(2000),d char(1940), e varchar(9))
    tablespace test;

    insert into test7948_vchar values('a','b','c','d','12345678');
    commit;

    一更新,使得row size大于7948了,產生行遷移
    --有
    update test7948_vchar set e='123456789'
    posted @ 2010-06-13 14:08 Jcat 閱讀(235) | 評論 (0)編輯 收藏
    隨著Oracle收購SUN,今天又爆出SAP收購Sybase的大料。

    現狀:
    Oracle和IBM已經成為諾亞方舟級的廠商,啥都有。
    微軟,SAP成為航母級的廠商,軟件方面啥都有,但目前沒有硬件。

    猜想:who's next? Dell? HP?
    不然微軟把Dell收了吧,組成BDll公司;
    然后SAP和HP合并為SHP
    posted @ 2010-05-14 11:24 Jcat 閱讀(243) | 評論 (0)編輯 收藏
    --創建一個大一點的TEMP表空間
    create temporary tablespace temp1
    tempfile '/oracledatafile/temp01.dbf' SIZE 100m autoextend on next 100m maxsize 5000m;
    ?
    --切換默認TEMP表空間
    alter database default temporary tablespace temp1;

    --刪掉以前的TEMP表空間
    drop tablespace temp including contents and datafiles;
    posted @ 2010-04-30 11:05 Jcat 閱讀(285) | 評論 (0)編輯 收藏
    1. 物化視圖由于是物理真實存在的,故可以創建索引。




    --為基表創建MLOG
    --創建物化視圖時應先創建存儲的日志空間,否則建MV時報錯
    --ORA-23413: table "SCOTT"."EMP" does not have a materialized view log

    create materialized view log on scott.emp
    tablespace test
    /


    --創建物化視圖
    create materialized view test_mv
    tablespace test
    parallel (degree 4)
    build immediate refresh fast
    enable query rewrite
    as
    select * from scott.emp
    /


    --查看一下結果,果然很符合物化視圖的定義,一個表+一個視圖
    SQL> select object_name, object_type from user_objects where object_name = 'TEST_MV';
    OBJECT_NAME??? OBJECT_TYPE
    -----------??? --------
    TEST_MV??? ??? TABLE
    TEST_MV??? ??? MATERIALIZED VIEW

    SQL> select mview_name, container_name from user_mviews;
    MVIEW_NAME?????? CONTAINER_NAME
    ---------------- ------------------------------
    TEST_MV????????? TEST_MV? (這就是那個存儲表)

    --查看MLOG的情況
    --注意:MLOG的所屬和MV的所屬并不是同一個
    SQL> select log_owner, master, log_table from dba_mview_logs
    LOG_OWNER??? MASTER??? LOG_TABLE
    ---------------------------------
    SCOTT??? ??? EMP??? MLOG$_EMP (MLOG其實也就是一個表)

    SQL> desc scott.mlog$_emp;
    Name??? ??? ??? Type
    -------------------------------
    EMPNO??? ??? ??? NUMBER(4)
    SNAPTIME$$??? ??? DATE
    DMLTYPE$$??? ??? VARCHAR2(1)
    OLD_NEW$$??? ??? VARCHAR2(1)
    CHANGE_VECTOR$$??? ??? RAW(255)



    --刪除MLOG
    drop materialized view log on 物化視圖所依賴的表名;?
    --刪除物化視圖
    drop materialized view 物化視圖名;
    posted @ 2010-01-13 00:04 Jcat 閱讀(534) | 評論 (2)編輯 收藏
    注意,為了能在終端看見put_line的輸出,還需要先開啟
    set serveroutput on

    ?

    --用來測試的表
    create table test_tri(
    a1 int,
    a2 int
    )
    tablespace test


    -----行級insert觸發器
    -----
    1) 插入的一行新數據保存在:new
    2)
    insert觸發器沒有:old值
    3) 對:new的修改,只能定義在before類型的觸發器中

    ---觸發器語法---
    create or replace trigger 名稱
    [after|before] [delete|update|insert]
    [of 列名] [on 表名]
    [referencing new as 新行別名 old as 舊行別名]
    [for each row] [when(條件)]
    declare
    ....
    begin
    ...
    exception
    ....
    end;


    --定義
    create or replace trigger test_before_insert
    before insert on test_tri
    for each row when(new.a2 is null)
    begin
    ?? ?dbms_output.put_line('insert row original: a1=' || :new.a1 || ' a2=' || :new.a2);
    ?? ?:new.a2 := :new.a1 * 2;? ?
    end;
    /

    create or replace trigger test_after_insert
    after insert on test_tri
    for each row
    begin
    ?? ?dbms_output.put_line('insert row actual: a1=' || :new.a1 || ' a2=' || :new.a2);? ?
    end;
    /

    --測試

    SQL> insert into test_tri(a1) values(1);
    insert row original: a1=1 a2=
    insert row actual: a1=1 a2=2

    SQL> insert into test_tri values(2,3);
    insert row actual: a1=2 a2=3

    SQL> select * from test_tri;
    ??????? A1???????? A2
    ---------- ----------
    ???????? 1????????? 2(由觸發器生成的值)
    ???????? 2????????? 3



    -----DDL觸發器-----
    --任何create語句都會觸發這個語句

    create or replace trigger test_ddl_trigger
    before create on schema
    begin
    ??? dbms_output.put_line( 'DDL Trigger' );
    ??? insert into test_tri values(9,9);
    end;
    posted @ 2010-01-11 14:58 Jcat 閱讀(259) | 評論 (0)編輯 收藏
    Oracle建好后,tnsnames和listener中自動就帶有如下內容,這里咱們就來解釋一下這些東西是干什么用的

    ----TNSNAMES.ora----
    EXTPROC_CONNECTION_DATA =
    ? (DESCRIPTION =
    ??? (ADDRESS_LIST =
    ????? (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    ??? )
    ??? (CONNECT_DATA =
    ????? (SID = PLSExtProc)
    ????? (PRESENTATION = RO)
    ??? )
    ? )

    ----LISTENER.ora----
    SID_LIST_LISTENER =
    ? (SID_LIST =
    ??? (SID_DESC =
    ????? (SID_NAME = PLSExtProc)
    ????? (ORACLE_HOME = /opt/oracle/10gR2)
    ????? (PROGRAM = extproc)
    ??? )
    ? )

    LISTENER =
    ? (DESCRIPTION_LIST =
    ??? (DESCRIPTION =
    ????? (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    ????? (ADDRESS = (PROTOCOL = TCP)(HOST = dcm)(PORT = 1521))
    ??? )
    ? )


    IPC - Inner Process Communication
    When a process is on the same machine as the server, use the IPC protocol for connectivity instead of TCP. Inner Process Communication on the same machine does not have the overhead of packet building and deciphering that TCP has.
    I've seen a SQL job that runs in 10 minutes using TCP on a local machine run as fast as one minute using an IPC connection. The difference in time is most dramatic when the Oracle process has to send and/or receive large amounts of data to and from the database.
    For example, a SQL*Plus connection that counts the number of rows of some tables will run about the same amount of time, whether the database connection is made via IPC or TCP. But if the SQL*Plus connection spools much data to a file, the IPC connection will often be much faster -- depending on the data transmitted and the machine workload on the TCP stack.

    For how to configure it:
    1. you should add one IPC line in the LISTENER.ORA
    2. You should also add one IPC line in the TNSNAMES.ORA



    PLSExtPro - PL/Sql External Procdure
    默認安裝時,會安裝一個PL/SQL外部程序(extproc--這是程序名)條目在listener.ora中,是oracle為調用外部程序默認配置的監聽,它的名字(也就是SID)通常是ExtProc或PLSExtProc
    但一般不會使用它,可以直接從listener.ora中將這項移除,因為對ExtProc已經有多種攻擊手段了,在不使用外部程序時,Oracle也是建議刪除的。



    extproc的作用
    就是在pl/sql中調用外部語句,如c,java寫的過程。
    現在,Oracle已經全面支持JAVA了,這東西也就過時了,之所以繼續保留是考慮到兼容以前老版本的數據庫實例。

    [oracle@dcm bin]$ extproc
    Oracle Corporation --- TUESDAY?? JAN 05 2010 21:58:23.878
    Heterogeneous Agent Release 10.2.0.1.0 - Production

    posted @ 2010-01-05 21:59 Jcat 閱讀(652) | 評論 (0)編輯 收藏
    --登錄sys用戶,創建一個測試用戶,權限可以給大點
    SQL> create user test identified by xxxxx;
    SQL> grant connect to test;
    SQL> grant resource to test;
    SQL> grant dba to test;


    --登錄test用戶,開始測試
    --建個測試表
    create table test_table(id int, time timestamp);

    --創建Job
    begin
    dbms_scheduler.create_job(
    ?? ?job_name => 'test_job',
    ?? ?job_type => 'PLSQL_BLOCK',
    ?? ?job_action => 'insert into test_table
    ????????????????? (select nvl(max(id),0)+1, systimestamp from test_table, dual);', --nvl函數同SQLServer的isnull函數
    ?? ?start_date => null, --一激活,就開始
    ?? ?repeat_interval => 'FREQ=SECONDLY;INTERVAL=10');
    end;

    FREQ用來指定間隔的時間周期,可選參數有:YEARLY,MONTHLY,WEEKLY,DAILY,HOURLY,MINUTELY,SECONDLY。

    --光創建沒用,還需要激活;也可以在創建時,直接把enable屬性設置為true(enabled => true
    select job_name, enabled, run_count from user_scheduler_jobs;
    JOB_NAME?????????????????????? ENABL? RUN_COUNT
    ------------------------------ ----- ----------
    TEST_JOB?????????????????????? FALSE????????? 0


    begin
    dbms_scheduler.enable('test_job');
    end;

    --查看效果
    select id, to_char(time,'HH24:MI:SS:FF3') from test_table;
    ?????? ID? TO_CHAR(TIME,'HH24
    ---------- ------------------
    ???????? 1 16:13:29:542
    ???????? 2 16:13:39:506
    ???????? 3 16:13:49:109
    ???????? 4 16:13:59:097
    ???????? 5 16:14:09:109
    ???????? 6 16:14:19:103
    ???????? 7 16:14:29:101
    ???????? 8 16:14:39:099
    ???????? 9 16:14:49:105
    ??????? 10 16:14:59:100


    --停止任務
    begin
    dbms_scheduler.disable('test_job');
    end;

    --刪除任務
    begin
    dbms_scheduler.drop_job('test_job');
    end;
    posted @ 2009-12-17 16:13 Jcat 閱讀(247) | 評論 (0)編輯 收藏

    一致和并發是對立的,需要根據應用,選擇權宜之計


    數據不一致的現象

    ---事務內單SQL的情況---
    1.臟讀-Dirty Read:本事務讀取了其它事務尚未提交的修改數據
    例子:讀了不該讀的
    1:00 x=1
    1:01 A用戶 Update x=2(但未commit)
    1:02 B用戶 Select x --> x=2
    合理的情況是x仍然等于1

    ---事務內多SQL的情況(典型的如,先查再改)---
    2.不可重復讀-Non Repeatable Read
    例子1:自相矛盾
    1:00 x=1 y=2
    1:01 B用戶 Select x,y --> x=1 y=2
    1:02 A用戶 Update x=2; Commit;
    1:03 B用戶 Select x+y --> x+y=4
    首先這個結果從單條SQL的角度看,是沒有問題的。但是,如果把B的兩次查詢看作一個整體(事務),那么合理的情況應該是
    ? x+y仍然等于3
    ? 或者B再進行一次事務,得出 x=2 y=2 x+y=4 的結果


    例子2:更新丟失
    1:00 x=1
    1:01 B用戶 Select x --> x=1
    1:02 A用戶 Select x --> x=1
    1:03 A用戶 Update x=2; Commit;
    1:04 B用戶 Update x=3; Commit;
    同樣,從單條SQL來講,沒有任何問題。
    但是從邏輯的合理性講,一般的更新操作都是先查再改,換言之
    ? A真正想做的是Update x from 1 to 2
    ? B真正想做的是Update x from 1 to 3
    但最終卻造成了在B不知情的情況下,把B的初衷改為了Update x from 2 to 3


    3.幻影讀-Phantom Read
    例子:讀到了未來
    1:00 X1=1 X2=2
    1:01 B用戶 Select Xi --> X1=1 X2=2
    1:02 A用戶 Insert X3=3; Commit;
    1:03 B用戶 Select sum(Xi) --> re=6
    其實道理和之前的不可重復讀相同,只不過是由Insert引起的罷了。
    (甚至Delete也會引起類似的問題,但好像學術界并沒有對Delete進行討論)




    Isolation Level
    Read Uncommitted:1,2,3都會發生
    ? Oracle中嚴格禁止臟讀
    ? 在SQL Server 7.0中,是可以選擇該級別的
    Read Committed:發生2,3(Oracle的默認級別)
    Repeatable Read:發生3
    Serializable:都不發生


    Oracle的實現方式
    Read Committed:默認就實現
    Repeatable Read:
    ? 1. 悲觀鎖(select ... for update),影響并發
    ? 2. 樂觀鎖(update where 所有字段都作為條件),不影響并發
    Serializable:
    ? alter session set isolation_level=serializable/read only
    posted @ 2009-12-05 17:45 Jcat 閱讀(218) | 評論 (0)編輯 收藏


    因為在客戶那工作不能上網,決定辦一張3G上網卡(公司報銷),中午分別去電信和移動了解了一下:
    電信 960元? 7個月? 300小時/月
    移動 880元? 7個月? 15G/月 (目前推廣期,不限流量)
    (都包含上網貓)
    這樣算下來還是移動的便宜,去搞了個移動的。

    關于移動的上網貓,開始給我測試的時候用的是華為的、白色、流線型還挺好看。最終給我的是一個鳥公司的(敏訊),方形真難看,太大了,號稱還是升級版。

    速度嘛,看網頁沒啥問題,Outlook下郵件也很快,在線聽歌也沒問題,在線電影就不去嘗試了,免得傷自尊,辦公足夠了。玩開心網有點卡。(我以前就用過聯通的CDMA-2G上網,那叫一個慢呀)

    這個帖子就是用3G網絡發的,哈哈。同時紀念一下2年后重回BMW做項目。
    posted @ 2009-09-17 19:09 Jcat 閱讀(233) | 評論 (0)編輯 收藏
    扇區(sector):最小的可尋址單元,512byte
    磁道(track):一圈扇區
    磁柱(cylinder):一摞磁道

    每一磁道的扇區數是一樣的,但是存儲密度不同,外疏內密。

    為什么要外疏內密?
    角速度相同時,線速度與半徑成正比:
    硬盤為了提高其軸壽命,軸的轉動速度是一定的。磁頭在硬盤上讀寫數據是近乎于圓弧的路線,而越往外,線速度就越快。為了保證讀取的準確性只能減小外道的密度使磁頭讀取數據的時間間隔是相同的。


    有待研究:早期的磁盤每個磁道上的扇區數目是一樣,顯然浪費了外圈的容量,后來為了增大磁盤容量采用了新技術,也就是說越往外每磁道扇區數目越多。

    posted @ 2009-09-14 15:50 Jcat 閱讀(382) | 評論 (0)編輯 收藏
    字符設備:按照字符流的方式被有序訪問,不能隨機存取,如鍵盤、串口打印機、磁帶。

    塊設備:能夠隨機(不需要按順序)訪問固定大小數據片(chunks),采用塊緩沖技術,如硬盤、軟盤、光驅。

    裸設備:是一種沒有經過格式化,不被Unix通過文件系統來讀取的特殊字符設備。
    現在問題來了,Oracle在使用裸設備時(如ASM、甚或表空間直接建在裸設備上),難道還是順序存取?顯然不符合事實。
    其實,說裸設備是字符設備,只是從操作系統的角度來說的;從使用裸設備的應用程序(如Oracle)的角度,還是塊設備,Oracle會去對磁盤進行分塊管理。

    邏輯卷是邏輯概念,可以包含多塊物理硬盤,實現了存儲跨盤功能,同時提供了數據復制機制,提供了數據安全保護機制。

    --------------

    裸設備適用于每次改動數據較小、需大量并發交易,OLTP;
    對于大規模順序讀寫,裸設備性能是最差的,所以對OLAP,應使用塊設備或卷。

    posted @ 2009-09-14 13:45 Jcat 閱讀(598) | 評論 (0)編輯 收藏
    --創建一個分區表
    create table scott.testpart
    (
    ?? ?TEXTDATE?? VARCHAR2(8)
    )
    partition by range ( TEXTDATE )
    (
    ?? ? partition p1 values less than ('20090201'),
    ??? ?partition "p2" values less than ('20090301'), --注意這里的雙引號
    ?? ? partition pm values less than (MAXVALUE) ?
    )


    --插入一些數據(順便實踐一下雙層循環)

    DECLARE
    ?? ?i int:=1;
    ?? ?j int:=1;
    BEGIN
    ? ??? ?WHILE i<=3 LOOP
    ?? ??? ???? WHILE j<=3 LOOP
    ?? ??? ??? ???? insert into scott.testpart values (2009*10000+i*100+j);
    ???? ??? ??? ?? j:=j+1;
    ?? ??? ???? END LOOP;???? ??? ?
    ?? ???? i:=i+1;?? ?
    ?? ???? j:=1; --注意要重置j,否則就回不到j循環里面了
    ?? ???? END LOOP;
    END;


    --需要先進行分析,否則num_rows列將為空
    analyze table scott.testpart compute statistics;

    --查看各個分區的情況
    select table_name, partition_name, num_rows from DBA_TAB_PARTITIONS
    where table_owner='SCOTT' and table_name='TESTPART';
    TABLE_NAME??????????????? PARTITION_NAME?????????? NUM_ROWS
    -------------------------- ------------------------------ ----------
    TESTPART?????????????????????? P1?????????????????????????????????? ? ?? ?? ?? 3
    TESTPART?????????????????????? PM????????????????????????????????? ? ? ?? ?? 3
    TESTPART?????????????????????? p2?????????????????????????????????????? ? ? ? 3
    注意p2因為加了引號仍然是小寫(但并不顯示引號,這點比較討厭),沒加引號的會顯示為大寫


    --驗證數據確實進入了正確的分區
    select * from scott.testpart partition(p1);
    TEXTDATE
    --------
    20090101
    20090102
    20090103

    --創建p2時有引號,使用p2時也就需要引號。
    --特別的,用一些第三方客戶端創建分區表時,生成的SQL往往會自動加上引號,而查看DBA_TAB_PARTITIONS時又看不出來,所以遇到下面的問題,可以加個引號試試。
    select * from scott.testpart partition(p2);
    ERROR at line 1:
    ORA-02149: Specified partition does not exist

    select * from scott.testpart partition("p2");
    TEXTDATE
    --------
    20090201
    20090202
    20090203


    --其它相關
    select * from scott.testpart;
    truncate table scott.testpart;
    drop table scott.testpart;

    posted @ 2009-08-18 18:17 Jcat 閱讀(264) | 評論 (0)編輯 收藏
    股票的面值,是股份公司在所發行的股票票面上標明的票面金額,它以元/股為單位,其作用是用來表明每一張股票所包含的資本數額。在我國上海和深圳證券交易所流通的股票的面值均為壹元,即每股一元。
    一般來說,股票的發行價格都會高于其面值。當股票進入流通市場后,股票的面值就與股票的價格沒有什么關系了。股民愛將股價炒到多高,它就有多高。

    按股東權利分類,股票可分為普通股、優先股和后配股。在我國上交所與深交所上市的股票都是普通股

    股息紅利作為股東的投資收益,是以股份為單位計算的貨幣金額,如每股多少元。但在上市公司實施具體分派時,其形式可以有四種:這就是現金股利、財產股利、負債股利和股票股利等。滬深股市的上市公司進行利潤分配一般只采用股票紅利和現金紅利兩種,即統稱所說的送紅股和派現金。
    當上市公司向股東分派股息時,就要對股票進行除息;當上市公司向股東送紅股時,就要對股票進行除權。
    我國上市公司中約有一半以上的股份為國家股,且其股權代表基本上都是上市公司的經營管理人員。由于切身利益的影響,經營管理人員基本上都贊同企業的發展與擴張,所以我國上市公司的分紅中,送紅股的現象就非常普遍。
    posted @ 2009-07-29 11:17 Jcat 閱讀(174) | 評論 (0)編輯 收藏
    硬鏈接
    [oracle@dcm ~]$ ln original.file hard.link

    軟鏈接
    [oracle@dcm ~]$ ln -s original.file soft.link


    [oracle@dcm ~]$ ls -l
    -rw-r--r-- 2 oracle oinstall??? 4 Jul 14 17:21 original.file
    -rw-r--r-- 2 oracle oinstall??? 4 Jul 14 17:21 hard.link
    lrwxrwxrwx 1 oracle oinstall?? 13 Jul 14 17:23 soft.link -> original.file

    鏈接數只是和硬鏈接相關的一個概念
    從鏈接文件可以跟蹤到軟鏈接的指向(無法反向跟蹤)



    ---------------
    由于inode這種文件系統結構不是雙向的,不能查找一個inode被reference了多少次。我們只能通過一些技巧來跟蹤硬鏈接。
    1. 通過鏈接數,我們可以知道哪個文件有硬鏈接(大于1)
    2. 查找該文件的inode id
    [oracle@dcm ~]$ ls -i hard.link
    1573158 hard.link
    3. 通過inode id查找文件(如果需要遍歷的目錄很多,速度自然可想而知)
    [oracle@dcm ~]$ find -inum 1573158
    ./hard.link
    ./original.file
    4. 硬鏈接本質上是多個dentry指向同一個inode,所以并沒有主從之分,每個dentry都是平等的。

    posted @ 2009-07-14 17:40 Jcat 閱讀(257) | 評論 (0)編輯 收藏
    --修改后重新啟動數據庫,永久生效
    SQL> alter system set nls_date_format='yyyymmdd';
    ERROR at line 1: --不能是memory scope(默認是both,所以也不行)
    ORA-02096: specified initialization parameter is not modifiable with this option

    SQL> alter system set nls_date_format='yyyymmdd' scope=spfile;
    System altered.

    SQL> show parameter nls_date_format? --這個時候還沒生效
    NAME???????????????????????????????? TYPE??????? VALUE
    ------------------------------------ ----------- ------------------------------
    nls_date_format????????????????????? string

    --重啟數據庫后
    SQL> show parameter nls_date_format
    NAME???????????????????????????????? TYPE??????? VALUE
    ------------------------------------ ----------- ------------------------------
    nls_date_format????????????????????? string????? yyyymmdd

    SQL> select sysdate from dual;
    SYSDATE
    --------
    20090627



    --只對當前session有效,重登錄一次SQLPLUS,效果就消失了
    SQL> alter session set nls_date_format='yyyy-mm-dd';?? --這個格式也很常用 yyyy-mm-dd hh:mi:ss
    Session altered.? --同時會覆蓋初始化參數里的設置

    SQL> select sysdate from dual;
    SYSDATE
    ----------
    2009-06-27
    posted @ 2009-06-27 16:18 Jcat 閱讀(683) | 評論 (0)編輯 收藏
    Oracle所有對象的相關信息都可以通過靜態數據字典來查找,但數據字典實在太多,也記不清名字。
    因為數據字典都是以DBA_開頭的視圖,所以可以想辦法先把它們列出來。
    btw,DBA>ALL>User

    以下兩句結果上是等效的
    select object_name from dba_objects where object_name like 'DBA\_%' escape '\' and object_type='VIEW';
    select view_name from dba_views where view_name like 'DBA\_%' escape '\';



    例子:
    我想查看數據文件的相關信息,但是從DBA_DATA_FILES里,并沒有看見Temp表空間的數據文件的信息。
    于是可以嘗試如下搜索:
    SQL> select view_name from dba_views where view_name like 'DBA\_%TEMP%' escape '\';
    VIEW_NAME
    ------------------------------
    DBA_ADVISOR_SQLW_TEMPLATES
    DBA_ADVISOR_TEMPLATES
    DBA_HIST_BASELINE_TEMPLATE
    DBA_LOB_TEMPLATES
    DBA_REPCAT_REFRESH_TEMPLATES
    DBA_SUBPARTITION_TEMPLATES
    DBA_TEMPLATE_REFGROUPS
    DBA_TEMPLATE_TARGETS
    DBA_TEMP_FILES??? --找到嫌疑犯,進去一看,果然記錄的是關于Temp表空間的數據文件的信息
    DBA_TEMP_FREE_SPACE


    列一些常用的在這吧

    posted @ 2009-06-18 22:42 Jcat 閱讀(301) | 評論 (0)編輯 收藏
    這兩個命令都是用來更改一些數據庫配置的,所以經常容易混淆,如:
    >alter database drop logfile group 1;
    >alter system switch logfile;
    >alter system kill session 'sid,serial#';

    為了方便記憶,歸納如下:
    alter database (改變數據庫--database)
    和物理文件直接相關的操作

    alter system (改變實例--instance)
    不直接牽涉到磁盤文件的操作


    當然,這只是為了方便記憶,只滿足大部分的情況,并不是所有的命令都能套到這個框框里,最終還是用熟了就記住哪個是哪個了。


    ---外傳---
    oracle server=Instance (memory structure) + Database (disk file) + U/S Process
    ?? Instance=SGA + Background Process
    ?? Database=control file + data file + log file
    ?? U/S Process= User Process + Server Process + PGA

    posted @ 2009-06-16 12:32 Jcat 閱讀(228) | 評論 (0)編輯 收藏
    《道路交通安全法實施條例》第四十九條規定,機動車在有禁止掉頭或者禁止左轉彎標志、標線的地點以及在鐵路道口、人行橫道、橋梁、急彎、陡坡、隧道或者容易發生危險的路段,不得掉頭;機動車在沒有禁止掉頭或者沒有禁止左轉彎標志、標線的地點可以掉頭,但不得妨礙正常行駛的其他車輛和行人的通行。在允許掉頭的地點設有掉頭專用信號燈的,應當在綠燈期間掉頭;未設有掉頭信號燈的,但有相應的標志標明在紅燈或者綠燈期間掉頭的,應當按照標志的指示掉頭;既無掉頭專用信號燈,又無其他標志指示的,掉頭時可不受信號燈限制,但掉頭時不得妨礙正常行駛的車輛和行人通行。

    -----

    有下列情形之一的,依法予以處罰:
    ?? (1)在設有禁止掉頭(禁止左轉彎)標志、標線的地點掉頭的;??? ?
    ?? (2)在人行橫道處掉頭的;
    ?? (3)在非禁止掉頭的地點掉頭與正常行駛的車輛、行人發生交通事故的,按掉頭時妨礙正常行駛的車輛通行或掉頭時妨礙正常行駛的行人通行的行為予以處罰。
    ?? (4)沒有從左側第一條車道(設置專用掉頭車道的除外)掉頭的,按掉頭時未按規定駛入最左側車道的行為進行處罰。

    -----

    (一)下列情形,不屬于違法行為:
    ??? (1)在沒有禁止掉頭(禁止左轉彎)標志、標線的地點掉頭的;
    ??? (2)在沒有禁止掉頭(禁止左轉彎)標志、標線的路口,紅燈期間或綠燈期間掉頭的;
    ??? (3)在黃色網格線內掉頭的。

    (二)有下列情形之一的,依法予以處罰:
    ?? (1)在設有禁止掉頭(禁止左轉彎)標志、標線的地點掉頭的;??? ?
    ?? (2)在人行橫道處掉頭的;
    ?? (3)在非禁止掉頭的地點掉頭與正常行駛的車輛、行人發生交通事故的,按掉頭時妨礙正常行駛的車輛通行或掉頭時妨礙正常行駛的行人通行的行為予以處罰。
    ?? (4)沒有從左側第一條車道(設置專用掉頭車道的除外)掉頭的,按掉頭時未按規定駛入最左側車道的行為進行處罰。


    posted @ 2009-05-29 00:46 Jcat 閱讀(234) | 評論 (0)編輯 收藏
    運行該Sub,所有單元格的字母都會變成大寫的
    Sub ?cap()
    Dim ?cell? As ?Range
    For ? Each ?cell?In?UsedRange
    ????cell.Value?
    = ? UCase $(cell.Value)
    Next
    End?Sub

    給定一段時間,計算出什么時候到期
    Sub ?deadline()
    ????
    Dim ?deadtime? As ? Date
    ????deadtime?
    = ? DateAdd ( " d " ,?Cells( 2 ,? 2 ),? Now )??????? ' day
    ????deadtime? = ? DateAdd ( " h " ,?Cells( 2 ,? 3 ),?deadtime)?? ' hour
    ????deadtime? = ? DateAdd ( " n " ,?Cells( 2 ,? 4 ),?deadtime)?? ' minute
    ????ActiveCell.Value? = ?deadtime
    End?Sub

    ' 選中右移
    ActiveCell.Value? = ? 123
    Cells(ActiveCell.Row,?ActiveCell.Column?
    + ? 1 ).Select
    ActiveCell.Value?
    = ? 456

    posted @ 2009-05-20 20:20 Jcat 閱讀(195) | 評論 (0)編輯 收藏
    登錄RMAN
    [oracle@dcm ~]$ rman target /
    Recovery Manager: Release 11.1.0.6.0 - Production on Wed May 13 13:25:30 2009
    Copyright (c) 1982, 2007, Oracle.? All rights reserved.
    connected to target database: O11G (DBID=140043054)
    ? 或
    [oracle@dcm ~]$ rman
    Recovery Manager: Release 11.1.0.6.0 - Production on Thu Jun 18 13:28:07 2009
    Copyright (c) 1982, 2007, Oracle.? All rights reserved.
    RMAN> connect target /
    connected to target database: O11G (DBID=140043054)



    因為數據庫是Open的,且又是非歸檔模式,所以無法進行在線全備份

    RMAN> backup database;
    ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode

    關了,整成mount狀態
    RMAN> shutdown
    database closed
    database dismounted
    Oracle instance shut down

    RMAN> startup mount
    connected to target database (not started)
    Oracle instance started
    database mounted



    開始數據庫全備份

    RMAN> backup database;
    Starting backup at 13-MAY-09
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=154 device type=DISK
    channel ORA_DISK_1: starting full datafile backup set
    channel ORA_DISK_1: specifying datafile(s) in backup set
    input datafile file number=00001 name=/u01/app/oracle/oradata/o11g/system01.dbf
    input datafile file number=00002 name=/u01/app/oracle/oradata/o11g/sysaux01.dbf
    input datafile file number=00005 name=/u01/app/oracle/oradata/o11g/example01.dbf
    input datafile file number=00003 name=/u01/app/oracle/oradata/o11g/undotbs01.dbf
    input datafile file number=00007 name=/u01/app/oracle/oradata/o11g/testspace2.dbf
    input datafile file number=00004 name=/u01/app/oracle/oradata/o11g/users01.dbf
    channel ORA_DISK_1: starting piece 1 at 13-MAY-09
    channel ORA_DISK_1: finished piece 1 at 13-MAY-09
    piece handle=/u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxwnqz_.bkp tag=TAG20090513T153229 comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:01:35
    channel ORA_DISK_1: starting full datafile backup set
    channel ORA_DISK_1: specifying datafile(s) in backup set
    input datafile file number=00006 name=/u01/app/oracle/oradata/o11g/testspace.dbf
    channel ORA_DISK_1: starting piece 1 at 13-MAY-09
    channel ORA_DISK_1: finished piece 1 at 13-MAY-09
    piece handle=/u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxzv00_.bkp tag=TAG20090513T153229 comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
    Finished backup at 13-MAY-09

    Starting Control File and SPFILE Autobackup at 13-MAY-09
    piece handle=/home/oracle/myo11g/autobackup/c-140043054-20090513-00 comment=NONE
    Finished Control File and SPFILE Autobackup at 13-MAY-09

    查看備份信息
    RMAN> list backup of database;
    List of Backup Sets
    ===================
    BS Key? Type LV Size?????? Device Type Elapsed Time Completion Time
    ------- ---- -- ---------- ----------- ------------ ---------------
    1?????? Full??? 1.15G????? DISK??????? 00:01:33???? 13-MAY-09???? ?
    ??????? BP Key: 1?? Status: AVAILABLE? Compressed: NO? Tag: TAG20090513T153229
    ??????? Piece Name: /u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxwnqz_.bkp
    ? List of Datafiles in backup set 1
    ? File LV Type Ckp SCN??? Ckp Time? Name
    ? ---- -- ---- ---------- --------- ----
    ? 1?????? Full 1565621??? 13-MAY-09 /u01/app/oracle/oradata/o11g/system01.dbf
    ? 2?????? Full 1565621??? 13-MAY-09 /u01/app/oracle/oradata/o11g/sysaux01.dbf
    ? 3?????? Full 1565621??? 13-MAY-09 /u01/app/oracle/oradata/o11g/undotbs01.dbf
    ? 4?????? Full 1565621??? 13-MAY-09 /u01/app/oracle/oradata/o11g/users01.dbf
    ? 5?????? Full 1565621??? 13-MAY-09 /u01/app/oracle/oradata/o11g/example01.dbf
    ? 7?????? Full 1565621??? 13-MAY-09 /u01/app/oracle/oradata/o11g/testspace2.dbf

    BS Key? Type LV Size?????? Device Type Elapsed Time Completion Time
    ------- ---- -- ---------- ----------- ------------ ---------------
    2?????? Full??? 252.00K??? DISK??????? 00:00:07???? 13-MAY-09???? ?
    ??????? BP Key: 2?? Status: AVAILABLE? Compressed: NO? Tag: TAG20090513T153229
    ??????? Piece Name: /u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxzv00_.bkp
    ? List of Datafiles in backup set 2
    ? File LV Type Ckp SCN??? Ckp Time? Name
    ? ---- -- ---- ---------- --------- ----
    ? 6?????? Full 1565621??? 13-MAY-09 /u01/app/oracle/oradata/o11g/testspace.dbf

    RMAN> list backup of controlfile;
    List of Backup Sets
    ===================
    BS Key? Type LV Size?????? Device Type Elapsed Time Completion Time
    ------- ---- -- ---------- ----------- ------------ ---------------
    3?????? Full??? 9.36M????? DISK??????? 00:00:08???? 13-MAY-09?????
    ??????? BP Key: 6?? Status: AVAILABLE? Compressed: NO? Tag: TAG20090513T161909
    ??????? Piece Name: /home/oracle/myo11g/autobackup/c-140043054-20090513-01
    ? Control File Included: Ckp SCN: 1568079????? Ckp time: 13-MAY-09



    刪除指定(BS Key)的備份集

    RMAN> delete backupset 1;
    using channel ORA_DISK_1
    List of Backup Pieces
    BP Key? BS Key? Pc# Cp# Status????? Device Type Piece Name
    ------- ------- --- --- ----------- ----------- ----------
    1?????? 1?????? 1?? 1?? AVAILABLE?? DISK??????? /u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxwnqz_.bkp

    Do you really want to delete the above objects (enter YES or NO)? YES
    deleted backup piece
    backup piece handle=/u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxwnqz_.bkp RECID=1 STAMP=686763156
    Deleted 1 objects

    刪除所有備份集
    RMAN> delete backup;

    using channel ORA_DISK_1

    List of Backup Pieces
    BP Key? BS Key? Pc# Cp# Status????? Device Type Piece Name
    ------- ------- --- --- ----------- ----------- ----------
    2?????? 2?????? 1?? 1?? AVAILABLE?? DISK??????? /u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxzv00_.bkp
    3?????? 3?????? 1?? 1?? AVAILABLE?? DISK??????? /home/oracle/myo11g/autobackup/c-140043054-20090513-00

    Do you really want to delete the above objects (enter YES or NO)? YES
    deleted backup piece
    backup piece handle=/u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxzv00_.bkp RECID=2 STAMP=686763258
    deleted backup piece
    backup piece handle=/home/oracle/myo11g/autobackup/c-140043054-20090513-00 RECID=3 STAMP=686763268
    Deleted 2 objects

    posted @ 2009-05-13 15:47 Jcat 閱讀(339) | 評論 (0)編輯 收藏
    01555
    ORA-01555: snapshot too old?? ?回滾段不夠用了
    可以采取的措施有:
    1、應用程序盡量避免巨表的漫長查詢操作,改傳統的cursor游標為bulk collect;
    2、盡量程序中不要使用大事務量的增刪改操作,同時記得及時commit;
    3、加大undo表空間和加大undo的retention。

    10046
    Event 10046是oracle用于系統性能分析時的一個最重要的事件。
    posted @ 2009-04-23 20:33 Jcat 閱讀(256) | 評論 (0)編輯 收藏
    Ora s le

    74億美元呀,現在Oracle可以和18摸全面抗衡了!

    簡直就成了IT屆的 GE vs 西門子!

    oracle-sun.JPG


    ----收購后的格局----
    航母級:IBM? vs? Oracle+SUN
    軟件:Microsoft,SAP,RedHat,Sybase(小賽的級別是不夠放在這的,我覺得它最終也會走上被收購的道路)
    硬件:HP,Dell,Fujitsu


    ----預測----
    1. MySQL是生是死?
    Oracle是當今企業級數據庫的老大,MySQL是當今互聯網應用的老大。
    如果小O把小My干掉,并不代表小My的那部分市場會成為小O的;相反,如果小O能好好照顧小My,那簡直就無敵了。
    個人預測:75分,只要小O能夠保持一顆開放的心,小My應該能有很好的發展。

    2. Solaris是生是死?
    小O一直致力于發展Linux技術(比如他和小紅合作搞的Unbreakable Linux),是把Solaris拿來當補充,還是干掉?
    個人預測:60分,不會有太大發展,保持現狀。

    3. Java的發展方向?
    Oracle在很多方面都很需要Java,這是好的一面。
    但是Java作為一門技術,而不是一個產品,需要有一個中立的代表,SUN以前的態度還是不錯的。但小O和小I顯然是誓不兩立的,會不會導致Java世界的分裂?
    個人預測:70分,這個可能最難預測,實在不希望看到不好的結果。

    4. 硬件部分
    這是小O沒有的,但是不排除小O把它剝離賣出去。但我又覺得這種可能性很小,因為小O最不缺的就是錢,而且這是小O去和小I叫板的一大資本。
    個人預測:80分,以后Oracle也可以玩total solution的游戲了。



    ----關系----
    ? 和IBM,這回真的成為死死對頭了
    ? 和HP、Dell,選什么產品還是由市場決定的,小O總不能強買強賣SUN的服務器吧,還好吧
    ? 和RedHat,小O和小紅正在一起搞過Unbreakable Linux,我覺得小O會繼續搞下去
    ? 和Sybase,這回搞得三大主流操作系統(Windows、AIX、Solaris)都有自己的數據庫了,Sybase的數據庫將越來越難賣了
    ? 和SAP,Microsoft,跟這次收購沒太大關系,但震撼一定不小
    posted @ 2009-04-21 10:27 Jcat 閱讀(241) | 評論 (0)編輯 收藏
    --最多同時運行的JOB個數;如果太小,JOB就排隊等待;如果為0,就沒有JOB會被執行。
    SQL> show parameter job_queue_processes
    NAME??????????????????????????????????????? TYPE????????? VALUE
    --------------------------???????? ----------??? -------------
    job_queue_processes???????? integer ?? ????? 10


    --一個什么也不做的SP

    CREATE OR REPLACE PROCEDURE mytest
    IS
    BEGIN
    ?? ?NULL;
    END;

    --一個往表里寫數據的SP
    CREATE OR REPLACE PROCEDURE mytest
    IS
    BEGIN
    ?? ?insert into test_table values(...);
    END;

    --定時調用SP,10秒(86400秒=1天)
    SQL> VARIABLE job_id NUMBER;
    SQL> BEGIN
    ?????????? -- :job_id中的冒號表示冒號后面的是變量,類似SQL Server的@
    ?????????? DBMS_JOB.SUBMIT(:job_id, 'mytest;', sysdate, 'sysdate + 10 / 86400') ;
    ?????????? COMMIT;? --記得一定要commit哦
    ?????????? END;

    --查看剛才生成的Job ID
    SQL> set serveroutput on
    SQL> execute dbms_output.put_line(:job_id)? --這里倒是不需要commit,直接execute就好了
    318

    --查看所有Job
    ?select * from user_jobs;

    --刪除Job
    SQL> BEGIN
    ?????????? DBMS_JOB.REMOVE(123); --123是Job ID
    ?????????? COMMIT;
    ?????????? END;


    如果Job由于某種原因未能成功運行,Oracle將重試16次,之后如果還未能成功運行,將被標記為Broken。



    http://www.tkk7.com/Jcat/archive/2009/12/17/306315.html
    從10g開始,DBMS_SCHEDULER 逐步會替換掉 DBMS_JOB

    DBMS_JOB has been around forever, and now it is deprecated. Although DBMS_JOB still exists in 10g and 11g, but only for backward compatibility. No new features are being added to dbms_job and you will likely quickly run into its limitations. Oracle recommends the use of DBMS_SCHEDULER in releases 10g and up. DBMS_SCHEDULER is a much more robust package and fully-featured than DBMS_JOB. To use the DBMS_SCHEDULER package a user must be granted the CREATE JOB privilege.

    After replace DBMS_JOB with DBMS_SCHEDULER for all jobs successful, the job_queue_processes parameter can now be set to zero.
    SQL&gt; alter system set job_queue_processes=0;

    posted @ 2009-04-16 15:42 Jcat 閱讀(775) | 評論 (0)編輯 收藏
    登錄? shell> mysql -u用戶名 -p密碼

    查看數據庫? mysql> show databases;
    至少會顯示出兩個數據庫mysql和test,這是系統自建的,供大家練習用。

    使用數據庫? mysql> use 數據庫名

    查看表? mysql> show tables;

    查看表結構? mysql> desc 表名;

    備份數據庫? shell> mysqldump -uroot -p密碼 數據庫名 > 備份的文件路徑
    posted @ 2009-03-27 22:33 Jcat 閱讀(293) | 評論 (0)編輯 收藏
    SunOS是Sun的操作系統最初叫法,SunOS主要是基于BSDUnix版本;
    SunOS 5.0開始,SUN的操作系統開發開始轉向System V Release 4,并且有了新的名字叫做Solaris2.0
    Solaris 2.6以后,SUN刪除了版本號中的"2,因此,SunOS 5.10就叫做Solaris 10

    最后"SunOS"這個詞被用做專指Solaris操作系統的內核;而Solaris被認為是由SunOS,圖形化的桌面計算環境, 以及它網絡增強部分組成。
    ?
      
    ---Solaris與Sunos的版本轉換---
    Solaris 10 = SunOS 5.10
    Solaris 9 = SunOS 5.9
    Solaris 8 = SunOS 5.8
    Solaris 7 = SunOS 5.7

    Solaris 2.6 = SunOS 5.6
    Solaris 2.5 = Sunos 5.5

      

    ------------------
    Solaris也有分服務器版和個人版,它們分別是:
    ?? 服務器版:sparc
    ?? 個人版:x86
    雖然Solaris在SPARC上擁有強大的處理能力和硬件支持,但是在Intel x86上性能卻未如人意。
    posted @ 2009-03-13 12:19 Jcat 閱讀(809) | 評論 (2)編輯 收藏
    為了跟老外聊天,裝了個Skype。后來發現可以用來打IP電話,超值!

    skype.JPG

    這東西很適合我們這些北漂專門用來給家里打長途:

    1. 地點固定,我都是周末的晚上在家往老家打電話,肯定是在電腦前的
    2. 因為Skype不分本地長途,用來打長途更體現優勢
    3. 通話時間長,我一般一周打一次,每次30分鐘左右,就更更體現優勢了


    不適合打本地電話:

    1. 撥打的地點都是不可預期的,總不能要電話了,還得把電腦打開、上網
    2. 上班的時候倒是都在電腦前,但可以用公司的座機嘛,免費的
    3. 省錢的優勢不明顯:移動2.5;固話2.2角(管前三分鐘),之后1.1



    Sample: 每月往家打100分鐘(一周一次,每次25分鐘)
    ?? Skype=100*0.075+3=10.5元
    ?? 手機9點前=100*0.35=35元
    ?? 手機9點后=100*0.22=22元

    posted @ 2009-02-27 13:52 Jcat 閱讀(369) | 評論 (0)編輯 收藏
    基金的買賣時間和大盤一樣,但是網上一般可以隨時下單;如果是閉盤時間下的單,就順延到下一個開盤日購買。

    今天看到的基金凈值,其實是昨天的值。
    今天購買的基金,其凈值明天才能看見。

    下午3點以前購買基金,算作今天購買;3點以后,算作明天購買,即凈值要在后天才能看見。

    基金管理費:一般為1%左右,每天根據資產總額提取,凈值是已經提取了管理費和托管費后的價格。

    ---------------------------

    基民首先要弄清楚“認購”與“申購”的區別。
    1. 認購是針對新基金而言的,這個時候所認購的基金并不產生份額凈值,成交價以1元面值為基準。
    2. 申購則指在基金成立后,投資者申請購買基金份額的行為。

    無論是認購還是申購,交易時間內投資者可以提交認/申購申請。
    投資者只有在交易日下午3點收盤之前提交申購請求才能在當日生效,并可能成功交易。

    一般來說,投資者在份額發售期內已經正式受理的認購申請不得撤銷。
    對于申購申請,投資者只有在當日 15:00前提交撤銷申請,才能予以撤銷。

    在基金申購的過程中,投資者面臨著一個“未知成交價”的交易風險,這是因為申購價格以當日的基金份額凈值為基準進行計算,而成交當日的基金份額凈值只能在下午3點收盤之后誕生,這個凈值一般會在下一個交易日開始之前公告。

    ------------------------------

    收購費率是有折扣的(根據不同的銀行),如易方達前端申購費率是0.8%,但是如果用廣發卡費率是0.3%,1w元能省50元呢。
    "優惠費率不按金額分檔,持有廣東發展銀行理財通卡的個人投資者的優惠認購費率或申購費率統一為0.3%。"-- From 易方達
    posted @ 2009-02-22 17:18 Jcat 閱讀(440) | 評論 (2)編輯 收藏
    Habit 1: Be Proactive
    Change starts from within, and highly effective people make the decision to improve their lives through the things that they can influence rather than by simply reacting to external forces.

    Habit 2: Begin with the End in Mind
    Develop a principle-centered personal mission statement. Extend the mission statement into long-term goals based on personal principles.

    Habit 3: Put First Things First
    Spend time doing what fits into your personal mission, observing the proper balance between production and building production capacity. Identify the key roles that you take on in life, and make time for each of them.

    Habit 4: Think Win/Win
    Seek agreements and relationships that are mutually beneficial. In cases where a "win/win" deal cannot be achieved, accept the fact that agreeing to make "no deal" may be the best alternative. In developing an organizational culture, be sure to reward win/win behavior among employees and avoid inadvertantly rewarding win/lose behavior.

    Habit 5: Seek First to Understand, Then to Be Understood
    First seek to understand the other person, and only then try to be understood. Stephen Covey presents this habit as the most important principle of interpersonal relations. Effective listening is not simply echoing what the other person has said through the lens of one's own experience. Rather, it is putting oneself in the perspective of the other person, listening empathically for both feeling and meaning.

    Habit 6: Synergize
    Through trustful communication, find ways to leverage individual differences to create a whole that is greater than the sum of the parts. Through mutual trust and understanding, one often can solve conflicts and find a better solution than would have been obtained through either person's own solution.

    Habit 7: Sharpen the Saw
    Take time out from production to build production capacity through personal renewal of the physical, mental, social/emotional, and spiritual dimensions. Maintain a balance among these dimensions.

    ?

    posted @ 2008-12-25 16:35 Jcat 閱讀(324) | 評論 (0)編輯 收藏
    很多時候,在我們進行數據庫操作時,比如drop user,drop table等,經常會遇到這樣的錯誤:
    ORA-00604: error occurred at recursive SQL level 1 .

    關于Recursive SQL錯誤:
    我們知道,當我們發出一條簡單的命令以后,Oracle數據庫要在后臺解析這條命令,并轉換為Oracle數據庫的一系列后臺操作,這些后臺操作統稱為遞歸SQL。
    比如create table這樣一條簡單的DDL命令,Oracle數據庫在后臺,實際上要把這個命令轉換為對于obj$,tab$,col$等底層表的插入操作。Oracle所作的工作可能比我們有時候想的要復雜的多.。

    所以對于這樣的提示,很多時候是沒有絲毫用處的。

    這時,我們需要更詳細的信息,sql_trace就是一個好辦法。
    sql_trace實際上就是Oracle內部事件10046的第一個級別,即level=1。通過event 10046, 我們可以得到詳細的數據庫會話的信息,每個會話究竟在干什么,在等什么。通過對這個事件的學習,我們可以深入的理解和調整Oracle。


    結合eygle的文章整理的,SQL Trace更詳細的用法請見原文


    ----------

    Event 10046是oracle用于系統性能分析時的一個最重要的事件。當激活這個事件后,將通知oracle kernel追蹤會話的相關即時信息,并寫入到相應trace文件中。這些有用的信息主要包括sql是如何進行解析,綁定變量的使用情況,話中發生的等待事件等。
    Trace文件將會存放在 user_dump_dest 所指向的目錄,如,C:\ent\oracle\admin\o10g01\udump

    Event 10046可分成不同的級別(level),分別追蹤記錄不同程度的有用信息。對于這些不同的級別,應當注意的是向下兼容的,即高一級的trace信息包含低于此級的所有信息。
    ??? level 1:跟蹤sql語句,包括解析、執行、提取、提交和回滾等。
    ??? level 4:包括變量的詳細信息
    ??? level 8:包括等待事件
    ??? level 12:包括綁定變量與等待事件
    其中,level 1相當于打開了sql_trace。

    在當前會話啟用event,可以利用alter session + 事件名稱 + level:
    SQL> alter session set event ‘10046 trace name context forever, level 12’;

    關閉當前會話的event:
    SQL> alter session set event ‘10046 trace name context off’;

    這里應當值得一提的是,TRACE將消耗相當的系統資源,因此我們在使用TRACE的時候應當慎重。對于正式的系統,應當只在必要的時候進行TRACE操作,并且應當及時關閉。
    posted @ 2008-12-19 15:19 Jcat 閱讀(256) | 評論 (0)編輯 收藏
    孫悅和菲爾.jpg
    湖人vs雄鹿,第四節垃圾時間,孫悅終于替補出場。

    孫悅失誤了隊友安慰他.jpg
    上來就3個犯規,1個運球失誤,顯得很緊張,身體僵硬。又失誤了,隊友安慰他。
    然后1個三分的機會,沒進,動作很僵硬。

    孫悅投進NBA第一球.jpg
    終于有個中距離的機會,孫悅投中了,全場鼓掌!
    后來又有一個反擊的機會,孫悅籃下打板進了,繼續鼓掌!


    恭賀菜鳥的第一次NBA亮相!
    posted @ 2008-12-08 13:07 Jcat 閱讀(295) | 評論 (1)編輯 收藏
    2008

    11-25 XX is a brilliant scientist.

    11-26 She used to knit her brows when meeting with a difficult problem.

    11-27 The tea bubbled in the pot.

    11-28 I budgeted for a daily expenditure of 15 dollars.

    11-29 The elephant lowered its huge bulk.

    11-30 She bumped her arm against the door.

    12-1 He has lost the bunch of keys and cannot unlock the door.

    12-2 We collected a bundle of old clothes to be given to them.

    12-3 He has found a job in the Washington Bureau of the Associated Press.

    12-4 Whenever I have to stand up to make a speech, I get butterflies in my stomach.

    12-5 How much does it cost for the first cabin.

    12-6 Put all these documents into a filing cabinet.

    12-7 The messages have come by cable.

    12-8 He has calculated the advantage and disadvantage before making the decision.

    12-9 The calendar shows that Christmas will fall on a Monday.

    12-10 He announced that he would campaign for the senate.

    12-11 The Princeton campus has developed into one of the most attractive school in the USA.

    終于還是沒堅持下來,看來堅持不懈做一件很小的事也是很難的。



    posted @ 2008-12-03 12:07 Jcat 閱讀(290) | 評論 (0)編輯 收藏
    Oracle Database的大版本號由兩部分組成:數字+字母,數字自然是大版本號,字母則是代表了這個版本的“中心思想”

    8i(1998),9i(2001):那時候正好互聯網興起,i就代表internet(網絡)

    10g(2003),11g(2007):現在主推分布式計算,g就代表grid(網格)



    另外,還有個11i,這容易引起混淆,其實11i是指Oracle EBS(E-Business Suite電子商務套件)的版本號,其實就是Oracle ERP。(這好像跟Oracle Database沒什么必然聯系,我也不知道這個i代表什么)

    這也說明Oracle不等于Oracle Database。平常我們說“Oracle”,一般都是指Oracle Database,當然這是它最著名的產品;不過,其實Oracle早就已經不是一家數據庫廠商了,而是航母級廠商,東收西購,啥都有了。


    我見過這樣的問題:“
    從版本命名來看8i-9i-10g-11i,是不是意味著grid只是曇花一現?”顯然這就是混淆了Oracle Database和Oracle ERP。



    ----以下是一些參考----
    In 1998, Oracle announced Oracle8i, which is sometimes referred to as Version 8.1 of the Oracle8 database. The i was added to denote added functionality supporting Internet deployment in the new version. Oracle9i followed, with Application Server available in 2000 and Database Server in 2001.

    Oracle Database 10g was introduced in 2003; the g denotes Oracle's focus on emerging grid deployment models.

    Oracle 11i refers to the Oracle ERP Application Suite (often called Oracle E-Business Suite) and really has nothing to do with the database. The latest release (12) will be referred to as 12i. The confusing part is that Oracle used to call its database "i" for "internet" in releases 8 and 9, but now calls the database "g" for "grid". So, to summarize, Oracle 11i refers to the apps and Oracle 11g refers to the database




    posted @ 2008-11-17 22:32 Jcat 閱讀(1342) | 評論 (1)編輯 收藏
    Groovy把最常用的東西都設置成default了,經常可以省這省那的(比如括號、分號、public等);又加上閉包,初學的時候,有些代碼,一眼望去,都分不清是方法、是類、還是閉包。
    這里先簡單總結一下常用的修飾符。

    package?jcat.bit.g

    /*
    修飾符有三類:
    1.?static
    2.?作用域:public(默認),?private,?protected.
    3.?類型:def(默認,動態),?void(無類型,靜態),?其它常規靜態類型
    */
    class?Test?{
    ????
    static?def?a_static_def?=?'a_static_def'
    ????
    static?a_static?=?'a_static'
    ????def?a_def?
    =?'a_def'

    ????
    static?void?main(strs)?{
    ????????println?a_static_def
    ????????println?a_static

    ????????println?t_static_def()
    ????????println?t_static()


    ????????
    new?Test().with?{
    ????????????println?a_def

    ????????????println?t_public_def()
    ????????????println?t_public()
    ????????????println?t_def()
    ????????}
    ????}

    ????
    static?def?t_static_def()?{?//?def?=?可以返回任何類型,包括void
    ????????return?"t_static_def"
    ????}

    ????
    static?t_static()?{?//?有其它修飾符可以省略def(默認public?+?def
    ????????return?"t_static"
    ????}

    ????
    public?def?t_public_def()?{
    ????????
    return?"t_public_def"
    ????}

    ????
    public?t_public()?{?//?默認def
    ????????return?"t_public"
    ????}

    ????def?t_def()?{?
    //?至少要有一個修飾符,所以這個def不能省略;?且默認public
    ????????return?"t_def"
    ????}

    ????
    static?void?t_static_void()?{
    ????????
    //return?"t_static_void"????//?cannot?return?an?object?from?a?method?that?returns?"void"
    ????}
    }
    posted @ 2008-11-10 12:30 Jcat 閱讀(1446) | 評論 (0)編輯 收藏

    用JDBC操作數據庫,對比一下Java和Groovy。

    環境:SQL Server 2000 (記得打補丁SP4,不然JDBC訪問會報錯)
    JDBC Driver:msbase.jar,mssqlserver.jar,msutil.jar

    Java版

    package ?jcat.bit.java;

    import ?java.sql. * ;

    public ? class ?JDBC?{
    ????
    public ? static ? void ?main(String[]?args)? throws ?ClassNotFoundException,?SQLException?{
    ????????Class.forName(
    " com.microsoft.jdbc.sqlserver.SQLServerDriver " );
    ????????Connection?conn?
    = ?DriverManager.getConnection(
    ????????????????
    " jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs " ,
    ????????????????
    " sa " ,? "*** " );

    ????????Statement?stmt?
    = ?conn.createStatement();
    ????????ResultSet?rs?
    = ?stmt.executeQuery( " select?top?10?*?from?authors " );

    ????????
    while ?(rs.next())?{
    ????????????System.out.println(rs.getString(
    2 ) + " ? " + rs.getString( 3
    ));??//?數id
    ????????}


    ????????rs.close();
    ????????stmt.close();
    ????????conn.close();

    ????}
    }



    Groovy版
    package?jcat.bit.groovy

    import?groovy.sql.Sql

    class?JDBC?{
    ????
    static?void?main(args)?{
    ????????Sql?sql?
    =?Sql.newInstance(
    ????????????????
    "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs",
    ????????????????
    "sa",?"***",
    ????????????????
    "com.microsoft.jdbc.sqlserver.SQLServerDriver")
    ????????sql.eachRow(
    "select?top?10?*?from?authors")?{row?->
    ????????????println?row.au_fname?
    +?"?"?+?row.au_lname????//直接用數據庫的字段名就可以操作結果集了,不用去數id
    ????????}

    ????}
    }


    總結
    1. 建立查詢,差別不大,都是JDBC那一套;Groovy不用處理異常
    2. 處理查詢結果,Groovy因為有閉包,處理這些迭代問題很方便
    3. Groovy不用關閉
    posted @ 2008-11-07 15:02 Jcat 閱讀(1670) | 評論 (3)編輯 收藏

    1. 閉包代表(定義)了一段代碼(操作):光看這一句,其實方法也能實現相同的功能呀。
    2. 閉包可以作為方法的參數:這才是閉包的特殊之處和真正意義。


    下面演示一個只有閉包能做,方法做不到的例子。

    方法的作用是提煉共性,再代之以不同的參數。即對不同的“數據”進行相同的“操作”。從3個loop可以看出:
    ????Comm1:相同的數據
    ????Comm2:相同的for循環
    ????Diff1:循環體內執行的操作不同

    Comm1很好搞定,參數aa就是提煉出的共性
    Comm2看似是共性,卻很難提煉,因為for循環和循環體內的操作實際是一個整體;Comm2被Diff1糾纏,3個loop是完全不同的3組操作,無法提煉。

    比如,如果現在想要按照奇數循環,只能依次改動三個循環。?

    int []?aa? = ?[ 1 ,? 2 ,? 3 ,? 4 ,? 5 ,? 6 ]

    // ?loop1
    for ?( int ?i? = ? 0 ;?i? < ?aa.length;?i ++ )?{
    ????println?aa[i]
    }

    // ?loop2
    for ?( int ?i? = ? 0 ;?i? < ?aa.length;?i ++ )?{
    ????print?aa[i]
    }

    // ?loop3
    for ?( int ?i? = ? 0 ;?i? < ?aa.length;?i ++ )?{
    ????print?aa[i]?
    + ? ' ? '
    }
    ????????

    // ?loop1
    for ?( int ?i? = ? 0 ;?i? < ?aa.length;?i? += ? 2 )?{
    ????println?aa[i]
    }

    // ?loop2
    for ?( int ?i? = ? 0 ;?i? < ?aa.length;?i? += ? 2 )?{
    ????print?aa[i]
    }

    // ?loop3
    for ?( int ?i? = ? 0 ;?i? < ?aa.length;?i? += ? 2 )?{
    ????print?aa[i]?
    + ? ' ? '
    }


    下面我們看看閉包的強大之處,Comm1和Comm2都被很好的封裝在了loop方法里;Diff1則作為參數(閉包)傳入loop方法。

    static?void?main(String[]?a)?{
    ????
    int[]?aa?=?[1,?2,?3,?4,?5,?6]

    ????loop(aa)?{?println?it }
    ??? loop(aa)?{?print?it?}???
    ??? loop(aa)?{?print?it?
    +?'?'?}
    }
    如果我們想要改變循環的方式,只需要改一處
    static?void?loop(int[]?aa,?Closure?c)?{
    ????
    for?(int?i?=?0;?i?<?aa.length;?i++)?{
    ????????c.call(aa[i])
    ????}
    ????println?
    '?'
    }
    static?void?loop(int[]?aa,?Closure?c)?{
    ????
    for?(int?i?=?0;?i?<?aa.length;?i?+=?2)?{
    ????????c.call(aa[i])
    ????}
    ????println?
    '?'
    }

    總結,閉包本身并沒什么難點,關鍵是怎樣合理的設計一個接受Closure類型參數的方法。從GDK的方法也可以看出,大多數接受閉包的方法都是和數組迭代有關(也即循環)。
    posted @ 2008-11-07 02:04 Jcat 閱讀(1546) | 評論 (2)編輯 收藏

    Definition

    ??? /*
    ????????1.?變量是用來裝“數據”的,閉包就是用來裝“操作”的
    ????????2.?和定義一個方法一樣,閉包也可以有入參
    ???????
    */
    ????????Closure?p?
    = ?{x? ->
    ????????????print?x?
    + ? ' ? '
    ????????}
    ????????[
    1 ,? 2 ,? 3 ].each(p)

    ????????[
    4 ,? 5 ,? 6 ].each({x? -> ? // ?閉包是可以匿名的
    ????????????print?x? + ? ' ? '
    ????????})

    ????????[
    7 ,? 8 ,? 9 ].each?{x? -> ? // ?括號是可以省略的
    ????????????print?x? + ? ' ? '
    ????????}

    ????????[
    10 ,? 11 ,? 12 ].each?{? // ?it是默認的參數名字,所以這里連入參的定義都省了
    ????????????print?it? + ? ' ? '
    ????????}


    Using

    package?jcat.bit

    class?Test?{
    ????
    /*
    ????1.?閉包是對象,是Closure類的實例,所以:
    ????????1)可以在類里定義Closure類型的屬性
    ????????2)可以在方法里定義Closure類型的變量
    ????????3)可以定義一個方法,接收Closure類型的參數
    ????2.?閉包又有方法特質,畢竟它裝的是“操作”,甚至可以像調用方法一樣調用閉包
    ?????
    */

    ????
    static?final?Closure?PRINT_STR?=?{??//?屬性(類變量)
    ????????println?it
    ????}


    ????
    static?void?main(String[]?a)?{
    ????????
    /*
    ????????閉包類似Java的內部類,區別是閉包只有單一的方法可以調用,但可以有任意的參數,
    ????????閉包用“{}”括起,“->”前面是參數,后面是處理語句,可以直接調用,也可以使
    ????????用call調用。不管那種調用,最后groovy編譯器都會把編譯成對doCall方法的調用,
    ????????這是groovy對閉包的一個隱藏方法。
    ?????????
    */
    ????????PRINT_STR(
    "像方法一樣調用")
    ????????PRINT_STR.call(
    "作為Closure的實例,再調用相應的方法")


    ????????Closure?printLength?
    =?{String?s?->??//?局部變量
    ????????????println?s.length()
    ????????}
    ????????printLength(
    "AAA")

    ????????
    /*
    ????????通常,操作是死的,我們能動態代入的是“數據”。
    ????????閉包使得我們可以動態的代入一段“操作”。
    ????????“閉包是可以用作方法參數的代碼塊。”
    ?????????
    */
    ????????closureAsParameter(
    null,?printLength)
    ????????closureAsParameter(
    "BBB",?PRINT_STR)
    ????}

    ????
    static?void?closureAsParameter(String?s,?Closure?c)?{
    ????????
    if?(s?!=?null)?{
    ????????????c.call(s)
    ????????}
    ????}
    }



    -----------------------------------------------------------------
    附上一個Java的匿名內部類的例子,用來和閉包對比一下。
    package?jcat.bit;

    public?class?AnonymousInnerClass?{
    ????
    public?static?void?main(String[]?args)?{
    ????????AbsClass?a?
    =?new?AbsClass()?{
    ????????????
    public?void?foo(String?s)?{
    ????????????????System.out.println(s);
    ????????????}
    ????????};

    ????????a.foo(
    "ABC");

    ????????AbsClass?b?
    =?new?AbsClass()?{
    ????????????
    public?void?foo(String?s)?{
    ????????????????System.out.println(s.length());
    ????????????}
    ????????};
    ????????b.foo(
    "ABC");
    ????}
    }

    abstract?class?AbsClass?{
    ????
    public?abstract?void?foo(String?s);
    }
    posted @ 2008-11-06 18:50 Jcat 閱讀(354) | 評論 (0)編輯 收藏
    2008

    10-25 Bind the thief's arms with rope.

    10-26 Beer tests bitter.

    10-27 This pocketknife has two blades.

    10-28 If you don't do the work well, you will incur blame.

    10-29 My mind was a total blank.

    10-30 A blast of wind stirred up the dust.

    10-31 The two brothers bled for their country and died happily.

    11-1? His manner was a blend of friendliness and respect.

    11-2 He gets an awful bloody nose.

    11-3 The roses are in bloom.

    11-4 The mother often boasts to the neighbors about the success of her children.

    11-5 It is very bold of them to venture to travel by sea.

    11-6 The bolts are all tight enough.

    11-7 The terrorists planted a bomb in the building.

    11-8 Comment interests form a bond between us.

    11-9 I've booked you in at the hotel.

    11-10 China is having a great boom in real estate.

    11-11 This new technology will boost the production by 30% next year.

    11-12 The criminal escaped over the border.

    11-13 I am bored by his tedious talk.

    11-14 The football bounced off the goal-post.

    11-15 You are bound to succeed.

    11-16 The new boundaries of the country were fixed after war.

    11-17 The arrow was still held in the bow.

    11-18 The brake didn't work.

    11-19 He has his own brand of humour.

    11-20 He has traveled the length and breadth of China.

    11-21 Tom was bred up as a sailor.

    11-22 We enjoyed the cool breeze that came from the lake.

    11-23 Next Sunday Alvon will become AFu's bride.

    11-24 Be brief and to the point.
    posted @ 2008-11-05 23:53 Jcat 閱讀(296) | 評論 (0)編輯 收藏
    最近BI的項目不忙,抽空懷念了一下編程技術:

    1. <Flex 3> 同事給了我份Flex的教程,把前三章看了一下,有了初步的了解;FlexBuilder也用了一把,不錯,效果很絢麗。

    2. <IDEA 8> 恰逢IDEA 8 EAP (Early Access Preview)發布,搞了一個裝上試試。主要試了試對Flex的支持,感覺還有待提升。另外IDEA對內存的消耗似乎越來越多了,沒做深入體驗。

    3. <Grails 1.0.3> 拿出了小二去年送我的生日禮物《Grails權威指南》,翻了翻,Hello World一會就做好了。打算再進一步體驗一下。
    posted @ 2008-11-04 22:04 Jcat 閱讀(198) | 評論 (0)編輯 收藏
    Boa
    這是飛俠兄做的Flex網站,很好玩。
    posted @ 2008-10-22 21:14 Jcat 閱讀(195) | 評論 (0)編輯 收藏
    2008

    國慶這個假放的,一直沒背單詞,又要慢慢追趕了。


    9-25
    All bacteria are larger than viruses.

    9-26
    The thief has gotten into the room off the balcony.

    9-27
    The treaty bans all nuclear tests.

    9-28
    On their way back home, they encountered a band of robbers.

    9-29
    We heard the bang of a gun.

    9-30
    The company went bankrupt.

    10-1
    The patriots hold aloft the banner of independence.

    10-2
    He opened a snake bar.
    They barred the street to traffic.

    10-3
    The path leads to a bare hill.

    10-4
    He barely remembered anything she has said that day.

    10-5
    I make a fair bargain with the shopkeeper.

    10-6
    The dog always barks at strangers.

    10-7
    The horses seemed to be satisfied with the comfortable barn.

    10-8
    The river is a natural barrier between these two nations.

    10-9
    Baseball is the national sport of the USA.

    10-10
    Charity towards others is the basis of her philosophy.

    10-11
    The garden was bathed in moonlight.

    10-12
    They were faced with a battery of questions.

    10-13
    She spent her summer vacation in Sanya bay.

    10-14
    Beams support the roof of a house.

    10-15
    I cannot bear BB's nagging any longer.

    10-16
    He has a dense beard.

    10-17
    I have lost my bearings in all this mass of facts.

    10-18
    XX saves money on behalf of BB.

    10-19
    He behaves respectfully toward the elderly.

    10-20
    She was beloved of all who knew her.

    10-21
    Fresh air and good food are beneficial to one's health.

    10-22
    I'll bet you that they will win the next game.

    10-23
    The service included some readings from the Bible.

    10-24
    The dealers are bidding against each other at the auction.
    posted @ 2008-10-14 00:20 Jcat 閱讀(782) | 評論 (2)編輯 收藏
    2008

    8-25
    I saw the arrest of the thief.

    8-26
    The artificial flowers are quite beautiful.

    8-27
    Please assemble everybody in my office at 3'o clock.

    8-28
    It is hard to assess the impact of the war.

    8-29
    The firm's assets were taken over by the bank.

    8-30
    We assigned tomorrow morning for our meeting.

    8-31
    She spent most of her time associating with her friends.


    9-1
    I assume that you have heart the news.


    9-2
    I proceeded alone on the assumption that he would help.

    9-3
    He was assured a well paying job upon graduation.

    9-4
    Chinese athletes won many golden medals in the Olympic Games.


    9-5
    Attach a label to your suitcase.

    9-6

    Finally he attained his goal.

    9-7
    Her work attitude was poor.

    9-8
    The defendant was represented by his attorney.

    9-9
    What a singularly attractive lady!

    9-10
    My mother attributes her good health to careful living.

    9-11
    Many works of literature and art have a wide and devoted audience.

    9-12
    You will get an automatic increase in pay every year.

    9-13
    Some sailboats have auxiliary engines.

    9-14
    There are no tickets available for Friday's performance.

    9-15
    NY's avenue is famous for its advertising industry.

    9-16
    He avoid answering my question.

    9-17
    We have awaited your coming for days.

    9-18
    The university awarded him an honorary degree.

    9-19
    We are fully aware of the gravity of the situation.


    9-20
    I feel awful this morning.

    9-21

    He feel awkward with women.


    9-22
    He was a reporter by background.

    9-23
    He made a backward step.

    9-24
    Bacon and eggs are my favourite foods.
    posted @ 2008-08-27 23:12 Jcat 閱讀(340) | 評論 (2)編輯 收藏
    世界強隊從來不是靠抽簽抽出來的,中國男籃,我愛你!

    “進場的時候,我們把手放在一起,把自己交給這支球隊,同時也把這支球隊扛在自己肩上,我們所有的人都在為這個球隊努力。” -- 大大的姚明
    posted @ 2008-08-16 21:56 Jcat 閱讀(164) | 評論 (0)編輯 收藏
    中國體操男團,背負四年的壓力,重獲金牌,超感人;

    中國男籃vs西班牙,把世錦賽冠軍逼到打加時,雖敗猶榮;

    中國男足都是Sha Bi,窩囊廢。
    posted @ 2008-08-12 18:54 Jcat 閱讀(226) | 評論 (0)編輯 收藏
    又堅持了一個月,中間短了4、5天,后來靠每天多背一個,給補了回來。


    7/25/2008
    It is very essential to analyze the causes of his failure.

    7/26/2008
    This is an old family firm founded by their French ancestor.

    7/27/2008
    Can you anchor the boat in this storm?

    7/28/2008
    His family has lived in this ancient city for more than two centuries.

    7/29/2008
    The roof is at an angle of 120 degrees to the walls.
    I would like to hear your angle in this dispute.

    7/30/2008
    The whole nation celebrated cheerfully the fiftieth anniversary of the founding of the PRC.

    7/31/2008
    These flies are annoying me.
    We can annoy the enemy by air raids.

    8/1/2008
    BB's thesis was published in the college annual.

    8/2/2008
    We are not anticipating that there will be much trouble.

    8/3/2008
    The antique dealer has a display of his valuable antiques.

    8/4/2008
    He caused his wife great anxiety by driving a long distance alone.

    8/5/2008
    It's too late now, anyhow.

    8/6/2008
    It was apparent that they all understood.

    8/7/2008
    We are appealing for money to build a teacher's club.

    8/8/2008
    He had no appetite to fight.

    8/9/2008
    He won standing applause after he ended his speech.

    8/10/2008
    This is an appliance for opening cans.

    8/11/2008
    That pretty lady is a hopeful applicant for the position.

    8/12/2008
    They applied to return to China.

    8/13/2008
    They arranged an appointment for next week.

    8/14/2008
    We really appreciate the peace and quite of the countryside.
    They deeply appreciate his thoughtfulness.

    8/15/2008
    The professor is easy to approach

    8/16/2008
    It is appropriate that you should save some money in case you lose your job.

    8/17/2008
    The decision met the committee's approval.

    8/18/2008
    His statement is approximate to the truth.

    8/19/2008
    One should not make an arbitrary decision as to what to do in the future.

    8/20/2008
    DXP is called the general architect of the construction of socialist modernizations in China.

    8/21/2008
    Don't argue with me, just do as you are told.

    8/22/2008
    At later stage, there arose an new problem which seemed insoluble.

    8/23/2008
    We aroused him from his deep sleep.

    8/24/2008
    She has arranged numerous contacts between? XX and BB.
    posted @ 2008-07-28 22:23 Jcat 閱讀(345) | 評論 (1)編輯 收藏
    <What's Hash>
    Hash,一般翻譯做“散列”,也有直接音譯為“哈希”的。

    我們通常說的Hash,其實指的是Hash算法(即散列算法):把任意長度的輸入,通過Hash算法,變換成固定長度的輸出(即Hash值、散列值)。

    Hash算法有多種實現形式,比如MD5、SHA1,這里就不對算法本身進行討論了。重點談談Hash算法的特性和作用吧:
    ??? 1)Hash是一種壓縮映射:散列值的長度通常遠小于輸入的長度(比如emule,任意大小是視頻文件,都可以映射成一個固定長度的字符串,它就相當于這個文件的信息摘要)
    ??? 2)不同的輸入可能會Hash成相同的輸出:這是一個小概率事件,且采用安全性高的Hash算法時,兩個不同的輸入幾乎不可能得到相同的Hash結果。
    ??? 3)與加密算法不同,Hash算法是一個不可逆的單向函數,不可能從散列值來唯一的確定輸入值。



    <What's Hash Table>

    0. 在下面的討論中,我們將用到三國這個例子:假設我們要做個存儲結構,需要存儲下來三國中的英雄,以及他們的詳細信息。我們用他們的名字來作為存儲的關鍵值,例如:劉備,關羽,張飛,曹操,孫權...n。

    1. 一般的表
    ??? name?? ?age?? ?身高?? ?體重
    ??? 劉備?? ?30?? ?175?? ?60
    ??? 關羽?? ?28?? ?190?? ?80
    ??? 張飛?? ?27?? ?185?? ?80
    ??? ...n

    這時,如果我們想要查找某個英雄,就需要一邊遍歷表,一邊對名字進行比較。它的時間復雜度為O(n)--線性階。

    總結:記錄在結構中的相對位置和記錄的關鍵字之間不存在確定的關系,在結構中查找記錄時需進行一系列和關鍵字的比較,查找的效率與比較次數密切相關。

    2. 數組
    ??? 1)通過地址的訪問方式(數組):Array[2],這里2就是它的“物理”地址,找到2所對應的內容是通過“直接定位”,而不是“遍歷比較”。所以,在所有的線性數據結構中,數組的定位速度最快。它的時間復雜度為O(1)--常熟階。

    ??? 這時,我們會想,那我們把劉-關-張-...n,按照1-2-3-...n的順序放在一個數組里(數組的內容就是這個英雄的對象)不就可以直接定位了?
    ??? arrayid?? ?(name?? ?age?? ?身高?? ?體重)
    ??? 1?? ???? ??? (劉備?? ?30?? ?175?? ?60)
    ??? 2?? ???? ??? (關羽?? ?28?? ?190?? ?80)
    ??? 3?? ???? ??? (張飛?? ?27?? ?185?? ?80)
    ??? ...n


    ??? 2)但是:
    ??? ??? a)可你憑什么說劉=1,關=2呢?(顯然不是叫你用拼音或者筆畫排序)
    ??? ??? b)我們查找的時候,不可能用arrayid作為查找條件(那還查個P呀),怎樣通過name=關羽,“計算”得到arrayid=2呢?


    3. 散列表:其主要目的是用于解決數據的快速定位問題,也即,怎樣通過關鍵字,計算(而不是遍歷比較)得到物理地址。

    1)存放時
    ??? Hash(劉備)=13
    ??? Hash(關羽)=7
    ??? Hash(張飛)=26
    ??? ...n


    ??? arrayid?? ?(name?? ?age?? ?身高?? ?體重)
    ??? ...
    ??? 7?? ???? ??? (關羽?? ?28?? ?190?? ?80)
    ??? ...
    ??? 13?? ??? ?? (劉備?? ?30?? ?175?? ?60)
    ??? ...
    ??? 26?? ?????? (張飛?? ?27?? ?185?? ?80)
    ??? ...n


    ??? 我們也可以看出:
    ??? a)散列,數據并非緊湊的、按順序存入的:我們可以先在13的位置存上劉備,再在7的位置存上關羽;有些位置還可能一直是空的。
    ??? b)空間換時間:因為散列,顯然數組的大小要大于實際實際數據的數量。比如,即使我們只存劉關張3個人,我們也需要一個至少26的數組。

    2)查找時,就很簡單了
    ??? Aarry[Hash(關羽)]=Array[7]

    3)當然實際的hash算法,要比上述復雜,比如
    ??? “把Key通過Hash算法轉換成一個整型數字,然后就將該數字對數組長度進行取余,取余結果就當作數組的下標,將value存儲在以該數字為下標的數組空間里;
    ??? 而當使用哈希表進行查詢的時候,就是再次使用哈希函數將key轉換為對應的數組下標,并定位到該空間獲取value,如此一來,就可以充分利用到數組的定位性能進行數據定位。”

    4)Hash沖突:前面說了,不同的輸入是有可能hash成相同的輸出的
    ??? 如果Hash(關羽)=Hash(張飛)=250,我們豈不是在存儲過程中會遇到麻煩,怎么安排他們二位的地方呢?(總不能讓二位打一架,誰贏了誰呆在那吧),這就需要一個解決沖突的方法。
    ??? 先存儲好了關羽,當張飛進入系統時會發現關羽已經是250了,那咱就加一位,251得了。我們查找張飛的時候也是,一看250不是張飛,那就加個1,就找到了。
    ??? 更極端地,如果這時Hash(趙云)=251,張飛已經早早占了他的地方,那就再加1存到252唄。呵呵,這時我們會發現,當哈希函數沖突發生的機率很高時,可能會有一群英雄在250這個值后面扎堆排隊。要命的是查找的時候,時間算法復雜度早已不是O(1)了。所以我們說理想情況下哈希表的時間算法復雜度為O(1)。
    ??? 這就是說哈希函數的編寫是哈希表的一個關鍵問題,會涉及到一個存儲值在哈希表中的統計分布。如果哈希函數已經定義好了,沖突的解決就成為了改變系統性能的關鍵因素。其實還有很多種方法來解決沖突情況下的存儲和查找問題,不一定非要線性向后排隊,如果有好的哈希表沖突的解決方法也能很大程度上提高系統的效率。


    FYI,比較書面化的定義:
    ??? 理想的情況是能直接找到需要的記錄,因此必須在記錄的存儲位置和它的關鍵字之間建立一確定的對應關系f,使每個關鍵字和結構中一個唯一的存儲位置相對應。因而查找時,只需根據這個對應關系f找到給定值K的像f(K)。若結構中存在關鍵字和K相等的記錄,則必定在f(K)的存儲位置上,由此不需要進行比較便可直接取得所查記錄。在此,稱這個對應關系f為哈希函數,按這個思想建立的表為哈希表(又稱為雜湊法或散列法)。



    參考:
    http://calmness.javaeye.com/blog/184465
    http://blog.163.com/xx_snoopy/blog/static/12577162008426731299/

    posted @ 2008-07-18 16:55 Jcat 閱讀(562) | 評論 (0)編輯 收藏
    4P :50年代末,由美國營銷學學者麥卡錫教授提出,對市場營銷理論和實踐產生了深刻的影響,被營銷經理們奉為營銷理論中的經典。

    <定義>
    ??? Prodct 產品
    ??? Price 價格
    ??? Place 渠道
    ??? Promotion 促銷


    <不足> 4P有一些牽強的因素在里面
    ??? 產品策略和價格策略用Product和Price是非常對的,但麥卡錫為了增強理論體系的可傳播性,就搜腸刮肚地希望湊出另外兩個P。
    (其實老外也和我們中國人一樣,為了把某個信息體系傳播給大家,便于大家記憶和交流,也會努力地發展出類似于“三大紀律八項主義”、“五講四美”等概念) ???
    ??? 最后用Place來概括渠道分銷策略,用Promotion來概括包括了廣告、公關、銷售促進和人員推銷在內的所有溝通策略。
    ???
    ??? 1)其實渠道分銷策略最合適的單詞應該是Distribution和Channel。Place是消費者購買地點的意思,即渠道分銷的最終成果終端的意思,用Place來代替Distribution和Channel,雖然不很恰當但也能自圓其說。
    ???
    ??? 2)溝通策略最合適的單詞應該是Communication,Promotion的本義“促銷推廣”,Promotion只能涵蓋溝通策略中的銷售促進(sales promotion)和人員推銷(personal sells),而無法涵蓋廣告、公關策略,用Promotion代替Communication可算是真夠勉強的。
    ??? 可見, 4P營銷組合理論中的最后一個策略雖然用了Promotion這個詞,直譯成中文是促銷,但此促銷與目前中國企業界實踐中常用的促銷這個詞匯所代表的意思(這里的促銷主要指的是降價、抽獎、買二送一、導購等)壓根就不是同一回事,實際上4P中的Pomotion包括了廣告、公關、銷售促進(促銷)等所有溝通策略的方式,即4P從誕生那天開始就是強調溝通的。認為4P強調的是促銷,那是沒有真正了解4P的精髓而產生的誤解。



    4C:80年代,美國勞特朋針對4P存在的問題提出了4C營銷理論

    <定義>
    ???
    Curstomer 客戶(的需求) :不要再賣你所能制造的產品,而要賣客戶需要的產品。
    ???
    Cost (客戶愿意支付的)成本 :暫時忘掉定價策略,而要了解客戶滿足需要愿意付出多少錢(成本)。
    ???
    Convenience (客戶的)便利 :不要先考慮銷售渠道的選擇和策略,而要首先考慮交易過程中如何給使客戶更方便。
    ???
    Commuinction (與客戶)溝通 :通過互動、溝通等方式,把客戶和企業雙方的利益無形地整合在一起。

    <不足>
    ??? 1) 4C是顧客導向,而市場經濟要求的是競爭導向,中國的企業營銷也已經轉向了市場競爭導向階段。顧客導向與市場競爭導向的本質區別是:前者看到的是新的顧客需求;后者不僅看到了需求,還更多地注意到了競爭對手,冷靜分析自身在競爭中的優、劣勢并采取相應的策略,在競爭中求發展。
    ??? 2) 隨著4C理論融入營銷策略和行為中,經過一個時期的運作與發展,雖然會推動社會營銷的發展和進步,但企業營銷又會在新的層次上同一化,不同企業至多是個程度的差距問題,并不能形成營銷個性或營銷特色,不能形成營銷優勢,保證企業顧客份額的穩定性、積累性和發展性。   
    ??? 3) 4C以顧客需求為導向,但顧客需求有個合理性問題。顧客總是希望質量好,價格低,特別是在價格上要求是無界限的。只看到滿足顧客需求的一面,企業必然付出更大的成本,久而久之,會影響企業的發展。所以從長遠看,企業經營要遵循雙贏的原則,這是4C需要進一步解決的問題。   
    ??? 4) 4C仍然沒有體現既贏得客戶,又長期地擁有客戶的關系營銷思想,沒有解決滿足顧客需求的操作性問題,如提供集成解決方案、快速反應等。   
    ??? 5)4C總體上雖是4P的轉化和發展,但被動適應顧客需求的色彩較濃。根據市場的發展,需要從更高層次以更有效的方式在企業與顧客之間建立起有別于傳統的新型的主動性關系。如互動關系、雙贏關系、關聯關系等。

    <Other>
    ??? 4C是一種營銷理念和理想的營銷標準,而4P則是一種營銷策略手段。4C所提出的營銷理念和標準最終還是要通過4P為策略和手段來實現的,比如要提升顧客購買的便利性(Convenience)就要通過渠道策略(Place策略)來完成。可見,4P與4C是不是矛盾和對立的,4C只是特別強調了顧客需求和雙向互動溝通的重要性。




    4R:近來,美國DonE.Schultz提出了4R營銷新理論,闡述了一個全新的營銷四要素。

    <定義>
    ???
    Relenvance 與顧客建立關聯
    ??? 在競爭性市場中,顧客具有動態性。顧客忠誠度是變化的,他們會轉移到其它企業。要提高顧客的忠誠度,贏得長期而穩定的市場,重要的營銷策略是通過某些有效的方式在業務、需求等方面與顧客建立關聯,形成一種互助、互求、互需的關系,把顧客與企業聯系在一起,這樣就大大減少了顧客流失的可能性。特別是企業對企業的營銷與消費市場營銷完全不同,更需要靠關聯、關系來維系。
    ???
    Reaction 提高市場反應速度
    ??? 在今天的相互影響的市場中,對經營者來說最現實的問題不在于如何控制、制定和實施計劃,而在于如何站在顧客的角度及時地傾聽顧客的希望、渴望和需求,并及時答復和迅速作出反應,滿足顧客的需求。目前多數公司多傾向于說給顧客聽,而不是聽顧客說,反應遲鈍,這是不利于市場發展的。
    ???
    Relationship 關系營銷越來越重要了
    ??? 在企業與客戶的關系發生了本質性變化的市場環境中,搶占市場的關鍵已轉變為與顧客建立長期而穩固的關系,從交易變成責任,從顧客變成擁躉,從管理營銷組合變成管理和顧客的互動關系。  
    ???
    Reward 回報是營銷的源泉
    ??? 對企業來說,市場營銷的真正價值在于其為企業帶來短期或長期的收入和利潤的能力。一方面,追求回報是營銷發展的動力;另一方面,回報是維持市場關系的必要條件。企業要滿足客戶需求,為客戶提供價值,但不能做“仆人”。因此,營銷目標必須注重產出,注重企業在營銷活動中的回報。一切營銷活動都必須以為顧客及股東創造價值為目的。

    <不足>
    ??? 當然,4R同任何理論一樣,也有其不足和缺陷。如與顧客建立關聯、關系,需要實力基礎或某些特殊條件,并不是任何企業可以輕易做到的。但不管怎樣,4R提供了很好的思路,是經營者和營銷人員應該了解和掌握的。
    posted @ 2008-07-13 15:57 Jcat 閱讀(1118) | 評論 (0)編輯 收藏
         摘要: 堅持了一個月了,雖然只是每天3、5分鐘,又幾次還真堅持不住了。感謝監督我的朋友們! 6/25/2008 An executive should be experienced in administration. Successive adminis...  閱讀全文
    posted @ 2008-06-26 22:30 Jcat 閱讀(434) | 評論 (3)編輯 收藏
    爹跟兒子說:我要給你找個媳婦。
    兒子說,可我愿意自己找!?
    爹說,但這個女孩子是比爾蓋茨女兒!
    兒子說,要是這樣,可以。

    然后他爹找到比爾蓋茨,說,我給你女兒找了一個老公。
    比爾蓋茨說,不行,我女兒還小!
    爹說,可是這個小伙子是世界銀行副總裁!?
    比爾蓋茨說,啊,這樣,行!

    最后,爹找到了世界銀行總裁,說,我給你推薦一個副總裁!
    總裁說,可是我有太多副總裁了,多余了!
    爹說,可是這個小伙子是比爾蓋茨的女婿!?
    總裁說,這樣,行!
    posted @ 2008-06-17 17:29 Jcat 閱讀(212) | 評論 (0)編輯 收藏
    1、技術
    ??? 技術為本。最重要有一點是有自己專有的東西--專利(這個比較困難,呵呵),想要人家的程序必須交錢;必須要有自己的專長, 對某個領域或技術有很深的研究 ,是別人不能代替的。專心做好一件事情,比什么都好;
    ??? 關鍵是在工作中能夠不斷提高自己的業務水平,包括軟件設計研發能力的提高和對業務理解能力的提高。如果在一個公司里面自己不能再學到任何東西了,那就要考慮跳到一個能學到更多東西的地方,即使你現在的職位很高收入很好;
    ??? 30多歲就終結技術人員生涯的日子,估計不會太久。就像玩股票一樣,一開始就是瘋狂,理性了,就會好了,堅持。

    2、人脈
    ??? 推銷自己:熱心幫別人解決問題、和別人討論問題。

    3、外語
    ??? 精通一門外語。進外企(意味著更長的職業生涯)、外包、移民。。。

    4、出國
    ??? 年輕時多賺點,將來混到管理層可以養老足矣了!呵呵,出國幾年先賺好房子首付和車子的錢,到時女朋友自然會有的吧?當然不能僅僅為了錢出國,還要提升各方面的資歷和能力,為回國做好打算。

    5、灰色收入/夜草
    ??? 技術足夠牛,就接外包,自己做軟件,做個網站賣,賺美元。

    6、理財
    ??? 觀念很重要,一開始不在于多,細水長流。看《富爸爸,窮爸爸》,激發理財意識。你不理財,財不理你。

    7、創業
    ??? 利用兼職機會做項目,然后積累人際關系、積累客戶資源; 挖掘你身邊的可用資源,比如你身邊的人;
    ??? 只有不賺錢的企業/個人,沒有不賺錢的行業,就看你會不會和敢不敢做了。重要的不是技術,是營銷模式,創意,勇氣;
    ??? 35歲處于創業的萌芽期。多關注一下商機,商機無處不在;
    ??? “但我想告訴你我現在的公司老板是45歲才創業的,才5年左右有了千萬的家產,而且他以前是做技術的。”,看來創業年齡不是絕對的障礙。

    8、技術管理
    ??? 在關鍵時刻給上級一些管理方面的建議;
    ??? 只要你能通過數據說明問題,你已經進了一大步了;如果你能用數據來解決問題,那么你就不在是一個技術員,而是個了不起的管理人員了。通過技術走到管理層的人,他所說的問題及解決問題的方法,可行性強。這點是最重要的了。

    9、培訓、顧問
    ??? 多年的行業工作經驗是資本,需要注重的與人交流和溝通的能力。

    10、DBA
    ??? DBA似乎是一個可以做得長久且待遇不錯的好方向。

    11、進事業機關、國家機關
    ??? 35周歲是那里的最低門檻。

    12、銷售
    ??? 我想主要是IT產品方面的銷售。不過這個對我來說,在“自己能做的”、“自己適合做的”和“自己喜歡做的”這三者之中幾乎不屬于其中任何一個。雖然本人談不上對技術有狂熱之情,但還是比較有興趣的,而且適合本人的性格。

    13、第二戰場
    ??? 嘗試開個小店,不一定要親自經營,可以找親戚朋友幫忙看店,帳目方面清楚。這確實是進入職業穩定期需要考慮的問題。

    14、其他
    ??? 35歲前,求別人給你工作。35歲后,別人求你給他干活;
    ??? 尋找自己能做的、自己適合做的和自己喜歡做的這三者的最大交叉點;
    ??? 盡到一個兒子的責任,盡到一個丈夫的責任,盡到一個父親的責任,無愧于心就足夠了,想得太多反而迷茫;
    ??? 人生其實就是一個過程,讓這個過程更有意義,才是最重要的。

    ???
    ??? 一、選擇工作時千萬不要去專門外包的公司,因為你的技術是重復的,而業務是分散的。外包的項目一般工作量比較大但技術要求并不高,對你技術的提高沒 有任何好處,而且不同的外包項目的業務是不同的,在這方面你幾乎沒有任何的沉淀。建議去做專業產品的工作,比如游戲、殺毒、金融、地理,你只要在這 行做于幾年,你便擁有了相關的技術積累和業務知識積累,更重要的是,你在這行里認識的人會非常多,這些人日后到別的公司或自己創建公司,對你來說就是潛在 的客戶或活廣告。

    ??? 二、抽空上上論壇發發貼子。這其實占用不了多少時間的,你在床頭放一臺電腦,飯前飯后或睡覺前什么的,抽半小時上去看看,或寫些 什么。當然你不要上那些八卦論壇,那是浪費生命。你只上技術論壇和業務相關論壇,而且用相同的名稱。一般在公司里與招聘有關的無非是兩類,一是技術主管二 是業務主管,他們有空的時候也會上上論壇的,或許還與你討論過什么問題呢。而且很多公司找人做什么項目也會在網上找一找的,看到你的名字這么多,當然會對 你另眼相看了。這里人特別注意的是,你千萬不要在網上說太無聊的話,因為他們如果在網上看到這些對你的評價就相當低了。

    ??? 三、要有業余愛好。盡可能 抽時間參加某些人組織的活動,這看起來好象與事業無關,其實關系太大了。這些愛好讓你能保持非常好的心態面對生活和工作,對心理和生理都相當有益,而且能 對事業保持激情。激情這東西非常重要,不管生活還是工作。另一方面,業余愛好在某些場合可以增強人們對你的印象,比如業內人士搞什么聚會的時候,你露一手 與眾不同的節目,人家在日后就很容易記得你。

    ??? 如果你做到上面三點,在技術積累、業務積累、人氣積累等方面就都具備了并能保持激情,要業內被人認為并不是太困難的事情。


    轉自:邢紅瑞
    posted @ 2008-06-03 06:49 Jcat 閱讀(230) | 評論 (0)編輯 收藏
    /bin??? binary
    該目錄沿襲了UNIX系統的結構,存放著使用者最經常使用的命令。例如cp、ls、cat....

    /boot
    存放著啟動Linux時使用的一些核心文件。

    /dev??? device
    這個目錄下是所有Linux的外部設備,其功能類似DOS下的.sys和Win下的.vxd。在Linux中設備和文件是用同種方法訪問的。例如:/dev/hda代表第一個物理IDE硬盤。

    /etc?? ?etcetera
    這個目錄用來存放系統管理所需要的(雜七雜八的)配置文件

    /home
    用戶的主目錄,比如說有個用戶叫sybase,那他的主目錄就是/home/sybase也可以用~sybase表示。

    /lib
    這個目錄里存放著系統最基本的動態鏈接共享庫,其作用類似于Windows里的.dll文件。幾乎所有的應用程序都須要用到這些共享庫。

    /lost+found
    這個目錄平時是空的,當系統不正常關機后,這里就成了一些無家可歸的文件的避難所。有點類似于DOS下的.chk文件。

    /mnt?? ?mount
    存放臨時的映射文件系統,我們常把軟驅和光驅掛裝在這里的floppy和cdrom子目錄下。

    /opt??? optional
    這個目錄是一些大型軟件的安裝目錄(如Sybase),或者是一些服務程序的安裝目錄,一般情況下這是個空目錄。

    /proc?? ?procedure
    這個目錄是一個虛擬的目錄,它是系統內存的映射,我們可以通過直接訪問這個目錄來獲取系統信息。也就是說,這個目錄的內容不在硬盤上而是在內存里。

    /root
    系統管理員(也叫超級用戶)的主目錄。作為系統的擁有者,總要有些特權啊!比如單獨擁有一個目錄。

    /sbin
    s就是Super User的意思,也就是說這里存放的是系統管理員使用的管理程序。

    /tmp
    存放臨時文件

    /usr
    包含了一般不需要修改的應用程序,命令程序文件、程序庫、手冊和其它文檔。這是最龐大的目錄,我們要用到的應用程序和文件幾乎都存放在這個目錄下。

    /var
    包 含系統產生的經常變化的文件,例如打印機、郵件、新聞等假脫機目錄、日志文件、格式化后的手冊頁以及一些應用程序的數據文件等等。建議單獨的放在一個分 區。為了保持/usr的相對穩定,那些經常被修改的文件可以放在這個目錄下,比如系統的日志文件就在/var/log目錄中。




    -----再進一步談談/usr目錄-----
    /usr/X11R6
    存放X-Window的目錄

    /usr/bin
    存放增加的用戶程序

    /usr/sbin
    存放增加的管理程序

    /usr/dict
    存放字典

    /usr/doc
    這是Linux文檔的大本營

    /usr/etc
    存放設置文件

    /usr/games
    存放游戲和教學文件

    /usr/include
    存放C開發工具的頭文件

    /usr/info
    存放GNU信息文件

    /usr/lib
    存放一些常用的動態鏈接共享庫和靜態檔案庫;

    /usr/local
    一般是你安裝軟件的目錄,這個目錄就相當于在windows下的programefiles這個目錄

    /usr/man
    存放幫助文件

    /usr/src
    Linux開放的源代碼就存在這個目錄,愛好者們別放過哦!

    /usr/share
    存放結構獨立的數據



    -------------
    找到個牛X的東西,Linux系統目錄的規范標準
    posted @ 2008-06-02 23:25 Jcat 閱讀(306) | 評論 (0)編輯 收藏

    我決定每天背一個單詞,以及2、3個這個單詞的句子,也就是睡前花個10分鐘,堅持一年。
    我會每天把前天背的句子更新到Blog上,如果哪天你發現我不更新了,就在Blog上留言罵我,謝謝。


    5/25/2008

    He abandoned his wife and child and ran away

    In his early days, Mr. Lu Xun abandoned medicine for literature.

    5/26/2008

    He has travelled aboard in many lands.

    The rumor? soon got aboard.

    5/27/2008

    XX often speaks ill of BB in her absence.

    During his absence for business in Shanghai, his wife gave birth to their first child.

    She seems pale from the absence of all cosmetics.

    5/28/2008

    We must boldly absorb and draw on all the achievements created by human society.

    I was so absorbed in this book that I didn’t hear you.

    The area is being absorbed into its neighboring country.

    5/29/2008

    A flower is beautiful, but beauty itself is abstract.

    The professor asked him to write an abstract of this scientific article within one week.

    5/30/2008

    Courage is abundant among the volunteers.

    The river is abundant in fish.

    5/31/2008

    Her parents were found guilty of child abuse.

    The foreman abused the workmen with dirty words.

    Don’t abuse the confidence they have placed in you.

    6/1/2008

    The academic year begins when school opens in September.

    There is an academic discussion after his report.

    She realized that his protest must have been more or less academic.

    6/2/2008

    Fertilizer will accelerate the growth of these tomato plants.

    6/3/2008

    He spoke in a thick French accent.

    The second syllable in this word should be accented.

    6/4/2008

    Before liberation the laboring people had no access to education.

    The only access to the farmhouse is across the fields.

    6/5/2008

    The present accommodation of the school is filled to the limit.

    6/6/2008

    Her father always accompanies her to school.

    A decreased income is accompanied by an increased expenditure.

    The famous singer was accompanied at the piano by his pupil.

    6/7/2008

    Mike accomplished the mission with extraordinary wisdom.

    6/8/2008

    ?What we do ought to accord with the foundational interests of the people.

    BB accords due praise to XX.

    We are in perfect accord with each other on this matter.

    6/9/2008

    The weather has changed suddenly, and accordingly we must alter our plan for the picnic.

    6/10/2008

    Don’t always believe the media’s accounts of events.

    I have an account to settle with BB.

    It accounts for 30 percent of all railway accidents.

    6/11/2008

    She serves as a certified public accountant in the company.

    CPA:注冊公共會計師

    6/12/2008

    Dust soon accumulates if the room is not cleaned regularly.

    6/13/2008

    They publicly accused her of stealing their books.

    6/14/2008

    It is said that he possesses an acid tongue.

    6/15/2008

    XX acknowledges the receipt ?of BB’s letter.

    The mayor of London acknowledged XX’s services to the city.

    6/16/2008

    He has an exhaustive acquaintance with German literature.

    She has a wide circle of acquaintances in the government.

    6/17/2008

    A bad habit is easily acquired but given up with difficulty.

    6/18/2008

    The gallery displayed its latest acquisitions.

    6/19/2008

    The long drought caused an acute shortage of water.

    The dogs has an acute sense of smell.

    Here is an acute triangle.

    6/20/2008

    The book is adapted to the needs of beginners.

    The old man adapted gradually to the new climate.

    6/21/2008

    He will be a most valuable addition to our board.

    6/22/2008

    He read an address of welcome on behalf of the university.

    They tried to address the needs of the veterans.

    6/23/2008

    Ten pounds a week is not adequate to support a family.

    Though a bit too old, he is still adequate for the job.

    6/24/2008

    The local government adjusted its economy to a new pattern.

    The eyes need several minutes to adjust to the dimness.

    posted @ 2008-05-29 17:05 Jcat 閱讀(635) | 評論 (5)編輯 收藏
    2008-05-12
    下午3點多吧,還在三元橋上班呢,就覺得電腦屏幕忽遠忽近。旁邊打電話的同事也跟電話說:“好了,我不說了,我有點頭暈。”這時我們才發現整個房間在晃,地震了!!!

    晃了有2、3分鐘吧,在我還覺得挺好玩的時候(其實心里也有點害怕,只是沒經歷過地震,不知道怕),人已經跑光了。還有3個老外,似乎經歷過地震,并不驚慌。

    上QQ,北京的朋友都說地震了。一會爸爸也來短信了,說有驚無險,我這時還想:“北京這回震的,成都也都有感覺了。”后來QQ上有人說,四川是震中,nnd,趕緊給媽媽打個電話,信號很不好,好歹聽說她已經在院子里了,最后信號也斷了。

    同事們還沒回來,窗外看去,三元橋一帶的大廈下都站的是人。干脆下班吧。

    回來的路上,就不住的有人給我打電話,舅媽、姐姐、還在深圳出差的哥哥,甚至我老板也來問我了。好在之前聯系過爸媽,得以告訴他們我家有驚無險。很感謝大家對我的關心。

    回來上網關注,突然想起小龍也在成都出差,阿奔給他打電話也不通。

    晚上健身回來,10點了。給爸爸打了個電話,好歹通了,說全家都集中到奶奶家了,院里的老人們都住在院里的汽車里。爸爸還說晚上余震來了都有4、5次了,5級左右,nnd。

    上網看,已經遇難7651了。后來阿奔終于給小龍打通電話了,他在廣漢,還算安全。

    又和樂山的朋友聊天,已經8533了。

    雖說目前我的親人朋友尚且安全,但我仍然很難過,從小到大,四川都是一個福地,從來沒有發生過大災大難,今年這是咋的了,為不幸的朋友們默哀~~~~~~~~~

    地震.JPG

    2008-05-13
    昨天還饒有興致的討論這件事,今天已經郁悶了,接近萬人了(9219),還不包括杳無音信的汶川(估計整鍋端了),Kitty Terrible~
    posted @ 2008-05-13 00:06 Jcat 閱讀(272) | 評論 (0)編輯 收藏
    編輯 /etc/inittab 文件,找到語句 id:5:initdefault:
    5表示啟動后直接進入圖形界面
    3表示啟動后直接進入文本界面,登錄后可用 startx 進入圖形界面


    圖形界面和文本界面也是可以相互切換的(root權限)
    ??? 圖-->文??? # init 5
    ??? 文-->圖??? # init 3
    posted @ 2008-04-22 12:47 Jcat 閱讀(273) | 評論 (0)編輯 收藏
    1. 修改當前系統的主機名
    # hostname new_host_name

    2. 永久修改系統的主機名
    修改文件 /etc/sysconfig/network
    hostname=new_host_name

    3. 記得修改文件 /etc/hosts,不修改的話,apache等需要解析主機名的服務將不能啟動(Sybase的listener也會有問題)
    127.0.0.1??? new_host_name??? localhost

    4. 最后就是命令行提示符中的主機名還沒有改變,如果很在意的話,重新登錄一下就行了
    posted @ 2008-04-22 12:43 Jcat 閱讀(283) | 評論 (0)編輯 收藏
    1NF:屬性單一,不可再分(僅一個值僅一種值)
    很顯然,在當前的任何RDBMS中,傻瓜也不可能做出不符合第一范式的數據庫,因為RDBMS不允許你把數據庫表的一列再分成二列或多列。實際上,還真有這樣的垃圾設計,我在某個項目中遇到,將 first_name,middle_name,last_name放在一個字段的,最后想分都分不開,完全折服。


    2NF:消除了部分依賴(部分依賴由復合主鍵導致,顯然所有單主鍵的表都符合2NF)
    <反例> 一個表
    (學號, 課程名稱)→(姓名, 年齡, 成績, 學分)
    <部分依賴>
    (課程名稱)→(學分)
    (學號)→(姓名, 年齡)
    <改正> 改為三個表
    (學號)→(姓名, 年齡)
    (課程名稱)→(學分)
    (學號,課程名稱)→(成績)


    3NF:消除了傳遞依賴
    <反例>
    (學號)→(姓名, 年齡, 學院, 學院地點, 學院電話)
    <傳遞依賴>
    (學號)→(學院)→(學院地點, 學院電話)
    <改正> 改為兩個表
    (學號)→(姓名,年齡,學院)
    (學院)→(地點,電話)
    posted @ 2008-04-16 14:16 Jcat 閱讀(418) | 評論 (0)編輯 收藏
    主站蜘蛛池模板: 综合一区自拍亚洲综合图区| 国产一卡2卡3卡4卡无卡免费视频| 四虎国产精品免费视| 亚洲sss综合天堂久久久| 久久国产乱子伦免费精品| 在线精品亚洲一区二区三区| 国产成人高清亚洲一区久久| 成人免费a级毛片无码网站入口 | 精品亚洲aⅴ在线观看| a级毛片免费高清视频| 免费播放特黄特色毛片| 亚洲AV无码专区在线电影成人| 午夜国产精品免费观看| 亚洲性猛交xx乱| 在线成人爽a毛片免费软件| 国产亚洲av片在线观看播放| 久久久免费观成人影院| 亚洲综合精品网站在线观看| 日本一区二区在线免费观看 | 日韩精品无码免费视频| 全黄a免费一级毛片人人爱| 国产精品亚洲色图| 国产精品成人四虎免费视频| 国产精品亚洲一区二区三区| 免费永久在线观看黄网站| 春暖花开亚洲性无区一区二区| 国产美女无遮挡免费视频网站 | 成人免费淫片在线费观看| 亚洲中文字幕无码av永久| 成人免费视频软件网站| 久久亚洲中文字幕无码| 免费h成人黄漫画嘿咻破解版| 深夜a级毛片免费视频| 亚洲高清最新av网站| WWW国产成人免费观看视频| 国产亚洲成人在线播放va| 91成人免费观看在线观看| 亚洲AV午夜成人片| 日韩免费无码一区二区三区 | 亚洲AV无码成人精品区蜜桃| 99精品视频在线观看免费专区|