当前位置: 首页 > news >正文

网站如何提升流量比较好写的电子商务论文题目

网站如何提升流量,比较好写的电子商务论文题目,电影网站如何做采集,宝塔为什么要安装Wordpress一、实验目的 1.实现一个流重组器——一个将字节流的小块 #xff08;称为子串或段 #xff09;按正确顺序组装成连续的字节流的模块#xff1b; 2.深入理解 TCP 协议的工作方式。 二、实验内容 编写一个名为StreamReassembler的数据结构#xff0c;它负责…一、实验目的 1.实现一个流重组器——一个将字节流的小块 称为子串或段 按正确顺序组装成连续的字节流的模块 2.深入理解 TCP 协议的工作方式。 二、实验内容 编写一个名为StreamReassembler的数据结构它负责重新组装数据。该结构将接收子串由一串字节和大数据流中该串的第一个字节的索引组成并提供一个名为ByteStream的输出其中所有的数据都被正确排序。 三、实验过程 在minnow目录下输入 git fetch 更新本地源仓库此处显示更新失败是因为本次实验开始时源仓库已经最新无需再次更新 输入git merge origin/check1-startercode获取Lab1 获取后输入cmake --build build来判断代码目前是否正常结果为正常 用文本编辑器查看./src/reassembler.hh 修改代码代码分析见注释 用文本编辑器查看./src/reassembler.cc 修改代码代码分析见注释 保存并编译 输入make check1测试程序 全部通过 四、实验体会 1.下图完整地显示了CS144 这门实验的结构 ByteStream 是我们已经在 Lab0 中实现完成的。 我们在Lab1 中实现一个流重组器一个将字节流的字串或者小段按照正确顺序来拼接回连续字节流的模块。 2.流重组器在 TCP 起到了相当重要的作用。迫于网络环境的限制TCP 发送者会将数据切割成一个个小段的数据分批发送。但这就可能带来一些新的问题数据在网络中传输时可能丢失、重排、多次重传等等。而TCP接收者就必须通过流重组器将接收到的这些重排重传等等的数据包重新组装成新的连续字节流。 3.在调试的时候所有的评测程序位于build/tests/中进入此位置进行调试。 五、代码附录 reassembler.hh #pragma once#include byte_stream.hh#include string #include list #include tupleclass Reassembler {bool had_last_ {}; // 是否已经插入了最后一个字符串uint64_t next_index_ {}; // 下一个要写入的字节的索引uint64_t buffer_size_ {}; // buffer_中的字节数std::liststd::tupleuint64_t, uint64_t, std::string buffer_ {};/*** \breif 将data推入output流.*/void push_to_output(std::string data, Writer output);/*** \brief 将data推入buffer暂存区.* \param first_index data的第一个字节的索引* \param last_index data的最后一个字节的索引* \param data 待推入的字符串, 下标为[first_index, last_index]闭区间*/void buffer_push( uint64_t first_index, uint64_t last_index, std::string data );/*** 尝试将buffer中的串推入output流.*/void buffer_pop(Writer output);public:/** Insert a new substring to be reassembled into a ByteStream.* first_index: the index of the first byte of the substring* data: the substring itself* is_last_substring: this substring represents the end of the stream* output: a mutable reference to the Writer** The Reassemblers job is to reassemble the indexed substrings (possibly out-of-order* and possibly overlapping) back into the original ByteStream. As soon as the Reassembler* learns the next byte in the stream, it should write it to the output.** If the Reassembler learns about bytes that fit within the streams available capacity* but cant yet be written (because earlier bytes remain unknown), it should store them* internally until the gaps are filled in.** The Reassembler should discard any bytes that lie beyond the streams available capacity* (i.e., bytes that couldnt be written even if earlier gaps get filled in).** The Reassembler should close the stream after writing the last byte.*/void insert( uint64_t first_index, std::string data, bool is_last_substring, Writer output );// How many bytes are stored in the Reassembler itself?uint64_t bytes_pending() const; };reassembler.cc #include reassembler.hh#include ranges #include algorithmusing namespace std; void Reassembler::push_to_output( std::string data, Writer output ) {next_index_ data.size();output.push( move( data ) ); }void Reassembler::buffer_push( uint64_t first_index, uint64_t last_index, std::string data ) {// 合并区间auto l first_index, r last_index;auto beg buffer_.begin(), end buffer_.end();auto lef lower_bound( beg, end, l, []( auto a, auto b ) { return get1( a ) b; } );auto rig upper_bound( lef, end, r, []( auto b, auto a ) { return get0( a ) b; } );if (lef ! end) l min( l, get0( *lef ) );if (rig ! beg) r max( r, get1( *prev( rig ) ) );// 当data已在buffer_中时直接返回if ( lef ! end get0( *lef ) l get1( *lef ) r ) {return;}buffer_size_ 1 r - l;if ( data.size() r - l 1 lef rig ) { // 当buffer_中没有data重叠的部分buffer_.emplace( rig, l, r, move( data ) );return;}string s( 1 r - l, 0 );for ( auto it : views::iota( lef, rig ) ) {auto [a, b, c] *it;buffer_size_ - c.size();ranges::copy(c, s.begin() a - l);}ranges::copy(data, s.begin() first_index - l);buffer_.emplace( buffer_.erase( lef, rig ), l, r, move( s ) ); }void Reassembler::buffer_pop( Writer output ) {while ( !buffer_.empty() get0( buffer_.front() ) next_index_ ) {auto [a, b, c] buffer_.front();buffer_size_ - c.size();push_to_output( move( c ), output ); buffer_.pop_front();}if ( had_last_ buffer_.empty() ) {output.close();} }void Reassembler::insert( uint64_t first_index, string data, bool is_last_substring, Writer output ) {if ( data.empty() ) {if ( is_last_substring ) {output.close();}return;}auto end_index first_index data.size(); // data: [first_index, end_index)auto last_index next_index_ output.available_capacity(); // 可用范围: [next_index_, last_index)if ( end_index next_index_ || first_index last_index ) {return; // 不在可用范围内, 直接返回}// 调整data的范围if ( last_index end_index ) {end_index last_index;data.resize( end_index - first_index );is_last_substring false;}if ( first_index next_index_ ) {data data.substr( next_index_ - first_index );first_index next_index_;}// 若data可以直接写入output, 则直接写入if ( first_index next_index_ ( buffer_.empty() || end_index get1( buffer_.front() ) 2 ) ) {if ( buffer_.size() ) { // 若重叠, 则调整data的范围data.resize( min( end_index, get0( buffer_.front() ) ) - first_index );}push_to_output( move( data ), output );} else { // 否则, 将data插入buffer_buffer_push( first_index, end_index - 1, data );}had_last_ | is_last_substring;// 尝试将buffer_中的数据写入outputbuffer_pop(output); }uint64_t Reassembler::bytes_pending() const {return buffer_size_; }
文章转载自:
http://www.morning.rcww.cn.gov.cn.rcww.cn
http://www.morning.mwlxk.cn.gov.cn.mwlxk.cn
http://www.morning.xxhc.cn.gov.cn.xxhc.cn
http://www.morning.rqqn.cn.gov.cn.rqqn.cn
http://www.morning.prmbn.cn.gov.cn.prmbn.cn
http://www.morning.zqwqy.cn.gov.cn.zqwqy.cn
http://www.morning.ykbgs.cn.gov.cn.ykbgs.cn
http://www.morning.yjqkk.cn.gov.cn.yjqkk.cn
http://www.morning.fhyhr.cn.gov.cn.fhyhr.cn
http://www.morning.pymff.cn.gov.cn.pymff.cn
http://www.morning.rlpmy.cn.gov.cn.rlpmy.cn
http://www.morning.hlyfn.cn.gov.cn.hlyfn.cn
http://www.morning.sjqpm.cn.gov.cn.sjqpm.cn
http://www.morning.nzmw.cn.gov.cn.nzmw.cn
http://www.morning.wschl.cn.gov.cn.wschl.cn
http://www.morning.qnftc.cn.gov.cn.qnftc.cn
http://www.morning.dthyq.cn.gov.cn.dthyq.cn
http://www.morning.hmbxd.cn.gov.cn.hmbxd.cn
http://www.morning.mdnnz.cn.gov.cn.mdnnz.cn
http://www.morning.qfths.cn.gov.cn.qfths.cn
http://www.morning.qfths.cn.gov.cn.qfths.cn
http://www.morning.bdqpl.cn.gov.cn.bdqpl.cn
http://www.morning.jzgxp.cn.gov.cn.jzgxp.cn
http://www.morning.njfgl.cn.gov.cn.njfgl.cn
http://www.morning.ctqbc.cn.gov.cn.ctqbc.cn
http://www.morning.owenzhi.com.gov.cn.owenzhi.com
http://www.morning.hcsnk.cn.gov.cn.hcsnk.cn
http://www.morning.nkbfc.cn.gov.cn.nkbfc.cn
http://www.morning.pqkgb.cn.gov.cn.pqkgb.cn
http://www.morning.jppdk.cn.gov.cn.jppdk.cn
http://www.morning.mydgr.cn.gov.cn.mydgr.cn
http://www.morning.nffwl.cn.gov.cn.nffwl.cn
http://www.morning.tmlhh.cn.gov.cn.tmlhh.cn
http://www.morning.zrbpx.cn.gov.cn.zrbpx.cn
http://www.morning.ylyzk.cn.gov.cn.ylyzk.cn
http://www.morning.zqybs.cn.gov.cn.zqybs.cn
http://www.morning.jwtjf.cn.gov.cn.jwtjf.cn
http://www.morning.fqssx.cn.gov.cn.fqssx.cn
http://www.morning.sqnrz.cn.gov.cn.sqnrz.cn
http://www.morning.phxdc.cn.gov.cn.phxdc.cn
http://www.morning.rmdwp.cn.gov.cn.rmdwp.cn
http://www.morning.gjlml.cn.gov.cn.gjlml.cn
http://www.morning.kfbth.cn.gov.cn.kfbth.cn
http://www.morning.clhyj.cn.gov.cn.clhyj.cn
http://www.morning.yghlr.cn.gov.cn.yghlr.cn
http://www.morning.plqkz.cn.gov.cn.plqkz.cn
http://www.morning.ljxxl.cn.gov.cn.ljxxl.cn
http://www.morning.kjnfs.cn.gov.cn.kjnfs.cn
http://www.morning.wmfny.cn.gov.cn.wmfny.cn
http://www.morning.wclxm.cn.gov.cn.wclxm.cn
http://www.morning.brtxg.cn.gov.cn.brtxg.cn
http://www.morning.rlns.cn.gov.cn.rlns.cn
http://www.morning.pctql.cn.gov.cn.pctql.cn
http://www.morning.hyryq.cn.gov.cn.hyryq.cn
http://www.morning.tlfzp.cn.gov.cn.tlfzp.cn
http://www.morning.jmwrj.cn.gov.cn.jmwrj.cn
http://www.morning.gjfym.cn.gov.cn.gjfym.cn
http://www.morning.rswfj.cn.gov.cn.rswfj.cn
http://www.morning.pcqxr.cn.gov.cn.pcqxr.cn
http://www.morning.rjhts.cn.gov.cn.rjhts.cn
http://www.morning.xbyyd.cn.gov.cn.xbyyd.cn
http://www.morning.ybqlb.cn.gov.cn.ybqlb.cn
http://www.morning.pffx.cn.gov.cn.pffx.cn
http://www.morning.mywnk.cn.gov.cn.mywnk.cn
http://www.morning.wprxm.cn.gov.cn.wprxm.cn
http://www.morning.lwrks.cn.gov.cn.lwrks.cn
http://www.morning.qyxwy.cn.gov.cn.qyxwy.cn
http://www.morning.tpyjr.cn.gov.cn.tpyjr.cn
http://www.morning.cnhgc.cn.gov.cn.cnhgc.cn
http://www.morning.gghhmi.cn.gov.cn.gghhmi.cn
http://www.morning.pqkyx.cn.gov.cn.pqkyx.cn
http://www.morning.mgfnt.cn.gov.cn.mgfnt.cn
http://www.morning.swwpl.cn.gov.cn.swwpl.cn
http://www.morning.gqnll.cn.gov.cn.gqnll.cn
http://www.morning.qrlsy.cn.gov.cn.qrlsy.cn
http://www.morning.sbrpz.cn.gov.cn.sbrpz.cn
http://www.morning.nrbcx.cn.gov.cn.nrbcx.cn
http://www.morning.crdtx.cn.gov.cn.crdtx.cn
http://www.morning.ltywr.cn.gov.cn.ltywr.cn
http://www.morning.sfnr.cn.gov.cn.sfnr.cn
http://www.tj-hxxt.cn/news/251164.html

相关文章:

  • 大方做网站海南房产网
  • 网站建设方案书制作流程sem竞价专员
  • 贵阳h5网站建设wordpress不显示图片
  • 郑州网站建设方案书抖音流量推广神器软件
  • 做网站和彩票的同步开奖怎么做手机下载视频网站模板下载
  • 建设网站的基本流程是什么小程序商店头像
  • 网站空间换了 使用原有域名二级域名网址查询
  • 花都网站设计都莱芜雪野湖有什么好玩的
  • 网站建设就选apache wordpress rewrite
  • 网站开发软件科技公司上海网络推广找哪家
  • 网站怎么做导航国家企业信用信息公示系统(山东)
  • 微网站搭建的步骤和技巧iis编辑网站绑定
  • 网站建公司简介电脑做网站服务器视频教程
  • 如何评估网站编程学习入门软件
  • 仿站多少钱网站域名备案更改吗
  • 网站开发与维护算什么职位做电影类网站收入怎么样
  • 怎么在网站做自己的产品广告品牌展示型网站有哪些
  • 网站制作报价维持地建网络前端好学还是后端好学
  • 艾艺的品牌网站设计seo站内优化公司
  • 网站后台培训网站建设专家有哪些
  • 网站建设的技术标准网站建设规范方案
  • 确定网站主题然后规划网站建设服务app开发的公司
  • 宁波市建设工程造价信息湖南正规竞价优化公司
  • 聊城市东昌府区建设路小学网站网站排名优化推广厦门
  • 如何获得网站求带商城的wordpress模板
  • 广州开发区控股集团有限公司seo搜索引擎官网
  • 抚州临川网站建设公众号怎么做文章编辑
  • 用自己的计算机做服务器建网站php个人网站简洁
  • wordpress设计模板安徽seo团队
  • 专业品牌设计网站建设出口家具东莞网站建设