본문 바로가기

반응형

Programming

(163)
[Web] HTTPS HTTP의 문제점 평문이기 때문에 도청 가능 HTTP를 사용한 리퀘스트/리스폰스 통신 내용은 암호화 기능이 없기 때문에 통신 전체가 암호화 되지 않는다. 평문(암호화 되지 않은 메시지)으로 HTTP를 메시지를 보내게 되는 것이다. 통신 상대를 확인하지 않기 때문에 위장 가능 HTTP를 사용한 리퀘스트/리스폰스는 통신 상대를 확인하지 않는다. 리퀘스트를 보낸 서버가 정말로 URI에서 지정된 호스트인지, 리스폰스를 반환한 클라이언트가 정말로 리퀘스트를 출력한 클라이언트인지 모른다. HTTP를 사용한 통신은 상대가 누구인지 확인하는 처리가 없다. 누구든지 리퀘스트를 보낼 수 있다. 또한 리퀘스트가 오면 상대가 누구든지 무언가의 리스폰스를 반환한다. 따라서 HTTP 통신으로는 특정 상대에게만 통신을 허가하는 등..
[Web] TCP/IP TCP/IP TCP/IP는 TCP와 IP를 중심으로 하는 프로토콜의 집합이자 네트워크의 공통 언어. TCP/IP 계층구조 TCP/IP 에서는 네트워크를 통해 통신하기 위한 기능을 계층화하고 복수의 프로토콜을 조합하였다. 총 4계층으로 구성되어 있고 각 계층에 포함된 프로토콜을 조합하여 애플리케이션이 통신한다. 4개 계층의 프로토콜이 모두 정상적으로 제 기능을 해야 통신이 이루어진다. 네트워크 인터페이스층 같은 네트워크 내 인터페이스 간 데이터를 전송하는 역할. 프로토콜: 유선(이더넷)이나 무선 LAN(Wi-Fi), PPP 등이 있다. 네트워크 인터페이스층의 프로토콜이 통신 상대와 같아야 할 필요는 없다. 인터넷층 원격지 네트워크 사이에서 데이터를 전송하는 역할. 프로토콜: IP(엔드투엔드 통신에 이용),..
[디자인 패턴] 생성 패턴 | 구현 패턴 | 행위 패턴 Design Patterns: Elements of Reusable Object-Oriented Software의 저자 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides는 Gang of Four라는 별명을 가지고 있다. Amazon.com Enter the characters you see below Sorry, we just need to make sure you're not a robot. For best results, please make sure your browser is accepting cookies. www.amazon.com Gang of Four에 의해 명명된 디자인 패턴은 그 목적에 맞게 이름이 만들어졌다. 총 23가지의 패턴이 있..
8080 포트가 이미 사용중이라면 eclipse에서 웹 서버를 실행했을 때 Address already in use와 같은 에러 메시지가 발생했다면, 말 그대로 연결 포트가 이미 사용 중이기 때문에 웹 서버 실행 작업을 못하고 있는 것이다. 명령프롬프트(cmd)를 실행해서 8080 포트의 상태를 확인한다. netstat -ano 혹은 netstat -ano | find "8080" 8080 포트를 점유한 작업을 강제 종료한다. taskkill /f /pid [PID 번호] 아래와 같은 에러 메시지가 출력된다면, 관리자 권한으로 명령프롬프트를 실행한 후 강제 종료 작업을 진행한다. 실행 방법은 키보드의 시작 메뉴(윈도우 키)를 누르고 "cmd"를 입력한 후 마우스 오른쪽 버튼을 클릭하여 관리자 권한으로 실행하면 된다.
[Java] DTO / VO DTO(Data Transfer Object) 계층(Layer)간 데이터 교환을 위해 사용하는 객체. 데이터 교환 목적으로 사용하므로 로직을 가지지 않는다. getter/setter 메소드만 가진다. 데이터를 담고, 필요 시 꺼내어 사용하는 용도로만 사용되는 것이 DTO class Member { private String name; private int age; public Member(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public String setName(String name) { this.name = name; } ... } VO(Value Object..
[Java] 매개변수의 다형성 자동 타입 변환(Promotion)은 부모 타입에 모든 자식 객체가 대입되어 사용할 수 있다는 것이다. 자식은 부모의 특징과 기능을 상속받기 때문에 부모와 동일하게 취급될 수 있다. 자동 타입 변환은 메소드 구현 상황에서 자주 발생한다. 메소드 호출 시 매개 변수의 타입과 동일한 매개 값을 지정하는 일반적인 방법에서 벗어나 매개 변수에 자식 타입 객체를 지정할 수 있다면 매개 값을 다양화할 수 있다. 매개 변수의 타입이 클래스인 경우, 해당 클래스의 객체 뿐만이 아니라 자식 객체까지도 매개 값으로 사용할 수 있다. 매개 값으로 어떤 자식 객체가 제공되느냐에 따라 메소드의 실행 결과가 다양해진다. 자식 객체가 부모 클래스의 메소드를 오버라이딩했다면 메소드 내부에서 오버라이딩된 메소드를 호출하여 메소드 실행..
[Java] String이 불변(Immutable) 객체인 이유 String 객체의 불변성(Immutability) String 객체는 불변성(Immutability)을 가진다. String 객체가 한 번 생성되면 생성된 값은 변하지 않는다. 아래 코드는 doraemon 이라는 String 객체를 생성한 후, 해당 객체에 다른 값을 할당했다. 처음 생성된 String 객체의 값 "aaa"가 "bbb"로 변경되었으니 doraemon 객체의 값은 "bbb"라고 생각할 수 있지만, 틀렸다. String 객체의 값이 변경된것이 아닌 새로운 String 객체가 생성되어 그 참조가 doraemon 변수에 할당된 것이다. String doraemon = "aaa"; doraemon = "bbb"; 처음 생성한 "aaa"와 이후 새롭게 생성된 "bbb" 두 개의 인스턴스가 Heap..
[Java] Spring Pool String Pool String Pool은 JVM에서 관리되는 String 저장 전용 메모리 영역이다. String은 불변성(immutability)을 가지기 때문에 String Pool에 오직 하나의 문자열만 저장되는데, 이 과정을 interning이라고 한다.(interning은 '내부에 추가하다'의 의미를 가지는 것 같다.) String 변수를 생성하고 원하는 값으로 초기화 후 해당 변수를 다시 호출하면 JVM에서 String Pool에 해당 String 변수와 동일한 값이 있는지 검색한다. 동일한 값이 있으면 추가로 메모리를 할당할 필요가 없다. 기존에 String Pool에 저장된 메모리 주소를 참조(reference)하면 되기 때문이다. 동일한 값이 없으면 String Pool에 메모리를 추..

반응형