전체 글 60

[Design Patter] 상태패턴

1. 상태패턴이란? 상태를 객체화하여 필요에 따라 다르게 행동하도록 위임하는 디자인 패턴이다. 즉, 객체의 내부 상태가 바뀜에 따라 객체의 행동을 바꿀 수 있다. 객체의 특정 상태 = 클래스 상태에 따른 행위 = 클래스 내의 메서드 ex) 뽑기 기계를 코드로 구현할 때 각각 알맹이 매진, 동전 없음, 동전 있음, 알맹이 판매 4가지의 상태가 있다. 4가지의 상태 클래스를 인터페이스로 캡슐화 시킨다. 2. 상태패턴을 사용하는 이유 뽑기 예제를 예시로 들어보자. 아래 코드와 같이 구현하면, 새로운 추가 요청 사항이 생긴다면 모든 메서드에 조건문을 추가해줘야 한다. 따라서 상태패턴을 "확장성"을 더욱 용이하기 위해 사용한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19..

Design Pattern 2023.01.07

[Design Pattern] 싱글톤 패턴

1. 싱글톤 패턴? 클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공하는 디자인 패턴이다. 생성자가 여러번 호출되어도 실제로 생성되는 객체는 하나이며, 최초로 생성된 이후에 호출된 생성자는 이미 생성한 객체를 반환시키도록 만드든 것 ex)Singleton 클래스다이어그램 uniqueInstance라는 클래스 변수에 싱클톤의 하나뿐인 인스턴스가 저장된다. getInstance()메소드는 정적 메소드로 Singleton.getInstance()라는 코드만 사용하면 언제든 이 메소드를 호출할 수 있다. 전역변수에 접근하는 것처럼 '쉬우면서 게으른 인스턴스'를 생성할 수 있다는 장점이 있다. 2. 장점과 단점 1) 장점 객체를 생성할 때마다 메모리 영역을 할당 받아야 한다. 하지만 한번의 ne..

Design Pattern 2022.12.17

[운영체제]

1. 가상화 1) 가상화란? 컴퓨터 시스템에서 물리, 논리적 자원을 추상화하여 실제와 같은 자원으로 사용 및 관리가 가능한 기술이다. 2) 가상머신이란? 물리적인 하드웨어를 가상화하여 하나의 하드웨어에서 여러 대의 컴퓨터가 구동되도록 하는 것이다. 3) 가상머신 방식 2가지 I. 호스트OS형 호스트OS상에 가상화 소프트웨어를 설치해서 이용한다. 장점: 가상의 하드웨어를 에뮬레이팅하기 때문에 호스트 운영체제에 크게 제약사항이 없다. 단점: OS위에 OS가 얹히는 방식이라 오버헤드 발생 가능성이 있다. ex) VMware Workstation, Micorosoft Virtual PC, VirtualBox II. 하이퍼바이저형 하드웨어상에 직접 소프트웨어를 실행하고 그 위에 가상 머신을 동작시키는 기술이다. ..

[Algorythm-기초] 그리디

1. 그리디 알고리즘이란? 그리디 알고리즘이란 말그대로 Greedy(탐욕)이라는 이름과 같이 당장 최적인 답을 선택하는 과정을 반복하여 결과를 도출하는 알고리즘이다. 2. 예시 * 거스름돈 문제 당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전히 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러 줘야할 동전의 최소 개수를 구하라. 단 거슬러 줘야 할 돈 N은 항상 10의 배수이다. * 풀이 가장 큰 화폐 단위부터 돈을 거슬러 주는 아이디어로 해결한다. def solution(money): answer =0 change = [500, 100, 50, 10] remain = money for i in change..

Algorytm/기초 2022.12.06

[Algorythm-자료구조] 해시

1. 해시란? 해싱 = 해시 맵 = 해시 테이블 같은 용어로 key를 활용하여 value에 직접 접근 가능한 구조이다. 정렬보다는 검색이 유용하다. 파이썬으로 치면 딕셔너리가 이에 해당한다. 2. 해시 함수란? 해시와 해시테이블을 알기 전에 해시 함수라는 것을 알아야 한다. 자료구조를 배우는 이유는 원하는 값을 최대한 효율적으로 찾기 위해 여러가지 저장구조를 배우는 것이다. 데이터를 최대한 빠르게 찾기 위해서는 저장하는 위치도 잘 생각하여 저장해야 한다. 해시 함수는 key를 고정된 길이의 hash로 변경해주는 역할을 한다. 이 과정을 "해싱"이라고 말하기도 한다. key를 해시라는 함수에 input으로 넣고output으로 나오는 것이 해시이다. 3. 해시테이블? 해시 함수를 사용하여 키를 해시 값으로 ..

Algorytm/기초 2022.12.03

[Alhgorythm-개념] 정렬

1. 정렬 여러 개의 자료를 순서에 따라 나열하는 방법이다. 2. 정렬 알고리즘 선택 시 고려해야할 점 1) 정렬할 데이터 양 2) 데이터와 메모리 3) 이미 정렬된 정도 4) 필요한 추가 메모리의 양 5) 상대위치 보존여부 이 외에도 여러가지 요소가 있겠지만, 이러한 사항을 고려하여 정렬방법을 상황에 따라 적용해야 한다. 3. 정렬의 종류 정렬은 다음과 같이 8종류가 있다. 하나씩 구체적으로 살펴보면, 1) 선택 정렬 - 1번 값을 2번~마지막값 중 최솟값을 찾아 1번에 놓고, 2번값을 3번~마지막값까지 비교하여 최솟값을 찾아 2번에 놓는 과정을 반복하여 정렬하는 알고리즘이다. 2) 버블 정렬 - 서로 인접한 두 원소를 비교하여 정렬하는 알고리즘이다. 3) 삽입 정렬 - 두 번째 값부터 시작해서 그 앞..

Algorytm/기초 2022.12.01

[Spring Boot] JPA Entity

1.JPA사용 시 Entity 구성 @Id primary key를 가지는 변수를 선언하는 것을 뜻한다. @GeneratedValue 어노테이션은 해당 Id값을 어떻게 자동으로 생성할 지 전략을 선택할 수 있다. 일반적으로는 @GeneratedValue(Strategt = GenerationType.AUTO)를 사용한다. DB에 맞게 자동으로 생성해주는 역할을 한다. @ManyToOne 2. Entity에 기본생성자가 필수 - JPA의 Entity는 반드시 파라미터가 없는 기본 생성자를 지녀야 한다. - 이 기본생성자는 public, protected여야하며, private이면 안된다. 2-1. 기본생성자가 필요한 이유 동적으로 객체 생성 시 Reflection API를 활용하기 때문이다. JPA는 DB값..

[FDR] FDR을 이용한 주식 차트 분석

1. FinanceDataReader 라이브러리 활용을 위한 튜토리얼 financedata.github.io/posts/finance-data-reader-users-guide.html FinanceDataReader 사용자 안내서 FinanceDataReader 사용자 안내서 financedata.github.io 위 안내서를 따라 환경을 세팅합니다. 2. 라이브러리 설치 pip install finance datareader 명령어를 통해 라이브러리 설치가 완료되었다면 , 3. 필요한 라이브러리들을 불러오고 FinanceDataReader의 버전을 확인 4. 상장종목 전체 가져오기 fdr.StockListing?? * 팁) 도움말을 보고싶을 때는 ? , 소스코드를 볼 때는 ??를 사용한다 5. 상장종..

[AWS] RDS VS EC2

EC2 아마존 일래스틱 컴퓨트 클라우드(Amazon Elastic Compute Cloud, EC2)는 사용자가 가상 컴퓨터를 임대 받아 그 위에 자신만의 컴퓨터 애플리케이션들을 실행할 수 있게 하는 것이다. → elastic(탄력적인) 용어를 사용하게 된 이유는 사용자는 필요하면 서버 인스턴스를 만들고 시작하고 종료할 수 있으며, 실행 중인 서버에 대해 시간 당 지불하기 때문이다. RDS 아마존 관계형 데이터베이스 서비스 (Amazon Relational Database Service) RDS는 아마존 웹서비스가 서비스하는 분산 관계형 데이터베이스이다. 클라우드 내에서 동작하는 웹서비스 데이터베이스 소프트웨어 패치, 백업, 복구 활성화 등의 복잡한 관리 프로세스들이 자동으로 관리됨 스토리지, 연산자원을..

Cloud/AWS 2022.07.25