목록IT (226)
잡동사니
안녕하세요. yeTi입니다. 오늘은 HTTP(Hypertext Transfer Protocol)에 대해 알아보려고 합니다. HTTP - 위키백과에 따르면 HTTP는 WWW상에서 정보를 주고받을 수 있는 Request-Response 프로토콜로, 주로 HTML 문서를 주고받는데 사용됩니다. 현재 주로 사용하는 HTTP/1.1의 표준은 공식적으로 1997년 1월에 출시되었고, HTTP/2는 2015년 5월에 출시되었다. HTTP/1.1 RFC 2068에 따르면, HTTP는 Application-level 프로토콜로 Generic, Stateless, Object-oriented의 특성을 가지며 다양한 환경에서 사용가능하다. 첫 버전인 HTTP/0.9는 raw data를 전송하기 위한 단순한 프로토콜이었는데,..
안녕하세요. yeTi입니다. 오늘은 Java의 GC(Garbage Collection)에 대해서 알아보겠습니다. Oracle JDK 8 Java Platform, Standard Edition HotSpot Virtual Machine Garbage Collection Tuning Guide를 참고하여 작성했습니다. GC (Garbage Collector)란? 메모리 관리 툴입니다. GC는 다음의 세가지 작업을 수행합니다. Young 영역(Young Generation) 에 객체를 할당하고 오래된 객체를 Old 영역(Old Generation)으로 옮깁니다. 힙 메모리의 전체 점유율이 임계 값을 초과하면 Java HotSpot VM이 마킹 단계를 트리거 하고, 동시(병렬) 마킹 단계에서 Old 영역에 살..
안녕하세요. 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과 핵심 라이브러리 및 프로퍼티, 리소스를 가지고 있다. (..
인프런의 스프링 프레임워크 핵심 기술 - 백기선을 수강하면서 내용을 정리하고 간단한 후기를 남깁니다. 스프링 프레임워크에 대한 전체적인 개념을 알고 싶으시면 Spring Framework 개념 이해하기를 확인해보세요. IoC 컨테이너와 빈 IoC란 Inversion of Control의 약어로 의존 관계 주입(Dependency Injection) 이라고도 하며 어떤 객체를 사용할 때 직접 만들어서 사용하는 것이 아니라 주입받아 사용하는 것을 말한다. 직접 사용의 예 BookRepository repository = new BookRepository(); BookService service = new BookService(repository); IoC의 예 @Autowired BookRepository ..
인프런의 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 김영한 을 수강하면서 내용을 정리하고 간단한 후기를 남깁니다. 공감 개발자는 SQL 맵퍼다. 객체지향 설계를 할수록 맵핑작업만 늘어난다. 계층형 설계를 하더라도 결과물에 대한 신뢰를 할 수가 없다. (진한 의미의 계층 분할이 어렵다.) 가지고 있던 고민 객체지향 설계를 할때 필요없는 시점의 데이터도 조회하여야 하는가? 예) 회원 정보가 다른 정보와 연관관계를 가지고 있을때 회원 정보만 필요해도 다른 정보도 조회해서 모리에 가지고 있어야 하는가 - Proxy 활용 얻은 정보 객체의 정보를 update 할때는 객체의 정보만 변경해주면 알아서 DB에 반영된다. - Dirty Checking JPQL SQL을 추상화하여 객체기반 쿼리이다. EntityM..
안녕하세요. yeTi입니다. 오늘은 쿠버네티스로 관리하는 NGINX의 설정을 변경하는 방법을 공유하겠습니다. 기본적인 컨셉은 ConfigMap에 설정 정보를 등록하고 ConfigMap의 정보를 volume의 파일로 저장하는 방식입니다. /etc/nginx/nginx.conf의 설정 변경하기 ConfigMap을 설정합니다. apiVersion: v1 kind: ConfigMap metadata: name: nginx-conf data: nginx-main.conf: | user nginx; worker_processes 2; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } h..
RestAPI를 사용하는 회사중 유명한 페이스북의 RestAPI의 구조를 확인해보려고 합니다. 페이스북 개발자 페이지에서 API를 확인하고 API 탐색기로 요청해봤습니다. 공통 특성 Access token을 Request param으로 받음 API의 구조는 다음과 같음 GET /[버전]/[Node]/[Edge] GET /[버전]/[Object id]/feed 예) curl -i -X GET \ "https://graph.facebook.com/v4.0/{canvas-id} ?access_token=your-access-token" HTTP/1.1 Object id의 종류를 다양하게 받음 Feed curl -i -X GET \ "https://graph.facebook.com/v4.0/{your-user-..