전체 글83 실시간 채팅 구현 전 개념 정리 🤔 왜 HTTP로는 실시간 채팅이 안 될까?HTTP의 근본적인 한계HTTP는 요청-응답 구조입니다: 👤 클라이언트: "서버야, 새 메시지 있어?"🖥️ 서버: "없다"[연결 끊어짐]👤 클라이언트: "서버야, 새 메시지 있어?" (다시 연결)🖥️ 서버: "없다" [연결 끊어짐]👤 클라이언트: "서버야, 새 메시지 있어?" (또 다시 연결)🖥️ 서버: "있다. -> '안녕하세요'"[연결 끊어짐]HTTP 문제점1. 지연시간 문제실제 메시지가 10:00:01에 도착했는데클라이언트가 10:00:05에 물어봐야 받을 수 있음4초 지연! 😱2. 서버 부하 문제 사용자 1000명이 1초마다 "새 메시지 있어?" 물어봄= 1초에 1000번 요청= 대부분 "없어"라는 답변만 받음= 99%가 쓸데없는 트래픽!.. 2025. 6. 30. 로그인 사용자가 어떤 댓글에 좋아요를 눌렀는가에서 발생한 N+1 문제 해결 대충 개발이 끝나고마지막 실시간 채팅개발을 하기 전 점검을 하던 중에😱 새로운 문제가 생겼다. "사용자가 어떤 댓글에 좋아요를 눌렀는지" 정보를 클라이언트에 보내줘야 했다.왜냐하면 클라이언트에서 이런 UI를 보여줘야 하기 때문이다:💬 "정말 좋은 글이네요!" ❤️ 15 (빨간 하트 - 내가 좋아요 누름)💬 "동감합니다" 🤍 3 (빈 하트 - 내가 좋아요 안 누름)🤔 처음에 짠 멍청한 코드처음에는 이렇게 구현했다:public Page getRootComments(Long postId, int page, int size, UserPrincipal userPrincipal) { // 1. 댓글 목록 조회 Page rootComments = comme.. 2025. 6. 27. [Programmers] 입국 심사 [문제 링크]https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [코드]import java.util.*;class Solution { public long solution(int n, int[] times) { Arrays.sort(times); // 이분 탐색을 위한 정렬 long left = 0; // 최소 시간 long right = (long) times[times.length - 1] * n; // 최대 시간 long ans.. 2025. 6. 26. [Programmers] 순위 검색 [문제 링크]https://school.programmers.co.kr/learn/courses/30/lessons/72412 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [풀이 과정]말이 필요 없습니다. 한 번 보세요..보고 스스로 몇번 풀다보니 이해됬습니다. https://www.youtube.com/watch?v=vFwVvJQnC4M [코드]import java.util.*;class Solution { public int[] solution(String[] info, String[] query) { Map> hashMap = new HashMap(); /.. 2025. 6. 25. [Programmers] 메뉴 리뉴얼 [문제 링크]https://school.programmers.co.kr/learn/courses/30/lessons/72411?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [풀이 과정]https://www.youtube.com/watch?v=Jb34jY91450 이거보고 이해했다.진짜 이 문제 못 풀었으면 꼭 보길 바랍니다!!설명 너무 잘해주셔서 이해하고 스스로 풀었습니다. [코드]import java.util.*;class Solution { Map hashMap = new HashMap(); List answerList = new ArrayList(); public.. 2025. 6. 24. 댓글 조회 리팩토링중 - feat.인덱스 전에 게시글들을 보았으면 내가 얼마나 멍청하게 댓글들을 불러왔는지 알 수 있다.사실 블로그에 글을 쓰고 인지를 하여 그냥 모든 개발이 끝나고 리팩토링 해야지 했는데 자꾸 걸려서 미리 리팩토링 하게 되었다. 전에는 댓글을 페이지네이션 하나 없이 모든 댓글 + 대댓글을 다 불러왔다. 사실 소량의 데이터면 상관은 없는데사용자의 사용성은 나눠서 보여주는 게 낫기 때문에 한 번에 다 보여주는 것보단대댓글은 숨기고 보여주고 할 필요가 있다고 생각했다. 페이지네이션은 잘 마쳤다!(페이지네이션에 대한 내용은 전에 게시글 페이지네이션 했던 글 봐주세요) 이제 댓글에 대댓글이 있는지 정보를 클라이언트에 보내줘야 클라이언트가 -대댓글 더보기..- 뭐 이런 UI를 달아줄 수 있기 때문이다. 백엔드 쪽에선 단순히 true/.. 2025. 6. 18. 이전 1 2 3 4 5 ··· 14 다음