전체 글

전체 글

    kafka producer API

    카프카 클라이언트 카프카 클라이언트 라이브러리를 사용하면 프로듀서 컨슈머 어드민 클라이언트로 카프카 클러스터에 명령을 내리거나 데이터를 송수신할 수 있다. 프로듀서 API 프로듀서 어플리케이션은 카프카에 필요한 데이터를 선언하고 브로커의 특정 토픽의 파티션에 직접 전송(직접 통신)한다. 프로듀서는 데이터를 직렬화하여 카프카 브로커로 보내기 때문에 자바에서 선언 가능한 모든 형태를 브로커로 전송할 수 있다. 💡 여기서 직렬화란 자바 또는 외부 시스템에서 사용 가능하도록 바이트 형태로 데이터를 변환하는 기술을 말한다. 인텔리제이에서 개발하기 위해선 일단 카프카 클라이언트 라이브러리를 gradle에 추가해야한다. plugins { id 'org.springframework.boot' version '2.7.3..

    Python 15686번 치킨 배달

    https://www.acmicpc.net/problem/15686 문제에서는 최대 m개의 치킨집이 있을 경우 치킨 거리의 최소합을 구하라고 했다. 먼저 치킨집이랑 사람집을 따로 리스트를 만들어서 보관했고 그 이후 dfs 방식을 이용해서 문제에 접근했다. cnt 즉 고른 치킨집의 개수가 최대 치킨집의 개수와 일치하면 계산을 시작했고 계산한 결과값을 result라는 리스트에 넣어줬다. (처음에 result에 5001이라는 값을 넣어준 이유는 아래 resMin 처음 실행될때 빈 리스트일 경우 에러가 날 수도 있기 때문에 100*100을 확실하게 넣어주는게 맞긴 한데 최대가 5001을 초과할 일이 없어서 잘됐네요 ㅎ,,) 처음에 m개의 치킨집 개수를 loc라는 list에 append나 pop을 이용하려 했는데..

    Codeforces Round #817 (Div. 4) 문제 정리 +4

    4문제 정도 풀었고 풀었을 때 계속 추가할 예정입니다!! 1. Spell check 이 문제의 경우 처음 읽었을 때 이해가 안갔는데(영어라 이해를 잘못해서 그런가..) 몇번 읽다보니 뭔소린지 이해가 갔다 ㅎㅎ,, 문제 요구사항은 자신의 이름을 여러가지 순열을 허용해서(예시처럼 Trumi, ruTmi 등..) 입력으로 받은 값이 자신의 이름 값으로 유효한지 체크하는 문제이다. 처음엔 이름 구성도 5글자니까 길이는 5로 정해놓고 저 list안에만 포함되면 되겠구나 생각했는데 정답처리가 안되는 케이스가 있었다. 그래서 곰곰히 생각해보니 5글자가 아니여도 즉, 공백 같은게 들어가도 이름인걸 허용하는 케이스도 있다고 생각했고 길이가 5보다 작은 것들만 처리하니까 정답처리가 됐다. import sys input =..

    git rebase 사용해서 커밋 병합하기

    커밋을 병합할 일이 있어서 예전에 배웠던 git rebase를 사용해서 커밋을 합쳐봤습니다! git rebase -i HEAD~2 뒤에 숫자는 병합할 커밋의 개수만큼 입력하는 것이고 rebase 은 i옵션은 -interactive의 약어입니다! 병합할 커밋을 squash옵션을 넣어주고 병합될 대상을 pick해주면 됩니다 pick b test1 squash c test2 # Rebase a..c onto a # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but me..

    kafka의 기본 개념 정리

    카프카의 기본 개념 카프카 브로커란? 카프카 클라이언트와 데이터를 주고받기 위해 사용하는 주체이자, 데이터를 분산 저장하여 장애가 발생하더라도 안전하게 사용할 수 있도록 도와주는 어플리케이션 보통 하나의 서버에 한 개의 카프카 브로커 프로세스가 실행되며 데이터를 안전하게 보관하기 위해 3대 이상의 브로커 서버를 1개의 클러스터로 묶어서 운영 데이터 저장, 전송 카프카 브로커는 프로듀서가 요청한 토픽의 파티션에 데이터를 저장하고 컨슈머가 요청하면 파티션에 저장된 데이터를 전달하는데 데이터는 파일 시스템에 저장된다. 파일 시스템으로 저장하다보면 다루기 편하긴 하지만 지속적으로 입출력할 경우 메모리에 올려 사용하는 것보다 속도가 현저히 느린데 카프카는 여기서 페이지 캐시를 사용하여 디스크 입출력 속도를 높여 ..

    Kafka mac에서 설치 및 테스트

    들어가기 압서 mac에서 쉽게 homebrew를 이용해서 설치할 수 있는데 계속 zookeeper 오류가 뜨고 그래서 저는 공식 문서에 있는 quick start 를 참고하면서 진행했습니다! 그리고 참고로 이후 최신 버전에는 zookeeper가 deprecated된다고 합니다! https://www.infoworld.com/article/3660073/why-apache-kafka-is-dropping-zookeeper-for-kraft.html Why Apache Kafka is dropping ZooKeeper Replacing ZooKeeper with internally managed metadata will improve scalability and management, according to ..

    Kafka의 등장 배경 및 특징

    카프카의 등장 배경 링크드인에서 초기에 파편화된 데이터 수집 및 분배를 처리하기 위해 데이터를 생성하는 source application과 데이터가 최종 적재되는 target application을 단방향 연결을 함 ⬇️ 시간이 갈수록 애플리케이션의 개수가 늘어나고 데이터 전송 파이프라인이 늘어나기 시작하면서 아키텍쳐가 복잡해짐 ⬇️ 이는 서비스를 운영하는데 치명적이므로 링크드인 데이터팀은 다양한 데이터프레임워크와 오픈소스를 아키텍쳐에 녹여내어 개선하기 시작하지만 데이터 파이프라인의 복잡도를 개선하기엔 어려움을 겪음 ⬇️ 중앙집중화 시스템인 카프카라는 신규 시스템을 만들어내고 카프카는 기업의 대용량 데이터를 수집하고 사용자들이 이를 실시간 스트림으로 소비할 수 있게 해줌 카프카의 등장 카프카는 이렇게 소..

    intelliJ 명령어 정리!!

    Intellj 단축키 cmd+shift+t -> test 생성 cmd+option+v -> 변수 자동 생성 option+enter -> import cmd+shift+enter -> 끝에 자동완성 후 줄넘김 cmd+/ -> 선택한 줄 주석처리 cmd+n ->getter or setter cmd+b -> class나 method 클릭시 그 class로 넘어감 cmd+o -> class 찾기 cmd+p -> 생성자 매개변수에 뭐가 들어가야하는지 알려줌 cmd+e -> recent 파일 찾기 shift+tab -> 자동 줄 정렬 ctrl+shift+j ->두줄을 한줄로 합침 option누른 상태로 줄 선택하면 동일한 내용이 드래그 psvm -> main methd생성 soutv-> println 자동생성 cm..

    Docker 기본 개념 및 명령어 정리!

    Docker 리눅스의 네임스페이스와 컨트롤 그룹인 cgroup와 같은 리눅스의 커널 기능을 이용해서 리눅스 환경에서 가상화를 제공해주는 것이 도커 이미지 - 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 만든 하나의 파일 컨테이너 - 이미지를 격리하여 독립된 공간에서 실행한 가상 환경 / 컨테이너는 가상머신을 사용해 각 마이크로 서비스를 격리하는 기술 리눅스 네임 스페이스: 각 프로세스가 파일 시스템 마운트, 네트워크, 유저, 호스트 네임 등에 대해 시스템에 독립 뷰를 제공 → 각각의 이름 공간에서 서로 다른 공간으로 프로세스가 침투되지 못하게 함 리눅스 컨트롤 그룹: 프로세스 별로 소비할 수 있는 리소스(cpu, memory, i/o, 네트워크 대역대, device 노드 등) 양을 제한 → 마치 프로..

    Python 1541번 잃어버린 괄호

    https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 수열 문제라서 되게 코드가 간결할줄 알았는데 짜다보니 코드가 점점 길어지는 것 같다ㅏ,,, 먼저 입력으로 주어진 문자열에서 operator와 num을 다른 리스트로 분리하였고 res라는 리스트를 따로 만들어서 - 이후의 숫자를 계산한 값을 넣도록 만들었다. 예를 들어 55-50+40+30+20-30-25 가 입력으로 주어졌을때 리스트가 [55, '-', 140, '-', 30, '-', 25..