보호되어 있는 글입니다.
URL(Uniform Resource Locater) 인터넷상에 있는 리소스를 찾기위해 사용되는 고유한 주소.(인터넷 리소스를 찾기위해 사용) URL은 프로토콜과 결합한 형태 -> 프로토콜(ex. https, http, ftp) + 이름(또는 번호)의 형태 URI(Uniform Resource Identifier) 웹상의 리소스를 식별하기 위해 사용되는 문자열 URI는 그 자체로 이름이 될수있다. ex. elancer.co.kr > URI https://www.elancer.co.kr > URL, URI *참고 Request URI란? HTTP 요청 메시지에서 request URI는 요청하는 리소스의 이름이나 주소 GET /index.html HTTP/1.1 -> request URI는 /index.ht..
브라우저에 maps.google.com을 입력했을 때 일어나는 일들을 여덟 단계로 정리할 수 있다. 1. 브라우저 주소창에 maps.google.com을 입력한다. 2.HTTP를 사용해서 웹서버에 요청을 보낸다. 3.브라우저가 해당 서버와 TCP 연결한다. 4.TCP가 데이터를 IP에 전달한다. 5. 브라우저가 maps.google.com의 IP 주소를 찾기 위해 캐시에서 DNS 기록을 확인한다. 6.만약 요청한 URL(maps.google.com)이 캐시에 없다면, ISP의 DNS 서버가 DNS 쿼리로 maps.google.com을 호스팅하는 서버의 IP 주소를 찾는다. 7.브라우저가 웹서버에 HTTP 요청을 보낸다. 8.서버가 요청을 처리하고 응답을 보낸다. 9.서버가 HTTP 응답을 보낸다. 10...
쓰레드란? 쓰레드는 Thread는 process 내에서 독립적으로 일을 수행하는 단위 멀티쓰레드란? 하나의 프로세스내에 여러스레드로 자원을 공유하며 작업을 나누어 수행 하는역할? 하나의 process에는 여러개의 Thread가 존재할 수 있고, 하나의 process에 속해있는 여러개의 Thread는 PCB의 code나 bss, data와 같은 자원을 공유하며, 공유 메모리를 통해 통신할 수 있다. OS는 각각의 thread를 TCB(Thread Control Block)이라는 자료구조로 관리를 한다. 쓰레드를 쓰는 이유? - 동일한 일을 하는 프로세스가 여러개 있을 경우 각각 code/data/stackheap 영역이 각각 만들어져서 메모리 낭비가 생김 - 같은일을 하는 프로세스를 여러개 띄우고 싶다면,..
캡슐화 서로 연관있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호 추상화 선언만있고 구현내용이 없거나, 일부만 구현한 미완성 클래스. 다형성(polymorphism) 어떤 객체의 속성이나 기능이 그 맥락에 따라 다른 역할을 수행할 수 있는 객체지향의 특성 *다형성을 극대화 하기 위해 추상클래스나 인터페이스를 이용한다. - 오버라이딩 : 상위클래스의 메소드와 같은 이름,반환형,인자는 같아야 하지만 함수 내부 내용은 달라도 된다. //상위 클래스 public int add (int a, int b) { return a + b; } //하위 클래스 public int add (int a, int b) { return a * b; } - 오버로딩: 메소드 이름만 같고 반환형,파라미터의 개수가 ..
인터페이스란? 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다. 인터페이스의 객체지향 특징? 다형성 : 한 가지 타입으로 여러가지 구현체를 사용할 수 있는 것이다. -> 유지보수의 편의를 ex. 한 카페에서 여러 음료를 시킬수있다. 클래스와 클래스 간의 관계를 인터페이스로 연결하면, 클래스마다 독립적인 프로그래밍이 가능 예시 *기존 public class Americano { public String coffeeName() { return "americano"; } } public class Cafe { private Americano coffee; public void makeCoffee(Americano coffe..
람다란 무엇인가? 메소드로 전달할 수 있는 익명 함수를 단순화한것이라고 할 수 있다. 람다예제 불리언 표현식 (Listlist) -> list.isEmpty() 객체 생성 () -> new Apple(10) 객체에서 소비 (Apple a) -> {System.out.println(a.getWeight());} 객체에서 선택/추출 (String s) -> s.length() 두 값을 조합 (int a, int b) ->a*b 두 객체 비교 (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()) 기존 Comparator byWeight = new Comparator(){ public int compare(Apple a1, Apple a2){ ret..
StringTokenizer StringTokenizer 클래스는 문자열을 우리가 지정한 구분자로 문자열을 쪼개주는 클래스입니다. 그렇게 쪼개어진 문자열을 우리는 토큰(token)이라고 부릅니다. String : 문자열을 Tokenizer : 토큰화한다. 이렇게 해석할 수 있는데요, 즉 토큰은 분리된 문자열 조각으로, 스트링토크나이저 클래스는 하나의 문자열을 여러 개의 토큰으로 분리하는 클래스인거죠. StringTokenizer 작동 방식 StringTokenizer의 인스턴스는 returnDelims Flag가 가지고 있는 true 혹은 false에 따라 토큰을 분리할지 정합니다. - 만약 false일 경우 한 문장을 각 연속된 문자로 빈칸에 따라(혹은 기에 따라) 여러 토큰으로 분리합니다. - 만약 ..
JVM 구조 .java파일 → 컴파일 → .class(바이트 코드) 파일 생성 이렇게 생성된 .class파일들을 엮어서 JVM이 운영체제로부터 할당받은 메모리 영역인 Runtime Data Area로 적재하는 역할을 한다. - linking - Verify 바이트 코드 검증 기는 생성된 바이트 코드가 올바른지 여부를 검증하게 된다. 검증이 실패하면 검증 오류가 발생한다. - Prepare 모든 정적 변수에 대해 메모리가 할당되고 기본값이 지정된다. - Resolve 모든 기호 메모리 참조가 메서드 영역의 원래 참조로 바뀐다. - initialization: 클래스 로딩의 마지막 단계로 여기서 모든 staic 변수는 원래 값으로 지정되고 static 블록이 실행된다. JVM 탄생배경 printf("hi")..