분류 전체보기

    ThreadLocal로 싱글톤에서 발생하는 동시성문제 쉽게 풀기!<img src=">

    ThreadLocal로 싱글톤에서 발생하는 동시성문제 쉽게 풀기!

    문제상황어느부분에서 병목이 발생하는지, 그리고 어떤 부분에서 예외가 발생하는지를 로그를 통해 확인하기 위해 아래 요구사항에 맞춰 로그 추적기를 만들던 도중 문제가 발생했습니다.요구사항 모든 PUBLIC 메서드의 호출과 응답 정보를 로그로 출력 애플리케이션의 흐름을 변경하면 안됨 로그를 남긴다고 해서 비즈니스 로직의 동작에 영향을 주면 안됨 메서드 호출에 걸린 시간 정상 흐름과 예외 흐름 구분 예외 발생시 예외 정보가 남아야 함 메서드 호출의 깊이 표현 HTTP 요청을 구분 HTTP 요청 단위로 특정 ID를 남겨서 어떤 HTTP 요청에서 시작된 것인지 명확하게 구분이 가능해야 함 트랜잭션 ID (DB 트랜잭션X), 여기서는 하나의 HTTP 요청이 시작해서 끝날 때 까지를 하나의 트랜잭션이 라 함작동예시정상..

    @ExceptionHandler로 예외처리문제 쉽게 풀기!

    @ExceptionHandler로 예외처리문제 쉽게 풀기!

    웹 에러인경우 문제상황없는경로로 접근시 웹사이트가 망한것 같은 에러페이지가 등장합니다.이를 개선해고자 합니다.해결방법간단히 아래경로에 html 파일을 추가해 주시만 하면 됩니다.에러발생시 전체 흐름은 아래와 같습니다.1. WAS(/error-ex, dispatchType=REQUEST) -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러 2. WAS(여기까지 전파) 3. WAS 오류 페이지 확인 4. WAS(/error, dispatchType=ERROR) -> 필터(x) -> 서블릿 -> 인터셉터(x) -> 컨트롤러(/error/500) ->View이때, WAS까지 오류가 전달되면 WAS는 다시 /error 경로로 서버에 요청을 한다는 점이 키포인트 입니다.관련 스프링 코드를 보겠습니다.BasicErr..

    [틀림 세모] 백준 14863 서울에서 경산까지 // dfs dp, ret초기값 주의

    [틀림 세모] 백준 14863 서울에서 경산까지 // dfs dp, ret초기값 주의

    https://www.acmicpc.net/problem/14863* 풀이cnt#includeusing namespace std; typedef long long ll;struct A { int a,b,c,d;};int n,k,ret;ll dp[104][100000+4]; //(idx, num) : 그떄 경우의수vector v;ll dfs(int idx, int cnt) { if(cnt >n>>k; for(int i=0;i>a>>b>>c>>d; v.push_back({a,b,c,d}); } cout ret 초기화 문제처음풀이는 ret=0 -> 오답결론 : ret는 불가능 && 매우 큰값으로 초기화 하라!

    [틀림 세모] 백준 5557 1학년 // dfs dp

    [틀림 세모] 백준 5557 1학년 // dfs dp

    https://www.acmicpc.net/problem/5557* 풀이+ , - 2가지 경우의수완탐 -> 2^100 -> 불가dp?#includeusing namespace std; typedef long long ll;int n;int arr[104];ll dp[104][24]; //(idx, num) : 그떄 경우의수ll dfs(int idx, int num) { if(num 20) { return 0; } if(idx==n-1) { if(num==arr[idx]) { // cout>n; for(int i=0;i>arr[i]; } // cout시행착오마지막 숫자와 같은지 검사, 마지막숫자도 더하거나 빼는것이 ..

    [틀림] 백준 14867 물통 // map bfs

    [틀림] 백준 14867 물통 // map bfs

    https://www.acmicpc.net/problem/14867*시도1dfs로 6가지 경우의수 탐색 -> 계속 fill A 만 호출되다 스택 오버플로우* 풀이가중치가 같은 최단거리는 ? bfs! 처음 찾은게 최단거리 보장but, 상태 : [a의 물][b의물] = [10만][10만] -> 메모리 초과상태관찰 -> 상태가 띄엄띄엄 있음 -> 즉, vis를 전부사용하지 않아도됨 -> map을 vis로 활용#includeusing namespace std; typedef long long ll;int a,b,c,d,ret=-1;map,int> vis;struct A { int q,w,cnt;};int main() { ios_base::sync_with_stdio(0); cin.tie(0); ..

    [맞음] 백준 1600 말이 되고픈 원숭이 // 3차원 bfs

    [맞음] 백준 1600 말이 되고픈 원숭이 // 3차원 bfs

    https://www.acmicpc.net/problem/1600* 풀이bfs 상태 : y,x,이동가능횟수,거리vis[y][x][이동가능횟수] : 방문했는지원숭이가 갈수있는곳을 dy,dx배열로 만들어놓기m이 y의 길이임에 주의 (m*n 행렬임)#includeusing namespace std; typedef long long ll;int n,m,k,ret=-1;int vis[204][204][34], arr[204][204];int dy[]={0,1,-1,0};int dx[]={1,0,0,-1};int dy2[]={-2,-2,-1,-1,1,1,2,2};int dx2[]={-1,1,-2,2,-2,2,-1,1};struct A { int y,x,cnt,dist; };int main() { ios_ba..

    [틀림] 프로그래머스 보물지도 // 3차원 bfs

    [틀림] 프로그래머스 보물지도 // 3차원 bfs

    https://school.programmers.co.kr/learn/courses/15009/lessons/121690?language=cpp 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr* 풀이최단거리는 bfs상태 : { y, x, 점프사용여부, dist }단순한 bfs는 vis를 방문여부용도 && 거리용도로 사용, but 복잡한경우 dist라는 상태를 따로 분리하는게 좋겠다.이문제는 앞쪽에서 방문여부체크, 종료조건을 체크하는 bfs가 유리.bfs는 먼저 도착한게 최단거리다.3차원 bfs 이해하기세계를 2개로 나눠서 그려보자.세계간 이동가능 여부를 그려보자.공통) +-1로 이동가능안쓴경우 ) +-2..

    [틀림] 프로그래머스 괄호변환 // 문자열 substr, 재귀, 시키는대로

    [틀림] 프로그래머스 괄호변환 // 문자열 substr, 재귀, 시키는대로

    https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr * 시도문제를 예시로 이해하려고 시도 -> 실패시키는대로만 하면 되는문제..알고리즘이 주어진것을 코드로 옮기는 능력을 보고싶은듯 * 풀이분리불가 && 균형잡힌 문자열 찾는방법?substr 사용법잘못 : substr( a, b) 가 a부터 b까지 Xa부터 b개를 가져오는것임substr(a) // a부터 끝까지substr(a,3) // a부터 3개앞뒤를 자르려면?u = substr(1, u.size()-2)괄호 방향을 뒤집어서 뒤에 붙이기rever..