본문 바로가기

웹서버와 웹 컨테이너 웹 서버란? - 웹 서버는 HTTP요청을 받아서 HTML과 같이 응답을 하는 프로그램 - 컨테이너나 PHP 모듈과 같이 처리 할 수 있는 곳으로 넘기고 결과 받는 역할 웹서버 기능 - Virtual Hosting - 인증 - 정적 컨텐츠 관리 - HTTPS 지원 - 컨텐츠 압축 - 통신 기록 log이 외에 더 많은 기능을 함. 웹서버의 종류에는 - 아파치 - IIS - nginx - GWS 등이 있다. 웹 컨테이너 - JSP나 서블릿 클래스를 실행시켜 웹 서버에 전달 웹 컨테이너의 기능 - 서블릿 생명주기를 관리 - URL을 특정 서블릿 과 매핑 - URL 요청이 올바른 접근 권한을 갖도록 보장 종류에는 - 톰캣 - RESIN - WEB LOIG - WEBHtob 웹 컨테이너 요청 처리 1. 사용자가 서..
객체의 가시성 수정자는 어떻게 작동하는가? - 가시성 수정자(visibility modifier) 는 클래스의 캡슐화된 상태와 인스턴스 행동을 조정하는 메서드의 접근을 제어하는 역할. - 가시성 수정자 범위 Least private 같은 클래스의 모든 인스턴스 접근가능하위 클래스 접근 불가능 같은 패키지의 모든 클래스에서 접근 가능 protected 모든 하위 클래스에서 접근 가능 Most public어디서든 접근가능 - pirvate의 일반적이 ㄴ오해는 private으로 선언한 변수는 해당 인스턴스에만 접근할 수 있다고 생각하는 것. - 실제로 같은 타입의 다른 모든 인스턴스가 private 멤버 변수에 접근할 수 있다. - 책 8-7 코드는 같은 타입이지만 다른 인스턴스에서 private 멤버 변수에 접근하는 두 가지 경우를 보여주는 예다.
final 키워드는 객체 참조에 어떤 영향을 미치는가? - 객체의 선언하는 final 키워드는 원시 타입에 선언하는 final 키워드와 동일한 역할을 한다. - 변수 정의에서 지정된 값처럼 일단 할당이 되고 나면 메모리 위치가 변경되지 않는다. - 객체 참조는 변경할 수 없어도 객체 내부의 값들은 개별 값들은 개별 값들이 final 이 아니라면 변경 가능하다. @Test public void finalReferenceChanges() { final int i = 42; //i= 43; 주석 해제시 컴파일 에러 final List list = new ArrayList(20); //list = new ArrayList(50); 주석 해제 시 컴파일 에러 assertEquals(0, list.size()); list.add("adding a new value in..
자바에서 객체란 무엇인가? - 객체는 변수들의 컬렉션으로 정의할 수 있다. - 객체에는 상태와 행위가 있다고 생각하면 이해하기 쉽다. - 원시 타입을 제외하면 자바 언어의 다른 모든 변수들은 참조 타입 이다. 원시 타입과 다른점은 빈 객체를 의미하는 null 이 존재한다는 것이다. 참조 타입의 의미 - 원시 타입은 int i = 42 변수가 선언되었을때 42라는 값이 메모리에 할당 되고 int j = i라는 형식으로 i에의해 표현되는 값이 할당되었을 때 메모리의 다른 위치에 같은 값을 할당한다. - 할당되고 나면 i는 j 값에 영향을 미칠 수 없다. - 자바에서 new ArrayList(20) 같은 구문은 데이터를 저장하는데 필요한 영역을 메모리에 요구 - List myList = new ArrayList(20) 구문으로 생성된 ..
왜 Integer.MIN_VALUES에 대응하는 양수가 없는가? - short, int, long 타입의 2진수 값 저장소는 메모리에서 2의 보수 값을 사용한다. - 2의 보수 표현에서 양수에 대응하는 음수는 2진수 기반의 NOT 비트 연산을 적용한다. - 2의 보수 표현을 사용하는 주된 이유는 0은 하나의 값만 존재, 즉 양수나 음수의 개념이 없다. 일부 음수의 2진수 표현10진수 표현 2진수 표현 -1 1111 1111 -2 1111 1110 .... -12710000 0001 -128 10000 0000 - 저장할 수 있는 가장 작은 음수의 최상위 비트가 1이고 나머지는 0이다. - 이 값을 음수화 하려면 나머지 비트를 뒤집으면 (0111 1111) 되고 원래 값으로 돌리려면 하나(1000 0000)를 더하면 된다. - 이런 경우 해당하는 양수는 존재하지 않는다..
몇 가지 자바 원시 타입의 이름을 지정하고 이 타입이 JVM에서 어떻게 처리되는지 설명 - boolean, int, double 같은 각각의 기본 타입은 원시(primitive)타입이라고 알려져 있다. - JVM에서 객체와 다른 방식으로 다룬다. 왜냐하면 원시 타입은 NULL이 될 수 없기 때문 - int와 long floaf와 double을 구분할수 있어야 한다. long은 L float는 F, double은 D 로 정의 한다. 원시 타입의 종류와 크기 타입 크기boolean 1short 16 int 32 long 64 float 32 double 64 char 16 - char 타입이 unsighed 이고 char 값의 범위는 유니코드 값이므로 0에서 65,535 까지다. - 원시 타입을 정의할 때 값이 할당되지 않았다면 그 변수는 기본적으로 기본값이 지정된다. 상위 개념 타입으로 암시..
빌더 패턴은 얼마나 유용한가? - 필드가 많은 객체를 생성할 경우 생성자를 이용하면 다루기도 어렵고 헷갈릿 수 있다,private final Animal animal; private final String petName; private final String ownerName; private final String address; private final String telephone; private final Date dateOfBirth; private final String emailAddress; - 유효한 Pet 객체를 만들려면 필요한 모든 필드와 조합할 수 있는 옵션 필드를 포함하도록 많은 매개변수를 갖는 생성자가 최소한 4개는 필요하다. - 이러한 문제를 해결하는 한 가지 방법은 생성자를 사용하지 않는 것. - 필드에서 ..
Map - 맵은 해시라고도 하며 배열이나 사전(dictionary)과 관련 잇는 키-값 형태의 저장소. - 맵을 구현할 때는 Map 인터페이스를 사용한다. - List 인터페이솨 달리 Collection 인터페이스를 구현하지 않는다는 차이가 있다, - 맵의 특징 중 하나는 키 값은 트리 상에서 한 번만 나타난다는 것. 맵에서 키를 덮어 쓰는 예 - HashMap 클래스는 해시 테이블을 자바로 구현한 것으로, 클래스 구현에는 키-값 쌍을 나타내는 Entry라는 내부 클래스가 있다. - 원소들은 Entry 객체의 배열로 저장할 수도 있고 배열 대신 Entry 객체의 리스트로 저장할 수도 있다. - 이렇게 저장된 원소의 특정 키 인스턴스의 값은 테이블의 어디에 해당 값이 있는지 정의 - Object 클래스에 정의된 ..