728x90

개발/ETC 82

SQL 인젝션

SQL 인젝션에 대해서 알아보자 ! 1. 개념 SQL 인젝션(SQL Injection)은 웹 애플리케이션에서 사용자 입력을 제대로 검증하지 않고 SQL 쿼리에 포함시킬 때 발생하는 보안 취약점. 공격자가 의도적으로 악의적인 SQL 구문을 삽입해서 데이터베이스를 조작, 조회, 변경, 또는 삭제할 수 있다. 2. 📌 어떻게 발생하나? 예를 들어 아래와 같은 코드가 있다고 해보면SELECT * FROM users WHERE username = '$username' AND password = '$password'; 만약 사용자가 입력한 값이username: adminpassword: ' OR '1'='1 이렇게 들어오면 최종 쿼리는 다음과 같이 된다.SELECT * FROM users WHE..

개발/ETC 2025.05.22

템플릿 메소드 패턴

템플릿 메소드 패턴에 대해서 알아보자! 템플릿 메소드 패턴(Template Method Pattern)은 행동(Behavioral) 디자인 패턴 중 하나로, 알고리즘의 뼈대를 상위 클래스에서 정의하고, 일부 단계는 하위 클래스에서 구현하도록 만드는 구조. ✅ 핵심 개념 요약상위 클래스: 알고리즘 전체 구조(순서)를 정의 하위 클래스: 구체적인 단계만 재정의 (hook method 또는 abstract method) 의도: 공통 로직 재사용 + 유연한 확장 제공 ✅ 구조 예시 (Java 스타일)abstract class AbstractTask { // 템플릿 메소드 (알고리즘 전체 흐름 정의) public final void execute() { start(); ..

개발/ETC 2025.05.20

NoSQL DB 종류 알아보기

NoSQL 데이터베이스의 종류에 대해서 알아보자! 1. 개념NoSQL은 "Not Only SQL"의 약자로, 전통적인 관계형 데이터베이스(RDBMS)와 달리 정해진 스키마 없이 유연한 데이터 저장 방식을 지원하는 데이터베이스 유형이다. NoSQL은 일반적으로 대규모 분산 시스템, 빅데이터, 실시간 웹앱 등에 사용된다. 2. 종류- 문서형(Document-based) 대표 DB: MongoDB, CouchDB, Amazon DocumentDB 데이터 형식: JSON, BSON, XML 형태의 "문서" 특징: > 각 문서는 유연한 구조를 가짐 > 컬렉션 단위로 문서 관리 > RDB의 테이블+레코드 개념과 유사하지만 문서 간 구조가 달라도 됨 사용 예: 블로그 글, 사용자 프로필, 전자상거..

개발/ETC 2025.05.18

결합도 공부

1. 개념 결합도(Coupling)는 소프트웨어 설계에서 모듈 간의 의존성 정도를 나타내는 개념이다. 쉽게 말해, 한 모듈(또는 클래스, 함수)이 다른 모듈에 얼마나 많이 의존하고 있는지를 나타내며, 이는 시스템의 유지보수성, 확장성, 재사용성에 직접적인 영향을 준다. 2. 종류결합도는 일반적으로 다음과 같은 7가지 수준으로 분류된다.(낮은 결합도 → 높은 결합도 순)결합도 종류설명자료 결합(Data Coupling)한 모듈이 다른 모듈에게 단순한 데이터를 전달. 가장 바람직함.스탬프 결합(Stamp Coupling)구조체나 객체처럼 데이터 묶음을 전달, 하지만 전체가 아닌 일부만 사용.제어 결합(Control Coupling)한 모듈이 다른 모듈에 어떻게 동작할지 지시 (ex. 플래그).외부..

개발/ETC 2025.05.08

이진 트리 공부

이진트리에 대해서 공부해보자 1. 개념 이진 트리는 각 노드가 최대 두 개의 자식 노드를 가지는 트리(Tree) 자료구조를 말한다. 여기서 두 개의 자식 노드는 각각 왼쪽 자식(left child), 오른쪽 자식(right child) 이라고 부른다. 트리는 그래프 이론의 한 형태인데, 방향성이 있고 순환(cycle)이 없는 연결 구조를 가지며, 이 중 이진 트리는 특별히 자식이 둘 이하라는 제약 조건이 붙은 것이다. 2. 이진 트리의 기본 용어 루트(root): 트리의 가장 꼭대기 노드. 부모가 없다. 리프(leaf): 자식이 없는 노드. (즉, 말단 노드) 내부 노드(internal node): 자식이 하나 이상 있는 노드. 서브트리(subtree): 어떤 노드를 루트로 하는 작은 트..

개발/ETC 2025.04.30

페이지 교체 알고리즘 공부

개념페이지 교체 알고리즘(page replacement algorithm)은 가상 메모리 시스템에서 사용되는 핵심 기술로, 메모리에 올라와 있는 페이지 중 어떤 것을 제거하고 새로운 페이지를 불러올지 결정하는 방법. 운영체제가 사용하는 메모리 관리 방식에서 물리 메모리는 한정적이기 때문에, 필요한 페이지가 없을 경우 디스크에서 가져와야 하고, 이때 기존 페이지 중 하나를 제거해야 한다. 이때 어떤 페이지를 제거할지를 정하는 기준이 바로 페이지 교체 알고리즘이다. 페이지 교체가 필요한 상황: 페이지 부재(Page Fault)1. 프로세스가 어떤 페이지에 접근하려고 한다. 2. 그 페이지가 현재 물리 메모리에 없으면 페이지 폴트(page fault) 발생. 3. 새 페이지를 디스크에서 불러와야 함. ..

개발/ETC 2025.04.28

단일 프로세스 시스템 알아보기!

단일 프로세스 시스템에 대해서 알아보자 ! 단일 프로세스 시스템은 한 번에 하나의 프로그램만 실행한다. 또 다른 프로그램을 실행하려면, 먼저 실행 중이던 프로그램을 종료시키고 그 다음 프로그램을 실행해야 한다. 단일 프로세스 시스템의 단점❌ 1. 병렬 처리 불가 한 번에 하나의 작업만 처리 가능해서 여러 작업을 동시에 수행할 수 없어. 예: 사용자가 작업 중에 파일 다운로드나 음악 재생을 동시에 할 수 없음. ❌ 2. 응답성 저하 하나의 작업이 오래 걸리면 전체 시스템이 멈춘 것처럼 느껴질 수 있어. 예: 무한 루프나 I/O 대기 중이면 시스템 전체가 반응이 없음. ❌ 3. 확장성 한계 다중 CPU나 멀티코어 환경을 활용할 수 없음. 현대 시스템에서는 CPU 코어가 많아도 하나만 ..

개발/ETC 2025.04.16

무중단 배포 알아보기

무중단 배포란?무중단 배포(Zero-Downtime Deployment) 는 서비스에 다운 타임이 발생하지 않으면서, 새로운 버전의 애플리케이션을 서버에 배포하는 것을 의미. 무중단 배포 패턴에는 대표적으로 순차적으로 배포하는 롤링 배포, 전체 서버를 통째로 바꾸는 블루/그린 배포, 트래픽을 순차적으로 이동시키는 카나리 배포가 존재한다.         롤링 배포(Roling Deployment) 롤링 배포(Roling Deployment) 는 서버를 한 대씩 순차적으로 업데이트하는 가장 기본적인 방식. 특정 시점에는 두 가지 버전이 공존하기 때문에 새로운 버전은 기존 버전 기능을 지원하는 등 하위 호환성(Backward Compatibility) 에 신경을 써야 한다. 롤링 배포는 새로운 버전을 배포하기..

개발/ETC 2025.03.25

CORS 알아보기

CORS에러를 많이 만나봤을 것이다. 내 블로그에서도  invalid cors request 403 해결 invalid cors request 403 해결"Invalid CORS request 403" 오류는 Cross-Origin Resource Sharing (CORS) 관련 오류로, 웹 브라우저에서 발생하는 보안 관련 오류다. 이 오류는 다음과 같은 상황에서 발생할 수 있다CORS 정책 위반: 웹 브라우저는devhooney.tistory.com   이 글이 요새 핫한(?) 편이다 ㅋㅋ 한 번 자세히 알아보자  1. 개념CORS는 Cross Origin Resource Sharing의 줄임말로 출처가 다른 곳의 리소스를 요청할 때 접근 권한을 부여하는 것이다.리소스를 주고받는 두 곳의 출처가 다르면 ..

개발/ETC 2025.01.10

git 브랜치 생성, 전환하기

git 사용 시 브랜치를 생성하거나 전환할 일이 많다. 그 방법을 알아보자   1. 브랜치 생성하기브랜치 생성하는 명령어는git이 설치되어 있다는 가정하에  git branch newbranch   newbranch 자리에 원하는 브랜치 이름을 넣어주면 된다.   2. 광고   3. 브랜치 전환하기전환을 원하는 브랜치가 있다면그 명령어는 바로   git checkout newbranch  마찬가지로 newbranch 자리에 원하는 브랜치 이름을 입력하면 된다.    4. 브랜치 목록확인어떤 브랜치가 있는지 확인하기 위해서는  git branch  이렇게 이름 없이 git branch만 입력하면브랜치 목록이 뜨고, 현재 선택되어 있는 브랜치는 *표시가 붙어있다.    끝.

개발/ETC 2025.01.08
728x90