当前位置:

首页 > 软件教程 > 使用Perl编写脚本来实现滑动窗口,每次以1格的步长滑动,统计窗口内的数据

使用Perl编写脚本来实现滑动窗口,每次以1格的步长滑动,统计窗口内的数据

用Perl语言写一个脚本实现滑动窗口比如窗口100格每次滑动1格统usestrict;#$win_width:窗口的宽度#$pos:当前窗口的位置,从1开始,$DNA_len-$win_width+1结束#$DNA:DNA序列my$DNA="agtgatgatagtagatagatagtataatagatagatagatatatgatagatagataaggaatagaagta";my$win_width=10;for(my$i=0;$i1,接收窗口=1;选择重传协议:发送窗口>1,接收窗口>1。滑动窗口

本文目录

    用Perl语言写一个脚本实现滑动窗口比如窗口100格每次滑动1格统

    用Perl语言写一个脚本实现滑动窗口比如窗口100格每次滑动1格统

    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

    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);

    }

    字符串匹配里面的滑动窗口是什么意思

    滑动窗口的概念

    滑动窗口(Sliding window)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。参见滑动窗口如何根据网络拥塞发送数据仿真视频。图片是一个滑动窗口的实例:

    滑动窗口协议是用来改善吞吐量的一种技术,即容许发送方在接收任何应答之前传送附加的包。接收方告诉发送方在某一时刻能送多少包(称窗口尺寸)。

    TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为0时,发送方一般不能再发送数据报,但有两种情况除外,一种情况是可以发送紧急数据,例如,允许用户终止在远端机上的运行进程。另一种情况是发送方可以发送一个1字节的数据报来通知接收方重新声明它希望接收的下一字节及发送方的滑动窗口大小。

    滑动窗口的机制

    滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。

    下面举例说明,假设发送窗口尺寸为2,接收窗口尺寸为1:

    分析:①初始态,发送方没有帧发出,发送窗口前后沿相重合。接收方0号窗口打开,等待接收0号帧;②发送方打开0号窗口,表示已发出0帧但尚确认返回信息。此时接收窗口状态不变;③发送方打开0、1号窗口,表示0、1号帧均在等待确认之列。至此,发送方打开的窗口数已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧。接收窗口此时状态仍未变;④接收方已收到0号帧,0号窗口关闭,1号窗口打开,表示准备接收1号帧。此时发送窗口状态不变;⑤发送方收到接收方发来的0号帧确认返回信息,关闭0号窗口,表示从重发表中删除0号帧。此时接收窗口状态仍不变;⑥发送方继续发送2号帧,2号窗口打开,表示2号帧也纳入待确认之列。至此,发送方打开的窗口又已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧,此时接收窗口状态仍不变;⑦接收方已收到1号帧,1号窗口关闭,2号窗口打开,表示准备接收2号帧。此时发送窗口状态不变;⑧发送方收到接收方发来的1号帧收毕的确认信息,关闭1号窗口,表示从重发表中删除1号帧。此时接收窗口状态仍不变。

    若从滑动窗口的观点来统一看待1比特滑动窗口、后退n及选择重传三种协议,它们的差别仅在于各自窗口尺寸的大小不同而已。1比特滑动窗口协议:发送窗口=1,接收窗口=1;后退n协议:发送窗口>1,接收窗口=1;选择重传协议:发送窗口>1,接收窗口>1。

    滑动窗口流量控制

    TCP的特点之一是提供体积可变的滑动窗口机制,支持端到端的流量控制。TCP的窗口以字节为单位进行调整,以适应接收方的处理能力。处理过程如下:

    TCP连接阶段,双方协商窗口尺寸,同时接收方预留数据缓存区;

    发送方根据协商的结果,发送符合窗口尺寸的数据字节流,并等待对方的确认;

    发送方根据确认信息,改变窗口的尺寸,增加或者减少发送未得到确认的字节流中的字节数。调整过程包括:如果出现发送拥塞,发送窗口缩小为原来的一半,同时将超时重传的时间间隔扩大一倍。

    滑动窗口机制为端到端设备间的数据传输提供了可靠的流量控制机制。然而,它只能在源端设备和目的端设备起作用,当网络中间设备(例如路由器等)发生拥塞时,滑动窗口机制将不起作用。

    C数组滑动滑动窗口

    队列么?.NET原生支持的.

    Queue q = new Queue(10);//10 个队列,FIFO

    for (int i = 0; i != 10; i++)

    {

    q.Enqueue(i);//先填满10个.

    }

    if (q.Count == 10)//如果填满了

    {

    q.Dequeue();//第一个出队列,如果不出队列,count就会变成11

    q.Enqueue(10);//进队列,Count仍保持10

    }

    Queue q = new Queue();//类似的还有LIFO,NET中的实现是Stack,Pop弹栈和Push压栈

    for (int i = 0; i != 100; i++)

    {

    if (q.Count == 10)//超过10个出队列

    {

    q.Dequeue();

    }

    q.Enqueue(i);

    }

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    软件教程
    相关文章 更多
    endnote怎么导入参考文献格式
    endnote怎么导入参考文献格式

    详解 Windows 端 EndNote 2025 如何导入期刊要求的参考文献格式。涵盖下载 .ens 文件、另存副本、勾选常用样式及在 Word 中切换输出样式的操作步骤,帮助作者快速适配投稿规范。

    typora怎么高亮 文本标记语法设置
    typora怎么高亮 文本标记语法设置

    本教程演示如何在 Windows 版 Typora 中开启 Highlight 高亮功能,通过双等号语法标记重点文本,并展示如何编辑、取消高亮及验证源码保存状态。

    讯飞智作平台 在线创作功能介绍
    讯飞智作平台 在线创作功能介绍

    了解讯飞智作平台的在线创作流程:从文字配音到数字人视频生成,再到AIGC工具箱的素材处理。通过具体案例演示如何选择合适的功能入口、调整参数及核对成品权益,适合需要快速制作音频或播报视频的用户参考。

    gemini 官网 入口网页版登录访问方法
    gemini 官网 入口网页版登录访问方法

    本文详细介绍 Gemini 官方网页版入口地址、个人与组织账号登录流程、运行环境要求、账号体系差异对比及常见访问异常的排查解决方法。

    正版steam官网入口登录下载安装操作教程
    正版steam官网入口登录下载安装操作教程

    针对初次接触Steam平台的玩家,提供正版Steam官网网址识别、客户端官方安装包下载、本地安装配置及账号安全注册登录的详细图文操作教程。

    鼠标宏设置软件怎么设置?详细操作教程
    鼠标宏设置软件怎么设置?详细操作教程

    针对各类支持驱动配置的鼠标,系统梳理鼠标宏设置软件的核心设置逻辑、全流程操作步骤、运行模式选择与排错验证方法,帮助读者准确掌握宏功能的配置与使用。

    endnote怎么插入文献 Word添加引文步骤
    endnote怎么插入文献 Word添加引文步骤

    详解如何在 Word 中使用 EndNote 插件插入文献引用。涵盖从库中搜索记录、插入引文、选择样式到更新参考文献表的步骤,确保引文格式准确且可随时更新。

    再漫画官网首页入口及在线观看方法
    再漫画官网首页入口及在线观看方法

    了解如何进入再漫画官网首页,并通过界面导览熟悉分类浏览、搜索查找及在线阅读器的基本使用方法,提升阅读体验。

    Codex自动审查、缓存与额度重置有什么区别?
    Codex自动审查、缓存与额度重置有什么区别?

    针对Codex近期更新引发的讨论,本文厘清自动审查的功能边界,区分即时额度恢复与留存重置卡的不同,帮助用户理性评估更新价值,避免对缓存和权益产生误解。

    讯飞绘文ai AI写作功能介绍
    讯飞绘文ai AI写作功能介绍

    了解讯飞绘文AI写作功能:涵盖选题推荐、智能起稿、风格设定、知识融合及稿件校对。通过社区活动案例,掌握从构思到排版的完整操作逻辑,提升内容创作效率。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。