함수적 인터페이스 : @FunctionalInterface 모든 인터페이스를 람다식으로 사용할 수 없다. 람다식은 하나의 메서드를 정의하기 때문에 인터페이스에 하나의 함수만 선언되어 있어야한다. 두개 이상의 추상 메서드가 선언된 경우 해당 인터페이스는 람다식을 이용하여 구현 객체를 생성할 수 없다. 하나의 추상메서드가 있는 인터페이스 형태를 함수적 인터페이스라고 한다. 그리고 @FunctionalInterface 애노테이션을 선언해주면 해당 인터페이스는 함수적 인터페이스라는 의미다. 함수적 인터페이스 : Consumer 리턴 값이 없는 accept() 를 가지고 있고 매개 값을 소비하기 위한 용도이다. Consumer consumer = t => System.out.println("T의 결과 : " + ..
데이터베이스 JOIN 여러개의 테이블을 하나의 레코드로 조회하기 위해서 JOIN을 사용한다. 테이블을 연결해서 조회하려면 테이블과 테이블 사이에 적어도 하나의 컬럼을 공유해야한다. JOIN의 종류 Inner JOIN Left Outer JOIN Right Outer JOIN Full Outer JOIN Cross JOIN Self JOIN Inner JOIN SELECT S.ID, S.NAME, M.MAJOR FROM STUDENT S, MAJOR M WHERE S.ID = M.ID SELECT S.ID, S.NAME, M.MAJOR FROM STUDENT S INNER JOIN MAJOR M ON S.ID = M.ID 기준 테이블과 JOIN 테이블의 중복된 값을 가져오기 위해 사용한다.결과는 다음과 같..
람다식 메서드를 하나의 식으로 표현한 것. 메서드의 이름과 리턴 값이 없어지므로 익명 함수라고 한다. 만약 메서드를 사용한다면 클래스를 생성하고 객체를 생성해야 함수를 호출할 수 있다. 그러나 람다식을 사용하면 람다식 자체가 함수가 되기 때문에 편리하다. int[] arr = new int[5]; Arrays.setAll(arr, (i) -> (int)(Math.random()*5) + 1); int method() { return (int)(Math.random()*5) + 1; } 람다식 사용법 int max(int a, int b) { return a>b ? a : b; } (int a, int b) -> { return a>b ? a : b; } (int a, int b) -> a>b ? a : ..
Nginx는 리버스 프록시, 로드 밸런서, 웹 서버, API 게이트웨이 등 하나로 사용할 수 있는 도구다. 로드 밸런싱(Load Balancing) 서버 팜의 네트워크 트래픽을 체계적이고 효율적으로 분배하는 것. 클라이언트와 백엔드 사이에 위치하여 들어오는 요청을 기반으로 요청을 실행할 수 있는 UPSTREAM 서비스 또는 인스턴스로 요청을 전달한다. ( UPSTREAM 서버는 사용자의 요청을 받아 요청을 처리할 애플리케이션 서버를 선정하는 서버이고 클라이언트 에게 서버의 응답을 전달해준다. ) 로드 밸런싱에서 아무 설정이 안되어있다면 기본 알고리즘은 라운드 로빈 알고리즘을 사용한다. proxy_pass 지시어 1. 클라이언트 요청을 처리할 서버 풀과 그룹을 정의하고 관리한다. 2. 사용자의 요청을 pr..
정규화 테이블을 분리하지 않는다면 중복 데이터가 들어가 메모리를 차지할 수 있다. 중복 데이터로 저장 되는 것을 방지하기 위해 테이블을 분리하는 과정을 거치는데 이를 정규화라고 한다. 제 1 정규화 테이블의 각 컬럼은 원자성을 만족시켜야 한다. 쉽게 말해서 한 컬럼에 1개 속성만 저장해야한다. 위의 경우 회원은 여러개의 관심 분야를 가지고 있으므로 회원 테이블은 제 1 정규화 대상이다. 원자성을 만족시키 기 위해 회원 관심사 테이블을 만들어야한다. 회원 ID와 관심분야 각각으로 컬럼을 구별할 수 없기 때문에 회원 관 심사 테이블의 기본키는 [ 회원 ID, 관심분야 ] 로 설정해야한다. 제 2 정규화 정규화된 테이블에서 완전 함수적 종속을 만족시키도록 테이블을 분리하는 과정이다. 완전 함수적 종속은 기본키..
데이터베이스와 DBMS 여러사람이 공유하는 데이터의 집합을 데이터베이스라고 하고 이런 데이터를 관리하기 위한 시스템을 DBMS라고 한다. 데이터베이스 성능 데이터베이스는 컴퓨터의 기억장치 중 가장 속도가 느린 물리디스크에 저장된다. 뿐만 아니라 물리 디스크에 데이터의 입출력이 발생할 때 데이터가 위치한 섹터로 디스크 헤더가 움직여야 하기 때문에 디스크 헤더의 대기시간 + 이동시간만큼 더 걸리게 된다. 그렇기 때문에 데이터베이스의 성능 개선은 아주 중요하다. Clustered 인덱스와 Secondary 인덱스 Clustered 인덱스는 기본키를 사용하여 인덱싱을 한다. 인덱스는 데이터 블록의 첫번째 레코드 주소값을 갖고 있고 데이터를 삽입시 정렬이 되기 때문에 범위 질의에 유리하다. Clustered 인덱..
기본 명령어 1. Nginx 버전 확인 $ nginx -v 2. Nginx 설정 파일 체크 $ nginx -t 3. Nginx 현재 설정 (현재 내 Nginx가 무엇이고 Nginx가 실제로 읽는 내용을 출력) Nginx는 include 매개변수에 포함된 구성을 알파벳 순서로 처리된다 $ nginx -T 4. Nginx 재설정 $ nginx -s reload Nginx 설정 파일 1. 메인 설정 파일 /etc/nginx/nginx.conf 2. Nginx 인스턴스의 구성을 위해 Includes 설정파일을 conf.d 디렉토리 하위에 넣어야 한다. Nginx의 메인 설정 파일인 nginx.conf는 conf.d 디렉토리 하위에 있는 모든 설정파일을 포함한다. /etc/nginx/conf.d/*.conf Co..
인덱스의 자료구조는 해시(Hash) 테이블, B-Tree, B+Tree 등이 있다. 1. 해시 테이블 해시 테이블은 Key와 Value로 데이터를 저장하는 자료구조다. 해시 테이블은 키, 해시함수, 해시, 값 저장소로 구성되어 있다. 키(Key)는 해시함수(Hash Function)를 통해 해시(Hash)로 변경되고 해시(Hash)는 값(Value)와 매핑되어 저장소(Bucket)에 저장된다. 키(Key)를 해시함수를 통해 해시로 만든 뒤 해시(Hash)를 주소로 삼아 데이터를 저장한다. 상품번호1 은 해시함수를 통해 해시값 ①이 생성된다. 상품번호2는 해시함수를 통해 해시 값 ②, 상품번호 3은 해시함수를 을 통한 해시 값③이 생성이 된다. 이 해시값을 인덱스로 삼아 Value를 빠르게 찾을 수 있다...
- Total
- Today
- Yesterday
- 파일업로드설정
- Travis CI
- Oracle
- Java
- level0
- 운영체제
- graphql
- db
- spring
- ci/cd
- 프로그래머스
- ORA-27125
- CodeDeploy
- 인덱스
- N+1
- SpringGraphQL
- SpringSecurity
- 트랜잭션
- 트랜잭션격리성
- EC2
- OS
- 기술면접
- AWS
- 람다식
- Til
- 네이버클라우드
- TCP
- JPA
- nginx
- ddl-auto
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |