본문 바로가기 메뉴 바로가기

공부노트

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

공부노트

검색하기 폼
  • 분류 전체보기 (42)
    • Java (14)
    • DB (2)
    • JPA (2)
    • 네트워크 (1)
    • Git & GitHub (2)
    • 기타 (2)
    • Web (2)
      • Spring (9)
    • 하루스터디 (7)
  • 방명록

Java (14)
[Java] Lambda는 JVM에서 어떻게 다뤄지는가? (invokedynamic)

JVM이 Lambda를 어떤 방식으로 다루는지 궁금해서 찾아보던 중 Oracle 블로그에서 Red Hat의 시니어 엔지니어인 Ben Evans가 쓴 글을 찾을 수 있었다. 이를 이해하며 Lambda가 JVM에서 어떻게 다뤄지는지 살펴보려 한다. https://blogs.oracle.com/javamagazine/post/behind-the-scenes-how-do-lambda-expressions-really-work-in-java https://blogs.oracle.com/javamagazine/post/behind-the-scenes-how-do-lambda-expressions-really-work-in-java blogs.oracle.com javac, javap 모두 19.0.1을 사용하였다...

Java 2023. 11. 10. 03:44
[Java] Enum에서는 valueOf()보다 table switch로 최적화된 swtich ~ case를

이 글에서는 Java Enum의 valueOf()보다 switch ~ case의 사용이 빠른 예시와, Enum의 switch ~ case가 바이트코드 레벨에서 어떻게 최적화되는지를 기술하였다. Spring MVC의 코드를 살펴보던 도중 RequestMethod라는 Enum에서 HTTP 요청 메서드 문자열을 Enum으로 변환할 때 java.lan.Enum.valueOf()를 사용하지 않고 resolve()라는 메서드를 별도로 만들어 사용하는 것을 보았다. // Spring 6.0.6+ public enum RequestMethod { GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE; @Nullable public static RequestMethod resolv..

Java 2023. 9. 14. 23:53
HikariCP 설정 바꾸기

커넥션 풀 라이브러리를 사용하면 풀에 커넥션을 저장, 재사용이 가능하며 커넥션들의 유효성을 검사하는 등의 기능을 사용할 수 있다. HikariCP는 자바에서 가장 많이 쓰이는 커넥션 풀 라이브러리다. Spring Boot 2.0 이전에는 Apache Commons DBCP(DataBase Connection Pool)이 사용되었으나 2.0부터는 HikariCP를 공식적으로 사용하면서 별도의 설정 없이도 사용할 수 있게 되었다. 기본 설정도 우수하지만 아래와 같이 필요에 따라 설정을 변경할 수 있다. 다음은 hikari datasource 설정에 대한 한 예시이다. # application.yml spring: datasource: url: jdbc:mysql://localhost:3306/example ..

Java 2023. 5. 21. 23:43
왜 Mockito를 통해 테스트를 해야 할까?

mockito는 스스로를 자바의 단위 테스트를 위한 '맛있는' 프레임워크라고 부르고 있다. mockito를 사용하면 기존 코드, 혹은 아직 만들지 않은 코드에 대한 스텁(Stub)을 만들 수 있다. mockito와 Stub을 통한 테스트가 어떤 장점이 있길래 많은 사람들이 이를 사용하는 것일까? Out-In 개발은 비즈니스 요구 사항이 명확하지 않은 상태에서 빠르게 사용자 인터페이스부터 설계하는 방식이다. 사용자의 진입점을 먼저 정의한 뒤 비즈니스 로직들에 대한 설계가 이루어진다. 내부 구현에 대한 설계가 완벽하게 이루어지지 않아 Out-In 방식으로 사용자의 진입점부터 개발하는 상황을 생각해 보자. 간단하게 하나의 서비스 클래스를 의존하는 컨트롤러를 아래와 같이 만들었다. MockitoService..

Java 2023. 5. 14. 22:37
[Java] Stack보다는 ArrayDeque를 쓰자. Stack과 Vector의 문제점

Stack을 쓰지 말라 프로그래밍에 조금만 익숙하다면 Stack과 Queue라는 자료구조를 알 것이다. 각각 LIFO(Last In First Out), FIFO(First In First Out)가 필요한 상황에 흔히 사용된다. java.util의 Stack은 Vector를 상속받아 구현되었는데 Vector는 대표적인 자바의 레거시 클래스로 Stack 또한 이 단점을 그대로 가지고 있다. A more complete and consistent set of LIFO stack operations is provided by the Deque interface and its implementations, which should be used in preference to this class. For exam..

Java 2023. 4. 2. 22:36
[Java] 왜 try-with-resources를 사용할까?

try-finally의 단점 InputStream, OutputStream과 java.sql.Connection과 같은 자원은 close 메서드를 사용자가 직접 호출해 닫아주어야 한다. 이런 자원을 직접 닫아주지 않아도 gc가 알아서 처리해주긴 하지만 그 시점을 정확히 알 수 없기 때문에 직접 닫아주는 것이 가장 안전하다. Java7 이전에는 자원의 닫힘을 처리하기 위해 try-finally가 사용되었다. BufferedReader를 사용해 한 줄의 콘솔 입력을 받는 메서드는 아래와 같다. String readLine() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try { re..

Java 2023. 3. 27. 21:30
이전 1 2 3 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
  • 우테코 프리코스
  • stubbing
  • 스프링
  • logback-spring.xml
  • JPA
  • Spring 테스트
  • RandomPort
  • 의존성 주입
  • springboottest
  • Payload 암호화
  • 우테코 5기
  • 생성자 주입
  • 함수형 인터페이스
  • JPA JSON
  • Fromtail
  • 자바
  • Spring
  • 람다식
  • Spring Boot Monitoring
  • java switch case
  • GitHub Discussion Template
  • 우테코
  • GitHub Discussion
  • multiplebagsfetchexception
  • MySQL
  • GitHub Discussion 템플릿
  • Java
  • invokedynamic
  • MySQL 이벤트 스케줄
  • Jenkins 예약 배포
more
«   2025/08   »
일 월 화 수 목 금 토
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바