분류 전체보기
-
[PostgreSQL] upsert(insert .. conflict on ..) 구문 사용하기카테고리 없음 2020. 5. 27. 20:23
참고 URL : http://www.postgresqltutorial.com/postgresql-upsert/ 'ON CONFLICT' 구문은 PostgreSQL 9.5부터 지원한다. tutorial이 잘 설명되어 있어서 특별히 추가할 내용은 없지만, 내가 삽질했던 실수가 있어서 누군가에 도움이 되기를 바라며 정리를 했다. PostgreSQL 'INSERT ON CONFLICT'의 기본 형태는 아래와 같다. INSERT INTO table_name(column_list) VALUES(value_list) ON CONFLICT target action; target 은 다음과 같이 사용 가능하다. - (column_name) : 특정 column의 값을 기준으로 체크 - ON CONSTRAINT const..
-
관계형 데이터베이스에서 조인(join)이란?시스템 2020. 5. 26. 21:48
1.JOIN에 대한 기본 개념 관계형 데이터베이스에서는 중복 데이터를 피하기 위해서 데이터를 쪼개 여러 테이블로 나눠서 저장합니다. 이렇게 분리되어 저장된 데이터에서 원하는 결과를 다시 도출하기 위해서는 여러 테이블을 조합할 필요가 있습니다. 관계형 데이터베이스에서는 조인(JOIN) 연산자를 사용해 관련 있는 컬럼 기준으로 행을 합쳐주는 연산입니다. 조인에 대해서 공부하다 보면 종류도 많아서 처음에는 많이 헷갈릴 때가 종종 있어서 다시 정리를 해보았습니다. 2. 샘플 데이터 이 포스팅에서 사용한 데이터는 MySql 사이트에서 제공한 샘플 데이터를 참고해서 수정한 버전을 사용했습니다. MySql dummy 데이터 https://github.com/datacharmer/test_db 수정 버전 - 예제로 작..
-
Java 입출력, BufferedReader, StringTokenizerJAVA 2020. 4. 8. 17:13
자바의 입력 Class Scanner, BufferedReader, StringTokenizer BufferedReader, StringTokenizer 는 문자열로 활용하기 위하여 사용. BufferedReader를 사용하는 것이 Scanner를 사용하는 것보다 빠르다. BufferedReader는 문자열에 최적화 되어 있음. Scanner를 사용했을시 입력 형태. //Scanner를 사용했을시 입력 형태. Scanner sc = new Scanner(System.in); int n = sc.nextInt(); // int long l = sc.nextLong(); // int String s = sc.next(); // String String s = sc.nextLine(); // String Bu..
-
JAVA 예외처리JAVA 2020. 4. 7. 09:15
예외처리란? 일단 예외란 프로그래밍 소스코드를 작성하여 컴파일과정에서는 문제를 발견하지 못하고 정상적으로 컴파일이 진행되었으나, 프로그램을 실행중에 발생하는 오류사항들을 대체로 예외라고 정의합니다. ex) 범위를 넘어선 배열접근, 정수를 0으로 나누는 경우, Null포인터 오류등이 있습니다. 그럼 이러한 오류가 발생하면 개발자는 어떻게 처리를 해주어야 하느냐? 처리하는 방법에는 여러가지가 있겠는데 어떤 에러가 발생할지 알고 있다면 Excepiton클래스명을 직접 명시해주거나 아니면 Excepiton을 통해 한꺼번에 처리해주는 방법이 있을 수 있습니다. try ~ catch문을 사용하는 방법부터 확인해보겠습니다. 기본적으로 try ~ catch문의 구조는 아래와 같아요. try { 예외가 생길 가능성이 있..
-
JAVA isFile(),isDirectory(),exists() 비교JAVA 2020. 3. 31. 10:48
오늘 포스팅에서는 'isFile(),isDirectory(),exists()를 비교'하는 포스팅을 작성하려고 합니다. 세가지 메소드는 파일/폴더가 있는지 확인하여 파일/폴더가 없어서 생기는 에러를 방지하기 위해 주로 사용됩니다. 1) 메소드 비교 경로.isFile() 경로가 file인지 확인한다. 경로.isDirectory() 경로가 directory(folder)인지 확인한다. 경로.exists() 경로에 file/directory(folder)가 존재하는지 확인한다. 2) 실제 결과 비교 ① 테스트할 디렉토리에 파일과 하위디렉토리를 넣어두었습니다. 아래의 [사진1]을 보시면 "C:\data\input\TestFile"에 파일 2개 (0000.txt,0001.txt)와 디렉토리(0002)가 있는것을 알..
-
Docker Volume을 활용한 Data 관리시스템 2020. 3. 30. 11:06
우리는 Container의 Writable Layer에 Data를 저장할 수 있다는 것을 알고 있습니다. 하지만, 여기에는 몇 가지 문제점이 존재합니다. Container가 삭제되면 Data도 같이 삭제됩니다. 또한, 다른 프로세스에서 Container에 저장된 Data를 사용하기 어렵습니다. Container의 Writable Layer에는 Container가 실행 중인 Host Machine과 밀접하게 연결됩니다. 따라서, Data를 다른 곳으로 쉽게 옮길 수 없습니다. Container의 Writable Layer에 Data를 저장하기 위해서는 File System을 관리하는 Storage Driver가 필요합니다. Storage Driver는 Linux 커널을 사용하여 공용 File System을..
-
Spring에서 JPA / Hibernate 초기화 전략Spring boot 2020. 3. 24. 16:11
Spring-data-JPA와 DBMS를 연결해서 사용할 때 간편히 개발환경의 변경사항을 적용하여 테스트 할 수 있다. 특히 테스트를 위한 in-memory Database인 H2 Database를 염두에 둔 DB 초기화 전략에서 신경쓸 점을 간략히 정리해보았다. DDL generation Spring은 EntityScan을 통해 @Entity 애노테이션이 명시한 클래스를 찾는다. spring.jpa.generate-ddl=true 옵션을 true로 설정하면 해당 데이터를 근거로 서버 시작 시점에 DDL문을 생성하여 DB에 적용한다. jpa.generate 설정은 JPA 구현체 DDL생성 옵션의 링크이고, true / false 밖에 선택할 수 없다. 대부분 구현체로 Hibernate를 사용하기 때문에 ..
-
PPP(Point to Point Protocol)네트워크 2020. 3. 24. 13:05
Data Link Layer(2 계층)에서의 프로토콜 중 하나로, 오늘날 수많은 사람들이 인터넷에서 사용한다. 점과 점(Point to Point), 즉 두 스테이션 간의 통신을 담당한다. 강력한 보안기능과 여러가지 네트워크 계층 프로토콜을 한꺼번에 지원한다. 이 프로토콜은 character-oriented(or byte-oriented) frame을 사용한다. frame HDLC 에서 유래되어 굉장히 비슷하다. PPP 구성요소 LCP(Link Control Protocol) PPP를 개설, 유지, 종료, 시험등을 담당하는 프로토콜이다. 최대 프레임 길이, 인증 프로토콜(PAP, CHAP) 등을 결정한다. 직렬 연결 회선 제어 관리한다. NCP(Network Control Protocol) 서로 다른 네..