목록java (27)
시스템아 미안해
공통점 : 자식 클래스에서 반드시 오버라이딩하여 추상메소드를 상속받아야 한다. 추상클래스는 IS - A "~이다". 인터페이스는 HAS - A "~을 할 수 있는". 으로 정의한다. 추상클래스는 결국 존재의 정의, 인터페이스는 기능으로써의 역할을 한다는 것. 둘의 공통적 특징을 간단히 살펴보면 다중상속. 부모 추상 클래스는 다중 상속이 안된다. (일반 클래스도 다중 상속 x) 단 하나만. 그래서 존재,속성은 하나의 부모만으로 표현하고, 그 존재가 할 수 있는 기능은 여러 인터페이스를 다중상속 받아 능력있는 객체를 만든다. 위임. 추상클래스나 인터페이스를 상속,위임 받은 추상클래스는 추상메소드의 부분 상속이 가능하다. 다시 말해서 부모의 추상메소드를 또 한 단계 내려간 그의 자손에게 위임 가능하다는것. 반..
1. lambda(->) 2. optional 3. 메소드 레퍼런스(::) 4. stream 5. 인터페이스에 default, static method추가 가능 6. LocalDateTime 출처 : https://velog.io/@skyepodium/%EC%9E%90%EB%B0%94-Java-8-%EB%B2%84%EC%A0%84-%ED%8A%B9%EC%A7%95
1. String을 숫자로 변환할때 쓰는 메소드로써, 그냥 생각없이 썼던 parseInt와 valueOf메소드의 차이점 - Integer.parseInt() : primitive type인 int 반환 - Integer.valueOf() : wrapper class인 Integer 반환 valueOf로 Integer를 반환할땐 new Integer()로 객체를 반환하는 것이므로 무엇이 필요한지 잘 판단하여 구분해서 사용해야 할 듯 2. 반대로 숫자에서 String으로 변환할때 쓰는 메소드 valueOf와 toString의 차이점은 값이 null일 경우 드러난다. - String.valueOf() : "null"의 문자로 처리됨 - Integer.toString() : nullpointException 예..
공통점 : HashMap의 key 존재 여부에 따라 반환값이 달라진다. GetOrDefault 1. key가 존재할 경우 : value 반환 2. key가 존재하지 않거나 해당 key의 value가 null일 경우 : default값 반환 PutIfAbsent 1. key가 존재할 경우 : value 반환 2. key가 존재하지 않거나 해당 key의 value가 null일 경우 : map에 key와 value 추가, 반환 둘의 차이점은 2번에서 map에 key/value의 추가 여부이다. package HashMap; import java.util.HashMap; public class PutIfAbsent_GetOrDefault { public static void GetOrDefault(String[..
클라이언트의 복잡한 요청들은 하나의 쓰레드로 실행이 불가하다. 일을 처리해줄 다른 일꾼이 필요한 것이다. 만약 요청마다 쓰레드를 생성해서 로직을 수행한다면 동시적인 실행은 가능하겠지만, 큰 단점이 있다. 비싼 쓰레드의 생산 비용(메모리, 시간)과 더불어 속도가 현저히 저하된다. 그리고 쓰레드는 컨텍스트 스위칭 비용이 발생한다고 한다.(cpu의 제한적인 코어 내에서 쓰레드를 전환할 때 생기는 비용들) 그리하여 사용하는 것이 쓰레드 풀이다. 동작 방식은 쓰레드 풀에 쓰레드를 필요한 만큼 보관하고 요청에 따라 대여-반납한다. 최대치를 넘어선 요청엔 대기시키거나 거절하며 무한이 아닌 유한으로 쓰레드를 관리한다. 미리 생성해놓고 관리하기 때문에 관리 비용이 절감되고, 응답 속도 또한 빨라진다. WAS는 멀티쓰레드..
서블릿은 서버에서 처리하는 업무(TCP-IP대기, 소켓 연결, http메시지 파싱 등)를 알아서 처리해준다. 그래서 개발자는 서버의 동작 구조를 제어하지 않고 비지니스 로직만 처리하면 된다. 좀 더 상세하게 들어가면, 서블릿을 제공해주는 WAS는 새로운 요청이 올때마다 Request, Response객체를 새로 만들고, 서블릿 객체를 생성, 호출등 관리해준다. 이로 인해 개발자는 서블릿 객체를 상속받고, HttpServletRequest, HttpServletResponse에서 정보를 꺼내어 사용한다. 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 부른다. 서블릿 객체는 싱글톤으로 생성되어 하나의 공유 자원으로 사용된다. + 동시 요청을 위한 멀티쓰레드 처리를 지원해준다.