摘要: 到这里我们大家可能都对Visual Studio有一定的认识,即便我们不是专业的相关技术开发人员,相信我们也能在身边的人用到的工具中对其有所所闻。从我用过Visual Studio 2008之后,我更加不断在朋友之间宣扬该产品,它尤其是在常见的使用场景在性能上的改进,无论是从开发效率,还是运行速度、稳定性方面,它的出现不得不说是我们大家的福音
阅读全文
posted @
2008-10-13 13:12 花纯春 阅读(20) |
评论 (0) |
编辑
摘要: 长久以来,在业内有这么一个神话,就是在虚拟化产品中,VMware是最有经验的公司,100%的财富 500强公司和92%的财富1000强公司,全球总共有超过10万的用户。VMware还拥有11个虚拟化专利权,在2007年,VMware的收入达到了13.3亿美元。这个神话造就了VMware在虚拟化产品的独霸地位。但神话终究是神话,终究有破灭的一天,而VMware十年的神话此刻也到了一个终点,因为Hyper-V的出现。
阅读全文
posted @
2008-10-13 12:58 花纯春 阅读(16) |
评论 (0) |
编辑
绝对值得写下来的知识!关于VPC与三类网的问题
为此,我花了大半天时间,只要网上有的,中英文资料都找遍了,没解决。后来,还是自己试验,通过实践解决了。
情况是这样的,以前我用2个VPC,搭建SPS环境,成功了的,每台VPC都用的是双网卡,一个是真实网卡,即与物理机一样的,另一个是微软虚拟网卡,loopback.
IP分别设为10.50.50.X ,物理的设为192.168.100.X (实际上物理的这个,是自动获取的,为了上外网)
VPC和物理机,以及VPC与VPC之间都能ping通。也能与其他物理机互通。
最近,我在装OCS,同样也需要实现上面这一行的效果。N台互通。
但,我用10.50.50.X这种设法就是不行。能与其他物理机通,但就是不能VPC之间互相ping通。
因为我想只用一个网卡了。双网卡,对OCS来说有问题。至少,我不需要。
通过N次的查找资料,未果。
在这样的资料提示下:
“
我们通常都是通过Ping命令来初步诊断网络状况的,但在Virtual PC的共享网络方式,Ping命令会碰到以下问题:
1. Ping 192.168.131.254 不会有回应
在Virtual PC 共享网络方式下,网关192.168.131.254对Ping命令不进行回应的,这是在软件设计时如此设定的。虽然不响应,但是网络连接还是工作的。因此在共享方式下,虚拟机中不能使用Ping 192.168.131.254网关来判断网络是否完好。
”
我想到了改为192打头的来试试,俗称C类网。
一试就成功了。
特此记一下。免得其他人搜解决办法时,搜不到。故放到网上。
VPC这家伙,MS这家伙,都没有写资料出来。
亏我上午还高兴的认为MS将SQL Uninstall的fatal error资料都写得那么精彩。咆。。。
===
顺便再帖个相关资料:
地址分配对应用来说更多的是如何理解为什么会这样分配给你ip地址,需要自己做ip规划的机会是很少的,除非是私有的大型的网络,真正需要考虑大规模ip规划的工程师在全国应该不会超过3位数。
1、IP地址
IP地址标识着网络中一个系统的位置。我们知道每个IP地址都是由两部分组成的:网络号和主机号。其中网络号标识一个物理的网络,同一个网络上所有主机需要同一个网络号,该号在互联网中是唯一的;而主机号确定网络中的一个工作端、服务器、路由器其它TCP/IP主机。对于同一个网络号来说,主机号是唯一的。每个TCP/IP主机由一个逻辑IP地址确定。
网络号和主机号
IP地址有两种表示形式:二进制表示(1和0太多了就搞不清)和点分十进制表示。每个IP地址的长度为4字节,由四个8位域组成,我们通常称之为八位体。八位体由句点.分开,表示为一个0-255之间的十进制数。一个IP地址的4个域分别标明了网络号和主机号。
2、地址类型
为适应不同大小的网络,internet定义了5种IP地址类型。
可以通过IP地址的前八位来确定地址的类型:
类型 IP形式 网络号 主机号
A类 w.x.y.z w x.y.z w时1——126
B类 w.x.y.z w.x y.z w是128——191
C类 w.x.y.z w.x.y z w是192——223
我们来看一下这5类地址:
A类地址:可以拥有很大数量的主机,最高位为0,紧跟的7位表示网络号,余24位表示主机号,总共允许有126个网络。
B类地址:被分配到中等规模和大规模的网络中,最高两位总被置于二进制的10,允许有16384个网络。
C类地址:被用于局域网。高三位被置为二进制的110,允许大约200万个网络。
D类地址:被用于多路广播组用户,高四位总被置为1110,余下的位用于标明客户机所属的组。
E类地址是一种仅供试验的地址。
私有ip范围,这主要是提供给企业内部网络建设时使用的ip地址,这些ip地址不会出现在internet 上,用户在考虑内部ip设置是可以直接使用,而不需要申请,而且从外部业不可以访问这些ip地址,实际使用的过程中需要在内部网络和外部网络之间设置nat服务器。
10.0.0.0 - 10.255.255.255 or 10.0.0.0/8
172.16.0.0 - 172.31.255.255 0r 172.16.0.0/12
192.168.0.0- 192.168.255.255 or 192.168.0.0/16
3、地址分配指南
在分配网络号和主机号时应遵守以下几条准则:
(1)网络号不能为127。大家知道该标识号被保留作回路及诊断功能,还记得平时ping
127.0.0.1?
(2)不能将网络号和主机号的各位均置1。如果每一位都是1的话,该地址会被解释为网内广播而不是一个主机号。(TCP/IP是一个可广播的协议嘛)
(3)相应于上面一条,各位均不能置0,否则该地址被解释为“就是本网络”。
(4)对于本网络来说,主机号应该是唯一。(否则会出现IP地址已分配或有冲突之类的错误)
分配网络号
对于每个网络以及广域连接,必须有唯一的网络号,主机号用于区分同一物理网络中的不同主机。如果网络由路由器连接,则每个广域连接都需要唯一的网络号。
分配主机号
主机号用于区分同一网络中不同的主机,并且主机号应该是唯一的。所有的主机包括路由器间的接口,都应该有唯一的网络号。路由器的主机号,要配置成工作站的缺省网关地址。
有效的主机号
A类:w.0.0.1--w.255.255.254
B类:w.x.0.1--w.x.255.254
C类:w.x.y.1--w.x.y.254
4、子网屏蔽和IP地址
TCP/IP上的每台主机都需要用一个子网屏蔽号。它是一个4字节的地址,用来封装或“屏蔽”IP地址的一部分,以区分网络号和主机号。当网络还没有划分为子网时,可以使用缺省的子网屏蔽;当网络被划分为若干个子网时,就要使用自定义的子网屏蔽了。
缺省值
我们来看看缺省的子网屏蔽值,它用于一个还没有划分子网的网络。即使是在一个单段网络上,每台主机也都需要这样的缺省值。
它的形式依赖于网络的地址类型。在它的4个字节里,所有对应网络号的位都被置为1,于是每个八位体的十进制值都是255;所有对就主机号的位都置为0。例如:C类网地址192.168.0.1和相应的缺省屏蔽值255.255.255.0。
变长子网
由于固定的abc方式分配ip地址存在很大的浪费,所以现在使用很多的子网分配方式采用变场子网的形式,可以更加的灵活。
确定数据包的目的地址
我们说把屏蔽值和IP地址值做“与”的操作其实是一个内部过程,它用来确定一个数据包是传给本地还是远程网络上的主机。其相应的操作过程是这样的:当TCP/IP初始化时,主机的IP地址和子网屏蔽值相“与”。在数据包被发送之前,再把目的地址也和屏蔽值作“与”,这样如果发现源IP地址和目的IP地址相匹配,IP协议就知道数据包属于本地网上的某台主机;否则数据包将被送到路由器上。
注:我们知道“与”操作是将IP地址中的每一位与子网屏蔽中相应的位按逻辑与作比较。
建立子网
1、 子网简介
一个网络实际上可能会有多个物理网段,我们把这些网段称之为子网,其使用的IP地址是由某个网络号派生而得到的。
将一个网络划分成若干个子网,需要使用不同的网络号或子网号。当然了,划分子网有它的优点,通过划分子网,每个单位可以将复杂的物理网段连接成一个网络,并且可以:
(1) 混合使用多种技术,比如以太网和令牌环网。(最流行的两种接口都支持了哦)
(2) 克服当前技术的限制,比如突破每段主机的最大数量限制。
(3) 通过重定向传输以及减少广播等传输方式以减轻网络的拥挤。
实现子网划分
在动手划分子网之前,我们一定要先分析一下自己的需求以及将来的规划。一般情况下我们遵循这样的准则:
(1) 确定网络中的物理段数量。(就是子网个数嘛)
(2) 确定每个子网需要的主机数。注意一个主机至少一个IP地址。
(3) 基于此需求,定义:整个网络的子网屏蔽、每个子网唯一的子网号和每个子网的主机号范围。
子网屏蔽位
在定义一个子网屏蔽之前,确定一下将来需要的子网数量及每子网的主机数是必不可少的一步。因为当更多的位用于子网屏蔽时,就有更多的可用子网了,但每个子网中的主机数将减少。(这和定义IP地址的概念正好相反)
2、定义子网屏蔽
将网络划分成若干个子网时,必须要定义好子网屏蔽。我们来看看定义的步骤:
(1)确定物理网段也就是子网的个数,并将这个数字转换成二进制数。比如B类地址,分6个子网就是110。
(2)计算物理网段数(子网数)的二进制位数,这里是110,所以需要3位。
(3)以高位顺序(从左到右)将这个反码转换成相应的十进制值,因为需要3位,就将主机号前3位作为子网号,这里是11100000,所以屏蔽就是255.255.224.0。
3、定义子网号
子网号与子网屏蔽的位数相同。
(1)列出子网号按高到低的顺序使用的位数。例如子网屏蔽使用了3位,二进制值是11100000。
(2)将最低的一位1转换成十进制,用这个值来定义子网的增量。这个例子中是1110,所以增量是32。
(3)用这个增量迭加从0开始的子网号,直到下一个值为256。这个例子中就是w.x.32.1-w.x.63.254、w.x.64.1-w.x.127.254等。
4、定义子网中的主机号
从上面的例子看出,一旦定义了子网号,就已经确定了每个子网的主机号了。我们在做每次增量后得出的值表明了子网中主机号范围的起始值。
确定每个子网中的主机数目
(1)计算主机号可用的位数。例如在B类网中用3位定义了网络号,那么余下的13位定义了主机号。
(2)将这个余下的位数也就是主机号转换为十进制,再减去1。例如13位值1111111111111转换为十进制的话就是8191,所以这个网络中每个子网的主机数就是8190了。
posted @
2008-09-27 22:40 花纯春 阅读(130) |
评论 (2) |
编辑
word 2007开多窗口时,切换窗口极慢的解决办法
office 2007最近用得是越来越冒火,就因为2GB内存的电脑,居然看word文档,切换窗口会卡!!
后来找到原因。如此解决。我只取消了其中一个,就是PDF。
Word 2007 切换慢的原因及解决方法
Word2007打开多个文档后,互相切换时系统反应慢的原因及解决办法:最近用word2007编辑文档时,忽然发现在两个文档之间切换时word反应迟钝,要好几秒才能对文档进行编辑。记得以前刚装好word2007时没有这个现象啊,互相切换根本不会延迟啊,百思不得其解。
解决方法:
运行word,在加载项禁用一些软件的的加载项。再打开两个文档,互相切换,爽,再也没有延迟了。
原文首发:http://anforen.5d6d.com/redirect.php?tid=61&goto=lastpost#lastpost
posted @
2008-09-23 17:45 花纯春 阅读(107) |
评论 (0) |
编辑
摘要: 简言之,就是改了机器名,而SERVER中的名还是以前的,so...
阅读全文
posted @
2008-09-23 17:41 花纯春 阅读(132) |
评论 (0) |
编辑
摘要: 在VPC中使用回环网的原因和操作步骤!Microsoft Virtual PC Tip - Using the Microsoft Loopback Adapter
阅读全文
posted @
2008-09-23 17:01 花纯春 阅读(87) |
评论 (0) |
编辑
有朋友问起,我很久没发文章了,是啊,最近在不断的换学新东西 学,也没什么好发的。只有发些安装部署类的了。
专业IT顾问写的教程 一步一步 截图 安装OCS 很详细
现在,我正在照这教程来装OCS。
全程记录在 安福瑞论坛 的OCS版帖子中。现在喜欢上用这论坛了。速度快,操作人性化...
现转部分内容到博客上来,那边帖子不断更新中。
AdminPak.exe在windows 2003下安装失败
AdminPak.exe在windows 2003下安装失败,我可是用的Windows server 2003 R2版本啊。
最早是按国内的一篇教程来安装的
直接在DC上安装了,因为我用的英文的操作系统,而安装的是中文的OCS,安装后,即也没有提示成功,也没有提供失败,整个就是没反应。也不知是否改动了域控的设置。现在照这个英文的来安装,就在另一台VPC虚拟机上安装了。好慢啊,现在进度条才3%。
也没有出现部署向导。
DC上是先装了证书服务和提升域为2003本地模式的。
原帖点上面的URL。
posted @
2008-09-23 10:38 花纯春 阅读(132) |
评论 (0) |
编辑
今天,成都天气真热,极度的闷热,预报的下暴雨,结果一点雨星也没有。专家真TMD成砖家了。
很久没有写博文了,因为我最近作了个称作“安福瑞论坛”的小站。因为我喜欢古代的“瑞福祥”,所以取这个名。
上面什么内容都放,当然除了非法的哈。
随时,可开新版。速度和版本都比BLOG要好。
所以,有很多新的随想和资料,我都放上面了。故而博客上就没少内容了。
欢迎您来作版主。
网址:http://anforen.5d6d.com/
posted @
2008-09-23 00:31 花纯春 阅读(15) |
评论 (0) |
编辑
Oracle11g之实用技术--将数据插入Oracle数据库时如何得到其rowId
Oracle11g有诸多的新特性,相信各位已经从很多渠道了解到了(注:还不清楚的请访问http://wmdata.com.cn/oracle/11g/index.asp?froms=blog),在此,我重点介绍一下如何在Oracle11g中插入数据时得到RowId,并公布一下,才发现的小秘密。
在有些应用场景下,我们需要在将数据插入到数据库时,返回rowId。Oracle有一条返回语句。其语法如下:
INSERT INTO <table_name>
(column_list)
VALUES
(values_list)
RETURNING <value_name>
INTO <variable_name>;
但在插入数据后,如何得到rowId呢?
在JDBC中,可以使用Callback语句去执行Procedure,因此,我们可以从连接对象产生Callback语句,并执行插入命令的SQL脚本,这样以从对象得到返回值。这个关键是如何写这条插入语句?并且如何去调用语句以及如何得到返回值。
以下是我的测试代码。
创建测试数据库
创建一个表FI_T_USER,这个表包含2字段,第一个是主键USER_ID,另一个是USER_NAME。创建语句如下:
create table FI_T_USER(
USER_ID varchar2(20) primary key,
USER_NAME varchar2(100)
);
写测试代码
以下是我的测试代码:
/*
* File name: TestInsertReturnRowId.java
*
* Version: v1.0
*
*
*/
package test.com.sinosoft.database;
import java.sql.*;
import oracle.jdbc.OracleTypes;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.sinosoft.database.DBConnectionPool;
import com.sinosoft.database.SqlQueryUtils;
import com.sinosoft.exception.SDBException;
/**
*
*
* 测试调用JDBC,往Oracle中插入数据,返回对应的ROWID
*/
public class TestInsertReturnRowId {
private static final Log log = LogFactory
.getLog(TestInsertReturnRowId.class);
public static void main(String[] args) {
TestInsertReturnRowId tester = new TestInsertReturnRowId();
String rowId = tester.insertUser("Stephen", "liwp");
System.out.println("The rowId is:" + rowId);
}
public String insertUser(String userId, String userName) {
if (StringUtils.isEmpty(userId) || StringUtils.isEmpty(userName)) {
log.error("Please specify the userId and userName");
return null;
}
// check whether the user has already in the database
String querySQL = "select count(1) as cnt from FI_T_USER where USER_ID = '"
+ userId + "'";
// insert statement
String insertSQL = "begin insert into FI_T_USER(USER_ID, USER_NAME) values(?,?) return rowid into ?;end;";
Connection con = DBConnectionPool.getConnection("test");
if (con == null) {
log.error("Error on get the connection!");
return null;
}
try {
int rowCount = SqlQueryUtils.getIntValue(querySQL, con);
if (rowCount != 0) {
log.error("User with userId = " + userId + " already exists!");
return null;
}
// insert the data to the database
CallableStatement cs = con.prepareCall(insertSQL);
cs.setString(1, userId);
cs.setString(2, userName);
cs.registerOutParameter(3, OracleTypes.VARCHAR);
cs.execute();
String rowId = cs.getString(3);
return rowId;
} catch (SQLException e) {
e.printStackTrace();
} catch (SDBException e) {
e.printStackTrace();
} finally {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return null;
}
}
这里面很重要的代码是指定插入SQL脚本这句:
String insertSQL = "begin insert into FI_T_USER(USER_ID, USER_NAME) values(?,?) return rowid into ?;end;";
接下来的关键是,注册输出参数,并在执行语句后得到这个参数。
这些代码非常有用,不仅能在Oracle11g上使用,还可支持Oracle10和Oracle 9.2。
好了,本文开头所述,我发现的这个Oracle11g的秘密就是:
Oracle11g能在将数据导出备份时压缩数据,并且效率惊人。据Oracle11g白皮书中介绍,压缩率可达到74.67% , 本文主要介绍的是在Oracle11g中的实用技巧—插入数据时取得RowId,至于压缩嘛,就下次有机会再写了。
posted @
2008-09-19 12:36 花纯春 阅读(24) |
评论 (0) |
编辑