小编Bas*_*que的帖子

时间:如何获得下周五?

如何使用Joda-Time API 获取下周五.

LocalDate今天的是today.在我看来,你必须在本周五之前或之后决定你是谁.看到这个方法:

private LocalDate calcNextFriday(LocalDate d) {
    LocalDate friday = d.dayOfWeek().setCopy(5);
    if (d.isBefore(friday)) {
        return d.dayOfWeek().setCopy(5);
    } else {
        return d.plusWeeks(1).dayOfWeek().setCopy(5);
    }
}
Run Code Online (Sandbox Code Playgroud)

是可以缩短它还是使用oneliner?

PS:请不要建议我使用JDK的日期/时间.Joda-Time是一个更好的API.

Java 8引入了更好的java.time包(Tutorial).

java time datetime date jodatime

56
推荐指数
3
解决办法
3万
查看次数

CopyOnWriteArrayList如何是线程安全的?

我已经看了一下OpenJDK的源代码,CopyOnWriteArrayList似乎所有的写操作都受到同一个锁的保护,读操作根本就没有受到保护.据我所知,在JMM下,所有对变量(读取和写入)的访问都应该受到锁定或重新排序的影响.

例如,set(int, E)方法包含这些行(在锁定下):

/* 1 */ int len = elements.length;
/* 2 */ Object[] newElements = Arrays.copyOf(elements, len);
/* 3 */ newElements[index] = element;
/* 4 */ setArray(newElements);
Run Code Online (Sandbox Code Playgroud)

get(int)另一方面,该方法仅适用return get(getArray(), index);.

在我对JMM的理解中,这意味着get如果语句1-4被重新排序,如1-2(新)-4-2(copyOf)-3 ,则可能会观察到数组处于不一致状态.

我是否理解JMM不正确或是否有任何其他解释为什么CopyOnWriteArrayList线程安全?

java concurrency java-memory-model data-structures

56
推荐指数
2
解决办法
2万
查看次数

在Java中实现Mixin?

使用Java 6,我如何实现mixin?在Ruby中它非常简单易行.我怎样才能在Java中获得相似之处?

java mixins

55
推荐指数
8
解决办法
3万
查看次数

如何在IntelliJ IDEA中用花括号包围代码?

如何在IntelliJ IDEA中用花括号包围代码?这种操作有键盘快捷键吗?

keyboard-shortcuts intellij-idea curly-braces

55
推荐指数
6
解决办法
2万
查看次数

使用Java ZipOutputStream和BufferedOutputStream的首选方法

在Java中,我首先实例化ZipOutputStream还是首先实例化BufferedOutputStream?例:

FileOutputStream dest = new FileOutputStream(file);
ZipOutputStream zip = new ZipOutputStream(new BufferedOutputStream(dest));

// use zip output stream to write to
Run Code Online (Sandbox Code Playgroud)

要么:

FileOutputStream dest = new FileOutputStream(file);
BufferedOutputStream out = new BufferedOutputStream(new ZipOutputStream(dest));

// use buffered stream to write to
Run Code Online (Sandbox Code Playgroud)

在我非科学的时间里,我似乎无法在这里说出很多不同之处.我在Java API中看不到任何表明这些方法之一是必要的还是首选的.有什么建议?似乎首先压缩输出然后缓冲它以进行写入会更有效.

java io outputstream

54
推荐指数
2
解决办法
7万
查看次数

为什么我在java.time中不能在几分钟或几小时内获得持续时间?

在Java 8及更高版本中可用Duration的新JSR 310 date API(java.time包)中的类中,javadoc说:

此类以秒和纳秒为单位模拟时间量或时间量.它可以使用其他基于持续时间的单位进行访问,例如分钟和小时.此外,DAYS单位可以使用,并且被视为完全等于24小时,因此忽略了夏令时效果.

那么,为什么以下代码崩溃?

Duration duration = Duration.ofSeconds(3000);
System.out.println(duration.get(ChronoUnit.MINUTES));
Run Code Online (Sandbox Code Playgroud)

这提出了一个UnsupportedTemporalTypeException:

java.time.temporal.UnsupportedTemporalTypeException: Unsupported unit: Minutes
    at java.time.Duration.get(Duration.java:537)
Run Code Online (Sandbox Code Playgroud)

那么从持续时间对象中提取分钟和小时的推荐方法是什么?我们是否必须从秒数开始计算?为什么这样实现?

java java-8 java-time

54
推荐指数
5
解决办法
4万
查看次数

为NSString的整个长度生成NSRange的快捷方式?

是否有一个简短的方法来说"整个字符串"而不是输入:

NSMakeRange(0, myString.length)]
Run Code Online (Sandbox Code Playgroud)

这种代码中最长的一部分是最不重要的(因为我通常想在整个字符串中搜索/替换),这似乎很愚蠢......

[myString replaceOccurrencesOfString:@"replace_me"
                          withString:replacementString
                             options:NSCaseInsensitiveSearch
                               range:NSMakeRange(0, myString.length)];
Run Code Online (Sandbox Code Playgroud)

objective-c nsstring ios nsrange

51
推荐指数
6
解决办法
3万
查看次数

在SQLite中使用UUID

是否可以在SQLite中使用UUID值作为主键?我发现关于这个主题的信息非常有限,所以我不确定SQLite是否支持UUID数据类型.我应该将UUID存储为字符串吗?

sqlite uuid

51
推荐指数
5
解决办法
3万
查看次数

未指定标头映射,无法通过名称访问记录值(Apache Commons CSV)

当我尝试读取csv时,我收到此错误消息:

Exception in thread "main" java.lang.IllegalStateException: No header mapping was specified, the record values can't be accessed by name
at org.apache.commons.csv.CSVRecord.get(CSVRecord.java:99)
at mockdata.MockData.main(MockData.java:33)
Run Code Online (Sandbox Code Playgroud)

Java结果:1

我正在使用Apache Commons CSV库1.1.尝试使用Google搜索错误消息,我唯一得到的是像grepcode这样的网站上的代码列表.

这是我的代码:

package mockdata;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVRecord;

public class MockData
{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws FileNotFoundException, IOException
    {
        Reader in = new InputStreamReader(MockData.class.getClassLoader()
                                .getResourceAsStream("MOCK_DATA.csv"), "UTF-8");
        Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in);
        for (CSVRecord record …
Run Code Online (Sandbox Code Playgroud)

java csv apache-commons apache-commons-csv

51
推荐指数
1
解决办法
2万
查看次数

如何在Java中获取时区的当前日期和时间?

我的应用程序托管在伦敦服务器中.我在西班牙马德里.所以时区是-2小时.

如何获取我的时区的当前日期/时间.

Date curr_date = new Date(System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)

例如

Date curr_date = new Date(System.currentTimeMillis("MAD_TIMEZONE"));
Run Code Online (Sandbox Code Playgroud)

随着Joda-Time

DateTimeZone zone = DateTimeZone.forID("Europe/Madrid");
DateTime dt = new DateTime(zone);
int day = dt.getDayOfMonth();
int year = dt.getYear();
int month = dt.getMonthOfYear();
int hours = dt.getHourOfDay();
int minutes = dt.getMinuteOfHour();
Run Code Online (Sandbox Code Playgroud)

java timezone jodatime

49
推荐指数
4
解决办法
20万
查看次数