본문 바로가기

분류 전체보기158

옵저버 패턴(Observer Pattern) 옵저버 패턴은 객체 간에 데이터나 상태의 변화를 관찰하고 한 객체의 변화를 다른 객체에게 알려줄 때 사용되는 패턴입니다. 주제를 나타내는 Subject 인터페이스와 관찰자인 Observer 인터페이스를 구현해볼까요? public interface Subject { void registerObserver(); //옵저버 등록 void removeObserver(); //옵저버 제거 void notifyObservers(); //옵저버에게 알림 } public interface Observer { void update(); } 구현체도 구현해볼까요? public class ConcreteSubject implements Subject{ private List observers; private int data.. 2023. 9. 7.
전략 패턴(Strategy Pattern) 전략 패턴은 특정한 작업 또는 알고리즘을 독립적으로 정의하고 이를 캡슐화하여 교환 가능하게 만드는 패턴입니다. 오리 클래스를 설계한다고 해봅시다. 오리에게 날 수 있는 기능과 울음소리를 내는 기능을 구현하려면 어떻게 해야 할까요? 나는 행동, 우는 행동에 대한 인터페이스를 정의하고 오리 클래스가 인터페이스를 가지고 있으면 됩니다. public interface FlyBehavior { void fly(); } public interface QuackBehavior { void quack(); } public abstract class Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior; ... } 그리고 인터페이스에 대한 구현체 클래스를 정의해줍니다.. 2023. 9. 6.
Java - JSON 파싱 JSON 형식으로 쓰여진 String을 Java 객체로 변환하려면 어떻게 해야 할까? JSON 라이브러리를 사용하면 된다. Java에는 대표적으로 Jackson, Gson 등의 JSON 라이브러리들이 있다. 의존성 추가 dependencies { // 다른 의존성들 implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.5' // 적절한 버전 사용 } 구현 import com.fasterxml.jackson.databind.ObjectMapper; public record JsonToJava() { private static final ObjectMapper MAPPER = new ObjectMapper(); public static JsonT.. 2023. 8. 3.
Redis란? 우아한 레디스 영상과 구글링을 참조해서 작성된 문서입니다. (https://youtu.be/mPB2CZiAkKM) Redis in-memory 자료구조다.오픈소스인만큼 수정해서 사용해도 상관없다.레디스가 서포팅하는 자료구조String, set, sorted-set, hashes, listHyperloglog, bitmap, geospatial indexStreamRedis의 자료구조는 Atomic하기때문에 Race Condition을 피할 수 있다.그래도 잘못짜면 발생 왜 Collection이 중요한가? Redis 사용처Remote Data StoreA, B, C 서버에서 데이터를 공유하고 싶을때한 대 에서만 필요하다면 전역 변수를 쓰면 되지 않을까?Redis가 아토믹 보장주로 많이 쓰는 곳들인증 토큰 .. 2023. 3. 17.
기본 단축키 기능 단축키 삭제 cmd + backspace 잘라내서 붙여넣기 cmd + alt + v 창닫기 cmd + w 앱닫기 cmd + q 캡처 cmd + shift + 4 붙여넣기용 캡처 cmd + control + shift + 4 미리보기 (+ 닫기) space 이모지 [control + command + space] or [fn] 강제 종료 cmd + option + esc 한/영키 capsLock (꾹) 2023. 1. 11.
Gradle이란? Gradle이란? 2012년에 출시된 Groovy를 기반으로 한 오픈소스 빌드 도구로, 거의 모든 타입의 소프트웨어를 빌드할 수 있는 빌드 자동화 시스템이다. 빌드: 소스 코드를 컴파일, 테스트, 정적 분석 등을 실행하여 실행 가능한 애플리케이션으로 만들어 주는 과정이다. 소스 코드 -> 실행 가능한 파일 라이브러리가 많아지면서 생긴 문제점 1. 라이브러리 다운, 추가 어려움 2. 개발자들 간의 버전 관리 어려움 3. 다운받은 jar 파일의 보안 위험 빌드 도구 - 계속해서 늘어나는 라이브러리를 자동 추가 및 관리 - 프로젝트를 진행하며 라이브러리의 버전을 쉽게 동기화 Groovy - JVM 상에서 실행되는 스크립트 언어 - Java와 유사한 문법 구조를 가지며, 호환성이 아주 좋다. 장점 프로젝트를 설.. 2022. 11. 3.