본문 바로가기

전체 글490

싱글톤(Singleton) 패턴 🤔문제싱글턴 패턴은 한 번에 두 가지의 문제를 동시에 해결함으로써 단일 책임 원칙을 위반한다.클래스에 인스턴스가 하나만 있도록 한다. 사람들은 클래스에 있는 인스턴스 수를 제어하려는 가장 일반적인 이유는 일부 공유 리소스(예: 데이터베이스 또는 파일)에 대한 접근을 제어하기 위함이다.예를 들어 객체를 생성했지만 잠시 후 새 객체를 생성하기로 했다고 가정해 봅시다. 그러면 새 객체를 생성하는 대신 이미 만든 객체를 받게 된다.해당 인스턴스에 대한 전역 접근 지점을 제공한다. 필수 객체들을 저장하기 위해 전역 변수들을 정의했다고 가정해 보자. 이 변수들을 사용하면 매우 편리할지는 몰라도, 모든 코드가 잠재적으로 해당 변수의 내용을 덮어쓸 수 있고 그로 인해 앱에 오류가 발생해 충돌할 수 있으므로 그리 안전.. 2024. 4. 30.
프로토타입(Prototype) 패턴 🤔문제객체가 있고 그 객체의 정확한 복사본을 만들고 싶다고 가정하면, 어떻게 해야 할까?먼저 같은 클래스의 새 객체를 생성해야 한다. 그런 다음 원본 객체의 모든 필드들을 살펴본 후 해당 값들을 새 객체에 복사해야 한다. 하지만 함정이 있다. 객체의 필드들 중 일부가 배공개여서 객체 자체의 외부에서 볼 수 없을 수 있으므로 모든 객체를 그런 식으로 복사하지 못한다. 이 직접적인 접근 방식에는 한 가지 문제가 더 있다. 객체의 복제본을 생성하려면 객체의 클래스를 알아야 하므로, 코드가 해당 클래스에 의존하게 된다는 것이다. 또, 예를 들어 메서드의 매개변수가 일부 인터페이스를 따르는 모든 객체를 수락할 때 당신은 그 객체가 따르는 인터페이스만 알고, 그 객체의 구상 클래스는 알지 못할 수 있다. 😎해결.. 2024. 4. 30.
단일 장애 지점(SPOF)에 대해서 단일 장애 지점(Single Point Of Fail, SPOF)이란?단일 장애 지점(SPOF)은 시스템이나 네트워크의 한 부분이 고장 났을 때 전체 시스템의 가동이 멈추는 상황을 말한다.이런 지점은 시스템의 취약점으로 작용하고, 이를 해결하지 않으면 예기치 못한 상황에서 전체 시스템이 마비될 수 있다. 데이터베이스 서버핵심 네트워크 스위치주요 애플리케이션 서버등이 하나만 존재할 때 발생한다. 이런 중요한 구성 요소가 장애를 일으키면 전체 서비스가 정지하는 위험이 있다. 백엔드 개발에서 단일 장애 지점(SPOF)은 주로 중요한 서버나 네트워크 장비와 같은 핵심 자원에서 발생한다.예를 들어, 모든 웹 트래픽을 단일 서버가 처리하는 경우나, 모든 데이터를 한 개의 데이터베이스 서버에서 저장하는 경우가 있다... 2024. 4. 29.
C# [백준 BAEKJOON] 1935번 후위 표기식2 문제후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오. 입력첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다) 그리고 셋째 줄부터 N+2번째 줄까지는 각 피연산자에 대응하는 값이 주어진다. 3번째 줄에는 A에 해당하는 값, 4번째 줄에는 B에 해당하는값 , 5번째 줄에는 C ...이 주어진다, 그리고 피연산자에 대응 하는 값은 100보다 작거나 같은 자연수이다.후위 표기식을 앞에서부터 계산했을 때, 식의 결과와 중간 결과가 -20억보다 크거나 같고, 20억보다 작거나 같은 입력만 .. 2024. 4. 26.
깃허브 코파일럿(GitHub Copliot) 무료로 사용해보기 Take flight with GitHub Copliot깃허브 코파일럿의 가격 및 포함 기능에 대해서 알아보자. 사이트 링크GitHub Copilot · Your AI pair programmer 💰가격Copilot Individual$10 USD per month (13,000원) / $100 USD per year  (130,000원)Copilot Business$19 USD per user / month (26,000원)Copliot Enterprise$39 USD per user / month (53,000원) ⚡주요 기능채팅(Chat)무제한 메세지와 상호작용문맥-기반 코딩 서포트와 설명디버깅과 보안 관련 지원코드 완성(Code completion)실시간 코드 제안코드 관련 코맨트스마트 액션(S.. 2024. 4. 25.
빌더(Builder) 패턴 🤔문제많은 필드와 중첩된 객체들을 힘들게 단계별로 초기화해야 하는 복잡한 객체를 상상해 보자. 이러한 초기화 코드는 일반적으로 많은 매개변수가 있는 괴물 같은 생성자 내부에 묻혀 있다. 또, 더 최악의 상황에는 클라이언트 코드 전체에 흩어져 있을 수도 있다.예를 들어 House(집) 객체를 만드는 방법에 대해 생각해 보자. 간단한 집을 지으려면 네 개의 벽과 바닥을 만든 후 문도 설치하고 한 쌍의 창문도 맞춘 후 지붕도 만들어야 한다. 하지만 뒤뜰과 기타 물품(난방 시스템, 배관 및 전기 배선 등)이 있는 더 크고 현대적인 집을 원하면 어떻게 해야 할까? 위 문제의 가장 간단한 해결책은 기초 House 클래스를 확장하고 매개변수의 모든 조합을 포함하는 자식 클래스들의 집합을 만드는 것이다. 그.. 2024. 4. 24.