메소드 참조는 메소드를 참조해서 매개변수의 정보 및 리턴 타입을 알아내어, 람다식에 불필요한 매개 변수를 제거하는 것이 목적람다식은 종종 기본 메소드를 단순히 호출만 하는 경우가 많다.ex) 두 개의 값을 받아 큰 수를 리턴하는 Math 클래스의 max() 정적 메소드
자료의 대상과 관계없이 동일한 연산을 수행한다. (일관성)배열, 컬렉션을 대상으로 연산을 수행일관성 있는 연산으로 자료의 처리를 쉽고 간단하게 함"자료 처리를 추상화했다."라고 표현함한번 생성하고 사용한 스트림은 재사용이 불가능하다.자료에 대해 스트림을 생성하여 연산을
OptionalXXX 클래스 java.util 패키지의 Optional, OptionalDouble, OptionalInt, OptionalLong 클래스 타입을 일컫는다.이들은 값을 저장하는 값 기반 클래스로, 이 객체에서 값을 얻기 위해서는 get(), getAs
ex. 10개의 Product 객체를 저장해 두고, 필요할 때 마다 하나씩 꺼내서 이용한다고 가정한다.어떻게 Product를 효율적으로 추가, 검색, 삭제할 수 있을까? 👉 배열을 이용한다.하지만 배열은 저장할 수 있는 객체 수가 배열을 생성할 때 결정되서 불특정 다
병렬처리는 멀티 코어 CPU 환경에서 하나의 작업을 분할해서 각각의 코어가 병렬적으로 처리하는 것을 말한다.작업 처리 시간을 줄이기 위한 것으로
java.exe로 JVM이 시작될 때, JVM이 프로그램을 수행하기 위해 OS로부터 할당받는 메모리 영역(WAS의 성능에 문제가 발생하면, 대부분 이 영역들이 원인(Memory Leak , GC 등))Rumtime Data Area는 5가지 영역으로 구분된다. PC,
사용자가 애플리케이션을 실행하면, 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데 이것을 프로세스라고 부른다. 프로세스 : 실행중인 하나의 애플리케이션ex) Chrome 브라우저를 2개 실행시켰다.= 두 개의 Chrome 프로세스가 생성
모든 자바 어플리케이션은 메인 스레드(main thread)가 main() 메소드를 실행하면서 시작메인 스레드는 필요에 따라 작업 스레드들을 만들어서 병렬로 코드 실행이 가능하다. 싱글 스레드 어플리케이션에서는 메인 스레드를 종료하면 프로세스도 종료되지만, 멀티 스레드
병렬 작업 처리가 많아지면 스레드 개수가 증가하고, 그에 따른 스레드 생성과 스케줄링으로 인해 CPU가 바빠져 메모리 사용량이 늘어난다. -> 애플리케이션 성능 저하👉갑작스런 병렬 작업의 폭증으로 인한 스레드의 폭증을 막기위해 스레드풀(ThreadPool)사용스레드풀
Executor 프레임워크와 쓰레드풀을 통해서 쓰레드의 힘을 높은 수준으로 끌어 올리는 태스크 제출과 실행을 분리할 수 있는 기능을 제공Java 스레드는 직점 운영체제 스레드에 접근운영체제 스레드는 만들고 종료하는데에 있어 비용이 비쌈또한 스레드 숫자는 제한되어 있으므
객체 생성의 역할을 하는 클래스 메서드생성자와 별도로 객체를 생성하는 메소드를 정적으로 만들어 객체 생성을 캡슐화하여 제공할 수 있다. 정적 팩토리 메소드 예시미리 생성된 객체를 '조회'하는 메서드이기 때문에 객체를 '생성'하는 '팩토리'라 역할을 한다고 보기는 어렵지
이해를 위해 필요한 개념 명명된 선택적 매개변수(named optional parameters) - python 불변클래스 (item 17) 반환타이핑(convariant return typing) 점층적 생성자 패턴 (telescoping constructor pa
인스턴스의 내부 값을 수정할 수 없는 클래스 . 불변 인스턴스에 간직된 정보는 고정되어 객체가 파괴되는 순간까지 달라지지 않는다. ex. String, 기본 타입의 Boxing 클래스, BigInteger, BigDecimal 등불변 클래스는 실제로 가변 클래스에 비해
불필요한 객체란 무엇인지부터 생각해보자. 다음 코드를 보자. 문자열 변수 a,b,c는 모두 "hi"라는 문자열을 가지게된다. 하지만, 이 세 문자열이 참조하는 주소는 모두 다르다. 각각의 변수는 모두 다른 영역을 참조하게 되는데, 동일한 문자열을 이처럼 여러개 중복
Hashtable은 Key에 Value를 저장하는 데이터 구조로 value : =get(key)의 기능이 매우 빠르게 작동한다.이름을 key로 전화번호를 value로 저장하는 해쉬테이블 구조를 만드는 예를 보자.전체 데이터의 갯수를 16명이라 가정하면 John Smit
Object 클래스의 equals함수는 객체의 주소값을 비교햔다.즉, 같은 값을 가졌더라도 따로 생성되었다면 False를 출력한다.equals 메소드는 동치관계를 구현한다.반사성(reflexive) : null이 아닌 모든 참조 값 x에 대해, x.equals(x)는
equals를 재정의한 클래스는 hashcode도 재정의해야한다. 재정의하지 않는 경우, hash를 사용하는 hashmap이나 hashset에서 문제가 발생한다.
잘 설계 된 컴포넌트는 모든 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔하게 분리한다. 오직 API를 통해서만 다른 컴포넌트와 소통하며 서로의 내부 동작 방식에는 전혀 개의치 않는다. 정보은닉, 캡슐화라고 부르는 이 개념은 소프트웨어 설계의 근간이 되는 원리이다.