以前在哪儿说过,假如有人仿安徒生作“无色之画”,做几篇无听众的演讲,可以做得十分出色。这种演讲的好处,在于因无听众,可以少忌讳,畅所欲言,倾颇合 “旁若无人”之义。以前我曾在中西女塾劝女子出嫁,当时凭一股傻气说话,过后思之,却有点不寒而栗,在我总算掬愚诚,郊野叟献曝,而在人家,却未必铭感五内。假如在无听众的女子学校演讲,那便可尽情发挥了。比如在这样一个幻想的大学毕业典礼演讲,我们可以不怕校长难为情,说些时常敢怒而不敢言的话。在一个幻想的小学教员暑期学校,也可以尽情吐露一点对小学教育不大客气的话……婚姻的致词向来也是许多客套,没人肯对新郎新娘说些结婚常识而不免有点不吉利的老实话。因此我就以“婚礼致词”为题作例举隅: 阅读全文 >>
9 个基于JavaScript 和 CSS 的 Web 图表框架
jQuery, MooTools, Prototype 等优秀的 JavaScript 框架拥有各种强大的功能,包括绘制 Web 图表,使用这些框架以及相应插件,我们可以非常轻松地实现曲线图,圆饼图,柱状图等 Web 图表的绘制,而不必象以往那样通过复杂的 Flash 技术实现。本文介绍了9个优秀的基于 JavaScript 与 CSS 的 Web 图表框架。
jQuery, MooTools, Prototype 等优秀的 JavaScript 框架拥有各种强大的功能,包括绘制 Web 图表,使用这些框架以及相应插件,我们可以非常轻松地实现曲线图,圆饼图,柱状图等 Web 图表的绘制,而不必象以往那样通过复杂的 Flash 技术实现。本文介绍了9个优秀的基于 JavaScript 与 CSS 的 Web 图表框架。 阅读全文 >>
用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(三. 定制输出)
既然提到 p6spy 的输出,那就有必要说明一下 p6spy 输出日志的格式了。从上一篇 用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(二. Tomcat 下的配置 中把输出的一段内容拿过来,如下:
03-16-09 15:12:06:656|16|4|statement|SELECT * FROM OM_CUSTOMERS WHERE CUSTOMER_ID=? ORDER BY CUSTOMER_ID ASC|SELECT * FROM OM_CUSTOMERS WHERE CUSTOMER_ID=2194 ORDER BY CUSTOMER_ID ASC
03-16-09 15:12:06:671|15|3|statement|SELECT * FROM OM_ORDER_TYPE WHERE TYPE_ID=?|SELECT * FROM OM_ORDER_TYPE WHERE TYPE_ID=25
03-16-09 15:12:06:687|16|1|statement|select * from sys_lookups where lookup_type=? and lookup_code=? |select * from sys_lookups where lookup_type='OM_ORDER_STATUS' and lookup_code='70'
03-16-09 15:12:06:812|-1||resultset|select * from sys_lookups where lookup_type='OM_ORDER_STATUS' and lookup_code='70' |meaning = 已安排生产 阅读全文 >>
用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(二. Tomcat 下的配置)
在前篇 用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(一. 引子) 大略介绍了 p6spy,并且在 http://www.p6spy.com/documentation/install.htm#install 也有 p6spy 在不同服务器下的安装方法。本文不打算依照官方的说明来做,我们让 Tomcat 的 Common 类加载器来加载 p6spy.jar 包,包含了 Tomcat 5/6 下的 p6spy 配置,数据库连接池实现用 C3P0,数据库为 Oracle,配置在一个与应用同名的单独的 xml 文件中,Tomcat 中是在应用的 META-INF/context.xml 文件中。步骤如下:
1. 软件准备
下载 Tomcat 5 或者 6 进行安装,不必多说。假设置 Tomcat 的目录为 $TOMCAT_HOME。
下载 p6spy-install.zip,解压缩 p6spy-install.zip,其中有 p6spy.jar 和 spy.properties
准备好数据库的驱动包,比如 Oracle 的 classes12.jar,和 C3P0 实现包,如 c3p0-0.9.0.2.jar。 阅读全文 >>
用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(一. 引子)
一个企业应用程序的性能瓶颈可能会在硬件配置、网络方面、程序代码、应用服务器配置、数据库配置、SQL 语句。这里我把本文的关注点 SQL 无意间放在了最后,其实它不并不意味着最后考虑的,而是过程中就要时刻留意的。
SQL 语句的优化总得把所执行语句抓出来瞧瞧,分析分析。如果直接用 JDBC 或者是类 iBatis 的东西来访问数据库,那所执行的 SQL 语句是明确的,而现在的项目大多会用 ORM 组件,例如 Hibernate、JPA、CMP、TopLink 都有自己特定的查询语法,最终当然要转换成 SQL 语句的,所以会生成什么样的 SQL 语句就不甚明了,若人为的看着专有查询语句来相象出 SQL 语句并非易事。虽然 Hibernate 设置 show_sql=true 时也能打印出生成的 SQL(带?号参数),配合详细的日志参数值也可以对上,不过挺麻烦的。 阅读全文 >>
挖Linux中的古老缩略语[转]
Unix已经有35年历史了。许多人认为它开始于中世纪,这个中世纪是相对于计算机技术的产生和发展来说的。在过去的时间里,Unix和它的子分支Linux收集有许多的历史和一些完全古老的语言。在这篇技巧文章中,我们将介绍一少部分古老的语言和它们的目的和作用,以及它们真正的来源。
RC
在Linux中,最为常用的缩略语也许是“rc”,它是“runcomm”的缩写――即名词“run command”(运行命令)的简写。今天,“rc”是任何脚本类文件的后缀,这些脚本通常在程序的启动阶段被调用,通常是Linux系统启动时。如/etc/rc是Linux启动的主脚本,而.bashrc是当Linux的bash shell启动后所运行的脚本。.bashrc的前缀“.”是一个命名标准,它被设计用来在用户文件中隐藏那些用户指定的特殊文件;“ls”命令默认情况下不会列出此类文件,“rm”默认情况下也不会删除它们。许多程序在启动时,都需要“rc”后缀的初始文件或配置文件,这对于Unix的文件系统视图来说,没有什么神秘的。 阅读全文 >>
Solaris 常用系统命令[转]
系统基本配置
如何查看日志信息
dmesg | more /var/adm/messages*
收集
exlpore
日志
/opt/SUNWexplo/bin/explorer -k ->/opt/SUNWexplo/output
系统的基本状况
showrev
系统运行时间,平均负载
uptime
版本信息
uname -a
Update
版本
more /etc/release
系统补丁
showrev -p
已安装的补丁信息
patchadd 123-12
打补丁
查看服务对应的端口
more /etc/services
系统变量设置
env
,
sysdef
Shell
变量:
bash,csh,ksh
收集
explore
日志
先查看有没有装
# pkginfo |grep SUNWexplo
如果有安装的话:
# /opt/SUNWexplo/bin/explorer
收集到的文件在:
# /opt/SUNWexplo/output
清空日志:
cp /var/adm/messages /var/adm/messages.bkp #cat /dev/null > /var/adm/messages
CPU
psrinfo -vp
系统
cpu
数和速度
uptime cpu
平均负载
prstat -a
实时进程的状态 (相当于 Linux 下的 top 命令)
ps -ef
显示所有进程的详细信息
kill pid
杀死进程
vmstat
,
mpstat
,
/usr/ucb/ps -aux
内存
prtdiag -v
系统硬件,电源接口等
查看内存大小
prtconf -vp | grep Mem
vmstat
swap -s
增加
swap
分区:
mkfile 200m /tmp ,swap -a,swap -l
C5292
磁盘管理
iostat
监视系统输入/输出设备负载
format
系统几块磁盘,大小
Ctrl+D
的组合键退出
metastat
显示硬盘
raid
状态
检查硬盘信息
prtvtoc /dev/dsk/c0t0d0s5
查看
NBU
硬盘
available_media
如何添加硬盘
1
, mkdir /usr/ldap3
2
,
newfs /dev/rdsk/c1t3d0s1
3
,
mount /dev/dsk/c1t3d0s1 /usr/ldap3
4
,
vi /etc/vfstab
添加文件系统信息
/dev/dsk/c1t2d0s0 /dev/rdsk/c1t2d0s0 /usr/ldap3 ufs 1 yes logging
文件系统
df -k
磁盘使用情况
磁带机的读存数据
: tar cpio
磁带机状态
mt -f /dev/rmt/0 status
虚拟文件系统表
/etc/vfstab
Solaris
硬盘分区
网络
ping
,
netstat -arp
,
ifconfig –a
系统基本操作
文件操作
压缩解压
tar gzip gunzip
iso
文件
lofiadm
查看文件信息
ls -lrt
目录大小
du -sk dir
mkdir ,cd,
查找文件:
Find
文件类型
file
查看文件
more
,
head
,
tail
,
cat
例如:
tail -10 /var/adm/messages
文件的权限
chmod: chmod 644 a.txt
解包
tar vcf filename.tar
打包
tar cvf filename.tar dirname
.gz
文件
解压
gunzip filename.gz ; gzip -d filename.gz
压缩
gzip filenam
.tar.gz
解压:
tar zxcf file.tar.gz
压缩;
tar zcvf file.tar.gz dirname
创建和编辑文件:
生成新文件或改变文件日期:
Touch
文件拷贝
cp
移动文件
mv
修改文件: vi的用法
组合命令
:
;
输出重定向
>
组合命令
|
常用管理命令
man
用户管理
groupadd
,
useradd
,
passwd
查看用户
/
组
more /etc/passwd
,
/etc/shadow
,
/etc/group
(who
、
finger
、
rusers
-
1
、
whodo
、
id
如何做系统硬件健康状况检查
# more /var/adm/messages*
(没有重大异常报错)
# df –k (“/”
使用率小于
85%)
# format
( ctrl+d退出)(所有硬盘正常)
# prtdiag –v (
没有
failed
的部件、内存和
cpu
数量正确
)
# psrinfo –v (
系统中所有的
cpu
都处在
online
状态
)
运行级别
查看系统的运行级、日期及时间
who –r
系统运行级别
1
、
掉电(运行级
0
)
2
、
单用户(运行级
1
和
s
或
S
)
3
、
多用户(运行级
2
和
3
)
4
、
重引导(运行级
5
和
6
)
重新启动
reboot, init 6
关闭系统:
shutdown
,
init 0
,
halt
其它管理
定时任务
将
crontab
推到一个自定义的文件上
crontab -l>tmp
编辑这个文件,做需要的修改
vi tmp
推回
crontab
crontab tmp
NBU
备份
#bpdbjobs –report
检查作业备份情况,返回为
0
即为正常
#bpps –a
备份进程启动情况
磁盘阵列管理
#sccli
sccli: selected device /dev/rdsk/c2t0d0s2 [SUN StorEdge yyyy SN#
#sccli> show disks
输出的
Status
列,所有值正常情况下是
” ONLINE”
或
” STAND-BY”
,其它的值都是不正常的;
#sccli> show logical-drives
输出的
Status
列,其值正常情况下是
” Good”
,其它的值都是不正常的;
#sccli>show enclosure-status
输出的
Status
列,所有值正常情况下是
” OK”
或者
” Absent”
,其它的值都是不正常的;
#sccli>show FRUs
输出的
FRU Status
行,所有值正常情况下是
”OK”
,
其它的值都是不正常的;
#sccli> show peripheral-device-status
输出的
status
列,所有值正常情况下是
”within safety range”
或
” N/A”
或
” Hardware:N/A”
或
” Hardware:OK”
,
其它的值都是不正常的;
#sccli>exit
oracle
lsnrctl status
查看
listener
进程的状态
tnsping SID
查看连通请款
sun cluster
scinstall -pv
版本信息
luxadm -e port
光纤链路状态
Oracle 存储过程中发送邮件,并支持用户验证、中文标题和内容
在 Oracle 的存储过程执行中,我们可能希望它本身能完成邮件发送执行的结果,特别是在捕获到了异常时。不能总是依赖于调用存储过程的外部程序--调用后,根据出口参数,发送执行结果。这一需求更迫切的表现在非人工参与的 Oracle Job 调用存储过程的情况下。
所幸,Oracle 为我们提供了发送邮件的工具包 UTL_SMTP,它最早出现在 Oracle 8.1.7 版本中。下面是我从网络上搜索相关资料后、综合整理、多处修正、数次调试、排除万难而写出的一个发送邮件的存储过程。可支持需用户验证的邮件服务器,中文标题和中文内容无乱码,只还未支持附件的发送,相信这方面应用较少,需要的话再 Google 一下,且文后参考中有相应的链接。 阅读全文 >>
Oracle 过程中执行动态 SQL 或 DDL 语句
如果你用的是 Oracle 8i 及以上的版本,那简单,在过程中用 execute immediate sql_str 就行, sql_str 是一个拼凑的 SQL 语句,但这个动态语句中带参数,或 Select 的结果要 into 到变量中时就要稍加留心一下了。而在 8i 以前的版本(谁还用这么古老的玩艺,总有些不得已的地方,老系统考虑升级成本遗留下来的,应用软件所伴随着的等),都没法用 execute immediate,就得使用 DBMS_SQL 包来实现了
何谓动态 SQL 和 DDL 语句呢?通常在过程中要操作的表名、字段名都必须是明确的,否则编译过程时就要报错,但如果这两者也用变量名来表示就是动态的。DDL 就是数据库对象定义的操作,如 CREATE TABLE/VIEW/INDEX/SYN/CLUSTER....,及这些对象的删除、修改操作等等。 阅读全文 >>
Quartz Job Scheduling Framework[翻译]附录 A. Quartz 配置参考 (第六部分)
十. 配置 Quartz 数据源
如果你在使用 JDBC JobStore,就需定义要用到的数据源。而如果使用的是 JobStoreCMT,你实际上需要定义两个数据源。数据源可由三种方式来配置:
·在 quartz.properties 文件中指定连接池属性,这样 Quartz 能亲自创建数据源。
·指定应用服务器管理的数据源所在 JNDI 的位置,Quartz 直接使用它。
·还可使用自定义的 org.quartz.utils.ConnectionProvider 实现类。 阅读全文 >>