[OOP] 음식 주문하기
·
여러가지/이것저것
음식점에서 음식을 주문하는 프로세스를 구현하기 위한 도메인 모델링 과정을 요약하면 다음과 같습니다: 1. 도메인 구성 객체 식별 도메인 내 객체: 음식점의 주문 프로세스에서 중요한 역할을 하는 객체를 식별합니다. 이에는 손님, 메뉴판, 다양한 음식(예: 돈까스, 냉면, 만두), 요리사, 요리가 포함됩니다. 2. 객체 간 관계 분석 손님과 메뉴판: 손님은 메뉴판을 통해 음식을 선택합니다. 손님과 요리사: 손님은 요리사에게 음식을 요청(주문)합니다. 요리사와 요리: 요리사는 손님의 주문에 따라 요리를 준비합니다. 3. 도메인 모델링과 추상화 객체 추상화: 식별된 객체들을 정적인 타입으로 추상화하여, 각 객체의 역할과 책임을 명확히 합니다. 손님 타입: 주문하는 역할을 담당합니다. 요리 타입: 돈까스, 냉면,..
[OOP]사칙연산 계산기
·
여러가지/이것저것
요구사항 간단한 사칙연산을 할 수 있다. 양수로만 계산 할 수 있다. 나눗셈에서 0을 나누는 경우 적절한 예외(IllegalArgument, ZeroDivisionError)를 발생 시킬 수 있다. 절차적 코드 Enum 기반: ArithmeticOperator Enum 클래스를 사용하여 구현합니다. 각 연산을 열거형 값으로 나타내며, 각 값은 연산을 수행하는 calculate 메소드를 구현합니다. 자바 package org.example; import java.util.stream.Stream; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.Parameter..
OOP?
·
여러가지/이것저것
객체지향이란? 객체지향(Object-Oriented)은 컴퓨터 프로그래밍에서 널리 사용되는 패러다임 중 하나로 프로그램을 객체들의 집합으로 모델링하여 설계하고 프로그래밍하는 방법론입니다. 이는 소프트웨어의 재사용성, 확장성, 유지관리성을 향상 시키기 위해 만들어졌습니다. 핵심개념에는 클래스, 객체, 상속, 다형성, 캡슐화, 추상화등이 있습니다. 4가지 특징 - 추상화(Abstraction) 복잡한 실제 상황을 간단한 모델로 표현하는 것. 필요한 정보만을 추출하여 프로그램의 복잡도를 관리하게 해줍니다. 불필요한 부분을 제거함으로써 필요한 핵심만 나타낸 것이라고 볼 수 있다. 흔히 일반화, 단순화라고 여겨 질수 있습니다. 이를 사용하는 이유는 복잡성을 낮추기 위함입니다. - 다형성(Polymorphism) ..
AMQP?
·
여러가지/이것저것
AMQP 등장 배경 AMQP(Advanced Message Queuing Protocol)는 메시지 지향 미들웨어(MOM)를 위한 표준 응용 계층 프로토콜입니다. 플랫폼 종속적인 제품들 사이의 이기종 간 메시지 교환의 불편함과 비효율성을 해결하기 위해 개발되었습니다. AMQP는 JPMorgan의 John O'Hara에 의해 금융계의 다양한 플랫폼 간 메시지 교환을 위해 개발되었으며, 2006년에 최초로 사용되기 시작했습니다. 구현체 RabbitMQ OpenAMQ StormMQ Apache Qpid 특징 1. 표준화된 프로토콜 AMQP는 오픈 스탠다드 응용 계층 프로토콜로, 메시지 지향 미들웨어 시스템을 위해 설계되었습니다. 이는 다양한 벤더와 플랫폼 간의 상호 운용성을 가능하게 합니다. 2. 메시..
MQTT?
·
여러가지/이것저것
MQTT란? MQTT(Message Queuing Telemetry Transport)는 IoT(사물 인터넷) 장치 간의 경량 메시징 프로토콜입니다. MQTT는 저대역폭, 높은 지연 시간, 불안정한 네트워크 환경에서도 효과적으로 작동하도록 설계되었으며, IoT 애플리케이션에서 널리 사용됩니다. 이 프로토콜의 주요 특징과 장점은 다음과 같습니다 주요 특징 간결하고 가벼움: 프로토콜 자체가 간결하며, Message Header의 크기가 작아 효율적인 네트워크 사용을 가능하게 한다. Publisher-Subscriber Model: MQTT는 Publisher(데이터를 전송하는 Client)와 Subscriber(데이터를 수신하는 Client)간의 통신을 위한 모델을 제공한다. Client는 Topic을 Su..
커널(Kernel)
·
여러가지/이것저것
운영체제의 커널(kernel)은 컴퓨터 시스템에서 가장 핵심적인 부분으로, 하드웨어와 소프트웨어 사이의 중개자 역할을 합니다. 커널은 시스템의 다양한 부분에 대한 접근을 관리하고, 프로그램 실행 시 CPU 시간 분배, 메모리 관리, 주변장치 및 입력/출력 관리, 파일 시스템 조작 등과 같은 기본적인 시스템 서비스를 제공합니다. 커널은 보통 다음과 같은 기능들을 수행합니다. 프로세스 관리(Process Management) 정의: 프로세스 관리는 운영 체제에서 실행 중인 모든 프로세스를 제어하는 기능입니다. 이는 프로세스의 생성, 스케줄링, 동기화, 종료 등을 포함합니다. 사례: 여러 응용 프로그램이 동시에 실행될 때, 커널은 각 프로세스에 CPU 시간을 공정하게 할당합니다. 이를 통해 사용자는 음악을 들..
XSS(Cross-Site Scripting)?
·
여러가지/이것저것
XSS(Cross-Site Scripting) 공격은 웹 애플리케이션의 보안 취약점을 이용하여, 공격자가 사용자의 웹 브라우저에 악의적인 스크립트를 실행시키는 공격 방법입니다. 이 스크립트는 사용자가 방문하는 웹 페이지에 삽입되며, 사용자의 세션 토큰이나 쿠키 정보를 탈취하거나, 사용자를 가장하여 웹 애플리케이션에 요청을 보내는 등 다양한 악의적인 활동을 수행할 수 있습니다. XSS 공격의 주요 유형 XSS 공격은 크게 세 가지 유형으로 분류됩니다: 1. 저장된(Stored) XSS: 악의적인 스크립트가 웹 애플리케이션의 데이터베이스에 저장되고, 다른 사용자가 해당 데이터를 조회할 때 실행되는 공격입니다. 예를 들어, 포럼 게시글이나 댓글에 악의적인 스크립트를 포함시키는 경우가 있습니다. 2. 반사된(R..
SQL Injection
·
여러가지/이것저것
SQL Injection(이하 SQL 삽입)은 애플리케이션 보안 취약점 중 하나로, 공격자가 애플리케이션의 데이터베이스 쿼리에 악의적인 SQL 코드를 '삽입'함으로써 데이터베이스를 조작하거나 민감한 정보를 빼낼 수 있는 공격 방법입니다. 이러한 공격은 주로 입력 데이터를 충분히 검증하거나 적절히 처리하지 않는 웹 애플리케이션에서 발생합니다.SQL Injection 방어 방법SQL 삽입 공격을 방어하기 위한 일반적인 방법은 다음과 같습니다:1. Prepared Statements (준비된 명령 사용하기): 데이터베이스 쿼리 실행 시, 사용자 입력 값을 쿼리의 일부로 직접 삽입하는 대신, 준비된 명령(Prepared Statements)을 사용합니다. 이 방식은 SQL 쿼리를 미리 컴파일하고, 실행 시점에 ..