본문 바로가기

분류 전체보기122

[Spring] DI, 의존관계 주입 방법 의존 관계란? '클래스 A가 클래스 B를 의존한다' 라고 했을 때, B클래스의 기능이 추가 또는 변경되거나 형식이 바뀌면 그 영향이 A에 미친다는 것이다. 그래서 직접적으로 클래스를 의존하는 것보다, 인터페이스로 추상화하면 더 다양한 클래스가 의존받을 수 있다. 추상화를 함으로써 더 다양한 의존 관계를 맺을 수가 있고, 실제 구현 클래스와 느슨한 결합 관계를 유지할 수 있다. DI란? 생성자 주입. 의존 관계를 외부에서 결정하도록 하는 것이다. 즉, A클래스를 사용하고자 하는 또 다른 클래스에서 의존 관계를 결정하도록 하는 것이다. DI를 위한 방법은 여러가지가 있다. 생성자 주입 생성자를 통해서 의존 관계를 주입하는 방법 생성자 호출 시(빈 등록 시), 예를 들어 @Autowired 등의 의존 관계를 .. 2024. 4. 7.
[DB] KEY의 종류와 차이점 필요한 개념 유일성 : 중복되는 값이 없어서 하나의 키만으로 하나의 로우를 유일하게 식별할 수 있다. 최소성 : 컬럼을 최소한으로 써서 키를 형성하는 것. 키를 구성하는 컬럼 하나를 제거하면 유일하게 식별할 수 없도록 꼭 최소한의 컬럼으로 구성되어야 한다. 키의 종류 종류 개념 기본 키(Primary Key) 테이블에서 로우를 유일하게 식별할 수 있는 키 후보 키(Candidate Key) 유일성과 최소성을 만족해서 기본키가 될 수 있는 후보들. 대체 키 (Alternate Key) 후보 키 중에서 기본 키를 제외한 남은 후보 키. 슈퍼 키 (Super Key) 로우를 유일하게 식별할 수 있는 유일성은 갖추었지만 최소성은 만족하지 못함. 외래 키 (Foreign Key) 다른 테이블의 기본 키를 참조하는.. 2024. 4. 6.
[HTTP] HTTP API? 들어가기 앞서.. API 설계에 앞서 하나 알아둬야할 것이 있다. 바로 URI 설계 시, 중요한 것은 리소스 식별할 수 있어야 한다는 것이다. REST API와도 연관이 있는데, REST API의 핵심 두 가지는 다음과 같다. 첫째, URI는 정보의 리소스(자원)를 표현해야 한다. 두째, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현해야 한다. 예를 들어, '회원을 등록' 또는 '회원을 조회' 기능을 API로 설계한다고 했을 때, '회원'이 리소스가 되는 것이다. 동작은 HTTP 메소드로 표현할 것이고, URI에는 회원이라는 리소스를 매핑하는 것이다. 동작을 표현하는 HTTP METHOD GET : 조회 GET /mdmbers/{id} 서버에 전달하고 싶은 데.. 2024. 4. 4.
[Sofreer 문제풀이] Lv.3(순서대로 방문하기) feat. Java DFS로 구현하는 건 어렵지 않았는데 문제 조건에서 방문해야 하는 특정 지점을 순서대로 방문해야한다는 부분 구현이 빠져있어서 시간이 좀 걸렸다. if(x == startend[index][0] && y == startend[index][1]){// 모두 다 거치고, 마지막에 도달했다면 if(index == m-1){ cnt++; return; } index++; } 이 부분에서 index는 방문해야하는 지점을 담은 startend를 도는 인덱스이고, index == m-1, 즉 마지막까지 방문했을 때 return하는 식으로 구현해야 한다. import java.io.*; import java.util.*; public class Main { static int n; static int m; static .. 2024. 4. 3.
[Java] 기술면접 Java란? 객체지향 언어로 요소들을 객체로 표현하고 상속, 추상화, 캡슐화, 다형성이 특징. JVM위에서 동작하기 때문에 운영체제에 독립적이고, GC를 통해 메모리 관리가 가능. JVM위에서 동작하기 때문에 실행속도가 조금 더 걸린다. JVM이란? 운영체제에 종속받지 않고 CPU가 Java를 실행할 수 있게 하는 가상머신 자바 컴파일러가 .java -> .class (bytecode) 로 변환하고 나면 JVM이 이 bytecode를 해석해 실행한다. 자바 컴파일 과정 Java 파일 작성 -> java compiler 의 javac 명령어를 통해 .class 생성 -> Class Loader를 통해 JVM 내로 로드 -> 실행엔진(인터프리터 & JIT컴파일러)을 통해 기계어로 해석 오버라이딩과 오버로딩 .. 2024. 4. 3.
[DB] INDEX? 인덱스? 인덱스란? 책의 색인처럼, 검색 속도를 향상하기 위한 자료구조. 해당 TABLE의 컬럼을 색인화(따로 파일로 저장)하여 검색시 해당 TABLE의 레코드를 full scan 하는게 아니라 색인화 되어있는 INDEX 파일을 검색하여 검색속도를 빠르게 인덱스 타입 두가지 링크 : https://medium.com/peppermint100/db-%EC%9D%B8%EB%8D%B1%EC%8A%A4-%EC%A2%85%EB%A5%98-clustered-non-clustered-8ad1cffa3126 클러스터드 인덱스 : 인덱스 키의 순서에 따라 데이터가 정렬되는 저장방식 실제 데이터가 순서대로 정렬되어있어 데이터 빠르게 검색 가능 한 테이블에 하나만 생성 가능 Non클러스터드 인덱스 : 인덱스 키 값만 정렬되.. 2024. 4. 2.