목록2020/01 (4)
잡동사니
안녕하세요. yeTi입니다. 오늘은 codility에서 제공하는 샘플 문제인 binary gap을 풀어보고 결과를 공유하고자 합니다. 문제 A binary gap within a positive integer N is any maximal sequence of consecutive zeros that is surrounded by ones at both ends in the binary representation of N. For example, number 9 has binary representation 1001 and contains a binary gap of length 2. The number 529 has binary representation 1000010001 and contains tw..
안녕하세요. yeTi입니다. 오늘은 Spring Framework에서 Transaction을 관리하는 방법에 대해 알아보겠습니다. Spring Framework Reference와 Spring Javadoc을 참고해서 작성했습니다. 스프링 프레임워크에 대한 전체적인 개념을 알고 싶으시면 Spring Framework 개념 이해하기를 확인해보세요. 개요 스프링 프레임워크는 트랜젝션 관리에 다음과 같은 장점을 가지고 있습니다. Java Transaction API (JTA), JDBC, Hibernate, and the Java Persistence API (JPA)와 같은 다양한 형태의 트랜젝션 API를 지원합니다. 선언적 트랜젝션 관리를 지원합니다. JTA처럼 복잡하지 않은 프로그래밍 방식의 트랜젝션 관..
안녕하세요. yeTi입니다. Spring AOP를 공부하다보면 Java의 Dynamic Proxy와 CGlib이 언급됩니다. 그래서 Dynamic Proxy와 CGlib에 대해서 정리하고 차이점을 알아보고자 합니다. 프록시 패턴 Dynamic Proxy와 CGlib은 기존 코드에 변경을 가하지 않으면서 기능을 추가할 수 있는 프록시 기술을 구현하기 위한 방법들입니다. 소프트웨어 디자인 패턴 중 하나인 프록시 패턴을 UML로 표현하면 아래 그림과 같습니다. 프록시 패턴의 주요 개념은 동일한 인터페이스를 가진 구현 클래스는 Client에서 사용할때 다형성을 활용하여 동일한 인터페이스에 다른 기능을 정의하여 사용할 수 있는 것입니다. Dynamic Proxy 프록시 패턴을 직접 구현하는 경우에 프록시 클래스를..
인프런의 더 자바, 코드를 조작하는 다양한 방법 - 백기선을 수강하면서 내용을 정리하고 간단한 후기를 남깁니다. JVM 이해하기 JVM, JRE, JDK 그리고 자바 JVM은 자바 가상 머신(Java Virtual Machine)의 약자로 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환(인터프리터와 JIT 컴파일러)하여 실행한다. 때문에 특정 플랫폼에 종속적이다. JVM자체는 바이트 코드를 실행하는 표준이자 특정 벤더가 구현한 구현체(JVM 벤더 : 오라클, 아마존, Azul 등)이다. JRE는 자바 실행 환경(Java Runtime Environment)의 약자로 자바 어플리케이션을 실행할 수 있도록 구성된 배포판이다. JVM과 핵심 라이브러리 및 프로퍼티, 리소스를 가지고 있다. (..