전체 글

전체 글

    Static (정적)

    Static (정적)

    0. 정적(Static) ? 정적 필드와 정적 메소드는 객체에 소속된 멤버가 아닌 클래스에 고정된 멤버이다. 클래스로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리된다. 1. 정적(Static) 멤버 생성 Static을 통해 생성된 정적멤버들은 Heap영역이 아닌 Static 영역에 할당된다. Static 영역에 할당된 메모리는 모든 객체가 공유하여 어디서든지 참조할수 있는 장점을 가지지만 Garbage Collector의 관리 영역 밖에 존재하기때문에 프로그램 종료시까지 메모리가 할당된 채로 존재하게 된다. Static을 너무 남발하게 되면 만들고자 하는 시스템 성능에 악영향을 줄 수 있다.

    대용량 요청 시 API limit

    대용량 요청 시 API limit

    대용량 요청 시 해결 방안 1억명의 이용자에게 알림을 보내야하는 상황을 가정을 해보자. 고려사항 1. 한 번에 많은 요청 시 서버다운 발생 2. 불필요한 비용 발생으로 효율적인 환경 x 해결방안 - Leaky Bucket - Token Bucket - Sliding Window Counter 1. Leaky Bucket - 네트워크로 가는 데이터의 양을 일정하게 유지를 하고 트레픽 체증을 일정하게 유지한다. - 일정 용량의 Bucket을 정해놓고 그 안에 담긴 데이터는 일정한 속도로 떨어진다. - 데이터가 Bucket의 용량을 초과하게 되면 버리게 된다. - 입력 속도 > 출력 속도 : Bucket에서 누적 발생 - 누적 > 버킷 용량 : 오버플로 발생, 데이터 패킷 손실 2. Token Bucket -..

    [SQL] Index ( 인덱스 ) 의 구조와 동작

    1. INDEX ? 지정한 컬럼들을 기준으로 메모리 영역에 일종의 목차 를 생성하는 것이다. INSER, UPDATE, DELETE(Command)의 성능을 희생하고 SELECT(Query)의 성능을 향상시킨다. 즉, “내가 원하는 부분을 쉽고 빠르게 찾아서 전달해주는 역할”을 한다. “정보 검색”에 있어 성능을 최적화시켜줄 수 있는 유용한 도구 2. INDEX의 동작 동작순서 DMBS는 INDEX를 다향한 알고리즘으로 관리를 하고 있다. 일반적으로 사용되는 자료구조는 B+Tree이다. a. `Index Table`에서 `WHERE`에 포함된 값을 찾는다. b. 해당 값의 `table_id [PK]`을 가져온다. c. 가져온 `table_id [PK]`값 으로 원본 테이블에서 값을 조회한다. B+Tree..

    Jenkins 적용기

    0. 자동배포 - 전체 Flow 1. GitHub WebHook HTTP POST를 통한 간단한 이벤트 알림을 통해 어떤 일이 발생할 때 발생하는 HTTP POST 형식의 HTTP 콜백 예로, Jenkins의 Github WebHook은 개발자가 마스터 브랜치에 Push할 때 빌드를 트리거하는데 사용 Flow에서 Github에서 Jenkins로 가는 것을 알 수 있다. Github는 Jenkins로 json Data Type을 전송하는데 webhook_json을 호출한다. 다음과 같은 데이터를 포함한다. Git Repository Name Branch which was changed Commit Id Commit Message Commit Author Webhook payload object common..

    [JPA]  Bulk Insert 적용기

    [JPA] Bulk Insert 적용기

    적용이유 크롤링된 keyword 들을 insert 할때 하나하나 진행되다보니 많은 시간 소요 -> 시간을 줄일 수 있는 방법은 없을까 ? 1. Bulk insert 2. JPA batch insert 적용 전 insert 횟수와 소요시간 문제점 현재 insert시 id값을 IDENTITY 로 생성하여 제약사항에 해당 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false) private Long id; Why does Hibernate disable INSERT batching when using an IDENTITY identifier generator The Hibernate documen..

    6개월간의 회고, 8주간의 스터디와 현재 생각들

    보호되어 있는 글입니다.

    Interface, abstract class 와 Enum

    Interface, abstract class 와 Enum

    추상 클래스 ( abstract class ) ? 상속 전용 클래스 public abstract class 클래스명{} 상속을 목적으로 만들어진 클래스로 직접적인 인스턴스 생성 불가능 abstract method는 구현이 되어있지 않고 선언만 되어있는 메서드이고, abstract 로 선언되어있다. abstract method를 포함한 추상 클래스 public abstract class Object{ abstract void draw(); } 추상 클래스가 하위 클래스일 경우, 부모 클래스의 abstract 메서드들을 모두 구현한다. 만약 abstract 메서드들을 구현하지 않은 경우, 하위 클래스에 반드시 abstarct를 표시해야한다. 사용이유 빨간 네모 표시 → 추상 클래스 사실 추상클래스 대신 일반..

    Generic, Raw Type, Generic Type Eraser

    Generic ? 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시 타입 체크를 해주는 기능 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것 //Generic 적용 x - Raw Type ArrayList lists = new ArryList(); //Generic 적용 o ArrayList lists = new ArrayList(); 장점 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지할 수 있다. 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없다. 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아진다. 타입 종류 → Type → Element → Key → Value → Number public interface Ma..