일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Easy
- array
- 사칙연산
- 자바 thread 실행 순서 제어
- 자바 스레드 실행 순서 제어
- 카데인 알고리즘
- Kadane's Algorithm
- 수학
- R
- JAVA11
- input
- 자바입력
- heroku
- scanner
- SpringBoot 2
- hash table
- Today
- Total
목록Java/References (23)
DeFacto-Standard IT
멀티 스레드 프로그래밍 환경에서는 멀티 스레드에 대한 실행 순서를 제어하는 것이 중요하다. OS는 멀티 스레드에 대한 실행한 순서를 보장하지 않는다. 따라서 운이 좋으면(?) 맨 마지막에 호출된 스레드가 맨 먼저 실행될 수도 있고, 운이 나쁘면(?) 맨 처음에 호출된 스레드가 맨 나중에 실행될 수도 있다. 물론 멀티 스레드를 제어하지 않는 경우도 있지만, 앞단에서 구한 결과를 가지고 뒷단에서 다시 재처리를 하는 경우라던가 할 때, 앞단의 작업이 끝나기도 전의 뒷단의 작업이 실행된다면 제대로 된 값을 구할 수 없거나 에러가 날 것이다. 먼저 실행 순서를 제어를 위해 커스텀 스레드를 정의하자. public class CustomThread implements Runnable { @Override public..
- Summary이전 글(https://defacto-standard.tistory.com/796)에서 jackson-databind를 사용한 Polymorphic Serialize / Deserialize를 알아봤다. 이번에는 단순히 인터페이스 - 구체클래스의 관계로 구성되는 2depth Polymorphic Serialize / Deserialize가 아니라,중간에 한 계층이 더 들어간 3depth Polymorphic Serialize / Deserialize를 살펴보자. 2depth에서는 jackson-databind에서 제공하는 매핑 메타 어노테이션을 사용해ObjectMapper만을 한 번 래핑하여 특별한 구현 없이 어노테이션 만으로 비교적 쉽게 구현할 수 있었다. 결론적으로, 3depth 부터..
- Summary자바에서 직렬화(Serialization)란, Object를 네트워크나 스트림으로 저장할 수 있는 String 으로 변환하는 것을 의미한다. 이러한 스트림통신에서는 객체 자체를 전송할 방법이 없다. 웹에서 이미지를 보여주는 것을 예로 들어보자. 이미지가 포함된 페이지를 클라이언트가 HTTP Request를 보내면,웹서버에서는 등과 같이 String형태로 HTTP Response에 담아서 보낸다. 실제로, HTTP 헤더나 바디를 브라우저의 개발자 도구를 사용해서 까보면 전부 스트링 형태로 되어있다. 브라우저에서는 해당 HTML 코드를 해석하여 src에 해당하는 url에 존재하는 이미지를 바이트코드로 읽어들인 후,브라우저가 그림으로 보여주는 것이지, 이미지 자체 정보를 받는 것이 아니다. 이..
Method Signature1. 메서드의 이름2. 메서드의 파라미터 타입 Method Type1. 메서드의 리턴 타입2. 메서드 타입 파라미터3. 메서드 인자 타입4. Exception Method Signature가 같다고 Method Reference를 쓸 수 있는게 아니라,Method Type이 같아야 Method Reference를 쓸 수 있다. 이는 상속관계에서, 부모클래스의 메서드가 있을 때, 자식클래스의 메서드에서 오버라이딩을 할 수 있는 조건에 해당한다. 따라서 Super super = new Sub(); super.a()와 같은 Method Reference가 가능해진다.
Method Dispatch : 어떤 메소드를 호출할지 결정하여 실제로 실행시키는 과정을 말한다. 1) Static Dispatch컴파일 시점에서, 컴파일러가 특정 메소드를 호출할 것이라는 걸 명확하게 알고있는 경우이다. 컴파일 시 생성된 바이트 코드에도 이 정보가 그대로 남아있다. 런타임(실행 시점)이 되지 않아도 미리 결정하는 개념이다. 함수를 오버로딩하여 사용하는 경우, 인자의 타입이나 리턴타입 등에 따라 어떤 메서드가 호출될 지 명확하기 때문에, 경우 역시 '미리 알 수 있다' 고 할 수 있다. 이 두개의 오버로딩 된 메서드는 전혀 다른 메서드로 구분되기 때문이다. 상위 개념인 Super 클래스가 존재하더라도, Sub sub = new Sub() 와 같이 서브 클래스를 레퍼런스로 선언하고 서브 클..
- OOP(객체 지향 언어) : 실제 세계의 현상을 컴퓨터 상의 객체로 실현(모델화)함으로써, 컴퓨터를 자연스러운 형태로 사용하여 다양한 문제를 해결하기 위한 프로그램 기법 - Garbage Collection에 의한 메모리 자동 관리 - 멀티쓰레드 지원 - JVM상에서 동작하기 때문에 OS에 종속적이지 않고 이식성이 좋으며, 보안성이 좋다. 단, JVM은 OS에 종속적이므로 여러가지 버전이 제공된다. - 다양한 Open 소스 및 라이브러리들이 존재
Primitive Type으로 표현 가능한, 간단한 데이터를 객체로 만들어야 할 경우 이러한 기능을 지원하는 클래스. 매개변수로 객체가 요구되는 경우, 제네릭에서 기본형을 사용할 수 없기 때문에 사용 byte – Byte short – Short int – Integer long – Long char – Character float – Float double – Double boolean - Boolean * 박싱(Boxing)과 언박싱(Unboxing) Boxing 자료형 : Wrapper 클래스 (Integer) Unboxing 자료형 : Primitive 자료형 (int)
Primitive : 변수에 값 자체를 저장, boolean, byte, char, short, int, float, long, double 8가지 Reference : 메모리 상에 객체가 있는 위치를 저장. 클래스타입, 인터페이스타입, 배열타입, 열거타입 등
Integer.valueOf(String) : Integer 클래스로 리턴하기에 산술연산 불가. 음수 지원X Integer.parseInt(String) : int 형으로 리턴하기에 null값이 들어가면 안됨. 음수 지원 O