Reflection 관련 클래스들 Class 클래스 메소드 이름 내용 String getName() 클래스의 이름을 리턴 Package getPackage() 클래스의 패키지 정보를 패키지 클래스 타입으로 리턴 Field[] getFields() public으로 선언된 변수 목록을 Field 클래스 배열 타입으로 리턴 Field getField(String name) public으로 선언된 변수를 Field 클래스 타입으로 리턴 Field[] getDeclaredFields() 해당 클래스에서 정의된 변수 목록을 Field 클래스 배열 타입으로 리턴 Field[] getDeclaredFiled(String name) name과 동일한 이름으로 정의된 변수를 Field 클래스 타입으로 리턴 Method[]..
synchronized 이해 하나의 객체에 여러 요청이 동시에 들어오면 원하는 처리를 하지 못하고 이상한 결과가 나올 수 있습니다. 그래서 synchronized를 사용하여 동기화를 하는 것입니다. 이 식별자를 사용하면 "천천히 하나씩 들어오세요."라고 해당 메소드나 블럭에서 제어하게 됩니다. *코드 예제 public synchronized void sampleMethod() { ... } private Object obj = new Object(); public void sampleBlock() { synchronized(obj) { ... } } 위 처럼 간단히 synchronized라는 식별자만 사용하면 동기화할 수 있습니다. 언제 동기화를 사용해야 할까 ? 하나의 객체를 여러 스레드에서 동시에 사..
Thread 클래스 상속과 Runnable 인터페이스 구현 스레드의 구현은 Thread 클래스를 상속받는 것과 Runnable 인터페이스를 구현하는 2가지 방법이 있습니다. Thread 클래스는 Runnable 인터페이스를 구현한 것이기 때문에 어느 것을 사용해도 상관은 없지만, Runnable 인터페이스를 구현하면 원하는 기능을 추가할 수 있습니다. 이것은 장점이 될 수도 있지만, 해당 클래스를 수행할 때 별도의 스레드 객체를 생성해야 한다는 단점이 있을 수 있습니다. 또한 자바는 다중 상속을 허락하지 않습니다. 따라서 스레드를 사용할 때 이미 상속받은 클래스가 있다면 Runnable 인터페이스를 구현해야 합니다. Runnable 인터페이스를 구현한 클래스 public class RunnableImpl..
프로세스와 스레드 하나의 프로세스에는 여러 개의 스레드가 생성됩니다. 단일 스레드가 생성되어 종료될 수도 있고, 여러 개의 스레드가 생성되어 수행될 수도 있습니다. 그러므로, 프로세스와 스레드의 관계는 1:N 이라고 할 수 있습니다. 스레드는 다른 말로 Lightweight Process(LWP)라고도 합니다. 즉, 가벼운 프로세스이고, 프로세스에서 만들어 사용하는 메모리를 공유합니다. 그래서 별개의 프로세스가 하나씩 뜨는 것보다 성능이나 자원 사용에 있어 많은 도움이 됩니다.
기본적인 IO 처리 자바에서 입력과 출력은 stream을 통해서 이루어집니다. 일반적으로 IO라고 하면 파일IO만을 생각할 수 있는데, 어떤 디바이스를 통해 이뤄지는 작업을 모두 IO라고 합니다. 네트워크를 통해서 다른 서버로 데이터를 전송하거나 다른 서버로부터 데이터를 전송 받는 것도 IO에 포함됩니다. 간단하게 콘솔에 출력하는 것도 stream을 통해서 출력하는 것입니다. 스트림을 읽는 데 관련된 주요 클래스는 다음과 같습니다. 스트림을 쓰는 데 관련된 클래스는 Input을 Output으로 바꾸면 됩니다. 여기에 명시된 모든 입력과 관련된 스트림들을 java.io.InputStream 클래스로부터 상속받았습니다. 바이트 기반의 스트림 입력을 처리하기 위해서는 이 클래스의 하위 클래스를 사용합니다. 이..
Static 자바 프로그래밍에서 성능을 향상시키는 방법은 여러가지가 있습니다. 그 중에서 한가지는 static을 사용하는 것입니다. static의 특징 자바에서 static으로 지정했다면, 해당 메소드나 변수는 정적입니다. (반대말은 dynamic) static으로 선언한 변수는 클래스 변수입니다. 하나의 JVM이나 WAS 인스턴스에서는 같은 주소에 존재하는 값을 참조합니다. GC의 대상이 되지 않습니다. static 활용 자주 사용하고 절대 변하지 않는 변수는 final static으로 선언하자. 설장 파일 정보도 static으로 관리하자. 클래스의 객체를 생성할 때마다 설정 파일을 로딩하면 엄청난 성능 저하가 발생합니다. 이럴 때 반드시 static으로 데이터를 읽어서 관리해야 합니다. 코드성 데이터..
Java System 클래스 모든 System 클래스의 메소드는 static으로 되어 있습니다. 그 안에서 생성된 in, out, err과 같은 객체들도 static입니다. 생성자(Constructor)도 없습니다. 결론적으로, 우리는 System 객체를 생성할 수 없으며, System.XXX와 같은 방식을 사용해야 합니다. 알아두면 유용한 System 클래스 메소드 static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 특정 배열을 복사할 때 사용합니다. src: 복사 원본 배열 dest: 복사한 값이 들어갈 배열 srcPos: 원본의 시작 위치 destPos: 복사본의 시작 위치 length: 복사하는 개수..
- Total
- Today
- Yesterday
- 404
- Runnable
- iinput
- Groovy
- ngrinder
- cors
- script
- redis
- 대규모
- https
- output
- class
- Java
- Cross Origin
- ehcache
- Token
- stateful
- JWT
- thread
- synchronized
- Spring Boot
- MongoDB
- auth
- SPOF
- stateless
- NoSQL
- HTTP
- web
- cross
- URI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |