본문 바로가기

분류 전체보기60

[알고리즘][정렬] - 쉘 정렬 쉘 정렬이란? 배열을 부분적으로 정렬된 여러 개의 서브 배열로 나누고 각 서브 배열에 대해 삽입 정렬을 수행함으로써 전체 배열을 점진적으로 정렬하여 삽입 정렬을 개선한 정렬 알고리즘 (삽입 정렬에 대한 설명 보러 가기) 작동 원리 1. 배열의 전체 길이에 따라 초기 간격(gap)을 설정한다 (보통 전체 길이의 절반이며, 홀수 권장) 2. 설정된 간격만큼 떨어진 요소들을 담은 부분 리스트를 생성한다 (부분 리스트의 개수는 간격과 같다) 3. 부분 리스트의 요소들을 비교하여 각각 삽입 정렬한다 4. 정렬 후, 간격을 절반으로 축소한다 (축소할 때마다 하나의 부분 리스트에 속한 값들은 증가) 5. 간격이 1 에 도달하면 전체 리스트를 삽입 정렬한다 작동 예시 쉘 정렬 메소드 예시 public void shel.. 2024. 2. 16.
[프로그래머스] 알고리즘 고득점 kit - 올바른 괄호 (Stack/Queue) 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/12909 • "(" 로 열렸으면 반드시 짝지어서 ")" 로 닫혀야 올바른 괄호 • 여기서 "( ) ( ( )" 와 "( ) ( ) ) ) ( )" 는 올바르지 않은 괄호 • 들어온 문자가 "(" 일 경우 저장소에 넣었다가 • 들어온 문자가 ")" 일 경우 저장소에 있는 "(" 와 짝짓기 • 이때 가장 마지막 즉, 최신의 "(" 와 비교하므로 후입선출의 구조 • 후입선출을 최대한 활용할 수 있는 Stack 생성 • 저장소에 "(" 가 존재하지 않을 경우에 ")" 가 들어올 경우에 대한 에러처리 • startsWith, endsWith 를 활용하여 1차 관문을 생성할 수 있지만 •.. 2024. 2. 7.
[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.
728x90
반응형