공부 57

[백준] 10870번 피보나치 수 5

문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다. 출력 첫째 줄에 n번째 피보나치 수를 출력한다. 풀이 n이 최대 20으로 크지 않기 때문에 재귀를 이용해서 풀 수 있다. 재귀함수의 매개변수 ..

공부/알고리즘 2020.11.14

[백준] 10872번 팩토리얼

문제 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N(0 ≤ N ≤ 12)가 주어진다. 출력 첫째 줄에 N!을 출력한다. 풀이 재귀 함수를 사용한다. 재귀 함수에 매개변수로 n을 넘기고 다음번에는 n-1을 넘긴다. n이 0이되면 재귀를 종료한다. 소스코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); System.out.println(factorial(n)); } public static int factorial..

공부/알고리즘 2020.10.31

Spring boot와 MySQL을 Docker 컨테이너로 올리기

Spring boot로 어플리케이션 개발하던 중 도커를 이용하여 동작시키면 어떨까 하여 진행하였고, 그 과정에 여러 가지 일들을 기록하고 공유하고자 한다. 먼저 어플리케이션은 spring boot로 되어있고 데이터베이스는 mysql을 사용한다. mysql과 spring boot를 도커 컨테이너로 각각 올려야 한다. 이 과정에서 docker compose라는 것을 사용하여 같이 동작시키고 한 네트워크 안에서 만들 수 있으나, 데이터베이스와 어플리케이션을 분리하여 관리하고 싶어서 docker composer를 사용하지 않았다. 각각의 docker 컨테이너를 실행시킬 때 문제는 컨테이너 간 네트워크가 연결되어야 한다는 것이다. 도커 네트워크에 대해서는 아래 블로그에 자세하게 나와 있어 확인이 가능하다. jun..

공부/Spring 2020.08.22

Java가 Call by reference가 아니라 Call by Value 인 이유

java가 call by reference가 아니라 call by value인 이유를 알아보겠습니다. call by reference : 참조에 의한 호출, 함수에서 인자 값을 넘길 때 레퍼런스(객체를 참조하는 주소)를 넘김. call by value : 값에 의한 호출, 함수에서 인자 값을 넘길 때 값을 복사해서 넘김. 먼저 예제 코드 전체를 보겠습니다. public class Main { public static void main(String[] args) { Persion personA = new Person("Choi"); changeName(personA, "Park"); System.out.println(personA.getName());// Park changePerson(personA); ..

공부/Java 2020.08.20

내가 만든 Java gradle 라이브러리를 maven repository 에 등록하기 회고

java 라이브러리를 만들었고 maven repository에 등록을 하였다. 그 방법이 매우 어렵고 복잡하여 (php의 경우 간단함) 간단하게라도 정리하고자 한다. 이 과정에서 많은 도움이 되었던 글을 공유한다. 이 글 보고 따라 하면 다들 성공할 것으로 생각된다. (다만 maven프로젝트에 대한 설명이다. gradle의 설정에 대한 정보는 아래 첨부한다.) 정리가 매우 잘되어있어 많은 도움이 되었다. (감사합니다) https://jojoldu.tistory.com/161 Java 라이브러리 maven 저장소에 등록하기 안녕하세요? 이번 시간엔 Java 라이브러리 maven 저장소에 등록하는 방법을 소개드리려 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다...

공부/Java 2020.07.27

내가 만든 PHP composer package를 packgist.org 에 등록하기

php에서는 패키지간 의존성 관리를 위한 도구를 composer라고 한다. 필요한 패키지를 composer를 통해 설치하고 사용할 수 있다. 패키지를 packgist.org에 등록을 하게 되면 아래와 같은 명령어로 설치가 가능하다. composer {package_name} install 직접 php package를 만들어 packgist.org에 등록하였다. 이 방법을 공유하고자 글을 쓴다. 참고로 java 라이브러리를 만들어 maven repository에도 등록하였는데 php에 비해 매우 복잡하다. 그 방법은 여기 링크를 통해 확인 가능하다. 그 방법은 간단하게 설명하면 패키지를 만들고 github에 업로드하고 packgist.org에 깃헙을 연동하면 끝이다. 매우 간단하지만 아래 조금더 자세하게 ..

공부/PHP 2020.07.27

Gradle 프로젝트에서 junit5 실행하기

java로 graddle프로젝트를 생성하여 개발하려고 하였다. junit5로 테스트하려고 하였으나 테스트가 되지 않아서 여기저기 찾아보고 삽질하여 답을 찾았다. 나와 같은 사람들이 이 글을 보고 빠르게 해결하기를 바라며 공유하고자 한다. 1. intellij에서 java gradle 프로젝트를 생성한다. 2. gradle에 junit5 추가 junit5를 이용하여 코드를 작성하기 위해선 junit-jupiter-api가 필요하다 그리고 테스트 실행하기 위해서 junit-jupiter-engine이 필요하다. maven repository에서 junit을 검색하였다. 아래와 같이 사용하라고 나온다. testCompile group: 'org.junit.jupiter', name: 'junit-jupiter..

공부/Java 2020.07.18

[PHP] APCu 프로세스 간 자원 공유

APCu는 APC에서 opcode 캐시 부분만 제거된 모듈로 데이터를 공유 메모리에 저장하여 프로세스 간 데이터를 공유할 수 있는 기능을 제공한다. APC란 Alternative PHP Cache (APC) 정의 Alternative PHP Cache (APC)는 PHP를 위한 무료 opcode 캐시입니다. 그것의 목표는 PHP 중간 코드를 캐싱하고 최적화하기 위한 자유롭고 개방적이며 견고한 프레임 워크를 제공하는 것입니다. php manual unhosted.tistory.com 멀티 프로세스를 동작하는 php특성상 프로세스가 종료될 때 자원이 해제되어 자원을 공유하기 위해서는 DB형태로 저장해야 된다고 생각하였으나, APCu를 이용하여 프로세스 간 자원 공유를 사용할 수 있다는 것을 알게 되었다. 실..

공부/PHP 2020.07.16

Alternative PHP Cache (APC)

정의 Alternative PHP Cache (APC)는 PHP를 위한 무료 opcode 캐시입니다. 그것의 목표는 PHP 중간 코드를 캐싱하고 최적화하기 위한 자유롭고 개방적이며 견고한 프레임 워크를 제공하는 것입니다. php manual에는 아래와 같은 경고 문구가 나온다. 현재는 개발이 중단되었으며 opcode 캐시 기능이 제외되고 데이터 스토어 기능만 지원하는 APCu로 대체되었다. APCu를 사용하여 프로세스 간 데이터 공유를 할 수 있게 되었는데. 아래 링크에 자세하게 설명되어있다. unhosted.tistory.com/39 [PHP] APCu 프로세스 간 자원 공유 APCu는 APC에서 opcode 캐시 부분만 제거된 모듈로 데이터를 공유 메모리에 저장하여 프로세스 간 데이터를 공유할 수 있..

공부/PHP 2020.07.10

OAuth 2.0 인증 서버 (Authorization Server)

스프링 부트로 OAuth 2.0를 만들기로 하면서 OAuth 2.0에 대해 공부하는 중이고 알게 된 내용을 정리하려고 한다. 카카오 간편 로그인과 RFC문서를 참조하였으며 api 명세는 카카오 간편 로그인과 거의 동일하다. 보안에 가장 적합하다고 판단되는 Authorization Code 방식에 대한 내용만 작성하였다. 먼저 인증에 필요한 용어들 1. Resource Owner : 자원 소유자 (사용자) 2. Client : 사용자가 사용할 어플리케이션 4. Authorization Server : 인증 서버 (권한 서버). 어플리케이션을 사용하기 위해 인증절차를 수행해야 하는 서버 5. Resource Server : 어플리케이션에서 사용할 데이터가 저장되어있는 서버 6. User-Agent : 사용자..

공부/etc 2020.06.06
728x90
반응형