Total
[Java, Python] 거리두기 확인하기 (2차원배열, 좌표)
https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 입력 가공 String ➡️ char거리두기 검사모든 좌표에 대해 반복응시자인 경우다음 좌표가 응시자인 경우 false다음 좌표가 빈자리인 경우 옆자리에 응시자가 있는경우 : false이 외의 경우 true import java.util.*;class Solution { // 상좌우하 private static final int[] dx = {0,-1,1,0}; private sta..
[Java] 삼각 달팽이 (2차원배열, 방향)
2023.07.19 - [Coding Test/programmers] - 삼각 달팽이 (리스트 반시계 방향으로 채우기) 삼각 달팽이 (리스트 반시계 방향으로 채우기)프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 삼karla.tistory.com import java.util.*;class Solution { public int[] solution(int n) { int[][] triangle = new int[n][n]; int v=1; // 현재수 int r=0; int c=0;..
[Java] 교점에 별 만들기 (2차원배열, 최대사각형, 좌표 배열 전환)
2023.08.09 - [Coding Test/programmers] - [프로그래머스] 교점에 별 만들기 [프로그래머스] 교점에 별 만들기https://school.programmers.co.kr/learn/courses/30/lessons/87377 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는karla.tistory.com import java.util.*;class Solution { public static class Point { public final long x,y; private Point(long x, long y) { t..
자바 우선순위큐(PriorityQueue)
//오름차순(우선순위가 낮은 숫자 순) PriorityQueue pq = new PriorityQueue(); //내림차순(우선순위가 높은 숫자 순) PriorityQueue pqHightest = new PriorityQueue(Collections.reverseOrder()); pq.add(1); pq.offer(2); pq.add(3); pq.poll(); // 첫번째 값을 반환하고 제거 비어있다면 null System.out.println(pq); // [2, 3] pqHightest.add(1); pqHightest.add(2); pqHightest.add(3); pqHightest.peek(); // 첫번째 값 참조 3 pqHightest.remove(); // 첫번째 값 제거 System.o..
자바 스트림(Stream), 람다(Lambda)
Stream 생성 배열 Arrays 클래스의 static 메소드인 stream()에 배열 인스턴스를 전달 int[] i = {1,2,3,4,5}; IntStream istm = Arrays.stream(i); 컬렉션 컬렉션 인스턴스를 대상으로 디폴트 메소드 stream()을 호출 List s = Arrays.asList("a", "b", "c"); Stream stm = s.stream(); 데이터 직접 전달 Stream클래스 혹은 IntStream 등의 기본 자료형 스트림의 static 메소드인 of()에 stream에 넣고 싶은 데이터들을 전달 Stream istm = Stream.of(1,2,3); IntStream istm = IntStream.of(1,2,3); 중간 연산 filter(Predi..
자바 순열, 조합 구하기 (파이썬 itertools 라이브러리)
자바는 파이썬의 itertools 라이브러리 같은 내장함수로 순열, 조합이 없어 직접 구현해야함 n개중에 r개 선택한다는 가정 Depth를 r만큼 재귀 변수 int n, r : n개 중 r개를 뽑음 int[] now : 현재 저장한 list값 인덱스 List result : 결과값 boolean[] visited : 순열 방문 여부 순열 public static void permutation(List list, int depth) { if (depth == r) { List temp = new ArrayList(); for (int i = 0; i < now.length; i++) { temp.add(list.get(now[i])); } result.add(temp); return; } for (int ..
[JPA] @Lock 비관적 락, PESSIMISTIC_WRITE, 타임아웃, 트랜잭션
낙관적 락 @Version을 사용 트랜잭션을 커밋하는 시점에 충돌을 알 수 있음 비관적 락 선점 잠금 데이터베이스 트랜잭션 락 메커니즘에 의존하는 방식 SQL 쿼리에 select for update 구문을 사용하면서 시작 버전 정보는 사용하지 않음 JPA 락 옵션 낙관적 락 OPTIMISTIC 낙관적 락을 사용한다. 낙관적 락 OPTIMISTIC_FORCE_INCREMENT 낙관적 락 + 버전정보를 강제로 증가한다. 비관적 락 PESSIMISTIC_READ 비관적 락, 읽기 락을 사용한다. (공유 잠금) 비관적 락 PESSIMISTIC_WRITE 비관적 락, 쓰기 락을 사용한다.(배타적 잠금) 비관적 락 PESSIMISTIC_FORCE_INCREMENT 비관적 락 + 버전 정보를 강제로 증가한다. 기타 ..
Kubernetes 인그레스(Ingress), 로드밸런서 LoadBalancer, metallb
Ingress, Ingress Controller 인그레스를 사용하면 L7의 웹 요청을 해석해서 단일 IP, 단일 포트로 다수의 도메인과 서비스로 연결할 수 있음 쿠버네티스에서 기본적으로 지원하는 인그레스 오브젝트는 클라우드 환경이 아니면 사용할 수 없음 클라우드에서 인그레스를 생성하면 외부에 게이트웨이를 생성하고 각 기능에 맞게 서비스에 연결 쿠버네티스에서 Ingress를 사용하기 위해서는 두 가지가 필요 첫 번째는 YAML 파일에서 kind: Ingress 로 정의되는 Ingress 오브젝트 두 번째는 Ingress 규칙이 적용될 Ingress Controller YAML 파일로부터 Ingress를 생성해도 아무 일도 일어나지 않음 Ingress는 단지 Ingress 규칙을 정의하는 선언적인 오브젝트..
[CICD] Jenkins + ArgoCD + k8s | CI, 젠킨스 파이프라인, Jenkinsfile, MSA
GitHub - Guts-Gun/KITe_backendContribute to Guts-Gun/KITe_backend development by creating an account on GitHub.github.com 구축 순서1. Jenkins Pipeline & Github webhook 설정2. Jenkinsfile 작성3. ArgoCD 구축 Jenkins PipelineJob들을 순차적 혹은 병렬적으로 실행시키거나 작성한 스크립트로 이벤트들을 연속적으로 실행시키는 등의 일을 지원하는 기능Job 하나 작성할 때 대부분 GUI로 제공받아 마우스로 체크해서 설정했다면 Pipeline은 이러한 내용들을 스크립트를 통해 더 딥하고 유연하게 작성할 수 있음작성하려는 배포 플로우가 복잡하다면 pipeline ..
Spring Event, 스프링 이벤트, ApplicationEventPublisher
Spring Event 스프링 프레임워크를 사용할 때 빈(Bean) 간 데이터를 주고받는 방식 이벤트를 발행(Publish)하고 이벤트를 수신 또는 구독하여 소비(Listen/Subscribe)하는 기능을 제공 기존 로직에 트리거와 같은 후처리를 추가하면서 관심사 분리 (낮은 결합도) 1. 이벤트 클래스 이벤트 클래스는 이벤트를 처리하는 데 필요한 최소한의 데이터 포함하여 생성 이너 클래스 생성하여 사용 가능 @Getter @RequiredArgsConstructor public class AddPersonEvent { PersonDto personDto; } 2. 이벤트 디스패처 이벤트 발행을 위해 스프링에서 제공하는 ApplicationEventPublisher을 사용 @Slf4j @Service @..