검색 본문
newbie-in-softengineering.tistory.com ♡˖꒰ᵕ༚ᵕ⑅꒱ [CS] Ch.1 디자인 패턴과 프로그래밍 패러다임 : 옵저버 패턴, 프록시 패턴, 이터레이터 패턴, 노출모듈, MVC 패턴, MVP 패턴, MVVM 패턴 @Override public Object getUpdate(Observer obj) { return this.message; } public void postMessage(String msg) { System.out.println("Message sended to Topic: " + msg); this.message = msg; notifyObservers(); } } class TopicSubscriber implements Observer { private String name; private Subject topic... 2024.05.16 블로그 검색 더보기 luminousolding.tistory.com 밝게빛나는 솔딩 [디자인 패턴] 옵저버 패턴(Observer Pattern) - 자바 예제 장점 주체(Subject) 의 상태 변경을 주기적으로 조회하는 대신 자동으로 감지가 가능 주체(Subject)의 코드를 변경하지 않아도 관찰자(Observer) 클래스를 추가할 수 있어 개방 폐쇄 원칙(Open-Closed Principle) 을 준수한다. 런타임 시 이벤트(알림) 설정 가능 상태를 변경하는 주체와 변경을 감지하는 객체 사이의 느슨한 결합(인터페이스를 사용)을 통해 유연성을 확보할 수 있음 단점 관찰자는 알림 순서 제어가 불가능하고 알림은 무작위로 전달될 수 있음 ➡️ 순서를 제어하게 되면 복잡성, 결합성이 높아진다. 다른 알림을 처리 하기 전, 후에 알림을 먼저 받아야 하는데 그렇게 되면 옵저버들 사이에 순서와 의존성이 생기게 된다. 이는 옵저버가 독립적으로 작동하는 기본 원칙을 위반하게 되는 것이다. 옵저버 패턴의 사용이 많아지면 구조와 동작 파악이 어려워 코드의 복잡성 증가 메모리 누수 발생 위험 (옵저버 객체 해지를 안 했을 때) (예시, 매장에서는 새로운 제품이 출시될 때 마다 모든 고객에게 이메일을... Subject 주체자를 정의하는 인터페이스 구현 Observer 관리하기 위한 내부 리스트(List, Map, Set) - 합성하여 가짐 Observer를 등록하거나 삭제하기 위한 메서드(register , remove ) 제공 상태 변경이나 특정 동작이 발생할 때 모든 Observer 에게 알리는 notify 기능 Observer 관찰자를 정의하는 인터페이스 구현 Subject로 부터 알림을 받으면 상태 변경에 대해 반응 Subject의 상태 업데이트에 따른 처리로직 구현 사용자 인터페이스(UI) 요소가 어플리케이션의 상태 변화에 따라 업데이트되어야 하는 경우나, 여러 서비스가 특정 이벤트에 반응해야 할 때 유용하다. 예시 Subject 인터페이스 package observer; // 관찰자 , 대상자 public interface Subject { public void register(Observer obj); public void unregister(Observer obj); public void notifyObserver(); public Object getUpdate(Observer obj); } Topic 클래스 Topic 클래스를 통해 Subject 인터페이스를 구현 topic 이 주체이자 객체가 된다. package observer; import java.util.ArrayList; import java.util.List; public class Topic implements Subject { // 관찰자들을 등록하여 담는 리스트 private List<Observer> observers; private String message; public Topic() { this.observers = Observer 인터페이스 package observer; // 관찰자, 구독자 public interface Observer { public void update(); } TopicSubscriber 클래스 package observer; public class TopicSubscriber implements Observer { private String name; private Subject topic; public TopicSubscriber(String name, Subject topic) { this.name = name; this.topic = topic; } @Override public void update() { String ms HelloWorld 클래스 옵저버 선언 시 이름과 어떠한 토픽의 옵저버가 될 것인지 정함 package observer; public class HelloWorld { public static void main(String[] args) { // 발행자 등록 Topic topic = new Topic(); // 발행자를 구독할 관찰자 리스트로 등록 Observer a = new TopicSubscriber("a", topic); Observer b = new TopicSub 3 주체(Subject) 의 상태 변경을 주기적으로 조회하는 대신 자동으로 감지가 가능 주체(Subject)의 코드를 변경하지 않아도 관찰자(Observer) 클래스를 추가할 수 있어 개방 폐쇄 원칙(Open-Closed Principle) 을 준수한다. 런타임 시 이벤트(알림) 설정 가능 상태를 변경하는 주체와 변경을 감지하는 객체 사이의 느슨한 결합(인터페이스를 사용)을 통해 유연성을 확보할 수 있음 2024.04.16 oeun.tistory.com oeun Webflux 정리 및 활용 예시 Publisher public interface Publisher<T> { public void subscribe(Subscriber<? super T> s); } Subscriber package org.reactivestreams; public interface Subscriber<T> { void onSubscribe(Subscription s); void onNext(T t); void onError(Throwable t); void onComplete(); } onSubscribe: Publisher는 onSubscribe의 실행을 통해 Subscriber와 연동된 Subscription을 받는다. Subscription을 통해서 Subscriber는 Publisher와 직접 Subscription public interface Subscription { public void request(long n); public void cancel(); } Reactive streams 실행 흐름 1. Subsciber가 subscribe함수를 사용하여 Publisher에게 구독 요청 2. Publisher가 onSubscribe함수를 사용하여 Subscriber에게 Subscription 전달 3. Subscription의 request함수를 통해 데이터 요청 4. Puslisher는 Subscription을 통해 Subscriber의 onNext에 데이터 전달 5. 에러 발생시 onError에 시그널 전달 , 작업 완료 시 onComplete에 시그널 전달 Reactor Project Reactor는 JVM에서 비동기 2 public interface Publisher<T> { public void subscribe(Subscriber<? super T> s); } 2024.04.27 overcome-the-limits.tistory.com Plus Ultra [Project] 프로젝트 삽질기59 (feat transactional outbox) 6 not null, updated_at datetime default current_timestamp not null, deleted_at datetime, topic varchar(255) not null, payload varchar(255) not null, sended_at timestamp with timezone ); 즉 Outbox 테이블을 생성하여 서비스 로직과 함께 보낼 메시지 정보가 트랜잭션 내에서 원자성을 보장받기 때문에 모두... Decorator nodejs Transactional nestjs typeorm typeorm-transactional transactional outbox outbox 패턴 2024.05.06 jy05un.tistory.com Yozzang의 해킹일기 💻 Pov (Hack The Box Season 4 CTF) 24 a base64 encoded reverseshell. Making base64 encoded reverse shell Making Exploit code with ysoserial And i putted it in the __VIEWSTATE parameter and sended this request. I could get a reverse connection. But the user flag is in the alaading’s Desktop, and i got the sfitz’s shell. I found some... CTF 모의해킹 HackTheBox pentesing 2024.01.29 jngsng.tistory.com 기록노트 주식 공시정보 알림 디스코드 봇 만들기 - (1) get_channel(CHANNEL_ID) # 10초 간격 스크래핑 내용이 다르면 채널에 내용 전송 if firstNews != secondNews: await channel.send(secondNews) print('News Sended - ' + datetime.now().strftime('%Y-%m-%d %H:%M:%S')) # 변경 내용이 없으면 내용 전송하지 않음 else: print('Not Changed - ' + datetime.now... 주식 공시 python 봇 알림 파이썬 BOT 디스코드 discord 2024.04.10 통합웹 더보기
서비스 안내 스토리의 글을 대상으로 검색결과를 제공합니다. 자세히보기 story.kakao.com JCRAH JCRAH - 카카오스토리 8bb262d51770570b2a69dbcff5e3c8e4f6a9b9f2f8cb5b56205574fa9f976214 I sended a lot of money to them. bc1qy5e7sjya073jy0tcytjhkacyruxjmzgqrgjx86. 0.031btc. bc1qcud32mxdepwscq07mqtm4czjjwqfxc6azvjvkv... 2023.04.20 카카오스토리 검색 더보기
Sended - Single File Content Delivery Netowrk sended.com/ 웹수집
서비스 안내 Melon Company가 운영하는 음악 서비스입니다. 다른 사이트 더보기 The Obvious I Ed Dowie 2021.03.26. Guess Who This Is Ed's Redeeming Qualities 2011.01.22. This is the Moment Ed Gagne 1999.09.14.