软件是对质量的不懈追求

#

使用css显示空白表格单元边框

When you create a html table and apply a border using CSS, then the empty cells do not have a border. So you pull out your CSS book and find empty-cells:show; and think your problems are solved but empty-cells is unsupported in IE…go figure. But I have found a combination of styles that work. Try this…apply the border-collapse:collapse; and empty-cells:show; to the table level and IE will display borders around empty cells.   

posted @ 2009-11-14 13:30 BlakeSu 阅读(297) | 评论 (0)编辑 收藏

Spring DAO 异常类

Spring数据访问的根异常是DataAccessException,所有的Spring的数据访问异常都继承DataAccessException。
DataAccessException的nestedRuntimeException子类中,已经将所有的异常栈都进行了记录。

CleanupFailureDataAccessException:清除失败异常

DataAccessResourceFailureException:资源访问异常

DataIntegrityViolationException:完整性约束异常

DataRetrievalFailureException:数据获取异常

DeadlockLoserDataAccessException:死锁访问异常

IncorrectUpdateSemanticsDataAccessException:更新出错异常

InvalidDataAccessApiUsageException:无效数据访问API使用异常

InvalidDataAccessResourceUsageException:无效数据访问资源使用异常

OptimisticLockingFailureException:乐观锁失败异常

TypeMismatchDataAccessException:类型匹配失败异常

UncategorizedDataAccessException:其他原因异常

posted @ 2009-11-14 13:28 BlakeSu 阅读(273) | 评论 (0)编辑 收藏

myeclipse 确实很烂 & 好用的xml编辑器分享

搞了一天mylyn也没搞定,郁闷透顶了。今天偶尔翻日志,才发现原来是springide惹得货,似乎跟mylyn存在冲突。唉,这个破烂 myeclipse,没有sping可以,没有mylyn可是很难生存的啊。 于是对springide痛下杀手,终于搞定了。。呵呵

  不过今天发现了一个不错的xml编辑器,有语法提示功能,省了好多脑细胞。。。

  名字是Rinzo XML Editor, URL: http://editorxml.sourceforge.net/

posted @ 2009-11-14 13:27 BlakeSu 阅读(505) | 评论 (0)编辑 收藏

“历史问题”是个借口

     在为数不少得公司中,都会存在一些一看就不合理的但却依然长久存在的问题。每每有人对此提出异议,总是被人如得了尚方宝剑般毋庸置疑的贴上“历史问题”的标签,似乎这样就可以盖棺定论,无需再议了。
      但是任何人都知道,历史是向前发展的。没道理事情曾经是这样就要一直这样下去。“历史问题”的标签如果真那么牢不可破,人们恐怕还住在北京或云南某山洞里吧。
       有次看电视讲到,美国小朋友都写过得一篇作文叫做“世界因我而变”,小朋友看到这个题目,都抓耳挠腮,觉得自己不能改变世界。这时老师解释道:“今天我早起,准时到达学校,给了你们一堂生动得课,于是世界就这样改变了”。深层一点讲,这是向孩子们幼小的心灵里注入了一种极为积极的人生态度。改变世界不需要做什么惊天动地的大事,只需要承担自己的责任,改变力所能及的不合理便可。
       客观一点说,中国人是消极思维很重的,要不也不会对“历史问题”如此推崇备至。黄老之学恐怕就是这种思想的理论根据了吧,悠久的历史其实是一个沉重的包袱,它压的中华民族不敢大步走路呢。。。

posted @ 2009-11-13 00:20 BlakeSu 阅读(147) | 评论 (0)编辑 收藏

Linux操作系统终端下 用户通讯四大手段

对于QQ、MSN这类聊天工具,大家应该是再熟悉不过了,那么在Unix系统中能否进行此类的聊天操作呢?答案当然是肯定的。Unix提供了多种方式让用户相互通信,它允许以文本的方式给某个用户或所有用户传递信息,而信息来源可以是文本文件或直接由键盘输入的内容。
(1)使用write发送消息
使用write命令可以向任何已登录同一系统的另一位用户发送消息,这时在对方用户终端上就会自动显示出信息,而对方也同样可以使用write 命令来回复消息,这样双方之间就能互相通信了。
write命令的格式如下:
write user-name
此处user-name是将要与之通信的用户名,可以使用who 命令来查看系统中已登陆的用户名。输入write命令后,即可进入发送消息状态,这时就可以通过键盘输入消息,回车即可向对方发送此条消息了。要想退出发 送消息状态,可以使用“Ctrl + d”退出write 命令回到shell。
(2)使用talk进行双方对话
talk命令允许双方实现类似于MSN、QQ这样的实时对话,其命令格式如下:
talk user-name
当用户向另一用户发送对话请求,只有在对方同意接受对话请求,即对方也使用talk命令后,双方的对话才会建立。这时双方终端上都会显示 “[connect established]”,这样双方就可以从键盘输入文字,talk会把这些输入显示在对方的屏幕上,若任意一方按键就会退出对话状态。
(3)使用wall进行广播式消息传送
使用wall命令可以向所有用户广播通知信息,而所有登录系统的用户都可收到该消息。wall命令有以下几种格式:
wall
wall filename
wall “send a message to all the people!”
(4)使用mesg允许或拒绝接收消息
当一位用户正在全身心的投入某项工作的时候,可能会不想被另外一位用户用上述方式突然发送来的消息打断思路,那么就可使用mesg命令来设置是否允许接收由其它用户发来的信息。
mesg命令的格式如下:
mesg –n

mesg -y
其中,y表示允许接收信息,n 表示拒绝接收信息。如果mesg后面没有跟参数,则报告当前的许可状态。

posted @ 2009-11-06 08:25 BlakeSu 阅读(185) | 评论 (0)编辑 收藏

PL/SQL Developer使用技巧

1、PL/SQL Developer记住登陆密码

   在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码;

设置方法:PL/SQL Developer 7.1.2  ->tools->Preferences->Oracle->Logon History , “Store history”是默认勾选的,勾上“Store with password” 即可,重新登录在输入一次密码则记住了。



2、执行单条SQL语句

   在使用PL/SQL Developer的SQL Window时,按F8键,PL/SQL Developer默认是执行该窗口的所有SQL语句,需要设置为鼠标所在的那条SQL语句,即执行当前SQL语句;

设置方法:PL/SQL Developer 7.1.2 -->tools->Preferences-->Window types ,勾上“AutoSelect Statement” 即可。



3、格式化SQL语句

   在使用PL/SQL Developer的SQL Window时,有时候输入的SQL语句太长或太乱,希望能用比较通用的写法格式话一下,这样看起来会好看些,也好分析;

使用方法:选中需要格式化的SQL语句,然后点击工具栏的PL/SQL beautifier按钮即可.



4、查看执行计划

   在使用PL/SQL Developer的SQL Window时,有时候输入的SQL语句执行的效率,分析下表结构,如何可以提高查询的效率,可以通过查看Oracle提供的执行计划;

使用方法:选中需要分析的SQL语句,然后点击工具栏的Explain plan按钮(即执行计划),或者直接按F5即可。

 

5、调试存储过程

   在使用PL/SQL Developer操作Oracle时,有时候调用某些存储过程,或者调试存储过程;

调用存储过程的方法:首先,在PL/SQL Developer左边的Browser中选择Procedures,查找需要调用的存储过程;然后,选中调试的存储过程,点击右键,选择Test,在弹 出来的Test scrīpt窗口中,对于定义为in类型的参数,需要给该参数的Value输入值;最后点击上面的条数按钮:Start debugger 或者按F9;最后点击:RUN 或者Ctrl+R

6.左下角显示window list
  点击菜单 tools -> window list,将弹出的小窗口拖到左下角合适位置,然后点击菜单 window->save layout

7.防止登录超时
tools->Preferences-->Oracle->Connection  选择 "check connection"

8.不备份sql文件

tools->Preferences->Files->backup,页面中backup files中选择 disabled

posted @ 2009-11-04 08:43 BlakeSu 阅读(401) | 评论 (0)编辑 收藏

exists真的就比in的效率高吗?

系统要求进行SQL优化,对效率比较低的SQL进行优化,使其运行效率更高,其中要求对SQL中的部分in/not in修改为exists/not exists

修改方法如下:

in的SQL语句

SELECT id, category_id, htmlfile, title, convert(varchar(20),begintime,112) as pubtime
FROM tab_oa_pub WHERE is_check=1 and
category_id in (select id from tab_oa_pub_cate where no='1')
order by begintime desc

修改为exists的SQL语句
SELECT id, category_id, htmlfile, title, convert(varchar(20),begintime,112) as pubtime
FROM tab_oa_pub WHERE is_check=1 and
exists (select id from tab_oa_pub_cate where tab_oa_pub.category_id=convert(int,no) and no='1')
order by begintime desc

分析一下exists真的就比in的效率高吗?

     我们先讨论IN和EXISTS。
     select * from t1 where x in ( select y from t2 )
     事实上可以理解为:
     select *
       from t1, ( select distinct y from t2 ) t2
      where t1.x = t2.y;
     ——如果你有一定的SQL优化经验,从这句很自然的可以想到t2绝对不能是个大表,因为需要对t2进行全表的“唯一排序”,如果t2很大这个排序的性能是 不可忍受的。但是t1可以很大,为什么呢?最通俗的理解就是因为t1.x=t2.y可以走索引。但这并不是一个很好的解释。试想,如果t1.x和t2.y 都有索引,我们知道索引是种有序的结构,因此t1和t2之间最佳的方案是走merge join。另外,如果t2.y上有索引,对t2的排序性能也有很大提高。
     select * from t1 where exists ( select null from t2 where y = x )
     可以理解为:
     for x in ( select * from t1 )
     loop
        if ( exists ( select null from t2 where y = x.x )
        then
           OUTPUT THE RECORD!
        end if
     end loop
     ——这个更容易理解,t1永远是个表扫描!因此t1绝对不能是个大表,而t2可以很大,因为y=x.x可以走t2.y的索引。
     综合以上对IN/EXISTS的讨论,我们可以得出一个基本通用的结论:IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。

我们要根据实际的情况做相应的优化,不能绝对的说谁的效率高谁的效率低,所有的事都是相对的

not in 和not exists
如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;
而not extsts 的子查询依然能用到表上的索引。
所以无论那个表大,用not exists都比not in要快。

原文:http://blog.csdn.net/jwisdom/archive/2007/09/27/1803577.aspx

posted @ 2009-11-03 09:48 BlakeSu 阅读(294) | 评论 (0)编辑 收藏

死了都要try

死了都要try!
不catch我不痛快!
程序毁灭throw还在!
把每天,
当作是程序来更改,
一改一天,
累到泪水都掉下来,
不理会,
老板是好还是坏,
只要有工资,
来还贷.
改,不是需求做的太坏,
那是sb客户想要什么,
自己都不明白.
忍受现在,
自己一生还不完的贷,
很多模块,
不能完成,
我还得改.
死了都要try!
不catch我不痛快!
程序毁灭throw还在!


posted @ 2009-11-03 09:36 BlakeSu 阅读(179) | 评论 (0)编辑 收藏

如何解决Xubuntu的应用程序(Application)会消失的问题

Xubuntu中只有一个选单叫做应用程序(Application),这个选单是Xfce menu模块,使用者只要在选单上按右键选择编辑之后,有可能会造成选单消失的状况。在Ubtw社群论坛中许多使用者都提出了这问题,暂时性解决方法如下:

 

Xfce menu的设定檔叫作menu.xml,所有的选单内容会存在这个档案内,预设的使用者设定文件位置在

 

    ~/.config/xfce4/Desktop

 

之下,使用者修改过的内容也会存在这里。而Xubuntu内还有一套完整的初始menu.xml跟当地化(locale)的档案,位置在

 

    /etc/xdg/xfce4/desktop

 

 

将里面的menu.xml拷贝到使用者设定文件位置

 

    sudo cp /etc/xdg/xfce4/desktop/menu.xml ~/.config/xfce4/Desktop

 

接着请把档案权限修改为只能读取不能修改,这样不管你是不是有使用选单编辑器(menu editor)都无法影响。因为我用英文版所以拷贝的是menu.xml,如果是使用中文版的朋友应该是要把menu.xml.zh这个档案拷贝过去之后修改成menu.xml。怕又出问题的人(因为我刚找到方法测试了一下,乱按乱改menu editor之后都没问题),记得备份一下你的选单档案。

 

--

Update: 直接砍掉 ~/.config/xfce4/Desktop/menu.xml 也可以

posted @ 2009-11-03 09:03 BlakeSu 阅读(168) | 评论 (0)编辑 收藏

web应用导出大量数据的新思路

   时常碰到系统需要导出大量数据的情况。每次碰到,当事人无不抓耳挠腮,痛苦非常。
   大量数据的在线导出除了耗费大量内存,造成服务器的沉重负担。甚至会造成用户死机,所以一直是个头疼的问题。
    近日夜观天象,忽见紫气东来,猛然想到,前台不行,就后台做嘛。
    说道后台任务调度,无疑会想到quartz,它的SimpleTrigger正好可以做这个事情。
   
    思路如下:

      用户导出时,提示用户输入邮件地址,然后后台建立一个quartz任务,任务中,将数据导出到文件中。
      任务结束时,将文件的链接发到用户填写的邮箱地址中,这样用户就可以根据这个地址,去下载导出的
      文件了。

posted @ 2009-11-02 09:15 BlakeSu 阅读(191) | 评论 (0)编辑 收藏

仅列出标题
共12页: First 上一页 4 5 6 7 8 9 10 11 12 下一页