일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- DFS
- cycle
- 완전탐색
- Integer
- 삼성청년SW아카데미
- HashMap
- back-end
- spring
- bruteforce
- ssafy서울
- 시뮬레이션
- 구현
- 최소신장트리
- Web-BackEnd
- 그래프
- SSAFY
- Prim
- equals
- Graph
- Spring Framework
- Disjoint-set
- ==
- MST
- BFS
- Union-FInd
- Kruskal
- web
- java
- Floyd-Warshall
- spring-boot
- Today
- Total
목록전체 글 (23)
devlog
@Autowired 필요한 의존 객체의 Type에 해당하는 빈을 찾아 주입한다. 1. @Autowired required : 기본값은 true 따라서 의존 객체가 빈으로 등록되지 않으면 애플리케이션 구동이 실패한다. 하지만 false로 둘 경우 의존성 없이도 실행가능 (빈으로 등록이 가능) 사용가능한 위치 생성자 생성자를 통해 주입을 받는 경우는 빈을 생성할 때에도 (인스턴스를 생성할 때에도) 개입이 되기 때문에 파라미터로 넘겨진 타입의 빈이 (의존 객체가) 없으면 인스턴스를 만들지 못한다. 다른 두 방법에 비해 명시적이고 오류를 발견하기 쉽다. 즉, 의존관계를 주입하지 않은 경우 인스턴스를 생성할 수 없기 때문에 의존 관계에 대한 내용이 외부로 노출되어 컴파일타임에 에러를 발견할 수 있다. final ..
스프링 IoC 컨테이너와 빈 IoC (Inversion of Control) : 의존 관계 주입 (DI, Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는게 아니라, 주입받아 사용하는 방법 스프링 IoC 컨테이너 IoC 기능을 제공하며, 빈들을 담고 있기 때문에 컨테이너라고 불린다. BeanFactory : 스프링 IoC 컨테이너의 가장 최상위 인터페이스 (가장 핵심이 되는 클래스) 빈 설정 소스로 부터 빈 정의를 읽어들이고, 빈을 구성하고 제공한다. 초기에는 xml 기반의 IoC를 제공했지만 점차 Annotation 기반의 IoC를 제공하게 바뀌었다. ex) @Service, @Repositroy ... 빈 (Bean) 스프링 IoC 컨테이너 ..
Class Loader System 클래스 로더는 로딩, 링크, 초기화의 과정을 수행한다. Loading 클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 만들고 메소드 영역 에 저장한다. 메소드 영역 에 저장되는 데이터 FQCN(Fully Qualified Class Name) : 클래스가 속한 패키지명을 모두 포함한 이름 ex) java.lang.String Class, Interface, Enum 과 같은 속성정보 메소드와 변수 로딩이 끝나면 해당 클래스 타입의 Class 객체를 생성하여 힙 영역에 저장한다. 때문에 App.class 처럼 사용가능 Linking 링크는 Verify, Prepare, Resolve(Optional) 세 단계로 나누어져 있다. Verify..
JVM 구조 Class Loader .class 에서 바이트코드를 읽고 메모리에 저장 Loading : 클래스를 읽어옴 Linking : 레퍼런스 연결 Initialization : static 값 초기화 및 변수에 할당 Memory 공유자원 메소드 영역 : 클래스 수준의 정보(클래스 이름, 부모 클래스 이름, 메소드, 변수) 저장 힙 영역 : 객체를 저장 특정 스레드마다 가지고 있는 자원 스택 영역 : 스레드마다 런타임 스택을 생성, 메서드 호출을 스택 프레임이라고 부르는 블럭으로 쌓는다. 스레드 종료시 런타밈 스택 사라짐 PC(Program Counter) 레지스터 : 스레드 내 현재 실행할 스택 프레임을 가리키는 포인터 생성 네이티브 메소드 스택 네이티브 메소드 : 메소드에 네이티브 키워드 + 구현..
Java JVM, JDK, JRE JVM (Java Virtual Machine) 자바 가상 머신으로 자바 바이트 코드를 OS에 특화된 코드로 변환(인터프리터 + JIT)하여 실행 특정 플랫폼에 종속적이다. JRE (Java Runtime Environment) : JVM + Library 자바 애플리케이션을 실행할 수 있도록 구성된 배포판 JVM 과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스파일을 가지고 있다. 개발 관련도구는 포함하지 않는다. 자바를 실행하는 것이 목적이기 때문에 .class 파일만 있으면 실행가능하다. 때문에 자바와 의존성이 타이트하지 않는다. 즉, JVM 기반으로 동작하는 프로그래밍언어로 작성된 프로그램들은 자바가 아니여도 JRE 환경에서 실행가능하..
그래프에서 사이클이 존재하는지 여부는 dfs 를 사용해서 직관적으로 찾을 수 있다. 일반적인 그래프의 코드를 살펴보도록 하자 static void dfs(int v) { visit[v] = true; for(int u : adj[v]) { if(visit[u]) continue; dfs(u); } } v 라는 정점을 기준으로 dfs 를 수행한다고 했을 때 dfs(v) 가 끝나기 전에 v 를 재방문하는 일이 생기면 사이클이 존재함을 알 수 있다. 아래의 코드는 dfs 를 이용한 사이클 존재 여부를 확인하는 코드이다. static boolean cycle = false; static boolean[] visit = new boolean[n+1]; static boolean[] finished = new bo..