목차

부록 CD 가이드 

01. 디자인 패턴 꼭 써야 한다 
나초보씨 소개 
들어가며 
적어도 MVC 모델은 적용해야죠 
J2EE 디자인 패턴이란? 
J2EE 디자인 패턴에 대해서 간단히 알아보자 
Transfer Object 패턴 
Service Locator 패턴 
정리하며 

02. 도대체 GC는 언제 발생할까? 
들어가며 
GC란? 
GC의 원리 
GC의 종류 
4가지 GC 방식 
강제로 GC 시키기 
정리하며 

03. 내가 만든 프로그램의 속도를 알고 싶다 
들어가며 
프로파일링 툴(프로파일러)이란? 
System 클래스 
System.currentTimeMillis와 System.nanoTime 
StopWatch 클래스 만들기 
정리하며 

04. 왜 자꾸 String을 쓰지 말라는 거야? 
들어가며 
String 클래스를 잘못 사용한 사례 
StringBuffer 클래스와 StringBuilder 클래스 
String vs StringBuffer vs StringBuilder 
버전에 따른 차이 
정리하며 

05. 어디에 담아야 하는지… 
들어가며 
Collection 및 Map 인터페이스의 이해 
Set 관련 클래스 중 무엇이 빠를까? 
List 관련 클래스 중 무엇이 빠를까? 
Map 관련 클래스 중에서 무엇이 빠를까? 
Collection 관련 클래스의 동기화 
정리하며 

06. 지금까지 사용하던 for 루프를 더 빠르게 할 수 있다고? 
들어가며 
조건문에서의 속도는? 
반복 구문에서의 속도는? 
사례를 통해서 본 반복 구문의 속도 향상 
정리하며 

07. static 제대로 한번 써보자 
들어가며 
static의 특징 
static 잘 활용하기 
static 잘못 쓰면 이렇게 된다 
static과 메모리 릭 
정리하며 

08. 클래스 정보 어떻게 알아낼 수 있나? 
들어가며 
reflection 관련 클래스들 
reflection 관련 클래스를 사용한 예 
reflection 클래스를 잘못 사용한 사례 
정리하며 

09. synchronized는 제대로 알고 써야한다 
들어가며 
자바에서 스레드는 어떻게 사용하나? 
synchronized를 이해하자 
동기화는 이렇게 사용한다 1 
동기화는 이렇게 사용한다 2 
동기화를 위해서 자바에서 제공하는 것들 
정리하며 

10. IO에서 발생하는 병목 현상 
들어가며 
기본적인 IO는 이렇게 처리한다 
IO에서 병목이 발생한 사례 
그럼 NIO의 원리는 어떻게 되는 거지? 
NIO로 복사 작업을 더욱 빠르게 
정리하며 

11. 로그는 반드시 필요한 내용만 찍자 
들어가며 
System.out.println의 문제점 
System.out.format 메소드 
시스템 로그를 보다 간결하게 처리하는 방법 
Logger 사용법 
Logger 사용 시의 문제점 
예외 처리도 이렇게 
정리하며 

12. JSP와 서블릿에서 발생할 수 있는 여러 문제점 
들어가며 
적절한 인클루드 사용하기 
자바 빈즈, 잘 쓰면 약 못 쓰면 독 
태그 라이브러리도 잘 써야 한다 
정리하며 

13. DB를 사용하면서 발생할 수 있는 문제점 
들어가며 
DB Connection과 Connection Pool, DataSource 
DB 쓸 때 닫아야 하는 것들 
ResultSet.last() 메소드 
JDBC를 사용하면서 유의할 만한 몇 가지 팁 
정리하며 

14. XML도 잘 쓰자 
들어가며 
Java에서 사용하는 XML 파서의 종류는? 
SAX 파서는 어떻게 사용할까? 
DOM 파서는 어떻게 사용할까? 
각 파서를 비교해 보자 
XML 파서가 문제된 사례 
정리하며 

15. GC가 어떻게 수행되고 있는지 보고 싶다 
들어가며 
jvmstat란? 
자바 인스턴스 확인을 위한 jps 
GC 로그를 남길 수 있는 jstat 
jvmstat를 원격으로 볼 수 있게 하는 jstatd 
visual하게 GC를 볼 수 있는 visualgc 
verbosegc 옵션을 이용한 GC 들여다 보기 
정리하며 

16. 서버를 어떻게 세팅해야 할까? 
들어가며 
세팅해야 하는 대상 
아파치 웹 서버 세팅 
DB Connection Pool 및 스레드 개수 설정 
WAS 인스턴스 개수 설정 
Session Timeout 시간 설정 
GC 값 세팅 및 메모리 설정 방법 
정리하며 

17. 반드시 튜닝 및 점검해야 하는 대상은? 
들어가며 
반드시 튜닝해야 하는 대상 선정 
왜 로그인 화면을 튜닝(분석)해야 하는가? 
황당한 사고 사례 
정리하며 

18. 모니터링 API인 JMX 
들어가며 
JMX란? 
MBean에 대해서 조금만 더 자세히 알아보자 
JConsole을 이용한 WAS 모니터링 방법 
원격으로 JConsole을 사용하기 위해서는? 
정리하며 

19. 어떤 화면이 많이 쓰이는지 알고 싶다 
들어가며 
웹 로그란? 
무료 웹 로그 분석 툴에는 어떤 것이 있나? 
AWStats를 사용하여 웹 로그 분석하기 
정리하며 

20. 원인을 너무나 찾기 어려웠던 사이트 
들어가며 
문제점을 먼저 확인해야 한다 
근본적인 원인을 찾아서 
원인은 다른 곳에 있었다 
정리하며 

21. 자바 기반의 배치 프로그램을 튜닝했던 사례 
들어가며 
프로젝트의 상황 
이럴 때에는 이렇게 접근해야 한다 
이렇게 튜닝했다 
정리하며 

22. 잘 되어 있는 시스템도 튜닝 대상은 있다 
들어가며 
문제되는 시스템의 상황 
공통 클래스는 이렇게 튜닝했다 
세부 기능들은 이렇게 튜닝했다 
사용자가 순간적으로 몰리는 시점에는… 
정리하며 

23. 복합적인 문제가 발생한 프로젝트 
들어가며 
트랜잭션이 사라진단다 
스레드를 지속적으로 추가하면 어떻게 될까? 
웹 서버가 계속 죽어요 
WAS에서 사용자 수를 통제하자 
사례 부분을 정리하며 

24. 애플리케이션에서 점검해야 할 대상들 
들어가며 
패턴과 아키텍처는 잘 구성되어 있는가? 
기본적인 애플리케이션 코딩은 잘 되어 있는가? 
웹 관련 코딩은 잘 되어 있는가? 
DB 관련 코딩은 잘 되어 있는가? 
서버의 설정은 잘 되어 있는가? 
모니터링은 어떻게 하고 있는가? 

부록 

01. StopWatchAverage 클래스 소스 
02. jstat 옵션 
03. NetBeans IDE Profiler 사용하기 
04. Visual GC 화면 설명 
05. GC Analyzer 사용법

 

 

 

목차

Chapter 01 객체지향 개요 
Section 01 소프트웨어 개발 패러다임의 변화 
Section 02 객체지향 모델링 
Section 03 객체지향 언어 
요약 
연습문제 

Chapter 02 클래스 
Section 01 클래스의 개념과 특성 
Section 02 UML에서의 클래스 모델링 
Section 03 자바 클래스 구현 
참고 
요약 
연습문제 
실전문제 

Chapter 03 객체 
Section 01 객체의 개념과 특성 
Section 02 UML에서의 객체 모델링 
Section 03 자바 객체 구현 
참고 
요약 
연습문제 
실전문제 

Chapter 04 캡슐화 
Section 01 캡슐화의 개념과 특성 
Section 02 UML에서의 캡슐화 
Section 03 자바에서의 캡슐화 
참고 
요약 
연습문제 
실전문제 

Chapter 05 정보은닉 
Section 01 정보은닉의 개념과 특성 
Section 02 UML에서의 정보은닉 
Section 03 자바에서의 정보은닉 
참고 
요약 
연습문제 
실전문제 

Chapter 06 메세지 
Section 01 메세지의 개념과 특성 
Section 02 UML에서의 메세지 
Section 03 자바에서의 메세지 
참고 
요약 
연습문제 
실전문제 

Chapter 07 복합객체 
Section 01 복합객체의 개념과 특성 
Section 02 UML에서의 복합객체 
Section 03 자바에서의 복합객체 
참고 
요약 
연습문제 
실전문제 

Chapter 08 상속 
Section 01 상속의 개념과 특성 
Section 02 UML에서의 상속 
Section 03 자바에서의 상속 
참고 
요약 
연습문제 
실전문제 

Chapter 09 추상 클래스 
Section 01 추상 클래스의 개념과 특성 
Section 02 UML에서의 추상 클래스 
Section 03 자바에서의 추상 클래스 
참고 
요약 
연습문제 
실전문제 

Chapter 10 인터페이스 
Section 01 인터페이스의 개념과 특성 
Section 02 UML에서의 인터페이스 
Section 03 자바에서의 인터페이스 
참고 
요약 
연습문제 
실전문제 

Chapter 11 다형성 
Section 01 다형성의 개념과 특성 
Section 02 UML에서의 다형성 
Section 03 자바에서의 다형성 
참고 
요약 
연습문제 
실전문제 

Chapter 12 컴포넌트 
Section 01 컴포넌트의 개념과 특성 
Section 02 UML에서의 컴포넌트 
Section 03 자바에서의 컴포넌트 
참고 
요약 
연습문제

 

 

 

 

목차

옮긴이의 말 | 최염순 
개정판을 내면서 | 도로시 카네기 

나는 이 책을 어떻게, 왜 썼는가 | 데일 카네기 
이 책에서 최대의 효과를 얻는 방법 
  
제1부 인간관계의 3가지 기본 원칙 
1. 꿀을 얻으려면 벌통을 걷어차지 말라 
2. 칭찬은 무쇠도 녹인다 
3. 상대방의 입장에서 사물을 보라 
  
제2부 인간관계를 잘 맺는 6가지 방법 
1. 어느 곳에서나 환영받는 방법 
2. 첫인상을 좋게 하는 간단한 방법 
3. 상대방의 이름을 잘 기억하라 
4. 즐거운 대화를 나누는 쉬운 방법 
5. 사람들의 흥미를 끄는 방법 
6. 사람들이 나를 즉시 좋아하게 만드는 방법 
  
제3부 상대방을 설득하는 12가지 방법 
1. 논쟁을 피하라 
2. 적을 만드는 확실한 방법, 그런 상황을 피하는 방법 
3. 잘못했으면 솔직히 인정하라 
4. 꿀 한방울이 쓸개즙보다 더 많은 파리를 잡는다 
5. 소크라테스의 비결을 활용하라 
6. 불만을 해소하는 안전 밸브 
7. 상대방의 협력을 얻어내는 방법 
8. 기적을 일으키는 방법 
9. 모든 사람이 원하는 것 
10. 모든 사람이 좋아하는 호소법 
11. 쇼맨십을 발휘하라 
12. 모든 방법이 소용 없을 때 사용하는 방법 
  
제4부 리더가 되는 9가지 방법 
1. 칭찬과 감사의 말로 시작하라 
2. 미움을 사지 않고 비평하는 방법 
3. 자신의 실수를 먼저 이야기하라 
4. 아무도 명령받기를 좋아하지 않는다 
5. 상대방의 체면을 세워주어라 
6. 사람들을 성공으로 이끄는 법 
7. 개에게도 좋은 이름을 지어주어라 
8. 실수는 고치기 쉽다 
9. 즐거운 마음으로 협력하게 만들어라

 

이 책에서 최대의 효과를 얻기 위한 9가지 제안

1. 인간관계 원칙을 터득하기 위한 진지하고도 강한 의욕을 계발하라.

2. 다음 장으로 들어가기 전에 각 장을 두 번씩 읽어라.

3. 이 책에서 서술한 방법을 어떻게 실행할까 수시로 생각해 보라.

4. 모든 중요한 아이디어에 밑줄을 그어라.

5. 매달 한번씩 이 책을 반복해서 읽어라.

6. 이러한 원칙들을 기회있을 때마다 응용하라. 항상 이 책을 곁에 두고 일상의 문제를 해결하는 지침서로 삼아라.

7. 친구에게 당신이 이 원리들 중 하나를 위반할 때마다 지적해 주면 벌금을 내겠다고 제안하는 등 재미있는 게임을 하라.

8. 당신이 이룩한 진전을 매주 체크해 보아라. 당신이 저지른 실수나 잘못 혹은 향상된 점은 어떤 것이 있는지, 미래를 위해 어떤 교훈을 얻었는지를 자신에게 물어 보라.

9. 이 책 말미의 기록란에, 원칙들을 언제 어떻게 응용했는지에 대해 실행한 방법과 그 날짜를 기록해 보라.

 

인간관계의 3가지 기본원칙

1. 비난이나 비평, 불평하지 말라.

2. 솔직하고 진지하게 칭찬하라.

3. 다른 사람들의 열렬한 욕구를 불러일으켜라.

 

인간관계를 잘 맺는 6가지 방법

1. 다른 사람들에게 순수한 관심을 기울여라.

2. 미소를 지어라.

3. 이름을 잘 기억하라.

4. 경청하라.

5. 상대방의 관심사에 대해 이야기하라.

6. 상대방으로 하여금 중요하다는 느낌이 들게 하라. 단, 성실한 태도로 해야 한다

 

상대방을 설득하는 12가지 방법

1. 논쟁에서 최선의 결과를 얻을 수 있는 유일한 방법은 그것을 피하는 것이다.

2. 상대방의 견해를 존중하라. 결코 "당신이 틀렸다"고 말하지 말라.

3. 잘못을 저질렀다면 즉시 분명한 태도로 그것을 인정하라.

4. 우호적인 태도로 말을 시작하라.

5. 상대방이 당신의 말에 즉각 "네, 네"라고 대답하게 하라.

6. 상대방으로 하여금 많은 이야기를 하게 하라.

7. 상대방으로 하여금 그 아이디어가 바로 자신의 것이라고 느끼게 하라.

8. 상대방의 관점에서 사물을 볼 수 있도록 성실히 노력하라.

9. 상대방의 생각이나 욕구에 공감하라.

10. 보다 고매한 동기에 호소하라.

11. 당신의 생각을 극적으로 표현하라.

12. 도전 의욕을 불러일으켜라.

 

리더가 되는 9가지 방법

리더는 사람들의 생각과 행동을 이끄는 사람이다.

이를 위해서는 다음의 원칙을 실천해야 한다.

 

1. 칭찬과 감사의 말로 시작하라.

2. 잘못을 간접적으로 알게 하라.

3. 상대방을 비평하기 전에 자신의 잘못을 먼저 인정하라.

4. 직접적으로 명령하지 말고 요청하라.

5. 상대방의 체면을 세워주어라.

6. 아주 작은 진전에도 칭찬을 아끼지 말라. 또한 진전이 있을 때마다 칭찬을 해주어라. 동의는 진심으로, 칭찬은 아낌없이 하라.

7. 상대방에게 훌륭한 명성을 갖도록 해주어라.

8. 격려해 주어라. 잘못은 쉽게 고칠 수 있다고 느끼게 하라.

9. 당신이 제안하는 것을 상대방이 기꺼이 하도록 만들어라.

 

 

 

 

 

 

차례

1장 계산: 목표를 향해 한걸음씩

2장 검색: 페이지랭크 - 구글이 지닌 힘의 기반

3장 내비게이션: 경로 계획 - A에서 B로 가는 최적의 경로

4장 추천: 아마존과 넷플릭스는 우리의 취향을 어떻게 알까

5장 연결: 페이스북이 우리에게 보여주는 것과 보여주지 않는 것

6장 예측: 상관성을 근거로 예측하기

7장 투자: 시장을 지배하는 알고리즘

8장 암호화: NSA와 RSA - 알고리즘과 프라이버시

9장 압축: 알고리즘이 저장 공간을 절약하는 방법

10장 사랑: 온라인 데이트 시대의 연애

11장 학습: 인공지능을 향하여

 

나가는 말

우리는 예측 가능하지 않다!

1. 우리가 어떤 것을 알고리즘에게 맡기면 그것은 예전과 달라진다.

2. 알고리즘은 객관적이지 않다.

3. 알고리즘으로 정치를 대신할 수는 없다.

4. 알고리즘도 차별할 수 있다.

5. 우리는 알고리즘을 이해하기 위해 노력해야 한다.

6. 알고리즘은 누가 혹은 무엇이 눈에 띌지를 결정한다.

7. 인간은 예측 가능하지 않다.

8. 알고리즘은 새로운 세계권력이다.

 

부록

다른 알고리즘들

<유클리드 알고리즘>

<단체 알고리즘>

<데이터 뱅크>

<고속 푸리에 변환>

<오토튠>

<오류 수정>

<다중격자 알고리즘>

 













+ Recent posts