合家安康,事业有成~~~
Archive for February 2007
祝大家新年快乐~~ 1 comment
合家安康,事业有成~~~
MSDN与VS.NET2003说法不一致了 Leave a comment
表示 32 位有符号的整数。
有关此类型所有成员的列表,请参阅 Int32 成员。
System.Object
System.ValueType
System.Int32
既然开始用BAIDU空间了 Leave a comment
既然开始用BAIDU空间了——其实我也不知道我能用它多少时间——那就总要写点东西来说说它。
不久以前写过一篇讨论我已经用过的各个不同BLOG系统的帖子(http://lostabaddon.spaces.live.com/blog/cns!EB06676D0B60BFBD!2504.entry),今天也就用同样的方式来看看BAIDU的这个空间怎么样。
首先,从最基本的BLOG功能入手。这方面BAIDU做得中规中矩,写的方面是应该有的都有,不应该有的一个没有,可有可无的绝对没有。是最基本也是最实用的套装组合。MS稍微所有的优势就在于写的方面有WLW和WLMD,这也是没办法的。
显示方面,也是,最简单最实用的组合,比MS好的就是不需要别人一定要注册为MSN成员。
管理方面,每个BLOG都有评论允许设定和帖子公开设定,这是比别的一些系统好的地方(比如MS就是一杆子打死型的)。不过MS也有一定的优势,就是“圈子权限”的设定,这样可以让部分人能看而部分人看不了。教育网BLOG的优点还是以前所说的,不同帖子的密码控制,虽然对实用型拥护来说这完全不必须,但是从我的角度来说还是很需要这样的功能的。
系统设定方面,还是MS的比较全面——有的时候甚至感觉是全面过了头——当然了,全面的部分理由是它需要和MS的MSN MESSENGER结合起来,这就要求它的功能要比别人的全面。
然后是STYLE方面。主题STYLE上,BAIDU和MS都很多姿多彩,但是BAIDU支持自创,这就比MS好了。似乎支持自创的不是很多,GOOGLEPAGE和ICQPAGE支持,不过这两个本来就是WEBPAGE系统,和BLOG不同,所以没有可比性。此外,BAIDU支持自传PIC,这个又比MS好了。布局方面和MS一致,但是可拓展栏上MS比较多比较好。
同样的,从WIDGET来看,MS SPACE支持的WIDGET相当多,许多还可以自创(OPERA也是),而这方面BAIDU显然没有——这也是主流,由此也可见MS的野心——想要改变主流,当然,这本身也是WEB2.0的一个趋势吧。
速度方面没话说,到底是过内服务器,速度再慢(比如QZONE)就太不象样了。
整合方面,BAIDU把自己所有已有的服务都整合了上去,但是,老实说,许多功能只是给人累赘的感觉而已,并不是太实用(这点要加上它自己在管理和控制方面的失败,使得BAIDU这个牌子已经不如当年那么响亮了——这点QQ已经彻底成了“榜样”了,QQ的牌子在我们这个不算很小的圈子里已经算是臭掉了)。
整体说来,BAIDU的这个空间集众家之长(有些是能力限制,集不了),一些地方还是相当出彩的,整体评价是好,和SINA、OPERA以及SPACE属于差不多的档次——这句话只是表明它比网海中的众多无名小站的BLOG系强而已。国外的比如WRITER和BLOGSPOT没用过,所以这里不好评价。
这里再度批判QZONE一次:能不能别老是更新QZONE程序啊?一个BLOG搞得这么复杂(都复杂到了一点用都没有的地方上去了)还被我找出过一个BUG,羞不羞啊。
VB+VC#,果然有搞头 Leave a comment
蛋炒饭 Leave a comment
一段代码,TSP问题的 Leave a comment
{
Paths=new ArrayList(num*8);
for(i=0;i<num*2+back;i++)Paths.Add(ps[i]);//将父代拉入自然繁殖场
MinL=ps[0].distance;
MaxL=MinL;
for(i=1;i<num*2+back;i++)
{
if(ps[i].distance>MinL)MinL=ps[i].distance;
if(ps[i].distance<MaxL)MaxL=ps[i].distance;
}
A=(MaxN[index]-MinN[index])/(MaxL-MinL);//繁殖量生成函数参数
B=(MinN[index]*MaxL-MaxN[index]*MinL)/(MaxL-MinL);
for(i=0;i<num*2+back;i++)//父代变异后生成子代,并将子代拉入繁殖场
{
int fz=(int)(ps[i].distance*A+B);//计算父代的可繁殖量
if(fz<1)fz=1;
for(t=0;t<fz;t++)//交换变异
{
#region 第一种变异
int sa,sb,la,lb;
int[] np=new int[num];
la=(int)(num/3*rd.NextDouble()*rd.NextDouble());//基因段A长度
lb=(int)(num/3*rd.NextDouble()*rd.NextDouble());//基因段B长度
sa=rd.Next(num-la);//基因段A位置
sb=rd.Next(num-la-lb);//基因段B位置
if(sb==sa)sb++;
if(la==0)la=1;
if(lb==0)lb=1;
if(sb>sa)sb+=la;
if(sb<sa&&sb+lb>sa)sb-=lb;
if(sb<0)sb+=num;
if(sb+lb>sa+num)sb-=(sb+lb-sa-num);
if(sb>=num)sb-=num;
if(sb+lb<=num)//没有回到头上的情况
{
if(sa>sb)//A段在B段后
{
for(j=0;j<sb;j++)np[j]=ps[i][j];//B段前不交换部分
if(rd.NextDouble()>0.5)for(j=0;j<la;j++)np[sb+j]=ps[i][sa+j];//B段换A段正序
else for(j=0;j<la;j++)np[sb+j]=ps[i][sa+la-1-j];//B段换A段反序
for(j=0;j<sa-sb-lb;j++)np[sb+la+j]=ps[i][sb+lb+j];//A段与B段中间不交换部分
if(rd.NextDouble()>0.5)for(j=0;j<lb;j++)np[sa+la-lb+j]=ps[i][sb+j];//A段换B段正序
else for(j=0;j<lb;j++)np[sa+la-lb+j]=ps[i][sb+lb-1-j];//A段换B段反序
for(j=0;j<num-sa-la;j++)np[sa+la+j]=ps[i][sa+la+j];//A段后不交换部分
}
else
{
for(j=0;j<sa;j++)np[j]=ps[i][j];//A段前不交换部分
if(rd.NextDouble()>0.5)for(j=0;j<lb;j++)np[sa+j]=ps[i][sb+j];//A段换B段正序
else for(j=0;j<lb;j++)np[sa+j]=ps[i][sb+lb-1-j];//A段换B段反序
for(j=0;j<sb-sa-la;j++)np[sa+lb+j]=ps[i][sa+la+j];//B段与A段中间不交换部分
if(rd.NextDouble()>0.5)for(j=0;j<la;j++)np[sb+lb-la+j]=ps[i][sa+j];//B段换A段正序
else for(j=0;j<la;j++)np[sb+lb-la+j]=ps[i][sa+la-1-j];//B段换A段反序
for(j=0;j<num-sb-lb;j++)np[sb+lb+j]=ps[i][sb+lb+j];//B段后不交换部分
}
}
else
{
int[] pp=new int[num];
int m=sb+lb-num;
for(j=0;j<num-m;j++)pp[j]=ps[i][j+m];
for(j=0;j<m;j++)pp[num-m+j]=ps[i][j];
sa-=m;
sb-=m;
for(j=0;j<sa;j++)np[j]=pp[j];//A段前不交换部分
if(rd.NextDouble()>0.5)for(j=0;j<lb;j++)np[sa+j]=pp[sb+j];//A段换B段正序
else for(j=0;j<lb;j++)np[sa+j]=pp[sb+lb-1-j];//A段换B段反序
for(j=0;j<sb-sa-la;j++)np[sa+lb+j]=pp[sa+la+j];//B段与A段中间不交换部分
if(rd.NextDouble()>0.5)for(j=0;j<la;j++)np[sb+lb-la+j]=pp[sa+j];//B段换A段正序
else for(j=0;j<la;j++)np[sb+lb-la+j]=pp[sa+la-1-j];//B段换A段反序
for(j=0;j<num-sb-lb;j++)np[sb+lb+j]=pp[sb+lb+j];//B段后不交换部分
}//基因变异完毕
Path tmp=ps[i].Clone();
for(j=0;j<num;j++)tmp[j]=np[j];
tmp.Distance(pts);
Paths.Add(tmp);//装入繁殖场
#endregion
}
for(t=0;t<fz*2/3;t++)//倒序变异
{
#region 第二种变异
int sa,la;
Path tmp=ps[i].Clone();
sa=rd.Next(num);
la=rd.Next(num/2);
int[] part=new int[la];
if(sa+la<=num)
{
for(j=0;j<la;j++)part[j]=tmp[sa+la-1-j];
for(j=0;j<la;j++)tmp[sa+j]=part[j];
}
else
{
int m=sa+la-num;
for(j=sa;j<num;j++)part[j-sa]=tmp[j];
for(j=0;j<m;j++)part[num-sa+j]=tmp[j];
for(j=m;j<sa;j++)tmp[j-m]=tmp[j];
for(j=0;j<la;j++)tmp[sa-m+j]=part[la-1-j];
}
tmp.Distance(pts);
Paths.Add(tmp);
#endregion
}
for(t=0;t<fz*2/3;t++)//段落移位
{
#region 第三种变异
int sa,la,ta;
sa=rd.Next(num);
la=rd.Next(num/2);
ta=rd.Next(num-la);
int[] parta,partb;
parta=new int[la];
partb=new int[num-la];
if(sa+la<=num)
{
for(j=0;j<la;j++)parta[j]=ps[i][sa+j];
for(j=0;j<num-sa-la;j++)partb[j]=ps[i][sa+la+j];
for(j=num-sa-la;j<num-la;j++)partb[j]=ps[i][j+sa+la-num];
}
else
{
for(j=0;j<num-sa;j++)parta[j]=ps[i][sa+j];
for(j=num-sa;j<la;j++)parta[j]=ps[i][j-num+sa];
for(j=0;j<num-la;j++)partb[j]=ps[i][sa+la-num+j];
}
Path tmp=ps[i].Clone();
for(j=0;j<ta;j++)tmp[j]=partb[j];
for(j=0;j<la;j++)tmp[ta+j]=parta[j];
for(j=0;j<num-la-ta;j++)tmp[ta+la+j]=partb[ta+j];
tmp.Distance(pts);
Paths.Add(tmp);
#endregion
}
}