개발 기본 구조 프로그램 종류는 웹과 앱이 대부분임 # 웹과 앱의 차이점은 뭘까? 웹 : 서버(실행) -> 브라우저 -> 사용자 브라우저 설치 화면이나 데이터를 한꺼번에 전달하는 방식 처음에 화면과 데이터를 보내놓고 그 후에는 필요한 데이터만 전달하는 방식 앱 : 서버(실행) -> 앱 설치 -> 사용자 개발 구조 알아보기 1. 웹 개발 구조 데이터 베이스에 데이터 저장 -> 정보를 핸들링하는 로직 개발 -> 정보를 표시하는 화면 개발 정보를 핸들링하는 것을 비즈니스 로직 개발 이라고 함 # 화면 랜더링 방식의 차이 SSR vs. CSR # 서버사이드랜더링 SSR 서버 쪽에서 화면 전체를 가지고 오는 것 서버개발자 라는 명칭으로 프론트와 백 동일하게 개발 웹만 개발할 때 주로 진행되는 개발 형식 # 클라이..
전체 글
프로그래밍 공부 기록# DB Index 목적 RDBMS에서 검색 속도를 높이기 위함 Table의 Column을 색인화 -> 파일로 따로 저장 - 해당 Table의 레코드를 전부 scan 하지 않음 - 색인화된 B+ Tree 구조 Index 파일 검색으로 검색 속도 향상 # Index 과정 Table을 생성하면 MYD, MYI, FRM 3개의 파일이 생성됨 - FRM : 테이블 구조가 저장되어 있는 파일 - MYD : 실제 데이터가 있는 파일 - MYI : Index 정보가 들어가 있는 파일 Index를 사용하지 않는 경우 MYI 파일은 비워져 있음 -> 인덱싱을 하면 MYI 파일이 생성 이후에는 사용자가 SELECT 쿼리로 Index를 사용하는 Column을 탐색 시, MYI 파일의 내용을 검색함 # 단점 - Index 생..
정규화를 해야하는 이유는 뭘까? 정규화를 하지 않으면 잘못된 테이블 설계로 인한 Anomaly 이상현상 이 나타나기 때문 1. 삽입 이상 Insertion Anomaly 기본키가 { StudentID, CourseID } 인 경우 => Course를 수강하지 않은 학생은 CourseID 가 없는 현상 발생 결국 CourseID를 NULL 값으로 할 수 밖에 없지만 기본키에는 NULL 값이 들어갈 수 없음 ===> Table에 삽입되지 못 하는 현상 발생 2. 갱신 이상 Update Amomaly 만약 어떤 학생의 전공 { Department } 이 "컴퓨터" -> "음악" 으로 변경되는 경우 모든 Department 를 "음악" 으로 바꾸어야 함 그러나 일부를 깜빡하고 바꾸지 못하는 경우 제대로 파악하지..
웹 앱 개발 시, 데이터베이스를 선택할 때의 고민 MySQL과 같은 SQL을 사용할까? 아니면 MongoDB 같은 NoSQL을 사용할까? 보통 Spring에서 개발할 때는 MySQL을, Node.js.에서는 MongoDB를 주로 사용함 -> 왜 그럴까? 단순히 프레임워크에 따라 결정하는 것은 아님 프로젝트를 진행하기에 앞서 적합한 데이터베이스를 선택해야 함 #차이점 - SQL (관계형 DB) SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색 가능 관계형 데이터베이스의 핵심적인 두 가지 특징 1. 데이터는 정해진 데이터 스키마에 따라 테이블에 저장됨 2. 데이터는 관계를 통해 여러 테이블에 분산됨 데이터는 테이블에 레코드로 저장 -> 각 테이블마다 명확하게 정의된 구조가 있음 해당 구조..
# SQL Injection 이란? 해커에 의해 조작된 SQL 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법 # SQL Injection 공격 방법 1. 인증 우회 보통 로그인 시, 아이디와 비밀번호를 input 창에 입력함 예를 들어, 아이디가 abc 비밀번호가 1234 일 때 다음과 같은 방식으로 쿼리가 전송됨 SELECT * FRON USER WHERE ID = "abc" AND PASSWORD = "1234"; SQL Injection 으로 공격할 때 input 창에 비밀번호를 입력함과 동시에 다른 쿼리문이 함께 입력됨 1234; DELETE * USER FROM ID = "1"; 보안이 완벽하지 않은 경우, 이처럼 비밀번호가 아이디와 일치해서 True가 되고 뒤에 ..
#Join이란? 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법 테이블을 연결하려면, 적어도 하나의 칼럼을 서로 공유하고 있어야 함 -> 이를 이용하여 데이터 검색에 활용 #Join 종류 - INNER JOIN - LEFT OUTER JOIN - RIGHT OUTER JOIN - FULL OUTER JOIN - CROSS JOIN - SELF JOIN # INNER JOIN 교집합 기준 테이블과 Join 테이블의 중복된 값을 보여줌 SELECT 기준테이블.컬럼명, JOIN테이블명.컬럼명 FROM 기준테이블 INNER JOIN JOIN테이블 ON 기준테이블.컬럼명 = JOIN테이블.컬럼명 # LEFT OUTER JOIN 기준 테이블 값과 조인 테이블과 중복된 값 왼쪽 테이블 기준으로..
# Key 란? 검색, 정렬 시 Tuple을 구분할 수 있는 기준이 되는 Attribute 1. 후보키 Candidate Key Tuple을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합 기본키로 사용할 수 있는 속성들 유일성과 최소성을 만족함 - 유일성 : Key 로 하나의 Tuple을 유일하게 식별 가능 - 최소성 : 꼭 필요한 최소한의 속성으로만 구성 2. 기본키 Primary Key 후보키 중에 선택한 메인키 Null 값을 가질 수 없음 동일한 값이 중복될 수 없음 3. 대체키 Alternate Key 후보키 중 기본키를 제외한 나머지 키들 4. 슈퍼키 Super Key 유일성은 만족 최소성은 만족하지 못 함 5. 외래키 Foreign Key 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합
풀이 과정 String으로 주어진 문장을 받은 후 하나씩 잘라서 모음인지 아닌지 확인 후 list에 넣는다. 그리고 list의 값들을 다시 String으로 출력한다. 정답 코드 package D3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Solution_4406_모음이보이지않는사람 { //주어진 String에서 a, e, i, o, u 를 //삭제하는 문제 static int T; //테스트 케이스 static String str; //주어지는 단어 static St..