小编Bil*_*yfm的帖子

java Builder类中的其他方法(lombok注释)

所以,我有使用@Builder lombok注释的类.这是它的外观和我如何使用它:

import lombok.Builder;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonProperty;

@Data
@Builder
public class MyModel {
	@JsonProperty(value = "myField1")
	private String myField1;

	@JsonProperty(value = "myField2")
	private String myField2;

	@JsonProperty(value = "myField3")
	private String myField3;
 }
 
//This is how I use it:
 
MyModel model = MyModel.builder()
                    .myField1("value for field 1")
                    .myField2("value for field 2")
                    .build();
	
	
Run Code Online (Sandbox Code Playgroud)

我的问题是,在这个类中添加一些额外的方法是否是一个好习惯?或者我应该保持原样并在外面做任何业务逻辑?

基本上,让我们说,我需要一个帮助方法来设置myField3属性,因为我不能只做:

 .myField3("value for field 3")
 .build()
Run Code Online (Sandbox Code Playgroud)

我需要对field3执行一些值的操作,之后将其设置为MyModel.

那么我可以将这个辅助方法放到这个类中吗?

java annotations builder lombok java-annotations

4
推荐指数
1
解决办法
1465
查看次数

AWS S3:.csv 文件下载为 .csv

我有 2 个 AWC 帐户,每个帐户都有一个 S3 存储桶。我将两个相同大小的 .CSV 文件上传到每个 S3 存储桶。

当我尝试下载下载为时,此文件在第一个帐户中下载为 .CSV 文件。但是(!!)当我尝试从第二个帐户下载此文件时 - 它以 .TXT 格式下载。

这怎么会发生?这两个文件的创建方式相同:通过 Redshift UNLOAD 查询,执行将选定数据从 Redshift 复制到 S3。

UPDATE : 会不会是因为在这个文档中,**服务器端加密就等于AWS-KMS? 我注意到从 .csv 转换为 .txt 的文件具有“服务器端加密:AWS-KMS”,而作为 .csv 下载的 .csv 文件具有“服务器端加密:无”

更新:在不同的浏览器中尝试过 - 结果相同

在此处输入图片说明

amazon-s3 amazon-web-services amazon-redshift

4
推荐指数
1
解决办法
6897
查看次数

在ElasticSearch中的1000万个文档中添加新字段

我有ElasticSearch索引,可以存储超过1000万个文档。我需要遍历所有索引并为每个文档添加新的字段和值。我知道两种方法:1.使用滚动搜索获取所有结果,并使用BULK api将所有文档复制到新索引中(在复制时添加新字段)。将所有文档复制到新索引后-切换别名。2.使用滚动搜索和批量API更新现有索引中的所有文档(无需复制到新索引和切换别名)。

我不明白,为什么推荐第一种方法?我可以只使用2种方法吗?在使用2种方法运行程序时,是否有可能索引发生问题?我需要更新的索引包含实时产品数据,我担心客户可能会受到某种影响

elasticsearch

3
推荐指数
1
解决办法
922
查看次数

在java中将"mm/yy"转换为"yyyy-mm-dd"

我需要将"11/17"字符串日期(2017年11月)转换为"2017-11-01"(2017年11月1日).

在Java中实现这一目标的最佳方法是什么?

我试过了:

String dayMonthYear = "11/17";
dayMonthYear = "01/" + dayMonthYear;

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yy");
DateTime dt = formatter.parseDateTime(dayMonthYear);
dt.year().setCopy(dt.getYear() + 2000);

DateTimeFormatter dtfOut = DateTimeFormat.forPattern("yyyy-MM-dd");
dayMonthYear = dtfOut.print(dt);
System.out.println(dayMonthYear); // "2017-11-01";
Run Code Online (Sandbox Code Playgroud)

和:

SimpleDateFormat dateFormatTwoDigitsYear = new SimpleDateFormat(TWO_DIGITS_YEAR_DATE_FORMAT);  //"dd/MM/yy"
SimpleDateFormat dateFormatFourDigitsYear = new SimpleDateFormat(FOUR_DIGITS_YEAR_DATE_FORMAT);//  "yyyy-MM-dd"
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -100);//??? I AM NOT SURE WHY DO I NEEED THIS??
dateFormatTwoDigitsYear.set2DigitYearStart(calendar.getTime());
try
{
    dayMonthYear = dateFormatFourDigitsYear.format(dateFormatTwoDigitsYear.parse(dayMonthYear));
}
catch (ParseException e)
{
    log.error("Error while formatting date …
Run Code Online (Sandbox Code Playgroud)

java date jodatime date-parsing simpledateformat

1
推荐指数
1
解决办法
5382
查看次数

SQL Redshift 2 个时间戳之间的天数差异

在我的 Redshift 表中,我有 2 列存储时间戳值:start_date_time 和 end_date_time

我需要找到start_date_time 和 end_date_time之间的差异,这样,如果差异为 1 天,则结果应为 1。如果 diff 为 12 小时,则结果应为 0.5,如果 diff 为 8 小时 - 则结果应为 0.3333 等。

我怎样才能做到这一点?我尝试使用 datediff 函数:但这不会返回我想要的:

select datediff(day,'2011-12-31 8:30:00','2011-12-31 20:30:00') as day_diff;
Run Code Online (Sandbox Code Playgroud)

结果是 0。但我需要 0.5,因为相差 12 小时。

sql datetime amazon-redshift

1
推荐指数
1
解决办法
7957
查看次数