[JAVA] SpringBoot 자동 리로드(liveReload) 설정 및 사용방법
·
프로그램/ETC
안녕하세요! 프뚜입니다. java, xml 등의 파일이 변경되면 server를 재시작해야 반영됩니다. 과거에는 jrebel을 통해서 서버 재실행을 하지 않고 사용했습니다. SpringBoot에서는 jrebel없이 사용할 수 있습니다. [개발 환경] - OS: Windows 10 64bit - JAVA: 11 build.gradle에 추가하기 // 2022.12.12[프뚜]: 소스코드 자동 리로딩 implementation("org.springframework.boot:spring-boot-devtools:2.7.6") Settings > Build, Execution, Deployment > Compiler > Build project automatically 체크하기 Edit Configurations..
[Kotlin] 코틀린의 NPE (Null Point Exception) 처리 방법
·
프로그램/KOTLIN
안녕하세요! 프뚜입니다. NPE(Null Point Exception) 처리 방법에 대해서 포스팅하려고 합니다. [개발 환경] - OS: Windows 10 64bit - JAVA: 11 null 대입하기 var로 선언된 변수에 null을 대입하려고 하니 컴파일 에러가 발생합니다. 변수 타입 뒤에 ?를 붙여서 null을 허용해주어야 합니다. null 체크하기 String으로 선언된 변수에 초기값을 지정했으나, null 허용(?)을 했기 때문에 null 체크 없이 변수를 사용할 수 없습니다. null 체크를 하고 나니 사용할 수 있습니다. 하지만 if로 체크하는 방법 말고 다른 방법이 있습니다. 변수명 뒤에 ?를 붙여서 null이 아닌 경우 length를 구하고 null이면 NPE가 아닌 null을 ret..
[Kotlin] 코틀린의 함수 (fun)
·
프로그램/KOTLIN
안녕하세요! 프뚜입니다. 하나의 기능을 구현한 명령어의 집합을 함수(function)라고 합니다. [개발 환경] - OS: Windows 10 64bit - JAVA: 11 코틀린의 함수 선언 fun을 통해 함수를 선언할 수 있습니다. 키워드 함수명(입력 값): 리턴 타입 { .... return 값 } 함수명 - 키워드 다음에는 한 칸을 띄우고 소문자 시작으로 카멜케이스 형식의 함수명을 가집니다. 선언한 함수명을 통해 함수에 접근할 수 있습니다. 입력 값 - 입력 받을 값 들을 나타냅니다. 여러 값일 경우 콤마(,) 를 통해서 이어 붙일 수 있습니다. (파라미터) 리턴 타입 - 함수의 결과를 반환할 타입을 나타내는 부분입니다. 리턴 값 - 함수 본문({ }) 블럭 사이에 함수의 본문이 들어올 수 있습니..
[Kotlin] 코틀린의 반복문, 조건문, 선택문
·
프로그램/KOTLIN
안녕하세요! 프뚜입니다. 반복문과 조건문에 대한 사용법에 대해서 알아보도록 하겠습니다. [개발 환경] - OS: Windows 10 64bit - JAVA: 11 코틀린의 반복문 for와 while을 사용할 수 있습니다. for ([할당 변수] in [total 사이즈] step [증감 값]) - 증감에 따라 조건에 맞으면 반복합니다. for에서 가장 많이 사용하는 방식입니다. while (조건문) - 조건이 맞을 때까지 반복합니다. do { } while (조건문) - 조건이 맞을 때까지 반복하며, 조건이 맞지 않아도 최초 한 번은 실행됩니다. 코틀린의 조건문 조건문은 식표현(expression)입니다. 그렇기 때문에 반환 값을 가질 수 있습니다. 또한, 3항연산자를 지원하지 않습니다. 일반적으로 구문..
[Kotlin] 코틀린의 변수와 타입
·
프로그램/KOTLIN
안녕하세요! 프뚜입니다. 변수를 선언하고 초기화 값 지정 및 데이터 바인딩에 대한 사용법에 대해서 알아보도록 하겠습니다. [개발 환경] - OS: Windows 10 64bit - JAVA: 11 코틀린의 변수 키워드 변수명: 변수 타입 = "초기화값" 으로 변수를 선언할 수 있습니다. 키워드 변수명 = "초기화값" 으로 코틀린의 타입 추론을 통해서도 변수를 선언할 수 있습니다. 키워드(keyword) - 해당 변수가 변경이 가능 한지 여부를 선택할 수 있습니다. - val: 변경이 불가능한 변수로 지정합니다. (immutable) - var: 변경이 가능한 변수로 지정합니다. (mutable) 변수명 - 키워드 다음에는 한 칸을 띄우고 소문자 시작으로 카멜케이스 형식의 변수 이름을 가집니다. 선언한 변..
[docker] docker image를 github에 공유 및 배포하기
·
프로그램/DOCKER
안녕하세요! 프뚜입니다. docker에서 default image를 통해 container를 생성합니다. 기본적은 프로그램을 설치 후 새로운 image로 만든 뒤 그 이미지로 여러 개의 container를 만들어서 사용합니다. 하지만, image가 있는 PC의 저장소가 문제가 생기면 그 이미지는 사용할 수 없게 됩니다. github를 통해 관리 및 배포에 대해 알아보도록 하겠습니다. [개발 환경] - OS: Windows 10 64bit Github 로그인하기 Github PAT 발급 받기 Docker Login 하기 Docker Image Push 하기 1. Github 로그인하기(링크) Github에 로그인을 합니다. (제목에 링크가 있습니다.) 2. Github PAT 발급 받기(Personal A..
[Windows] 윈도우 Process Kill 하기 (프로세스 강제 종료)
·
프로그램/ETC
안녕하세요! 프뚜입니다. Linux 계열에서 process를 종료한적은 많았어도, Windows에서 프로세스를 종료하려고 했더니 명령어가 기억이 안나더라구요..... 저와 같은 개발자 또는 사용자분들을 위해 포스팅합니다. Linux는 kill -9 [pid]입니다. [개발 환경] - OS: Windows 10 64bit 1. Windows 프로세스 확인하기 netstat -nao | find "port" -n: 주소나 포트 형식을 숫자로 표현한다. -a: 모든 연결 및 수신 대기 포트를 표시한다. -o: 각 연결의 소유자 프로세스 ID를 표시한다. -c: 현재 실행 명령을 매 1초마다 실행한다. -l: LISTEN 하고 있는 포트를 보여 준다. -t: TCP 로 연결된 포트를 보여 준다. -u: UDP ..
[SpringBoot] Redis에서 keys VS scan 사용하기 (keys 대신 scan)
·
프로그램/JAVA
안녕하세요! 프뚜입니다. Redis는 Single Thread 아키텍처입니다. 블로킹의 영향으로 성능이 저하되고 장애가 발생할 수 있으므로 프로덕션 환경에서는 절대 사용하지 말아야한다고 알려져 있습니다. Redis > Keys는 Global Pattern으로 간단하게 모든 Key를 조회할 수 있고, 40ms 내에 100만 개의 key가 존재하는 데이터베이스를 스캔할 수 있다고 합니다. 하지만, 명령이 실행되는 도중에는 다른 모든 명령의 실행이 블로킹된다는 점 입니다. Redis > Scan은 non-blocking으로 비교적 안전하게 사용할 수 있습니다. 작은 단위로 증분 반복 순회를 하면서 데이터베이스를 스캔하기 때문입니다. [개발 환경] - OS: Windows 10 64bit - JAVA: 1.8 ..
프뚜
프뚜