Jcat
宠辱不惊,闲看庭前花开花落~~
posts - 173,comments - 67,trackbacks - 0
纯好人不用打:白羊

没人防:双子(迷宫)、天平(卡妙的冰箱)、射手(迷宫)

打死:巨蟹(紫龙)、山羊(紫龙自曝)、双鱼(阿瞬)、水瓶(冰河)

没打过,放水:狮子(星矢)、天蝎(冰河)、金牛(星矢)、处女(一辉)


这样看来紫龙是最NB的,一个人干掉2个,而且靠他师傅走后门天平不用打,还用天平的武器救了冰河。

冰河和他师傅干了2仗
冰河那段也挺NB,先是在天平被冻个半死,然后在天蝎被针扎个半死,最后到了水瓶还能把他师傅干掉
冰河和他师傅是最体现实力的一仗,纯实力对扣

合着星矢谁也没杀,就TM来打酱油的。。。
posted @ 2011-10-21 14:29 Jcat 阅读(539) | 评论 (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 阅读(801) | 评论 (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 阅读(913) | 评论 (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 阅读(1272) | 评论 (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 阅读(243) | 评论 (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 阅读(411) | 评论 (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 阅读(222) | 评论 (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 阅读(225) | 评论 (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 阅读(274) | 评论 (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 阅读(518) | 评论 (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 阅读(246) | 评论 (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 阅读(638) | 评论 (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 阅读(232) | 评论 (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 阅读(204) | 评论 (0)编辑 收藏


因为在客户那工作不能上网,决定办一张3G上网卡(公司报销),中午分别去电信和移动了解了一下:
电信 960元  7个月  300小时/月
移动 880元  7个月  15G/月 (目前推广期,不限流量)
(都包含上网猫)
这样算下来还是移动的便宜,去搞了个移动的。

关于移动的上网猫,开始给我测试的时候用的是华为的、白色、流线型还挺好看。最终给我的是一个鸟公司的(敏讯),方形真难看,太大了,号称还是升级版。

速度嘛,看网页没啥问题,Outlook下邮件也很快,在线听歌也没问题,在线电影就不去尝试了,免得伤自尊,办公足够了。玩开心网有点卡。(我以前就用过联通的CDMA-2G上网,那叫一个慢呀)

这个帖子就是用3G网络发的,哈哈。同时纪念一下2年后重回BMW做项目。
posted @ 2009-09-17 19:09 Jcat 阅读(218) | 评论 (0)编辑 收藏
扇区(sector):最小的可寻址单元,512byte
磁道(track):一圈扇区
磁柱(cylinder):一摞磁道

每一磁道的扇区数是一样的,但是存储密度不同,外疏内密。

为什么要外疏内密?
角速度相同时,线速度与半径成正比:
硬盘为了提高其轴寿命,轴的转动速度是一定的。磁头在硬盘上读写数据是近乎于圆弧的路线,而越往外,线速度就越快。为了保证读取的准确性只能减小外道的密度使磁头读取数据的时间间隔是相同的。


有待研究:早期的磁盘每个磁道上的扇区数目是一样,显然浪费了外圈的容量,后来为了增大磁盘容量采用了新技术,也就是说越往外每磁道扇区数目越多。

posted @ 2009-09-14 15:50 Jcat 阅读(364) | 评论 (0)编辑 收藏
字符设备:按照字符流的方式被有序访问,不能随机存取,如键盘、串口打印机、磁带。

块设备:能够随机(不需要按顺序)访问固定大小数据片(chunks),采用块缓冲技术,如硬盘、软盘、光驱。

裸设备:是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。
现在问题来了,Oracle在使用裸设备时(如ASM、甚或表空间直接建在裸设备上),难道还是顺序存取?显然不符合事实。
其实,说裸设备是字符设备,只是从操作系统的角度来说的;从使用裸设备的应用程序(如Oracle)的角度,还是块设备,Oracle会去对磁盘进行分块管理。

逻辑卷是逻辑概念,可以包含多块物理硬盘,实现了存储跨盘功能,同时提供了数据复制机制,提供了数据安全保护机制。

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

裸设备适用于每次改动数据较小、需大量并发交易,OLTP;
对于大规模顺序读写,裸设备性能是最差的,所以对OLAP,应使用块设备或卷。

posted @ 2009-09-14 13:45 Jcat 阅读(582) | 评论 (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 阅读(251) | 评论 (0)编辑 收藏
股票的面值,是股份公司在所发行的股票票面上标明的票面金额,它以元/股为单位,其作用是用来表明每一张股票所包含的资本数额。在我国上海和深圳证券交易所流通的股票的面值均为壹元,即每股一元。
一般来说,股票的发行价格都会高于其面值。当股票进入流通市场后,股票的面值就与股票的价格没有什么关系了。股民爱将股价炒到多高,它就有多高。

按股东权利分类,股票可分为普通股、优先股和后配股。在我国上交所与深交所上市的股票都是普通股

股息红利作为股东的投资收益,是以股份为单位计算的货币金额,如每股多少元。但在上市公司实施具体分派时,其形式可以有四种:这就是现金股利、财产股利、负债股利和股票股利等。沪深股市的上市公司进行利润分配一般只采用股票红利和现金红利两种,即统称所说的送红股和派现金。
当上市公司向股东分派股息时,就要对股票进行除息;当上市公司向股东送红股时,就要对股票进行除权。
我国上市公司中约有一半以上的股份为国家股,且其股权代表基本上都是上市公司的经营管理人员。由于切身利益的影响,经营管理人员基本上都赞同企业的发展与扩张,所以我国上市公司的分红中,送红股的现象就非常普遍。
posted @ 2009-07-29 11:17 Jcat 阅读(158) | 评论 (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 阅读(247) | 评论 (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 阅读(670) | 评论 (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 阅读(289) | 评论 (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 阅读(213) | 评论 (0)编辑 收藏
《道路交通安全法实施条例》第四十九条规定,机动车在有禁止掉头或者禁止左转弯标志、标线的地点以及在铁路道口、人行横道、桥梁、急弯、陡坡、隧道或者容易发生危险的路段,不得掉头;机动车在没有禁止掉头或者没有禁止左转弯标志、标线的地点可以掉头,但不得妨碍正常行驶的其他车辆和行人的通行。在允许掉头的地点设有掉头专用信号灯的,应当在绿灯期间掉头;未设有掉头信号灯的,但有相应的标志标明在红灯或者绿灯期间掉头的,应当按照标志的指示掉头;既无掉头专用信号灯,又无其他标志指示的,掉头时可不受信号灯限制,但掉头时不得妨碍正常行驶的车辆和行人通行。

-----

有下列情形之一的,依法予以处罚:
   (1)在设有禁止掉头(禁止左转弯)标志、标线的地点掉头的;     
   (2)在人行横道处掉头的;
   (3)在非禁止掉头的地点掉头与正常行驶的车辆、行人发生交通事故的,按掉头时妨碍正常行驶的车辆通行或掉头时妨碍正常行驶的行人通行的行为予以处罚。
   (4)没有从左侧第一条车道(设置专用掉头车道的除外)掉头的,按掉头时未按规定驶入最左侧车道的行为进行处罚。

-----

(一)下列情形,不属于违法行为:
    (1)在没有禁止掉头(禁止左转弯)标志、标线的地点掉头的;
    (2)在没有禁止掉头(禁止左转弯)标志、标线的路口,红灯期间或绿灯期间掉头的;
    (3)在黄色网格线内掉头的。

(二)有下列情形之一的,依法予以处罚:
   (1)在设有禁止掉头(禁止左转弯)标志、标线的地点掉头的;     
   (2)在人行横道处掉头的;
   (3)在非禁止掉头的地点掉头与正常行驶的车辆、行人发生交通事故的,按掉头时妨碍正常行驶的车辆通行或掉头时妨碍正常行驶的行人通行的行为予以处罚。
   (4)没有从左侧第一条车道(设置专用掉头车道的除外)掉头的,按掉头时未按规定驶入最左侧车道的行为进行处罚。


posted @ 2009-05-29 00:46 Jcat 阅读(214) | 评论 (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 阅读(185) | 评论 (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
------- ---- -- ---------- ----------- ------------ ---------------
      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 阅读(308) | 评论 (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 阅读(245) | 评论 (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 阅读(227) | 评论 (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.blogjava.net/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 阅读(756) | 评论 (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 阅读(279) | 评论 (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 阅读(772) | 评论 (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 阅读(351) | 评论 (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 阅读(417) | 评论 (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 阅读(307) | 评论 (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 阅读(241) | 评论 (0)编辑 收藏
孙悦和菲尔.jpg
湖人vs雄鹿,第四节垃圾时间,孙悦终于替补出场。

孙悦失误了队友安慰他.jpg
上来就3个犯规,1个运球失误,显得很紧张,身体僵硬。又失误了,队友安慰他。
然后1个三分的机会,没进,动作很僵硬。

孙悦投进NBA第一球.jpg
终于有个中距离的机会,孙悦投中了,全场鼓掌!
后来又有一个反击的机会,孙悦篮下打板进了,继续鼓掌!


恭贺菜鸟的第一次NBA亮相!
posted @ 2008-12-08 13:07 Jcat 阅读(274) | 评论 (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 阅读(268) | 评论 (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 阅读(1328) | 评论 (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 阅读(1431) | 评论 (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 阅读(1659) | 评论 (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;  +=   2 ) {
    println aa[i]
}

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

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


下面我们看看闭包的强大之处,Comm1和Comm2都被很好的封装在了loop方法里;Diff1则作为参数(闭包)传入loop方法。

static void main(String[] a) {
    
int[] aa = [123456]

    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; += 2) {
        c.call(aa[i])
    }
    println 
' '
}

总结,闭包本身并没什么难点,关键是怎样合理的设计一个接受Closure类型参数的方法。从GDK的方法也可以看出,大多数接受闭包的方法都是和数组迭代有关(也即循环)。
posted @ 2008-11-07 02:04 Jcat 阅读(1533) | 评论 (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 阅读(344) | 评论 (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 阅读(278) | 评论 (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 阅读(186) | 评论 (0)编辑 收藏
Boa
这是飞侠兄做的Flex网站,很好玩。
posted @ 2008-10-22 21:14 Jcat 阅读(181) | 评论 (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 阅读(682) | 评论 (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 阅读(317) | 评论 (2)编辑 收藏
世界强队从来不是靠抽签抽出来的,中国男篮,我爱你!

“进场的时候,我们把手放在一起,把自己交给这支球队,同时也把这支球队扛在自己肩上,我们所有的人都在为这个球队努力。” -- 大大的姚明
posted @ 2008-08-16 21:56 Jcat 阅读(151) | 评论 (0)编辑 收藏
中国体操男团,背负四年的压力,重获金牌,超感人;

中国男篮vs西班牙,把世锦赛冠军逼到打加时,虽败犹荣;

中国男足都是Sha Bi,窝囊废。
posted @ 2008-08-12 18:54 Jcat 阅读(209) | 评论 (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 阅读(329) | 评论 (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 阅读(544) | 评论 (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 阅读(1104) | 评论 (0)编辑 收藏
     摘要: 坚持了一个月了,虽然只是每天3、5分钟,又几次还真坚持不住了。感谢监督我的朋友们! 6/25/2008 An executive should be experienced in administration. Successive adminis...  阅读全文
posted @ 2008-06-26 22:30 Jcat 阅读(418) | 评论 (3)编辑 收藏
爹跟儿子说:我要给你找个媳妇。
儿子说,可我愿意自己找! 
爹说,但这个女孩子是比尔盖茨女儿!
儿子说,要是这样,可以。

然后他爹找到比尔盖茨,说,我给你女儿找了一个老公。
比尔盖茨说,不行,我女儿还小!
爹说,可是这个小伙子是世界银行副总裁! 
比尔盖茨说,啊,这样,行!

最后,爹找到了世界银行总裁,说,我给你推荐一个副总裁!
总裁说,可是我有太多副总裁了,多余了!
爹说,可是这个小伙子是比尔盖茨的女婿! 
总裁说,这样,行!
posted @ 2008-06-17 17:29 Jcat 阅读(195) | 评论 (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 阅读(215) | 评论 (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 阅读(292) | 评论 (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 阅读(616) | 评论 (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 阅读(255) | 评论 (0)编辑 收藏
编辑 /etc/inittab 文件,找到语句 id:5:initdefault:
5表示启动后直接进入图形界面
3表示启动后直接进入文本界面,登录后可用 startx 进入图形界面


图形界面和文本界面也是可以相互切换的(root权限)
    图-->文    # init 5
    文-->图    # init 3
posted @ 2008-04-22 12:47 Jcat 阅读(261) | 评论 (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 阅读(264) | 评论 (0)编辑 收藏
1NF:属性单一,不可再分(仅一个值仅一种值)
很显然,在当前的任何RDBMS中,傻瓜也不可能做出不符合第一范式的数据库,因为RDBMS不允许你把数据库表的一列再分成二列或多列。实际上,还真有这样的垃圾设计,我在某个项目中遇到,将 first_name,middle_name,last_name放在一个字段的,最后想分都分不开,完全折服。


2NF:消除了部分依赖(部分依赖由复合主键导致,显然所有单主键的表都符合2NF)
<反例> 一个表
(学号, 课程名称)→(姓名, 年龄, 成绩, 学分)
<部分依赖>
(课程名称)→(学分)
(学号)→(姓名, 年龄)
<改正> 改为三个表
(学号)→(姓名, 年龄)
(课程名称)→(学分)
(学号,课程名称)→(成绩)


3NF:消除了传递依赖
<反例>
(学号)→(姓名, 年龄, 学院, 学院地点, 学院电话)
<传递依赖>
(学号)→(学院)→(学院地点, 学院电话)
<改正> 改为两个表
(学号)→(姓名,年龄,学院)
(学院)→(地点,电话)
posted @ 2008-04-16 14:16 Jcat 阅读(400) | 评论 (0)编辑 收藏
-b    当file存在并且是块文件时返回真
-c    当file存在并且是字符文件时返回真
-d    当pathname存在并且是一个目录时返回真
-e    当pathname指定的文件或目录存在时返回真
-f     当file存在并且是正规文件时返回真
-g     当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
-h     当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
-k     当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
-p     当file存在并且是命令管道时返回为真
-r     当由pathname指定的文件或目录存在并且可读时返回为真
-s     当file存在文件大小大于0时返回真
-u     当由pathname指定的文件或目录存在并且设置了SUID位时返回真
-w    当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
-o     当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。

比较字符写法:
-eq    等于
-ne    不等于
-gt     大于
-lt      小于
-le     小于等于
-ge    大于等于
-z      空串
* =    两个字符相等
* !=   两个字符不等
* -n   非空串

posted @ 2008-04-13 15:34 Jcat 阅读(4681) | 评论 (0)编辑 收藏
存储容量:是该存储设备上可以存储数据的最大数量,通常使用千字节(kb kilobyte)、兆字节(MB megabyte)、吉字节(GB, gigabyte)、太字节(TB ,terabyte)和PB(Petabyte)、EB(Exabyte)等来衡量。

1KB=2(10)B=1024B; 括号中的数字为2的指数(即多少次方)
1MB=2(10)KB=1024KB=2(20)B;
1GB=2(10)MB=1024MB=2(30)B。
1TB=2(10) GB=1024GB=2(40)B
1PB=2(10) TB=1024TB=2(50)B
1EB=2(10) PB=1024PB=2(60)B

1Byte相當於一個英文字母。
Kilobyte(KB)=1024B相當於一則短篇故事的內容。
Megabyte(MB)=l024KB相當於一則短篇小說的文字內容。
Gigabyte(GB)=1024MB相當於貝多芬第五樂章交響曲的樂譜內容。
Terabyte(TB)=1024GB相當於一家大型醫院中所有的X光圖片資訊量。
Petabyte(PB)=l024TB相當於50%的全美學術研究圖書館藏書資訊內容。
Exabyte (EB)=1024PB;5EB相當於至今全世界人類所講過的話語。
Zettabyte(ZB)=1024EB如同全世界海灘上的沙子數量總和。
Yottabyte(YB)=1024ZB相當於7000位人類體內的微細胞總和。


厂商制造硬盘时, 1K=1000B,1M=1000K,1G=1000M
所有标80G的硬盘,拿到电脑里就变小了(除以3个1.024):74.5 = 80 ÷ 1.07374

-----------

1 Byte = 8 bit,8位2进制数,2的8次方,256

一般网络的速度是以“位每秒”(bps)来表示。注意,是小写b(位),而不是大写B(字节)。所以,显示的网络速度是需要除8的
比如我的230K的无线猫,也就是说它一秒钟可传输230K个bit,其实也就28K个字节,而且这28K还只是理想值,最快确实达到过20K,一般能有5K都笑了。
posted @ 2008-04-07 11:41 Jcat 阅读(239) | 评论 (0)编辑 收藏
NPV - Net Present Value - 净现值: 通过对未来的现金流按照一定的利率进行贴现,并求总。
         irr.gif
注:IRR就是NPV=0时的r

e.g. 我做过的一个金融项目中, I0=financed amount(放出去的贷款),I1=I2=...=In=installment(还回来的月供,因为采用的等额还款法,自然是相同的咯),n=term(贷了多少期,也就是月)
注意,I1+I2+...+In > I0,废话,不然怎么赚钱呢。



IRR - Internal Return Rate - 内部收益率:使净现值等于零时的折现率。
1)计算过程是不断迭代的。推测一个初始r值,然后不断逼近,直至方程等于或接近零。(试误法、插值法)
2)优点是可以从动态的角度直接反映投资项目的实际收益水平,又不受行业基准收益率高低的影响,比较客观。
3)缺点是计算过程复杂,尤其当经营期大量追加投资时,又有可能导致多个IRR出现,或偏高或偏低,缺乏实际意义。
4)只有内部收益率大于或等于行业基准收益率的投资项目才具有财务可行性。
5)是一种用来表示年度企业综合收益率的指标。
6)Average IRR:The arithmetic mean of the internal rate of return.


ROI - Return On Investment - 投资回报率:是指达产期正常年度利润或年均利润占投资总额的百分比。
1)公式:ROI = 年利润或年均利润/投资总额 × 100%
2)优点是计算简单
3)缺点是没有考虑资金时间价值因素,不能正确反映建设期长短及投资方式不同和回收额的有无等条件对项目的影响
4)只有投资利润率指标大于或等于无风险投资利润率的投资项目才具有财务可行性。
5)往往具有时效性,回报通常是基于某些特定年份。


<补充>
    内部收益率(IRR)和投资回报率(ROI)均是技术经济学的概念。我们在投资建设中为了达到某种预期的目标,可制订多种不同的技术方案进行决策,而不同的技术方案所要的各种资源投入和由此带来的经济效果是不同的。技术经济分析主要解决两个问题,一个是判断投资方案的经济效益是否可以满足某一绝对检验标准的要求,即解决方案的“筛选”问题,二是对于多种备选方案,选择经济效益最好的方案,即解决方案的“择优”问题。
    对项目投资效果进行经济评价的方法,概括起来分为两大类,即静态分析方法和动态方法,静态分析法不考虑资金的时间价值,比较简易实用,对若干方案进行粗略评价或对短期投资项目经济分析时,可用这种方法。
    动态分析法考虑资金的时间价值,主要特点是用货币的时间价值原理将项目方案在不同时间发生的费用和效益,换算为同一时间的费用和效益,这不仅使技术方案本身的经济性分析有了科学的依据,而且使不同方案之间有了可比性。
    IRR是动态分析法之一,其他还有净现值法、年值法、投资回收期法(动态)等。ROI属于静态分析法,其他还有投资回收期法(静态)、最小费用法、追加投资效果评价法等。
posted @ 2008-04-01 22:45 Jcat 阅读(1989) | 评论 (0)编辑 收藏
Declaring and Initialization
Option   Explicit
 
Sub  arrayInVBA()
    
Dim  a1( 5 As   String
     Debug.Assert 
LBound (a1)  =   0
     Debug.Assert 
UBound (a1)  =   5
     Debug.Assert 
TypeName (a1)  =   " String() "

    
Dim  a2( 2   To   5 As   Integer
     Debug.Assert 
LBound (a2)  =   2
     Debug.Assert 
UBound (a2)  =   5
     Debug.Assert 
TypeName (a2)  =   " Integer() "

    
Dim  arrayFunction: arrayFunction  =  Array( " aa " " bb " " cc " " dd " " ee " " ff " )
     Debug.Assert 
LBound (arrayFunction)  =   0
     Debug.Assert 
UBound (arrayFunction)  =   5
     Debug.Assert 
TypeName (arrayFunction)  =   " Variant() "

    
' initialize by Array() function
     Dim  i  As   Integer
    
For  i  =   0   To   5
        a1(i) 
=  arrayFunction(i)
    
Next  i
    
    
For  i  =   0   To   5
       Debug.Print a1(i)
    
Next  i
End Sub
posted @ 2008-03-28 18:11 Jcat 阅读(346) | 评论 (0)编辑 收藏
Note If you need to determine whether an optional argument was passed to a function, you MUST declare the optional argument as a Variant data type. Then you can use the IsMissing function within the procedure.

Option Explicit

Function explicitType(Optional s As Integer)
    Debug.Assert IsNull(s) 
= False
    Debug.Assert IsMissing(s) 
= False
    Debug.Assert s 
= 0
    explicitType 
= s
End Function


Function variantType(Optional s)
    Debug.Assert IsNull(s) 
= False
    Debug.Assert IsMissing(s) 
= True
    'Debug.Print s  'Error 448
    variantType = s
End Function


Sub test()
    Debug.Print explicitType()
    Debug.Print variantType()
End Sub

posted @ 2008-03-28 16:23 Jcat 阅读(255) | 评论 (0)编辑 收藏
<引言>
    随着社会的发展,在现代信息系统的开发中,需要存储的已不仅仅是简单的文字信息,同时还包括一些图片和音像资料或者是超长的文本。比如开发一套旅游信息系统,每一个景点都有丰富的图片、音像资料和大量的文字介绍。这就要求后台数据库要有存储这些数据的能力。
    ORACLE自Oracle8i起通过提供LOB字段实现了该功能。

<LOB分类>
    LOB,即Large Objects(大对象),是用来存储大量的二进制和文本数据的一种数据类型(一个LOB字段可存储可多达4GB的数据)。它又分为两种类型:内部LOB和外部LOB。
    1.内部LOB将数据以字节流的形式存储在数据库的内部。因而,内部LOB的许多操作都可以参与事务,也可以像处理普通数据一样对其进行备份和恢复操作。Oracle支持三种类型的内部LOB:
    1)BLOB(二进制数据)
    2)CLOB(单字节字符数据)
    3)NCLOB(多字节国家字符数据)。
    其中CLOB和NCLOB类型适用于存储超长的文本数据,BLOB字段适用于存储大量的二进制数据,如图像、视频、音频等。

    2.目前只支持一种外部LOB类型,即BFILE类型。在数据库内,该类型仅存储数据在操作系统中的位置信息,而数据的实体以外部文件的形式存在于操作系统的文件系统中。因而,该类型所表示的数据是只读的,不参与事务。
    该类型可帮助用户管理大量的由外部程序访问的文件。


<LOB存储方式>
    LOB由两部分组成:数据(值)和指向数据的指针(定位器)。尽管值与表自身一起存储,但是一个LOB列并不包含值,仅有它的定位指针。更进一步,为了使用大对象,程序必须声明定位器类型的本地变量。

    当内部LOB被创建时,定位器被存放在列中,值被存放在LOB段中,LOB段是在数据库内部表的一部分。
    当BFILE被创建时,定位器如同平常一样存储在列中,但是它的值被存储在数据库之外的操作系统文件中。
posted @ 2008-03-27 11:12 Jcat 阅读(261) | 评论 (0)编辑 收藏
Controlling Function Recalculation
' the same as Round excel-function
Function  nonStaticRand()
    Application.Volatile 
True
    nonStaticRand 
=   Rnd ()    ' Rnd is a vba-function
End Function

' Calculate only once, so rand number won't be changed afterwards
Function  staticRand()
    Application.Volatile 
False    ' you can ignore this line, default is False
    staticRand  =   Rnd ()
End Function

posted @ 2008-03-26 16:26 Jcat 阅读(199) | 评论 (0)编辑 收藏
     ' 'Logical Structures
     Dim  flag  As   Integer
    
' 1)
     If   True   Then  flag  =   1   Else  flag  =   0
    Debug.Assert flag 
=   1
    
' 2)
     If   False   Then
        flag 
=   1
    
Else
        flag 
=   0
    
End   If
    Debug.Assert flag 
=   0
    
' 3)
    flag  =   IIf ( True 1 0 )
    Debug.Assert flag 
=   1
    
    
' 'Logical Operators
    Debug.Assert ( 1   =   1 =   True
    Debug.Assert 
Not  ( 1   =   1 =   False
    Debug.Assert (
True   And   False =   False
    Debug.Assert (
True   Or   False =   True


' 'Loop Structure
For  i  =   1   To   5
    
    
If    Then
        
Exit   For   ' 相当于Break
     End   If
Next  i

posted @ 2008-03-25 18:05 Jcat 阅读(205) | 评论 (0)编辑 收藏
<概述>
LINUX文件权限针对的对象分三类(互斥的关系):
1. user(文件的拥有者)
2. group(文件拥有者所在的组,但不包括user)
3. other(其它用户,即user和group以外的)

LINUX用一个3位二进制数对应着文件的3种权限(1表示有该权限,0表示无):
第1位    读        r    100    4
第2位    写       w    010    2
第3位    执行    x    001    1


<CMD>
查看权限
#ls -l

第一列,一共10位(drwxrwxrwx),就代表了文件的权限:
1)第一个d代表是一个目录,如果显示“-”,则说明不是一个目录
2)2-4代表user的权限
3)5-7代表group的权限
4)8-10代表other的权限

对于后9位:
r 代表可读(read),其值是4
w 代表可写(write),其值是2
x 代表可执行(execute),其值是1
- 代表没有相应权限,其值是0



修改文件权限
# chmod [ugoa][+-=][rwx] 文件名

1)用户
u 代表user
g 代表group
o 代表other
a 代表全部的人,也就是包括u,g和o

2)行动
+ 表示添加权限
- 表示删除权限
= 表示使之成为唯一的权限

3)权限
rwx也可以用数字表示法,不过很麻烦要自己算,比如 rw=6




<常见权限>
-rw------- (600) 只有所有者才有读和写的权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限,最大权限


<trick>
如果只拥有一个文件的r权限,也是可以执行它的,只需在最前面加个点加个空格,e.g.:
#. /etc/bashrc

通过 # man . 可以找到官方的解释:
. filename [arguments]
Read  and  execute  commands from filename in the current shell environment and return the exit status of the last command executed  from  filename.

其实这也合理:我可以r,就可以把内容copy出来,就可以自己造一个文件来实现同样的功能。



<解读 ls -l 命令>
drwxr-xr-x   2 root oinstall 4096 Jun  6 19:02 oracle
drwxrwxr-x  20 root sinstall 4096 Apr 22 14:03 sybase
一个文件(夹),有两个owner
1. user
2. group

创建一个文件时,它默认属于创建它的user,以及这个user所在的group。
这两个owner其实是相互独立的(它们的权限也是相互独立的):一个文件可以属于user a,并指定它属于非a所在的组B。自然的,组B的成员b也就享有了这个文件。
(安装oracle时的用户设置就是很好的例子)
# chown user_a file_test
# chown :group_B file_test

posted @ 2008-03-25 17:25 Jcat 阅读(366) | 评论 (0)编辑 收藏
<一般模式>
Undo

u

删除当前行
dd

复制当前行
yy

粘贴
p

进入 和 退出编辑模式
i 和 Esc 

向前查询
/abc
向后查询
?abc
向前继续查询
n
向后继续查询
N


<命令行模式>
write and quit
:wq [文件名--对于创建新文件时需要]

quit without write

:q!
posted @ 2008-03-25 16:42 Jcat 阅读(190) | 评论 (0)编辑 收藏
文件相关
拷贝文件夹及其所有内容(递归)
# cp -r 文件夹名 目标路径

删除空文件夹

# rmdir 文件夹名

删除非空文件夹

# rm -rf 文件夹名
查看隐藏文件
# ls -a
更改文件名
# mv 源文件名 目文件名
批量更改文件名:Rename the specified files by replacing the first occurrence of from in their name by to
# rename from to file...
查看文件类型(Linux并不是靠后缀来决定文件类型的)
# file 文件名


用户相关
查看所有用户 or 所有组
看第三个参数,500以上的,就是后面建的用户了,其它则为系统用户。
# cat /etc/passwd   or   # cat /etc/group
滤掉系统用户
# cat /etc/passwd | grep home

删除用户 or 组

# userdel 用户名  or  # groupdel 组名
更改用户的工作目录
# usermod -d 目录路径 用户名

更改用户所属组,是覆盖
# usermod -g 组名 用户名
将用户添加到某个组,是叠加作为非默认组
# usermod -G 组名 用户名

 


系统状态相关
查看进程
# ps
进程列表,可以实时刷新的
# top
查看端口使用情况
# netstat



网络相关
重启网络连接
# /sbin/service network restart
关闭防火墙
# /sbin/service iptables stop
查看网卡地址
# ifconfig
查看网关
(Genmask=0.0.0.0的那个就是网关)
# netstat -r
查看DNS
(Genmask=0.0.0.0的那个就是网关)
# route -n


其它
查看命令的路径(比如那些通过PATH而到处都可以运行的命令)
# type 命令名
清屏

# clear
关机
# /sbin/shutdown -h now
一分钟以后关机
# /sbin/shutdown -h +1
posted @ 2008-03-25 16:34 Jcat 阅读(294) | 评论 (0)编辑 收藏
Options
Option Explicit

You must explicitly define each variable that you use.

Option Private Module
You can force all procedures in a module to be private - even those declared with the Public keyword.
You can omit the Private keyword from your Sub declarations.

Option Base [01]
The lower bound of an array, created using the Array function, is determined by Option Base statement at the top of the module. The default lower bound is 0


Declaring Variables
Dim  变量  As   String
变量 
=   " initialization "

Const  常量  As   String   =   " initialization "

Dim  定长字符串  As   String   *   10
定长字符串 
=   " 超过ten个无效(中文英文都算1个,看来编码用的unicode) "



Executing Sub from another Procedure
Option   Explicit


Sub  executingWay()
    add 
" flame " 1 2

    Call  add( " call " 1 2 )

    Dim  subName  As   String : subName  =   " add "
    Run subName, 
" run " 1 2
End Sub


Sub  add(exeBy  As   String , x  As   Integer , y  As   Integer )
    MsgBox  exeBy  &   " "   &  (x  +  y)
End Sub


Executing Function from another Procedure
Option   Explicit

Function  executingWay()
    Debug.Print add(
" flame " 1 2 )

    Dim  funcName    As   String : funcName  =   " add "
    Debug.Print Run(funcName, 
" run " 1 2 )
End Function


Function  add(exeBy  As   String , x  As   Integer , y  As   Integer As   String
    add 
=  exeBy  &   " "   &  (x  +  y)
End Function

posted @ 2008-03-20 11:16 Jcat 阅读(218) | 评论 (0)编辑 收藏
# As long as the world turns, users will still have problems
# Substance abusers and computer operators are the only folks called users. This isn't by chance
# When in doubt. Reboot
# Sooner or later you will meet a person who types out the words "backslash" or forgets to plug in the power cord. If you haven't yet, just wait, you will
# Fear the phone. No one just calls tech support to wish you good morning
# No user will tell you the whole truth at the beginning of a call
# "I didn't do anything" or "It just happened" Are the users mantra
# As a support tech, it is your job to break down resistance and get the truth
# This is so you can rub the lie in their face, fixing the issue is just a perk
# Some people will never learn
# This means you will always have a job
# Maintain a calm voice, even if you're screaming on the inside
# The hold button is your friend
# Whatever you do, don't panic
# The answer to all users questions should be "Trust me, I know what I'm doing" even if this is a bald-faced lie
# Users can smell fear. Once you've lost control, all is lost
# A user who is not listening to you anymore, but rather is trying "their own thing" is not worth your time. Simulate a telephone disconnect and hang up. Trust me, you're better off.
# Sometimes fixing a computer is easier than figuring out why it was broken
# Users always want a reason things are fixed. If you're not sure just lie. They won't know anyway. "A stray electron passed through the processor and caused..."
# If possible ask to speak to the youngest person present
posted @ 2008-03-13 17:01 Jcat 阅读(269) | 评论 (0)编辑 收藏
一直在等3xxx点,昨天就40xx了,坚信4000点坚持不了一个月了。
没想到,今天早上3xxx就提前一个月到来了,遗憾等我上网的时候已经涨回到4000了,没法截图。
中午吃了个饭,3xxx再现,爽呀,幸灾乐祸的爽!
3000.JPG


上帝欲其灭亡,必先使其疯狂!

出来混,迟早要还的。

Easy Come, Easy Go. (这本来是个汽车的广告词,用在这儿挺合适)

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

34xx,继续破
风风这个猪,说破了3500就进场,结果现在又不敢进了,说等2xxx~
3500.JPG

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

299x,今天惊现了一下,不过随后又被拉回3000点了
2xxx.JPG

印花税下调,冲回3500,然后又开始挣扎,今天终于又跌破3000,似乎很惨,叫你拔苗助长吧。
return 29xx.JPG

2200也快保不住咯,yeah,合理合法圈钱咯
2200.JPG
posted @ 2008-03-13 12:59 Jcat 阅读(239) | 评论 (0)编辑 收藏

PowerDesigner


Enterprise architecture modeling and design solution

Build or re-engineer your applications using PowerDesigner, Sybase's all-in-one enterprise modeling and design solution.

PowerDesigner 12.5, a model-driven approach to aligning business and IT, is an enterprise modeling and design solution that helps you implement effective enterprise architecture. It brings powerful analysis and design techniques to your development lifecycle.

PowerDesigner:数据库建模工具,与ERWin等工具起名,它的归类是 Modeling & Metadata


PowerBuilder


A 4GL rapid application development tool

Accelerate development with PowerBuilder, the market’s favorite 4GL RAD tool.

PowerBuilder lets you stay ahead of the development curve and offers the flexibility to develop for your most productive platform. PowerBuilder 11.1 incorporates new and emerging technologies that let you to build traditional two-tier applications, distributed applications, Web applications and Smart Clients with speed and ease. And with this new release, you can easily deploy your existing PowerBuilder applications to .NET. Get started with PowerBuilder 11.1 today, and see how quickly and easily you can build data-driven applications.


PowerBuilder:是公司随数据库产品的一个前台开发工具,专门开发应用程序的。它的归类是 Development
posted @ 2008-03-10 16:55 Jcat 阅读(288) | 评论 (0)编辑 收藏

Adaptive Server Enterprise


Mission-critical enterprise data management

Adaptive Server Enterprise is the mission-critical data management system for taming the information explosion.

Adaptive Server Enterprise (ASE) has long been noted for its reliability, low total cost of ownership and superior performance. With its latest version, ASE 15, it has been dramatically enhanced to deliver capabilities urgently needed by enterprises today. It lays the long-term foundation for strategic agility and continuing innovation in mission-critical environments. ASE 15 provides unique security options and a host of other new features that boost performance while reducing operational costs and risk. Find out how you can exploit new technologies such as grids and clusters, service-oriented architectures and real-time messaging.

ASE:企业及数据库服务器,适合用于企业级OLTP(和混合负载)环境


SQL Anywhere


Sybase iAnywhere - Mobile and Embedded Database

The industry-leading mobile and embedded database, providing data management and exchange technologies that enable applications for frontline environments.

SQL Anywhere provides data management and exchange technologies designed for database-powered applications that operate in frontline environments without onsite IT support. It offers enterprise-caliber features in a database that is easily embedded and widely deployed in server, desktop, remote office and mobile applications.

ASA(Adaptive Server Anywhere):轻量级数据库服务器,适合用于移动计算(PDA、带操作系统的手机等)/嵌入式计算(POS机、路由器等),和工作组级OLTP环境,特别是移动计算/嵌入式计算。(我估计ASA现在改名叫SQL Anywhere了)


Sybase IQ


Highly optimized business intelligence, analytics and data warehousing

The smartest way to deliver high-performance enterprise analytics and data warehousing with dramatically faster results at a low cost.

Sybase IQ is a highly optimized analytics server designed specifically to deliver faster results for mission-critical business intelligence, data warehouse and reporting solutions on any standard hardware and operating systems. It works with diverse data – including unstructured data – and diverse data sources to deliver unsurpassed query performance at the lowest price/performance available.

ASIQ:企业级数据仓库数据库服务器,适合于DSS环境中的企业级数据仓库和数据集市




谨以此篇记录我开始Sybase之旅的第一步
posted @ 2008-03-10 16:33 Jcat 阅读(286) | 评论 (0)编辑 收藏

[1] 好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安 排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业 有那么几年的体会,以后钱根本不是问题。频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手!

[2]可以做技术,切不可沉湎于技术。千万不可一门心思钻研技术!给自己很大压力,如果你的心思全部放在这上面,那么注定你将成为孔乙己一类的人物!适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的支柱,除非你只愿意到老还是个工程师!

[3] 不要去做技术高手,只去做综合素质高手!在企业里混,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官!”这是普遍的典型的工程师的迂腐 之言。8051很牛吗?人家能上去必然有他的本事,而且是你没有的本事。你想想,老板搞经营那么多年,难道见识不如你这个新兵?人家或许善于管理,善于领 会老板意图,善于部门协调等等。因此务必培养自己多方面的能力,包括管理,亲和力,察言观色能力,攻关能力等,要成为综合素质的高手,则前途无量,否则只 能躲在角落看示波器!技术以外的技能才是更重要的本事!!从古到今,美国日本,一律如此!

[4] 多交社会三教九流的朋友!不要只和工程师交往,认为有共同语言,其实更重要的是和其他类人物交往,如果你希望有朝一日当老板或高层管理,那么你整日面对的 就是这些人。了解他们的经历,思维习惯,爱好,学习他们处理问题的模式,了解社会各个角落的现象和问题,这是以后发展的巨大的本钱,没有这些以后就会笨手 笨脚,跌跌撞撞,遇到重重困难,交不少学费,成功的概率大大降低!

[5]知识涉猎不一定专,但一定要广!多看看其他方面的书,金融,财会,进出口,税务,法律等等,为以后做一些积累,以后的用处会更大!会少交许多学费!!

[6] 抓住时机向技术管理或市场销售方面的转变!要想有前途就不能一直搞开发,适当时候要转变为管理或销售,前途会更大,以前搞技术也没有白搞,以后还用得着。 搞管理可以培养自己的领导能力,搞销售可以培养自己的市场概念和思维,同时为自己以后发展积累庞大的人脉!应该说这才是前途的真正支柱!!!

[7] 逐渐克服自己的心里弱点和性格缺陷!多疑,敏感,天真(贬义,并不可爱),犹豫不决,胆怯,多虑,脸皮太薄,心不够黑,教条式思维。。。这些工程师普遍存 在的性格弱点必须改变!很难吗?只在床上想一想当然不可能,去帮朋友守一个月地摊,包准有效果,去实践,而不要只想!不克服这些缺点,一切不可能,甚至连 项目经理都当不好--尽管你可能技术不错!

[8]工作的同时要为以后做准备!建立自己的工作环境!及早为自己配置一个工作环境,装备电脑, 示波器(可以买个二手的),仿真器,编程器等,业余可以接点活,一方面接触市场,培养市场感觉,同时也积累资金,更重要的是准备自己的产品,咱搞技术的没 有钱,只有技术,技术的代表不是学历和证书,而是产品,拿出象样的产品,就可技术转让或与人合作搞企业!先把东西准备好,等待机会,否则,有了机会也抓不 住!

[9] 要学会善于推销自己!不仅要能干,还要能说,能写,善于利用一切机会推销自己,树立自己的品牌形象,很必要!要创造条件让别人了解自己,不然老板怎么知道 你能干?外面的投资人怎么相信你?提早把自己推销出去,机会自然会来找你!搞个个人主页是个好注意!!特别是培养自己在行业的名气,有了名气,高薪机会自 不在话下,更重要的是有合作的机会...

[10]该出手时便出手!永远不可能有100%把握!!!条件差不多就要大胆去干,去闯出自己的事业,不要犹豫,不要彷徨,干了不一定成功,但至少为下一次冲击积累了经验,不干永远没出息,而且要干成必然要经历失败。不经历风雨,怎么见彩虹,没有人能随随便便成功!

posted @ 2008-03-10 14:02 Jcat 阅读(203) | 评论 (0)编辑 收藏
智慧确实是过时了,现在要的是“商业智能”(Biz Intelligence)。Intelligence是什么呢?我们可以从构词法去解析。先看这个词的前几个字母:intel。

INTEL的总裁有一句话:“只有偏执狂才能生存”。这深刻揭示了商业智能的本质。罗素说的智慧是要抛弃自我,以全人类福祉为念的全面思考。这在商业现实社会必然行不通。只有偏执狂才能生存!

从理念来说,必须要自私、偏见。
从技术上说,无论手动的OLAP,还是机动的关联规则、分类模型等数据挖掘,无一不是为了寻找偏见从而制造偏见或利用偏见。

只有功利、贪婪、自私、狭隘,才能成就成功的商业智能。
posted @ 2008-02-21 16:46 Jcat 阅读(291) | 评论 (0)编辑 收藏
春节后第一天上班,无事,把一些金融词汇在网上搜了一遍,才发现越搜新的词汇越多。
可能以下的词汇我们都是耳熟能详,但你真正知道他们的定义吗:

股票


骗线
大户利用股民们迷信技术分析数据、图表的心理,故意抬拉、打压股指,致使技术图表形成一定线型,引诱股民大量买进或卖出,从而达到他们大发其财的目的。这种期骗性造成的技术图表线型称为骗线。


基金的各种仓

次贷(针对优贷--正常的贷款--来说的)
银行对信用不好的用户发放的利息较高的风险较大的贷款。

期货

平仓
如果交易者将这份期货合约保留到最后交易日结束他就必须通过实物交割或现金清算来了结这笔期货交易。然而,进行实物交割的是少数,大部分投机者和套期保值 者一般都在最后交易日结束之前择机将买入的期货合约卖出,或将卖出的期货合约买回。即通过一笔数量相等、方向相反的期货交易来冲销原有的期货合约,以此厂 结期货交易,解除到期进行实物交割的义务。这种买回已卖出合约,或卖出己买入合约的行为就叫平仓。

期权
期权是指在未来一定时期可以买卖的权力,是买方向卖方支付一定数量的金额(指权利金)后拥有的在未来一段时间内(指美式期权)或未来某一特定日期(指欧式期权)以事先规定好的价格(指履约价格)向卖方购买或出售一定数量的特定标的物的权力,但不负有必须买进或卖出的义务。


认购权证(看涨期权),认沽权证(看跌期权)
当股价高于行权价格时,认购权证投资者则从股价上涨中获得盈利,当股价低于或等于行权价格时,将损失认购权证的费用,认购权证投资者希望通过股票上涨从中获利。
相反,认沽权证则是当股价低于行权价格时,从股价下降中获得收益,当股价高于或等于行权价格时,投资者将损失认沽权证的费用,认沽权证投资者希望通过股票下跌从中获利。

做多:没有货先买后卖。 做空:没有货先卖后买。


买空(借钱买股)

卖空(借股卖钱)
卖空是指股票投资者当某种股票价格看跌时,便从经纪人手中借入该股票抛出。若日后该股票价格果然下落时,再从更低的价格买进股票归还经纪人,从而赚取中间差价。


对冲基金
最初的对冲操作中,基金管理者在购入一种股票后,同时购入这种股票的一定价位和时效的看跌期权(Put Option)。看跌期权的效用在于当股票价位跌破期权限定的价格时,卖方期权的持有者可将手中持有的股票以期权限定的价格卖出,从而使股票跌价的风险得到对冲。在另一类对冲操作中,基金管理人首先选定某类行情看涨的行业,买进该行业几只优质股,同时以一定比率卖出该行业中几只劣质股。如此组合的结果是,如该行业预期表现良好,优质股涨幅必超过其他同行业的股票,买入优质股的收益将大于卖空劣质股的损失;如果预期错误,此行业股票不涨反跌,那么较差公司的股票跌幅必大于优质股,则卖空盘口所获利润必高于买入优质股下跌造成的损失。

。。。。。。。。

不知道也别急,网上一搜,咱们非专业人士,了解个大概也就可以了,和别人聊天不至于像个白痴。更重要的是,了解一些金融知识对理财也是很有帮助的。
posted @ 2008-02-15 14:35 Jcat 阅读(273) | 评论 (0)编辑 收藏
<钱>
舅舅家--南苑机场:公交车,忽略不计
北京--成都:联航,9折,1450元
双流机场到成都市区:机场大巴,10元
市区到家:打车,12元
共计:1472元

<时间>
1:30 从舅舅家出发
3:00 到达南苑机场
3:55 本应该这时起飞,但延误了
5:00 开始检票
6:00 候机大厅开始发晚餐
7:30 终于登机
10:30 安全着陆
11:30 到家
共计:10小时
posted @ 2008-02-03 02:09 Jcat 阅读(151) | 评论 (0)编辑 收藏
1-13    小二生日                    海底捞:变贵了
1-15    小圣结婚                    阳坊涮(羊)肉:实惠,撑死了
1-16    猫咪请客                    鱼酷:模仿翅酷,要就要最辣的
1-18    初中聚会                    韩国烧烤:喝酒伤身
1-19    北理1136聚会        坪亭日本料理自助:安静,适合和好朋友吃完了继续聊天,喜欢    
1-20    跳跳回国                    东北灶台鱼:用木柴烧,有意思,就是不太环保

八天有六天都有饭局
posted @ 2008-01-22 00:01 Jcat 阅读(226) | 评论 (0)编辑 收藏
早上5:30起床,6点出门去地坛等班车,冻的都SB了。(还有一次把班车误了,坐地铁去上地,再60元的打车,心疼呀)
在班车上听着MP3继续睡觉,1个来小时,到达海淀驾校。殊不知已经坐的腰酸背痛了,班车的椅子坐着特别难受。没办法,难受也得睡呀。
一上午,练3个半小时的车,排队刷卡下车,又坐班车,继续睡觉,继续腰酸背痛。在中日附近吃个午饭,下午还要上班。

就这样,隔一天学一次车,10天一共突击学了5次(之前一周去一次,一个月才学了4次)。终于学了9次了,还剩2次,也可以考桩了,就要熬出来了。


--桩考心得--
倒桩:离合要慢(轻),要稳(压住了);方向盘要快,打死宁早不宁晚(打早了,回一点还能调整过来,打晚了就只能等撞杆了);停车多点余地,以免撞线。


--场考心得--
起步:多抬点离合,直到车开始颤抖;松手刹后慢抬离合;油门要稳,不要途中降下来了,不要猛的踩大了。

加档:先加速(油门),再迅速加档(下坡或速度提的比较好时,可以快抬离合)
减档:先减速(刹车),再迅速减档

打灯:环岛1入2出,右灯(无跨口);1入3、4、1出,入左出右(有跨口);提前提前提前打灯(起步左、拐弯并线右、停车右)

需要用一档的科目:定点停车、直角弯、S路。

靠边停车:几档都可以停,离合踩死,用刹车控制车速,雨刷器对上边线。

三档拐弯:刹车控制车速,减二档,慢慢松离合(不要一下松刹车,继续控制车速,速度低了就松点刹车)

侧方下:右灯,倒档,松手刹,点对左前杆时右打满;看坐反光镜,出现第二根杆(右后杆)时,回两圈;看右窗,左前杆消失时,左打满,左前脚对左前杆停车,拉手刹。
侧方上:左灯,一档,松手刹,雨刷器突起对左前杆时回两圈;看右窗,左前杆出现时,右打满,向前走。

调头向右借轮,车头碰中线左打满。

定点停车,车头碰线收油,反光镜下压线猛踩离合+刹车。


--路考心得--
请求起步前,检查反光镜,轰油门,安全带,关转弯灯。

过人行道,减一档,不踩油门。

调头不受灯限制。

辅路30公里4档。

进主路,先进最右,再并中。并线看镜。

靠边停车要摇头看镜,不要连并2道。

左转别进掉头道。

前方公交停车,过不去,原地停车,不准超。





2008-01-23   桩考通过咯
2008-01-30   11次课终于学完了。还有2次考试,外加3次集中,春节回来再说了,麻烦。
2008-02-24   场地路考集中,如果我是马路杀手,我的同学们就是马路恶魔。跟死一个教练学的好处,可以多学点。学车不是为考试,是为自己(安全)。
2008-02-25   场地路考,就考了定点停车、坡起、侧方,10分钟轻松通过。
2008-03-10   两周过去了,终于通知我实际路考了。
2008-03-15、16   路考集中
2008-03-17   最后一哆嗦,简单,也就5分钟,弯都没有拐。不过也蛮紧张的,我是第六个,前面舌了2个。我走时考到第10个,舌了4个。
2008-03-29   来回坐了4个小时的公交车,拿到驾照咯,哈哈哈。跳跳今天第一天上车,她爽了。
posted @ 2008-01-16 22:37 Jcat 阅读(393) | 评论 (0)编辑 收藏
时间                     巨头厂商         BI厂商(排名)                     亿USD
2007年3月1日       美国Oracle     美国Hyperion(4)                     33

2007年10月7日     德国SAP        法国BusinessObjects(1)          68

2007年11月14日   美国IBM        加拿大Cognos(3)                   50

注:请勿纠缠排名的准确性,参考一下而已


还有谁在等待收购:美国SAS(2), 美国MicroStrategy
潜在的买主:MicroSoft(和MSTR名字上挺般配)? HP? 干脆 Google 吧(离谱了点)


总结:巨头厂商收购领头的BI厂商,而这些领头的BI厂商在收购之前,往往也收购了许多小的BI厂商。

趋势:独立BI厂商会越来越少,甚至消亡,这对BI业的发展是福是祸,只能等待市场的检验。

ORACLE说:我是全球最大的企业软件公司
SAP说:我是全球最大的企业管理软件和解决方案厂商
IBM说:我是全球最大的计算机公司


有趣:从国家来看,代表欧洲的德法联盟相当华丽(SAP是ERP的老大,BO是BI的老大),但其它的牛公司都集中在了北美(美国)。
似乎地理位置也是收购中需要考虑的因素(离自己近当然便于管理咯)。
posted @ 2007-11-14 13:53 Jcat 阅读(305) | 评论 (0)编辑 收藏

发展速度由于采用基期的不同,可分为同比发展速度、环比发展速度和定基发展速度。均用百分数或倍数表示。



同比发展速度主要是为了消除季节变动的影响,用以说明本期发展水平与去年同期发展水平对比而达到的相对发展速度。如,本期2月比去年2月,本期6月比去年6月等。
     在实际工作中,经常使用这个指标,如某年、某季、某月与上年同期对比计算的发展速度,就是同比发展速度。



环比发展速度是报告期水平与前一时期水平之比,表明现象逐期的发展速度。如计算一年内各月与前一个月对比,即2月比1月,3月比2月,4月比3月 ……12月比11月,说明逐月的发展程度。如分析抗击"非典"期间某些经济现象的发展趋势,环比比同比更说明问题。

  

     定基比发展速度也叫总速度。是报告期水平与某一固定时期水平之比,表明这种现象在较长时期内总的发展速度。如,"九五"期间各年水平都以1995年水平为基期进行对比,一年内各月水平均以上年12月水平为基期进行对比,就是定基发展速度。

posted @ 2007-10-24 13:20 Jcat 阅读(789) | 评论 (0)编辑 收藏

问:你成功的秘诀是什么?

答:两个词。

问:是什么?

答:正确决策。

问:你如何做出正确的决策?

答:一个词。

问:是什么?

答:经验。

问:你如何获取经验?

答:两个词。

问:是什么?

答:错误决策。
posted @ 2007-10-23 12:47 Jcat 阅读(259) | 评论 (0)编辑 收藏
FEBE Firefox Environment Backup Extension

del.icio.us Bookmarks

Flashblock

IE Tab

Gmail Notifier

FlashGot

PDF Download

Flagfox


----not in use----

DownThemAll!

Download Statusbar
posted @ 2007-10-12 15:37 Jcat 阅读(228) | 评论 (0)编辑 收藏
大凡搞某个专业的人总喜欢将自己的专业放在统领一切的位置,喜欢将概念泛化到包罗万象的程度,这跟人喜欢以自我为中心是一个道理。认为自己什么都是的时候,差不多就是什么都不是。
posted @ 2007-10-10 10:15 Jcat 阅读(207) | 评论 (0)编辑 收藏

1.  top N 问题
在sql server中,top N 问题很容易解决,如下例:从表stbdbdj中选取排序后的第一行数据进行赋值。

在sql中解决方法很简单,在select 后面加上:top n 即可,其中 n 代表行数。

select top 1 @entrust_date = entrust_date,
@entrust_no = entrust_no
from run2k..stbdbdj
where entrust_date = @date
and entrust_no > @entrust_no_q
and report_status = '1'
order by entrust_date,entrust_no;


在oracle中,没有top n这个命令,我们采取把两层查询方式解决:首先,把需要查找的字段值直接进行排序,然后在外面进行第二次查询,并使用rownum决定行数。

select entrust_date,entrust_no
into @entrust_date@entrust_no
from ( select entrust_date,entrust_no
from stbdbdj
where entrust_date = @date
and entrust_no > @entrust_no_q
and report_status = '1'
order by entrust_date,entrust_no )
where rownumber <=1 ;



2. 如何解决结果集返回时,* 和变量同时存在的问题
下面例子表示,在用游标返回结果集时,同时返回一个变量的值,在
sql server 中代码如下所示:
select a.*,b.organ_id
from run2k..stbbp a,run2k..stkaccoarg b
where a.date = @entrust_date
and a.serial_no = @serial_no
and a.branch_no = b.branch_no
and a.exchange_type = b.exchange_type;

但在oracle中却没有这种用法,’*’后面必需跟from。解决方法如下:
1)我们可以把 '*' 变成所需要选择的字段,就是说采用表中需要显示的全部字段表示*。
例如:

open  p_cursor  for
select  branch_no,...,organ_id
where ...

2)如果这个字段或者说变量是从另外一张表中取出来的,同样可以采用下面的办法。

open p_cursor for
select a.*,b.organ_id;
from stkaccoentrust a, stkaccoarg b
where a.branch_no = b.branch_no
and a.exchange_type = b.exchange_type
and a.init_date = v_entrust_date
and a.serial_no = v_serial_no;

3. 外联接问题
sql
<---> oracle
a = *b <---> a(+)= b
a *= b <---> a = b(+)

4. 多条记录求和问题
select sum(A+B+C)
into D
from ...
where ...
group by ...

单条记录求和
select A+B
into C
from ...
where ...

5. case 问题转换
sql:
case client_status
when '0' then '正常'
when '1' then '冻结'
when '2' then '挂失'
when '3' then '销户'
else '未知'
end

oracle:
decode(client_status,'0','正常,'1','冻结','2','挂失','3','销户','未知');

6. char 和 varchar 类型区别:
char 尾部补空格,varchar 尾部不补空格。

7. convert转换问题

sql
---> oracle
convert(char(5),branch_no) ---> to_char(branch_no,'99999')
convert(char(19),count(*)) ---> lpad(to_char(count(*)),19)
convert(varchar(20),serial_no) ---> to_char(serial_no,'999...9' )
总共20个9
lpad(to_char(serial_no),20)


8. charindex(substring,string) ---> instr(string,substring)
子串 父串 ---> 父串 子串

posted @ 2007-09-13 15:42 Jcat 阅读(2401) | 评论 (0)编辑 收藏
法一:
开始 --> 运行 --> regsvr32 shell32.dll /n /i:u

法二:
[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop


把上面这段代码拷贝到记事本里,然后存成“显示桌面.scf”。再把这个scf文件拖到快速启动栏,就可以了。

FYI
快速启动栏的路径:C:\Documents and Settings\Jcat\Application Data\Microsoft\Internet Explorer\Quick Launch
posted @ 2007-09-11 21:06 Jcat 阅读(1090) | 评论 (1)编辑 收藏
一、ODBC
ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用 SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。


二、OLE DB
1.  Object Linking and Embedding,对象连接与嵌入,简称OLE技术。OLE不仅是桌面应用程序集成,而且还定义和实现了一种允许应用程序作为软件“对象”(数据集合和操作数据的函数)彼此进行“连接”的机制,这种连接机制和协议称为部件对象模型(Component Object Model),简称COM。OLE可以用来创建复合文档,复合文档包含了创建于不同源应用程序,有着不同类型的数据,因此它可以把文字、声音、图像、表格等组合在一起。

对象链接和嵌入。在客户应用程序间传输和共享信息的一组综合标准。允许创建带有指向应用程序的链接的混合文档以使用户修改时不必在应用程序间切换的协议。 OLE基于组件对象模型(COM) 并允许开发可在多个应用程序间互操作的可复用即插即用对象。该协议已广泛用于商业上,在商业中电子表格、字处理程序、财务软件包和其他应用程序可以通过客户/服务器体系共享和链接单独的信息

2.  OLE DB(OLEDB)是微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB不仅包括微软资助的标准数据接口开放数据库连通性(ODBC)的结构化问题语言(SQL)能力,还具有面向其他非SQL数据类型的通路。作为微软的组件对象模型(COM)的一种设计,OLE DB是一组读写数据的方法(在过去可能被称为渠道)。OLD DB中的对象主要包括数据源对象、阶段对象、命令对象和行组对象。使用OLE DB的应用程序会用到如下的请求序列: 初始化OLE 连接到数据源发出命令 处理结果 释放数据源对象并停止初始化OLE

OLE DB标准中定义的新概念----OLE DB将传统的数据库系统划分为多个逻辑组件,这些组件之间相对独立又相互通信。这种组件模型中的各个部分被冠以不同的名称:数据提供者(Data Provider)。提供数据存储的软件组件,小到普通的文本文件、大到主机上的复杂数据库,或者电子邮件存储,都是数据提供者的例子。有的文档把这些软件组件的开发商也称为数据提供者。

我们要开启如Access 数据库中的数据,必须用ADO.NET 透过OLE DB 来开启。ADO.NET 利用OLE DB 来取得数据,这是因为OLE DB 了解如何和许多种数据源作沟通,所以对OLE DB有相当程度的了解是很重要的。


三、ADO
微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。

ADO被设计来继承微软早期的数据访问对象层,包括RDO (Remote Data Objects) 和DAO(Data Access Objects)。ADO在1996年冬被发布。
ADO是VB6推荐操作数据库的方式。


四、区别和关系
ODBC最先出来,是用来连接oracle、sql server、access等数据库的一种接口标准(后来随着各厂商的扩充,也就都不标准了),各数据库提供实现ODBC的“驱动程序”。ODBC的本意是“ODBC的最大优点是能以统一的方式处理所有的数据库”,其实都是扯淡,因为各数据库对标准SQL都做了大量的扩充,除非你只使用标准的SQL,不然“统一”根本谈不上。

OLE DB是微软“发明”的,用来淘汰ODBC的,OLE DB不光可以连接各种数据库,还可以连接exchange、活动目录、甚至操作系统文件目录等各种数据库源(也需要分别使用不同的“驱动程序”)

ADO也是微软的,是用来淘汰早起微软的RDO、DAO的(ADO可以做RDO、DAO能做的所有事),ADO在上层,通过下面的ODBC或者OLE DB来访问数据源(注意不是数据库,因为可访问范围包括活动目录等各种数据)。不过微软目前的ODBC实际是通过OLE DB访问数据源的。

层次关系:
应用程序 -> ADO -> ODBC -> OLE DB -> 数据源
或者
应用程序 -> ADO -> OLE DB -> 数据源

其实这些都东西可以理解为是和驱动差不多。

五、OLE DB vs ODBC
1. OLE DB 与 ODBC 都是一个数据库连接的公共接口,它们屏蔽了各种数据库的连接协议,使编程人员遵从 OLD DB / ODBC接口,就可以访问各种数据源了。
2. ODBC 比 OLE DB 使用更加广泛,因为 ODBC 出现的要早。
3. OLE DB 可以使用 ODBC 的数据驱动程序。也就是 OLE DB 可以通过 ODBC 访问数据 ODBC数据源。在这个过程中 ODBC 充当了中转的作用,它的运行机制如下。首先,应用程序使用 OLE DB 提供程序,但是这个提供程序里面包含了与ODBC转换的内容。这样,从ODBC源读取的数据经过转换程序,转换为OLE DB可以访问的数据源。这样就实现了 OLE DB 访问 ODBC 的数据源。
当然 OLE DB 也可以不通过 ODBC 访问,前提是该数据源要有OLE DB接口。这种OLE DB 提供程称为本机OLE DB提供程序。
4. 在 Windows 操作系统中,有两个工具分别用于创建 ODBC / OLE DB 数据源
ODBC 数据源:在 "控制面板"中可以找到ODBC 数据源工具
OLE DB 数据源:这个工具通常不能打开, 要通过程序来调才能调出来。它的名字叫"数据链接属性"。
5. SQL Server 自带了 SQL Server / Oracle 的 OLEDB驱动程序。
6. OLE DB 比 ODBC 速度要快。
posted @ 2007-08-26 22:55 Jcat 阅读(1524) | 评论 (0)编辑 收藏
学一个优秀的技术,泡一个优秀的论坛,一步步走来。

Java: cjsdn, blogjava
   |
Oracle: cnoug
   |
BusinessObjects: BOB
posted @ 2007-08-14 13:53 Jcat 阅读(248) | 评论 (0)编辑 收藏
答辩终于结束了,结果是敷衍的(就给10分钟讲PPT,根本讲不完,水过去了),过程是劳人的(太痛苦了,形式比内容重要,材料比论文重要)。

随着答辩的结束,我也要告别Java了(至少近期没有做Java的打算了),正式转入BI业。
posted @ 2007-06-30 14:10 Jcat 阅读(350) | 评论 (4)编辑 收藏
钱多事少离家近,位高权重责任轻;
睡觉睡到自然醒,数钱数到手抽筋。

到时候我就租两套1500的房子,门对门,
一套自己住,一套白给民工住

我租筒子楼的一层,四间都是我的,公用的厕所厨房成我自己的。

最近租房,北京的房子实在太贵了,发泄一下。
posted @ 2007-06-22 00:19 Jcat 阅读(302) | 评论 (0)编辑 收藏

              bank of communications.JPG

12但是也要看看你给了我什么.jpg
posted @ 2007-05-30 00:44 Jcat 阅读(348) | 评论 (3)编辑 收藏
---String---

equals in String
public boolean equals(Object anObject) {
    
if (this == anObject) {
        
return true;
    }
    
if (anObject instanceof String) {
        String anotherString 
= (String)anObject;
        
int n = count;
        
if (n == anotherString.count) {
        
char v1[] = value;
        
char v2[] = anotherString.value;
        
int i = offset;
        
int j = anotherString.offset;
        
while (n-- != 0) {
            
if (v1[i++!= v2[j++])
            
return false;
        }
        
return true;
        }
    }
    
return false;
    }

equals in Object
   public boolean equals(Object obj) {
    
return (this == obj);
    }

    System.out.println(new String("aa").equals(new String("aa"))); //true
    System.out.println(new String("aa"== new String("aa"));      //false
    System.out.println("aa".equals("aa"));                         //true
    System.out.println("aa" == "aa");                              //true

posted @ 2007-05-23 22:35 Jcat 阅读(315) | 评论 (0)编辑 收藏
JAVA_HOME

ANT_HOME

CATALINA_HOME

GROOVY_HOME

GRAILS_HOME

classpath=.
(%JAVA_HOME%\jre\lib is not required)


Path=%JAVA_HOME%\bin;%ANT_HOME%\bin;%CATALINA_HOME%\bin;%GROOVY_HOME%\bin;%GRAILS_HOME%\bin


Note: if you add %GROOVY_HOME%\embeddable\groovy-all-1.0.jar to classpath Grails can't work correctly.
posted @ 2007-05-23 21:39 Jcat 阅读(351) | 评论 (0)编辑 收藏
    你说我是猫,或许我是猫。猫咪很寂寥,在漆黑的夜里,它需要一束温暖的火苗。不止飞蛾会扑火,你可知道,为了驱逐黑暗的冰冷,宁愿选择烈火的燃烧。我怕火,但更怕冷,我怕冷,但更怕温暖突然抽离。上天许我,如不能一世的温暖,就一生的冰冷吧!绝望的一只猫。

    你说我是猫,或许我是猫。猫咪喜欢甜腻,在安详的天空下,品味温馨细腻。不是奢侈的甘美,而是回忆的苦涩,你可知道,一种心情一种泪,娇艳的芙蓉愁苦的 心。不要说猫咪挑食,只是它厌食,厌恶百般萧索的味道,不要说猫咪偏食,只是它眷恋,它执着那沾染鲜血却又难以割舍的尖刀。猫咪说,血,甜的。

    你说我是猫,或许我是猫。猫咪喜欢撒娇,在爱的环绕下,翻腾着犹疑的身躯。不是天性,而为确定,只为确定珍爱的长度。不是本能而是希冀,绝望地期望延伸被爱的感觉。不要说猫咪腻人,它只是悲哀地期望地而又不能确定着爱。

    你说我是猫,或许我是猫。猫咪很骄傲,冷然的双眸审视世间的惨淡,轻盈的身形飘过欢喜哀愁。在风的角落,没有注视的目光,猫咪扯落冷酷的面具,流淌着积攒 的泪水。不爱就不爱,谁在渴望你的关爱。心底,一个声音,“不爱我了,没关系。悄悄地走掉罢,别来辞行,骄傲不是坚强。”
   
    你说我是猫,或许我是猫......
posted @ 2007-05-23 11:47 Jcat 阅读(263) | 评论 (0)编辑 收藏
什么时候,你有整整一天没有上网了?是昨天、上周、还是上个月?
我经常无意识地走向计算机,打开计算机,然后挂在网络上好几个小时,这一切举动不需经过大脑思考,自动得就像梦游一样。这不是我一个人的梦游,这是集体的梦游,我们都已经如同苍蝇被困在网中。

就连性爱都可以在网络上解决...有了网络,干嘛这么麻烦?在无数的色情网站和聊天室,你可以轻易地找到和你一样饥渴的对象,透过网络摄影机,你随时可以在计算机前面宽衣解带。久而久之,你发现,你的性幻想对象居然是计算机屏幕。没了屏幕框,一切变得索然无味,你连性欲都没了。


网络成瘾症:
  强迫性、非自愿地使用网络
  对人际交往失去兴趣(个人补充:这里的人际交往指的是人与人的交往,而不是msn与msn的交往)
  被在线及时活动占据大部分生活的时间
  不能自拔
  而最容易上瘾的是教育程度有限的中年妇女

  (1、2我都占了,如果网速好3也很有可能)

以上摘抄自蔡学镛先生的同名文章


我的目标:
  每周少上一天网(这一天完全不上网)
  每月少开一天计算机(这一天完全不开计算机)
  多运动(右手食指除外)

大猫如是说:
    Money, house, material, ... are all zeros,
    Life, health is the 1 in front of the zeros.
     00000000000000000 is noththing!
    100000000000000000 becomes something!!!

posted @ 2007-05-15 23:38 Jcat 阅读(364) | 评论 (1)编辑 收藏
Q
国内IT界两个怪现象:
1.年纪大了(其实还不到30),不能再编程了。
2.女孩子不适合搞技术。
为什么会这样?国外恐怕不是这样的吧。是不是国人太浮躁了?

A
1.如果这行业很赚钱,就是到60岁也会做下去。
2.如果这行业很赚钱,就是人妖也会适合。
总之,经济规律。 与国别无关。

一段有趣的对话,摘录于此
posted @ 2007-05-13 22:23 Jcat 阅读(253) | 评论 (0)编辑 收藏
ERP是一种软件系统,也是一种系统软件的标准称谓,是Enterprise Resource Plan的缩写,即企业资源规划系统。标准ERP软件的发展过程大致经过了三个阶段。

    MRP(物料需求计划)阶段:这是ERP发展的第一阶段。从生产计划出发,将物料需求区分为独立需求和非独立需求,并分别加以处理。同时对库存状态数据引入时间分段的概念,从而解决了何时定货,以及定货数量的问题。一方面把生产能力作业计划、车间作业计划、采购作业计划纳入MRP,另一方面又在计划执行过程中,加入来自车间、供应商和计划人员的反馈信息,并利用这些信息进行计划的平衡调整,从而围绕着物料需求计划,使生产的全过程形成一个统一系统。

    MRPⅡ(制造资源计划)阶段:这是ERP发展的第二阶段,MRP解决了企业中的物流问题,但却没有涉及到相应的资金流动问题,因此造成了数据的重复输入和不一致性等弊病。为此,必须将物流和资金流统一起来,将相应的财务子系统和生产系统结合起来,形成一个系统整体。这使得原有的MRP系统进步到了可以集制造、财务、销售、采购、工程技术等多个子系统为一体的系统,被称为Manufacturing Resource Planning系统,仍缩写为MRP,并以MRPⅡ来称谓,以区别于物料需求计划系统。

    ERP(企业资源计划)阶段:ERP系统是在MRPⅡ基础上进一步扩展了管理范围,把客户需求和企业内部的制造活动与供应商的制造资源整合在一起,体现了完全按用户需求来制造产品的思想,实现ERP的基本思路将企业的运营流程看作是一个紧密连接着的供应链,整合进了供应商、制造工厂、分销网络、客户资源,同时将企业内部划分成若干个相互协同作业的财务、市场营销、生产制造、人力资源、质量控制、服务维护、工程技术等子系统,并包括了对竞争对手的监视管理等方面,对该链条上的所有环节进行有效的管理,从而产生出采购、库存、计划、生产制造、质量控制、运输、分销、服务与维护、财务管理、人事管理等多个具体项目。


---以下是一个通俗易懂的解释---

我喜欢从字面上去理解一个东西的意思,它常常可能就是事情的本质,呵呵.

    ERP,就是企业资源规划。也就是说,企业如何最有效利用企业资源(也可以说是生产要素,人员、原材料、产能、资金等等),完成经营目标(一般是指及时交货),同时最大化利润。

    这就涉及到几个问题:
    1. 企业要了解目前有多少资源。(原材料数量、设备生产能力等等)
    2. 为完成经营目标,需要多少资源?(哪些需要外购,哪些需要外包等等)
    3. 各种资源如何配置?(如何排产等等)

    而这些都是企业每天都要做的工作,不管这个企业是否有电脑,是否用了软件。企业小的时候,可能是用手工做,企业大了,数据量大了,ERP软件做更快。既然企业资源规划本质上和软件没有必然的关系。因此不要寄望于ERP软件可以改变所有的事情,也就是说,ERP软件只是企业资源规划工作的加速器而已。如果企业用手工已经做得非常好,ERP会是锦上添花,否则是雪上加霜。

    顺着这个思路走下去,为什么ERP不断变化。道理也不复杂,因为资源的定义不断在变。大规模生产时代,可能就是原材料、机器和人工。后来随着现金流和研发变得很重要,又加进了财务、研发管理。再后来,外包流行,资源不仅是指企业内部的资源,也可能包括合作伙伴的产能。
posted @ 2007-05-05 12:23 Jcat 阅读(358) | 评论 (0)编辑 收藏
---BI---
商务智能(Business Intelligence)是指将储存于各种商业信息系统中的数据转换成有用信息的技术。

目前,各个行业都面对着激烈的竞争,及时、准确的决策已成为企业生存与发展的生命线。随着信息技术在企业中的普遍应用,企业产生了大量富有价值的电子数据。但这些数据大都存储于不同的系统中,数据的定义和格式也不统一,商务智能(BI)系统能从不同的数据源搜集的数据中提取(E)有用的数据,并对这些数据进行清洗,以确保数据的正确性,然后对数据进行转换(T)、重构等操作后,将其存入(L)数据仓库或数据集市中;然后运用适合的查询、分析工具、数据挖掘工具、OLAP工具等管理分析工具对信息进行处理,使信息变为辅助决策(DSS)的知识,并将知识以适当的方式展示在决策者面前,供决策者运筹帷幄。

FYI. BO(狭义的,也就是BOE)属于BI中的前端展示工具,当然(广义的)它也包括一些ETL的tool,比如Composer、Data Integrator、Data Federator


---DW---
数据仓库(Data Warehouse)就是面向主题的、集成的、稳定的、不同时间的数据集合,用以支持经营管理中的决策制订过程。(个人感觉这个定义过于飘渺,姑且抄在这)

整个数据仓库系统的体系结构可以划分为以下四个层次。
    数据源是数据仓库系统的基础,是各类数据的源泉,通常包括企业的各类信息。如存放于RDBMS中的各种业务处理数据、各类文档数据、各类法律法规、市场信息,竞争对手的信息等等。
    数据的存储与管理是整个数据仓库系统的核心,是数据仓库的关键。数据仓库的组称管理方式决定了它由别于传统的数据库,同时也决定了其对外部数据的表现形式。数据仓库的组织按照数据覆盖范围可以分为企业级数据仓库和部门级数据仓库(通常称为数据集市)。
    OLAP服务器对分析需要的数据进行有效地集成,按多维模式予以组织,以便进行对角度、多层次的分析,并发现趋势。
    前端工具主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具以及各种基于数据仓库或数据集市的应用开发工具。其中数据分析工具主要针对OLAP服务器,报表工具、数据挖掘工具主要针对数据仓库。

---总结---
    从上面两个定义可以看出,BI和DW有许多概念重叠的地方,甚至让人困惑,这二者的关系又如何?到底谁包含谁呀?本人肤浅的理解是:
    DW概括的是一项技术,而BI概括的是使用(DW)技术的一个领域。或许我们可以说,BI是建立在DW系统上最广泛、最典型的一种应用。
    这里用到了“技术”、“应用”这样的词语来形容BI和DW,并不是在于将这两个概念简陋化,能表达出我的意思就行。


---补充背景---
2004年的BI峰会,确定了BI即是数据仓库之上的查询、报表和多维数据分析。正如本次峰会发言人所概括的当年认为BI是一堆技术工具的集合。

2007年的BI峰会对BI的重定义:我们开始将商业智能视为一个伞状的概念,它包括了分析应用、基础架构和平台和良好的实践。”

BI究竟是干什么的。一个是信息发布,一个是决策支持。

可见,数据仓库、数据标准等平台已经涵盖在BI范畴里,BI已不再是前端展现工具;BI不再仅属于技术的范畴了。

posted @ 2007-04-30 16:51 Jcat 阅读(1835) | 评论 (0)编辑 收藏
    风险管理的一条基本原则是:以最小的成本获得最大的保障。

  (1)回避风险。
  回避风险是指主动避开损失发生的可能性。如考虑到游泳有溺水的危险,就不去游泳。

  (2)预防风险。
    预防风险是指采取预防措施,以减小损失发生的可能性及损失程度。兴修水利、建造防护林就是典型的例子。

  (3)自留风险。
    自留风险是指自己非理性或理性地主动承担风险。自留风险一般适用于对付发生概率小,且损失程度低的风险。

  (4)转移风险。
  转移风险是指通过某种安排,把自己面临的风险全部或部分转移给另一方。通过转移风险而得到保障,是应用范围最广、最有效的风险管理手段,保险就是其中之一。


  风险管理过程包括以下几个基本环节:
    (1)风险识别;
    (2)风险估测;
    (3)风险管理方式选择;
    (4)实施风险管理决策;
    (5)风险管理效果评价。
posted @ 2007-04-29 02:18 Jcat 阅读(1372) | 评论 (0)编辑 收藏
BMW
bmw5.JPG
德语:Bayerische Motoren Werke
英语:Bavarian Motor Works
中文直译:巴伐利亚发动机厂(巴伐利亚是宝马公司所在的州,前身是巴伐利亚飞机发动机厂)
中文意译:宝马(估计连德国人自己都不会想到,BMW在中国还有“宝马”的意思,不得不佩服中文的表达能力)


Business Money Woman(男人先有事业,然后有金钱,然后有女人)
Bie Mo Wo(别摸我,搞笑之余也充分表达了宝马的傲慢与高贵)


宝马品牌中销量最大的是3系轿车,而它是一款标准的中级轿车,在欧洲,它是一款标准的家庭用车。一个普通家庭用他们一年的收入就可以买一辆宝马。但是在中国,它是富贵和权势的象征。

老MINI诞生于英国,代表着1960年代社会历史变革的印记,精巧、富乐趣、激发朝气与自由,是60年代英国的标志之一,1994年德国宝马(BMW) 集团从它原来的生产商Rover接手过来,专心致志进行迷你车的改良工作。新MINI的诞生,代表着高技术含量、高水准的生产工艺、突出的产品特点,还有 强大的品牌形象。

   bmw price.JPG

瑾以此篇纪念今天的宝马之行

posted @ 2007-04-26 13:30 Jcat 阅读(330) | 评论 (0)编辑 收藏
为了某个项目(商业机密),已经前后培训了3周了,简单总结一下吧。
BusinessObjects XI R2: New Hire Product Training (3.19-3.22)
    没想到BO就在新华保险的6层,曾几何时我也来这的三层(moto)面试过呢。老师是一个在英国工作的孟加拉人,胖胖的,第一次上这么有档次的课,还是蛮紧张的,不过还好,老师很友善。
    4天的课程,将BO的主要产品都走马观花了一遍,最大的收获当然是对BOE的architecture有了一个认识,这对具体工作的理解很有帮助。另一个收获锻炼了胆量,要知道一起听课的都是SAP、NCR、Sybase的人。英语也爽爽的练了一把,英国英语蛮字正腔元的,比较好听。
    趣事:国贸的气氛就是和中关村不同呀,电梯里MM们讨论的是谁去欧洲出差帮忙带点香奈尔回来,WC里男士们讨论的是什么时候去考北大光华的MBA。

某国家部门(商业机密) PoC (4.3-4.6)
    BO在给某国家部门做Demo,跟着一个BO的工程师去学习一下,正好也实践一下上一次培训的内容。
    第一天,系统安装。因为安全因素,他们的电脑没有光驱、没有usb、不能上外网,总之没有出入口。只能先将介质拷到机房的服务器上,再通过局域网往PC上拖。局域网的配置又不好,他们的SA又调整了半天,安装花去了一天的时间。
    第一次进机房,一个隔音的玻璃房子,就去才发现那叫一吵、一热、一辐射,一个大机柜,一台服务(4cpu、8G内存)就是一个大板子,n个板子插在机柜上。
    第二天,80%的时间都花在了搞清需求上,虽然已经让客户提需求,其实他们自己都不知道需求是什么,在做的过程中,他们才了解自己要什么。加上又是安全的原因,所有的表名、列名都是没有意义的代码,如ABC,也没有文档给我们,就是口口相传,疯了。
    SQL是根本,Universe是核心,WebI是拖拽。

    第三天, 终于体会到了什么叫长查询,4个上千万行的表在一起join,一条复杂的SQL跑半个小时以上。
    由于BOE是基于web server这种形式的,有时难免出现错误(B/S总给人不实在的感觉),而重启一下BO的服务(或干脆重启服务器)成为了解决问题的“最好”办法。
    另外的体会是做Universe最大的挑战是你面对的数据库是一个设计的很差的数据库。
    第四天,没什么特别,累了。最后我做的3个报表只出来2个,有一个按年查询的,由于执行时间太长,每次一到30分钟就报WebI Job Server传输错误:通信失败 ,最后他们也没找到解决办法。
    BTW,和我们一起工作的还有一个sybase的dba,很有经验的一个女士,很好相处。

DB2 9 Warehouse - Business Partner Training (4.17-4.19)
    这次training主要是面对salse人员的,所以技术的东西讲的很浅。不过后两天的lab还是蛮有意义的,主要熟悉了一下DB2 Warehouse 9 Design StudioDB2 Warehouse 9 Administration Console的操作,而且让我对warehouse有了蒙胧的认识(有空画个图的表达一下)。不过关于dw还有待系统的学习一下。

    培训有一部分Crystal Report的内容,也就是所谓的Business Partner,这是由BO的人来讲的,比较简单。不过值得注意的是BO和IBM之间突然产生的这种暧昧关系,其实这是有缘由的。从前BO和oracle 关系密切,但是继oracle以33亿美元收购了BI的老四Hyperion后,BO不得不开始寻找新的partner。
    其实(我猜)微软是不错的选择,BO也主要是基于windows平台的,客户端都没有linux版,linux版的服务器也是最近几个版本才有的。加之以前CR和微软也是很密切的哦。可是微软自VS2005后,也开始主推自己的BI solution。
    这时三大就只剩下了IBM,走到了一起也就很自然了。另外,IBM的solution也更全面,用硬件到os再到dw,如果能跟这些家伙绑着卖,很有利于BO的销售。这同样证实了那句名言:商业圈没有永远的朋友,只有永远的利益。

    趣事:讲课的老师有美国人、法国人(好难懂的英语)、中国人(英语说的比美国人还快),学生里面还有韩国人。体会了一下什么叫国际化、多元化,这里英语也蛮重要,说它是地球语一点也不过分。

    BTW,经理说下周就开启项目了,万岁。
posted @ 2007-04-19 22:58 Jcat 阅读(999) | 评论 (3)编辑 收藏
1. 笔试题,内容只涉及Java:多线程的两种实现方式,同步的两种方式,hash XX,访问控制符,读程序(try-catch-final型),hibernate的CRUD,HQL,设计一个可以排序的list。他也就简单看看,这个我从来不重视。

2. 面试,又被问到了hibernate transaction的事情,无奈以前从来没用过,MD,看来这个确实很重要,得补补课了。似乎问题都集中在了Hibernate上了,感觉他们用的技术较少。

3. 基本不解决户口。(过了两天,方正来电话,确实不能解决户口)

BTW,这家公司很不厚道,竟然问我有没有一周时间来做一个小的VB程序,算是考察我的水平。(谁都知道这是一种白赚你劳动力的考察形式,这招也未免太老套了吧)
posted @ 2007-04-09 16:04 Jcat 阅读(1042) | 评论 (0)编辑 收藏
struts用了也一年了,基本的东西都会用,不过因为是在工作中边学边用,难免很多知识点都不系统,惭愧呀。这几天找本书梳理一下。

---MVC---
V:多种视图共享一个后台模型
M:实现与界面独立,良好的封装
C:更好的维护程序流程

model1:JSP(V、C)+JavaBean(M)
只适用于小型程序,JSP的双重角色使HTML和Java混合,很难维护。

model2:JSP(V)+Servlet(C)+JavaBean(M)
Struts也是model2(用ActionServlet代替Servlet)。Struts的所有功能都是建立在已有的Java Web组件上,如Servlet,JSP,JavaBean,它只是利用一种方式将这些元素组织了起来,使它们协同工作。

---点滴---
在Struts应用程序中,所有的用户请求都由ActionServlet接收,然后根据struts-config.xml查找相应的子控制器。Web容器加载Struts应用程序后,struts-config.xml被首先读入内存成为一个ActionMapping对象。

基本流程:HttpRequest-->XxxForm-->validate()=true-->XxxAction-->execute()-->(return) ActionForward-->JSP
这其中的配置信息都存在于struts-config中

国际化:<bean:message key=""/> + ApplicationResources.properties

---web.xml---
<display-name>    ApplicationContext name
<listener>   配置事件监听器
<session-config> -->  <session-timeout>    Session过期时间
<welcome-file-list>   根URL的默认页面:先找index文件,找不到再查找该list
<error-page>     制定在返回特定HTTP状态码,或者特定类型的异常被抛出时显示的页面。
<taglib>    对标记库描述符文件(Tag Library Descriptor File)指定别名

---struts-config.xml---
<data-source>   定义数据源
<global-exceptions>   定义全局异常
<global-forwards>      定义全局转发(名字相同时,局部转发优先)
<controller>      定义控制配置类,如TilesRequestProcessor
<message-resources>   指定消息资源文件,配合<bean:message key="" bundle="">使用
<plug-in>      插件

---Action们---
Action:线程安全的,所以都是singlon的。不应该在Action类中使用域变量保存用户特定信息,如状态信息(可以将一些与特定请求无关的变量定义为域变量,如Log变量)
ActionForward:可以是静态的从config文件中读,如mapping.findForward("success");也可以是动态的指定,如new ActionForward("success","/aaa/bbb.jsp",true)

预定义的Action
 ForwardAction:类似<jsp:forward>
 IncludeAction:类似<jsp:include>
  以上两个Action,使Struts遵循MVC,避免直接调用JSP,可以充分利用控制器的预处理功能。 
 DispatchAction:以资源为中心,减少Action的数量。
  通常可设置parameter="method",则调用的url为http://xxx/yyy?method=add
  也可以设置parameter="add, update",则调用的url为http://xxx/yyy?add=true
 LookupDispatchAction:DispatchAction的子类,通过反查资源绑定,找到类中对应的方法。
 SwitchAction:Struts支持多应用程序模块(即multi-module),SwitchAction用来执行在不同应用程序模块间的切换操作。
posted @ 2007-04-08 23:47 Jcat 阅读(418) | 评论 (1)编辑 收藏
如何以少(时间)胜多(任务),走在时间的前面?Kelly Qugley总结了来自很多读者的窍门,看看其中有哪些可以帮助你做好时间管理?

高科技和传统融合。如果你有一个PDA,逼着自己将所有的东西记到上面可能会让你失去使用它的热情。把日程表记在上面,而使用纸和笔纪录其他更频繁琐碎的内容。

给自己语音留言。如果你临时想起需要做什么事情,给自己的语音留言系统打个电话,留个言,回头就不会忘记了。
  
关掉电视。这样你就可以有时间读书、做家务、处理各种其他的事情了。    

用录音机或者语音笔记录想法。如果你是那种随时随地迸发灵感而又懒的动笔的人,可以试试这个。

记录时间用在哪里了。如果你没有时间管理的经验,在开始安排计划之前,先花几天记录一下每天都在做什么,花了多少时间。这样你就可以对自己每天把时间花在哪里有一个概念,有什么事情是必须做的,什么事情实际上是浪费了时间。

说不。在合理的时候说“不”可以让你更专心的完成该完成的工作。   

现在就做,不要耽误。不要拖延把两分钟就可以做完的事情,收到的发票现在就放好,用完的工具马上还回去,“待会儿”常常意味着永远。  

集中处理。如果你常常琐事成堆,可以找出一段时间,什么别的事情都不做,专心清空你的收件箱。 

将个人的事情也列入日程。不要觉得自己的事情就不值得计划好,留出时间。将锻炼身体以及和朋友小聚也列入日程,不要轻易随便牺牲个人时间。

细化时间管理。我们在以前的文章里也提过,将每天的工作分配到一个小时到半个小时,分段工作,提高效率和完成率。

考虑塞车时间。把塞车的时间考虑在内,不要为此耽误工作。   

记录工作日志
。将每天完成的工作记录下来,你可能会发现常常需要返回来查询。    

不要在一天安排太多工作。    

磨刀不误砍柴功,花时间准备以便节省更多的时间。    

先做优先级高的事情
。   

采用“四个文件夹”策略。在桌上放四个文件夹,分别标注上“现在就做”、“文档”、“参考材料”和“明天”。  


转自
posted @ 2007-03-29 17:04 Jcat 阅读(221) | 评论 (0)编辑 收藏
Q: Is TEXT data type (of MSSQL2000) available or legal in Universe Designer?
A: I found out that I can't create an Object from a TEXT column by drag and drop.
Anyway, I can still create an Object by wizard with choosing the type as "Long text".
posted @ 2007-03-29 14:50 Jcat 阅读(225) | 评论 (0)编辑 收藏
李美头像
posted @ 2007-03-27 11:13 Jcat 阅读(367) | 评论 (2)编辑 收藏
(准确说是前4个)
1. Master数据库是SQL Server系统最重要的数据库,它记录了SQL Server系统的所有系统信息。这些系统信息包括所有的登录信息、系统设置信息、SQL Server的初始化信息和其它系统数据库及用户数据库的相关信息。

2. Model数据库是所有用户数据库和Tempdb数据库的模板数据库,它含有Master数据库所有系统表的子集,这些系统数据库是每个用户定义数据库需要的。

3. Msdb数据库是代理服务数据库,为其警报、任务调度和记录操作员的操作提供存储空间。

4. Tempdb是一个临时数据库,它为所有的临时表、临时存储过程及其它临时操作提供存储空间。

5. Pubs和Northwind数据库是两个实例数据库,它们可以作为SQL Server的学习工具。


BTW,概念对比(没有科学依据,仅仅是猜想)
sql2000     oracle
server          数据库
数据库          表空间
master          system tablespace
msdb            sysaux tablespace
posted @ 2007-03-27 10:14 Jcat 阅读(372) | 评论 (0)编辑 收藏
备份和恢复在SQL2000中都是比较简单的,唯一值得一提的是关于系统数据库的恢复。

1. 关闭SQL Server,运行系统安装目录下的bin子目录下的rebuilem.exe文件,这是个命令行程序,运行后可以重新创建系统数据库。

2. 系统数据库重新建立后,启动SQL Server。

3. SQL Server启动后,系统数据库是空的,没有任何系统信息。因此,需要从备份数据库中恢复。一般是先恢复master数据库,再恢复msdb数据库,最后恢复model数据库。

posted @ 2007-03-27 10:07 Jcat 阅读(369) | 评论 (2)编辑 收藏
百度笔试归来

选择题:
html标签,一道
linux命令,一道
子网掩码,一道
关于算法什么的,n道

名词解释:
六度空间、社区网络

读程序题:
查找某c++程序的缺陷

写程序题:
关于正则表达式的(至少我认为可以用正则表达式解决)

数据库设计:
关于一个论坛系统

非技术题:
对职位的看法,为什么申请该职位?(好无聊的题目)

总结:
除了Java,啥题目都有。
我们盲目的投简历,百度盲目的叫人来笔试。
题目没有任何针对性,什么都考,什么都只考一点皮毛(可能这就是所谓的综合素质),也可能是因为是给实习生的笔试吧(想到实习生都没有工作经验)。这一点我很欣赏synnex,他们给我的题目只是关于java和数据库的。
无奈,现在就是买方市场,作为出卖劳动力的我们,只能选择适应或者被淘汰。
posted @ 2007-03-21 23:25 Jcat 阅读(276) | 评论 (0)编辑 收藏
硬件需求就不废话了,对于这个“老”数据库来说,现在是个电脑就可以装。

SQL Server 2000企业版必须运行于安装Windows NT Server Enterprise Edition 4.0或者Windows2000 Advanced Server以及更高版本的操作系统下。

SQL Server 2000标准版必须运行于安装Windows NT Server Enterprise Edition 4.0、Windows NT Server  4.0、Windows 2000 Server以及更高版本的操作系统下。

SQL Server 2000 个人版可在多种操作系统下运行,如可运行于Windows 9x, Windows NT 4.0或Windows 2000的服务器版或工作站版的操作系统下。

SQL Server 2000 开发者版可运行于上述Windows 9x以外的所有操作系统下。

综上,只有个人版可以装在XP下。

posted @ 2007-03-20 20:52 Jcat 阅读(508) | 评论 (1)编辑 收藏
parentheses    ( )
curly braces   { }
semicolon     ;
single quote    '
double quote    "
[forward] slash    /
backslash          \
dollar sign    $
line feed        \n (换行)
ellipsis        ...(省略号)
dot            .(句号)
posted @ 2007-03-16 22:24 Jcat 阅读(311) | 评论 (0)编辑 收藏
1. 笔试2小时:
一篇英语阅读,一段英译中。由于好久没有做阅读了,开始有点紧张。镇定了一下,读懂还是没问题。看来平常多看英文的ebook(即使有中文版的)是很有意义的。

一套选择题(英文的),关于java、数据库、ejb、html、javascript,甚至连css都有。

一道论述题(中文的),关于设计几个表的关系,外加写一些SQL。题目暗示我多建立一个共有的表,以减少冗余。但我给了他们一个相反的答案,因为我认为,用一点冗余,来换取较好的效率、较简单的逻辑结构是有意义的。(后来三人面试时,也和他们对这个问题进行了讨论,感觉我这个故意相反的答案起到了一些作用)

2. 干等了一个小时,可能他们忙吧,今天又恰逢38,感觉公司很安静(mm不上班,男的也就安静了)

3. 然后去一个屋子,里面有三个人,前面有个白板,让我一个人在上面边讲边写,他们三个在下面轮番提问,主要都是针对我的简历上的内容提问,以及我做的那套卷子。
    关于SSH主要流程,我答的还可以
    关于groovy,我答的不好,毕竟刚知道点皮毛

4. 然后大Boss来见我了,带我去了一个大会议室,问了一下我毕业这方面的情况。

5. 大Boss走了,叫来一个人专门问我lucene的掌握情况,因为我应聘的就是lucene搜索引擎开发,显然这个人很精通lucene,估计是lucene的team leader吧。
    关于IndexWriter的三个性能参数,我答的可以
    关于对大量文件的索引,我答不上来,毕竟没做过具体的项目
    关于同义词,答的一般

6. leader走了,又来一个人简单问了一下我对主流框架的掌握程度,估计这个人是leader的manager。

7. 最后就是那句经典的“请回去等通知吧。”

posted @ 2007-03-09 11:53 Jcat 阅读(1373) | 评论 (5)编辑 收藏
Father of Java: James Gosling

Father of Groovy: James Strachan
posted @ 2007-03-07 02:24 Jcat 阅读(197) | 评论 (0)编辑 收藏
B2B是指进行电子商务交易的供需双方都是商家(或企业、公司),她们使用了Internet的技术或各种商务网络平台,完成商务交易的过程。这些过程包括:发布供求信息,订货及确认订货,支付过程及票据的签发、传送和接收,确定配送方案并监控配送过程等。

C2C
即Consumer To Consumer。C2C同B2B、B2C一样,都是电子商务的几种构成成份之一。不同的是C2C是用户对用户的模式,C2C商务平台就是通过为买卖双方提供一个在线交易平台,使卖方可以主动提供商品上网拍卖,而买方可以自行选择商品进行竞价。

B2C
是电子商务按交易对象分类中的一种,即表示商业机构对消费者的电子商务。这种形式的电子商务一般以网络零售业为主,主要借助于Internet开展在线销售活动。例如经营各种书籍、鲜花、计算机、通信用品等商品。著名的亚马逊(www.amazon.com)就是属于这种站点。
posted @ 2007-03-07 01:39 Jcat 阅读(304) | 评论 (0)编辑 收藏
本质区别
1)
apache支持静态页面;
tomcat支持动态页面,比如servlet等。
2)
apache是web(http)服务器,它是专门用于提供HTTP服务,以及相关配置的(例如虚拟主机、URL转发等等)
tomcat是应用(java)服务器,它只是一个servlet(jsp)容器,可以认为是apache的扩展,但是可以独立于apache运行。
3)
apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),而这个桶也可以不放在卡车上。

使用区别
tomcat 作为 jsp,servlet 容器,虽然有静态解析功能,但性能上与 apache 相比相差很远。
apache 可以运行一年不重启,稳定性非常好,而 tomcat 则不见得。

整合
一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomcat来处理的。

整合的好处是
如果客户端请求的是静态页面,则只需要Apache服务器响应请求,apache 解析 html 等静态网页非常快,是经过无数测试证明的。
如果客户端请求动态页面,则是Tomcat服务器响应请求。
因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。

其它
Tomcat是Apache组织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器


some official definitions:
What is the Apache HTTP Server?
    * is a powerful, flexible, HTTP/1.1 compliant web server
    * implements the latest protocols, including HTTP/1.1 (RFC2616)
    * is highly configurable and extensible with third-party modules
    * can be customised by writing 'modules' using the Apache module API
    * provides full source code and comes with an unrestrictive license
    * runs on Windows 2003/XP/2000/NT/9x, Netware 5.x and above, OS/2, and most versions of Unix, as well as several other operating systems

What is the Apache Tomcat?
    Apache Tomcat is the servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies. The Java Servlet and JavaServer Pages specifications are developed by Sun under the Java Community Process.
    Apache Tomcat is developed in an open and participatory environment and released under the Apache Software License.
posted @ 2007-03-06 21:00 Jcat 阅读(805) | 评论 (0)编辑 收藏
    今天去一家小公司面试,主要目的并不是要去这家公司(其实是它主动找到我的),而是为后天的面试热身。热身还是有收获的,总结如下:
    1. 我对前一个公司(verican)的主要业务老是说不清楚,主要因为中国没有类似的网站(或者业务)吧。
    2. 不要东张西望。
    3. 不管你要去的公司是大是小,心态都要平和。人往往要么高估要么低估自己,所以干脆不要估计自己
    4. 谈话的内容要充实(且诚实),态度要低调。毕竟interviewee是弱势群体。


如何测试公司的英语水平:
    现在的公司都很关心我们的英语水平,其实我也很关心它们(主要指中国的公司,对外企我可不敢说这句话)的英语水平,但又不能直接问别人:“你们英语水平怎样?”其实有个小办法可以测试它们的英语:将英文简历和中文简历钉在一起,且英文简历放前面。如果面试你的人员普遍都要翻开来看,结果就显而易见了。
    注意,对于英语水平显然很好的公司别这么干,否则它直接跟你讲英文你就傻了。对于你非常中意的公司也别这么干,毕竟这么干有点挑衅的意思,应该尽量低调一点。
posted @ 2007-03-06 18:14 Jcat 阅读(220) | 评论 (0)编辑 收藏

2-12 下午,抵达广州,第一次坐3排座的大飞机,广州真热,还看见了什么叫做"高"架桥,七层楼那么高. 住在二沙岛舅婆家. 晚饭后去珠江边散步,很漂漂的,江上时不时有开着彩灯的游船驶过,还看见了星海音乐厅.
2-13 上午,飞抵海口,第一次坐5排座的小飞机,海南简直真热. 住在博螯论坛的索菲特大酒店(800/间). 晚上去距离大海10米的地方吃饭,完了还在沙滩上放礼花. 然后回酒店泡温泉. (奢侈的一天)
2-14 早上坐游船去玉带滩,站在沙滩上,一边是海,一边是河. 中午开车前往亚龙湾,住在天域(2000多/间,窒息中). 下午大家都穿上了在玉带买的岛服,去海滩玩,做快艇很刺激,还看见了3艘军舰和海军基地的海上大门.
晚上累了,屋里有电脑,歇着...
天域大酒店.GIF
2-15 上午去天涯海角,中午在南山寺吃斋饭,梅菜扣肉可做的真像肉. 然后去看南海观音,很漂漂,喜欢.

posted @ 2007-02-14 22:34 Jcat 阅读(206) | 评论 (0)编辑 收藏
Audrey Hepburn.jpg
posted @ 2007-02-11 17:33 Jcat 阅读(1883) | 评论 (0)编辑 收藏
Proficient        精通
Master            掌握
Familiar with     熟悉
Understanding     了解
posted @ 2007-02-11 17:10 Jcat 阅读(272) | 评论 (0)编辑 收藏
基础学习阶段(10月中-12月底)
    1. sybex study guide I 中文版:10月份开始看这本书,以前没有过任何数据库经验,只是会点简单的SQL。这本书看的很仔细,做笔记,做知识点reference;也很慢,加上又要工作又要准备课题,时间都是挤出来的。一直到12月底才看完。后面的习题做了2遍。
    2. vm+rhel4+10g2:看书的过程中不懂的问题都去实践一下,效果会很好,记忆深刻。而且后来做tk时,也通过实践找出了不少错误答案。
    总结:长痛不如短痛,一共花了3个月时间,稍微长了点,不过这也是没办法,这就是生活,时间是挤出来的。

空档期(1.1-1.27)
    因为工作、中期答辩等关系,中间有一段时间没有怎么学习oracle,只是简单把sybex的题又看了一遍。

强化学习阶段(1.28-2.5):27号中期答辩通过,把阿奔也送回家了,可以专项学习了。
    1. tk 182:第一遍做的一般吧,62.6%,把每个答案都弄清楚了来龙去脉;不懂的就是cnoug上问,这段时间疯狂的问问题,积分见长。并通过建立了一个QQ群,认识了一帮考OCA-042的朋友。
    2. oracle workshop I en:做题期间,发现英语有点问题,好多术语一换成英文来问我就联系不起来了,赶紧找了份workshop来看。因为是ppt形式的,加之我已经看过一遍sg了,这样很精练的迅速过一遍是恰到好处的。
    总结,去论坛讨论问题、建立QQ群都是很好的学习方法,而且可以认识很多朋友。另外,我发现我的英语阅读水平已经合格了,workshop 500多页,一周时间读完。还就是疯狂的做reference,做index,这对后来迅速搞清答案的来龙去脉很有帮助。做内容上的笔记无非又把书抄一遍,效率低下。

冲刺学习阶段(2.6-2.8)
    6号去中软报名,楼很破,不过很干净,老师也很友善,感觉不错。回来心情比较好,索性打了一下午魔兽,发泄一下。晚上开始做tk 120,越做越不顺,一口气做到3点多,最后64.2%,简直饱受打击,想想自己已经做过一遍tk182了,又看了一遍workshop,怎么还是没及格,超郁闷。
    7号,把tk182又做了一遍,89.6%,凑合;然后又把tk120做了一遍,76.7%,还是很不理想。这时已经没时间深究一些问题了,暂时搞不定就死背下来。另外,tk有不少错误答案,搞的有的题背下来都不踏实。
    8号,又一遍tk182,93.4%;又做了一遍tk120,93.3%。比较不错了,有一种想吐的感觉,猫咪说如果你想吐了,就说明火候到了。晚上又把以前总结的笔记看了一遍。(实在没时间看书上的笔记了)

决战9号
    9点考试,7:15起床,洗脸刷牙,打开电脑,又把做错的题目做了一遍。打车去中软,看看时间还早,不忙进去,又把我反复错的题目过了一遍(昨天复印出来的)。。。最后的结果,我很欣慰。。。

2007.2.9 中软 100% OCA-042 40分钟交卷(提前1小时)
oca100share.jpg

大总结:
    1. 不要为了认证而认证:认证的意义在于过程,最后的考试只是一个考查和督促,而证书只是一个奖励。通过我的时间安排也可以看出,历时4个月,我绝大多数的时间都花在看书学习上了,做tk的时间也就花了一周。最后考试的题目,tk中都出现过,其实如果只是为了证书的话,大可以死背题库,花一个月也就能过,不过,这有意思吗。
    2. 实践是检验真理的唯一标准:可能会比较花时间,但是这样做记忆深刻、形象、准确。
    3. 狂做reference和index,这是我从做全文搜索中获得的灵感。然后通过这些reference和index,将知识点,由点连成线,由线连成面。对比记忆、举一反三。
    4. 英语,英语是IT业唯一的通用语言,得英语者得天下。英语好,可以占得先机:中国毕竟还是处于软件业食物链的下游,没有自己的东西,好东西都是舶来的,所以,别傻等翻译,这样只能让你落后于别人! 英语好,可以扩展你的信息来源:多少优秀的英文书籍、网站呀!
现在就开始用英语学习吧!!!
posted @ 2007-02-09 10:10 Jcat 阅读(527) | 评论 (3)编辑 收藏
知道"Family"这个单词的含义吗?     
爸  F ather
和  A nd
妈  M other
我  I
爱  L ove
你  Y ou
爸妈我爱你=家庭

I-Inject                 ———投入
L-Loyal                     ———忠诚
O-Observant     ———用心
V-Valiant             ———勇敢
E-Enjoyment     ———喜悦
Y-Yes                             ———愿意
O-Obligation
——— 责任
U-Unison
                 ——— 和谐

posted @ 2007-02-05 13:18 Jcat 阅读(310) | 评论 (0)编辑 收藏
import  java.io.InputStreamReader;
import  java.io.BufferedReader;
import  java.io.IOException;

/**
 * User: Jcat
 * Date: 2006-11-19
 
*/
public   class  Lab {
    
public   static   void  main(String[] args)  throws  IOException {
        InputStreamReader ir;
        BufferedReader in;
        String s;

        ir 
=   new  InputStreamReader(System.in);
        in 
=   new  BufferedReader(ir);
        s 
=  in.readLine();
        System.out.println(s);
    }
}

posted @ 2007-02-04 19:24 Jcat 阅读(301) | 评论 (0)编辑 收藏
1. 用鼠标拖拽选取内容

2. 内容选取完毕后(所选内容全部反显),鼠标左键按住不动,用右手中指按鼠标右键

3. 这时,所选内容会自动复制到SQL*Plus环境的最后一行
posted @ 2007-01-30 03:49 Jcat 阅读(368) | 评论 (2)编辑 收藏

I noticed that I, and fellow webdesigners, keep making the same usability mistakes over and over. This checklist with 88 questions is a must read for every webdesigner who cares about usability.

This website, NotUsable.com, is not designed by me. Giving me the perfect excuse why this website doesn’t pass my own usability checklist. :) But I would love to hear your comments and don’t forget to let me know when you can answer the whole checklist with ‘yes’!

Note that my design company is called Achtentachtig, which means Eighty Eight in Dutch, that’s why there are 88 questions in this checklist. Just to let you know.

Enough talking, let’s start!

    Technical

  1. Did you validate your (X)HTML using W3C Markup Validation Service?
  2. Did you validate your CSS using W3C CSS Validation Service?
  3. Did you check your website in at least IE, FF, Opera and Safari?
  4. Images

  5. Did you add the ALT and TITLE attributes to all your important images?
  6. Did you add the LONGDESC attributes to all your image that need a description?
  7. Did you write effective ALT text?
  8. Did you make the size of your pages less then 50KB?
  9. Did you choose the appropriate filetype for your images?
  10. Did you add a description to images that support your content?
  11. Did you use plain text instead of images for important content?
  12. Content

  13. Did you use a sans-serif typeface with a decent font size for your body text?
  14. Did you adjusted the leading and tracking, if necessary, to increase readability?
  15. Did you align your body text to the left? (depends on language)
  16. Did you use EM or percentages instead of PX?
  17. Did you make sure that there are no whole sentences in uppercase?
  18. Did you use less then 78 characters, including spaces, per line?
  19. Did you make brief and precise paragraphs with explanatory titles?
  20. Did you use lists to sum things up?
  21. Did you write your conclusion first and then your explanation?
  22. Did you create enough contrast between the text and the background?
  23. Did you make your website also accessible for text-only browsers?
  24. Did you make sure that there are no ‘under construction’ pages?
  25. Did you include a print function on pages with a large amount of text?
  26. Did you include a print stylesheet?
  27. Did you replace all special characters with the ISO Latin-1 codes?
  28. Did you spell check your content and did you proofread for grammar errors??
  29. Navigation

  30. Did you make sure that all your links work? W3C Link checker does the job.
  31. Did you include a link to all your main pages on your homepage?
  32. Did you include your main navigation on every page?
  33. Did you use no more then 8 items in your main navigation?
  34. Did you distinguish the active and nonactive page in the menu?
  35. Did you use self explanatory link text instead of ‘click here’?
  36. Did you use self explanatory link text instead of business terms?
  37. Did you make a distinction between visited and non-visited links?
  38. Did you make a distinction between links and plain text?
  39. Did you add the TITLE attribute to all your links?
  40. Did you use breadcrumbs if you have a large amount of pages?
  41. Did you include a search option if you have a large amount of pages?
  42. Did you make your logo link to your homepage?
  43. Did you make a skip to content link at the top of your pages?
  44. Did you make a skip to menu link at the top of your pages?
  45. Did you make it possible to browse your website using SHIFT-TAB and RETURN?
  46. Did you make sure you didn’t use any javascript links?
  47. Structure

  48. Did you make a consistent page structure?
  49. Did you place your logo at the top left?
  50. Did you place an explanatory tag line next to your logo?
  51. Did you place your search box at the top right?
  52. Did you place important content above the fold/scroll?
  53. Did you make your design on a grid system?
  54. Did you make your design fluid using percentages?
  55. Did you make your website also viewable on low resolutions?
  56. Did you make custom titles (as in TITLE tag) for all your pages?
  57. Forms

  58. Did you make sure that users don’t return to an altered form after an error?
  59. Did you make a friendly and informative error page?
  60. Did you make a friendly ‘thank you’ page with a confirmation email?
  61. Did you add only a ’submit’ button and no ‘reset’ button?
  62. Did you tell the user what to expect after clicking the submit button?
  63. Did you split long forms up into multiply pages?
  64. Did you gave the user room to type?
  65. Did you place an asterisk when a field is compulsatory?
  66. Did you keep the standard look of input fields that is generated by the browser?
  67. Did you create a logical order of asking information?
  68. Did you use double input fields for passwords only?
  69. Did you let the computer, not the user, handle information formatting?
  70. Did you make sure that users can fill in the entire form using the TAB key?
  71. Did you explain to the user why you ask certain information?
  72. Did you explain to the user what you are going to do with that information?
  73. Did you use realtime validation using AJAX?
  74. Did you use the LABEL tag?
  75. Did you place the LABEL above the input field, instead of next to it?
  76. Did you choose the correct input type for different data?
  77. Did you make the top input field automatically active using setfocus?
  78. Did you destinguish the active field from non-active fields using input:focus?
  79. Did you use the FIELDSET and LEGEND entities when appropriate?
  80. Did you check if your forms also work with Javascript turned off?
  81. Multimedia

  82. Did you make sure that essential information/navigation is not made in Flash?
  83. Did you make sure that music and videoclips don’t start playing automatically?
  84. Did you make sure that music and videoclips can be turned off at any time?
  85. Did you inform the user about the size and length of your music and videoclips?
  86. Extra features

  87. Did you make a custom 404 page?
  88. Did you make a site map?
  89. Did you make a rss feed? (if you add content regularly)
  90. Did you make a high contrast version of your website?
  91. Did you make good looking URL’s (like this one)?
  92. Did you make sure that there are no frames on your website?
  93. Did you make sure that there are no pop ups on your website?
  94. Did you make a contact form instead of just an email link?
  95. Any suggestions?

  96. Add number 88 by giving a comment on this post!
原文地址

posted @ 2007-01-25 12:39 Jcat 阅读(2689) | 评论 (0)编辑 收藏
Any day will do? 哪一天都可以?
Any messages for me? 有我的留言吗?
Are you by yourself? 你一个人来吗?
All right with you? 你没有问题吧?
Are you free tomorrow? 明天有空吗?
Are you kidding me? 你在跟我开玩笑吧?
As soon as possible! 尽可能快!
Back in a moment! 马上回来!
Believe it or not! 信不信由你! Better luck next time! 下次会更好!
Boy will be boys 本性难移!
Come to the point! 有话直说!
Do you accept plastic? 收不收行用卡?
Does it keep long? 可以保存吗?
Don't be so fussy! 别挑剔了! Don't count to me! 别指望我!
Don't fall for it! 不要上当! Don't get me wrong! 你搞错了!
Don't give me that! 少来这套! Don't let me down! 别让我失望!
Don't lose your head! 别乐昏了头!
Don't over do it! 别做过头了!
Don't sit there daydreaming! 别闲着做白日梦!
Don't stand on ceremony! 别太拘束!
Drop me a line! 要写信给我!
Easy come easy go! 来得容易去得也快!
First come first served! 先到先得!
Get a move on! 快点吧!
Get off my back! 不要嘲笑我!
Give him the works! 给他点教训!
Give me a break! 饶了我吧!
Give me a hand! 帮我一个忙!
Great minds think alike! 英雄所见略同!
I'll treat you to lunch. 午餐我请你!
In one ear, out the other ear. 一耳进,一耳出!
I'm spaced-out! 我开小差了!
I beg your pardon! 请你再说一遍!
I can't afford that! 我付不起!
I can't follow you! 我不懂你说的!
I can't help it! 我情不自禁!
I couldn't reach him! 我联络不上他!
I cross my heart! 我发誓是真的!
I don't mean it! 我不是故意的!
I feel very miserable! 我好沮丧!
I have no choice! 我别无选择了!
I watch my money! 视财如命!
I'll be in touch! 保持联络! I'll check it out! 我去看看!
I'll show you around! 我带你四处逛逛!
I'll see to it! 我会留意的!
I'm crazy for you! 我为你疯狂!
You make me jump! 你下了我一跳!
Make up your mind. 作个决定吧!
Make yourself at home! 就当在家一样!
My mouth is watering! 我要流口水了!
Never heard of it! 没听说过!
Nice talking to you! 很高兴和你聊天!
No doubt about it! 勿庸置疑!
No pain no gain! 不经一事,不长一智!
None of your business! 要你管?
There is nothing on your business! 这没你的事!
Now you are really talking! 说得对!
Please don't rush me! 请不要吹促我!
Please keep me informed! 请一定要通知我!
She looks blue today. 她今天很忧郁!
She is under the weather. 她心情不好!
So far, so good. 过得去。 Speaking of the devil! 一说曹操,曹操就到!
Stay away from me! 离我远一点!
Stay on the ball! 集中注意力!
That makes no difference. 不都一样吗?
That's a touchy issue! 这是个辣手得问题!
That's always the case! 习以为常!
That's going too far! 这太离谱了!
That's more like that! 这才象话嘛!
The answer is zero! 白忙了!
The dice is cast! 已成定局了!
The same as usual! 一如既往!
The walls have ears! 隔墙有耳!
There you go again! 你又来了!
Time is running out! 没有时间了!
We better get going! 最好马上就走!
We'll discuss it later! 回头再说吧!
We'll find out shortly! 我们很快就知道了!
We are all for it! 我们全都赞成!
We've been expecting you! 我们正等着你呢!
What a good deal! 真便宜!
What a let down! 真令人失望!
What do you figure? 你有什么想法?
What happened to you? 你怎么了?
What should I do? 我应该怎样做?
What's would you recommend? 你有何意见?
what's come over you? 你怎么了?
What's it to you? 这跟你有关吗?
What's on your mind? 你在想什么?
Which would you prefer? 你要选哪个?
Wouldn't you say so? 你说不是这样吗?
You are most understanding! 你真体贴!
You asked for it! 你自讨苦吃!
You can't be serious! 你不是认真的吧?
You can't miss it! 你不可能找不到的!
You have my word! 我保证!
You must be joking! 你在开玩笑!
You set me up! 你出卖我!
You want a bet? 你敢赌吗?
You are pulling my leg! 你在开我玩笑吧!
posted @ 2007-01-19 00:54 Jcat 阅读(470) | 评论 (1)编辑 收藏
1. Stop complaining! 别发牢骚!
2. You make me sick! 你真让我恶心!
3. What's wrong with you? 你怎么回事?
4. You shouldn't have done that! 你真不应该那样做!&nbsp;&nbsp;
5. You're a jerk! 你是个废物/混球!
6. Don't talk to me like that! 别那样和我说话!&nbsp;
7. Who do you think you are? 你以为你是谁?
8. What's your problem? 你怎么回事啊?
9. I hate you! 我讨厌你!
10. I don't want to see your face! 我不愿再见到你!
11. You're crazy! 你疯了!&nbsp;&nbsp;
12. Are you insane/crazy/out of your mind? 你疯了吗?(美国人绝对常用!)
13. Don't bother me. 别烦我。
14. Knock it off. 少来这一套。
15. Get out of my face. 从我面前消失!
16. Leave me alone. 走开。&nbsp;
17. Get lost.滚开!
18. Take a hike! 哪儿凉快哪儿歇着去吧。
19. You piss me off. 你气死我了。
20. It's none of your business. 关你屁事!
21. What's the meaning of this? 这是什么意思?
22. How dare you! 你敢!
23. Cut it out. 省省吧。
24. You stupid jerk! 你这蠢猪!
25. You have a lot of nerve. 脸皮真厚。
26. I'm fed up. 我厌倦了。
27. I can't take it anymore. 我受不了了!
28. I've had enough of your garbage. 我听腻了你的废话。
29. Shut up! 闭嘴!
30. What do you want? 你想怎么样?
31. Do you know what time it is? 你知道现在都几点吗?&nbsp;
32. What were you thinking? 你脑子进水啊?
33. How can you say that? 你怎么可以这样说?
34. Who says? 谁说的?
35. That's what you think! 那才是你脑子里想的!
36. Don't look at me like that. 别那样看着我。
37. What did you say? 你说什么?&nbsp;
38. You are out of your mind. 你脑子有毛病!
39. You make me so mad.你气死我了啦。
40. Drop dead. 去死吧!
41. Get off. 滚蛋。
42. Don't give me your shit. 别跟我胡扯。
43. Don't give me your excuses/ No more excuses. 别找借口。
44. You're a pain in the ass. 你这讨厌鬼。
45. You're an asshole. 你这缺德鬼。
46. You bastard! 你这杂种!
47. Get over yourself. 别自以为是。
48. You're nothing to me. 你对我什么都不是。
49. It's not my fault. 不是我的错。
50. You look guilty. 你看上去心虚。
51. I can't help it. 我没办法。
52. That's your problem. 那是你的问题。
53. I don't want to hear it. 我不想听!
54. Get off my back. 少跟我罗嗦。
55. Give me a break. 饶了我吧。
56. Who do you think you're talking to? 你以为你在跟谁说话?
57. Look at this mess! 看看这烂摊子!
58. You're so careless. 你真粗心。
59. Why on earth didn't you tell me the truth? 你到底为什么不跟我说实话?
60. I'm about to explode! 我肺都快要气炸了!
61. What a stupid idiot! 真是白痴一个!
62. I'm not going to put up with this! 我再也受不了啦!
63. I never want to see your face again! 我再也不要见到你!
64. That's terrible. 真糟糕!
65. Just look at what you've done! 看看你都做了些什么!
66. I wish I had never met you. 我真后悔这辈子遇到你!
67. You're a disgrace. 你真丢人!
68. I'll never forgive you! 我永远都不会饶恕你!
69. Don't nag me! 别在我面前唠叨!
70. I'm sick of it. 我都腻了。
71. You're such a Bitch! 你这个婊子!&nbsp;
72. Stop screwing/ fooling/ messing around! 别鬼混了!
73. Mind your own business! 管好你自己的事!
74. You're just a good for nothing bum! 你真是一个废物!/ 你一无是处!
75. You've gone too far! 你太过分了!&nbsp;
76. I loathe you! 我讨厌你!
77. I detest you! 我恨你!
78. Get the hell out of here! 滚开!&nbsp;&nbsp;
79. Don't be that way! 别那样!
80. Can't you do anything right? 成事不足,败事有余。
81. You're impossible. 你真不可救药。
82. Don't touch me! 别碰我!
83. Get away from me! 离我远一点儿!
84. Get out of my life. 我不愿再见到你。/ 从我的生活中消失吧。
85. You're a joke! 你真是一个小丑!
86. Don't give me your attitude. 别跟我摆架子。
87. You'll be sorry. 你会后悔的。
88. We're through. 我们完了!
89. Look at the mess you've made! 你搞得一团糟!
90. You've ruined everything. 全都让你搞砸了。
91. I can't believe your never. 你好大的胆子!
92. You're away too far. 你太过分了。&nbsp;
93. I can't take you any more! 我再也受不了你啦!
94. I'm telling you for the last time! 我最后再告诉你一次!&nbsp;
95. I could kill you! 我宰了你!
96. That's the stupidest thing I've ever heard! 那是我听到的最愚蠢的事!
97. I can't believe a word you say. 我才不信你呢!&nbsp;
98. You never tell the truth! 你从来就不说实话!
99. Don't push me ! 别逼我!
100. Enough is enough! 够了够了!
101. Don't waste my time anymore. 别再浪费我的时间了!&nbsp;
102. Don't make so much noise. I'm working. 别吵,我在干活。
103. It's unfair. 太不公平了。
104. I'm very disappointed. 真让我失望。
105. Don't panic! 别怕!&nbsp;
106. What do you think you are doing? 你知道你在做什么吗?
107. Don't you dare come back again! 你敢再回来!
108. You asked for it. 你自找的。
109. Nonsense! 鬼话!
posted @ 2007-01-19 00:52 Jcat 阅读(639) | 评论 (0)编辑 收藏
1. I see. 我明白了。
2. I quit! 我不干了!
3. Let go! 放手!
4. Me too. 我也是。
5. My god! 天哪!
6. No way! 不行!
7. Come on. 来吧(赶快)
8. Hold on. 等一等。
9. I agree。 我同意。
10. Not bad. 还不错。
11. Not yet. 还没。
12. See you. 再见。
13. Shut up! 闭嘴!
14. So long. 再见。
15. Why not? 好呀! (为什么不呢?)
16. Allow me. 让我来。
17. Be quiet! 安静点!
18. Cheer up! 振作起来!
19. Good job! 做得好!
20. Have fun! 玩得开心
21. How much? 多少钱
22. I'm full. 我饱了。
23. I'm home. 我回来了。
24. I'm lost. 我迷路了。
25. My treat. 我请客。
26. So do I. 我也一样。
27. This way。 这边请。
28. After you. 您先。
29. Bless you! 祝福你!
30. Follow me. 跟我来。
31. Forget it! 休想! (算了!)
32. Good luck! 祝好运!
33. I decline! 我拒绝!
34. I promise. 我保证。
35. Of course! 当然了!
36. Slow down! 慢点!
37. Take care! 保重!
38. They hurt. (伤口)疼。
39. Try again. 再试试。
40. Watch out! 当心。
41. What's up? 有什么事吗?
42. Be careful! 注意!
43. Bottoms up! 干杯(见底)!
44. Don't move! 不许动!
45. Guess what? 猜猜看?
46. I doubt it 我怀疑
47. I think so. 我也这么想。
48. I'm single. 我是单身贵族。
49. Keep it up! 坚持下去!
50. Let me see.让我想想。
51. Never mind.不要紧。
52. No problem! 没问题!
53. That's all! 就这样!
54. Time is up. 时间快到了。
55. What's new? 有什么新鲜事吗?
56. Count me on 算上我。
57. Don't worry. 别担心。
58. Feel better? 好点了吗?
59. I love you! 我爱你!
60. I'm his fan。 我是他的影迷。
61. Is it yours? 这是你的吗?
62. That's neat. 这很好。
63. Are you sure? 你肯定吗?
64. Do I have to 非做不可吗?
65. He is my age. 他和我同岁。
66. Here you are. 给你。
67. No one knows . 没有人知道。
68. Take it easy. 别紧张。
69. What a pity! 太遗憾了!
70. Any thing else? 还要别的吗?
71. To be careful! 一定要小心!
72. Do me a favor? 帮个忙,好吗?
73. Help yourself. 别客气。
74. I'm on a diet. 我在节食
75. Keep in Touch. 保持联络。
76. Time is money. 时间就是金钱。
77. Who's calling? 是哪一位?
78. You did right. 你做得对。
79. You set me up! 你出卖我!
80. Can I help you? 我能帮你吗?
81. Enjoy yourself! 祝你玩得开心
82. Excuse me,Sir. 先生,对不起。
83. Give me a hand! 帮帮我!
84. How's it going? 怎么样?
85. I have no idea. 我没有头绪。
86. I just made it! 我做到了
87. I'll see to it 我会留意的。
88. I'm in a hurry! 我在赶时间!
89. It's her field. 这是她的本行。
90. It's up to you. 由你决定。
91. Just wonderful! 简直太棒了!
92. What about you? 你呢?
93. You owe me one.你欠我一个人情。
94. You're welcome. 不客气。
95. Any day will do. 哪一天都行夕
96. Are you kidding? 你在开玩笑吧!
97. Congratulations! 祝贺你!
98. I can't help it. 我情不自禁。
99. I don't mean it. 我不是故意的。
100. I'll fix you Up. 我会帮你打点
101. It sounds great!. 听起来很不错。
102. It's a fine day。 今天是个好天。
103. So far,So good. 目前还不错。
104. What time is it? 几点了?
105. You can make it! 你能做到!
106. Control yourself! 克制一下
107. He came by train. 他乘火车来。
108. He is ill in bed. 他卧病在床。
109. He lacks courage. 他缺乏勇气。
110. How's everything? 一切还好吧?
111. I have no choice. 我别无选择。
112. I like ice-cream. 我喜欢吃冰淇淋
113. I love this game. 我钟爱这项运。
114. I'll try my best. 我尽力而为。
115. I'm On your side. 我全力支持你。
116. Long time no see! 好久不见!
117. No pain,no gain. 不劳无获。
118. Well,it depends 噢,这得看情况。
119. We're all for it. 我们全都同意。
120. What a good deal! 真便宜!
121. What should I do? 我该怎么办?
122. You asked for it! 你自讨苦吃!
123. You have my word. 我保证。
124. Believe it or not! 信不信由你!
125. Don't count on me.别指望我。
126. Don't fall for it! 别上当!
127. Don't let me down. 别让我失望。
128. Easy come easy go. 来得容易,去快。
129. I beg your pardon. 请你原谅。
130. I beg your pardon? 请您再说一遍(我没有听清)。
131. I'll be back soon. 我马上回来。
132. I'll check it out. 我去查查看。
133. It's a long story. 说来话长。
134. It's Sunday today. 今天是星期天。
135. Just wait and see! 等着瞧!
136. Make up your mind. 做个决定吧。
137. That's all I need. 我就要这些。
138. The view is great. 景色多么漂亮!
139. The wall has ears. 隔墙有耳。
140. There comes a bus. 汽车来了。
141. What day is today? 今天星期几?
142. What do you think? 你怎么认为?
143. Who told you that? 谁告诉你的?
144. Who's kicking off? 现在是谁在开球?
145. Yes,I suppose So. 是的,我也这认为。
146. You can't miss it 你一定能找到的。
147. Any messages for me? 有我的留言吗?
148. Don't be so modest. 别谦虚了。
149. Don't give me that! 少来这套!
150. He is a smart boy. 他是个小机灵鬼。
151. He is just a child. 他只是个孩子。
152. I can't follow you. 我不懂你说的。
153. I felt sort of ill. 我感觉有点不适。
154. I have a good idea! 我有一个好主意。
155. It is growing cool. 天气渐渐凉爽起来。
156. It seems all right. 看来这没问题。
157. It's going too far. 太离谱了。
158. May I use your pen? 我可以用你的笔吗?
159. She had a bad cold. 她患了重感冒。
160. That's a good idea. 这个主意真不错。
161. The answer is zero. 白忙了。
162. What does she like? 她喜欢什么?
163. As soon as possible! 越快越好!
164. He can hardly speak. 他几乎说不话来。
165. He always talks big. 他总是吹牛。
166. He won an election. 他在选举中获胜。
167. I am a football fan. 我是个足球迷。
168. If only I could fly. 要是我能飞就好了。
169. I'll be right there. 我马上就到。
170. I'll see you at six. 我六点钟见你
171. IS it true or false? 这是对的还是错的?
172. Just read it for me. 就读给我听好了。
173. Knowledge is power. 知识就是力量。
174. Move out of my way! 让开
175. Time is running out. 没时间了。
176. We are good friends. 我们是好朋友。
177. What's your trouble? 你哪儿不舒服?
178. You did fairly well! 你干得相当不错
179. Clothes make the man. 人要衣装。
180. Did you miss the bus? 你错过公共汽车了?
181. Don't lose your head。 不要惊慌失措。
182. He can't take a joke. 他开不得玩笑。
183. He owes my uncle $100.他欠我叔叔100美元。
184. How are things going? 事情进展得怎样?
185. How are you recently? 最近怎么样?
186. I know all about it. 我知道有关它的一切。
187. It really takes time. 这样太耽时间了。
188. It's against the law. 这是违法的。
189. Love me,love my dog. (谚语)爱屋及乌。
190. My mouth is watering. 我要流口水了。
191. Speak louder,please. 说话请大声点儿。
192. This boy has no job. 这个男孩没有工作。
193. This house is my own. 这所房子是我自己的。
194. What happened to you? 你怎么了?
195. You are just in time. 你来得正是时候。
196. You need to workout. 你需要去运动锻炼一下。
197. Your hand feels cold. 你的手摸起来很冷。。
198. Don't be so childish. 别这么孩子气。
199. Don't trust to chance! 不要碰运气
200. Fasten your seat belt. 系好你的安全带。
posted @ 2007-01-19 00:07 Jcat 阅读(449) | 评论 (1)编辑 收藏
1.自己要有改变口语现状的迫切要求,并开始行动。

2.要有一个方便的既能交流更能提高的语言环境

3.持之以恒,细水长流,一步一个脚印。

4.学以致用,用了才能掌握。否则学了再多,浪费更多。

5.不要怕说错。养成“舌头先于大脑”的习惯,敢于说,敢于说错,然后才能说对。

6.学会用最简单的词来表达。李阳说过:简单重复,创造奇迹

7.经常练习英语表达,如问自己:“What is a table?” 然后试着用英语回答后,再去翻英英字典对照答案。每天坚持问自己几个“ What is a…?”,获益良多。

8.多看一些原版的DVD片,同时大声模仿其中的对白。既练听力,又练发音,还练语感,一石三鸟。
posted @ 2007-01-18 23:53 Jcat 阅读(734) | 评论 (0)编辑 收藏
查看数据库的版本
$pg_config --version
 
登陆到数据库verican6
$psql verican6
posted @ 2007-01-09 10:45 Jcat 阅读(203) | 评论 (0)编辑 收藏
QQ                     jcat    jcat

yahoo.cn             yahoo

yahoo                 

onlinestatus.msn   MSN Online Status Indicator   MSN Online Status Indicator  MSN Online Status Indicator


关于msn,似乎还没有找到官方的服务(垃圾微软),第三方提供的服务总是不太稳定
posted @ 2006-12-20 09:34 Jcat 阅读(316) | 评论 (0)编辑 收藏
Background
--
create   or   replace   function  f_must_return(hello  in   varchar2 return   varchar2   is
  Result 
varchar2 ( 20 );
begin
  Result :
=  hello  ||   '  world ' ;
  
return (Result);
end  f_must_return;

调用函数
-- by select
select  f_must_return( ' hello ' from  dual;

-- by procedure exec
set  serveroutput  on ;
exec  dbms_output.put_line(f_must_return( ' hello ' ))

-- by variable
variable x  varchar2
exec  :x: = f_must_return( ' hello ' )
posted @ 2006-12-19 13:25 Jcat 阅读(181) | 评论 (0)编辑 收藏
--same function different database: find the first 5 rows
 
select top 5 * from some_table                                         -- sql server

select * from some_table rownum >=1 and rownum<=5   -- oracle (begin at 1)
 
select * from some_table limit 0, 5                                    -- mysql (begin at 0)
 
select * from some_table limit 5 offset 0                            -- postgreSQL (begin at 0)


--however, if you want to implement between 10 to 20 in SQL SERVER, you have to use following trick
select top 10 * from
(select top 20 * from some_table) t
order by t.primary_key desc
posted @ 2006-12-13 14:34 Jcat 阅读(183) | 评论 (0)编辑 收藏
Most INSERT statements are the single-table variety, but Oracle also supports a multiple-table INSERT statement. With a multitable insert, you can make a single pass through the source data and load the data into more than one table.

[ ALL | FIRST ]
WHEN condition THEN insert_into_clause [values_clause]
[insert_into_clause [values_clause]]...
[WHEN condition THEN insert_into_clause [values_clause]
[insert_into_clause [values_clause]]...
]...
[ELSE insert_into_clause [values_clause]
[insert_into_clause [values_clause]]...
]

If a WHEN condition evaluates to TRUE, the corresponding INTO clause is executed. If no WHEN condition evaluates to TRUE, the ELSE clause is executed. The keyword ALL tells the database to check each WHEN condition. On the other hand, the keyword FIRST tells the database to stop checking WHEN conditions after finding the first TRUE condition.


--test case
create table insert_test_case
(
id 
number(1)
)

create table insert_test01
(
id 
number(1)
)

create table insert_test02
(
id 
number(1)
)

create table insert_test03
(
id 
number(1)
)

insert into insert_test_case values(1)
insert into insert_test_case values(2)
insert into insert_test_case values(3)
insert into insert_test_case values(4)
insert into insert_test_case values(5)


--3 rows inserted
insert first 
  
when id=1 then into insert_test01 values(id)
  
when id=2 then into insert_test02 values(id)
  
when id=3 then into insert_test03 values(id)
select id from insert_test_case

--3 rows inserted
insert all
  
when id=1 then into insert_test01 values(id)
  
when id=2 then into insert_test02 values(id)
  
when id=3 then into insert_test03 values(id)
select id from insert_test_case


--1 rows inserted
insert first
  
when id=1 then into insert_test01 values(id)
  
when id=1 then into insert_test02 values(id)
  
when id=1 then into insert_test03 values(id)
select id from insert_test_case

--3 rows inserted
insert all
  
when id=1 then into insert_test01 values(id)
  
when id=1 then into insert_test02 values(id)
  
when id=1 then into insert_test03 values(id)
select id from insert_test_case
posted @ 2006-12-13 13:32 Jcat 阅读(265) | 评论 (0)编辑 收藏
-- Test Case
create   table  sale(
sale_id 
char ( 1 )
,sale_type 
char ( 1 )
)
--
insert   into  sale  values  ( ' a ' , ' Y ' );
insert   into  sale  values  ( ' b ' , ' N ' );
insert   into  sale  values  ( ' b ' , ' Y ' );
insert   into  sale  values  ( ' b ' , ' Y ' );
insert   into  sale  values  ( ' c ' , ' Y ' );
insert   into  sale  values  ( ' c ' , ' N ' );
insert   into  sale  values  ( ' d ' , ' N ' );
insert   into  sale  values  ( ' d ' , ' N ' );

Count the number of 'Y' and the number of  'N' separately
-- full join
select   *   from  
(
select  sale_id,  count ( * as  num_y  from  sale
where  sale_type = ' Y '
group   by  sale_id
) sale_y
full   join
(
select  sale_id,  count ( * as  num_n  from  sale
where  sale_type = ' N '
group   by  sale_id
) sale_n
using (sale_id)
order   by  sale_id

-- decode
select  sale_id
 ,
sum (decode(sale_type, ' Y ' , 1 , 0 ))  as  num_y   -- note using sum to implement count
, sum (decode(sale_type, ' N ' , 1 , 0 ))  as  num_n
from  sale
group   by  sale_id
order   by  sale_id

-- case
select  sale_id
 ,
sum ( case   when  sale_type = ' Y '   then   1   else   0   end as  num_y   -- note using sum to implement count
, sum ( case   when  sale_type = ' N '   then   1   else   0   end as  num_n
from  sale
group   by  sale_id
order   by  sale_id

Separate sale_type column
-- union all
select  sale_id, sale_type  as  type_y,  null
from  sale
where  sale_type = ' Y '
union   all
select  sale_id,  null , sale_type  as  type_n
from  sale
where  sale_type = ' N '
order   by  sale_id

-- decode
select  sale_id
,decode(sale_type,
' Y ' , ' Y ' , null ) as type_y
,decode(sale_type,
' N ' , ' N ' , null ) as type_n
from  sale
 
-- case
select  sale_id
,(
case   when  sale_type = ' Y '   then   ' Y '   else   null   end as  type_y
,(
case   when  sale_type = ' N '   then   ' N '   else   null   end as  type_n
from  sale
posted @ 2006-12-05 13:11 Jcat 阅读(250) | 评论 (0)编辑 收藏
功能:5秒后,自动跳转到同目录下的02view.html文件
 
1)html的实现
<head>
<meta http-equiv="refresh" content="5;url=02view.html">
</head>

优点:简单
缺点:Struts Tiles中无法使用
 
2)javascript的实现
<script language="javascript" type="text/javascript">
   setTimeout(
"javascript:location.href='02view.html'"5000); 
</script>

优点:灵活,可以结合更多的其他功能
缺点:受到不同浏览器的影响
 
3)结合了倒数的javascript实现(IE)
<span id="totalSecond">5</span>

<script language="javascript" type="text/javascript">
var second = totalSecond.innerText;
setInterval(
"redirect()"1000);
function redirect(){ 
totalSecond.innerText
=--second; 
if(second<0) location.href='02view.html';
}
</script>

优点:更人性化
缺点:firefox不支持(firefox不支持span、div等的innerText属性)
 
3')结合了倒数的javascript实现(firefox)
<script language="javascript" type="text/javascript">
    
var second = document.getElementById('totalSecond').textContent;
    setInterval(
"redirect()"1000);
    
function redirect()
    {
        document.getElementById('totalSecond').textContent 
= --second;
        
if (second < 0) location.href = '02view.html';
    }
</script>

4)解决Firefox不支持innerText的问题
<span id="totalSecond">5</span>

<script language="javascript" type="text/javascript">
if(navigator.appName.indexOf("Explorer"> -1){
    document.getElementById('totalSecond').innerText 
= "my text innerText";
else{
    document.getElementById('totalSecond').textContent 
= "my text textContent";
}
</script>

5)整合3)和3')
<span id="totalSecond">5</span>

<script language="javascript" type="text/javascript">
    
var second = document.getElementById('totalSecond').textContent;

    
if (navigator.appName.indexOf("Explorer"> -1)
    {
        second 
= document.getElementById('totalSecond').innerText;
    } 
else
    {
        second 
= document.getElementById('totalSecond').textContent;
    }


    setInterval(
"redirect()"1000);
    
function redirect()
    {
        
if (second < 0)
        {
            location.href 
= '02view.html';
        } 
else
        {
            
if (navigator.appName.indexOf("Explorer"> -1)
            {
                document.getElementById('totalSecond').innerText 
= second--;
            } 
else
            {
                document.getElementById('totalSecond').textContent 
= second--;
            }
        }
    }
</script>
posted @ 2006-11-22 17:20 Jcat 阅读(16850) | 评论 (2)编辑 收藏
我们都知道SQL查询过程中,单引号“'”是特殊字符,所以在查询的时候要转换成双单引号“''”。
但这只是特殊字符的一个,在实际项目中,发现对于like操作还有以下特殊字符:下划线“_”,百分号“%”,方括号“[]”以及尖号“^”。
其用途如下:
下划线:用于代替一个任意字符(相当于正则表达式中的 ? )
百分号:用于代替任意数目的任意字符(相当于正则表达式中的 * )
方括号:用于转义(事实上只有左方括号用于转义,右方括号使用最近优先原则匹配最近的左方括号)
尖号:用于排除一些字符进行匹配(这个与正则表达式中的一样)
以下是一些匹配的举例,需要说明的是,只有like操作才有这些特殊字符,=操作是没有的。
a_b...        a[_]b%
a%b...       a[%]b%
a[b...       a[[]b%
a]b...       a]b%
a[]b...      a[[]]b%
a[^]b...     a[[][^]]b%
a[^^]b...    a[[][^][^]]b%
 
在实际进行处理的时候,对于=操作,我们一般只需要如此替换:
' -> ''
对于like操作,需要进行以下替换(注意顺序也很重要)
[ -> [[]     (这个必须是第一个替换的!!)
% -> [%]    (这里%是指希望匹配的字符本身包括的%而不是专门用于匹配的通配符)
_ -> [_]
^ -> [^]
 
posted @ 2006-11-16 18:31 Jcat 阅读(2618) | 评论 (0)编辑 收藏
--查询short_name有重的记录
select short_name, count(*) from sys_catalog
group by short_name
having count(*)>1
 
--给short_name加上unique约束
alter table sys_catalog add unique (short_name)

--给column01加上check in约束
alter table son add constraint ck1 check (column01 in (1,2,3));

--查询与当前系统时间最近的那个时间
select some_dt, sysdate-some_dt as gap from test_date
where sysdate-some_dt = (select min(abs(sysdate-some_dt)) from test_date)

--加字段
alter table some_table add some_column varchar2(20)

--找出所有包含_(下划线)的字段;网上说用[_],但没成功
select * from test_date where email like '%/_%' escape '/'

--启动用户
alter user scott account unlock;

--更改密码
alter user scott indentified by tiger;
posted @ 2006-11-15 13:50 Jcat 阅读(223) | 评论 (0)编辑 收藏
In my opinion, SYSDBA and SYSOPER are system privileges.
You can find them by select * from system_privilege_map where name like 'SYS%'

As I know
1. schema: SYS, SYSTEM, SYSMAN
2. privilege: SYSDBA, SYSOPER
3. role: DBA

Note: The DBA role does not include the SYSDBA or SYSOPER system privileges.

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

sysdba、sysoper是一种很特殊的权限,可以启动与关闭、创建与删除数据库等,不包含在dba权限之内的。
两个权限是超越数据库的权限(新建,启动,关闭数据库),在数据库之上,所以dba_roles中没有(??)。
只要用internal用户将此权限授给其它的用户就可以用此用户加 as sysdba 登录,可以关闭和启动数据库了。并可以进行oracle DBA所不能做的操作。

授权:
SQL> grant sysdba,sysoper to jcat
收回权限:
SQL> revoke sysdba from jcat

查看这两个权限的拥有情况(需一定的权限,sys就可以看):
SQL> select * from v$pwfile_users

-------------
 
sysdba 拥有最高的系统权限 (sysdba的权限包含所有sysoper的权限)
sysoper主要用来启动、关闭数据库
相比之下,SYSDBA比SYSOPER多了两个权限:
 1)change character set,改变字符集设置;
 2)CREATE DATABASE,创建数据库。
 

sysoper登陆后用户是 public
sysdba 登陆后是 sys
可以通过以下方式进行验证:
SQL> conn test/test as sysoper;
SQL> show user
USER 为"PUBLIC"
 
SQL> conn test/test as sysdba
SQL> show user
USER 为"SYS"
posted @ 2006-10-25 15:12 Jcat 阅读(560) | 评论 (0)编辑 收藏
After a new database built, confirm following tools is working.
 
1. sqlplus
./sqlplus
connect system/******
 
2. isqlplus
http://localhost:5560/isqlplus
username=system
password=******
 
3. TNS
./lsnrctl
start
 
4. em
http://localhost:5500/em
username=system
password=******
posted @ 2006-10-23 16:01 Jcat 阅读(234) | 评论 (0)编辑 收藏
Linux下常用压缩格式的压缩与解压方法

     大致总结了一下linux下各种格式的压缩包的压缩、解压方法。但是部分方法我没有用到,也就不全,希望大家帮我补充,我将随时修改完善,谢谢!
作者:Linux爱好者
来自:www.LinuxByte.net
最后更新时间:2003-12-1

.tar
解压:tar xvf FileName.tar
压缩:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
---------------------------------------------
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
---------------------------------------------
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
---------------------------------------------
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
---------------------------------------------
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
---------------------------------------------
.tgz
解压:tar zxvf FileName.tgz
压缩:未知
.tar.tgz
解压:tar zxvf FileName.tar.tgz
压缩:tar zcvf FileName.tar.tgz FileName
---------------------------------------------

.a
解压:#tar xv file.a

---------------------------------------------
.cpio.gz/.cgz

解压:gzip -dc file.cgz | cpio -div

---------------------------------------------
.cpio/cpio

解压:cpio -div file.cpio 或cpio -divc file.cpio

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

.rpm

安装: rpm -i file.rpm
解压:rpm2cpio file.rpm | cpio -div

---------------------------------------------
.deb

安装: dpkg -i file.deb

解压:dpkg-deb --fsys-tarfile file.deb | tar xvf - ar p file.deb data.tar.gz | tar xvzf -
---------------------------------------------

.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
---------------------------------------------
.rar
解压:rar a FileName.rar
压缩:rar e FileName.rar


rar请到:http://www.rarsoft.com/download.htm 下载!
解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp rar_static /usr/bin/rar

---------------------------------------------
.lha
解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName

lha请到:http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下载!
解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp lha /usr/bin/

---------------------------------------------
.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
解压:sEx x FileName.*
压缩:sEx a FileName.* FileName

sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
sEx请到:http://sourceforge.net/projects/sex下载!
解压后请将sEx拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp sEx /usr/bin/



参考文献:Linux 文件压缩工具指南
(其实看帮助是最好的方法,一般各个命令都可以用“--help”参数得到常用使用方法!)

posted @ 2006-10-19 00:33 Jcat 阅读(466) | 评论 (0)编辑 收藏
select * from user_objects
查看当前数据库的所有对象(表、视图、过程……)

describe AA
显示表AA的信息(字段名、类型……)

select * from AA where rownum=1
返回结果集中的第一行

show parameter para_name    不等同于   select para_name from v$instance
查看初始化参数 (省略para_name可以查看所有的初始化参数)

alter system set para_name = some_value scope = both
修改初始化参数

select * from v$database
查看物理数据库的信息

alter database xxxx
对数据库进行结构性修改

sql>archive log list
查看redo log的信息
posted @ 2006-10-10 16:41 Jcat 阅读(211) | 评论 (0)编辑 收藏

如果查询中包括聚合函数,而所选择的列并不在聚合函数中, 那么这些列就必须在GROUP BY子句中。否则将会出现如下错误:ORA-00937: not a single-group group function


不能在WHERE子句中使用聚合函数来限制行。否则将会出现如下错误:ORA-00934: group function is not allowed here


GROUP BY可以不与HAVING一起使用,但HAVING必须与GROUP BY一起使用


W-G-H的执行顺序
SELECT type_id, AVG(price)
FROM products
WHERE price<15
GROUP BY type_id
HAVING AVG(price)>13;
1. WHERE对返回的进行过滤
2. GROUP BY对保留的行进行分组
3. HAVING对分组进行过滤


子查询不能包含ORDER BY


双引号直接用:'The "Great" Gatsby' (表示字符串 The "Great" Gatsby )
单引号要转义:'O''Malley' (表示字符串 O'Malley )

 DML
select column1,column2 from table
insert into table(column1,column2) values('a','b')
update table set column1='a' where column2='b'
delete from table where column1='a'


--外连接,使用叉积表达有歧义,不运行:查询中包含不允许的外联接请求。
select * from a,b,c
        where a.a_id*=b.a_id
            and b.b_id*=c.b_id

--这样就不存在歧义性了
select * from a
    LEFT OUTER JOIN b on (a.a_id=b.a_id)
    LEFT OUTER JOIN c on (b.b_id=c.b_id)

posted @ 2006-08-23 08:36 Jcat 阅读(402) | 评论 (1)编辑 收藏

Pseudo columns

A pseudo column is an item of data which does not belong in any particular table but which can be treated as if it did. Any SELECT list of columns can include these pseudo columns.
SYSDATE         current date and time

ROWNUM          sequence number assigned to retrieved rows

ROWID           unique identifier for a row

UID             number associated with a user

USER            userid of current user

The DUAL table

ORACLE provides a "dummy" table called DUAL containing one column and one row. It is useful for selecting miscellaneous information from ORACLE.

Some uses for DUAL

  • Display today's date

    SELECT SYSDATE FROM dual;

  • Display the value of 356 divided by 17, to three decimal places

    SELECT ROUND(356 / 17, 3) FROM dual;

  • Display the current user name

    SELECT USER FROM dual;

posted @ 2006-08-18 08:50 Jcat 阅读(223) | 评论 (0)编辑 收藏

http://www.oracle.com/pls/db102/portal.portal_db?selected=3#index-SQL

Basical
 
Concepts -> Administrator's Guide -> SQL Reference


Advanced 

PL/SQL User's Guide and Reference

SQL*Plus User's Guide and Reference

Reference

Application Developer's Guide – Fundamentals

Backup and Recovery Advanced User's Guide

Backup and Recovery Basics

Backup and Recovery Reference

 

posted @ 2006-08-12 17:03 Jcat 阅读(193) | 评论 (0)编辑 收藏
吉祥三宝

http://struts.apache.org/


http://www.springframework.org/


http://www.hibernate.org/

Apache

http://ant.apache.org/
Apache Ant is a Java-based build tool. In theory, it is kind of like Make, but without Make's wrinkles.

http://lucene.apache.org/

Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform.

http://jakarta.apache.org/commons/index.html
The Commons is a Jakarta subproject focused on all aspects of reusable Java components.

http://jakarta.apache.org/velocity/index.html
Velocity is a Java-based template engine. It permits anyone to use a simple yet powerful template language to reference objects defined in Java code.

Sourceforge

http://junit.sourceforge.net/
JUnit is a simple framework to write repeatable tests. It is an instance of the xUnit architecture for unit testing frameworks.

http://httpunit.sourceforge.net/
HttpUnit makes you easy  to be able to bypass the browser and access your site from a program. When combined with a framework such as JUnit, it is fairly easy to write tests that very quickly verify the functioning of a web site.

http://dozer.sourceforge.net/
Dozer is a powerful, yet simple Java Bean to Java Bean mapper that recursively copies data from one object to another. Typically, these Java Beans will be of different complex types.

http://xdoclet.sourceforge.net/xdoclet/index.html
XDoclet is an open source code generation engine. It enables Attribute-Oriented Programming for java. In short, this means that you can add more significance to your code by adding meta data (attributes) to your java sources. This is done in special JavaDoc tags.

http://displaytag.sourceforge.net
The display tag library is an open source suite of custom tags that provide high-level web presentation patterns which will work in an MVC model. Actually the display tag library can just... display tables! Give it a list of objects and it will handle column display, sorting, paging, cropping, grouping, exporting, smart linking and decoration of a table in a customizable XHTML style.

http://cglib.sourceforge.net/
cglib is a powerful, high performance and quality Code Generation Library, It is used to extend JAVA classes and implements interfaces at runtime.

Others

http://www.opensymphony.com/compass/
Compass is a first class open source Java Search Engine Framework, enabling the power of Search Engine semantics to your application stack decoratively. Built on top of the amazing Lucene Search Engine, Compass integrates seamlessly to popular development frameworks like Hibernate and Spring.

http://www.opensymphony.com/quartz/
Quartz is a full-featured, open source job scheduling system that can be integrated with, or used along side virtually any J2EE or J2SE application - from the smallest stand-alone application to the largest e-commerce system.

http://groovy.codehaus.org/
Groovy is an agile dynamic language for the Java Platform with many features that are inspired by languages like Python, Ruby and Smalltalk, making them available to Java developers using a Java-like syntax.

http://www.singularsys.com/jep/
JEP
is a Java library for parsing and evaluating mathematical expressions. With this package you can allow your users to enter an arbitrary formula as a string, and instantly evaluate it. JEP supports user defined variables, constants, and functions. A number of common mathematical functions and constants are included.

http://www.dom4j.org/
dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP.

http://www.castor.org/
Castor is an Open Source data binding framework for Java. It's the shortest path between Java objects, XML documents and relational tables. Castor provides Java-to-XML binding, Java-to-SQL persistence, and more.
posted @ 2006-08-12 15:28 Jcat 阅读(360) | 评论 (0)编辑 收藏
单行注释: ##your note
多行注释: #*your note*#

不能直接访问对象的域,只能通过方法来访问。关于方法的调用,有两种变体(Velocity会帮你调用相应的方法):
1)对于context中的Hashtable对象,可以直接用$hashtable.key来得到value,相当于$hashtable.get(key)
2)对于context中的JavaBean对象,可以直接用$javaBean.property来访问,相当于$javaBean.getProperty()

安静引用符(Quiet Reference Notation)$!
作用:当引用的变量为null时,将输出空字符串。(如果用$xxx,当null时,会输出字符串"$xxx")

双引号中的$xxx将仍然被解析;单引号中的$xxx将不被解析,输出字符串"$xxx"

关于路径:
1. 为VelocityEngine指定velocityLoaderPath,该路径为存放vm文件的根目录(其下可以建子文件夹,无需另外指定)
2. 对vm的引用都是以velocityLoaderPath开始的绝对路径。比如:
 |-velocityLoaderPath
   |-a.vm
   |-B
     |-b.vm
在b.vm中引用a.vm:#parse("a.vm") 正确;  #parse("../a.vm") 错误
posted @ 2006-08-08 08:21 Jcat 阅读(381) | 评论 (0)编辑 收藏

最后的逗号
String[] strs = {"1", "2", "3", };
System.out.println(strs.length); //3

这竟然是符合语法的!

ArrayInitializer:       
{ [VariableInitializer {, VariableInitializer} [,]] }
VariableInitializer: ArrayInitializer Expression
http://java.sun.com/docs/books/jls/third_edition/html/syntax.html#18.1

"This is good for quick testing. I always use this. In my case, I have a table, sometimes I care some columns, other times I care some other columns, so I am lazy to remove the last comma when I change columns. It's convenient."



运行没有main的java类
      通常我们需要在java类中添加main函数才能在命令行运行这个类,但是有一种(可以让你晕死的)方法可以让你在没有main的情况下也可以运行java class(当然不是用applet),代码如下:

public   class  NoMainMethod
{
    
static
{
        System.out.println(
" Hello word, no main method! " );
        System.exit(
0 );
    }

}

      static语句块会在加载类的时候加载,它在main函数之前运行。 当static语句块运行完毕后,会寻找main函数,如果没有找到,就会抛出异常。但是在以上的代码中,static语句块执行后,我们终止程序的运行,所以异常就不会被抛出啦。


跳出JavaBean的命名规范
      通常,JavaBean的命名规范为:属性名的第二个字母也不能大写。即不可以出现类似 aAndB 这样的属性名。如,Hibernate的PO如果出现这样的名字,将抛出net.sf.hibernate.PropertyNotFoundException异常。但是有一个办法可以解决该问题:

java file:     
private  String aAndB;   
public  String getAAndB()  {        
        
return  aAndB;   
}
   
public   void  setAAndB(String aAndB)  {       
         this .aAndB  =  aAndB;   
}

mapping.xml < property  name ="AAndB"  column ="a_and_b" />
      结研究发现,上述办法可以成功的将aAndB这样的属性与数据库mapping起来。
      显然hibernate是通过setter和getter来访问对象的属性的,所以我们可以说:mapping.xml并不是在类的属性和数据库的字段名之间做映射,而是在setter/getter和数据库的字段之间做映射。
      诚然,即使可以也别这么干,实际工作中,还是规避这种问题的好。 

posted @ 2006-08-06 00:27 Jcat 阅读(260) | 评论 (0)编辑 收藏
Experience
To know how dose List.remove(Object) work, I do many test sample. But I still feel not very realizing. Finally, I took a look at souce code, and then I knew everything!
public boolean remove(Object o) {
    
if (o == null{
            
for (int index = 0; index < size; index++)
        
if (elementData[index] == null{
            fastRemove(index);
            
return true;
        }

    }
 else {
        
for (int index = 0; index < size; index++)
        
if (o.equals(elementData[index])) {
            fastRemove(index);
            
return true;
        }

        }

    
return false;
    }
1. List store very object's reference but object's own.
2. remove(Object) will remove the first reference in List which refer to the object
3. If you want to change an object to a new index: back up it--> remove it--> re-add it

Experience
I create a class to handle something annotated by Annotations. But it doesn't work. I found out it is returned false by Class.getMethod().isAnnotationPresent(Todo.class). Finally, I got the reason by reading source code.
public enum RetentionPolicy {
    
/**
     * Annotations are to be discarded by the compiler.
     
*/
    SOURCE,

    
/**
     * Annotations are to be recorded in the class file by the compiler
     * but need not be retained by the VM at run time.  This is the default
     * behavior.
     
*/
    CLASS,

    
/**
     * Annotations are to be recorded in the class file by the compiler and
     * retained by the VM at run time, so they may be read reflectively.
     *
     * 
@see java.lang.reflect.AnnotatedElement
     
*/
    RUNTIME
}

posted @ 2006-08-03 18:43 Jcat 阅读(332) | 评论 (0)编辑 收藏

Languages

Java: SCJP1.5 (Just for interesting, waiting for a good book about 1.5)

English: Java is our father, while English is our mother!

XML: XML schema vs DTD

SQL: PL/SQL

UML

HTML + JS + CSS (Just a little)

Java Frame Work

Junit vs TestNG

Ant

Struts + Spring + Hibernate

Lucene + Compass
 

Tools

IntelliJ: Keymap practice and Plugin investigation

Oracle 10g: To be a OCA at first

PowerDesigner

Tomcat vs ???

Postgre

Linux: Very important, but I have no any other time in faith.


Others

7habits: To be a habit, but time is also a big problem

Design Pattern: To read gof's book.

AJAX

AOP

J2ME

posted @ 2006-07-31 22:44 Jcat 阅读(287) | 评论 (0)编辑 收藏
状:刚配置好struts,可是DispatchAction怎么都不工作(Action可以工作),也不报错
原因:只引入了struts自身的jar,看一看release中lib下,还有不少非struts的jar,可以猜想这些都是DispatchAction所需要的,而Action不需要(以前以为这些没用)。不报错让我很郁闷。



状:刚配置好struts,action可以工作了,就是不能正确的forward到jsp页面,execute中加断点,也不进入。
原因:execute有两个!!!HttpServletRequest vs ServletRequest,前者才是struts所使用的execute。



状:在web.xml里面设置好了

<error-page>
        
<error-code>404</error-code>
        
<location>/404.jsp</location>
</error-page>

但当出现404错误时,并没有显示404.jsp这一页,而是显示browser提供的error report page

原因:在客户端浏览器如IE的internet选项高级属性中默认使用“友好的http错误信息”,这样会造成你的服务器是输出你所定义的错误页面,但到客户端被IE这混蛋给覆盖掉了。解决方案是你定义的错误页面的大小必须大于512bytes,就不会被客户端设置所影响了。



状:用hibernate访问数据库,可以insert,可以select,可以drop,就是不能update,而且没有任何错误消息

原因:
<class name="com.verican.base.model.CatalogPO" table="sys_catalog" mutable="false">设置成true即可。
(当mutable=false,却又执行update操作时,hibernate至少应该提供警告消息告知一下才对,可惜没有,所以很难发现)



状:
      Javascript弹出窗口时,如果用的是相对路径,形如javascript:void(window.open('../../test.html')),不同的浏览器的处理不同(因为js是浏览器处理的东西)。
      比如,不是部署在根目录下时(根目录下又建了一个目录):在Firefox下,是以服务器为视角,则../../即可;而在IE下,则是以浏览器为视角,则需要多加一级,如../../../
            
解决:用绝对路径 javascript:void(window.open('http://www.verican.com/test.html'));或者,用 <a target="_blank" href="../../test.html"> (因为这是服务器处理的东西,所以不管部署在哪里,相对路径都是唯一确定的)



状:
刷新的时候 1)抛出ServletException
                     2)The page cannot be refreshed without resending the information, Click Retry to send the information again.

原因:Struts中redirect设置问题(具体原理以后再研究)

解决:一般的,forward到一个具体的page,redirect=false;forward到另一个action,redirect=true
           
<forward name="add_item" path="newsletter.add_item.page" redirect="false"/>
<forward name="success" path="/newsletter.do" redirect="true"/>


状:

save a form --> forward to list page --> refresh --> retry --> save the form again (error)


原因:
<forward name="list" path="ticket.list.page" redirect="false"/>

解决:一般的,从save一个表单后,应该forward到另一个action,且redirect=true(而不是另一个page,即便当前action里有这个page)。这样可以保证不会通过刷新重复save数据。
<forward name="list" path="ticket.do" redirect="true"/>



状:
      用Spring + Velocity发email,开始都好好的,也能现实图片,但当加入某一幅图片以后,无法正常显示(得到一个页面为空白的Email,虽然也有大小)。把图片从bmp换到jpg,再换到gif,未果。减小图片的尺寸、大小,未果。几乎都要绝望了~~~

原因:NOTE: Invoke addInline after setText; else, mail readers might not be able to resolve inline references correctly.(这是Spring API里的原话,NND)

感受:
      1.以前没写过发Email的程序,工作中用到了,照猫画虎拿过来就用,也没有仔细阅读文档,导致这次惨痛的教训。
      2.Spring中这部分设计的也有问题,它在两个表面上没什么关系的方法之间,建立了顺序上的依赖关系。这使得出现这种情况时,没有任何线索。



状:
遍历List时,一调用remove就出错,(错误的)代码如下
for (Object o : list)
    
{
            list.remove(o);
        }

原因:ConcurrentModificationException,有remove操作时,不能用foreach循环

解决:用传统循环(看了传统还是很有用的)
for (int i = 0; i < list.size(); i++)
    
{
            list.remove(i
--);
        }
注意remove过需要 i--  (--i is wrong)



状:
boolean b = new Integer(3== new Integer(3); //false

原因:其实是很简单的问题,但是IDEA只会对String的 = = 做智能提示,注意即可。



状:
org.hibernate.MappingException: Could not read mappings from resource: jcat/learn/mapping.xml
 
开始以为路径没写对,试验了N中路径的写发后,还是不行。后来才发现是因为mapping.xml是空的。
 
解决:给mapping.xml加上一个空壳就可以了(好歹空壳不等于空)
 
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping default-lazy="false">

</hibernate-mapping>
 
NOTE:几种路径的写法
1. classpath:packagename/filename
例子:在applicationContext.xml中注册hibernate.cfg.xml
<bean id="GlobalHibernateSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        
<property name="dataSource">
            
<ref local="GlobalDataSource"/>
        
</property>
        
<property name="configLocation">
            
<value>classpath:hibernate.cfg.xml</value>
        
</property>
</bean>

2. packagename/filename
例子:在hibernate.cfg.xml中注册mapping.xml
<mapping resource="jcat/learn/hibernate_in_spring/orm.xml"/>


状:提交表单程序,加入了上传文件的功能后,出现异常
java.lang.IllegalArgumentException: Cannot invoke com.verican.newsadmin.form.TicketForm.setUploadFile - argument type mismatch

解决:将表单声明为mulptipart类型
<html:form action="/ticket" enctype="multipart/form-data">
         
<html:file property="uploadFile"/>
</html:form>



状:IE cannot open the Internet site file: ....
<html>
<head>
    
<title></title>
</head>
<body>
    
<span id="TypeDes2"/>
    
<script type="text/javascript">
       TypeDes2.innerHTML 
= "Test Span";
    
</script>
</body>
</html>

解决:对于单标签,浏览器找不到innerHTML属性。改为双标签即可。
<span id="TypeDes2"></span>
posted @ 2006-07-25 13:11 Jcat 阅读(763) | 评论 (0)编辑 收藏
physical disk, physical memory

a time-consuming operation

并,共,多
concurrent
shared
simultaneous
synchronize
multiprocess
distributed processing
posted @ 2006-07-15 21:52 Jcat 阅读(279) | 评论 (0)编辑 收藏

“总-分”结构

To do sth requests:
   1. .......
   2. .......

Do one of the following:
   Ÿ On Windows: .....
   Ÿ On Linux: ....

This section provides background information on ..... and describes how to .......
The following topics are covered:
     1....
     2...

The only circumstances under which you should need to change SGA and PGA Aggregate sizes are the following:
   1...
   2...


描述命令行

Enter the following command at the operating system prompt to start SQL Command Line: 
   .........

At the SQL Command Line prompt, enter the following command: 
   select * from table1;

If the command is successful, the following message is displayed:
   .........


确保

Ensure that sth is started.

Be certain that .....


请参见

Set environment variables according to the instructions in "Setting E... V... on the Linux Platform"

See "......." for instructions.

See "......" for more information.

See"...." for a discussion of .....

See Also: ...

posted @ 2006-07-09 18:09 Jcat 阅读(301) | 评论 (0)编辑 收藏

>sqlplus /nolog              Just startup SQL*PLUS but haven't connected to DB

>sqlplus / as sysdba      Use os authentication

>sqlplus user/pwd         Use db authentication


SQL>startup                  Startup Oracle service (should startup TNSListener at first)

SQL>shutdown

SQL>connect user/pwd                        Local connection

SQL>connect user/pwd@host:1521    Remote connection *1* *2* *3*

SQL>connect system/pwd                   The pwd is the SYSTEM password that you set upon installation of Oracle Database XE.


>lsnrctl status               View listener status

>lsnrctl start

>lsnrctl stop

>lsnrctl reload

>lsnrctl services


>emctl start dbconsole  

>emctl start agent       start up the EM Grid Control facility

>isqlplusctl start         start up the iSQL*Plus server

Note
*1* Logging in to the Oracle Database XE host computer with an ssh (or telnet ) session and then starting SQL Command Line (or other Oracle command-line utility) is considered a local connection, even though you start the ssh (or telnet ) application on a remote computer.

*2* The remote computer must have Oracle client software installed.

*3* Only Oracle Database XE Client supports the notion of a default database service. If you connect remotely from any Oracle client software other than Oracle Database XE Client, you must include the XE service name.


 

posted @ 2006-07-09 11:18 Jcat 阅读(406) | 评论 (0)编辑 收藏
Environment Variables:
   GROOVY_HOME=(your groovy install path)
   path=%GROOVY_HOME%/bin
   classpath=%GROOVY_HOME%/embeddable/groovy-all-1.0-JSR-06.jar


Hello.groovy (very very simple)
println "hello groovy"


cmd
>groovyc Hello.groovy
>java Hello
>hello groovy
posted @ 2006-07-07 18:20 Jcat 阅读(135) | 评论 (0)编辑 收藏

POJO principle

 

1. The class can not be final

 

2. Must implement Serializable

 

3. Must contain a non-argument constructor

 

4. The getter and setter must be public

 

posted @ 2006-07-03 14:24 Jcat 阅读(236) | 评论 (0)编辑 收藏
     摘要: Ajax Asynchronous JavaScript and XML. Ant Ant is a software too...  阅读全文
posted @ 2006-06-30 14:01 Jcat 阅读(1931) | 评论 (1)编辑 收藏
     摘要: Editing Ctrl + Space Basic code completion (the name of any class, method or v...  阅读全文
posted @ 2006-06-26 21:26 Jcat 阅读(329) | 评论 (0)编辑 收藏

==must be installed==

RegexPlugin
http://www.intellij.org/twiki/bin/view/Main/RegexPlugin

unitTest: better (and also bigger) than JunitGenerator

CVS bar: VCS bar is too old

SpellCheckPlugin
http://www.intellij.org/twiki/bin/view/Main/SpellCheck

DBHelper: more powerful than  SQL Query Plugin. Maybe the latter will be removed after I am familiar with DBHelper.
http://ca.geocities.com/davidhuo2003/dbhelper.html

Rearranger: use it in canonical class, such as bean  
http://www.intellij.org/twiki/bin/view/Main/RearrangerPlugin

simpleUML  
http://www.intellij.org/twiki/bin/view/Main/SimpleUML

Key promoter: Shows to user how easy he can make same action using only keyboard


==good for using==

IdeaMouseGestures: IdeaMouseGestures plugin provides easy way to assign Idea's menu items to mouse gestures.
http://www.smardec.com/products/idea.html

KonaWorks PowerPack: A new code action to easily insert an expression inside a string literal
http://www.konaworks.org/

DragNDrop: This plugin will allow a user to drag and drop files into the main pane of IntelliJ

Workspaces
http://www.intellij.org/twiki/bin/view/Main/WorkspacesPlugin

RemoteTail: The plugin allows the user to view the content of a file which could be on a different computer.

Jump to Usage: Simple plugin to make navigation to element usages easier than using Alt+F7.
http://sourceforge.net/projects/jumptousage

Library Finder: helps to find library files (.jar/.zip) for a "fully qualified" class/resource name.
http://code.google.com/p/libraryfinder/

IntelliLang: IntelliLang is a combination of three basic kinds of functionality that are meant to support the developer in dealing with certain tasks that relate to (custom) languages in IntelliJ IDEA.
http://www.jetbrains.net/confluence/display/CONTEST/IntelliLang

XPathView + XSLT-Support: required by IntelliLang
http://www.intellij.org/twiki/bin/view/Main/XPathViewPlugin

Tabifier: The tabifier plugin retabs Java code so that syntactic elements are aligned vertically. 
http://www.intellij.org/twiki/bin/view/Main/TabifierPlugin

Struts Assistant: it will conflict with Struts Plugin, so Struts Assistant is enough.
http://www.intellij.org/twiki/bin/view/Main/StrutsAssistant

IdeaSpring: Helpful to edit applicationContext.xml. But it is even a commercial one! So it has to be re-download every 15 days.

XFile: defaul Changes is good enough, so maybe it will be removed later.
http://www.echologic.com/plugins/xfiles.html

UpperLowerCapitalize: just use the capticalize, since there is default upper/lower in IDEA
http://www.intellij.org/twiki/bin/view/Main/UpperLowerCapitalize

IdeaJad: a popular decompiler
http://www.tagtraum.com/ideajad.html

SyncEdit: Remove the default shortcut "Tab" (for "Next SyncEditable Word"), since I need "Tab" work normally.

World of Java
http://www.worldofjava.org/

Scratch Pad: Additional editor tool window to hold pieces of code temporarily. No syntax colouring, intentions or error highlighting.
http://www.intellij.org/twiki/bin/view/Main/ScratchPadPlugin

HTML Preview: Provides preview for html files using Mozilla browser


==learning==

TabSwitch: Open files/tabs switcher

CVS Report for IntelliJ IDEA: CVS Report for IntelliJ IDEA is a free open source plugin for IntelliJ IDEA to generate statistical reports from your CVS repository.
http://vcsreport.sourceforge.net/

RssPlugin: RSS Plugin for viewing RSS feeds within IntelliJ.
http://www.intellij.org/twiki/bin/view/Main/RssPlugin

Hibernate Tools: better than hibero which is even a commercial one!

Smart Introduce: how to use it?
http://www.intellij.org/twiki/bin/view/Main/SmartIntroducePlugin

GroovyJ: hoping it can become more powerful
http://groovy.codehaus.org/IntelliJ+IDEA+Plugin


==not very useful, so can be ignore==

Code Outline: Have not found anything useful  (dosen't work in IDEA 6.0)

OpenContainingForder: Plugin for Viewing folders with Windows Explorer, but cannot open a folder. So "Alt+Shift+E" is better 

LineMover: default "Ctrl+Shift+Up/Down" is enough.

SQL Query Plugin: DBHelper is good enough

SQL script editor: DBHelper is good enough

JavaDoc Browser: the window can't be big enough, so acutal browser (such as fire fox) is better.



BTW: if you have any good recommendation, welcome to share with us. 

posted @ 2006-06-24 13:01 Jcat 阅读(1155) | 评论 (0)编辑 收藏
DAO=Data Access Object
   It consist of two models: Data Accessor and Domain Object
   It also can be cut into 3 objects: Data, Accessor and domain Object
posted @ 2006-06-23 18:39 Jcat 阅读(205) | 评论 (0)编辑 收藏
计算机领域中的任何问题都可以通过增加一个“层”来解决!
   (比如:JVM、MVC、Hibernate都是用这一思想取得了成功)

这是一个配置编程的时代!
   (如何framework都可以看作是一个巨大的函数,配置文件就是传入的参数列表)

努力不一定成功!但放弃一定失败!

真的猛士,敢于直面惨淡的人生,正视淋漓的鲜血! (Jayson)

你可以拒绝学习,但你的竞争对手不会!

很多事情需要耐心等待转机。等了,可能失望,但没有遗憾(好好)

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

男人要有像厕所一样的胸怀,容忍如同粪便的一切!(不得不承认,这是我见到的最大度的一个男人)

让我们摒弃浮躁,读优秀的书,用优秀的技术,做出优秀的高质量的软件,毫无畏惧地生活,直面所有障碍和困境,并充满信心地克服!(一个优秀人的blog里的签名)

经验这种东西,机器到现在还学不来。现在各种所谓”智能”仍然像个傻瓜,包括商业智能。

专业性越强企业的生存能力要远远超过多元化的企业,其实人也是这样。(from ttnn)
posted @ 2006-06-23 15:14 Jcat 阅读(329) | 评论 (0)编辑 收藏

1. Tomcat config file, where you can change Tomcat's port number: <CATALINA_HOME>/conf/server.xml  

<  Host ...   >  
       ...
       
<  Context   path  ="/app1"   docBase  ="app1"   debug  ="0"   reloadable  ="true"   />
 
       
<  Context   path  ="/app2"   docBase  ="app2"   debug  ="0"   reloadable  ="true"   />
 
       
<  Context   path  ="root url"   docBase  ="root dir (or the path of .war)"   debug  ="0"   reloadable  ="note1"   >
 
< / Host >
  


note1: whether auto-reload the web application, when .class file is changed
              1) during developing, set reloadable=true
              2) after deployment, set reloadable=false


2. Some libs

/server/lib 

just for Tomcat

/shared/lib

for all web apps

/common/lib

both Tomcat and all web apps

/webapps/jcat/WEB-INF/lib

just present web app

 

3. Immobile Directory Structure (the names are also immobile, include uppercase/lowercase) 
   /jcat
   /jcat/WEB-INF
   /jcat/WEB-INF/web.xml
   /jcat/WEB-INF/classes
   /jcat/WEB-INF/lib

     

Note: WEB-INF/classes is loaded by tomcat before WEB-INF/lib , so classes has priority than lib

 
4. Scopes
      Application:在整个web应用程序内有效。对应于servelet中的ServletContext对象,Action中的获取:getServlet().getServletContext()
      Session:在一个用户与服务器建立连接的整个过程中有效。Action中的获取:httpServletRequest.getSession()
      Request:在一个请求周期内有效。就是从你点击页面上的一个按钮开始到服务器返回响应页面为止(包括响应页面)。
      Page:仅在一个jsp页面内有效。


*1*
 
Request in Struts: PageFrom (request.setAttribute by using Form)-->Action(request.getAttribute&setAttribute)-->PageTo (request.getAttribute by using EL) 

*2* :
Parameter vs Attribute in request
   Parameter URL 带过来的参数,只能是个 String ,如
www.verican.com/test?para1=1&para2=ttt
   在 Action 中的调用:
request.getParameter("para1"); 
   在响应页面中的调用: ${param.para1} param EL 的隐藏对象) 


   Attribute
一般是 Form 带过来的属性,可以是任何对象
   
Action 中的调用:一般已经存在于 Form 对象中;
   在响应页面中的调用: ${attributeName.xxx} 
EL 会自动调用 getXxx 方法,所以该 attribute 必须实现 getXxx 方法)

5. Web server跟踪客户状态的四种方法(HTTP是无状态的协议)
    1)建立含有跟踪数据的隐藏表格字段
    2)重写包含额外参数的URL
    3)使用持续的Cookie
    4)使用Servlet API中的Session机制

6. JavaBean的标准
   1) should be a public class
   2) should have a non-argument constructor
   3) fields should be privated, and using get & set to access them
   4) also can have some other functions as a common class

posted @ 2006-06-23 09:11 Jcat 阅读(379) | 评论 (0)编辑 收藏

1. workdir=learnJar

目录结构
+ learnJar
 | mf.mf
 |+ test
   | Test.java
 
2. workdir>javac test\Test.java

+ learnJar
 | mf.mf 
 |+ test
   | Test.java
   | Test.class

3. workdir>jar cvfm a.jar mf.mf test\Test.class

+ learnJar
 | mf.mf
 |+ test
   | Test.java
   | Test.class
 |+ a.jar
   |+ META-INF
     | MANIFEST.MF
   |+ test
     | Test.class

 4. workdir>java -jar a.jar
hello world


NOTE
1. manifest.mf可以放在任何位置,也可以是其它的文件名(反正最后jar中的文件名会被自动变为MANIFEST.MF)
2. "Manifest-Version: 1.0"--该行(以及其它行)冒号后面必须是个空格,否则jar时出错"invalid header field"
3. "Main-Class: test.Test<回车>"--该行必须以一个回车符结束,否则无效。
4. 如果是有UI的程序双击jar文件即可运行。(如果安装了winrar等压缩软件,jar文件会被关联,因此,双击时并不会执行jar程序,而是调用压缩软件来打开jar文件,这时,将jar的关联去掉即可)

Appendix
Test.java

package  test;

import  javax.swing. * ;

public   class  Test  extends  JFrame {
    
public   static   void  main(String[] args) {
        Test impl
= new  Test();
        JLabel label 
=   new  JLabel( " hello world " );
        impl.add(label);
            impl.pack();
        impl.setVisible(
true );
    }

}

mf.mf
Manifest-Version: 1.0
Main
-Class: test.Test
<回车>
posted @ 2006-06-19 22:45 Jcat 阅读(1545) | 评论 (2)编辑 收藏