본문 바로가기

강의

(63)
빌더 (Builder) 패턴 https://velog.io/@sillutt/%EB%B9%8C%EB%8D%94-Builder-%ED%8C%A8%ED%84%B4 빌더 (Builder) 패턴 빌더 패턴 velog.io 빌더 패턴 다양한 구성으로 만들어지는 인스턴스에 대해서 동일한 프로세스를 통해 만들 수 있게 도와주는 패턴. 객체를 만드는 프로세스를 독립적으로 분리할 수 있다. Director를 추가하여 빌더를 사용하면 반복되는 호출 스택을 빌더 내에 숨기고 client는 Director를 통해서 객체를 받아 사용할 수 있다. Builder class / interface public interface TourPlanBilder { TourPlanBuilder title (String title); TourPlanBuilder night..
추상 팩토리 (Abstract factory) 패턴 https://velog.io/@sillutt/%EC%B6%94%EC%83%81-%ED%8C%A9%ED%86%A0%EB%A6%AC-Abstract-factory-%ED%8C%A8%ED%84%B4 추상 팩토리 (Abstract factory) 패턴 추상 팩토리 패턴 velog.io 추상 팩토리 (Abstract factory) 패턴 팩토리를 추상화된 형태로 정의하는 패턴. 팩토리를 사용하는 클라이언트에 초점을 맞춘다. 추상 팩토리의 목적은 인스턴스화 하는 코드를 인터페이스 기반으로 하도록 돕기 때문에 모양은 팩토리와 흡사하나 사용하는 코드도 함께 이해해야 한다. public class WhiteshipPartsFactory implements ShipPartsFactory { @Override public..
팩토리 메소드 (Factory method) 패턴 https://velog.io/@sillutt/%ED%8C%A9%ED%86%A0%EB%A6%AC-%EB%A9%94%EC%86%8C%EB%93%9C-Factory-method-%ED%8C%A8%ED%84%B4 팩토리 메소드 (Factory method) 패턴 어떤 객체 및 인스턴스를 생성하는 책임을 추상적인 인터페이스의 메소드로 감싸는 패턴이다. velog.io 팩토리 메소드 (Factory method) 패턴? 어떤 객체 및 인스턴스를 생성하는 책임을 추상적인 인터페이스의 메소드로 감싸는 패턴이다. 구체화한 클래스에 모든 코드를 넣는 작업은 복잡하기 때문에 팩토리 패턴을 사용한다. 팩토리 역할을 할 인터페이스를 만들고 메소드들을 정의한다. 이 중 일부를 하위 클래스에서 구체적인 인스턴스를 만들게 된다. ..
싱글톤(Singleton) 패턴 https://velog.io/@sillutt/%EC%8B%B1%EA%B8%80%ED%86%A4Singleton-%ED%8C%A8%ED%84%B4 싱글톤(Singleton) 패턴 Singleton 패턴 velog.io Singleton 개념 Singleton이란? 인스턴스를 한개만 제공하는 클래스 만들어진 1개의 인스턴스에 글로벌하게 접근할 수 있는 방법이 필요함 -> 오직 1개만 존재해야하는 경우 (설정 화면, 메뉴 등) Code Example public class App { public static void main(String[] args) { Settings settings1 = new Settings(); Settings settings2 = new Settings(); //true Syste..
[Java] Volatile volatile 자바 코드의 변수를 메인 메모리에 저장할 것을 명시하기 위해 사용한다. 모든 volatile 변수는 컴퓨터 메인 메모리로부터 읽히고, 쓰기 작업 또한 메인 메모리로 직접 이루어진다. 따라서 CPU 캐시를 사용하지 않는다. volatile 사용해서 가시성을 보장한다. 가시성 보장 volatile 키워드가 없다면 멀티 스레드 환경에서 자원에 접근할 때 변수가 언제 cpu 캐시에서 메모리로 쓰일 지 보장할 수 없다. 즉, 캐시와 메모리 상의 변수가 서로 다른 값이 될 수 있는 것이다. 이처럼 다른 스레드가 변경한 값을 볼 수 없는 상태를 가시성 이라고 한다. > 정리 volatile 키워드를 사용하면 메인 메모리에서 직접 쓰기 때문에 일관성이 보장된다. 단점 경쟁 상태 멀티스레드 환경에서 vo..
[Python] import Error : cannot import name module 에러 해결 Jupyter notebook 실습 중 해당 에러가 발생했다. 코드에도 문제가 없었고, 파일 명에도 오타가 없었다. ipython 재설치를 통해 해결했다. pip uninstall -y ipython prompt_toolkit pip install -ipython 참고 https://github.com/ipython/ipython/issues/11270 ImportError: cannot import name 'generator_to_async_generator' · Issue #11270 · ipython/ipython When I run Ipython on Ubuntu18.04,I got this ImportError. github.com
6.2 객체지향 프로그래밍 객체는 특성과 동작에 의해 정의된다. 영어 문법의 특징과 행동 영어 문법의 측면에서 특징과 행동을 생각할 수 있다. 특성은 명사에 해당하고 행동은 동사에 해당한다. 객체지향 프로그래밍 관련 단어 클래스 메소드와 속성으로 구성된 청사진 객체 클래스의 인스턴스. 추상적일 수 있다. 속성 설명자 또는 특성. 3인치, 대형 등의 특정 값을 취할 수 있다. 메소드 클래스나 객체가 수행할 수 있는 작업 OOP 객체 지향 프로그래밍의 약어 캡슐화 객체 지향 프로그래밍의 기본 아이디어 중 하나는 캡슐화이다. 함수와 데이터를 모두 단일 엔티티로 결합할 수 있다. 객체 지향 프로그래밍에서 클래스라고 부른다. 캡슐화를 사용하면 기계 학습 알고리즘의 구현을 숨기는 scikit-learn 패키지와 마찬가지로 구현 세부 정보를 ..
5.11 코드 리뷰와 고려할 점, 코드 검토를 위한 팁 코드 리뷰는 최고의 프로그래밍 프랙티스를 홍보하고 프로덕션용 코드를 준비할 수 있는 팀 구성원 모두에게 유용하다. 코드 리뷰에서 무엇을 찾아야 하는지와 코드 리뷰를 수행하는 방법에 대한 몇 가지 팁이 있다. 코드가 깨끗하고 모듈화되었는가? - 코드가 이해하기 쉬운가? - 의미 있는 이름과 공백을 적절히 사용하였는가? - 중복된 코드가 있는가? - 다른 추상 레이어를 제공할 수 있는가? - 각 함수가 적절히 모듈화 되었는가? - 각 함수 또는 모듈이 너무 길지 않은가? 코드가 효율적인가? - 벡터화할 수 있는 루프 또는 단계가 있는가? - 더 나은 자료구조를 사용할 수 있는가? - 필요한 계산 횟수를 최소화할 수 있는가? - 생성자 또는 멀티프로세싱을 사용하여 최적화할 수 있는가? 문서가 유효한가? - 인..

LIST