- [백준] N과 M (4) - 156522025-01-09 23:16:30https://www.acmicpc.net/problem/15652 해당 문제는 수열문제이고 비 내림차순 수열이다. 또한 중복이 가능한 것에 초점을 맞추어 백트래킹으로 풀었다. 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;class Main { private static int N; private static int M; private static int[] arr; private static StringBuilder sb = new StringBuilder(); public static void ma..
- 사용자가 웹사이트에 처음 접근했을 때 발생하는 일련의 과정에 대해 설명해 주세요.2025-01-09 14:44:23예를들어 사용자가 www.google.com을 입력하면, 브라우저는 HTTP 프로토콜을 사용해 구글 웹 서버와 통신하려고 합니다.HTTP는 OSI 7계층 중 애플리케이션 계층에서 동작하는 프로토콜입니다. 이때 브라우저는 요청한 도메인 이름(www.google.com)에 대한 IP 주소를 알아야 하기 때문에 DNS(Domain Name System) 서버에 질의합니다.이 질의 과정 또한 애플리케이션 계층에서 이루어지며, DNS 서버는 해당 도메인에 대한 IP 주소(예를 들어, 142.250.190.78)를 응답합니다. IP 주소를 얻은 후, 브라우저는 구글 서버와 통신을 시작합니다.HTTP는 TCP/IP를 기반으로 작동하므로, 데이터를 주고받기 전에 TCP 3-Way Handshake 과정이 필요합니다.이..
- [백준] 큐2 - 182582025-01-09 00:21:28https://www.acmicpc.net/problem/18258 해당 문제는 Queue로 풀 생각을 많이 하겠지만 front와 back 명령어를 쉽게 구현하기 위해 Deque을 사용하였다.초기 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayDeque;import java.util.Deque;class Main { private static Deque dq = new ArrayDeque(); private static String cmd; private static String value; public static void m..
- 데이터베이스 커넥션 풀(Connection Pool)을 사용하지 않으면 어떤 문제가 발생할 수 있나요?2025-01-08 16:51:53애플리케이션과 데이터베이스가 통신을 하기 위해서는 데이터베이스 커넥션이 필요합니다.데이터베이스 커넥션의 생애주기 :데이터베이스 드라이버를 사용하여 데이터베이스에 연결데이터 읽기/쓰기를 위한 TCP 소켓 열기소켓을 통한 데이터 읽기/쓰기연결 종료소켓 닫기커넥션 풀이 없다면 애플리케이션에서 데이터베이스에 접근해야하는 요청을 처리할 때마다 커넥션을 새로 생성하여 연결하고 해제하는 과정을 반복해야 합니다. 이 과정은 비용이 상당히 많이 들기 때문에 요청의 응답시간이 길어집니다.또 동시에 많은 요청이 들어올 경우 매번 새로운 커넥션을 생성하게 되는데, 데이터베이스의 최대 연결 수를 초과할 수 있습니다. 데이터베이스는 일반적으로 동시에 처리할 수 있는 요청 개수에 제한이 있는데, 이 제한을 초과하면 요청이 거부되어..
- [백준] 숫자 카드 - 108152025-01-07 18:18:46https://www.acmicpc.net/problem/10815 해당 문제는 간단하게 생각해서 Set에 상근이가 가지고 있는 N개의 카드를 저장해 두고 M개의 카드들 중 뭐가 맞고 틀린지 판단해주는 쉬운 문제이다.정답 코드import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.HashSet;import java.util.StringTokenizer;class Main { private static final HashSet nums = new Hash..
- 스레드, 프로세스, 코어의 수는 많을 수록 좋을까요?2025-01-07 17:34:20스레드, 프로세스, 코어의 수가 많을수록 시스템 성능이 향상된다고 생각할 수 있지만, 실제로는 그렇지 않을 확률이 큽니다.스레드가 많으면?스레드가 지나치게 많아지면 운영체제가 스레드 간 컨텍스트 스위칭을 자주 수행해야 하여 CPU 자원이 스레드 관리에 소모됩니다. 이로 인해 실제 작업 수행 효율이 떨어질 수 있으며, 많은 스레드가 동시에 실행될 경우 메모리나 캐시, 락 등의 자원을 경쟁하게 되어 성능 저하나 데드 락이 발생할 가능성이 높아집니다. 또한, 스레드가 많아지면 동기화와 상태 관리가 복잡해져 버그 발생 가능성도 커집니다.프로세스가 많으면?각 프로세스는 독립된 메모리 공간을 가집니다. 그래서 많은 프로세스가 동시에 실행되면 메모리 사용량이 급격히 증가할 수 있습니다. 또한, 프로세스를 생성하고 관..
- [트러블 슈팅] 회원 상세 조회 문제 발생(2025.01.06)2025-01-07 17:17:04회원 상세 조회 api 호출 시 다음과 같은 에러 발생org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.st.eighteen_be.user.domain.UserInfo.userQuestions: could not initialize proxy - no Session 에러 내용을 살펴보면 org.hibernate.LazyInitializationException은 Hibernate에서 발생하는 이벤트이다.이 오류는 영속성 컨텍스트가 종료되어 버려서, 지연 로딩을 할 수 없어서 발생하는 오류이다. JPA에서 지연로딩을 하려면 항상 영속성 컨텍스트가 있어야 한다. 보통 트랜잭션 밖에서 조..
- [트러블 슈팅] redis 관련 문제 발생(2025.01.03)2025-01-03 23:34:41IOS 개발자 분들에게 문제 상황을 들었다. 현재 발생한 문제는 좋아요 & 좋아요 취소와 회원 상세 조회 api 의 응답값이 401 에러가 온다는 것이었다. 1. 좋아요 & 좋아요 취소 문제현재 좋아요 로직은 현재 사용자 아이디 값(= userId)과 좋아요할 회원 아이디(= likedId) 두 가지 값이 필수 값이다.userId를 key값으로 하고 value 값으로 likedId 로 Redis에 저장하고 있다. 만약 이미 좋아요 되어있는데 좋아요 api를 호출하거나if (Boolean.TRUE.equals(likeCountRedisTemplate.opsForSet().isMember(userLikesKey,likedId))) { throw new IllegalStateException("Alrea..