解决方案步骤:
一、看ping 服务器IP能否ping通。
这个实际上是看和远程sql server 2000服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确。
二、在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。
telnet 202.114.100.100 1433
通常端口值是1433,因为1433是sql server 2000的对于Tcp/IP的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败”。
如果这一步有问题,应该检查以下选项。
-
检查远程服务器是否启动了sql server 2000服务。如果没有,则启动。
-
检查服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有 tcp/ip协议,如果没有,则启用它。
- 检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。
事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。如果隐藏服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变。
- 如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开放 1433端口,通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)。
- 检查服务器是否在1433端口侦听。如果服务器没有在tcp连接的1433端口侦听,则是连接不上的。检查方法是在服务器的dos或命令行下面输入 netstat -a -n 或者是netstat -an,在结果列表里看是否有类似 tcp 127.0.0.1 1433 listening 的项。如果没有,则通常需要给sql server 2000打上至少sp3的补丁。其实在服务器端启动查询分析器,输入 select @@version 执行后可以看到版本号,版本号在8.0.2039以下的都需要打补丁。
如果以上都没问题,这时你再做telnet 服务器ip 1433 测试,将会看到屏幕一闪之后光标在左上角不停闪动。恭喜你,你马上可以开始在企业管理器或查询分析器连接了。
三、检查客户端设置程序->Microsoft SQL Server-> 客户端网络使用工具。像在服务器网络实用工具里一样,确保客户端 tcp/ip协议启用,并且默认端口为1433(或其他端口,与服务器端保持一致就行)。
四、在企业管理器里或查询分析器连接测试。
企业管理器->右键SQlserver组->新建 sqlserver注册->下一步->写入远程IP->下一步 -> 选Sqlserver登陆->下一 步->写入登陆名与密码(sa,password)->下一步-> 下一步->完成 。
查询分析器->文件->连接->写入远程IP->写入登录名和密码(sa,password)->确定。通常建议在查询分析器里做,因为默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是4秒,而查询分析器是15秒。
修改默认连接超时的方法:
企业管理器->工具->选项->在弹出的”SQL Server企业管理器属性”窗口中,点击”高级”选项卡->连接设置->在 登录超时(秒) 后面的框里输入一个较大的数字查询分析器->工具->选项->连接->在 登录超时(秒) 后面的框里输入一个较大的数字通常就可以连通了,如果提示错误,则进入下一步。
五、错误产生的原因通常是由于SQL Server使用了”仅 Windows”的身份验证方式,因此用户无法使用SQL Server的登录帐户(如 sa )进行连接。解决方法如下所示:
- 在服务器端使用企业管理器,并且选择”使用 Windows 身份验证”连接上 SQL Server。
- 展开”SQL Server组”,鼠标右键点击SQL Server服务器的名称,选择”属性”,再选择”安全性”选项卡。
- 在”身份验证”下,选择”SQL Server和 Windows “。
- 重新启动SQL Server服务。(在dos或命令行下面net stop mssqlserver停止服务,net start mssqlserver启动服务,也是一种快捷的方法)。 注:在连接本地服务器时,通常使用的是命名管道协议(在服务器网络实用工具里可以看到启用的协议有这个),默认端口是445,因此在本地能连通是不能说明什么问题的,连接远程服务器是完全不同的协议)。
一直没有弄好netbeans下面字体显示的锯齿问题。昨天查了下G大神,很轻松的搞定了。只需要一行代码(这种方法是作用于JRE全局的,就是所有用到JRE的程序都会开启这个字体渲染,当然也可以在NB的配置文件中单独开启字体渲染)。
在JDK系统配置中加上一行开启渲染参数,这个参数我知道有三个可选值。
#首先打开系统配置文件(需要root身份)
vim /etc/profile
#如果进行过JAVA环境变量配置,则在环境变量配置后面加上这样一行
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=lcd'
#lcd也可为“on"
完成后,重启X,我使用source /etc/profile 不起作用。

这里的Chromium不是Chrome。
打开终端,输入下面命令:
sudo add-apt-repository ppa:chromium-daily/ppa
sudo apt-get update
sudo apt-get install chromium-browser
完成了,如此简单,不用过多解释吧。

一、林氏营养早餐
1. 原料
健康熟鸡蛋一个,苹果一个(香蕉一根),一把熟豆(各种豆类的集合),一袋酸奶(牛奶),一勺蛋白粉。
2. 制作方法
放入搅拌机搅碎倒入杯中即可食用。
3. 营养价值及作用
含有丰富的维生素及蛋白质,低热量。
制作简单、食用方便、节省时间、营养丰富,减少胃的消化负担。几乎包含人体所需的全部营养素,在现代人忙碌的生活中,营养早餐可满足一天的营养需求,让你一整天精力充沛,适宜长期食用。
二、林氏养生茶
1. 原料
黄豆、黑豆、芸豆、红豆、白豆、绿豆各一把。
小米、苡仁、黑米各一小把。
以上物质加水混合,浸泡一晚(6小时以上),然后加水煮熟,待用。
加入花生、芝麻、坚果、葡萄干等各一小勺,橄榄油一大勺,蜂蜜一勺,蛋白质粉一勺,维生素B(1.2毫克),维生素C(60毫克)各两颗。
2. 制作方法
将以上全部倒入搅拌机搅拌成奶昔状即可食用。称为茶,意思是可以随时饮用。
3. 营养价值及作用
此食物完全可以替代中餐和晚餐,营养丰富完整,不多不少,容易消化和吸收。对于亚健康及慢性疾病患者,有非常好的康复支持作用。可应用在心血管疾病、糖尿病、老年痴呆、妇女更年期症状调整、不孕、前列腺肥大、手脚冰冷等健康问题上。同时也是一种高能量的抗癌食物。
三、林式排毒餐
1.原料
地瓜一个,芋头少量,土豆一个,南瓜一块,菠萝半个,蛋白质粉半勺,橄榄油两勺。食用时,最好额外补充钙镁、维生素B、维生素C、维生素E及鱼油。
2. 制作方法
食用时将地瓜、芋头、土豆、南瓜、菠萝蒸熟,放入搅拌机,加水搅拌,成奶昔状。味道绝美而香,口感卓越。可以早、中、晚三餐食用,连用一周。
3. 营养价值及作用
排毒餐的制作简单、食用方便、节省时间、营养丰富,减少胃的消化负担。几乎包含人体所需的全部营养素。可作为补充食物,长期食用,对调理慢性疾病有显著的效果。
体内毒素的清除,是我们要做的一个重要工作。食物中有些好东西,可以长期食用,营养丰富,又同时清肠清血。它包括:地瓜、南瓜、土豆、芋头、山药。这些食物含有丰富的维生素及蛋白质,纤维含量高、热量低、营养均衡。能够彻底排除肠内垃圾,以均衡营养,达到美颜皮肤,抗衰老作用。虽然它们的淀粉含量丰富,却可以帮助减肥。

字符串中含有“.”,且需要对其进行分割。下面语句得到的结果为空数组。
String s[] = str.split(".");
必须经过转义之后才可以进行正常分割,所以应该写成:
String s[] = str.split("\\.");
这文只是个说明,并非是个安装教程。
早先在10.04出beta1版本的时候,我就装上了。可是由于自带的显卡驱动(我是ATI 2400HD显卡),导致我的屏幕更老电影似的狂闪不停。跟本不能用,我卸载驱动。装上AMD的官方的驱动,进不了X了。仔细一看,原来10.04用的是xorg7.5,那时候的官方驱动只支持到7.4。所以,等阿等,终于,AMD的ATI显卡驱动出来支持xorg7.5了。详情见这里。
下载好驱动,进入光盘live,仍然是狂闪。不过没关系,当我装完系统,装好驱动之后,果然不闪了。可是在开启普通的特殊效果后,最小化,和最大化,还原窗口仍然是有延时(9.04也有这个毛病,不过装了一个补丁之后就没问题了)。等待有补丁把这个问题更新。
10.04的整体感觉不错,界面做的比以往的版本更细致。而且中文化比先前的版本更为完善了。我觉得细节上最让我舒服的一个地方就是在终端里面tab键补全的时候会有声音提示。
另外,我今天安装好JDK,发现中文乱码问题已经解决了,难道是SUN被Oracle收购后,直接就立马把这个问题解决了?我的JDK版本是:
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Server VM (build 16.3-b01, mixed mode)
因为在我安装NetBeans的时候很顺利的GUI都是正常中文。需要下载的朋友点这里
在Struts中,
当输入页面中含有日期字符串时,如果Form中对于的字段为Date类型,则会出现“argument type mismatch”错误。
原因:
Struts的ActionServlet在接受到页面的请求后,会调用RequestUtils.populate方法对Form进行填值,而此方法又调用到BeanUtils.populate方法,而该方法进行填值时对不同类型的会进行转换,而默认的ActionServlet并没有注册相应的转换函数,所以会导致转换出现错误。
解决方法:
-
方法1:
Form中的日期使用String类型,在Action中自己处理String到Date的类型转换。
-
方法2:Form中使用java.util.Date类型,自定义一个日期转换类DateConverter(需要实现Converter接口),然后在自定义的ActionServlet或者Action基类中注册DateConverter:ConvertUtils.register(new DateConverter(), Date.class)。
看了下commons-beanutils的源码发现:BeanUtilsBean含有一个beansByClassLoader静态常量,加载时会初始化一个BeanUtilsBean实例,每次调用getInstance方法返回的都是同一个BeanUtilsBean实例。所以可以在任意地方注册 DateConverter,但要确保在调用BeanUtils.populate方法前已经注册DateConverter,所以应该可以在一个初始化的Servlet中注册,或者在Form类里面静态注册。
下面是DateConverter.java
/* @(#) DateConverter.java 2010-5-11
*
* Copyright (c) 2002-2010 Maxtech, Inc.
* 66 ZhongGuanCun East Road, BeiJing, 100086, China
* All rights reserved.
*
* This software is the confidential and proprietary information of
* Maxtech, Inc. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with Maxtech.
*
*/
package cn.com.maxtech.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.apache.commons.beanutils.Converter;
/**
* @TODO
* @author liufei
*/
public class DateConverter implements Converter {
/**
* 日期格式化对象.
*/
private static SimpleDateFormat df = new SimpleDateFormat();
/**
* 模式集合.
*/
private static Set<String> patterns = new HashSet<String>();
static{
DateConverter.patterns.add("yyyy-MM-dd");
DateConverter.patterns.add("yyyy-MM-dd HH:mm");
DateConverter.patterns.add("yyyy-MM-dd HH:mm:ss");
DateConverter.patterns.add("yyyy/MM/dd HH:mm:ss");
}
/**
* 日期转换器.
* @param type Class
* @param value Object
* return Date Object.
*/
public Object convert(Class type,Object value){
if(value == null){
return null;
}else if(value instanceof String){
Object dateObj = null;
Iterator it = patterns.iterator();
while(it.hasNext()){
try{
String pattern = (String)it.next();
df.applyPattern(pattern);
dateObj = df.parse((String)value);
break;
}catch(ParseException ex){
}
}
return dateObj;
}else{
return null;
}
}
}
可以在Action中注册,例如:
public class DateAction extends StrutsAction {
.....
static {
ConvertUtils.register(new DateConverter(), Date.class);
}
.....
}
或者Form内:
public class DateForm extends ActionForm {
......
static {
ConvertUtils.register(new DateConverter(), Date.class);
}
......
}
web应用需求中,很多时候需要截取当前输入框中光标的位置,然后截获用户输入。在指定的输入框中插入文本。
而获取光标位置对于 IE 来说可是相当变态,缘于其复杂的 textrange 特性,而其他浏览器则实现了html5的相关属性,处理很简洁。
var TextRangeUtil = function() {
var re = {};
var nonIE = function(fieldId) {
var field = document.getElementById(fieldId);
var pos = {};
pos.start = field.selectionStart;
pos.end = field.selectionEnd;
return pos;
};
var IE = function(fieldId) {
var field = document.getElementById(fieldId);
var pos = {};
var range = document.selection.createRange();
if (fieldId != range.parentElement().id) return
var range_all = document.body.createTextRange();
range_all.moveToElementText(field);
for (var sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++) {
range_all.moveStart('character', 1);
}
for (var i = 0; i <= sel_start; i++) {
if (field.value.charAt(i) == '\n')
sel_start++;
}
pos.start = sel_start;
var range_all = document.body.createTextRange();
range_all.moveToElementText(field);
for (var sel_end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; sel_end++)
range_all.moveStart('character', 1);
for (var i = 0; i <= sel_end; i++) {
if (field.value.charAt(i) == '\n')
sel_end++;
}
pos.end = sel_end;
return pos;
};
re.getTextRange = function(fieldId) {
var field = document.getElementById(fieldId);
if (typeof field.selectionStart === 'number') {
re.getTextRange = nonIE;
}
else if (document.selection) {
re.getTextRange = IE;
}
else {
re.getTextRange = function(){};
}
return re.getTextRange(fieldId);
};
return re;
} ();
返回是一个对象,此对象的re.start属性是光标的开始字符位置,re.end是光标的结束位置。