PR是英文Pagerank 的缩写形式,Pagerank取自Google的创始人LarryPage,它是Google排名运算法则(排名公式)的一部分,Pagerank是Google对网页重要性的评估,是Google用来衡量一个网站的好坏的唯一标准。PR值的级别从1到10级,10级为满分。PR值越高说明该网页越受欢迎。那么PR值都受那些因素影响呢?
一、提高网站外部链接的质量和数量
在计算网站排名时,Pagerank会将网站的外部链接数考虑进去。
PR分值的计算公式: PR(A)=(1-D) + D*(PR(t1)/C(t1))
D表示阻尼因数一般是0.85。
PR(t1)表示网站的PR值
C(t1)表示网站对外的链接数
假设一个PR值为4的网站,对外的链接数为10个,则计算公式如下:
PR(A) = (1-D) + D*(PR(t1)/C(t1))
PR(A) = (1-0.85) + 0.85*(4/10)
PR(A) = 0.15 + 0.85*0.4
PR(A) = 0.15 + 0.34
PR(A) = 0.49
这样每一个链接的网站就得到了0.49的PR分值了。如果一个网站外部链接的页面PR值是零,那么就可以得0.15的PR值,要是这个页面没被Google收入或没有RP值那就不计算了。最好是找那些PR值高且外部链接数又少的网站,如果没有那就积少成多,多增加网站外部链接。
注意:如果这个网站没有被Google收入,可能是作弊被K了,最好不要和它做连接。一般建站很久了,没被收入的多是被K过了。
二、被知名网络目录收录
Google的Pagerank系统对有些门户网络目录如DMOZ,Yahoo和Looksmart尤为器重。被这些目录收入后,PR值会立即得到提升,但要被这些目录收入是很难的,当然有钱什么都好办。对大多数人来说这方法不实用。
总结:最实用的方法是增加网站外部链接的质量和数量
DataTable dt = dataTable.Clone();
dt.Rows.Clear();
DataRow[] rows = dataTable.Select(String.Empty, "ArticleID Desc");
foreach (DataRow row in rows)
{
dt.ImportRow(row); //数据导入新的DataTable中
}
在 WinForms 中,有时要执行耗时的操作,在该操作未完成之前操作用户界面,会导致用户界面停止响应。
解决的方法就是新开一个线程,把耗时的操作放到线程中执行,这样就可以在用户界面上进行其它操作。
新建线程可以用 Thread 类,可以实现多线程同时操作,简单的可以通过 BackgroundWorker 类实现。
用 BackgroundWorker 类执行耗时的操作
BackgroundWorker 类在 System.ComponentModel 命名空间下。
VS 的工具箱时有一个 BackgroundWorker 组件,就是这个类。
常用方法
1.RunWorkerAsync
开始执行后台操作。引发 DoWork 事件
2.CancelAsync
请求取消挂起的后台操作。
注意:这个方法是将 CancellationPending 属性设置为 true,并不会终止后台操作。在后台操作中要检查 CancellationPending 属性,来决定是否要继续执行耗时的操作。
3.ReportProgress
引发 ProgressChanged 事件。
常用属性
1.CancellationPending
指示应用程序是否已请求取消后台操作。
只读属性,默认为 false,当执行了 CancelAsync 方法后,值为 true。
2.WorkerSupportsCancellation
指示是否支持异步取消。要执行 CancelAsync 方法,需要先设置该属性为 true。
3.WorkerReportsProgress
指示是否能报告进度。要执行 ReportProgress 方法,需要先设置该属性为 true。
常用事件
1.DoWork
调用 RunWorkerAsync 方法时发生。
2.RunWorkerCompleted
后台操作已完成、被取消或引发异常时发生。
3.ProgressChanged
调用 ReportProgress 方法时发生。
例子
private BackgroundWorker backgroundWorker = new BackgroundWorker();
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker.WorkerReportsProgress = true;
backgroundWorker.WorkerSupportsCancellation = true;
// 绑定执行的后台操作
backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork);
// 绑定后台操作完成后执行的方法
backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker_RunWorkerCompleted);
// 控制进度的方法
backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker_ProgressChanged);
// 引发 DoWork 事件,这时就是在线程中执行 backgroundWorker_DoWork 方法
backgroundWorker.RunWorkerAsync();
button1.Enabled = false;
}
private void button2_Click(object sender, EventArgs e)
{
backgroundWorker.CancelAsync(); // 请求取消挂起的后台操作
}
// 这里不可以访问用户界面上的控件
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
System.Threading.Thread.Sleep(5000);
// 报告进度,引发 ProgressChanged 事件
backgroundWorker.ReportProgress(50); // 这里完成了50%
if (!backgroundWorker.CancellationPending) // 判断用户是否执行了 CancelAsync 方法
{
System.Threading.Thread.Sleep(5000);
}
else
{
MessageBox.Show("中止了。");
}
}
private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// 这里可以访问用户界面上的控件
button1.Enabled = true;
}
private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
// 一般通过 ProgressBar 类来显示进度
MessageBox.Show(e.ProgressPercentage.ToString());
// e.ProgressPercentage、e.UserState
}
<style type="text/css">
* { margin:0; padding:0; }
.PicFrame { width:300px; height:200px; overflow:hidden; border:1px solid #000; }
.PicFrame { line-height:200px; position:relative; text-align:center; }
.PicFrame p { position:static; top:50%; vertical-align:middle; }
.PicFrame p { *position:absolute; } /* IE */
.PicFrame p img { position:static; top:-50%; left:-50%; vertical-align:middle; }
.PicFrame p img { *position:relative; } /* IE */
</style>
<div class="PicFrame"><p><img src="http://www.baidu.com/img/baidu_logo.gif" /></p></div>
IE 下说明:
一、DIV 对象(position:relative;),P 对象(position:absolute; top:50%;),这使 P 对象的左角是 DIV 对象的中心。
如下:
<div class="PicFrame"><p style="border:2px dotted red;width:100px;"></p></div>
二、IMG 对象(position:relative; top:-50%; left:-50%;)在 P 对象中,向左移动 50%,向上移动 50%,刚好使它的中心位于P 对象的左角,既是DIV对象的中心了。
如下:
<div class="PicFrame"><p><img src="http://www.baidu.com/img/baidu_logo.gif" /></p></div>
<a onclick="Click()">点击这里</a>
<script language="JavaScript">
<!--
function Click()
{
var evt = GetEvent();
alert(evt);
}
// 返回 event 对象
function GetEvent()
{
if(document.all) // IE
{
return window.event;
}
func = GetEvent.caller; // 返回调用本函数的函数
while(func != null)
{
// Firefox 中一个隐含的对象 arguments,第一个参数为 event 对象
var arg0 = func.arguments[0];
alert('参数长度:' + func.arguments.length);
if(arg0)
{
if((arg0.constructor == Event || arg0.constructor == MouseEvent)
||(typeof(arg0) == "object" && arg0.preventDefault && arg0.stopPropagation))
{
return arg0;
}
}
func = func.caller;
}
return null;
}
//-->
</script>
每次要使用MySql中的一些工具,比如要备份数据库,都要先运行CMD,再进入MySql所在目录,做多了就觉得麻烦。
想出了一个快捷的方法,只要双击一下批处理文件(bat),就打开CMD进入指定的目录。
现实方法
1.创建一个文本文件,重命名为 MySql.bat
2.在 MySql.bat 文件中输入下面代码
@Echo Off
CD\
D:
CD D:\Program Files\MySQL\MySQL Server 5.0\bin
CMD
我的MySql安装目录为 D:\Program Files\MySQL\MySQL Server 5.0
这样双击 MySql.bat 后,就运行CMD,并且所在的目录是 D:\Program Files\MySQL\MySQL Server 5.0\bin
其它程序也如此。
用 Directory.GetFiles 获取目录中所有文件,返回的是一个数组,里面存放的是所有文件的名称
这个数组中文件的顺序和打开目录时看到的所有文件显示的顺序不一样。
猜想 Directory.GetFiles 返回的结果是没有排序的,我们打开目录时看到的文件列表是有排序的,默认按名称排序的。
所有解决的放法,是对返回结果的数组进行排序。
string[] array = Directory.GetFiles(path);
Array.Sort(array); // 这样就进行了排序
一、需要实例的类
<script language="JavaScript">
<!--
function Car(name, color)
{
this.Name = name;
this.Color = color;
Car.prototype.Show = function()
{
alert('我是' + this.Name);
};
}
var car = new Car('宝马', '红色');
car.Show();
alert(car.Color + '的' + car.Name);
//-->
</script>
二、静态类
<script language="JavaScript">
<!--
var Car =
{
Name : '宝马',
Color : '红色',
ChangeColor : function(color)
{
this.Color = color;
}
}
Car.ChangeColor('白色');
alert(Car.Color + '的' + Car.Name);
//-->
</script>
<SCRIPT LANGUAGE="JavaScript">
<!--
// Unicode 中汉字编码范围:4E00 - 9FA5
var startNum = HexToInt('4E00'); // 开始
var endNum = HexToInt('9FA5'); // 结束
var text = '';
var cols = 16; // 一行十六个
for (var i = startNum; i < endNum + 1; i++)
{
if (cols == 0)
{
cols = 16;
text += '<br/>';
}
text += String.fromCharCode(i);
cols--;
}
document.write('<div style="font-size: 50px;">');
document.write(text);
document.write('</div>');
// 十六进制转十进制
function HexToInt(s)
{
return parseInt(s,16);
}
// 十进制转十六进制
function IntToHex(s)
{
return s.toString(16);
}
//-->
</SCRIPT>
private void RAR()
{
// 把WinRAR目录复制到网站目录下。
string pathRoot = Server.MapPath("/");
string winRAR = pathRoot + "WinRAR/WinRAR.exe";
// 把Job.aspx和Default.aspx这两个文件添加到压缩包Job.rar中
string arguments = @"a Job.rar Job.aspx Default.aspx";
try
{
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = winRAR; // WinRaR.exe目录
info.Arguments = arguments; // 参数
info.WorkingDirectory = pathRoot;
Process p = new Process();
p.StartInfo = info;
p.Start();//启动
Response.Write("压缩成功。");
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}