전체 글 (381) 썸네일형 리스트형 Spring AOP가 프록시 객체를 이용하여 구현하는 이유 참고: https://velog.io/@max9106/Spring-%ED%94%84%EB%A1%9D%EC%8B%9C-AOP-xwk5zy57ee (복습. Spring AOP(관점지향 프로그래밍)란? 공통관심사와 핵심 관심사를 분리하여 프로그래밍하도록 공통 관심사만을 편리하게 구현하도록 어노테이션, 라이브러리등을 제공함) 프록시 객체란? 프록시 객체는 원본 객체를 대신해서 호출될 객체로, 원본 객체를 감싸서 클라이언트의 요청을 처리하는 중간 단계에 위치합니다. 프록시 객체는 원본 객체와 같은 인터페이스를 구현하고 있어서, 클라이언트는 프록시 객체를 호출하는 것으로 인해 원본 객체의 메소드를 호출하는 것과 같은 효과를 얻을 수 있습니다. 프록시 객체를 사용하는 이유는, 프록시 객체를 통해 원본 객체에 대한 접.. Spring AOP와 관련 어노테이션 출처: https://pamyferret.tistory.com/51 개발을 하다보면 특정 패턴을 가진 메소드에 대해서 공통적으로 적용해줘야하는 기능이 있다. 제일 대표적인게 바로 로그 기록이 있는데, 이와 같은 기능을 특정 패턴을 가진 메소드에 넣기 위해서는 로그를 기록하는 공통 Util 메소드를 생성하고 해당 Util 메소드를 특정 패턴을 가진 메소드에 일일이 넣는 것을 생각할 수 있다. 하지만 이렇게 수동으로 공통 기능을 넣어줄 경우 추후 코드를 수정할 곳이 많아진다거나 어디에 Util 메소드를 넣었는지 찾기가 힘들어 유지보수가 힘들어진다. 위와 같이 특정 패턴을 가진 메소드에 공통되는 위치(실행 전, 실행 후)에 있는 공통되는 기능을 횡단 관심사(공통 관심사)라고 한다. 그리고 이러한 횡단 관심사를.. [Spring] 순환 참조(Circular References) 해결하기 인용: https://velog.io/@platinouss/Spring-Circular-References-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0 내가 아래글을 이해하기 위해서 필요한 것은 @Configuration 역시 @Component의 일종으로 컴포넌트 스캔시 빈 컨테이너에 포함된다는 것이다. 또한 아래와 같은 코드 구조에서 SecurityConfig를 빈에 등록하기 위해서는 authenticationProcider가 빈객체에 미리 존재하여야만 한다는 것이다. @Configuration @RequiredArgsConstructor public class SecurityConfig extends WebSecurityConfigurerAdapter { private fina.. 백준(BOJ) 1865: 웜홀 #bellman https://www.acmicpc.net/problem/1865 (복습. 벨만포드: 음의주기가 있을때도 최단거리를 구할수 있고 음의주기가 있다면 판별할 수 있다. n번 반복하여 매번 모든 간선에 대해 dsit를 갱신한다. n-1번째에 dist가 갱신된다면 그것은 음의 주기가 있다는 것이다) 출발했던 지점으로 다시 돌아왔을때 시간이 되돌아간(시간이 줄어든)경우가 있는지를 묻고 있다. 기본적으로 벨만포드는 음의주기가 있을때를 포함하여 한점에서 다른 모든 정점까지의 거리를 구하기 위한 알고리즘이다. 그런 알고리즘이 이러한 출발정점으로 되돌아 왔을 경우에 별다른 코드 변경없이 쓰일수 있다는 것이다(물론 시간초과를 해결하기 위한 boolean변수는 필요했다). 어떻게 이것이 가능할까? 문제에서는.. jdbcTemplate의 RowMapper<T>인터페이스에 대해서! https://u-it.tistory.com/32 query( )메서드를 실행하면 첫번째 인자로 받은 SQL쿼리 문이 실행되고 그 결과(ResultSet과 갯수(rowNum))가 2번째 인자인 메서드를 호출했을때 생성되는 객체의 메서드인 mapRow의 인자로 전달된다(memberRowMapper()메서드가 실행된다는 것은 mapRow메서드를 구현한 익명객체가 생성된다는 말임. 다시말해 이 메서드는 익명클래스 RowMapper를 구현하는 익명 클래스의 객체를 생성한다는 뜻임). ResultSet과 쿼리에 결과에 해당되는 데이터의 갯수를 나타내는 정보를 이용하여 그 결과는 컬랙션클래스로 반환된다. query의 3번째인자는 1번째 SQL쿼리의 ? 자리에 바인딩된다. 위에서는 name이 알아보기 쉽게 사용되었다.. 백준(BOJ) 1092: 배 https://www.acmicpc.net/problem/1092 문제가 깔끔하지 않을수 있다. 여기서 깔끔하지 않다는 것은 어떠한 명확한 알고리즘을 묻는것도 아니고, 그 알고리즘을 감추어 놓은 것도 아니고, 알고리즘과 관련된 어떠한 참신한 생각을 떠올려야 풀리는 문제도 아닌 문제를 말한다. 하지만 이런 더러운 문제도 가치가 있다. 왜? 이러이러한 문제가 내가 알고있는 어떠한 해결법으로는 깔끔하게 풀리지 않는다는 것을 알려준다는 점에서 그러하다. 나는 이문제가 "최소 회의실 개수" 문제와 같이 우선순위 큐를 이용하여 풀릴줄 알았다. 그래서 그렇게 접근해 보았지만 예제 테스트를 모두 통과했지만 결국 오답이 나왔다. 코드는 상당히 지저분했다. 즉, 최소 회의실 문제는 PriorityQueue에 넣는 것도 회.. 백준(BOJ) 1238: 파티 https://www.acmicpc.net/problem/1238 출처: https://steady-coding.tistory.com/106 다익스트라(Dijkstra)는 한정점에서 그 정점을 제외한 다른 모든 정점까지의 최단거리를 구할때 쓰이는 알고리즘이다. 그렇다면 다른 모든 정점에서 그 하나의 정점까지의 각각의 최단거리는 어떻게 구할까? 입력을 반대로 받아서 다익스트라 알고리즘을 적용하면 된다. 이 문제에서 배운것: 여러개의 정점에서 한정점으로 가는 각각의 최단거리는 출발점과 도착점에 대해 받은 정보를 반대로 적용하여 다익스트라 알고리즘을 적용하면 쉽게 구할 수 있다. import java.io.BufferedReader; import java.io.InputStreamReader; import j.. 백준(BOJ) 1753: 최단경로 https://www.acmicpc.net/problem/1753 처음에 인접리스트로 풀었다. 통과가 되었다. 하지만 방향그래프인만큼 인접행렬로 풀려고 시도를 하였다 => 메모리 초과가 났고 아래 글을 발견했다. 관련내용은 "3."번이다. https://www.acmicpc.net/board/view/34516 따라서, 방향그래프라고 해서 반드시 인접행렬을 사용해야만 하는 것은아니다. 아래는 인접행렬로 구현한 메모리초과가 나는 풀이다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Testing3 { static class Point { int vertex; int weight.. 이전 1 ··· 32 33 34 35 36 37 38 ··· 48 다음