比较两个版本号新版本

/**
* 版本信息
*
* @类名 :Meichat_version
* @作者 :kevin
* @创建时间 :2016-10-2下午8:25:13
*/
public class Meichat_version extends BasicServlet {

private static final long serialVersionUID = -7537429324065779134L;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String currentVersion = "";
String model = "";
if (null != request.getParameter("currentVersion"))
currentVersion = request.getParameter("currentVersion");
if (null != request.getParameter("model"))
model = request.getParameter("model");

MongoDBDao dao = MongoDBDao.getMongoDBDaoInstance();
BasicDBObject query = new BasicDBObject();
query.put("name", "app");
query.put("number", "v" + currentVersion);
query.put("model", model);

JSONArray jar = dao.find(query, "yl_version");
StringBuffer sb = new StringBuffer();
sb = getStringbBuffer(jar, currentVersion);
String str = getJsonAppend(sb.toString(), MsgCode.MES_0, -1);
writeTo(response, str);
}

private StringBuffer getStringbBuffer(JSONArray jar, String version1) {
String flag = "N";// 无需强制升级
String dep = "";
String status = "0";
String time = "";
String number = "";
String verify = "";
StringBuffer sb = new StringBuffer();
JSONObject returnjsob = new JSONObject();
if (jar.size() > 0) {
JSONObject jsob = jar.getJSONObject(0);

long ctime = jsob.getLong("time");

MongoDBDao dao = MongoDBDao.getMongoDBDaoInstance();
JSONArray jarVer = dao.find(new BasicDBObject("time",
new BasicDBObject("$gte", ctime)), new BasicDBObject(
"time", 1), "yl_version", 1000);// -1降序,1升序
// 判断当前版本至最新版本之间是否存在强制升级的版本
for (int i = 0; i < jarVer.size(); i++) {
JSONObject jsobver = jarVer.getJSONObject(i);
jsobver.getString("number").replace("v", "");
if ("2".equals(jsobver.getString("status"))) {
JSONObject maxObj = jarVer.getJSONObject(jarVer.size() - 1);
status = "2";
dep = get(maxObj, "dep");
time = get(maxObj, "time");
number = get(maxObj, "number");
verify = get(maxObj, "verify");
flag = "Y";
break;
}
}
// 判断是否需要升级
if ("N".equals(flag)) {
JSONObject maxObj = jarVer.getJSONObject(jarVer.size() - 1);
String version2 = maxObj.getString("number").replace("v", "");
// 判断当前版本是否为最新版
int intValue = compareVersion(version1, version2);

if (intValue >= 0)
status = "0";
else
status = "1";
dep = get(maxObj, "dep");
time = get(maxObj, "time");
number = get(maxObj, "number");
verify = get(maxObj, "verify");
}
}

returnjsob.put("dep", dep);
returnjsob.put("status", status);
returnjsob.put("time", time);
returnjsob.put("number", number);
returnjsob.put("verify", verify);

returnjsob.put("url", MongoUtil.getValueByKey("download_url"));
sb.append("\"version\":").append(returnjsob).append(",");

return sb;
}

/**
* 比较两个版本的大小
*
* @param version1
* @param version2
* @return
*/
public int compareVersion(String version1, String version2) {
if (version1.equals(version2)) {
return 0;
}
String[] version1Array = version1.split("\\.");
String[] version2Array = version2.split("\\.");
int index = 0;
// 获取最小长度值
int minLen = Math.min(version1Array.length, version2Array.length);
int diff = 0;
// 循环判断每位的大小
while (index < minLen
&& (diff = Integer.parseInt(version1Array[index])
- Integer.parseInt(version2Array[index])) == 0) {
index++;
}
if (diff == 0) {
// 如果位数不一致,比较多余位数,index那个大就进入那个for循环
for (int i = index; i < version1Array.length; i++) {
if (Integer.parseInt(version1Array[i]) > 0) {
return 1;
}
}

for (int i = index; i < version2Array.length; i++) {
if (Integer.parseInt(version2Array[i]) > 0) {
return -1;
}
}
return 0;
} else {
return diff > 0 ? 1 : -1;
}
}

}

时间: 10-31

比较两个版本号新版本的相关文章

jquery更新后怎样在一个站点中使用两个版本号的jQuery

公司眼下的项目中的右側导航菜单用到了bootstrap(v3.2.0)的affix.js(Affix插件)与scrospy.js(滚动监听)插件, 须要用到版本号>= 1.9.0的jquery,眼下最新的jquery版本号是2.1.1.公司之前用的jquery版本号是1.6.2的,怎样在同一个站点里应用不同版本号的jquery而不引起冲突呢?在网上查了资料找到可解决的方法. <!-- 载入jQuery1.6.2版本号--> <script type="text/javas

uname -r和在usr/src下的版本号不一致

转至 http://my.oschina.net/dbmzlinux/blog/55912 问题的原因:安装vm_tools过程中提示找不到GCC header 解决方法如下: 大概步骤分10步: 1.安装c编译器 2.安装kernel-devel 3.检查kernel跟kernel-devel的版本号 4.两个版本号不一致,进行升级 5.再次检查版本号,还不一致,需要重启. 6.重启后,版本号一致. 7.用ls命令查看匹配kernel的c编译器的header的路径 8.安装vmware-too

(转)两千行PHP学习笔记

亲们,如约而至的PHP笔记来啦~绝对干货! 以下为我以前学PHP时做的笔记,时不时的也会添加一些基础知识点进去,有时还翻出来查查. MySQL笔记:一千行MySQL学习笔记http://www.cnblogs.com/shockerli/p/1000-plus-line-mysql-notes.html //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */ 常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH 变

在不同版本号hdfs集群之间转移数据

最简单的办法就是把src集群的数据导到本地,然后起还有一个进程将本地数据传到des集群上去. 只是这有几个问题: 效率减少 占用本地磁盘空间 不能应付实时导数据需求 两个进程须要协调,复杂度添加 更好的办法是在同一个进程内一边读src数据,一边写des集群.只是这相当于在同一个进程空间内载入两个版本号的hadoop jar包.这就须要在程序中使用两个classloader来实现. 下面代码能够实现classloader载入自己定义的jar包,并生成须要的Configuration对象: Java

SNMP安全配置的两种方法(也可同一时候兼顾配置两种方法)

方法一(最简单安装): 安装 Net-SNMP CentOS及其他RedHat系列产品提供了net-snmp的二进制包.我们能够直接从源里安装. shell> yum install net-snmp net-snmp-devel net-snmp-utils 说明:net-snmp-devel是为了使用net-snmp-config, net-snmp-utils是为了使用snmpwalk. 配置 Net-SNMP 在笔者的试验环境下,CentOS下的net-snmp无法在selinux环境下

LeetCode:Compare Version Numbers - 比较版本号

1.题目名称 Compare Version Numbers(比较版本号) 2.题目地址 https://leetcode.com/problems/compare-version-numbers/ 3.题目内容 英文:Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0. 中

两千行PHP学习笔记

//语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH变量名建议用下划线方式分隔 // $var_name函数名建议用驼峰命名法 // varName定界符建议全大写 // <<<DING, <<<'DING'文件名建议全小写和下划线.数字 // func_name.php私有属性名.方法名建议加下划线 // private $_name

LeetCode 165 Compare Version Numbers(比较版本号)(string)(*)

翻译 比较两个版本号version1和version2. 如果version1大于version2返回1,如果version1小于version2返回-1,否则返回0. 你可以假设版本号字符串是非空并且只包含数字和"."字符. "."字符不代表十进制中的点,而被用作分隔数字序列. 例如,2.5不是"两个半",也不是"差一半到三",而是第二版中的第五个小版本. 这里有一个版本号排序的示例: 0.1 < 1.1 < 1

Maven传递依赖的时候,同名包不同版本号的包均会下载,可是编译的时候,仅仅会载入一个高版本号的。

描写叙述,在一个Maven项目中.同一时候依赖了spring-tomcat-weaver  和  struts-core 包.可是spring-tomcat-weaver 须要commons-digester-1.2 struts-core 须要commons-digester-1.8 Pom文件例如以下: <dependencies> <dependency> <!-- 须要commons-digester-1.2包 --> <groupId>org.sp