본문 바로가기

분류 전체보기

(644)
[프로그래머스/자바] 거리두기 확인하기 import java.util.*; class Solution { class Point { int row, col, dtc; Point(int row, int col, int dtc) { this.row = row; this.col = col; this.dtc = dtc; } } private static final int[][] D = {{1,0}, {-1,0}, {0,1}, {0,-1}}; private boolean bfs(String[] place, int x, int y) { boolean[][] visited = new boolean[5][5]; Queue q = new LinkedList(); visited[x][y] = true; q.add(new Point(x, y, 0)); while ..
Stored Procedure Stored Procedure 사용자가 정의한 프로시저 RDBMS에 저장되고 사용되는 프로시저 주된 사용 목적은 비즈니스 로직 구현 구체적인 하나의 task를 수행한다. ⬇️ 두 정수의 곱셈 결과를 가져오는 프로시저 delimiter $$ CREATE PROCEDURE product(IN a int, IN b int, OUT result int) BEGIN ㅤㅤㅤㅤSET result = a * b; END $$ delimiter ; ⬇️ 프로시저 사용 call product(5, 7, @result); SELECT @result; ㅤㅤㅤㅤ ⬇️ 두 정수를 맞바꾸는 프로시저 delimiter $$ CREATE PROCEDURE swap(INOUT a int, INOUT b int) BEGIN ㅤㅤㅤㅤSET..
[이펙티브 자바 3/E] 아이템19 - 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라 - 상속용 클래스는 재정의할 수 있는 메서드들을 내부적으로 어떻게 이용하는지(자기사용) 문서로 남겨야 한다. - 재정의 가능한 메서드 => public과 protected 메서드 중 final이 아닌 모든 메서드 - 더 넓게 말하면, 재정의 가능 메서드를 호출할 수 있는 모든 상황을 문서로 남겨야 한다. 예를 들어 백그라운드 스레드나 정적 초기화 과정에서도 호출이 일어날 수 있다. - 내부 메커니즘을 문서로 남기는 것만이 상속을 위한 설계의 전부는 아니다. - 효율적인 하위 클래스를 큰 어려움 없이 만들 수 있게 하려면 클래스의 내부 동작 과정 중간에 끼어들 수 있는 훅(hook)을 잘 선별하여 protected 메서드 형태로 공개해야 할 수도 있다. (드물게는 protected 필드로 공개해야 할 수도..
제대로 이해하는 API | 개발자필수지식 https://youtu.be/9MEnZKjw9H4?si=3-xTaeua2Sk15wVy API(Applicatoin Programming Interface) - 둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층 - 예) 프로토콜, 메서드, 데이터타입 등이 정의된 중계 계층 Interface - 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면. 이를 통해 해당 컴퓨터의 내부 서버가 어떻게 구현되어 있는지는 상관 없이 인터페이스를 통해 통신 등이 가능 API의 장점 1. 제공자는 서비스의 중요한 부분을 드러내지 않아도 된다. 예를 들어 DB 설계 구조나 드러내고 싶지 않은 DB의 테이블 정보, 서버의 상수값 등을 드러내지 않고, 드러내..
[프로그래머스/자바] 삼각 달팽이 class Solution { private static final int[] dx = {0, 1, -1}; private static final int[] dy = {1, 0, -1}; public int[] solution(int n) { int[][] triangle = new int[n][n]; int v = 1; int x = 0; int y = 0; int d = 0; while (true) { triangle[y][x] = v++; int nx = x + dx[d]; int ny = y + dy[d]; if (nx == n || ny == n || nx == -1 || ny == -1 || triangle[ny][nx] != 0) { d = (d + 1) % 3; nx = x + dx[d];..
[프로그래머스/자바] 최대공약수와 최소공배수 class Solution { public int[] solution(int n, int m) { if (n > m) { int temp = n; n = m; m = temp; } if (m % n == 0) { return new int[] {n, m}; } else { int num = 1; for (int i = 1; i
kafka 조금 아는 척하기 3 (개발자용)- 컨슈머 https://youtu.be/xqrIDHbGjOY?si=yvPFI6gIrgZF68JM 컨슈머 - 토픽 파티션에서 레코드 조회 토픽 파티션은 그룹 단위 할당 - 컨슈머 그룹 단위로 파티션 할당 - 컨슈머 개수가 파티션 개수보다 커지면 X 커밋된 오프셋이 없는 경우 - 처음 접근이거나 커밋한 오프셋이 없는 경우 - auto.offset.reset 설정 사용 => earliest : 맨 처음 오프셋 사용 => latest : 가장 마지막 오프셋 사용(기본값) => none : 컨슈머 그룹에 대한 이전 커밋이 없으면 익셉션 발생 컨슈머 설정 - 조회에 영향을 주는 주요 설정 - fetch.min.bytes : 조회 시 브로커가 전송할 최소 데이터 크기 => 기본값 1 => 이 값이 크면 대기 시간은 늘지만 처..
kafka 조금 아는 척하기 2 (개발자용) - 프로듀서 https://youtu.be/geMtm17ofPY?si=aDYPrpk_JttKW-ii 프로듀서 - 토픽에 메시지 전송(토픽, 키, 값) Sender와 send()는 서로 다른 쓰레드로 동작 전송 결과 확인 안 함 producer.send(new ProducerRecord("simple", "value")); - 전송 실패를 알 수 없음 - 실패에 대한 별도 처리가 필요 없는 메시지 전송에 사용 전송 결과 확인함 - Future 사용 Future f = producer.send(new ProducerRecord("topic", "value")); try { RecordMetadata meta = f.get(); // 블로킹 } catch (ExecutionException e) { } - 배치 효과 떨어..