我正在尝试生成存储的随机数,我需要返回字符串值.
这是我的方法:
public String generateRand() {
java.util.Random rand = new java.util.Random(System.currentTimeMillis());
String rnd = "" + Math.abs(rand.nextInt()) + "" +
Math.abs(System.currentTimeMillis());
return rnd;
}
Run Code Online (Sandbox Code Playgroud)
Jenkins的Findbugs插件警告我有Bad attempt to compute absolute value of signed random integer.
此代码生成随机有符号整数,然后计算该随机整数的绝对值.如果随机数生成器返回的数字是Integer.MIN_VALUE,那么结果也将是负数,因为Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE.同样的问题也出现在长值上.
计算有符号随机整数绝对值的最佳方法是什么?
int server = (Math.abs(q.hashCode()) % solrLoadBalanceNumOfServers) + 1;
Run Code Online (Sandbox Code Playgroud)
詹金斯警告我这个说明:
尝试计算带符号的32位哈希码的绝对值
此代码生成哈希码,然后计算该哈希码的绝对值.如果哈希码是Integer.MIN_VALUE,那么结果也将是负数(因为Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE).
2 ^ 32个字符串中的一个具有hashCode Integer.MIN_VALUE,包括"polygenelubricants""GydZG_"和""DESIGNING WORKHOUSES".
有谁知道为什么我得到这个计算绝对值的警告?
我试图将我的表单设置为指定两个日期在 30 天内的逻辑。
Date fromDate = form.getFromDate();
Date toDate = form.getToDate();
if(fromDate.compareTo(toDate) > 30){ // if the selected date are within one month
}
Run Code Online (Sandbox Code Playgroud)
我想添加类似的验证以确保所选的两个日期在月份范围内
检查 FreeMarker 中表单数据中 boolean 值是否正确的语法是什么,我的代码:
<#if "${form.allStores}" !false>
<@displayRow label="Receiving Stores" value="All Stores" />
<#elseif "${form.storesReceiving}" == false || "${form.storesReceiving}"?has_content>
<@displayRow label="Receiving Stores" value="No Stores"/>
<#else>
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Could not prepare mail; nested exception is freemarker.core._MiscTemplateException: Can't convert boolean to string automatically, because the "boolean_format" setting was "true,false", which is the legacy default computer-language format, and hence isn't accepted. --
Run Code Online (Sandbox Code Playgroud) 我想在列表中添加第二个过滤器,我想排除空字符串旁边的字符串列表中的副本.
以下是我尝试使用流API的方法:
这将区分结果,但不是空的
List<User> users = userService.getUsers(form.getId());
List<String> positionNames = users.stream().map(User::getTitle).distinct().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
我怎样才能将它们组合在一起?
尝试在 Date 中设置时区(我知道 Date 已弃用)
LOG.error(modifiedDate + "Date in service"); //Mon Sep 21 06:15:00 CDT 2020
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z", Locale.ENGLISH);
format.setTimeZone(TimeZone.getDefault());
String dateString = format.format(modifiedDate);
LOG.error(dateString + " dateString"); //2020-09-21 06:15:00 -0500
Date date = format.parse(dateString);
LOG.error(date + " date after parsing"); //Mon Sep 21 06:15:00 CDT
Run Code Online (Sandbox Code Playgroud)
解析后时区没有改变,我错过了什么?