본문 바로가기

전체 글60

[Road to SQLD] - #3 데이터 독립성 데이터 독립성이란? DBMS 의 중요한 설계 목표 중 하나로 DB 의 물리적 구조나 논리적 구조의 변경이 사용자 응용 프로그램에 미치는 영향을 최소화하는 것을 의미한다 데이터 독립성의 유형 논리적 데이터 독립성 DB 에 저장된 데이터의 구조, 즉 테이블의 구조를 추가, 삭제, 수정하는 것을 논리적 구조의 변경이라 하며 이를 변경해도 응용 프로그램이 영향을 받지 않도록 보장하는 것을 논리적 데이터 독립성이라고 일컫는다 논리적 데이터 독립성을 제공함으로써 데이터 모델이 비즈니스 요구사항의 변화를 유연하게 대응할 수 있기에 시스템의 유지보수를 용이하게 하고, 개발 비용을 절감하는 효과가 있다 물리적 데이터 독립성 데이터가 실제로 디스크나 다른 저장 매체에 어떻게 저장되는지에 관한 변경을 물리적 저장 구조의 변.. 2024. 2. 5.
[Road to SQLD] - #2 데이터 모델링의 이해 자격증이 목적이 아니고 결국 공부가 목적이 되어야 한다. 데이터 모델링이란? 복잡한 현실 세계의 데이터를 DB 내에서 효율적으로 표현, 저장, 관리, 검색할 수 있도록 단순화시켜 구조화하는 과정 데이터 모델링의 특징 추상화 중요한 데이터만을 추려내어 불필요한 세부사항을 제거함으로써 현실 세계를 DB Schema 로 변환한다 단순화 데이터의 구조와 관계를 명확하고 간결하게 정의하여 데이터 관리와 데이터 간의 상호작용을 용이하게 만듦 이를 통해 시스템의 설계와 구현 유지보수가 보다 효율적으로 이루어진다 명확화 데이터 간의 관계와 제약 조건을 분명히 정의하는 것 이를 통해 데이터의 역할, 속성, 데이터 사이의 연결이 명확해지고 이는 데이터의 정확한 해석과 올바른 사용을 보장한다 데이터 모델링의 유의점 중복 시.. 2024. 2. 4.
SQL Injection SQL Injection 악의적인 SQL 코드가 DB Query 에 삽입되어 논리가 변경되고 이에 따라 민감한 정보가 추출되거나 데이터가 수정 및 삭제가 되는 상황 SQL Injection 예시 input: ' OR '1'='1 original query: SELECT * FROM users WHERE username = 'value' AND password = 'value'; injected query: SELECT * FROM users WHERE username = '' OR '1'='1' AND password = 'value'; 공격자는 ' OR '1' = '1' 구문을 사용하여 원래의 조건과 별개로 항상 참인 조건('1' = '1' 은 항상 참인 조건)을 추가했으므로 원래 Query 의 목적인.. 2024. 2. 2.
[JDBC] - PreparedStatement Prepared Statement 란? SQL Query 를 실행하기 전에 미리 컴파일하고 실행 시에만 파라미터를 전달하는 방식의 SQL 문 성능 향상 처음 실행될 때 DB 에 의해 컴파일되고 서버 측에 캐싱하여 같은 Query 가 재사용될 때 재컴파일 하지 않고 이미 컴파일된 Query 를 재활용하므로 반복된 Query 실행 시 컴파일 시간이 단축된다 SQL Injection 방지 파라미터를 '?' 로 표시하고 실행 시점에 값을 바인딩하는 특성상 문자열의 일부로 해석되지 않고 별도의 값으로 처리되기에 사용자의 입력이 쿼리의 논리를 변경할 수 없으므로 SQL Injection 을 차단하는데 효과적이다 입력 데이터의 자동 변환 지정된 데이터 타입에 따라 자동으로 입력값을 변환하는 특성을 가지고 있다 예시로.. 2024. 1. 31.
[프로그래머스] 알고리즘 고득점 kit - 기능개발 (Stack/Queue) 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/42586 • 하루에 한 번만 이루어지는 배포 • 작업의 개발 속도가 적힌 정수 배열 speeds • 작업의 진도가 적힌 정수 배열 progressess • 뒤에 있는 기능이 먼저 개발되더라도, 앞에 있는 기능이 배포될 때 같이 배포 • 각 배포마다 몇 개의 기능이 배포되는지 파악하는 것이 목표 • 절대적으로 선입선출을 지키기 위한 Queue 생성 • 매일 배포되는 기능의 개수를 담을 ArrayList 생성 (배열에 바로 담을 수 없는 이유: 크기를 알지 못해서) • Queue 에 담긴 작업이 100 달성시 poll • poll 한 데이터의 개수를 ArrayList 에 담기 • ArrayLi.. 2024. 1. 30.
[chapter 4] Gather 로 헤쳐 모여! chapter 4. Gather 로 헤쳐 모여! 자율 참여가 원칙이기도 했고 팀원들 개인 일정을 고려하여 이번 스터디부터 도입한 Gather 이러한 플랫폼들을 인지하고는 있었지만 직접 사용해 본 것은 이번이 처음이다 Gather 리뷰 글이 아니니 짧게 코멘트만 남기고 넘어가야겠다 화면 공유하기도 편했고 줌과는 다르게 원형 테이블에 다 같이 앉는다거나 누군가는 앞에 서서 발표도 할 수 있고 의상도 꾸밀 수 있는 소소한 재미(?)가 있었다 스터디 회차가 누적되면서 기본적인 틀이 슬슬 잡히고 있다 확실히 초반에 진행할 때 보단 매끄럽게 진행되고 있는 거 같다 스터디원들이 이직하여 빠빠이해도 스터디는 꾸준히 유지하고 싶은 마음... 스터디를 통해서 내가 성장하고 있는 건 당연하고 (완전 대박 많이 체감 중..... 2024. 1. 30.
[Road to SQLD] - #1 개발자는 자격증보단 실력이지! 개발자는 자격증보단 실력이지! "개발자만큼은 자격증이 필요 없다고..." "자격증 딸 시간에 개발 공부를 더 하겠다고..." "자격증으로 실력을 증명하기엔 부적합하다고..." 라고 굳게 주장하고 믿었던 내가 (학부생인 주제에 이 녀석은 뭘 그렇게 안다고...) "남들이 다 하는 것들을 굳이 할 필요는 없지만 한 번쯤은 왜 다들 하는지 고려해 볼 필요는 있다." 라는 마음가짐을 가지고 자격증을 하나둘씩 취득하려고 마음을 먹고 쓰는 글... 먼저 한국데이터산업진흥원(K-DATA)에서 주관하는 SQLD(SQL Developer)를 취득해보려고 한다 따로 응시자격이 없는 시험이기에 전공자인 나에게는 쉬운(?) 여정이 되리라 생각되지만 그 위안감을 빌미삼아 나태해지고 미루지 않도록 Road to SQLD 를 연재.. 2024. 1. 29.
[디자인 패턴] 싱글톤 제 2장 - "싱글톤의 심화과정" 지난 시간에는 싱글톤의 개념과 기본적인 구현 방법 멀티 쓰레드 환경에서 thread - safe 하게 구현하기 그리고 이른 초기화에 대해서 알아보았습니다 (지난 챕터, 싱글톤 제 1장 보러 가기) 이번 시간에는 JAVA 에서 권장하는 방법들과 더불어 1 장에서 다뤘던 개념들의 단점들을 보완하기 위해 나온 방안들을 살펴보겠습니다 Double Checked Locking 멀티 쓰레드 환경에서 이른 초기화처럼 객체를 미리 생성하지 않으면서 synchronized 의 성능 이슈 또한 사전에 방지할 수 있는 기법입니다 Double Checked Locking public class GlobalSettings { private static volatile GlobalSettings instance; private .. 2024. 1. 25.
728x90
반응형