发布时间:2023-12-19 12:39来源:www.sf1369.com作者:宇宇
窗口技术:
在理想的条件下,数据的传输是快速而有效地进行的。想象一下,如果发送方计算机在发送每一个是数据段之后都必须等待确认的话,数据的传输的速率就慢了。但在发送方传输数据段之后,以及在它从接收方接收到确认之前,有一段时间间隔,发送方可以利用这个间隔来发送更多的数据。所以,发送方机器在没有接收到对发送数据的确认时,被允许发送的数据段的数量(以字节计算),就称为“窗口”。
窗口用于控制未确认的数据段数量。
-----------------------------如有疑问,可继续追问,如果满意,请采纳,谢谢。
滑动窗口本质上是描述接受方(本地)的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。如果发送方收到接受方的窗口大小为0的TCP数据报,那么发送方将停止发送数据,等到接受方发送窗口大小不为0的数据报的到来
功能 滚动数据窗口控件的显示到指定行 该函数改变当前行但不改变当前列
语法 dwcontrol.scrolltorow ( row )
参数 dwcontrol 数据窗口控件名
row long类型 指明要滚动到哪一行 如果 row参数设置为 0 则滚动到第一行 如果row大于最后一行的行号 则滚动到最后一行
返回值 integer 函数执行成功时返回 1 发生错误时返回-1 如果任何参数的值为null 则 scrolltorow()函数返回null
用法 执行了 scrolltorow()函数后 指定的行成为新的当前行 如果该行已经显示在数据窗口中 即用户可以直接看到该行 那么显示行不会变化 如果该行不可见 则显
示行向所需方向滚动 以把当前行显示在数据窗口中scrolltorow()并不加亮 或称选中 当前行 如果想加亮当前行 请使用数据窗口控件的对象函数 selectrow()
scrolltorow()函数可能触发数据窗口的下述事件
use strict;
# $win_width: 窗口的宽度
# $pos: 当前窗口的位置,从1开始,$DNA_len-$win_width+1结束
# $DNA: DNA序列
my $DNA=agtgatgatagtagatagatagtataatagatagatagatatatgatagatagataaggaatagaagta;
my $win_width=10;
for(my $i=0;$i<length($DNA)-$win_width+1;$i++){
print calc($DNA,$win_width,$i+1).\n;
}
sub calc{
my ($DNA,$win_width,$pos)=@_;
$DNA=~s/\s+//g;
$DNA=uc($DNA);
if($DNA=~/[^ATGC]/){
print 非法字符;
return;
}
my $sub_DNA=substr($DNA,$pos-1,$win_width);
my @atgc=split(,$sub_DNA);
my %atgc; #atgc含量
map{$atgc{$_}++}@atgc;
return sprintf(%.2f,($atgc{G}+$atgc{C})/$win_width);
}