๐Ÿ”ญ
Ellery's study archive
Resume(์ˆ˜์ •์ค‘)GithubTistory
  • framework, library
    • Spring core
      • ์Šคํ”„๋ง ํŠธ๋ผ์ด์•ต๊ธ€ - POJO, IOC/DI, AOP, PSA
      • Servlet
    • Spring MVC
      • DispatcherServlet
      • Validation
    • Spring Boot
    • Spring Security
    • Spring Batch
    • Spring Webflux
    • JPA
    • JUnit, Spring Test
    • etc
      • Slf4j MDC(Mapped Diagnostic Context)
  • ETC, ๊ฐœ๋ฐœ ํŒ๋“ค
    • ๊ฐœ๋ฐœ ํŒ๋“ค
      • ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ init ์‹œ์— ํ•ด์•ผ๋  ๊ฒƒ๋“ค
      • vim ํ•œ๊ธ€ ๊นจ์งˆ ๋•Œ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹ ์ง€์ •
      • EC2 ssh connection ์‰ฝ๊ฒŒ ํ•˜๊ธฐ
      • ๋ฆฌ๋ˆ…์Šค ์ปค๋งจ๋“œ, netstats
      • Forkํ•œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ origin ์—…๋ฐ์ดํŠธ
      • git merge, rebase
      • Intellij ์ž์ฃผ ์“ฐ๋Š” ๊ธฐ๋Šฅ ๋‹จ์ถ•ํ‚ค
      • JSON handling
      • aws user-data.sh
    • Lombok annotation, ๊ถŒ์žฅ ๋ฐฉ์‹
    • DB ๋ชจ๋ธ๋ง ์‹œ์— ์ธ์กฐ ์‹๋ณ„์ž ์ •์˜ํ•˜๋Š” ์ผ€์ด์Šค
    • Redis pub/sub vs Apache kafka
  • Language
    • Java
      • ์ž๋ฐ” ๋ฒ„์ ผ๋ณ„ feature
      • JVM architecture
      • Garbage collection
      • Java String pool
      • java 8 Concurrent
      • Optional
      • Stream
      • Comparator, Comparator
      • Error, Exception
      • Java์˜ Call by value(pass by value)
      • Java ๋ณ€์ˆ˜ ๊ฐ„ ๊ฐ’ Swap ๋ฐฉ์‹ 5๊ฐ€์ง€
    • Javascript
      • ์ž์ฃผ ์“ฐ๋Š” ES6 ๋ฌธ๋ฒ• ์ •๋ฆฌ
      • ES6 module
      • ES6 proxy
      • scope, var closure ์ด์Šˆ, let, const
    • Python
      • @lru_cache
  • CS
    • OS
      • Process, Thread
      • CPU scheduling
      • sync vs async, blocking vs nonblocking
      • Memory segmentation
      • virtual memory
      • ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • Network
      • UDP
      • TCP
      • DNS
      • HTTP
      • web server, WAS
      • Proxy, Load balancer
      • web socket, WebRTC
      • gRPC
      • web secure
    • DB
      • MySQL
      • index
      • ์ •๊ทœํ™”
      • DB ํŠธ๋žœ์žญ์…˜, ๋™์‹œ์„ฑ ์ œ์–ด ๋ฌธ์ œ
      • ํด๋Ÿฌ์Šคํ„ฐ๋ง
      • ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜
      • ์ƒค๋”ฉ
    • Data Structure, Algorithm
      • AVL tree, Red black tree
      • B-tree, B*tree, B+tree
      • Hash
    • Design pattern
      • SOLID
      • ์ƒ์„ฑ ํŒจํ„ด
        • ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด
        • ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด
        • ๋นŒ๋” ํŒจํ„ด
        • Null ๊ฐ์ฒด ํŒจํ„ด
      • ๊ตฌ์กฐ ํŒจํ„ด
        • ํผ์‚ฌ๋“œ ํŒจํ„ด
        • ํ”„๋ก์‹œ ํŒจํ„ด
        • ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด
        • ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด
      • ํ–‰์œ„ ํŒจํ„ด
        • ์ „๋žต ํŒจํ„ด
        • ํ…œํ”Œ๋ฆฟ ๋ฉ”์„œ๋“œ ํŒจํ„ด
        • ์ƒํƒœ ํŒจํ„ด
        • ์˜ต์ €๋ฒ„ ํŒจํ„ด
  • ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ณ
    • Layered Architecture
    • ํด๋ฆฐ ์•„ํ‚คํ…์ณ
    • DDD
    • etc
      • DTO vs VO
  • ๊ฐœ๋ฐœ ์„œ์ ๋“ค
    • ์†ŒํŠธ์›์Šค ์•ค์†”๋กœ์ง€์—์„œ ์†Œ๊ฐœ๋˜๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์ƒํ™œ ์ฒด์กฐ ์›์น™ ๊ฐ„๋žต ์ •๋ฆฌ
    • ์—˜๋ ˆ๊ฐ•ํŠธ ์˜ค๋ธŒ์ ํŠธ - ์ƒˆ๋กœ์šด ๊ด€์ ์—์„œ ๋ฐ”๋ผ๋ณธ ๊ฐ์ฒด์ง€ํ–ฅ
    • ๋งŒ๋“ค๋ฉด์„œ ๋ฐฐ์šฐ๋Š” ํด๋ฆฐ ์•„ํ‚คํ…์ณ
  • ํ…Œํฌ ๋ธ”๋กœ๊ทธ
Powered by GitBook
On this page
Edit on GitHub
  1. Language
  2. Java

Optional

Previousjava 8 ConcurrentNextStream

Last updated 2 years ago

  • ๋น„์–ด์žˆ๊ฑฐ๋‚˜ ํ•˜๋‚˜ ์ด์ƒ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ์ธ์Šคํ„ด์Šค์˜ ํƒ€์ž…

  • ์–ด๋–ค ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ๋Š”๋ฐ ์›์†Œ๋ฅผ ๊บผ๋‚ด์„œ ์ถœ๋ ฅ์„ ํ•˜๋Š” ๊ฒฝ์šฐ

    • ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋Š” ๊ฒƒ์€ ์ŠคํƒํŠธ๋ ˆ์ด์Šค๋ฅผ ๋‚จ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ๋น„์šฉ์ด ๋น„์Œˆ.

    • null์„ ๋˜์ง€๋Š” ๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฅผ ์œ„ํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ๋œ๋‹ค

    • Optional ํƒ€์ž…์œผ๋กœ ๋ž˜ํ•‘ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ช…์‹œ์ ์œผ๋กœ ๋นˆ ๊ฐ’์ผ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ๊ณ , ๋นˆ ๊ฐ’์ธ ๊ฒฝ์šฐ์—๋Š” ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ•์ œํ•œ๋‹ค

  • ๋ฆฌํ„ด๊ฐ’์œผ๋กœ๋งŒ ์“ฐ๊ธฐ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜, ๋งต์˜ key ํƒ€์ž…, ์ธ์Šคํ„ด์Šค์˜ ํ•„๋“œํƒ€์ž…์œผ๋กœ ์“ฐ์ง€ ๋ง์ž. ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์“ธ ๊ฒฝ์šฐ ๋ฌธ๋ฒ•์ ์œผ๋กœ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ, ๋ฐ”๋””์—์„œ null์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ์ฒดํฌํ•ด์•ผ๋˜๊ณ , ๋ฒˆ๊ฑฐ๋กœ์›Œ์ง

    • ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์“ฐ๋Š” ๊ฒฝ์šฐ ๋ฌธ๋ฒ•์ ์œผ๋กœ๋Š” ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ, ๋ฐ”๋””์—์„œ isPresent๋กœ null ์ฒดํฌ๋ฅผ ํ•ด์•ผ๋˜๊ณ , ํŒŒ๋ผ๋ฏธํ„ฐ ์ž์ฒด๋„ null ์ฒดํฌ๋ฅผ ํ•ด์•ผ๋˜์„œ Optional์„ ์“ฐ๋Š” ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง

    • Map์˜ ํ‚ค๋Š” null์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ทœ์น™์„ ๊นจ๋Š” ๊ฒƒ์ž„

  • Primitive ํƒ€์ž…์šฉ Optional ์ด ๊ฐ๊ฐ ๋”ฐ๋กœ ์žˆ๋‹ค. OptionalInt, OptionalLongโ€ฆ

  • collection, Map, Stream, Array, Optional์€ Optional๋กœ ๊ฐ์‹ธ์ง€ ๋ง์ž

  • ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” item 55. ์ ์ ˆํ•œ ๊ฒฝ์šฐ์— Optional์„ ๋ฆฌํ„ดํ•˜๋ผ

  • ์ž์ฃผ ์“ฐ๋Š” API

    • Optional ๋งŒ๋“ค๊ธฐ - of(), ofNullable(), empty()

    • Optional ์— ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ - isPresent(), isEmpty() - java11

    • Optional์— ์žˆ๋Š” ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ - get()

    • ๋น„์–ด์žˆ๋Š” Optional์—์„œ ๊ฐ’์„ ๊บผ๋‚ด๋Š” ๊ฒฝ์šฐ - ifPresent(consumer)

      • โ€˜springโ€™์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆ˜์—…์ด ์žˆ์œผ๋ฉด id๋ฅผ ์ถœ๋ ฅํ•ด๋ผ

    • Opiontal์— ๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ฐ€์ ธ์˜ค๊ณ  ์—†์œผ๋ฉด - getElseGet(Supplier)

      • โ€˜JPAโ€™๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆ˜์—…์ด ์žˆ์œผ๋ฉด ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ฆฌํ„ดํ•ด๋ผ

    • Optional์— ๊ฐ’์ด ์žˆ์œผ๋ฉด๊ฐ€์ ธ์˜ค๊ณ , ์—†์œผ๋ฉด ์—๋Ÿฌ๋ฅผ ๋˜์ง„๋‹ค - orElseThrow()

    • Optiontal์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’ ๊ฑธ๋Ÿฌ๋‚ด๊ธฐ - Optional filter(predicate)

    • Optiontal์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’ ๋ณ€ํ™˜ํ•˜๊ธฐ - Optional map(Func), Optiontal flatMap(Func)

      โ†” stream์˜ flatmap ์€ input์€ ํ•˜๋‚˜์ธ๋ฐ output์ด ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ flatmap ์œผ๋กœ 1๋Œ€1๋งค์นญ์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•จ

https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html
https://www.oracle.com/technical-resources/articles/java/java8-optional.html