자바를 설치할때 어떤 버전을 설치해야 할 지 고민이 될 것이다. 이때, 고려해야 하는것이 아래의 두 가지 이다. LTS 버전인지언제 까지 지원하는지 LTS 버전이란?LTS(Long-Term Support) 는 장기 지원 버전이라는 말로, 일반 버전과 달리 장기간에 걸쳐 보안 업데이트와 버그 수정을 보장받을 수 있다. 현재의 Java 버전은 아래와 같다. LTS 버전만 확인해보면 Java 8, 11, 17, 21, 25 버전 대상임을 알 수 있다. 하지만 너무 과거의 버전은 지원 만료 기간이 더 다가올 뿐더러, 최신 버전의 주요 기능을 사용할 수 없다는 단점이 있다. 25 버전은 현재 출시 전이기 때문에 가장 최신 버전인 21 버전을 설치하는 것이 좋을 것 같다. 만약 이전 버전을 사용하는 프로..
순환참조란?두 개 이상의 객체가 서로를 참조하여 끊을 수 없는 고리를 만드는 상황이다. 가비지 컬렉터 (Garbage Collector) 가 더 이상 사용되지 않는 객체라고 판단하지 못해서 메모리에서 해제하지 못하는 문제가 발생할 수 있다. 결국, 메모리 누수로 이어질 수 있다.주로 객체들이 서로를 필요로 하는 복잡한 관계를 가질 때 발생한다. Spring Bean 생성 메커니즘Spring IoC 컨테이너는 Bean 을 생성하고 관리하기 위해 체계적인 단계가 있다. 순환 참조는 이 과정에서 두 개 이상의 Bean 이 서로의 생성을 기다리며 무한 대기 상태에 빠질 때 발생한다. Bean 의 생성 과정 1. 정의(Definition)가장 먼저, Spring 컨테이너는 Bean을 어떻게 만들어야 하는지에 대..
open() 함수파이썬에서 파일 읽거나 쓰고 싶을 때 제일 먼저 쓰는 함수파일_객체 = open(파일_이름, 파일_열기_모드)file_fp = open("/content/file_fp", "r") 파일 이름열고 싶은 파일의 이름 작성, "my_file.txt" 와 같은 형식으로 작성한다. 다른 폴더에 위치할 경우 경로도 같이 써야 한다. "/content/my_file.txt" 과 같은 방식으로 작성하면 된다. (Google Collab 기준) 파일 객체open() 함수 실행 시 파일 객체를 반환값으로 가진다. 가져온 파일 객체를 통해 파일에서 내용을 읽거나, 쓰는 등의 작업을 진행한다. 파일 열기 모드r읽기 모드파일 내용을 읽기만 할 때w쓰기 모드파일에 내용을 새로 쓸 때, 기존 파일의 내용은 모..
빌드를 실행하는데 자꾸 entityManagerFactory 오류가 발생했다. 억울한게, Entity 추가한 것도 없고 나는 그저 순박하게 Dto 만 추가했을 뿐이라구 .... 그리고 추가한 코드를 전부 주석처리하고 실행해도 계속 에러가 발생했다.Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Unsatisfied dependency expressed through method 'entityManagerFactory' parameter 0: Error crea..
자바스크립트에서 파일이 이미지 일때만 등록이 가능하도록 구현을 해보자. 리액트라 구조가 아래와 같은데, 자바스크립트 함수로 작성해도 구현되는 구조이다. 파일의 타입은 'image/png' 이러한 방식으로 나타난다. 뒤의 모든 타입을 등록하는 것보다 Image 만 잘라오는 것이 나을 것 같아 들어오는 파일의 확장자는 substring 해줬다. fileTypes 변수에 image 를 등록하여 비교해줬다. 이렇게 구현하면, 나중에 타입 추가하는 것도 쉬울 것 같다. 파일명의 . 뒷자리부터 가져와도 되지만, 나는 파일 타입을 가져오는 것으로 구현했다. const fileTypes = [ 'image' ] const handleFileChange = (event) => { ..
breakbreak문은 자신이 포함된 가장 가까운 반복문을 벗어난다. 주로 if 문과 함께 사용되어 특정 조건을 만족하면 반복문을 벗어나도록 한다. continue반복이 진행되는 도중에 continue 문을 만나면 반복문의 끝으로 이동하여 다음 반복으로 넘어간다. For 문의 경우 증감식으로, while문과 do - while 문의 경우 조건식으로 이동한다. break 과 continue 의 차이continue 문은 반복문 전체를 벗어나지 않고 다음 반복을 계속 수행한다는 점이 break 문과 차이가 있다. public class BreakContinueExample { public static void main(String[] args) { System.out.println("..
난수를 얻기 위해서는 Math.random() 을 이용해야 한다.이 메서드는 0.0과 1.0 사이의 범위에 속하는 하나의 double 값을 반환한다. 0.0 ex) 1과 3 사이의 정수를 구하길 원한다면, 1. 각 변에 3을 곱한다.0.0 * 3 2. 각 변을 int 형으로 반한다.(int) 0.0 3. 각 변에 1을 더한다.0 + 1 위와 같이 식을 변환해가며 값의 범위를 조절하면 된다.
BufferedReaderBufferedReader 은 Scanner 과 같은 기능이다. 다만 속도 측면에서 훨씬 빨라 속도가 중요한 알고리즘에서 필수적으로 사용된다.작성해야 할 코드는 더 많지만 시간과 메모리 측면에서 훨씬 효율이 좋다. BufferedReader 사용법BufferedReader 의 인스턴스를 생성해준다. 아래와 같이 생성해주면 된다.BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 그리고 readLine을 이용해 String으로만 값을 받아온다.String a = br.readLine(); // String Enter 줄마다 값으로 인식해, 여러개의 값이 한 줄에 있을 경우 StringTokeniz..
LocalStorage 에 입력한 user_id 를 서버 단의 유효시간과 동일하게 하기 위해 아래와 같은 형태로 아이디, 만료시간을 등록하였다.{"value":"sylee","expireTime":1735917224128} 이 방법의 단점은 해당 localStorage 의 데이터에 접근하기 위해서는 아래 함수를 통해 JSON.parse 후 값을 꺼내줘야 한다는 거다. const getUserId = (key) => { const item = localStorage.getItem(key); if (!item) return null; const {value, expireTime} = JSON.parse(item); return value;} LocalSt..