본문 바로가기

분류 전체보기382

[Spring Cloud MSA] Eureka Server 구동하기 오늘은 Eureka Server를 직접 구동해보려고한다. Eureka는 MSA 에서 마이크로서비스들의 정보를 레지스트리에 등록할 수 있게 하고, 마이크로 서비스의 동적인 탐색과 로드밸런싱을 할 수 있게 도와주는 역할을 한다. Eureka는 Eureka Server와 Eureka Client (Zuul 과 마이크로서비스), 로 구성되는데, Eureka Server에는 마이크로서비스들에 대한 정보가 등록되어 있다. 1.MSA를 구성하는 서비스들의 정보(IP, Port, AppName, instanceId)를 Eureka Server에 전달 2. Service들이 정보를 사용하려 할때 정보를요청 3. 해당 정보를 이용하여 통신 수행 Intellij 환경에서 한번 프로젝트를 만들어보자. 이전에 내가 Spring.. 2021. 9. 10.
[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.
dfs를 이용한 순열 구하기 하이 .. 전에 dfs 알고리즘에 대해 글을 올린적이 있다. https://devkingdom.tistory.com/263?category=956302 DFS (Depth-First Search) 알고리즘 정리 오늘은 알고리즘에서 가장 중요한 개념중에 하나인 DFS에 대해 설명을 드리고자 한다. DFS는 다양한 경우의 수를 구할때 굉장히 많이 쓰이는 알고리즘이나 꼭 익혀두길 권장한다. 일단 코드소스 devkingdom.tistory.com 오늘은 우리가 고등학교 시절 수학시간에 배웠던 순열, 조합 을 dfs 알고리즘을 이용해서 구현해보려고한다. 중복순열 중복순열은 서로 다른 n개 중 r 개를 순서를 고려해서 나열하는 순열을 의미한다. 기로호는 nΠr 로 나타낼 수 있다. 이를 dfs로 각 경우의 수를 p.. 2021. 9. 6.
[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.
[Database] Join 정리 오늘은 간단하게 Join에 대해 정리해 보고자한다. Join은 크게 다섯가지로 생각하면된다. 아래 그림을 보자. 보시면 집합의 개념으로 Join을 이해하면 쉽게 이해할수 있다. 먼저 Inner Join 같은 경우에는 집합의 교집합과 같다. 조인이 되는 키를 기준으로 둘 이상의 테이블에 존재하는 데이터를 조회하는 것이고, 보통 Simple Join이라고 부르기도 한다. 여기서 Null 인 데이터는 포함되지 않는다. 사용 예시는 아래와 같다. SELECT * FROM TABLE1 t1 INNER JOIN TABLE2 t2 ON (t1.key=t2.key); 다음 Outer Join은 두테이블에서 지정된 쪽 ( Left or Right or Full) 의 모든 결과를 보여주면서 반대쪽에 매칭되는 쪽까지 보여주.. 2021. 8. 21.
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.