본문 바로가기

Java12

[java] Java 에서 Stream 사용하기 오늘은 Stream 을 사용하는 방법에 대해 쭉 정리를 해보고자 한다. Stream 생성하기 stream 은 두가지 방법으로 생성이 가능하다. Collection 으로 생성하기 // Collection(List) 로부터 스트림 생성 List collection = Arrays.asList("a", "b", "c", "e", "f"); Stream collectionStream = collection.stream(); Array로 생성하기 // 배열로부터 스트림을 생성 Stream arrayStream1 = Stream.of("a", "b", "c"); //가변인자 Stream arrayStream2 = Stream.of(new String[]{"a", "b", "c"}); Stream arrayStrea.. 2021. 11. 10.
[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] 멀티 스레드 동시성 제어 하이 ..! 지난번 글에서 내가 멀티 스레드에 대해 포슽팅을 했었다. 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.
재귀 함수 정리 하이 ... 요즘은 정말 틈틈이 시간을 내서 알고리즘을 열심히 공부하고 있는 중이다. 예전에 취업 준비할 때는 알고리즘에 대해 자신감도 있었고, 문제도 곧잘 풀었었는데 뭔가 공부를 다시하려니 마음먹은대로 쉽게 되진 않는다. 사설이 조금 길었다. 오늘은 알고리즘 문제에서 다양하게 많이 사용되는 재귀함수에 대한 내용을 정리해 두려고 한다. 1. 스택 프레임 먼저 재귀함수에 대해 알기 위해서는 스택 프레임이라는 것을 잘알아야 한다. 스택 프레임이란 스택 영역에 차례로 저장되는 함수의 호출 정보를 의미한다. 보통의 언어에서 메모리의 스택 영역은 함수의 호출이랑 그와 관련된 지역 변수와 파라미터를 저장한다. 이 스택영역은 함수의 호출이 완료되면 소멸된다. 우리가 흔히 들어본 스택 오버플로우가 바로 이 영역이 넘쳐.. 2021. 7. 27.
[JAVA] JAVA 메모리 이야기 - Stack 과 Heap 하이.. ! 어느날 회사의 누군가 Java의 메모리가 어떻게 관리되는지에 대해서 물어봤다. 대답이 많이 나오지 않았다... 나름대로 Java를 제일 잘한다고 생각했었고, 자신감도 있던 상태라 충격이 컸다.. 그래서 오늘부터 자바의 기본에 대해 정리를 해보려 한다. 부족하겠지만 재밌게 읽어주셨으면 한다. 먼저 오늘은 정말 기초적인 내용이다. Java 에서 메모리 관리가 어떻게 이루어지는지를 작성해보도록 하겠다. JVM? 먼저 메모리를 알기전에 JVM이 뭔지 간단하게 정리하고 넘어가자. 나는 지금 집에서 윈도우 PC 에서 개발을 하고 글도 적고 하고 있다. 그리고 회사에 가면 Mac Mini도 사용한다. Mac Mini의 OS는 iOS 이다. JVM은 이런 OS의 메모리 영역에 접근해서 Java의 메모리를 .. 2021. 4. 24.
[Linux] Oracle 자바 설치하기 was로 weblogic을 설치해서 사용하려고하는데, 이미 리눅스상에 오픈 소스 자바가 설치되어 있어 오라클 사의 자바로 재설치를 해보려고 한다. 먼저 기존 자바 버전을 확인해보면 아래와 같이 Openjdk가 설치된 것을 확인할 수 있다. 다음은 자바가 설치된 위치로 가보자. 우리는 오라클 java를 다시 설치해야하니 기존에 설치된 녀석을 따로 백업해두자. 아래의 방식처럼 해주면된다. 백업한 뒤에 자바 버전 체크 명령어를 던지면 당연히 ... 안된다. (/usr/bin/java 디렉토리가 디폴트로 환경변수로 세팅되어 있었기 때문이다.) www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 이제 위의 링크를 타고들어가서 jdk 를 다운 받자.. 2020. 8. 10.