static이거 정처기 문제에 대표적으로 나오는 내용public static int value = 0a = new StaticEx();a.value++;b = new StaticEx();b.value++;c = new StaticEx();c.value++;print(a, b, c) // 3, 3, 3// 서로 다른 객체를 생성했지만 최종적으로 static 값은 3이므로 static 초기화 블록static { staticVal = "Value"; staticVal = StaticEx.staticInt;} 자주 사용하고 절대 변하지 않는 변수는 final static으로 선언하자설정 파일 정보도 static으로 관리하자코드성 데이터는 DB에서 한 번만 읽자 Static 주의해야 하는 상황publi..
전체 글
Stringfinal String aValue = "abcde"for(int i = 0; i 위와 같이 테스트를 진행할 때 아래와 같이 시간이 소요가 됩니다.a95초b0.24초c0.17초 Stringabcdeabcde abcdeabcdeabcde 위와 같이 새로운 객체가 계속 생성되면서 이전 객체를 쓰레기로 만듭니다.많은 GC를 하게 하여 시간이 많이 소요됩니다. StringBuffer, StringBuilderabcdeabcdeabcde위와 같이 새로운 객체를 생성하지 않고 기존에 있는 객체의 크기를 증가시키면서 값을 더하기 때문에 시간이 조금 소요됩니다. Charsequence인터페이스구현 객체로 CharBuffer, String, StringBuffer, StringBuilder가 있음Stri..
프로파일링 툴 / APM 툴 프로파일링 툴소스 레벨의 분석을 위함애플리케이션의 세부 응답 시간까지 분석 가능메모리 사용량을 객체나 클래스, 소스의 라인 단위까지 분석 가능가격이 APM 툴에 비해 저렴보통 사용자수 기반으로 가격이 정해짐자바 기반의 클라이언트 프로그램 분석을 할 수 있음 응답시간 프로파일링 기능하나의 클래스 내에서 사용되는 메서드 단위의 응답 시간 측정메모리 프로파일링잠깐 사용하고 GC의 대상이 되는 부분을 찾거나 메모리 부족 현상이 발생하는 부분을 찾기 위함 APM 툴애플리케이션의 장애 상황에 대한 모니터링 및 문제점 진단이 주 목적서버의 사용자 수나 리소스에 대한 모니터링이 가능실시간 모니터링을 위한 툴가격이 프로파일링 툴에 비해 비쌈보통 CPU 수를 기반으로 가격이 정해짐자바 기반의..
각 패턴들에 대한 내용 / 핵심은 아래에서더보기Intercepting Filter요청 타입에 따라 다른 처리를 하기 위한 패턴 Front Controller요청 전후에 처리하기 위한 컨트롤러를 지정하는 패턴 View Helper프레젠테이션 로직과 상관 없는 비즈니스 로직을 헬퍼로 지정하는 패턴 Composite View최소 단위의 하위 컴포넌트를 분리하여 화면을 구성하는 패턴 Service to WorkerFront Controller와 View Helper 사이에 디스패처를 두어 조합하는 패턴 Dispatcher ViewFront Controller와 View Helper로 디스패처 컴포넌트를 형성한다. 뷰 처리가 종료될 때까지 다른 활동을 지연한다는 점이 Service to Worker 패턴과 다르다..
의존 관계public interface DiscountPolicy { int discount(Member member, int price);}public class FixDiscountPolicy implements DiscountPolicy { private int discountFixAmount = 1000; @Override int discount(Member member, int price) { if (member.getGrade() == Grade.VIP) { return discountFixAmount; } else { return 0; } }}public class RateDiscountPolicy implements ..
Controller 동작 관련@Controllerclass ~ { @GetMapping("test") public String ~ (@RequestParam("a") String a, Model model) { model.addAttribute("a", a); return "test_view"; }}// Controller로 등록하고// @GetMapping 안에 적어준 경로가 요청되면// ?a=test 이런식으로 @RequestParam에 들어갈 내용을 받아주고// model에 a라는 이름으로 받아온 값을 저장해서// test_view로 던져주면// test_view에서는 던져준 a를 view에 원하는 곳에 활용@Controller@ResponseBody // 얘 추가됌c..