- [Java 정리] Thread 1starryeye이미 알던 지식이지만, 기본으로 돌아가서.. Java의 관점에서 한번 정리해보자. 프로세스와 쓰레드 Process 실행 중인 프로그램(어플리케이션) OS 커널로 부터 실행에 필요한 자원(가상 메모리)를 할당 받아 프로세스가 된다. 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있다. 하나의 프로세스 내에 쓰레드 개수는 제한 되어 있지 않지만, 쓰레드에 개별적인 메모리 공간(호출 스택)을 할당해주므로 프로세스의 메모리 한계에 따라 정해진다. Thread 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 쓰레드이다. 모든 프로세스는 최소한 하나 이상의 쓰레드가 존재한다. 둘 이상의 쓰레드를 가진 프로세스를 멀티 쓰레드 프로세스라 한다. 스케쥴러는 프로세스 또는 쓰레드 ..
- 2022-08-13 18:19:16
- [Java 정리] String, final, Immutablestarryeye자바 기본 객체인 String은 immutable 객체이다. immutable객체? 불변 객체라는 뜻이다. 한번 객체에 값이 할당되면 더 이상 데이터가 변하지 않는 속성을 가지고 있다. 대표적으로 String, Integer, Boolean 등이 있다. 장점 : 값이 변하지 않기 때문에 신뢰도가 높다. 멀티 쓰레드 환경에서 자주 쓰인다. (thread-safe) 단점 : 값을 변경해야 할때마다 새로운 객체를 생성해내야 하므로, 성능 문제가 생긴다. String a = "a"; a += "b"; 위 코드에서 변경이 일어난거 같은데? 사실 참조자가 변한 것이다.. 참조자가 변했다고? java의 String 클래스는 두가지로 선언 할 수 있다. String a = "a"; String b = new Strin..
- 2022-08-05 22:55:17
- [Java 정리] Garbage Collector 1starryeyeJava는 개발자가 메모리를 관리할 필요가 없다.. (C++는 직접 관리 해야함.. 스마트 포인터 생각X) 어디서 어떻게 관리 해줄까... JVM의 Garbage Collector(GC)에서 메모리를 관리해준다. Heap영역에 생성된 메모리 영역 중, 더 이상 참조되지 않는 것들을 정리해준다. 간단하게 동작을 알아보자.. void testMethod() { ... String str = new String("Hello"); ... } 위와 같이, 코드가 작성되어 있다면... 아래와 같이 메모리가 사용될 것이다.. 그러다가.. 해당 testMethod 로직이 모두 수행되고 리턴될 때, 지역변수인 str은 사라지게 된다. 그때, 힙 영역의 "Hello"는 도달할 수 없는 객체인 Unreachable Obje..
- 2022-07-30 03:06:12
- [Java 정리] 내부 클래스starryeye클래스 안의 클래스, 내부 클래스에 대해 알아보자. public class outerClass { //InnerClass class InnerClass { } //Static InnerClass static class InnerStaticClass { } public static void main(String[] args) { //내부 클래스 TEST outerClass.InnerClass tmp1 = new InnerClass().new InnerClass(); outerClass.InnerClass tmp2 = new InnerClass().new InnerClass(); int a = 0; if(tmp1 == tmp2) a = 0; else a = 1; //내부 static 클래스 TEST oute..
- 2022-07-28 00:03:08
- [Java 정리] Exception, ErrorstarryeyeJava의 예외에 대해 알아보자. java의 예외도 객체이다. 따라서 상속 구조를 가지며, 계층이 존재한다. Java 예외 계층 Throwable 최상위 예외이며 Object를 상속 받고있다. 개발자는 Throwable 예외를 catch로 잡으려고 하면 안된다. -> 최상위 예외를 잡으면 그 하위 예외도 같이 잡힌다. -> 아래의 Error 예외도 같이 잡히기 때문이다. Error 언체크 예외이다. 애플리케이션에서 복구 불가능한 시스템 예외이다. 따라서 개발자는 Error 예외를 catch로 잡으려고 하면 안된다. Exception 체크 예외이다. Exception 예외와 하위 예외는 "컴파일러가 체크"하는 체크 예외이다. (아래의 RuntimeException은 컴파일러가 잡지 않는다.) Runtime..
- 2022-07-15 23:34:34
- [Java 정리] AnnotationstarryeyeAnnotation은 C++ 개발자 입장에서 처음 마주하였을때, 가장 당혹스러운 문법이라 생각한다... Annotation 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함 시킨 것이다. 에노테이션은 주석처럼 프로그래밍 언어에 영향을 미치치 않으면서도 다른 프로그램에게 유용한 정보를 제공할 수 있다. Example> 자신이 작성한 소스코드 중에서 특정 메서드만 테스트 하길 원함 -> @Test라는 에노테이션을 메서드 앞에 붙임 @Test public void mothod() { ... } @Test는 주석 처럼 존재 하지 않는 것이다. 그러나 미리 약속된 프로그램에게는 의미가 있다. (약속되지 않은 프로그램에게는 의미가 없으며 주석이다..) (미리 정의된 종류와 형식으로 작..
- 2022-04-09 03:25:29
- [Java 정리] enumstarryeyeC와 다르다.. class Card { ... enum Kind { CLOVER, HEART, DIAMOND, SPADE } enum Value { TWO, THREE, FOUR } final Kind kind; // 변수 타입 주의 final Value value; } java의 enum은 타입에 안전하다. if(Card.Kind.CLOVER == Card.Value.Two) // compile err C의 경우엔 실제 값만 일치해도 true이지만 java는 타입까지 보기 때문임 Enum Class enum Direction { ... EAST(1, ">"), SOUTH(5, "V"), WEST(-1, "
- 2022-04-09 01:54:46
- [Java 정리] GenericsstarryeyeGenerics 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스를 컴파일 시점에 타입 체크를 해주는 기능 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어듬 (generic 타입은 컴파일러가 컴파일할 때만 사용하고 제거) Generics의 장점 1. 타입 안정성을 제공 2. 타입 체크와 형변환을 생략할 수 있으므로 코드가 간결해짐 -> 객체의 타입을 미리 명시해줘서 번거로운 형변환을 줄여준다. Generic Class 선언 class Box { T item; void setItem(T item) { this.item = item; } T getItem() { return item; } } // generic type T 선언 T : 타입 변수 Gener..
- 2022-04-09 01:00:03
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)