Posts 2020년 12월 21일, Daily Comment
Post
Cancel

2020년 12월 21일, Daily Comment

Collection Null and Empty Check

1
2
3
4
5
// common check
if(null == collection
   || collection.isEmpty()){
	...
  }
1
2
3
4
5
6
// better than
import org.springframework.util.CollectionsUtils;

if(CollectionUtils.isEmpty(collection)){
	...
  }


Why does Stream.allMatch() return true for an empty stream?

{empty stream}.allMatch == true
{empty stream}.noneMatch == true

StackOverflow에는 이런 질문이 있다.
why-does-stream-allmatch-return-true-for-an-empty-stream

  • 질문
    왜 빈스트림의 allMathch와 noneMatch는 true일까?

  • 답변
    Vacuous Truth, 참과 거짓을 판별할 수 있는 문장 “명제”
    “내 방에 있는 모든 책은 자바책이다.”의 명제가 참인지를 판별할 때 가정이 되야할 “내 방에 있는 모든 책”이 한권도 없다면?
    “자바책이다”를 판별하는 것 자체가 무의미하다.
    => 논리학에서 이처럼 가정이 거짓인 명제를 참으로 간주한다.
    “p이면 q이다” 라는 명제에서, p가 거짓이면 q가 참이든 거짓이든 상관없이 전체 명제는 참이되며
    이를 “Vacuous Truth”라고 한다.

즉 빈스트림에 대해 false 처리를 해야한다면 allMatch 혹은 noneMatch 검사 전에 empty 체크를 해줘야한다,

Async vs Non-Blocking

  • 비동기 vs 논블록킹
    • 비동기: 메서드(기능)을 제공하는 입장에서의 개념
    • 논블록킹: 메서드(기능)을 사용하는 클라이언트 입장에서의 개념
      메서드를 제공해주는 공급자입장에서 결과를 어떻게줄지?

  • 참고사항, 병렬프로그래밍 키워드
    • Sync
      호출하는 메서드는 결과가 완성될때까지 반환하지 않는다.
    • Async
      결과값이 결정되기 전에 먼저 임시로 반환 ( 메서드는 결과 처리중 )

    • Blocking
      클라이언트가 Async한 메서드를 이용하여 조회를 요청했다면, 결과가 완성되었을때쯤, 다시 메서드를 조회해야한다.
      조회를 하는동안 다른작업을 안하고 결과가 완성될때까지 진행하는 것
    • Non-Blocking
      결과가 완성될때까지 기다리지않고, 다른 작업을 수행하다가 Callback 함수를 이용하여 나머지 작업을 수행하는 것
This post is licensed under CC BY 4.0 by the author.