Spring提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较
灵活,但是代码量大,存在重复的代码比较多;而声明式的比编程式的更灵活方
便。本文将讨论这两种事务管理的区别。

  传统的JDBC事务管理

  以往使用JDBC进行数据操作时,一般采用DataSource,从数据源中得到
Connection,我们知道数据源是线程安全的,而连接不是线程安全的,所以对每个
请求都是从数据源中重新取出一个连接。一般的数据源由容器进行管理,包括连接
池。例如TOMCAT,WEBSPHERE, WEBLOGIC等这些J2EE商业容器都提供了这个功能。

  以往的我们使用JDBC在写代码时,事务管理可能会是这样:

Connection conn = null;
try
{
 conn = DBConnectionFactory.getConnection;
 conn.setAutoCommit(false);
 //do something
 conn.commit(); //commit transcation
}
catch(Exception e)
{
 conn.rollback();
 //do sth
}
finally
{
 try
 {
  conn.close();
 }
 catch(SQLException se){ //do sth.}
 //close ResultSet,PreparedStatement,Connection
 //notice:Maybe ocurr Exception when u close rs,pstmt,conn
}

  按照以往的思路来写代码,代码量比较长,而且容易疏忽,忘掉一些
try/catch,引发一些异常无法catch,虽然有时候我们会写DBTool 类,来关闭这
些资源,并且保证在关闭这些资源时,不向外抛异常。

  Spring提供的编程式的事务处理

  Spring提供了几个关于事务处理的类:

  ・TransactionDefinition //事务属性定义
  ・TranscationStatus //代表了当前的事务,可以提交,回滚。
  ・PlatformTransactionManager这个是spring提供的用于管理事务的基础接
口,其下有一个实现的抽象类 AbstractPlatformTransactionManager,我们使用的
事务管理类例如 DataSourceTransactionManager等都是这个类的子类。

  我们使用编程式的事务管理流程可能如下:

  1 声明数据源

  2 声明一个事务管理类,例如DataSourceTransactionManager,
HibernateTransactionManger, JTATransactionManager等

  3 在我们的代码中加入事务处理代码:

TransactionDefinition td = new TransactionDefinition();
TransactionStatus ts = transactionManager.getTransaction(td);
try
{
 //do sth
 transactionManager.commit(ts);
}
catch(Exception e){transactionManager.rollback(ts);}

  使用spring提供的事务模板TransactionTemplate

void add()
{
 transactionTemplate.execute( new TransactionCallback(){
  pulic Object doInTransaction(TransactionStatus ts)
  { //do sth}
 }
}

  TransactionTemplate也是为我们省去了部分事务提交、回滚代码;定义事务
模板时,需注入事务管理对象.

  Spring声明式事务处理

  Spring声明式事务处理也主要使用了ioc,aop思想,提供了
TransactionInterceptor拦截器和常用的代理类 TransactionProxyFactoryBean,
可以直接对组件进行事务代理。

  使用TransactionInterceptor步骤

  1.定义数据源,事务管理类

  2.定义事务拦截器,such as:

<bean id = "transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager"><ref bean="transactionManager"/>
</property>
<property name="transactionAttributeSource">
<value>
com.test.UserManager.*r=PROPAGATION_REQUIRED
</value>
</property>
</bean>

  3.为组件声明一个代理类:ProxyFactoryBean

<bean id="userManager"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces"><value>com.test.UserManager
</value></property>
<property name="interceptorNames">
<list>
<idref local="transactionInterceptor"/>
</list>
</property>
</bean>

  使用TransactionProxyFactoryBean:

<bean id="userManager"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager"><ref bean="transactionManager"/>
</property>
<property name="target"><ref local="userManagerTarget"/></property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>

  TransactionProxyFactoryBean只是为组件的事务代理,如果我们要给组件添
加一些业务方面的验证等,可以使用 TransactionTemplate加拦截器方式,为组件
添加多个拦截器,spring AOP中提供了三类Advice,即前增强,后增强,抛出异常
时的增强,可以灵活使用。

GBK18030,GBK,GB2312

在中国,大陆最常用的就是GBK18030编码,除此之外还有GBK,GB2312,这几个编
码的关系是这样的。

最早制定的汉字编码是GB2312,包括6763个汉字和682个其它符号
95年重新修订了编码,命名GBK1.0,共收录了21886个符号。
之后又推出了GBK18030编码,共收录了27484个汉字,同时还收录了藏文、蒙文、
维吾尔文等主要的少数民族文字,现在WINDOWS平台必需要支持GBK18030编码。
按照GBK18030、GBK、GB2312的顺序,3种编码是向下兼容,同一个汉字在三个编
码方案中是相同的编码。

JasperException

JasperException: Failed to load or instantiate TagLibraryValidator
class: org.apache.taglibs.standard.tlv.JstlCoreTLV
A: 原因lib中缺少standard.jar和servlet-api.jar两个文件,将两个文件加入用
户库中。

Go to source web page: 使用spring 调试提示:Failed to load or
instantiate TagLibraryValidator class:

升级到ubuntu 7.10,有可能会遇到修改文件名时不能输入,在firefox中不能光标跟
随,在gaim,pidgin,amsn,emesene,eva, gtalk等聊天软件不能输入文字等等的问
题.解决方法如下:

# im-switch -s scim -z default
# sudo apt-get install scim-qtimm
# sudo apt-get install scim scim-pinyin scim-tables-zh im-switch
scim-qtimm scim-bridge scim-bridge-client-gtk scim-bridge-client-qt
scim-bridge-agent

编辑im-switch生成的scim配置文件
# gksu gedit /etc/X11/xinit/xinput.d/scim

将默认的 GTK_IM_MODULE=scim 修改为 GTK_IM_MODULE="scim-bridge"。保存退出。

在scim输入法中进行了如下设定:

scim设置->全局设置->将预编辑字符串嵌入到客户端中 前的勾去掉
scim设置->gtk->嵌入式候选词标的勾去掉.

重启scim

打开终端,输入 pkill scim
然后输入 scim -d
OK。

10月18号,UBUNTU 7.10正式版在人们的千呼万唤中发布了,昨天晚上就把下载的
ISO刻好盘准备今天重装,重装的过程还算顺利,进入系统进行网络/软件源/语
言支持/安装受限显卡驱动等相关配置
重启后第一感觉就是我的显示分辨率自动调整到最佳分辨率,之前安装BETA版时,
安装受限驱动还需手动更改分辨率
第二声卡也正常了,BETA版无启动声音,需手动设置,现在都很正常了
这也算是个改进吧,UBUNTU总是给我们带来惊喜的:)

这些都设置OK了,接下来就是多媒体的解决了,没配置过的系统是无法读取MP3,
WMA,RM,RMVB等格式的文件,我是这样解决的:
linux 下最受好评的还是mplayer,但播放电影我还是喜欢用Totem,如果使用
totem播不出来的电影可以使用Mplayer,不过至少到现在我还没有碰到totem放不
出来的,Totem 默认使用 Gstreamer 作为后端解码方案,但我使用的是 xine,播
放音乐选择audacious
打开终端执行

sudo apt-get install mplayer mozilla-mplayer totem-xine libxine1-ffmpeg
audacious

接下来还要为Mplayer安装强大的解码器
win32codecs
安装好之后,问题就来了,audacious使用正常,但使用TOTEM看RM,RMVB时有声
音,没有图像?我记得以前是有图像没声音的,终于在网上找到解决方法
安装 libstdc++5来支持,直接在终端输入

sudo apt-get install libstdc++5

再去播放一下看看,是不是全可以正常播放了?

Audacious播放列表乱码的设置
在audacious上右键选择"首选项",在"播放列表"中,把标题格式改为"Custom",再
把自定格式改为"%f"(不要引号)
去享受吧~

升级到ubuntu 7.10,有可能会遇到修改文件名时不能输入,在firefox中不能光标跟
随,在gaim,pidgin,amsn,emesene,eva, gtalk等聊天软件不能输入文字等等的问
题.解决方法如下:

# im-switch -s scim -z default
# sudo apt-get install scim-qtimm
# sudo apt-get install scim scim-pinyin scim-tables-zh im-switch
scim-qtimm scim-bridge scim-bridge-client-gtk scim-bridge-client-qt
scim-bridge-agent

编辑im-switch生成的scim配置文件
# gksu gedit /etc/X11/xinit/xinput.d/scim

将默认的 GTK_IM_MODULE=scim 修改为 GTK_IM_MODULE="scim-bridge"。保存退出。

在scim输入法中进行了如下设定:

scim设置->全局设置->将预编辑字符串嵌入到客户端中 前的勾去掉
scim设置->gtk->嵌入式候选词标的勾去掉.

重启scim

打开终端,输入 pkill scim
然后输入 scim -d
OK。

1.搜索在线摄像头监视站点   

  在Google中输入"inurl:"ViewerFrame? Mode=""或者"inurl:
"MultiCameraFrame?Mode=""、"inurl:"view/index.shtml""(输入时不带外面的双
引号,在英文状态下输入),你会获得无数个未经加密的网络摄像机监视到的画
面。无聊的时候玩玩,可以满足一下我们的好奇心。此外,打开这个站点:
www.opentopia.com/hiddencam.php,在"from"中选择"China",你还可以看到国内
的某处网络摄像机画面。  

  2.让Google搜索结果在新窗口中打开   

  默认情况下Google的搜索结果跟百度等搜索引擎不一样,它是直接在当前网页
中打开搜索结果,这对我们的使用会感到不方便,其实我们可以通过设置来达到目
的。打开Google后,选择"使用偏好"链接,在打开页面的"结果视窗"中勾选"开启
新视窗以显示查询结果。"一项,单击"存储偏好设置"按钮即可   

  3.比较两个关键词在Google中搜索结果数量   

  想知道克里和布什谁更火?那就比较一下Google的搜索结果数量就知道了。打
www.googlefight.com/,在"Keyword #1"和"Keyword #2"中分别输入"克里"和
"布什",单击"Make a fight!"按钮即可看到他们各自的结果。笔者试过,克里有
741000个搜索结果,布什有4020000个搜索结果,布什获胜!   

  4.让Google来告诉去哪儿旅游   

  想好去哪儿旅游了吗?问问Google吧。打开
douweosinga.com/projects/besttimetovisit站点,在 "Enter the name of
destination"栏中输入你想要去的城市名字,比如"北京",点击"Go"即可获得结
果。   

  5.有趣的关键字   

  在Google中输入"_*_"这个关键字,不管你是"搜索所有网页"还是"仅搜索中文
网页",你都只能搜索到一大堆中文页面。想明白这是为什么吗?到
blog.outer-court.com/forum/5066.html去看看就知道了,原来这是ASCII字符和
Google之间的矛盾。


Google在用户隐私资料收集方面的九大疑点

Google-Watch近日刊登文章,警告用户小心Google对隐私资料获取的"阴险"与"强
硬",并列举了Google在用户隐私资料收集方面的九大"阴谋疑点":  

  1. Google的"老不死"cookie

Google 是第一个使用Cookie的搜索引擎供应商,其Cookie有效时间竟然直至2038
年。Google的Cookie在你的硬盘上留下独一的ID记录,当你浏览Google页面时,
Google会检查你是否拥有Cookie文件,如果没有则留下新Cookie,如果已经存在便
会读取旧Cookie中的信息。

  

  2. Google记录所有能记录的资料  

  Google将记录所有搜索引擎用户的Cookie ID、网址IP、登录时间与日期、搜
索偏好以及浏览器类型。Google还会针对你的IP地址提供给你不同的地域性搜索结
果。  

  3. Google资料保护并不完善  

  Google没有任何资料保存政策,很显然,他们可以自由读取搜集到的用户个人
资料。  

  4. Google会不会透露资料的用途  

  当纽约时报2002年在采访中就资料用途问题咨询Sergey Brin时,他拒绝对此
发表评论。  

  5. Google雇佣"危险人物"  

  Mutt Cutts--Google重要软件工程师,曾经为美国国家安全局工作。而且
Google还想雇佣更多有类似背景的人。

  6. Google工具条是间谍软件  

  Google的免费工具条能够记录你浏览的所有页面,并且读取你的所有Cookie,
Google已经在其隐私政策中承认这一点。而且Goolge工具条每次更新都无声无息,
并不询问用户是否需要更新。
  7. Google的页面缓存拷贝行为违法  

  根据美国网络版权法,Google的页面缓存记录行为违法。  

  8. Google并不是你的朋友  

  目前Google占有75%站外链接份额,网站管理员不得不寻求Google的认可。如
果网站管理员试图利用Google已知的搜索排名算法提高自己的排名,将受到Google
的惩罚,其链接和流量将被Google中止。而Google目前并没有出台公开处罚标准和
政策。  

  9. Google是个人隐私的定时炸弹  

  每天有2亿用户使用Google搜索服务,其中大部分在美国本土以外,Google的
隐私资料收集行为将成为个人数据的定时炸弹。连华盛顿新成立的安全局资料采集
部门都梦想获得Google搜集资料的高效能力。


Google技巧
google 检索引擎因其准确和快速的检索服务而深受广大网民欢迎,成为他们手中
查询信息的必备工具,Google检索引擎本身也不辜负网民的期望,不断推出新的检
索功能,除了为帮助人们更精确查找信息而常用的网站内容(site)、网页链路
(inurl)、网页标题(intitle)、各种格式文件 (filetype)和被链接(link)等检索
功能之外,最近,还推出了一系列新的检索服务,总体来说,这些新的检索功能更
加人性化,更贴近人们的日常生活和需要,因而很容易被用户接受和使用。

  1。 汉语拼音输入检索
  为了方便使用中文的用户在网上搜索,Google允许用户直接在键盘上输入汉语
拼音来检索相关事物,例如:
  输入 shanghaishikebiao
  检索结果提示:您是不是要找:上海时刻表 
  这正是我们需要查找的关键词,用户可以据此浏览相关结果,这包括上海地区
的各种交通工具的时刻表。如果需要查找更详细的资料"上海飞机航班时刻表",则
只要在原来的检索结果"上海时刻表"中间输入feijihangban,例如:
  上海feijihangban时刻表
  Google的这项新功能,可以免除用户在中文和拼音输入方面的互相转换。用户
在输入拼音时,不要留有空格,否则Google会误认为英文。 Google把拼音与常用
的字或者词组一一对应,因此,过于生僻的字或词组不适合于用这个方法查找。

  2。 中英文字典
  经常使用计算机的用户手头上自然会有一、两个字典软件,用于查找和翻译中
英文的词义。作为一种使用频率较高的工具,Google也提供了一个中英文字典,很
方便使用。用户可以按照下列方法查找词义查找英文的中文词义则输入fy 
computer查找中文的英文词义则输入 翻译 计算机

  3。 天气查询
  天气情况也是人们经常要查询的信息之一,Google 提供的天气查询来自于一
个更新及时的中文气象网站,适合中国人使用。用户输入中文和英文都可以查询,
例如要了解奥运会期间雅典的天气情况,可以按照下列方法输入:

  雅典 天气  athens tq 返回的查询结果中会在第一条出现一个 "雅典天
气预报",用户点击后就可以看到当天雅典的天气情况。如果地名相同者,用户还
需要进行一次选择。

  4。 股票查询
  查询股票的网站已经很多了,Google提供的股票查询只是更方便一些而已,用
户可以按照股票名称、股票代码或者股票名称的声母字母查询,下列为查询 "中国
联通"股票行情的举例。
  中国联通 股票 zglt gp
  gp 600050

  5。 邮政编码和区号查询
  人们时常需要查询邮政编码和电话区号,Google提供了这样一个实用的功能,
用户据此能够获得所要查询的省市名称,邮政编码及长途电话区号,下面为查询举例:
  邮编 杭州       
  区号 绍兴       
  yb  杭州 
  qh  绍兴
  需要注意的是用户只能查询到城市级别的邮政编码和区号,而无法进一步查询
区县的具体信息。

  6。 手机归属地查询
  用户在输入手机号码后可以获得号码段、归属地、卡类型、邮政编码和电话区
号的信息,但是从实用的角度看,其中只有手机归属地的信息较为有用。

  7。 计算器使用
  Google有计算器的功能,例如在google检索框中输入45*86+35/7,就会得到结果:
  (45 * 86) + (35 / 7) = 3 875
  有兴趣的用户,或者经常在计算机上进行运算的用户不妨可以试一试。

  8。 购物检索
  Google新开设的购物检索称之为Froogle,网址为http://froogle。google。com/
  用户只要输入商品的名称,就可以看到该商品的图片和价格,用户还可以限定
一种商品的价格进行检索,并且将检索结果按需要从高价到低价排序列出,许多商
品可以直接在网上订购,这种图文并茂的检索购物方式较受用户青睐。

  9。 美国实用生活信息查询
  如果用户生活在美国或者短期去美国出差和学习,下面的查询功能或许能对他
们又帮助,因为这些检索服务目前仅限于美国。
  9.1 地区代码查询
  用户输入美国的地区代码,在返回的检索结果中的第一项就是该地区的地图,
用户可以通过不断的点击来找到一条具体的大街。
  9.2 条形码查询
  用户输入一个商品的条形码就可以找到有关该产品的说明。
  9.3 飞机航班查询
  用户输入一家航空公司的名称和航班号,即可获得该航班的出发地和目的地,
起飞和到达时间,以及实际航行情况,目前是否开始检票,抵达目的地候机大楼的
舱门号。
  9.4 车牌号查询
  用户输入车牌号,可以获得一辆车的名称、型号、出厂年份,车身和发动机情况。
  9.5 邮件查询
  用户输入一个邮件的号码,可以获悉该邮件目前的状况,譬如邮件已经抵达或
者正在路途上等。

  10。 检索工具栏
  Google的检索工具栏功能强大,有拖放和右击检索功能,新闻阅读,广告拦
截,网站排名显示和搜索字词标明等,工具栏可以附在浏览器下,使用更加方便。
用户可以首先在Google网站下载并安装一个检索工具栏,然后根据需要在工具栏的
选项中进行设置,我们推荐用户使用这个检索工具栏,它将给用户带来许多意想不
到的方便。

  10.1 Google 新闻
  Google 的新闻来源于4500家报刊杂志和通讯社,在精选以后持续播出世界各
国的新闻,每条新闻都有更新的时间,并联接相关的新闻。用户可以使用免费的新
闻通知服务,通过电子邮件收到自己感兴趣的新闻。
  10.2 网站排名
  Google 通过对 Web 链接结构和许多其它变量自动计算,对网页的重要程
度进行评定。网站排名根据这个评定能够显示用户正在访问的网站的重要程度,用
一根绿色线条显示,直观而明确。
  10.3 搜索字词标明
  搜索字词标明通过鲜艳的色彩标明用户所检索的字词在每个网页上的位置,便
于用户查阅,单击"搜索字词标明"按钮可以打开和关闭标明状态。
  10.4 拖放和右击检索
  拖放检索功能使检索更为方便,用户可以把在网页上所选取的字词直接拖放到
检索框中,Google会自动进行检索。对于与 Web浏览器同时运行的许多文字处理
应用程序中的文字,也可以使用此功能。右击检索是指用户可以在网页上选取文字
后,右击鼠标,然后从弹出式菜单中选择"Google 搜索"便可以自动检索。

现在越来越多的项目是基于Linux或Unix下的,而在Linux上给客户上安装一个项
目,需要进行许多的安装设置过程,比如数据库的, WebLogic Server的。现写下
基于Red hat Linux7.1 +jdk1.3+WebLogic Server7.0 +oracle9.2 的安装配置过程。

一.安装好linux ,安装过程比较简单,不在此叙述.

二.JDK的安装配置.
一般以root用户安装。
先从SUN网站上下载一个jdk.比如:j2sdk-1_3_1_06-linux-i586.bin,放到/usr/local
下,
  chmod a+x j2sdk-1_3_0-linux.bin(添加执行权限)
  ./j2sdk-1_3_0-linux.bin

安装RPM文件格式:
  chmod a+x j2sdk-1_3_0-linux-rpm.bin
  ./j2sdk-1_3_0-linux-rpm.bin
  rpm -iv j2sdk-1_3_0-linux.rpm
  rpm -iv --force j2sdk-1_3_0-linux.rpm
  ./j2sdk-1_3_1_06-linux-i586.bin

设置环境变量:
  # vi /etc/profile
里面添加:
  export JAVA_HOME=/usr/local/jdk1.3.1_06/
  export CLASSPATH=.:/usr/local/ jdk1.3.1_06/lib
PATH=$PATH:$JAVA_HOME/bin

三、Oracle 9i的安装配置
1.从oracle网站下载oracle9i.
2.解压oracle文件
gunzip Linux9i_Disk1.cpio.gz Linux9i_Disk2.cpio.gz Linux9i_Disk3.cpio.gz

cpio -idmv < Linux9i_Disk1.cpio
cpio -idmv < Linux9i_Disk2.cpio
cpio -idmv < Linux9i_Disk3.cpio

3.以root用户登陆,创建oracle用户,目录,设置oracle环境变量.
  Create Oracle User Accounts
  # groupadd dba
  # groupadd oinstall
  # useradd -g oinstall -G dba oracle
  # passwd ********
  Create Oracle Directories
  # mkdir /opt/oracle
  # mkdir /opt/oracle/product
  # mkdir /opt/oracle/product/9.2.0
  # chown -R oracle.oinstall /opt/oracle
  # mkdir /var/opt/oracle
  # chown oracle.dba /var/opt/oracle
  # chmod 755 /var/opt/oracle
  Set Oracle Environments
  As the oracle user execute the following commands:
  # vi /home/oracle/.bash_profile添加

  export ORACLE_BASE=/usr/local/oracle
  export ORACLE_HOME=$ORACLE_BASE/product/9.2.0
  export ORACLE_SID=orcl
  export ORACLE_TERM=xterm
  export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
  LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
  export LD_LIBRARY_PATH
  CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
  export CLASSPATH
  PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

调整内存
  Shared Memory
  su root
  # vi/etc/sysctl.conf里添加
  kernel.shmmax=1073741824
4.安装oracle
  进入Disk1目录
  cd Disk1
  在控制台窗口敲入
  ./runInstaller
安装完了以后,启动数据库
oracle$ sqlplus /nolog
SQL> connect / as sysdba
SQL> startup

oracle 的安装过程比较复杂,而且如果你的开发包安装的不够全的话,会出现一些
错误,具体请参考: http://www.puschitz.com/InstallingOracle9i.shtml

5.设置oracle 自启动

(1)vi /etc/oratab
  orcl:/usr/local/oracle/product/9.2.0:Y
(2)vi /home/oracle/.bash_profile
  ORACLE_SID=orcl
  ORAENV_ASK=NO
  export ORACLE_SID ORAENV_ASK
  . oraenv
(3)在 /etc/rc.d/init.d 下创建一个dbora文件。
内容如下:

  #!/bin/sh
  ORA_HOME=/usr/local/oracle/product/9.2.0
  ORA_OWNER=oracle
  if [ ! -f $ORA_HOME/bin/dbstart ]
  then
  echo "Oracle startup: cannot start"
  exit
  fi
  case "$1" in
  'start') #start oracle database and listeners
  su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart"
  su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
  ;;
  'stop') #stop oracle databse and listeners
  su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
  su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut"
  ;;
  esac

把这个文件与下列文件联接:
ln -s /etc/rc.d/init.d/dbora /etc/rc.d/rc3.d/S99dbora
ln -s /etc/rc.d/init.d/dbora /etc/rc.d/rc5.d/S99dbora
ln -s /etc/rc.d/init.d/dbora /etc/rc.d/rc0.d/K10dbora

(4)编辑dbstart文件
以oracle用户登陆
vi /usr/local/oracle/product/9.2.0/bin/dbstart
- add the following line:
SPFILE=${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora
after this line: PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora

- change:
if [ -f $PFILE ] ; then
to:
if [ -f $PFILE -o -f $SPFILE ] ; then
重启动服务器,检查数据库是否已经起来。

四、WebLogic 配置。
从bea网站上下载一个WebLogic Server.开始安装。
[test@linux2 download]$ chmod a+x server701_linux.bin
[test@linux2 download]$ ./server701_linux.bin
按照提示安装即可。

五.设置WebLogic Server 自启动.
以root用户登陆。
vi /etc/rc.d/rc.local
把su - test -c "/home/test/bea/user_projects/mydomain/startWebLogic.sh
2>&1> /dev/null &"
(这里的 test是你安装WebLogic Server时候的用户名.)
放到/etc/rc.d/rc.local里就行了,不过这样有一个缺点,你WebLogic Server启动
后一直在后台运行,你不能看到上面的提示信息和出错信息.

六.调整你的WebLogic Server,便于用户的使用。
设置默认 Web Application,从
  mydomain> Servers> myserver>connection>http>Default Web Application
选中你的web application即可。
设置你的首页,在你web application里面的web.xml里面添加一句

你得页面

hibernate 分页

Spring DAO的编写:
利用hibernate提供的Query的setFirstResult和setMaxResults方法进行数据分页,
程序中以我建立的用户表为例, query的分页机制是以跳指针的方式进行数据读
取,这样极大的提高的数据分页程序的响应速度
//分页主程序
public List getUsersPage(int firstResults,int maxResults){
try {
Session session=this.getSession();
Query query=session.createQuery("from SYSUSERS sysusers order by
sysusers.username asc");
query.setFirstResult(firstResults);
query.setMaxResults(maxResults);
return query.list();
} catch (HibernateException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
finally{
try {
session.close();
} catch (HibernateException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
return null;
}
//显示分页总页数
public String getPageCount(int maxResults){
String pageCount="0";
try {
session=this.getSession();
Query query=session.createQuery("select count(sysusers.id) from SYSUSERS
sysusers");
int Count=((Integer)query.list().get(0)).intValue();
if(Count%maxResults>0){
pageCount=String.valueOf(Count/maxResults+1);
}
else{
pageCount=String.valueOf(Count/maxResults);
}
return String.valueOf(pageCount);
} catch (HibernateException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
finally{
try {
session.close();
} catch (HibernateException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
return pageCount;
}
//显示总记录数
public String getTotalMark(){
String totalMark="0";
try {
session=this.getSession();
Query query=session.createQuery("select count(sysusers.id) from SYSUSERS
sysusers");
int Count=((Integer)query.list().get(0)).intValue();
totalMark=String.valueOf(Count);
return totalMark;
} catch (HibernateException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
finally{
try {
session.close();
} catch (HibernateException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
return totalMark;
}

写完spring的dao之后定义相应的接口,这里不在复述
在这个dao写好之后,就可以在相应的表示层中进行方法调用,达到分页的目的

在weblogic和tomcat下如何解决Word、Excel打开乱码问题.
在weblogic应用程序下对于有时上传的文件,(如word、excel等)需要打开或下载到本地时,在weblogic容器默认情况下可能是以记事本打开从而导致乱码现象。为解决此问题可以在你的项目(project)下的web.xml文件中增加如下代码即可解决直接打开而出现乱码问题.
为了让能在IE浏览器中自动打开或弹出对话框的设置:需要在WEB.XML中进行如下的设置:在WEB.XML中添加
: 文件的扩展名
: 除了该类型文件的可执行文件,同WINDOW注册表中的
/HKEY_CLASSES_ROOT下该类文件的Content Type 的值一样.
如能在IE中自动打开DOC,XLS,PDF文件需在web.xml文件中增加如下配置:

doc
application/msword



xls
application/msexcel



pdf
application/pdf

web.xml在WEB-INF目录下面.
至此即可解决出现上述的问题了.

另外页面中只需要增加:
response.setContentType("application/vnd.ms-Excel; charset=gb2312");
response.setHeader("Content-disposition","attachment;filename=BatchWork_1.xls");//Excel
这两行代码即可实现页面导出成Excel或Word(将ms-Excel修改成ms-Word即可)文档.

注: 以上两行代码是要加上新的页面上也就是导出需要重新做一个页面,在这个新的页面中加上这两句话即可.如果需要将filename= BatchWork_1.xls文件以中文名命名的话,可以这样写filename="+new String("查询.xls".getBytes("GBK"),"ISO8859-1")

一、代理服务器知识[转]

代理服务器(Proxy)是什么?
最通俗的说法是当我们准备浏览某网页时,代理服务器会先搜寻一下在此主机内是
否有前人留下这份网页的务份。如果有,就直接(不用再连线到这网页)将该网页
传送给我们。如果没有,则代理服务器会信照网页的网址向该主机索取;除了传送
一份给我们,另一分还将留起来备份(方便后人索取)。

另外选取适当的代理服务器(Proxy)甚至可以访问 ISP封锁的那些地址,还可以
隐藏IP地址,防止被炸弹攻击。比如你享受国内的电信163 ISP服务时(163属中国
电信所以只能去很少的受限站点)用代理服务器(Proxy)可看被封的网页,还可
以提高上网速度,通常在IE中直接加一个代理服务器,但如果您经常访问国外敏感
站点,代理易被封,您又得更代理服务器,这样造成不便。

传统浏览器代理服务(一次代理)在以前可以帮助我们方便访问被屏蔽的网站,但
是现在光靠它已基本不行了,我们需要借助它来访问提供二次代理服务的网站(如
基于页面代理的Secure),从而通过二次代理服务更安全更方便的访问如一般被屏
蔽禁止访问的网站,同时也保证一次代理服务器地址不易被查封。当然怎样获得传
统代理服务器IP地址我们也会介绍。

二、一级代理服务器

通过设置IE浏览器上的Internet选项设置代理服务器。特点是:

1) 有大量的代理服务器站点支持;
2) 访问本地区的网站时速度受到影响,有时需要在使用和不使用代理服务器之间
切换;
3) 不适用于已使用代理服务器的企业网、局域网、网吧等环境。

Internet Exploer 5.0及以上版本的设置方法分别如下:

选择IE5菜单中的"工具" -&gt; Internet 选项 -&gt; 连接 -&gt; 单击所使用的
拨号设置 -&gt; 设置 -&gt; 在"使用代理服务器"前打勾 -&gt; 在"地址"栏里填
入使用的http代理服务器IP或域名,在"端口"栏中填入所使用的代理服务器的端口
-&gt; 确定,结束。

对于局域网用户,应点击"连接"签下面的"局网域设置"来设置代理!

三、二次代理服务器

直接使用二次代理服务器访问。方法是在IE的URL地址栏直接输入二次代理服务器
的地址及要访问的网址。访问成功后,将此站点收藏到IE的收藏夹中,此后对此站
点的访问即可从收藏夹中直接点取。特点是:

1) 不管IE上的Internet选项是否设置代理服务器,都可以使用本方法;
2) 特别适用于已使用代理服务器的企业网、局域网、网吧等环境;
3) 缺点是使用过程复杂,二次代理服务器的地址和用法不好记忆,而目前提供二
次代理的服务器数量不多。

提供二次代理的服务器有:

http://web.proxycn.com/
国内很好的二次在线Web代理,同时提供最新的一级代理地址。

http://proxy.spaceproxy.com/-_-http://你要去的网站地址
速度不错,提供的服务最完善,二次代理首选。

http://www.noproxy.com/
速度不错,自动选择提供一个CGI代理服务器,提供url加密;需要在页面填入要去
的网站地址。

http://anon.free.anonymizer.com/http://你要去的网站地址
速度有延迟。

四、另类方法

学到一个简单的方法,方便又快捷,不用第三方代理。具体说,就是将你要访问的
网址前面加上如下的字符:
http://anonymouse.ws/cgi-bin/anon-www.cgi/
比如,我们要访问BlogSpot首页,就要这样输入:
http://anonymouse.ws/cgi-bin/anon ... ://www.blogspot.com/

五、代理服务器软件及技术

Multiproxy 是个很方便的proxy软件,可以解决这个问题,你可以加入20-30甚至
更多的国外代理,如果有80、8080以外的端口的代理,如8000、81、 83、89、
3128等,无需经过二次加密代理即可访问被封网站。大家收集代理服务器请注意,
有的代理当时不能用,但也许明天又可用了。运行时不要性急,等她完成检测后再
启动新浏览器进行浏览。如发现联不上网,可在软件中单击option,再单击proxy
server list,将显示绿灯的代理中ping栏下数字小于500的代理disable掉。如果
发现全部红灯,可从新check all proxies;如果仍然不行,你就须找新的海外代
理了。

特别推荐:Freenet一种非常厉害的技术,不想多说,把这个软件下下去,解压后
看一下里面的文档,一会你就可以访问被封锁的网站,我试了,非常有效。


==================================


计算机及应用http://b503768.xici.net
预定的朋友越来越多我们才有信心把这个版做的越来越好~欢迎您参与本版讨论。
------------


Freenet
就是自由网,是一个正在开发完善的免费公开软件,起源于1997年英国爱丁堡大学
信息学部IanClarke发起的研究项目。其宗旨是突破网上封锁,保护作者和读者的
身份。自由网组织宣称自由和匿名表达的权利是最高的真理。它采用分布式存储,
点对点的加密传输的技术,可以有效何护隐私防止审查,每台安装过 Freenet.exe
的电脑是上网的一个终端同时是服务器又是数据存储器,最近装了一个极慢,有兴
趣的朋友可以研究一下。

Proxy代理服务器,即Proxy服务器,在互联网上的完成跑腿服务。当你在浏览器中
设置了某个Proxy服务器之后,由你的浏览器所发出的任何要求,都会被送到Proxy
服务器上去,由这台Proxy服务器代为处理。[金山词霸译]


实例:

我安装了GOOGLE.COM的即时通信工具hello以后,顺手建了一个BLOG,很郁闷的是
网站能打开,但以*.blogspot.com形式的 BLOG页面全部不能访问,甚至如自由门
之类的代理也不行。不过终于找到登陆*.blogspot.com的办法了~

网络屏蔽的攻与防也就是网络安全了。咱就试试怎样才能绕过金盾工程这只闲人虫
上BLOGSPOT。COM

因为中国网络内容的审查不仅包含DNS劫持,封锁网站IP地址等,而且还有基于网
关的网页内容关键字过滤,所以有时用了代理仍然无法打开链接,这就需要找一个
传输过程加密的代理服务器,再不行就用双重代理。

打开一个二级代理务器,
例:http://anonymouse.org/anonwww.html

其代理入口页面http://anonymouse.org/anonwww.html


按此在新窗口打开图片


AnonWWW

Many mice surf the web under the illusion that their actions are private
and anonymous.
Unfortunately, it isn't so. Every time you visit a site for a piece of
cheese, you leave a
calling card that reveals where you're coming from, what kind of
computer you have,
and other details. And many cats keep logs of all your visits, so that
they can catch you!
This service allows you to surf the web without revealing any personal
information.
It is fast, it is easy, and it is free!

Enter URL:

在这个框内输入想去的网址即可,例:hope9.blogspot.com

快速方法:在地址栏内直接输入
http://anonymouse.org/cgi-bin/anon ... //hope9.blogspot.com


Enter URL:

在这个框内输入想去的网址即可,例:hope9.blogspot.com


这帖子里输入框不显示,打其代理入口页面http://anonymouse.org/anonwww.html即可


快速方法:在地址栏内直接输入:
http://anonymouse.org/cgi-bin/anon ... //hope9.blogspot.com


注意后边的http://hope9.blogspot.com换为您想去的网站地址。

很多用户都知道在Window系统中有个Hosts文件(没有后缀名),在Windows98系统
下该文件在Windows目录,在 Windows2000/XP系统中位于C:\Winnt\System32\
Drivers\Etc 目录中。该文件其实是一个纯文本的文件,用普通的文本编辑软件如
记事本等都能打开。

用记事本打开hosts文件,首先看见了微软对这个文件的说明。这个文件是根据
TCP/IPforWindows的标准来工作的,它的作用是包含IP地址和Host name(主机名)
的映射关系,是一个映射IP地址和Hostname(主机名)的规定,规定要求每段只能包
括一个映射关系,IP地址要放在每段的最前面,空格后再写上映射的Host name(主
机名)。对于这段的映射说明用"#"分割后用文字说明。

现在让我们来看看Hosts在Windows中是怎么工作的。

我们知道在网络上访问网站,要首先通过DNS服务器把网络域名(www.XXXX.com)
解析成61.XXX.XXX.XXX的 IP地址后,我们的计算机才能访问。要是对于每个域名
请求我们都要等待域名服务器解析后返回IP信息,这样访问网络的效率就会降低,
而Hosts文件就能提高解析效率。根据Windows系统规定,在进行DNS请求以前,
Windows系统会先检查自己的Hosts文件中是否有这个地址映射关系,如果有则调用
这个IP地址映射,如果没有再向已知的DNS 服务器提出域名解析。也就是说Hosts
的请求级别比DNS高。

知道了Hosts文件的工作方式,那在具体使用中它有哪些作用呢?

1、加快域名解析

对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,这样
当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。

2、方便局域网用户

在很多单位的局域网中,会有服务器提供给用户使用。但由于局域网中一般很少架
设DNS服务器,访问这些服务要输入难记的IP地址,对不少人来说相当麻烦。现在
可以分别给这些服务器取个容易记住的名字,然后在Hosts中建立IP映射,这样以
后访问的时候我们输入这个服务器的名字就行了。

3、屏蔽网站

现在有很多网站不经过用户同意就将各种各样的插件安装到你的计算机中,有些说
不定就是木马或病毒。对于这些网站我们可以利用Hosts把该网站的域名映射到错
误的IP或自己计算机的IP,这样就不用访问了。我们在Hosts写上以下内容:

127.0.0.1#屏蔽的网站
0.0.0.0#屏蔽的网站

这样计算机解析域名就解析到本机或错误的IP,达到了屏蔽的目的。

4、顺利连接系统

对于Lotus的服务器和一些数据库服务器,在访问时如果直接输入IP地址那是不能
访问的,只能输入服务器名才能访问。那么我们配置好Hosts文件,这样输入服务
器名就能顺利连接了。

最后要指出的是,Hosts文件配置的映射是静态的,如果网络上的计算机更改了请
及时更新IP地址,否则将不能访问。

对于readyState的五种状态的描述或者说定义,很多Ajax书(英文原版)中大都语
焉不详
在《Pragmatic Ajax A Web 2.0 Primer 》中偶然看到对readyStae状态的介绍,感
觉这个介绍很实在……
比较理想的解释方法应该以"状态:任务(目标)+过程+表现(或特征)"的表达模
式来对这几个状态进行定义

【全文】

在《Pragmatic Ajax A Web 2.0 Primer 》中偶然看到对readyStae状态的介绍,感
觉这个介绍很实在,摘译如下:

0: (Uninitialized) the send( ) method has not yet been invoked.
1: (Loading) the send( ) method has been invoked, request in progress.
2: (Loaded) the send( ) method has completed, entire response received.
3: (Interactive) the response is being parsed.
4: (Completed) the response has been parsed, is ready for harvesting.

0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了

对于readyState的这五种状态,其他书中大都语焉不详。像《Foundations of
Ajax》中,只在书中的表2-2简单地列举了状态的"名称"--The state of the
request. The five possible values are 0 = uninitialized, 1 = loading, 2
= loaded, 3 = interactive, and 4 = complete。而《Ajax in Action》中好像根
本就没有提到这5种状态的细节。《Professional Ajax》中虽不尽人意,但还是有可
取之处:

There are five possible values for readyState:
0 (Uninitialized): The object has been created but the open() method
hasn't been called.
1 (Loading): The open() method has been called but the request hasn't
been sent.
2 (Loaded): The request has been sent.
3 (Interactive). A partial response has been received.
4 (Complete): All data has been received and the connection has been closed.

readyState有五种可能的值:
0 (未初始化): (XMLHttpRequest)对象已经创建,但还没有调用open()方法。
1 (载入):已经调用open() 方法,但尚未发送请求。
2 (载入完成): 请求已经发送完成。
3 (交互):可以接收到部分响应数据。
4 (完成):已经接收到了全部数据,并且连接已经关闭。

在《Understanding AJAX: Using JavaScript to Create Rich Internet
Applications》中,则用下表进行了说明:

表1. readyState Levels

readyState Status Code

Status of the XMLHttpRequest Object


(0) UNINITIALIZED
未初始化

The object has been created but not initialized. (The open method has
not been called.)
(XMLHttpRequest)对象已经创建,但尚未初始化(还没有调用open方法)。


(1) LOADING
载入

The object has been created, but the send method has not been called.
(XMLHttpRequest)对象已经创建,但尚未调用send方法。


(2) LOADED
载入完成

The send method has been called, but the status and headers are not yet
available.
已经调用send方法,(HTTP响应)状态及头部还不可用。


(3) INTERACTIVE
交互

Some data has been received. Calling the responseBody and responseText
properties at this state to obtain partial results will return an error,
because status and response headers are not fully available.
已经接收部分数据。但若在此时调用responseBody和responseText属性获取部分结
果将会产生错误,因为状态和响应头部还不完全可用。


(4) COMPLETED
完成

All the data has been received, and the complete data is available in
the responseBody and responseText properties.
已经接收到了全部数据,并且在responseBody和responseText属性中可以提取到完
整的数据。


根 据以上几本书中的关于readyState五种状态的介绍,我认为还是《Pragmatic
Ajax A Web 2.0 Primer 》比较到位,因为它提到了对接收到的数据的解析问题,
其他书中都没有提到这一点,而这一点正是"(3)交互"阶段作为一个必要的转换过
程存在于"(2)载入完成"到"(4)完成"之间的理由,也就是其任务是什么。归结起
来,我觉得比较理想的解释方法应该以"状态:任务(目标)+过程+表现(或特
征)"表达模式来对这几个状态进行定义比较准确,而且让人容易理解。现试总结
如下:

表2. readyState 状态详解

readyState 状态

状态说明


(0)未初始化

此阶段确认XMLHttpRequest对象是否创建,并为调用open()方法进行未初始化作好
准备。值为0表示对象已经存在,否则浏览器会报错--对象不存在。


(1)载入

此阶段对XMLHttpRequest对象进行初始化,即调用open()方法,根据参数(method,
url,true)完成对象状态的设置。并调用 send()方法开始向服务端发送请求。值为
1表示正在向服务端发送请求。


(2)载入完成

此阶段接收服务器端的响应数据。但获得的还只是服务端响应的原始数据,并不能
直接在客户端使用。值为2表示已经接收完全部响应数据。并为下一阶段对数据解
析作好准备。


(3)交互

此阶段解析接收到的服务器端响应数据。即根据服务器端响应头部返回的MIME类型
把数据转换成能通过responseBody、responseText 或responseXML属性存取的格
式,为在客户端调用作好准备。状态3表示正在解析数据。


(4)完成

此阶段确认全部数据都已经解析为客户端可用的格式,解析已经完成。值为4表示
数据解析完毕,可以通过XMLHttpRequest对象的相应属性取得数据。


概而括之,整个XMLHttpRequest对象的生命周期应该包含如下阶段:
创建-初始化请求-发送请求-接收数据-解析数据-完成

在具体应用中,明确了readyState的五个状态(XMLHttpRequest对象的生命周期各
个阶段)的含义,就可以消除对Ajax核心的神秘感(语焉不详的背后要么是故弄玄
虚,制造神秘感;要么就是"以其昏昏,使人昭昭"),迅速把握其实质,对减少学
习中的挫折感和增强自信心都极其有益。

比如,通过如下示例:

//声明数组
var states = ["正在初始化……",
"正在初始化请求……成功!<br/>正在发送请求……",
"成功!<br/>正在接收数据……",
"完成!<br/>正在解析数据……",
"完成!<br/>"];

//回调函数内部代码片段
if (xmlHttp.readyState==4)
{
var span = document.createElement("span");
span.innerHTML = states[xmlHttp.readyState];
document.body.appendChild(span);

if (xmlHttp.status == 200)
{
var xmldoc = xmlHttp.responseXML;
//其他代码
}

//别忘记销毁,防止内存泄漏
xmlHttp = null;
}else{
var span = document.createElement("span");
span.innerHTML = states[xmlHttp.readyState];
document.body.appendChild(span);
}

结果如下: 正在初始化请求……成功!
正在发送请求……成功!
正在接收数据……完成!
正在解析数据……完成!

我们很容易明白XMLHttpRequest对象在各个阶段都在做什么。因此,也就很容易对
Ajax的核心部分有一个真正简单明了的

javascript的splice

从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。

arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])

参数

arrayObj

必选项。一个 Array 对象。

start

必选项。指定从数组中移除元素的开始位置,这个位置是从 0 开始计算的。

deleteCount

必选项。要移除的元素的个数。

item1, item2,. . .,itemN

必选项。要在所移除元素的位置上插入的新元素。

说明

splice 方法可以移除从 start 位置开始的指定个数的元素并插入新元素,从而修改 arrayObj。返回值是一个由所移除的元素组成的新 Array 对象。

示例:

script language="javascript">
function test()
{
//var a=[1,2,3];
//alert(a);
var a=[1,2,3];
a.splice(1,1,4,6,7,8) //移除第二个,然后在第一个后插入4,6,7,8,返回:1,4,6,7,8,3
alert(a);
a.splice(0,1,3) //移除第一个,然后在第一个前插入3,返回:3,4,6,7,8,3
alert(a);

a.splice(2,0,5) //在第三个元素插入一个5,返回:3,4,5,6,7,8
alert(a);

a.splice(-1,1) //移动最后一位,类似shift方法,返回:3,4,5,6,7,8
alert(a);


}
</script>

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,可以用来在客户端和服务器端传输数据!JSON对象既可用于AJAX的开发中,也可用一般的J2EE的开发中,用于一次性向后台提交多于一条的记录!(譬如显示在页面上的table中记录)
JSON官方网站的介绍:(www.json.org)

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.

JSON is built on two structures:


* A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, or associative array.

* An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence.



These are universal data structures. Virtually all modern programming languages support them in one form or another. It makes sense that a data format that is interchangable with programming languages also be based on these structures.

简单的示例:
1。var jsonObj={person1:{name:"jack",age:"12"},
person2:{name:"kate",age:"23"},
person3:{name:"jim",age:"14"}
};
调用JSON对象的属性,
1)jsonObj.person1.name
2)jsonObj["person1"].name
可以通过for循环的方式调用JSON对象中的每一个子对象
for(var p in jsonStr){
//alert(typeof p); alert(p);//返回的是string
str+=jsonObj[p].name+","+jsonObj[p].age+"<br>";
}

2。var jsonObj2={persons:[{name:"jordan",sex:"m",age:"40"},
{name:"bryant",sex:"m",age:"28"},
{name:"McGrady",sex:"m",age:"27"}
]};

调用JSON对象的属性,
1)jsonObj2.persons[0].name;
2)for循环调用方法,
var persons=jsonObj2.persons;//返回的值是一个数组object
for(var i=0;i<persons.length;i++){
cur_person=persons[i];
str+=cur_person.name+"'sex is "+cur_person.sex+" and age is "+cur_person.age+"<br>";
}
向jsonObj2的persons数组中插入,删除,更新 数据,
此处,可以利用javascript的Array对象的方法进行操作,如
var person={name:"yaoMing",sex:"m",age:"26"};
jsonObj2.persons.push(person);//数组最后加一条记录
jsonObj2.persons.pop();//删除最后一项
jsonObj2.persons.shift();//删除第一项
jsonObj2.persons.unshift(person);//数组最前面加一条记录
只要适合Javascript的方法都是可以用在JSON对象的数组中的!所以还有另外的方法splice( )进行crud操作!
//删除
jsonObj2.persons.splice(0,1);//开始位置,删除个数
//替换不删除
var self={name:"tom",sex:"m",age:"24"};
var brother={name:"Mike",sex:"m",age:"29"};
jsonObj2.persons.splice(1,0,self,brother);//开始位置,删除个数,插入对象
//替换并删除
var self={name:"tom",sex:"m",age:"24"};
var brother={name:"Mike",sex:"m",age:"29"};
jsonObj2.persons.splice(0,1,self,brother);//开始位置,删除个数,插入对象

二,知道了在Javascript中JSON的基本操作,但这还不能与后台进行交互,在着之前还需要把它转化为 String!

方法有两个,1)引入一个方法 :

function obj2str(o){
var r = [];
if(typeof o =="string") return "\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\"";
if(typeof o == "object"){
if(!o.sort){
r[0]="{"
for(var i in o){
r[r.length]=i;
r[r.length]=":";
r[r.length]=obj2str(o[i]);
r[r.length]=",";
}
if(!!document.all && !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/.test(o.toString)){
r[r.length]="toString:"+o.toString.toString();
r[r.length]=",";
}
r[r.length-1]="}"
}else{
r[0]="["
for(var i =0;i<o.length;i++){
r[r.length]=obj2str(o[i]);
r[r.length]=",";
}
r[r.length-1]="]"
}
return r.join("");
}
return o.toString();
}

网上找的,还蛮好用地!!在此对原创者表示感谢啦!!

2)JSON官方网站提供的一个开源的JSON解析器和字符串转换 器,json.js

到此为止的话,就可以顺利的将客户端这边的记录传到后台!!

下面还有 一个服务器端如何处理的过程,下会接着进行总结!!

在Ajax应用程序中实现数据交换

http://www.qqread.com/oracle/2006/08/e699190052_2.html


Dom4j 学习笔记http://heavyz.sourceforge.net/homepage/homepage_zh/comp/notes/dom4j.html

XML中利用DOM4J进行完整的读取、添加、删除、修改方便之极
http://www.webdn.com/web_file/xml/07042657.asp

使用dom4j解析XML例子
http://blog.csdn.net/cuiweibing/archive/2007/08/14/1743235.aspx

Ajax(Asynchronous JavaScript and XML)说到底就是一种浏览器异步读取服务器上XML内容的技术。现在的技术凡是跟XML扯上关系,再加上个概念做幌子,就像金装了一样,拽得不行。门外 的人看得很是热闹,门里的人摇摇头不外如是。XML呢,跨平台的新潮语言?其实XML=TXT。


XML只是符合很多规范的文本。它本身什么都不是,只是保 存字符的文件。而浏览器异步读取的只是服务器上的文本内容,所以在Ajax开发时完全不必拘泥于XML。[版权所有,www.jialing.net]

  JSON的来历

  XML 的作用是格式化数据内容。如果我们不用XML还有什么更好的方法吗?这个答案是JSON。介绍JSON之前我先介绍一下JavaScript这门脚本语 言。脚本语言自身有动态执行的天赋。即我们可以把想要执行的语句放在字符串里,通过eval()这个动态执行函数来执行。字符串里的内容会像我们写的脚本 一样被执行。

  示例1:

<HTML>
<HEAD>
 <TITLE>eval example 1</TITLE>
</HEAD>
<BODY>
 <script>
  str = "alert('hello')";
  eval(str);
 </script>
</BODY>
</HTML>

  打开页面会弹出hello窗口。

  我们可以在字符串中放任何脚本语句,包括声明语句:

<HTML>
<HEAD>
<TITLE>eval example 2</TITLE>
</HEAD>
<BODY>
<script>
 define = "{name:'Michael',email:'17bity@gmail.com'}";
 eval("data = "+define);
 alert("name:"+data.name);
 alert("email:"+data.email);
</script>
</BODY>
</HTML>

  如果我们在后台异步传来的文本是JavaScript的声明语句,那么不是一条eval方法就能解析了?对于解析复杂的XML,这样的效率是多么大的提高啊!

  现在就来告诉你什么是JSON:JavaScript Object Notation。我更愿意把它翻译为JavaScript对象声明。比如要从后台载入一些通讯录的信息,如果写成XML,如下:

<contact>
 <friend>
  <name>Michael</name>
  <email>17bity@gmail.com</email>
  <homepage>http://www.jialing.net</homepage>
 </friend>
 <friend>
  <name>John</name>
  <email>john@gmail.com</email>
  <homepage>http://www.john.com</homepage>
 </friend>
 <friend>
  <name>Peggy</name>
  <email>peggy@gmail.com</email>
  <homepage>http://www.peggy.com</homepage>
 </friend>
</contact>

  而写成JSON呢:

[
{
 name:"Michael",
 email:"17bity@gmail.com",
 homepage:"http://www.jialing.net"
},
{
 name:"John",
 email:"john@gmail.com",
 homepage:"http://www.jobn.com"
},
{
 name:"Peggy",
 email:"peggy@gmail.com",
 homepage:"http://www.peggy.com"
}
]


  简单的不只是表达上,最重要的是可以丢弃让人晕头转向的DOM解析了。因为只要符合JavaScript的声明规范,JavaScrip会自动帮你解 析好 的。Ajax中使用JSON的基本方法是前台载入后台声明JavaScript对象的字符串,用eval方法来将它转为实际的对象,最后通过 DHTML更新页面信息。

JSON的格式

  JSON的基本格式如下,图片来自json.org:

  ·对象是属性、值对的集合。一个对象的开始于"{",结束于"}"。每一个属性名和值间用":"提示,属性间用","分隔。


  ·数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。


  ·值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。


  ·字符串的定义和C或Java基本一致。


  ·数字的定义也和C或Java基本一致。

Ajax:拥抱JSON,让XML走开(图五)
JSON VS XML

  ·可读性

  JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。

  ·可扩展性


  XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。

  ·编码难度

  XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。

  ·解码难度

  XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。

  ·流行度

  XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous JavaScript and JSON)了。

 Blogger是Google提供的免费博客服务,提供中文界面,是一个很成熟的中文博客发布平台。

  Blogger一个突出的 特点就是简洁但功能强大,没有多余而花哨的功能,必要的功能一个都不差。Bloger自由性最大的地方在于其模板可以自定义,也就是说你可以修改模板里的 任何内容,包括Google的广告,这给那些懂Html和CSS的Blogger提供了很大的自由度。Blogger默认把用户的网志发布到免费提供的 Blogspot.com主机上。可惜的是Blogspot.com从中国是无法访问。好在Blogger.com提供了一种很独特的服务,可以将博客的 静态页面通过FTP发布到用户选择的服务器上。

  通过FTP发布到其他主机

  用户在Blogger.com上的默认Blog地址显然无法从国内访问,但是如果你有一个虚拟主机空间,或者其他支持FTP的空间,那么Blogger.com可以将这个地址上的日志文件全部发布到你的虚拟主机空间上去。

  具体的方法是:登陆你的Blogger帐号,进入控制面板,更改设置,在“发布”选项卡中点击FTP的超级链接,然后录入FTP服务器地址,FTP用户名和密码。点保存设置后,就可以发布了,这时Blogger.com会将你的整个站发布到你指定的主机上。

  至于这个FTP服务器,我推荐一个国内GFans提供的免费Blogger Spaces空间,支持FTP发布,最重要的是支持域名绑定,其服务器在广州,速度很快,希望大家不要滥用其服务。

  通过电子邮件发布日志

  在Blogger中写日志麻烦?告诉你一个技巧,你可以不登录Blogger网站,只要发送一封电子邮件就可以发表文章了。

   具体的方法是:登陆你的Blogger帐号,进入控制面板,更改设置,在“电子邮件”中,在Mail-to-Blogger地址中可以自定义一个邮件地 址,发送到此地址的邮件会自动张贴,BlogSend地址是另外一个电子邮件地址,只要一发布文章,系统会将其邮寄文章到此地址。

  这里 再介绍一个小技巧,就是在更新Blogger的同时也更新MSN Space。因为MSN Space也是支持邮件发布的,因此将Blogger发布后发送邮件的BlogSend地址修改为MSN Space的发布邮件地址,这样在Blogger上发布一篇文章后,系统就会自动将文章内容发送到Msn Spaces里,这样就同时更新了两个博客。

   有一点值得注意的是,Blogger默认的编码是UTF-8编码,因此发送邮件的时候要将邮件编码设置为UTF-8的格式,建议登陆GMail发送邮 件。一来GMail默认就是UTF-8格式的,编码全兼容,二来GMail支持自动保存功能,不怕电脑死机后丢失文章,三来GMail还可以自动备份发出 去的文章,以免文章丢失。

  使用第三方软件发布文章

  Zoundry是一个第三方的日志发布软件,可以做到不用登陆Blogger即可发布日志,使用它来编辑和发布,速度和效率都非常理想。

  添加Google Adsense广告

  Google Blogger用户可以很快捷方便地申请加入Google Adsense广告服务。Google本身也推荐博客们使用Blogger的广告来为自己和Google赚钱。

  Google工具栏的应用

  Google工具栏有一个按钮是“发送到Blogger”,可以快速将当前网页发送到自己的Blogger空间上。

  Google Picasa的应用

  Picasa是Google的图像管理软件,在Picasa中点图片,再点“Blog This”,可以将选定图片发送到自己的Blogger空间上。

  Blogger的申请地址是: http://www.blogger.com

参照本论坛的信息加BLOG文章整理出来的。。呵呵。对有的人有帮助的。。我也是基本按照这思路搞的。。。

安装后的配置

一、配置 ADSL 拨号上网

sudo pppoeconf

然后按照提示一步一步操作即可。

注意它会提示你是不是开机自动连接上网,选择是,每次开机就会自动拨号。

二、修改为国内源

我这里使用 cn99 的源比较快,使用哪个根据自己实际情况决定。

我这里只列出了使用得比较多的 lupaworld 源(http://mirror.lupaworld.com/)和 cn99 源(http://ubuntu.cn99.com/)。

update: 新增一个 http://mirror.rootguide.org 上海电信源,速度也非常不错

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

sudo gedit /etc/apt/sources.list

上海电信

deb http://mirror.rootguide.org/ubuntu/ feisty main restricted universe multiverse

deb-src http://mirror.rootguide.org/ubuntu/ feisty main restricted universe multiverse

deb http://mirror.rootguide.org/ubuntu/ feisty-updates main restricted universe multiverse

deb-src http://mirror.rootguide.org/ubuntu/ feisty-updates main restricted universe multiverse

deb http://mirror.rootguide.org/ubuntu/ feisty-backports main restricted universe multiverse

deb-src http://mirror.rootguide.org/ubuntu/ feisty-backports main restricted universe multiverse

deb http://mirror.rootguide.org/ubuntu/ feisty-security main restricted universe multiverse

deb-src http://mirror.rootguide.org/ubuntu/ feisty-security main restricted universe multiverse

deb http://mirror.rootguide.org/ubuntu/ feisty-proposed main multiverse restricted universe

deb-src http://mirror.rootguide.org/ubuntu/ feisty-proposed main restricted universe multiverse

Mirror.lupaworld.com

deb http://mirror.lupaworld.com/ubuntu feisty main restricted universe multiverse

deb http://mirror.lupaworld.com/ubuntu feisty-security main restricted universe multiverse

deb http://mirror.lupaworld.com/ubuntu feisty-updates main restricted universe multiverse

deb http://mirror.lupaworld.com/ubuntu feisty-backports main restricted universe multiverse

deb-src http://mirror.lupaworld.com/ubuntu feisty main restricted universe multiverse

deb-src http://mirror.lupaworld.com/ubuntu feisty-security main restricted universe multiverse

deb-src http://mirror.lupaworld.com/ubuntu feisty-updates main restricted universe multiverse

deb-src http://mirror.lupaworld.com/ubuntu feisty-backports main restricted universe multiverse

cn99.com

deb http://ubuntu.cn99.com/ubuntu/ feisty main restricted universe multiverse

deb http://ubuntu.cn99.com/ubuntu/ feisty-security main restricted universe multiverse

deb http://ubuntu.cn99.com/ubuntu/ feisty-updates main restricted universe multiverse

deb http://ubuntu.cn99.com/ubuntu/ feisty-proposed main restricted universe multiverse

deb http://ubuntu.cn99.com/ubuntu/ feisty-backports main restricted universe multiverse

deb-src http://ubuntu.cn99.com/ubuntu/ feisty main restricted universe multiverse

deb-src http://ubuntu.cn99.com/ubuntu/ feisty-security main restricted universe multiverse

deb-src http://ubuntu.cn99.com/ubuntu/ feisty-updates main restricted universe multiverse

deb-src http://ubuntu.cn99.com/ubuntu/ feisty-proposed main restricted universe multiverse

deb-src http://ubuntu.cn99.com/ubuntu/ feisty-backports main restricted universe multiverse

然后

sudo apt-get update

sudo apt-get dist-upgrade

三、系统设置

1、安装中文支持

“System” - “系统管理” - “语言支持”,在对话框的下拉列表中勾选“English”和“Chinese”,默认语言选择“Chinese”,这样就能得到中文界面了。点击“确 定”或“应用”系统就开始自动下载语言支持的包,下次注销后重新登录,系统语言就变成中文了,输入法也能用了。到时,记得稍微调整一下Scim的设置,因 为Feisty在Scim默认加入了n多输入法,其中绝大多数都可以去掉。

2、调整桌面

gconf-editor

到/apps/nautilus/desktop/分支下,去掉volumes_visible前面的复选框,勾上trash_icon_visible,home_icon_visible,computer_icon_visible前面的复选框。

3、安装NTFS读写支持

sudo apt-get install ntfs-config

点击“应用程序” - “系统工具” - “NTFS写入支持配置程序”

输入密码,选中对内部设备的读写支持,和外部设备的读写支持,系统会自动扫描你硬盘上的NTFS分区,并重新挂载,这样,你的NTFS分区就能在Feisty下完美读写了!

4、在右键菜单中加入打开终端

sudo apt-get install nautilus-open-terminal

5、系统服务管理软件

sudo apt-get install bum

6、安装vim,以让它成为我们熟悉的vim,而不是vi

sudo apt-get install vim-full

7、安装字典

sudo gedit /etc/apt/sources.list

添加源

deb http://ftp.sjtu.edu.cn/ubuntu-cn/ edgy main multiverse restricted universe #也就是edgy的ubuntu-cn的源,你可以添加其他中文镜像的ubuntu-cn的源

保存退出

sudo apt-get install stardict stardict-common

sudo apt-get install stardict-cdict-gb stardict-cedict-gb stardict-hanzim stardict-langdao-ce-gb stardict-langdao-ec-gb stardict-oxford-gb stardict-xdict-ce-gb stardict-xdict-ec-gb

3、驱动安装与beryl

相信使用nVIDIA显卡且使用Feisty的朋友都能用到。

nVIIDA已经释出了他们9xxx系列驱动。这将允许Compiz/Beryl直接运行在X Server(Xorg 7.1)而不必选择Aiglx或Xgl。

注意:首先你需要移除所有已存在的Aiglx/Xgl。

准备你的系统:

你需要输入以下指令以确保系统是最新的:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

[1]在Ubuntu Feisty安装最新的nVIDIA驱动程序

分别在终端下输入

sudo apt-get install nvidia-glx

sudo nvidia-xconfig --add-argb-glx-visuals --composite

安装好后,按ctrl+alt+backspace,重启X并登出

[2]验证你的显卡的3D加速是不是已经打开

glxinfo|grep "direct rendering"

如果你看到

direct rendering: Yes

恭喜你,你可以进行下面的配置,在Ubuntu Feisty安装Beryl了

[3]

加入源列表

你需要编辑:/etc/apt/sources.list

sudo vi /etc/apt/sources.list

加入下面的几行(i386&64位都是)

deb http://ubuntu.beryl-project.org feisty main

保存文件并退出

在终端下输入

wget http://ubuntu.beryl-project.org/root@lupine.me.uk.gpg -O- | sudo apt-key add -

接下来再输入升级

sudo apt-get update

sudo apt-get dist-upgrade

[4]安装beryl

sudo apt-get install beryl emerald-themes

sudo apt-get install beryl-manager

安装好后,在终端下输入或者在Alt+F2的运行框里输入

beryl-manager

就可以了,或者你可以加入会话的自动启动程序里

4、安装Java环境

建议安装JDK,反正也不比JRE多用很多空间

sudo apt-get install sun-java6-jdk

安装浏览器Java插件

sudo apt-get install sun-java6-plugin

四、媒体解决方案

能够浏览一下网站、写写文章、看看电影、听听歌、搞搞图片、打打小游戏,还差一个最重要的步骤,就是安装媒体播放软件和相应的解码器。

在 Linux 上用得最多也最受好评的播放器应该是 Mplayer ,但是在 gnome 2.18 中随之升级的 Totem 播放器已经很不错了,除了自定义不是很强外,可操作性很好,修复了很多 Bug ,还增加了一些功能,好像以前不能双击画面进入全屏。Totem 从 2.17.5 开始默认使用 Gstreamer 作为后端解码方案,但我还是推荐使用 xine。所以我的解决方案是,一般普通的播放任务使用 Totem 电影播放机,如果遇到不能播放的情况或者看大碟时就选用 Mplayer ,播放音乐使用 Rhythmbox。

1、安装软件和相应解码器

sudo apt-get install mplayer mozilla-mplayer totem-xine libxine-extracodecs ffmpeg lame faad sox mjpegtools

sudo apt-get install libxine-main1

sudo apt-tet install w32codecs

如果w32codecs没源的话,那么自己下面地址下载后手动安装

http://www.debian-multimedia.org/pool/main/w/w32codecs/

2、Mplayer 的中文字幕设置方法

1) 在 Preferences-Font 里面点击 ”Browse” 选择一个中文字体,Encodeing 选择 Unicode。

2) 在 Preferences-Subtitle&OSD 里面的 Encoding 选择:

Simplified Chinese Charset(cp936)

3) 在 Preferences-Font “Text scale” 这里调整字幕大小(我调整为 3.8 )。

如果播放时提示错误,设置一下:

Preferences-Video 选择 “xv X11/Xv”

Preferences-Codecs&demuxer 选择 “FFmpeg/libavcodec audio decoders”

3、Totem 播放 rmvb 没有声音,这里给出了解决方法:

编辑 ~/.xine/catalog.cache 文件:

sudo gedit ~/.xine/catalog.cache

找到

[/usr/lib/xine/plugins/1.1.4/xineplug_decode_real_audio.so]

把 decoder_priority 后面的数字修改为 10

4、使用 Firefox 在线播放解决办法

1) 内嵌播放,可以安装 MediaWrap 这个扩展。下载地址:http://addons.mozine.cn/firefox/116/

2) 如果喜欢调用外部播放器播放,安装 MediaPlayerConnectivity 。下载地址:http://addons.mozine.cn/firefox/23/

5、检查软件依赖的方法:(以mplayer为例)

sudo apt-cache depends mplayer

五、系统初步美化

sudo apt-get install msttcorefonts

1、安装文泉驿字体

sudo apt-get install xfonts-wqy

2、下载 STHeiti 字体:http://wyx.nbtvu.net.cn/jmm/Computin...mputing.htm#17

[1]解压后复制到 /usr/share/fonts/truetype 下面

[2]设置 STHeiti 为首选中文字体

sudo gedit /etc/fonts/language-selector.conf

找到下面内容所在行(共有三处):

Bitstream Vera ....

在他们下面一行添加:

STHeiti

刷新字体缓存:

sudo fc-cache -f -v

[3]设置英文字体和渲染方式

喜欢MAC类型的:

“系统” - “首选项” - “字体”:

在“字体渲染”中,选择“细节”,“平滑”设置为“灰度”“微调”设置为“无”。

打开firefox,设置firefox字体(编辑 - 首选项 - 内容 - 字体和颜色部分,选择“高级”):

语言编码:简体中文

比例字体:无衬线字体 大小:16

衬线字体:DejaVu Serif 或 Bitstream Vesa Serif

无衬线字体:DejaVu Sans 或 Bitstream Vesa Sans

等宽字体:DejaVu Sans Mono或 Bitstream Vesa Sans Mono 大小:16

屏幕解析度:96dpi 最小字体:11

(选中)允许页面选择显示字体而无需使用上面的配置

默认字符编码:UTF-8

OK,注销后登录(或重启),你就会发现字体已经变成黑体了。

===========================================

喜欢轮廓分明的点阵字体的:

系统 -首选项 - 字体:

设置所有非等宽字体为WenQuanYi Bitmap Song 10号,其中窗口标题字体设置为粗体。

等宽字体设置为Courier 10 Pitch,因为Courier 10 Pitch比Courier New字体更清楚。

为了避免英文字体变得毛躁,所以还是保持英文字体的AA是打开的,所以字体渲染部分设置保持默认。

Firefox中,可以这样设置:

语言编码:简体中文

比例字体:无衬线字体 大小:16

衬线字体:Times New Roman

无衬线字体:WenQuanYi Bitmap Song

等宽字体:Courier 10 Pitch 大小:16

屏幕解析度:96dpi 最小字体:11

(选中)允许页面选择显示字体而无需使用上面的配置

默认字符编码:UTF-8

============================================

OK,注销后登录(或重启),你就会发现字体已经变成文泉驿字体了。现在文泉驿字体的中英文都很好看。

如果有问题,检查字体是否可读,如果不可读

设置 STHeiti.ttf 可读权限:

sudo chmod +r /usr/share/fonts/truetype/stheiti.ttf

=================还可以参考这差不多的=================

如需要使用黑体或其他字体,可以参考 Ubuntu 黑体解决方案。http://www.osxcn.com/ubuntu/edgy-stheiti.html

打开 “系统-首选项-字体” 面板:

在字体选项里选择一款英文字体,如:Lucida Grande 或者 Bitstream Vera Sans。

在 “字体渲染” 选项中选择 “次象素平滑” 或者 “最佳形状” 。

update (07/4/21): 也可以参照 “更好的华文黑体渲染效果” 那样设置。http://www.osxcn.com/ubuntu/stheiti-drawing.html

注意:如果发现在 Firefox 里英文显示不正常,需要在 Firefox 的 “选项 –> 内容 –> 字体和颜色” 中选择一款英文字体,如:Lucida Grande 或者 Bitstream Vera Sans。

============================================

五、其他软件安装

0、安装LumaQQ

cd;mkdir tmp;cd tmp

wget -c http://download.ubuntu.org.cn/softwa..._no_jre.tar.gz

sudo tar zxvf lumaqq_2005-linux_gtk2_x86_no_jre.tar.gz -C /opt/

wget -c http://download.ubuntu.org.cn/softwa...2.02.15.00.zip

sudo unzip -o lumaqq_2005_patch_2006.02.02.15.00.zip -d /opt/LumaQQ/lib

sudo chown -R root:root /opt/LumaQQ/

sudo chmod -R 755 /opt/LumaQQ/

sudo gedit /usr/share/applications/LumaQQ.desktop

添加如下代码

[Desktop Entry]

Name=LumaQQ

Comment=QQ Client

Exec=/opt/LumaQQ/lumaqq

Icon=/opt/LumaQQ/QQ.png

Terminal=false

Type=Application

Categories=Application;Network;

你可以在“应用程序” - “Internet” - “LumaQQ”打开LumaQQ

1、安装aMule

sudo apt-get install amule amule-utils

然后在Firefox里面关联ed2k链接

在地址栏输入about:config

新建“布尔”

名称为:network.protocol-handler.external.ed2k

值为:true

新建“字符串”

名称为:network.protocol-handler.app.ed2k

值为:/usr/bin/ed2k

ED2K服务器列表

http://www.emule.org.cn/server.met(VeryCD eMule)

http://my.opera.com/youknowwho/homes/misc/server.met

http://corpo.free.fr/server.met

KAD nodes.dat

http://www.emule-inside.net/nodes.dat

http://renololo1.free.fr/e/nodes.dat

2、安装编译工具

如果你有编译源码的需要建议安装上 gcc,g++,make 等。

sudo apt-get install build-essential

3、Web 服务器安装

Ubuntu 7.04 桌面服务器配置:http://www.osxcn.com/ubuntu/ubuntu-f...wn-server.html

4、安装 Pidgin

Gaim 已经改名为 Pidgin,(http://www.google.cn/search?complete...idgin&meta=)

有兴趣的可以试试改名后的 Pidgin 2.0.0 beta7。下载地址:http://vicox.net/ubuntu/pidgin_2.0.0...cox-1_i386.deb

5、模仿MAC:http://www.osxcn.com/ubuntu/linux-de...ating-osx.html

6、图形化的 Grub 管理器:http://www.osxcn.com/ubuntu/grub-startup-manager.html

最后附上我的 Ubuntu 7.04 软件列表:

电影播放 - Mplayer + w32codecs / Totem (系统自带) + xine

音乐播放 - Rhythmbox (系统自带) + gstreamer

IM聊天 - Pidgin 2.0.0 beta7

浏览器 - Firefox 2 (系统自带) / Konqueror / Opera 9.2

图形编辑 - GIMP (系统自带)

网页制作 - gedit (系统自带)

FTP工具 - gFTP

下载工具 - d4x

P2P工具 - aMule

BT - azureus

sudo apt-get install gftp d4x amule azureus

办公软件 - OpenOffice 2.2 (系统自带)

刻录软件 - GnomeBaker

WIN模拟 - wine + easywine

输入法 - SCIM (系统自带)

解压工具 - unrar sudo apt-get install rar unrar

in mysql5,在没有设置编码时,先运行:
SET NAMES 'GBK'
再执行其他语句就可以了。

  • 自动定时开机的实现

  首先在启动计算机时,按“Delete”键进入BIOS界面。在BIOS设置主界面中选择“Power Management Setup”菜单,进入电源管理窗口。默认情况下,“Automatic Power Up(定时开机,有些机器选项为Resume By Alarm)”选项是关闭的,将光标移到该项,用PageUpPageDown翻页键将“Disabled”改为“Enabled”,而后在“Date (of Month) Alarm”和“Time (hh:mm:ss) Alarm”中分别设定开机的日期和时间。

  如果“Date”设为0,则默认为每天定时开机。设置好后按“ESC”键回到BIOS设置主界面,点击“Save Exit Setup”,按“Y”键保存CMOS设置退出,接着机器会重新启动,这时便大功告成了。当然,值得注意的是定时开机需要您的主板支持才行,不过现在大多数主板都有这项功能。另外,不同的主板在设置上会不尽相同,不过都大同小异。

  • 定时关机的实现

在我们最长用的系统中,存在这很多的命令在这这命令中是分为两部分的.
一部分是外部命令,另一部分则是内部命令
在系统下我们可以在运行输入 cmd 可以调出带命令提示符窗口在这里我们就

可以输入命令了.首先先给大家介绍一个外部命令远程关机的命令.

  首先为了让大家有一个明确的概念先说一下什么是外部命令与内部命令,

外部命令则是系统继承并非DOS下命令.而内部命令则是DOS程序自身的命令了.
  
  是如开启远程关机呢?操作方法:
开始菜单->运行->输入 cmd  这个命令则回出现带命令提示符窗口

然后在此输入: shutdown ?  这样的命令则是查看所有命令在这里你可以

看到的就是这里面包含的所有命令参数.

-i 显示 GUI 界面,必须是第一个选项
-l 注销(不能与选项 -m 一起使用)
-s 关闭此计算机
-r 关闭并重启动此计算机
-a 放弃系统关机
-m file://computername/ 远程计算机关机/重启动/放弃
-t xx 设置关闭的超时为 xx 秒
-c "comment" 关闭注释(最大 127 个字符)
-f 强制运行的应用程序关闭而没有警告
-d [u][p]:xx:yy 关闭原因代码
u 是用户代码
p 是一个计划的关闭代码
xx 是一个主要原因代码(小于 256 的正整数)
yy 是一个次要原因代码(小于 65536 的正整数)

  在这里你也可以做到给自己关机也可以给其他用户关机,在这里面有

一个界面模式的方法也是输入: shutdown -i  这个命令将会出现界面

模式方便与操作了!

  在这里你可以输入对方的IP地址与关机原因和时间,然后确认,这时

对方的计算机将会执行你所发送的命令 是关机 是注销 还是重新启动

都可以操作的.

  这个命令一般都是为管理员方便管理所应用程序,在LAN中是可以使用的.

这个关机的模式和冲击波病毒有点类似,所以假如在遇到一切强制关机的话,

你可以是使用这个命令试验一下可以解决吗?
命令是:  shutdown -a 这个是取消命令!

例如,shutdown -s -t 60 -m file://192.168.2.1/ 是一分钟后关闭2.1这台机器

shutdown -a -m file://192.168.2.1/ 取消命令

1.CSS字体属性简写规则
一般用CSS设定字体属性是这样做的:
font-weight:bold;
font-style:italic;
font-varient:small-caps;
font-size:1em;
line-height:1.5em;
font-family:verdana,sans-serif;
但也可以把它们全部写到一行上去:
font: bold italic small-caps 1em/1.5em verdana,sans-serif;
真不错!只有一点要提醒的:这种简写方法只有在同时指定font-size和font-family属性时才起作用。而且,如果你没有设定font-weight, font-style, 以及 font-varient ,他们会使用缺省值,这点要记上。

2. 同时使用两个类
一般只能给一个元素设定一个类(Class),但这并不意味着不能用两个。事实上,你可以这样:

...


同时给P元素两个类,中间用空格格开,这样所有text和side两个类的属性都会加到P元素上来。如果它们两个类中的属性有冲突的话,后设置的起作用,即在CSS文件中放在后面的类的属性起作用。
补充:对于一个ID,不能这样写

...

也不能这样写

3. CSS border的缺省值
通常可以设定边界的颜色,宽度和风格,如:
border: 3px solid #000
这位把边界显示成3像素宽,黑色,实线。但实际上这里只需要指定风格即可。
如果只指定了风格,其他属性就会使用缺省值。一般地,Border的宽度缺省是medium,一般等于3到4个像素;缺省的颜色是其中文字的颜色。如果这个值正好合适的话,就不用设那么多了。

4. CSS用于文档打印
许多网站上都有一个针对打印的版本,但实际上这并不需要,因为可以用CSS来设定打印风格。
也就是说,可以为页面指定两个CSS文件,一个用于屏幕显示,一个用于打印:
《link type='text/css" rel="stylesheet" href="stylesheet.css" media="screen"> 《link type="text/css" rel="stylesheet" href="printstyle.css" media="print">
第1行就是显示,第2行是打印,注意其中的media属性。
但应该在打印 CSS中写什么东西呢?你可以按设计普通CSS的方法来设定它。设计的同时就可以把这个CSS设成显示CSS来检查它的效果。也许你会使用 display: none 这个命令来关掉一些装饰图片,再关掉一些导航按钮。要想了解更多,可以看“打印差异”这一篇。

5. 图片替换技巧
一般都建议用标准的HTML来显示文字,而不要使用图片,这样不但快,也更具可读性。但如果你想用一些特殊字体时,就只能用图片了。
比如你想整个卖东西的图标,你就用了这个图片:

Buy widgets


这当然可以,但对搜索引擎来说,和正常文字相比,它们对alt里面的替换文字几乎没有兴趣这是因为许多设计者在这里放许多关键词来骗搜索引擎。所以方法应该是这样的:

Buy widgets


但这样就没有特殊字体了。要想达到同样效果,可以这样设计CSS:
h1 { background: url(widget-image.gif) no-repeat; height: image height text-indent: -2000px }
注意把image height换成真的图片的高度。这里,图片会当作背景显示出来,而真正的文字由于设定了-2000像素这个缩进,它们会出现在屏幕左边2000点的地方,就看不见了。但这对于关闭图片的人来说,可能全部看不到了,这点要注意。

6. CSS box模型的另一种调整技巧
这个Box模型的调整主要是针对IE6之前的IE浏览器的,它们把边界宽度和空白都算在元素宽度上。比如:
#box { width: 100px; border: 5px; padding: 20px }
这样调用它:
...

这时盒子的全宽应该是150点,这在除IE6之前的IE浏览器之外的所有浏览器上都是正确的。但在IE5这样的浏览器上,它的全宽仍是100点。可以用以前人发明的Box调整方法来处理这种差异。
但用CSS也可以达到同样的目的,让它们显示效果一致。
#box { width: 150px } #box div { border: 5px; padding: 20px }
这样调用:
...

这样,不管什么浏览器,宽度都是150点了。

7. 块元素居中对齐

如果想做个固定宽度的网页并且想让网页水平居中的话,通常是这样:
#content { width: 700px; margin: 0 auto }
你会使用《div id="content"> 来围上所有元素。这很简单,但不够好,IE6之前版本会显示不出这种效果。改CSS如下:
body { text-align: center } #content { text-align: left; width: 700px; margin: 0 auto }
这会把网页内容都居中,所以在Content中又加入了
text-align: left 。

8. 用CSS来处理垂直对齐
垂直对齐用表格可以很方便地实现,设定表格单元 vertical-align: middle 就可以了。但对CSS来说这没用。如果你想设定一个导航条是2em高,而想让导航文字垂直居中的话,设定这个属性是没用的。
CSS方法是什么呢?对了,把这些文字的行高设为 2em:line-height: 2em ,这就可以了。

9. CSS在容器内定位
CSS的一个好处是可以把一个元素任意定位,在一个容器内也可以。比如对这个容器:
#container { position: relative }
这样容器内所有的元素都会相对定位,可以这样用:


如果想定位到距左30点,距上5点,可以这样:
#navigation { position: absolute; left: 30px; top: 5px }
当然,你还可以这样:
margin: 5px 0 0 30px
注意4个数字的顺序是:上、右、下、左。当然,有时候定位的方法而不是边距的方法更好些。

10. 直通到屏幕底部的背景色
在垂直方向是进行控制是CSS所不能的。如果你想让导航栏和内容栏一样直通到页面底部,用表格是很方便的,但如果只用这样的CSS:
#navigation { background: blue; width: 150px }
较短的导航条是不会直通到底部的,半路内容结束时它就结束了。该怎么办呢?
不幸的是,只能采用欺骗的手段了,给这较短的一栏加上个背景图,宽度和栏宽一样,并让它的颜色和设定的背景色一样。
body { background: url(blue-image.gif) 0 0 repeat-y }
此时不能用em做单位,因为那样的话,一旦读者改变了字体大小,这个花招就会露馅,只能使用px。

1问:Hibernate初始化时总是报错:java.lang.NoClassDefFoundError

Hibernate初始化时出现出错代码:

java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException

答:这是新手常见问题。是因为使用默认设置时,Hibernate文档里指出的Hibernate库不完整,缺少ehcache.jar(用于支持Ehcache的相关文件)。配置中加入以上文件,就可以避免初始化时出现java.lang.NoClassDefFoundError:net/sf/ehcache/CacheException异常。

2问:Hibernate报错:"Not binding factory to JNDI, no JNDI name configured"

运行下列程序:

public static void main(String[] args) throws Exception {

Configuration conf = new Configuration().addClass(Person.class);

......

出现错误码:

12:15:34,250 INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI, no JNDI name configured

java.lang.UnsupportedOperationException: The user must supply a JDBC connection

at net.sf.Hibernate.connection.UserSuppliedConnectionProvider.getConnection (UserSuppliedConnectionProvider.java:32)

at net.sf.Hibernate.impl.BatcherImpl.openConnection(BatcherImpl.java:289)

at net.sf.Hibernate.impl.SessionImpl.connect(SessionImpl.java:3361)

at net.sf.Hibernate.impl.SessionImpl.connection(SessionImpl.java:3321)

at net.sf.Hibernate.impl.BatcherImpl.prepareQueryStatement(BatcherImpl.java:66)

at net.sf.Hibernate.loader.Loader.prepareQueryStatement(Loader.java:779)

at net.sf.Hibernate.hql.QueryTranslator.iterate(QueryTranslator.java:864)

at net.sf.Hibernate.impl.SessionImpl.iterate(SessionImpl.java:1618)

at net.sf.Hibernate.impl.QueryImpl.iterate(QueryImpl.java:27)

at com.Hibernate.person.TestQueryPerson.main(TestQueryPerson.java:28)

Exception in thread "main"

答:修改main函数,为该程序指定配置文件即可。

public static void main(String[] args) throws Exception {

File file=new File("./Hibernate.cfg.xml");

Configuration conf = new Configuration().configure(file);

......

配置文件如下。









































3问:使用开发工具Elipse,运行时总报java.lang.NoClassDefFoundError: org/ Hibernate/Session异常

使用Elipse,所用包是hibernte 3,发现在Action中每次执行到:

session=HibernateSessionFactory.currentSession();

时,出现java.lang.NoClassDefFoundError: org/Hibernate/Session异常,如下:

java.lang.NoClassDefFoundError: org/Hibernate/Session

Hibernate3.Hibernate.ExcuteClass.search(ExcuteClass.java:17)

Hibernate3.Hibernate.ExcuteClass.test3(ExcuteClass.java:13)

Hibernate3.Hibernate.Svlt.doGet(Svlt.java:50)

javax.servlet.http.HttpServlet.service(HttpServlet.java:689)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)[/b]

答:这是初学者常见问题,原因是没有导入hibernate 3.jar包,虽然把hibernate 3.jar写入了Classpath,但部署的时候却没有拷贝到lib下面,可以手动拷贝进入。

4问:执行如下方法时,发生"No CurrentSessionContext configured"错误

执行如下方法时,发生"No CurrentSessionContext configured"错误:

Public static Session currentSession() {

try {

System.out.println("HibernateUtil.currentSession() - start");

return getSessionFactory().getCurrentSession();

} catch (HibernateException ex) {

System.out.println("HibernateUtil.currentSession() - failed due to " + ex);

throw ex;

}

}

答:这个错误是由配置文件引起。在集成Hibernate的环境下(例如Jboss),在session-factory段加入:

jta

在不集成Hibernate的环境下(例如使用JDBC的独立应用程序),在session-factory段加入:

thread

就可以解决这个问题。

5问:移植Jboss 4下配置Hibernate出错

在Tomcat 5下配置Hibernate成功,但移植到Jboss 4下出现了很多问题。已在deploy目录下放置了Hibernate-service.xml和Hibernate.cfg.xml文件,但启动服务器仍然报错 如下。

16:56:54,046 ERROR [URLDeploymentScanner] Incomplete Deployment listing:

Packages waiting for a deployer:

org.Jboss.deployment.DeploymentInfo@24bd343 { url=file:/C:/Downloads/temp/Jboss-

4.0.0/server/default/deploy/Hibernate.cfg.xml }

deployer: null

status: null

state: INIT_WAITING_DEPLOYER

watch: file:/C:/Downloads/temp/Jboss-4.0.0/server/default/deploy/Hibernate.cfg

.xml

altDD: null

lastDeployed: 1113987414046

lastModified: 1113987414046

mbeans:

Incompletely deployed packages:

org.Jboss.deployment.DeploymentInfo@24bd343 { url=file:/C:/Downloads/temp/Jboss-

4.0.0/server/default/deploy/Hibernate.cfg.xml }

deployer: null

status: null

state: INIT_WAITING_DEPLOYER

watch: file:/C:/Downloads/temp/Jboss-4.0.0/server/default/deploy/Hibernate.cfg

.xml

altDD: null

lastDeployed: 1113987414046

lastModified: 1113987414046

mbeans:

答:这是在Jboss中使用Hibernate的常见问题。在Jboss的某个war包中使用Hibernate应该将Hibernate.cfg.xml文件放置到%war_dir%WEB-INF/classes中,但是Hibernate的factory仍然可能会提示Hibernate.cfg.xml not found。此问题解决方法如下。

由于Jboss已经集成了Hibernate,在deploy\lib文件夹中hibernate2.jar的文件已经存在了一个jar包,所以实际的war中可能使用了shar的hibernate2.jar,由于ClassLoader只会在hibernate2.jar的同级及上级目录中寻找hibernate.cfg.xml,所以导致Hibernate并没有去查找%war_dir%WEB-INF/classes中的Hibernate.cfg.xml文件。删除deploy/lib下的hibernate2.jar或者使用绝对路径指定Hibernate.cfg.xml可以解决。

除非有其他需求,否则在Jboss下部署Hibernate与在Tomcat下是一样的,并不需要加其他配置文件。

6问:到底在哪里使用cascade="..."?

答:cascade属性并不是多对多关系一定要用的,用了它只是插入或删除对象时更方便一些,只要在cascade的源头上插入或删除,所有cascade的关系就会被自动插入或删除。其中unsaved-value是个很重要的属性,Hibernate是通过这个属性来判断这个对象应该“save”还是“update”,如果这个对象的id是unsaved-value,那说明这个对象不是persistence object,要save(insert);如果id是非unsaved-value,那说明这个对象是persistence object(数据库中已存在),只要update就行了。

7问:到底在哪里使用inverse="true"

答:inverse属性默认是false,就是说关系的两端都来维护关系。这个意思就是说,如有3个表:Student、Teacher和TeacherStudent,Student对象和Teacher对象是多对多关系,这个关系由TeacherStudent表来表现。

那么什么时候插入或删除TeacherStudent表中的记录呢。用Hibernate时,不会显式的对TeacherStudent表操作,对TeacherStudent的操作是Hibernate自动做的。Hibernate就是hbm文件中指定的是“谁”维护关系,在插入或删除时,就会触发对关系表的操作。前提是“谁”这个对象已经知道这个关系,就是说关系另一头的对象已经set或是add到“谁”这个对象里来。

前面说过inverse默认是false,就是关系的两端都维护关系,对其中任一个操作都会触发对表的操作。当在关系的一头,如Student中的bag或set中用了inverse="true"时,就代表关系是由另一端维护的(Teacher)。就是说当插入Student时,不会操作TeacherStudent表,即使Student已经知道了关系。只有Teacher插入或删除时才会触发对关系表的操作。所以,关系的两头都用inverse="true"是不对的,会导致任何操作都不触发对关系表的操作。当两端都是inverse="false"或是default值时,在代码中对关系显式的维护也是不对的,会导致在关系表中插入两次关系。

8问:Cascade和Inverse有什么区别?

答:可以这样理解,Cascade定义的是关系两端对象到对象的级联关系;而Inverse定义的是关系和对象的级联关系。

9问:在删除操作时报错:net.sf.Hibernate.ObjectDeletedException:deleted object would be re-saved by cascade (remove deleted object from associations)

答:要删除关系的一头时(如,要删除一个已经和Student对象有关联的Teacher对象),当tx.commit()时才会抛出这个异常。防止出现这个异常的方法如下。

在Student端不用cascade。

或是用cascade的话,就显式的删除对像中的关系。

在Teacher端要用cascade。

10问:出现net.sf.Hibernate.HibernateException: identifier of an instance of my. MyObject altered from N to N异常

答:这个异常不是多对多关系中常遇到的,但是这个异常的提示容易让人混淆。这是因为在Java对象中,id定义和hbm文件的不一样。如Java中用long,而hbm中用type= "integer"。

11问:为什么在向数据库中插入长字符串时候部分自动丢失

在向数据库中增加一条新的条目时,发现如果文字(有英文字母,也有汉字)数量特别大,超过1000个,则每次通过Hibernate,向一个String类型的字段中增加数据时,只有几百个字可以增加进去,其他的自动丢失了。

答:这是由于字段长度设置不合理造成的。可以根据字符串实际长度考虑使用Text、LongText、或者Blob等字段类型。不同数据库的字段类型稍有不同,可以参考相关手册。另外需要注意的是一个汉字占用两个字节长度。

12问:为什么采用Hibernate的批量删除方法来删除大批量的记录数据时速度特别慢

答:在使用Hibernate版本2.X时,不推荐采用Hibernate的批量删除方法来删除大量记录。原因是,Hibernate会执行1条查询语句,另外还有满足条件的多条删除语句,而不是一次执行一个删除语句,所以当待删除的数据很多时,会有很大的性能瓶颈。而对于Hibernate 3.0以上的版本,则不存这个问题。

13问:升级Hibernate 3后在导入hbm映射文件时为什么非常非常慢

原先在Hibernate 2中,程序的速度是非常快的。当环境顺利从Hibernate 2升级到Hibernate 3后,发布时在Tomcat的控制台中发现:Hibernate 3装载hbm映射文件时非常慢,差不多10秒钟才能装载一个hbm文件。

答:通过在Hibernate的源代码中设置断点,可以发现执行效率低下的代码在org.hibernate.cfg.Configuration文件中的第240行:

addInputStream( new FileInputStream( xmlFile ) );

而addInputStream函数中又包含:

org.dom4j.Document doc = xmlHelper.createSAXReader( "XML InputStream", errors, entityResolver ).read( new InputSource( xmlInputStream ) );

跟踪org.hibernate.util.XMLHelper中的函数createSAXReader可以得出结论,问题的症结出在这一条语句:

org.dom4j.Document doc = xmlHelper.createSAXReader()

可以判断这是在XML文件装载初始化时发生的错误,仔细检查XML文件,可以发现这是XML的第一行声明dtd的错误,因为以前使用的是Hibernate 2,所以hbm文件的dtd指向的是版本2,而升级Hibernate 3后,没有把老的hbm映射文件换成版本3。在更换为3版本后,此问题得到解决。

14问:为什么Hibernate 3中的HQL无法查询汉字

使用同样的代码和配置文件,在Hibernate 2上完全没有问题,在Hibernate 3中,使用如下HQL查询,无法得到正确的结果集:

String hql = "from story where title like '%汉字%'";

Query q = session.createQuery(hql);

但用下面的HQL查询,却可以得到正确结果集:

String hql = " from story where title like '%english%'";

Query q = session.createQuery(hql);

答:如果采用的是拼接HQL的方式,从Hibernate 2升级到Hibernate 3确实会出现汉字乱码问题。在控制台中可以看到,SQL的汉字部分变成了乱码:

[DEBUG] 2005-08-14 14:33:58 org.hibernate.SQL - "select story0_.content from story as story0_ where story0_.title like '%&–°é—&&?¨& ?'

在Hibernate中,查询时应尽量使用占位符的写法(如下),这样既可以避免乱码问题,又可以避免潜在的SQL注入攻击:

getHibernate().find("from story where title like ? ", "%汉字%")

15问:Hibernate 3中如何获得库表所有字段的名称

答:可以使用以下的程序获得。

Configuration conf = new Configuration();

conf.configure();

Iterator iter = conf.getTableMappings();



while ( iter.hasNext() ) {

Table table = ( Table ) iter.next();



System.out.println(table.getName());

Iterator ics = table.getColumnIterator();

while (ics.hasNext()){

Column col = (Column) ics.next();

System.out.println(col.getName());

}



16问:错误代码:ObjectNotFoundException: No row with the given identifier exists

答:在以下几种情况下,该错误可能会发生。

当试图使用session.load()方法装载一个未被代理的对象,或者访问一个超出范围的代理对象时。

当装载一个未被正确取得的映射时。

当未被外键约束的外键字段中含有非法值时。

检查装载使用的主键Id,并验证外键关系,以确定数据库中已经存在相应的约束关系。坚持“在一个Session中只处理一个事务”的原则。因为当在单一Session中使用多个事务时很容易犯错。尤其注意,在一个HibernateException已经抛出后不要再操作Session。

17问:错误代码:InvalidObjectException: Could not find a SessionFactory named: null

答:这个错误在以下几种情况下经常发生。

试图序列化一个已经失效的Hibernate Session,然后在另外一个虚拟机中进行反序列化。

类装载器被重置,例如在未重启的application server或者Web container中重新部署程序。在使用Tomcat时会经常遇到这个问题,这是因为application server中一般使用JNDI来存储SessionFactory,而在Tomcat或其他一些Web容器中,则是通过在context重载时,关闭HttpSession序列化来实现的。这种实现方式会引起这个错误发生。

18问:错误代码:org.hibernate.HibernateException: CGLIB Enhancement failed:

答:Hibernate 3的默认方式是把所有类通过代理方式来进行延迟加载。如果代码中的类有一个私有无参的构造器的话,Hibernate将无法在运行时将项目代码中的类作为子类装载。为了避免这个错误,类中的构造器函数至少应该在包内可见。

19问:为什么在Hibernate中添加、删除、修改一个对象或Collection,但是数据库中实际上没有任何变化

答:这个问题经常会困扰初学者。这是因为如果没有使用Hibernate的自动事务处理,则必需显式的提交事务,操作才会在数据库中执行。

20问:为什么保存一个父对象,而它的关联对象没有自动储存到数据库里

答:关联对象必需显式的调用session.save()(或session.persist()),或者在关联的映射文件中加入cascade="all"或cascade="save-update"(或cascade="persist")才能够自动关联执行。

关闭无用服务

=====================================
rem WINDOS XP 服务优化批处理文件!!
@pause

@rem Alerter
@rem 微软: 通知选取的使用者及计算机系统管理警示。如果停止这个服务,使用系统管理@rem 警示的程序将不会收到通知。
@rem 补充: 一般家用计算机根本不需要传送或接收计算机系统管理来的警示(Administrative Alerts),除非你的计算机用在局域网络上
@rem 依存: Workstation
@rem 建议: 已停用
sc config Alerter start= DISABLED

@rem Application Layer Gateway Service
@rem 微软: 提供因特网联机共享和因特网联机防火墙的第三方通讯协议插件的支持
@rem 补充: 如果你不使用因特网联机共享 (ICS) 提供多台计算机的因特网存取和因特网联机防火墙 (ICF) 软件你可以关掉
@rem 依存: Internt Connection Firewall (ICF) / Internet Connection Sharing (ICS)
@rem 建议: 已停用
sc config ALG start= DISABLED

@rem Application Management (应用程序管理)
@rem 微软: 提供指派、发行、以及移除的软件安装服务。
@rem 补充: 如上说的软件安装变更的服务
@rem 建议: 手动
sc config AppMgmt start= DEMAND

@rem Windows Audio
@rem 微软: 管理用于 Windows 为主程序的音讯装置。如果这个服务被停止,音讯装置和效果将无法正常?#092;作。如果这个服务被停用,任@rem 何明确依存于它的服务将无法启动。
@rem 补充: 如果你没有声卡可以关了他
@rem 依存: Plug and Play、remote Procedure Call (RPC)
@rem 建议: 自动
sc config AudioSrv start= AUTO

@rem Background Intelligent Transfer Service
@rem 微软: 使用闲置的网络频宽来传输数据。
@rem 补充: 经由 Via HTTP1.1 在背景传输资料的?#124;西,例如 Windows Update 就是以此为工作之一
@rem 依存:remote Procedure Call (RPC) 和 Workstation
@rem 建议: 已停用
sc config BITS start= DISABLED

@rem Computer Browser (计算机浏览器)
@rem 微软: 维护网络上更新的计算机清单,并将这个清单提供给做为浏览器的计算机。如果停止这个服务,这个清单将不会被更新或维护。@rem 如果停用这个服务,所有依存于它的服务将无法启动。
@rem 补充: 一般家庭用计算机不需要,除非你的计算机应用在区网之上,不过在大型的区网上有必要开这个拖慢速度吗?
@rem 依存: Server 和 Workstation
@rem 建议: 已停用
sc config Browser start= DISABLED

@rem Indexing Service (索引服务)
@rem 微软: 本机和远程计算机的索引内容和档案属性; 透过弹性的查询语言提供快速档案存取。
@rem 补充: 简单的说可以让你加快搜查速度,不过我想应该很少人和远程计算机作搜寻吧
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config CiSvc start= DISABLED


@rem ClipBook (剪贴簿)
@rem 微软: 启用剪贴簿检视器以储存信息并与远程计算机共享。如果这个服务被停止,剪贴簿检视器将无法与远程计算机共享信息。如果这@rem 个服务被停用,任何明确依存于它的服务将无法启动。
@rem 补充: 把剪贴簿内的信息和其它台计算机分享,一般家用计算机根本用不到
@rem 依存: Network DDE
@rem 建议: 已停用
sc config ClipSrv start= DISABLED

@rem COM+ System Application
@rem 微软: 管理 COM+ 组件的设定及追踪。如果停止此服务,大部分的 COM+ 组件将无法适当?#092;作。如果此服务被停用,任何明确依存@rem 它的服务将无法启动。
@rem 补充: 如果 COM+ Event System 是一台车,那么 COM+ System Application 就是司机,如事件检视器内显示的 DCOM 没有启用
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 手动
sc config COMSysApp start= DEMAND

@rem Cryptographic Services
@rem 微软: 提供三个管理服务: 确认 Windows 档案签章的 [类别目录数据库服务]; 从这个计算机新增及移除受信任根凭证授权凭证的 [受@rem 保护的根目录服务]; 以及协助注册这个计算机以取得凭证的 [金钥服务]。如果这个服务被停止,这些管理服务将无法正确工作。
@rem 补充: 简单的说就是 Windows Hardware Quality Lab (WHQL)微软的一种认证,如果你有使用 Automatic Updates ,那你可能需要这个
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 手动
sc config CryptSvc start= DEMAND


@rem DCOM Server Process Launcher
@rem 为 DCOM 服务提供启动功能。
sc config DcomLaunch start= AUTO

@rem DHCP Client (DHCP 客户端)
@rem 微软: 透过登录及更新 IP 地址和 DNS 名称来管理网络设定。
@rem 补充: 使用 DSL/Cable 、ICS 和 IPSEC 的人都需要这个来指定动态 IP
@rem 依存: AFD 网络支持环境、NetBT、SYMTDI、TCP/IP Protocol Driver 和 NetBios over TCP/IP
@rem 建议: 手动
sc config Dhcp start= DEMAND

@rem Logical Disk Manager Administrative Service (逻辑磁盘管理员系统管理服务)
@rem 微软: 设定硬盘磁盘及磁盘区,服务只执行设定程序然后就停止。
@rem 补充: 使用 Microsoft Management Console(MMC)主控台的功能时才用到
@rem 依存: Plug and Play、remote Procedure Call (RPC)、Logical Disk Manager
@rem 建议: 手动
sc config dmadmin start= DEMAND

@rem Logical Disk Manager (逻辑磁盘管理员)
@rem 微软: 侦测及监视新硬盘磁盘,以及传送磁盘区信息到逻辑磁盘管理系统管理服务以供设定。如果这个服务被停止,动态磁盘状态和设@rem 定信息可能会过时。如果这个服务被停用,任何明确依存于它的服务将无法启动。
@rem 补充: 磁盘管理员用来动态管理磁盘,如显示磁盘可用空间等和使用 Microsoft Management Console(MMC)主控台的功能
@rem 依存: Plug and Play、remote Procedure Call (RPC)、Logical Disk Manager Administrative Service
@rem 建议: 自动
sc config dmserver start= AUTO

@rem DNS Client (DNS 客户端)
@rem 微软: 解析并快取这台计算机的网域名称系统 (DNS) 名称。如果停止这个服务,这台计算机将无法解析 DNS 名称并寻找 Active @rem Directory 网域控制站的位置。如果停用这个服务,所有依存于它的服务将无法启动。
@rem 补充: 如上所说的,另外 IPSEC 需要用到
@rem 依存: TCP/IP Protocol Driver
@rem 建议: 手动
sc config Dnscache start= DEMAND

@rem Error Reporting Service
@rem 微软: 允许对执行于非标准环境中的服务和应用程序的错误报告。
@rem 补充: 微软的应用程序错误报告
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config ERSvc start= DISABLED

@rem Event Log (事件记录文件)
@rem 微软: 启用 Windows 为主的程序和组件所发出的事件讯息可以在事件检视器中检视。这个服务不能被停止。
@rem 补充: 允许事件讯息显示在事件检视器之上
@rem 依存: Windows Management Instrumentation
@rem 建议: 自动
sc config Eventlog start= AUTO


@rem COM+ Event System (COM+ 事件系统)
@rem 微软: 支持「系统事件通知服务 (SENS)」,它可让事件自动分散到订阅的 COM 组件。如果服务被停止,SENS 会关闭,并无法提供登入@rem 及注销通知。
@rem 补充: 有些程序可能用到 COM+ 组件,像 BootVis 的 optimize system 应用,如事件检视器内显示的 DCOM 没有启用
@rem 依存:remote Procedure Call (RPC) 和 System Event Notification
@rem 建议: 手动
sc config EventSystem start= DEMAND

@rem Help and Support
@rem 微软: 让说明及支持中心能够在这台计算机上执行。如果这个服务停止,将无法使用说明及支持中心。
@rem 补充: 如果不使用就关了吧
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config helpsvc start= DISABLED

@rem Human Interface Device Access
@rem 微软: 启用对人性化接口装置 (HID) 的通用输入存取,HID 装置启动并维护对这个键盘、远程控制、以及其它多媒体装置上事先定义的@rem 快捷纽的使用。如果这个服务被停止,这个服务控制的快捷纽将不再起作用。
@rem 补充: 如上所提到的
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config HidServ start= DISABLED

@rem http sll
@rem 此服务通过安全套接字层(SSL)实现 HTTP 服务的安全超文本传送协议(HTTPS)。如果此服务被禁用,任何依赖它的服务将无法启动。
sc config HTTPFilter start= DEMAND

@rem IMAPI CD-Burning COM Service
@rem 微软: 使用 Image Mastering Applications Programming Interface (IMAPI) 来管理光盘录制。如果这个服务被停止,这个计算机将@rem 无法录制光盘。如果这个服务被停用,任何明确地依赖它的服务将无法启动。
@rem 补充: XP 整合的 CD-R 和 CD-RW 光驱上拖放的烧录功能,可惜比不上烧录软件,关掉还可以加快 Nero 的开启速度
@rem 建议: 已停用
sc config ImapiService start= DISABLED

@rem Server (服务器)
@rem 微软: 透过网络为这台计算机提供档案、打印、及命名管道的共享。如果停止这个服务,将无法使用这些功能。如果停用这个服务,所@rem 有依存于它的服务将无法启动。
@rem 补充: 简单的说就是档案和打印的分享,除非你有和其它计算机分享,不然就关了
@rem 依存: Computer Browser
@rem 建议: 已停用
sc config lanmanserver start= DISABLED

@rem Workstation (工作站)
@rem 微软: 建立并维护到远程服务器的客户端网络联机。如果停止这个服务,这些联机将无法使用。如果停用这个服务,所有依存于它的服@rem 务将无法启动。
@rem 补充: 因特网联机中所必要的一些功能
@rem 依存: Alerter、Background Intelligent Transfer Service、Computer Browser、Messenger、Net Logon、remote Procedure Call @rem (RPC) Locator
@rem 建议: 自动
sc config lanmanworkstation start= AUTO


@rem TCP/IP NetBIOS Helper (TCP/IP NetBIOS 协助程序)
@rem 微软: 启用 [NetBIOS over TCP/IP (NetBT)] 服务及 NetBIOS 名称解析的支持。
@rem 补充: 如果你的网络不使用 NetBios 或是 WINS ,你大可关闭
@rem 依存: AFD 网络支持环境、NetBt
@rem 建议: 已停用
sc config LmHosts start= DISABLED

2007-09-20 15:02:04 回复此发言
2 回复:智能关闭无用服务

@rem Messenger (信差)
@rem 微软:在客户端及服务器之间传输网络传送及 [Alerter] 服务讯息。这个服务与 Windows Messenger 无关。如果停止这个服务,@rem @rem Alerter 讯息将不会被传输。如果停用这个服务,所有依存于它的服务将无法启动。
@rem 补充: 允许网络之间互相传送提示讯息的功能,如 net send 功能,如不想被骚扰话可关了
@rem 依存: NetBIOS Interface、Plug and Play、remote Procedure Call (RPC)、Workstation
@rem 建议: 已停用
sc config Messenger start= DISABLED


@rem NetMeetingremote Desktop Sharing (NetMeeting 远程桌面共享)
@rem 微软: 让经过授权的使用者可以使用 NetMeeting 透过公司近端内部网络,由远程访问这部计算机。如果这项服务停止的话,远程桌面@rem 共享功能将无法使用。如果服务停用的话,任何依赖它的服务将无法启动。
@rem 补充: 如上说的,让使用者可以将计算机的控制权分享予网络上或因特网上的其它使用者,如果你重视安全性不想多开后门,就关了吧
@rem 建议: 已停用
sc config mnmsrvc start= DISABLED

@rem Distributed Transaction Coordinator (分布式交易协调器)
@rem 微软: 协调跨越多个资源管理员的交易,比如数据库、讯息队列及档案系统。如果此服务被停止,这些交易将不会发生。如果服务被停@rem 用 ,任何明显依存它的服务将无法启动。
@rem 补充: 如上所说的,一般家庭用计算机用不太到,除非你启用的 Message Queuing
@rem 依存:remote Procedure Call (RPC) 和 Security Accounts Manager
@rem 建议: 已停用
sc config MSDTC start= DISABLED

@rem Windows Installer (Windows 安装程序)
@rem 微软: 根据包含在 .MSI 档案内的指示来安装,修复以及移除软件。
@rem 补充: 是一个系统服务,协助使用者正确地安装、设定、追踪、升级和移除软件程序,可管理应用程序建立和安装的标准格式,并且追@rem 踪例如档案群组、登录项目及快捷方式等组件
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 手动
sc config MSIServer start= DEMAND

@rem Network DDE (网络 DDE)
@rem 微软: 为动态数据交换 (DDE) 对在相同或不同计算机上执行的程序提供网络传输和安全性。如果这个服务被停止,DDE 传输和安全性将@rem 无法使用。如果这个服务被停用,任何明确依存于它的服务将无法启动。
@rem 补充: 一般人好像用不到
@rem 依存: Network DDE DSDM、ClipBook
@rem 建议: 已停用
sc config NetDDE start= DISABLED

@rem Network DDE DSDM (网络 DDE DSDM)
@rem 微软: 讯息动态数据交换 (DDE) 网络共享。如果这个服务被停止,DDE 网络共享将无法使用。
@rem 补充: 一般人好像用不到
@rem 依存: Network DDE
@rem 建议: 已停用
sc config NetDDEdsdm start= DISABLED

@rem Net Logon
@rem 微软: 支持网域上计算机的账户登入事件的 pass-through 验证。
@rem 补充: 一般家用计算机不太可能去用到登入网域审查这个服务
@rem 依存: Workstation
@rem 建议: 已停用
sc config Netlogon start= DISABLED

@rem Network Connections (网络联机)
@rem 微软: 管理在网络和拨号联机数据夹中的对象,您可以在此数据夹中检视局域网络和远程联机。
@rem 补充: 控制你的网络联机
@rem 依存:remote Procedure Call (RPC)、Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS)
@rem 建议: 手动
sc config Netman start= DEMAND

@rem Network Location Awareness (NLA)
@rem 微软: 收集并存放网络设定和位置信息,并且在这个信息变更时通知应用程序。
@rem 补充: 如果不使用 ICF 和 ICS 可以关了它
@rem 依存: AFD网络支持环境、TCP/IP Procotol Driver、Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS)
@rem 建议: 已停用
sc config Nla start= DISABLED


@rem NT LM Security Support Provider (NTLM 安全性支持提供者)
@rem 微软: 为没有使用命名管道传输的远程过程调用 (RPC) 程序提供安全性。
@rem 补充: 如果不使用 Message Queuing 或是 Telnet Server 那就关了它
@rem 依存: Telnet
@rem 建议: 已停用
sc config NtLmSsp start= DISABLED

@rem @rem ovable Storage (卸除式存放装置)
@rem 微软: None
@rem 补充: 除非你有 Zip 磁盘驱动器或是 USB 之类可携式的硬件或是 Tape 备份装置,不然可以尝试关了
@rem 依存:remote Procedure Call (RPC)
@rem 建议: DISABLED
sc config NtmsSvc start= DEMAND

@rem Office Source Engine (office 2003)
@rem 可保存用于更新和修复的安装文件,并且在下载安装程序更新和 Watson 错误报告时必须使用。
@rem sc config ose start= DEMAND

@rem Plug and Play (随插随用)
@rem 微软: 启用计算机以使用者没有或很少的输入来识别及适应硬件变更,停止或停用这个服务将导致系统不稳定。
@rem 补充: 顾名思义就是 PNP 环境
@rem 依存: Logical Disk Manager、Logical Disk Manager Administrative Service、Messenger、Smart Card、Telephony、Windows Audio
@rem 建议: 自动
sc config PlugPlay start= AUTO

@rem IPSEC Services (IP 安全性服务)
@rem 微软: 管理 IP 安全性原则并启动 ISAKMP/Oakley (IKE) 及 IP 安全性驱动程序。
@rem 补充: 协助保护经由网络传送的数据。IPSec 为一重要环节,为虚拟私人网络 (VPN) 中提供安全性,而 VPN 允许组织经由因特网安全@rem 地传输数据。在某些网域上也许需要,但是一般使用者大部分是不太需要的
@rem 依存: IPSEC driver、remote Procedure Call (RPC)、TCP/IP Protocol Driver
@rem 建议: 手动
sc config PolicyAgent start= DEMAND


@rem Protected Storage (受保护的存放装置)
@rem 微软: 提供受保护的存放区,来储存私密金钥这类敏感数据,防止未授权的服务、处理、或使用者进行存取。
@rem 补充: 用来储存你计算机上密码的服务,像 Outlook、拨号程序、其它应用程序、主从架构等等
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 自动
sc config ProtectedStorage start= AUTO

@rem remote Access Auto Connection Manager (远程访问自动联机管理员)
@rem 微软: 当程序参照到远程 DNS 或 NetBIOS 名称或地址时,建立远程网络的联机。
@rem 补充: 有些 DSL/Cable 提供者,可能需要用此来处理登入程序
@rem 依存:remote Access Connection Manager、Telephony
@rem 建议: 手动
sc config RasAuto start= DEMAND

@rem remote Access Connection Manager (远程访问联机管理员)
@rem 微软: 建立网络联机。
@rem 补充: 网络联机用
@rem 依存: Telephony、Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS)、remote Access Auto @rem Connection Manager
@rem 建议: 手动
sc config RasMan start= DEMAND

@rem remote Desktop Help Session Manager
@rem 微软: 管理并控制远程协助。如果此服务停止的话,远程协助将无法使用。停止此服务之前,请先参阅内容对话框中的 [依存性]标签。
@rem 补充: 如上说的管理和控制远程协助,如果不使用可以关了
@rem 依存:remote Procedure Call (RPC)
@rem 建议: DISABLED
sc config RDSessMgr start= DISABLED

@rem Routing andremote Access (路由和远程访问)
@rem 微软: 提供连到局域网络及广域网络的公司的路由服务。
@rem 补充: 如上说的,提供拨号联机到区网或是 VPN 服务,一般用户用不到
@rem 依存:remote Procedure Call (RPC)、NetBIOSGroup
@rem 建议: 已停用
sc config remoteAccess start= DISABLED

@rem remote Registry (远程登录服务)
@rem 微软: 启用远程使用者修改这个计算机上的登录设定。如果这个服务被停止,登录只能由这个计算机上的使用者修改。如果这个服务被@rem 停用,任何明确依存于它的服务将无法启动。
@rem 补充: 基于安全性的理由,如果没有特别的需求,建议最好关了它,除非你需要远程协助修改你的登录设定
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config remoteRegistry start= DISABLED


@rem remote Procedure Call (RPC) Locator (远程过程调用定位程序)
@rem 微软: 管理 RPC 名称服务数据库。
@rem 补充: 如上说的,一般计算机上很少用到,可以尝试关了
@rem 依存: Workstation
@rem 建议: DISABLED
sc config RpcLocator start= DISABLED

@rem remote Procedure Call (RPC) (远程过程调用,RPC)
@rem 微软: 提供结束点对应程序以及其它 RPC 服务。
@rem 补充: 一些装置都依存它,别去动它
@rem 依存: 太多了,自己去看看
@rem 建议: 自动
sc config RpcSs start= AUTO


@rem Security Accounts Manager (安全性账户管理员)
@rem 微软: 储存本机账户的安全性信息。
@rem 补充: 管理账号和群组原则(gpedit.msc)应用
@rem 依存:remote Procedure Call (RPC)、Distributed Transaction Coordinator
@rem 建议: 自动
sc config SamSs start= AUTO

@rem Smart Card (智慧卡)
@rem 微软: 管理这个计算机所读取智能卡的存取。如果这个服务被停止,这个计算机将无法读取智能卡。如果这个服务被停用,任何明确依@rem 存于它的服务将无法启动。
@rem 补充: 如果你不使用 Smart Card ,那就可以关了
@rem 依存: Plug and Play
@rem 建议: 已停用
sc config SCardSvr start= DISABLED

@rem Task Scheduler (工作排程器)
@rem 微软: 让使用者能够在这个计算机上设定和排定自动的工作。如果停止这个服务,这些工作在它们排定的时间时将不会执行。
@rem 补充: 设定排定自动的工作,像一些定时磁盘扫瞄、病毒定时扫瞄、更新等等
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 自动
sc config Schedule start= AUTO

@rem Secondary Logon
@rem 微软: 启用在其它认证下的起始程序。如果这个服务被停止,这类的登入存取将无法使用。
@rem 补充: 允许多个使用者处理程序,执行分身等
@rem 建议: 自动
sc config seclogon start= AUTO

@rem System Event Notification (系统事件通知)
@rem 微软: 追踪诸如 Windows 登入、网络、和电源事件的系统事件。通知这些事件的 COM+ 事件系统订阅者。
@rem 补充: 如上所说的
@rem 依存: COM+ Event System
@rem 建议: 自动
sc config SENS start= AUTO

@rem Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS)
@rem 微软: 为您的家用网络或小型办公室网络提供网络地址转译、寻址及名称解析服务和/或防止干扰的服务。
@rem 补充: 如果你不使用因特网联机共享(ICS)或是 XP 内含的因特网联机防火墙(ICF)你可以关掉
@rem 依存: Application Layer Gateway Service、Network Connections、Network Location Awareness(NLA)、remote Access Connection @rem Manager
@rem 建议: 已停用
sc config SharedAccess start= DEMAND

@rem Shell Hardware Detection
@rem 微软: 为自动播放硬件事件提供通知。
@rem 补充: 一般使用在记忆卡或是CD装置、DVD装置上
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 自动
sc config ShellHWDetection start= AUTO

@rem Print Spooler (打印多任务缓冲处理器)
@rem 微软: 将档案加载内存中以待稍后打印。
@rem 补充: 如果没有打印机,可以关了
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config Spooler start= DEMAND

@rem Windows Image Acquisition (WIA) (Windows影像取得程序)
@rem 微软: 为扫描仪和数字相机提供影像撷取服务。
@rem 补充: 如果扫描仪和数字相机内部具有支持WIA功能的话,那就可以直接看到图档,不需要其它的驱动程序,所以没有扫描仪和数字相机@rem 的使用者大可关了
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config stisvc start= DEMAND

@rem MS Software Shadow Copy Provider
@rem 微软: 管理磁盘区阴影复制服务所取得的以软件为主的磁盘区阴影复制。如果停止这个服务,就无法管理以软件为主的磁盘区阴影复制。
@rem 补充: 如上所说的,用来备份的东西,如 MS Backup 程序就需要这个服务
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config swprv start= DISABLED

2007-09-20 15:03:23 回复此发言
3 回复:智能关闭无用服务


@rem Performance Logs and Alerts (效能记录文件及警示)
@rem 微软: 基于事先设定的排程参数,从本机或远程计算机收集效能数据,然后将数据写入记录或?#124;发警讯。如果这个服务被停止,将@rem 不会收集效能信息。如果这个服务被停用,任何明确依存于它的服务将无法启动。
@rem 补充: 没什么价值的服务
@rem 建议: 已停用
sc config SysmonLog start= DISABLED

@rem Telephony (电话语音)
@rem 微软: 为本机计算机上及经由局域网络连接到正在执行此服务的服务器上,控制电话语音装置和 IP 为主语音联机的程序,提供电话语@rem 音 API (TAPI) 支持。
@rem 补充: 一般的拨号调制解调器或是一些 DSL/Cable 可能用到
@rem 依存: Plug and Play、remote Procedure Call (RPC)、remote Access Connection Manager、remote Access Auto Connection @rem Manager
@rem 建议: 手动
sc config TapiSrv start= DEMAND

@rem Terminal Services (终端机服务)
@rem 微软: 允许多位使用者互动连接到同一部计算机、桌面的显示器及到远程计算机的应用程序。远程桌面的加强 (包含系统管理员的 RD)@rem 、快速切换使用者、远程协助和终端机服务器。
@rem 补充: 远程桌面或是远程协助的功能,不需要就关了
@rem 依存:remote Procedure Call (RPC)、Fast User Switching Compatibility、InteractiveLogon
@rem 建议: 已停用
sc config TermService start= DISABLED

@rem Themes
@rem 微软: 提供使用者经验主题管理。
@rem 补充: 很多人使用布景主题,不过如果没有使用的人,那就可以关闭
@rem 建议: 自动
sc config Themes start= AUTO


@rem Distributed Link Tracking Client (分布式连结追踪客户端)
@rem 微软: 维护计算机中或网络网域不同计算机中 NTFS 档案间的连结。
@rem 补充: 维护区网内不同计算机之间的档案连结
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config TrkWks start= DISABLED


@rem Windows User Mode Driver Framework
@rem 启用 Windows 用户模式驱动程序。
sc config UMWdf start= DEMAND


@rem Uninterruptible Power Supply (不断电供电系统)
@rem 微软: 管理连接到这台计算机的不断电电源供应 (UPS)。
@rem 补充: 不断电电源供应 (UPS)一般人有用到吗?除非你的电源供应器有具备此功能,不然就关了
@rem 建议: 已停用
sc config UPS start= DISABLED



@rem Volume Shadow Copy
@rem 微软: 管理及执行用于备份和其它目的的磁盘区卷影复制。如果这个服务被停止,卷影复制将无法用于备份,备份可能会失败。
@rem 补充: 如上所说的,用来备份的?#124;西,如 MS Backup 程序就需要这个服务
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config VSS start= DISABLED

@rem Windows Time (Windows 时间设定)
@rem 微软: 维护在网络上所有客户端及服务器的数据及时间同步处理。如果这个服务停止,将无法进行日期及时间同步处理。如果这个服务@rem 被停用,所有依存的服务都会停止。
@rem 补充: 网络对时校准用的,没必要就关了
@rem 建议: 已停用
sc config W32Time start= DISABLED

@rem WebClient
@rem 微软: 启用 Windows 为主的程序来建立、存取,以及修改因特网为主的档案。如果停止这个服务,这些功能将无法使
@rem 补充: 使用 WebDAV 将档案或数据夹上载到所有的 Web 服务,基于安全性的理由,你可以尝试关闭
@rem 依存: WebDav Client Redirector
@rem 建议: 已停用
sc config WebClient start= DISABLED



@rem Windows Management Instrumentation (WMI)
@rem 微软: 提供公用接口及对象模型,以存取有关操作系统、装置、应用程序及服务的管理信息。如果这个服务已停止,大多数的 Windows @rem 软件将无法正常工作。如果这个服务已停用,所有依存于它的服务都将无法启动。
@rem 补充: 如上说的,是一种提供一个标准的基础结构来监视和管理系统资源的服务,由不得你动他
@rem 依存: Event Log、remote Procedure Call (RPC)
@rem 建议: 自动
sc config winmgmt start= AUTO

@rem Portable Media Serial Number
@rem 微软: Retrieves the serial number of any portable music player connected to your computer
@rem 补充: 透过联机计算机重新取得任何音乐拨放序号?没什么价值的服务
@rem 建议: 已停用
sc config WmdmPmSN start= DISABLED

@rem Windows Management Instrumentation Driver Extensions (Windows Management Instrumentation 驱动程序延伸)
@rem 微软: 提供系统管理信息给予/取自驱动程序。
@rem 补充: Windows Management Instrumentation 的延伸,提供信息用的
@rem 建议: 手动
sc config Wmi start= DEMAND

@rem WMI Performance Adapter
@rem 微软: 提供来自 WMIHiPerf 提供者的效能链接库信息。
@rem 补充: 如上所提
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config WmiApSrv start= DISABLED

@rem Automatic Updates
@rem 微软: 启用重要 Windows 更新的下载及安装。如果停用此服务,可以手动的从 Windows Update 网站上更新操作系统。
@rem 补充: 允许 Windows 于背景自动联机之下,到 Microsoft Servers 自动检查和下载更@rem 新修补程序
@rem 建议: 已停用
sc config wuauserv start= DISABLED

@rem Wireless Zero Configuration
@rem 微软: 为 802.11 适配卡提供自动设定
@rem 补充: 自动配置无线网络装置,言下之意就是说,除非你有在使用无线网络适配卡装置,那么你才有必要使用这个网络零管理服务
@rem 依存: NDIS Usermode I/O Protocol、remote Procedure Call (RPC)
@rem 建议: 已停用
sc config WZCSVC start= DISABLED


@rem Network Provisioning Service
@rem 在域内为自动网络提供管理 XML 配置文件。
sc config xmlprov start= DEMAND

@rem DCOM Server Process Launcher
@rem 为 DCOM 服务提供加载功能。
sc config DcomLaunch start= AUTO


@rem Fast User Switching Compatibility
@rem 为在多用户下需要协助的应用程序提供管理。依赖RPC。
sc config FastUserSwitchingCompatibility start= DEMAND



@REM System Restore Service
@REM 执行系统还原功能。 要停止服务,请从“我的电脑”的属性中的系统还原选项卡关闭系统还原。
sc config srservice start= DISABLED


@REM SSDP Discovery Service
@REM 启动您家庭网络上的 UPnP 设备的发现。
sc config SSDPSRV start= DISABLED


@rem telnet
@REM 允许远程用户登录到此计算机并运行程序,并支持多种 TCP/IP Telnet 客户,包括基于 UNIX 和 Windows 的计算机。如果此服务停止,远程用户就不能访问程序,任何直接依靠它的服务将会启动失败。
sc config TlntSvr start= DISABLED


@REM Universal Plug and Play Device Host
@REM 为主持通用即插即用设备提供支持。
sc config upnphost start= DEMAND

@REM Security Center
@REM 监视系统安全设置和配置。
sc config wscsvc start= DISABLED


@pause

===========================

 
Copyright 2005-2007. Hello Wiki designed by Fen, Blogger Templates by Blogcrowds.