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 관련 코딩은 잘 되어 있는가?
- 서버의 설정은 잘 되어 있는가?
- 모니터링은 어떻게 하고 있는가?
'책' 카테고리의 다른 글
[SpringBoot & AWS] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (4) | 2019.12.11 |
---|