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'
再执行其他语句就可以了。

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