java.sql.Date date = java.sql.Date.valueOf("1900-01-01");
org.joda.time.LocalDate localDate = new org.joda.time.LocalDate(date);
Run Code Online (Sandbox Code Playgroud)
基于上面的代码,我做了一些测试如下:
如果我将本地时区更改为UTC+8 Singapore Timezone,将会得到1899-12-31
如果我将本地时区更改为UTC+8 China Timezone,将会得到1900-01-01
如果我将本地时区更改为UTC-8 America/Los_Angeles Timezone,将会得到1900-01-01
如果我将本地时区更改为UTC+8 China Timezone,将会得到1900-01-01
有人可以帮忙澄清一下吗??它有点困惑。
BigDecimal x = new BigDecimal(1.95);
BigDecimal y = new BigDecimal(0.65);
BigDecimal rem = x.remainder(y);
if (rem.compareTo(BigDecimal.ZERO) != 0.) {
System.out.println("Not In mutilple of");
} else {
System.out.println("In mutilple of");
}
System.out.println(rem);
Run Code Online (Sandbox Code Playgroud)
没有给出上述场景的正确结果.给定输入条件但如果它是第二个值的倍数则给出不正确的结果
我正在使用Spring(v4)ThreadPoolTaskExecutor执行一些连续的可运行任务。当应用程序关闭时,我希望正常关闭执行器,以便任务有一些时间在继续关闭之前完成其迭代。如果活动任务在执行者等待时间到期之前(例如ThreadPoolTaskExecutor.setAwaitTerminationSeconds())完成了其迭代,则我不希望它开始另一个迭代。到目前为止,我还无法完成此任务。我有以下执行程序配置:
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(10);
executor.setWaitForTasksToCompleteOnShutdown(true);
executor.setAwaitTerminationSeconds(30);
Run Code Online (Sandbox Code Playgroud)
我的任务基本上是这样设置的:
myExecutor.execute(() -> {
while(true) {
doSomething();
}
});
Run Code Online (Sandbox Code Playgroud)
我假设我需要在执行程序关闭时在线程中设置一个标志,以使循环中断。还有其他推荐的方法吗?
我写了这个方法,在arrayList中搜索是否有两个数字,它们总和等于变量elem.问题是变量的总和超过了long类型的维数.我怎么写呢?
public static boolean searchSum(ArrayList<Long> array, long elem) {
int left = 0, right = array.size()-1;
while (left<right) {
long n1=Long.valueOf(array.get(left));
long n2=Long.valueOf(array.get(right));
if ((n1+n2)==elem) return true;
else if ((n1+n2)<elem) left++;
else right--;
}
return false;
}
Run Code Online (Sandbox Code Playgroud) 我有一个包含以下数据的集合:
John eats candy
Richard runs around in the morning
Hannah drinks water
Run Code Online (Sandbox Code Playgroud)
我将每个单词分开,将其添加到数组中并得到:
[John, eats, candy]
[Richard, runs, around, in, the, morning]
[Hannah, drinks, water]
Run Code Online (Sandbox Code Playgroud)
输出应该是(第二个单词按字母顺序排序)
[Hannah, drinks, water]
[John, eats, candy]
[Richard, runs, around, in, the, morning]
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
List<List<String>> mainList = new ArrayList<>();
List<String> list = new ArrayList<>();
for (String s : array) {
String[] x = s.split(" ");
for (int i = 0; i < x.length; i++) {
list.add(x[i]);
}
mainList.add(list);
list = new ArrayList<>();
}
Run Code Online (Sandbox Code Playgroud)
但我不知道接下来该做什么.如何实现元素的比较,并在此基础上更换线条.将字符串分成数组以访问第二个元素是否正确?即使你只是提出建议,我也会很高兴.
在谷歌搜索了很多之后,我发现了 volatile 关键字的多个定义。
概念一:
一些网站说,它是线程安全的,因为线程作用于存储 volatile 关键字的主内存,并在不将其拉到线程堆栈空间的情况下对其进行修改。
概念2:
有人说,它不是线程安全的,因为它会导致线程竞争条件。由于,线程将 volatile 变量拉到堆栈空间,修改它并立即将其放回主内存。但是,在另一个线程之间可以对 volatile 变量采取行动并采取行动。因此,通过这种方式,某些值会丢失。
哪个概念是正确的?
我想计算两个时间戳之间有多少天的差异,但我不想考虑时间差异。
例如 :
long time1 = 1546258765000 (Mon 31 December 2018 13:19:25)
long time2 = 1546005915367 (Fri 28 December 2018 15:05:15)
Run Code Online (Sandbox Code Playgroud)
结果应该是 3, 3 天就过期了...由于时间原因,我从这个方法中得到了 2 天:
TimeUnit.DAYS.convert(time1 - time2 , TimeUnit.MILLISECONDS))
Run Code Online (Sandbox Code Playgroud)
我只需要为 time1 和 time2 设置相同的时间,然后返回时间戳并像这样计算......但我不确定最好的方法是什么。
您好我想使用LocalDateTime JAVA API将这些类型的字符串转换为日期.下面是输入字符串:"1672017",我想根据2017年的数字为167的日期转换为相应的日期.
请知道如何做到这一点
我有这串 "Tue Apr 09 2019 12:59:51 GMT+0300"
我想转换成ZonedDateTime。
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("EEE MMM dd yyyy HH:mm:ss OOOO");
ZonedDateTime zdt = ZonedDateTime.parse(a, dtf);
Run Code Online (Sandbox Code Playgroud)
转换为后ZonedDateTime,我想将时区从更改GMT+0300为其他时区。
我的第一个问题是parse。我得到:
DateTimeParseException: Text 'Tue Apr 09 2019 12:59:51 GMT+0300' could not be parsed at index 25(在GMT + 0300,我认为OOOO这是不对的,但我不知道这是什么)
之后,我不知道如何更改时区。
java ×10
datetime ×4
date ×2
arraylist ×1
bigdecimal ×1
biginteger ×1
collections ×1
double ×1
executor ×1
integer ×1
interrupt ×1
java-8 ×1
java-time ×1
jodatime ×1
long-integer ×1
maven ×1
scala ×1
sorting ×1
spring ×1
volatile ×1