那是一段如此自以为是,又如此狼狈不堪的青春岁月。
有欢笑,也有泪水;有朝气,也有颓废;
有甜蜜,也有荒唐;有自信,也有迷茫。



笔记 03/26/2008

我想要一个心形马桶  Annotated

tags: blog, 创意

那样两个人可以同时如厕了!而且还只用冲一次水!很节能!
    心形马桶示意图

      笔记 03/25/2008

      JAVA内存泄漏

      tags: blog, java, 内存泄漏

      内存泄漏原因和内存泄漏检测工具

      A片问答  Annotated

      tags: blog, 道德

      • 道德与胆量有没有关系呢? - post by elstage
      道德只宜律已,不宜律人。比如你认为A片不道德,打死也不会去拍,你在言行合一中得到了道德陶醉感,这是你自家的事。但是你不能用你自己的道德去强迫他人的自由选择。
        道德只宜律已,不宜律人。比如你认为A片不道德,打死也不会去拍,你在言行合一中得到了道德陶醉感,这是你自家的事。但是你不能用你自己的道德去强迫他人的自由选择。
          如果你看这些A片,勃起、肉体上爽到了,你应该感谢她们。你看的肯定不是正版(这不怪你,毕竟我们这儿没地方买),事实上等于你偷了她们的钱。一个小偷怎么能指责失主没有道德呢?
            不要以为我们国家现在没有妓女,没有A片;只不过我们像虚伪的清教徒一样不承认罢了。

              笔记 03/24/2008

              比特海日志24月16日,长舒一口气  Annotated

              tags: blog, 台湾

              李敖说马英九除了长得帅之外,一无是处,而且给他起了个外号叫“不沾锅”。不管小马哥也好,不沾锅也罢,能冻蒜(当选)就好。小马哥冻蒜了,至少有几年安稳日子可以好过。两岸不需要再搞来搞去,你从美国买武器升级,我从欧盟买武器升级,白白糟蹋银子,变成一对疯子。又或者你出几千万美金买个垃圾国家的承认,我再大你一千万美金买回这个垃圾国家的支持。感觉是一场傻蛋参加的拍卖会,一群垃圾国家在台子上报价,下面一对傻哥俩踊跃举牌,比谁更敢烧钱。这八年里,浪费在军备和垃圾国家上的钱,如果投放在内部生产上,不知道可以造就多少个就业机会?
                八年间,网络有了很大的发展,让我第一次可以在电脑上看到谢马电视辩论实况。我当真很喜欢他们在台上的神情,那么谦卑,那么诚恳,像是小学生在向师长做汇报。简单说,他们面对选民代表和媒体代表,就像两个孙子,或者是借钱的。孙子这种说法大不敬,但是总好过纳税养出一班爷。而且,站在台上没有废话套话屁话,要做什么,怎么做,必须说得一清二楚。打哈哈兜圈子不成,所有人都在看着呢。开什么会都让我想睡,看电视辩论会是例外,哪怕我对政治没多少兴趣,我也愿意一直看完。没见过,新鲜。

                  笔记 03/21/2008

                  温:只有两点前提  Annotated

                  tags: blog, 西藏

                  BBC/英国首相布朗周三(19日)在议会下院例行问答中说,达 赖喇 嘛5月访问伦敦时,他将会见达 赖。
                  布朗说,他在周三早些时候与中国总理温 家 宝通了电话,呼吁北京保持克制。
                  布朗在英国议会下院说,"我明确地表示,西 藏的暴 力活动必须停止"。
                  布朗呼吁有关各方保持克制,通过谈判制止暴 力。
                  布朗说:"中国总 理告诉我,只要达 赖坚持自己说过的不支持西 藏独 立,并放弃使用暴 力,那么北 京就准备与达 赖展开对话。"
                  由于担心激怒中国,布朗首相此前不太愿意透露自己是否将在达 赖访英时与其会晤。
                  英国保守党领袖卡梅伦对布朗将会晤达 赖的决定表示欢迎。
                  卡梅伦说,"这是一个困难的决定,但推迟作出这个决定不太好。因此,我祝贺布朗作出了正确的选择。"
                  英国首相布朗在5月份与达 赖的会晤据报将确保外部世界仍然关注西 藏问题。

                  • 快死的老头子了,真不知道还在折腾个啥,现在还号称是精神领袖,不知道若干年之后会不会被“鞭尸” - post by elstage

                  西藏和台湾  Annotated

                  tags: blog, 西藏

                  (联合早报网讯)台湾联合报报道,国民党总统候选人马英九昨天发表强硬声明针对西藏事件,批评大陆总理温家宝的说法「蛮横无理、自大、愚蠢」,还说若西藏情势持续恶化,当选后不排除停止派团参加北京奥运。

                  两会语录  Annotated

                  tags: blog

                  “两会”部分精彩言论摘录

                  1、全国政协委员、国资委副主任王瑞祥:“对于所谓垄断要科学界定,比如电信行业,固话业务、移动业务都有竞争,怎么能算垄断企业呢?当然不是。”
                  2、全国人大代表、北京铁路局常务副局长罗金保:“春运期间铁路一票难求的现象始终得不到缓解,根本原因在于铁路票价太低。”

                    Sybase--笔记整理一

                    Sybase数据库系统表:

                    systypes 一行纪录了每一个由系统提供的和用户定义的数据类型
                    sysusers 一行记录了一个数据库的合法用户
                    sysconfigures 一行纪录了用户可以设置的配置参数
                    syscurconfigs 有关SQL Server当前正使用的配置参数情况
                    sysdatabases 一行纪录SQL Server中的一个数据库
                    sysdevices 一行纪录数据库每一个磁带转储设备,盘转储设备,数据库设备和磁盘分区
                    syslocks 有关动态锁的情况
                    syslogins 一行纪录了每一个有效的SQL Server的用户
                    sysmessages 一行记录了每一个系统错误或者警告
                    sysprocesses 有关server进程的情况
                    sysremotelogins 一行记录了一个远程用户
                    sysservers 一行记录了一个远程server
                    sysusages 一行记录了分配给每个数据库的每个磁盘分片
                    sysatterrates 一行记录了分配给SQL Server用户在当前数据库的标识
                    syscolumns 一行记录了一个表或视图的每一列,一个存储过程的每一个参数
                    syscomments 一行或者多行记录了每一视图、规则、缺省值、触发器和存储过程
                    sysdepends 一行记录了由一个过程、视图或者触发器所参照的每一个过程、视图或者表
                    sysindexes 一行记录了每一个聚集或者非聚集索引,每一个不带索引的表,含有text或者image列的表
                    syskeys 一行记录了每一个主玛、外玛或者公用玛
                    syslogs 事务日志
                    sysobjects 纪录表、视图、存储过程、规则、缺省值、触发器和临时表(在tempdb中)
                    sysprocedures 纪录视图、规则、缺省值、触发器和过程
                    sysprocts 纪录用户权限信息
                    syssegments 纪录每一个片段(命名的磁盘)

                    数据库表与字段查询:

                    1. select a.name,a.status,(select name from systypes where usertype=a.usertype) type,a.length,a.offset,a.usertype,e.text,a.prec,a.scale from syscolumns a left join syscomments e on a.cdefault=e.id ,sysobjects b where a.id=b.id and b.name=''tableName''  order by a.id

                    数据库表结构修改语句:

                    1. 新增字段:alter table tableName add columnName varchar(3) null
                    2. 修改字段类型或长度:alter table tableName modify columnName varchar(3) null

                    获得表的主键:

                    select   name ,keycnt,index_col('tableName',indid,1) key1,index_col('tableName',indid,2) key2,index_col('tableName',indid,3) key3
                    from   sysindexes  
                    where   status   &   2048=2048  and   id=object_id('tableName')  

                    Hibernate--笔记整理一

                    HQL(Hibernate Query Language)本身不区分大小写,不过要注意类别的名称必须区分大小写。

                    一、查询

                    Sessionsession =sessionFactory.openSession();

                    Queryquery = session.createQuery("select user.name from User as user whereuser.age > ? ");

                    query.setInteger(0,25);

                    Listnames = query.list();

                    ......

                    session.close();

                    您可以使用命名参数(Named Parameter)来取代这个方法,这可以不用依照特定的顺序来设定参数值,并拥有较好的可读性,直接来看个例子:

                    Sessionsession = sessionFactory.openSession();

                    Queryquery = session.createQuery("select user.name from User as user whereuser.age > :minAge ");

                    query.setInteger(" minAge ", 25);

                    Listnames = query.list();

                    ......

                    session.close();

                    也可以将HQL写在程式之外,以避免硬编码(Hardcode)在程式之中,在需要修改HQL时就很方便,在*.hbm.xml中使用<query/>标签,并在&lt ;![CDATA[与]]>之间撰写HQL,撰写的位置是在</hibernate-mapping>之前,例如:

                    User.hbm.xml

                    ......

                    <hibernate-mapping>

                    <class name="onlyfun.caterpillar.User" table="user">

                    <id name="id" column="id">

                    <generator class="native"/>

                    </id>

                    <property name="name" column="name"/>

                    <property name="age" column="age"/>

                    </class>

                    <query name="onlyfun.caterpillar.QueryUser">

                    <![CDATA[

                    select user.name from User as user where user.age > :minAge

                    ]]>

                    </query>

                    </hibernate-mapping>

                    <query>的name属性用来设定查询外部HQL时的名称依据,使用的例子如下:

                    Sessionsession = sessionFactory.openSession();

                    Queryquery = session.getNamedQuery("onlyfun.caterpillar.QueryUser");

                    query.setInteger(" minAge ", 25);

                    Listnames = query.list();

                    ……

                    session.close();

                    二、查询方法、函数举例

                    select distinct user.age from User as user

                    select count(*) from User as user

                    select avg(user.age) from User as user

                    from User user where user.name like 'cater%'

                    from User user order by user.age desc

                    from User user where user.name is not null

                    select user.sex, avg(user.age) from Useruser group by user.sex

                    select user.sex, avg(user.age) from Useruser group by user.sex having avg(user.age) > 20

                    三、普通SQL查询

                    Hibernate提供了对SQL的支援,您可以指定您所要建立的SQL,并将实体类别与资料表格关联,举个例子来说,如果您打算使用像以下的SQL语句:

                    SELECT* FROM user WHERE age > 20

                    则您可以如下建立SQL查询:

                    // SQL,并指定别名为user

                    String sql = "select {user.*} from User user where user.age > 20";

                    Session session = sessionFactory.openSession();

                    //建立SQLQuery

                    SQLQuery sqlQuery = session.createSQLQuery(sql);

                    //将别名user与实体类User关联在一起

                    sqlQuery.addEntity("user", User.class);

                    Iteratoriterator = sqlQuery.list().iterator();

                    while(iterator.hasNext()){

                    User user = (User) iterator.next();

                    }

                    session.close();

                    addEntity()是将实体类别与别名连结在一起的方法,大括号指定要查询的资料,Hibernate根据所给定的SQL自动生成以下的句子:

                    selectuser.id as id0_, user.name as name0_0_, user.age as age0_0_ from Useruser where user.age > 20

                    返回的结果则由Hibernate进行封装为所指定别名关联之实体类,如此您可以得到使用SQL的弹性,但无需处理繁琐的ResultSet。

                    您也可以将SQL语句定义在映射文件中,例如:

                    User.hbm.xml

                    ......

                    <hibernate-mapping>

                    <class name="onlyfun.caterpillar.User" table="user">

                    ....

                    </class>

                    <sql-query name="onlyfun.caterpillar.QueryUser">

                    <![CDATA[

                    select {user.*} from User user where user.age > :age

                    ]]>

                    <return alias="user" class="onlyfun.caterpillar.User"/>

                    </sql-query>

                    </hibernate-mapping>

                    使用Hibernate查询时如下:

                    Sessionsession = sessionFactory.openSession();

                    Queryquery = session.getNamedQuery("onlyfun.caterpillar.QueryUser");

                    query.setInteger("age",20);

                    Iteratoriterator = query.list().iterator();

                    while(iterator.hasNext()){

                    User user = (User) iterator.next();

                    }

                    session.close();

                    Hibernate3的映射文件中新增了<sql-insert>、<sql-update>与<sql-delete>三个标签,您可以在这三个标签中使用SQL自定义您的INSERT、UPDATE、DELETE,也就是储存、更新、删除资料时的行为,例如:

                    User.hbm.xml

                    <?xml version="1.0" encoding="utf-8"?>

                    ......

                    <hibernate-mapping>

                    <class name="onlyfun.caterpillar.User" table="user">

                    <id name="id" column="id">

                    <generator class="native"/>

                    </id>

                    <property name="name" column="name"/>

                    <property name="age" column="age"/>

                    <sql-insert>

                    INSERT INTO user (name, age) VALUES (?, ?)

                    </sql-insert>

                    <sql-update>

                    UPDATE user SET name=?, age=?, WHERE id=?

                    </sql-update>

                    <sql-delete>

                    DELETE FROM user WHERE id=?

                    </sql-delete>

                    </class>

                    </hibernate-mapping>

                    ?对应的顺序是映射文件中属性出现的顺序,假设您储存物件:

                    session= sessionFactory.openSession();

                    tx= session.beginTransaction();

                    session.save(user);

                    tx.commit();

                    session.close();

                    则执行结果中显示的SQL语句会是您自定义的语句,而不是由Hibernate自动生成的语句。

                    Web开发框架--笔记整理

                    一个好的Web开发框架应该具备以下几点:

                    1. 减轻开发者处理复杂问题的负担;
                    2. 内部有良好的扩展;
                    3. 并且有一个支持它的强大的用户团体。
                    image

                    三层架构:表示层、业务层、持久层。即Struts2+Spring2+Hibernate3。

                    表示层(The Presentation Layer)

                    表示层使用Struts2。 Struts2和Struts1.x的差别主要是Struts1.x 必须继承org.apache.struts.action.Action或者其子类,表单数据封装在FormBean中。而Struts 2无须继承任何类型或实现任何接口,表单数据包含在Action中,通过Getter和Setter获取,就是说struts2不需要formBean。另外,struts2的Action测试不用依赖于servlet容器。

                    下面是Struts所负责的:

                    * 管理用户的请求,做出相应的响应。

                    * 提供一个Controller ,委派调用业务逻辑和其它上层处理。

                    * 处理异常

                    * 为显示提供一个模型

                    * UI验证。

                    持久层(The Persistence Layer)

                    持久层通常是程序最容易失控的地方。开发者总是低估构建他们自己的持久框架的挑战性。Hibernate为java提供了ORM持久化机制和查询服务, 它还给已经熟悉SQL和JDBC API 的Java开发者一个学习桥梁,上手很方便。 Hibernate的持久对象是基于POJO和Java collections。象Hibernate这类的高级ORM框架支持大部分主流数据库,并且他们支持 Parent/child关系,事物处理,继承和多态。此外,使用Hibernate并不妨碍你正在使用的IDE。

                    业务层(The Business Layer)

                    业务层从编码的视角来看,是最容易被忽视的一层。而我们却往往在UI层或持久层周围看到这些业务处理的代码,这其实是不正确的,因为它导致了程序代码的紧密偶合,很难维护。Spring它着手于‘依赖注射’(dependency injection)(还有我们知道的‘控制反转’Inversion of Control=IoC)这样的简单概念。 Spring把程序中所涉及到包含业务逻辑和Dao的Objects——例如transaction management handler(事物管理控制)、Object Factoris(对象工厂)、service objects(服务组件)——都通过XML来配置联系起来。