본문 바로가기

전체 글

(730)
잡다하지만 필요한 개발지식 13 Spring framework에 대해설명 1. oop란? 데이터를 객체로 취급하여, 프로그램에 반영한다. 순차적으로 프로그램이 동작하는 것과 다르게 객체의 상호작용을 통해, 프로그램이 동작한다. 객체를 사용함으로써 코드 재사용을 증가시키고, 유지보수를 감소시켜준다. 2. 자바의 메모리 영역에 대해서 설명 - 메서드 영역 : static변수, 전역 변수, 코드에서 사용되는 클래스 정보들이 올라간다. 코드에서 사용되는 클래스들을 로더가 읽고, 클래스 별로 분류해서 저장한다. 처음에 로드 될때, 필요한 것들이 메모리에 저장된다. 이때 클래스 정보가 없거나, 전역 변수에대한 오류가있으면 기동시에, 오류가 난다. -스택 : 지역변수, 메서드 등이 할당되는 LIFO 방식의 메모리이다. -힙 : new 연산자를 통해..
잡다하지만 필요한 개발지식 12 1. Filter와 Interceptor filter 와 interceptor 의 실행시점은 다르다. - filter 는 web application 에서 동작을 하고 - interceptor는 spring 의 context에 등록을 한다. 이말은 즉, filter는 dispatcher servlet 이전에 실행이되고, interceptor는 dispatcher servlet 이후에, 실행이되는 시점을 가진다. Filter 에서 예외가 발생하면 Web Application 에서 처리를 해야한다. 선언 이나, Filter내에서 예외를 잡아, request.getRequestDispatcher 으로 핑퐁하듯이 예외를 처리한다. Interception 에서 예외 발생시에는, ExceptionHandler 나,..
[JPA] 연관관계 매핑 RDB에서는 테이블 별로, 외래키를 매핑하며, 일대 다 혹은 다대다 의 형태를 가진다. 객체의 참조와, 외래키 매핑 관련되서 공부를 해보자 우선 간단한 예로, 팀과, 멤버에 대한 예제를 공부해보자 여러 사람이 한팀에 소속될 수 있다는 1:n관계라고 생각을 해보자 Member 에서는 Team에대한 관계와 조인 컬럼을 설정해준다. Team은 사실 별건없다. Lombok 을 사용해서 Getter,Setter도 직접 달아주었는데, 이건, 너무 불편해서 그냥 쓰기로했다 ㅋㅋ (매번 메소드 귀찮다) 이렇게 만 하면, 자동으로 PK,FK를 매핑해주는 테이블을 생성해준다. 예제 코드를 이렇게 작성해서 한번 테스트 해보자 뭐 잘들어간다. 추가로 위의소스에서 약간 수정한 내용은 PK가 id 자동생성 값일때는 String ..
잡다하지만 필요한 개발지식 11 데이터베이스에서 이상이란? 이상은 왜 발생하는가? 그 종류는? 데이터 베이스 이상현상이란, 3가지가 있다. - 갱신 이상 : 반복된 데이터 중 일부를 갱신할 시 데이터의 불일치가 발생 - 삽입 이상 : 불필요한 정보를 함께 저장하지 않고서는 어떤 정보를 저장하는 것이 불가능하다 - 삭제 이상 : 필요한 정보를 함께 삭제하지 않고서는 어떤 정보를 삭제하는 것이 불가능하다 -갱신 이상 : 만약에 한가지의 데이터가 변경되었다면, 연관된 다른데이터들이 한꺼번에 같이 변경되지 않아 불일치가 발생한다. 이렇게 될경우, 바뀌게 되는 데이터에 따른 모든 데이터를 일일히 바꿔서 수정해줘야한다. -삽입 이상 : 내가 원하는 값만 테이블에 삽입하고 싶은데, 테이블에 필요하지 않은 필드들 때문에 원치 않는 필드의 값도 삽입해..
5. 알고리즘 정리 [그리디] 그리디 알고리즘, 흔히 말해 탐욕기법이다. 우선 해당 알고리즘의 동작 형태 및 구현 방법에 대해서 익혀보자 그리디 탐욕기법은, 경우의 수가 존재할 경우, 매순간 최선의 경우를 선택하는 알고리즘이다. 현재 상황에서 가장 좋다고 생각되는 것을 선택해 나가는 것이기 떄문에, 항상 가장 좋은 결과를 만드는 것은 아니다. 그럼, 그냥 문제를 바로 풀어보자 * 동전 0 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) w..
필요한 잡다한 개발지식 10 1. 자바 캡슐화 - 자바 캡슐화는 변수와 함수를 하나의 클래스로 묶고, 외부에서 쉽게 접근하지 못하도록 은닉하는것이 핵심이다. 객체의 직접적인 접근을 막고, 객체가 제공하는 필드, 메소드를 통해서만 접근이 가능하도록 하는것이다. (getter,setter) 장점으로는 객체내 정보손상, 오용을 방지하고, 데이터가 변경되어도 다른 객체에 영향을 주지 않기 떄문에 독립성이 좋다. 또한 처리된 결과 사용으로 이식성이 좋고, 객체를 모듈화 할수 있어, 하나의 모듈 처럼 사용가능하다. ex. private 변수, public getter,setter 2. map과 set의 차이 - set은 순서를 보장하지 않는다. 또한 key와 value의 중복을 허용하지 않는다. - map 또한 순서를 보장하지 않지만, key..
[JPA] Entity Mapping, Table Managing 1. 객체, 테이블 매핑 @Entity @Entity,가 붙으면, JPA에서 관리를 하는 클래스, 객체가 된다. 대부분 디폴트로, 객체이름과 테이블이름은 동일하게 따라가지만, 이런식으로 Table name을 붙이면, 해당 테이블이름으로 생성 및 관리가 된다. 밑에는 재부팅 후에, 확인된 내용이다. 현재는 테이블이 없어서, 한번 create ddl이 나갔고, 그 이후에는 재 기동 에도 create ddl이 나가지 않는다. 이렇게, 되는이유는 바로 이렇게 설정을 했기 떄문이다. update, create 등등이 있는데, create 는 재기동 될때마다, 새롭게 생성된다. 기존에 테이블이 있으면 drop , create를 하고 update로 설정하게 되면 없는 대상들만, 혹은 신규 컬럼만 새롭게 update한..
4. 알고리즘 정리 [투 포인터] 투 포인터의 대표 적인 예제는 아래와 같다. 리스트 A가 있고, 타겟값 S가 있다. 이 리스트에서 두수의 합이 타겟값 S가 되는 걸 찾는다고 가정하면? 리스트 1개씩 비교해 가면서 체크를 할수있겠지만. 리스트의 크기에 따라, 시간 복잡도는 정비례하게된다. 그러면 이럴 경우에는 ? 리스트를 정렬하고 투포인터 알고리즘을 사용하면 된다. 사용 방법은 아래 순서와 같다. 1. 리스트를 오름차순으로 정렬한다. 2. 포인터 left는 리스트의 시작점을 포인터 right는 리스트의 끝점을 가리킨다. 3. left 와 right가 만날때까지 다음을 반복한다. 3-1. left + right 의 합이 타겟 값과 같으면 출력, 3-2. left + right 가 타겟 값보다 작으면 left 1증가 3-3 left + ri..