小编ric*_*din的帖子

如何在Java中以字符串格式获取当前时间戳?"yyyy.MM.dd.HH.mm.ss"

如何在Java中以字符串格式获取时间戳?"yyyy.MM.dd.HH.mm.ss"

String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Timestamp());
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的,但Timestamp()需要一个参数......

java datetime timestamp date

152
推荐指数
7
解决办法
47万
查看次数

使用Spring Embedded Kafka测试@KafkaListener

我正在尝试为使用Spring Boot 2.x开发的Kafka监听器编写单元测试.作为一个单元测试,我不想启动一个完整的Kafka服务器作为Zookeeper的一个实例.所以,我决定使用Spring Embedded Kafka.

我的听众的定义非常基本.

@Component
public class Listener {
    private final CountDownLatch latch;

    @Autowired
    public Listener(CountDownLatch latch) {
        this.latch = latch;
    }

    @KafkaListener(topics = "sample-topic")
    public void listen(String message) {
        latch.countDown();
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,latch在接收消息后验证计数器等于零的测试非常容易.

@RunWith(SpringRunner.class)
@SpringBootTest
@DirtiesContext
@EmbeddedKafka(topics = { "sample-topic" })
@TestPropertySource(properties = { "spring.kafka.bootstrap-servers=${spring.embedded.kafka.brokers}" })
public class ListenerTest {

    @Autowired
    private KafkaEmbedded embeddedKafka;

    @Autowired
    private CountDownLatch latch;

    private KafkaTemplate<Integer, String> producer;

    @Before
    public void setUp() {
        this.producer = buildKafkaTemplate();
        this.producer.setDefaultTopic("sample-topic");
    }

    private KafkaTemplate<Integer, String> …
Run Code Online (Sandbox Code Playgroud)

java apache-kafka spring-boot spring-kafka spring-boot-test

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

Java默认接口方法具体用例

Java 9即将推出,更多功能将添加到Java接口,如私有方法.default接口中的方法是在Java 8中添加的,主要是为了支持在集合中使用lambda,而不会破坏与该语言的早期版本的复古兼容性.

在Scala中,traits中的方法非常有用.但是,Scala使用不同的方法处理traits而不是Java default.考虑多重继承解决方案或使用traits作为mixin.

除了以上使用,哪些是使用default方法的真实场景值得?这几年是否出现了一些使用它们的模式?使用这种方法可以解决哪些问题?

design-patterns interface java-8 default-method java-9

10
推荐指数
3
解决办法
2614
查看次数

透明远程处理和位置透明度之间的差异

我用Google搜索了一下,找到了上述两种远程处理策略之间差异的一个很好的解释,即透明的远程处理位置透明度.

据我所知,前者是基地Java RMI,后者是基地Akka.我非常清楚Java RMI,我理解透明的远程处理意味着什么,但是怎么样Akka

非常感谢所有回复.

java remoting scala rmi akka

9
推荐指数
2
解决办法
805
查看次数

类型构造函数可以被视为函数式编程语言中的类型吗?

我正在接近Haskell编程语言,我有Scala和Java开发人员的背景.

我正在阅读类型构造函数背后的理论,但我无法理解它们是否可以被视为类型.我的意思是,在Scala中,您使用关键字classtrait定义类型构造函数.想想List[T],或者Option[T].同样在Haskell中,您使用相同的关键字data,用于定义新类型.

那么类型构造函数也是类型吗?

haskell types type-theory scala

9
推荐指数
2
解决办法
313
查看次数

Kafka KStreams - 处理超时

我试图<KStream>.process()用a TimeWindows.of("name", 30000)来批量处理一些KTable值并发送它们.似乎30秒超过了消费者超时间隔,之后Kafka认为该消费者已经解散并释放分区.

我已经尝试提高轮询频率和提交间隔以避免这种情况:

config.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, "5000");
config.put(StreamsConfig.POLL_MS_CONFIG, "5000");
Run Code Online (Sandbox Code Playgroud)

不幸的是,这些错误仍在发生:

(很多这些)

ERROR  o.a.k.s.p.internals.RecordCollector - Error sending record to topic kafka_test1-write_aggregate2-changelog 
org.apache.kafka.common.errors.TimeoutException: Batch containing 1 record(s) expired due to timeout while requesting metadata from brokers for kafka_test1-write_aggregate2-changelog-0
Run Code Online (Sandbox Code Playgroud)

其次是:

INFO   o.a.k.c.c.i.AbstractCoordinator - Marking the coordinator 12.34.56.7:9092 (id: 2147483547 rack: null) dead for group kafka_test1
WARN   o.a.k.s.p.internals.StreamThread - Failed to commit StreamTask #0_0 in thread [StreamThread-1]: 
  org.apache.kafka.clients.consumer.CommitFailedException: Commit cannot be completed since the group has …
Run Code Online (Sandbox Code Playgroud)

java apache-kafka apache-kafka-streams

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

使用Akka Persistence和Extra-Cameo模式至少一次交付

我正在开发一个使用Akka的应用程序,其中Actors旨在避免请求 - 响应模式.使用Extra或Cameo模式可以将actor之间的交互建模为消息的"流".

下图总结了这些演员的架构.

Actorbase通信模型

Cameo模式用于处理来自SK演员的响应.

现在,假设我要保证在-至少一次的语义SFSK演员.我怎样才能做到这一点?使用Akka持久性实现ato语义需要在这些actor之间实现请求 - 响应模式.

如何确保使用Cameo处理响应的actor之间至少有一次语义?

非常感谢

akka reliable-message-delivery akka-persistence

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

Spring控制器建议无法正确处理CompletableFuture异常完成

我正在使用Spring Boot 1.5,我有一个异步执行的控制器,返回一个CompletableFuture<User>.

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private final UserService service;

    @GetMapping("/{id}/address")
    public CompletableFuture<Address> getAddress(@PathVariable String id) {
        return service.findById(id).thenApply(User::getAddress);
    }
}
Run Code Online (Sandbox Code Playgroud)

该方法UserService.findById可以抛出一个UserNotFoundException.所以,我开发了专门的控制器建议.

@ControllerAdvice(assignableTypes = UserController .class)
public class UserExceptionAdvice {
    @ExceptionHandler(UserNotFoundException.class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    @ResponseBody
    public String handleUserNotFoundException(UserNotFoundException ex) {
        return ex.getMessage();
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,在向控制器发出未知用户请求的情况下,测试不会返回HTTP 500状态而不是404状态.

这是怎么回事?

spring java-8 spring-boot completable-future

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

可选的monad和Java中的Demeter法则

当我查看一些代码时,我遇到了这个代码片段.

List<User> users = /* Some code that initializes the list */;
users.stream()
     .filter(user -> user.getAddress().isPresent())
     .map(/* Some code */)
// And so on...
Run Code Online (Sandbox Code Playgroud)

方法的调用user.getAddress()返回一个Optional<Address>.遵循着名的德米特法则(LoD),上面的代码并不干净.但是,我无法弄清楚如何重构它以使其更清洁.

第一次尝试可能是向User类中添加一个方法hasAddress(),但是这种方法克服了拥有Optional<Address>IMO 的需要.

我该如何重构上面的代码?在这种情况下,是否值得满足LoD?

编辑:我错过了在map方法中指定我不想返回地址.

java refactoring law-of-demeter optional

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

将Java 8流降级到Intellij IDEA中的Java 7循环

我有一些使用Java 8功能编写的代码,这意味着流和lambdas.现在,我必须在使用Java 7的项目中重用这些代码.是否有可能使用IntelliJ自动重构代码?

例如,我必须将一些看起来如下的代码重构为一个简单的for/ while循环.

Arrays.stream(values)
      .distinct()
      .limit(2)
      .count();
Run Code Online (Sandbox Code Playgroud)

java refactoring intellij-idea java-7 java-8

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