由于服务器到期,为了更好地学习Linux的服务器配置和管理,不至于在公司和机房折腾Linux系统手忙脚乱,这次换了个CentOS系统,有事没事就去折腾一番。
之前接触过RedHat、Ubuntu、Asianux,感觉挺好玩的,就是复杂了点,有时折腾得会气死人的。但是,我还是要去征服它!Linux,我来了!
Enjoy java, enjoy life...
由于服务器到期,为了更好地学习Linux的服务器配置和管理,不至于在公司和机房折腾Linux系统手忙脚乱,这次换了个CentOS系统,有事没事就去折腾一番。
之前接触过RedHat、Ubuntu、Asianux,感觉挺好玩的,就是复杂了点,有时折腾得会气死人的。但是,我还是要去征服它!Linux,我来了!
今天在编写一个触发器的时候,遇到要更新一个表的ntext字段,开始使用常规的语句:
Update table set content = content + @info where id=@id
会报错:对数据类型而言运算符无效。运算符为 add,类型为 ntext。
后来经过百度谷歌得知,SQL Server专门提供了处理text,ntext,image字段的函数,他们是:TEXTPTR
TEXTVALID、READTEXT、UPDATETEXT、WRITETEXT
最后得到解决方法:
...今天使用imp导入dmp格式的数据库备份的时候,发现导入出错,提醒对象已经存在,才记起来要先删除所有表才能导入,如果数据库有几十上百个表的话,一个一个去删除真浪费时间。为了方便,就写了一条语句来查询所有表和生成批量删除的语句:
select 'drop table '||table_name||';' as sqlscript from user_tables;
SQLSCRIPT
--------------------------------------------
drop table LO_CASEINFO;
drop table LO_HARMONIZECASE;
drop table LO_LAWCHECK;
drop table LO_LEGISLATIONITEM;
drop table LO_TRAINBATCH;
drop table OA_IMPRESS;
drop table OA_SYSGROUP;
Posted by 唧唧 | tags: Linux webLogic jasperreports
Linux下webLogic无法使用jasperreports(iReport)生成报表的问题解决方法
今天在Linux下的webLogic部署一个项目后,发现报表无法导出了(但是在Windows开发环境下正常),后台报错如下:
java.lang.InternalError: Can´t connect to X11 window server using ´:0.0´ as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay()V(X11GraphicsEnvironment.java:???)
at sun.awt.X11GraphicsEnvironment.<clinit>()V(X11GraphicsEnvironment.java:134)
at jrockit.vm.Classes.forName0(Ljava.lang.String;ZI)I(Unknown Source)
at jrockit.vm.Classes.forName(Ljava.lang.String;ZLjava.lang.ClassLoader;)Ljava.lang.Class;(Unknown Source)
at java.lang.Class.forName(Ljava.lang.String;I)Ljava.lang.Class;(Unknown Source)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment()Ljava.awt.GraphicsEnvironment;(GraphicsEnvironment.java:62)
at net.sf.jasperreports.engine.util.JRGraphEnvInitializer.initializeGraphEnv()V(JRGraphEnvInitializer.java:58)
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(Lnet.sf.jasperreports.engine.JasperReport;Lnet.sf.jasperreports.engine.fill.JREvaluator;Lnet.sf.jasperreports.engine.fill.JRBaseFiller;)V(JRBaseFiller.java:307)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(Lnet.sf.jasperreports.engine.JasperReport;Lnet.sf.jasperreports.engine.fill.JREvaluator;Lnet.sf.jasperreports.engine.fill.JRBaseFiller;)V(JRVerticalFiller.java:92)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(Lnet.sf.jasperreports.engine.JasperReport;)V(JRVerticalFiller.java:74)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(Lnet.sf.jasperreports.engine.JasperReport;)Lnet.sf.jasperreports.engine.fill.JRBaseFiller;(JRFiller.java:147)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(Lnet.sf.jasperreports.engine.JasperReport;Ljava.util.Map;Lnet.sf.jasperreports.engine.JRDataSource;)Lnet.sf.jasperreports.engine.JasperPrint;(JRFiller.java:83)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(Lnet.sf.jasperreports.engine.JasperReport;Ljava.util.Map;Lnet.sf.jasperreports.engine.JRDataSource;)Lnet.sf.jasperreports.engine.JasperPrint;(JasperFillManager.java:601)
...
经过左问Baidu,右问Google,加上验证得到Debug方法如下:
在startWebLogic.sh中加一行:JAVA_OPTIONS = -Djava.awt.headless=true
如果已有JAVA_OPTIONS配置行,则可以追加 -Djava.awt.headless=true
重启webLogic,问题解决!
Posted by 唧唧 | tags: PLSQL Oracle 客户端
之前一直都是用eclipse自带的Data Source Explorer访问Oracle数据库,可是只能简单地查看,而且很多字段不兼容。
今天开始使用PLSQL Developer连接远程Oracle数据库的时候,提示我没有安装Oracle客户端,才知道PLSQL Developer不是独立的软件,是要基于Oracle客户端运行的。
下面就介绍一下没有安装Oracle数据库的情况下,单独安装一个客户端。
1、到Oracle官方网站下载一个客户端:http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html
...Posted by 唧唧 | tags: Struts2 EL 乱码
今晚在配置Struts2环境的时候,遇见了中文乱码啦。配置了struts.i18n.encoding和SetCharacterEncodingFilter还是不行,最后发现如下规律:
Struts2标签和EL表达式混合使用会导致乱码:
如图所示,如果s2标签的值用el表达式代替的话,会导致中文乱码。
中文乱码:<s:param name="el">${c.cname}</s:param>,但是如果${c.cname}直接在页面上显示出来的话,是不会乱码的!
中文正常:<s:param name="cname"><s:property value="cname"/></s:param>
注意查看浏览器地址栏,虽然值一样,但是编码后都不同了:
Posted by 唧唧 | tags: Oracle 分页 排序 rownum
1、在ORACLE中,rownum是一个伪列,对于这个列,只能使用"<"或者"<="这两个操作符;
2、它一定是从1开始的,不能跨过1;
3、不能用:>,>=,=,Between...and。由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件不成立,查不到记录。执行总是显示:未选定行。
如果要使用 >,>=,=,Between...and 操作符,可以使用子查询把rownum转为实际列:
select namef from (select rownum r,namef from tablename)t where r > 10;
select namef from (select rownum r,namef from tablename)t where r between 10 and 20;
Oracle中的rownum的是在取数据的时候产生的序号,所以想对指定排序的数据去指定的rowmun行数据就必须注意了。
SQL> select rownum ,id,name from student order by name;
ROWNUM ID NAME
---------- ------ ---------------------------------------------------
3 200003 李三
2 200002 王二
1 200001 张一
4 200004 赵四
可以看出,rownum并不是按照name列来生成的序号。系统是按照记录插入时的顺序给记录排的号,rowid也是顺序分配的。为了解决这个问题,必须使用子查询
SQL> select rownum,id,name from (select * from student order by name);
ROWNUM ID NAME
---------- ------ ---------------------------------------------------
1 200003 李三
2 200002 王二
3 200001 张一
4 200004 赵四
这样就成了按name排序,并且用rownum标出正确序号。
Posted by 唧唧 | tags: Oracle Io异常 listener
Oracle Io异常: The Network Adapter could not establish the connection
今天刚上班,启动项目时总是报(Io异常: The Network Adapter could not establish the connection),昨天还好好的呢,今天怎么就不行了?使用 telnet 192.168.8.201 1521测试连不通,还以为是防火墙搞鬼;而跑到服务器上面关闭服务器防火墙还是不行,并且直接telnet 127.0.0.1 1521还是不通。到此可以确定是oracle的服务异常了。
解决方法:
1、首先打开oracle配置和移植工具 --> Net manager --> 本地 --> 监听程序 -- > listener --> (TCP/IP协议的)网络地址 ---> 把主机那一项改为"localhost";然后点击:本地-->服务命名-->(TCP/IP协议的)网络地址 ---> 把主机名那一项改为"localhost"。
2、点击"命令"菜单-->测试服务,却显示ORA-12541: TNS:no listener,如图:
3、查看和启动监Ting器:
开始-->运行-->lsnrctl
4、通过查看监Ting器状态给出解决办法
lsnrctl>status
正在连接到 ***
TNS-12541: TNS:无监Ting器
TNS-12560: TNS: 协议适配器错误
TNS-00511: 无监Ting器
32-bit Windows Error: 2: No such file or directrory
正在连接到 ***
TNS-12541: TNS:无监Ting器
TNS-12560: TNS: 协议适配器错误
TNS-00511: 无监Ting器
32-bit Windows Error: 61: Unknown error
5、启动监Ting器
LSNRCTL> start
启动tnslsnr:请稍候...
6、重试第2步骤,测试连接成功。
Posted by 唧唧 | tags: CST Date 日期 时间
下列代码可以实现把Java的CST格式的时间字符串转为为Date对象和所需要的日期时间格式!
String dateStr = "Wed Sep 16 11:26:23 CST 2009";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
//java.util.Date对象
Date date = (Date) sdf.parse(dateStr);
//2009-09-16
String formatStr = new SimpleDateFormat("yyyy-MM-dd").format(date);
System.out.println(formatStr);
//2009-09-16 11:26:23
String formatStr2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
System.out.println(formatStr2);
Posted by 唧唧 | tags: php IIS FastCGI