분류 전체보기(34)
-
[디자인 패턴] 싱글톤 패턴(Singleton Pattern)
1. 싱글톤 패턴이란?애플리케이션이 시작될 때 어떤 클래스가 최초 한 번만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴. 생성자가 여러 번 호출되어도 실제로 생성되는 객체는 하나이다.2. 싱글톤 패턴 사용 이유 및 주의점2-1. 사용 이유1. 클래스의 인스턴스가 한번만 생성되기 때문에 메모리 낭비를 방지할 수 있다.2. 싱글톤으로 만들어진 클래스의 인스턴스는 어디서든지 접근할 수 있기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다.3. 인스턴스가 절대적으로 한 개만 존재하는 것을 보증하고 싶은 경우 사용할 수 있다.2-2. 주의점1. 너무 많은 인스턴스를 싱글톤으로 구현하게 되면 정적메모리가 낭비된다.2. 동기화 처리가 제대로 이루어지지 않으면 멀티스레드..
2024.08.21 -
[디자인 패턴] 디자인 패턴과 디자인 패턴 종류
1. 디자인 패턴이란?소프트웨어를 설계할 때 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책 2. 디자인 패턴의 종류생성(Creational)패턴구조(Structural)패턴행위(Behavioral)패턴싱글톤(Singleton)퍼사드(Facade)책임 연쇄(Chain of Responsibility)팩토리 메서드(Factory Method)브릿지(Bridge)옵저버(Observer)추상 팩토리(Abstract Factory)컴퍼지트(Composite)메멘토(Memento)빌더(Builder)플라이웨이트(Flyweight)커맨드(Command) 어댑터(Adapter)템플릿 메서드(Template Method) 데커레이터(Decorator)스트래티지(Strategy) 프록시(Proxy)비..
2024.08.21 -
동기(Sync), 비동기(Async), Blocking, Non Blocking 차이
동기 & 비동기: 처리해야 하는 작업들을 어떤 '흐름'으로 처리할 것인가에 대한 관점 동기: A 함수가 B 함수를 호출할 때, B 함수의 결과를 A 함수가 처리하는 것. B의 작업 완료 후 리턴을 기다리거나, 바로 리턴을 받더라도 미완료 상태라면 작업 완료 여부를 계속 확인하면서 신경 쓰는 것. 비동기: A 함수가 B 함수를 호출할 때, B 함수의 결과를 B 함수가 처리하는 것. A가 B를 호출할 때 콜백(callback) 함수를 함께 전달해서, B 함수의 작업이 완료되면 함께 보낸 콜백함수를 실행한다. A는 B의 완료 여부를 신경 쓰지 않는다. Blocking & Non Blocking: 처리해야 하는 작업의 전체적인 흐름을 막느냐 안 막느냐에 대한 관점, 제어권이 누구에게 있는지Blocking: ..
2024.08.20 -
Docker로 mosquitto 실행 및 설정
docker로 mosquitto 실행 및 설정해 보겠습니다. 1. docker로 mosquitto 이미지를 다운로드합니다. docker pull eclipse-mosuitto:latest 2. mosquitto 컨테이너를 실행합니다. 웹소켓 포트를 8083으로 설정하기 위하여, 8083번과 기본 mqtt 1883 포트 두 가지를 설정했습니다. docker run -d -p 8083:8083 -p 1883:1883 --hostname mosquitto --name mosquitto eclipse-mosquitto:latest 3. 실행한 mosquitto 설정을 변경합니다. 3-1. mosquitto/config로 이동하여 mosquitto.conf를 수정할 것입니다. $ docker exec -it mo..
2023.02.11 -
[오브젝트 : 코드로 이해하는 객체지향 설계] 6. 메시지와 인터페이스
1. 협력과 메시지 클라이언트-서버 모델 클라이언트 : 협력 안에서 메시지를 전송하는 객체 서버 : 협력 안에서 메시지를 수신하는 객체 클라이언트 ⇒ Screening / 서버 ⇒ Movie 클라이언트 ⇒ Movie / 서버 ⇒ DiscountPolicy 객체는 협력에 참여하는 동안 클라이언트와 서버의 역할을 동시에 수행한다. 다른 객체와 협력을 가능하게 해주는 매개체 ⇒ 메시지 협력과 관련된 용어 메시지 메시지 : 객체들이 협력하기 위해 사용할 수 있는 의사소통 수단. 메시지는 오퍼레이션명(operation name)과 인자(argument)로 구성된다. 메시지 전송 / 메시지 패싱 : 한 객체가 다른 객체에게 도움을 요청하는 것. 메시지 전송은 메시지에 메시지 수신자를 추가한 것 메시지 전송자 : 메..
2021.09.08 -
[오브젝트 : 코드로 이해하는 객체지향 설계] 5. 책임 할당하기
1. 책임 주도 설계 데이터보다 행동을 먼저 결정하라 협력이라는 문맥 안에서 책임을 결정하라 책임 주도 설계의 흐름 시스템이 사용자에게 제공해야 하는 기능인 시스템 책임을 파악한다. 시스템 책임을 더 작은 책임으로 분할한다. 분할 된 책임을 수행할 수 있는 적절한 객체 또는 역할을 찾아 책임을 할당한다. 객체가 책임을 수행하는 도중 다른 객체의 도움이 필요한 경우 이를 책임질 적절한 객체 또는 역할을 찾는다. 해당 객체 또는 역할에게 책임을 할당함으로써 두 객체가 협력하게 한다. 2. GRASP패턴 GRASP(General Responsibility Assignment Software Pattern)⇒ 일반적인 책임 할당을 위한 소프트웨어 패턴으로 객체에게 책임을 할당할 때 지침으로 삼을 수 있는 원칙들..
2021.09.02