전체 글

알고리즘&자료구조

[자료구조] 우선순위 큐와 힙

힙(Heap)완전이진트리 형태의 자료구조이며 여러 개의 값 중 최댓값 또는 최솟값을 찾아내는 연산을 할 때 주로 사용한다.부모노드와 서브트리간 대소 관계가 성립된다.종류로는 최대 힙 (부모 노드의 키 값이 자식 노드보다 큼), 최소 힙(부모 노드의 키 값이 자식 노드보다 작음)이 있다.우선 순위 큐큐(Queue)는 먼저 들어오는 데이터가 먼저 나가는 FIFO(First In First Out) 형식의 자료구조이다.우선순위 큐(Priority Queue)는 들어오는 순서가 아니라 우선순위가 높은 데이터가 먼저 나가는 형태의 자료구조이다. 우선순위 큐는 배열 또는 연결리스트로도 구현이 가능하지만 시간복잡도의 향상을 위해 일반적으로 완전이진트리 형태의 힙(Heap)을 이용하여 구현. 우선순위 큐의 동작 원리(..

알고리즘&자료구조

[자료구조] Collection

선형 자료구조선형 자료구조는 데이터가 일렬로 연결된 형태라고 보면 된다. 예를 들면 자주 사용하는 int[] 배열같은 것대표적으로 리스트(List)와 큐(Queue), 덱(Deque)이 있다.비선형 자료구조일렬로 나열된 것이 아닌, 각 요소가 여러 개의 요소와 연결 된 형태이다. 거미줄을 상상하면 편하게 이해 할 수 있다.대표적으로 그래프(Graph)와 트리(Tree)이 있다.Java Collections FrameWork일정 타입의 데이터들이 모여 쉽게 가공 할 수 있도록 지원하는 자료구조들의 뼈대(기본 구조)라는 의미를 가지고 있다.자바에서 제공하는 Collection은 크게 3가지 인터페이스로 나뉘어 있다.List(리스크)Queue(큐)Set(집합)위에 3가지 인터페이스를 구현 한 것들이 있다. C..

실무 경험

사내 홈페이지 도서신청 기능 개선 설명 및 느꼈던 점들(공공 API 사용)

회사에 입사한 지 6개월 차가 되면서 고객사 유지보수 , 외부 협력사와의 추가개발 등 인수인계도 받고 업무를 맡아 보내고 있는 와중에 회사 복지 중에 무료 도서 복지를 정말 잘 사용하고 있었다. 하지만 사내홈페이지에서 도서를 신청할 때마다 하단의 사진과 같이 도서명 / 출판사 / 저자 / 내용(목차) 를 필수로 입력해야 하는데 이 부분을 도서 사이트 ex) yes24 , 교보 , 알라딘 등에서 하나씩 치는 게 번거롭다는 생각을 하고 있었다. 취업 전 프로젝트로 도서 관련 웹사이트를 구현 했었는데 그때는 일정 때문에 구현하지 못한 openAPI ISBN 검색으로 도서 데이터 뽑아오는 부분이 생각이 났다. 마침 화면단에서 자바스크립트가 부족하다는 느낌을 계속 받았는데 이 기능을 구현해보면서 자바스크립트 공부..

Spring/JPA

[JPA] 프록시와 연관관계에 대해(즉시로딩과 지연로딩)

프록시 em.find() vs em.getReference() em.find(): 데이터베이스를 통해서 실제 엔티티 객체 조회 em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 실제 클래스를 상속 받아서 만들어지며 실제 클래스와 겉 모양이 같다 프록시 객체는 실제 객체의 참조(target)를 보관 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드 호출 프록시 객체는 처음 사용할 때 한 번만 초기화 하며 이 때 프록시 객체가 실제 엔티티로 바뀌는 것이 아니고 초기화 되면 프록시 객체를 통해서 실제 엔티티에 접근하는 방식 영속성 컨텍스트에 찾는 엔티티가 이미 있으면 em.getReference()를 호출해도 실제 엔티티 반환 프록시 확인 프록시 인스턴스의..

Spring/JPA

[JPA] 상속관계 매핑

상속관계 매핑 관계형 데이터베이스는 상속 관계 없다 - > 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑한 것이 상속관계 매핑 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS : 구현 클래스마다 테이블 전력 @DiscriminatorColumn(name= "DTYPE") @DiscriminatorValue() 조인 전략(JOINED) 장점 테이블 정규화 외래 키 참조 무결성 제약조건 활용가능 저장공간 효율화 단점 조회시 조인을 많이 사용, 성능 저하 될 수 있음 조회 쿼리가 복잡함 데이터 저..

Spring/JPA

[JPA] 연관관계 매핑의 종류

연관관계 매핑시 고려사항 다중성 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyToMany(사용 안하는 거 권장) 단방향, 양방향 태이블은 외래 키 하나로 양쪽 조인 가능하기 때문에 방향이라는 개념 없다 객체는 참조용 필드가 있는 쪽으로만 참조 가능 - > 한족만 참조시 단방향 , 양쪽이 서로 참조하면 양방향 연관관계의 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺지만 객체 양방향 관계는 A->B , B->A 처럼 참조가 2군데이므로 테이블의 외래 키 관리할 곳을 지정해야함 (@JoinColumn) 연관과계의 주인은 외래 키를 관리하는 참조 다중성 종류 다대일 단방향 : 가장 일반적으로 사용되는 연관관계라고 함 나는 실무에서 JPA..

Spring/JPA

[JPA] EntityMapping / 연관관계 매핑2

연관관계의 주인과 mappedBy mappedBy 는 JPA 학습 중에 어려운 개념으로 처음 학습시 이해하기 어려울 수 있다. - 꾸준히 공부 할 것(코드를 쳐보는 게 더 도움 될 듯) 객체와 테이블간에 연관관계를 맺는 차이를 이해해야 한다 객체와 테이블이 관계를 맺는 차이 객체 연관관계는 2개로 ex) 회원 -> 팀 (단방향) / 팀 -> 회원 (단방향) 테이블 연관관계는 1개 ex) 회원 팀의 연관관계 (양방향)  객체의 양방향 관계 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단방향 관계 2개다. 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야 함 // A - > B class A { B b; } // B - > A class B { A a; } 테이블은 외래 키 하나로..

Spring/JPA

[JPA] EntityMapping / 연관관계 매핑 1

객체와 테이블 매핑 @Entity @Entty가 붙은 클래스는 JPA가 관리, 엔티티라한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스 사용x 저장할 필드에 final 사용 불가(다른 강의 들을 때도 주로 private 필드로 생성했음) @Entity 속정 name - JPA에서 사용할 엔티티 이름을 지정하고 기본값으로는 클래스 이름을 그대로 사용한다. @Table 속성 @Table은 엔티티와 매핑할 테이블을 지정한다 name - 매핑할 테이블 이름이며 기본값은 엔티티 이름을 사용한다. uniqueConstraints - DDL 생성 시에 ..

기만석
DevStudy