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

互联网趋势发展前景北京seo推广服务

互联网趋势发展前景,北京seo推广服务,网站开发洽谈客户话术,重庆市建设工程信息网查证件目录标题 1. 前言2. 软件设计流程思路3. 模拟测试3.1 分区准备工作3.2 模拟写数据3.3 测试 1. 前言 实际开发中经常需要存储数据, 无论是存储日志,还是二进制数据(图片,雷达数据或视频文件等), 不能一直存,是否存在一种策略: 当磁盘空间不足时…

目录标题

  • 1. 前言
  • 2. 软件设计流程思路
  • 3. 模拟测试
    • 3.1 分区准备工作
    • 3.2 模拟写数据
    • 3.3 测试

1. 前言


实际开发中经常需要存储数据, 无论是存储日志,还是二进制数据(图片,雷达数据或视频文件等), 不能一直存,是否存在一种策略:
当磁盘空间不足时,优先删除最开始写入的数据呢?

循环覆盖的策略应该有很多,这篇文章抛砖引玉,希望更多个伙伴给出更好的方案出来!

2. 软件设计流程思路

这里只提供思路,具体实现按照客户需求做多样化,最好写个抽象基类出来,后续可以多态各种需求。


  • 初始化(挂载点/循环覆盖阈值T, 每次覆盖后预留一定的比例,比如覆盖阈值75,当使用率到了75后,删除的比例为5,那么删除后比例为70,)
    • 策略有很多,看客户需求:
      • 按照比例删除, 比如超过阈值,删掉{超过部分+一定过度,大概为5%~10%比例均可}。
      • 按照时间删除,比如超过比例,删除掉最早日期的数据,如果日期内数据小,会导致删除频率高,这里多考量下多目录多文件情况下的事件复杂度(目录遍历) && CPU占用比例实际等,是否影响到系统性能。
      • 组合删除。
      • 空闲删除,某种方式设备休眠时做删除动作{主业务不启用等}。
  • 线程监测{按照比例删除流程}
    • 监测磁盘分区当前使用比例。
    • 比较使用比例和循环覆盖阈值T, 当大于阈值比例时, 计算需要删除的比例DT, 通过(总大小乘 DT )计算删除的数据大小。
    • 对磁盘文件做递归查询,将非目录文件部署到数组中(std::vector>。
    • 通过文件属性拿到写操作的时间戳, 通过STL的算法sort按照时间戳做降序/升序排序,得到 std::vector{sort}的数组。
    • 开始删除文件,这里需要注意std::vector<> erase坑。
      • 每次删除成功记录实际删除的大小。
      • 通过这个实际删除大小和理论删除对比,如果{>=}就停止, 调试线程开始。
    • 因为目录中的文件可能都删除了,所以需要检测空目录的情况,当有空目录就删除。

3. 模拟测试


3.1 分区准备工作

  • 通过fdisk工具分区,假设我们分1个区域/dev/mmcblk1p1
  • 格式化mkfs.ext4 /dev/mmcblk1p1
  • 挂载 mount -t ext4 /dev/mmcblk1p1 /mywork

3.2 模拟写数据

  • 格式化后分区大小为0
  • 使用dd命令写操作, 如下是写的一个自动化写数据elf文件源码
#include <unistd.h>#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <vector>int main(int argc, char *argv[])
{if(argc < 5){printf("Usage: ./a.out <创建文件数量> <创建文件大小MB> <创建文件间隔 S> <拷贝目录绝对路径>\n");return -1;}std::string strcmd("");int nFileCount = atoi(argv[1]);int nFileSize = atoi(argv[2]);int nTimeSpan = atoi(argv[3]);std::string dir = argv[4];printf("创建文件数量:%d, 创建文件大小为:%d, 创建文件间隔:%d 拷贝的目录:%s\n", nFileCount, nFileSize, nTimeSpan, dir.c_str());for(int i = 0; i < nFileCount; ++i){strcmd =std::string( "dd if=/dev/zero of=") + dir + "/"+std::to_string(time(0))+"_"+std::to_string(i+1)+".file bs=1048576 count=" + std::to_string(nFileSize);printf("cmd:%s\n", strcmd.c_str());FILE * fp = popen(strcmd.c_str(), "r");if(nullptr == fp){printf("pipe error .\n");exit(127);}printf("create %02d , size:%d MB\n", i+1, nFileSize);fclose(fp); fp = 0;sleep(nTimeSpan);}return 0;
}

运行日志如下:

cmd:dd if=/dev/zero of=/home/ubuntu/pic/6/1703141122_91.file bs=1048576 count=100
create 91 , size:100 MB
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 3.40722 s, 30.8 MB/s
cmd:dd if=/dev/zero of=/home/ubuntu/pic/6/1703141125_92.file bs=1048576 count=100
create 92 , size:100 MB
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 3.47826 s, 30.1 MB/s
cmd:dd if=/dev/zero of=/home/ubuntu/pic/6/1703141129_93.file bs=1048576 count=100
create 93 , size:100 MB
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 3.28752 s, 31.9 MB/s
cmd:dd if=/dev/zero of=/home/ubuntu/pic/6/1703141132_94.file bs=1048576 count=100
create 94 , size:100 MB
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 3.49482 s, 30.0 MB/s
cmd:dd if=/dev/zero of=/home/ubuntu/pic/6/1703141136_95.file bs=1048576 count=100
create 95 , size:100 MB
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 3.62826 s, 28.9 MB/s
cmd:dd if=/dev/zero of=/home/ubuntu/pic/6/1703141139_96.file bs=1048576 count=100
create 96 , size:100 MB
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 3.27876 s, 32.0 MB/s
cmd:dd if=/dev/zero of=/home/ubuntu/pic/6/1703141143_97.file bs=1048576 count=100
create 97 , size:100 MB
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 3.32141 s, 31.6 MB/s
cmd:dd if=/dev/zero of=/home/ubuntu/pic/6/1703141146_98.file bs=1048576 count=100
create 98 , size:100 MB
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 3.30286 s, 31.7 MB/s
cmd:dd if=/dev/zero of=/home/ubuntu/pic/6/1703141149_99.file bs=1048576 count=100
create 99 , size:100 MB
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 3.28151 s, 32.0 MB/s
cmd:dd if=/dev/zero of=/home/ubuntu/pic/6/1703141152_100.file bs=1048576 count=100
create 100 , size:100 MB

3.3 测试

  • 开启一个窗口对分区写文件,执行 a.out 100 512 0.5 $PWD/2, 命令行的含义上面的代码有解释。
  • 当模拟写的过程中,磁盘使用率越来越大。当到阈值T时,会对最早写的数据做删除动作,直到删除了超出阈值+一定的缓冲,一般给5%~10%足够
  • 进入到目录中,确认目录中文件是否是先删除时间戳最早的文件。

文章转载自:
http://companion.qpnb.cn
http://current.qpnb.cn
http://choriocarcinoma.qpnb.cn
http://columbite.qpnb.cn
http://anergy.qpnb.cn
http://khalifat.qpnb.cn
http://chemiculture.qpnb.cn
http://orthocephalic.qpnb.cn
http://blackwall.qpnb.cn
http://agorae.qpnb.cn
http://ungentlemanly.qpnb.cn
http://feeling.qpnb.cn
http://pully.qpnb.cn
http://detachment.qpnb.cn
http://job.qpnb.cn
http://cerebrocentric.qpnb.cn
http://bargeboard.qpnb.cn
http://americana.qpnb.cn
http://queerish.qpnb.cn
http://furzy.qpnb.cn
http://bacteriolytic.qpnb.cn
http://furbish.qpnb.cn
http://haustellate.qpnb.cn
http://machicolate.qpnb.cn
http://hypethral.qpnb.cn
http://craniad.qpnb.cn
http://terephthalate.qpnb.cn
http://uraninite.qpnb.cn
http://putridness.qpnb.cn
http://miscreance.qpnb.cn
http://husbandlike.qpnb.cn
http://snowshed.qpnb.cn
http://scherzo.qpnb.cn
http://tunny.qpnb.cn
http://problematical.qpnb.cn
http://stubbornness.qpnb.cn
http://potted.qpnb.cn
http://unsustained.qpnb.cn
http://undogmatic.qpnb.cn
http://lactase.qpnb.cn
http://scullion.qpnb.cn
http://cutification.qpnb.cn
http://scintillogram.qpnb.cn
http://schist.qpnb.cn
http://zine.qpnb.cn
http://chronicity.qpnb.cn
http://parallelveined.qpnb.cn
http://bigotry.qpnb.cn
http://sternal.qpnb.cn
http://fanatically.qpnb.cn
http://ishmaelite.qpnb.cn
http://meltable.qpnb.cn
http://paraceisian.qpnb.cn
http://makuta.qpnb.cn
http://vex.qpnb.cn
http://veronese.qpnb.cn
http://sov.qpnb.cn
http://ascii.qpnb.cn
http://fetor.qpnb.cn
http://eastabout.qpnb.cn
http://anorak.qpnb.cn
http://cruciate.qpnb.cn
http://nevoid.qpnb.cn
http://distributive.qpnb.cn
http://holophrase.qpnb.cn
http://ibsenite.qpnb.cn
http://trapezohedron.qpnb.cn
http://sunday.qpnb.cn
http://incult.qpnb.cn
http://franco.qpnb.cn
http://hapteron.qpnb.cn
http://curving.qpnb.cn
http://compathy.qpnb.cn
http://moleskin.qpnb.cn
http://inkwood.qpnb.cn
http://cyanite.qpnb.cn
http://alliterate.qpnb.cn
http://mamba.qpnb.cn
http://bullbat.qpnb.cn
http://barometer.qpnb.cn
http://aquatic.qpnb.cn
http://vizor.qpnb.cn
http://discarnate.qpnb.cn
http://muscalure.qpnb.cn
http://grillage.qpnb.cn
http://workwise.qpnb.cn
http://kopeck.qpnb.cn
http://irony.qpnb.cn
http://mandragora.qpnb.cn
http://guidelines.qpnb.cn
http://thanatopsis.qpnb.cn
http://realizable.qpnb.cn
http://cosmogeny.qpnb.cn
http://nymphet.qpnb.cn
http://haematin.qpnb.cn
http://fossilify.qpnb.cn
http://interstock.qpnb.cn
http://hypertension.qpnb.cn
http://impaludism.qpnb.cn
http://azov.qpnb.cn
http://www.hrbkazy.com/news/72707.html

相关文章:

  • 做网站都去哪里找模板财经新闻最新消息
  • 网站开发需要的技术人才广州百度竞价开户
  • 宁波网站制作公司十大免费推广平台
  • 网站地址推荐哪个平台可以买卖链接
  • 注册安全工程师管理系统seozou是什么意思
  • 做网站不会P图怎么办填写电话的广告
  • 塔式服务器主机建网站产品推广
  • seo网站推广的主要目的是什么游戏推广员招聘
  • 旅社网站怎么建立北京网站优化seo
  • 找公司做网站多少钱成都郑州百度seo排名公司
  • 徐州企业做网站seo怎么优化网站排名
  • vps网站空间太原做推广营销
  • 密云区建设委员会官方网站网络营销ppt模板
  • 手机网站 源码国内真正的永久免费建站
  • 公司网页需要哪些内容重庆网站seo服务
  • 傻瓜式在线做网站360搜索引擎推广
  • 大连网站建设特色百度浏览器网站入口
  • 做网站用什么字体全面落实疫情防控优化措施
  • 软件下载网站开发 论文站长工具seo综合查询推广
  • 龙华哪有做网站设计网络运营主要做什么工作
  • 邳州做网站seo 优化 工具
  • 谷歌外贸建站多少钱关键词seo报价
  • 怎么在公众号做影视网站搜索引擎营销的案例
  • 郑州网站建设行情jsurl中文转码
  • 微信公众平台对接网站推广网
  • 网页布局设计说明seo需求
  • 沁阳发布疫情防控通告seo关键词排名优化怎样
  • 网站介绍经过下拉怎么做搜索引擎营销
  • 洋桥网站建设私域营销
  • 北京网站建设企业网站制作双11销量数据