728x90

Java 44

자바 성능 튜닝 - 문자열 처리

String 클래스는 메모리에 많은 부하를 주는 클래스 입니다. 새로운 내용을 추가 할 때마다 객체를 지속적으로 생성하기 때문입니다. 객체를 지속적으로 생성하면 메모리도 낭비될 뿐더러 GC가 사용하지 않는 객체를 계속 삭제하기 때문에 CPU와 시간을 많이 소모하게 됩니다. 그러므로 StringBuffer 나 StringBuilder 클래스를 메모리 사용량을 줄이는 것이 좋습니다. StringBuffer : 스레드에 안전하게 설계되어 있으므로 여러 개의 스레드에서 하나의 StringBuffer 객체를 처리해도 전혀 문제가 되지 않습니다. StringBuilder는 단일 스레드에서 안정성을 보장하므로 여러 스레드에서 하나의 StringBuilder 를 처리하면 문제가 발생합니다. CharSequence : ..

자바 성능 튜닝 - 분석 툴

프로파일링 툴 - 개발자용 툴 - 소스 레벨의 분석을 위한 툴 - 애플리케이션의 세부 응답 시간까지 분석 - 메모리 사용량을 객체,클래스, 소스의 라인 단위까지 분석 - 가격이 APM 툴에 비해 저렴 - 사용자 수 기반으로 가격 선정 - 자바 기반의 클라이언트 프로그램 분석 가능 - 느린 메서드, 클래스 찾음 - 응답 시간 프로파일링 기능 : 메서드 단위 혹은 소스라인 단위로 응답 시간을 측정하며 보통 CPU시간, 대기시간 두개가 제공됩니다. - 메모리 프로파일링 : GC의 대상을 찾거나 메모리 부족현상을 찾아주는데 클래스 및 메서드 단위나 소스 라인 단위로 메모리 사용량을 측정합니다. APM 툴 - 운영 환경용 툴 - 애플리케이션의 장애 상황에 대한 모니터링 및 문제점 진단이 주 목적 - 서버의 사용자..

자바 성능 튜닝 - 디자인 패턴

자바 성능 튜닝 이야기(이상민) - 인사이트 책을 읽고 공부한 내용입니다. MVC 모델 ( Model, View, Controller) - 모델, 뷰, 컨트롤러 역할을 하는 클래스를 각각 만들어서 개발하는 모델입니다. - 뷰 : 사용자가 결과를 보거나 입력할 수 있는 화면입니다. - 컨트롤러 : 뷰와 모델을 연결 시켜주며 뷰에서 받은 이벤트를 모델로 연결해 줍니다. - 모델 : 뷰에서 입력된 내용을 저장, 관리, 수정하는 역할을 합니다. 모델1 구조 - JSP에서 자바 빈을 이용해 DB관련 작업을 수행 후 결과를 브라우저로 보내주는 방식입니다. - 간단히 개발할 수 있는 장점을 가집니다. - 프로세서 변경이 어렵고 뷰화면과 비즈니스 모델의 분업화가 어려워 코드 양이 많아집니다. 모델2 구조 - JSP를 ..

JavaFx

기본적인 JavaFx 틀 - main 클래스 Application을 상속하여 작성하며 launch()메서드를 호출하여 런처스레드와 UI스레드를 작동시킵니다. UI 스레드가 start()메서드를 호출하여 작동합니다. - 레이아웃을 이용해 컨테이너에서 컨트롤을 배치합니다. UI 구성요소 - control : 버튼, 텍스트 area 등을 의미합니다. - container : 컨트롤 객체와 다른 컨테이너를 담고있습니다. - scene : stage가 사용하는 도구입니다. - stage : 화면을 보여주는 창을 의미합니다. Event Handling - Application Thread : UI와 관련한 각종 작업들을 수행하는 스레드 입니다. 해당 작업은 블로킹이 일어나서는 안됩니다. 블로킹이 일어날 경우 사용자..

IO 스트림과 제너릭타입

IO 스트림 - 프로그램 외부와 입출력 수행을 동일한 방법으로 수행하기 위해 장치를 통해 입출력되는 데이터의 흐름을 추상화 하는 도구입니다. - 입출력은 한쪽 방향으로만 동작 되기 때문에 각각 입력 스트림, 출력 스트림으로 구현하고 통신하기 위해서 각각 모두 갖추고 있어야 합니다. - 바이트 기반 스트림 : 모든 종류의 데이터를 바이트 단위로 취급하며 InputStream/OutputStream로 파생하여 사용합니다. - 문자 기반 스트림 : 문자만을 받고 보낼 수 있는 스트림으로 Reader/Wirter로 파생하여 사용합니다. - 콘솔 입출력 : 키보드로 입력을 받고 모니터로 출력하는 소프트웨어 입니다.(System.in, System.out,Scanner) - 파일 입출력 : 파일의 생성및삭제, 디렉..

컬렉션과 컬렉션 스트림

컬렉션 - 다수의 객체들을 저장한 집합 구조체 입니다. - List: 저장하는 순서가 존재하며 Index를 사용해 구분합니다. ArrayList,Linked List 등이 있으며 모든 객체들이 개념적으로 순차되어져 있지만 Linked List의 경우 실질적으로 주소를 사용해 랜덤적으로 저장되어져 있습니다. - Set : 요소들이 순서와 Index를 가지지 않고 객체 자신의 값을 키 값으로 사용하기 때문에 중복된 값을 넣을 수 없습니다. 요소 전체에 대해 어떤 행위를 수행하고자 할 때 외부반복자를 사용합니다. - Map : 키값을 별도로 사용하여 저장하며 키와 Value 쌍으로 이루어진 엔트리를 집합 자료로 사용합니다. 그 중 Properties의 경우 키와 Value의 값을 모두 String으로 사용하며..

멀티스레드

멀티스레드 - 하나의 어플리케이션에 여러개의 스레드가 존재하는 것을 의미합니다. - 프로세스 :1프로세스당 1어플레케이션을 의미합니다. - 스레드 : 스택영역 안에 각각 생성하여 병렬로 처리하는데 사용하며 독립적인 실행됩니다. 스레드 객체 와 태스크 객체 - 병렬처리 어플리케이션은 복수 개의 스레드를 생성한 후 각 스레드가 자신의 태스크를 수행하는 것입니다. - 스레드 객체가 태스크 객체를 관리하며 태스크 객체는 작업 내용을 담고 있는 객체 입니다. #병렬 처리 방식 - 동시성 : 하나의 코어에서 번갈아 가며 실행하는 것입니다. - 병렬성 : 멀티코어에서 개별 스레드를 동시에 실행하는 것입니다. Main 스레드 - JVM이 자동으로 생성하는 스레드 이며 어플리케이션 수행은 main 스레드로부터 시작됩니다..

인터페이스와 람다

인터페이스 - 객체 메서드의 사용법인 추상 메서드를 담고 있는 개발자 정의 타입입니다. - 직접 접근하는것이 아닌 사용하는 객체와 사용당하는 객체 중간에 위치하여 간접 접근 함으로써 다형성을 구현할 수 있습니다. - 해당 인터페이스를 구현하고 있으면 인터페이스 타입 변수에 어떠한 객체가 들어와도 업캐스팅되어 오버라이딩 된 실체 메서드가 동적 바인딩 되어 다형성을 구현 할 수 있습니다. - 함수적 인터페이스 : 추상 메서드를 1개만 가지는 인터페이스로써 타겟 타입을 이용해 인터페이스를 반영한 클래스 생성이 용이합니다. - 람다식 : 인터페이스의 1개뿐인 추상 메서드에 대한 구현 클래스의 실체 메서드를 구현하는 수단으로 몸통만 표현이 되며 자동으로 객체 생성이 됩니다. - 객체 프로그램에서 함수형을 사용할 ..

어노테이션

어노테이션 - 다른곳 혹은 다른 프로그램에게 제공될 어떤 기능을 알리고자 할 때 사용하는 메타데이터 입니다. #주석 vs 어노테이션 - 주석은 개발자 혹은 유지보수자인 사람을 상대로 프로그램에 대한 설명으로 번역시 포함되지 않습니다. - 어노테이션은 다른 프로그램을 상대로 자신의 프로그램이 제공하는 기능에 대한 설명을 알려줍니다. 어노테이션 정의 - 별도의 자바 파일을 사용해서 생성합니다. - 실체를 생성하는 것이 아닌 다른 프로그램에게 어떤 기능을 제공하고자 할 때 제공 하는 기능의 사용과 관련된 정보에 대한 내용을 정의하는 타입입니다. - @interface 를 사용하여 내용을 정의 하며 세부 내용은 블록에서 엘리먼트들을 사용하여 정의 합니다. 기본 엘리먼트의 경우 다른 엘리먼트를 사용하지 않았을 때..

예외 처리

익셉션 - 잘못된 프로그램 조작 혹은 프로그램의 오류에 의해 발생합니다. #에러 VS 익셉션 - 에러는 JVM 하단에서 발생해 하드웨어 OS 문제로써 프로그램이 중단됩니다. - 익셉션은 JVM 위에서 어플리케이션 문제에 의해 발생하고 처리에 따라 프로그램이 중단 할 수도 있고 안할 수 도있습니다. 호출된 메서드의 정상 실행과 비정상 실행 #정상 실행 - return문을 반환하거나 공유변수를 통한 반환 혹은 호출시 넘겨 받은 참조값이 가리키는 객체를 통해 반환을 합니다. 비정상 실행 - 호출된 메서드에서 익셉션이 발생하게 됩니다. - new로 익셉션 객체를 생성 및 throw 로 생성된 객체를 던집니다. - 자기 자신이 처리할 경우 try-catch를 이용해 직접 처리합니다. - 자기 자신이 아닌 자신을 ..