[Spring] Request 스코프 활용해 HTTP 요청마다 로그 남기기
·
JAVA
@Component@Scope(value = "request")public class MyLogger { private String uuid; private String requestUrl; public void setRequestURL(String requestURL) { this.requestURL = requestURL; } public void log(String message) { System.out.println("[" + uuid + "]" + requestURL + "----" + message); } @PostConstruct public void init() { uuid = U..
[Spring] 전략 패턴 구현, 스프링 빈 모두 불러오기 활용
·
JAVA
static class DiscountService { private final Map policyMap; private final List policies; public DiscountService(Map policyMap, List policies){ this.policyMap = policyMap; this.policies = policies; } public int discount(Member member, int price, String discountCode) { DiscountPolicy discountPolicy = policyMap.get(discountCode); return discountPolicy.disco..
중첩 내부 클래스
·
JAVA
public class Network { public void sendMessage(String text) { // 여기서 new NetworkMessage(text) 함 NetworkMessage networkMessage = new NetworkMessage(text); networkMessage.print(); } // 중첩 클래스를 static으로 선언함 private static class NetworkMessage { private String content; public NetworkMessage(String content) { this.content = content; } ..
중첩클래스 활용
·
JAVA
public class Network { public void sendMessage(String text) { // 여기서 new NetworkMessage(text) 함 NetworkMessage networkMessage = new NetworkMessage(text); networkMessage.print(); } // 중첩 클래스를 static으로 선언함 private static class NetworkMessage { private String content; public NetworkMessage(String content) { this.content = content; } ..
날짜와 시간
·
JAVA
1. 날짜의 경우 윤년 ,각 달의 일수 등을 고려해야함 2. 일광 절약 시간 변환(DST) 예시 특정 지역에서는 3월의 마지막 일요일에 DST가 시작되어 10월의 마지막 일요일에 종료된다. 이 기간 동안 발생하는 모든 날짜와 시간 계산은 1시간을 추가하거나 빼는 로직을 포함해야 함. 3. 타임존 계산세계가 다양한 타임존으로 나뉘어 있다. 타임존 간의 날짜와 시간변환을 정확히 계산하는 것은 복잡하다. 서울의 타임존 Asia/Seoult, UTC +9 . 베를린 타임존 UTC + 1둘 차이는 8시간이다. 근데 만약 베를린에서 DST가 적용되면 타임존 차이는 7시간으로 줄어듬. 자바 날짜와 시간 라이브러리 역사 JDK 1.0 (java.utilDate)문제점타임존 처리 부족 : 초기 Date 클래스는 타임존(..
정렬
·
코딩테스트
문제에서 int[] 이렇게 주어진 경우에서만약 순서대로 정렬하는 경우에는 매우 간단하게 처리할 수 있음.public static int[] sort(int[] arrays){ return Arrays.sort(arrays);} 하지만 역방향으로 정렬해야하는 경우에는 public static int[] reverseSort(int[] arrays){ Integer[] result = Arrays.stream(arrays) .boxed() -> primitive type, Integer로 wrapper된 상태 .distinct()-> 중복값 제거 .toArray(Integer[]:..
디자인 패턴
·
CS
디자인 패턴은 모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미한다. 생성 패턴(Creation Pattern): 클래스나 객체의 생성과 참조 과정을 정의하는 패턴이다. 추상 팩토리(Abstract Factory)더보기 빌더(Builder)더보기 팩토리 메소드 (Factory Method)더보기 프로토타입(Prototype)더보기 싱글톤(Singleton)더보기 구조 패턴(Structural Pattern)어댑터(Adapter)더보기 브리지(Bridge)더보기 컴포지트(Composite)더보기 데코레이터(Decorater)더보기 퍼싸드(Facade)더보기 플라이웨이트(Flyweight)더보기 프록시(Proxy)더보기 행위 패턴(Behavioral Patte..
객체의 응집도 정리
·
CS
우연적 응집정의 :모듈 내의 구성 요소들이 아무런 관련 없이 단순히 하나의 모듈에 모여 있는 경우입니다. 각 기능들 사이에논리적, 기능적 연관성이 전혀 없으며, 단지 우연히 함께 모여 있을 뿐이다.특징:가장 낮은 응집도 단계예시 :하나의 유틸리티 클래스에 파일 입출력, 숫자 계산, 문자열 포맷팅 등 서로 관련 없는 기능을 모두 넣은 경우public class Miscellaneous { public void calculateSum(int a, int b) { System.out.println("Sum: " + (a + b)); } public void printMessage(String message) { System.out.println("Message:..