본문 바로가기

Programming/JAVA27

[Java] Java Exception 처리하기 자바에서 에러나 예외 클래스의 계층 구조를 그려보면 위에 그려놓은 정보와 같다. 상위에 있는 Throwable 클래스를 기준으로 하여 Error 와 Exception 으로 나눠진다. Exception 은 또 컴파일 단계에서 발생할 수 있는 Checked Exception 과 실행 환경에서 발생할 수 있는 Unchecked Exception으로 나뉘어진다. 그리고 자바 같은경우에는 실행 시점에서 Error 가 날수도 Exception 이 발생할 수 도 있다. Error 에러가 발생하면 시스템이 비정상 종료된다든지 하는 비정상 상황이 생긴다. 대표적인 에러로는 메모리가 부족해서 생기는 OOM(Out Of Memory) Error 나 스택 영역의 메모리가 지정된 점위를 넘어갈 때 발생하는 Stack Overf.. 2021. 9. 15.
[Java] wait(), notifyAll() 를 활용한 스레드 동작 순서 제어 지난 포스팅에서 synchronized 키워드를 활용하여 동시성을 제어하는 걸 포스팅한적이 있다. https://devkingdom.tistory.com/276 [Java] 멀티 스레드 동시성 제어 하이 ..! 지난번 글에서 내가 멀티 스레드에 대해 포슽팅을 했었다. https://devkingdom.tistory.com/275 [Java] Multi Thread 처리 하이 오랜만에 글을 쓴다. 1.Thread란 오늘은 Java의 Thread 개념에 대해 다루.. devkingdom.tistory.com 오늘은 좀더 나아가서 Thread의 순서를 제어할 수 있는 방법을 정리해 보려고한다. 제어하는 방식은 wait()와 notifyAll() 을 활용하는 것이다. 아래 코드를 보면 vote 메서드와 vote.. 2021. 9. 9.
[Java] 객체 정렬하기 (Comparable 인터페이스 이용) 하이 .. 오늘은 자바에서 객체를 정렬하는 방법을 말씀드리려 한다. 예를 들어 키와 몸무게 정보를 가진 Player 클래스가 있다고 가정하자. 만약에 이 클래스의 키를 가지고 정렬을 하려면 아래와 같이 하면 된다. import java.util.ArrayList; import java.util.Collections; public class Temp1 { public static void main(String[] args) { ArrayList players = new ArrayList(); players.add(new Player(168, 62)); players.add(new Player(157,50)); players.add(new Player(182,70)); players.add(new Playe.. 2021. 9. 7.
[Java] 멀티 스레드 동시성 제어 하이 ..! 지난번 글에서 내가 멀티 스레드에 대해 포슽팅을 했었다. https://devkingdom.tistory.com/275 [Java] Multi Thread 처리 하이 오랜만에 글을 쓴다. 1.Thread란 오늘은 Java의 Thread 개념에 대해 다루려고 한다. 보통 대부분의 네트워크 통신을 거치는 프로그램은 멀티 스레드 환경에서 구현이 되어야한다. 간단하게 말해 devkingdom.tistory.com 오늘은 Multi Thread 의 동시성을 처리하는 방법에 대해 좀 얘기 해볼까한다. 블로그명이 IT 알려주는 은행원 이니 입금, 출금 등 은행 거래를 예시로 설명을 드리려 한다. 위의 그림에 표현된 계좌에는 동시 다발적으로 입금, 출금 ,조회가 일어난다. 그런데 여기서 문제가 하나 보인다.. 2021. 9. 2.
[Java] Multi Thread 처리 하이 오랜만에 글을 쓴다. 1.Thread란 오늘은 Java의 Thread 개념에 대해 다루려고 한다. 보통 대부분의 네트워크 통신을 거치는 프로그램은 멀티 스레드 환경에서 구현이 되어야한다. 간단하게 말해서 여러 클라이언트에서 들어오는 메시지를 동시에 처리할 수 있어야한다는 말이다. Java에서 특정한 Task를 돌릴때 동시에 여러 일을 처리하게 해야할 때가 있는데 이때 그 일을 수행할 녀석을 만든다. 이게 바로 Thread 이다. 이 Thread는 사용하는 Machine의 cpu 자원을 활용하여 할당되고 업무가 수행된다. 기본적인 내용이지만 같은 프로그램안에서 각각의 스레드는 서로가 생성한 객체를 공유하여 사용할 수 있다는 점도 알아두자. 뒤에 다룰 내용이지만 이 객체에 대한 동시성 , 동기화 문제를.. 2021. 8. 30.
Apache Kafka 정리 하이 .. 최근에 프로젝트를 진행하면서 대용량 실시간 데이터를 Apache Kafka를 이용하여 사용해 보았다. 간단하게 Kafka는 링크드인에서 2011년 오픈소스로 공개된 실시간 분산 데이터 처리 플랫폼이라고 할 수 있다. 예전에 이렇게 대용량 실시간 스트리밍 데이터를 처리하기 위해서는 redis나 rabbitMQ등의 다양한 어플리케이션을 사용하곤 했었는데, 이런 어플리케이션은 각각 특징이 다 달라서 데이터 파편화 현상이 있어서 유지보수에 어려움을 줬다. 그래서 이리한 문제를 해결해줄 수 있는게 바로 Kafka 이다. Kafka를 사용하면 Source 어플리케이션과 Target 어플리케이션간의 커플링을 약하게 할 수 있다. Kafka의 경우, 데이터 스트림을 각 어플리케이션에서 처리하는 것이 아닌 한.. 2021. 8. 19.
[Java] 람다식 (Lambda Expression) 오늘은 람다식에 대해 간단하게 정리해두려고 한다. 람다식은 Java 8 부터 지원하는 객체지향 프로그래밍과는 다른 함수형 프로그래밍 방식이다. 람다식은 익명객체를 더 간단하게 줄여서 사용하는 방식이라고 생각하면 된다. 람다식에서는 함수명이나 반환타입을 제거하고 (파라미터, ....) -> { 실행문 } 이형태로 사용하면 된다. 백문이 불여일타 이기 때문에 간단한 예제를 코딩으로 구현해보도록 하겠다. 우선 앞서 말한것 처럼 람다식이 익명 객체라고 했었다. 람다식을 사용하기 위해서는 우선 함수형 인터페이스를 만들어줘야한다. 함수형 인터페이스 @FunctionalInterface interface MyFunction { int max(int a, int b); } 코드를 보시면 @FunctionalInterf.. 2021. 8. 16.
[Java] JVM GC 기본 동작 방식 이해하기 예전에 내가 JVM 메모리가 어떻게 관리되는지 포스팅을 했었다. https://devkingdom.tistory.com/226 [JAVA] JAVA 메모리 이야기 - Stack 과 Heap 하이.. ! 어느날 회사의 누군가 Java의 메모리가 어떻게 관리되는지에 대해서 물어봤다. 대답이 많이 나오지 않았다... 나름대로 Java를 제일 잘한다고 생각했었고, 자신감도 있던 상태라 충격이 컸 devkingdom.tistory.com 오늘은 Heap 영역의 메모리를 청소하는 Garbage Collector 에 대해 알아보려고한다. 먼저 GC가 무엇인지부터 말씀드리겠다. GC는 JVM의 Heap 영역에서 사용하지 않는 객체를 없애주는 프로세스를 의미한다. Heap 영역에는 다양한 객체들이 올라와 있는데 이 객체.. 2021. 8. 4.
[JAVA] JAVA 메모리 이야기 - Stack 과 Heap 하이.. ! 어느날 회사의 누군가 Java의 메모리가 어떻게 관리되는지에 대해서 물어봤다. 대답이 많이 나오지 않았다... 나름대로 Java를 제일 잘한다고 생각했었고, 자신감도 있던 상태라 충격이 컸다.. 그래서 오늘부터 자바의 기본에 대해 정리를 해보려 한다. 부족하겠지만 재밌게 읽어주셨으면 한다. 먼저 오늘은 정말 기초적인 내용이다. Java 에서 메모리 관리가 어떻게 이루어지는지를 작성해보도록 하겠다. JVM? 먼저 메모리를 알기전에 JVM이 뭔지 간단하게 정리하고 넘어가자. 나는 지금 집에서 윈도우 PC 에서 개발을 하고 글도 적고 하고 있다. 그리고 회사에 가면 Mac Mini도 사용한다. Mac Mini의 OS는 iOS 이다. JVM은 이런 OS의 메모리 영역에 접근해서 Java의 메모리를 .. 2021. 4. 24.