컴퓨터 프로그래밍 156

[Git] Remote Repository 등록 및 변경

1. Repository 생성 2. IntelliJ 파일 생성 3. git bash 터미널에 아래 코드 입력 echo "# e" >> README.md git init git add README.md git commit -m "{commit 하고 싶은 문구}" git branch -M main git remote add origin {remote 하고 싶은 Repository 주소}git push -u origin main 4. Remote 및 commit, push 성공!Remote 를 이용해서 Repository 를 변경하면, Repository 를 다른 Repository 에도 적용시킴으로서,backup 파일을 만들다든지, 반복되는 작업을 Repository 를 통해서 해결하고 시작할 수도 있다.현..

[알고리즘] 배열

.equals()문자열을 비교할 때는 == 말고 equals 를 사용하자. == 는 주소값 비교이다. Collections.sort(arrayList)arrayList 의 요소들을 오름차순 정렬시킨다. List answerList = new ArrayList();길이가 동적으로 설정되는 aarrayList 가 선언된다. arrayList.add(i)arrayList 에 i 요소를 추가시킨다. int[] result = new int[arr.length];result  배열을 선언하고, arr.length 의 길이로 초기화한다.

[Spring] Projection 및 예시코드 설명

entity 전체의 값을 가져오는 것이 아닌 조회 대상을 지정해 원하는 값만 조회할 수 있도록 지원하는 클래스DB조회 시 select * from table 간에 사용되는 * 가 모든 필드를 가져오므로, 불필요한 메모리 낭비가 될 수 있음. Projections 사용법 4가지bean: setter로 주입하며, 필드명이 일치해야함field: setter 없이 주입 가능하며, 필드명이 일치해야함constructor생성자 기반으로 삽입하여, 네이밍 상관 없이 생성자 필드순으로 바인딩생성자에 입력한 값 순서로 확인하기 때문에 컴파일 시점에 오류 확인이 불가하여, 런타임 간에 발견될 수 있음바인딩 DTO에 @QueryProjection가 있으면 컴파일 시점에 entity와 마찬가지로 Q클래스를 생성미리 생성된 Q..

[Spring] QueryDSL

타입 안전한 동적 쿼리를 직관적으로 작성할 수 있게 도와주는 Java 기반 쿼리 라이브러리환경세팅build.gradledependencies { // querydsl implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api"}QueryDslConfig.java@Configurationclass Qu..

[Spring] Lazy Loading 과 Eager Loading 의 차이, N+1 Problem 과 해결 방법

1. Lazy Loading (지연 로딩)특징: 연관된 엔티티를 필요할 때 로드함. 처음에는 관련 데이터가 로드되지 않고, 실제로 데이터를 사용할 때 쿼리가 실행됨.장점: 불필요한 데이터를 미리 로드하지 않으므로 성능에 유리함. 데이터 접근이 적을 때 효과적이다.단점: 연관 데이터에 접근할 때마다 쿼리가 발생해 N+1 문제가 발생할 수 있다.2. Eager Loading (즉시 로딩)특징: 연관된 엔티티를 즉시 로드함. 엔티티가 조회될 때 모든 연관된 데이터도 한 번에 가져온다.장점: 한 번에 모든 데이터를 로드하여 추가 쿼리가 발생하지 않는다. 필요할 때 미리 로드된 데이터를 사용할 수 있다.단점: 불필요한 데이터를 미리 로드하기 때문에 성능이 저하될 수 있다. 데이터가 많을 때는 비효율적이다.N+1 ..

[알고리즘] 문자열에 쓰이는 메서드들

String str = Long.toString(n);숫자를 문자열로 변환 Long.parseLong(sortedStr);문자열을 Long 타입 숫자로 변환 String[] strArray = str.split("");각 자릿수를 배열로 변환 Arrays.sort(strArray, Collections.reverseOrder());내림차순 정렬 String.join("", strArray);배열을 문자열로 합치기  char firstChar = str.charAt(0); 첫 번째 문자에 접근  str.charAt(0) - '0';문자열의 첫 번째 요소 반환 ( 유니코드기 때문에 - '0' )

[Docker] 도커 간단한 명령어 정리

docker pull {Name}이미지를 다운받는다. docker {images}이미지들을 확인할 수 있다. docker run {CNAME IMAGE}컨테이너를 만든다.-d : 컨테이너를 백그라운드에서 실행하는 옵션-p 8001:80 : 호스트의 8001번 포트와 컨테이너의 80번 포트를 연결. 즉, localhost:8001 로 접근하면 컨테이너 내부의 80번 포트로 요청 전달--name {name}: 실행하는 컨테이너에 {name} 라는 이름으로 저장 docker post {name}실행되고 있는 {name} 컨테이너의 port 를 확인할 수 있다. curl localhost:8001 HTTP 요청을 보내고 서버에서 응답을 받아 출력한다. docker ps우리가 만든 실행중인 컨테이너를 볼 수 있다..