본문 바로가기

반응형

컴퓨터/JAVA

(20)
자바 고급 스터디 12 . 동시성 문제 자바 고급 스터디 목록 공부 시간 : 2021/05/29 19:50 ~ 22:40 11주차. 동시성 문제 동시성 프로그래밍에서 발생할 수 있는 문제점 CPU 가 어떠한 작업을 위해 RAM에 저장되어 있는 일부분을 CPU cache memory로 읽어들인다. 작업을 수행하고 나면 CPU cache memory에서 ram으로 데이터를 쓰게된다. 하지만, 이러한 과정에서 CPU 작업이 끝난 직후 ram에 데이터를 쓰는 것은 아니다. (가시성 문제) 위 이유와 함께 ram의 데이터를 cpu core1과 core2 에서 동시에 읽고, ram에 쓰는 시점은 다를 때(동시 접근 문제) 발생하게 되는 문제를 동시성(병렬성) 문제라고 한다. public class Thread { private static boolean..
자바 고급 스터디 11 . Blocking vs Nonblocking, Synchronous vs Asynchronous 자바 고급 스터디 목록 공부 시간 : 2021/05/23 15:50 ~ 16:50 11주차. Blocking vs Nonblocking, Synchronous vs Asynchronous Blocking vs Blocking 블로킹과 논블로킹의 차이는 함수호출과 결과 리턴에 대한 이야기이다. (기술적으로 명확하게 구분된다.) Blocking A 라는 함수를 호출 했을때, 기대하는 행위(동작)을 모두 마칠때까지 기다린 후, 결과값을 리턴함. NonBlocking A 라는 함수를 호출 한 후, 기대하는 행위(동작)을 요청 한 후 바로 리턴함. 함수를 실행한 후 리턴하는데 까지 시간이 얼마나 걸리는지로 블로킹 / 논블로킹을 판단 할 수도 있다. "Hello World"를 출력하고 결과를 반환하는 함수의 경우에..
자바 고급 스터디 10. 인터페이스, 추상클래스, Enum 자바 고급 스터디 목록 공부 시간 : 2021/05/15 14:30 ~ 16:20 10주차. 인터페이스, 추상클래스, Enum 인터페이스와 추상클래스의 문법에 대해 정리하기 보단 자바8 이후 인터페이스도 default 메서드를 가질 수 있게 된 이후 차이점에 대해서 정리해보려고 한다. 인터페이스, 추상클래스 공통점 인스턴스를 생성 할 수 없다. 구현부가 있는 메서드, 구현부가 없는(추상 메서드)를 모두 가질 수 있다. 인터페이스, 추상클래스 차이점 기능적인 부분 인터페이스의 모든 변수는 public static final 이고(immutable), 모든 메서드는 public abstract이다. 추상클래스의 변수는 static final 이 아닌 필드도 가질 수 있고(mutable), 메서드를 publi..
자바 고급 스터디 9. static에 대하여 자바 고급 스터디 목록 공부 시간 : 2021/05/09 19:00 ~ 20:30 9주차. static에 대해여 static 이란? 정적인, 고정된 이라는 의미를 가진 키워드로써 변수, 메서드, 클래스 앞에 위치 할 수 있다. static 키워드를 붙히게 되면, Heap 영역이 아닌 Method Area(static 영역)에 생성된다. ( 1.8이전) metaspace 혹은 heap 영역에 생성된다. (1.8 이후) static의 특징 static 영역 혹은 metaspace에 생성되어, 인스턴스를 생성하지 않아도 접근할 수 있다. static 으로 선언하면 해당 변수를 모든 곳에서 공유할 수 있다. gc의 대상이 되지 않는다.(java 1.8 이전) gc의 대상이 된다.(java 1.8 이후) stat..
자바 고급 스터디 8. garbage collector 종류 자바 고급 스터디 목록 공부 시간 : 2021/05/02 16:40 ~ 18:30 8주차. gc종류별 차이점 Java 7,8 에서는 기본적으로 Parallel gc를 사용하며, Java 9~12에서는 G1 gc를 사용한다. Java 11에서는 z GC를 시범적으로 사용하고 있다고 한다. 각각 gc의 하나하나 동작원리를 살펴보기 보다는 어떠한 장점이 있고 버전이 올라가게 되면서 gc 종류를 바꾼 이유를 중점으로 알아보려고 한다. Serial GC 이름에서도 알 수 있듯이, 순차적인, 직렬로 실행되어 Mark-Sweep이 한번에 하나씩만 실행된다. 가장 오래된 GC 종류이며 최근에는 사용되지 않는다. 그 이유는 stop-the-world가 빈번하게 발생하기 때문이다. 서버의 cpu코어가 1개일 경우를 생각하..
자바 고급 스터디 7. garbage collector 자바 고급 스터디 목록 공부 시간 : 2021/04/08 21:20 ~ 22:40 / 2021/04/11 11:00 ~ 11:40 7주차. gc의 동작원리와 gc가 언제 작동되는지 설명하세요. garbage collector 이란? 가비지 컬렉션을 한마디로 표현하면, 사용하지 않는 메모리를 해제해주는 것이다. C, C++와 같은 언어들의 경우에 개발자가 직접 사용하지 않는 메모리가 어떤 것 인지 판단하여 해제하는 과정이 필요하다. 하지만 자바에서는 자바에서는 가비지 컬렉터가 사용하지 않는 메모리를 탐지하여 해제해준다. garbage collector 사용시 얻을 수 있는 장점, 한계 장점 개발자가 직접 메모리 영역 전체를 컨트롤하지 않아도 됨. 잘못된 메모리 접근으로 발생하는 Crash 현상 방지 가능...
자바 고급 스터디 6. 리플렉션 (reflextion) 자바 고급 스터디 목록 공부 시간 : 2021/04/07 21:20 ~ 22:40 6주차. 리플렉션에 대해서 설명하세요. 리플렉션이란? 리플렉션은 구체적인 클래스 타입을 알지 못해도, 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API 리플렉션의 정의를 보고 한번에 이해하기는 쉽지않다. 구체적인 클래스 타입을 알지 못해도??? 라는 것이 정확히 어떤 의미인지 선뜻 이해하기 어렵고, 또 구체적인 클래스 타입을 모르는 것을 사용할 일이 있을까? 라 생각이 들기도 한다. 먼저 구체적인 클래스 타입을 모르는 것의 예시를 들어보자. public class Student() { public void study() { // do study } public static void main(Stri..
자바 고급 스터디 5. generic type erasure(제네릭 타입 소거) 자바 고급 스터디 목록 공부 시간 : 2021/04/06 24:00 ~ 24:40, 04/07 11:00 ~ 5주차. generic type erasure(제네릭 타입 소거)에 대해서 설명해보세요. 제네릭 이란? 자바에서 제네릭이란 클래스나 메소드에 사용할 내부 데이터 타입을 컴파일 시점에 미리 정하는 방법이다. 제네릭을 사용함으로써 얻을 수 있는 장점은 무엇일까? 객체의 타입 안정성을 높힐 수 있다. 반환값의 타입 변환, 타입 검사에 대한 것을 생략할 수 있다. public class dd { List list = new ArrayList(); List list = new ArrayList(); } 제네릭을 위와 같이 사용 하면 제네릭을 사용하는 장점을 잘 살릴 수 있을지 생각해보자. 먼저 타입안정성에..

반응형