疑难问题之bsdiff 问题背景 项目中使用到了bsdiff命令进行增量包的生成,不过在使用中发现对于某些文件,bsdiff命令会卡住。...诊断问题 刚开始以为是操作系统的问题,换了个全新的系统,按网上的教程从http://www.daemonology.net/bsdiff/下载bsdiff的源码,重新编译得到bsdiff,这里把原来卡住的两个文件重新试了一次...看来这个是bsdiff本身存在问题,在网上搜索了下,终于发现有人遇过一样的问题。很奇怪,在国内也有很多人用bsdiff生成增量包,但却没人反馈这个问题。.../chromiumos/third_party/bsdiff 编译 我用的linux服务器没有root权限,安装稍微麻烦一点。...mv $HOME/local/bin/bsdiff $HOME/local/bin/bsdiff2 效果 使用新的bsdiff2命令测试了下,目前生成增量包一切正常,再也没有卡住的现象了,而且占用的内存也比原来小不少
尤其在移动游戏领域,随着手机性能的提升和玩家对游戏体验的追求,安装包亦是越来越大,并且会频繁的更新以不断给玩家带来更新的玩法和更为优化的体验。...普通二进制文件对比 熟悉Linux的同学提到二进制文件对比自然会想到一个命令:cmp。那可执行文件的二进制更新岂不是有了这个对比结果后, 然后拿更新结果修改旧文件的二进制串为新文件不就OK了?...以上便是bsdiff算法的基本思想,并且作者也将该算法实现并开源出来,供所有有二进制差异更新需求的同学使用(下载链接:http://www.daemonology.net/bsdiff/ )。...随意选择两个可执行文件,这里就选择bsdiff工具里的bsdiff与bspatch,两个完全无关的可执行文件,bsdiff作为新文件,bspatch作为旧文件。...20.png 游戏更新还需要哪些能力 有了BSDiff,我们可以很方便的做到二进制文件的差异更新,但BSDiff也并非完美,比如其存在一些应对移动应用时的稳定性以及对DEX文件的压缩效率不高等问题。
,一个是linux的) bzip2:http://www.bzip.org/downloads.html 个人链接下载: bsdiff-win:链接:https://pan.baidu.com/s.../1KZ46wP0dThJ9CvY-8uz4tQ 提取码:kw63 bsdiff- linux:链接:https://pan.baidu.com/s/1H8yzsiDod2wiIo1WonE2Nw...采用Android studio项目为例,来处理客户端的的文件合并 复制bsdiff的bspatch.c文件和bzip2的.c和.h文件copy到项目的cpp目录下 由于Android是基于linux...内核的,所以这边采用的是linux包的bspatch.c的代码: ?...关键点:我们在安装apk的时候,Android系统会将所要安装的apk文件copy到/data/app/目录下 public static String getSourceApkPath(Context
增量原理 说白了,增量更新就是:用户手机上安装着某个应用,下载了增量包,手机上的apk和增量包合并形成新的包,然后再次安装(注意这个过程是要重新安装的,当然部分应用市场有root权限你可能感知不到...需要使用的资源 进行增加更新主要是通过开源项目bsdiff项目来进行实现,还需要一些辅助的工具,列表如下: bsdiff — bsdiff (win环境) 生成差分包及合并差分包库 , 源码内已包含...bzip2 项目地址: https://github.com/hymanAndroid/tools/tree/master/bsdiff-4.3 bzip2 — bzip2 bsdiff 依赖...两个文件 com_dispatch_bsdiff_BsDiff.h中引入jni.h 将头文件com_dispatch_bsdiff_BsDiff.h引入到bsdiff.cpp文件中 5.编写调用的...编写bsdiff.cpp的native函数 //JNI 调用 JNIEXPORT void JNICALL Java_com_dispatch_bsdiff_BsDiff_diff (JNIEnv *env
的下载地址 https://mirrors.edge.kernel.org/pub/software/scm/git/ http://mirrors.jenkins.io/war-stable/ 找到对应想安装的版本...下载下来 git使用make命令进行编译,可以指定路径也可以不指定目录 默认安装到了,usr/local/bin下面了,然后在root下加上软连接 ln -snf /usr/local/bin/git
linux下,如何安装rpm命令? 更新时间:2019-05-20 07:50 最满意答案 rpm默认就安装在了发行版本里,比如RedHat和centos。...RPM是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。与Dpkg类似。 RPM文件在Linux系统中的安装最为简便。...RPM是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。与Dpkg类似。 RPM文件在Linux系统中的安装最为简便。...RPM是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。与Dpkg类似。 RPM文件在Linux系统中的安装最为简便。...rpm软件包的信息 2 查询rpm软件包安装文件的信息 3 安装rpm软件包到当前linux系统 4 从linux系统中卸载已安装的rpm软件包 5 升级当前linux系统的rpm软件包 (1)#rpm
三、实现步骤 1、生成差异包 apk文件的差分和合并都是使用的开源的二进制比较工具 bsdiff 实现。...下载的bsdiff-4.3版本中有几个文件,其中bsdiff.c用于生成差异包的源码,bspatch.c用于合成apk的源码,makefile是生成可执行文件的脚本。...亲测在linux系统中,执行makefile文件,可生成一个bsdiff工具,使用该工具即可生成差异包。 在服务器端使用bsdiff工具生成差异包。.../bsdiff karaoke_3.2.apk karaoke_3.3.apk 3.2_3.3.patch 命令即可生成差异包3.2_3.3.patch。 ?...我们需要把bsdiff中的bspatch.c整合到我们C代码中,并将其编译生so供Android手机使用,其中bspatch依赖bzip2,需要自己下载依赖的c文件。
Linux的使用相信大家都要用到java吧!...在使用java前我们得先安装jdk以及配置环境变量等工作;下面小编给大家分享关于Linux安装jdk的详细步骤: 一、登录虚拟机进入终端切换到root用户,输入:su 接着输入密码 再输入:cd … 回到...root用户 二、查看Linux系统是否有自带的jdk: 1、输入:java -version 2、发现有输入:rpm -qa | grep java 检测jdk的安装包,(注意:rpm命令符没有时记得下载一个输入...六、下载完后用FileZilla文件传输器,把jdk安装包传到虚拟机对应的文件夹当中;或者直接在Linux下载即可 七、在终端进入对应的文件的目录,进一步解压,输入tar -zxvf...、输入:javac 3、输入:java 到此Linux安装jdk就完成啦!
linux安装Node.js(详细)Node.js安装教程 文章目录 linux安装Node.js(详细)Node.js安装教程 1:下载 2:解压 3:移动目录 1:创建目录 2:移动目录并重命名 4...:设置环境变量 5:刷新修改 6:安装完成,查看版本号 1:下载 wget https://nodejs.org/dist/v14.17.4/node-v14.17.4-linux-x64.tar.xz...更多版本选择: ===》更多nodejs版本下载 2:解压 tar xf node-v14.17.4-linux-x64.tar.xz 可以查看当前目录下的文件,执行:ls (命令) 解压成功后可以选择删除压缩包...:rm -rf node-v14.17.4-linux-x64.tar.xz 其中:-f 会提醒是否删除 ;-rf 会强制删除,不会提醒。...5:刷新修改 source /etc/profile 6:安装完成,查看版本号 node版本号: node -v npm版本号: npm -v 注意:配合pm2使用npm可以让程序在后台运行。
1、安装zookeeper,将zookeeper上传到三个服务器,保存在/usr/local/zookeeper目录下,解压tar包 tar -xzvf zookeeper-3.4.6.tar.gz...ZOOKEEPER=/usr/local/zookeeper/zookeeper-3.4.6 PATH=PATH:ZOOKEEPER/bin 并执行 source /etc/profile 6、安装成功
linux安装.net 下载.net https://dotnet.microsoft.com/download/thank-you/dotnet-sdk-2.1.4-linux-x64-binaries...下载安装包后执行命令: dotnet-sdk-2.1.302-linux-x64.tar.gz yum install libicu -y cd /root ln -s /data1/soft /data.../soft tar zxvf dotnet-sdk-2.1.302-linux-x64.tar.gz -C /data1/soft/dotnet/ echo 'export DONET_ROOT=$PATH
本章节我们将为大家介绍 Linux 的安装,安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果直接不想搭建,也可以直接买一台学习用用,参考各大云服务器比较。...-1503-01.iso : 网络安装镜像(从网络安装或者救援系统) CentOS-7.0-x86_64-Everything-1503-01.iso: 对完整版安装盘的软件进行补充,集成所有软件。...64位Linux系统。...旧版本下载地址:https://wiki.centos.org/Download 接下来你需要将下载的Linux系统刻录成光盘或U盘。...注:你也可以在Window上安装VMware虚拟机来安装Linux系统。 ---- Linux 安装步骤 1、首先,使用光驱或U盘或你下载的Linux ISO文件进行安装。 界面说明: ?
原理 将手机已安装的apk与服务端最新的apk进行二进制对比,得到差分包,用户更新程序时,只需要下载差分包,并在本地使用差分包与已安装的apk合并成新版的apk。 ?...工具 bsdiff、bspatch 下载地址:http://www.daemonology.net/bsdiff/ 编译源码: Step1: make 出错信息: ?.../bsdiff v1.0.0.apk v1.0.1.apk 1.0.0-to-1.0.1.patch ? 合并差分包 ....Step3:将bsdiff中的bspatch.c文件导入到Android项目中,并将bspatch.c中的#include 改成#include "bzip2/bzlib.h" ?...Step5:将通过bsdiff生成的差量包1.0.0-to-1.0.1.patchpush到手机sdcard目录 Step6:运行程序,点击”增量更新“ ?
文章目录 一、下载Python包 二、安装依赖环境 三、安装Python3 四、建立Python3和pip3的软链 五、检查是否安装成功 ---- 【Python测试交流群:8140 78962】 --...所以这里建议通过国内镜像进行下载 例如:淘宝镜像 http://npm.taobao.org/mirrors/python/ ---- 大部分版本和各系统包都提供,这里的教程用Python3.9.6来举例: 1)Linux...可以通过wget命令进行下载(在任意目录执行下面的命令,如果找提示找不到wget可以使用yum -y install wget进行安装): wget http://npm.taobao.org/mirrors.../python/3.9.6/Python-3.9.6.tgz ---- 2)如果没有wget又不想额外安装的话可以先通过网页下载到本地,然后上传到Linux服务器: ---- 二、安装依赖环境 1...gcc:yum install gcc 3.Python3.7版本之后需要安装libffi-devel:yum install libffi-devel -y ---- 三、安装Python3 1.创建
官方下载: 最新版下载地址: http://nodejs.cn/download/ v14.3.x 下载地址: https://nodejs.org/download/release/v14.3.0/ 安装...Node环境 我们下载Linux 二进制文件进行安装: # 下载 wget https://nodejs.org/download/release/v14.3.0/node-v14.3.0-linux-x64....tar.gz ## 解压 tar -xzf node-v14.3.0-linux-x64.tar.gz ## mv node-v14.3.0-linux-x64 /usr/local/node 环境变量配置...NODE_HOME=/usr/local/node export PATH=$PATH:$NODE_HOME/bin 查看是否生效 source /etc/profile ## $ node -v v14.3.0 安装...安装方式如下: $ npm install -g cnpm --registry=https://registry.npm.taobao.org npm WARN deprecated request@
wget命令是linux系统下的一个常用命令。下面由学习啦小编为大家整理了linux安装wget命令的相关知识,希望大家喜欢!...linux安装wget命令方法一 debian 或者 ubuntu : sudo apt-get install wget centos : sudo yum -y install wget linux...安装wget命令方法二 我们先安装linux系统比如centos7.1里面有的就没有wget下载工具。...07-30 03:09:43 (1.50 MB/s) – ‘lanmp_laster.tar.gz’ saved [81312101/81312101] [root@localhost ~]# 这个命令安装
1、先去官网下载好对应的linux版本的压缩包,https://www.oracle.com/java/technologies/downloads/#java8 2、将压缩包通过ftp进行上传至服务器...3、进入目录,进行解压 cd /压缩包目录 tar -zxvf jdk-8u131-linux-x64.tar.gz 4、进入环境变量文件 vi /etc/profile 5、增加环境变量 //JAVA_HOME...JAVA_HOME=/usr/local/java/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH 6、配置文件生效 source /etc/profile 7、查看是否安装成功
二、下载RabbitMQ所需要的安装包,即Erlang 和 RabbitMQ 1、RabbitMQ是Erlang语言编写的,所以在安装RabbitMQ之前,需要先安装Erlang。...RabbitMQ downloads链接并点击,进入到RabbitMQ的下载页面 6、在右边的In This Section 下找到 Install:Generic binary build下载链接并点击,进入到Linux...Download下的 rabbitmq-server-generic-unix-3.7.16.tar.xz下载链接并点击,开始进行下载RabbitMQ 三、把下载好的RabbitMQ 和 Erlang上传到Linux...服务器上 1、打开WinSCP,把我们下载好的RabbitMQ 和 Erlang安装包,上传到Linux的 /mnt/ 文件目录下 2、使用putty连接到我们的Linux服务器,进入到/mnt/ 文件目录中...PID file not written; -detached was passed. 5、在浏览器的地址栏中输入你 服务器的ip地址:15672,即可访问RabbitMQ的管理登录界面,例如我的Linux
一、下载安装 mariadb是属于mysql的一个分支,是其创始人在mysql被卖给oracle之后重新分出来的,maria取自于他女儿的名字。...-10.5.0-linux-systemd-x86_64.tar.gz 1 wgethttps://downloads.mariadb.com/MariaDB/mariadb-10.5.0/bintar-linux-systemd-x86..._64/mariadb-10.5.0-linux-systemd-x86_64.tar.gz 首先把安装包下载到本地,然后解压到/usr/local目录: tar -zxvf mariadb-10.5.0...-linux-systemd-x86_64.tar.gz -C /usr/local/ ln -s /usr/local/mariadb-10.5.0-linux-systemd-x86_64/ /usr...Examinethelogsin /udata/mariadbformoreinformation. … 说明系统缺少组件库libaio,需要安装手动安装: # centos yum install libaio
-1.2.5-cp27-none-win_amd64.whl执行pip install MySQL_python-1.2.5-cp27-none-win32.whl 如果是安装64位的,需要把这个文件名改为...安装tar.gz包:cd到解压后路径,python setup.py install Linux环境: 安装whl同上 安装tar.gz,命令格式:tar -zxvf 压缩文件名.tar.gz解压后,cd.../configure -> make -> make install 或者 python setup.py install 安装zip包,命令格式:unzip filename.zip 解压后,python...setup.py install 卸载安装包: python setup.py install –record files.txt 记录安装后文件的路径 cat files.txt | xargs rm...-rf 删除这些文件 用pip安装一个包,报错误:python pip fatal error in launcher unable to create process using “” python2
领取专属 10元无门槛券
手把手带您无忧上云