공부 9

[프로그래머스스쿨] pccp 모의고사 2회 보물지도 4번 java - bfs

문제는 전형적인 bfs 문제이지만 세부 조건을 잘 처리하지 않으면시간이 오래 소모될 수 있다 ㅜㅜ나는 다음과 같은 조건을 간과해서 삽질 엄청 했다..;; 1. n과 m의 순서 주의x좌표: 0~my좌표: 0~n 이다..그리고 맨아래 x좌표=0이고 위로 갈수록 x값이 커지는 구조2. 두번 점프를 할 수도 있고 안 할수도 있음나는 다익스트라를 이용해서 최소 비용을 갱신하는 식으로 로직을 짰다이 때에 최소거리(비용)을 나타내는 배열을 삼차원으로 처리해줘야 함dist[x][y][0] : 두번 점프 안한 경우dist[x][y][1] : 두번 점프 한 경우 import java.util.*;class Solution {static int[] dx = {0,1,0,-1,0,2,0,-2};static int[] dy ..

스터디/Algorithm 2025.05.02

[백준] 움직이는 미로 탈출 16954 java - bfs

맨 처음 bfs 기본 로직은 짰는데매번 이동할 때마다 그래프를 이동하는 게 아니라한 번의 턴 후에 그래프를 이동시켜야 하는데.. 이 부분 처리에서 헤맸다 ㅜㅜ또한 한 번의 턴에서는 중복 처리를 제거해야지 메모리 초과가 발생하지 않으므로한 번의 턴에서 visited로 중복 처리 해줘야 함!!! https://www.acmicpc.net/problem/169541. 그래프 이동 : 한 번의 턴 이후에 그래프 이동해줘야 하므로 q.size 구한 후에 반복문 이후에 그래프 이동!2. visited 중복 처리 import java.io.*;import java.util.*;public class Main { static char[][] graph; //인접한 한 칸 또는 대각성 이동+움직이지 않을..

스터디/Algorithm 2025.04.14

[컴퓨터 네트워크] TCP와 UDP

한양대학교 이석복 교수님 강의를 들으며 작성했습니다. TCP(Protocol)신뢰성 있고 순서가 보장flow control(receiver의 속도에 맞춰 데이터 보냄)congestion control(sender slow down sending rate when network congested)HTTP(Web), FTP(file transfer), Telnet(remote login), SMTP(email)UDP(Protocol)신뢰성 없음connectionlessstreaming media, teleconferencing, DNS, Internet telephony* 패킷은 비트 단위Packet switching VS Circuit switching1Mbps/s linkeach user: 100 kb..

[SPRING 고급] 프록시와 내부 호출, 프록시 기술 한계

프록시와 내부 호출-문제스프링은 프록시 방식의 AOP를 사용한다. 따라서 AOP를 적용하려면 항상 프록시를 통해서 대상 객체(target)을 호출해야 한다. 이렇게 해야 프록시에서 먼저 어드바이스를 호출하고 이후에 대상 객체를 호출한다.만약 프록시를 거치지 않고 대상 객체를 직접 호출하게 되면 AOP가 적용되지 않고 어드바이스도 호출되지 않는다.대상 객체의 내부에서 메서드 호출이 발생하면 프록시를 거치지 않고 대상 객체를 직접 호출하는 문제가 발생한다. AOP proxy는 target.external()을 호출한다. 그런데 여기서 문제는 callServiceV0.external() 안엥서 internal()을 호출할 때 발생한다. 이떄는 CallLogAspect 어드바이스가 호출되지 않는다. 자바 언어에..

스터디/Spring 2025.01.08

[SPRING 고급] 포인트컷 지시자

📍포인트컷 지시자execution: 메서드 실행 조인 포인트를 매칭한다. 스프링 AOP에서 가장 많이 사용하고 기능도 복잡within: 특정 타입 내의 조인 포인트를 매칭args: 인자가 주어진 타입의 인스턴스인 조인 포인트this: 스프링 빈 객체(스프링 AOP 프록시)를 대상으로 하는 조인 포인트target: Target 객체(스프링 AOP 프록시가 가르키는 실제 대상)를 대상으로 하는 조인 포인트@target: 실행 객체의 클래스에 주어진 타입의 애노테이션이 있는 조인 포인트@within: 주어진 애노테이션이 있는 타입 내 조인 포인트@annotation: 메서드가 주어진 어노테이션을 가지고 있는 조인 포인트를 매칭@args: 전달된 실제 인수의 런타임 타입이 주어진 타입의 애노테이션을 갖는 조인..

스터디/Spring 2025.01.07

[SPRING 고급] 프록시팩토리와 포인트컷,어드바이스,어드바이저

📍프록시 팩토리프록시 팩토리는 인터페이스가 있으면 JDK 동적 프록시를 사용하고, 구현 클래스만 있다면 CGLIB를 사용한다. 그리고 이 설정을 변경할 수도 있다스프링은 부가 기능을 적용할 때에 Advice라는 새로운 개념을 도입했다.개발자는 InvocationHandler나 MethodInterceptor를 신경쓰지 않고 Advice만 만들면 된다. 결과적으로 InvocationHandler나 MethodInterceptor는 Advice를 호출하게 된다.프록시 팩토리를 사용하면 Advice를 호출하는 전용 InvocationHandler, MethodInterceptor를 내부에서 사용한다. 특정 조건에 맞을 때 프록시 로직을 적용하는 기능도 공통으로 제공하기 위해서 Pointcut 이라는 개념을 ..

스터디/Spring 2024.12.29

[SPRING 고급] 프록시 패턴과 데코레이터 패턴

📍 프록시객체에서 프록시가 되려면, 클라이언트는 서버에게 요청을 한 것인지, 프록시에게 요청을 한 것인지 조차 몰라야 한다.서버와 프록시는 같은 인터페이스를 사용해야 한다. 그리고 클라이언트가 사용하는 서버 객체를 프록시 객체로 변경해도 클라이언트 코드를 변경하지 않고 동작할 수 있어야 한다.런타임(애플리케이션 실행 시점)에 클라이언트 객체에 DI를 사용해서 client->server에서 client->proxy로 객체 의존관계를 변경해도 클라이언트 코드를 전혀 변경하지 않아도 된다. 클라이언트 입장에서는 변경 사실 조차 모른다.DI를 사용하면 클라이언트 코드의 변경 없이 유연하게 프록시를 주입할 수 있다.프록시의 주요 기능1. 접근 제어-권한에 따른 접근 차단-캐싱-지연 로딩2. 부가 기능 추가-원래..

스터디/Spring 2024.12.24

[SPRING 고급] 템플릿 메서드와 전략 패턴, 템플릿 메서드 패턴

템플릿 메서드 패턴은 다형성을 사용해서 변하는 부분과 변하지 않는 부분을 분리하는 방법이다. -AbstractTemplate은 템플릿 메서드 패턴에서 부모 클래스이고, 템플릿 역할을 한다.  📍템플릿 메서드 패턴작업에서 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기한다.템플릿 메서드를 사용하면 하위 클래스가 알고리즘의 구조를 변경하지 않고도 알고리즘의 특정 단계를 재정의 할 수 있다.부모 클래스에 알고리즘의 골격인 템플릿을 정의하고 일부 변경되는 로직은 자식 클래스에 정의하는 것이다. 결국 상속과 오버라이딩을 통한 다형성으로 문제를 해결하는 것이다 하지만 템플릿 메서드 패턴은 상속을 사용한다따라서 상속에서 오는 단점들을 그대로 안고 간다. 특히 자식 클래스가 부모 클래스와 컴파일 시점에 강..

스터디/Spring 2024.12.21

[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