일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 좋아요
- 미세먼지 안녕!
- 장고
- django
- 17472
- 색종이 붙이기
- 17144
- 로또
- 17143
- 17136
- Java
- 16637
- 9095
- 괄호추가하기
- 인스타
- 14888
- 인스타그램
- 따라하기
- 백준
- 6603
- 다리 만들기2
- 부분수열의 합
- 댓글
- 14502
- Ajax
- 1182
- 재귀
- 구슬탈출2
- 알고리즘
- 연산자 끼워넣기
- Today
- Total
목록분류 전체보기 (82)
Be a developer
Consumer - Kafka Consumer들은 Consumer Group에 속한다. - Consumer Group에 속한 consumer들은 같은 topic을 소비하고, 해당 topic의 서로 다른 partition을 분담해서 message를 소비한다. - 4개의 partition을 소비하는 Consumer Group - 한 Consumer Group의 두 Consumer가 분담하는 4개의 partition - 각각 한 partition을 담당하는 4개의 Consumer - partition 개수보다 더 많은 Consumer - 새로운 Consumer Group 추가 Rebalancing - 한 Consumer로부터 다른 Consumer로 partition 소유권을 이전하는 것. - rebalanci..
kafka에 message를 producing할 때 요구 조건은 다양하다. - 신용카드 트랜잭션 온라인 상점 등에서 대금 결제가 되는 즉시 kafka에 transaction 데이터를 전송한다. 이 때 하나의 message도 유실되지 않아야 하고, message가 복제되어도 안된다. 또한 처리 대기 시간은 짧아야 하고, 처리량은 매우 많아야 한다. - 웹 사이트의 클릭 정보 일부 message의 유실이나 복제가 허용될 수 있다. 사용자 경험에 영향을 주지 않는 범위에서 대기 시간이 길어도 된다. 즉, 사용자가 웹 페이지의 링크를 클릭할 때 다음 페이지가 로드만 될 수 있다면, message가 kafka에 전달되는 데는 수 초가 걸려도 괜찮다. 처리량은 웹 사이트의 접속량에 따라 다를 수 있다. Produc..
zookeeper 카프카와 연결하기 전 아래 명령어를 쳐보면 zookeeper 노드만 존재 # bin 디렉토리로 이동 $ ./zkCli.sh # zookeeper cli가 실행된 후 > ls / 카프카와 연결한 후 다시 ls / 명령어를 실행하면 여러 노드가 생성된 것이 보인다. 디렉토리들을 살펴본다.(아직은 아래 디렉토리에만 데이터가 존재한다.) kafka-manager cluster를 추가해준다. cluster 추가 후 다시 zookeeper에 접속해서 노드를 찾아본다. __consumer_offsets라는 토픽이 추가되어 있다. consumer group이 consume하는 topic partition에 대하여 어디까지 consume했는지를 해당 토픽에 저장한다고함. 카프카 매니저를 통해 clust..
카프카를 설치하면 주키퍼를 실행하기 위한 설정 파일과 카프카를 설정하기 위한 설정 파일이 모두 존재하고 있어서 하나의 서버에서 카프카와 주키퍼를 모두 띄워서 사용할 수 있다. 하지만 주키퍼 전용 서버를 따로, 카프카 전용 서버를 따로 구성한다.(모든 서버는 centos 76) 아래와 같이 zookeeper 서버 3대, kafka 서버 3대로 구성한다. zookeeper는 클러스터로 구성할 경우 과반수 이상의 서버가 정상일 때만 지속적인 서비스가 가능하기 때문에 홀수로 구성해야 한다. 따라서 3대를 설치한다.(from. twofootdog.tistory.com/89, judo0179.tistory.com/112) 카프카는 굳이 홀수로 구성할 필요는 없다.(from. gunju-ko.github.io/kaf..
크루스칼 알고리즘을 알고 있었는데도 틀렸던 문제이다.. 아직도 그 때 코드가 왜 제대로 동작이 안되었는지 모르겠다.. 다시 생각해봐도 크루스칼 코드는 잘 만들었던 것 같은데.. 혹시나 이 문제를 다시 풀어보면서 몰랐던 부분 때문이었을까 하는 생각도 든다. 문제를 다시 풀면서 알게 된 것은 어짜피 몇 개의 다리를 ArrayList에 넣고 정렬을 하더라도 결국은 N-1개의 edge만 만들면 되기 때문에 만들 수 있는 모든 다리를 다 넣어도 된다는 것이다. 저번에 문제를 풀 때는 이러한 생각을 하지 못하고 각 섬을 연결하는 다리 여러 개 중에서 하나만 ArrayList에 넣었었다... 비록 시험에서는 틀렸지만 덕분에 크루스칼에 대해 더 알게 되었다고 생각한다. 먼저 2중 for문을 돌면서 안에서 BFS를 통해..
어떻게 풀어야 할 지는 알겠는데 이를 코드로 어떻게 짜야할지 몰라서 계속 헤매다가 다른 분의 코드를 보고 참고해서 풀었다. 처음에는 수식을 입력받은 그대로 두고 이를 통해서 괄호를 넣을 위치를 정하다보니 index를 4칸씩 5칸씩 6칸씩 뛰어다녔다. 그러다보니 코드가 너무 복잡해져서 다른 분의 코드를 참조했고, 수식을 전부다 볼 필요가 없이 연산자를 기준으로 계산을 하면 된다는 것을 알게 되었다. 그래서 연산자를 기준으로 다시 풀게 되었다. 하나의 연산자를 기준으로 괄호를 치는 경우와 안치는 경우를 나눠서 풀어야 한다는 것은 알았지만, 이를 코드로 계속 구현하려다 보니 뭔가 안 맞고 엉켰다. 특정 순서의 연산자에서 연산을 할 때, 바로 앞에서 괄호를 쳤는지, 안쳤는지를 구분해서 연산을 하려 했다. 2 *..
기본적인 DP 문제이다. 임의의 한 지점(i 번째)에 있는 집이 빨강일 때, 초록일 때 파랑일 때로 나누어서 생각한다. 1)빨강일 때: min(i-1번 째 있는 집이 파랑, i-1번 째 있는 집이 노랑) + i번째가 빨강일 때 칠하는 비용 2)초록일 때: min(i-1번 째 있는 집이 빨강, i-1번 째 있는 집이 파랑) + i번째가 초록일 때 칠하는 비용 3)파랑일 때: min(i-1번 째 있는 집이 빨강, i-1번 째 있는 집이 초록) + i번째가 파랑일 때 칠하는 비용 따라서 DP 배열을 선언할 때 2차원 배열로 선언하고 dp[n][3]으로 생선한다.(n은 집의 개수, 3은 빨강,초록,파랑) 마지막 최솟값은 n번째 집의 min(빨강,초록,파랑) 이다. 코드는 아래와 같다. import java.io..
A형 기출문제라고 한다. 처음에 큰 거 부터 넣어서 그리디로 풀려고 했는데, 모양에 따라 답이 틀려지는 것을 알게 되어서 완탐으로 풀었다. 색종이를 붙여야 하는 공간을 10*10으로 매번 찾기보다는 해당 (row,col)을 list로 가져오는 것이 더 시간상 빠를 것이라 생각했다. 그리고 완탐을 하려면 1x1의 색종이를 붙이고 모든 경우를 다 해 본후, 다시 돌아와서 2x2의 색종이를 붙이는 방식으로 붙여야 했기 때문에, dfs를 통해 풀었다. 또한, 색종이를 붙이고 난 후에는 해당 공간을 체크해야 하는데, 색종이를 붙일 공간을 2차원 배열로 가지고 있지 않고, list로 가지고 있기 때문에, check(색종이를 붙인 좌표를 체크)라는 1차원 배열만 다음 dfs로 넘겨주어도 되었다. square 함수를 ..