Step 01. 디자인 패턴, 꼭 써야 한다.

 - J2EE 패턴

 - Transfer Object 패턴

 - Service Locator 패턴

 

Step 02. 내가 만든 프로그램의 속도를 알고 싶다.

 - 프로파일링 툴이란?

 - System 클래스

 - System.currentTimeMillis와 System.nanoTime

 

Step 03. 왜 자꾸 String을 쓰지 말라는거야?

 - String 클래스를 잘못 사용한 사례

 - StringBuffer 클래스와 StringBuilder 클래스

 - String vs StringBuffer vs StringBuilder

 - 버전에 따른 차이

 

Step 04. 어디에 담아야 하는지...

 - Collection 및 Map 인터페이스의 이해

 - Set 클래스 중 무엇이 가장 빠를까?

 - List 관련 클래스 중 무엇이 빠를까?

 - Map 관련 클래스 중에서 무엇이 빠를까?

 - Collection 관련 글래스의 동기화

 

Step 05. 지금까지 사용하던 for 루프를 더 빠르게 할 수 있다고?

 - 조건문에서의 속도는?

 - 반복 구문에서의 속도는?

 - 반복 구문에서의 필요없는 반복

 

Step 06. static 제대로 한번 써 보자

 - static의 특징

 - static 잘 활용하기

 - static 잘못 쓰면 이렇게 된다.

 - static과 메모리 릭

 

Step 07. 클래스 정보, 어떻게 알아낼 수 있나?

 - reflection 관련 클래스들

 - reflection 관련 클래스를 사용한 예

 - reflection 클래스를 잘못 사용한 사례

 

Step 08. synchronized는 제대로 알고 써야 한다

 - 자바에서 스레드는 어떻게 사용하나?

 - interrupt() 메서드는 절대적인 것이 아니다.

 - synchronized를 이해하자

 - 동기화는 이렇게 사용한다 - 동일 객체 접근 시

 - 동기화는 이렇게 사용한다 - static 사용 시

 - 동기화를 위해서 자바에서 제공하는 것들

 - JVM 내에서 synchronization은 어떻게 동작할까?

 

Step 09. IO에서 발생하는 병목 현상

 - 기본적인 IO는 이렇게 처리한다.

 - IO에서 병목이 발생한 사례

 - 그럼 NIO의 원리는 어떻게 되는 거지?

 - DirectByteBuffer를 잘못 사용하여 문제가 발생한 사례

 - lastModified() 메서드의 성능 저하

 

Step 10. 로그는 반드시 필요한 내용만 찍자

 - System.out.println()의 문제점

 - System.out.format() 메서드

 - 로그를 더 간결하게 처리하는 방법

 - 로거 사용 시의 문제점

 - 로그를 깔끔하게 처리하게 도와주는 slf4j와 LogBack

 - 예외 처리도 이렇게

 

Step 11. JSP와 서블릿, Spring에서 발생할 수 있는 여러 문제점

 - JSP와 Servlet의 기본적인 동작 원리는 꼭 알아야 한다.

 - 적절한 include 사용하기

 - 자바 빈즈, 잘 쓰면 약 못쓰면 독

 - 태그 라이브러리도 잘 써야 한다.

 - 스프링 프레임워크 간단 정리

 - 스프링 프레임워크를 사용하면서 발생할 수 있는 문제점들

 

Step 12. DB를 사용하면서 발생 가능한 문제점들

 - DB Connection과 Connection Pool, DataSource

 - DB를 사용할 때 닫아야 하는 것들

 - JDK 7에서 등장한 AutoClosable 인터페이스

 - ResultSet.last() 메서드

 - JDBC를 사용하면서 유의할 만한 몇 가지 팁

 

Step 13. XML과 JSON도 잘 쓰자

 - 자바에서 사용하는 XML 파서의 종류는?

 - SAX 파서는 어떻게 사용할까?

 - DOM 파서는 어떻게 사용할까?

 - XML 파서가 문제가 된 사례

 - JSON과 파서들

 - 데이터 전송을 빠르게 하는 라이브러리 소개

 

Step 14. 서버를 어떻게 세팅해야 할까?

 - 설정해야 하는 대상

 - 아파치 웹 서버의 설정

 - 웹 서버의 Keep Alive

 - DB Connection Poll 및 스레드 개수 설정

 - WAS 인스턴스 개수 설정

 - Session Timeout 시간 설정

 

Step 15. 안드로이드 개발하면서 이것만은 피하자

 - 일반적인 서버 프로그램 개발과 안드로이드 개발은 다르다.

 - 구글에서 이야기하는 안드로이드 성능 개선

 - 안드로이드 분석에 도움이 되는 기본적인 툴들

 - 안드로이드 앱의 상황을 확인하는 방법은?

 - systrace를 활용하자

 - 안드로이드에서는 이미지 처리만 잘해도 성능이 좋아진다.

 

Step 16. JVM은 도대체 어떻게 구동될까?

 - HotSpot VM은 어떻게 구성되어 있을까?

 - JIT Optimizer라는 게 도대체 뭘까?

 - JRockit의 JIT 컴파일 및 최적화 절차

 - IBM JVM의 JIT 컴파일 및 최적화 절차

 - JVM이 시작할 때의 절차는 이렇다

 - JVM이 종료될 때의 절차는 이렇다

 - 클래스 로딩 절차도 알고 싶어요?

 - 예외는 JVM에서 어떻게 처리될까?

 

Step 17. 도대체 GC는 언제 발생할까?

 - GC란?

 - 자바의 Runtime data area는 이렇게 구성된다

 - GC의 원리

 - GC의 종류

 - 5가지 GC 방식

 - 강제로 GC 시키기

 

Step 18. GC가 어떻게 수행되고 있는지 보고 싶다.

 - 자바 인스턴스 확인을 위한 jps

 - GC 상황을 확인하는 jstat

 - jstat 명령에서 GC 튜닝을 위해서 가장 유용한 옵션은 두 개

 - 원격으로 JVM 상황을 모니터링하기 위한 jstatd

 - verbosegc 옵션을 이용하여 gc 로그 남기기

 - 어설프게 아는 것이 제일 무섭다

 

Step 19. GC 튜닝을 항상 할 필요는 없다.

 - GC 튜닝을 꼭 해야 할까?

 - GC의 성능을 결정하는 옵션들

 - GC 튜닝의 절차

 - 1, 2 단계: GC 상황 모니터링 및 결과 분석하기

 - 3-1 단계: GC 방식 지정

 - 3-2 단계: 메모리 크기

 - 4 단계: GC튜닝 결과 분석

 

Step 20. 모니터링 API인 JMX

 - JMX란?

 - MBean에 대해서 조금만 더 자세히 알아보자

 - Visual VM을 통한 JMX 모니터링

 - 원격으로 JMX를 사용하기 위해서는...

 

Step 21. 반드시 튜닝해야 하는 대상은?

 - 반드시 튜닝해야 하는 대상 선정

 - 왜 로그인 화면을 튜닝(분석)해야 하는가?

 - 쇼핑몰 사이트에서는...

 

Step 22. 어떤 화면이 많이 쓰이는지 알고 싶다

 - 웹 로그란?

 - 웹 로그를 통해서 접근 통계를 분석하기 싫다면?

 

Step 23. 튜닝의 절차는 그때그때 달라요

 - 성능 튜닝을 위한 아주 기초 법칙

 - 성능 튜닝 Step By Step

 - 성능 튜닝의 비법

 

Step 24. 애플리케이션에서 점검해야 할 대상들

 - 패턴과 아키텍처는 잘 구성되어 있는가?

 - 기본적인 애플리케이션 코딩은 잘 되어 있는가?

 - 웹 관련 코딩은 잘 되어 있는가?

 - DB 관련 코딩은 잘 되어 있는가?

 - 서버의 설정은 잘 되어 있는가?

 - 모니터링은 어떻게 하고 있는가?

 

 

 

+ Recent posts