1. Spring Boot WebSocket 기초 구성
·
Spring
일반 HTTP API는 요청 후 연결이 끊기지만,WebSocket은 연결을 유지한 상태로 계속 데이터를 주고받음.HTTP vs WebSocketHTTP브라우저 → 요청서버 → 응답연결 종료매 요청마다 연결했다가 끊음.WebSocket브라우저 ↔ 서버연결 유지계속 연결된 상태에서 실시간 통신.예:브라우저: hello서버: server echo: hello브라우저: next message서버: server echo: next message실시간 자막, 채팅, 스트리밍에 적합.1. build.gradleimplementation 'org.springframework.boot:spring-boot-starter-websocket'의존성 추가2. WebSocketConfig@Configuration@EnableW..
[Level 2] JadenCase 문자열 만들기 - 12951
·
CS/Algorithm
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/12951) 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krJadenCase 문자열 만들기📝 문제 설명JadenCase란 모든 단어의 첫 문자는 대문자, 나머지 문자는 소문자로 쓰는 방식입니다.단, 첫 문자가 알파벳이 아닐 경우, 그 이후 나오는 알파벳은 소문자로 유지합니다.문자열 s가 주어질 때, 이를 JadenCase로 변환하여 반환하세요.📌 입력값문자열 s (길이 1 이상 200 이하)s는 알파벳, 숫자, 공백문자로 구성됨예시: "3people unFollowed me"✅ 출력값Jaden..
[level 2] 최솟값 만들기 - 12941
·
CS/Algorithm
문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr최솟값 만들기 📝 문제 설명길이가 같은 배열 A, B 두 개가 있습니다. 각 배열은 자연수로 이루어져 있습니다.배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며,두 수를 곱한 값을 누적하여 더합니다.이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다.(단, 각 배열에서 같은 인덱스의 숫자는 한 번만 사용할 수 있습니다.)📌 입력값정수 배열 A (길이 n, 1 ≤ n ≤ 1,000, 각 원소는 자연수 ≤ 1,000)정수 배열 B (길이 n, 1 ≤ n ≤ 1,000, 각 원소는 자연수 ≤..
자료 구조 정리
·
CS
선형 자료구조요소가 일렬로 나열되어 있는 자료구조1. 연결 리스트 (LinkedList)데이터 요소를 연결된 노드로 표현하는 방식LinkedList는 동적으로 크기가 조절될 수 있으며, 데이터의 삽입과 삭제가 빠르게 이루어짐▫️노드(Node) : LinkedList의 기본 구성 요소로, 데이터와 다음 노드를 가리키는 링크(포인터)로 구성된다.▫️헤드(Head) : LinkedList의 첫 번째 노드를 가리키는 포인터입니다. LinkedList에서 데이터에 접근하기 위해서는 헤드부터 시작해야 한다.▫️데이터(Data) : 각 노드가 저장하는 실제 값 또는 객체이다.▫️링크(포인터/Pointer) : 노드들을 연결하는 역할을 한다. 각 노드는 다음 노드를 가리키는 링크를 가지고 있다. ▫️싱글 연결 리스트 ..
[level 2] 올바른 괄호 - 12909
·
CS/Algorithm
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/12909) 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 올바른 괄호📝 문제 설명문자열 s가 괄호 '(', ')'로만 이루어져 있을 때, 괄호가 올바르게 짝지어졌는지 확인하는 문제입니다.올바른 괄호란열린 괄호 '('는 닫힌 괄호 ')'로 정확히 닫혀야 한다.괄호의 순서와 짝이 맞아야 한다.📌 입력값문자열 s (길이: 1 이상 100,000 이하)'(', ')' 문자로만 구성됨✅ 출력값올바른 괄호면 true그렇지 않으면 false📚 제한사항입력 문자열의 길이는 최대 100,000 → 효율적..
[level 2] 최댓값과 최솟값 - 12939
·
CS/Algorithm
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/12939) 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 최댓값과 최솟값📝 문제 설명문자열 s에는 공백으로 구분된 정수들이 포함되어 있습니다.이 숫자들 중 최솟값과 최댓값을 찾아 "(최솟값) (최댓값)" 형태의 문자열로 반환하는 함수를 작성하세요.📌 입력값문자열 s (예: "1 2 3 4")✅ 출력값공백을 기준으로 구분된 "최솟값 최대값" 형태의 문자열📚 제한사항문자열 s에는 두 개 이상의 정수가 공백으로 구분되어 있습니다.모든 값은 정수형이며, 음수도 포함될 수 있습니다.🧠 문제 접근..
[Hakple] JPA N+1 문제와 좋아요 상태 조회 성능 최적화
·
Project/HakPle
게시판의 댓글을 불러오는 api -> 로그인 된 사용자이면 댓글에 좋아요 누른 상태인지 아닌지 여부 포함 해야함문제 1. N+1 쿼리List comments = board.getComments();위 코드 쓰면 JPA가게시판 한 번 조회댓글 10개면 댓글 10번 따로 쿼리 날림총 11번 쿼리 나감 (이게 바로 N+1 문제)✅ 해결 1. Fetch Join 써서 쿼리 1번으로 끝냄@Query("""SELECT c FROM Comment cJOIN FETCH c.userWHERE c.board.id = :boardId AND c.status = :statusORDER BY c.creationTime ASC""")List findWithUserByBoardIdAndStatus(Long boardId, Stat..
HTTP
·
CS/Network
HTTP/1.0기본적으로 한 연결당 하나의 요청을 처리하도록 설계→ RTT (패킷 왕복 시간)증가서버로부터 파일을 가져올 때마다 TCP의 3-웨이 핸드셰이크를 계속해서 열어야 함▪️RTT의 증가를 해결하기 위한 방법▫️이미지 스플리팅많은 이미지를 다운로드받게 되면 과부하가 걸리기 때문에 많은 이미지가 합쳐 있는 하나의 이미지를 다운로드받고, 이를 기반으로 background-image의 position을 이용하여 이미지를 표기 1. 이미지 병합 예시 (수평으로 붙이는 경우)[img1][img2][img3]...만약 각 이미지가 100x100px 이고, 왼쪽에서부터 img1, img2, img3 순서로 배치되었다면: 2. CSS 예시.sprite { background-image: url('sprite...
[JAVA] StringBuilder
·
JAVA
📌 StringBuilder란?Java에서 가변(mutable) 문자열을 만들기 위한 클래스String은 불변(immutable) → 문자열을 수정할 수 없고, 수정 시마다 새로운 객체가 생성됨StringBuilder는 내용을 수정 가능 → 문자열 결합이 자주 발생할 때 성능이 훨씬 좋음✨ 주요 메서드append(str)문자열 붙이기insert(index, str)특정 위치에 문자열 삽입delete(start, end)start부터 end 전까지 삭제reverse()문자열 뒤집기toString()최종 결과를 문자열(String)로 반환🆚 String vs StringBuilder 항목 String StringBuilder 변경 가능 여부불변 (immutable)가변 (mutable)속도느림 (새 객..
[level 1] 이상한 문자 만들기 - 12930
·
CS/Algorithm
(https://school.programmers.co.kr/learn/courses/30/lessons/12930?language=java) 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이상한 문자 만들기 📝 문제 설명문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백 문자로 구분되어 있으며,각 단어에서 짝수 번째 알파벳은 대문자, 홀수 번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수 solution을 완성하세요.📌 입력값문자열 s: 한 개 이상의 단어로 이루어진 문자열 (영어 소문자와 공백으로만 구성)✅ 출력값각 단어의 짝수번째 문자는 대문자, 홀수번째 문자는 소문자로 ..