waterye

#

锁管理

查看锁
select t2.username,t2.sid,t2.serial#,t2.logon_time 
  
from v$locked_object t1,v$session t2 
 
where t1.session_id=t2.sid order by t2.logon_time;

kill 锁
alter system kill session 'sid,serail#';
也可以用oem来杀掉

posted @ 2005-09-07 00:55 waterye 阅读(300) | 评论 (0)编辑 收藏

升级播放程序

为了播放不同编码的视频文件, 真的好烦, 装了一堆播放器, 有的还不兼容, 千万不要用不负责任ffdshow。

RealPlayer+K-Lite Code Pack(2.5.3)+WinDvd(7.0 Platinum),KMplayer当备用


现在顺心多了, 但还有点小问题, WinDvd(占用cpu很少)播放小部分vob还是会出错, 用realplayer代劳算了。

posted @ 2005-09-07 00:51 waterye 阅读(581) | 评论 (2)编辑 收藏

GvTags

GvTags makes it easy to write web applications in the new dynamic programming language Groovy. GvTags is a Groovy Tag library for Java ServerPages (JSP). GvTags might be for the Groovy programming language what the combination of JSTL and Struts is for Java, or Smarty is for PHP.

官方站点: http://gvtags.berlios.de/cgi-bin/gvtagswiki.pl

最新版本是0.1.1

下载了源码包看了一下, 还是挺有意思的.

<gv:import class='org.gvtags.examples.counter.Counter' />
<gv:bean var='c' class='Counter' scope='session' />
<gv:formbean var='formBean' />
<gv:code>
    if (formBean.submit != null) {
        // handle input
        switch(formBean.submit.trim()) {
            case "+":
                c.increment()
                break
            case "-":
                c.decrement()
                break
            case "Reset":
                c.reset()
                break
        }
    }
</gv:code>

大部分源码是groovy写的

posted @ 2005-09-05 18:45 waterye 阅读(611) | 评论 (1)编辑 收藏

pl/sql script

将select出来的数据update到其他table, 使用JDBC的话几行代码就搞定, 但要经过不算烦人的compile, 为了在没有Java的环境使用(安装新版本的Oracle要JVM)

用pl/sql script是更简单方法,从在线文档copy个sample过来, 改一改就能用

DECLARE
    
CURSOR c1 IS SELECT order_item_no, unit_price FROM sale_order_item;
    TYPE ResultSet 
IS TABLE OF c1%ROWTYPE;
    rs ResultSet; 
BEGIN
    
    
select i.order_item_no, goods.unit_price BULK COLLECT into rs
  
from sale_order o, sale_order_item i, goods
 
where o.order_no = i.order_no
   
and i.goods_no = goods.goods_no
   
and trunc(o.order_time, 'month'>= to_date('2005-6''yyyy-mm');

    
IF rs.count > 0 THEN 
        
FOR i IN rs.FIRST .. rs.LAST LOOP
            
update sale_order_item set unit_price = rs(i).unit_price where order_item_no = rs(i).order_item_no;
        
END LOOP; 
    
END IF;
    
    
commit;
        
END;

再在sqlplus运行
sqlplus /nolog
conn 
user/passoword@sid
@update.sql

posted @ 2005-09-03 16:26 waterye 阅读(400) | 评论 (0)编辑 收藏

Groovy String

1. 单行String
单引号是普通字符串, 双引号是GString
def hw = 'hello, world'
println 
'hello, world'
println 
'groovy say "Hello, world!"'
println 
"groovy say ${hw}"

2. 多行String
def blogAddr = 'http://www.blogjava.net/waterye'
println 
"""\
Water Ye's blog:
${blogAddr}
"""

3. 使用range获取substring
println hw[hw.length()-1..0]
不用羡慕python,ruby了

4. 增加的api, 参考gdk
http://groovy.codehaus.org/groovy-jdk.html

posted @ 2005-09-03 15:55 waterye 阅读(3191) | 评论 (0)编辑 收藏

Hibernate的视图功能

Hibernate3增加了视图功能

1. 定义hbm
    <class name="Customer" table="customer">        
        
<id name="id" unsaved-value="0" column="id">
            
<generator class="hilo"/>
        
</id>        
        
<property name="name"  not-null="true"/>        
    
</class>
    
    
<class name="Supplier" table="supplier">        
        
<id name="id" unsaved-value="0" column="id">
            
<generator class="hilo"/>
        
</id>
        
<property name="name" not-null="true"/>            
    
</class>
    
    
<class name="All" mutable="false">    
        
<subselect>
            select id, name from customer
            union 
            select id, name from supplier
        
</subselect>
        
        
<synchronize table="customer"/>
        
<synchronize table="supplier"/>
        
        
<id name="id" unsaved-value="0" column="id">
            
<generator class="hilo"/>
        
</id>        
        
<property name="name"/>        
    
</class>

2. 定义POJO
pulic class Customer {
    
public Integer id;
    
public String name;
}


pulic 
class Supplier {
    
public Integer id;
    
public String name;
}


pulic 
class All {
    
public Integer id;
    
public String name;
}

3. 查询
List all = session.createQuery("from All").list();

posted @ 2005-09-02 22:39 waterye 阅读(5866) | 评论 (2)编辑 收藏

复制表

复制表结构和数据
create table new_table as select * from old_table;

复制表结构
create table new_table as select * from old_table where 1=0;

posted @ 2005-09-02 21:58 waterye 阅读(361) | 评论 (0)编辑 收藏

通过RowId删除重复记录

通过RowId删除重复记录

DELETE FROM test t1
 
WHERE t1.ROWID <
       (
SELECT max(t2.ROWID) FROM test t2 WHERE t2.name = t1.name);

posted @ 2005-09-01 20:54 waterye 阅读(378) | 评论 (0)编辑 收藏

Spring book

随着Spring的流行, 书还真出了不少

本人收集的有:
1. <<Spring Live>>
2. <<Spring In Action>>
3. <<Pro Spring>>
4. <<Spring A Developers Notebook>>
5. <<Professional Java Development with the Spring Framework>>

看了第5本(Core Developer写的)的话, 就不用看其他的了, 有的简直是骗钱,还不如看petclinic

posted @ 2005-08-31 21:20 waterye 阅读(2744) | 评论 (12)编辑 收藏

Hibernate的查询方式

小结Hibernate的查询方式

1. get() and load()
session.get(Clazz, id);
session.load(Clazz, id);

说明: load()与get()的区别
请注意如果没有匹配的数据库记录,load()方法可能抛出无法恢复的异常(unrecoverable exception)。 如果类的映射使用了代理(proxy),load()方法会返回一个未初始化的代理,直到你调用该代理的某方法时才会去访问数据库。 若你希望在某对象中创建一个指向另一个对象的关联,又不想在从数据库中装载该对象时同时装载相关联的那个对象,那么这种操作方式就用得上的了。 如果为相应类映射关系设置了batch-size, 那么使用这种操作方式允许多个对象被一批装载(因为返回的是代理,无需从数据库中抓取所有对象的数据)。

如果你不确定是否有匹配的行存在,应该使用get()方法,它会立刻访问数据库,如果没有对应的行,会返回null

2. HQL

// 返回一行记录
String hql = "from TOrder o where o.id = ?";
TOrder o 
= (TOrder) s.createQuery(hql)
        .setParameter(
0, orderId)
        .uniqueResult();

// 命名参数
Query q = sess.createQuery("from DomesticCat cat where cat.name = :name");
q.setString(
"name""Fritz");

// 位置参数
Query q = sess.createQuery("from DomesticCat cat where cat.name = ?");
q.setString(
0"Izi");

// 命名参数列表
Query q = sess.createQuery("from DomesticCat cat where cat.name in (:namesList)");
q.setParameterList(
"namesList", names);

// 分页查询 
Query q = sess.createQuery("from DomesticCat cat");
q.setFirstResult(
20);
q.setMaxResults(
10);
List cats 
= q.list();


3. Criteria

List list = s.createCriteria(Enrolment.class)
            .createAlias(
"student""s")
            .createAlias(
"course""c")
            .add( Restrictions.isNotEmpty(
"s.enrolments") )
            .setProjection( Projections.projectionList()
                    .add( Projections.property(
"s.name") )
                    .add( Projections.property(
"c.description") )
            )
            .setCacheable(
true)
            .list();


4. Native SQL

String treeSql = "" +
                
"select {t.*}, level from tree t " +
                
" start with t.parent_id = 0 " +
                
" connect by prior t.id = t.parent_id";

List result 
= session.createSQLQuery(treeSql)
    .addEntity(
"t", Tree.class)
    .addScalar(
"level", Hibernate.INTEGER)
    .list();

5. Named SQL queries(不推荐)

6. filter(不推荐)

7. Detached queries(还没测试)
The DetachedCriteria class lets you create a query outside the scope of a session, and then later execute it using some arbitrary Session

参考
1. Hibernate Reference Documentation
2. Hibernate test case

posted @ 2005-08-29 16:34 waterye 阅读(4124) | 评论 (3)编辑 收藏

仅列出标题
共18页: First 上一页 10 11 12 13 14 15 16 17 18 下一页