전체 글 241

SQL vs NoSQL

SQL과 NoSQL의 정의1. SQL(관계형 데이터베이스)의 정의SQL은 Structured Query Language의 약자로, 구조화 쿼리 언어이다.즉, SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.SQL을 사용하여 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색할 수 있다.이러한 RDB의 데이터는 엄격한 데이터 스키마를 따라 DB 테이블에 저장되며, 관계를 통해 연결된 여러 개의 테이블에 분산되는 특징이 있다.RDB에서는 스키마 구조를 준수하지 않는 레코드는 추가할 수 없다.RDB는 테이블 간의 관계를 나타내기 위해 외래 키를 사용한다.또한, 데이터들을 여러 개의 테이블에 나누어서 저장하므로써 데이터들의 중복을 피할 수 있..

개발/DB 2024.04.21

SQL Injection (SQL 삽입공격)

SQL Injection 1. SQL Injection의 정의 SQL Injection 이란 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위 공격이 비교적 쉬운 편이고 공격에 성공할 경우 큰 피해를 입힐 수 있기 때문에 보안 위협 1순위로 불리기도 함 2017년 3월에 일어난 “여기어때” 의 대규모 개인정보 유출 사건도 SQL Injection 으로 인해 피해가 발생 2. 공격 방법 및 종류 Error based SQL Injection SQL의 잘못된 문법을 사용했을 때 나오는 에러메시지를 기반으로 데이터베이스의 정보와 구조를 알아내는 공격기법 2. Union Based SQL injection union을 ..

개발/DB 2024.04.16

JOIN

JOIN 테이블을 연결하여 하나로 된 결과의 테이블로 만드는 것 데이터를 효율적으로 검색하고 처리 외래키를 통해 join 한다 명시하지 않았을 때 기본적으로 INNER JOIN으로 취급된다. INNER JOIN 교집합 기본적으로 사용되는 JOIN 명시적 조인표현(explicit) 과 암시적 조인 표현(implicit) 명시적 조인표현 SELECT * FROM A INNER JOIN B ON A.NAME = B.NAME; 암시적 조인 표현 SELECT * FROM B WHERE A.NAME = B.NAME LEFT OUTER JOIN 왼쪽 테이블을 기준 테이블로 설정하여 JOIN 오른쪽 테이블에만 존재하는 값을 빼고 출력하기 원할 때 사용 RIGHT OUTER JOIN 오른쪽 테이블을 기준 테이블로 설정하..

개발/DB 2024.04.08

DB 기본 개념 및 키(Key)정리

관계형 데이터베이스 표를 이용해서 데이터의 상호관계 정의 개체(Entity)와 관계(Relationship)을 모두 표로 표현 튜플 릴레이션을 구성하는 각각의 행, 속성의 모음으로 구성 튜플의 수를 카디널리티라고 함 속성 데이터베이스를 구성하는 가장 작은 논리적 단위, 개체의 특성 기술 속성의 수를 디그리, 차수라고 함 키(Key) 속성 또는 속성들의 집합 키는 튜플을 구별하기 위해 존재한다. 키의 종류 기본키 (PRIMARY KEY) 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성 Null 값을 가질 수 없음 슈퍼키 (SUPER KEY) 테이블에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합 유일성은 만족하지만 최소성을 만족하지 않음 [학번 + 이름], [이름+ 나이..

개발/DB 2024.04.08

[JAVA] 백준 14891번 톱니바퀴

문제 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 입력 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 시계방향 순서대로 주어진다. N극은 0, S극은 1로 나타나있다. 다섯째 줄에는 회전 횟수 K(1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 회전시킨 방법이 순서대로 주어진다. 각 방법은 두 개의 정수로 이루어져 있고, 첫 번째 정수는 회전시킨 톱..

[IntelliJ 에러] deprecated gradle features were used in this build, making it incompatible with gradle 9.0.

문제 프로젝트 세팅 중 아래와 같은 경고 메시지를 만났다. 결과적으로 빌드는 성공했지만, 해결하고 넘어가는 것이 좋을 것 같아 여러 해결책을 시도해보았다. 현재 버전에서 사용할 수 없는 gradle 기능이 있어, 나타난 에러였다. 따라서 해당 기능을 끄거나, gradle을 업데이트 해서 해결해야한다 ! 해결 1. Settings > Gradle 에서 표시한 곳의 설정 값을 Gradle이 아닌 IntelliJ로 바꿔준다. 2. File > Settings > Build, Execution, Deployment > Complier > Java Complier 에 들어가 아래 문구 입력 --warning-mode=all --stacktrace 3. 캐시 비우고 재실행 File > InvalidCashes로 들..

개발/Spring 2023.12.13

[IntelliJ] 윈도우 단축키 모음

자주 사용되는 단축키 설명 단축키 테스트코드 클래스 생성 ctrl + shift + t 리턴 타입 변수 생성 ctrl + alt + v 메서드 추출 ctrl + shift + m 메서드 이동 ctrl + alt + b 여러 줄 주석 ctrl + shift + / 최근 사용한 클래스 이동 ctrl + e 원하는 메서드 실행 ctrl + ctrl 모든 클래스 검색 shift + shift Generate alt + Insert 에러난 곳으로 이동 F2 static으로 import alt + enter

개발/Spring 2023.12.13

[JAVA] 백준 1715번 카드 정렬하기

문제 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 입력 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 100,000) 이어서 N개의 줄에 걸쳐 숫자 카드 묶음의 각각의 크기가 주어진다. 숫자 카드 묶음의 크기는 1,000보다 작거나 같은 양의 정수이다. 출력 첫째 줄에 최소 비교 횟수를 출력한다. 입력 예제 3 10 20 40 출력 예제 100 문제 풀이 가장 작은 값 두개를 계속해서 더해나가면 최소 비교횟수를 도출해낼 수 있다. pq에 입력받은 값을 모두 넣은 후, 값이 2개 이상 있다면, 임..

[Java] 백준 13165번 침투

문제 13565번: 침투 첫째 줄에는 격자의 크기를 나타내는 M (2 ≤ M ≤ 1,000) 과 N (2 ≤ N ≤ 1,000) 이 주어진다. M줄에 걸쳐서, N개의 0 또는 1 이 공백 없이 주어진다. 0은 전류가 잘 통하는 흰색, 1은 전류가 통하지 않 www.acmicpc.net 입력 첫째 줄에는 격자의 크기를 나타내는 M (2 ≤ M ≤ 1,000) 과 N (2 ≤ N ≤ 1,000) 이 주어진다. M줄에 걸쳐서, N개의 0 또는 1 이 공백 없이 주어진다. 0은 전류가 잘 통하는 흰색, 1은 전류가 통하지 않는 검은색 격자임을 뜻한다. 출력 바깥에서 흘려준 전류가 안쪽까지 잘 전달되면 YES를 출력한다. 그렇지 않으면 NO를 출력한다. 입력 예제 5 6 010101 010000 011101 10..

Algorithm/BFS&DFS 2023.11.02