개발/알고리즘

[알고리즘] GCD & LCM

최대 공약수 (Greatest Common Divisor)와 최소 공배수(least common multiple)를 구한다. 알고리즘으로는 유클리드 호재법을 사용하여 해결합니다. 큰 수를 작은수로 나눈 나머지를 0이 될때 까지 계속 나눕니다. 글로 적으니 복잡하네요. 아래의 코드를 보면 GCD 85를 51로 나눕니다. -> 나머지 34 51을 34으로 나눕니다. -> 나머지 17 34를 17로 나눕니다. -> 나머지 0 => 최대 공약수 : 17 LCM 두 수의 곱을 최대 공약수로 나눕니다. => 85 * 51 / 17 = 255 class Solution { @Test public void getGCD_LCD() { // given int x = 85; int y = 51; // when long gc..

2020.08.17 게시됨

개발/Spring

[Spring] Field Injection은 왜 나쁜가?

1. 도입 대부분 Intellij에서 다음과 같은 경고 때문에 이 글을 보고 있을 확률이 높습니다. 왜 이럴까요? 또한, 자세히 보면 인텔리제이는 다음과 같이 설명합니다. 2. 의존성 주입의 종류 스프링 공식 레퍼런스에서는 Constructor Injection과 Setter Injection 두 가지 만을 소개하고 있지만, 실제로 의존성 주입은 생성자 기반 : Constructor-based dependency injection 세터 기반 : Setter-based dependency injection 필드 기반 : Field-based dependency injection 와 같이 3가지로 구분되며, 보통 마지막 Field Injection을 제일 많이 사용합니다. 2-1. Constructor In..

2020.08.16 게시됨

개발/RDB

[MySQL] 설치 후 세팅 (한글, 시간등등)

MySQL 최초 설치시 세팅 목차. 1. 인코딩 2. 서버 시간 3. 외부 접속 허용 4. 결과 1. 인코딩 MySQL을 최초 설치하였을 경우 기본 인코딩은 latin1입니다. 적어도 제가 겪은 환경 (Window, Arch, Ubuntu, Centos)에서는 말이죠. 우리는 주로 UTF-8을 사용하기 때문에 최초 설치시에 수정을 해줘야만합니다. 일단 MySQL 부터 설치해봅시다. 환경 : (만만한) AWS EC2 Ubuntu Linux sudo apt-get install mysql-server # MySQL 설치 sudo mysql # MySQL 실행 # MySQL 진입 후 SHOW VARIABLES LIKE 'C%'; # 인코딩 설정 확인 해결 방법 1. URL 파라미터 사용 jdbc:mysql:/..

2020.08.13 게시됨

개발/Java

[Java] NIO, 그리고 Netty

NIO, 그리고 Netty Spring Webflux를 사용하는 상황이 와서 공부하게 되었다. Spring Boot도 2.x 버전부터 Webflux 선택시 내장 톰캣이 아닌 Netty를 기본설정으로 잡는다. Netty는 NIO 기반 네트워크 어플리케이션 프레임워크이기 때문에 NIO도 같이 정리하였다. NIO란? Java New Input/Output의 약자로 자바 4부터부터 지원된 생각보다 오래된 기능이며, 자바 7부터는 NIO2가 지원되었다. 다음은 NIO와 이전 IO 방식의 데이터 처리 비교이다. 이전 IO는 BIO라고 칭한다. BIO 기존 자바 I/O는 가상머신의 한계로 OS의 커널 버퍼를 직접적으로 핸들링 할 수 없었다. 왜냐하면 소켓이나 파일에서 Stream이 들어오면 커널 버퍼에 데이터를 써야..

2020.08.12 게시됨

개발/Java

[Reactive] Reactive Programming 과 Reactive Stream

Spring Webflux를 사용하면서 Reactive Programming 과 Reactive Strem에 대해 공부했던 부분을 정리합니다. 1. 리엑티브 프로그래밍이란? 단순히 이름만 듣고서는 어떤 뜻인지 정확하게 와닫지 않습니다.. [위키 피디아] 에서는 리엑티브 프로그래밍을 다음과 같이 정의하고 있습니다. In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. With this paradigm it is possible to express static (e.g., arrays) or dynamic (e.g., event..

2020.08.08 게시됨

개발/RDB

[Oracle] MacOS에서 오라클 사용하기

사용 툴 : Intellij IDEA 선행 조건 : [Docker For Mac] 설치 오라클 12c에 추가된 CDB와 PDB의 개념은 따로 설명하지 않는다. Docker에 자체에 대한 설명도 여기서 다루지는 않는다. 우선 Oracle은 공식적으로 MacOS를 지원하지 않는다. RBD 사용시 주로 Oracle을 사용하는데, 이로인해 MacOS 유저의 불편이 이만저만이 아니다. 원래라면 VM을 깔아야하지만, Docker를 통해 좀 더 쉽게 문제를 해결해보자. 대부분의 블로그가 [wnameless/oracle-xe-11g-r2] 이미지를 사용하여 이 방법을 설명하는데 이미 도커 허브에는 [Oracle 12c 공식 이미지]가 있기 때문에 공식 이미지를 사용하였다. 1. 도커 이미지 다운 및 컨테이너 생성 do..

2020.08.08 게시됨