본문 바로가기

전체 글176

dfs bfs package Silver2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main_1260DFS와BFS { static int N; static int M; static int[][] adj; static boolean[] visited; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRea.. 2023. 4. 17.
(모든 개발자를 위한 HTTP 웹 기본 지식) 1-(3) TCP, UDP, (4) PORT (5) DNS - TCP, UDP IP에서 생긴 패킷이 꼬이는 문제를 TCP, UDP로 해결 가능 프로토콜 계층 프로그램이 메시지 생성 소켓 라이브러리를 통해 전달 TCP 정보 생성, 메시지 데이터 포함 IP 패킷 생성, TCP 데이터 포함 IP패킷 정보(출발지, 목적지 IP) -> IP패킷 안에 TCP 정보 담김(출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증정보 등) -> IP로 해결 안된 순서 제어 문제 해결 가능 TCP 특징 전송 제어 프로토콜 연결지향 TCP3 way handshake(가상 연결) 데이터 전달 보증 순서 보장 신뢰할 수 있는 프로토콜 현재는 대부분 tcp사용 3way handshake 클라이언트가 syn 전달 서버가 syn + ack 전달 클라이언트가 ack 전달 syn : 전송 요.. 2023. 4. 16.
SWEA - 3124 최소 스패닝 트리 1. 문제 조건 내용 2. 아이디어 내용 3. 구현 (1) Prim Algorithm 사용 package D4; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.PriorityQueue; import java.util.Queue; import java.util.StringTokenizer; public class SE_최소스패닝트리 { static class Node{ in.. 2023. 4. 16.
(모든 개발자를 위한 HTTP 웹 기본 지식) 1-(1) 인터넷 통신, (2) IP(인터넷 프로토콜) - 0. 소개영상 HTTP를 이해하지 못한 상태에서 처음 웹 기술을 공부하면 깊이 있게 원리 파악이 쉽지 않음 개발자는 평생 HTTP기반 위에서 개발해야 하므로 HTTP에 반드시 정리를 해놔야 함. - 인터넷 통신 인터넷에서 컴퓨터 둘은 어떻게 통신할까? IP에 대해 알아야 함. - IP(인터넷 프로토콜) IP 의 역할 지정한 IP 주소에 데이터 전달 패킷이라는 통신 단위로 데이터 전달 IP 패킷 정보 IP패킷이라는 규칙이 있음. 출발지 IP, 목적지 IP, 기타 .. 주소 적듯이 IP패킷을 만듦 IP주소 부여 클라이언트가 패킷 전달 노드들이 서로 패킷을 던지다가 최종적으로 서버에 도달 그 서버는 또 패킷을 만들어서 다시 클라이언트에게 전달. 인터넷의 노드들이 서로 전달을 하다가 클라이언트에 도달 인터넷.. 2023. 4. 15.
(스프링 핵심 원리 - 기본편) 9-(6) request 스코프 예제 만들기 9-(7) 스코프와 Provider (8) 스코프와 프록시 - request 스코프 예제 만들기 gradle에 implement 하기 동시에 여러 HTTP요청이 오면 정확이 어떤 요청이 남긴 로그인지 구분하기 어려움 이럴 때 사용하기 좋은 것이 request 스코프 로그가 남도록 request 스코프를 활용해서 추가기능 개발하기 UUID를 사용해서 HTTP요청 구분해볼것 - 스코프와 Provider 코드보기 package hello.core.common; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.PreDestro.. 2023. 4. 14.
(스프링 핵심 원리 - 기본편) 9-(3) 프로토타입 스코프- 싱글톤 빈과 함께 사용시 문제점 9-(4) 프로토타입 스코프 - Provider로 해결 (5) 웹 스코프 - 프로토타입 스코프 : 싱글톤 빈과 함께 사용시 문제점 스프링 컨테이너에 프로토 타입 빈을 요청하는 예제 클라이언트A addCount() -> 0에서 1로 클라이언트B addCount() -> 0에서 1로 count는 계속 1, 1 코드 package hello.core.scope; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Scope; import javax.annotation.PostConstruct; import javax.annotation.PreDe.. 2023. 4. 12.
(스프링 핵심 원리 - 기본편) 8-(4)애노테이션 @PostConstruct, 9-(1) 빈 스코프란?, (2) 프로토타입 스코프 - 애노테이션 @PostConstruct 이 방법 쓰면 된다! 이 애노테이션의 패키지는 javax => java에서 공식적으로 지원하는 패키지(스프링에 종속적인 기술이 아니라 JSR-250이라는 자바 표준. ) 따라서 혹시 다른 컨테이너를 쓰더라도 그대로 사용 가능 간편함. 최신 스프링에서 권장하는 방법 컴포넌트 스캔과 잘 어울림 단점 : 외부 라이브러리에는 적용 불가. 외부 라이브러리를 초기화, 종료해야 하면 @Bean 기능을 사용하자. - 빈 스코프란? 스프링 빈 : 스프링 컨테이너 시작과 함께 생성, 스프링 컨테이너 종료될 때까지 유지됐다고 배웠음. 이는 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문. 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코.. 2023. 4. 12.
(스프링 핵심 원리 - 기본편) 8-(1) 빈 생명주기 콜백 시작, (2) 인터페이스, (3) 빈 등록 초기화, 소멸 메서드 - 빈 생명주기 콜백 시작 애플리케이션과 DB를 서버 시작 시 미리 연결을 해두거나 애플리케이션 시작 시 필요한 연결을 미리 해두기. 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요. 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정 NetworkClient가 애플리케이션 시작 시점에 connect()를 호출해서 연결을 맺어두어야 하고, 종료되면 disConnect() 를 호출해 연결을 끊어야 함. package hello.core.lifecycle; public class NetworkClient { private String url; public NetworkClient(){ System.out.println("생성자 호출, url = "+.. 2023. 4. 11.
(스프링 핵심 원리 - 기본편) 7-(7) 애노테이션 직접 만들기, (8) 조회한 빈이 모드 필요할 때, List, Map, (9) 자동, 수동의 올바른 실무 운영 기준 - 애노테이션 직접 만들기 @Qualifier("mainDiscountPolicy") 이렇게 문자를 적으면 컴파일 시 타입 체크가 안됨. 이런 경우 애노테이션을 직접 만들어서 해결 가능 애노테이션은 상속이라는 개념이 없음 여러 애노테이션을 모아서 사용하는 기능은 스프링이 지원하는 기능인 것. Autowired도 재정의 가능. 하지만 스프링이 제공하는 기능을 뚜렷한 목적 없이 무분별하게 재정의 하면 유지 보수에 혼란을 줄 수 있으므로 삼가자. - 조회한 빈이 모드 필요할 때, List, Map 예제 할인 서비스 제공 시, 클라이언트가 할인의 종류를 선택할 수 있다고 가정 스프링을 사용하면 전략 패턴 간단히 구현 가능 public class AllBeanTest { @Test void findAllBean(.. 2023. 4. 9.
(스프링 핵심 원리 - 기본편) 7-(4) 롬복과 최신 트랜드, (5)조회 빈이 2개 이상 - 문제, (6)@Autowired필드 명, @Qualifier, @Primary - 롬복과 최신 트랜드 개발의 대부분은 다 불변, 그래서 생성자에 final을 사용하게 됨 그런데 생성자도 만들어야하고 주입 받은 값을 대입하는 코드도 만들어야 하는데 필드 주입처럼 편하게 사용하는 방법은? 기존의 OrderServiceImpl코드를 최적화해보자. 최적화 전 @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy.. 2023. 4. 8.