Table of Contents
Table of Contents
story 01. 디자인 패턴, 꼭 써야 한다. 적어도 MVC 모델은 적용해야죠 J2EE 디자인 패턴이란? Transfer Object 패턴 Service Locator 패턴 story 02. 내가 만든 프로그램의 속도를 알고 싶다. 프로파일링 툴이란? System 클래스 System.currentTimeMillis와System.nanoTime story03. 왜 자꾸 String을 쓰지 말라는 거야? String 클래스를 잘못 사용한 사례 StringBuffer 클래스와 StringBuilder 클래스 String vs StringBuffer vs StringBuilder 버전에 따른 차이 story04. 어디에 담아야 하는지… Collection 및Map 인터페이스의 이해 Set 클래스 중 무엇이 가장 빠를까? List 관련 클래스 중 무엇이 빠를까? Map 관련 클래스 중에서 무엇이 빠를까? Collection 관련 클래스의 동기화 story05. 지금까지 사용하던 for 루프를 더 빠르게 할 수 있다고? 조건문에서의 속도는? 반복 구문에서의 속도는? 반복 구문에서의 필요 없는 반복 story06. static 제대로 한번 써 보자. static의 특징 static 잘 활용하기 static 잘못 쓰면 이렇게 된다. static과 메모리 릭 story07. 클래스 정보, 어떻게 알아낼 수 있나? reflection 관련 클래스들 reflection 관련 클래스를 사용한 예 reflection 클래스를 잘못 사용한 사례 story08. synchronized는 제대로 알고 써야 한다. 자바에서 스레드는 어떻게 사용하나? interrupt() 메서드는 절대적인 것이 아니다. synchronized를 이해하자. 동기화는 이렇게 사용한다 - 동일 객체 접근 시 동기화는 이렇게 사용한다 - static 사용 시 동기화를 위해서 자바에서 제공하는 것들 JVM 내에서 synchronization은 어떻게 동작할까? story09. IO에서 발생하는 병목 현상 기본적인 IO는 이렇게 처리한다. IO에서 병목이 발생한 사례 그럼 NIO의 원리는 어떻게 되는 거지? DirectByteBuffer를 잘못 사용하여 문제가 발생한 사례 lastModified() 메서드의 성능 저하 story10. 로그는 반드시 필요한 내용만 찍자. System.out.println()의 문제점 System.out.format() 메서드 로그를 더 간결하게 처리하는 방법 로거 사용시의 문제점 로그를 깔끔하게 처리하게 도와주는 slf4j와 LogBack 예외 처리는 이렇게 story11. JSP와 서블릿, Spring에서 발생할 수 있는 여러 문제점 JSP와Servlet의 기본적인 동작 원리는 꼭 알아야 한다. 적절한 include 사용하기 자바 빈즈, 잘 쓰면 약 못쓰면 독 태그 라이브러리도 잘 써야 한다. 스프링 프레임워크의 간단 정리 스프링 프레임워크를 사용하면서 발생할 수 있는 문제점들 story12. DB를 사용하면서 발생 가능한 문제점들 DB Connection과Connection Pool, DataSource DB를 사용할 때 닫아야 하는 것들 JDK 7에서 등장한 AutoClosable 인터페이스 ResultSet.last() 메소드 JDBC를 사용하면서 유의할 만한 몇 가지 팁 story13. XML과JSON도 잘 쓰자. 자바에서 사용하는 XML 파서의 종류는? SAX 파서는 어떻게 사용할까? DOM 파서는 어떻게 사용할까? XML 파서가 문제가 된 사례 JSON과 파서들 데이터 전송을 빠르게 하는 라이브러리 소개 story14. 서버를 어떻게 세팅해야 할까? 설정해야 하는 대상 아파치 웹 서버의 설정 웹 서버의 Keep Alive DB Connection Pool 및 스레드 개수 설정 WAS 인스턴스 개수 설정 Session Timeout 시간 설정 story15. 안드로이드 개발하면서 이것만은 피하자. 일반적인 서버 프로그램 개발과 안드로이드 개발은 다르다. 구글에서 이야기하는 안드로이드 성능 개선 안드로이드 분석에 도움이 되는 기본적인 툴들 안드로이드 앱의 상황을 확인 하는 방법은? systrace를 활용하자. 안드로이드에서는 이미지 처리만 잘해도 성능이 좋아진다. story16. JVM은 도대체 어떻게 구동될까? HotSpot VM은 어떻게 구성되어 있을까? JIT Optimizer라는 게 도대체 뭘까? JRockit의JIT 컴파일 및 최적화 절차 IBM JVM의JIT 컴파일 및 최적화 절차 JVM이 시작할 때의 절차는 이렇다. JVM이 종료될 때의 절차는 이렇다. 클래스 로딩 절차도 알고 싶어요? 예외는 JVM에서 어떻게 처리될까? story17. 도대체 GC는 언제 발생할까? GC란? 자바의 Runtime data area는 이렇게 구성된다. GC의 원리 GC의 종류 5가지 GC 방식 강제로 GC 시키기 story18. GC가 어떻게 수행되고 있는지 보고 싶다. 자바 인스턴스 확인을 위한 jps GC 상황을 확인하는 jstat jstat 명령에서 GC 튜닝을 위해서 가장 유용한 옵션은 두 개 원격으로 JVM 상황을 모니터링하기 위한 jstatd