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

电子商务与网站建设做关于水果的网站

电子商务与网站建设,做关于水果的网站,如何做中英文网站,网页制作个人简历模板教程目录 背景 内容 准备工作 在windows平台上 在linux平台上 正式工作 生成差分文件思路 作用差分文件思路 在保持相同目录结构进行差分增量升级 服务端(生成差分文件) 客户端(作用差分文件) 背景 像常见的Android 的linux平台#xff0c;游戏#xff0c;系统更新都…目录 背景 内容 准备工作 在windows平台上 在linux平台上 正式工作 生成差分文件思路 作用差分文件思路 在保持相同目录结构进行差分增量升级 服务端(生成差分文件) 客户端(作用差分文件) 背景 像常见的Android 的linux平台游戏系统更新都会用到这一种方式。 以我自己的理解,这种方式有些像git中的版本管理, 以最少的时间进行版本管理.核心在于如何去记录文件的差异. 服务器端: 通过 bsdiff  old  new  patchfile_path 生成差分文件.一般以.patch的文件命名. 客户端: 根据patch文件 通过 bspatch oldfile newfile patchfile_path 一般情况下本以为可以直接通过压缩包的形式去进行, 安卓平台的.apk文件是可以的,单片机的可执行hex等格式的文件也是可以的. 但通过压缩的压缩包则可能会有隐患. 通过开会讨论以及本人查询资料发现 会因为压缩算法,压缩文件顺序的不一样而导致差分包出现问题. 原因有 主要原因有: 1. 不同的压缩算法会产生不同的压缩数据。即使原始数据相同,通过不同算法压缩结果也不完全一样。这会直接影响bsdiff的比较结果。 2. 即使使用同一压缩算法,压缩文件内原始数据的顺序改变也可能改变压缩效果。压缩算法利用重复模式来达到压缩效果。顺序改变会打乱这种模式。 3. bsdiff是按顺序比较数据生成差分的。所以就算压缩原理数据相同,其在压缩文件中的顺序变化也会导致bsdiff生成不同的差分补丁。 4. 压缩算法本身就利用了字典及顺序来提高压缩率。这与bsdiff的工作原理有一定冲突。综上,为了生成一致的bsdiff补丁,同一个数据生成压缩包时需要保证使用同一算法和稳定的顺序。否则差分结果可能会有较大变化。一般需要压缩数据再差分时,需要注意控制这两个因素,或者考虑在解压后对原始数据文件差分。 所以考虑解压后保持相同的目录结构进行差分即为生成的.patch文件和原工程有相同的目录. 所以需要写一个脚本生成一个差分文件夹(目录),这个差分文件夹与原工程有相同的目录结构. 后面再根据这个差分文件夹进行升级即为patch文件与原文件作用生成新文件新目标和原目标相同.通过这种服务器上生成差分包客户端上作用差分包的形式差分包可以压缩在客户端上解压缩这样能更快更合理. 所以总共需要有2个bash脚本,一个放服务器上,生成差分包.一个放客户端上在收到差分包后进行本地升级. 内容 bsdiff和bspatch去官网上截至2023年10月27日没有下载源码的权限,所以得去别的地方找找源码. 准备工作 在windows平台上 参考 whistle713/bsdiff-win: bsdiff Windows binaries and Visual Studio 2015/2019 project. (github.com) 里面有提供能够在windows平台上允许的.exe可执行文件. 在linux平台上 参考 红橙Darren视频笔记 bsdiff bspatch 使用Linux下_洌冰的博客-CSDN博客 完成编译 正式工作 这里需要考虑到旧的目标和新的目标的一些特殊情况. 新目标有新增文件的情况新目标有删除原来旧文件的情况新目标和旧目标的目录和文件都能对上,只是有变化.旧目标和新目标有 大小为0 bytes 文件的情况(bsdiff失效) 相信一般的升级都会遇到 1.2.3.4所有情况, 对于第4种情况,不清楚是不是bsdiff的版本问题还是linux系统的问题我在本地的liunx没有这个问题. bsdiff在处理 大小为 0 bytes的文件时在linux上报错 报错 bsdiff:mmap()  xxx:Invalid argument 思路: 对于第一种和第二种情况. 新目标新增: 在旧目标中生成一个相同名字的文件不过大小为0 bytes 新目标有删除有原来旧文件的情况: 在新目标中生成一个相同名字的文件大小依然为0bytes 这样的话只要不出现 4 的这种问题都是能够通过bsdiff 生成相应的bspatch文件的. 生成差分文件思路 1.同步旧目标(对应新目标有文件增加时) 2.同步新目标(对应新目标删除了旧文件时) 3.递归遍历目标中的每一个文件在另一个目标中进行查找, 可以直接通过bsdiiff 生成差分文件, 即使是两个相同的文件也会生成patch文件只不过bspatch 作用这个patch文件时并不会起作用这样是非常方便了都不需要进行判断了。这样表现为每一个文件都有对应的差分文件.(这个需要再我的代码上改一改) 而我下面并没有这么做而是根据md5的值判断文件不同后再生成对应的patch文件. 作用差分文件思路 直接遍历生成的差分文件目录结构,调用bspatch. 在保持相同目录结构进行差分增量升级 服务端(生成差分文件) 调用. ./gen.sh(脚本名) ./old(旧目录) ./new (新目录) 最终会生成一个以日期后缀的差分文件的目录(和原目录保持相同的目录结构)  #!/bin/bash# check if two arguments are given if [ $# -ne 2 ]; thenecho Usage: $0 oldfolder newfolderexit 1 fi# check if the arguments are valid directories if [ ! -d $1 ] || [ ! -d $2 ]; thenecho Invalid directoriesexit 2 fi# create a new directory for patch files patch_dirpatch_$(date %Y%m%d%H%M%S) mkdir -p $patch_dir# sync in new target find $1 -type f | while read oldfile; do# get the relative path of the filerel_path${oldfile#$1/}# get the corresponding file in the second directorynewfile$2/$rel_path# exist in old and not exist in new and create same name to instead in the new folder if [ ! -f $newfile ]; thenecho -e \033[0;36m [disapper in new]: $newfile Generate 0 Bytes to instead in new target \033[0mmkdir -p $(dirname $newfile) $newfile fidone# sync in old target find $2 -type f | while read newfile; do# get the relative path of the filerel_path${newfile#$2/}# get the corresponding file in the second directoryoldfile$1/$rel_path# exist in new and not exist in old and create same name to instead in the old folder if [ ! -f $oldfile ]; thenecho -e \033[0;36m [disapper in old]: $oldfile Generate 0 Bytes to instead in old target \033[0m# create the parent directory if neededmkdir -p $(dirname oldfile) $oldfile fidone# Generate patch find $1 -type f | while read oldfile; do# get the relative path of the filerel_path${oldfile#$1/}# get the corresponding file in the second directorynewfile$2/$rel_path# Haved sync and create the patch file namepatch_file$patch_dir/$rel_path.patch# create the parent directory if neededmkdir -p $(dirname $patch_file)# use bsdiff to generate the patch fileoldmd5$(md5sum $oldfile | awk {print $1})newmd5$(md5sum $newfile | awk {print $1})if [ $oldmd5 $newmd5 ]; thenecho -e \033[0;32m Dont Need to Change \033[0melsebsdiff $oldfile $newfile $patch_fileecho -e \033[0;33mGenerated patch for $rel_path \033[0mfidoneecho Done. Patch files are in $patch_dir客户端(作用差分文件) 调用 脚本名 旧目标 新目标(也可以是旧目标 ,相当与替换旧目标) 差分目录 #!/bin/bash# check if two arguments are given if [ $# -ne 3 ]; thenecho Usage: cmd oldfolder newfolder patchfoldersexit 1 fi# new generate if [ ! -e $2 ]; then mkdir $2 fi# check if the arguments are valid directories if [ ! -d $1 ] || [ ! -d $3 ] ; thenecho Invalid directoriesexit 2 fi#loop item in path_item find $3 -type f -name *.patch | while read patch_item; dotemp${patch_item#$3/}temp${temp%.patch} #equal to temp${temp:0:${#temp}-6}oldfile$1/$tempnewfile$2/$tempmkdir -p $(dirname $newfile)echo -e \033[0;32m Generate $oldfile $newfile \033[0m# execute bspatchbspatch $oldfile $newfile $patch_itemdone 一般调用过程 diff -rq ./old ./new(此时会看到文件差异)./gen ./old ./new./upgrate ./old ./old ./patch_xxx diff -rq ./old ./new (没有输出表示更新升级完毕)
http://www.hkea.cn/news/14580903/

相关文章:

  • 模板网站建设平台深入解析wordpress(原书第2版) pdf
  • 河北路泰建设工程有限公司网站婚庆公司介绍
  • 如何k掉网站邯郸小程序
  • 设计软件免费下载网站金阊苏州网站建设
  • 网站开发怎么进行数据库连接wordpress照片展示
  • 青岛城市建设档案馆网站团员登录系统智慧团建
  • 怎么做有趣视频网站wordpress如何做关键词和描述设置
  • 社交网站开发流程做网站公司在哪
  • 网站软文代写开发公司前期部岗位职责
  • 深圳做网站哪里最好汉中市住房和城乡建设局网站
  • 做网站开发的需求文档互动网站建设多少钱
  • 免费的信息发布平台哪个网站seo做的最好
  • 网站侧边 跟随 样式h5商城模板
  • 网站可以做哪些广告语网站代码用什么打开
  • 响应式网站建设流程成都网络优化公司排行榜
  • 如何设计网站导航怎么做电商新手入门
  • 免费建网站哪家好西安建站平台
  • 网站 app 公众号先做哪个网站tag标签功能实现
  • 石嘴山市建设局网站商品营销推广的方法有哪些
  • 怎么用网站后台做轮播图免费网站建设itcask
  • 顺义顺德网站建设网站开发找什么论文
  • 住房与城乡建设部网站特色小镇网站高中建设工具
  • 济南网站建设云华互动win8导航网站模板
  • 汕头市住房和城乡建设局网站制作相册的软件
  • 网站开发案例详解下载有原型怎么做网站
  • 天价索赔背后的平台版权对垒seo推广分析关键词的第一个步骤
  • 花生壳免费域名注册网站个人又什么办法做企业网站
  • 网站设计会计分录怎么做wordpress 插件 朋友圈
  • 网站内链设置wordpress作者信息插件
  • 什么叫网站企业建立企业网站有哪些优势?