개발 13

[SPRING 고급] 동시성 문제와 ThreadLocal 사용

1. Thread-A는 userA를 nameStore에 저장했다.2. Thread-B는 userB를 nameStore에 저장했다3. Thread-A는 userB를 nameStore에서 조회했다.4. Thread-B는 userB를 nameStore에서 조회했다. 📍동시성 문제Thread-A 입장에서는 저장한 데이터와 조회한 데이터가 다른 문제가 발생한다.이처럼 여러 쓰레드가 동시에 같은 인스턴스의 필드 값을 변경하면서 발생하는 문제를 동시성 문제라고 한다.이런 동시성 문제는 여러 쓰레드가 같은 인스턴스의 필드에 접근해야 하기 때문에 트래픽이 적은 상황에서는 확률상 잘 나타나지 않고, 트래픽이 점점 많아질수록 자주 발생한다.특히 스프링 빈처럼 싱글톤 객체의 필드를 변경하며 사용할때 이러한 동시성 문제를 조..

스터디/Spring 2024.12.17

[백준] 구간 합 구하기 5 11660 java - dp

N과 M의 범위 때문에 값을 일일이 구하면 시간초과가 발생한다따라서 dp를 이용해서 풀어야 한다는 것은 이해가 갔는데..일반적인 누적합을 이용하니 결과를 구할때에 N*M 시간복잡도가 나와아슬아슬하게 테케를 통과했다...출처: https://developerjisu.tistory.com/9위의 사진처럼 누적합을 구해야한다는 것을 깨달았다!1. 1행/1열은 단순 누적합ex. 1행이 1 2 3 4 -> 1 3 6 101열이 1 2 3 4 -> 1 3 6 102. 나머지 행/열부터는 위와 같은 방식으로 누적합을 구해야지표에 한번에 저장할 수 있다  [1차 풀이]import java.io.*;import java.util.*;public class Main { public static void main(St..

스터디/Algorithm 2024.12.13

[백준] 애너그램 6442 java - 백트래킹

전형적인 백트래킹 문제이다.다만 각 순열의 결과를 자료구조에 저장하게 된다면 메모리 초과가 발생한다.맨 처음 정렬된 상태로 순열의 결과를 저장하려고 TreeSet 자료구조를 선택해서메모리 초과가 났다 ㅜㅜ 순열 결과를 저장하지 않고바로 sb에 담아서 출력하는 방식으로 수정해서 해결했다! https://www.acmicpc.net/problem/6443 첫번째 풀이import java.util.*;import java.io.*;public class Main { static String words; static boolean[] visited; static HashSet answer = new HashSet(); static void backtraking(String result, i..

스터디/Algorithm 2024.12.11